@vadimcomanescu/nadicode-design-system 5.0.2 → 6.0.1

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 (188) hide show
  1. package/.agents/skills/seed/SKILL.md +2 -2
  2. package/.agents/skills/seed/references/composition.md +1 -1
  3. package/README.md +1 -1
  4. package/contracts/message-catalog-contract.json +9 -3
  5. package/contracts/release-governance-baseline.json +2 -2
  6. package/dist/{TeamPage-UO3V2JDK.js → TeamPage-XL574KIF.js} +54 -53
  7. package/dist/catalog/catalog.d.ts +290 -10
  8. package/dist/catalog/catalog.js +12 -12
  9. package/dist/catalog/components.d.ts +18 -16
  10. package/dist/catalog/components.js +53 -52
  11. package/dist/catalog/definitions/blocks-agent.d.ts +35 -2
  12. package/dist/catalog/definitions/blocks-agent.js +1 -1
  13. package/dist/catalog/definitions/blocks-auth.d.ts +40 -0
  14. package/dist/catalog/definitions/blocks-auth.js +1 -1
  15. package/dist/catalog/definitions/blocks-content.d.ts +22 -0
  16. package/dist/catalog/definitions/blocks-content.js +1 -1
  17. package/dist/catalog/definitions/blocks-crud.d.ts +102 -2
  18. package/dist/catalog/definitions/blocks-crud.js +1 -1
  19. package/dist/catalog/definitions/blocks-data.d.ts +58 -2
  20. package/dist/catalog/definitions/blocks-data.js +1 -1
  21. package/dist/catalog/definitions/blocks-marketing.d.ts +29 -4
  22. package/dist/catalog/definitions/blocks-marketing.js +1 -1
  23. package/dist/catalog/definitions/blocks-misc.d.ts +2 -0
  24. package/dist/catalog/definitions/blocks-misc.js +1 -1
  25. package/dist/catalog/definitions/display.d.ts +2 -0
  26. package/dist/catalog/definitions/display.js +1 -1
  27. package/dist/catalog/definitions/index.d.ts +290 -10
  28. package/dist/catalog/definitions/index.js +11 -11
  29. package/dist/catalog/primitives/chat.d.ts +2 -2
  30. package/dist/catalog/primitives/chat.js +1 -1
  31. package/dist/catalog/primitives/display.d.ts +7 -7
  32. package/dist/catalog/primitives/display.js +3 -3
  33. package/dist/catalog/primitives/form.d.ts +1 -1
  34. package/dist/catalog/primitives/form.js +1 -1
  35. package/dist/catalog/primitives/index.d.ts +14 -14
  36. package/dist/catalog/primitives/index.js +10 -10
  37. package/dist/catalog/primitives/layout.d.ts +1 -1
  38. package/dist/catalog/primitives/layout.js +1 -1
  39. package/dist/catalog/primitives/navigation.d.ts +4 -4
  40. package/dist/catalog/primitives/navigation.js +1 -1
  41. package/dist/catalog/primitives/overlay.d.ts +2 -2
  42. package/dist/catalog/primitives/overlay.js +1 -1
  43. package/dist/{chunk-PQOL3E2V.js → chunk-25QQEKGR.js} +7 -7
  44. package/dist/{chunk-XLN4NVKU.js → chunk-2BCMZV5U.js} +17 -10
  45. package/dist/{chunk-VQVWFCHF.js → chunk-2OEVKFZ2.js} +10 -10
  46. package/dist/{chunk-V4NBPGED.js → chunk-2UY4XZC6.js} +3 -1
  47. package/dist/{chunk-AP5SGSN7.js → chunk-3MGQGQTS.js} +8 -0
  48. package/dist/{chunk-WGQHM56J.js → chunk-4BG7ILL5.js} +43 -41
  49. package/dist/{chunk-OWWQP3YW.js → chunk-4DQMGKPG.js} +2 -2
  50. package/dist/{chunk-JDHD4L6N.js → chunk-4NRASS74.js} +1 -1
  51. package/dist/{chunk-4ZST7OY5.js → chunk-5DLTCQN4.js} +29 -7
  52. package/dist/{chunk-NBDUZA66.js → chunk-5HFOPRXI.js} +18 -13
  53. package/dist/{chunk-DSNPOAE6.js → chunk-5S34SGPQ.js} +7 -2
  54. package/dist/{chunk-BVXSAVKY.js → chunk-72EJ2TYY.js} +7 -10
  55. package/dist/{chunk-3BGWXRQC.js → chunk-7U55EQZD.js} +8 -11
  56. package/dist/{chunk-MPVYXUOD.js → chunk-A2IYJPTF.js} +3 -1
  57. package/dist/chunk-ACIJEUAH.js +213 -0
  58. package/dist/{chunk-PD6WW7E5.js → chunk-BRESMZ6G.js} +2 -5
  59. package/dist/{chunk-Q4CRHV5T.js → chunk-BVOJIX27.js} +55 -10
  60. package/dist/{chunk-PYRHNONA.js → chunk-CJDVIJEF.js} +6 -5
  61. package/dist/{chunk-FSU7ZM5V.js → chunk-CJT7SZNI.js} +8 -15
  62. package/dist/{chunk-PQBVNNEG.js → chunk-DEILZQEX.js} +12 -3
  63. package/dist/chunk-DORWHCRI.js +112 -0
  64. package/dist/{chunk-EJQ73FJ5.js → chunk-DW3XHDFX.js} +70 -15
  65. package/dist/{chunk-ZL6BPQNN.js → chunk-EKSXBDOA.js} +23 -11
  66. package/dist/{chunk-UCFR7GLW.js → chunk-EX5AIP2Q.js} +4 -4
  67. package/dist/chunk-F4BPNMAD.js +185 -0
  68. package/dist/{chunk-STNVWBJH.js → chunk-FGGGUS5L.js} +1 -1
  69. package/dist/{chunk-IZ7A62GI.js → chunk-GBKAQWME.js} +23 -23
  70. package/dist/{chunk-XYMFKNKG.js → chunk-GW7A5G4W.js} +26 -5
  71. package/dist/{chunk-IW36SVOH.js → chunk-HBVZYYTD.js} +79 -12
  72. package/dist/{chunk-P5I63ETD.js → chunk-HZ6WO2OD.js} +30 -3
  73. package/dist/{chunk-MOFWXBTK.js → chunk-IWFPYUHD.js} +1 -1
  74. package/dist/{chunk-CQ75K2DH.js → chunk-JA6QAEVX.js} +15 -13
  75. package/dist/{chunk-YEAJLVGB.js → chunk-JYDPEIAA.js} +31 -22
  76. package/dist/chunk-KEQFAIPJ.js +84 -0
  77. package/dist/{chunk-QCFDSOTV.js → chunk-KPRBRDSY.js} +6 -11
  78. package/dist/{chunk-W4KI424V.js → chunk-KRNAMBZZ.js} +5 -3
  79. package/dist/{chunk-XMGWLDNG.js → chunk-KSJUX6EA.js} +2 -2
  80. package/dist/{chunk-5RBO2IMZ.js → chunk-KYLXPIFE.js} +23 -16
  81. package/dist/{chunk-B4373MDA.js → chunk-M4AK7ZXY.js} +8 -1
  82. package/dist/{chunk-KANK5FAG.js → chunk-M5MUMF7S.js} +15 -6
  83. package/dist/{chunk-WAIZR4CR.js → chunk-MIVKO3MG.js} +3 -2
  84. package/dist/{chunk-FX3GYS5O.js → chunk-N3WTIJIB.js} +19 -3
  85. package/dist/{chunk-H3KTAHJP.js → chunk-NPJN6OLX.js} +11 -20
  86. package/dist/{chunk-7AUNUDHM.js → chunk-NPNQGXA7.js} +47 -13
  87. package/dist/{chunk-D6MFOI3N.js → chunk-OO2K4JUF.js} +35 -7
  88. package/dist/{chunk-3QMHVXSQ.js → chunk-OPX27RJE.js} +12 -2
  89. package/dist/{chunk-KKBTPNXT.js → chunk-QJ5ODJTH.js} +5 -1
  90. package/dist/{chunk-ZKA5X3E4.js → chunk-QLNATCF6.js} +5 -11
  91. package/dist/{chunk-ZU7MDRCI.js → chunk-RI4IK37T.js} +26 -11
  92. package/dist/{chunk-YMAEXGD2.js → chunk-RPUONGMF.js} +7 -2
  93. package/dist/{chunk-XUWKGDUY.js → chunk-S4ZZ3SJU.js} +32 -22
  94. package/dist/{chunk-6NL36QN3.js → chunk-T3ASBCI3.js} +8 -2
  95. package/dist/{chunk-R4SBK6Y5.js → chunk-T3J7RZV6.js} +9 -19
  96. package/dist/{chunk-UPMSE6PQ.js → chunk-TCDBSHAY.js} +4 -2
  97. package/dist/{chunk-PJ7DVYWA.js → chunk-TOMUOPVE.js} +4 -0
  98. package/dist/{chunk-OS2BLQ2G.js → chunk-TYNILBCP.js} +7 -2
  99. package/dist/{chunk-V5RSV4ZV.js → chunk-VTIT5C7L.js} +17 -3
  100. package/dist/{chunk-33UWVOQ6.js → chunk-WS6PKHGX.js} +1 -1
  101. package/dist/chunk-X5BYH7WG.js +27 -0
  102. package/dist/{chunk-IYK2ABFE.js → chunk-XMXH63A7.js} +2 -2
  103. package/dist/{chunk-3LROWCZE.js → chunk-XVV52J35.js} +24 -5
  104. package/dist/{chunk-OUXJUUCB.js → chunk-XZZVSBPC.js} +34 -3
  105. package/dist/{chunk-UMEBNHKR.js → chunk-YGB5BFFI.js} +4 -2
  106. package/dist/{chunk-CTVV6JS6.js → chunk-Z3NGVHHE.js} +1 -1
  107. package/dist/{chunk-A4QNTJUR.js → chunk-ZCYD22F2.js} +51 -7
  108. package/dist/components/blocks/AgentConversationBlock.d.ts +1 -1
  109. package/dist/components/blocks/AgentConversationBlock.js +107 -1
  110. package/dist/components/blocks/ApiKeysBlock.js +3 -1
  111. package/dist/components/blocks/AuthLayout.js +3 -2
  112. package/dist/components/blocks/BlogIndexBlock.d.ts +1 -1
  113. package/dist/components/blocks/BlogIndexBlock.js +1 -1
  114. package/dist/components/blocks/CallToActionBlock.d.ts +1 -1
  115. package/dist/components/blocks/CallToActionBlock.js +1 -2
  116. package/dist/components/blocks/ChartCollectionBlock.d.ts +1 -1
  117. package/dist/components/blocks/ChartCollectionBlock.js +2 -1
  118. package/dist/components/blocks/ChatLayout.d.ts +1 -1
  119. package/dist/components/blocks/ChatLayout.js +1 -2
  120. package/dist/components/blocks/CheckEmailBlock.js +2 -1
  121. package/dist/components/blocks/CommandPaletteBlock.js +1 -1
  122. package/dist/components/blocks/ContactBlock.js +2 -2
  123. package/dist/components/blocks/CreateBlock.js +2 -1
  124. package/dist/components/blocks/CrudListBlock.js +1 -1
  125. package/dist/components/blocks/DashboardBlock.js +2 -2
  126. package/dist/components/blocks/DataGridBlock.d.ts +3 -3
  127. package/dist/components/blocks/DataGridBlock.js +4 -2
  128. package/dist/components/blocks/DirectoryBlock.d.ts +1 -1
  129. package/dist/components/blocks/DirectoryBlock.js +1 -1
  130. package/dist/components/blocks/FAQBlock.d.ts +1 -1
  131. package/dist/components/blocks/FAQBlock.js +1 -1
  132. package/dist/components/blocks/FooterBlock.d.ts +1 -1
  133. package/dist/components/blocks/FooterBlock.js +1 -2
  134. package/dist/components/blocks/FormFieldBlock.d.ts +1 -1
  135. package/dist/components/blocks/FormFieldBlock.js +1 -1
  136. package/dist/components/blocks/GalleryBlock.d.ts +1 -1
  137. package/dist/components/blocks/GalleryBlock.js +1 -1
  138. package/dist/components/blocks/HeaderBlock.d.ts +1 -1
  139. package/dist/components/blocks/HeaderBlock.js +1 -2
  140. package/dist/components/blocks/HeroBlock.js +1 -2
  141. package/dist/components/blocks/IntegrationsBlock.js +2 -2
  142. package/dist/components/blocks/LoginBlock.js +2 -1
  143. package/dist/components/blocks/LogoCloud.js +2 -2
  144. package/dist/components/blocks/NewsletterBlock.js +2 -2
  145. package/dist/components/blocks/OnboardingFlowBlock.js +1 -1
  146. package/dist/components/blocks/PasswordRecoveryBlock.d.ts +3 -1
  147. package/dist/components/blocks/PasswordRecoveryBlock.js +2 -2
  148. package/dist/components/blocks/PricingBlock.d.ts +3 -1
  149. package/dist/components/blocks/PricingBlock.js +1 -1
  150. package/dist/components/blocks/ResetPasswordBlock.js +1 -1
  151. package/dist/components/blocks/SettingsNavBlock.d.ts +1 -1
  152. package/dist/components/blocks/SettingsNavBlock.js +1 -1
  153. package/dist/components/blocks/StatsMarketingBlock.js +1 -2
  154. package/dist/components/blocks/TeamManagementBlock.d.ts +3 -0
  155. package/dist/components/blocks/TeamManagementBlock.js +129 -0
  156. package/dist/components/blocks/TeamShowcaseBlock.d.ts +3 -0
  157. package/dist/components/blocks/{TeamBlock.js → TeamShowcaseBlock.js} +1 -1
  158. package/dist/components/blocks/TestimonialsBlock.js +2 -2
  159. package/dist/components/blocks/TwoFactorSetupBlock.d.ts +3 -1
  160. package/dist/components/blocks/TwoFactorSetupBlock.js +1 -2
  161. package/dist/components/blocks/WizardBlock.js +1 -1
  162. package/dist/components/blocks/user/InviteUserModal.js +2 -1
  163. package/dist/components/logos/index.js +1 -1
  164. package/dist/components/ui/CheckoutForm.js +1 -1
  165. package/dist/components/ui/DataTable.d.ts +4 -2
  166. package/dist/components/ui/DataTable.js +1 -1
  167. package/dist/components/ui/NavUser.d.ts +1 -1
  168. package/dist/components/ui/NavUser.js +1 -1
  169. package/dist/components/ui/SettingsModal.d.ts +2 -1
  170. package/dist/components/ui/SettingsModal.js +1 -1
  171. package/dist/components/ui/WorkspaceSwitcherBlock.js +1 -1
  172. package/dist/lib/json-render/app.js +1 -1
  173. package/dist/lib/json-render/catalog.d.ts +122 -8
  174. package/dist/lib/json-render/catalog.js +13 -13
  175. package/dist/lib/json-render/registry.js +13 -13
  176. package/dist/lib/json-render/showcase-spec.js +1 -1
  177. package/dist/messages/en.js +1 -1
  178. package/dist/messages/it.js +1 -1
  179. package/dist/test/PublicSeedTestProvider.js +2 -2
  180. package/eslint-rules/nadicode/data/catalog-names.json +2 -1
  181. package/eslint-rules/nadicode/rules/__tests__/require-catalog-import.test.js +0 -5
  182. package/eslint-rules/nadicode/rules/require-catalog-import.js +0 -1
  183. package/package.json +1 -1
  184. package/dist/chunk-6OBT3A5O.js +0 -21
  185. package/dist/chunk-NDQO7AO6.js +0 -105
  186. package/dist/chunk-TTDKPZ75.js +0 -45
  187. package/dist/chunk-YB3J4ZRZ.js +0 -180
  188. package/dist/components/blocks/TeamBlock.d.ts +0 -3
