@vadimcomanescu/nadicode-design-system 2.0.9 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/.agents/skills/seed/SKILL.md +24 -14
  2. package/.agents/skills/seed/contract.md +19 -6
  3. package/.agents/skills/seed/recipes/agency-home.md +5 -5
  4. package/.agents/skills/seed/recipes/auth.md +3 -3
  5. package/.agents/skills/seed/recipes/blog-content.md +2 -2
  6. package/.agents/skills/seed/recipes/company-about.md +3 -3
  7. package/.agents/skills/seed/recipes/company-contact.md +3 -3
  8. package/.agents/skills/seed/recipes/digital-workers.md +3 -3
  9. package/.agents/skills/seed/recipes/marketing-landing.md +8 -8
  10. package/.agents/skills/seed/recipes/marketing-shell.md +4 -4
  11. package/.agents/skills/seed/recipes/navigation-shell.md +3 -2
  12. package/.agents/skills/seed/recipes/pricing.md +4 -4
  13. package/.agents/skills/seed/recipes/service-detail.md +3 -3
  14. package/.agents/skills/seed/references/blocks.md +5 -5
  15. package/.agents/skills/seed/references/components.md +2 -2
  16. package/.agents/skills/seed/references/nextjs.md +2 -2
  17. package/README.md +3 -3
  18. package/contracts/consumer-intent-map.json +1 -2
  19. package/contracts/release-governance-baseline.json +3 -37
  20. package/dist/catalog/catalog.d.ts +2220 -0
  21. package/dist/catalog/catalog.js +1913 -0
  22. package/dist/catalog/components.d.ts +201 -0
  23. package/dist/catalog/components.js +407 -0
  24. package/dist/catalog/types.d.ts +4 -0
  25. package/dist/catalog/types.js +1 -0
  26. package/dist/chunk-224KPIOG.js +60 -0
  27. package/dist/chunk-25BOZMXA.js +169 -0
  28. package/dist/chunk-32OLQ7FC.js +130 -0
  29. package/dist/chunk-3JJBJ4VR.js +47 -0
  30. package/dist/chunk-3U56FXYC.js +30 -0
  31. package/dist/chunk-4MWKE6F5.js +86 -0
  32. package/dist/chunk-6HGSU24S.js +94 -0
  33. package/dist/chunk-7IADIXDV.js +168 -0
  34. package/dist/chunk-7NS3VFD7.js +86 -0
  35. package/dist/chunk-ALA6OM7K.js +134 -0
  36. package/dist/chunk-AN5TW4AL.js +50 -0
  37. package/dist/chunk-AWZFQQGN.js +167 -0
  38. package/dist/chunk-BRCBJ3S4.js +42 -0
  39. package/dist/chunk-BRICSLHJ.js +30 -0
  40. package/dist/chunk-BYEHHZZN.js +115 -0
  41. package/dist/chunk-C33GUEDY.js +149 -0
  42. package/dist/chunk-CUDMDYKE.js +150 -0
  43. package/dist/chunk-CVTMWSNS.js +145 -0
  44. package/dist/chunk-DEZXWNYF.js +165 -0
  45. package/dist/chunk-DNJEVMDY.js +40 -0
  46. package/dist/chunk-DNJOBML6.js +66 -0
  47. package/dist/chunk-FTGFOK6T.js +69 -0
  48. package/dist/{chunk-7A2RXKGH.js → chunk-GJ557DGH.js} +1 -1
  49. package/dist/chunk-HFBJ6L6O.js +104 -0
  50. package/dist/chunk-HPTHS7SX.js +52 -0
  51. package/dist/chunk-K4U67BVG.js +175 -0
  52. package/dist/chunk-KNR3WB5C.js +147 -0
  53. package/dist/chunk-KQ7ZC6EM.js +66 -0
  54. package/dist/chunk-LGW7FVG5.js +83 -0
  55. package/dist/chunk-LK2L3C7D.js +72 -0
  56. package/dist/chunk-LP6ZZYOQ.js +36 -0
  57. package/dist/chunk-LV4P7WVM.js +54 -0
  58. package/dist/chunk-MGSGCARB.js +164 -0
  59. package/dist/chunk-N3YFYMNZ.js +73 -0
  60. package/dist/{chunk-DSMGCFMJ.js → chunk-POFFOUQW.js} +2 -5
  61. package/dist/chunk-Q5IYBNA7.js +56 -0
  62. package/dist/chunk-QJCE7NZF.js +85 -0
  63. package/dist/chunk-QW5II6YK.js +96 -0
  64. package/dist/chunk-RMGDDOCD.js +138 -0
  65. package/dist/chunk-RNCX4JIE.js +70 -0
  66. package/dist/chunk-RWCL5OPX.js +112 -0
  67. package/dist/chunk-S5OY2B63.js +28 -0
  68. package/dist/chunk-SIQNG72C.js +257 -0
  69. package/dist/chunk-SP7NIZFP.js +117 -0
  70. package/dist/chunk-SWRJWMGG.js +30 -0
  71. package/dist/chunk-TCQIJ3DO.js +85 -0
  72. package/dist/chunk-TPJ6JJ2F.js +290 -0
  73. package/dist/chunk-UR43ANYS.js +159 -0
  74. package/dist/chunk-VRGPG2YN.js +79 -0
  75. package/dist/chunk-WSBLCWY7.js +126 -0
  76. package/dist/chunk-XKKFSFYO.js +93 -0
  77. package/dist/chunk-XO7TBM47.js +32 -0
  78. package/dist/chunk-YDYDGG5K.js +132 -0
  79. package/dist/chunk-YMJOUYMT.js +171 -0
  80. package/dist/chunk-Z2WION42.js +32 -0
  81. package/dist/chunk-ZFKSVEYW.js +35 -0
  82. package/dist/components/blocks/AgentProfileGridBlock.js +8 -86
  83. package/dist/components/blocks/AgentRunOverviewBlock.js +8 -147
  84. package/dist/components/blocks/AgentWorkbenchBlock.js +15 -257
  85. package/dist/components/blocks/AudioVisualizerBlock.js +2 -50
  86. package/dist/components/blocks/AuthLayout.js +9 -73
  87. package/dist/components/blocks/BannerBlock.js +8 -66
  88. package/dist/components/blocks/BarChartBlock.js +5 -47
  89. package/dist/components/blocks/ChartBlock.js +7 -54
  90. package/dist/components/blocks/ChartCollectionBlock.js +11 -171
  91. package/dist/components/blocks/ChatLayout.js +12 -126
  92. package/dist/components/blocks/CreateBlock.js +9 -104
  93. package/dist/components/blocks/DataGridBlock.js +9 -117
  94. package/dist/components/blocks/DirectoryBlock.js +12 -85
  95. package/dist/components/blocks/FeatureGridBlock.js +6 -56
  96. package/dist/components/blocks/GalleryBlock.js +6 -69
  97. package/dist/components/blocks/HeroBlock.js +2 -2
  98. package/dist/components/blocks/HeroSectionBlock.js +10 -134
  99. package/dist/components/blocks/IntegrationsBlock.js +13 -94
  100. package/dist/components/blocks/InteractiveAreaChartBlock.js +5 -290
  101. package/dist/components/blocks/KanbanDemoBlock.js +8 -145
  102. package/dist/components/blocks/LogoCloud.js +4 -35
  103. package/dist/components/blocks/NavUser.js +5 -85
  104. package/dist/components/blocks/NotFoundBlock.js +8 -32
  105. package/dist/components/blocks/OnboardingBlock.js +7 -66
  106. package/dist/components/blocks/SettingsLayout.js +13 -86
  107. package/dist/components/blocks/SignUpBlock.js +8 -168
  108. package/dist/components/blocks/SolutionShowcaseBlock.js +11 -112
  109. package/dist/components/blocks/StatsBlock.js +6 -60
  110. package/dist/components/blocks/UsageDonutBlock.js +5 -79
  111. package/dist/components/blocks/WizardBlock.js +12 -93
  112. package/dist/components/blocks/user/InviteUserModal.js +10 -132
  113. package/dist/components/page-kits/AccountLockedPageKit.js +3 -40
  114. package/dist/components/page-kits/AgentsChatPageKit.js +11 -159
  115. package/dist/components/page-kits/AnalyticsPageKit.js +12 -150
  116. package/dist/components/page-kits/BlogContentPageKit.js +12 -167
  117. package/dist/components/page-kits/CheckoutPageKit.js +9 -83
  118. package/dist/components/page-kits/CompanySuitePageKit.js +9 -96
  119. package/dist/components/page-kits/DashboardPageKit.js +11 -149
  120. package/dist/components/page-kits/ErrorPageKit.js +5 -52
  121. package/dist/components/page-kits/KanbanBoardPageKit.js +7 -169
  122. package/dist/components/page-kits/LandingPageKit.js +12 -73
  123. package/dist/components/page-kits/LoginPageKit.js +3 -32
  124. package/dist/components/page-kits/OnboardingPageKit.js +6 -115
  125. package/dist/components/page-kits/PricingPageKit.js +12 -138
  126. package/dist/components/page-kits/ProfileSettingsPageKit.js +10 -164
  127. package/dist/components/page-kits/RecoveryPageKit.js +3 -42
  128. package/dist/components/page-kits/ResetPageKit.js +3 -36
  129. package/dist/components/page-kits/ServiceSuitePageKit.js +11 -176
  130. package/dist/components/page-kits/SignupPageKit.js +3 -30
  131. package/dist/components/page-kits/SuccessPageKit.js +4 -30
  132. package/dist/components/page-kits/TeamSettingsPageKit.js +9 -165
  133. package/dist/components/page-kits/TwoFactorPageKit.js +4 -28
  134. package/dist/components/page-kits/VerifyEmailPageKit.js +4 -30
  135. package/dist/components/page-kits/VoiceAgentsPageKit.js +13 -130
  136. package/dist/components/ui/AvatarUpload.js +1 -1
  137. package/dist/components/ui/CheckoutForm.js +5 -70
  138. package/dist/components/ui/MouseEffect.js +1 -1
  139. package/eslint-rules/nadicode/config.js +2 -0
  140. package/eslint-rules/nadicode/data/catalog-names.json +93 -0
  141. package/eslint-rules/nadicode/index.js +4 -0
  142. package/eslint-rules/nadicode/rules/__tests__/require-catalog-component.test.js +77 -0
  143. package/eslint-rules/nadicode/rules/__tests__/require-catalog-import.test.js +111 -0
  144. package/eslint-rules/nadicode/rules/require-catalog-component.js +79 -0
  145. package/eslint-rules/nadicode/rules/require-catalog-import.js +59 -0
  146. package/package.json +15 -358
  147. package/contracts/block-props-schemas.json +0 -2186
  148. package/contracts/component-props-schemas.json +0 -8322
  149. package/contracts/consumer-contract.json +0 -178
  150. package/contracts/page-kit-props-schemas.json +0 -1894
  151. package/contracts/public-surface-registry.json +0 -5822
  152. package/contracts/public-surface-registry.schema.json +0 -219
  153. package/contracts/spec-manifest.json +0 -46
  154. package/dist/catalog.json +0 -5221
