@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.
- package/.agents/skills/seed/SKILL.md +24 -14
- package/.agents/skills/seed/contract.md +19 -6
- package/.agents/skills/seed/recipes/agency-home.md +5 -5
- package/.agents/skills/seed/recipes/auth.md +3 -3
- package/.agents/skills/seed/recipes/blog-content.md +2 -2
- package/.agents/skills/seed/recipes/company-about.md +3 -3
- package/.agents/skills/seed/recipes/company-contact.md +3 -3
- package/.agents/skills/seed/recipes/digital-workers.md +3 -3
- package/.agents/skills/seed/recipes/marketing-landing.md +8 -8
- package/.agents/skills/seed/recipes/marketing-shell.md +4 -4
- package/.agents/skills/seed/recipes/navigation-shell.md +3 -2
- package/.agents/skills/seed/recipes/pricing.md +4 -4
- package/.agents/skills/seed/recipes/service-detail.md +3 -3
- package/.agents/skills/seed/references/blocks.md +5 -5
- package/.agents/skills/seed/references/components.md +2 -2
- package/.agents/skills/seed/references/nextjs.md +2 -2
- package/README.md +3 -3
- package/contracts/consumer-intent-map.json +1 -2
- package/contracts/release-governance-baseline.json +3 -37
- package/dist/catalog/catalog.d.ts +2220 -0
- package/dist/catalog/catalog.js +1913 -0
- package/dist/catalog/components.d.ts +201 -0
- package/dist/catalog/components.js +407 -0
- package/dist/catalog/types.d.ts +4 -0
- package/dist/catalog/types.js +1 -0
- package/dist/chunk-224KPIOG.js +60 -0
- package/dist/chunk-25BOZMXA.js +169 -0
- package/dist/chunk-32OLQ7FC.js +130 -0
- package/dist/chunk-3JJBJ4VR.js +47 -0
- package/dist/chunk-3U56FXYC.js +30 -0
- package/dist/chunk-4MWKE6F5.js +86 -0
- package/dist/chunk-6HGSU24S.js +94 -0
- package/dist/chunk-7IADIXDV.js +168 -0
- package/dist/chunk-7NS3VFD7.js +86 -0
- package/dist/chunk-ALA6OM7K.js +134 -0
- package/dist/chunk-AN5TW4AL.js +50 -0
- package/dist/chunk-AWZFQQGN.js +167 -0
- package/dist/chunk-BRCBJ3S4.js +42 -0
- package/dist/chunk-BRICSLHJ.js +30 -0
- package/dist/chunk-BYEHHZZN.js +115 -0
- package/dist/chunk-C33GUEDY.js +149 -0
- package/dist/chunk-CUDMDYKE.js +150 -0
- package/dist/chunk-CVTMWSNS.js +145 -0
- package/dist/chunk-DEZXWNYF.js +165 -0
- package/dist/chunk-DNJEVMDY.js +40 -0
- package/dist/chunk-DNJOBML6.js +66 -0
- package/dist/chunk-FTGFOK6T.js +69 -0
- package/dist/{chunk-7A2RXKGH.js → chunk-GJ557DGH.js} +1 -1
- package/dist/chunk-HFBJ6L6O.js +104 -0
- package/dist/chunk-HPTHS7SX.js +52 -0
- package/dist/chunk-K4U67BVG.js +175 -0
- package/dist/chunk-KNR3WB5C.js +147 -0
- package/dist/chunk-KQ7ZC6EM.js +66 -0
- package/dist/chunk-LGW7FVG5.js +83 -0
- package/dist/chunk-LK2L3C7D.js +72 -0
- package/dist/chunk-LP6ZZYOQ.js +36 -0
- package/dist/chunk-LV4P7WVM.js +54 -0
- package/dist/chunk-MGSGCARB.js +164 -0
- package/dist/chunk-N3YFYMNZ.js +73 -0
- package/dist/{chunk-DSMGCFMJ.js → chunk-POFFOUQW.js} +2 -5
- package/dist/chunk-Q5IYBNA7.js +56 -0
- package/dist/chunk-QJCE7NZF.js +85 -0
- package/dist/chunk-QW5II6YK.js +96 -0
- package/dist/chunk-RMGDDOCD.js +138 -0
- package/dist/chunk-RNCX4JIE.js +70 -0
- package/dist/chunk-RWCL5OPX.js +112 -0
- package/dist/chunk-S5OY2B63.js +28 -0
- package/dist/chunk-SIQNG72C.js +257 -0
- package/dist/chunk-SP7NIZFP.js +117 -0
- package/dist/chunk-SWRJWMGG.js +30 -0
- package/dist/chunk-TCQIJ3DO.js +85 -0
- package/dist/chunk-TPJ6JJ2F.js +290 -0
- package/dist/chunk-UR43ANYS.js +159 -0
- package/dist/chunk-VRGPG2YN.js +79 -0
- package/dist/chunk-WSBLCWY7.js +126 -0
- package/dist/chunk-XKKFSFYO.js +93 -0
- package/dist/chunk-XO7TBM47.js +32 -0
- package/dist/chunk-YDYDGG5K.js +132 -0
- package/dist/chunk-YMJOUYMT.js +171 -0
- package/dist/chunk-Z2WION42.js +32 -0
- package/dist/chunk-ZFKSVEYW.js +35 -0
- package/dist/components/blocks/AgentProfileGridBlock.js +8 -86
- package/dist/components/blocks/AgentRunOverviewBlock.js +8 -147
- package/dist/components/blocks/AgentWorkbenchBlock.js +15 -257
- package/dist/components/blocks/AudioVisualizerBlock.js +2 -50
- package/dist/components/blocks/AuthLayout.js +9 -73
- package/dist/components/blocks/BannerBlock.js +8 -66
- package/dist/components/blocks/BarChartBlock.js +5 -47
- package/dist/components/blocks/ChartBlock.js +7 -54
- package/dist/components/blocks/ChartCollectionBlock.js +11 -171
- package/dist/components/blocks/ChatLayout.js +12 -126
- package/dist/components/blocks/CreateBlock.js +9 -104
- package/dist/components/blocks/DataGridBlock.js +9 -117
- package/dist/components/blocks/DirectoryBlock.js +12 -85
- package/dist/components/blocks/FeatureGridBlock.js +6 -56
- package/dist/components/blocks/GalleryBlock.js +6 -69
- package/dist/components/blocks/HeroBlock.js +2 -2
- package/dist/components/blocks/HeroSectionBlock.js +10 -134
- package/dist/components/blocks/IntegrationsBlock.js +13 -94
- package/dist/components/blocks/InteractiveAreaChartBlock.js +5 -290
- package/dist/components/blocks/KanbanDemoBlock.js +8 -145
- package/dist/components/blocks/LogoCloud.js +4 -35
- package/dist/components/blocks/NavUser.js +5 -85
- package/dist/components/blocks/NotFoundBlock.js +8 -32
- package/dist/components/blocks/OnboardingBlock.js +7 -66
- package/dist/components/blocks/SettingsLayout.js +13 -86
- package/dist/components/blocks/SignUpBlock.js +8 -168
- package/dist/components/blocks/SolutionShowcaseBlock.js +11 -112
- package/dist/components/blocks/StatsBlock.js +6 -60
- package/dist/components/blocks/UsageDonutBlock.js +5 -79
- package/dist/components/blocks/WizardBlock.js +12 -93
- package/dist/components/blocks/user/InviteUserModal.js +10 -132
- package/dist/components/page-kits/AccountLockedPageKit.js +3 -40
- package/dist/components/page-kits/AgentsChatPageKit.js +11 -159
- package/dist/components/page-kits/AnalyticsPageKit.js +12 -150
- package/dist/components/page-kits/BlogContentPageKit.js +12 -167
- package/dist/components/page-kits/CheckoutPageKit.js +9 -83
- package/dist/components/page-kits/CompanySuitePageKit.js +9 -96
- package/dist/components/page-kits/DashboardPageKit.js +11 -149
- package/dist/components/page-kits/ErrorPageKit.js +5 -52
- package/dist/components/page-kits/KanbanBoardPageKit.js +7 -169
- package/dist/components/page-kits/LandingPageKit.js +12 -73
- package/dist/components/page-kits/LoginPageKit.js +3 -32
- package/dist/components/page-kits/OnboardingPageKit.js +6 -115
- package/dist/components/page-kits/PricingPageKit.js +12 -138
- package/dist/components/page-kits/ProfileSettingsPageKit.js +10 -164
- package/dist/components/page-kits/RecoveryPageKit.js +3 -42
- package/dist/components/page-kits/ResetPageKit.js +3 -36
- package/dist/components/page-kits/ServiceSuitePageKit.js +11 -176
- package/dist/components/page-kits/SignupPageKit.js +3 -30
- package/dist/components/page-kits/SuccessPageKit.js +4 -30
- package/dist/components/page-kits/TeamSettingsPageKit.js +9 -165
- package/dist/components/page-kits/TwoFactorPageKit.js +4 -28
- package/dist/components/page-kits/VerifyEmailPageKit.js +4 -30
- package/dist/components/page-kits/VoiceAgentsPageKit.js +13 -130
- package/dist/components/ui/AvatarUpload.js +1 -1
- package/dist/components/ui/CheckoutForm.js +5 -70
- package/dist/components/ui/MouseEffect.js +1 -1
- package/eslint-rules/nadicode/config.js +2 -0
- package/eslint-rules/nadicode/data/catalog-names.json +93 -0
- package/eslint-rules/nadicode/index.js +4 -0
- package/eslint-rules/nadicode/rules/__tests__/require-catalog-component.test.js +77 -0
- package/eslint-rules/nadicode/rules/__tests__/require-catalog-import.test.js +111 -0
- package/eslint-rules/nadicode/rules/require-catalog-component.js +79 -0
- package/eslint-rules/nadicode/rules/require-catalog-import.js +59 -0
- package/package.json +15 -358
- package/contracts/block-props-schemas.json +0 -2186
- package/contracts/component-props-schemas.json +0 -8322
- package/contracts/consumer-contract.json +0 -178
- package/contracts/page-kit-props-schemas.json +0 -1894
- package/contracts/public-surface-registry.json +0 -5822
- package/contracts/public-surface-registry.schema.json +0 -219
- package/contracts/spec-manifest.json +0 -46
- 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 };
|