@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.
- package/.agents/skills/seed/SKILL.md +2 -2
- package/.agents/skills/seed/references/composition.md +1 -1
- package/README.md +1 -1
- package/contracts/message-catalog-contract.json +9 -3
- package/contracts/release-governance-baseline.json +2 -2
- package/dist/{TeamPage-UO3V2JDK.js → TeamPage-XL574KIF.js} +54 -53
- package/dist/catalog/catalog.d.ts +290 -10
- package/dist/catalog/catalog.js +12 -12
- package/dist/catalog/components.d.ts +18 -16
- package/dist/catalog/components.js +53 -52
- package/dist/catalog/definitions/blocks-agent.d.ts +35 -2
- package/dist/catalog/definitions/blocks-agent.js +1 -1
- package/dist/catalog/definitions/blocks-auth.d.ts +40 -0
- package/dist/catalog/definitions/blocks-auth.js +1 -1
- package/dist/catalog/definitions/blocks-content.d.ts +22 -0
- package/dist/catalog/definitions/blocks-content.js +1 -1
- package/dist/catalog/definitions/blocks-crud.d.ts +102 -2
- package/dist/catalog/definitions/blocks-crud.js +1 -1
- package/dist/catalog/definitions/blocks-data.d.ts +58 -2
- package/dist/catalog/definitions/blocks-data.js +1 -1
- package/dist/catalog/definitions/blocks-marketing.d.ts +29 -4
- package/dist/catalog/definitions/blocks-marketing.js +1 -1
- package/dist/catalog/definitions/blocks-misc.d.ts +2 -0
- package/dist/catalog/definitions/blocks-misc.js +1 -1
- package/dist/catalog/definitions/display.d.ts +2 -0
- package/dist/catalog/definitions/display.js +1 -1
- package/dist/catalog/definitions/index.d.ts +290 -10
- package/dist/catalog/definitions/index.js +11 -11
- package/dist/catalog/primitives/chat.d.ts +2 -2
- package/dist/catalog/primitives/chat.js +1 -1
- package/dist/catalog/primitives/display.d.ts +7 -7
- package/dist/catalog/primitives/display.js +3 -3
- package/dist/catalog/primitives/form.d.ts +1 -1
- package/dist/catalog/primitives/form.js +1 -1
- package/dist/catalog/primitives/index.d.ts +14 -14
- package/dist/catalog/primitives/index.js +10 -10
- package/dist/catalog/primitives/layout.d.ts +1 -1
- package/dist/catalog/primitives/layout.js +1 -1
- package/dist/catalog/primitives/navigation.d.ts +4 -4
- package/dist/catalog/primitives/navigation.js +1 -1
- package/dist/catalog/primitives/overlay.d.ts +2 -2
- package/dist/catalog/primitives/overlay.js +1 -1
- package/dist/{chunk-PQOL3E2V.js → chunk-25QQEKGR.js} +7 -7
- package/dist/{chunk-XLN4NVKU.js → chunk-2BCMZV5U.js} +17 -10
- package/dist/{chunk-VQVWFCHF.js → chunk-2OEVKFZ2.js} +10 -10
- package/dist/{chunk-V4NBPGED.js → chunk-2UY4XZC6.js} +3 -1
- package/dist/{chunk-AP5SGSN7.js → chunk-3MGQGQTS.js} +8 -0
- package/dist/{chunk-WGQHM56J.js → chunk-4BG7ILL5.js} +43 -41
- package/dist/{chunk-OWWQP3YW.js → chunk-4DQMGKPG.js} +2 -2
- package/dist/{chunk-JDHD4L6N.js → chunk-4NRASS74.js} +1 -1
- package/dist/{chunk-4ZST7OY5.js → chunk-5DLTCQN4.js} +29 -7
- package/dist/{chunk-NBDUZA66.js → chunk-5HFOPRXI.js} +18 -13
- package/dist/{chunk-DSNPOAE6.js → chunk-5S34SGPQ.js} +7 -2
- package/dist/{chunk-BVXSAVKY.js → chunk-72EJ2TYY.js} +7 -10
- package/dist/{chunk-3BGWXRQC.js → chunk-7U55EQZD.js} +8 -11
- package/dist/{chunk-MPVYXUOD.js → chunk-A2IYJPTF.js} +3 -1
- package/dist/chunk-ACIJEUAH.js +213 -0
- package/dist/{chunk-PD6WW7E5.js → chunk-BRESMZ6G.js} +2 -5
- package/dist/{chunk-Q4CRHV5T.js → chunk-BVOJIX27.js} +55 -10
- package/dist/{chunk-PYRHNONA.js → chunk-CJDVIJEF.js} +6 -5
- package/dist/{chunk-FSU7ZM5V.js → chunk-CJT7SZNI.js} +8 -15
- package/dist/{chunk-PQBVNNEG.js → chunk-DEILZQEX.js} +12 -3
- package/dist/chunk-DORWHCRI.js +112 -0
- package/dist/{chunk-EJQ73FJ5.js → chunk-DW3XHDFX.js} +70 -15
- package/dist/{chunk-ZL6BPQNN.js → chunk-EKSXBDOA.js} +23 -11
- package/dist/{chunk-UCFR7GLW.js → chunk-EX5AIP2Q.js} +4 -4
- package/dist/chunk-F4BPNMAD.js +185 -0
- package/dist/{chunk-STNVWBJH.js → chunk-FGGGUS5L.js} +1 -1
- package/dist/{chunk-IZ7A62GI.js → chunk-GBKAQWME.js} +23 -23
- package/dist/{chunk-XYMFKNKG.js → chunk-GW7A5G4W.js} +26 -5
- package/dist/{chunk-IW36SVOH.js → chunk-HBVZYYTD.js} +79 -12
- package/dist/{chunk-P5I63ETD.js → chunk-HZ6WO2OD.js} +30 -3
- package/dist/{chunk-MOFWXBTK.js → chunk-IWFPYUHD.js} +1 -1
- package/dist/{chunk-CQ75K2DH.js → chunk-JA6QAEVX.js} +15 -13
- package/dist/{chunk-YEAJLVGB.js → chunk-JYDPEIAA.js} +31 -22
- package/dist/chunk-KEQFAIPJ.js +84 -0
- package/dist/{chunk-QCFDSOTV.js → chunk-KPRBRDSY.js} +6 -11
- package/dist/{chunk-W4KI424V.js → chunk-KRNAMBZZ.js} +5 -3
- package/dist/{chunk-XMGWLDNG.js → chunk-KSJUX6EA.js} +2 -2
- package/dist/{chunk-5RBO2IMZ.js → chunk-KYLXPIFE.js} +23 -16
- package/dist/{chunk-B4373MDA.js → chunk-M4AK7ZXY.js} +8 -1
- package/dist/{chunk-KANK5FAG.js → chunk-M5MUMF7S.js} +15 -6
- package/dist/{chunk-WAIZR4CR.js → chunk-MIVKO3MG.js} +3 -2
- package/dist/{chunk-FX3GYS5O.js → chunk-N3WTIJIB.js} +19 -3
- package/dist/{chunk-H3KTAHJP.js → chunk-NPJN6OLX.js} +11 -20
- package/dist/{chunk-7AUNUDHM.js → chunk-NPNQGXA7.js} +47 -13
- package/dist/{chunk-D6MFOI3N.js → chunk-OO2K4JUF.js} +35 -7
- package/dist/{chunk-3QMHVXSQ.js → chunk-OPX27RJE.js} +12 -2
- package/dist/{chunk-KKBTPNXT.js → chunk-QJ5ODJTH.js} +5 -1
- package/dist/{chunk-ZKA5X3E4.js → chunk-QLNATCF6.js} +5 -11
- package/dist/{chunk-ZU7MDRCI.js → chunk-RI4IK37T.js} +26 -11
- package/dist/{chunk-YMAEXGD2.js → chunk-RPUONGMF.js} +7 -2
- package/dist/{chunk-XUWKGDUY.js → chunk-S4ZZ3SJU.js} +32 -22
- package/dist/{chunk-6NL36QN3.js → chunk-T3ASBCI3.js} +8 -2
- package/dist/{chunk-R4SBK6Y5.js → chunk-T3J7RZV6.js} +9 -19
- package/dist/{chunk-UPMSE6PQ.js → chunk-TCDBSHAY.js} +4 -2
- package/dist/{chunk-PJ7DVYWA.js → chunk-TOMUOPVE.js} +4 -0
- package/dist/{chunk-OS2BLQ2G.js → chunk-TYNILBCP.js} +7 -2
- package/dist/{chunk-V5RSV4ZV.js → chunk-VTIT5C7L.js} +17 -3
- package/dist/{chunk-33UWVOQ6.js → chunk-WS6PKHGX.js} +1 -1
- package/dist/chunk-X5BYH7WG.js +27 -0
- package/dist/{chunk-IYK2ABFE.js → chunk-XMXH63A7.js} +2 -2
- package/dist/{chunk-3LROWCZE.js → chunk-XVV52J35.js} +24 -5
- package/dist/{chunk-OUXJUUCB.js → chunk-XZZVSBPC.js} +34 -3
- package/dist/{chunk-UMEBNHKR.js → chunk-YGB5BFFI.js} +4 -2
- package/dist/{chunk-CTVV6JS6.js → chunk-Z3NGVHHE.js} +1 -1
- package/dist/{chunk-A4QNTJUR.js → chunk-ZCYD22F2.js} +51 -7
- package/dist/components/blocks/AgentConversationBlock.d.ts +1 -1
- package/dist/components/blocks/AgentConversationBlock.js +107 -1
- package/dist/components/blocks/ApiKeysBlock.js +3 -1
- package/dist/components/blocks/AuthLayout.js +3 -2
- package/dist/components/blocks/BlogIndexBlock.d.ts +1 -1
- package/dist/components/blocks/BlogIndexBlock.js +1 -1
- package/dist/components/blocks/CallToActionBlock.d.ts +1 -1
- package/dist/components/blocks/CallToActionBlock.js +1 -2
- package/dist/components/blocks/ChartCollectionBlock.d.ts +1 -1
- package/dist/components/blocks/ChartCollectionBlock.js +2 -1
- package/dist/components/blocks/ChatLayout.d.ts +1 -1
- package/dist/components/blocks/ChatLayout.js +1 -2
- package/dist/components/blocks/CheckEmailBlock.js +2 -1
- package/dist/components/blocks/CommandPaletteBlock.js +1 -1
- package/dist/components/blocks/ContactBlock.js +2 -2
- package/dist/components/blocks/CreateBlock.js +2 -1
- package/dist/components/blocks/CrudListBlock.js +1 -1
- package/dist/components/blocks/DashboardBlock.js +2 -2
- package/dist/components/blocks/DataGridBlock.d.ts +3 -3
- package/dist/components/blocks/DataGridBlock.js +4 -2
- package/dist/components/blocks/DirectoryBlock.d.ts +1 -1
- package/dist/components/blocks/DirectoryBlock.js +1 -1
- package/dist/components/blocks/FAQBlock.d.ts +1 -1
- package/dist/components/blocks/FAQBlock.js +1 -1
- package/dist/components/blocks/FooterBlock.d.ts +1 -1
- package/dist/components/blocks/FooterBlock.js +1 -2
- package/dist/components/blocks/FormFieldBlock.d.ts +1 -1
- package/dist/components/blocks/FormFieldBlock.js +1 -1
- package/dist/components/blocks/GalleryBlock.d.ts +1 -1
- package/dist/components/blocks/GalleryBlock.js +1 -1
- package/dist/components/blocks/HeaderBlock.d.ts +1 -1
- package/dist/components/blocks/HeaderBlock.js +1 -2
- package/dist/components/blocks/HeroBlock.js +1 -2
- package/dist/components/blocks/IntegrationsBlock.js +2 -2
- package/dist/components/blocks/LoginBlock.js +2 -1
- package/dist/components/blocks/LogoCloud.js +2 -2
- package/dist/components/blocks/NewsletterBlock.js +2 -2
- package/dist/components/blocks/OnboardingFlowBlock.js +1 -1
- package/dist/components/blocks/PasswordRecoveryBlock.d.ts +3 -1
- package/dist/components/blocks/PasswordRecoveryBlock.js +2 -2
- package/dist/components/blocks/PricingBlock.d.ts +3 -1
- package/dist/components/blocks/PricingBlock.js +1 -1
- package/dist/components/blocks/ResetPasswordBlock.js +1 -1
- package/dist/components/blocks/SettingsNavBlock.d.ts +1 -1
- package/dist/components/blocks/SettingsNavBlock.js +1 -1
- package/dist/components/blocks/StatsMarketingBlock.js +1 -2
- package/dist/components/blocks/TeamManagementBlock.d.ts +3 -0
- package/dist/components/blocks/TeamManagementBlock.js +129 -0
- package/dist/components/blocks/TeamShowcaseBlock.d.ts +3 -0
- package/dist/components/blocks/{TeamBlock.js → TeamShowcaseBlock.js} +1 -1
- package/dist/components/blocks/TestimonialsBlock.js +2 -2
- package/dist/components/blocks/TwoFactorSetupBlock.d.ts +3 -1
- package/dist/components/blocks/TwoFactorSetupBlock.js +1 -2
- package/dist/components/blocks/WizardBlock.js +1 -1
- package/dist/components/blocks/user/InviteUserModal.js +2 -1
- package/dist/components/logos/index.js +1 -1
- package/dist/components/ui/CheckoutForm.js +1 -1
- package/dist/components/ui/DataTable.d.ts +4 -2
- package/dist/components/ui/DataTable.js +1 -1
- package/dist/components/ui/NavUser.d.ts +1 -1
- package/dist/components/ui/NavUser.js +1 -1
- package/dist/components/ui/SettingsModal.d.ts +2 -1
- package/dist/components/ui/SettingsModal.js +1 -1
- package/dist/components/ui/WorkspaceSwitcherBlock.js +1 -1
- package/dist/lib/json-render/app.js +1 -1
- package/dist/lib/json-render/catalog.d.ts +122 -8
- package/dist/lib/json-render/catalog.js +13 -13
- package/dist/lib/json-render/registry.js +13 -13
- package/dist/lib/json-render/showcase-spec.js +1 -1
- package/dist/messages/en.js +1 -1
- package/dist/messages/it.js +1 -1
- package/dist/test/PublicSeedTestProvider.js +2 -2
- package/eslint-rules/nadicode/data/catalog-names.json +2 -1
- package/eslint-rules/nadicode/rules/__tests__/require-catalog-import.test.js +0 -5
- package/eslint-rules/nadicode/rules/require-catalog-import.js +0 -1
- package/package.json +1 -1
- package/dist/chunk-6OBT3A5O.js +0 -21
- package/dist/chunk-NDQO7AO6.js +0 -105
- package/dist/chunk-TTDKPZ75.js +0 -45
- package/dist/chunk-YB3J4ZRZ.js +0 -180
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) =>
|
|
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 ?? "/
|
|
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 =
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
188
|
-
|
|
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
|
|
43
|
-
const
|
|
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
|
-
|
|
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
|
-
!!
|
|
115
|
-
|
|
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: () =>
|
|
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
|
|
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 {
|
|
50
|
+
export { TeamShowcaseBlock };
|