@vadimcomanescu/nadicode-design-system 2.0.8 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/seed/SKILL.md +19 -10
- package/.agents/skills/seed/contract.md +9 -2
- 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-7XLZCXUL.js +175 -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-HFBJ6L6O.js +104 -0
- package/dist/chunk-HPTHS7SX.js +52 -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-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-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-TUJZMJXW.js +72 -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/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 +11 -72
- 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 +10 -175
- 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/CheckoutForm.js +5 -70
- package/eslint-rules/nadicode/config.js +1 -1
- package/eslint-rules/nadicode/data/catalog-names.json +93 -0
- package/eslint-rules/nadicode/index.js +2 -2
- package/eslint-rules/nadicode/rules/__tests__/require-catalog-component.test.js +77 -0
- package/eslint-rules/nadicode/rules/require-catalog-component.js +79 -0
- package/package.json +18 -25
- 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 -6162
- package/contracts/public-surface-registry.schema.json +0 -227
- package/contracts/spec-manifest.json +0 -46
- package/dist/catalog.json +0 -5221
- package/eslint-rules/nadicode/rules/no-forbidden-page-kit-import.js +0 -99
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
export { ServiceSuitePageKit } from '../../chunk-7XLZCXUL.js';
|
|
2
|
+
import '../../chunk-Z233ZQZE.js';
|
|
3
|
+
import '../../chunk-VBZQ4DBE.js';
|
|
4
|
+
import '../../chunk-FV2G6SAF.js';
|
|
5
|
+
import '../../chunk-HZERHGBT.js';
|
|
6
|
+
import '../../chunk-7A2RXKGH.js';
|
|
6
7
|
import '../../chunk-QQOWC53X.js';
|
|
7
8
|
import '../../chunk-WOYBVPXK.js';
|
|
8
|
-
import
|
|
9
|
-
import
|
|
9
|
+
import '../../chunk-NEHCPO53.js';
|
|
10
|
+
import '../../chunk-HJ3A2YNO.js';
|
|
10
11
|
import '../../chunk-AYWL4IYM.js';
|
|
11
|
-
import
|
|
12
|
+
import '../../chunk-GJPTPLCQ.js';
|
|
12
13
|
import '../../chunk-G5EO22OR.js';
|
|
13
14
|
import '../../chunk-OHX2LFAH.js';
|
|
14
15
|
import '../../chunk-SGI25ZJ6.js';
|
|
@@ -152,170 +153,4 @@ import '../../chunk-S4JAHKOP.js';
|
|
|
152
153
|
import '../../chunk-TV4RSQH4.js';
|
|
153
154
|
import '../../chunk-HJBXUXTD.js';
|
|
154
155
|
import '../../chunk-ASKFAYYR.js';
|
|
155
|
-
import
|
|
156
|
-
import React from 'react';
|
|
157
|
-
import { jsx } from 'react/jsx-runtime';
|
|
158
|
-
|
|
159
|
-
var DEFAULT_SECTION_ORDER = [
|
|
160
|
-
"hero",
|
|
161
|
-
"features",
|
|
162
|
-
"process",
|
|
163
|
-
"team",
|
|
164
|
-
"testimonials",
|
|
165
|
-
"faq",
|
|
166
|
-
"cta"
|
|
167
|
-
];
|
|
168
|
-
var DEFAULTS_BY_VARIANT = {
|
|
169
|
-
"agency-home": {
|
|
170
|
-
hero: {
|
|
171
|
-
headline: "A service partner for design and engineering velocity.",
|
|
172
|
-
subheadline: "Launch polished digital experiences with a repeatable service system.",
|
|
173
|
-
primaryAction: { label: "Talk to sales" }
|
|
174
|
-
},
|
|
175
|
-
features: {
|
|
176
|
-
features: [
|
|
177
|
-
{
|
|
178
|
-
title: "Cross-functional squads",
|
|
179
|
-
description: "Design, engineering, and QA operating in one weekly cadence.",
|
|
180
|
-
icon: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\u25CF" }),
|
|
181
|
-
bullets: ["Shared backlog", "Contract-first delivery", "Continuous validation"],
|
|
182
|
-
buttonLabel: "Learn more"
|
|
183
|
-
}
|
|
184
|
-
]
|
|
185
|
-
},
|
|
186
|
-
process: {
|
|
187
|
-
title: "Service process",
|
|
188
|
-
steps: [
|
|
189
|
-
{ title: "Discover", description: "Map goals, constraints, and target outcomes." },
|
|
190
|
-
{ title: "Build", description: "Ship slices weekly with measurable acceptance." },
|
|
191
|
-
{ title: "Scale", description: "Expand coverage using reusable contracts and kits." }
|
|
192
|
-
]
|
|
193
|
-
},
|
|
194
|
-
team: null,
|
|
195
|
-
testimonials: {},
|
|
196
|
-
faq: {},
|
|
197
|
-
cta: {
|
|
198
|
-
title: "Need an execution partner?",
|
|
199
|
-
description: "Book a planning session and get a route-level rollout plan.",
|
|
200
|
-
primaryAction: { label: "Book planning", href: "/contact" }
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
"digital-workers": {
|
|
204
|
-
hero: {
|
|
205
|
-
headline: "Digital workers for planning, delivery, and quality.",
|
|
206
|
-
subheadline: "Deploy role-based workers that execute work while humans stay in control.",
|
|
207
|
-
primaryAction: { label: "Request demo" }
|
|
208
|
-
},
|
|
209
|
-
features: {
|
|
210
|
-
features: [
|
|
211
|
-
{
|
|
212
|
-
title: "Role-specialized workers",
|
|
213
|
-
description: "Assign planner, coder, and QA workers per workflow.",
|
|
214
|
-
icon: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\u25CD" }),
|
|
215
|
-
bullets: ["Shared context", "Traceable decisions", "Approval checkpoints"],
|
|
216
|
-
buttonLabel: "Explore workers"
|
|
217
|
-
}
|
|
218
|
-
]
|
|
219
|
-
},
|
|
220
|
-
process: {
|
|
221
|
-
title: "Delivery process",
|
|
222
|
-
steps: [
|
|
223
|
-
{ title: "Select workers", description: "Pick the worker stack for each objective." },
|
|
224
|
-
{ title: "Run supervised", description: "Review outputs before execution-critical actions." },
|
|
225
|
-
{ title: "Promote safely", description: "Ship with tests and release gates enforced." }
|
|
226
|
-
]
|
|
227
|
-
},
|
|
228
|
-
team: {
|
|
229
|
-
title: "Worker team"
|
|
230
|
-
},
|
|
231
|
-
testimonials: {},
|
|
232
|
-
faq: {},
|
|
233
|
-
cta: {
|
|
234
|
-
title: "Design your worker stack",
|
|
235
|
-
description: "Start with a pilot route and scale based on measured outcomes.",
|
|
236
|
-
primaryAction: { label: "Start pilot", href: "/contact" }
|
|
237
|
-
}
|
|
238
|
-
},
|
|
239
|
-
"service-detail": {
|
|
240
|
-
hero: {
|
|
241
|
-
headline: "A focused service track for your highest-impact route.",
|
|
242
|
-
subheadline: "Bring one route from concept to production with a contract-first approach.",
|
|
243
|
-
primaryAction: { label: "Request proposal" }
|
|
244
|
-
},
|
|
245
|
-
features: {
|
|
246
|
-
features: [
|
|
247
|
-
{
|
|
248
|
-
title: "Outcome-led scope",
|
|
249
|
-
description: "Every section is mapped to a measurable business outcome.",
|
|
250
|
-
icon: /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\u25C9" }),
|
|
251
|
-
bullets: ["Delivery milestones", "Weekly demos", "Launch checklist"],
|
|
252
|
-
buttonLabel: "See deliverables"
|
|
253
|
-
}
|
|
254
|
-
]
|
|
255
|
-
},
|
|
256
|
-
process: {
|
|
257
|
-
title: "Implementation steps",
|
|
258
|
-
steps: [
|
|
259
|
-
{ title: "Audit", description: "Review current route structure and conversion friction." },
|
|
260
|
-
{ title: "Design", description: "Define section contracts and interaction states." },
|
|
261
|
-
{ title: "Implement", description: "Ship validated route kit with test coverage." }
|
|
262
|
-
]
|
|
263
|
-
},
|
|
264
|
-
team: null,
|
|
265
|
-
testimonials: {},
|
|
266
|
-
faq: {},
|
|
267
|
-
cta: {
|
|
268
|
-
title: "Need this service for your route?",
|
|
269
|
-
description: "Share your current page and goals, we will map a rollout plan.",
|
|
270
|
-
primaryAction: { label: "Contact team", href: "/contact" }
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
function normalizeSectionOrder(sectionOrder) {
|
|
275
|
-
if (!sectionOrder || sectionOrder.length === 0) {
|
|
276
|
-
return DEFAULT_SECTION_ORDER;
|
|
277
|
-
}
|
|
278
|
-
const seen = /* @__PURE__ */ new Set();
|
|
279
|
-
return sectionOrder.filter((sectionId) => {
|
|
280
|
-
if (seen.has(sectionId)) {
|
|
281
|
-
return false;
|
|
282
|
-
}
|
|
283
|
-
seen.add(sectionId);
|
|
284
|
-
return true;
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
function ServiceSuitePageKit({
|
|
288
|
-
shell,
|
|
289
|
-
variant = "agency-home",
|
|
290
|
-
sectionOrder,
|
|
291
|
-
hero,
|
|
292
|
-
features,
|
|
293
|
-
process,
|
|
294
|
-
team,
|
|
295
|
-
testimonials,
|
|
296
|
-
faq,
|
|
297
|
-
cta,
|
|
298
|
-
className
|
|
299
|
-
}) {
|
|
300
|
-
const defaults = DEFAULTS_BY_VARIANT[variant];
|
|
301
|
-
const resolvedHero = hero ?? defaults.hero;
|
|
302
|
-
const resolvedFeatures = features === void 0 ? defaults.features : features;
|
|
303
|
-
const resolvedProcess = process === void 0 ? defaults.process : process;
|
|
304
|
-
const resolvedTeam = team === void 0 ? defaults.team : team;
|
|
305
|
-
const resolvedTestimonials = testimonials === void 0 ? defaults.testimonials : testimonials;
|
|
306
|
-
const resolvedFaq = faq === void 0 ? defaults.faq : faq;
|
|
307
|
-
const resolvedCta = cta === void 0 ? defaults.cta : cta;
|
|
308
|
-
const orderedSections = normalizeSectionOrder(sectionOrder);
|
|
309
|
-
const sectionById = {
|
|
310
|
-
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 }) }),
|
|
311
|
-
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 }) }),
|
|
312
|
-
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 }) }),
|
|
313
|
-
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 }) }),
|
|
314
|
-
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 }) }),
|
|
315
|
-
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 }) }),
|
|
316
|
-
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 }) })
|
|
317
|
-
};
|
|
318
|
-
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)) }) });
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
export { ServiceSuitePageKit };
|
|
156
|
+
import '../../chunk-QYZT24TS.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
export { SignupPageKit } from '../../chunk-BRICSLHJ.js';
|
|
2
|
+
import '../../chunk-RGE5OQMZ.js';
|
|
2
3
|
import '../../chunk-DQPK2XRL.js';
|
|
3
4
|
import '../../chunk-WI547C47.js';
|
|
4
5
|
import '../../chunk-RX5EUODB.js';
|
|
@@ -10,32 +11,4 @@ import '../../chunk-7KIDDF3I.js';
|
|
|
10
11
|
import '../../chunk-PD2YEH3H.js';
|
|
11
12
|
import '../../chunk-CRY67BIF.js';
|
|
12
13
|
import '../../chunk-HJC6U46F.js';
|
|
13
|
-
import
|
|
14
|
-
import { jsx } from 'react/jsx-runtime';
|
|
15
|
-
|
|
16
|
-
function SignupPageKit({
|
|
17
|
-
action,
|
|
18
|
-
googleAction,
|
|
19
|
-
error,
|
|
20
|
-
showSocial = true,
|
|
21
|
-
labels,
|
|
22
|
-
signInHref,
|
|
23
|
-
className,
|
|
24
|
-
cardClassName
|
|
25
|
-
}) {
|
|
26
|
-
return /* @__PURE__ */ jsx("section", { className: cn("min-h-dvh w-full bg-background px-4 py-12 md:px-8 md:py-20", className), children: /* @__PURE__ */ jsx("div", { className: "mx-auto flex w-full max-w-5xl items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
27
|
-
LoginBlock,
|
|
28
|
-
{
|
|
29
|
-
className: cn("w-full", cardClassName),
|
|
30
|
-
type: "signup",
|
|
31
|
-
action,
|
|
32
|
-
googleAction,
|
|
33
|
-
error,
|
|
34
|
-
showSocial,
|
|
35
|
-
labels,
|
|
36
|
-
signInHref
|
|
37
|
-
}
|
|
38
|
-
) }) });
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export { SignupPageKit };
|
|
14
|
+
import '../../chunk-QYZT24TS.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
export { SuccessPageKit } from '../../chunk-3U56FXYC.js';
|
|
2
|
+
import '../../chunk-LCKLZ4XK.js';
|
|
2
3
|
import '../../chunk-AH6YSYYT.js';
|
|
3
4
|
import '../../chunk-7KIDDF3I.js';
|
|
4
5
|
import '../../chunk-PD2YEH3H.js';
|
|
@@ -72,7 +73,7 @@ import '../../chunk-RF6ECFS5.js';
|
|
|
72
73
|
import '../../chunk-KYZT3RNW.js';
|
|
73
74
|
import '../../chunk-UEG2LI7Z.js';
|
|
74
75
|
import '../../chunk-CI7GPGCJ.js';
|
|
75
|
-
import
|
|
76
|
+
import '../../chunk-226EBOTK.js';
|
|
76
77
|
import '../../chunk-74RKVIBV.js';
|
|
77
78
|
import '../../chunk-V6WNRZT3.js';
|
|
78
79
|
import '../../chunk-JBK2LA6U.js';
|
|
@@ -116,31 +117,4 @@ import '../../chunk-NURPUVUV.js';
|
|
|
116
117
|
import '../../chunk-TV4RSQH4.js';
|
|
117
118
|
import '../../chunk-HJBXUXTD.js';
|
|
118
119
|
import '../../chunk-ASKFAYYR.js';
|
|
119
|
-
import
|
|
120
|
-
import { jsx } from 'react/jsx-runtime';
|
|
121
|
-
|
|
122
|
-
function SuccessPageKit({
|
|
123
|
-
icon = /* @__PURE__ */ jsx(CheckCircleIcon, { size: 32, className: "text-success" }),
|
|
124
|
-
title = "Success",
|
|
125
|
-
description = "Your request completed successfully.",
|
|
126
|
-
buttonText = "Continue",
|
|
127
|
-
onContinue,
|
|
128
|
-
autoRedirectSeconds,
|
|
129
|
-
className,
|
|
130
|
-
cardClassName
|
|
131
|
-
}) {
|
|
132
|
-
return /* @__PURE__ */ jsx("section", { className: cn("min-h-dvh w-full bg-background px-4 py-12 md:px-8 md:py-20", className), children: /* @__PURE__ */ jsx("div", { className: "mx-auto flex w-full max-w-5xl items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
133
|
-
AuthSuccessBlock,
|
|
134
|
-
{
|
|
135
|
-
className: cn("w-full", cardClassName),
|
|
136
|
-
icon,
|
|
137
|
-
title,
|
|
138
|
-
description,
|
|
139
|
-
buttonText,
|
|
140
|
-
onContinue,
|
|
141
|
-
autoRedirectSeconds
|
|
142
|
-
}
|
|
143
|
-
) }) });
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
export { SuccessPageKit };
|
|
120
|
+
import '../../chunk-QYZT24TS.js';
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
export { TeamSettingsPageKit } from '../../chunk-DEZXWNYF.js';
|
|
2
|
+
import '../../chunk-OJ7OO3QB.js';
|
|
2
3
|
import '../../chunk-ZKLB5N3Q.js';
|
|
3
|
-
import
|
|
4
|
+
import '../../chunk-N53OMWW2.js';
|
|
4
5
|
import '../../chunk-J2DCQDXO.js';
|
|
5
6
|
import '../../chunk-C4SNHMYC.js';
|
|
6
7
|
import '../../chunk-B5QL76GA.js';
|
|
7
8
|
import '../../chunk-HOWTYZL5.js';
|
|
8
|
-
import
|
|
9
|
+
import '../../chunk-OHCQPI3W.js';
|
|
9
10
|
import '../../chunk-2BADJLMV.js';
|
|
10
11
|
import '../../chunk-WI547C47.js';
|
|
11
12
|
import '../../chunk-PXDHNGTG.js';
|
|
12
|
-
import
|
|
13
|
+
import '../../chunk-CQEUNASC.js';
|
|
13
14
|
import '../../chunk-CUZJIDU7.js';
|
|
14
15
|
import '../../chunk-AP3XXYAY.js';
|
|
15
16
|
import '../../chunk-LIBXYD5Q.js';
|
|
@@ -18,8 +19,8 @@ import '../../chunk-55HD4L6G.js';
|
|
|
18
19
|
import '../../chunk-MJ4CB6ZL.js';
|
|
19
20
|
import '../../chunk-35EX5FP5.js';
|
|
20
21
|
import '../../chunk-AH6YSYYT.js';
|
|
21
|
-
import
|
|
22
|
-
import
|
|
22
|
+
import '../../chunk-NAAU5IWU.js';
|
|
23
|
+
import '../../chunk-7KIDDF3I.js';
|
|
23
24
|
import '../../chunk-6FOHUNXR.js';
|
|
24
25
|
import '../../chunk-PD2YEH3H.js';
|
|
25
26
|
import '../../chunk-CRY67BIF.js';
|
|
@@ -82,7 +83,7 @@ import '../../chunk-WA45EC4Y.js';
|
|
|
82
83
|
import '../../chunk-2MOEOEOI.js';
|
|
83
84
|
import '../../chunk-5LCXASRW.js';
|
|
84
85
|
import '../../chunk-2ZJVU7NV.js';
|
|
85
|
-
import
|
|
86
|
+
import '../../chunk-5ESF6N36.js';
|
|
86
87
|
import '../../chunk-RBPLOM3A.js';
|
|
87
88
|
import '../../chunk-6BAV4TZ5.js';
|
|
88
89
|
import '../../chunk-SW6QPJM4.js';
|
|
@@ -133,165 +134,8 @@ import '../../chunk-UHXGBV5N.js';
|
|
|
133
134
|
import '../../chunk-UIUMTURU.js';
|
|
134
135
|
import '../../chunk-PRUXIDBD.js';
|
|
135
136
|
import '../../chunk-NURPUVUV.js';
|
|
136
|
-
import
|
|
137
|
+
import '../../chunk-S4JAHKOP.js';
|
|
137
138
|
import '../../chunk-TV4RSQH4.js';
|
|
138
139
|
import '../../chunk-HJBXUXTD.js';
|
|
139
140
|
import '../../chunk-ASKFAYYR.js';
|
|
140
141
|
import '../../chunk-QYZT24TS.js';
|
|
141
|
-
import { useMemo } from 'react';
|
|
142
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
143
|
-
|
|
144
|
-
var EMPTY_MEMBER_ACTIONS = [];
|
|
145
|
-
function statusBadge(status) {
|
|
146
|
-
switch (status) {
|
|
147
|
-
case "active":
|
|
148
|
-
return /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "border-success/20 bg-success/10 text-success", children: "Active" });
|
|
149
|
-
case "invited":
|
|
150
|
-
return /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "border-warning/20 bg-warning/10 text-warning", children: "Invited" });
|
|
151
|
-
case "suspended":
|
|
152
|
-
return /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "border-destructive/20 bg-destructive/10 text-destructive", children: "Suspended" });
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
function mapState(state) {
|
|
156
|
-
switch (state) {
|
|
157
|
-
case void 0:
|
|
158
|
-
return void 0;
|
|
159
|
-
case "invited-member":
|
|
160
|
-
case "active-member":
|
|
161
|
-
return "selected-row";
|
|
162
|
-
case "saving":
|
|
163
|
-
return "loading";
|
|
164
|
-
case "fatal-error":
|
|
165
|
-
return "error";
|
|
166
|
-
default:
|
|
167
|
-
return state;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
function TeamSettingsPageKit({
|
|
171
|
-
shell,
|
|
172
|
-
state,
|
|
173
|
-
members,
|
|
174
|
-
seatSummary,
|
|
175
|
-
search,
|
|
176
|
-
inviteAction,
|
|
177
|
-
memberActions = EMPTY_MEMBER_ACTIONS,
|
|
178
|
-
onMemberAction,
|
|
179
|
-
selectedMemberId = null,
|
|
180
|
-
onSelectedMemberChange,
|
|
181
|
-
errorMessage,
|
|
182
|
-
className
|
|
183
|
-
}) {
|
|
184
|
-
const membersById = useMemo(
|
|
185
|
-
() => new Map(members.map((member) => [member.id, member])),
|
|
186
|
-
[members]
|
|
187
|
-
);
|
|
188
|
-
const mappedRows = useMemo(
|
|
189
|
-
() => members.map((member) => ({
|
|
190
|
-
id: member.id,
|
|
191
|
-
summaryLabel: member.name,
|
|
192
|
-
cells: {
|
|
193
|
-
member: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
194
|
-
/* @__PURE__ */ jsxs(Avatar, { className: "h-9 w-9 border border-border-subtle", children: [
|
|
195
|
-
member.avatarUrl ? /* @__PURE__ */ jsx(AvatarImage, { src: member.avatarUrl, alt: member.name }) : null,
|
|
196
|
-
/* @__PURE__ */ jsx(AvatarFallback, { children: member.avatarFallback ?? member.name.slice(0, 1).toUpperCase() })
|
|
197
|
-
] }),
|
|
198
|
-
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
199
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-sm font-medium text-text-primary", children: member.name }),
|
|
200
|
-
/* @__PURE__ */ jsx("p", { className: "truncate text-xs text-text-secondary", children: member.email })
|
|
201
|
-
] })
|
|
202
|
-
] }),
|
|
203
|
-
role: /* @__PURE__ */ jsx(RoleBadge, { role: member.role }),
|
|
204
|
-
status: statusBadge(member.status),
|
|
205
|
-
joined: member.joinedLabel ?? "-",
|
|
206
|
-
actions: /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
207
|
-
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", "aria-label": `Actions for ${member.name}`, children: /* @__PURE__ */ jsx(EllipsisIcon, { size: 16 }) }) }),
|
|
208
|
-
/* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", children: memberActions.map((action) => /* @__PURE__ */ jsx(
|
|
209
|
-
DropdownMenuItem,
|
|
210
|
-
{
|
|
211
|
-
className: action.tone === "destructive" ? "text-destructive focus:text-destructive" : void 0,
|
|
212
|
-
onClick: () => onMemberAction?.(member.id, action.id),
|
|
213
|
-
children: action.label
|
|
214
|
-
},
|
|
215
|
-
action.id
|
|
216
|
-
)) })
|
|
217
|
-
] })
|
|
218
|
-
}
|
|
219
|
-
})),
|
|
220
|
-
[memberActions, members, onMemberAction]
|
|
221
|
-
);
|
|
222
|
-
const inviteDisabled = inviteAction.canInvite === false;
|
|
223
|
-
return /* @__PURE__ */ jsx(
|
|
224
|
-
CrudListDetailPageKit,
|
|
225
|
-
{
|
|
226
|
-
shell,
|
|
227
|
-
title: "Team settings",
|
|
228
|
-
description: "Manage members, roles, and seat usage through a consistent workspace roster contract.",
|
|
229
|
-
state: mapState(state),
|
|
230
|
-
columns: [
|
|
231
|
-
{ id: "member", header: "Member" },
|
|
232
|
-
{ id: "role", header: "Role" },
|
|
233
|
-
{ id: "status", header: "Status" },
|
|
234
|
-
{ id: "joined", header: "Joined" },
|
|
235
|
-
{ id: "actions", header: "Actions", headerClassName: "w-[80px]" }
|
|
236
|
-
],
|
|
237
|
-
rows: mappedRows,
|
|
238
|
-
filterControls: [
|
|
239
|
-
{
|
|
240
|
-
id: "team-search",
|
|
241
|
-
label: search.label ?? "Search members",
|
|
242
|
-
value: search.value,
|
|
243
|
-
onChange: search.onChange,
|
|
244
|
-
placeholder: search.placeholder
|
|
245
|
-
}
|
|
246
|
-
],
|
|
247
|
-
selectedRowId: selectedMemberId,
|
|
248
|
-
onRowSelect: onSelectedMemberChange,
|
|
249
|
-
detailPanel: {
|
|
250
|
-
title: "Member detail",
|
|
251
|
-
description: "Inspect role, status, and contact details for the selected member.",
|
|
252
|
-
mode: "inline",
|
|
253
|
-
renderDetail: (row) => {
|
|
254
|
-
const member = membersById.get(row.id);
|
|
255
|
-
if (!member) {
|
|
256
|
-
return null;
|
|
257
|
-
}
|
|
258
|
-
return /* @__PURE__ */ jsxs("div", { className: "space-y-2 text-sm", children: [
|
|
259
|
-
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-text-secondary", children: member.email }),
|
|
260
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
261
|
-
/* @__PURE__ */ jsx(RoleBadge, { role: member.role }),
|
|
262
|
-
statusBadge(member.status)
|
|
263
|
-
] }),
|
|
264
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-text-secondary", children: [
|
|
265
|
-
"Joined ",
|
|
266
|
-
member.joinedLabel ?? "-"
|
|
267
|
-
] })
|
|
268
|
-
] });
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
emptyState: {
|
|
272
|
-
title: "No team members",
|
|
273
|
-
description: "Invite your first member to start collaborating."
|
|
274
|
-
},
|
|
275
|
-
pagination: {
|
|
276
|
-
page: 1,
|
|
277
|
-
totalPages: 1,
|
|
278
|
-
onPageChange: () => {
|
|
279
|
-
}
|
|
280
|
-
},
|
|
281
|
-
errorMessage: errorMessage ?? "Team settings are unavailable. Retry shortly.",
|
|
282
|
-
headerActions: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-end gap-1", children: [
|
|
283
|
-
/* @__PURE__ */ jsx(Button, { onClick: inviteAction.onInvite, disabled: inviteDisabled, children: inviteAction.label }),
|
|
284
|
-
/* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-text-secondary", children: [
|
|
285
|
-
seatSummary.usedSeats,
|
|
286
|
-
" of ",
|
|
287
|
-
seatSummary.totalSeats,
|
|
288
|
-
" seats used"
|
|
289
|
-
] }),
|
|
290
|
-
inviteDisabled && inviteAction.disabledReason ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-warning", children: inviteAction.disabledReason }) : null
|
|
291
|
-
] }),
|
|
292
|
-
className
|
|
293
|
-
}
|
|
294
|
-
);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
export { TeamSettingsPageKit };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
1
|
+
export { TwoFactorPageKit } from '../../chunk-S5OY2B63.js';
|
|
2
|
+
import '../../chunk-W7FXDRQJ.js';
|
|
3
|
+
import '../../chunk-IXQGKJU4.js';
|
|
3
4
|
import '../../chunk-MDAYDDTC.js';
|
|
4
5
|
import '../../chunk-DQPK2XRL.js';
|
|
5
6
|
import '../../chunk-WN5ONOHC.js';
|
|
@@ -128,29 +129,4 @@ import '../../chunk-S4JAHKOP.js';
|
|
|
128
129
|
import '../../chunk-TV4RSQH4.js';
|
|
129
130
|
import '../../chunk-HJBXUXTD.js';
|
|
130
131
|
import '../../chunk-ASKFAYYR.js';
|
|
131
|
-
import
|
|
132
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
133
|
-
|
|
134
|
-
function TwoFactorPageKit({
|
|
135
|
-
mode = "challenge",
|
|
136
|
-
challengeProps,
|
|
137
|
-
setupProps,
|
|
138
|
-
errorMessage,
|
|
139
|
-
className,
|
|
140
|
-
cardClassName
|
|
141
|
-
}) {
|
|
142
|
-
const pageContent = mode === "setup" ? /* @__PURE__ */ jsx(TwoFactorSetupBlock, { className: cn("w-full", cardClassName), ...setupProps }) : /* @__PURE__ */ jsx(TwoFactorChallengeBlock, { className: cn("w-full", cardClassName), ...challengeProps });
|
|
143
|
-
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: [
|
|
144
|
-
errorMessage ? /* @__PURE__ */ jsx(
|
|
145
|
-
"div",
|
|
146
|
-
{
|
|
147
|
-
role: "alert",
|
|
148
|
-
className: "w-full max-w-sm rounded-md border border-destructive/40 bg-destructive/10 px-4 py-3 text-sm text-destructive",
|
|
149
|
-
children: errorMessage
|
|
150
|
-
}
|
|
151
|
-
) : null,
|
|
152
|
-
pageContent
|
|
153
|
-
] }) });
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
export { TwoFactorPageKit };
|
|
132
|
+
import '../../chunk-QYZT24TS.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
export { VerifyEmailPageKit } from '../../chunk-SWRJWMGG.js';
|
|
2
|
+
import '../../chunk-LCKLZ4XK.js';
|
|
2
3
|
import '../../chunk-AH6YSYYT.js';
|
|
3
4
|
import '../../chunk-7KIDDF3I.js';
|
|
4
5
|
import '../../chunk-PD2YEH3H.js';
|
|
@@ -37,7 +38,7 @@ import '../../chunk-RYOTIXZO.js';
|
|
|
37
38
|
import '../../chunk-JZ4G2SJH.js';
|
|
38
39
|
import '../../chunk-KYGKJ553.js';
|
|
39
40
|
import '../../chunk-M7YSMMAC.js';
|
|
40
|
-
import
|
|
41
|
+
import '../../chunk-XQ2UDMPO.js';
|
|
41
42
|
import '../../chunk-JMCSAGZ3.js';
|
|
42
43
|
import '../../chunk-QUKDUSHD.js';
|
|
43
44
|
import '../../chunk-O74AEVHW.js';
|
|
@@ -116,31 +117,4 @@ import '../../chunk-NURPUVUV.js';
|
|
|
116
117
|
import '../../chunk-TV4RSQH4.js';
|
|
117
118
|
import '../../chunk-HJBXUXTD.js';
|
|
118
119
|
import '../../chunk-ASKFAYYR.js';
|
|
119
|
-
import
|
|
120
|
-
import { jsx } from 'react/jsx-runtime';
|
|
121
|
-
|
|
122
|
-
function VerifyEmailPageKit({
|
|
123
|
-
icon = /* @__PURE__ */ jsx(MailIcon, { size: 32, className: "text-success" }),
|
|
124
|
-
title = "Email verified!",
|
|
125
|
-
description = "Your email has been verified. Continue to sign in.",
|
|
126
|
-
buttonText = "Continue to sign in",
|
|
127
|
-
onContinue,
|
|
128
|
-
autoRedirectSeconds,
|
|
129
|
-
className,
|
|
130
|
-
cardClassName
|
|
131
|
-
}) {
|
|
132
|
-
return /* @__PURE__ */ jsx("section", { className: cn("min-h-dvh w-full bg-background px-4 py-12 md:px-8 md:py-20", className), children: /* @__PURE__ */ jsx("div", { className: "mx-auto flex w-full max-w-5xl items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
133
|
-
AuthSuccessBlock,
|
|
134
|
-
{
|
|
135
|
-
className: cn("w-full", cardClassName),
|
|
136
|
-
icon,
|
|
137
|
-
title,
|
|
138
|
-
description,
|
|
139
|
-
buttonText,
|
|
140
|
-
onContinue,
|
|
141
|
-
autoRedirectSeconds
|
|
142
|
-
}
|
|
143
|
-
) }) });
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
export { VerifyEmailPageKit };
|
|
120
|
+
import '../../chunk-QYZT24TS.js';
|