@vadimcomanescu/nadicode-design-system 2.0.8 → 4.0.0

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 (137) hide show
  1. package/.agents/skills/seed/SKILL.md +19 -10
  2. package/.agents/skills/seed/contract.md +9 -2
  3. package/.agents/skills/seed/references/blocks.md +5 -5
  4. package/.agents/skills/seed/references/components.md +2 -2
  5. package/.agents/skills/seed/references/nextjs.md +2 -2
  6. package/README.md +3 -3
  7. package/contracts/consumer-intent-map.json +1 -2
  8. package/contracts/release-governance-baseline.json +3 -37
  9. package/dist/catalog/catalog.d.ts +2220 -0
  10. package/dist/catalog/catalog.js +1913 -0
  11. package/dist/catalog/components.d.ts +201 -0
  12. package/dist/catalog/components.js +407 -0
  13. package/dist/catalog/types.d.ts +4 -0
  14. package/dist/catalog/types.js +1 -0
  15. package/dist/chunk-224KPIOG.js +60 -0
  16. package/dist/chunk-25BOZMXA.js +169 -0
  17. package/dist/chunk-32OLQ7FC.js +130 -0
  18. package/dist/chunk-3JJBJ4VR.js +47 -0
  19. package/dist/chunk-3U56FXYC.js +30 -0
  20. package/dist/chunk-4MWKE6F5.js +86 -0
  21. package/dist/chunk-6HGSU24S.js +94 -0
  22. package/dist/chunk-7IADIXDV.js +168 -0
  23. package/dist/chunk-7NS3VFD7.js +86 -0
  24. package/dist/chunk-7XLZCXUL.js +175 -0
  25. package/dist/chunk-ALA6OM7K.js +134 -0
  26. package/dist/chunk-AN5TW4AL.js +50 -0
  27. package/dist/chunk-AWZFQQGN.js +167 -0
  28. package/dist/chunk-BRCBJ3S4.js +42 -0
  29. package/dist/chunk-BRICSLHJ.js +30 -0
  30. package/dist/chunk-BYEHHZZN.js +115 -0
  31. package/dist/chunk-C33GUEDY.js +149 -0
  32. package/dist/chunk-CUDMDYKE.js +150 -0
  33. package/dist/chunk-CVTMWSNS.js +145 -0
  34. package/dist/chunk-DEZXWNYF.js +165 -0
  35. package/dist/chunk-DNJEVMDY.js +40 -0
  36. package/dist/chunk-DNJOBML6.js +66 -0
  37. package/dist/chunk-FTGFOK6T.js +69 -0
  38. package/dist/chunk-HFBJ6L6O.js +104 -0
  39. package/dist/chunk-HPTHS7SX.js +52 -0
  40. package/dist/chunk-KNR3WB5C.js +147 -0
  41. package/dist/chunk-KQ7ZC6EM.js +66 -0
  42. package/dist/chunk-LGW7FVG5.js +83 -0
  43. package/dist/chunk-LP6ZZYOQ.js +36 -0
  44. package/dist/chunk-LV4P7WVM.js +54 -0
  45. package/dist/chunk-MGSGCARB.js +164 -0
  46. package/dist/chunk-N3YFYMNZ.js +73 -0
  47. package/dist/chunk-Q5IYBNA7.js +56 -0
  48. package/dist/chunk-QJCE7NZF.js +85 -0
  49. package/dist/chunk-QW5II6YK.js +96 -0
  50. package/dist/chunk-RMGDDOCD.js +138 -0
  51. package/dist/chunk-RNCX4JIE.js +70 -0
  52. package/dist/chunk-RWCL5OPX.js +112 -0
  53. package/dist/chunk-S5OY2B63.js +28 -0
  54. package/dist/chunk-SIQNG72C.js +257 -0
  55. package/dist/chunk-SP7NIZFP.js +117 -0
  56. package/dist/chunk-SWRJWMGG.js +30 -0
  57. package/dist/chunk-TCQIJ3DO.js +85 -0
  58. package/dist/chunk-TPJ6JJ2F.js +290 -0
  59. package/dist/chunk-TUJZMJXW.js +72 -0
  60. package/dist/chunk-UR43ANYS.js +159 -0
  61. package/dist/chunk-VRGPG2YN.js +79 -0
  62. package/dist/chunk-WSBLCWY7.js +126 -0
  63. package/dist/chunk-XKKFSFYO.js +93 -0
  64. package/dist/chunk-XO7TBM47.js +32 -0
  65. package/dist/chunk-YDYDGG5K.js +132 -0
  66. package/dist/chunk-YMJOUYMT.js +171 -0
  67. package/dist/chunk-Z2WION42.js +32 -0
  68. package/dist/chunk-ZFKSVEYW.js +35 -0
  69. package/dist/components/blocks/AgentProfileGridBlock.js +8 -86
  70. package/dist/components/blocks/AgentRunOverviewBlock.js +8 -147
  71. package/dist/components/blocks/AgentWorkbenchBlock.js +15 -257
  72. package/dist/components/blocks/AudioVisualizerBlock.js +2 -50
  73. package/dist/components/blocks/AuthLayout.js +9 -73
  74. package/dist/components/blocks/BannerBlock.js +8 -66
  75. package/dist/components/blocks/BarChartBlock.js +5 -47
  76. package/dist/components/blocks/ChartBlock.js +7 -54
  77. package/dist/components/blocks/ChartCollectionBlock.js +11 -171
  78. package/dist/components/blocks/ChatLayout.js +12 -126
  79. package/dist/components/blocks/CreateBlock.js +9 -104
  80. package/dist/components/blocks/DataGridBlock.js +9 -117
  81. package/dist/components/blocks/DirectoryBlock.js +12 -85
  82. package/dist/components/blocks/FeatureGridBlock.js +6 -56
  83. package/dist/components/blocks/GalleryBlock.js +6 -69
  84. package/dist/components/blocks/HeroSectionBlock.js +10 -134
  85. package/dist/components/blocks/IntegrationsBlock.js +13 -94
  86. package/dist/components/blocks/InteractiveAreaChartBlock.js +5 -290
  87. package/dist/components/blocks/KanbanDemoBlock.js +8 -145
  88. package/dist/components/blocks/LogoCloud.js +4 -35
  89. package/dist/components/blocks/NavUser.js +5 -85
  90. package/dist/components/blocks/NotFoundBlock.js +8 -32
  91. package/dist/components/blocks/OnboardingBlock.js +7 -66
  92. package/dist/components/blocks/SettingsLayout.js +13 -86
  93. package/dist/components/blocks/SignUpBlock.js +8 -168
  94. package/dist/components/blocks/SolutionShowcaseBlock.js +11 -112
  95. package/dist/components/blocks/StatsBlock.js +6 -60
  96. package/dist/components/blocks/UsageDonutBlock.js +5 -79
  97. package/dist/components/blocks/WizardBlock.js +12 -93
  98. package/dist/components/blocks/user/InviteUserModal.js +10 -132
  99. package/dist/components/page-kits/AccountLockedPageKit.js +3 -40
  100. package/dist/components/page-kits/AgentsChatPageKit.js +11 -159
  101. package/dist/components/page-kits/AnalyticsPageKit.js +12 -150
  102. package/dist/components/page-kits/BlogContentPageKit.js +12 -167
  103. package/dist/components/page-kits/CheckoutPageKit.js +9 -83
  104. package/dist/components/page-kits/CompanySuitePageKit.js +9 -96
  105. package/dist/components/page-kits/DashboardPageKit.js +11 -149
  106. package/dist/components/page-kits/ErrorPageKit.js +5 -52
  107. package/dist/components/page-kits/KanbanBoardPageKit.js +7 -169
  108. package/dist/components/page-kits/LandingPageKit.js +11 -72
  109. package/dist/components/page-kits/LoginPageKit.js +3 -32
  110. package/dist/components/page-kits/OnboardingPageKit.js +6 -115
  111. package/dist/components/page-kits/PricingPageKit.js +12 -138
  112. package/dist/components/page-kits/ProfileSettingsPageKit.js +10 -164
  113. package/dist/components/page-kits/RecoveryPageKit.js +3 -42
  114. package/dist/components/page-kits/ResetPageKit.js +3 -36
  115. package/dist/components/page-kits/ServiceSuitePageKit.js +10 -175
  116. package/dist/components/page-kits/SignupPageKit.js +3 -30
  117. package/dist/components/page-kits/SuccessPageKit.js +4 -30
  118. package/dist/components/page-kits/TeamSettingsPageKit.js +9 -165
  119. package/dist/components/page-kits/TwoFactorPageKit.js +4 -28
  120. package/dist/components/page-kits/VerifyEmailPageKit.js +4 -30
  121. package/dist/components/page-kits/VoiceAgentsPageKit.js +13 -130
  122. package/dist/components/ui/CheckoutForm.js +5 -70
  123. package/eslint-rules/nadicode/config.js +1 -1
  124. package/eslint-rules/nadicode/data/catalog-names.json +93 -0
  125. package/eslint-rules/nadicode/index.js +2 -2
  126. package/eslint-rules/nadicode/rules/__tests__/require-catalog-component.test.js +77 -0
  127. package/eslint-rules/nadicode/rules/require-catalog-component.js +79 -0
  128. package/package.json +18 -25
  129. package/contracts/block-props-schemas.json +0 -2186
  130. package/contracts/component-props-schemas.json +0 -8322
  131. package/contracts/consumer-contract.json +0 -178
  132. package/contracts/page-kit-props-schemas.json +0 -1894
  133. package/contracts/public-surface-registry.json +0 -6162
  134. package/contracts/public-surface-registry.schema.json +0 -227
  135. package/contracts/spec-manifest.json +0 -46
  136. package/dist/catalog.json +0 -5221
  137. package/eslint-rules/nadicode/rules/no-forbidden-page-kit-import.js +0 -99
