@vadimcomanescu/nadicode-design-system 5.0.2 → 6.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 (62) hide show
  1. package/.agents/skills/seed/references/composition.md +1 -1
  2. package/contracts/release-governance-baseline.json +2 -2
  3. package/dist/{TeamPage-UO3V2JDK.js → TeamPage-OXOXATQO.js} +17 -16
  4. package/dist/catalog/catalog.d.ts +67 -1
  5. package/dist/catalog/catalog.js +8 -8
  6. package/dist/catalog/components.d.ts +4 -2
  7. package/dist/catalog/components.js +17 -16
  8. package/dist/catalog/definitions/blocks-content.d.ts +10 -0
  9. package/dist/catalog/definitions/blocks-content.js +1 -1
  10. package/dist/catalog/definitions/blocks-crud.d.ts +53 -1
  11. package/dist/catalog/definitions/blocks-crud.js +1 -1
  12. package/dist/catalog/definitions/blocks-data.d.ts +4 -0
  13. package/dist/catalog/definitions/blocks-data.js +1 -1
  14. package/dist/catalog/definitions/index.d.ts +67 -1
  15. package/dist/catalog/definitions/index.js +7 -7
  16. package/dist/catalog/primitives/index.js +3 -3
  17. package/dist/{chunk-4ZST7OY5.js → chunk-5DLTCQN4.js} +29 -7
  18. package/dist/{chunk-CTVV6JS6.js → chunk-6PEJEOX4.js} +1 -1
  19. package/dist/chunk-ACIJEUAH.js +213 -0
  20. package/dist/{chunk-PQBVNNEG.js → chunk-DEILZQEX.js} +12 -3
  21. package/dist/{chunk-VQVWFCHF.js → chunk-HXKCPTY3.js} +6 -6
  22. package/dist/{chunk-A4QNTJUR.js → chunk-J3CSDFH7.js} +6 -2
  23. package/dist/{chunk-XUWKGDUY.js → chunk-JZERLGVV.js} +1 -1
  24. package/dist/{chunk-NBDUZA66.js → chunk-KOJ3X2F3.js} +3 -1
  25. package/dist/{chunk-XMGWLDNG.js → chunk-KSJUX6EA.js} +2 -2
  26. package/dist/{chunk-JDHD4L6N.js → chunk-KUL5OOXZ.js} +1 -1
  27. package/dist/{chunk-AP5SGSN7.js → chunk-P3CGISJM.js} +4 -0
  28. package/dist/{chunk-IW36SVOH.js → chunk-PPVSKK77.js} +41 -3
  29. package/dist/{chunk-D6MFOI3N.js → chunk-QMDQVJ4P.js} +12 -5
  30. package/dist/{chunk-UPMSE6PQ.js → chunk-TCDBSHAY.js} +4 -2
  31. package/dist/{chunk-PJ7DVYWA.js → chunk-TOMUOPVE.js} +4 -0
  32. package/dist/{chunk-5RBO2IMZ.js → chunk-WJ7TDY4S.js} +5 -1
  33. package/dist/{chunk-WGQHM56J.js → chunk-X5MMPEIL.js} +15 -13
  34. package/dist/{chunk-3LROWCZE.js → chunk-XNTU2I2Y.js} +11 -3
  35. package/dist/components/blocks/ApiKeysBlock.js +1 -1
  36. package/dist/components/blocks/BlogIndexBlock.d.ts +1 -1
  37. package/dist/components/blocks/BlogIndexBlock.js +1 -1
  38. package/dist/components/blocks/CommandPaletteBlock.js +1 -1
  39. package/dist/components/blocks/CrudListBlock.js +1 -1
  40. package/dist/components/blocks/DashboardBlock.js +1 -1
  41. package/dist/components/blocks/DataGridBlock.d.ts +1 -1
  42. package/dist/components/blocks/DataGridBlock.js +1 -1
  43. package/dist/components/blocks/IntegrationsBlock.js +2 -2
  44. package/dist/components/blocks/PricingBlock.d.ts +3 -1
  45. package/dist/components/blocks/PricingBlock.js +1 -1
  46. package/dist/components/blocks/SettingsNavBlock.d.ts +1 -1
  47. package/dist/components/blocks/SettingsNavBlock.js +1 -1
  48. package/dist/components/blocks/TeamManagementBlock.d.ts +3 -0
  49. package/dist/components/blocks/TeamManagementBlock.js +129 -0
  50. package/dist/components/blocks/TeamShowcaseBlock.d.ts +3 -0
  51. package/dist/components/blocks/{TeamBlock.js → TeamShowcaseBlock.js} +1 -1
  52. package/dist/components/logos/index.js +1 -1
  53. package/dist/lib/json-render/app.js +1 -1
  54. package/dist/lib/json-render/catalog.d.ts +8 -0
  55. package/dist/lib/json-render/catalog.js +9 -9
  56. package/dist/lib/json-render/registry.js +9 -9
  57. package/dist/lib/json-render/showcase-spec.js +1 -1
  58. package/eslint-rules/nadicode/data/catalog-names.json +2 -1
  59. package/package.json +1 -1
  60. package/dist/components/blocks/TeamBlock.d.ts +0 -3
  61. package/dist/{chunk-PQOL3E2V.js → chunk-3KEBY2I3.js} +2 -2
  62. package/dist/{chunk-IYK2ABFE.js → chunk-FUROL3RA.js} +1 -1