@@ -16,9 +16,13 @@ var blocksCrudDefinitions = {
16
16
  ).nullable(),
17
17
  title: z.string().nullable(),
18
18
  description: z.string().nullable(),
19
- newKeyName: z.string().nullable()
19
+ newKeyName: z.string().nullable(),
20
+ revokedKeyId: z.string().nullable(),
21
+ state: z.enum(["idle", "loading", "success", "error"]).nullable(),
22
+ error: z.string().nullable(),
23
+ createdKey: z.string().nullable()
20
24
  }),
21
- events: ["create", "revoke"],
25
+ events: ["create", "revoke", "dialogClose"],
22
26
  description: "API key management block with table display, create dialog, copy-once flow, and revoke functionality.",
23
27
  example: {
24
28
  keys: [
@@ -27,7 +31,11 @@ var blocksCrudDefinitions = {
27
31
  ],
28
32
  title: "API Keys",
29
33
  description: "Manage your API keys for programmatic access.",
30
- newKeyName: null
34
+ newKeyName: null,
35
+ revokedKeyId: null,
36
+ state: null,
37
+ error: null,
38
+ createdKey: null
31
39
  }
32
40
  },
33
41
  CreateBlock: {
@@ -37,11 +45,14 @@ var blocksCrudDefinitions = {
37
45
  submitLabel: z.string().nullable(),
38
46
  username: z.string().nullable(),
39
47
  email: z.string().nullable(),
40
- bio: z.string().nullable()
48
+ bio: z.string().nullable(),
49
+ state: z.enum(["idle", "submitting", "success", "error"]).nullable(),
50
+ error: z.string().nullable(),
51
+ emailOptions: z.array(z.object({ value: z.string(), label: z.string() })).nullable()
41
52
  }),
