@nadicodeai/ui 0.1.1 → 0.3.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.md +9 -4
- package/README.md +41 -7
- package/dist/components/action-band.d.ts.map +1 -1
- package/dist/components/action-band.js +2 -1
- package/dist/components/agent-message.d.ts +2 -1
- package/dist/components/agent-message.d.ts.map +1 -1
- package/dist/components/agent-message.js +14 -21
- package/dist/components/agent-thread.d.ts.map +1 -1
- package/dist/components/agent-thread.js +3 -10
- package/dist/components/ai-elements/code-block.d.ts +8 -1
- package/dist/components/ai-elements/code-block.d.ts.map +1 -1
- package/dist/components/ai-elements/code-block.js +77 -19
- package/dist/components/ai-elements/model-selector.d.ts +1 -1
- package/dist/components/ai-elements/model-selector.d.ts.map +1 -1
- package/dist/components/ai-elements/open-in-chat.d.ts +0 -2
- package/dist/components/ai-elements/open-in-chat.d.ts.map +1 -1
- package/dist/components/ai-elements/open-in-chat.js +7 -29
- package/dist/components/alert-dialog.js +1 -1
- package/dist/components/alert.js +1 -1
- package/dist/components/automation-section.d.ts.map +1 -1
- package/dist/components/automation-section.js +38 -43
- package/dist/components/benefits-bento.js +1 -1
- package/dist/components/bento.d.ts +2 -2
- package/dist/components/bento.d.ts.map +1 -1
- package/dist/components/bento.js +4 -3
- package/dist/components/button.js +5 -5
- package/dist/components/card.js +1 -1
- package/dist/components/chart.d.ts +5 -1
- package/dist/components/chart.d.ts.map +1 -1
- package/dist/components/chart.js +23 -4
- package/dist/components/demo-surface.d.ts +10 -2
- package/dist/components/demo-surface.d.ts.map +1 -1
- package/dist/components/demo-surface.js +9 -2
- package/dist/components/dialog.js +1 -1
- package/dist/components/faq.d.ts +6 -5
- package/dist/components/faq.d.ts.map +1 -1
- package/dist/components/faq.js +8 -6
- package/dist/components/files-preview.d.ts.map +1 -1
- package/dist/components/files-preview.js +8 -17
- package/dist/components/hero-split.d.ts.map +1 -1
- package/dist/components/hero-split.js +3 -2
- package/dist/components/input.js +1 -1
- package/dist/components/installer-shell.d.ts.map +1 -1
- package/dist/components/installer-shell.js +9 -12
- package/dist/components/logo-band.d.ts.map +1 -1
- package/dist/components/logo-band.js +2 -3
- package/dist/components/pricing.d.ts.map +1 -1
- package/dist/components/pricing.js +5 -3
- package/dist/components/seam-grid.d.ts +30 -0
- package/dist/components/seam-grid.d.ts.map +1 -0
- package/dist/components/seam-grid.js +30 -0
- package/dist/components/section-intro.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/shift-band.d.ts.map +1 -1
- package/dist/components/shift-band.js +2 -1
- package/dist/components/sonner.d.ts +1 -1
- package/dist/components/sonner.d.ts.map +1 -1
- package/dist/components/sonner.js +2 -2
- package/dist/components/state-notice.d.ts +13 -0
- package/dist/components/state-notice.d.ts.map +1 -0
- package/dist/components/state-notice.js +8 -0
- package/dist/components/stats-band.d.ts.map +1 -1
- package/dist/components/stats-band.js +4 -5
- package/dist/components/testimonials.d.ts.map +1 -1
- package/dist/components/testimonials.js +3 -4
- package/dist/components/textarea.js +1 -1
- package/dist/components/theme-mode-switcher.d.ts +17 -0
- package/dist/components/theme-mode-switcher.d.ts.map +1 -0
- package/dist/components/theme-mode-switcher.js +24 -0
- package/dist/components/use-case-bento.d.ts +4 -2
- package/dist/components/use-case-bento.d.ts.map +1 -1
- package/dist/components/use-case-bento.js +3 -3
- package/dist/components/watch-it-work-band.d.ts +3 -2
- package/dist/components/watch-it-work-band.d.ts.map +1 -1
- package/dist/components/watch-it-work-band.js +4 -4
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/lib/agent-work-state.d.ts +36 -0
- package/dist/lib/agent-work-state.d.ts.map +1 -0
- package/dist/lib/agent-work-state.js +36 -0
- package/dist/lib/seam.d.ts +29 -0
- package/dist/lib/seam.d.ts.map +1 -0
- package/dist/lib/seam.js +30 -0
- package/dist/lib/theme-mode.d.ts +4 -0
- package/dist/lib/theme-mode.d.ts.map +1 -0
- package/dist/lib/theme-mode.js +4 -0
- package/dist/styles/globals.css +131 -117
- package/docs/agents/nadicodeai-ui.md +22 -0
- package/package.json +9 -3
- package/skills/nadicodeai-ui/SKILL.md +2 -1
|
@@ -16,7 +16,7 @@ function AlertDialogOverlay({ className, ...props }) {
|
|
|
16
16
|
return (_jsx(AlertDialogPrimitive.Overlay, { "data-slot": "alert-dialog-overlay", className: cn("fixed inset-0 z-50 bg-foreground/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0", className), ...props }));
|
|
17
17
|
}
|
|
18
18
|
function AlertDialogContent({ className, size = "default", ...props }) {
|
|
19
|
-
return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, { "data-slot": "alert-dialog-content", "data-size": size, className: cn("group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-
|
|
19
|
+
return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, { "data-slot": "alert-dialog-content", "data-size": size, className: cn("group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-md border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg", className), ...props })] }));
|
|
20
20
|
}
|
|
21
21
|
function AlertDialogHeader({ className, ...props }) {
|
|
22
22
|
return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className), ...props }));
|
package/dist/components/alert.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cva } from "class-variance-authority";
|
|
3
3
|
import { cn } from "../lib/utils.js";
|
|
4
|
-
const alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-
|
|
4
|
+
const alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-md border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
|
|
5
5
|
variants: {
|
|
6
6
|
variant: {
|
|
7
7
|
default: "bg-card text-card-foreground",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation-section.d.ts","sourceRoot":"","sources":["../../src/components/automation-section.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"automation-section.d.ts","sourceRoot":"","sources":["../../src/components/automation-section.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,53 +8,48 @@ import { Input } from "./input.js";
|
|
|
8
8
|
import { Item, ItemActions, ItemContent, ItemDescription, ItemGroup, ItemMedia, ItemTitle, } from "./item.js";
|
|
9
9
|
import { SettingsField, SettingsSection } from "./settings-section.js";
|
|
10
10
|
import { Switch } from "./switch.js";
|
|
11
|
-
const
|
|
12
|
-
ready:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
const automationStatusMeta = {
|
|
12
|
+
ready: {
|
|
13
|
+
label: "Ready",
|
|
14
|
+
variant: "secondary",
|
|
15
|
+
icon: _jsx(CheckCircleIcon, { className: "size-4" }),
|
|
16
|
+
},
|
|
17
|
+
running: {
|
|
18
|
+
label: "Running",
|
|
19
|
+
variant: "default",
|
|
20
|
+
icon: _jsx(LoaderCircleIcon, { className: "size-4 animate-spin" }),
|
|
21
|
+
},
|
|
22
|
+
paused: {
|
|
23
|
+
label: "Paused",
|
|
24
|
+
variant: "outline",
|
|
25
|
+
icon: _jsx(PauseCircleIcon, { className: "size-4" }),
|
|
26
|
+
},
|
|
27
|
+
error: {
|
|
28
|
+
label: "Needs review",
|
|
29
|
+
variant: "destructive",
|
|
30
|
+
icon: _jsx(AlertTriangleIcon, { className: "size-4" }),
|
|
31
|
+
},
|
|
32
|
+
disabled: {
|
|
33
|
+
label: "Disabled",
|
|
34
|
+
variant: "outline",
|
|
35
|
+
icon: _jsx(PauseCircleIcon, { className: "size-4" }),
|
|
36
|
+
},
|
|
17
37
|
};
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
disabled: "outline",
|
|
38
|
+
const mcpStatusMeta = {
|
|
39
|
+
connected: { label: "Connected", variant: "secondary" },
|
|
40
|
+
review: { label: "Review", variant: "outline" },
|
|
41
|
+
error: { label: "Error", variant: "destructive" },
|
|
42
|
+
disabled: { label: "Disabled", variant: "outline" },
|
|
24
43
|
};
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
error: _jsx(AlertTriangleIcon, { className: "size-4" }),
|
|
30
|
-
disabled: _jsx(PauseCircleIcon, { className: "size-4" }),
|
|
31
|
-
};
|
|
32
|
-
const mcpStatusLabels = {
|
|
33
|
-
connected: "Connected",
|
|
34
|
-
review: "Review",
|
|
35
|
-
error: "Error",
|
|
36
|
-
disabled: "Disabled",
|
|
37
|
-
};
|
|
38
|
-
const mcpStatusVariants = {
|
|
39
|
-
connected: "secondary",
|
|
40
|
-
review: "outline",
|
|
41
|
-
error: "destructive",
|
|
42
|
-
disabled: "outline",
|
|
43
|
-
};
|
|
44
|
-
const environmentStateLabels = {
|
|
45
|
-
configured: "Configured",
|
|
46
|
-
missing: "Missing",
|
|
47
|
-
invalid: "Needs review",
|
|
48
|
-
};
|
|
49
|
-
const environmentStateVariants = {
|
|
50
|
-
configured: "secondary",
|
|
51
|
-
missing: "outline",
|
|
52
|
-
invalid: "destructive",
|
|
44
|
+
const environmentStateMeta = {
|
|
45
|
+
configured: { label: "Configured", variant: "secondary" },
|
|
46
|
+
missing: { label: "Missing", variant: "outline" },
|
|
47
|
+
invalid: { label: "Needs review", variant: "destructive" },
|
|
53
48
|
};
|
|
54
49
|
function AutomationSection({ title, description, actions, automations = [], emptyTitle = "No automations configured", emptyDescription = "Add automation rows from the consuming app when there is work to run.", onAutomationEnabledChange, children, className, ...props }) {
|
|
55
50
|
return (_jsxs("section", { "data-slot": "automation-section", className: cn("grid gap-5 rounded-lg border bg-background p-5", className), ...props, children: [(title || description || actions) && (_jsxs("div", { "data-slot": "automation-section-header", className: "flex flex-wrap items-start justify-between gap-3", children: [_jsxs("div", { className: "grid gap-1", children: [title && (_jsx("h2", { "data-slot": "automation-section-title", className: "text-base font-semibold", children: title })), description && (_jsx("p", { "data-slot": "automation-section-description", className: "text-sm text-muted-foreground", children: description }))] }), actions && (_jsx("div", { "data-slot": "automation-section-actions", children: actions }))] })), automations.length > 0 ? (_jsx(ItemGroup, { "data-slot": "automation-section-items", className: "gap-2", children: automations.map((automation) => {
|
|
56
51
|
const status = automation.status ?? "ready";
|
|
57
|
-
return (_jsxs(Item, { "data-slot": "automation-section-item", "data-status": status, "data-enabled": automation.enabled, "data-disabled": automation.disabled ? true : undefined, variant: "outline", children: [_jsx(ItemMedia, { variant: "icon", "aria-hidden": "true", children:
|
|
52
|
+
return (_jsxs(Item, { "data-slot": "automation-section-item", "data-status": status, "data-enabled": automation.enabled, "data-disabled": automation.disabled ? true : undefined, variant: "outline", children: [_jsx(ItemMedia, { variant: "icon", "aria-hidden": "true", children: automationStatusMeta[status].icon }), _jsxs(ItemContent, { children: [_jsx(ItemTitle, { children: automation.title }), automation.description && (_jsx(ItemDescription, { children: automation.description })), automation.meta && (_jsx("div", { className: "text-sm text-muted-foreground", children: automation.meta }))] }), _jsxs(ItemActions, { children: [_jsx(Badge, { variant: automationStatusMeta[status].variant, children: automationStatusMeta[status].label }), _jsx(Switch, { "aria-label": automation.toggleLabel ?? "Toggle automation", checked: Boolean(automation.enabled), disabled: automation.disabled, onCheckedChange: (enabled) => onAutomationEnabledChange?.(automation.id, enabled) }), automation.actions] })] }, automation.id));
|
|
58
53
|
}) })) : (_jsx(FeedbackState, { "data-slot": "automation-section-empty", status: "empty", title: emptyTitle, description: emptyDescription, compact: true, className: "rounded-md" })), children] }));
|
|
59
54
|
}
|
|
60
55
|
function renderAutomationSettingsField(field) {
|
|
@@ -67,14 +62,14 @@ function ProviderSettings({ fields, title = "Provider settings", description = "
|
|
|
67
62
|
function McpServerSettings({ servers, title = "MCP servers", description = "Server availability and permission state are controlled by the consuming app.", onServerEnabledChange, ...props }) {
|
|
68
63
|
return (_jsx("div", { "data-slot": "mcp-server-settings", children: _jsx(SettingsSection, { title: title, description: description, ...props, children: servers.map((server) => {
|
|
69
64
|
const status = server.status ?? "review";
|
|
70
|
-
return (_jsx(SettingsField, { id: server.id, label: server.label, description: server.description, error: server.error, invalid: status === "error" || Boolean(server.error), disabled: server.disabled, controlClassName: "gap-2", children: ({ controlProps }) => (_jsxs(_Fragment, { children: [_jsx(Badge, { variant:
|
|
65
|
+
return (_jsx(SettingsField, { id: server.id, label: server.label, description: server.description, error: server.error, invalid: status === "error" || Boolean(server.error), disabled: server.disabled, controlClassName: "gap-2", children: ({ controlProps }) => (_jsxs(_Fragment, { children: [_jsx(Badge, { variant: mcpStatusMeta[status].variant, children: mcpStatusMeta[status].label }), _jsx(Switch, { ...controlProps, checked: Boolean(server.enabled), onCheckedChange: (enabled) => onServerEnabledChange?.(server.id, enabled) }), server.actions] })) }, server.id));
|
|
71
66
|
}) }) }));
|
|
72
67
|
}
|
|
73
68
|
function EnvironmentVariablesSettings({ variables, title = "Environment variables", description = "Only variable names and redacted state are shown here.", ...props }) {
|
|
74
69
|
return (_jsx("div", { "data-slot": "environment-variables-settings", children: _jsx(SettingsSection, { title: title, description: description, ...props, children: variables.map((variable) => {
|
|
75
70
|
const state = variable.state ?? "missing";
|
|
76
71
|
const valueLabel = state === "configured" ? "Value redacted" : "No value shown";
|
|
77
|
-
return (_jsx(SettingsField, { id: variable.id, label: variable.name, description: variable.description, error: variable.error, invalid: state === "invalid" || Boolean(variable.error), required: variable.required, controlClassName: "gap-2", children: ({ controlProps }) => (_jsxs(_Fragment, { children: [_jsx(Input, { ...controlProps, value: valueLabel, readOnly: true, "aria-label": `${variable.name} redacted value state` }), _jsx(Badge, { variant:
|
|
72
|
+
return (_jsx(SettingsField, { id: variable.id, label: variable.name, description: variable.description, error: variable.error, invalid: state === "invalid" || Boolean(variable.error), required: variable.required, controlClassName: "gap-2", children: ({ controlProps }) => (_jsxs(_Fragment, { children: [_jsx(Input, { ...controlProps, value: valueLabel, readOnly: true, "aria-label": `${variable.name} redacted value state` }), _jsx(Badge, { variant: environmentStateMeta[state].variant, children: environmentStateMeta[state].label }), variable.actions] })) }, variable.id));
|
|
78
73
|
}) }) }));
|
|
79
74
|
}
|
|
80
75
|
export { AutomationSection, EnvironmentVariablesSettings, McpServerSettings, ProviderSettings, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Bento, BentoItem } from "./bento.js";
|
|
3
3
|
function BenefitsBento({ kicker, title, body, image, benefits, ...props }) {
|
|
4
|
-
return (_jsx("div", { "data-slot": "benefits-bento", ...props, children: _jsxs(Bento, { columns: 2, children: [_jsx(BentoItem, { flush: true, stretch: true, children: image }), _jsxs(BentoItem, { children: [_jsx("p", { className: "nc-type-caption-mono text-muted-foreground uppercase", children: kicker }), _jsx("h2", { className: "nc-type-title-md text-foreground", children: title }), _jsx("p", { className: "nc-type-body-md text-
|
|
4
|
+
return (_jsx("div", { "data-slot": "benefits-bento", ...props, children: _jsxs(Bento, { columns: 2, children: [_jsx(BentoItem, { flush: true, stretch: true, children: image }), _jsxs(BentoItem, { children: [_jsx("p", { className: "nc-type-caption-mono text-muted-foreground uppercase", children: kicker }), _jsx("h2", { className: "nc-type-title-md text-foreground", children: title }), _jsx("p", { className: "nc-type-body-md text-[var(--nc-body)]", children: body }), _jsx("div", { className: "grid gap-4 pt-2 sm:grid-cols-2", children: benefits.map((benefit) => (_jsxs("div", { className: "grid gap-1", children: [_jsx("h3", { className: "nc-type-body-md-strong text-foreground", children: benefit.title }), _jsx("p", { className: "nc-type-body-sm text-[var(--nc-body)]", children: benefit.body })] }, benefit.title))) })] })] }) }));
|
|
5
5
|
}
|
|
6
6
|
export { BenefitsBento };
|
|
@@ -3,8 +3,8 @@ import * as React from "react";
|
|
|
3
3
|
* bento — NadicodeAI's bordered marketing grid grammar.
|
|
4
4
|
*
|
|
5
5
|
* This is the reusable shadcn-style source component for bento sections. The
|
|
6
|
-
* grid owns seams once (`gap-px bg-border
|
|
7
|
-
* choose content and spans, not border math.
|
|
6
|
+
* grid owns seams once (`gap-px bg-border`, via `SeamGrid` with no `surface`);
|
|
7
|
+
* cells are borderless fills. Pages choose content and spans, not border math.
|
|
8
8
|
*/
|
|
9
9
|
declare const spanClasses: Record<number, string>;
|
|
10
10
|
declare const columnClasses: Record<number, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bento.d.ts","sourceRoot":"","sources":["../../src/components/bento.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"bento.d.ts","sourceRoot":"","sources":["../../src/components/bento.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B;;;;;;GAMG;AAEH,QAAA,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAavC,CAAA;AAED,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKzC,CAAA;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,MAAe,EACf,OAAY,EACZ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAA;IACzC,OAAO,CAAC,EAAE,MAAM,OAAO,aAAa,CAAA;CACrC,qBAeA;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,IAAI,EACJ,OAAgB,EAChB,KAAa,EACb,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,OAAO,WAAW,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAA;IACzC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBAiBA;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQtE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQvE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQtE;AAED,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,qBAgBlD;AAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA"}
|
package/dist/components/bento.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { SeamGrid } from "./seam-grid.js";
|
|
3
4
|
/**
|
|
4
5
|
* bento — NadicodeAI's bordered marketing grid grammar.
|
|
5
6
|
*
|
|
6
7
|
* This is the reusable shadcn-style source component for bento sections. The
|
|
7
|
-
* grid owns seams once (`gap-px bg-border
|
|
8
|
-
* choose content and spans, not border math.
|
|
8
|
+
* grid owns seams once (`gap-px bg-border`, via `SeamGrid` with no `surface`);
|
|
9
|
+
* cells are borderless fills. Pages choose content and spans, not border math.
|
|
9
10
|
*/
|
|
10
11
|
const spanClasses = {
|
|
11
12
|
1: "lg:col-span-1",
|
|
@@ -28,7 +29,7 @@ const columnClasses = {
|
|
|
28
29
|
12: "grid-cols-1 lg:grid-cols-12",
|
|
29
30
|
};
|
|
30
31
|
function Bento({ className, height = "auto", columns = 12, ...props }) {
|
|
31
|
-
return (_jsx(
|
|
32
|
+
return (_jsx(SeamGrid, { "data-slot": "bento", "data-height": height, className: cn("items-stretch", columnClasses[columns], height === "primary" && "lg:h-[var(--nc-h-bento-primary)]", height === "secondary" && "lg:h-[var(--nc-h-bento-secondary)]", className), ...props }));
|
|
32
33
|
}
|
|
33
34
|
function BentoItem({ className, span, surface = "card", flush = false, stretch = false, ...props }) {
|
|
34
35
|
return (_jsx("div", { "data-slot": "bento-item", "data-surface": surface, className: cn("nc-panel-cell relative min-w-0 overflow-hidden", span ? spanClasses[span] : null, surface === "card" && "bg-card", surface === "soft" && "bg-[var(--nc-canvas-soft)]", flush && "!p-0", stretch && "items-stretch ![align-content:stretch] ![grid-template-rows:minmax(0,1fr)]", className), ...props }));
|
|
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { cva } from "class-variance-authority";
|
|
4
4
|
import { Slot } from "radix-ui";
|
|
5
5
|
import { cn } from "../lib/utils.js";
|
|
6
|
-
const buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 rounded-
|
|
6
|
+
const buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 rounded-sm text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
7
7
|
variants: {
|
|
8
8
|
variant: {
|
|
9
9
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
@@ -15,11 +15,11 @@ const buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap
|
|
|
15
15
|
},
|
|
16
16
|
size: {
|
|
17
17
|
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
18
|
-
xs: "h-6 gap-1 rounded-
|
|
19
|
-
sm: "h-8 gap-1.5 rounded-
|
|
20
|
-
lg: "h-10 rounded-
|
|
18
|
+
xs: "h-6 gap-1 rounded-sm px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
19
|
+
sm: "h-8 gap-1.5 rounded-sm px-3 has-[>svg]:px-2.5",
|
|
20
|
+
lg: "h-10 rounded-sm px-6 has-[>svg]:px-4",
|
|
21
21
|
icon: "size-9",
|
|
22
|
-
"icon-xs": "size-6 rounded-
|
|
22
|
+
"icon-xs": "size-6 rounded-sm [&_svg:not([class*='size-'])]:size-3",
|
|
23
23
|
"icon-sm": "size-8",
|
|
24
24
|
"icon-lg": "size-10",
|
|
25
25
|
},
|
package/dist/components/card.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
3
|
function Card({ className, ...props }) {
|
|
4
|
-
return (_jsx("div", { "data-slot": "card", className: cn("flex flex-col gap-6 rounded-
|
|
4
|
+
return (_jsx("div", { "data-slot": "card", className: cn("flex flex-col gap-6 rounded-md border bg-card py-6 text-card-foreground shadow-sm", className), ...props }));
|
|
5
5
|
}
|
|
6
6
|
function CardHeader({ className, ...props }) {
|
|
7
7
|
return (_jsx("div", { "data-slot": "card-header", className: cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", className), ...props }));
|
|
@@ -3,8 +3,12 @@ import * as RechartsPrimitive from "recharts";
|
|
|
3
3
|
import type { TooltipValueType } from "recharts";
|
|
4
4
|
declare const THEMES: {
|
|
5
5
|
readonly light: "";
|
|
6
|
+
readonly dark: ".dark";
|
|
6
7
|
};
|
|
7
8
|
type TooltipNameType = number | string;
|
|
9
|
+
type ChartTheme = Partial<Record<keyof typeof THEMES, string>> & {
|
|
10
|
+
light: string;
|
|
11
|
+
};
|
|
8
12
|
export type ChartConfig = Record<string, {
|
|
9
13
|
label?: React.ReactNode;
|
|
10
14
|
icon?: React.ComponentType;
|
|
@@ -13,7 +17,7 @@ export type ChartConfig = Record<string, {
|
|
|
13
17
|
theme?: never;
|
|
14
18
|
} | {
|
|
15
19
|
color?: never;
|
|
16
|
-
theme:
|
|
20
|
+
theme: ChartTheme;
|
|
17
21
|
})>;
|
|
18
22
|
declare function ChartContainer({ id, className, children, config, initialDimension, ...props }: React.ComponentProps<"div"> & {
|
|
19
23
|
config: ChartConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/components/chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAIhD,QAAA,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/components/chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAIhD,QAAA,MAAM,MAAM;;;CAAwC,CAAA;AAGpD,KAAK,eAAe,GAAG,MAAM,GAAG,MAAM,CAAA;AACtC,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG;IAC/D,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAyBD,MAAM,MAAM,WAAW,GAAG,MAAM,CAC9B,MAAM,EACN;IACE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC3B,GAAG,CACA;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACjC;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CACvC,CACF,CAAA;AAkBD,iBAAS,cAAc,CAAC,EACtB,EAAE,EACF,SAAS,EACT,QAAQ,EACR,MAAM,EACN,gBAAoC,EACpC,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC,cAAc,CAC5B,OAAO,iBAAiB,CAAC,mBAAmB,CAC7C,CAAC,UAAU,CAAC,CAAA;IACb,gBAAgB,CAAC,EAAE;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF,qBA0BA;AAED,QAAA,MAAM,UAAU,GAAI,gBAAgB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,6BAiCtE,CAAA;AAED,QAAA,MAAM,YAAY,kCAA4B,CAAA;AAE9C,iBAAS,mBAAmB,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAiB,EACjB,SAAiB,EACjB,aAAqB,EACrB,KAAK,EACL,cAAc,EACd,cAAc,EACd,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,OAAO,CAAC,GACvD,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,IAAI,CACN,iBAAiB,CAAC,0BAA0B,CAC1C,gBAAgB,EAChB,eAAe,CAChB,EACD,oBAAoB,CACrB,4BA6HF;AAED,QAAA,MAAM,WAAW,sGAA2B,CAAA;AAE5C,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,QAAgB,EAChB,OAAO,EACP,aAAwB,EACxB,OAAO,GACR,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,iBAAiB,CAAC,yBAAyB,4BA4C9C;AAuCD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,UAAU,GACX,CAAA"}
|
package/dist/components/chart.js
CHANGED
|
@@ -3,8 +3,25 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import * as RechartsPrimitive from "recharts";
|
|
5
5
|
import { cn } from "../lib/utils.js";
|
|
6
|
-
const THEMES = { light: "" };
|
|
6
|
+
const THEMES = { light: "", dark: ".dark" };
|
|
7
7
|
const INITIAL_DIMENSION = { width: 320, height: 200 };
|
|
8
|
+
function sanitizeChartToken(value) {
|
|
9
|
+
const sanitized = value
|
|
10
|
+
.trim()
|
|
11
|
+
.replace(/[^A-Za-z0-9_-]+/g, "-")
|
|
12
|
+
.replace(/^-+|-+$/g, "");
|
|
13
|
+
return sanitized || "chart";
|
|
14
|
+
}
|
|
15
|
+
function isSafeChartColor(value) {
|
|
16
|
+
const color = value.trim();
|
|
17
|
+
return color.length > 0 && !/[;{}]/.test(color) && !/\burl\s*\(/i.test(color);
|
|
18
|
+
}
|
|
19
|
+
function chartColorDeclaration(key, color) {
|
|
20
|
+
if (!color || !isSafeChartColor(color)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return ` --color-${sanitizeChartToken(key)}: ${color.trim()};`;
|
|
24
|
+
}
|
|
8
25
|
const ChartContext = React.createContext(null);
|
|
9
26
|
function useChart() {
|
|
10
27
|
const context = React.useContext(ChartContext);
|
|
@@ -15,10 +32,11 @@ function useChart() {
|
|
|
15
32
|
}
|
|
16
33
|
function ChartContainer({ id, className, children, config, initialDimension = INITIAL_DIMENSION, ...props }) {
|
|
17
34
|
const uniqueId = React.useId();
|
|
18
|
-
const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}
|
|
35
|
+
const chartId = sanitizeChartToken(`chart-${id ?? uniqueId.replace(/:/g, "")}`);
|
|
19
36
|
return (_jsx(ChartContext.Provider, { value: { config }, children: _jsxs("div", { "data-slot": "chart", "data-chart": chartId, className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-layer]:outline-hidden [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden", className), ...props, children: [_jsx(ChartStyle, { id: chartId, config: config }), _jsx(RechartsPrimitive.ResponsiveContainer, { initialDimension: initialDimension, children: children })] }) }));
|
|
20
37
|
}
|
|
21
38
|
const ChartStyle = ({ id, config }) => {
|
|
39
|
+
const chartId = sanitizeChartToken(id);
|
|
22
40
|
const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);
|
|
23
41
|
if (!colorConfig.length) {
|
|
24
42
|
return null;
|
|
@@ -26,12 +44,13 @@ const ChartStyle = ({ id, config }) => {
|
|
|
26
44
|
return (_jsx("style", { dangerouslySetInnerHTML: {
|
|
27
45
|
__html: Object.entries(THEMES)
|
|
28
46
|
.map(([theme, prefix]) => `
|
|
29
|
-
${prefix} [data-chart
|
|
47
|
+
${prefix} [data-chart="${chartId}"] {
|
|
30
48
|
${colorConfig
|
|
31
49
|
.map(([key, itemConfig]) => {
|
|
32
50
|
const color = itemConfig.theme?.[theme] ??
|
|
51
|
+
itemConfig.theme?.light ??
|
|
33
52
|
itemConfig.color;
|
|
34
|
-
return
|
|
53
|
+
return chartColorDeclaration(key, color);
|
|
35
54
|
})
|
|
36
55
|
.join("\n")}
|
|
37
56
|
}
|
|
@@ -9,6 +9,7 @@ type DemoSurfaceScript = {
|
|
|
9
9
|
agent: string;
|
|
10
10
|
traces: string[];
|
|
11
11
|
artifactKind: string;
|
|
12
|
+
artifactKindLabel?: string;
|
|
12
13
|
artifactTitle: string;
|
|
13
14
|
artifactBody: string;
|
|
14
15
|
approvalTitle: string;
|
|
@@ -16,11 +17,18 @@ type DemoSurfaceScript = {
|
|
|
16
17
|
usage: string;
|
|
17
18
|
steps: string;
|
|
18
19
|
};
|
|
19
|
-
|
|
20
|
+
type DemoSurfaceLabels = {
|
|
21
|
+
approvalLabel: string;
|
|
22
|
+
approveAction: string;
|
|
23
|
+
editAction: string;
|
|
24
|
+
liveDemoLabel: string;
|
|
25
|
+
};
|
|
26
|
+
declare function DemoSurface({ script, title, className, children, autoplay, labels, ...props }: React.ComponentProps<"div"> & {
|
|
20
27
|
script?: DemoSurfaceScript;
|
|
21
28
|
title?: string;
|
|
22
29
|
autoplay?: boolean;
|
|
30
|
+
labels?: Partial<DemoSurfaceLabels>;
|
|
23
31
|
}): React.JSX.Element;
|
|
24
32
|
export { DemoSurface };
|
|
25
|
-
export type { DemoSurfaceScript };
|
|
33
|
+
export type { DemoSurfaceLabels, DemoSurfaceScript };
|
|
26
34
|
//# sourceMappingURL=demo-surface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo-surface.d.ts","sourceRoot":"","sources":["../../src/components/demo-surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,KAAK,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;AAE7D,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,UAAU,GAAG,MAAM,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;
|
|
1
|
+
{"version":3,"file":"demo-surface.d.ts","sourceRoot":"","sources":["../../src/components/demo-surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,KAAK,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;AAE7D,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,UAAU,GAAG,MAAM,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAeD,iBAAS,WAAW,CAAC,EACnB,MAAM,EACN,KAAe,EACf,SAAS,EACT,QAAQ,EACR,QAAe,EACf,MAAM,EACN,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACpC,qBAoGA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AACtB,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
+
const defaultDemoSurfaceLabels = {
|
|
4
|
+
approvalLabel: "Human approval",
|
|
5
|
+
approveAction: "Approve",
|
|
6
|
+
editAction: "Edit",
|
|
7
|
+
liveDemoLabel: "live demo",
|
|
8
|
+
};
|
|
3
9
|
function delayStep(index) {
|
|
4
10
|
return {
|
|
5
11
|
"--nc-anim-delay": `calc(var(--nc-duration-stagger) * ${index})`,
|
|
6
12
|
};
|
|
7
13
|
}
|
|
8
|
-
function DemoSurface({ script, title = "Nadia", className, children, autoplay = true, ...props }) {
|
|
14
|
+
function DemoSurface({ script, title = "Nadia", className, children, autoplay = true, labels, ...props }) {
|
|
9
15
|
if (!script) {
|
|
10
16
|
return (_jsx("div", { "data-slot": "demo-surface", className: cn("grid min-h-0 bg-card", className), ...props, children: children }));
|
|
11
17
|
}
|
|
12
|
-
|
|
18
|
+
const demoLabels = { ...defaultDemoSurfaceLabels, ...labels };
|
|
19
|
+
return (_jsxs("div", { "data-slot": "demo-surface", className: cn("nc-chat-thread h-[var(--nc-h-bento-mobile-main)] min-h-0 lg:h-full", className), "data-nc-autoplay": autoplay ? "" : undefined, "data-nc-autoplay-name": title, ...props, children: [_jsxs("div", { className: "nc-chat-thread-header", children: [_jsx("span", { className: "nc-agent-avatar", "data-accent": script.accent, "aria-hidden": "true", children: "NA" }), _jsxs("div", { className: "nc-chat-thread-identity", children: [_jsx("div", { className: "nc-chat-thread-domain", children: script.domain }), _jsxs("div", { className: "nc-chat-thread-name", children: [_jsx("span", { children: title }), _jsxs("span", { className: "nc-chat-thread-role", children: ["/ ", script.role] })] })] }), _jsx("span", { className: "nc-chat-thread-workflow", children: script.workflow })] }), _jsxs("div", { className: "nc-chat-thread-body", children: [_jsx("div", { className: "nc-chat-bubble-user nc-anim-msg-in", style: delayStep(0), children: script.user }), _jsx("div", { className: "nc-chat-bubble-agent nc-anim-msg-in", "data-accent": script.accent, style: delayStep(1), children: script.agent }), script.traces.map((trace, index) => (_jsx("div", { className: "nc-tool-call-trace nc-anim-msg-in", style: delayStep(index + 2), children: trace }, trace))), _jsxs("div", { className: "nc-artifact-preview nc-anim-msg-in", "data-kind": script.artifactKind, style: delayStep(5), children: [_jsxs("div", { className: "nc-artifact-preview-header", children: [_jsx("span", { className: "nc-artifact-preview-title", children: script.artifactTitle }), _jsx("span", { className: "nc-artifact-preview-kind", children: script.artifactKindLabel ?? script.artifactKind })] }), _jsx("div", { className: "nc-artifact-preview-body", children: script.artifactBody })] }), _jsxs("div", { className: "nc-approval-gate nc-anim-msg-in", style: delayStep(6), children: [_jsx("span", { className: "nc-approval-gate-label", children: demoLabels.approvalLabel }), _jsx("span", { className: "nc-approval-gate-title", children: script.approvalTitle }), _jsx("span", { className: "nc-approval-gate-copy", children: script.approvalCopy }), _jsxs("span", { className: "nc-approval-gate-actions", children: [_jsx("button", { type: "button", children: demoLabels.approveAction }), _jsx("button", { type: "button", "data-variant": "secondary", children: demoLabels.editAction })] })] })] }), _jsx("div", { className: "nc-chat-thread-footer", children: _jsxs("div", { className: "nc-usage-meter", children: [_jsxs("div", { className: "nc-usage-meter-meta", children: [_jsx("span", { children: script.role }), _jsx("span", { className: "nc-usage-meter-sep", children: "/" }), _jsx("span", { children: script.steps }), _jsx("span", { className: "nc-usage-meter-spacer" }), _jsx("span", { children: demoLabels.liveDemoLabel })] }), _jsx("div", { className: "nc-usage-meter-track", children: _jsx("div", { className: "nc-usage-meter-fill", style: { "--nc-usage": script.usage } }) })] }) })] }));
|
|
13
20
|
}
|
|
14
21
|
export { DemoSurface };
|
|
@@ -20,7 +20,7 @@ function DialogOverlay({ className, ...props }) {
|
|
|
20
20
|
return (_jsx(DialogPrimitive.Overlay, { "data-slot": "dialog-overlay", className: cn("fixed inset-0 z-50 bg-foreground/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0", className), ...props }));
|
|
21
21
|
}
|
|
22
22
|
function DialogContent({ className, children, showCloseButton = true, ...props }) {
|
|
23
|
-
return (_jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn("fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-
|
|
23
|
+
return (_jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn("fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-md border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg", className), ...props, children: [children, showCloseButton && (_jsxs(DialogPrimitive.Close, { "data-slot": "dialog-close", className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
|
|
24
24
|
}
|
|
25
25
|
function DialogHeader({ className, ...props }) {
|
|
26
26
|
return (_jsx("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className), ...props }));
|
package/dist/components/faq.d.ts
CHANGED
|
@@ -3,11 +3,12 @@ import * as React from "react";
|
|
|
3
3
|
* faq — single-column question/answer accordion (replaces the retired
|
|
4
4
|
* `sections/faq.css` + its coupled `faq-item` rows).
|
|
5
5
|
*
|
|
6
|
-
* SINGLE-OWNER SEAM: a single-track gap-as-seam grid (`gap-px bg-border
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* SINGLE-OWNER SEAM: a single-track gap-as-seam grid (`gap-px bg-border`, owned
|
|
7
|
+
* by `SeamGrid` with no `surface`) owns every divider BETWEEN items. Each
|
|
8
|
+
* `FaqItem` is a borderless fill that repairs no inter-item seam; the only
|
|
9
|
+
* hairline an item owns is its internal summary/answer rule (drawn by `FaqItem`,
|
|
10
|
+
* not here). A faq is one column at every breakpoint — no column count, no dark
|
|
11
|
+
* inversion (matching the retired section's variants:none).
|
|
11
12
|
*
|
|
12
13
|
* Token-only; no `dark:` styling.
|
|
13
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faq.d.ts","sourceRoot":"","sources":["../../src/components/faq.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"faq.d.ts","sourceRoot":"","sources":["../../src/components/faq.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B;;;;;;;;;;;;GAYG;AAEH,iBAAS,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQhE;AAED,OAAO,EAAE,GAAG,EAAE,CAAA"}
|
package/dist/components/faq.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { SeamGrid } from "./seam-grid.js";
|
|
3
4
|
/**
|
|
4
5
|
* faq — single-column question/answer accordion (replaces the retired
|
|
5
6
|
* `sections/faq.css` + its coupled `faq-item` rows).
|
|
6
7
|
*
|
|
7
|
-
* SINGLE-OWNER SEAM: a single-track gap-as-seam grid (`gap-px bg-border
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* SINGLE-OWNER SEAM: a single-track gap-as-seam grid (`gap-px bg-border`, owned
|
|
9
|
+
* by `SeamGrid` with no `surface`) owns every divider BETWEEN items. Each
|
|
10
|
+
* `FaqItem` is a borderless fill that repairs no inter-item seam; the only
|
|
11
|
+
* hairline an item owns is its internal summary/answer rule (drawn by `FaqItem`,
|
|
12
|
+
* not here). A faq is one column at every breakpoint — no column count, no dark
|
|
13
|
+
* inversion (matching the retired section's variants:none).
|
|
12
14
|
*
|
|
13
15
|
* Token-only; no `dark:` styling.
|
|
14
16
|
*/
|
|
15
17
|
function Faq({ className, ...props }) {
|
|
16
|
-
return (_jsx(
|
|
18
|
+
return (_jsx(SeamGrid, { "data-slot": "faq", className: cn("h-full grid-cols-1", className), ...props }));
|
|
17
19
|
}
|
|
18
20
|
export { Faq };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files-preview.d.ts","sourceRoot":"","sources":["../../src/components/files-preview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAE5C,OAAO,EACL,QAAQ,EAGT,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAA;AAKpC,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,OAAO,GACP,UAAU,GACV,SAAS,GACT,SAAS,GACT,SAAS,CAAA;AAEb,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,kBAAkB,CAAA;IAC9B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;CAC3B,CAAA;
|
|
1
|
+
{"version":3,"file":"files-preview.d.ts","sourceRoot":"","sources":["../../src/components/files-preview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAE5C,OAAO,EACL,QAAQ,EAGT,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAA;AAKpC,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,OAAO,GACP,UAAU,GACV,SAAS,GACT,SAAS,GACT,SAAS,CAAA;AAEb,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,kBAAkB,CAAA;IAC9B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;CAC3B,CAAA;AA2ED,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,YAAY,EACZ,oBAAyB,EACzB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,iBAAiB,GAAG,UAAU,GAAG,kBAAkB,GAAG,UAAU,CAAC,GAAG;IACjH,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACjD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;CAC7C,qBAuCA;AA8CD,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IAC5C,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,qBAgDA;AAED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -9,21 +9,12 @@ import { Badge } from "./badge.js";
|
|
|
9
9
|
import { FeedbackState } from "./feedback-state.js";
|
|
10
10
|
import { cn } from "../lib/utils.js";
|
|
11
11
|
const defaultCodeLanguage = "plaintext";
|
|
12
|
-
const
|
|
13
|
-
added: "Added",
|
|
14
|
-
blocked: "Blocked",
|
|
15
|
-
deleted: "Deleted",
|
|
16
|
-
modified: "Modified",
|
|
17
|
-
running: "Running",
|
|
18
|
-
unchanged: "Unchanged",
|
|
19
|
-
};
|
|
20
|
-
const fileStatusIcons = {
|
|
21
|
-
added: CircleCheckIcon,
|
|
22
|
-
blocked: CircleAlertIcon,
|
|
23
|
-
deleted: CircleDashedIcon,
|
|
24
|
-
modified: CircleDotIcon,
|
|
25
|
-
running: CircleDotIcon,
|
|
26
|
-
unchanged: CircleDashedIcon,
|
|
12
|
+
const fileStatusMeta = {
|
|
13
|
+
added: { label: "Added", icon: _jsx(CircleCheckIcon, { className: "size-3" }) },
|
|
14
|
+
blocked: { label: "Blocked", icon: _jsx(CircleAlertIcon, { className: "size-3" }) },
|
|
15
|
+
deleted: { label: "Deleted", icon: _jsx(CircleDashedIcon, { className: "size-3" }) },
|
|
16
|
+
modified: { label: "Modified", icon: _jsx(CircleDotIcon, { className: "size-3" }) },
|
|
17
|
+
running: { label: "Running", icon: _jsx(CircleDotIcon, { className: "size-3" }) },
|
|
27
18
|
};
|
|
28
19
|
function collectNodes(nodes, map = new Map()) {
|
|
29
20
|
for (const node of nodes) {
|
|
@@ -50,8 +41,8 @@ function FileStatusBadge({ status }) {
|
|
|
50
41
|
if (!status || status === "unchanged") {
|
|
51
42
|
return null;
|
|
52
43
|
}
|
|
53
|
-
const
|
|
54
|
-
return (_jsxs(Badge, { "data-slot": "file-status-badge", variant: "outline", className: "gap-1", children: [
|
|
44
|
+
const { icon, label } = fileStatusMeta[status];
|
|
45
|
+
return (_jsxs(Badge, { "data-slot": "file-status-badge", variant: "outline", className: "gap-1", children: [icon, label] }));
|
|
55
46
|
}
|
|
56
47
|
function renderFileNode(node) {
|
|
57
48
|
if (node.type === "directory") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hero-split.d.ts","sourceRoot":"","sources":["../../src/components/hero-split.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"hero-split.d.ts","sourceRoot":"","sources":["../../src/components/hero-split.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B;;;;;;;;;;;;;;;;GAgBG;AAEH,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAYtE;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW1E;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAa5E;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { SeamGrid } from "./seam-grid.js";
|
|
3
4
|
/**
|
|
4
5
|
* hero-split — the page-opening hero (replaces the retired `sections/hero-split.css`).
|
|
5
6
|
*
|
|
@@ -18,9 +19,9 @@ import { cn } from "../lib/utils.js";
|
|
|
18
19
|
* is the hero's surface, not a padded stamp. Token-only; no `dark:` styling.
|
|
19
20
|
*/
|
|
20
21
|
function HeroSplit({ className, ...props }) {
|
|
21
|
-
return (_jsx(
|
|
22
|
+
return (_jsx(SeamGrid, { "data-slot": "hero-split", className: cn(
|
|
22
23
|
// The panel owns internal seams only; the page/frame/hatch rail owns the perimeter.
|
|
23
|
-
"
|
|
24
|
+
"min-h-[inherit] min-w-0 grid-cols-1 sm:grid-cols-[minmax(0,1fr)_minmax(0,1.5fr)]", className), ...props }));
|
|
24
25
|
}
|
|
25
26
|
function HeroSplitCopy({ className, ...props }) {
|
|
26
27
|
return (_jsx("div", { "data-slot": "hero-split-copy", className: cn("grid min-w-0 content-center gap-4 overflow-hidden bg-card p-[clamp(24px,4vw,56px)]", className), ...props }));
|
package/dist/components/input.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
3
|
function Input({ className, type, ...props }) {
|
|
4
|
-
return (_jsx("input", { type: type, "data-slot": "input", className: cn("h-9 w-full min-w-0 rounded-
|
|
4
|
+
return (_jsx("input", { type: type, "data-slot": "input", className: cn("h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20", className), ...props }));
|
|
5
5
|
}
|
|
6
6
|
export { Input };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer-shell.d.ts","sourceRoot":"","sources":["../../src/components/installer-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAkB9B,KAAK,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AACzE,KAAK,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAA;AAEvE,KAAK,kBAAkB,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IAC1E,KAAK,EAAE,mBAAmB,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;
|
|
1
|
+
{"version":3,"file":"installer-shell.d.ts","sourceRoot":"","sources":["../../src/components/installer-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAkB9B,KAAK,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AACzE,KAAK,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAA;AAEvE,KAAK,kBAAkB,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IAC1E,KAAK,EAAE,mBAAmB,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAwED,iBAAS,cAAc,CAAC,EACtB,KAAK,EACL,KAAK,EACL,WAAW,EACX,aAAa,EACb,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,aAAoC,EACpC,SAAS,EACT,gBAAgB,EAChB,GAAG,KAAK,EACT,EAAE,mBAAmB,qBA2DrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAA"}
|