@@ -48,6 +48,7 @@ function CrudListBlock({
48
48
  const errorMessage = props.errorMessage ?? null;
49
49
  const emptyTitle = props.emptyTitle ?? "No rows to display";
50
50
  const emptyDescription = props.emptyDescription ?? "Create a new entry or adjust filters.";
51
+ const [, setBoundCurrentPage] = useBoundProp(props.currentPage, bindings?.currentPage);
51
52
  const className = props.className;
52
53
  const resolvedState = deriveState(props.state, rows, selectedRowId);
53
54
  const pages = useMemo(() => {
@@ -141,6 +142,7 @@ function CrudListBlock({
141
142
  onClick: (event) => {
142
143
  event.preventDefault();
143
144
  if (pagination.page > 1) {
145
+ setBoundCurrentPage(pagination.page - 1);
144
146
  emit("pageChange");
145
147
  }
146
148
  },
@@ -155,6 +157,7 @@ function CrudListBlock({
155
157
  isActive: page === pagination.page,
156
158
  onClick: (event) => {
157
159
  event.preventDefault();
160
+ setBoundCurrentPage(page);
158
161
  emit("pageChange");
159
162
  },
160
163
  children: page
@@ -167,6 +170,7 @@ function CrudListBlock({
167
170
  onClick: (event) => {
168
171
  event.preventDefault();
169
172
  if (pagination.page < pagination.totalPages) {
173
+ setBoundCurrentPage(pagination.page + 1);
170
174
  emit("pageChange");
171
175
  }
172
176
  },
@@ -16,7 +16,8 @@ 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()
20
21
  }),
21
22
  events: ["create", "revoke"],
22
23
  description: "API key management block with table display, create dialog, copy-once flow, and revoke functionality.",
@@ -27,7 +28,8 @@ var blocksCrudDefinitions = {
27
28
  ],
28
29
  title: "API Keys",
29
30
  description: "Manage your API keys for programmatic access.",
30
- newKeyName: null
31
+ newKeyName: null,
32
+ revokedKeyId: null
31
33
  }
32
34
  },
33
35
  CreateBlock: {
@@ -67,6 +69,7 @@ var blocksCrudDefinitions = {
67
69
  ).nullable(),
68
70
  filterValue: z.string().nullable(),
69
71
  pagination: z.object({ page: z.number(), totalPages: z.number() }),
72
+ currentPage: z.number().nullable(),
70
73
  errorMessage: z.string().nullable(),
71
74
  emptyTitle: z.string().nullable(),
72
75
  emptyDescription: z.string().nullable(),
@@ -92,6 +95,7 @@ var blocksCrudDefinitions = {
92
95
  filterControls: null,
93
96
  filterValue: null,
94
97
  pagination: { page: 1, totalPages: 4 },
98
+ currentPage: null,
95
99
  errorMessage: null,
96
100
  emptyTitle: null,
97
101
  emptyDescription: null,
@@ -345,7 +349,41 @@ var blocksCrudDefinitions = {
345
349
  className: null
346
350
  }
347
351
  },
348
- TeamBlock: {
352
+ TeamManagementBlock: {
353
+ props: z.object({
354
+ members: z.array(z.object({
355
+ id: z.string(),
356
+ name: z.string(),
357
+ email: z.string(),
358
+ role: z.enum(["owner", "admin", "member", "guest"]),
359
+ avatar: z.string().nullable(),
360
+ joinedAt: z.string().nullable(),
361
+ status: z.enum(["active", "pending", "deactivated"]).nullable()
362
+ })).nullable(),
363
+ searchQuery: z.string().nullable(),
364
+ selectedMemberId: z.string().nullable(),
365
+ selectedRole: z.string().nullable(),
366
+ state: z.enum(["loading", "empty", "has-data", "error"]).nullable(),
367
+ title: z.string().nullable(),
368
+ description: z.string().nullable(),
369
+ errorMessage: z.string().nullable(),
370
+ className: z.string().nullable()
371
+ }),
372
+ events: ["invite", "roleChange", "removeMember", "searchChange"],
373
+ description: "Team member management with search, role assignment, invite, and member removal.",
374
+ example: {
375
+ members: null,
376
+ searchQuery: null,
377
+ selectedMemberId: null,
378
+ selectedRole: null,
379
+ state: null,
380
+ title: null,
381
+ description: null,
382
+ errorMessage: null,
383
+ className: null
384
+ }
385
+ },
386
+ TeamShowcaseBlock: {
349
387
  props: z.object({
350
388
  title: z.string().nullable(),
351
389
  sections: z.array(
@@ -7,6 +7,7 @@ import { EllipsisIcon } from './chunk-5ESF6N36.js';
7
7
  import { Badge } from './chunk-S4JAHKOP.js';
8
8
  import { useCallback, useMemo } from 'react';
9
9
  import { useTranslations } from 'next-intl';
10
+ import { useBoundProp } from '@json-render/react';
10
11
  import { jsx, jsxs } from 'react/jsx-runtime';
11
12
 
12
13
  var USD_FORMAT = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD" });
@@ -52,14 +53,14 @@ function createColumns(t, onRowAction) {
52
53
  {
53
54
  onClick: () => {
54
55
  navigator.clipboard.writeText(payment.id);
55
- onRowAction?.();
56
+ onRowAction?.(payment.id, "copyId");
56
57
  },
57
58
  children: t("copyPaymentId")
58
59
  }
59
60
  ),
60
61
  /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
61
- /* @__PURE__ */ jsx(DropdownMenuItem, { onClick: onRowAction, children: t("viewCustomer") }),
62
- /* @__PURE__ */ jsx(DropdownMenuItem, { onClick: onRowAction, children: t("viewPaymentDetails") })
62
+ /* @__PURE__ */ jsx(DropdownMenuItem, { onClick: () => onRowAction?.(payment.id, "viewCustomer"), children: t("viewCustomer") }),
63
+ /* @__PURE__ */ jsx(DropdownMenuItem, { onClick: () => onRowAction?.(payment.id, "viewDetails"), children: t("viewPaymentDetails") })
63
64
  ] })
64
65
  ] });
65
66
  }
@@ -98,12 +99,18 @@ var defaultData = [
98
99
  email: "sales@company.com"
99
100
  }
100
101
  ];
101
- function DataGridBlock({ props, emit }) {
102
+ function DataGridBlock({ props, emit, bindings }) {
102
103
  const data = props.data ?? defaultData;
103
104
  const title = props.title ?? "Recent Transactions";
104
105
  const description = props.description ?? "A sophisticated data grid with filtering and actions.";
106
+ const [, setBoundSelectedRowId] = useBoundProp(props.selectedRowId, bindings?.selectedRowId);
107
+ const [, setBoundSelectedAction] = useBoundProp(props.selectedAction, bindings?.selectedAction);
105
108
  const t = useTranslations("blocks.dataGridBlock");
106
- const onRowAction = useCallback(() => emit("rowAction"), [emit]);
109
+ const onRowAction = useCallback((rowId, action) => {
110
+ setBoundSelectedRowId(rowId);
111
+ setBoundSelectedAction(action);
112
+ emit("rowAction");
113
+ }, [emit, setBoundSelectedRowId, setBoundSelectedAction]);
107
114
  const defaultColumns = useMemo(() => createColumns(t, onRowAction), [t, onRowAction]);
108
115
  return /* @__PURE__ */ jsx(ScrollFadeIn, { children: /* @__PURE__ */ jsxs(Card, { className: "w-full", children: [
109
116
  /* @__PURE__ */ jsxs(CardHeader, { children: [
@@ -13,6 +13,7 @@ function CommandPaletteBlock({ props, bindings, emit }) {
13
13
  const placeholder = props.placeholder ?? "Search...";
14
14
  const [open, setOpen] = useState(false);
15
15
  const [boundQuery, setBoundQuery] = useBoundProp(props.searchValue, bindings?.searchValue);
16
+ const [, setBoundSelectedItemId] = useBoundProp(props.selectedItemId, bindings?.selectedItemId);
16
17
  const [localQuery, setLocalQuery] = useState("");
17
18
  const isBound = !!bindings?.searchValue;
18
19
  const query = isBound ? boundQuery ?? "" : localQuery;
@@ -30,7 +31,8 @@ function CommandPaletteBlock({ props, bindings, emit }) {
30
31
  return acc;
31
32
  }, {});
32
33
  }, [query, items]);
33
- function handleSelect(_result) {
34
+ function handleSelect(result) {
35
+ setBoundSelectedItemId(result.id);
34
36
  setOpen(false);
35
37
  setQuery("");
36
38
  emit("select");
@@ -86,7 +88,7 @@ function CommandPaletteBlock({ props, bindings, emit }) {
86
88
  CommandItem,
87
89
  {
88
90
  value: result.id,
89
- onSelect: () => handleSelect(),
91
+ onSelect: () => handleSelect(result),
90
92
  children: /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ jsx("p", { className: "truncate", children: result.title }) })
91
93
  },
92
94
  result.id
@@ -7,6 +7,7 @@ import { useMotionConfig, motionSpring } from './chunk-PD2YEH3H.js';
7
7
  import { LayoutDashboardIcon } from './chunk-O74AEVHW.js';
8
8
  import { Badge } from './chunk-S4JAHKOP.js';
9
9
  import { cn } from './chunk-QYZT24TS.js';
10
+ import { useBoundProp } from '@json-render/react';
10
11
  import { AnimatePresence, m } from 'motion/react';
11
12
  import { jsx, jsxs } from 'react/jsx-runtime';
12
13
 
@@ -24,11 +25,13 @@ function resolveActiveSection(sections, activeSectionId) {
24
25
  function SettingsNavBlock({
25
26
  props,
26
27
  emit,
28
+ bindings,
27
29
  children
28
30
  }) {
29
31
  const title = props.title ?? "Settings";
30
32
  const subtitle = props.subtitle ?? "Manage your preferences";
31
33
  const sections = props.sections;
34
+ const [, setBoundActiveSectionId] = useBoundProp(props.activeSectionId, bindings?.activeSectionId);
32
35
  const activeSectionId = props.activeSectionId;
33
36
  const saveState = props.saveState ?? "default";
34
37
  const validationMessage = props.validationMessage;
@@ -72,6 +75,7 @@ function SettingsNavBlock({
72
75
  isActive,
73
76
  onClick: () => {
74
77
  if (!isUnavailable && section.id !== activeSection?.id) {
78
+ setBoundActiveSectionId(section.id);
75
79
  emit("sectionChange");
76
80
  }
77
81
  },
@@ -25,6 +25,7 @@ function ApiKeysBlock({ props, emit, bindings }) {
25
25
  const isBound = !!bindings?.newKeyName;
26
26
  const newKeyName = isBound ? boundNewKeyName ?? "" : localNewKeyName;
27
27
  const setNewKeyName = isBound ? setBoundNewKeyName : setLocalNewKeyName;
28
+ const [, setBoundRevokedKeyId] = useBoundProp(props.revokedKeyId, bindings?.revokedKeyId);
28
29
  const [creating, setCreating] = useState(false);
29
30
  const [createdKey, setCreatedKey] = useState(null);
30
31
  const [copied, setCopied] = useState(false);
@@ -166,7 +167,10 @@ function ApiKeysBlock({ props, emit, bindings }) {
166
167
  size: "sm",
167
168
  variant: "outline",
168
169
  className: "text-destructive/80 hover:text-destructive",
169
- onClick: () => emit("revoke"),
170
+ onClick: () => {
171
+ setBoundRevokedKeyId(key.id);
172
+ emit("revoke");
173
+ },
170
174
  children: [
171
175
  /* @__PURE__ */ jsx(Trash2Icon, { size: 14, className: "mr-1" }),
172
176
  "Revoke"
@@ -1,22 +1,23 @@
1
- import { primitiveComponents } from './chunk-PQOL3E2V.js';
1
+ import { primitiveComponents } from './chunk-3KEBY2I3.js';
2
+ import { WizardBlock } from './chunk-B4373MDA.js';
2
3
  import { InviteUserModal } from './chunk-XLN4NVKU.js';
3
4
  import { StatsBlock } from './chunk-A4TQNK7R.js';
4
5
  import { StatsMarketingBlock } from './chunk-PD6WW7E5.js';
5
- import { TeamBlock } from './chunk-XMGWLDNG.js';
6
+ import { TeamManagementBlock } from './chunk-ACIJEUAH.js';
7
+ import { TeamShowcaseBlock } from './chunk-KSJUX6EA.js';
6
8
  import { TestimonialsBlock } from './chunk-PYRHNONA.js';
7
9
  import { TimezonePickerBlock } from './chunk-HF2HNDE7.js';
8
10
  import { TwoFactorSetupBlock } from './chunk-QCFDSOTV.js';
9
11
  import { UsageDonutBlock } from './chunk-HZTWLK7C.js';
10
- import { WizardBlock } from './chunk-B4373MDA.js';
11
12
  import { OnboardingFlowBlock } from './chunk-33UWVOQ6.js';
12
13
  import { PasswordRecoveryBlock } from './chunk-R4SBK6Y5.js';
13
- import { PricingBlock } from './chunk-PQBVNNEG.js';
14
+ import { PricingBlock } from './chunk-DEILZQEX.js';
14
15
  import { ProcessFlowBlock } from './chunk-B4YCI5NM.js';
15
16
  import { ROICalculatorBlock } from './chunk-L77KWJJB.js';
16
17
  import { ResetPasswordBlock } from './chunk-ZKA5X3E4.js';
17
- import { SettingsNavBlock } from './chunk-PJ7DVYWA.js';
18
+ import { SettingsNavBlock } from './chunk-TOMUOPVE.js';
18
19
  import { SolutionShowcaseBlock } from './chunk-HX3VXWNJ.js';
19
- import { IntegrationsBlock } from './chunk-IYK2ABFE.js';
20
+ import { IntegrationsBlock } from './chunk-FUROL3RA.js';
20
21
  import { InteractiveAreaChartBlock } from './chunk-3FJG5MAT.js';
21
22
  import { LogoCloud } from './chunk-STNVWBJH.js';
22
23
  import { NewsletterBlock } from './chunk-FSU7ZM5V.js';
@@ -30,15 +31,15 @@ import { FormFieldBlock } from './chunk-KANK5FAG.js';
30
31
  import { GalleryBlock } from './chunk-6NL36QN3.js';
31
32
  import { HeaderBlock } from './chunk-CQ75K2DH.js';
32
33
  import { HeroBlock } from './chunk-UCFR7GLW.js';
33
- import { CommandPaletteBlock } from './chunk-UPMSE6PQ.js';
34
+ import { CommandPaletteBlock } from './chunk-TCDBSHAY.js';
34
35
  import { ComparisonBlock } from './chunk-GE4WUAAE.js';
35
36
  import { ContactBlock } from './chunk-H3KTAHJP.js';
36
37
  import { CreateBlock } from './chunk-NDQO7AO6.js';
37
- import { CrudListBlock } from './chunk-AP5SGSN7.js';
38
- import { DashboardBlock } from './chunk-XUWKGDUY.js';
39
- import { DataGridBlock } from './chunk-D6MFOI3N.js';
38
+ import { CrudListBlock } from './chunk-P3CGISJM.js';
39
+ import { DashboardBlock } from './chunk-JZERLGVV.js';
40
+ import { DataGridBlock } from './chunk-QMDQVJ4P.js';
40
41
  import { DirectoryBlock } from './chunk-7AUNUDHM.js';
41
- import { BlogIndexBlock } from './chunk-4ZST7OY5.js';
42
+ import { BlogIndexBlock } from './chunk-5DLTCQN4.js';
42
43
  import { CallToActionBlock } from './chunk-3BGWXRQC.js';
43
44
  import { ChangelogBlock } from './chunk-OLDUGLDM.js';
44
45
  import { ChartBlock } from './chunk-6LD76RMU.js';
@@ -49,7 +50,7 @@ import { CheckEmailBlock } from './chunk-BVXSAVKY.js';
49
50
  import { CodeBlock } from './chunk-GVOWGEGX.js';
50
51
  import { AgentRunOverviewBlock } from './chunk-KMTLCN6S.js';
51
52
  import { AgentWorkbenchBlock } from './chunk-U43JTK45.js';
52
- import { ApiKeysBlock } from './chunk-5RBO2IMZ.js';
53
+ import { ApiKeysBlock } from './chunk-WJ7TDY4S.js';
53
54
  import { AuthLayout } from './chunk-UMEBNHKR.js';
54
55
  import { LoginBlock } from './chunk-FX3GYS5O.js';
55
56
  import { AuthSuccessBlock } from './chunk-OMGVZWRM.js';
@@ -114,7 +115,8 @@ var seedComponents = {
114
115
  KanbanBoard: { KanbanBoard, KanbanColumn, KanbanColumnHeader, KanbanHandle, KanbanItem },
115
116
  NavUser,
116
117
  SettingsNavBlock,
117
- TeamBlock,
118
+ TeamShowcaseBlock,
119
+ TeamManagementBlock,
118
120
  TimezonePickerBlock,
119
121
  WorkspaceSwitcherBlock,
120
122
  AgentConversationBlock,
@@ -48,6 +48,8 @@ var blocksContentDefinitions = {
48
48
  })
49
49
  ).nullable(),
50
50
  activeCategoryId: z.string().nullable(),
51
+ selectedArticleId: z.string().nullable(),
52
+ currentPage: z.number().nullable(),
51
53
  pagination: z.object({ page: z.number(), totalPages: z.number() }).nullable(),
52
54
  state: z.enum(["loading", "empty", "has-data", "filtered", "paginated"]).nullable(),
53
55
  emptyTitle: z.string().nullable(),
@@ -65,6 +67,8 @@ var blocksContentDefinitions = {
65
67
  { id: "post-1", title: "Scaling Our Edge Network", excerpt: "How we reduced P99 latency to under 50ms globally.", category: "eng", authorName: "Liam Cho", publishedAt: "2026-03-20T10:00:00Z", readTimeLabel: "6 min read" }
66
68
  ],
67
69
  activeCategoryId: null,
70
+ selectedArticleId: null,
71
+ currentPage: null,
68
72
  pagination: { page: 1, totalPages: 3 },
69
73
  state: "has-data",
70
74
  emptyTitle: null,
@@ -176,7 +180,8 @@ var blocksContentDefinitions = {
176
180
  })
177
181
  ).nullable(),
178
182
  placeholder: z.string().nullable(),
179
- searchValue: z.string().nullable()
183
+ searchValue: z.string().nullable(),
184
+ selectedItemId: z.string().nullable()
180
185
  }),
181
186
  events: ["select"],
182
187
  description: "Keyboard-driven command palette with fuzzy search, hotkey trigger (Cmd+K), and responsive trigger button.",
@@ -187,7 +192,8 @@ var blocksContentDefinitions = {
187
192
  { id: "deploy", title: "Deploy to Production", group: "Actions" }
188
193
  ],
189
194
  placeholder: "Search commands...",
190
- searchValue: null
195
+ searchValue: null,
196
+ selectedItemId: null
191
197
  }
192
198
  },
193
199
  FormWizard: {
@@ -332,6 +338,8 @@ var blocksContentDefinitions = {
332
338
  title: z.string().nullable(),
333
339
  description: z.string().nullable(),
334
340
  showBillingToggle: z.boolean().nullable(),
341
+ selectedPlanName: z.string().nullable(),
342
+ isYearly: z.boolean().nullable(),
335
343
  plans: z.array(
336
344
  z.object({
337
345
  name: z.string(),
@@ -348,7 +356,7 @@ var blocksContentDefinitions = {
348
356
  }),
349
357
  events: ["selectPlan"],
350
358
  description: "Pricing table with plan comparison, billing toggle, and feature lists.",
351
- example: { title: "Simple, transparent pricing", description: null, showBillingToggle: true, plans: null }
359
+ example: { title: "Simple, transparent pricing", description: null, showBillingToggle: true, selectedPlanName: null, isYearly: null, plans: null }
352
360
  },
353
361
  ROICalculatorBlock: {
354
362
  props: z.object({
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { ApiKeysBlock } from '../../chunk-5RBO2IMZ.js';
2
+ export { ApiKeysBlock } from '../../chunk-WJ7TDY4S.js';
3
3
  import '../../chunk-UXX6HHPS.js';
4
4
  import '../../chunk-PXDHNGTG.js';
5
5
  import '../../chunk-AP3XXYAY.js';
@@ -1,3 +1,3 @@
1
1
  import { type BaseComponentProps } from '@json-render/react';
2
2
  import { type SeedProps } from '../../catalog/catalog';
3
- export declare function BlogIndexBlock({ props, emit, }: BaseComponentProps<SeedProps<'BlogIndexBlock'>>): import("react/jsx-runtime").JSX.Element;
3
+ export declare function BlogIndexBlock({ props, emit, bindings, }: BaseComponentProps<SeedProps<'BlogIndexBlock'>>): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { BlogIndexBlock } from '../../chunk-4ZST7OY5.js';
2
+ export { BlogIndexBlock } from '../../chunk-5DLTCQN4.js';
3
3
  import '../../chunk-Q7PCHHVJ.js';
4
4
  import '../../chunk-7UY24UWL.js';
5
5
  import '../../chunk-7KIDDF3I.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { CommandPaletteBlock } from '../../chunk-UPMSE6PQ.js';
2
+ export { CommandPaletteBlock } from '../../chunk-TCDBSHAY.js';
3
3
  import '../../chunk-JVIRZNQ6.js';
4
4
  import '../../chunk-37LY27CX.js';
5
5
  import '../../chunk-KHLMOBAU.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { CrudListBlock } from '../../chunk-AP5SGSN7.js';
2
+ export { CrudListBlock } from '../../chunk-P3CGISJM.js';
3
3
  import '../../chunk-Q7PCHHVJ.js';
4
4
  import '../../chunk-2BADJLMV.js';
5
5
  import '../../chunk-UXX6HHPS.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { DashboardBlock } from '../../chunk-XUWKGDUY.js';
2
+ export { DashboardBlock } from '../../chunk-JZERLGVV.js';
3
3
  import '../../chunk-ZTNHUABC.js';
4
4
  import '../../chunk-DQPK2XRL.js';
5
5
  import '../../chunk-KKBTPNXT.js';
@@ -6,4 +6,4 @@ export type Payment = {
6
6
  };
7
7
  import { type BaseComponentProps } from '@json-render/react';
8
8
  import { type SeedProps } from '../../catalog/catalog';
9
- export declare function DataGridBlock({ props, emit }: BaseComponentProps<SeedProps<'DataGridBlock'>>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function DataGridBlock({ props, emit, bindings }: BaseComponentProps<SeedProps<'DataGridBlock'>>): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { DataGridBlock } from '../../chunk-D6MFOI3N.js';
2
+ export { DataGridBlock } from '../../chunk-QMDQVJ4P.js';
3
3
  import '../../chunk-V5RSV4ZV.js';
4
4
  import '../../chunk-PXDHNGTG.js';
5
5
  import '../../chunk-ETS5O4ZQ.js';
@@ -1,12 +1,12 @@
1
1
  'use client';
2
- export { IntegrationsBlock } from '../../chunk-IYK2ABFE.js';
2
+ export { IntegrationsBlock } from '../../chunk-FUROL3RA.js';
3
3
  import '../../chunk-3ZDYYZDD.js';
4
+ import '../../chunk-J5DRK4RF.js';
4
5
  import '../../chunk-TSVN5A2F.js';
5
6
  import '../../chunk-PX2WVDDB.js';
6
7
  import '../../chunk-BZYMCJHW.js';
7
8
  import '../../chunk-H466RJCI.js';
8
9
  import '../../chunk-DT6DGTVW.js';
9
- import '../../chunk-J5DRK4RF.js';
10
10
  import '../../chunk-DQPK2XRL.js';
11
11
  import '../../chunk-UXX6HHPS.js';
12
12
  import '../../chunk-7UY24UWL.js';
@@ -1 +1,3 @@
1
- export declare function PricingBlock({ props, emit }: import('@json-render/react').BaseComponentProps<import('../../catalog/catalog').SeedProps<'PricingBlock'>>): import("react/jsx-runtime").JSX.Element;
1
+ import { type BaseComponentProps } from '@json-render/react';
2
+ import { type SeedProps } from '../../catalog/catalog';
3
+ export declare function PricingBlock({ props, emit, bindings }: BaseComponentProps<SeedProps<'PricingBlock'>>): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { PricingBlock } from '../../chunk-PQBVNNEG.js';
2
+ export { PricingBlock } from '../../chunk-DEILZQEX.js';
3
3
  import '../../chunk-DARC2ACH.js';
4
4
  import '../../chunk-G5EO22OR.js';
5
5
  import '../../chunk-ANBJ2OLC.js';
@@ -1,3 +1,3 @@
1
1
  import { type BaseComponentProps } from '@json-render/react';
2
2
  import { type SeedProps } from '../../catalog/catalog';
3
- export declare function SettingsNavBlock({ props, emit, children, }: BaseComponentProps<SeedProps<'SettingsNavBlock'>>): import("react/jsx-runtime").JSX.Element;
3
+ export declare function SettingsNavBlock({ props, emit, bindings, children, }: BaseComponentProps<SeedProps<'SettingsNavBlock'>>): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { SettingsNavBlock } from '../../chunk-PJ7DVYWA.js';
2
+ export { SettingsNavBlock } from '../../chunk-TOMUOPVE.js';
3
3
  import '../../chunk-Q7PCHHVJ.js';
4
4
  import '../../chunk-4DWRAIM2.js';
5
5
  import '../../chunk-C4SNHMYC.js';
@@ -0,0 +1,3 @@
1
+ import { type BaseComponentProps } from '@json-render/react';
2
+ import { type SeedProps } from '../../catalog/catalog';
3
+ export declare function TeamManagementBlock({ props, emit, bindings, }: BaseComponentProps<SeedProps<'TeamManagementBlock'>>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,129 @@
1
+ 'use client';
2
+ export { TeamManagementBlock } from '../../chunk-ACIJEUAH.js';
3
+ import '../../chunk-Q7PCHHVJ.js';
4
+ import '../../chunk-OHCQPI3W.js';
5
+ import '../../chunk-UXX6HHPS.js';
6
+ import '../../chunk-ETS5O4ZQ.js';
7
+ import '../../chunk-AP3XXYAY.js';
8
+ import '../../chunk-LIBXYD5Q.js';
9
+ import '../../chunk-4TF4QFIM.js';
10
+ import '../../chunk-RASEB2XI.js';
11
+ import '../../chunk-NAAU5IWU.js';
12
+ import '../../chunk-7KIDDF3I.js';
13
+ import '../../chunk-PD2YEH3H.js';
14
+ import '../../chunk-CRY67BIF.js';
15
+ import '../../chunk-HJC6U46F.js';
16
+ import '../../chunk-GO35FTNJ.js';
17
+ import '../../chunk-PSVQ7ZNX.js';
18
+ import '../../chunk-FLF5AMNO.js';
19
+ import '../../chunk-S4GKGKON.js';
20
+ import '../../chunk-LCDDAE7J.js';
21
+ import '../../chunk-R674XI7C.js';
22
+ import '../../chunk-WUO7OONN.js';
23
+ import '../../chunk-BPCCTJSK.js';
24
+ import '../../chunk-CGUCH322.js';
25
+ import '../../chunk-ELKIUARM.js';
26
+ import '../../chunk-KSHJQ2VT.js';
27
+ import '../../chunk-3CLXYQKB.js';
28
+ import '../../chunk-TXGANOAX.js';
29
+ import '../../chunk-OITJWGFV.js';
30
+ import '../../chunk-Z74D6D2W.js';
31
+ import '../../chunk-HNY45VUQ.js';
32
+ import '../../chunk-IJJI4RQU.js';
33
+ import '../../chunk-E7RBK6ML.js';
34
+ import '../../chunk-UBIGDGOP.js';
35
+ import '../../chunk-ALMGJVMT.js';
36
+ import '../../chunk-QPXTBZWN.js';
37
+ import '../../chunk-GAKU7DFY.js';
38
+ import '../../chunk-T6BRD7TS.js';
39
+ import '../../chunk-R5XP45PD.js';
40
+ import '../../chunk-G5EO5FWC.js';
41
+ import '../../chunk-NCULQXJE.js';
42
+ import '../../chunk-VDYPDMYR.js';
43
+ import '../../chunk-WDGIQDQG.js';
44
+ import '../../chunk-WKRIKCJC.js';
45
+ import '../../chunk-7WDT2PRI.js';
46
+ import '../../chunk-JZ4G2SJH.js';
47
+ import '../../chunk-KYGKJ553.js';
48
+ import '../../chunk-M7YSMMAC.js';
49
+ import '../../chunk-XQ2UDMPO.js';
50
+ import '../../chunk-JMCSAGZ3.js';
51
+ import '../../chunk-QUKDUSHD.js';
52
+ import '../../chunk-4NXZIMYZ.js';
53
+ import '../../chunk-2IZC7HSV.js';
54
+ import '../../chunk-2SDZMTB2.js';
55
+ import '../../chunk-RYOTIXZO.js';
56
+ import '../../chunk-W3B3UOEG.js';
57
+ import '../../chunk-ACRVOD7W.js';
58
+ import '../../chunk-QSU23VYZ.js';
59
+ import '../../chunk-BJYCQ2NV.js';
60
+ import '../../chunk-VM462WZC.js';
61
+ import '../../chunk-O74AEVHW.js';
62
+ import '../../chunk-ZUHIWALK.js';
63
+ import '../../chunk-5UZDOF6V.js';
64
+ import '../../chunk-PKVTEDKO.js';
65
+ import '../../chunk-I3TH7PIB.js';
66
+ import '../../chunk-WGPK3FQ7.js';
67
+ import '../../chunk-JL4MVVFH.js';
68
+ import '../../chunk-IQEBXXB5.js';
69
+ import '../../chunk-AZUJNRQU.js';
70
+ import '../../chunk-WA45EC4Y.js';
71
+ import '../../chunk-2MOEOEOI.js';
72
+ import '../../chunk-5LCXASRW.js';
73
+ import '../../chunk-2ZJVU7NV.js';
74
+ import '../../chunk-5ESF6N36.js';
75
+ import '../../chunk-RBPLOM3A.js';
76
+ import '../../chunk-2NT57K4U.js';
77
+ import '../../chunk-JRJGSNI4.js';
78
+ import '../../chunk-RF6ECFS5.js';
79
+ import '../../chunk-4FEAWXJD.js';
80
+ import '../../chunk-JHQTKMKG.js';
81
+ import '../../chunk-CI7GPGCJ.js';
82
+ import '../../chunk-226EBOTK.js';
83
+ import '../../chunk-6BAV4TZ5.js';
84
+ import '../../chunk-SW6QPJM4.js';
85
+ import '../../chunk-V6WNRZT3.js';
86
+ import '../../chunk-JBK2LA6U.js';
87
+ import '../../chunk-55U27XY4.js';
88
+ import '../../chunk-LSPO6OBI.js';
89
+ import '../../chunk-Y56WBNCY.js';
90
+ import '../../chunk-KYZT3RNW.js';
91
+ import '../../chunk-UEG2LI7Z.js';
92
+ import '../../chunk-JJTQOH7J.js';
93
+ import '../../chunk-72X6SXOX.js';
94
+ import '../../chunk-SR5U52V3.js';
95
+ import '../../chunk-74RKVIBV.js';
96
+ import '../../chunk-S733NAYS.js';
97
+ import '../../chunk-MAUTIHQG.js';
98
+ import '../../chunk-666N6OTL.js';
99
+ import '../../chunk-FMH55OKV.js';
100
+ import '../../chunk-WXVNTJIB.js';
101
+ import '../../chunk-T7H53CK2.js';
102
+ import '../../chunk-TBKJ34BB.js';
103
+ import '../../chunk-AWIJHDNK.js';
104
+ import '../../chunk-BRP6D56U.js';
105
+ import '../../chunk-6G3RRWJT.js';
106
+ import '../../chunk-R3AO6AZM.js';
107
+ import '../../chunk-ZU2GYVAP.js';
108
+ import '../../chunk-CRZ2JE24.js';
109
+ import '../../chunk-GCUTJI7M.js';
110
+ import '../../chunk-CXACRCZ4.js';
111
+ import '../../chunk-WFJQ43SM.js';
112
+ import '../../chunk-JHQ5NMLZ.js';
113
+ import '../../chunk-Q7LVUGFL.js';
114
+ import '../../chunk-AP5Y5M3R.js';
115
+ import '../../chunk-G5YLGJXR.js';
116
+ import '../../chunk-G24VV5NO.js';
117
+ import '../../chunk-ONGJ7AC2.js';
118
+ import '../../chunk-UHXGBV5N.js';
119
+ import '../../chunk-UIUMTURU.js';
120
+ import '../../chunk-P6IRHPFM.js';
121
+ import '../../chunk-SXHYB7JB.js';
122
+ import '../../chunk-BFLN54VR.js';
123
+ import '../../chunk-PRUXIDBD.js';
124
+ import '../../chunk-NURPUVUV.js';
125
+ import '../../chunk-S4JAHKOP.js';
126
+ import '../../chunk-TV4RSQH4.js';
127
+ import '../../chunk-HJBXUXTD.js';
128
+ import '../../chunk-ASKFAYYR.js';
129
+ import '../../chunk-QYZT24TS.js';
@@ -0,0 +1,3 @@
1
+ import { type BaseComponentProps } from '@json-render/react';
2
+ import { type SeedProps } from '../../catalog/catalog';
3
+ export declare function TeamShowcaseBlock({ props }: BaseComponentProps<SeedProps<'TeamShowcaseBlock'>>): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { TeamBlock } from '../../chunk-XMGWLDNG.js';
2
+ export { TeamShowcaseBlock } from '../../chunk-KSJUX6EA.js';
3
3
  import '../../chunk-DQPK2XRL.js';
4
4
  import '../../chunk-UXX6HHPS.js';
5
5
  import '../../chunk-I23DDSU7.js';
@@ -1,7 +1,7 @@
1
1
  import '../../chunk-3ZDYYZDD.js';
2
+ export { VSCodium } from '../../chunk-J5DRK4RF.js';
2
3
  export { Gemini } from '../../chunk-TSVN5A2F.js';
3
4
  export { GooglePaLM } from '../../chunk-PX2WVDDB.js';
4
5
  export { MagicUI } from '../../chunk-BZYMCJHW.js';
5
6
  export { MediaWiki } from '../../chunk-H466RJCI.js';
6
7
  export { Replit } from '../../chunk-DT6DGTVW.js';
7
- export { VSCodium } from '../../chunk-J5DRK4RF.js';
@@ -1,4 +1,4 @@
1
- import { showcaseSpec } from '../../chunk-NBDUZA66.js';
1
+ import { showcaseSpec } from '../../chunk-KOJ3X2F3.js';
2
2
  import '../../chunk-GC7QKZQW.js';
3
3
  import { createNextApp } from '@json-render/next/server';
4
4