42
53
  events: ["submit"],
43
54
  description: "Profile creation form with username, email, and bio fields.",
44
- example: { title: "Create Your Profile", description: "Tell us a bit about yourself to get started.", submitLabel: "Create Profile", username: null, email: null, bio: null }
55
+ example: { title: "Create Your Profile", description: "Tell us a bit about yourself to get started.", submitLabel: "Create Profile", username: null, email: null, bio: null, state: null, error: null, emailOptions: null }
45
56
  },
46
57
  CrudListBlock: {
47
58
  props: z.object({
@@ -66,7 +77,10 @@ var blocksCrudDefinitions = {
66
77
  })
67
78
  ).nullable(),
68
79
  filterValue: z.string().nullable(),
80
+ changedFilterId: z.string().nullable(),
81
+ changedFilterValue: z.string().nullable(),
69
82
  pagination: z.object({ page: z.number(), totalPages: z.number() }),
83
+ currentPage: z.number().nullable(),
70
84
  errorMessage: z.string().nullable(),
71
85
  emptyTitle: z.string().nullable(),
72
86
  emptyDescription: z.string().nullable(),
@@ -91,7 +105,10 @@ var blocksCrudDefinitions = {
91
105
  selectedRowId: null,
92
106
  filterControls: null,
93
107
  filterValue: null,
108
+ changedFilterId: null,
109
+ changedFilterValue: null,
94
110
  pagination: { page: 1, totalPages: 4 },
111
+ currentPage: null,
95
112
  errorMessage: null,
96
113
  emptyTitle: null,
97
114
  emptyDescription: null,
@@ -107,8 +124,12 @@ var blocksCrudDefinitions = {
107
124
  isActive: z.boolean().nullable()
108
125
  })
109
126
  ).nullable(),