@@ -0,0 +1,175 @@
1
+ import { MarketingShellPageKit } from './chunk-Z233ZQZE.js';
2
+ import { TeamBlock } from './chunk-VBZQ4DBE.js';
3
+ import { TestimonialsBlock } from './chunk-FV2G6SAF.js';
4
+ import { ProcessFlowBlock } from './chunk-HZERHGBT.js';
5
+ import { HeroBlock } from './chunk-GJ557DGH.js';
6
+ import { FAQBlock } from './chunk-NEHCPO53.js';
7
+ import { FeatureBlock } from './chunk-HJ3A2YNO.js';
8
+ import { CallToActionBlock } from './chunk-GJPTPLCQ.js';
9
+ import { cn } from './chunk-QYZT24TS.js';
10
+ import React from 'react';
11
+ import { jsx } from 'react/jsx-runtime';
12
+
13
+ var DEFAULT_SECTION_ORDER = [
14
+ "hero",
15
+ "features",
16
+ "process",
17
+ "team",
18
+ "testimonials",
19
+ "faq",
20
+ "cta"
21
+ ];
22
+ var DEFAULTS_BY_VARIANT = {
23
+ "agency-home": {
24
+ hero: {
25
+ headline: "A service partner for design and engineering velocity.",
26
+ subheadline: "Launch polished digital experiences with a repeatable service system.",
27
+ primaryAction: { label: "Talk to sales" }
28
+ },
29
+ features: {
30
+ features: [
31
+ {
32
+ title: "Cross-functional squads",
33
+ description: "Design, engineering, and QA operating in one weekly cadence.",
34
+ icon: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\u25CF" }),
35
+ bullets: ["Shared backlog", "Contract-first delivery", "Continuous validation"],
36
+ buttonLabel: "Learn more"
37
+ }
38
+ ]
39
+ },
40
+ process: {
41
+ title: "Service process",
42
+ steps: [
43
+ { title: "Discover", description: "Map goals, constraints, and target outcomes." },
44
+ { title: "Build", description: "Ship slices weekly with measurable acceptance." },
45
+ { title: "Scale", description: "Expand coverage using reusable contracts and kits." }
46
+ ]
47
+ },
48
+ team: null,
49
+ testimonials: {},
50
+ faq: {},
51
+ cta: {
52
+ title: "Need an execution partner?",
53
+ description: "Book a planning session and get a route-level rollout plan.",
54
+ primaryAction: { label: "Book planning", href: "/contact" }
55
+ }
56
+ },
57
+ "digital-workers": {
58
+ hero: {
59
+ headline: "Digital workers for planning, delivery, and quality.",
60
+ subheadline: "Deploy role-based workers that execute work while humans stay in control.",
61
+ primaryAction: { label: "Request demo" }
62
+ },
63
+ features: {
64
+ features: [
65
+ {
66
+ title: "Role-specialized workers",
67
+ description: "Assign planner, coder, and QA workers per workflow.",
68
+ icon: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\u25CD" }),
69
+ bullets: ["Shared context", "Traceable decisions", "Approval checkpoints"],
70
+ buttonLabel: "Explore workers"
71
+ }
72
+ ]
73
+ },
74
+ process: {
75
+ title: "Delivery process",
76
+ steps: [
77
+ { title: "Select workers", description: "Pick the worker stack for each objective." },
78
+ { title: "Run supervised", description: "Review outputs before execution-critical actions." },
79
+ { title: "Promote safely", description: "Ship with tests and release gates enforced." }
80
+ ]
81
+ },
82
+ team: {
83
+ title: "Worker team"
84
+ },
85
+ testimonials: {},
86
+ faq: {},
87
+ cta: {
88
+ title: "Design your worker stack",
89
+ description: "Start with a pilot route and scale based on measured outcomes.",
90
+ primaryAction: { label: "Start pilot", href: "/contact" }
91
+ }
92
+ },
93
+ "service-detail": {
94
+ hero: {
95
+ headline: "A focused service track for your highest-impact route.",
96
+ subheadline: "Bring one route from concept to production with a contract-first approach.",
97
+ primaryAction: { label: "Request proposal" }
98
+ },
99
+ features: {
100
+ features: [
101
+ {
102
+ title: "Outcome-led scope",
103
+ description: "Every section is mapped to a measurable business outcome.",
104
+ icon: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\u25C9" }),
105
+ bullets: ["Delivery milestones", "Weekly demos", "Launch checklist"],
106
+ buttonLabel: "See deliverables"
107
+ }
108
+ ]
109
+ },
110
+ process: {
111
+ title: "Implementation steps",
112
+ steps: [
113
+ { title: "Audit", description: "Review current route structure and conversion friction." },
114
+ { title: "Design", description: "Define section contracts and interaction states." },
115
+ { title: "Implement", description: "Ship validated route kit with test coverage." }
116
+ ]
117
+ },
118
+ team: null,
119
+ testimonials: {},
120
+ faq: {},
121
+ cta: {
122
+ title: "Need this service for your route?",
123
+ description: "Share your current page and goals, we will map a rollout plan.",
124
+ primaryAction: { label: "Contact team", href: "/contact" }
125
+ }
126
+ }
127
+ };
128
+ function normalizeSectionOrder(sectionOrder) {
129
+ if (!sectionOrder || sectionOrder.length === 0) {
130
+ return DEFAULT_SECTION_ORDER;
131
+ }
132
+ const seen = /* @__PURE__ */ new Set();
133
+ return sectionOrder.filter((sectionId) => {
134
+ if (seen.has(sectionId)) {
135
+ return false;
136
+ }
137
+ seen.add(sectionId);
138
+ return true;
139
+ });
140
+ }
141
+ function ServiceSuitePageKit({
142
+ shell,
143
+ variant = "agency-home",
144
+ sectionOrder,
145
+ hero,
146
+ features,
147
+ process,
148
+ team,
149
+ testimonials,
150
+ faq,
151
+ cta,
152
+ className
153
+ }) {
154
+ const defaults = DEFAULTS_BY_VARIANT[variant];
155
+ const resolvedHero = hero ?? defaults.hero;
156
+ const resolvedFeatures = features === void 0 ? defaults.features : features;
157
+ const resolvedProcess = process === void 0 ? defaults.process : process;
158
+ const resolvedTeam = team === void 0 ? defaults.team : team;
159
+ const resolvedTestimonials = testimonials === void 0 ? defaults.testimonials : testimonials;
160
+ const resolvedFaq = faq === void 0 ? defaults.faq : faq;
161
+ const resolvedCta = cta === void 0 ? defaults.cta : cta;
162
+ const orderedSections = normalizeSectionOrder(sectionOrder);
163
+ const sectionById = {
164
+ hero: resolvedHero === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "service-section-hero", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(HeroBlock, { variant: "split", ...resolvedHero }) }),
165
+ features: resolvedFeatures === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "service-section-features", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(FeatureBlock, { variant: "list", ...resolvedFeatures }) }),
166
+ process: resolvedProcess === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "service-section-process", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(ProcessFlowBlock, { ...resolvedProcess }) }),
167
+ team: resolvedTeam === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "service-section-team", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(TeamBlock, { ...resolvedTeam }) }),
168
+ testimonials: resolvedTestimonials === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "service-section-testimonials", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(TestimonialsBlock, { ...resolvedTestimonials }) }),
169
+ faq: resolvedFaq === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "service-section-faq", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(FAQBlock, { ...resolvedFaq }) }),
170
+ cta: resolvedCta === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "service-section-cta", className: "mx-auto w-full max-w-6xl px-6 pb-16", children: /* @__PURE__ */ jsx(CallToActionBlock, { ...resolvedCta }) })
171
+ };
172
+ return /* @__PURE__ */ jsx(MarketingShellPageKit, { ...shell, children: /* @__PURE__ */ jsx("div", { className: cn("space-y-10 pb-10", className), children: orderedSections.map((sectionId) => /* @__PURE__ */ jsx(React.Fragment, { children: sectionById[sectionId] }, sectionId)) }) });
173
+ }
174
+
175
+ export { ServiceSuitePageKit };
@@ -0,0 +1,147 @@
1
+ import { WorkflowGraph } from './chunk-VCCI3NRD.js';
2
+ import { Typography } from './chunk-N53OMWW2.js';
3
+ import { Heading } from './chunk-WI547C47.js';
4
+ import { ContextMeter } from './chunk-S2WSXZ7Y.js';
5
+ import { AgentMetricsCard } from './chunk-OCQB4IU7.js';
6
+ import { AgentTeamPanel } from './chunk-J3QL5UQ7.js';
7
+ import { cn } from './chunk-QYZT24TS.js';
8
+ import { jsxs, jsx } from 'react/jsx-runtime';
9
+
10
+ var defaultAgents = [
11
+ {
12
+ id: "orchestrator",
13
+ name: "Orchestrator",
14
+ role: "planner",
15
+ status: "active",
16
+ model: "Claude Opus 4",
17
+ currentAction: "Coordinating the next tool run",
18
+ tokenCount: 24800,
19
+ cost: 0.124,
20
+ elapsedMs: 312e3,
21
+ stepsCompleted: 4,
22
+ stepsTotal: 7,
23
+ toolCalls: [
24
+ { name: "dispatch_task", status: "done" },
25
+ { name: "plan_next", status: "running" }
26
+ ]
27
+ },
28
+ {
29
+ id: "coder",
30
+ name: "Coder",
31
+ role: "developer",
32
+ status: "active",
33
+ model: "Claude Sonnet 4",
34
+ currentAction: "Editing workflow graph routing",
35
+ tokenCount: 12450,
36
+ cost: 0.042,
37
+ elapsedMs: 154e3,
38
+ stepsCompleted: 3,
39
+ stepsTotal: 7,
40
+ toolCalls: [
41
+ { name: "search_web", status: "done" },
42
+ { name: "edit_file", status: "running" }
43
+ ]
44
+ },
45
+ {
46
+ id: "reviewer",
47
+ name: "Reviewer",
48
+ role: "qa",
49
+ status: "idle"
50
+ }
51
+ ];
52
+ var defaultMetrics = [
53
+ { label: "Active Agents", value: 2, trend: "flat" },
54
+ { label: "Tool Calls", value: 12, trend: "up" },
55
+ { label: "Latency", value: "1.2", unit: "s", trend: "down" },
56
+ { label: "Cost", value: "$0.18", trend: "down" }
57
+ ];
58
+ var defaultContext = {
59
+ used: 85e3,
60
+ total: 128e3,
61
+ breakdown: { system: 15, user: 35, assistant: 50 }
62
+ };
63
+ var defaultWorkflow = {
64
+ title: "Execution graph",
65
+ nodes: [
66
+ { id: "plan", label: "Planner", status: "done", type: "llm", duration: 2500 },
67
+ { id: "search", label: "Web Search", status: "done", type: "tool", duration: 1200 },
68
+ { id: "code", label: "Coder", status: "active", type: "llm" },
69
+ { id: "review", label: "Guardrail", status: "pending", type: "conditional" },
70
+ { id: "deploy", label: "Operator", status: "pending", type: "human" }
71
+ ],
72
+ edges: [
73
+ { from: "plan", to: "search", label: "queries" },
74
+ { from: "plan", to: "code" },
75
+ { from: "search", to: "code", label: "context" },
76
+ { from: "code", to: "review" },
77
+ { from: "review", to: "deploy", label: "approved" }
78
+ ]
79
+ };
80
+ function AgentRunOverviewBlock({
81
+ className,
82
+ title = "Runtime overview",
83
+ description = "A compact operator view of team health, context pressure, and workflow state.",
84
+ teamTitle = "Team",
85
+ metricsTitle = "Run metrics",
86
+ contextTitle = "Context window",
87
+ workflow = defaultWorkflow,
88
+ agents = defaultAgents,
89
+ metrics = defaultMetrics,
90
+ context = defaultContext,
91
+ ref,
92
+ ...props
93
+ }) {
94
+ return /* @__PURE__ */ jsxs(
95
+ "section",
96
+ {
97
+ ref,
98
+ className: cn("space-y-4", className),
99
+ ...props,
100
+ children: [
101
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
102
+ /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", children: title }),
103
+ /* @__PURE__ */ jsx(Typography, { variant: "muted", children: description })
104
+ ] }),
105
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 xl:grid-cols-[320px_minmax(0,1fr)]", children: [
106
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
107
+ /* @__PURE__ */ jsxs("div", { className: "surface-solid rounded-lg p-4", children: [
108
+ /* @__PURE__ */ jsx(Heading, { level: 4, size: "title", className: "mb-4", children: teamTitle }),
109
+ /* @__PURE__ */ jsx(AgentTeamPanel, { agents })
110
+ ] }),
111
+ /* @__PURE__ */ jsxs("div", { className: "surface-solid rounded-lg p-4", children: [
112
+ /* @__PURE__ */ jsxs("div", { className: "mb-4 flex items-center justify-between gap-2", children: [
113
+ /* @__PURE__ */ jsx(Heading, { level: 4, size: "title", children: contextTitle }),
114
+ /* @__PURE__ */ jsxs("span", { className: "text-xs text-text-tertiary", children: [
115
+ context.used.toLocaleString(),
116
+ " / ",
117
+ context.total.toLocaleString()
118
+ ] })
119
+ ] }),
120
+ /* @__PURE__ */ jsx(
121
+ ContextMeter,
122
+ {
123
+ used: context.used,
124
+ total: context.total,
125
+ breakdown: context.breakdown,
126
+ size: "expanded"
127
+ }
128
+ )
129
+ ] })
130
+ ] }),
131
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
132
+ /* @__PURE__ */ jsxs("div", { className: "surface-solid rounded-lg p-4", children: [
133
+ /* @__PURE__ */ jsx(Heading, { level: 4, size: "title", className: "mb-4", children: metricsTitle }),
134
+ /* @__PURE__ */ jsx(AgentMetricsCard, { metrics })
135
+ ] }),
136
+ /* @__PURE__ */ jsxs("div", { className: "surface-solid rounded-lg p-4", children: [
137
+ /* @__PURE__ */ jsx(Heading, { level: 4, size: "title", className: "mb-4", children: workflow.title ?? defaultWorkflow.title }),
138
+ /* @__PURE__ */ jsx(WorkflowGraph, { nodes: workflow.nodes, edges: workflow.edges })
139
+ ] })
140
+ ] })
141
+ ] })
142
+ ]
143
+ }
144
+ );
145
+ }
146
+
147
+ export { AgentRunOverviewBlock };
@@ -0,0 +1,66 @@
1
+ import { Typography } from './chunk-N53OMWW2.js';
2
+ import { Progress } from './chunk-JWQXBRE7.js';
3
+ import { Checkbox } from './chunk-756Q7AC5.js';
4
+ import { Card, CardHeader, CardTitle, CardContent } from './chunk-AH6YSYYT.js';
5
+ import { CheckIcon } from './chunk-CXACRCZ4.js';
6
+ import { cn } from './chunk-QYZT24TS.js';
7
+ import * as React from 'react';
8
+ import { useTranslations } from 'next-intl';
9
+ import { jsxs, jsx } from 'react/jsx-runtime';
10
+
11
+ var defaultSteps = [
12
+ { id: "account", title: "Create your account", description: "Sign up and verify your email address.", completed: true },
13
+ { id: "profile", title: "Complete your profile", description: "Add your name, avatar, and bio.", completed: true },
14
+ { id: "team", title: "Invite your team", description: "Add collaborators to your workspace.", completed: false },
15
+ { id: "project", title: "Create first project", description: "Set up your first design system project.", completed: false },
16
+ { id: "deploy", title: "Deploy to production", description: "Publish your component library.", completed: false }
17
+ ];
18
+ function OnboardingBlock({
19
+ steps = defaultSteps,
20
+ title = "Getting started",
21
+ onToggle,
22
+ className
23
+ }) {
24
+ const t = useTranslations("blocks.onboardingBlock");
25
+ const completedCount = React.useMemo(() => steps.filter((s) => s.completed).length, [steps]);
26
+ const progressPercent = steps.length > 0 ? Math.round(completedCount / steps.length * 100) : 0;
27
+ return /* @__PURE__ */ jsxs(Card, { className: cn("w-full max-w-lg", className), children: [
28
+ /* @__PURE__ */ jsxs(CardHeader, { children: [
29
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
30
+ /* @__PURE__ */ jsx(CardTitle, { className: "text-text-primary", children: title }),
31
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-text-tertiary tabular-nums", children: [
32
+ completedCount,
33
+ "/",
34
+ steps.length
35
+ ] })
36
+ ] }),
37
+ /* @__PURE__ */ jsx(Progress, { value: progressPercent, "aria-label": t("onboardingProgress"), className: "mt-4" })
38
+ ] }),
39
+ /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("ul", { className: "space-y-4", children: steps.map((step) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-4", children: [
40
+ /* @__PURE__ */ jsx("div", { className: "pt-0.5", children: step.completed ? /* @__PURE__ */ jsx("div", { className: "flex h-5 w-5 items-center justify-center rounded-full bg-success text-success-foreground", children: /* @__PURE__ */ jsx(CheckIcon, { size: 12 }) }) : /* @__PURE__ */ jsx(
41
+ Checkbox,
42
+ {
43
+ checked: step.completed,
44
+ onCheckedChange: (checked) => onToggle?.(step.id, checked === true),
45
+ "aria-label": step.title
46
+ }
47
+ ) }),
48
+ /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
49
+ /* @__PURE__ */ jsx(
50
+ Typography,
51
+ {
52
+ variant: "small",
53
+ className: cn(
54
+ "font-medium",
55
+ step.completed ? "text-text-tertiary line-through" : "text-text-primary"
56
+ ),
57
+ children: step.title
58
+ }
59
+ ),
60
+ /* @__PURE__ */ jsx(Typography, { variant: "muted", className: "text-xs", children: step.description })
61
+ ] })
62
+ ] }, step.id)) }) })
63
+ ] });
64
+ }
65
+
66
+ export { OnboardingBlock };
@@ -0,0 +1,83 @@
1
+ import { MarketingShellPageKit } from './chunk-Z233ZQZE.js';
2
+ import { Typography } from './chunk-N53OMWW2.js';
3
+ import { FieldSet, Field, FieldLabel, FieldDescription } from './chunk-RX5EUODB.js';
4
+ import { Input } from './chunk-AP3XXYAY.js';
5
+ import { Card, CardHeader, CardTitle, CardContent } from './chunk-AH6YSYYT.js';
6
+ import { Alert, AlertTitle, AlertDescription } from './chunk-GJUR6HT3.js';
7
+ import { Button } from './chunk-7KIDDF3I.js';
8
+ import { cn } from './chunk-QYZT24TS.js';
9
+ import { jsx, jsxs } from 'react/jsx-runtime';
10
+
11
+ function CheckoutPageKit({
12
+ shell,
13
+ state = "default",
14
+ summary,
15
+ billingFields,
16
+ onBillingFieldChange,
17
+ onSubmit,
18
+ onRetry,
19
+ onContinue,
20
+ errorMessage,
21
+ successMessage = "Payment successful. Your subscription is now active.",
22
+ processingMessage = "Processing payment confirmation...",
23
+ className
24
+ }) {
25
+ const isBusy = state === "submitting" || state === "processing";
26
+ return /* @__PURE__ */ jsx(MarketingShellPageKit, { ...shell, children: /* @__PURE__ */ jsxs("section", { className: cn("mx-auto grid w-full max-w-6xl gap-6 px-6 pb-16 lg:grid-cols-[minmax(0,1.1fr)_420px]", className), children: [
27
+ /* @__PURE__ */ jsxs(Card, { children: [
28
+ /* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(CardTitle, { children: "Checkout" }) }),
29
+ /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4", children: [
30
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-text-secondary", children: "Complete billing details and confirm payment with app-owned checkout orchestration." }),
31
+ state === "processing" ? /* @__PURE__ */ jsxs(Alert, { children: [
32
+ /* @__PURE__ */ jsx(AlertTitle, { children: "Processing" }),
33
+ /* @__PURE__ */ jsx(AlertDescription, { children: processingMessage })
34
+ ] }) : null,
35
+ state === "error" ? /* @__PURE__ */ jsxs(Alert, { variant: "destructive", children: [
36
+ /* @__PURE__ */ jsx(AlertTitle, { children: "Payment failed" }),
37
+ /* @__PURE__ */ jsx(AlertDescription, { children: errorMessage ?? "Payment failed. Review billing details and retry." })
38
+ ] }) : null,
39
+ state === "success" ? /* @__PURE__ */ jsxs(Alert, { children: [
40
+ /* @__PURE__ */ jsx(AlertTitle, { children: "Payment complete" }),
41
+ /* @__PURE__ */ jsx(AlertDescription, { children: successMessage })
42
+ ] }) : null,
43
+ /* @__PURE__ */ jsx(FieldSet, { children: billingFields.map((field) => /* @__PURE__ */ jsxs(Field, { children: [
44
+ /* @__PURE__ */ jsxs(FieldLabel, { htmlFor: field.id, children: [
45
+ field.label,
46
+ field.required ? /* @__PURE__ */ jsx("span", { className: "ml-1 text-destructive", children: "*" }) : null
47
+ ] }),
48
+ /* @__PURE__ */ jsx(
49
+ Input,
50
+ {
51
+ id: field.id,
52
+ name: field.id,
53
+ type: field.type ?? "text",
54
+ value: field.value,
55
+ placeholder: field.placeholder,
56
+ required: field.required,
57
+ disabled: isBusy || state === "success",
58
+ onChange: (event) => onBillingFieldChange?.(field.id, event.target.value)
59
+ }
60
+ ),
61
+ field.description ? /* @__PURE__ */ jsx(FieldDescription, { children: field.description }) : null
62
+ ] }, field.id)) }),
63
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap justify-end gap-2", children: [
64
+ state === "error" ? /* @__PURE__ */ jsx(Button, { type: "button", onClick: onRetry, children: "Retry payment" }) : null,
65
+ state === "success" ? /* @__PURE__ */ jsx(Button, { type: "button", onClick: onContinue, children: "Continue" }) : null,
66
+ state !== "error" && state !== "success" ? /* @__PURE__ */ jsx(Button, { type: "button", disabled: isBusy, onClick: onSubmit, children: isBusy ? "Submitting..." : "Submit payment" }) : null
67
+ ] })
68
+ ] })
69
+ ] }),
70
+ /* @__PURE__ */ jsxs(Card, { children: [
71
+ /* @__PURE__ */ jsxs(CardHeader, { children: [
72
+ /* @__PURE__ */ jsx(CardTitle, { children: summary.title }),
73
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-text-secondary", children: summary.amountLabel })
74
+ ] }),
75
+ /* @__PURE__ */ jsx(CardContent, { className: "space-y-3", children: summary.lineItems.map((lineItem) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 text-sm", children: [
76
+ /* @__PURE__ */ jsx("span", { className: "text-text-secondary", children: lineItem.label }),
77
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-text-primary", children: lineItem.value })
78
+ ] }, lineItem.id)) })
79
+ ] })
80
+ ] }) });
81
+ }
82
+
83
+ export { CheckoutPageKit };
@@ -0,0 +1,72 @@
1
+ import { MarketingShellPageKit } from './chunk-Z233ZQZE.js';
2
+ import { SocialProofBlock } from './chunk-C7WHMSF3.js';
3
+ import { StatsMarketingBlock } from './chunk-QIHA7S3A.js';
4
+ import { NewsletterBlock } from './chunk-K7NQ6ZAW.js';
5
+ import { PricingBlock } from './chunk-VNNAL4A6.js';
6
+ import { HeroBlock } from './chunk-GJ557DGH.js';
7
+ import { FAQBlock } from './chunk-NEHCPO53.js';
8
+ import { FeatureBlock } from './chunk-HJ3A2YNO.js';
9
+ import { CallToActionBlock } from './chunk-GJPTPLCQ.js';
10
+ import { cn } from './chunk-QYZT24TS.js';
11
+ import React from 'react';
12
+ import { jsx, jsxs } from 'react/jsx-runtime';
13
+
14
+ var DEFAULT_SECTION_ORDER = [
15
+ "hero",
16
+ "features",
17
+ "proof",
18
+ "pricing-teaser",
19
+ "faq",
20
+ "cta",
21
+ "newsletter"
22
+ ];
23
+ var DEFAULT_FEATURES = {};
24
+ var DEFAULT_PROOF = {};
25
+ var DEFAULT_PRICING_TEASER = {};
26
+ var DEFAULT_FAQ = {};
27
+ var DEFAULT_CTA = {};
28
+ var DEFAULT_NEWSLETTER = {};
29
+ function normalizeSectionOrder(sectionOrder) {
30
+ if (!sectionOrder || sectionOrder.length === 0) {
31
+ return DEFAULT_SECTION_ORDER;
32
+ }
33
+ const seen = /* @__PURE__ */ new Set();
34
+ return sectionOrder.filter((section) => {
35
+ if (seen.has(section)) {
36
+ return false;
37
+ }
38
+ seen.add(section);
39
+ return true;
40
+ });
41
+ }
42
+ function LandingPageKit({
43
+ shell,
44
+ sectionOrder,
45
+ hero,
46
+ features = DEFAULT_FEATURES,
47
+ proof = DEFAULT_PROOF,
48
+ pricingTeaser = DEFAULT_PRICING_TEASER,
49
+ faq = DEFAULT_FAQ,
50
+ cta = DEFAULT_CTA,
51
+ newsletter = DEFAULT_NEWSLETTER,
52
+ className
53
+ }) {
54
+ const orderedSections = normalizeSectionOrder(sectionOrder);
55
+ const hasProof = proof !== null && (proof.logos !== null || proof.testimonials !== null || proof.stats !== null);
56
+ const sectionById = {
57
+ hero: hero === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "landing-section-hero", className: "mx-auto w-full max-w-6xl px-6 pt-4", children: /* @__PURE__ */ jsx(HeroBlock, { ...hero }) }),
58
+ features: features === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "landing-section-features", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(FeatureBlock, { ...features }) }),
59
+ proof: !hasProof ? null : /* @__PURE__ */ jsxs("section", { "data-testid": "landing-section-proof", className: "mx-auto grid w-full max-w-6xl gap-6 px-6 lg:grid-cols-2", children: [
60
+ proof.logos !== null ? /* @__PURE__ */ jsx(SocialProofBlock, { variant: "logo-cloud", ...proof.logos }) : null,
61
+ proof.stats !== null ? /* @__PURE__ */ jsx(StatsMarketingBlock, { ...proof.stats }) : null,
62
+ proof.testimonials !== null ? /* @__PURE__ */ jsx("div", { className: "lg:col-span-2", children: /* @__PURE__ */ jsx(SocialProofBlock, { variant: "testimonials", ...proof.testimonials }) }) : null
63
+ ] }),
64
+ "pricing-teaser": pricingTeaser === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "landing-section-pricing-teaser", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(PricingBlock, { showBillingToggle: false, ...pricingTeaser }) }),
65
+ faq: faq === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "landing-section-faq", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(FAQBlock, { ...faq }) }),
66
+ cta: cta === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "landing-section-cta", className: "mx-auto w-full max-w-6xl px-6", children: /* @__PURE__ */ jsx(CallToActionBlock, { ...cta }) }),
67
+ newsletter: newsletter === null ? null : /* @__PURE__ */ jsx("section", { "data-testid": "landing-section-newsletter", className: "mx-auto w-full max-w-6xl px-6 pb-16", children: /* @__PURE__ */ jsx(NewsletterBlock, { ...newsletter }) })
68
+ };
69
+ return /* @__PURE__ */ jsx(MarketingShellPageKit, { ...shell, children: /* @__PURE__ */ jsx("div", { className: cn("space-y-10 pb-10", className), children: orderedSections.map((sectionId) => /* @__PURE__ */ jsx(React.Fragment, { children: sectionById[sectionId] }, sectionId)) }) });
70
+ }
71
+
72
+ export { LandingPageKit };
@@ -0,0 +1,36 @@
1
+ import { ResetPasswordBlock } from './chunk-X6VXWEDO.js';
2
+ import { cn } from './chunk-QYZT24TS.js';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ function ResetPageKit({
6
+ onSubmit,
7
+ onBackToLogin,
8
+ title,
9
+ description,
10
+ errorMessage,
11
+ className,
12
+ cardClassName
13
+ }) {
14
+ 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__ */ jsxs("div", { className: "mx-auto flex w-full max-w-5xl flex-col items-center justify-center gap-4", children: [
15
+ errorMessage ? /* @__PURE__ */ jsx(
16
+ "div",
17
+ {
18
+ role: "alert",
19
+ className: "w-full max-w-sm rounded-md border border-destructive/40 bg-destructive/10 px-4 py-3 text-sm text-destructive",
20
+ children: errorMessage
21
+ }
22
+ ) : null,
23
+ /* @__PURE__ */ jsx(
24
+ ResetPasswordBlock,
25
+ {
26
+ className: cn("w-full", cardClassName),
27
+ onSubmit,
28
+ onBackToLogin,
29
+ title,
30
+ description
31
+ }
32
+ )
33
+ ] }) });
34
+ }
35
+
36
+ export { ResetPageKit };
@@ -0,0 +1,54 @@
1
+ import { BarChart } from './chunk-UWHKZX4Y.js';
2
+ import { ScrollFadeIn } from './chunk-I23DDSU7.js';
3
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent } from './chunk-AH6YSYYT.js';
4
+ import { SmartphoneIcon } from './chunk-HNY45VUQ.js';
5
+ import { MonitorIcon } from './chunk-R5XP45PD.js';
6
+ import { cn } from './chunk-QYZT24TS.js';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ var defaultData = [
10
+ { month: "January", desktop: 186, mobile: 80 },
11
+ { month: "February", desktop: 305, mobile: 200 },
12
+ { month: "March", desktop: 237, mobile: 120 },
13
+ { month: "April", desktop: 73, mobile: 190 },
14
+ { month: "May", desktop: 209, mobile: 130 },
15
+ { month: "June", desktop: 214, mobile: 140 }
16
+ ];
17
+ var defaultConfig = {
18
+ desktop: {
19
+ label: "Desktop",
20
+ color: "rgb(var(--chart-1))",
21
+ icon: ({ ...props }) => /* @__PURE__ */ jsx(MonitorIcon, { size: 16, ...props })
22
+ },
23
+ mobile: {
24
+ label: "Mobile",
25
+ color: "rgb(var(--chart-2))",
26
+ icon: ({ ...props }) => /* @__PURE__ */ jsx(SmartphoneIcon, { size: 16, ...props })
27
+ }
28
+ };
29
+ function ChartBlock({
30
+ data = defaultData,
31
+ config = defaultConfig,
32
+ title = "Analytics",
33
+ description = "January - June 2024",
34
+ className
35
+ }) {
36
+ return /* @__PURE__ */ jsx(ScrollFadeIn, { children: /* @__PURE__ */ jsxs(Card, { className: cn(className), children: [
37
+ /* @__PURE__ */ jsxs(CardHeader, { children: [
38
+ /* @__PURE__ */ jsx(CardTitle, { children: title }),
39
+ /* @__PURE__ */ jsx(CardDescription, { children: description })
40
+ ] }),
41
+ /* @__PURE__ */ jsx(CardContent, { children: data.length > 0 && /* @__PURE__ */ jsx(
42
+ BarChart,
43
+ {
44
+ data,
45
+ config,
46
+ indexKey: "month",
47
+ bars: ["desktop", "mobile"],
48
+ className: "min-h-[200px] w-full"
49
+ }
50
+ ) })
51
+ ] }) });
52
+ }
53
+
54
+ export { ChartBlock };