@neuronection/assistant-ui 0.7.0 → 0.8.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/CHANGELOG.md +30 -0
- package/README.md +1 -0
- package/dist/ai-button.d.ts +8 -0
- package/dist/ai-button.js +1 -1
- package/dist/ai-magic-fill.js +1 -1
- package/dist/{chunk-TKKHWO6C.js → chunk-2YQSA5AE.js} +3 -3
- package/dist/{chunk-TKKHWO6C.js.map → chunk-2YQSA5AE.js.map} +1 -1
- package/dist/{chunk-XHHEAJHN.js → chunk-3RDFWXX6.js} +3 -3
- package/dist/{chunk-XHHEAJHN.js.map → chunk-3RDFWXX6.js.map} +1 -1
- package/dist/{chunk-L56KGPGS.js → chunk-3VCFRIIK.js} +16 -4
- package/dist/chunk-3VCFRIIK.js.map +1 -0
- package/dist/{chunk-2EPZAT3X.js → chunk-62GIJMWT.js} +3 -3
- package/dist/{chunk-2EPZAT3X.js.map → chunk-62GIJMWT.js.map} +1 -1
- package/dist/{chunk-UU2V5FGF.js → chunk-6VCJX4CP.js} +3 -3
- package/dist/{chunk-UU2V5FGF.js.map → chunk-6VCJX4CP.js.map} +1 -1
- package/dist/{chunk-I2RXO6ZU.js → chunk-EODV6JK7.js} +3 -3
- package/dist/{chunk-I2RXO6ZU.js.map → chunk-EODV6JK7.js.map} +1 -1
- package/dist/chunk-ERK53RFJ.js +463 -0
- package/dist/chunk-ERK53RFJ.js.map +1 -0
- package/dist/{chunk-BWPNEQ3T.js → chunk-G6557MEN.js} +3 -3
- package/dist/{chunk-BWPNEQ3T.js.map → chunk-G6557MEN.js.map} +1 -1
- package/dist/chunk-KLWKZSYM.js +3 -0
- package/dist/chunk-KLWKZSYM.js.map +1 -0
- package/dist/{chunk-FE26R5RN.js → chunk-OPTH3VUY.js} +3 -3
- package/dist/{chunk-FE26R5RN.js.map → chunk-OPTH3VUY.js.map} +1 -1
- package/dist/{chunk-5AVBKEDQ.js → chunk-PFAH25VU.js} +3 -3
- package/dist/{chunk-5AVBKEDQ.js.map → chunk-PFAH25VU.js.map} +1 -1
- package/dist/chunk-TJLELOAW.js +163 -0
- package/dist/chunk-TJLELOAW.js.map +1 -0
- package/dist/{chunk-W2HORE44.js → chunk-TN35RR2R.js} +3 -3
- package/dist/{chunk-W2HORE44.js.map → chunk-TN35RR2R.js.map} +1 -1
- package/dist/{chunk-SXVOJ7WE.js → chunk-Y7BKBG57.js} +3 -3
- package/dist/{chunk-SXVOJ7WE.js.map → chunk-Y7BKBG57.js.map} +1 -1
- package/dist/{chunk-75QQR2VT.js → chunk-YMCMUAIF.js} +3 -3
- package/dist/{chunk-75QQR2VT.js.map → chunk-YMCMUAIF.js.map} +1 -1
- package/dist/combobox.js +1 -1
- package/dist/confirmation-modal.js +1 -1
- package/dist/date-picker.js +1 -1
- package/dist/form-modal.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +16 -14
- package/dist/index.js.map +1 -1
- package/dist/modal.js +2 -2
- package/dist/model-picker.js +1 -1
- package/dist/range-bar.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/task-assignment-picker.js +1 -1
- package/dist/time-list.d.ts +30 -0
- package/dist/time-list.js +3 -0
- package/dist/time-list.js.map +1 -0
- package/dist/time-picker.d.ts +39 -0
- package/dist/time-picker.js +3 -0
- package/dist/time-picker.js.map +1 -0
- package/dist/wizard.js +1 -1
- package/package.json +9 -1
- package/dist/chunk-L56KGPGS.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/model-picker/ModelPicker.tsx"],"names":["ModelPicker"],"mappings":";;;;;AA2CO,IAAM,WAAA,GAAoB,KAAA,CAAA,UAAA;AAAA,EAC/B,SAASA,YAAAA,CACP;AAAA,IACE,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,GAAc,sBAAA;AAAA,IACd,iBAAA,GAAoB,qBAAA;AAAA,IACpB,WAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA,GAAU,KAAA;AAAA,IACV,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,KAAA;AAAA,IACZ,UAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,EAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,OAAA,GAAkC,KAAA,CAAA,OAAA;AAAA,MACtC,MACE,SAAA,CAAU,OAAA;AAAA,QAAQ,CAAC,QAAA,KACjB,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UAC9B,OAAO,KAAA,CAAM,EAAA;AAAA,UACb,OAAO,KAAA,CAAM,IAAA;AAAA,UACb,OAAO,QAAA,CAAS,IAAA;AAAA,UAChB,OAAO,KAAA,CAAM;AAAA,SACf,CAAE;AAAA,OACJ;AAAA,MACF,CAAC,SAAS;AAAA,KACZ;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA,WAAA;AAAA,QACA,iBAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,EAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,QACjC;AAAA;AAAA,KACF;AAAA,EAEJ;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/model-picker/ModelPicker.tsx"],"names":["ModelPicker"],"mappings":";;;;;AA2CO,IAAM,WAAA,GAAoB,KAAA,CAAA,UAAA;AAAA,EAC/B,SAASA,YAAAA,CACP;AAAA,IACE,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,GAAc,sBAAA;AAAA,IACd,iBAAA,GAAoB,qBAAA;AAAA,IACpB,WAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA,GAAU,KAAA;AAAA,IACV,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,KAAA;AAAA,IACZ,UAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,EAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,OAAA,GAAkC,KAAA,CAAA,OAAA;AAAA,MACtC,MACE,SAAA,CAAU,OAAA;AAAA,QAAQ,CAAC,QAAA,KACjB,QAAA,CAAS,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UAC9B,OAAO,KAAA,CAAM,EAAA;AAAA,UACb,OAAO,KAAA,CAAM,IAAA;AAAA,UACb,OAAO,QAAA,CAAS,IAAA;AAAA,UAChB,OAAO,KAAA,CAAM;AAAA,SACf,CAAE;AAAA,OACJ;AAAA,MACF,CAAC,SAAS;AAAA,KACZ;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA,WAAA;AAAA,QACA,iBAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,EAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,QACjC;AAAA;AAAA,KACF;AAAA,EAEJ;AACF","file":"chunk-OPTH3VUY.js","sourcesContent":["import * as React from 'react'\nimport { cn } from '../../lib/utils'\nimport {\n Combobox,\n type ComboboxOption,\n} from '../combobox'\n\nexport interface ModelPickerModel {\n id: string\n name: string\n /** Short capability chip, e.g. `vision` or `tools`. */\n capability?: string\n}\n\nexport interface ModelPickerProvider {\n id: string\n name: string\n models: ModelPickerModel[]\n}\n\nexport interface ModelPickerProps {\n providers: ModelPickerProvider[]\n value?: string\n onChange: (modelId: string) => void\n placeholder?: string\n searchPlaceholder?: string\n searchLabel?: string\n emptyLabel?: string\n loading?: boolean\n disabled?: boolean\n clearable?: boolean\n clearLabel?: string\n label?: string\n error?: string\n id?: string\n className?: string\n panelClassName?: string\n}\n\n/**\n * Grouped, searchable provider → model picker. Presentational: the model\n * list comes in via props, selection goes out via `onChange`.\n */\nexport const ModelPicker = React.forwardRef<HTMLButtonElement, ModelPickerProps>(\n function ModelPicker(\n {\n providers,\n value,\n onChange,\n placeholder = 'Select a model…',\n searchPlaceholder = 'Search models…',\n searchLabel,\n emptyLabel,\n loading = false,\n disabled = false,\n clearable = false,\n clearLabel,\n label,\n error,\n id,\n className,\n panelClassName,\n },\n ref,\n ) {\n const options: ComboboxOption[] = React.useMemo(\n () =>\n providers.flatMap((provider) =>\n provider.models.map((model) => ({\n value: model.id,\n label: model.name,\n group: provider.name,\n badge: model.capability,\n })),\n ),\n [providers],\n )\n\n return (\n <Combobox\n ref={ref}\n options={options}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n searchPlaceholder={searchPlaceholder}\n searchLabel={searchLabel}\n emptyLabel={emptyLabel}\n loading={loading}\n disabled={disabled}\n clearable={clearable}\n clearLabel={clearLabel}\n label={label}\n error={error}\n id={id}\n className={cn('w-full', className)}\n panelClassName={panelClassName}\n />\n )\n },\n)\n"]}
|
|
@@ -47,7 +47,7 @@ var RangeBar = React.forwardRef(
|
|
|
47
47
|
valuePct !== null ? /* @__PURE__ */ jsx(
|
|
48
48
|
"div",
|
|
49
49
|
{
|
|
50
|
-
className: "absolute top-1/2 size-2.5
|
|
50
|
+
className: "absolute top-1/2 size-2.5 [translate:-50%_-50%] rounded-full border-2 border-[var(--as-surface-raised)] bg-[var(--as-primary)] shadow-[var(--as-shadow-1)]",
|
|
51
51
|
style: { left: `${valuePct}%` },
|
|
52
52
|
title: `${valueLabel}: ${fmt(value)}${unit ? ` ${unit}` : ""}`
|
|
53
53
|
}
|
|
@@ -70,5 +70,5 @@ var RangeBar = React.forwardRef(
|
|
|
70
70
|
);
|
|
71
71
|
|
|
72
72
|
export { RangeBar };
|
|
73
|
-
//# sourceMappingURL=chunk-
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
73
|
+
//# sourceMappingURL=chunk-PFAH25VU.js.map
|
|
74
|
+
//# sourceMappingURL=chunk-PFAH25VU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/range-bar/RangeBar.tsx"],"names":["RangeBar"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/components/range-bar/RangeBar.tsx"],"names":["RangeBar"],"mappings":"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","file":"chunk-PFAH25VU.js","sourcesContent":["import * as React from 'react'\nimport { cn } from '../../lib/utils'\n\nexport interface RangeBarProps extends React.ComponentProps<'div'> {\n low: number\n high: number\n min?: number\n max?: number\n value?: number | null\n unit?: string\n label?: string\n valueLabel?: string\n}\n\nfunction pct(value: number, domainMin: number, domainMax: number): number {\n if (domainMax === domainMin) return 0\n return ((value - domainMin) / (domainMax - domainMin)) * 100\n}\n\nfunction fmt(value: number): string {\n return Number.isInteger(value)\n ? value.toLocaleString()\n : value.toFixed(1).replace(/\\.0$/, '')\n}\n\nexport const RangeBar = React.forwardRef<HTMLDivElement, RangeBarProps>(\n function RangeBar(\n { low, high, min, max, value, unit, label, valueLabel = 'You', className, ...props },\n ref,\n ) {\n if (!Number.isFinite(low) || !Number.isFinite(high) || high <= low) {\n return null\n }\n\n const span = high - low\n let domainMin = min ?? low - span\n let domainMax = max ?? high + span\n if (domainMin < 0 && low >= 0) {\n const shift = -domainMin\n domainMin = 0\n domainMax += shift\n }\n if (domainMax <= domainMin) domainMax = domainMin + span\n\n const left = Math.max(0, Math.min(100, pct(low, domainMin, domainMax)))\n const right = Math.max(0, Math.min(100, pct(high, domainMin, domainMax)))\n const valuePct =\n value !== null && value !== undefined && Number.isFinite(value)\n ? Math.max(0, Math.min(100, pct(value, domainMin, domainMax)))\n : null\n\n return (\n <div\n ref={ref}\n data-as=\"range-bar\"\n className={cn('w-full', className)}\n {...props}\n >\n {label ? (\n <p className=\"mb-1 text-xs text-[var(--as-muted-fg)]\">{label}</p>\n ) : null}\n <div className=\"relative h-3.5 w-full rounded-full bg-[var(--as-muted)]\">\n <div\n className=\"absolute h-full rounded-full bg-[color-mix(in_srgb,var(--as-primary)_30%,transparent)]\"\n style={{ left: `${left}%`, width: `${Math.max(0, right - left)}%` }}\n title={`${label ? `${label}: ` : ''}${fmt(low)} – ${fmt(high)}${unit ? ` ${unit}` : ''}`}\n />\n {valuePct !== null ? (\n <div\n className=\"absolute top-1/2 size-2.5 [translate:-50%_-50%] rounded-full border-2 border-[var(--as-surface-raised)] bg-[var(--as-primary)] shadow-[var(--as-shadow-1)]\"\n style={{ left: `${valuePct}%` }}\n title={`${valueLabel}: ${fmt(value as number)}${unit ? ` ${unit}` : ''}`}\n />\n ) : null}\n </div>\n <div className=\"mt-0.5 flex justify-between text-[10px] text-[var(--as-muted-fg)]\">\n <span>{fmt(domainMin)}</span>\n <span className=\"font-medium\">\n {fmt(low)} – {fmt(high)}\n {unit ? ` ${unit}` : ''}\n </span>\n <span>{fmt(domainMax)}</span>\n </div>\n </div>\n )\n },\n)\n"]}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { TimePickerContent } from './chunk-ERK53RFJ.js';
|
|
2
|
+
import { Popover, PopoverTrigger, PopoverContent } from './chunk-SIIY2EGI.js';
|
|
3
|
+
import { cn } from './chunk-BLJWR4ZV.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { Plus, Clock, X } from 'lucide-react';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function readTime(value) {
|
|
9
|
+
const m = /^(\d{1,2}):(\d{1,2})$/.exec((value || "").trim());
|
|
10
|
+
if (!m) return null;
|
|
11
|
+
const h = parseInt(m[1], 10);
|
|
12
|
+
const min = parseInt(m[2], 10);
|
|
13
|
+
if (Number.isNaN(h) || Number.isNaN(min) || h < 0 || h > 23 || min < 0 || min > 59) return null;
|
|
14
|
+
const period = h < 12 ? "AM" : "PM";
|
|
15
|
+
const h12 = h === 0 ? 12 : h > 12 ? h - 12 : h;
|
|
16
|
+
return { h12, min, period };
|
|
17
|
+
}
|
|
18
|
+
var TimeChip = ({
|
|
19
|
+
value,
|
|
20
|
+
onChange,
|
|
21
|
+
onRemove,
|
|
22
|
+
clockSize,
|
|
23
|
+
removeLabel,
|
|
24
|
+
disabled
|
|
25
|
+
}) => {
|
|
26
|
+
const [open, setOpen] = React.useState(false);
|
|
27
|
+
const parsed = readTime(value ?? "");
|
|
28
|
+
const main = parsed ? parsed.h12.toString() : "--";
|
|
29
|
+
const minStr = parsed ? parsed.min.toString().padStart(2, "0") : "--";
|
|
30
|
+
const period = parsed ? parsed.period : "";
|
|
31
|
+
return /* @__PURE__ */ jsx(Popover, { open: open && !disabled, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs("span", { className: "relative inline-flex group", children: [
|
|
32
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsxs(
|
|
33
|
+
"button",
|
|
34
|
+
{
|
|
35
|
+
type: "button",
|
|
36
|
+
"aria-label": `Edit ${value}`,
|
|
37
|
+
className: cn(
|
|
38
|
+
"inline-flex cursor-pointer select-none items-center gap-2 rounded-[var(--as-radius)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] py-2 pl-3 pr-7 transition-[border-color,box-shadow,translate] hover:border-[var(--as-primary)] focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)]",
|
|
39
|
+
!disabled && "hover:-translate-y-0.5 hover:shadow-[var(--as-shadow-2)]",
|
|
40
|
+
disabled && "cursor-not-allowed opacity-50"
|
|
41
|
+
),
|
|
42
|
+
children: [
|
|
43
|
+
/* @__PURE__ */ jsx("span", { className: "flex size-7 shrink-0 items-center justify-center rounded-[var(--as-radius-sm)] bg-[color-mix(in_srgb,var(--as-primary)_12%,transparent)] text-[var(--as-primary)]", children: /* @__PURE__ */ jsx(Clock, { className: "size-4", "aria-hidden": true }) }),
|
|
44
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-baseline gap-1 tabular-nums", children: [
|
|
45
|
+
/* @__PURE__ */ jsxs("span", { className: "text-base font-extrabold leading-none text-[var(--as-fg)]", children: [
|
|
46
|
+
main,
|
|
47
|
+
":",
|
|
48
|
+
minStr
|
|
49
|
+
] }),
|
|
50
|
+
period ? /* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold uppercase tracking-wider text-[var(--as-muted-fg)]", children: period }) : null
|
|
51
|
+
] })
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
) }),
|
|
55
|
+
!disabled ? /* @__PURE__ */ jsx(
|
|
56
|
+
"button",
|
|
57
|
+
{
|
|
58
|
+
type: "button",
|
|
59
|
+
"aria-label": removeLabel,
|
|
60
|
+
onClick: (e) => {
|
|
61
|
+
e.stopPropagation();
|
|
62
|
+
onRemove();
|
|
63
|
+
},
|
|
64
|
+
className: "absolute right-1.5 top-1/2 z-10 flex size-5 cursor-pointer items-center justify-center rounded-full bg-[var(--as-surface-raised)] text-[var(--as-muted-fg)] opacity-0 transition-all hover:bg-[var(--as-danger)] hover:text-[var(--as-danger-fg)] focus-visible:opacity-100 group-hover:opacity-100",
|
|
65
|
+
style: { translate: "0 -50%" },
|
|
66
|
+
children: /* @__PURE__ */ jsx(X, { className: "size-3", "aria-hidden": true })
|
|
67
|
+
}
|
|
68
|
+
) : null,
|
|
69
|
+
/* @__PURE__ */ jsx(
|
|
70
|
+
PopoverContent,
|
|
71
|
+
{
|
|
72
|
+
align: "center",
|
|
73
|
+
sideOffset: 6,
|
|
74
|
+
collisionPadding: 8,
|
|
75
|
+
"aria-label": `Edit ${value}`,
|
|
76
|
+
className: "w-[300px] p-0",
|
|
77
|
+
children: /* @__PURE__ */ jsx(
|
|
78
|
+
TimePickerContent,
|
|
79
|
+
{
|
|
80
|
+
value,
|
|
81
|
+
onChange,
|
|
82
|
+
onDone: () => setOpen(false),
|
|
83
|
+
size: clockSize
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
] }) });
|
|
89
|
+
};
|
|
90
|
+
var TimeList = React.forwardRef(
|
|
91
|
+
function TimeList2({
|
|
92
|
+
value,
|
|
93
|
+
onChange,
|
|
94
|
+
label,
|
|
95
|
+
hint,
|
|
96
|
+
addLabel = "Add time",
|
|
97
|
+
emptyLabel,
|
|
98
|
+
maxItems,
|
|
99
|
+
maxItemsLabel = (n) => `Maximum of ${n} items.`,
|
|
100
|
+
removeLabel = "Remove time",
|
|
101
|
+
disabled = false,
|
|
102
|
+
clockSize = 220,
|
|
103
|
+
className
|
|
104
|
+
}, ref) {
|
|
105
|
+
const updateAt = React.useCallback(
|
|
106
|
+
(i, v) => {
|
|
107
|
+
if (disabled) return;
|
|
108
|
+
const next = value.slice();
|
|
109
|
+
next[i] = v;
|
|
110
|
+
onChange(next);
|
|
111
|
+
},
|
|
112
|
+
[disabled, value, onChange]
|
|
113
|
+
);
|
|
114
|
+
const removeAt = React.useCallback(
|
|
115
|
+
(i) => {
|
|
116
|
+
if (disabled) return;
|
|
117
|
+
onChange(value.filter((_, idx) => idx !== i));
|
|
118
|
+
},
|
|
119
|
+
[disabled, value, onChange]
|
|
120
|
+
);
|
|
121
|
+
const add = React.useCallback(() => {
|
|
122
|
+
if (disabled) return;
|
|
123
|
+
if (maxItems !== void 0 && value.length >= maxItems) return;
|
|
124
|
+
onChange([...value, "09:00"]);
|
|
125
|
+
}, [disabled, maxItems, value, onChange]);
|
|
126
|
+
const atMax = maxItems !== void 0 && value.length >= maxItems;
|
|
127
|
+
return /* @__PURE__ */ jsxs("div", { ref, "data-as": "time-list", className: cn("flex flex-col gap-2", className), children: [
|
|
128
|
+
label || hint ? /* @__PURE__ */ jsxs("div", { children: [
|
|
129
|
+
label ? /* @__PURE__ */ jsx("p", { className: "px-1 text-[10px] font-bold uppercase tracking-widest text-[var(--as-muted-fg)]", children: label }) : null,
|
|
130
|
+
hint ? /* @__PURE__ */ jsx("p", { className: "mt-0.5 px-1 text-[11px] text-[var(--as-muted-fg)]", children: hint }) : null
|
|
131
|
+
] }) : null,
|
|
132
|
+
value.length === 0 && emptyLabel ? /* @__PURE__ */ jsx("p", { className: "px-1 py-2 text-xs italic text-[var(--as-muted-fg)]", children: emptyLabel }) : /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: value.map((time, i) => /* @__PURE__ */ jsx(
|
|
133
|
+
TimeChip,
|
|
134
|
+
{
|
|
135
|
+
value: time,
|
|
136
|
+
onChange: (v) => updateAt(i, v),
|
|
137
|
+
onRemove: () => removeAt(i),
|
|
138
|
+
clockSize,
|
|
139
|
+
removeLabel,
|
|
140
|
+
disabled
|
|
141
|
+
},
|
|
142
|
+
`${i}-${time}`
|
|
143
|
+
)) }),
|
|
144
|
+
!atMax && !disabled ? /* @__PURE__ */ jsxs(
|
|
145
|
+
"button",
|
|
146
|
+
{
|
|
147
|
+
type: "button",
|
|
148
|
+
onClick: add,
|
|
149
|
+
className: "inline-flex cursor-pointer items-center gap-1.5 rounded-[var(--as-radius)] border border-dashed border-[var(--as-border)] py-1.5 pl-2.5 pr-3 text-xs font-bold text-[var(--as-muted-fg)] transition-colors hover:border-[var(--as-primary)] hover:bg-[color-mix(in_srgb,var(--as-primary)_6%,transparent)] hover:text-[var(--as-primary)]",
|
|
150
|
+
children: [
|
|
151
|
+
/* @__PURE__ */ jsx(Plus, { className: "size-3.5", "aria-hidden": true }),
|
|
152
|
+
addLabel
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
) : null,
|
|
156
|
+
atMax && maxItems !== void 0 ? /* @__PURE__ */ jsx("p", { className: "text-[10px] italic text-[var(--as-muted-fg)]", children: maxItemsLabel(maxItems) }) : null
|
|
157
|
+
] });
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
export { TimeList };
|
|
162
|
+
//# sourceMappingURL=chunk-TJLELOAW.js.map
|
|
163
|
+
//# sourceMappingURL=chunk-TJLELOAW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/time-list/TimeList.tsx"],"names":["ClockIcon","TimeList"],"mappings":"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","file":"chunk-TJLELOAW.js","sourcesContent":["import * as React from 'react'\nimport { Clock as ClockIcon, Plus, X } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { TimePickerContent } from '../time-picker/TimePicker'\n\nexport interface TimeListProps {\n /** List of 24-hour `HH:MM` strings. */\n value: string[]\n /** Push the fully replaced list back to the parent. */\n onChange: (next: string[]) => void\n /** Optional heading rendered above the chips. */\n label?: string\n /** Optional helper text rendered under the label. */\n hint?: string\n addLabel?: string\n emptyLabel?: string\n /** Cap the number of chips; renders a note when reached. */\n maxItems?: number\n maxItemsLabel?: (n: number) => string\n removeLabel?: string\n /** Disable every chip + the add button. */\n disabled?: boolean\n /** Diameter of the picker's clock face (default 220). */\n clockSize?: number\n className?: string\n}\n\nfunction readTime(value: string): { h12: number; min: number; period: 'AM' | 'PM' } | null {\n const m = /^(\\d{1,2}):(\\d{1,2})$/.exec((value || '').trim())\n if (!m) return null\n const h = parseInt(m[1]!, 10)\n const min = parseInt(m[2]!, 10)\n if (Number.isNaN(h) || Number.isNaN(min) || h < 0 || h > 23 || min < 0 || min > 59) return null\n const period: 'AM' | 'PM' = h < 12 ? 'AM' : 'PM'\n const h12 = h === 0 ? 12 : h > 12 ? h - 12 : h\n return { h12, min, period }\n}\n\ninterface ChipProps {\n value: string\n onChange: (v: string) => void\n onRemove: () => void\n clockSize: number\n removeLabel: string\n disabled?: boolean\n}\n\nconst TimeChip: React.FC<ChipProps> = ({\n value,\n onChange,\n onRemove,\n clockSize,\n removeLabel,\n disabled,\n}) => {\n const [open, setOpen] = React.useState(false)\n const parsed = readTime(value ?? '')\n\n const main = parsed ? parsed.h12.toString() : '--'\n const minStr = parsed ? parsed.min.toString().padStart(2, '0') : '--'\n const period = parsed ? parsed.period : ''\n\n return (\n <Popover open={open && !disabled} onOpenChange={setOpen}>\n <span className=\"relative inline-flex group\">\n <PopoverTrigger asChild disabled={disabled}>\n <button\n type=\"button\"\n aria-label={`Edit ${value}`}\n className={cn(\n 'inline-flex cursor-pointer select-none items-center gap-2 rounded-[var(--as-radius)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] py-2 pl-3 pr-7 transition-[border-color,box-shadow,translate] hover:border-[var(--as-primary)] focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)]',\n !disabled && 'hover:-translate-y-0.5 hover:shadow-[var(--as-shadow-2)]',\n disabled && 'cursor-not-allowed opacity-50',\n )}\n >\n <span className=\"flex size-7 shrink-0 items-center justify-center rounded-[var(--as-radius-sm)] bg-[color-mix(in_srgb,var(--as-primary)_12%,transparent)] text-[var(--as-primary)]\">\n <ClockIcon className=\"size-4\" aria-hidden />\n </span>\n <span className=\"flex items-baseline gap-1 tabular-nums\">\n <span className=\"text-base font-extrabold leading-none text-[var(--as-fg)]\">\n {main}:{minStr}\n </span>\n {period ? (\n <span className=\"text-[10px] font-bold uppercase tracking-wider text-[var(--as-muted-fg)]\">\n {period}\n </span>\n ) : null}\n </span>\n </button>\n </PopoverTrigger>\n {!disabled ? (\n <button\n type=\"button\"\n aria-label={removeLabel}\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n className=\"absolute right-1.5 top-1/2 z-10 flex size-5 cursor-pointer items-center justify-center rounded-full bg-[var(--as-surface-raised)] text-[var(--as-muted-fg)] opacity-0 transition-all hover:bg-[var(--as-danger)] hover:text-[var(--as-danger-fg)] focus-visible:opacity-100 group-hover:opacity-100\"\n style={{ translate: '0 -50%' }}\n >\n <X className=\"size-3\" aria-hidden />\n </button>\n ) : null}\n <PopoverContent\n align=\"center\"\n sideOffset={6}\n collisionPadding={8}\n aria-label={`Edit ${value}`}\n className=\"w-[300px] p-0\"\n >\n <TimePickerContent\n value={value}\n onChange={onChange}\n onDone={() => setOpen(false)}\n size={clockSize}\n />\n </PopoverContent>\n </span>\n </Popover>\n )\n}\n\n/**\n * Chip-based editor for a list of `HH:MM` times: each chip opens the clock\n * picker, an add pill appends a slot. For a single time use `TimePicker`.\n */\nexport const TimeList = React.forwardRef<HTMLDivElement, TimeListProps>(\n function TimeList(\n {\n value,\n onChange,\n label,\n hint,\n addLabel = 'Add time',\n emptyLabel,\n maxItems,\n maxItemsLabel = (n) => `Maximum of ${n} items.`,\n removeLabel = 'Remove time',\n disabled = false,\n clockSize = 220,\n className,\n },\n ref,\n ) {\n const updateAt = React.useCallback(\n (i: number, v: string) => {\n if (disabled) return\n const next = value.slice()\n next[i] = v\n onChange(next)\n },\n [disabled, value, onChange],\n )\n\n const removeAt = React.useCallback(\n (i: number) => {\n if (disabled) return\n onChange(value.filter((_, idx) => idx !== i))\n },\n [disabled, value, onChange],\n )\n\n const add = React.useCallback(() => {\n if (disabled) return\n if (maxItems !== undefined && value.length >= maxItems) return\n onChange([...value, '09:00'])\n }, [disabled, maxItems, value, onChange])\n\n const atMax = maxItems !== undefined && value.length >= maxItems\n\n return (\n <div ref={ref} data-as=\"time-list\" className={cn('flex flex-col gap-2', className)}>\n {label || hint ? (\n <div>\n {label ? (\n <p className=\"px-1 text-[10px] font-bold uppercase tracking-widest text-[var(--as-muted-fg)]\">\n {label}\n </p>\n ) : null}\n {hint ? (\n <p className=\"mt-0.5 px-1 text-[11px] text-[var(--as-muted-fg)]\">{hint}</p>\n ) : null}\n </div>\n ) : null}\n\n {value.length === 0 && emptyLabel ? (\n <p className=\"px-1 py-2 text-xs italic text-[var(--as-muted-fg)]\">{emptyLabel}</p>\n ) : (\n <div className=\"flex flex-wrap gap-2\">\n {value.map((time, i) => (\n <TimeChip\n key={`${i}-${time}`}\n value={time}\n onChange={(v) => updateAt(i, v)}\n onRemove={() => removeAt(i)}\n clockSize={clockSize}\n removeLabel={removeLabel}\n disabled={disabled}\n />\n ))}\n </div>\n )}\n\n {!atMax && !disabled ? (\n <button\n type=\"button\"\n onClick={add}\n className=\"inline-flex cursor-pointer items-center gap-1.5 rounded-[var(--as-radius)] border border-dashed border-[var(--as-border)] py-1.5 pl-2.5 pr-3 text-xs font-bold text-[var(--as-muted-fg)] transition-colors hover:border-[var(--as-primary)] hover:bg-[color-mix(in_srgb,var(--as-primary)_6%,transparent)] hover:text-[var(--as-primary)]\"\n >\n <Plus className=\"size-3.5\" aria-hidden />\n {addLabel}\n </button>\n ) : null}\n\n {atMax && maxItems !== undefined ? (\n <p className=\"text-[10px] italic text-[var(--as-muted-fg)]\">{maxItemsLabel(maxItems)}</p>\n ) : null}\n </div>\n )\n },\n)\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ModelPicker } from './chunk-
|
|
1
|
+
import { ModelPicker } from './chunk-OPTH3VUY.js';
|
|
2
2
|
import { cn } from './chunk-BLJWR4ZV.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { X } from 'lucide-react';
|
|
@@ -88,5 +88,5 @@ var TaskAssignmentPicker = React.forwardRef(function TaskAssignmentPicker2({
|
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
export { TaskAssignmentPicker };
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
//# sourceMappingURL=chunk-TN35RR2R.js.map
|
|
92
|
+
//# sourceMappingURL=chunk-TN35RR2R.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/task-assignment-picker/TaskAssignmentPicker.tsx"],"names":["TaskAssignmentPicker"],"mappings":";;;;;;AA+BO,IAAM,oBAAA,GAA6B,KAAA,CAAA,UAAA,CAGxC,SAASA,qBAAAA,CACT;AAAA,EACE,KAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB,cAAA;AAAA,EAClB,UAAA,GAAa,kBAAA;AAAA,EACb,UAAA,GAAa,OAAA;AAAA,EACb,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAkB,KAAA,CAAA,WAAA;AAAA,IACtB,CAAC,OAAA,KAAuC;AACtC,MAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,MAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,QAAA,MAAM,KAAA,GAAQ,SAAS,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,OAAO,CAAA;AAC1D,QAAA,IAAI,KAAA,SAAc,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,QAAA,EAAU,SAAS,IAAA,EAAK;AAAA,MAChE;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,SAAS;AAAA,GACZ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAQ,wBAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,MAEpD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,QAAA,MAAM,QAAA,GAAW,SAAA,CAAU,KAAA,CAAM,IAAA,CAAK,EAAE,CAAC,CAAA;AACzC,QAAA,uBACE,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,qKAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,SAAA,EACb,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oDAAA,EACV,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA;AAAA,gBACC,IAAA,CAAK,8BACJ,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,4CAAA,EACV,QAAA,EAAA,IAAA,CAAK,aACR,CAAA,GACE,IAAA;AAAA,gCACJ,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0CAAA,EACV,qCACC,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,kBAAA,UAAA;AAAA,kBAAW,GAAA;AAAA,kBAAE,GAAA;AAAA,kCACd,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAA,EACb,QAAA,EAAA;AAAA,oBAAA,QAAA,CAAS,QAAA;AAAA,oBAAS,KAAA;AAAA,oBAAI,QAAA,CAAS;AAAA,mBAAA,EAClC;AAAA,iBAAA,EACF,IAEA,eAAA,EAEJ;AAAA,eAAA,EACF,CAAA;AAAA,8BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EACb,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,WAAA;AAAA,kBAAA;AAAA,oBACC,SAAA;AAAA,oBACA,KAAA,EAAO,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,IAAK,EAAA;AAAA,oBACzB,UAAU,CAAC,OAAA,KAAY,QAAA,CAAS,IAAA,CAAK,IAAI,OAAO,CAAA;AAAA,oBAChD,QAAA;AAAA,oBACA,SAAA,EAAW,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,oBACjC,UAAA;AAAA,oBACA,SAAA,EAAU;AAAA;AAAA,iBACZ;AAAA,gBACC,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,mBACZ,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,YAAA,EAAY,CAAA,EAAG,UAAU,CAAA,QAAA,EAAM,KAAK,KAAK,CAAA,CAAA;AAAA,oBACzC,QAAA;AAAA,oBACA,OAAA,EAAS,MAAM,QAAA,CAAS,IAAA,CAAK,IAAI,IAAI,CAAA;AAAA,oBACrC,SAAA,EAAU,0SAAA;AAAA,oBAEV,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC;AAAA;AAAA,iBACpC,GACE;AAAA,eAAA,EACN;AAAA;AAAA,WAAA;AAAA,UA9CK,IAAA,CAAK;AAAA,SA+CZ;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ,CAAC","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/task-assignment-picker/TaskAssignmentPicker.tsx"],"names":["TaskAssignmentPicker"],"mappings":"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","file":"chunk-TN35RR2R.js","sourcesContent":["import * as React from 'react'\nimport { X } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport {\n ModelPicker,\n type ModelPickerProvider,\n} from '../model-picker/ModelPicker'\n\nexport interface TaskAssignmentTask {\n id: string\n label: string\n description?: string\n}\n\nexport interface TaskAssignmentPickerProps {\n tasks: TaskAssignmentTask[]\n providers: ModelPickerProvider[]\n /** Current mapping: taskId → modelId (null/undefined = unassigned). */\n value: Record<string, string | null>\n onAssign: (taskId: string, modelId: string | null) => void\n unassignedLabel?: string\n clearLabel?: string\n modelLabel?: string\n disabled?: boolean\n className?: string\n}\n\n/**\n * Task → model mapping list. Presentational: tasks, the model catalog and\n * the current mapping come in via props; changes go out via `onAssign`.\n */\nexport const TaskAssignmentPicker = React.forwardRef<\n HTMLDivElement,\n TaskAssignmentPickerProps\n>(function TaskAssignmentPicker(\n {\n tasks,\n providers,\n value,\n onAssign,\n unassignedLabel = 'Not assigned',\n clearLabel = 'Clear assignment',\n modelLabel = 'Model',\n disabled = false,\n className,\n },\n ref,\n) {\n const modelName = React.useCallback(\n (modelId: string | null | undefined) => {\n if (!modelId) return null\n for (const provider of providers) {\n const model = provider.models.find((m) => m.id === modelId)\n if (model) return { name: model.name, provider: provider.name }\n }\n return null\n },\n [providers],\n )\n\n return (\n <div\n ref={ref}\n data-as=\"task-assignment-picker\"\n className={cn('flex w-full flex-col gap-3', className)}\n >\n {tasks.map((task) => {\n const assigned = modelName(value[task.id])\n return (\n <div\n key={task.id}\n className=\"flex flex-col gap-2 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-3 sm:flex-row sm:items-center sm:justify-between\"\n >\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-semibold text-[var(--as-fg)]\">\n {task.label}\n </p>\n {task.description ? (\n <p className=\"truncate text-xs text-[var(--as-muted-fg)]\">\n {task.description}\n </p>\n ) : null}\n <p className=\"mt-0.5 text-xs text-[var(--as-muted-fg)]\">\n {assigned ? (\n <>\n {modelLabel}:{' '}\n <span className=\"font-medium text-[var(--as-fg)]\">\n {assigned.provider} / {assigned.name}\n </span>\n </>\n ) : (\n unassignedLabel\n )}\n </p>\n </div>\n <div className=\"flex shrink-0 items-center gap-1.5\">\n <ModelPicker\n providers={providers}\n value={value[task.id] ?? ''}\n onChange={(modelId) => onAssign(task.id, modelId)}\n disabled={disabled}\n clearable={Boolean(value[task.id])}\n clearLabel={clearLabel}\n className=\"w-56\"\n />\n {value[task.id] ? (\n <button\n type=\"button\"\n aria-label={`${clearLabel} — ${task.label}`}\n disabled={disabled}\n onClick={() => onAssign(task.id, null)}\n className=\"cursor-pointer rounded-[var(--as-radius-sm)] p-1.5 text-[var(--as-muted-fg)] transition-colors hover:bg-[var(--as-muted)] hover:text-[var(--as-fg)] focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)] disabled:pointer-events-none disabled:opacity-50\"\n >\n <X className=\"size-4\" aria-hidden />\n </button>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n )\n})\n"]}
|
|
@@ -36,7 +36,7 @@ var ModalContent = React.forwardRef(function ModalContent2({ className, children
|
|
|
36
36
|
ref,
|
|
37
37
|
"data-as": "modal",
|
|
38
38
|
className: cn(
|
|
39
|
-
"as-anim-modal fixed
|
|
39
|
+
"as-anim-modal fixed inset-0 z-[var(--as-z-modal)] m-auto flex h-fit max-h-[85vh] w-[calc(100%-2rem)] flex-col overflow-y-auto rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none",
|
|
40
40
|
modalContentVariants({ size }),
|
|
41
41
|
className
|
|
42
42
|
),
|
|
@@ -109,5 +109,5 @@ var ModalFooter = React.forwardRef(
|
|
|
109
109
|
);
|
|
110
110
|
|
|
111
111
|
export { Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants };
|
|
112
|
-
//# sourceMappingURL=chunk-
|
|
113
|
-
//# sourceMappingURL=chunk-
|
|
112
|
+
//# sourceMappingURL=chunk-Y7BKBG57.js.map
|
|
113
|
+
//# sourceMappingURL=chunk-Y7BKBG57.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/modal/Modal.tsx"],"names":["ModalContent","ModalHeader","ModalTitle","ModalDescription","ModalFooter"],"mappings":";;;;;;;AAMO,IAAM,KAAA,GAAwB,eAAA,CAAA;AAC9B,IAAM,YAAA,GAA+B,eAAA,CAAA;AACrC,IAAM,UAAA,GAA6B,eAAA,CAAA;AAE1C,IAAM,oBAAA,GAAuB,IAAI,EAAA,EAAI;AAAA,EACnC,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAQM,IAAM,YAAA,GAAqB,KAAA,CAAA,UAAA,CAGhC,SAASA,aAAAA,CAAa,EAAE,SAAA,EAAW,QAAA,EAAU,IAAA,EAAM,UAAA,GAAa,OAAA,EAAS,GAAG,KAAA,IAAS,GAAA,EAAK;AAC1F,EAAA,uBACE,IAAA,CAAiB,wBAAhB,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAiB,eAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACC,SAAA,EAAQ,eAAA;AAAA,QACR,SAAA,EAAW,GAAG,yEAAyE;AAAA;AAAA,KACzF;AAAA,oBACA,IAAA;AAAA,MAAiB,eAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAQ,OAAA;AAAA,QACR,SAAA,EAAW,EAAA;AAAA,UACT
|
|
1
|
+
{"version":3,"sources":["../src/components/modal/Modal.tsx"],"names":["ModalContent","ModalHeader","ModalTitle","ModalDescription","ModalFooter"],"mappings":"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","file":"chunk-Y7BKBG57.js","sourcesContent":["import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { X } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\nexport const Modal = DialogPrimitive.Root\nexport const ModalTrigger = DialogPrimitive.Trigger\nexport const ModalClose = DialogPrimitive.Close\n\nconst modalContentVariants = cva('', {\n variants: {\n size: {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport interface ModalContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof modalContentVariants> {\n closeLabel?: string\n}\n\nexport const ModalContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n ModalContentProps\n>(function ModalContent({ className, children, size, closeLabel = 'Close', ...props }, ref) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-as=\"modal-overlay\"\n className={cn('as-anim-fade fixed inset-0 z-[var(--as-z-modal)] bg-[var(--as-overlay)]')}\n />\n <DialogPrimitive.Content\n ref={ref}\n data-as=\"modal\"\n className={cn(\n 'as-anim-modal fixed inset-0 z-[var(--as-z-modal)] m-auto flex h-fit max-h-[85vh] w-[calc(100%-2rem)] flex-col overflow-y-auto rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none',\n modalContentVariants({ size }),\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n aria-label={closeLabel}\n className=\"absolute right-4 top-4 rounded-[var(--as-radius-sm)] p-1 text-[var(--as-muted-fg)] transition-colors hover:bg-[var(--as-secondary)] hover:text-[var(--as-fg)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]\"\n >\n <X aria-hidden=\"true\" className=\"size-4\" />\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n )\n})\n\nexport const ModalHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function ModalHeader({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-as=\"modal-header\"\n className={cn('flex flex-col gap-1.5 p-6 pb-4', className)}\n {...props}\n />\n )\n },\n)\n\nexport const ModalTitle = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(function ModalTitle({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Title\n ref={ref}\n data-as=\"modal-title\"\n className={cn('pr-8 text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n )\n})\n\nexport const ModalDescription = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(function ModalDescription({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Description\n ref={ref}\n data-as=\"modal-description\"\n className={cn('text-sm text-[var(--as-muted-fg)]', className)}\n {...props}\n />\n )\n})\n\nexport const ModalFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n function ModalFooter({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-as=\"modal-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 p-6 pt-0 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n )\n },\n)\n\nexport { modalContentVariants }\n"]}
|
|
@@ -126,7 +126,7 @@ function Wizard({
|
|
|
126
126
|
"aria-describedby": void 0,
|
|
127
127
|
className: cn(
|
|
128
128
|
"flex flex-col overflow-hidden border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none",
|
|
129
|
-
variant === "drawer" ? "as-anim-drawer fixed inset-y-0 right-0 z-[var(--as-z-modal)] h-full w-4/5 max-w-md border-l" : "as-anim-modal fixed
|
|
129
|
+
variant === "drawer" ? "as-anim-drawer fixed inset-y-0 right-0 z-[var(--as-z-modal)] h-full w-4/5 max-w-md border-l" : "as-anim-modal fixed inset-0 z-[var(--as-z-modal)] mx-auto my-auto h-fit max-h-[92vh] w-[calc(100%-2rem)] rounded-[var(--as-radius-lg)]",
|
|
130
130
|
variant === "modal" && cn(
|
|
131
131
|
size === "sm" && "max-w-sm",
|
|
132
132
|
size === "md" && "max-w-md",
|
|
@@ -180,5 +180,5 @@ function Wizard({
|
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
export { Stepper, Wizard };
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
184
|
-
//# sourceMappingURL=chunk-
|
|
183
|
+
//# sourceMappingURL=chunk-YMCMUAIF.js.map
|
|
184
|
+
//# sourceMappingURL=chunk-YMCMUAIF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/wizard/Wizard.tsx"],"names":[],"mappings":"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","file":"chunk-75QQR2VT.js","sourcesContent":["import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { Sparkles, X, type LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '../button/Button'\n\nexport interface StepperStep {\n id: string\n label?: React.ReactNode\n icon?: LucideIcon\n}\n\nexport interface StepperProps {\n steps: StepperStep[]\n current: number\n variant?: 'dots' | 'labels'\n onStepClick?: (index: number) => void\n className?: string\n}\n\nexport function Stepper({\n steps,\n current,\n variant = 'dots',\n onStepClick,\n className,\n}: StepperProps) {\n if (variant === 'dots') {\n return (\n <div className={cn('flex items-center gap-1.5', className)} data-as=\"stepper\">\n <span className=\"sr-only\">\n Step {Math.min(current + 1, steps.length)} of {steps.length}\n </span>\n <div className=\"flex items-center gap-1.5\" aria-hidden>\n {steps.map((step, index) => (\n <span\n key={step.id}\n className={cn(\n 'size-2 rounded-full',\n index === current\n ? 'bg-[var(--as-primary)]'\n : index < current\n ? 'bg-[var(--as-primary)]/50'\n : 'bg-[var(--as-border)]',\n )}\n />\n ))}\n </div>\n </div>\n )\n }\n return (\n <ol className={cn('flex items-center gap-1', className)} data-as=\"stepper\">\n {steps.map((step, index) => {\n const Icon = step.icon\n const state = index < current ? 'done' : index === current ? 'current' : 'todo'\n const disabled = onStepClick === undefined || state === 'current'\n return (\n <li key={step.id}>\n <button\n type=\"button\"\n aria-current={state === 'current' ? 'step' : undefined}\n disabled={disabled}\n onClick={() => onStepClick?.(index)}\n className={cn(\n 'flex cursor-pointer items-center gap-1.5 rounded-[var(--as-radius)] px-2.5 py-1.5 text-sm transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)] disabled:cursor-default',\n state === 'current' && 'bg-[var(--as-primary)]/10 font-medium text-[var(--as-primary)]',\n state === 'done' && 'text-[var(--as-fg)] hover:bg-[var(--as-secondary)]',\n state === 'todo' && 'text-[var(--as-muted-fg)] hover:bg-[var(--as-secondary)]',\n )}\n >\n {Icon ? <Icon className=\"size-4\" aria-hidden /> : null}\n {step.label}\n </button>\n </li>\n )\n })}\n </ol>\n )\n}\n\nexport interface WizardStep {\n id: string\n icon?: LucideIcon\n title?: React.ReactNode\n subtitle?: React.ReactNode\n canContinue?: boolean\n nextLabel?: string\n hideFooter?: boolean\n}\n\nexport interface WizardContext {\n id: string\n index: number\n step: WizardStep\n isFirst: boolean\n isLast: boolean\n next: () => void\n back: () => void\n goTo: (index: number) => void\n}\n\nexport interface WizardProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: React.ReactNode\n steps: WizardStep[]\n renderStep: (ctx: WizardContext) => React.ReactNode\n initialStep?: number\n step?: number\n onStepChange?: (index: number) => void\n onSkip?: () => void\n skipLabel?: string | null\n backLabel?: string\n nextLabel?: string\n getStartedLabel?: string\n closeLabel?: string\n variant?: 'modal' | 'drawer'\n size?: 'sm' | 'md' | 'lg' | 'xl'\n contentClassName?: string\n}\n\nexport function Wizard({\n open,\n onOpenChange,\n title,\n steps,\n renderStep,\n initialStep = 0,\n step: stepProp,\n onStepChange,\n onSkip,\n skipLabel = 'Skip',\n backLabel = 'Back',\n nextLabel = 'Next',\n getStartedLabel = 'Get started',\n closeLabel = 'Close',\n variant = 'modal',\n size = 'lg',\n contentClassName,\n}: WizardProps) {\n const [internalStep, setInternalStep] = React.useState(initialStep)\n const isControlled = stepProp !== undefined\n const step = isControlled ? stepProp : internalStep\n const lastStep = Math.max(steps.length - 1, 0)\n const clamped = Math.min(Math.max(step, 0), lastStep)\n const current: WizardStep | undefined = steps[clamped]\n const StepIcon = current?.icon ?? Sparkles\n\n React.useEffect(() => {\n if (!open && !isControlled) {\n setInternalStep(initialStep)\n }\n }, [open, isControlled, initialStep])\n\n const goTo = React.useCallback(\n (index: number) => {\n const next = Math.min(Math.max(index, 0), lastStep)\n if (!isControlled) {\n setInternalStep(next)\n }\n onStepChange?.(next)\n },\n [isControlled, lastStep, onStepChange],\n )\n\n const ctx: WizardContext = {\n id: current?.id ?? '',\n index: clamped,\n step: current ?? { id: 'empty' },\n isFirst: clamped === 0,\n isLast: clamped === lastStep,\n next: () => goTo(clamped + 1),\n back: () => goTo(clamped - 1),\n goTo,\n }\n\n const skip = onSkip ?? (() => onOpenChange(false))\n const showFooter = !(current?.hideFooter ?? clamped === lastStep)\n const canContinue = current?.canContinue !== false\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-as=\"wizard-overlay\"\n className=\"as-anim-fade fixed inset-0 z-[var(--as-z-modal)] bg-[var(--as-overlay)]\"\n />\n <DialogPrimitive.Content\n data-as=\"wizard\"\n aria-describedby={undefined}\n className={cn(\n 'flex flex-col overflow-hidden border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none',\n variant === 'drawer'\n ? 'as-anim-drawer fixed inset-y-0 right-0 z-[var(--as-z-modal)] h-full w-4/5 max-w-md border-l'\n : 'as-anim-modal fixed left-1/2 top-1/2 z-[var(--as-z-modal)] max-h-[92vh] w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 rounded-[var(--as-radius-lg)]',\n variant === 'modal' &&\n cn(\n size === 'sm' && 'max-w-sm',\n size === 'md' && 'max-w-md',\n size === 'lg' && 'max-w-2xl',\n size === 'xl' && 'max-w-4xl',\n ),\n contentClassName,\n )}\n >\n <div className=\"flex items-center gap-3 border-b border-[var(--as-border)] px-5 py-4\">\n <span className=\"flex size-9 shrink-0 items-center justify-center rounded-[var(--as-radius)] bg-[var(--as-primary)]/10 text-[var(--as-primary)]\">\n <StepIcon className=\"size-5\" aria-hidden />\n </span>\n <div className=\"min-w-0 flex-1\">\n <DialogPrimitive.Title className=\"truncate text-sm font-semibold\">\n {title}\n </DialogPrimitive.Title>\n {current?.subtitle !== undefined ? (\n <p className=\"truncate text-xs text-[var(--as-muted-fg)]\">\n {current.subtitle}\n </p>\n ) : null}\n </div>\n <Stepper steps={steps} current={clamped} variant=\"dots\" />\n <DialogPrimitive.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={closeLabel}\n aria-label={closeLabel}\n onClick={skip}\n >\n <X className=\"size-4\" aria-hidden />\n </Button>\n </DialogPrimitive.Close>\n </div>\n <div className=\"flex-1 overflow-y-auto px-5 py-4\" data-as=\"wizard-body\">\n {current?.title !== undefined ? (\n <h2 className=\"mb-3 text-lg font-semibold\">{current.title}</h2>\n ) : null}\n {open ? renderStep(ctx) : null}\n </div>\n {showFooter ? (\n <div className=\"flex items-center gap-2 border-t border-[var(--as-border)] px-5 py-3\">\n <Button variant=\"ghost\" size=\"sm\" disabled={clamped === 0} onClick={ctx.back}>\n {backLabel}\n </Button>\n <div className=\"flex-1\" />\n {skipLabel !== null ? (\n <Button variant=\"ghost\" size=\"sm\" onClick={skip}>\n {skipLabel}\n </Button>\n ) : null}\n <Button\n size=\"sm\"\n disabled={!canContinue}\n onClick={ctx.next}\n >\n {clamped === 0 ? getStartedLabel : (current?.nextLabel ?? nextLabel)}\n </Button>\n </div>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/wizard/Wizard.tsx"],"names":[],"mappings":";;;;;;;AAoBO,SAAS,OAAA,CAAQ;AAAA,EACtB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,WAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,6BAA6B,SAAS,CAAA,EAAG,WAAQ,SAAA,EAClE,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,SAAA,EAAU,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAClB,IAAA,CAAK,GAAA,CAAI,OAAA,GAAU,CAAA,EAAG,MAAM,MAAM,CAAA;AAAA,QAAE,MAAA;AAAA,QAAK,KAAA,CAAM;AAAA,OAAA,EACvD,CAAA;AAAA,sBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EAA4B,aAAA,EAAW,MACnD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBAChB,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA;AAAA,YACT,qBAAA;AAAA,YACA,KAAA,KAAU,OAAA,GACN,wBAAA,GACA,KAAA,GAAQ,UACN,2BAAA,GACA;AAAA;AACR,SAAA;AAAA,QARK,IAAA,CAAK;AAAA,OAUb,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA,EAAG,SAAA,EAAQ,SAAA,EAC9D,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAC1B,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA;AAClB,IAAA,MAAM,QAAQ,KAAA,GAAQ,OAAA,GAAU,MAAA,GAAS,KAAA,KAAU,UAAU,SAAA,GAAY,MAAA;AACzE,IAAA,MAAM,QAAA,GAAW,WAAA,KAAgB,MAAA,IAAa,KAAA,KAAU,SAAA;AACxD,IAAA,2BACG,IAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,cAAA,EAAc,KAAA,KAAU,SAAA,GAAY,MAAA,GAAS,MAAA;AAAA,QAC7C,QAAA;AAAA,QACA,OAAA,EAAS,MAAM,WAAA,GAAc,KAAK,CAAA;AAAA,QAClC,SAAA,EAAW,EAAA;AAAA,UACT,yOAAA;AAAA,UACA,UAAU,SAAA,IAAa,gEAAA;AAAA,UACvB,UAAU,MAAA,IAAU,oDAAA;AAAA,UACpB,UAAU,MAAA,IAAU;AAAA,SACtB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,IAAA,uBAAQ,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,aAAA,EAAW,MAAC,CAAA,GAAK,IAAA;AAAA,UACjD,IAAA,CAAK;AAAA;AAAA;AAAA,KACR,EAAA,EAfO,KAAK,EAgBd,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AA2CO,SAAS,MAAA,CAAO;AAAA,EACrB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA,GAAc,CAAA;AAAA,EACd,IAAA,EAAM,QAAA;AAAA,EACN,YAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GAAY,MAAA;AAAA,EACZ,SAAA,GAAY,MAAA;AAAA,EACZ,SAAA,GAAY,MAAA;AAAA,EACZ,eAAA,GAAkB,aAAA;AAAA,EAClB,UAAA,GAAa,OAAA;AAAA,EACb,OAAA,GAAU,OAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAU,eAAS,WAAW,CAAA;AAClE,EAAA,MAAM,eAAe,QAAA,KAAa,MAAA;AAClC,EAAA,MAAM,IAAA,GAAO,eAAe,QAAA,GAAW,YAAA;AACvC,EAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAA,GAAS,GAAG,CAAC,CAAA;AAC7C,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,IAAA,EAAM,CAAC,GAAG,QAAQ,CAAA;AACpD,EAAA,MAAM,OAAA,GAAkC,MAAM,OAAO,CAAA;AACrD,EAAA,MAAM,QAAA,GAAW,SAAS,IAAA,IAAQ,QAAA;AAElC,EAAM,gBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,YAAA,EAAc;AAC1B,MAAA,eAAA,CAAgB,WAAW,CAAA;AAAA,IAC7B;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,YAAA,EAAc,WAAW,CAAC,CAAA;AAEpC,EAAA,MAAM,IAAA,GAAa,KAAA,CAAA,WAAA;AAAA,IACjB,CAAC,KAAA,KAAkB;AACjB,MAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,KAAA,EAAO,CAAC,GAAG,QAAQ,CAAA;AAClD,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,MACtB;AACA,MAAA,YAAA,GAAe,IAAI,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,QAAA,EAAU,YAAY;AAAA,GACvC;AAEA,EAAA,MAAM,GAAA,GAAqB;AAAA,IACzB,EAAA,EAAI,SAAS,EAAA,IAAM,EAAA;AAAA,IACnB,KAAA,EAAO,OAAA;AAAA,IACP,IAAA,EAAM,OAAA,IAAW,EAAE,EAAA,EAAI,OAAA,EAAQ;AAAA,IAC/B,SAAS,OAAA,KAAY,CAAA;AAAA,IACrB,QAAQ,OAAA,KAAY,QAAA;AAAA,IACpB,IAAA,EAAM,MAAM,IAAA,CAAK,OAAA,GAAU,CAAC,CAAA;AAAA,IAC5B,IAAA,EAAM,MAAM,IAAA,CAAK,OAAA,GAAU,CAAC,CAAA;AAAA,IAC5B;AAAA,GACF;AAEA,EAAA,MAAM,IAAA,GAAO,MAAA,KAAW,MAAM,YAAA,CAAa,KAAK,CAAA,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,EAAE,OAAA,EAAS,UAAA,IAAc,OAAA,KAAY,QAAA,CAAA;AACxD,EAAA,MAAM,WAAA,GAAc,SAAS,WAAA,KAAgB,KAAA;AAE7C,EAAA,2BACmB,eAAA,CAAA,IAAA,EAAhB,EAAqB,MAAY,YAAA,EAChC,QAAA,kBAAA,IAAA,CAAiB,wBAAhB,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAiB,eAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACC,SAAA,EAAQ,gBAAA;AAAA,QACR,SAAA,EAAU;AAAA;AAAA,KACZ;AAAA,oBACA,IAAA;AAAA,MAAiB,eAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACC,SAAA,EAAQ,QAAA;AAAA,QACR,kBAAA,EAAkB,MAAA;AAAA,QAClB,SAAA,EAAW,EAAA;AAAA,UACT,iKAAA;AAAA,UACA,OAAA,KAAY,WACR,6FAAA,GACA,wIAAA;AAAA,UACJ,YAAY,OAAA,IACV,EAAA;AAAA,YACE,SAAS,IAAA,IAAQ,UAAA;AAAA,YACjB,SAAS,IAAA,IAAQ,UAAA;AAAA,YACjB,SAAS,IAAA,IAAQ,WAAA;AAAA,YACjB,SAAS,IAAA,IAAQ;AAAA,WACnB;AAAA,UACF;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sEAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gIAAA,EACd,QAAA,kBAAA,GAAA,CAAC,YAAS,SAAA,EAAU,QAAA,EAAS,aAAA,EAAW,IAAA,EAAC,CAAA,EAC3C,CAAA;AAAA,4BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,gCAAA,EAC9B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,cACC,OAAA,EAAS,aAAa,MAAA,mBACrB,GAAA,CAAC,OAAE,SAAA,EAAU,4CAAA,EACV,QAAA,EAAA,OAAA,CAAQ,QAAA,EACX,CAAA,GACE;AAAA,aAAA,EACN,CAAA;AAAA,gCACC,OAAA,EAAA,EAAQ,KAAA,EAAc,OAAA,EAAS,OAAA,EAAS,SAAQ,MAAA,EAAO,CAAA;AAAA,4BACxD,GAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,OAAA,EAAO,IAAA,EAC5B,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,OAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAO,UAAA;AAAA,gBACP,YAAA,EAAY,UAAA;AAAA,gBACZ,OAAA,EAAS,IAAA;AAAA,gBAET,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC;AAAA;AAAA,aACpC,EACF;AAAA,WAAA,EACF,CAAA;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EAAmC,WAAQ,aAAA,EACvD,QAAA,EAAA;AAAA,YAAA,OAAA,EAAS,KAAA,KAAU,yBAClB,GAAA,CAAC,IAAA,EAAA,EAAG,WAAU,4BAAA,EAA8B,QAAA,EAAA,OAAA,CAAQ,OAAM,CAAA,GACxD,IAAA;AAAA,YACH,IAAA,GAAO,UAAA,CAAW,GAAG,CAAA,GAAI;AAAA,WAAA,EAC5B,CAAA;AAAA,UACC,UAAA,mBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sEAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,QAAA,EAAU,OAAA,KAAY,CAAA,EAAG,OAAA,EAAS,GAAA,CAAI,IAAA,EACrE,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,4BACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,YACvB,SAAA,KAAc,IAAA,mBACb,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,IAAA,EACxC,QAAA,EAAA,SAAA,EACH,CAAA,GACE,IAAA;AAAA,4BACJ,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,IAAA;AAAA,gBACL,UAAU,CAAC,WAAA;AAAA,gBACX,SAAS,GAAA,CAAI,IAAA;AAAA,gBAEZ,QAAA,EAAA,OAAA,KAAY,CAAA,GAAI,eAAA,GAAmB,OAAA,EAAS,SAAA,IAAa;AAAA;AAAA;AAC5D,WAAA,EACF,CAAA,GACE;AAAA;AAAA;AAAA;AACN,GAAA,EACF,CAAA,EACF,CAAA;AAEJ","file":"chunk-YMCMUAIF.js","sourcesContent":["import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { Sparkles, X, type LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '../button/Button'\n\nexport interface StepperStep {\n id: string\n label?: React.ReactNode\n icon?: LucideIcon\n}\n\nexport interface StepperProps {\n steps: StepperStep[]\n current: number\n variant?: 'dots' | 'labels'\n onStepClick?: (index: number) => void\n className?: string\n}\n\nexport function Stepper({\n steps,\n current,\n variant = 'dots',\n onStepClick,\n className,\n}: StepperProps) {\n if (variant === 'dots') {\n return (\n <div className={cn('flex items-center gap-1.5', className)} data-as=\"stepper\">\n <span className=\"sr-only\">\n Step {Math.min(current + 1, steps.length)} of {steps.length}\n </span>\n <div className=\"flex items-center gap-1.5\" aria-hidden>\n {steps.map((step, index) => (\n <span\n key={step.id}\n className={cn(\n 'size-2 rounded-full',\n index === current\n ? 'bg-[var(--as-primary)]'\n : index < current\n ? 'bg-[var(--as-primary)]/50'\n : 'bg-[var(--as-border)]',\n )}\n />\n ))}\n </div>\n </div>\n )\n }\n return (\n <ol className={cn('flex items-center gap-1', className)} data-as=\"stepper\">\n {steps.map((step, index) => {\n const Icon = step.icon\n const state = index < current ? 'done' : index === current ? 'current' : 'todo'\n const disabled = onStepClick === undefined || state === 'current'\n return (\n <li key={step.id}>\n <button\n type=\"button\"\n aria-current={state === 'current' ? 'step' : undefined}\n disabled={disabled}\n onClick={() => onStepClick?.(index)}\n className={cn(\n 'flex cursor-pointer items-center gap-1.5 rounded-[var(--as-radius)] px-2.5 py-1.5 text-sm transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)] disabled:cursor-default',\n state === 'current' && 'bg-[var(--as-primary)]/10 font-medium text-[var(--as-primary)]',\n state === 'done' && 'text-[var(--as-fg)] hover:bg-[var(--as-secondary)]',\n state === 'todo' && 'text-[var(--as-muted-fg)] hover:bg-[var(--as-secondary)]',\n )}\n >\n {Icon ? <Icon className=\"size-4\" aria-hidden /> : null}\n {step.label}\n </button>\n </li>\n )\n })}\n </ol>\n )\n}\n\nexport interface WizardStep {\n id: string\n icon?: LucideIcon\n title?: React.ReactNode\n subtitle?: React.ReactNode\n canContinue?: boolean\n nextLabel?: string\n hideFooter?: boolean\n}\n\nexport interface WizardContext {\n id: string\n index: number\n step: WizardStep\n isFirst: boolean\n isLast: boolean\n next: () => void\n back: () => void\n goTo: (index: number) => void\n}\n\nexport interface WizardProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: React.ReactNode\n steps: WizardStep[]\n renderStep: (ctx: WizardContext) => React.ReactNode\n initialStep?: number\n step?: number\n onStepChange?: (index: number) => void\n onSkip?: () => void\n skipLabel?: string | null\n backLabel?: string\n nextLabel?: string\n getStartedLabel?: string\n closeLabel?: string\n variant?: 'modal' | 'drawer'\n size?: 'sm' | 'md' | 'lg' | 'xl'\n contentClassName?: string\n}\n\nexport function Wizard({\n open,\n onOpenChange,\n title,\n steps,\n renderStep,\n initialStep = 0,\n step: stepProp,\n onStepChange,\n onSkip,\n skipLabel = 'Skip',\n backLabel = 'Back',\n nextLabel = 'Next',\n getStartedLabel = 'Get started',\n closeLabel = 'Close',\n variant = 'modal',\n size = 'lg',\n contentClassName,\n}: WizardProps) {\n const [internalStep, setInternalStep] = React.useState(initialStep)\n const isControlled = stepProp !== undefined\n const step = isControlled ? stepProp : internalStep\n const lastStep = Math.max(steps.length - 1, 0)\n const clamped = Math.min(Math.max(step, 0), lastStep)\n const current: WizardStep | undefined = steps[clamped]\n const StepIcon = current?.icon ?? Sparkles\n\n React.useEffect(() => {\n if (!open && !isControlled) {\n setInternalStep(initialStep)\n }\n }, [open, isControlled, initialStep])\n\n const goTo = React.useCallback(\n (index: number) => {\n const next = Math.min(Math.max(index, 0), lastStep)\n if (!isControlled) {\n setInternalStep(next)\n }\n onStepChange?.(next)\n },\n [isControlled, lastStep, onStepChange],\n )\n\n const ctx: WizardContext = {\n id: current?.id ?? '',\n index: clamped,\n step: current ?? { id: 'empty' },\n isFirst: clamped === 0,\n isLast: clamped === lastStep,\n next: () => goTo(clamped + 1),\n back: () => goTo(clamped - 1),\n goTo,\n }\n\n const skip = onSkip ?? (() => onOpenChange(false))\n const showFooter = !(current?.hideFooter ?? clamped === lastStep)\n const canContinue = current?.canContinue !== false\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-as=\"wizard-overlay\"\n className=\"as-anim-fade fixed inset-0 z-[var(--as-z-modal)] bg-[var(--as-overlay)]\"\n />\n <DialogPrimitive.Content\n data-as=\"wizard\"\n aria-describedby={undefined}\n className={cn(\n 'flex flex-col overflow-hidden border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none',\n variant === 'drawer'\n ? 'as-anim-drawer fixed inset-y-0 right-0 z-[var(--as-z-modal)] h-full w-4/5 max-w-md border-l'\n : 'as-anim-modal fixed inset-0 z-[var(--as-z-modal)] mx-auto my-auto h-fit max-h-[92vh] w-[calc(100%-2rem)] rounded-[var(--as-radius-lg)]',\n variant === 'modal' &&\n cn(\n size === 'sm' && 'max-w-sm',\n size === 'md' && 'max-w-md',\n size === 'lg' && 'max-w-2xl',\n size === 'xl' && 'max-w-4xl',\n ),\n contentClassName,\n )}\n >\n <div className=\"flex items-center gap-3 border-b border-[var(--as-border)] px-5 py-4\">\n <span className=\"flex size-9 shrink-0 items-center justify-center rounded-[var(--as-radius)] bg-[var(--as-primary)]/10 text-[var(--as-primary)]\">\n <StepIcon className=\"size-5\" aria-hidden />\n </span>\n <div className=\"min-w-0 flex-1\">\n <DialogPrimitive.Title className=\"truncate text-sm font-semibold\">\n {title}\n </DialogPrimitive.Title>\n {current?.subtitle !== undefined ? (\n <p className=\"truncate text-xs text-[var(--as-muted-fg)]\">\n {current.subtitle}\n </p>\n ) : null}\n </div>\n <Stepper steps={steps} current={clamped} variant=\"dots\" />\n <DialogPrimitive.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={closeLabel}\n aria-label={closeLabel}\n onClick={skip}\n >\n <X className=\"size-4\" aria-hidden />\n </Button>\n </DialogPrimitive.Close>\n </div>\n <div className=\"flex-1 overflow-y-auto px-5 py-4\" data-as=\"wizard-body\">\n {current?.title !== undefined ? (\n <h2 className=\"mb-3 text-lg font-semibold\">{current.title}</h2>\n ) : null}\n {open ? renderStep(ctx) : null}\n </div>\n {showFooter ? (\n <div className=\"flex items-center gap-2 border-t border-[var(--as-border)] px-5 py-3\">\n <Button variant=\"ghost\" size=\"sm\" disabled={clamped === 0} onClick={ctx.back}>\n {backLabel}\n </Button>\n <div className=\"flex-1\" />\n {skipLabel !== null ? (\n <Button variant=\"ghost\" size=\"sm\" onClick={skip}>\n {skipLabel}\n </Button>\n ) : null}\n <Button\n size=\"sm\"\n disabled={!canContinue}\n onClick={ctx.next}\n >\n {clamped === 0 ? getStartedLabel : (current?.nextLabel ?? nextLabel)}\n </Button>\n </div>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n"]}
|
package/dist/combobox.js
CHANGED
package/dist/date-picker.js
CHANGED
package/dist/form-modal.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -45,6 +45,8 @@ export { Spinner, SpinnerProps } from './spinner.js';
|
|
|
45
45
|
export { TaskAssignmentPicker, TaskAssignmentPickerProps, TaskAssignmentTask } from './task-assignment-picker.js';
|
|
46
46
|
export { Table, TableProps } from './table.js';
|
|
47
47
|
export { InfoTooltip, InfoTooltipProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip.js';
|
|
48
|
+
export { TimeList, TimeListProps } from './time-list.js';
|
|
49
|
+
export { TimePicker, TimePickerContent, TimePickerContentProps, TimePickerProps } from './time-picker.js';
|
|
48
50
|
export { UndoNotice, UndoNoticeProps } from './undo-notice.js';
|
|
49
51
|
export { ViewToggle, ViewToggleProps, ViewToggleView } from './view-toggle.js';
|
|
50
52
|
export { Stepper, StepperProps, StepperStep, Wizard, WizardContext, WizardProps, WizardStep } from './wizard.js';
|
package/dist/index.js
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { UndoNotice } from './chunk-OUHUVACM.js';
|
|
2
|
+
export { ViewToggle } from './chunk-MXOBOS4Y.js';
|
|
3
|
+
export { Stepper, Wizard } from './chunk-YMCMUAIF.js';
|
|
2
4
|
export { Table } from './chunk-5LRRVD27.js';
|
|
3
|
-
export { TaskAssignmentPicker } from './chunk-
|
|
5
|
+
export { TaskAssignmentPicker } from './chunk-TN35RR2R.js';
|
|
4
6
|
export { SettingsShell } from './chunk-AHLNXCP2.js';
|
|
5
7
|
export { ThemeScope } from './chunk-TGU3PKNM.js';
|
|
8
|
+
export { TimeList } from './chunk-TJLELOAW.js';
|
|
9
|
+
export { TimePicker, TimePickerContent } from './chunk-ERK53RFJ.js';
|
|
6
10
|
export { InfoTooltip, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './chunk-34NO2UOB.js';
|
|
7
|
-
export { UndoNotice } from './chunk-OUHUVACM.js';
|
|
8
|
-
export { ViewToggle } from './chunk-MXOBOS4Y.js';
|
|
9
11
|
export { Portal } from './chunk-7YLR4AGA.js';
|
|
10
12
|
export { ProviderForm } from './chunk-RJSN4TVT.js';
|
|
11
|
-
export { RangeBar } from './chunk-
|
|
13
|
+
export { RangeBar } from './chunk-PFAH25VU.js';
|
|
12
14
|
export { ScaleSlider, scaleColorForValue } from './chunk-UIUALJNR.js';
|
|
13
15
|
export { SearchInput } from './chunk-H5U4KNXF.js';
|
|
14
16
|
export { SelectionBar } from './chunk-HSUCCANX.js';
|
|
15
17
|
export { Input } from './chunk-M4V7XHL7.js';
|
|
16
18
|
export { MarqueeBand, MarqueeSurface, hitTestIds, marqueeRect, rectsIntersect, useMarquee } from './chunk-RU3DEF2O.js';
|
|
17
|
-
export { ModelPicker } from './chunk-
|
|
18
|
-
export { PanelModal } from './chunk-
|
|
19
|
+
export { ModelPicker } from './chunk-OPTH3VUY.js';
|
|
20
|
+
export { PanelModal } from './chunk-G6557MEN.js';
|
|
19
21
|
export { ContextMenu } from './chunk-WA7Q4TTA.js';
|
|
20
22
|
export { ActionMenu, Menu, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuSeparator, MenuTrigger } from './chunk-JWAX2AOO.js';
|
|
21
|
-
export { DatePicker } from './chunk-
|
|
23
|
+
export { DatePicker } from './chunk-6VCJX4CP.js';
|
|
22
24
|
export { EmptyState } from './chunk-KDJLYKR6.js';
|
|
23
25
|
export { ErrorBanner } from './chunk-BJOY3XL7.js';
|
|
24
26
|
export { ExpandableSearch } from './chunk-4SW3ESVI.js';
|
|
@@ -32,16 +34,16 @@ export { ConnectionTestRow } from './chunk-UWHUCQC6.js';
|
|
|
32
34
|
export { CheckIndicator } from './chunk-XE4TFW63.js';
|
|
33
35
|
export { ChipInput } from './chunk-TPLQL62V.js';
|
|
34
36
|
export { ChipList } from './chunk-BN3YHYYL.js';
|
|
35
|
-
export { Combobox, ComboboxMulti } from './chunk-
|
|
36
|
-
export { ConfirmationModal } from './chunk-
|
|
37
|
+
export { Combobox, ComboboxMulti } from './chunk-3RDFWXX6.js';
|
|
38
|
+
export { ConfirmationModal } from './chunk-2YQSA5AE.js';
|
|
37
39
|
export { CopyButton } from './chunk-CZ2BL2ZL.js';
|
|
38
40
|
export { rawTokens, semanticTokens } from './chunk-GDGKARRB.js';
|
|
39
41
|
export { AiActionsDropdown } from './chunk-I37SYHM7.js';
|
|
40
|
-
export { AiButton } from './chunk-
|
|
42
|
+
export { AiButton } from './chunk-3VCFRIIK.js';
|
|
41
43
|
export { Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger } from './chunk-SIIY2EGI.js';
|
|
42
|
-
export { AiMagicFill } from './chunk-
|
|
43
|
-
export { FormModal } from './chunk-
|
|
44
|
-
export { Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants } from './chunk-
|
|
44
|
+
export { AiMagicFill } from './chunk-EODV6JK7.js';
|
|
45
|
+
export { FormModal } from './chunk-62GIJMWT.js';
|
|
46
|
+
export { Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, ModalTrigger, modalContentVariants } from './chunk-Y7BKBG57.js';
|
|
45
47
|
export { Badge, badgeVariants } from './chunk-SKTLC2XY.js';
|
|
46
48
|
export { Breadcrumbs } from './chunk-TFS2NUET.js';
|
|
47
49
|
export { Button, buttonVariants } from './chunk-GTXGTQ6F.js';
|