110
- projects: z.array(z.object({ name: z.string(), url: z.string() })).nullable()
127
+ projects: z.array(z.object({ name: z.string(), url: z.string() })).nullable(),
128
+ selectedNavItem: z.string().nullable(),
129
+ selectedProject: z.string().nullable(),
130
+ projectAction: z.string().nullable()
111
131
  }),
132
+ events: ["navSelect", "projectSelect", "projectAction"],
112
133
  description: "Navigation directory with sidebar items and project listings.",
113
134
  example: {
114
135
  navItems: [
@@ -118,7 +139,10 @@ var blocksCrudDefinitions = {
118
139
  projects: [
119
140
  { name: "Marketing Site", url: "/projects/marketing" },
120
141
  { name: "Mobile App", url: "/projects/mobile" }
121
- ]
142
+ ],
143
+ selectedNavItem: null,
144
+ selectedProject: null,
145
+ projectAction: null
122
146
  }
123
147
  },
124
148
  FormFieldBlock: {
@@ -166,6 +190,8 @@ var blocksCrudDefinitions = {
166
190
  tertiary: z.string().nullable(),
167
191
  destructive: z.string().nullable()
168
192
  }).nullable(),
193
+ changedFieldId: z.string().nullable(),
194
+ changedFieldValue: z.string().nullable(),
169
195
  className: z.string().nullable()
170
196
  }),
171
197
  events: [
@@ -196,6 +222,8 @@ var blocksCrudDefinitions = {
196
222
  fatalErrorMessage: null,
197
223
  savedMessage: null,
198
224
  actionLabels: { primary: "Save", secondary: "Reset", tertiary: null, destructive: null },
225
+ changedFieldId: null,
226
+ changedFieldValue: null,
199
227
  className: null
200
228
  }
201
229
  },
@@ -225,11 +253,14 @@ var blocksCrudDefinitions = {
225
253
  InviteUserModal: {
226
254
  props: z.object({
227
255
  email: z.string().nullable(),
228
- role: z.enum(["admin", "member", "guest"]).nullable()
256
+ role: z.enum(["admin", "member", "guest"]).nullable(),
257
+ open: z.boolean().nullable(),
258
+ submitting: z.boolean().nullable(),
259
+ error: z.string().nullable()
229
260
  }),
230
261
  events: ["submit"],
231
262
  description: "Self-contained invite teammate modal triggered by a button. Renders a dialog with email and role (admin/member/guest) fields, Zod validation, and async submission. Use inside team management UIs.",
232
- example: { email: null, role: null }
263
+ example: { email: null, role: null, open: null, submitting: null, error: null }
233
264
  },
234
265
  KanbanBoard: {
235
266
  props: z.object({
@@ -253,7 +284,8 @@ var blocksCrudDefinitions = {
253
284
  label: z.string(),
254
285
  href: z.string().nullable()
255
286
  })
256
- ).nullable()
287
+ ).nullable(),
288
+ selectedItem: z.string().nullable()
257
289
  }),
258
290
  slots: ["footer"],
259
291
  events: ["select"],
@@ -264,7 +296,8 @@ var blocksCrudDefinitions = {
264
296
  { label: "Profile", href: "/settings/profile" },
265
297
  { label: "Billing", href: "/settings/billing" },
266
298
  { label: "Sign out", href: null }
267
- ]
299
+ ],
300
+ selectedItem: null
268
301
  }
269
302
  },
270
303
  SettingsModal: {
@@ -345,7 +378,41 @@ var blocksCrudDefinitions = {
345
378
  className: null
346
379
  }
347
380
  },
