@infuro/cms-core 1.0.34 → 1.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +13 -0
  2. package/dist/OrderTrackPage-W3J6WIG2.js +426 -0
  3. package/dist/OrderTrackPage-Z6FCJQYY.cjs +428 -0
  4. package/dist/admin.cjs +35254 -21613
  5. package/dist/admin.d.cts +192 -9
  6. package/dist/admin.d.ts +192 -9
  7. package/dist/admin.js +34301 -20755
  8. package/dist/api.cjs +137 -17531
  9. package/dist/api.d.cts +633 -3
  10. package/dist/api.d.ts +633 -3
  11. package/dist/api.js +15 -17528
  12. package/dist/auth.cjs +192 -1034
  13. package/dist/auth.d.cts +197 -54
  14. package/dist/auth.d.ts +197 -54
  15. package/dist/auth.js +4 -966
  16. package/dist/chunk-2AEVFOQP.cjs +30436 -0
  17. package/dist/chunk-3DZRIZOD.cjs +52 -0
  18. package/dist/chunk-5ELSW2UP.js +150 -0
  19. package/dist/chunk-7NMT3GBR.cjs +29 -0
  20. package/dist/chunk-COBORIJH.cjs +2373 -0
  21. package/dist/chunk-CRFV5WJK.js +16 -0
  22. package/dist/chunk-D5FBNKQM.cjs +104 -0
  23. package/dist/chunk-FG6I64HP.js +604 -0
  24. package/dist/chunk-GO7PPYNU.js +76 -0
  25. package/dist/chunk-HCIRL37O.js +21 -0
  26. package/dist/chunk-HF3L2GIT.cjs +194 -0
  27. package/dist/chunk-HT5DI3XW.cjs +82 -0
  28. package/dist/chunk-JC6DLWTE.js +21 -0
  29. package/dist/chunk-JS2W7XZ4.js +30312 -0
  30. package/dist/chunk-JXF23MPG.js +25 -0
  31. package/dist/chunk-KFFB6EMZ.js +123 -0
  32. package/dist/chunk-KPKFNLQQ.cjs +648 -0
  33. package/dist/chunk-LI2IXVAY.js +171 -0
  34. package/dist/chunk-MQBT33IV.js +48 -0
  35. package/dist/chunk-OOTLNH63.cjs +18 -0
  36. package/dist/chunk-PNOKNSG2.cjs +222 -0
  37. package/dist/chunk-SHUYVCID.js +4 -0
  38. package/dist/chunk-SPQFNIYJ.cjs +132 -0
  39. package/dist/chunk-SYBOCAWB.js +97 -0
  40. package/dist/chunk-TDV6EJHV.js +192 -0
  41. package/dist/chunk-UCKN4BBY.cjs +24 -0
  42. package/dist/chunk-UF3BYUXY.js +616 -0
  43. package/dist/chunk-UPLVMVRX.cjs +23 -0
  44. package/dist/chunk-USNT2KNT.cjs +6 -0
  45. package/dist/chunk-VMY2S32H.js +2342 -0
  46. package/dist/chunk-WEMDMVHQ.js +216 -0
  47. package/dist/chunk-WO2DW4AU.cjs +182 -0
  48. package/dist/chunk-X47PBV4I.js +79 -0
  49. package/dist/chunk-X6H5VBQ2.cjs +620 -0
  50. package/dist/chunk-XQ3QUHWR.cjs +83 -0
  51. package/dist/chunk-XW5ATPRW.cjs +155 -0
  52. package/dist/cli.cjs +107 -86
  53. package/dist/cli.js +66 -29
  54. package/dist/email-queue-CGZBVVAS.js +2 -0
  55. package/dist/email-queue-TPZWLTIV.cjs +23 -0
  56. package/dist/emit-order-notification-trigger-D2N3KFHL.cjs +16 -0
  57. package/dist/emit-order-notification-trigger-IVLWKKJL.js +3 -0
  58. package/dist/erp-config-enabled-CUMQ6N2V.cjs +11 -0
  59. package/dist/erp-config-enabled-T37X7T34.js +2 -0
  60. package/dist/erp-order-invoice-3YISSOWW.js +3 -0
  61. package/dist/erp-order-invoice-ZR5F2KTA.cjs +12 -0
  62. package/dist/event-order-defaults-EMWBIGL3.cjs +39 -0
  63. package/dist/event-order-defaults-SDRNAZHC.js +2 -0
  64. package/dist/hooks.cjs +259 -132
  65. package/dist/hooks.d.cts +42 -1
  66. package/dist/hooks.d.ts +42 -1
  67. package/dist/hooks.js +234 -91
  68. package/dist/index.cjs +3679 -22356
  69. package/dist/index.d.cts +2173 -643
  70. package/dist/index.d.ts +2173 -643
  71. package/dist/index.js +2587 -22119
  72. package/dist/interpolate-WAKPN56R.cjs +11 -0
  73. package/dist/interpolate-WDUWDF3I.js +2 -0
  74. package/dist/migrations/1779400000000-ConvertStatusToEnum.ts +142 -0
  75. package/dist/migrations/1779400000000-SeedDefaultCurrencies.ts +33 -0
  76. package/dist/migrations/1779500000000-VendorRolesAndPermissions.ts +102 -0
  77. package/dist/migrations/1779600000000-VendorRegistrationProfile.ts +52 -0
  78. package/dist/migrations/1779700000000-CollectionIsCatalog.ts +22 -0
  79. package/dist/migrations/1779710000000-CollectionPlatformCatalog.ts +60 -0
  80. package/dist/migrations/1779720000000-ProductCategoryPlatformCatalog.ts +157 -0
  81. package/dist/migrations/1779800000000-EventsAndEventProducts.ts +173 -0
  82. package/dist/migrations/1779810000000-BackfillVendorRoleEventsPermissions.ts +38 -0
  83. package/dist/migrations/1779820000000-FixProductsCategoryForeignKey.ts +70 -0
  84. package/dist/migrations/1779830000000-ProductTitleColumn.ts +32 -0
  85. package/dist/migrations/1779840000000-EventAboutAndVisibilityFields.ts +34 -0
  86. package/dist/migrations/1779850000000-EventCityCountrySplit.ts +43 -0
  87. package/dist/migrations/1779860000000-CreateCombos.ts +140 -0
  88. package/dist/migrations/1780100000000-OrderAttendeesEventId.ts +55 -0
  89. package/dist/migrations/1780110000000-EventContactFormId.ts +49 -0
  90. package/dist/migrations/1780130000000-ProductVariants.ts +54 -0
  91. package/dist/migrations/1780140000000-EventManagementEnhancements.ts +44 -0
  92. package/dist/migrations/1780160000000-EventRegistrationGstProductContactForm.ts +79 -0
  93. package/dist/migrations/1780170000000-ComboCurrencyPrices.ts +20 -0
  94. package/dist/migrations/1781110000000-VendorOwnerCombosPermission.ts +38 -0
  95. package/dist/migrations/1781120000000-RefundPoliciesAndRequests.ts +225 -0
  96. package/dist/migrations/1781130000000-CreateAttendees.ts +44 -0
  97. package/dist/migrations/1781140000000-EventOrderNotifications.ts +29 -0
  98. package/dist/migrations/1781150000000-EventNamedLists.ts +28 -0
  99. package/dist/migrations/1781160000000-RefundPolicyEventTiers.ts +27 -0
  100. package/dist/migrations/1781170000000-EventRefundPolicy.ts +42 -0
  101. package/dist/migrations/1781180000000-RemoveCartItemsUniqueConstraint.ts +15 -0
  102. package/dist/migrations/1781190000000-RenameProductTaxesToProductConfig.ts +84 -0
  103. package/dist/migrations/1781200000000-VendorOwnerProductConfigPermissions.ts +51 -0
  104. package/dist/migrations/1781210000000-VendorRoleProductConfigPermissions.ts +46 -0
  105. package/dist/migrations/1781220000000-AddWhatsappTriggerBindings.ts +23 -0
  106. package/dist/migrations/1781230000000-AddOrderNotificationTriggers.ts +46 -0
  107. package/dist/migrations/1781240000000-DropEventOrderNotificationColumns.ts +29 -0
  108. package/dist/migrations/1781250000000-RemoveOrderRefundedTrigger.ts +36 -0
  109. package/dist/migrations/helpers/vendor-role-seed.ts +243 -0
  110. package/dist/paid-order-erp-3USEG6WL.js +3 -0
  111. package/dist/paid-order-erp-FSQ3GSXE.cjs +12 -0
  112. package/dist/pg-boss-service-4XF2TQ2E.js +2 -0
  113. package/dist/pg-boss-service-L6MTF4EQ.cjs +15 -0
  114. package/dist/razorpay-KLO2KNCB.js +49 -0
  115. package/dist/razorpay-U23LGY72.cjs +56 -0
  116. package/dist/rbac-debug-db-HWP65A4O.cjs +35 -0
  117. package/dist/rbac-debug-db-QJH3AD34.js +33 -0
  118. package/dist/sms-defaults-2NL24H57.js +2 -0
  119. package/dist/sms-defaults-KCOPKQBA.cjs +19 -0
  120. package/dist/stripe-4FD27QVJ.js +51 -0
  121. package/dist/stripe-VU6OEG2D.cjs +57 -0
  122. package/dist/theme.cjs +31 -59
  123. package/dist/theme.d.cts +78 -3
  124. package/dist/theme.d.ts +78 -3
  125. package/dist/theme.js +23 -20
  126. package/dist/vendor-invite-status-77O7ZQ3U.cjs +19 -0
  127. package/dist/vendor-invite-status-PWJ3DE76.js +2 -0
  128. package/dist/whatsapp-trigger-dispatcher-ONHXI7UY.cjs +19 -0
  129. package/dist/whatsapp-trigger-dispatcher-PWFI4FKP.js +6 -0
  130. package/package.json +147 -142
  131. package/dist/admin.cjs.map +0 -1
  132. package/dist/admin.js.map +0 -1
  133. package/dist/api.cjs.map +0 -1
  134. package/dist/api.js.map +0 -1
  135. package/dist/auth.cjs.map +0 -1
  136. package/dist/auth.js.map +0 -1
  137. package/dist/cli.cjs.map +0 -1
  138. package/dist/cli.js.map +0 -1
  139. package/dist/config-DJ5CmQvS.d.cts +0 -8
  140. package/dist/config-DJ5CmQvS.d.ts +0 -8
  141. package/dist/hooks.cjs.map +0 -1
  142. package/dist/hooks.js.map +0 -1
  143. package/dist/index-Bf5GO8fu.d.cts +0 -583
  144. package/dist/index-DOiJuMQA.d.ts +0 -583
  145. package/dist/index.cjs.map +0 -1
  146. package/dist/index.js.map +0 -1
  147. package/dist/theme.cjs.map +0 -1
  148. package/dist/theme.js.map +0 -1
  149. package/dist/types-DCVaXlPV.d.cts +0 -78
  150. package/dist/types-DCVaXlPV.d.ts +0 -78
  151. package/dist/vendor-scope-DTYhJk_I.d.cts +0 -129
  152. package/dist/vendor-scope-DTYhJk_I.d.ts +0 -129
