defaults.ts 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. import { registerAlert } from '@/vdb/framework/alert/alert-extensions.js';
  2. import { searchIndexBufferAlert } from '@/vdb/framework/alert/search-index-buffer-alert/search-index-buffer-alert.js';
  3. import { setNavMenuConfig } from '@/vdb/framework/nav-menu/nav-menu-extensions.js';
  4. import {
  5. LayoutDashboardIcon,
  6. Mail,
  7. Settings2,
  8. ShoppingCart,
  9. SquareTerminal,
  10. Terminal,
  11. Users,
  12. } from 'lucide-react';
  13. import { LatestOrdersWidget } from './dashboard-widget/latest-orders-widget/index.js';
  14. import { MetricsWidget } from './dashboard-widget/metrics-widget/index.js';
  15. import { OrdersSummaryWidget } from './dashboard-widget/orders-summary/index.js';
  16. import { registerDashboardWidget } from './dashboard-widget/widget-extensions.js';
  17. export function registerDefaults() {
  18. setNavMenuConfig({
  19. sections: [
  20. {
  21. id: 'insights',
  22. title: /* i18n*/ 'Insights',
  23. placement: 'top',
  24. icon: LayoutDashboardIcon,
  25. url: '/',
  26. order: 100,
  27. },
  28. {
  29. id: 'catalog',
  30. title: /* i18n*/ 'Catalog',
  31. icon: SquareTerminal,
  32. placement: 'top',
  33. order: 200,
  34. items: [
  35. {
  36. id: 'products',
  37. title: /* i18n*/ 'Products',
  38. url: '/products',
  39. order: 100,
  40. requiresPermission: ['ReadProduct', 'ReadCatalog'],
  41. },
  42. {
  43. id: 'product-variants',
  44. title: /* i18n*/ 'Product Variants',
  45. url: '/product-variants',
  46. order: 200,
  47. requiresPermission: ['ReadProduct', 'ReadCatalog'],
  48. },
  49. {
  50. id: 'facets',
  51. title: /* i18n*/ 'Facets',
  52. url: '/facets',
  53. order: 300,
  54. requiresPermission: ['ReadProduct', 'ReadCatalog'],
  55. },
  56. {
  57. id: 'collections',
  58. title: /* i18n*/ 'Collections',
  59. url: '/collections',
  60. order: 400,
  61. requiresPermission: ['ReadCollection', 'ReadCatalog'],
  62. },
  63. {
  64. id: 'assets',
  65. title: /* i18n*/ 'Assets',
  66. url: '/assets',
  67. order: 500,
  68. requiresPermission: ['ReadAsset', 'ReadCatalog'],
  69. },
  70. ],
  71. },
  72. {
  73. id: 'sales',
  74. title: /* i18n*/ 'Sales',
  75. icon: ShoppingCart,
  76. placement: 'top',
  77. order: 300,
  78. items: [
  79. {
  80. id: 'orders',
  81. title: /* i18n*/ 'Orders',
  82. url: '/orders',
  83. order: 100,
  84. requiresPermission: ['ReadOrder'],
  85. },
  86. ],
  87. },
  88. {
  89. id: 'customers',
  90. title: /* i18n*/ 'Customers',
  91. icon: Users,
  92. placement: 'top',
  93. order: 400,
  94. items: [
  95. {
  96. id: 'customers',
  97. title: /* i18n*/ 'Customers',
  98. url: '/customers',
  99. order: 100,
  100. requiresPermission: ['ReadCustomer'],
  101. },
  102. {
  103. id: 'customer-groups',
  104. title: /* i18n*/ 'Customer Groups',
  105. url: '/customer-groups',
  106. order: 200,
  107. requiresPermission: ['ReadCustomerGroup'],
  108. },
  109. ],
  110. },
  111. {
  112. id: 'marketing',
  113. title: /* i18n*/ 'Marketing',
  114. icon: Mail,
  115. placement: 'top',
  116. order: 500,
  117. items: [
  118. {
  119. id: 'promotions',
  120. title: /* i18n*/ 'Promotions',
  121. url: '/promotions',
  122. order: 100,
  123. requiresPermission: ['ReadPromotion'],
  124. },
  125. ],
  126. },
  127. {
  128. id: 'system',
  129. title: /* i18n*/ 'System',
  130. icon: Terminal,
  131. placement: 'bottom',
  132. order: 200,
  133. items: [
  134. {
  135. id: 'job-queue',
  136. title: /* i18n*/ 'Job Queue',
  137. url: '/job-queue',
  138. order: 100,
  139. requiresPermission: ['ReadSystem'],
  140. },
  141. {
  142. id: 'healthchecks',
  143. title: /* i18n*/ 'Healthchecks',
  144. url: '/healthchecks',
  145. order: 200,
  146. requiresPermission: ['ReadSystem'],
  147. },
  148. {
  149. id: 'scheduled-tasks',
  150. title: /* i18n*/ 'Scheduled Tasks',
  151. url: '/scheduled-tasks',
  152. order: 300,
  153. requiresPermission: ['ReadSystem'],
  154. },
  155. ],
  156. },
  157. {
  158. id: 'settings',
  159. title: /* i18n*/ 'Settings',
  160. icon: Settings2,
  161. placement: 'bottom',
  162. order: 100,
  163. items: [
  164. {
  165. id: 'sellers',
  166. title: /* i18n*/ 'Sellers',
  167. url: '/sellers',
  168. order: 100,
  169. requiresPermission: ['ReadSeller'],
  170. },
  171. {
  172. id: 'channels',
  173. title: /* i18n*/ 'Channels',
  174. url: '/channels',
  175. order: 200,
  176. requiresPermission: ['ReadChannel'],
  177. },
  178. {
  179. id: 'stock-locations',
  180. title: /* i18n*/ 'Stock Locations',
  181. url: '/stock-locations',
  182. order: 300,
  183. requiresPermission: ['ReadStockLocation'],
  184. },
  185. {
  186. id: 'administrators',
  187. title: /* i18n*/ 'Administrators',
  188. url: '/administrators',
  189. order: 400,
  190. requiresPermission: ['ReadAdministrator'],
  191. },
  192. {
  193. id: 'roles',
  194. title: /* i18n*/ 'Roles',
  195. url: '/roles',
  196. order: 500,
  197. requiresPermission: ['ReadAdministrator'],
  198. },
  199. {
  200. id: 'shipping-methods',
  201. title: /* i18n*/ 'Shipping Methods',
  202. url: '/shipping-methods',
  203. order: 600,
  204. requiresPermission: ['ReadShippingMethod'],
  205. },
  206. {
  207. id: 'payment-methods',
  208. title: /* i18n*/ 'Payment Methods',
  209. url: '/payment-methods',
  210. order: 700,
  211. requiresPermission: ['ReadPaymentMethod'],
  212. },
  213. {
  214. id: 'tax-categories',
  215. title: /* i18n*/ 'Tax Categories',
  216. url: '/tax-categories',
  217. order: 800,
  218. requiresPermission: ['ReadTaxCategory'],
  219. },
  220. {
  221. id: 'tax-rates',
  222. title: /* i18n*/ 'Tax Rates',
  223. url: '/tax-rates',
  224. order: 900,
  225. requiresPermission: ['ReadTaxRate'],
  226. },
  227. {
  228. id: 'countries',
  229. title: /* i18n*/ 'Countries',
  230. url: '/countries',
  231. order: 1000,
  232. requiresPermission: ['ReadCountry'],
  233. },
  234. {
  235. id: 'zones',
  236. title: /* i18n*/ 'Zones',
  237. url: '/zones',
  238. order: 1100,
  239. requiresPermission: ['ReadZone'],
  240. },
  241. {
  242. id: 'global-settings',
  243. title: /* i18n*/ 'Global Settings',
  244. url: '/global-settings',
  245. order: 1200,
  246. requiresPermission: ['UpdateGlobalSettings'],
  247. },
  248. ],
  249. },
  250. ],
  251. });
  252. registerDashboardWidget({
  253. id: 'metrics-widget',
  254. name: /* i18n*/ 'Metrics Widget',
  255. component: MetricsWidget,
  256. defaultSize: { w: 12, h: 6, x: 0, y: 0 },
  257. minSize: { w: 6, h: 4 },
  258. });
  259. registerDashboardWidget({
  260. id: 'latest-orders-widget',
  261. name: /* i18n*/ 'Latest Orders Widget',
  262. component: LatestOrdersWidget,
  263. defaultSize: { w: 6, h: 7, x: 0, y: 0 },
  264. });
  265. registerDashboardWidget({
  266. id: 'orders-summary-widget',
  267. name: /* i18n*/ 'Orders Summary Widget',
  268. component: OrdersSummaryWidget,
  269. defaultSize: { w: 6, h: 3, x: 6, y: 0 },
  270. });
  271. registerAlert(searchIndexBufferAlert);
  272. }