@@ -0,0 +1,257 @@
1
+ import { ToolCallCard } from './chunk-4WPZ6T7V.js';
2
+ import { Typography } from './chunk-N53OMWW2.js';
3
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from './chunk-EYWOKTOY.js';
4
+ import { Textarea } from './chunk-4OBE2FS2.js';
5
+ import { ThinkingIndicator } from './chunk-OSNTB6RY.js';
6
+ import { ScrollArea } from './chunk-GLU236NN.js';
7
+ import { Heading } from './chunk-WI547C47.js';
8
+ import { CodeDiffViewer } from './chunk-DFPXK2JO.js';
9
+ import { ArtifactCard } from './chunk-D4NC7WX5.js';
10
+ import { Button } from './chunk-7KIDDF3I.js';
11
+ import { AgentMessageBubble } from './chunk-I66XWYSS.js';
12
+ import { SendIcon } from './chunk-CRZ2JE24.js';
13
+ import { AgentTerminal } from './chunk-EK43W2Y6.js';
14
+ import { cn } from './chunk-QYZT24TS.js';
15
+ import * as React from 'react';
16
+ import { jsxs, jsx } from 'react/jsx-runtime';
17
+
18
+ var defaultMessages = [
19
+ {
20
+ id: "1",
21
+ role: "user",
22
+ content: "Review the failing workflow graph and tell me what changed after the last tool run.",
23
+ timestamp: "10:30 AM"
24
+ },
25
+ {
26
+ id: "2",
27
+ role: "assistant",
28
+ content: "I am tracing the run log now. The current issue is a routing regression in the graph layer.",
29
+ timestamp: "10:31 AM",
30
+ isThinking: true,
31
+ reasoning: "Inspecting tool output, render timing, and the latest diff to isolate whether the failure is visual, structural, or data-driven.",
32
+ toolCalls: [
33
+ {
34
+ toolName: "read_file",
35
+ args: { path: "src/components/ui/WorkflowGraph.tsx" },
36
+ status: "complete",
37
+ duration: 340
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ id: "3",
43
+ role: "assistant",
44
+ content: "The flow is fixed. Tool nodes are now distinct, and edges route around the boxes rather than clipping them.",
45
+ timestamp: "10:32 AM",
46
+ isStreaming: true
47
+ }
48
+ ];
49
+ var defaultArtifacts = [
50
+ {
51
+ id: "artifact-sql",
52
+ type: "code",
53
+ title: "optimized-query.sql",
54
+ language: "sql",
55
+ content: `SELECT u.id, u.name, COUNT(o.id) as order_count
56
+ FROM users u
57
+ LEFT JOIN orders o ON o.user_id = u.id
58
+ GROUP BY u.id, u.name
59
+ ORDER BY order_count DESC
60
+ LIMIT 10;`,
61
+ defaultExpanded: true
62
+ },
63
+ {
64
+ id: "artifact-md",
65
+ type: "markdown",
66
+ title: "Operator summary",
67
+ content: `Workflow graph stabilized.
68
+
69
+ Next steps:
70
+ - Verify dark mode
71
+ - Validate mobile layout
72
+ - Confirm human checkpoint labels`,
73
+ defaultExpanded: true
74
+ }
75
+ ];
76
+ var defaultDiffs = [
77
+ {
78
+ id: "diff-workflow",
79
+ filePath: "src/components/ui/WorkflowGraph.tsx",
80
+ language: "typescript",
81
+ hunks: [
82
+ {
83
+ changes: [
84
+ {
85
+ type: "context",
86
+ content: "function WorkflowGraph({ className, nodes, edges, ref, ...props }) {",
87
+ lineNumber: 184
88
+ },
89
+ {
90
+ type: "remove",
91
+ content: "const cx1 = x1 + (x2 - x1) * 0.4",
92
+ lineNumber: 291
93
+ },
94
+ {
95
+ type: "remove",
96
+ content: "const cx2 = x2 - (x2 - x1) * 0.4",
97
+ lineNumber: 292
98
+ },
99
+ {
100
+ type: "add",
101
+ content: "const turnX = x1 + Math.max((x2 - x1) / 2, EDGE_TURN_X)",
102
+ lineNumber: 291
103
+ },
104
+ {
105
+ type: "add",
106
+ content: "d={`M ${x1} ${y1} L ${turnX} ${y1} L ${turnX} ${y2} L ${x2} ${y2}`}",
107
+ lineNumber: 297
108
+ }
109
+ ]
110
+ }
111
+ ]
112
+ }
113
+ ];
114
+ var defaultLogs = [
115
+ { text: "npm run test -- AgentWorkbenchBlock", type: "stdin" },
116
+ { text: "vitest run src/components/blocks/AgentWorkbenchBlock.test.tsx", type: "stdout" },
117
+ { text: "\u2713 renders messages and work panel tabs", type: "stdout" },
118
+ { text: "\u2713 sends composer input through the provided handler", type: "stdout" },
119
+ { text: "Done in 1.4s", type: "stdout" }
120
+ ];
121
+ var defaultComposer = {
122
+ placeholder: "Type a message for the active agent run...",
123
+ disabled: false
124
+ };
125
+ function AgentWorkbenchBlock({
126
+ className,
127
+ title = "Agent workbench",
128
+ description = "A reusable run surface for conversation, tool traces, artifacts, diffs, and terminal output.",
129
+ threadTitle = "Conversation",
130
+ workTitle = "Work panel",
131
+ defaultWorkTab = "artifacts",
132
+ messages = defaultMessages,
133
+ artifacts = defaultArtifacts,
134
+ diffs = defaultDiffs,
135
+ logs = defaultLogs,
136
+ composer,
137
+ ref,
138
+ ...props
139
+ }) {
140
+ const [draft, setDraft] = React.useState(() => composer?.value ?? "");
141
+ const composerValue = composer?.value ?? draft;
142
+ const composerPlaceholder = composer?.placeholder ?? defaultComposer.placeholder;
143
+ const composerDisabled = composer?.disabled ?? defaultComposer.disabled;
144
+ function handleComposerChange(value) {
145
+ if (composer?.value == null) {
146
+ setDraft(value);
147
+ }
148
+ composer?.onChange?.(value);
149
+ }
150
+ function handleSend() {
151
+ const value = composerValue.trim();
152
+ if (!value || composerDisabled) return;
153
+ composer?.onSend?.(value);
154
+ if (composer?.value == null) {
155
+ setDraft("");
156
+ }
157
+ }
158
+ return /* @__PURE__ */ jsxs(
159
+ "section",
160
+ {
161
+ ref,
162
+ className: cn("space-y-4", className),
163
+ ...props,
164
+ children: [
165
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
166
+ /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", children: title }),
167
+ /* @__PURE__ */ jsx(Typography, { variant: "muted", children: description })
168
+ ] }),
169
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 xl:grid-cols-[minmax(0,1.3fr)_360px]", children: [
170
+ /* @__PURE__ */ jsxs("div", { className: "surface-solid flex min-h-[560px] flex-col overflow-hidden rounded-lg", children: [
171
+ /* @__PURE__ */ jsx("div", { className: "border-b border-border px-4 py-4", children: /* @__PURE__ */ jsx(Heading, { level: 4, size: "title", children: threadTitle }) }),
172
+ /* @__PURE__ */ jsx(ScrollArea, { className: "flex-1", children: /* @__PURE__ */ jsx("div", { className: "space-y-4 p-4", "aria-live": "polite", children: messages.map((message) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
173
+ message.isThinking && /* @__PURE__ */ jsx(ThinkingIndicator, { reasoning: message.reasoning }),
174
+ /* @__PURE__ */ jsx(
175
+ AgentMessageBubble,
176
+ {
177
+ role: message.role,
178
+ content: message.content,
179
+ timestamp: message.timestamp,
180
+ isStreaming: message.isStreaming,
181
+ toolCalls: message.toolCalls && message.toolCalls.length > 0 ? /* @__PURE__ */ jsx("div", { className: "space-y-2", children: message.toolCalls.map((toolCall) => /* @__PURE__ */ jsx(
182
+ ToolCallCard,
183
+ {
184
+ toolName: toolCall.toolName,
185
+ args: toolCall.args,
186
+ status: toolCall.status,
187
+ result: toolCall.result,
188
+ duration: toolCall.duration
189
+ },
190
+ `${message.id}-${toolCall.toolName}`
191
+ )) }) : void 0
192
+ }
193
+ )
194
+ ] }, message.id)) }) }),
195
+ /* @__PURE__ */ jsx("div", { className: "border-t border-border p-4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-end gap-4", children: [
196
+ /* @__PURE__ */ jsx(
197
+ Textarea,
198
+ {
199
+ "aria-label": "Message input",
200
+ className: "min-h-[88px] flex-1 resize-none",
201
+ placeholder: composerPlaceholder,
202
+ value: composerValue,
203
+ onChange: (event) => handleComposerChange(event.target.value),
204
+ disabled: composerDisabled
205
+ }
206
+ ),
207
+ /* @__PURE__ */ jsx(
208
+ Button,
209
+ {
210
+ type: "button",
211
+ size: "icon",
212
+ onClick: handleSend,
213
+ disabled: composerDisabled || !composerValue.trim(),
214
+ "aria-label": "Send message",
215
+ children: /* @__PURE__ */ jsx(SendIcon, { size: 16 })
216
+ }
217
+ )
218
+ ] }) })
219
+ ] }),
220
+ /* @__PURE__ */ jsxs("div", { className: "surface-solid overflow-hidden rounded-lg p-4", children: [
221
+ /* @__PURE__ */ jsx(Heading, { level: 4, size: "title", className: "mb-4", children: workTitle }),
222
+ /* @__PURE__ */ jsxs(Tabs, { defaultValue: defaultWorkTab, className: "flex h-full flex-col", children: [
223
+ /* @__PURE__ */ jsxs(TabsList, { className: "w-full justify-start", children: [
224
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "artifacts", children: "Artifacts" }),
225
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "diffs", children: "Diffs" }),
226
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "logs", children: "Logs" })
227
+ ] }),
228
+ /* @__PURE__ */ jsx(TabsContent, { value: "artifacts", className: "mt-4", children: /* @__PURE__ */ jsx(ScrollArea, { className: "h-[428px]", children: /* @__PURE__ */ jsx("div", { className: "space-y-4 pr-4", children: artifacts.map((artifact) => /* @__PURE__ */ jsx(
229
+ ArtifactCard,
230
+ {
231
+ type: artifact.type,
232
+ title: artifact.title,
233
+ content: artifact.content,
234
+ language: artifact.language,
235
+ defaultExpanded: artifact.defaultExpanded
236
+ },
237
+ artifact.id
238
+ )) }) }) }),
239
+ /* @__PURE__ */ jsx(TabsContent, { value: "diffs", className: "mt-4", children: /* @__PURE__ */ jsx(ScrollArea, { className: "h-[428px]", children: /* @__PURE__ */ jsx("div", { className: "space-y-4 pr-4", children: diffs.map((diff) => /* @__PURE__ */ jsx(
240
+ CodeDiffViewer,
241
+ {
242
+ filePath: diff.filePath,
243
+ language: diff.language,
244
+ hunks: diff.hunks
245
+ },
246
+ diff.id
247
+ )) }) }) }),
248
+ /* @__PURE__ */ jsx(TabsContent, { value: "logs", className: "mt-4", children: /* @__PURE__ */ jsx(AgentTerminal, { title: "run-output", lines: logs }) })
249
+ ] })
250
+ ] })
251
+ ] })
252
+ ]
253
+ }
254
+ );
255
+ }
256
+
257
+ export { AgentWorkbenchBlock };
@@ -0,0 +1,117 @@
1
+ import { DataTable } from './chunk-PDSQC6VE.js';
2
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuItem, DropdownMenuSeparator } from './chunk-CQEUNASC.js';
3
+ import { siteConfig } from './chunk-A7NUWD76.js';
4
+ import { ScrollFadeIn } from './chunk-I23DDSU7.js';
5
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent } from './chunk-AH6YSYYT.js';
6
+ import { Button } from './chunk-7KIDDF3I.js';
7
+ import { EllipsisIcon } from './chunk-5ESF6N36.js';
8
+ import { Badge } from './chunk-S4JAHKOP.js';
9
+ import { useMemo } from 'react';
10
+ import { useTranslations } from 'next-intl';
11
+ import { jsx, jsxs } from 'react/jsx-runtime';
12
+
13
+ var USD_FORMAT = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD" });
14
+ function createColumns(t) {
15
+ return [
16
+ {
17
+ accessorKey: "status",
18
+ header: t("statusHeader"),
19
+ cell: ({ row }) => {
20
+ const status = row.getValue("status");
21
+ const variant = status === "success" ? "outline" : status === "processing" ? "accent" : status === "failed" ? "destructive" : "secondary";
22
+ return /* @__PURE__ */ jsx(Badge, { variant, children: status });
23
+ }
24
+ },
25
+ {
26
+ accessorKey: "email",
27
+ header: t("emailHeader"),
28
+ cell: ({ row }) => /* @__PURE__ */ jsx("div", { className: "lowercase text-text-secondary", children: row.getValue("email") })
29
+ },
30
+ {
31
+ accessorKey: "amount",
32
+ header: () => /* @__PURE__ */ jsx("div", { className: "text-right", children: t("amountHeader") }),
33
+ cell: ({ row }) => {
34
+ const amount = parseFloat(row.getValue("amount"));
35
+ const formatted = USD_FORMAT.format(amount);
36
+ return /* @__PURE__ */ jsx("div", { className: "text-right font-medium font-mono text-text-primary", children: formatted });
37
+ }
38
+ },
39
+ {
40
+ id: "actions",
41
+ header: () => /* @__PURE__ */ jsx("span", { className: "sr-only", children: t("actionsHeader") }),
42
+ cell: ({ row }) => {
43
+ const payment = row.original;
44
+ return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
45
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "icon", className: "p-0", children: [
46
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: t("openMenu") }),
47
+ /* @__PURE__ */ jsx(EllipsisIcon, { size: 16 })
48
+ ] }) }),
49
+ /* @__PURE__ */ jsxs(DropdownMenuContent, { align: "end", children: [
50
+ /* @__PURE__ */ jsx(DropdownMenuLabel, { children: t("actionsHeader") }),
51
+ /* @__PURE__ */ jsx(
52
+ DropdownMenuItem,
53
+ {
54
+ onClick: () => navigator.clipboard.writeText(payment.id),
55
+ children: t("copyPaymentId")
56
+ }
57
+ ),
58
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
59
+ /* @__PURE__ */ jsx(DropdownMenuItem, { children: t("viewCustomer") }),
60
+ /* @__PURE__ */ jsx(DropdownMenuItem, { children: t("viewPaymentDetails") })
61
+ ] })
62
+ ] });
63
+ }
64
+ }
65
+ ];
66
+ }
67
+ var defaultData = [
68
+ {
69
+ id: "728ed52f",
70
+ amount: 100,
71
+ status: "pending",
72
+ email: "m@example.com"
73
+ },
74
+ {
75
+ id: "489e1d42",
76
+ amount: 125,
77
+ status: "processing",
78
+ email: "example@gmail.com"
79
+ },
80
+ {
81
+ id: "123e1d42",
82
+ amount: 550,
83
+ status: "success",
84
+ email: `corporate@${siteConfig.name.toLowerCase()}.inc`
85
+ },
86
+ {
87
+ id: "999e1d42",
88
+ amount: 25,
89
+ status: "failed",
90
+ email: "user@domain.com"
91
+ },
92
+ {
93
+ id: "444e1d42",
94
+ amount: 300,
95
+ status: "success",
96
+ email: "sales@company.com"
97
+ }
98
+ ];
99
+ function DataGridBlock({
100
+ data = defaultData,
101
+ columns: columnDefs,
102
+ title = "Recent Transactions",
103
+ description = "A sophisticated data grid with filtering and actions.",
104
+ className
105
+ }) {
106
+ const t = useTranslations("blocks.dataGridBlock");
107
+ const defaultColumns = useMemo(() => createColumns(t), [t]);
108
+ return /* @__PURE__ */ jsx(ScrollFadeIn, { children: /* @__PURE__ */ jsxs(Card, { className: className ?? "w-full", children: [
109
+ /* @__PURE__ */ jsxs(CardHeader, { children: [
110
+ /* @__PURE__ */ jsx(CardTitle, { children: title }),
111
+ /* @__PURE__ */ jsx(CardDescription, { children: description })
112
+ ] }),
113
+ /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(DataTable, { columns: columnDefs ?? defaultColumns, data, searchKey: "email" }) })
114
+ ] }) });
115
+ }
116
+
117
+ export { DataGridBlock };
@@ -0,0 +1,30 @@
1
+ import { AuthSuccessBlock } from './chunk-LCKLZ4XK.js';
2
+ import { MailIcon } from './chunk-XQ2UDMPO.js';
3
+ import { cn } from './chunk-QYZT24TS.js';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ function VerifyEmailPageKit({
7
+ icon = /* @__PURE__ */ jsx(MailIcon, { size: 32, className: "text-success" }),
8
+ title = "Email verified!",
9
+ description = "Your email has been verified. Continue to sign in.",
10
+ buttonText = "Continue to sign in",
11
+ onContinue,
12
+ autoRedirectSeconds,
13
+ className,
14
+ cardClassName
15
+ }) {
16
+ return /* @__PURE__ */ jsx("section", { className: cn("min-h-dvh w-full bg-background px-4 py-12 md:px-8 md:py-20", className), children: /* @__PURE__ */ jsx("div", { className: "mx-auto flex w-full max-w-5xl items-center justify-center", children: /* @__PURE__ */ jsx(
17
+ AuthSuccessBlock,
18
+ {
19
+ className: cn("w-full", cardClassName),
20
+ icon,
21
+ title,
22
+ description,
23
+ buttonText,
24
+ onContinue,
25
+ autoRedirectSeconds
26
+ }
27
+ ) }) });
28
+ }
29
+
30
+ export { VerifyEmailPageKit };
@@ -0,0 +1,85 @@
1
+ import { SidebarProvider, Sidebar, SidebarContent, SidebarGroup, SidebarGroupLabel, SidebarGroupContent, SidebarMenu, SidebarMenuItem, SidebarMenuButton, SidebarMenuAction } from './chunk-J2DCQDXO.js';
2
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator } from './chunk-CQEUNASC.js';
3
+ import { Empty, EmptyDescription } from './chunk-55HD4L6G.js';
4
+ import { UsersIcon } from './chunk-WUO7OONN.js';
5
+ import { Trash2Icon } from './chunk-S4GKGKON.js';
6
+ import { StarIcon } from './chunk-ELKIUARM.js';
7
+ import { SettingsIcon } from './chunk-OITJWGFV.js';
8
+ import { LayoutDashboardIcon } from './chunk-O74AEVHW.js';
9
+ import { HomeIcon } from './chunk-IQEBXXB5.js';
10
+ import { FolderIcon } from './chunk-I3TH7PIB.js';
11
+ import { EllipsisIcon } from './chunk-5ESF6N36.js';
12
+ import { useTranslations } from 'next-intl';
13
+ import Link from 'next/link';
14
+ import { jsxs, jsx } from 'react/jsx-runtime';
15
+
16
+ var defaultNavItems = [
17
+ { name: "Home", icon: /* @__PURE__ */ jsx(HomeIcon, { size: 16 }), isActive: true },
18
+ { name: "Dashboard", icon: /* @__PURE__ */ jsx(LayoutDashboardIcon, { size: 16 }) },
19
+ { name: "Team", icon: /* @__PURE__ */ jsx(UsersIcon, { size: 16 }) },
20
+ { name: "Settings", icon: /* @__PURE__ */ jsx(SettingsIcon, { size: 16 }) }
21
+ ];
22
+ var defaultProjects = [
23
+ { name: "Design Engineering", url: "#" },
24
+ { name: "Sales & Marketing", url: "#" },
25
+ { name: "Travel", url: "#" }
26
+ ];
27
+ function DirectoryBlock({
28
+ navItems = defaultNavItems,
29
+ projects = defaultProjects,
30
+ className
31
+ }) {
32
+ const t = useTranslations("blocks.directoryBlock");
33
+ return /* @__PURE__ */ jsxs("div", { className: className ?? "h-[500px] border border-border rounded-lg overflow-hidden flex bg-surface text-text-primary", children: [
34
+ /* @__PURE__ */ jsx(SidebarProvider, { className: "h-full", children: /* @__PURE__ */ jsx(Sidebar, { collapsible: "none", className: "h-full border-r border-border", children: /* @__PURE__ */ jsxs(SidebarContent, { children: [
35
+ /* @__PURE__ */ jsxs(SidebarGroup, { children: [
36
+ /* @__PURE__ */ jsx(SidebarGroupLabel, { children: t("platform") }),
37
+ /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: navItems.map((item) => /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsxs(SidebarMenuButton, { isActive: item.isActive, children: [
38
+ item.icon,
39
+ /* @__PURE__ */ jsx("span", { children: item.name })
40
+ ] }) }, item.name)) }) })
41
+ ] }),
42
+ /* @__PURE__ */ jsxs(SidebarGroup, { children: [
43
+ /* @__PURE__ */ jsx(SidebarGroupLabel, { children: t("projects") }),
44
+ /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: projects.map((item) => /* @__PURE__ */ jsxs(SidebarMenuItem, { children: [
45
+ /* @__PURE__ */ jsx(SidebarMenuButton, { asChild: true, children: /* @__PURE__ */ jsxs(Link, { href: item.url, children: [
46
+ /* @__PURE__ */ jsx(FolderIcon, { size: 16 }),
47
+ /* @__PURE__ */ jsx("span", { children: item.name })
48
+ ] }) }),
49
+ /* @__PURE__ */ jsxs(DropdownMenu, { children: [
50
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(SidebarMenuAction, { showOnHover: true, children: [
51
+ /* @__PURE__ */ jsx(EllipsisIcon, { size: 16 }),
52
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: t("more") })
53
+ ] }) }),
54
+ /* @__PURE__ */ jsxs(
55
+ DropdownMenuContent,
56
+ {
57
+ className: "w-48 rounded-lg",
58
+ side: "bottom",
59
+ align: "end",
60
+ children: [
61
+ /* @__PURE__ */ jsxs(DropdownMenuItem, { children: [
62
+ /* @__PURE__ */ jsx(FolderIcon, { size: 16, className: "text-text-tertiary" }),
63
+ /* @__PURE__ */ jsx("span", { children: t("viewProject") })
64
+ ] }),
65
+ /* @__PURE__ */ jsxs(DropdownMenuItem, { children: [
66
+ /* @__PURE__ */ jsx(StarIcon, { size: 16, className: "text-text-tertiary" }),
67
+ /* @__PURE__ */ jsx("span", { children: t("addToFavorites") })
68
+ ] }),
69
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
70
+ /* @__PURE__ */ jsxs(DropdownMenuItem, { children: [
71
+ /* @__PURE__ */ jsx(Trash2Icon, { size: 16, className: "text-text-tertiary" }),
72
+ /* @__PURE__ */ jsx("span", { children: t("deleteProject") })
73
+ ] })
74
+ ]
75
+ }
76
+ )
77
+ ] })
78
+ ] }, item.name)) }) })
79
+ ] })
80
+ ] }) }) }),
81
+ /* @__PURE__ */ jsx("div", { className: "flex-1 p-8 bg-background", children: /* @__PURE__ */ jsx(Empty, { className: "h-full", children: /* @__PURE__ */ jsx(EmptyDescription, { children: t("selectProject") }) }) })
82
+ ] });
83
+ }
84
+
85
+ export { DirectoryBlock };