package/dist/admin.d.cts CHANGED
@@ -1,7 +1,82 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React$1 from 'react';
3
- import { c as ThemeConfig, C as ComponentMeta, a as NavbarConfig } from './types-DCVaXlPV.cjs';
4
- export { A as AdminNavItem, D as DEFAULT_ADMIN_NAV } from './config-DJ5CmQvS.cjs';
2
+ import React$1, { ReactNode } from 'react';
3
+
4
+ type PropType = 'text' | 'textarea' | 'richtext' | 'image' | 'color' | 'select' | 'number' | 'boolean' | 'url' | 'entity';
5
+ interface PropDefinition {
6
+ name: string;
7
+ label: string;
8
+ type: PropType;
9
+ options?: {
10
+ label: string;
11
+ value: string;
12
+ }[];
13
+ entity?: string;
14
+ displayField?: string;
15
+ required?: boolean;
16
+ }
17
+ interface ComponentMeta {
18
+ name: string;
19
+ label: string;
20
+ category: string;
21
+ icon: string;
22
+ description: string;
23
+ defaultProps: Record<string, any>;
24
+ props?: PropDefinition[];
25
+ canContainChildren?: boolean;
26
+ }
27
+ interface ThemeComponent {
28
+ meta: ComponentMeta;
29
+ component: React.ComponentType<any>;
30
+ }
31
+ interface NavItem {
32
+ id: string;
33
+ label: string;
34
+ url: string;
35
+ openInNewTab?: boolean;
36
+ /** When set, url is derived from the linked page slug. */
37
+ pageId?: number;
38
+ children?: NavItem[];
39
+ }
40
+ interface NavbarConfig {
41
+ logo: string;
42
+ items: NavItem[];
43
+ ctaLabel?: string;
44
+ ctaUrl?: string;
45
+ /** Optional variant for theme-specific layout (e.g. "page2"). */
46
+ variant?: string;
47
+ }
48
+ interface FooterConfig {
49
+ copyright: string;
50
+ columns: {
51
+ title: string;
52
+ links: {
53
+ label: string;
54
+ url: string;
55
+ }[];
56
+ }[];
57
+ socialLinks: {
58
+ icon: string;
59
+ url: string;
60
+ }[];
61
+ /** When set, footer shows this logo (e.g. same as navbar). */
62
+ logo?: string;
63
+ }
64
+ interface LayoutConfig {
65
+ navbar?: {
66
+ component: React.ComponentType<NavbarConfig>;
67
+ };
68
+ footer?: {
69
+ component: React.ComponentType<FooterConfig>;
70
+ fields: PropDefinition[];
71
+ defaults: Record<string, any>;
72
+ };
73
+ }
74
+ interface ThemeConfig {
75
+ name: string;
76
+ label: string;
77
+ components: ThemeComponent[];
78
+ layout?: LayoutConfig;
79
+ }
5
80
 