348
- TeamBlock: {
381
+ TeamManagementBlock: {
382
+ props: z.object({
383
+ members: z.array(z.object({
384
+ id: z.string(),
385
+ name: z.string(),
386
+ email: z.string(),
387
+ role: z.enum(["owner", "admin", "member", "guest"]),
388
+ avatar: z.string().nullable(),
389
+ joinedAt: z.string().nullable(),
390
+ status: z.enum(["active", "pending", "deactivated"]).nullable()
391
+ })).nullable(),
392
+ searchQuery: z.string().nullable(),
393
+ selectedMemberId: z.string().nullable(),
394
+ selectedRole: z.string().nullable(),
395
+ state: z.enum(["loading", "empty", "has-data", "error"]).nullable(),
396
+ title: z.string().nullable(),
397
+ description: z.string().nullable(),
398
+ errorMessage: z.string().nullable(),
399
+ className: z.string().nullable()
400
+ }),
401
+ events: ["invite", "roleChange", "removeMember", "searchChange"],
402
+ description: "Team member management with search, role assignment, invite, and member removal.",
403
+ example: {
404
+ members: null,
405
+ searchQuery: null,
406
+ selectedMemberId: null,
407
+ selectedRole: null,
408
+ state: null,
409
+ title: null,
410
+ description: null,
411
+ errorMessage: null,
412
+ className: null
413
+ }
414
+ },
415
+ TeamShowcaseBlock: {
349
416
  props: z.object({
350
417
  title: z.string().nullable(),
351
418
  sections: z.array(
@@ -40,7 +40,19 @@ var formComponents = {
40
40
  const isBound = !!bindings?.selected;
41
41
  const singleSelected = isBound ? boundSelected : localSelected;
42
42
  const setSingleSelected = isBound ? setBoundSelected : setLocalSelected;
43
+ const [, setBoundRangeStart] = useBoundProp(
44
+ void 0,
45
+ bindings?.rangeStart
46
+ );
47
+ const [, setBoundRangeEnd] = useBoundProp(
48
+ void 0,
49
+ bindings?.rangeEnd
50
+ );
43
51
  const [rangeSelected, setRangeSelected] = useState(void 0);
52
+ const [, setBoundMultiple] = useBoundProp(
53
+ void 0,
54
+ bindings?.selectedDates
55
+ );
44
56
  const [multipleSelected, setMultipleSelected] = useState([]);
45
57
  if (mode === "range") {
46
58
  return /* @__PURE__ */ jsx(
@@ -50,6 +62,8 @@ var formComponents = {
50
62
  selected: rangeSelected,
51
63
  onSelect: (range) => {
52
64
  setRangeSelected(range);
65
+ if (range?.from) setBoundRangeStart(range.from.toISOString());
66
+ if (range?.to) setBoundRangeEnd(range.to.toISOString());
53
67
  emit("select");
54
68
  }
55
69
  }
@@ -62,7 +76,9 @@ var formComponents = {
62
76
  mode: "multiple",
63
77
  selected: multipleSelected,
64
78
  onSelect: (dates) => {
65
- setMultipleSelected(dates ?? []);
79
+ const resolved = dates ?? [];
80
+ setMultipleSelected(resolved);
81
+ setBoundMultiple(resolved.map((d) => d.toISOString()));
66
82
  emit("select");
67
83
  }
68
84
  }
@@ -293,9 +309,14 @@ var formComponents = {
293
309
  },
294
310
  FileUpload: ({
295
311
  props,
312
+ bindings,
296
313
  emit
297
314
  }) => {
298
315
  const [files, setFiles] = useState([]);
316
+ const [, setBoundFiles] = useBoundProp(
317
+ void 0,
318
+ bindings?.files
319
+ );
299
320
  return /* @__PURE__ */ jsx(
300
321
  FileUpload,
301
322
  {
@@ -306,11 +327,17 @@ var formComponents = {
306
327
  disabled: props.disabled ?? false,
307
328
  files,
308
329
  onChange: (newFiles) => {
309
- setFiles(newFiles.map((f) => ({ name: f.name, size: f.size, type: f.type })));
330
+ const mapped = newFiles.map((f) => ({ name: f.name, size: f.size, type: f.type }));
331
+ setFiles(mapped);
332
+ setBoundFiles(mapped);
310
333
  emit("upload");
311
334
  },
312
335
  onRemove: (index) => {
313
- setFiles((prev) => prev.filter((_, i) => i !== index));
336
+ setFiles((prev) => {
337
+ const next = prev.filter((_, i) => i !== index);
338
+ setBoundFiles(next);
339
+ return next;
340
+ });
314
341
  emit("remove");
315
342
  }
316
343
  }
@@ -69,7 +69,7 @@ function CheckoutForm({
69
69
  const clientSecret = props.clientSecret;
70
70
  const amount = props.amount ?? 2e3;
71
71
  const currency = props.currency ?? "usd";
72
- const returnUrl = props.returnUrl ?? "/settings/billing";
72
+ const returnUrl = props.returnUrl ?? "/checkout/success";
73
73
  const appearance = props.appearance;
74
74
  const stripePromise = useMemo(
75
75
  () => loadStripe(publishableKey),
@@ -1,6 +1,5 @@
1
1
  import { Sheet, SheetTrigger, SheetContent, SheetTitle } from './chunk-KPO4PD6C.js';
2
2
  import { Logo } from './chunk-GHIBG7OM.js';
3
- import { siteConfig } from './chunk-A7NUWD76.js';
4
3
  import { Button } from './chunk-7KIDDF3I.js';
5
4
  import { MenuIcon } from './chunk-JMCSAGZ3.js';
6
5
  import { XIcon } from './chunk-UIUMTURU.js';
@@ -10,13 +9,16 @@ import { useScroll, useMotionValueEvent } from 'motion/react';
10
9
  import Link from 'next/link';
11
10
  import { jsx, jsxs } from 'react/jsx-runtime';
12
11
 
13
- var defaultMenuItems = siteConfig.nav.header;
14
- function HeaderBlock({ props }) {
12
+ var defaultMenuItems = [
13
+ { name: "Features", href: "#" },
14
+ { name: "Solution", href: "#" },
15
+ { name: "Pricing", href: "#" },
16
+ { name: "About", href: "#" }
17
+ ];
18
+ function HeaderBlock({ props, emit }) {
15
19
  const menuItems = props.menuItems ?? defaultMenuItems;
16
20
  const loginLabel = props.loginLabel ?? "Login";
17
21
  const signUpLabel = props.signUpLabel ?? "Sign Up";
18
- const loginHref = props.loginHref ?? "#";
19
- const signUpHref = props.signUpHref ?? "#";
20
22
  const t = useTranslations("blocks.headerBlock");
21
23
  const [mobileOpen, setMobileOpen] = useState(false);
22
24
  const navBarRef = useRef(null);
@@ -88,18 +90,18 @@ function HeaderBlock({ props }) {
88
90
  /* @__PURE__ */ jsx(
89
91
  Button,
90
92
  {
91
- asChild: true,
92
93
  variant: "outline",
93
94
  size: "lg",
94
- children: /* @__PURE__ */ jsx(Link, { href: loginHref, children: /* @__PURE__ */ jsx("span", { children: loginLabel }) })
95
+ onClick: () => emit("login"),
96
+ children: /* @__PURE__ */ jsx("span", { children: loginLabel })
95
97
  }
96
98
  ),
97
99
  /* @__PURE__ */ jsx(
98
100
  Button,
99
101
  {
100
- asChild: true,
101
102
  size: "lg",
102
- children: /* @__PURE__ */ jsx(Link, { href: signUpHref, children: /* @__PURE__ */ jsx("span", { children: signUpLabel }) })
103
+ onClick: () => emit("signup"),
104
+ children: /* @__PURE__ */ jsx("span", { children: signUpLabel })
103
105
  }
104
106
  )
105
107
  ] })
@@ -119,18 +121,18 @@ function HeaderBlock({ props }) {
119
121
  /* @__PURE__ */ jsx(
120
122
  Button,
121
123
  {
122
- asChild: true,
123
124
  variant: "outline",
124
125
  size: "lg",
125
- children: /* @__PURE__ */ jsx(Link, { href: loginHref, children: /* @__PURE__ */ jsx("span", { children: loginLabel }) })
126
+ onClick: () => emit("login"),
127
+ children: /* @__PURE__ */ jsx("span", { children: loginLabel })
126
128
  }
127
129
  ),
128
130
  /* @__PURE__ */ jsx(
129
131
  Button,
130
132
  {
131
- asChild: true,
132
133
  size: "lg",
133
- children: /* @__PURE__ */ jsx(Link, { href: signUpHref, children: /* @__PURE__ */ jsx("span", { children: signUpLabel }) })
134
+ onClick: () => emit("signup"),
135
+ children: /* @__PURE__ */ jsx("span", { children: signUpLabel })
134
136
  }
135
137
  )
136
138
  ] }) })
@@ -20,6 +20,7 @@ var blocksMarketingDefinitions = {
20
20
  primaryAction: z.object({ label: z.string(), href: z.string() }).nullable(),
21
21
  secondaryAction: z.object({ label: z.string(), href: z.string() }).nullable()
22
22
  }),
23
+ events: ["primaryAction", "secondaryAction"],
23
24
  description: "Call-to-action section with headline, description, and primary/secondary action buttons.",
24
25
  example: {
25
26
  title: "Ready to get started?",
@@ -64,11 +65,13 @@ var blocksMarketingDefinitions = {
64
65
  submitLabel: z.string().nullable(),
65
66
  name: z.string().nullable(),
66
67
  email: z.string().nullable(),
67
- message: z.string().nullable()
68
+ message: z.string().nullable(),
69
+ state: z.enum(["idle", "loading", "success", "error"]).nullable(),
70
+ error: z.string().nullable()
68
71
  }),
69
72
  events: ["submit"],
70
- description: "Contact form with name, email, and message fields. Shows success state after submission.",
71
- example: { title: "Get in touch", description: null, namePlaceholder: null, emailPlaceholder: null, messagePlaceholder: null, successTitle: null, submitLabel: "Send message", name: null, email: null, message: null }
73
+ description: "Contact form with name, email, and message fields. Consumer drives state transitions via state/error props.",
74
+ example: { title: "Get in touch", description: null, namePlaceholder: null, emailPlaceholder: null, messagePlaceholder: null, successTitle: null, submitLabel: "Send message", name: null, email: null, message: null, state: null, error: null }
72
75
  },
73
76
  FAQBlock: {
74
77
  props: z.object({
@@ -76,11 +79,12 @@ var blocksMarketingDefinitions = {
76
79
  description: z.string().nullable(),
77
80
  items: z.array(
78
81
  z.object({ question: z.string(), answer: z.string() })
79
- ).nullable()
82
+ ).nullable(),
83
+ selectedQuestion: z.string().nullable()
80
84
  }),
81
85
  events: ["expand"],
82
- description: "Accordion-style FAQ section with expandable question/answer pairs.",
83
- example: { title: "Frequently Asked Questions", description: null, items: [{ question: "How do I reset my password?", answer: "Go to Settings, then Security, and click Reset Password." }] }
86
+ description: "Accordion-style FAQ section with expandable question/answer pairs. Writes selectedQuestion binding before emitting expand.",
87
+ example: { title: "Frequently Asked Questions", description: null, items: [{ question: "How do I reset my password?", answer: "Go to Settings, then Security, and click Reset Password." }], selectedQuestion: null }
84
88
  },
85
89
  FeatureBlock: {
86
90
  props: z.object({
@@ -120,34 +124,33 @@ var blocksMarketingDefinitions = {
120
124
  alt: z.string(),
121
125
  caption: z.string().nullable()
122
126
  })
123
- ).nullable()
127
+ ).nullable(),
128
+ selectedImage: z.string().nullable()
124
129
  }),
125
130
  events: ["select"],
126
- description: "Image gallery grid with configurable columns and optional captions.",
131
+ description: "Image gallery grid with configurable columns and optional captions. Writes selectedImage binding (image src) before emitting select.",
127
132
  example: {
128
133
  title: "Product Gallery",
129
134
  columns: 3,
130
135
  images: [
131
136
  { src: "https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe", alt: "Abstract gradient artwork", caption: "Aurora Series #1" },
132
137
  { src: "https://images.unsplash.com/photo-1579546929518-9e396f3cc809", alt: "Colorful gradient background", caption: null }
133
- ]
138
+ ],
139
+ selectedImage: null
134
140
  }
135
141
  },
136
142
  HeaderBlock: {
137
143
  props: z.object({
138
144
  menuItems: z.array(z.object({ name: z.string(), href: z.string() })).nullable(),
139
145
  loginLabel: z.string().nullable(),
140
- signUpLabel: z.string().nullable(),
141
- loginHref: z.string().nullable(),
142
- signUpHref: z.string().nullable()
146
+ signUpLabel: z.string().nullable()
143
147
  }),
144
- description: "Site header with logo, navigation menu, and auth action buttons. Responsive with mobile hamburger menu.",
148
+ events: ["login", "signup"],
149
+ description: "Site header with logo, navigation menu, and auth action buttons. Responsive with mobile hamburger menu. Auth buttons emit login/signup events.",
145
150
  example: {
146
151
  menuItems: [{ name: "Features", href: "#features" }],
147
152
  loginLabel: "Login",
148
- signUpLabel: null,
149
- loginHref: null,
150
- signUpHref: null
153
+ signUpLabel: null
151
154
  }
152
155
  },
153
156
  HeroBlock: {
@@ -179,13 +182,15 @@ var blocksMarketingDefinitions = {
179
182
  brandName: z.string().nullable(),
180
183
  brandDescription: z.string().nullable(),
181
184
  newsletterPlaceholder: z.string().nullable(),
185
+ email: z.string().nullable(),
182
186
  productLinks: z.array(z.object({ name: z.string(), href: z.string() })).nullable(),
183
187
  companyLinks: z.array(z.object({ name: z.string(), href: z.string() })).nullable(),
184
188
  legalLinks: z.array(z.object({ name: z.string(), href: z.string() })).nullable(),
185
189
  socialLinks: z.array(z.object({ platform: z.string(), href: z.string() })).nullable()
186
190
  }),
187
- description: "Site footer with brand description, navigation columns, newsletter signup, and social icons. Social icons use platform string keys (twitter, github, linkedin) resolved via ICON_MAP.",
188
- example: { brandName: "Acme", brandDescription: "The ultimate design system.", newsletterPlaceholder: null, productLinks: null, companyLinks: null, legalLinks: null, socialLinks: null }
191
+ events: ["subscribe"],
192
+ description: "Site footer with brand description, navigation columns, newsletter signup, and social icons. Newsletter input is wired with email binding and emits subscribe event.",
193
+ example: { brandName: "Acme", brandDescription: "The ultimate design system.", newsletterPlaceholder: null, email: null, productLinks: null, companyLinks: null, legalLinks: null, socialLinks: null }
189
194
  },
190
195
  LogoCloud: {
191
196
  props: z.object({
@@ -212,11 +217,13 @@ var blocksMarketingDefinitions = {
212
217
  props: z.object({
213
218
  title: z.string().nullable(),
214
219
  description: z.string().nullable(),
215
- email: z.string().nullable()
220
+ email: z.string().nullable(),
221
+ state: z.enum(["idle", "loading", "success", "error"]).nullable(),
222
+ error: z.string().nullable()
216
223
  }),
217
224
  events: ["subscribe"],
218
- description: "Newsletter signup form with email input and subscribe button.",
219
- example: { title: "Stay in the loop", description: "Get product updates and engineering insights delivered weekly.", email: null }
225
+ description: "Newsletter signup form with email input and subscribe button. Consumer drives state transitions via state/error props.",
226
+ example: { title: "Stay in the loop", description: "Get product updates and engineering insights delivered weekly.", email: null, state: null, error: null }
220
227
  },
221
228
  SolutionShowcaseBlock: {
222
229
  props: z.object({
@@ -251,6 +258,7 @@ var blocksMarketingDefinitions = {
251
258
  props: z.object({
252
259
  title: z.string().nullable(),
253
260
  description: z.string().nullable(),
261
+ featuredCompanyLogo: z.string().nullable(),
254
262
  testimonials: z.array(
255
263
  z.object({
256
264
  quote: z.string(),
@@ -261,10 +269,11 @@ var blocksMarketingDefinitions = {
261
269
  })
262
270
  ).nullable()
263
271
  }),
264
- description: "Customer testimonials with quotes, author info, and optional featured highlighting.",
272
+ description: "Customer testimonials with quotes, author info, and optional featured highlighting. Featured card shows company logo via featuredCompanyLogo prop.",
265
273
  example: {
266
274
  title: "What Our Customers Say",
267
275
  description: null,
276
+ featuredCompanyLogo: null,
268
277
  testimonials: [
269
278
  { quote: "This platform cut our deployment time by 80%. The team onboarding was seamless.", author: "Priya Sharma", role: "VP of Engineering at Finova", avatar: "https://avatars.githubusercontent.com/u/300", featured: true },
270
279
  { quote: "Outstanding developer experience. We migrated our entire stack in under a week.", author: "Tom Lindgren", role: "Staff Engineer at Meridian", avatar: "https://avatars.githubusercontent.com/u/301", featured: null }
@@ -0,0 +1,84 @@
1
+ import { mapToolCallStatus } from './chunk-STKNMEJA.js';
2
+ import { ScrollArea } from './chunk-GLU236NN.js';
3
+ import { Input } from './chunk-AP3XXYAY.js';
4
+ import { ChatThinkingMessage } from './chunk-CY3PROVO.js';
5
+ import { ChatToolCall, ChatToolCallHeader, ChatToolCallContent, ChatToolCallInput, ChatToolCallOutput } from './chunk-L2IRYY6K.js';
6
+ import { ChatMessage, ChatMessageContent, ChatMessageFooter, ChatMessageTimestamp } from './chunk-UAN2YEI5.js';
7
+ import { Button } from './chunk-7KIDDF3I.js';
8
+ import { SendIcon } from './chunk-CRZ2JE24.js';
9
+ import * as React from 'react';
10
+ import { useTranslations } from 'next-intl';
11
+ import { useBoundProp } from '@json-render/react';
12
+ import { jsx, jsxs } from 'react/jsx-runtime';
13
+
14
+ function AgentConversationBlock({ props, bindings, emit }) {
15
+ const messages = props.messages;
16
+ const t = useTranslations("components.agentConversationBlock");
17
+ const endRef = React.useRef(null);
18
+ const [boundInput, setBoundInput] = useBoundProp(props.messageInput, bindings?.messageInput);
19
+ const [localInput, setLocalInput] = React.useState("");
20
+ const isInputBound = !!bindings?.messageInput;
21
+ const input = isInputBound ? boundInput ?? "" : localInput;
22
+ const setInput = isInputBound ? setBoundInput : setLocalInput;
23
+ const handleSend = () => {
24
+ if (!input.trim()) return;
25
+ emit("send");
26
+ setInput("");
27
+ };
28
+ React.useEffect(() => {
29
+ endRef.current?.scrollIntoView({ block: "end" });
30
+ }, [messages]);
31
+ if (messages.length === 0) {
32
+ return /* @__PURE__ */ jsx("div", { className: "surface-solid rounded-lg h-96 p-4", "aria-live": "polite", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-text-tertiary", children: t("noMessages") }) });
33
+ }
34
+ return /* @__PURE__ */ jsxs("div", { className: "surface-solid rounded-lg h-96 flex flex-col", children: [
35
+ /* @__PURE__ */ jsx(ScrollArea, { className: "flex-1", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 p-4", "aria-live": "polite", children: [
36
+ messages.map((msg) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
37
+ !!msg.isThinking && /* @__PURE__ */ jsx(ChatThinkingMessage, { variant: "pill", reasoning: msg.reasoning ?? void 0 }),
38
+ /* @__PURE__ */ jsxs(ChatMessage, { role: msg.role, children: [
39
+ /* @__PURE__ */ jsx(ChatMessageContent, { isStreaming: msg.isStreaming ?? void 0, children: msg.content }),
40
+ msg.timestamp && /* @__PURE__ */ jsx(ChatMessageFooter, { children: /* @__PURE__ */ jsx(ChatMessageTimestamp, { children: msg.timestamp }) })
41
+ ] }),
42
+ msg.toolCalls && msg.toolCalls.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1.5 mt-1", children: msg.toolCalls.map((tc) => /* @__PURE__ */ jsxs(ChatToolCall, { state: mapToolCallStatus(tc.status), children: [
43
+ /* @__PURE__ */ jsx(
44
+ ChatToolCallHeader,
45
+ {
46
+ name: tc.toolName,
47
+ summary: tc.duration != null ? `${tc.duration}ms` : void 0
48
+ }
49
+ ),
50
+ (tc.args != null || tc.result != null) && /* @__PURE__ */ jsxs(ChatToolCallContent, { children: [
51
+ tc.args != null && Object.keys(tc.args).length > 0 && /* @__PURE__ */ jsx(ChatToolCallInput, { children: JSON.stringify(tc.args, null, 2) }),
52
+ tc.result != null && /* @__PURE__ */ jsx(ChatToolCallOutput, { children: tc.result })
53
+ ] })
54
+ ] }, tc.id)) })
55
+ ] }, msg.id)),
56
+ /* @__PURE__ */ jsx("div", { ref: endRef, "aria-hidden": "true", className: "h-px w-full" })
57
+ ] }) }),
58
+ /* @__PURE__ */ jsxs(
59
+ "form",
60
+ {
61
+ className: "flex items-center gap-2 border-t border-border p-3",
62
+ onSubmit: (e) => {
63
+ e.preventDefault();
64
+ handleSend();
65
+ },
66
+ children: [
67
+ /* @__PURE__ */ jsx(
68
+ Input,
69
+ {
70
+ name: "message",
71
+ placeholder: t("inputPlaceholder"),
72
+ value: input,
73
+ onChange: (e) => setInput(e.target.value),
74
+ className: "flex-1"
75
+ }
76
+ ),
77
+ /* @__PURE__ */ jsx(Button, { type: "submit", size: "icon", disabled: !input.trim(), "aria-label": t("sendMessage"), children: /* @__PURE__ */ jsx(SendIcon, { size: 16 }) })
78
+ ]
79
+ }
80
+ )
81
+ ] });
82
+ }
83
+
84
+ export { AgentConversationBlock };
@@ -2,7 +2,6 @@ import { StaggerChildren } from './chunk-DQPK2XRL.js';
2
2
  import { InputOTP, InputOTPGroup, InputOTPSlot } from './chunk-WN5ONOHC.js';
3
3
  import { FormWizard } from './chunk-U5QLJHYN.js';
4
4
  import { Label } from './chunk-LIBXYD5Q.js';
5
- import { useSafeTimeout } from './chunk-MDAYDDTC.js';
6
5
  import { Checkbox } from './chunk-756Q7AC5.js';
7
6
  import { Collapsible, CollapsibleTrigger, CollapsibleContent } from './chunk-VJIL7W55.js';
8
7
  import { Empty, EmptyDescription } from './chunk-4TF4QFIM.js';
@@ -39,15 +38,14 @@ function TwoFactorSetupBlock({ props, bindings, emit, on }) {
39
38
  const isCodeBound = !!bindings?.verifyCode;
40
39
  const otpCode = isCodeBound ? boundCode ?? "" : localOtpCode;
41
40
  const setOtpCode = isCodeBound ? setBoundCode : setLocalOtpCode;
42
- const [verified, setVerified] = React.useState(false);
43
- const [verifyError, setVerifyError] = React.useState();
41
+ const state = props.state ?? "idle";
42
+ const error = props.error ?? null;
44
43
  const [savedCodes, setSavedCodes] = React.useState(false);
45
44
  const [copied, setCopied] = React.useState(false);
46
- const setSafeTimeout = useSafeTimeout();
47
45
  const copyToClipboard = (text) => {
48
46
  navigator.clipboard.writeText(text);
49
47
  setCopied(true);
50
- setSafeTimeout(() => setCopied(false), 2e3);
48
+ setTimeout(() => setCopied(false), 2e3);
51
49
  };
52
50
  const copyAllCodes = () => {
53
51
  copyToClipboard(backupCodes.join("\n"));
@@ -63,13 +61,10 @@ function TwoFactorSetupBlock({ props, bindings, emit, on }) {
63
61
  };
64
62
  const handleVerify = (value) => {
65
63
  setOtpCode(value);
66
- setVerifyError(void 0);
67
- setVerified(false);
68
64
  if (value.length !== 6) {
69
65
  return;
70
66
  }
71
67
  emit("verify");
72
- setVerified(true);
73
68
  };
74
69
  const steps = [
75
70
  {
@@ -111,10 +106,10 @@ function TwoFactorSetupBlock({ props, bindings, emit, on }) {
111
106
  /* @__PURE__ */ jsx(InputOTPSlot, { index: 4 }),
112
107
  /* @__PURE__ */ jsx(InputOTPSlot, { index: 5 })
113
108
  ] }) }) }),
114
- !!verifyError && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-destructive", children: verifyError }),
115
- !!verified && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-success", children: "Code verified successfully" })
109
+ !!error && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-destructive", children: error }),
110
+ state === "success" && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-success", children: "Code verified successfully" })
116
111
  ] }),