6
81
  interface ThemeRegistryItem {
7
82
  id: string;
@@ -46,6 +121,8 @@ interface CustomCrudColumn {
46
121
  /**
47
122
  * For `type: 'select'`: fixed choices in Add/Edit (e.g. job application status).
48
123
  * Example: `{ field: 'status', displayName: 'Status', type: 'select', options: [{ value: 'new', label: 'New' }, ...] }`
124
+ *
125
+ * For `type: 'multiSelect'`: checkbox list; use `relationApi` or static `options` (values stored as string[]).
49
126
  */
50
127
  options?: CrudFilterSelectOption[];
51
128
  /** Initial value when creating a row (works with `select` and plain fields). */
@@ -68,6 +145,7 @@ interface CustomCrudColumn {
68
145
  hideInCreate?: boolean;
69
146
  /** When true, column is omitted from the list table but still available in Add/Edit. */
70
147
  hideInTable?: boolean;
148
+ hideInEdit?: boolean;
71
149
  }
72
150
  interface CrudFilter {
73
151
  /** Query param name (e.g. status, dateFrom, paymentRef). List filter: select, dateRange, or text. */
@@ -76,6 +154,10 @@ interface CrudFilter {
76
154
  type: 'select' | 'dateRange' | 'text';
77
155
  /** For type select: options. For dateRange: param is base; API expects param+From and param+To (e.g. dateFrom, dateTo). */
78
156
  options?: CrudFilterSelectOption[];
157
+ relationApi?: string;
158
+ relationLabelField?: string;
159
+ relationValueField?: string;
160
+ relationQueryParams?: Record<string, string>;
79
161
  }
80
162
  interface CustomCrudConfig {
81
163
  title: string;
@@ -90,29 +172,69 @@ interface CustomCrudConfig {
90
172
  filters?: CrudFilter[];
91
173
  resource?: string;
92
174
  }
175
+ /**
176
+ * Frontend-defined labels for products shown on a collection edit page.
177
+ * Key by catalog category id (e.g. `"1"`), slug (e.g. `"events"`), or `"default"`.
178
+ *
179
+ * @example
180
+ * categoryRelatedProductLabels={{
181
+ * "1": { sectionTitle: "Tickets", addLabel: "Add ticket", createLabel: "Create ticket", listTitle: "Tickets" },
182
+ * merchandise: { addLabel: "Add merchandise", createLabel: "Create merchandise" },
183
+ * }}
184
+ */
185
+ interface CategoryRelatedProductLabels {
186
+ /** Section heading above the related products table. Default: "Products". */
187
+ sectionTitle?: string;
188
+ /**
189
+ * Section subtitle. Supports `{categoryName}` and `{collectionName}` placeholders.
190
+ * When omitted, a generic description is generated from the active category/collection.
191
+ */
192
+ sectionDescription?: string;
193
+ /** Header and section primary action. Default: "Add product". */
194
+ addLabel?: string;
195
+ /** Empty-state CTA. Default: "Create product". */
196
+ createLabel?: string;
197
+ /** Embedded list table title. Default: "Products". */
198
+ listTitle?: string;
199
+ emptyTitle?: string;
200
+ emptyDescription?: string;
201
+ }
93
202
  interface AdminConfigValue {
94
203
  customNavItems: CustomNavItem[];
95
204
  customNavSections?: CustomNavSection[];
96
205
  customCrudConfigs: Record<string, CustomCrudConfig>;
206
+ /** Per-category labels for collection edit → related products UI (not from DB schema). */
207
+ categoryRelatedProductLabels?: Record<string, CategoryRelatedProductLabels>;
208
+ /** Optional footer on order detail (e.g. ticket attendees for event commerce). */
209
+ renderOrderDetailFooter?: (orderId: string) => React$1.ReactNode;
97
210
  theme?: ThemeConfig;
98
211
  themeRegistry?: ThemeRegistryItem[];
99
212
  activeThemeId?: string;
100
213
  pluginDescriptors?: PluginDescriptor[];
101
214
  storeEnabled?: boolean;
102
215
  currency: String;
216
+ multiVendorEnabled?: boolean;
217
+ eventsEnabled?: boolean;
103
218
  }
104
219
  declare const AdminConfigContext: React$1.Context<AdminConfigValue>;
105
220
 
106
221
  interface AdminLayoutProps {
107
- children: React$1.ReactNode;
222
+ children: React.ReactNode;
108
223
  customNavItems?: CustomNavItem[];
109
224
  customNavSections?: CustomNavSection[];
110
225
  customCrudConfigs?: Record<string, CustomCrudConfig>;
226
+ /**
227
+ * Labels for products on collection edit pages, keyed by category id, slug, or `"default"`.
228
+ * Example: `{ "1": { addLabel: "Add ticket", listTitle: "Tickets" } }`
229
+ */
230
+ categoryRelatedProductLabels?: Record<string, CategoryRelatedProductLabels>;
231
+ /** Rendered below order detail content (host app: attendees, event passes, etc.). */
232
+ renderOrderDetailFooter?: (orderId: string) => React.ReactNode;
111
233
  theme?: ThemeConfig;
112
234
  themeRegistry?: ThemeRegistryItem[];
113
235
  pluginDescriptors?: PluginDescriptor[];
114
236
  }
115
- declare function AdminLayout({ children, customNavItems, customNavSections, customCrudConfigs, theme, themeRegistry, pluginDescriptors }: AdminLayoutProps): react_jsx_runtime.JSX.Element;
237
+ declare function AdminLayout({ children, customNavItems, customNavSections, customCrudConfigs, categoryRelatedProductLabels, renderOrderDetailFooter, theme, themeRegistry, pluginDescriptors, }: AdminLayoutProps): react_jsx_runtime.JSX.Element;
116
238
 
117
239
  declare function AdminShell({ children }: {
118
240
  children: React.ReactNode;
@@ -153,7 +275,12 @@ type CrudFilterItem = {
153
275
  maxParam?: string;
154
276
  };
155
277
 
156
- declare function AdminCRUD({ title, apiEndpoint, columns, addEditPageUrl, customViewPageUrl, defaultSortField, defaultSortOrder, filters, filterColumns, extraListParams, manageUserGroups, }: {
278
+ type CrudEmptyState = {
279
+ title: string;
280
+ description?: string;
281
+ action?: ReactNode;
282
+ };
283
+ declare function AdminCRUD({ title, apiEndpoint, columns, addEditPageUrl, customViewPageUrl, defaultSortField, defaultSortOrder, filters, filterColumns, extraListParams, createQueryParams, manageUserGroups, emptyState, embedded, disableRowClick, customRowActions, headerActions, }: {
157
284
  title: string;
158
285
  apiEndpoint: string;
159
286
  columns: any[];
@@ -165,8 +292,20 @@ declare function AdminCRUD({ title, apiEndpoint, columns, addEditPageUrl, custom
165
292
  /** Full column config for deriving list filters (`select`, `boolean`, `relationApi`). List `columns` may omit hidden fields. */
166
293
  filterColumns?: any[];
167
294
  extraListParams?: Record<string, string>;
295
+ /** Query string params appended to dedicated create URLs (e.g. preset collectionId). */
296
+ createQueryParams?: Record<string, string>;
168
297
  /** When true, show group (role) selector for each user; requires GET /api/admin/roles. */
169
298
  manageUserGroups?: boolean;
299
+ /** Shown when the list is empty and no search or filters are applied. */
300
+ emptyState?: CrudEmptyState;
301
+ /** Compact embed: no page header toolbar (import/export/add). */
302
+ embedded?: boolean;
303
+ /** Disable navigating to detail/edit on row click. */
304
+ disableRowClick?: boolean;
305
+ /** Replace default row action buttons (edit/delete). */
306
+ customRowActions?: (item: Record<string, unknown>) => React.ReactNode;
307
+ /** Custom header actions inserted adjacent to import/export/add buttons. */
308
+ headerActions?: ReactNode;
170
309
  }): react_jsx_runtime.JSX.Element;
171
310
 
172
311
  type CreateEditFormProps = {
@@ -321,15 +460,25 @@ declare function CollectionEditPage({ collectionId }: {
321
460
  collectionId: string;
322
461
  }): react_jsx_runtime.JSX.Element;
323
462
 
463
+ declare function EventEditPage({ eventId }: {
464
+ eventId: string;
465
+ }): react_jsx_runtime.JSX.Element;
466
+
467
+ declare function EventDetailPage({ eventId }: {
468
+ eventId: string;
469
+ }): react_jsx_runtime.JSX.Element;
470
+
324
471
  declare function BlogGeneratorPage(): react_jsx_runtime.JSX.Element;
325
472
 
326
473
  /** @deprecated Use Admin → Plugins → Job scheduler. Kept for old bookmarks. */
327
474
  declare function SchedulesPage(): react_jsx_runtime.JSX.Element;
328
475
 
329
- declare function VendorOnboardPage({ showCreateForm }: {
330
- showCreateForm?: boolean;
476
+ declare function VendorEditPage({ vendorId }: {
477
+ vendorId: string;
331
478
  }): react_jsx_runtime.JSX.Element;
332
479
 
480
+ declare function VendorsListPage(): react_jsx_runtime.JSX.Element;
481
+
333
482
  declare function VendorTeamPage(): react_jsx_runtime.JSX.Element;
334
483
 
335
484
  interface JobSchedulesToolProps {
@@ -363,10 +512,44 @@ declare function DetailPageLayout({ main, sidebar, }: {
363
512
  sidebar?: React$1.ReactNode;
364
513
  }): react_jsx_runtime.JSX.Element;
365
514
 
515
+ interface AdminNavItem {
516
+ href: string;
517
+ label: string;
518
+ icon?: string;
519
+ }
520
+ declare const DEFAULT_ADMIN_NAV: AdminNavItem[];
521
+
366
522
  declare const STORE_CRUD_CONFIGS: Record<string, CustomCrudConfig>;
367
523
 
524
+ declare const DEFAULT_CATEGORY_RELATED_PRODUCT_LABELS: {
525
+ readonly sectionTitle: "Products";
526
+ readonly addLabel: "Add product";
527
+ readonly createLabel: "Create product";
528
+ readonly listTitle: "Products";
529
+ readonly emptyTitle: "No products found";
530
+ readonly emptyDescription: "This collection does not have any products yet.";
531
+ };
532
+ type ResolvedCategoryRelatedProductLabels = {
533
+ sectionTitle: string;
534
+ sectionDescription: string;
535
+ addLabel: string;
536
+ createLabel: string;
537
+ listTitle: string;
538
+ emptyTitle: string;
539
+ emptyDescription: string;
540
+ };
541
+ /** Resolve frontend-defined labels for the collection edit products section. */
542
+ declare function resolveCategoryRelatedProductLabels(config: Record<string, CategoryRelatedProductLabels> | undefined, categoryId: number | string | null | undefined, categorySlug?: string | null, context?: {
543
+ categoryName?: string;
544
+ collectionName?: string;
545
+ }): ResolvedCategoryRelatedProductLabels;
546
+
547
+ /**
548
+ * Theme + toast wrapper for admin. SessionProvider must live at the app root
549
+ * (see README providers.tsx) — do not nest a second SessionProvider here.
550
+ */
368
551
  declare function CmsProviders({ children }: {
369
552
  children: React.ReactNode;
370
553
  }): react_jsx_runtime.JSX.Element;
371
554
 
372
- export { AdminCRUD, AdminConfigContext, DashboardPage as AdminDashboardPage, ForgotPasswordPage as AdminForgotPasswordPage, AdminHeader, InvitePage as AdminInvitePage, AdminLayout, type AdminLayoutProps, AdminPageResolver, AdminProfilePage, ResetPasswordPage as AdminResetPasswordPage, SettingsPage as AdminSettingsPage, AdminShell, AdminSidebar, SigninPage as AdminSignInPage, AnalyticsCard, AnalyticsChart, AnalyticsExclusion, BlogEditor as BlogEditorPage, BlogGeneratorPage, BrandEditPage, CategoryAutocomplete, CmsProviders, CollectionEditPage, ComponentSettings, CreateEditForm, type CustomCrudColumn, type CustomCrudConfig, type CustomNavItem, type CustomNavSection, DailyUserChart, DetailPageHeader, type DetailPageHeaderMenuItem, DetailPageLayout, FormBuilder, GeographicMap, JobSchedulesTool, JoditRichText, LayoutSettingsPage, NavbarEditor, PageBuilderPage, type PluginDescriptor, ProductEditPage, STORE_CRUD_CONFIGS, SchedulesPage, TagAutocomplete, type ThemeRegistryItem, UserAutocomplete, VendorOnboardPage, VendorTeamPage, AdminLayout as default };
555
+ export { AdminCRUD, AdminConfigContext, DashboardPage as AdminDashboardPage, ForgotPasswordPage as AdminForgotPasswordPage, AdminHeader, InvitePage as AdminInvitePage, AdminLayout, type AdminLayoutProps, type AdminNavItem, AdminPageResolver, AdminProfilePage, ResetPasswordPage as AdminResetPasswordPage, SettingsPage as AdminSettingsPage, AdminShell, AdminSidebar, SigninPage as AdminSignInPage, AnalyticsCard, AnalyticsChart, AnalyticsExclusion, BlogEditor as BlogEditorPage, BlogGeneratorPage, BrandEditPage, CategoryAutocomplete, type CategoryRelatedProductLabels, CmsProviders, CollectionEditPage, ComponentSettings, CreateEditForm, type CustomCrudColumn, type CustomCrudConfig, type CustomNavItem, type CustomNavSection, DEFAULT_ADMIN_NAV, DEFAULT_CATEGORY_RELATED_PRODUCT_LABELS, DailyUserChart, DetailPageHeader, type DetailPageHeaderMenuItem, DetailPageLayout, EventDetailPage, EventEditPage, FormBuilder, GeographicMap, JobSchedulesTool, JoditRichText, LayoutSettingsPage, NavbarEditor, PageBuilderPage, type PluginDescriptor, ProductEditPage, type ResolvedCategoryRelatedProductLabels, STORE_CRUD_CONFIGS, SchedulesPage, TagAutocomplete, type ThemeRegistryItem, UserAutocomplete, VendorEditPage, VendorTeamPage, VendorsListPage, AdminLayout as default, resolveCategoryRelatedProductLabels };
package/dist/admin.d.ts CHANGED
@@ -1,7 +1,82 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React$1 from 'react';
3
- import { c as ThemeConfig, C as ComponentMeta, a as NavbarConfig } from './types-DCVaXlPV.js';
4
- export { A as AdminNavItem, D as DEFAULT_ADMIN_NAV } from './config-DJ5CmQvS.js';
2
+ import React$1, { ReactNode } from 'react';
3
+
4
+ type PropType = 'text' | 'textarea' | 'richtext' | 'image' | 'color' | 'select' | 'number' | 'boolean' | 'url' | 'entity';
5
+ interface PropDefinition {
6
+ name: string;
7
+ label: string;
8
+ type: PropType;
9
+ options?: {
10
+ label: string;
11
+ value: string;
12
+ }[];
13
+ entity?: string;
14
+ displayField?: string;
15
+ required?: boolean;
16
+ }
17
+ interface ComponentMeta {
18
+ name: string;
19
+ label: string;
20
+ category: string;
21
+ icon: string;
22
+ description: string;
23
+ defaultProps: Record<string, any>;
24
+ props?: PropDefinition[];
25
+ canContainChildren?: boolean;
26
+ }
27
+ interface ThemeComponent {
28
+ meta: ComponentMeta;
29
+ component: React.ComponentType<any>;
30
+ }
31
+ interface NavItem {
32
+ id: string;
33
+ label: string;
34
+ url: string;
35
+ openInNewTab?: boolean;
36
+ /** When set, url is derived from the linked page slug. */
37
+ pageId?: number;
38
+ children?: NavItem[];
39
+ }
40
+ interface NavbarConfig {
41
+ logo: string;
42
+ items: NavItem[];
43
+ ctaLabel?: string;
44
+ ctaUrl?: string;
45
+ /** Optional variant for theme-specific layout (e.g. "page2"). */
46
+ variant?: string;
47
+ }
48
+ interface FooterConfig {
49
+ copyright: string;
50
+ columns: {
51
+ title: string;
52
+ links: {
53
+ label: string;
54
+ url: string;
55
+ }[];
56
+ }[];
57
+ socialLinks: {
58
+ icon: string;
59
+ url: string;
60
+ }[];
61
+ /** When set, footer shows this logo (e.g. same as navbar). */
62
+ logo?: string;
63
+ }
64
+ interface LayoutConfig {
65
+ navbar?: {
66
+ component: React.ComponentType<NavbarConfig>;
67
+ };
68
+ footer?: {
69
+ component: React.ComponentType<FooterConfig>;
70
+ fields: PropDefinition[];
71
+ defaults: Record<string, any>;
72
+ };
73
+ }
74
+ interface ThemeConfig {
75
+ name: string;
76
+ label: string;
77
+ components: ThemeComponent[];
78
+ layout?: LayoutConfig;
79
+ }
5
80
 
6
81
  interface ThemeRegistryItem {
7
82
  id: string;
@@ -46,6 +121,8 @@ interface CustomCrudColumn {
46
121
  /**
47
122
  * For `type: 'select'`: fixed choices in Add/Edit (e.g. job application status).
48
123
  * Example: `{ field: 'status', displayName: 'Status', type: 'select', options: [{ value: 'new', label: 'New' }, ...] }`
124
+ *
125
+ * For `type: 'multiSelect'`: checkbox list; use `relationApi` or static `options` (values stored as string[]).
49
126
  */
50
127
  options?: CrudFilterSelectOption[];
51
128
  /** Initial value when creating a row (works with `select` and plain fields). */
@@ -68,6 +145,7 @@ interface CustomCrudColumn {
68
145
  hideInCreate?: boolean;
69
146
  /** When true, column is omitted from the list table but still available in Add/Edit. */
70
147
  hideInTable?: boolean;
148
+ hideInEdit?: boolean;
71
149
  }
72
150
  interface CrudFilter {
73
151
  /** Query param name (e.g. status, dateFrom, paymentRef). List filter: select, dateRange, or text. */
@@ -76,6 +154,10 @@ interface CrudFilter {
76
154
  type: 'select' | 'dateRange' | 'text';
77
155
  /** For type select: options. For dateRange: param is base; API expects param+From and param+To (e.g. dateFrom, dateTo). */
78
156
  options?: CrudFilterSelectOption[];
157
+ relationApi?: string;
158
+ relationLabelField?: string;
159
+ relationValueField?: string;
160
+ relationQueryParams?: Record<string, string>;
79
161
  }
80
162
  interface CustomCrudConfig {
81
163
  title: string;
@@ -90,29 +172,69 @@ interface CustomCrudConfig {
90
172
  filters?: CrudFilter[];
91
173
  resource?: string;
92
174
  }
175
+ /**
176
+ * Frontend-defined labels for products shown on a collection edit page.
177
+ * Key by catalog category id (e.g. `"1"`), slug (e.g. `"events"`), or `"default"`.
178
+ *
179
+ * @example
180
+ * categoryRelatedProductLabels={{
181
+ * "1": { sectionTitle: "Tickets", addLabel: "Add ticket", createLabel: "Create ticket", listTitle: "Tickets" },
182
+ * merchandise: { addLabel: "Add merchandise", createLabel: "Create merchandise" },
183
+ * }}
184
+ */
185
+ interface CategoryRelatedProductLabels {
186
+ /** Section heading above the related products table. Default: "Products". */
187
+ sectionTitle?: string;
188
+ /**
189
+ * Section subtitle. Supports `{categoryName}` and `{collectionName}` placeholders.
190
+ * When omitted, a generic description is generated from the active category/collection.
191
+ */
192
+ sectionDescription?: string;
193
+ /** Header and section primary action. Default: "Add product". */
194
+ addLabel?: string;
195
+ /** Empty-state CTA. Default: "Create product". */
196
+ createLabel?: string;
197
+ /** Embedded list table title. Default: "Products". */
198
+ listTitle?: string;
199
+ emptyTitle?: string;
200
+ emptyDescription?: string;
201
+ }
93
202
  interface AdminConfigValue {
94
203
  customNavItems: CustomNavItem[];
95
204
  customNavSections?: CustomNavSection[];
96
205
  customCrudConfigs: Record<string, CustomCrudConfig>;
206
+ /** Per-category labels for collection edit → related products UI (not from DB schema). */
207
+ categoryRelatedProductLabels?: Record<string, CategoryRelatedProductLabels>;
208
+ /** Optional footer on order detail (e.g. ticket attendees for event commerce). */
209
+ renderOrderDetailFooter?: (orderId: string) => React$1.ReactNode;
97
210
  theme?: ThemeConfig;
98
211
  themeRegistry?: ThemeRegistryItem[];
99
212
  activeThemeId?: string;
100
213
  pluginDescriptors?: PluginDescriptor[];
101
214
  storeEnabled?: boolean;
102
215
  currency: String;
216
+ multiVendorEnabled?: boolean;
217
+ eventsEnabled?: boolean;
103
218
  }
104
219
  declare const AdminConfigContext: React$1.Context<AdminConfigValue>;
105
220
 
106
221
  interface AdminLayoutProps {
107
- children: React$1.ReactNode;
222
+ children: React.ReactNode;
108
223
  customNavItems?: CustomNavItem[];
109
224
  customNavSections?: CustomNavSection[];
110
225
  customCrudConfigs?: Record<string, CustomCrudConfig>;
226
+ /**
227
+ * Labels for products on collection edit pages, keyed by category id, slug, or `"default"`.
228
+ * Example: `{ "1": { addLabel: "Add ticket", listTitle: "Tickets" } }`
229
+ */
230
+ categoryRelatedProductLabels?: Record<string, CategoryRelatedProductLabels>;
231
+ /** Rendered below order detail content (host app: attendees, event passes, etc.). */
232
+ renderOrderDetailFooter?: (orderId: string) => React.ReactNode;
111
233
  theme?: ThemeConfig;
112
234
  themeRegistry?: ThemeRegistryItem[];
113
235
  pluginDescriptors?: PluginDescriptor[];
114
236
  }
115
- declare function AdminLayout({ children, customNavItems, customNavSections, customCrudConfigs, theme, themeRegistry, pluginDescriptors }: AdminLayoutProps): react_jsx_runtime.JSX.Element;
237
+ declare function AdminLayout({ children, customNavItems, customNavSections, customCrudConfigs, categoryRelatedProductLabels, renderOrderDetailFooter, theme, themeRegistry, pluginDescriptors, }: AdminLayoutProps): react_jsx_runtime.JSX.Element;
116
238
 
117
239
  declare function AdminShell({ children }: {
118
240
  children: React.ReactNode;
@@ -153,7 +275,12 @@ type CrudFilterItem = {
153
275
  maxParam?: string;
154
276
  };
155
277
 
156
- declare function AdminCRUD({ title, apiEndpoint, columns, addEditPageUrl, customViewPageUrl, defaultSortField, defaultSortOrder, filters, filterColumns, extraListParams, manageUserGroups, }: {
278
+ type CrudEmptyState = {
279
+ title: string;
280
+ description?: string;
281
+ action?: ReactNode;
282
+ };
283
+ declare function AdminCRUD({ title, apiEndpoint, columns, addEditPageUrl, customViewPageUrl, defaultSortField, defaultSortOrder, filters, filterColumns, extraListParams, createQueryParams, manageUserGroups, emptyState, embedded, disableRowClick, customRowActions, headerActions, }: {
157
284
  title: string;
158
285
  apiEndpoint: string;
159
286
  columns: any[];
@@ -165,8 +292,20 @@ declare function AdminCRUD({ title, apiEndpoint, columns, addEditPageUrl, custom
165
292
  /** Full column config for deriving list filters (`select`, `boolean`, `relationApi`). List `columns` may omit hidden fields. */
166
293
  filterColumns?: any[];
167
294
  extraListParams?: Record<string, string>;
295
+ /** Query string params appended to dedicated create URLs (e.g. preset collectionId). */
296
+ createQueryParams?: Record<string, string>;
168
297
  /** When true, show group (role) selector for each user; requires GET /api/admin/roles. */
169
298
  manageUserGroups?: boolean;
299
+ /** Shown when the list is empty and no search or filters are applied. */
300
+ emptyState?: CrudEmptyState;
301
+ /** Compact embed: no page header toolbar (import/export/add). */
302
+ embedded?: boolean;
303
+ /** Disable navigating to detail/edit on row click. */
304
+ disableRowClick?: boolean;
305
+ /** Replace default row action buttons (edit/delete). */
306
+ customRowActions?: (item: Record<string, unknown>) => React.ReactNode;
307
+ /** Custom header actions inserted adjacent to import/export/add buttons. */
308
+ headerActions?: ReactNode;
170
309
  }): react_jsx_runtime.JSX.Element;
171
310
 
172
311
  type CreateEditFormProps = {
@@ -321,15 +460,25 @@ declare function CollectionEditPage({ collectionId }: {
321
460
  collectionId: string;
322
461
  }): react_jsx_runtime.JSX.Element;
323
462
 
463
+ declare function EventEditPage({ eventId }: {
464
+ eventId: string;
465
+ }): react_jsx_runtime.JSX.Element;
466
+
467
+ declare function EventDetailPage({ eventId }: {
468
+ eventId: string;
469
+ }): react_jsx_runtime.JSX.Element;
470
+
324
471
  declare function BlogGeneratorPage(): react_jsx_runtime.JSX.Element;
325
472
 
326
473
  /** @deprecated Use Admin → Plugins → Job scheduler. Kept for old bookmarks. */
327
474
  declare function SchedulesPage(): react_jsx_runtime.JSX.Element;
328
475
 
329
- declare function VendorOnboardPage({ showCreateForm }: {
330
- showCreateForm?: boolean;
476
+ declare function VendorEditPage({ vendorId }: {
477
+ vendorId: string;
331
478
  }): react_jsx_runtime.JSX.Element;
332
479
 
480
+ declare function VendorsListPage(): react_jsx_runtime.JSX.Element;
481
+
333
482
  declare function VendorTeamPage(): react_jsx_runtime.JSX.Element;
334
483
 
335
484
  interface JobSchedulesToolProps {
@@ -363,10 +512,44 @@ declare function DetailPageLayout({ main, sidebar, }: {
363
512
  sidebar?: React$1.ReactNode;
364
513
  }): react_jsx_runtime.JSX.Element;
365
514
 
515
+ interface AdminNavItem {
516
+ href: string;
517
+ label: string;
518
+ icon?: string;
519
+ }
520
+ declare const DEFAULT_ADMIN_NAV: AdminNavItem[];
521
+
366
522
  declare const STORE_CRUD_CONFIGS: Record<string, CustomCrudConfig>;
367
523
 
524
+ declare const DEFAULT_CATEGORY_RELATED_PRODUCT_LABELS: {
525
+ readonly sectionTitle: "Products";
526
+ readonly addLabel: "Add product";
527
+ readonly createLabel: "Create product";
528
+ readonly listTitle: "Products";
529
+ readonly emptyTitle: "No products found";
530
+ readonly emptyDescription: "This collection does not have any products yet.";
531
+ };
532
+ type ResolvedCategoryRelatedProductLabels = {
533
+ sectionTitle: string;
534
+ sectionDescription: string;
535
+ addLabel: string;
536
+ createLabel: string;
537
+ listTitle: string;
538
+ emptyTitle: string;
539
+ emptyDescription: string;
540
+ };
541
+ /** Resolve frontend-defined labels for the collection edit products section. */
542
+ declare function resolveCategoryRelatedProductLabels(config: Record<string, CategoryRelatedProductLabels> | undefined, categoryId: number | string | null | undefined, categorySlug?: string | null, context?: {
543
+ categoryName?: string;
544
+ collectionName?: string;
545
+ }): ResolvedCategoryRelatedProductLabels;
546
+
547
+ /**
548
+ * Theme + toast wrapper for admin. SessionProvider must live at the app root
549
+ * (see README providers.tsx) — do not nest a second SessionProvider here.
550
+ */
368
551
  declare function CmsProviders({ children }: {
369
552
  children: React.ReactNode;
370
553
  }): react_jsx_runtime.JSX.Element;
371
554
 
372
- export { AdminCRUD, AdminConfigContext, DashboardPage as AdminDashboardPage, ForgotPasswordPage as AdminForgotPasswordPage, AdminHeader, InvitePage as AdminInvitePage, AdminLayout, type AdminLayoutProps, AdminPageResolver, AdminProfilePage, ResetPasswordPage as AdminResetPasswordPage, SettingsPage as AdminSettingsPage, AdminShell, AdminSidebar, SigninPage as AdminSignInPage, AnalyticsCard, AnalyticsChart, AnalyticsExclusion, BlogEditor as BlogEditorPage, BlogGeneratorPage, BrandEditPage, CategoryAutocomplete, CmsProviders, CollectionEditPage, ComponentSettings, CreateEditForm, type CustomCrudColumn, type CustomCrudConfig, type CustomNavItem, type CustomNavSection, DailyUserChart, DetailPageHeader, type DetailPageHeaderMenuItem, DetailPageLayout, FormBuilder, GeographicMap, JobSchedulesTool, JoditRichText, LayoutSettingsPage, NavbarEditor, PageBuilderPage, type PluginDescriptor, ProductEditPage, STORE_CRUD_CONFIGS, SchedulesPage, TagAutocomplete, type ThemeRegistryItem, UserAutocomplete, VendorOnboardPage, VendorTeamPage, AdminLayout as default };
555
+ export { AdminCRUD, AdminConfigContext, DashboardPage as AdminDashboardPage, ForgotPasswordPage as AdminForgotPasswordPage, AdminHeader, InvitePage as AdminInvitePage, AdminLayout, type AdminLayoutProps, type AdminNavItem, AdminPageResolver, AdminProfilePage, ResetPasswordPage as AdminResetPasswordPage, SettingsPage as AdminSettingsPage, AdminShell, AdminSidebar, SigninPage as AdminSignInPage, AnalyticsCard, AnalyticsChart, AnalyticsExclusion, BlogEditor as BlogEditorPage, BlogGeneratorPage, BrandEditPage, CategoryAutocomplete, type CategoryRelatedProductLabels, CmsProviders, CollectionEditPage, ComponentSettings, CreateEditForm, type CustomCrudColumn, type CustomCrudConfig, type CustomNavItem, type CustomNavSection, DEFAULT_ADMIN_NAV, DEFAULT_CATEGORY_RELATED_PRODUCT_LABELS, DailyUserChart, DetailPageHeader, type DetailPageHeaderMenuItem, DetailPageLayout, EventDetailPage, EventEditPage, FormBuilder, GeographicMap, JobSchedulesTool, JoditRichText, LayoutSettingsPage, NavbarEditor, PageBuilderPage, type PluginDescriptor, ProductEditPage, type ResolvedCategoryRelatedProductLabels, STORE_CRUD_CONFIGS, SchedulesPage, TagAutocomplete, type ThemeRegistryItem, UserAutocomplete, VendorEditPage, VendorTeamPage, VendorsListPage, AdminLayout as default, resolveCategoryRelatedProductLabels };