117
- validate: () => verified
112
+ validate: () => state === "success"
118
113
  },
119
114
  {
120
115
  id: "backup",
@@ -13,16 +13,18 @@ var displayDefinitions = {
13
13
  title: z.string(),
14
14
  content: z.string()
15
15
  })
16
- ).nullable()
16
+ ).nullable(),
17
+ value: z.string().nullable()
17
18
  }),
18
19
  events: ["valueChange"],
19
- description: "Radix-based accordion with single or multiple open mode. Each item has a value key, trigger title, and body content string.",
20
+ description: "Radix-based accordion with single or multiple open mode. Each item has a value key, trigger title, and body content string. value enables controlled mode; for multiple mode, bind a comma-separated string of open item values.",
20
21
  example: {
21
22
  type: "single",
22
23
  items: [
23
24
  { value: "shipping", title: "Shipping Policy", content: "Orders ship within 2 business days via USPS Priority Mail." },
24
25
  { value: "returns", title: "Return Policy", content: "Returns accepted within 30 days of delivery with original packaging." }
25
- ]
26
+ ],
27
+ value: null
26
28
  }
27
29
  },
28
30
  Alert: {
@@ -31,7 +31,7 @@ var defaultSections = [
31
31
  { heading: "Engineering", members: defaultMembers },
32
32
  { heading: "Marketing", members: defaultMembers }
33
33
  ];
34
- function TeamBlock({ props }) {
34
+ function TeamShowcaseBlock({ props }) {
35
35
  const title = props.title ?? "Our team";
36
36
  const sections = props.sections ?? defaultSections;
37
37
  return /* @__PURE__ */ jsx(ScrollFadeIn, { children: /* @__PURE__ */ jsx("section", { className: "py-12 md:py-32", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-3xl px-8 lg:px-0", children: [
@@ -47,4 +47,4 @@ function TeamBlock({ props }) {
47
47
  ] }) }) });
48
48
  }
49
49
 
50
- export { TeamBlock };
50
+ export { TeamShowcaseBlock };