@fayz-ai/ui 0.18.0 → 0.19.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/dist/analytics/derive.d.ts +1 -9
- package/dist/analytics/derive.d.ts.map +1 -1
- package/dist/{chunk-DFOAKWYB.js → chunk-5NEADAIP.js} +3 -3
- package/dist/{chunk-DFOAKWYB.js.map → chunk-5NEADAIP.js.map} +1 -1
- package/dist/{chunk-Z2ITFPGL.js → chunk-5WSKZU7M.js} +547 -74
- package/dist/chunk-5WSKZU7M.js.map +1 -0
- package/dist/{chunk-OBIU37AX.js → chunk-6YFPPK7X.js} +28 -14
- package/dist/chunk-6YFPPK7X.js.map +1 -0
- package/dist/{chunk-ZLPYNHXH.js → chunk-ERSX3C7T.js} +3 -3
- package/dist/{chunk-ZLPYNHXH.js.map → chunk-ERSX3C7T.js.map} +1 -1
- package/dist/{chunk-3OVZ5JJQ.js → chunk-GLRLWBBF.js} +4 -3
- package/dist/chunk-GLRLWBBF.js.map +1 -0
- package/dist/{chunk-AASANYXN.js → chunk-OB2ULDBD.js} +6 -4
- package/dist/chunk-OB2ULDBD.js.map +1 -0
- package/dist/chunk-SB6DWHXI.js +199 -0
- package/dist/chunk-SB6DWHXI.js.map +1 -0
- package/dist/dashboard/index.js +2 -2
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -25
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.d.ts +7 -1
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/SaveBar.d.ts +10 -1
- package/dist/layout/SaveBar.d.ts.map +1 -1
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/index.js +3 -3
- package/dist/lib/error-message.d.ts +2 -0
- package/dist/lib/error-message.d.ts.map +1 -0
- package/dist/primitives/brand-marks.d.ts +11 -0
- package/dist/primitives/brand-marks.d.ts.map +1 -0
- package/dist/primitives/button.d.ts +1 -1
- package/dist/primitives/dot-badge.d.ts +27 -0
- package/dist/primitives/dot-badge.d.ts.map +1 -0
- package/dist/primitives/draft-commit-bar.d.ts +27 -0
- package/dist/primitives/draft-commit-bar.d.ts.map +1 -0
- package/dist/primitives/filter-check-list.d.ts +65 -0
- package/dist/primitives/filter-check-list.d.ts.map +1 -0
- package/dist/primitives/header-tabs.d.ts +19 -0
- package/dist/primitives/header-tabs.d.ts.map +1 -1
- package/dist/primitives/image-drop.d.ts.map +1 -1
- package/dist/primitives/index.d.ts +6 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +4 -4
- package/dist/primitives/list-chrome.d.ts +5 -1
- package/dist/primitives/list-chrome.d.ts.map +1 -1
- package/dist/primitives/mini-calendar.d.ts +36 -0
- package/dist/primitives/mini-calendar.d.ts.map +1 -0
- package/dist/primitives/multi-select.d.ts +21 -0
- package/dist/primitives/multi-select.d.ts.map +1 -0
- package/dist/primitives/select.d.ts.map +1 -1
- package/dist/primitives/stock-entry-form.d.ts +52 -0
- package/dist/primitives/stock-entry-form.d.ts.map +1 -0
- package/dist/styles.css +100 -0
- package/dist/tailwind.cjs +1 -1
- package/dist/tailwind.cjs.map +1 -1
- package/dist/tailwind.js +1 -1
- package/dist/tailwind.js.map +1 -1
- package/dist/wizard/index.js +2 -2
- package/dist/wizard/useWizard.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-3OVZ5JJQ.js.map +0 -1
- package/dist/chunk-4GK6IHOI.js +0 -177
- package/dist/chunk-4GK6IHOI.js.map +0 -1
- package/dist/chunk-AASANYXN.js.map +0 -1
- package/dist/chunk-OBIU37AX.js.map +0 -1
- package/dist/chunk-Z2ITFPGL.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/primitives/switch.tsx","../src/primitives/confirm-dialog.tsx","../src/primitives/step-progress.tsx","../src/primitives/option-select.tsx","../src/primitives/image-drop.tsx","../src/primitives/color-palette.tsx"],"names":["React","Switch","React2","jsxs","jsx","React3","React5","X"],"mappings":"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","file":"chunk-GLRLWBBF.js","sourcesContent":["import * as React from 'react'\nimport { cn } from '../lib/cn'\n\n// ---------------------------------------------------------------------------\n// Switch — ligar/desligar algo que vale IMEDIATAMENTE.\n//\n// É a diferença para o checkbox, e é o que decide qual usar: checkbox é uma\n// escolha que só existe quando o formulário for salvo (\"aceito os termos\");\n// switch é um interruptor — mexeu, mudou. Uma lista onde cada linha liga um\n// disparo é o segundo caso, e desenhá-lo como checkbox faz procurar o botão\n// Salvar que nunca vem.\n//\n// Sem Radix: é um <button role=\"switch\"> com aria-checked, que é exatamente o\n// contrato que o leitor de tela espera. Uma dependência a mais para animar um\n// círculo de 16px não se paga.\n// ---------------------------------------------------------------------------\n\nexport interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n checked: boolean\n onCheckedChange: (checked: boolean) => void\n /** 'sm' para linhas de lista, 'md' para formulários. */\n size?: 'sm' | 'md'\n /** Texto ao lado. Clicar nele também alterna — é área de toque de graça. */\n label?: React.ReactNode\n}\n\nconst TRACK = {\n sm: 'h-4 w-7',\n md: 'h-5 w-9',\n}\n\nconst THUMB = {\n sm: 'h-3 w-3 data-[on=true]:translate-x-3',\n md: 'h-4 w-4 data-[on=true]:translate-x-4',\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(function Switch(\n { checked, onCheckedChange, size = 'sm', label, className, disabled, ...rest },\n ref,\n) {\n const control = (\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={(e) => {\n // stopPropagation: o switch vive dentro de linhas clicáveis, e ligar\n // algo não deve navegar para outro lugar ao mesmo tempo.\n e.stopPropagation()\n rest.onClick?.(e)\n if (!disabled) onCheckedChange(!checked)\n }}\n className={cn(\n 'relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n TRACK[size],\n checked ? 'bg-primary' : 'bg-muted-foreground/30',\n className,\n )}\n {...rest}\n >\n <span\n data-on={checked}\n className={cn(\n 'pointer-events-none ml-0.5 inline-block rounded-full bg-background shadow-sm transition-transform',\n THUMB[size],\n )}\n />\n </button>\n )\n\n if (label == null) return control\n\n return (\n <label\n className={cn(\n 'inline-flex items-center gap-2 text-xs text-muted-foreground',\n disabled ? 'cursor-not-allowed' : 'cursor-pointer',\n )}\n onClick={(e) => e.stopPropagation()}\n >\n {control}\n <span>{label}</span>\n </label>\n )\n})\n","import * as React from 'react'\nimport { createPortal } from 'react-dom'\nimport { AlertTriangle, Info, CheckCircle2, XCircle } from 'lucide-react'\nimport { cn } from '../lib/cn'\nimport { Button } from './button'\n\ntype ConfirmVariant = 'default' | 'destructive' | 'warning' | 'success'\n\ninterface ConfirmDialogProps {\n open: boolean\n onConfirm: () => void\n onCancel: () => void\n title: string\n description?: string\n confirmLabel?: string\n cancelLabel?: string\n variant?: ConfirmVariant\n loading?: boolean\n}\n\nconst VARIANT_CONFIG: Record<\n ConfirmVariant,\n {\n icon: React.ElementType\n iconBg: string\n iconColor: string\n buttonVariant: 'default' | 'destructive'\n }\n> = {\n default: {\n icon: Info,\n iconBg: 'bg-info/10',\n iconColor: 'text-info',\n buttonVariant: 'default',\n },\n destructive: {\n icon: XCircle,\n iconBg: 'bg-destructive/10',\n iconColor: 'text-destructive',\n buttonVariant: 'destructive',\n },\n warning: {\n icon: AlertTriangle,\n iconBg: 'bg-warning/10',\n iconColor: 'text-warning',\n buttonVariant: 'destructive',\n },\n success: {\n icon: CheckCircle2,\n iconBg: 'bg-success/10',\n iconColor: 'text-success',\n buttonVariant: 'default',\n },\n}\n\nexport function ConfirmDialog({\n open,\n onConfirm,\n onCancel,\n title,\n description,\n confirmLabel = 'Confirm',\n cancelLabel = 'Cancel',\n variant = 'default',\n loading = false,\n}: ConfirmDialogProps) {\n const config = VARIANT_CONFIG[variant]\n const Icon = config.icon\n\n React.useEffect(() => {\n if (!open) return\n function handleKey(e: KeyboardEvent) {\n if (e.key === 'Escape') onCancel()\n }\n document.addEventListener('keydown', handleKey)\n return () => document.removeEventListener('keydown', handleKey)\n }, [open, onCancel])\n\n if (!open) return null\n\n return createPortal(\n <div className=\"fixed inset-0 z-[60] flex items-center justify-center\">\n <div\n className=\"absolute inset-0 bg-black/50 backdrop-blur-[2px] animate-fade-in\"\n onClick={onCancel}\n />\n\n <div\n className=\"relative z-10 w-full max-w-sm mx-4 rounded-modal border border-border bg-card shadow-lg animate-zoom-in\"\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby=\"confirm-title\"\n aria-describedby={description ? 'confirm-desc' : undefined}\n >\n <div className=\"p-6\">\n <div className=\"flex gap-4\">\n <div className={cn('flex h-10 w-10 items-center justify-center rounded-full shrink-0', config.iconBg)}>\n <Icon className={cn('h-5 w-5', config.iconColor)} />\n </div>\n <div className=\"min-w-0 pt-0.5\">\n <h3 id=\"confirm-title\" className=\"text-sm font-semibold text-foreground\">\n {title}\n </h3>\n {description && (\n <p id=\"confirm-desc\" className=\"text-xs text-muted-foreground mt-1 leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"flex justify-end gap-2 mt-5\">\n <Button variant=\"outline\" size=\"sm\" onClick={onCancel} disabled={loading}>\n {cancelLabel}\n </Button>\n <Button variant={config.buttonVariant} size=\"sm\" onClick={onConfirm} disabled={loading}>\n {loading ? 'Processing...' : confirmLabel}\n </Button>\n </div>\n </div>\n </div>\n </div>,\n document.body,\n )\n}\n","import * as React from 'react'\nimport { cn } from '../lib/cn'\n\nexport interface StepProgressProps {\n /** How many steps the flow has. */\n total: number\n /** Zero-based index of the step on screen. */\n current: number\n /** Jump to a step. Only offered for steps already visited. */\n onSelect?: (index: number) => void\n className?: string\n 'aria-label'?: string\n}\n\n/**\n * Segmented progress rail — one bar per step, filled up to the current one.\n *\n * A single continuous bar tells you how far along you are; segments also tell you\n * how much is LEFT, which is what stops someone abandoning a form they think is\n * endless. Sits at the bottom of the wizard column, above the footer.\n */\nexport function StepProgress({ total, current, onSelect, className, ...rest }: StepProgressProps) {\n return (\n <div\n role=\"progressbar\"\n aria-label={rest['aria-label']}\n aria-valuemin={1}\n aria-valuemax={total}\n aria-valuenow={Math.min(current + 1, total)}\n className={cn('flex w-full items-center gap-2', className)}\n >\n {Array.from({ length: total }, (_, i) => {\n const done = i <= current\n // Only steps already behind you are clickable — jumping forward would skip\n // the validation the wizard runs on the way out of each step.\n const clickable = Boolean(onSelect) && i < current\n return (\n <button\n key={i}\n type=\"button\"\n tabIndex={clickable ? 0 : -1}\n aria-hidden={!clickable}\n disabled={!clickable}\n onClick={clickable ? () => onSelect?.(i) : undefined}\n className={cn(\n 'h-[2px] flex-1 rounded-full transition-colors duration-300',\n done ? 'bg-foreground' : 'bg-border',\n clickable && 'cursor-pointer hover:bg-foreground/70',\n )}\n />\n )\n })}\n </div>\n )\n}\n","import * as React from 'react'\nimport { Check } from 'lucide-react'\nimport { cn } from '../lib/cn'\n\nexport interface SelectableOption {\n value: string\n label: React.ReactNode\n /** Second line under the label — the sentence that makes the choice obvious. */\n hint?: React.ReactNode\n icon?: React.ReactNode\n}\n\ninterface SharedProps {\n options: ReadonlyArray<SelectableOption>\n /** A string in single mode, a list in `multi` mode. */\n value?: string | string[]\n onChange: (value: string | string[]) => void\n multi?: boolean\n disabled?: boolean\n /**\n * Bind 1–9 to the first nine options and print the digit on each one.\n *\n * Off by default: two shortcut-bound groups on one screen would both answer to\n * \"1\". The caller decides which group owns the keys.\n */\n shortcuts?: boolean\n className?: string\n 'aria-label'?: string\n}\n\n/** Toggle in multi mode, replace in single mode. */\nfunction nextValue(current: string | string[] | undefined, picked: string, multi: boolean): string | string[] {\n if (!multi) return picked\n const list = Array.isArray(current) ? current : current ? [current] : []\n return list.includes(picked) ? list.filter((v) => v !== picked) : [...list, picked]\n}\n\nfunction isSelected(current: string | string[] | undefined, option: string): boolean {\n return Array.isArray(current) ? current.includes(option) : current === option\n}\n\n/** Only the first nine get a digit — a two-key shortcut is slower than the mouse. */\nconst MAX_SHORTCUTS = 9\n\n/**\n * 1–9 pick the matching option. Ignored while a field has focus, so typing \"2\"\n * into \"how many chairs\" answers the question instead of jumping the form.\n */\nfunction useOptionShortcuts(\n options: ReadonlyArray<SelectableOption>,\n enabled: boolean,\n pick: (value: string) => void,\n) {\n const pickRef = React.useRef(pick)\n pickRef.current = pick\n const values = options.slice(0, MAX_SHORTCUTS).map((o) => o.value).join('\u0000')\n\n React.useEffect(() => {\n if (!enabled) return\n const list = values.split('\u0000').filter(Boolean)\n if (list.length === 0) return\n function onKey(e: KeyboardEvent) {\n if (e.metaKey || e.ctrlKey || e.altKey) return\n const el = e.target as HTMLElement | null\n const tag = el?.tagName\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT' || el?.isContentEditable) return\n const index = Number(e.key) - 1\n if (!Number.isInteger(index) || index < 0 || index >= list.length) return\n e.preventDefault()\n pickRef.current(list[index]!)\n }\n document.addEventListener('keydown', onKey)\n return () => document.removeEventListener('keydown', onKey)\n }, [enabled, values])\n}\n\n/** The digit badge printed on a shortcut-bound option. */\nfunction KeyHint({ index, selected, corner }: { index: number; selected: boolean; corner?: boolean }) {\n return (\n <kbd\n aria-hidden\n className={cn(\n 'hidden h-5 min-w-[1.25rem] shrink-0 items-center justify-center rounded border px-1 font-mono text-[10px] font-semibold sm:inline-flex',\n // Parked in the corner rather than in the reading line: the shortcut is\n // an accelerator, not part of the answer, and inline it pushed every\n // label right and split the logo from the name it belongs to.\n corner && 'absolute right-2 top-2',\n selected\n ? 'border-primary/40 bg-primary/10 text-primary'\n : 'border-border bg-muted text-muted-foreground',\n )}\n >\n {index + 1}\n </kbd>\n )\n}\n\nexport interface OptionCardsProps extends SharedProps {\n /** Cards per row on wide screens. One column reads as a list — use it for long hints. */\n columns?: 1 | 2 | 3\n}\n\nconst COLUMNS: Record<1 | 2 | 3, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n}\n\n/**\n * Card picker — the answer surface for a question with a handful of options that\n * each need a sentence of explanation.\n *\n * Radix has no radio-group in this package and a native radio list cannot carry a\n * hint line, so this is a button grid with `role=\"radio\"`/`\"checkbox\"` semantics\n * layered back on.\n */\nexport function OptionCards({\n options, value, onChange, multi = false, disabled, shortcuts = false, columns = 2, className, ...rest\n}: OptionCardsProps) {\n useOptionShortcuts(options, shortcuts && !disabled, (picked) => onChange(nextValue(value, picked, multi)))\n return (\n <div\n role={multi ? 'group' : 'radiogroup'}\n aria-label={rest['aria-label']}\n className={cn('grid gap-2.5', COLUMNS[columns], className)}\n >\n {options.map((option, index) => {\n const selected = isSelected(value, option.value)\n const corner = shortcuts && index < MAX_SHORTCUTS\n return (\n <button\n key={option.value}\n type=\"button\"\n role={multi ? 'checkbox' : 'radio'}\n aria-checked={selected}\n disabled={disabled}\n onClick={() => onChange(nextValue(value, option.value, multi))}\n className={cn(\n 'group relative flex items-start gap-3 rounded-lg border bg-card p-4 text-left transition-all',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:pointer-events-none disabled:opacity-50',\n selected\n ? 'border-primary ring-2 ring-primary/15'\n : 'border-border hover:-translate-y-px hover:border-foreground/25 hover:shadow-button',\n )}\n >\n {/* One thing in the corner. Once an option is picked its digit has\n done its job, and a check beside a number is two marks arguing\n about the same fact. */}\n {corner && selected && <Check className=\"absolute right-2 top-2 h-4 w-4 text-primary\" />}\n {corner && !selected && <KeyHint index={index} selected={false} corner />}\n {option.icon && <span className=\"mt-0.5 shrink-0 text-muted-foreground\">{option.icon}</span>}\n <span className={cn('min-w-0 flex-1', corner && 'pr-5')}>\n <span className=\"block text-sm font-semibold text-foreground\">{option.label}</span>\n {option.hint && (\n <span className=\"mt-0.5 block text-xs leading-relaxed text-muted-foreground\">{option.hint}</span>\n )}\n </span>\n {!corner && selected && <Check className=\"mt-0.5 h-4 w-4 shrink-0 text-primary\" />}\n </button>\n )\n })}\n </div>\n )\n}\n\nexport type OptionChipsProps = SharedProps\n\n/**\n * Pill picker — same selection model as OptionCards, for lists long enough that\n * cards would push the question off screen (industries, channels, price bands).\n */\nexport function OptionChips({\n options, value, onChange, multi = false, disabled, shortcuts = false, className, ...rest\n}: OptionChipsProps) {\n useOptionShortcuts(options, shortcuts && !disabled, (picked) => onChange(nextValue(value, picked, multi)))\n return (\n <div\n role={multi ? 'group' : 'radiogroup'}\n aria-label={rest['aria-label']}\n className={cn('flex flex-wrap gap-2', className)}\n >\n {options.map((option, index) => {\n const selected = isSelected(value, option.value)\n return (\n <button\n key={option.value}\n type=\"button\"\n role={multi ? 'checkbox' : 'radio'}\n aria-checked={selected}\n disabled={disabled}\n onClick={() => onChange(nextValue(value, option.value, multi))}\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full border px-4 py-2 text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:pointer-events-none disabled:opacity-50',\n selected\n ? 'border-primary bg-primary/5 text-foreground'\n : 'border-border bg-card text-muted-foreground hover:border-foreground/25 hover:text-foreground',\n )}\n >\n {option.icon}\n {shortcuts && index < MAX_SHORTCUTS && <KeyHint index={index} selected={selected} />}\n {option.label}\n {selected && <Check className=\"h-3.5 w-3.5 text-primary\" />}\n </button>\n )\n })}\n </div>\n )\n}\n","import { errorMessage } from '@fayz-ai/core'\nimport * as React from 'react'\nimport { ImagePlus, Loader2, X } from 'lucide-react'\nimport { cn } from '../lib/cn'\n\nexport interface ImageDropProps {\n /** Current image. Uncontrolled after the first upload — the component keeps what it uploaded. */\n value?: string\n /** Receives the file, returns the stored URL. Omit to render a read-only preview. */\n onUpload?: (file: File) => Promise<string>\n onChange?: (url: string | undefined) => void\n label?: string\n hint?: string\n accept?: string\n /** Cap in bytes, checked before `onUpload` runs. Default 5 MB. */\n maxBytes?: number\n shape?: 'square' | 'circle'\n disabled?: boolean\n /** Shown when the picked file is over `maxBytes`. `{max}` is replaced with the cap in MB. */\n tooLargeLabel?: string\n removeLabel?: string\n className?: string\n}\n\nconst DEFAULT_MAX_BYTES = 5 * 1024 * 1024\n\n/**\n * Image picker with preview — click or drop a file, see it, replace or clear it.\n *\n * Generalised from the CRUD form's image slot so surfaces that have no entity\n * behind them (workspace logo during setup, before the tenant row exists) get the\n * same affordance without importing the CRUD stack.\n */\nexport function ImageDrop({\n value,\n onUpload,\n onChange,\n label,\n hint,\n accept = 'image/*',\n maxBytes = DEFAULT_MAX_BYTES,\n shape = 'square',\n disabled,\n tooLargeLabel = 'File is larger than {max} MB.',\n removeLabel = 'Remove image',\n className,\n}: ImageDropProps) {\n const inputRef = React.useRef<HTMLInputElement>(null)\n const [url, setUrl] = React.useState<string | undefined>(value)\n const [busy, setBusy] = React.useState(false)\n const [dragging, setDragging] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n\n React.useEffect(() => { setUrl(value) }, [value])\n\n const editable = Boolean(onUpload) && !disabled\n\n const handleFile = React.useCallback(\n async (file: File | undefined) => {\n if (!file || !onUpload) return\n if (file.size > maxBytes) {\n setError(tooLargeLabel.replace('{max}', String(Math.round(maxBytes / 1024 / 1024))))\n return\n }\n setBusy(true)\n setError(null)\n try {\n const next = await onUpload(file)\n setUrl(next)\n onChange?.(next)\n } catch (err: unknown) {\n setError(errorMessage(err))\n } finally {\n setBusy(false)\n }\n },\n [onUpload, onChange, maxBytes, tooLargeLabel],\n )\n\n const pick = () => { if (editable && !busy) inputRef.current?.click() }\n\n const clear = (e: React.MouseEvent) => {\n e.stopPropagation()\n setUrl(undefined)\n setError(null)\n onChange?.(undefined)\n }\n\n return (\n <div className={cn('flex items-center gap-4', className)}>\n <div\n onClick={pick}\n onKeyDown={(e) => { if (editable && (e.key === 'Enter' || e.key === ' ')) { e.preventDefault(); pick() } }}\n onDragOver={(e) => { if (editable) { e.preventDefault(); setDragging(true) } }}\n onDragLeave={() => setDragging(false)}\n onDrop={(e) => {\n if (!editable) return\n e.preventDefault()\n setDragging(false)\n void handleFile(e.dataTransfer.files?.[0])\n }}\n role={editable ? 'button' : undefined}\n tabIndex={editable ? 0 : undefined}\n className={cn(\n 'relative flex h-20 w-20 shrink-0 items-center justify-center overflow-hidden border-2 text-muted-foreground transition-colors',\n shape === 'circle' ? 'rounded-full' : 'rounded-xl',\n url ? 'border-solid border-border' : 'border-dashed border-border',\n dragging && 'border-primary text-primary',\n editable && 'cursor-pointer hover:border-primary/40 hover:text-primary/60',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n )}\n >\n {url ? <img src={url} alt=\"\" className=\"h-full w-full object-cover\" /> : <ImagePlus className=\"h-5 w-5\" />}\n {busy && (\n <span className=\"absolute inset-0 flex items-center justify-center bg-background/70\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </span>\n )}\n {url && editable && !busy && (\n <button\n type=\"button\"\n onClick={clear}\n aria-label={removeLabel}\n className=\"absolute right-0 top-0 flex h-5 w-5 items-center justify-center rounded-bl-lg bg-background/90 text-muted-foreground hover:text-foreground\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n {editable && (\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n className=\"hidden\"\n onChange={(e) => {\n const file = e.target.files?.[0]\n e.target.value = ''\n void handleFile(file)\n }}\n />\n )}\n </div>\n <div className=\"min-w-0\">\n {label && <p className=\"text-sm font-medium text-foreground\">{label}</p>}\n {hint && !error && <p className=\"mt-0.5 text-xs leading-relaxed text-muted-foreground\">{hint}</p>}\n {error && <p className=\"mt-0.5 text-xs text-destructive\">{error}</p>}\n </div>\n </div>\n )\n}\n","import * as React from 'react'\nimport { X } from 'lucide-react'\nimport { cn } from '../lib/cn'\n\nexport interface ColorPaletteProps {\n /** Hex values, most prominent first. Shorter than `slots` is normal. */\n value?: ReadonlyArray<string>\n onChange: (colors: string[]) => void\n slots?: number\n /** One per slot, in order. Falls back to the slot number. */\n labels?: ReadonlyArray<string>\n removeLabel?: string\n className?: string\n}\n\nconst DEFAULT_SLOTS = 4\nconst FALLBACK_SWATCH = '#000000'\n\n/**\n * A fixed row of colour slots, each a swatch that opens the native picker plus a\n * hex field that accepts a paste.\n *\n * Slots rather than an add/remove list on purpose: brand colours arrive from a\n * crawl in a known order (primary, secondary, accent), and a positional row is\n * what makes \"the second one is wrong\" a one-click fix instead of a rebuild of\n * the whole palette.\n */\nexport function ColorPalette({\n value,\n onChange,\n slots = DEFAULT_SLOTS,\n labels,\n removeLabel = 'Remover cor',\n className,\n}: ColorPaletteProps) {\n const colors = React.useMemo(() => {\n const next = Array.from({ length: slots }, (_, i) => value?.[i] ?? '')\n return next\n }, [value, slots])\n\n // Trailing blanks are absence, not answers — a palette of two colours must\n // come back as two, or every consumer has to filter it again.\n const commit = (next: string[]) => {\n const trimmed = [...next]\n while (trimmed.length > 0 && !trimmed[trimmed.length - 1]) trimmed.pop()\n onChange(trimmed)\n }\n\n const setSlot = (index: number, hex: string) => {\n const next = [...colors]\n next[index] = hex\n commit(next)\n }\n\n return (\n <div className={cn('flex gap-2', className)}>\n {colors.map((color, index) => (\n <div key={index} className=\"flex-1 space-y-1\">\n <label className=\"group relative block cursor-pointer\">\n <div\n className={cn(\n 'h-10 rounded-lg border transition-colors',\n color ? 'border-border' : 'border-dashed border-border bg-muted/40',\n )}\n style={color ? { backgroundColor: color } : undefined}\n />\n <input\n type=\"color\"\n value={color || FALLBACK_SWATCH}\n aria-label={labels?.[index] ?? `Cor ${index + 1}`}\n onChange={(e) => setSlot(index, e.target.value)}\n className=\"absolute inset-0 cursor-pointer opacity-0\"\n />\n {color && (\n <button\n type=\"button\"\n aria-label={removeLabel}\n onClick={(e) => {\n // The swatch is inside the label, so a click would reopen the picker.\n e.preventDefault()\n e.stopPropagation()\n setSlot(index, '')\n }}\n className=\"absolute -right-1.5 -top-1.5 flex h-4 w-4 items-center justify-center rounded-full bg-foreground/80 text-background opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100\"\n >\n <X className=\"h-2.5 w-2.5\" />\n </button>\n )}\n </label>\n <input\n type=\"text\"\n value={color.toUpperCase()}\n placeholder={labels?.[index] ?? `${index + 1}`}\n onChange={(e) => setSlot(index, normalizeHex(e.target.value))}\n className=\"w-full truncate bg-transparent text-center text-[10px] text-muted-foreground outline-none placeholder:text-muted-foreground/50\"\n />\n </div>\n ))}\n </div>\n )\n}\n\n/** Tolerates a pasted `1F7A3D`, `#1f7a3d` or `rgb(...)`-free junk mid-typing. */\nexport function normalizeHex(raw: string): string {\n const cleaned = raw.replace(/[^0-9a-fA-F#]/g, '')\n const withHash = cleaned.startsWith('#') ? cleaned : `#${cleaned}`\n return withHash.slice(0, 7)\n}\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { ImageDrop, Switch, OptionChips, OptionCards, ColorPalette, StepProgress, ConfirmDialog } from './chunk-
|
|
1
|
+
import { ImageDrop, Switch, OptionChips, OptionCards, ColorPalette, StepProgress, ConfirmDialog } from './chunk-GLRLWBBF.js';
|
|
2
2
|
import { cn, Button } from './chunk-OKZ6WQB3.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Loader2, Sparkles, X, ArrowLeft, ArrowRight } from 'lucide-react';
|
|
5
|
+
import { errorMessage } from '@fayz-ai/core';
|
|
6
|
+
export { errorMessage } from '@fayz-ai/core';
|
|
5
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
8
|
|
|
7
9
|
// src/wizard/logic.ts
|
|
@@ -215,7 +217,7 @@ function useWizard({ steps, initialValues, draftKey, onSubmit }) {
|
|
|
215
217
|
await onSubmit(values);
|
|
216
218
|
clearDraft();
|
|
217
219
|
} catch (err) {
|
|
218
|
-
setError(
|
|
220
|
+
setError(errorMessage(err));
|
|
219
221
|
} finally {
|
|
220
222
|
setSubmitting(false);
|
|
221
223
|
}
|
|
@@ -597,5 +599,5 @@ function Wizard({
|
|
|
597
599
|
}
|
|
598
600
|
|
|
599
601
|
export { Wizard, WizardField, canAdvance, fieldErrors, isEmpty, parseDraft, useWizard, visibleFields, visibleSteps };
|
|
600
|
-
//# sourceMappingURL=chunk-
|
|
601
|
-
//# sourceMappingURL=chunk-
|
|
602
|
+
//# sourceMappingURL=chunk-OB2ULDBD.js.map
|
|
603
|
+
//# sourceMappingURL=chunk-OB2ULDBD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/wizard/logic.ts","../src/wizard/useWizard.ts","../src/wizard/WizardField.tsx","../src/wizard/Wizard.tsx"],"names":["visibleSteps","visibleFields","next","fieldErrors","canAdvance","jsxs","jsx","React2","Loader2"],"mappings":"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","file":"chunk-OB2ULDBD.js","sourcesContent":["import type { WizardFieldDef, WizardStepDef, WizardValues } from './types'\n\n/**\n * The wizard's decisions, without React.\n *\n * Which steps show, which fields show, what blocks the button — all of it is a\n * function of the answers, so it lives here where it can be tested directly\n * instead of through a rendered component.\n */\n\nexport function isEmpty(value: unknown): boolean {\n if (value === undefined || value === null) return true\n if (typeof value === 'string') return value.trim() === ''\n if (Array.isArray(value)) return value.length === 0\n return false\n}\n\nexport function visibleSteps(\n steps: ReadonlyArray<WizardStepDef>,\n values: WizardValues,\n): ReadonlyArray<WizardStepDef> {\n return steps.filter((s) => (s.visibleWhen ? s.visibleWhen(values) : true))\n}\n\nexport function visibleFields(\n step: WizardStepDef | undefined,\n values: WizardValues,\n): ReadonlyArray<WizardFieldDef> {\n return (step?.fields ?? []).filter((f) => (f.visibleWhen ? f.visibleWhen(values) : true))\n}\n\n/**\n * Per-field messages for the current step.\n *\n * An untouched required field gets no message: a red line before someone has had\n * a chance to type reads as a failure they caused. The disabled button says the\n * same thing without the accusation — see `canAdvance`.\n */\nexport function fieldErrors(\n fields: ReadonlyArray<WizardFieldDef>,\n values: WizardValues,\n asyncErrors: Record<string, string | null> = {},\n): Record<string, string | null> {\n const out: Record<string, string | null> = {}\n for (const field of fields) {\n const value = values[field.id]\n out[field.id] = (isEmpty(value) ? null : field.validate?.(value, values)) ?? asyncErrors[field.id] ?? null\n }\n return out\n}\n\nexport function canAdvance(\n step: WizardStepDef | undefined,\n fields: ReadonlyArray<WizardFieldDef>,\n values: WizardValues,\n errors: Record<string, string | null>,\n): boolean {\n if (!step) return false\n if (fields.some((f) => f.required && isEmpty(values[f.id]))) return false\n if (Object.values(errors).some(Boolean)) return false\n return !step.validate?.(values)\n}\n\n/**\n * Which of a `suggest`'s answers may actually land.\n *\n * Three refusals, each for its own reason: a field nobody asks about would sit\n * in the answers invisibly and still get submitted; a field the user has\n * answered is theirs, and a slow reply must not overwrite what they typed while\n * waiting for it; an empty value would mark a field as \"suggested\" while\n * changing nothing on screen.\n */\nexport function acceptableSuggestion(\n patch: WizardValues,\n knownFieldIds: ReadonlySet<string>,\n answered: ReadonlySet<string>,\n): WizardValues {\n const accepted: WizardValues = {}\n for (const [id, value] of Object.entries(patch)) {\n if (!knownFieldIds.has(id)) continue\n if (answered.has(id)) continue\n if (isEmpty(value)) continue\n accepted[id] = value\n }\n return accepted\n}\n\n/** Every field id the flow asks about, across all steps — visible or not. */\nexport function allFieldIds(steps: ReadonlyArray<WizardStepDef>): Set<string> {\n return new Set(steps.flatMap((s) => (s.fields ?? []).map((f) => f.id)))\n}\n\nexport interface WizardDraft {\n index: number\n values: WizardValues\n}\n\n/** Tolerant on purpose: a corrupt draft is a fresh start, never a crash. */\nexport function parseDraft(raw: string | null): WizardDraft | null {\n if (!raw) return null\n try {\n const parsed = JSON.parse(raw) as { index?: unknown; values?: unknown }\n const values = parsed.values && typeof parsed.values === 'object' ? (parsed.values as WizardValues) : {}\n return { index: typeof parsed.index === 'number' ? parsed.index : 0, values }\n } catch {\n return null\n }\n}\n","import { errorMessage } from '../lib/error-message'\nimport * as React from 'react'\nimport {\n acceptableSuggestion,\n allFieldIds,\n canAdvance as computeCanAdvance,\n fieldErrors as computeFieldErrors,\n isEmpty,\n parseDraft,\n visibleFields as computeVisibleFields,\n visibleSteps as computeVisibleSteps,\n type WizardDraft,\n} from './logic'\nimport type { WizardFieldDef, WizardStepDef, WizardValues } from './types'\n\nexport interface UseWizardOptions {\n steps: ReadonlyArray<WizardStepDef>\n initialValues?: WizardValues\n /**\n * localStorage key for the in-progress draft. Someone who closes the tab\n * mid-flow should not have to answer everything again. Omit to keep it in memory.\n */\n draftKey?: string\n onSubmit?: (values: WizardValues) => Promise<void> | void\n}\n\nexport interface UseWizardResult {\n /** Only the steps whose `visibleWhen` passes for the current answers. */\n steps: ReadonlyArray<WizardStepDef>\n step: WizardStepDef | undefined\n index: number\n total: number\n values: WizardValues\n setValue: (id: string, value: unknown) => void\n /** Per-field messages for the current step, keyed by field id. */\n fieldErrors: Record<string, string | null>\n /** The step-level blocking message, or null. Field-level ones live in `fieldErrors`. */\n blocker: string | null\n canAdvance: boolean\n isFirst: boolean\n isLast: boolean\n submitting: boolean\n error: string | null\n next: () => void\n back: () => void\n goTo: (index: number) => void\n submit: () => Promise<void>\n /** True once the user has answered anything, or resumed a draft that had. */\n touched: boolean\n /** Forget the persisted draft — call after a successful submit. */\n clearDraft: () => void\n /** Fields of the current step that pass their own `visibleWhen`. */\n visibleFields: ReadonlyArray<WizardFieldDef>\n /** Id of the field whose `suggest` is in flight, or null. */\n suggesting: string | null\n /** Fields currently holding a suggested answer rather than one the user gave. */\n suggested: ReadonlySet<string>\n /** Drop a suggestion the user disagrees with, and stop marking the field. */\n clearSuggestion: (id: string) => void\n}\n\nfunction readDraft(key: string | undefined): WizardDraft | null {\n if (!key || typeof localStorage === 'undefined') return null\n try {\n return parseDraft(localStorage.getItem(key))\n } catch {\n return null\n }\n}\n\nexport function useWizard({ steps, initialValues, draftKey, onSubmit }: UseWizardOptions): UseWizardResult {\n const [draft] = React.useState(() => readDraft(draftKey))\n const [values, setValues] = React.useState<WizardValues>(() => ({ ...initialValues, ...draft?.values }))\n const [index, setIndex] = React.useState(() => draft?.index ?? 0)\n const [submitting, setSubmitting] = React.useState(false)\n // Whether there is anything to lose. Seeded values (the account's own e-mail)\n // are ours, not theirs — warning about discarding those is warning about\n // nothing. A resumed draft counts: they typed it, just not this session.\n const [touched, setTouched] = React.useState(() => Object.keys(draft?.values ?? {}).length > 0)\n const [error, setError] = React.useState<string | null>(null)\n /** Async field errors (slug taken), keyed by field id. */\n const [asyncErrors, setAsyncErrors] = React.useState<Record<string, string | null>>({})\n const [suggesting, setSuggesting] = React.useState<string | null>(null)\n const [suggested, setSuggested] = React.useState<ReadonlySet<string>>(() => new Set())\n\n const visibleSteps = React.useMemo(() => computeVisibleSteps(steps, values), [steps, values])\n\n // Hiding a step can shorten the flow past where we are standing.\n const safeIndex = Math.min(index, Math.max(visibleSteps.length - 1, 0))\n const step = visibleSteps[safeIndex]\n\n const visibleFields = React.useMemo(() => computeVisibleFields(step, values), [step, values])\n\n // Seed derived fields (the slug from the name) once there is something to\n // derive FROM, then never again — re-deriving would overwrite an edit the\n // user just made. Seeding on an empty source is what silently burned the one\n // chance: it marked the field derived and wrote nothing.\n const derivedRef = React.useRef(new Set<string>())\n React.useEffect(() => {\n const seeds = visibleFields\n .filter((f) => f.derive && !derivedRef.current.has(f.id) && isEmpty(values[f.id]))\n .map((f) => [f, f.derive!(values)] as const)\n .filter(([, derived]) => !isEmpty(derived))\n if (seeds.length === 0) return\n setValues((prev) => {\n const next = { ...prev }\n for (const [field, derived] of seeds) {\n derivedRef.current.add(field.id)\n next[field.id] = derived\n }\n return next\n })\n }, [visibleFields, values])\n\n // Nothing is written until the user actually answers something. Persisting the\n // seeded values on mount left a draft behind for a flow nobody engaged with,\n // and the next session read it back as \"you had progress here\".\n React.useEffect(() => {\n if (!draftKey || !touched || typeof localStorage === 'undefined') return\n try {\n localStorage.setItem(draftKey, JSON.stringify({ index: safeIndex, values }))\n } catch {\n // A full or blocked storage must not break the flow — the draft is a convenience.\n }\n }, [draftKey, touched, safeIndex, values])\n\n // Answering something makes it theirs. A suggestion that arrives afterwards\n // must not land on top of it, and one already on screen stops being marked as\n // a suggestion the moment they edit it.\n const answeredRef = React.useRef(new Set<string>(Object.keys(draft?.values ?? {})))\n\n const setValue = React.useCallback((id: string, value: unknown) => {\n setTouched(true)\n answeredRef.current.add(id)\n setValues((prev) => ({ ...prev, [id]: value }))\n setAsyncErrors((prev) => (prev[id] ? { ...prev, [id]: null } : prev))\n setSuggested((prev) => {\n if (!prev.has(id)) return prev\n const next = new Set(prev)\n next.delete(id)\n return next\n })\n }, [])\n\n const clearSuggestion = React.useCallback((id: string) => {\n answeredRef.current.add(id)\n setValues((prev) => {\n if (!(id in prev)) return prev\n const next = { ...prev }\n delete next[id]\n return next\n })\n setSuggested((prev) => {\n if (!prev.has(id)) return prev\n const next = new Set(prev)\n next.delete(id)\n return next\n })\n }, [])\n\n // Debounced async checks for the fields that declare one.\n const checkable = visibleFields.filter((f) => f.checkAsync)\n const checkSignature = checkable.map((f) => `${f.id}:${String(values[f.id] ?? '')}`).join('|')\n React.useEffect(() => {\n if (checkable.length === 0) return\n let cancelled = false\n const timer = setTimeout(() => {\n for (const field of checkable) {\n const raw = values[field.id]\n if (typeof raw !== 'string' || raw.trim() === '') continue\n void field\n .checkAsync!(raw, values)\n .then((message) => { if (!cancelled) setAsyncErrors((prev) => ({ ...prev, [field.id]: message })) })\n // A failed availability probe must not block the flow — the server\n // still has the unique constraint, and submit surfaces the real error.\n .catch(() => { if (!cancelled) setAsyncErrors((prev) => ({ ...prev, [field.id]: null })) })\n }\n }, 400)\n return () => { cancelled = true; clearTimeout(timer) }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkSignature])\n\n // A suggestion may answer a field on any step, so the ids it may write are the\n // whole flow's — but only the whole flow's.\n const knownFieldIds = React.useMemo(() => allFieldIds(steps), [steps])\n\n const applySuggestion = React.useCallback(\n (patch: WizardValues) => {\n const accepted = acceptableSuggestion(patch, knownFieldIds, answeredRef.current)\n const ids = Object.keys(accepted)\n if (ids.length === 0) return\n\n // Deliberately does NOT set `touched`. A crawl the user only watched\n // happen is not progress they made, and persisting it would leave a draft\n // behind for a flow nobody engaged with — the same trap the seeded values\n // above already fell into once.\n setValues((prev) => ({ ...prev, ...accepted }))\n setSuggested((prev) => {\n const next = new Set(prev)\n for (const id of ids) next.add(id)\n return next\n })\n },\n [knownFieldIds],\n )\n\n /**\n * Debounced enrichment for the fields that declare one. Slower than\n * `checkAsync`'s 400 ms because this one leaves the building and costs money;\n * a slug probe can afford to fire on every pause, a site crawl cannot.\n */\n const suggestable = visibleFields.filter((f) => f.suggest)\n const suggestSignature = suggestable.map((f) => `${f.id}:${String(values[f.id] ?? '')}`).join('|')\n const suggestedForRef = React.useRef(new Map<string, string>())\n const suggestRunRef = React.useRef(0)\n\n React.useEffect(() => {\n if (suggestable.length === 0) return\n const pending = suggestable.filter((field) => {\n const raw = values[field.id]\n if (typeof raw !== 'string' || raw.trim() === '') return false\n // Stepping back onto the field, or re-rendering, must not buy the same\n // answer twice.\n return suggestedForRef.current.get(field.id) !== raw.trim()\n })\n if (pending.length === 0) return\n\n let cancelled = false\n const timer = setTimeout(() => {\n const run = ++suggestRunRef.current\n for (const field of pending) {\n const raw = String(values[field.id]).trim()\n suggestedForRef.current.set(field.id, raw)\n setSuggesting(field.id)\n\n void field\n .suggest!(raw, values)\n .then((patch) => {\n // A reply for an address they have since changed is stale, and\n // applying it would answer a form about the wrong business.\n if (cancelled || run !== suggestRunRef.current) return\n if (patch) applySuggestion(patch)\n })\n // Enrichment, not a gate: a failed read leaves the form as it was.\n .catch(() => {})\n .finally(() => {\n if (!cancelled && run === suggestRunRef.current) setSuggesting(null)\n })\n }\n }, 900)\n\n return () => {\n cancelled = true\n clearTimeout(timer)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [suggestSignature])\n\n const fieldErrors = React.useMemo(\n () => computeFieldErrors(visibleFields, values, asyncErrors),\n [visibleFields, values, asyncErrors],\n )\n\n const blocker = React.useMemo(() => step?.validate?.(values) ?? null, [step, values])\n\n const canAdvance = !submitting && computeCanAdvance(step, visibleFields, values, fieldErrors)\n\n const isLast = safeIndex >= visibleSteps.length - 1\n\n const clearDraft = React.useCallback(() => {\n if (!draftKey || typeof localStorage === 'undefined') return\n try { localStorage.removeItem(draftKey) } catch { /* ignore */ }\n }, [draftKey])\n\n const submit = React.useCallback(async () => {\n if (!onSubmit) return\n setSubmitting(true)\n setError(null)\n try {\n await onSubmit(values)\n clearDraft()\n } catch (err: unknown) {\n // NOT String(err): Supabase rejects with a plain {message, details, hint}\n // object, and stringifying it showed the user the words \"[object Object]\"\n // while the 400's body said what was actually wrong.\n setError(errorMessage(err))\n } finally {\n setSubmitting(false)\n }\n }, [onSubmit, values, clearDraft])\n\n const next = React.useCallback(() => {\n if (!canAdvance) return\n if (isLast) { void submit(); return }\n setIndex((i) => Math.min(i + 1, visibleSteps.length - 1))\n }, [canAdvance, isLast, submit, visibleSteps.length])\n\n const back = React.useCallback(() => setIndex((i) => Math.max(i - 1, 0)), [])\n\n const goTo = React.useCallback(\n (target: number) => setIndex(Math.max(0, Math.min(target, visibleSteps.length - 1))),\n [visibleSteps.length],\n )\n\n return {\n steps: visibleSteps,\n step,\n index: safeIndex,\n total: visibleSteps.length,\n values,\n setValue,\n fieldErrors,\n blocker,\n canAdvance,\n isFirst: safeIndex === 0,\n isLast,\n submitting,\n error,\n next,\n back,\n goTo,\n submit,\n touched,\n clearDraft,\n visibleFields,\n suggesting,\n suggested,\n clearSuggestion,\n }\n}\n","import * as React from 'react'\nimport { Loader2, Sparkles, X } from 'lucide-react'\nimport { cn } from '../lib/cn'\nimport { ColorPalette } from '../primitives/color-palette'\nimport { ImageDrop } from '../primitives/image-drop'\nimport { OptionCards, OptionChips } from '../primitives/option-select'\nimport { Switch } from '../primitives/switch'\nimport type { WizardFieldDef, WizardValues } from './types'\n\nexport interface WizardFieldProps {\n field: WizardFieldDef\n values: WizardValues\n onChange: (id: string, value: unknown) => void\n /** Async/validation message resolved by the wizard for this field. */\n error?: string | null\n autoFocus?: boolean\n /** This field owns the 1–9 keys on this step. Only one field may. */\n shortcuts?: boolean\n /** This field's `suggest` is in flight. */\n busy?: boolean\n /** The value on screen came from a suggestion, not from the user. */\n suggested?: boolean\n /** Discard the suggestion. Only rendered when `suggested`. */\n onClearSuggestion?: () => void\n /** Text on the badge that marks a suggested answer. */\n suggestedLabel?: string\n}\n\n/** Wizard fields are the page's main event, so they run bigger than admin density. */\nconst FIELD_CLASS =\n 'h-12 w-full rounded-lg border border-border bg-card px-4 text-base text-foreground placeholder:text-muted-foreground ' +\n 'transition-colors focus:border-foreground/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ' +\n 'focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50'\n\nconst INPUT_TYPE: Partial<Record<WizardFieldDef['kind'], string>> = {\n email: 'email',\n phone: 'tel',\n}\n\nexport function WizardField({\n field,\n values,\n onChange,\n error,\n autoFocus,\n shortcuts,\n busy,\n suggested,\n onClearSuggestion,\n suggestedLabel,\n}: WizardFieldProps) {\n const value = values[field.id]\n const set = (next: unknown) => onChange(field.id, next)\n\n const body = (() => {\n switch (field.kind) {\n case 'palette':\n return (\n <ColorPalette\n value={Array.isArray(value) ? (value as string[]) : undefined}\n onChange={set}\n slots={field.slots}\n />\n )\n case 'cards':\n return (\n <OptionCards\n options={field.options ?? []}\n value={value as string | string[] | undefined}\n onChange={set}\n multi={field.multi}\n columns={field.columns}\n shortcuts={shortcuts}\n aria-label={field.label}\n />\n )\n case 'chips':\n return (\n <OptionChips\n options={field.options ?? []}\n value={value as string | string[] | undefined}\n onChange={set}\n multi={field.multi}\n shortcuts={shortcuts}\n aria-label={field.label}\n />\n )\n case 'toggle':\n return (\n <div className=\"flex items-center justify-between gap-4 rounded-lg border border-border bg-card px-4 py-3\">\n <span className=\"text-sm text-foreground\">{field.label}</span>\n <Switch checked={Boolean(value)} onCheckedChange={(checked) => set(checked)} />\n </div>\n )\n case 'image':\n return (\n <ImageDrop\n value={typeof value === 'string' ? value : undefined}\n onUpload={field.onUpload}\n onChange={(url) => set(url)}\n label={field.label}\n hint={field.hint}\n />\n )\n case 'textarea':\n return (\n <textarea\n rows={3}\n className={cn(FIELD_CLASS, 'h-auto py-3 leading-relaxed')}\n placeholder={field.placeholder}\n value={typeof value === 'string' ? value : ''}\n autoFocus={autoFocus}\n onChange={(e) => set(e.target.value)}\n />\n )\n default:\n return (\n <div className=\"relative\">\n <input\n type={INPUT_TYPE[field.kind] ?? 'text'}\n className={cn(FIELD_CLASS, busy && 'pr-11', error && 'border-destructive')}\n placeholder={field.placeholder}\n value={typeof value === 'string' ? value : ''}\n autoFocus={autoFocus}\n autoComplete={field.kind === 'email' ? 'email' : 'off'}\n onChange={(e) => set(field.normalize ? field.normalize(e.target.value) : e.target.value)}\n />\n {busy && (\n // The wrapper does the positioning and the icon does nothing but\n // spin. Both on one element fights: `animate-spin`'s keyframe sets\n // a bare `transform: rotate(...)`, which replaces the composed\n // transform that `-translate-y-1/2` lives in — so the icon drops\n // half its height on every frame and the rotation reads as a\n // stutter. `inset-y-0` + `items-center` centres with no transform\n // at all, leaving the animation the only one.\n <span className=\"pointer-events-none absolute inset-y-0 right-4 flex items-center\">\n <Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n </span>\n )}\n </div>\n )\n }\n })()\n\n // The toggle and image fields carry their own label inline; repeating it above\n // would print the question twice.\n const labelAbove = field.label && field.kind !== 'toggle' && field.kind !== 'image'\n\n return (\n <div className=\"space-y-2\">\n {(labelAbove || suggested) && (\n <div className=\"flex items-center justify-between gap-2\">\n {labelAbove ? (\n <label className=\"block text-sm font-medium text-foreground\">{field.label}</label>\n ) : (\n <span />\n )}\n {suggested && suggestedLabel && (\n <SuggestedBadge label={suggestedLabel} onClear={onClearSuggestion} />\n )}\n </div>\n )}\n {body}\n {field.hint && field.kind !== 'image' && !error && (\n <p className=\"text-xs leading-relaxed text-muted-foreground\">{field.hint}</p>\n )}\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </div>\n )\n}\n\n/**\n * Marks an answer nobody gave. It has to be visible enough that the user knows\n * to check it and quiet enough that it doesn't read as an error — this is a head\n * start, not a warning.\n */\nfunction SuggestedBadge({ label, onClear }: { label: string; onClear?: () => void }) {\n return (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground\">\n <Sparkles className=\"h-3 w-3\" />\n {label}\n {onClear && (\n <button\n type=\"button\"\n onClick={onClear}\n aria-label={`${label} — descartar`}\n className=\"ml-0.5 rounded-full text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </span>\n )\n}\n","import * as React from 'react'\nimport { ArrowLeft, ArrowRight, Loader2 } from 'lucide-react'\nimport { cn } from '../lib/cn'\nimport { Button } from '../primitives/button'\nimport { ConfirmDialog } from '../primitives/confirm-dialog'\nimport { StepProgress } from '../primitives/step-progress'\nimport { isEmpty as isEmptyAnswer, visibleFields as computeVisibleFields } from './logic'\nimport { useWizard, type UseWizardResult } from './useWizard'\nimport { WizardField } from './WizardField'\nimport type { WizardMedia, WizardStepDef, WizardValues } from './types'\n\nexport interface WizardLabels {\n back: string\n next: string\n finish: string\n exit: string\n stepOf: string\n exitTitle: string\n exitDescription: string\n exitConfirm: string\n exitCancel: string\n /** Badge on a field a `suggest` answered rather than the user. */\n suggested: string\n}\n\nconst DEFAULT_LABELS: WizardLabels = {\n back: 'Back',\n next: 'Continue',\n finish: 'Finish',\n exit: 'Exit',\n // `{current}` and `{total}` are substituted.\n stepOf: 'Step {current} of {total}',\n exitTitle: 'Leave setup?',\n exitDescription: 'You have already started — leaving now loses what you filled in.',\n exitConfirm: 'Leave',\n exitCancel: 'Go back',\n suggested: 'from your site',\n}\n\nexport interface WizardProps {\n steps: ReadonlyArray<WizardStepDef>\n initialValues?: WizardValues\n draftKey?: string\n onSubmit: (values: WizardValues) => Promise<void> | void\n /** Omit to hide the exit affordance — a first-run flow with nowhere to go back to. */\n onExit?: () => void\n /** Brand mark above the question. */\n logo?: React.ReactNode\n /** Panel shown when the current step declares no media of its own. */\n fallbackMedia?: WizardMedia\n labels?: Partial<WizardLabels>\n className?: string\n}\n\n/** Themed panel used when a step ships no artwork, so the split never looks broken. */\nfunction MediaFallback() {\n return (\n <div className=\"relative h-full w-full overflow-hidden bg-sidebar\">\n <div className=\"absolute inset-0 bg-gradient-to-br from-primary/25 via-transparent to-sidebar\" />\n <div className=\"absolute -right-24 -top-24 h-96 w-96 rounded-full bg-primary/20 blur-3xl\" />\n <div className=\"absolute -bottom-32 -left-16 h-96 w-96 rounded-full bg-primary/10 blur-3xl\" />\n </div>\n )\n}\n\nfunction MediaPanel({ media }: { media: WizardMedia | undefined }) {\n if (!media) return <MediaFallback />\n if (media.node) return <div className=\"h-full w-full overflow-auto bg-sidebar\">{media.node}</div>\n if (!media.src) return <MediaFallback />\n return (\n <picture className=\"block h-full w-full\">\n {media.srcDark && <source srcSet={media.srcDark} media=\"(prefers-color-scheme: dark)\" />}\n <img src={media.src} alt={media.alt ?? ''} className=\"h-full w-full object-cover\" />\n </picture>\n )\n}\n\n/**\n * Fullscreen, data-driven wizard: form column on the left, media panel on the right.\n *\n * Steps and fields are plain data (`WizardStepDef[]`), so a flow changes by editing\n * a list rather than a component — which is the whole point for questionnaires that\n * get reworded every time we learn something about a vertical.\n */\nexport function Wizard({\n steps, initialValues, draftKey, onSubmit, onExit, logo, fallbackMedia, labels, className,\n}: WizardProps) {\n const text = { ...DEFAULT_LABELS, ...labels }\n const w: UseWizardResult = useWizard({ steps, initialValues, draftKey, onSubmit })\n const [confirmExit, setConfirmExit] = React.useState(false)\n // Which way the step slid in — forward and back read as opposite motions.\n const [direction, setDirection] = React.useState<'forward' | 'back'>('forward')\n\n const goNext = React.useCallback(() => { setDirection('forward'); w.next() }, [w])\n const goBack = React.useCallback(() => { setDirection('back'); w.back() }, [w])\n\n React.useEffect(() => {\n function onKey(e: KeyboardEvent) {\n if (confirmExit) return\n const target = e.target as HTMLElement | null\n const typing = target?.tagName === 'TEXTAREA'\n if (e.key === 'Enter' && !typing && !e.shiftKey) { e.preventDefault(); goNext() }\n // ← only when nothing is focused for typing, or it would fight the caret.\n if (e.key === 'ArrowLeft' && target?.tagName !== 'INPUT' && !typing && !w.isFirst) goBack()\n }\n document.addEventListener('keydown', onKey)\n return () => document.removeEventListener('keydown', onKey)\n }, [goNext, goBack, w.isFirst, confirmExit])\n\n // The wizard covers the viewport, so anything scrollable behind it is a\n // scrollbar that scrolls nothing — and on a short screen, a page that drifts\n // under a fixed layer.\n React.useEffect(() => {\n if (typeof document === 'undefined') return\n const previous = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => { document.body.style.overflow = previous }\n }, [])\n\n const requestExit = () => {\n if (!onExit) return\n // Nothing typed yet is nothing to lose — asking would be ceremony.\n if (!w.touched) { onExit(); return }\n setConfirmExit(true)\n }\n\n /**\n * A step that asks one thing, once, moves on by itself.\n *\n * Picking the only answer on the screen and then reaching for \"Continue\" is\n * two gestures for one decision. Auto-advance is deliberately narrow: single\n * choice only (multi is still being built up), nothing else on the step, and\n * never into the submit — a workspace must be created by someone meaning to.\n */\n const [pendingAdvance, setPendingAdvance] = React.useState<string | null>(null)\n\n const setValue = React.useCallback(\n (id: string, value: unknown) => {\n w.setValue(id, value)\n if (w.isLast || !w.step || w.step.render) return\n const field = w.visibleFields.find((f) => f.id === id)\n if (!field || field.multi || (field.kind !== 'cards' && field.kind !== 'chips')) return\n if (w.visibleFields.length !== 1) return\n // The answer may reveal a follow-up (\"which system?\"). Advancing past a\n // box we just put on screen is worse than not advancing at all.\n if (computeVisibleFields(w.step, { ...w.values, [id]: value }).length !== 1) return\n setPendingAdvance(w.step.id)\n },\n [w],\n )\n\n // Armed by the click, fired from here — `next` refuses while `canAdvance` is\n // false, and at click time it still is: the value has not landed yet.\n React.useEffect(() => {\n if (!pendingAdvance) return\n if (pendingAdvance !== w.step?.id) { setPendingAdvance(null); return }\n if (!w.canAdvance) return\n // A beat, so the selection is seen before the screen changes.\n const timer = setTimeout(() => { setPendingAdvance(null); setDirection('forward'); w.next() }, 320)\n return () => clearTimeout(timer)\n }, [pendingAdvance, w.step?.id, w.canAdvance, w.next])\n\n // One field per step owns 1–9: the first unanswered choice group, or the first\n // one when everything is answered. Binding every group would make \"1\" mean\n // several things at once on a step that asks two questions.\n const choiceFields = w.visibleFields.filter((f) => f.kind === 'cards' || f.kind === 'chips')\n const shortcutFieldId = (choiceFields.find((f) => isEmptyAnswer(w.values[f.id])) ?? choiceFields[0])?.id\n\n const step = w.step\n if (!step) return null\n\n const nextLabel = step.nextLabel ?? (w.isLast ? text.finish : text.next)\n\n return (\n <div className={cn('fixed inset-0 z-50 flex bg-background', className)}>\n {/* Form column */}\n <div className=\"flex min-w-0 flex-1 flex-col lg:w-[58%] lg:flex-none lg:basis-[58%]\">\n <div className=\"flex-1 overflow-y-auto px-6 pt-10 sm:px-12 lg:px-16\">\n <div className=\"mx-auto w-full max-w-xl\">\n {logo && <div className=\"mb-8\">{logo}</div>}\n <div\n // Remounting on step change is what replays the entrance animation.\n key={step.id}\n className={direction === 'forward' ? 'saas-nav-forward' : 'saas-nav-back'}\n >\n {step.eyebrow && (\n <p className=\"mb-2 text-xs font-semibold uppercase tracking-[0.14em] text-primary\">{step.eyebrow}</p>\n )}\n <h1 className=\"text-3xl font-bold leading-tight tracking-tight text-foreground sm:text-4xl\">\n {step.title}\n </h1>\n {step.subtitle && (\n <p className=\"mt-3 text-base leading-relaxed text-muted-foreground\">{step.subtitle}</p>\n )}\n\n <div className=\"mt-8 space-y-6 pb-10\">\n {step.render\n ? step.render({ values: w.values, setValue, steps: w.steps, index: w.index, submitting: w.submitting })\n : w.visibleFields.map((field, i) => (\n <WizardField\n key={field.id}\n field={field}\n values={w.values}\n onChange={setValue}\n error={w.fieldErrors[field.id]}\n autoFocus={i === 0 && (field.kind === 'text' || field.kind === 'email' || field.kind === 'slug')}\n shortcuts={field.id === shortcutFieldId}\n busy={w.suggesting === field.id}\n suggested={w.suggested.has(field.id)}\n suggestedLabel={text.suggested}\n onClearSuggestion={() => w.clearSuggestion(field.id)}\n />\n ))}\n {w.blocker && <p className=\"text-sm text-destructive\">{w.blocker}</p>}\n {w.error && <p className=\"text-sm text-destructive\">{w.error}</p>}\n </div>\n </div>\n </div>\n </div>\n\n {/* Footer — progress sits directly above it, as one landing strip */}\n <div className=\"border-t border-border/60 px-6 pb-6 pt-4 sm:px-12 lg:px-16\">\n <div className=\"mx-auto w-full max-w-xl\">\n <StepProgress\n total={w.total}\n current={w.index}\n onSelect={(i) => { setDirection('back'); w.goTo(i) }}\n aria-label={text.stepOf\n .replace('{current}', String(w.index + 1))\n .replace('{total}', String(w.total))}\n className=\"mb-4\"\n />\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"flex items-center gap-1\">\n {!w.isFirst && (\n <Button variant=\"outline\" size=\"lg\" onClick={goBack} disabled={w.submitting}>\n <ArrowLeft className=\"h-4 w-4\" />\n {text.back}\n </Button>\n )}\n {onExit && (\n <Button variant=\"ghost\" size=\"lg\" onClick={requestExit} disabled={w.submitting}>\n {text.exit}\n </Button>\n )}\n </div>\n <Button size=\"lg\" onClick={goNext} disabled={!w.canAdvance}>\n {w.submitting ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : null}\n {nextLabel}\n {!w.submitting && !w.isLast && <ArrowRight className=\"h-4 w-4\" />}\n </Button>\n </div>\n </div>\n </div>\n </div>\n\n {/* Media column — the space images live in. Gone below lg, where the\n form needs the whole width more than the flow needs decoration. */}\n <div className=\"hidden lg:block lg:flex-1\">\n <MediaPanel media={step.media ?? fallbackMedia} />\n </div>\n\n <ConfirmDialog\n open={confirmExit}\n title={text.exitTitle}\n description={text.exitDescription}\n confirmLabel={text.exitConfirm}\n cancelLabel={text.exitCancel}\n variant=\"warning\"\n // The dialog says the progress is lost, so it has to be. The draft is\n // for a closed tab or a reload, not for overriding an explicit discard —\n // keeping it here would drop the next person who opens the flow onto\n // someone else's abandoned summary screen.\n onConfirm={() => { setConfirmExit(false); w.clearDraft(); onExit?.() }}\n onCancel={() => setConfirmExit(false)}\n />\n </div>\n )\n}\n"]}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { Zap, XCircle, X, Wrench, Workflow, Wheat, Warehouse, Wallet, UtensilsCrossed, Upload, WandSparkles, Utensils, UsersRound, Users, UserX, UserPlus, UserCog, UserCheck, User, Truck, Trophy, TrendingUp, TrendingDown, TreePalm, ToggleLeft, Timer, Target, Tags, TableProperties, Tag, Star, Sparkles, Soup, SlidersHorizontal, Sigma, ShoppingCart, ShoppingBag, ShieldCheck, Shield, Settings, Send, Search, Scale, Ruler, RotateCw, RotateCcw, Repeat, Receipt, Radio, Puzzle, PlusCircle, Plus, Plug, PieChart, Phone, Percent, Pencil, PawPrint, PartyPopper, Palette, PackageCheck, Package, Newspaper, Music, MousePointerClick, MoreHorizontal, Mic, MessageSquare, MessageCircle, Megaphone, MapPin, Map, Mail, LogIn, Lock, ListPlus, ListMusic, ListChecks, List, Link, LineChart, LeafyGreen, Leaf, LayoutTemplate, LayoutDashboard, Layers, Landmark, Instagram, Inbox, Images, Image, Home, FolderTree, Hourglass, Heart, Handshake, HandCoins, GraduationCap, Globe, Gift, Gauge, FolderOpen, Flame, Filter, FileText, FileDown, FileCheck2, Eye, ExternalLink, Egg, DoorOpen, DollarSign, Dog, Disc3, Database, CreditCard, CookingPot, Contact, Compass, Command, Clock3, Clock, ClipboardList, ClipboardCheck, Clapperboard, CircleDollarSign, CircleCheck, Circle, ChevronsUpDown, ChevronDown, ChefHat, CheckSquare, CheckCircle, Check, Cat, Camera, CalendarX, CalendarRange, CalendarPlus, CalendarDays, CalendarClock, CalendarCheck2, CalendarCheck, Calendar, Building2, Briefcase, Boxes, Box, BookOpenCheck, BookOpen, Bike, Bell, BarChart3, Banknote, Ban, BadgeDollarSign, Award, ArrowUpRight, ArrowUpCircle, ArrowLeftRight, ArrowDownRight, ArrowDownCircle, Apple, AlertTriangle, Activity } from 'lucide-react';
|
|
4
|
+
|
|
5
|
+
// src/primitives/brand-marks.tsx
|
|
6
|
+
var ChefControlMark = React.forwardRef(
|
|
7
|
+
function ChefControlMark2(props, ref) {
|
|
8
|
+
return (
|
|
9
|
+
// The viewBox is the symbol's ink box, not the 1080 square of the source
|
|
10
|
+
// file: cropped, the hat centres in a tile instead of floating in padding.
|
|
11
|
+
/* @__PURE__ */ jsx("svg", { ref, viewBox: "140.2 147.83 799.59 784.35", fill: "currentColor", "aria-hidden": true, ...props, children: /* @__PURE__ */ jsx("path", { d: "M871.42,305.72c-8.6-6.71-17.86-12.68-27.66-17.78-25.93-13.54-55.59-21.23-87.13-21.23-8.66,0-17.18.58-25.51,1.7-33.22-70.59-106.31-120.58-191.12-120.58s-157.93,49.99-191.12,120.61h-.03c-8.33-1.15-16.85-1.73-25.51-1.73-32.62,0-63.27,8.24-89.79,22.68-9.74,5.27-18.94,11.41-27.45,18.27-40.27,32.41-65.9,81.19-65.9,135.73,0,93.23,74.89,169.64,169.82,176.21,3.88,33.85,5.91,68.69,5.91,104.24,0,45.93-3.38,90.64-9.77,133.6-2,13.45-4.3,26.71-6.87,39.79,13.5-3.43,27.27-6.6,41.25-9.42,62.07-12.68,128.53-19.54,197.6-19.54s135.5,6.86,197.57,19.54c13.98,2.82,27.75,5.96,41.25,9.42-2.57-13.08-4.87-26.33-6.87-39.79-6.39-42.96-9.77-87.67-9.77-133.6,0-35.47,2-70.21,5.89-104.01,96.69-4.84,173.58-82,173.58-176.44,0-55.64-26.67-105.28-68.37-137.66ZM771.38,570.43c-4.87.51-9.77.75-14.76.75-8.36,0-16.55-.72-24.52-2.09-1.94,12.64-3.64,25.42-5.11,38.35-4.03,35.73-6.12,72.47-6.12,110.02,0,44.3,2.93,173.01,8.48,214.69-60.25-12.28-124.5-18.91-191.2-18.91s-130.99,6.63-191.24,18.94c5.56-41.67,8.48-170.42,8.48-214.71,0-37.34-2.09-73.9-6.06-109.45-1.43-12.93-3.14-25.72-5.11-38.35-6.81,1.02-13.8,1.52-20.88,1.52-6.27,0-12.46-.39-18.52-1.19-71.03-9.08-125.94-69.78-125.94-143.29,0-42.06,17.95-79.91,46.63-106.31,8.54-7.88,18.04-14.73,28.32-20.37,20.64-11.35,44.33-17.8,69.51-17.8,4.24,0,8.42.18,12.55.54,13.2,1.13,25.87,4.03,37.82,8.48,3.2-12.7,7.83-24.79,13.68-36.17,28.47-55.29,86.12-93.11,152.61-93.11s124.11,37.82,152.58,93.11c5.85,11.38,10.49,23.48,13.68,36.17,11.92-4.45,24.61-7.35,37.82-8.48,4.12-.36,8.3-.54,12.55-.54,24.07,0,46.75,5.88,66.7,16.28,10.34,5.41,19.95,12.01,28.62,19.66,30.14,26.47,49.17,65.3,49.17,108.55,0,74.8-56.87,136.36-129.73,143.74Z" }) })
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
var BRAND_MARKS = {
|
|
16
|
+
ChefControlMark
|
|
17
|
+
};
|
|
18
|
+
var registry = {
|
|
19
|
+
Activity,
|
|
20
|
+
AlertTriangle,
|
|
21
|
+
Apple,
|
|
22
|
+
ArrowDownCircle,
|
|
23
|
+
ArrowDownRight,
|
|
24
|
+
ArrowLeftRight,
|
|
25
|
+
ArrowUpCircle,
|
|
26
|
+
ArrowUpRight,
|
|
27
|
+
Award,
|
|
28
|
+
BadgeDollarSign,
|
|
29
|
+
Ban,
|
|
30
|
+
Banknote,
|
|
31
|
+
BarChart3,
|
|
32
|
+
Bell,
|
|
33
|
+
Bike,
|
|
34
|
+
BookOpen,
|
|
35
|
+
BookOpenCheck,
|
|
36
|
+
Box,
|
|
37
|
+
Boxes,
|
|
38
|
+
Briefcase,
|
|
39
|
+
Building2,
|
|
40
|
+
Calendar,
|
|
41
|
+
CalendarCheck,
|
|
42
|
+
CalendarCheck2,
|
|
43
|
+
CalendarClock,
|
|
44
|
+
CalendarDays,
|
|
45
|
+
CalendarPlus,
|
|
46
|
+
CalendarRange,
|
|
47
|
+
CalendarX,
|
|
48
|
+
Camera,
|
|
49
|
+
Cat,
|
|
50
|
+
Check,
|
|
51
|
+
CheckCircle,
|
|
52
|
+
CheckSquare,
|
|
53
|
+
ChefHat,
|
|
54
|
+
ChevronDown,
|
|
55
|
+
ChevronsUpDown,
|
|
56
|
+
Circle,
|
|
57
|
+
CircleCheck,
|
|
58
|
+
CircleDollarSign,
|
|
59
|
+
Clapperboard,
|
|
60
|
+
ClipboardCheck,
|
|
61
|
+
ClipboardList,
|
|
62
|
+
Clock,
|
|
63
|
+
Clock3,
|
|
64
|
+
Command,
|
|
65
|
+
Compass,
|
|
66
|
+
Contact,
|
|
67
|
+
CookingPot,
|
|
68
|
+
CreditCard,
|
|
69
|
+
Database,
|
|
70
|
+
Disc3,
|
|
71
|
+
Dog,
|
|
72
|
+
DollarSign,
|
|
73
|
+
DoorOpen,
|
|
74
|
+
Egg,
|
|
75
|
+
ExternalLink,
|
|
76
|
+
Eye,
|
|
77
|
+
FileCheck2,
|
|
78
|
+
FileDown,
|
|
79
|
+
FileText,
|
|
80
|
+
Filter,
|
|
81
|
+
Flame,
|
|
82
|
+
FolderOpen,
|
|
83
|
+
Gauge,
|
|
84
|
+
Gift,
|
|
85
|
+
Globe,
|
|
86
|
+
GraduationCap,
|
|
87
|
+
HandCoins,
|
|
88
|
+
Handshake,
|
|
89
|
+
Heart,
|
|
90
|
+
Hourglass,
|
|
91
|
+
FolderTree,
|
|
92
|
+
Home,
|
|
93
|
+
Image,
|
|
94
|
+
Images,
|
|
95
|
+
Inbox,
|
|
96
|
+
Instagram,
|
|
97
|
+
Landmark,
|
|
98
|
+
Layers,
|
|
99
|
+
LayoutDashboard,
|
|
100
|
+
LayoutTemplate,
|
|
101
|
+
Leaf,
|
|
102
|
+
LeafyGreen,
|
|
103
|
+
LineChart,
|
|
104
|
+
Link,
|
|
105
|
+
List,
|
|
106
|
+
ListChecks,
|
|
107
|
+
ListMusic,
|
|
108
|
+
ListPlus,
|
|
109
|
+
Lock,
|
|
110
|
+
LogIn,
|
|
111
|
+
Mail,
|
|
112
|
+
Map,
|
|
113
|
+
MapPin,
|
|
114
|
+
Megaphone,
|
|
115
|
+
MessageCircle,
|
|
116
|
+
MessageSquare,
|
|
117
|
+
Mic,
|
|
118
|
+
MoreHorizontal,
|
|
119
|
+
MousePointerClick,
|
|
120
|
+
Music,
|
|
121
|
+
Newspaper,
|
|
122
|
+
Package,
|
|
123
|
+
PackageCheck,
|
|
124
|
+
Palette,
|
|
125
|
+
PartyPopper,
|
|
126
|
+
PawPrint,
|
|
127
|
+
Pencil,
|
|
128
|
+
Percent,
|
|
129
|
+
Phone,
|
|
130
|
+
PieChart,
|
|
131
|
+
Plug,
|
|
132
|
+
Plus,
|
|
133
|
+
PlusCircle,
|
|
134
|
+
Puzzle,
|
|
135
|
+
Radio,
|
|
136
|
+
Receipt,
|
|
137
|
+
Repeat,
|
|
138
|
+
RotateCcw,
|
|
139
|
+
RotateCw,
|
|
140
|
+
Ruler,
|
|
141
|
+
Scale,
|
|
142
|
+
Search,
|
|
143
|
+
Send,
|
|
144
|
+
Settings,
|
|
145
|
+
Shield,
|
|
146
|
+
ShieldCheck,
|
|
147
|
+
ShoppingBag,
|
|
148
|
+
ShoppingCart,
|
|
149
|
+
Sigma,
|
|
150
|
+
SlidersHorizontal,
|
|
151
|
+
Soup,
|
|
152
|
+
Sparkles,
|
|
153
|
+
Star,
|
|
154
|
+
Tag,
|
|
155
|
+
TableProperties,
|
|
156
|
+
Tags,
|
|
157
|
+
Target,
|
|
158
|
+
Timer,
|
|
159
|
+
ToggleLeft,
|
|
160
|
+
TreePalm,
|
|
161
|
+
TrendingDown,
|
|
162
|
+
TrendingUp,
|
|
163
|
+
Trophy,
|
|
164
|
+
Truck,
|
|
165
|
+
User,
|
|
166
|
+
UserCheck,
|
|
167
|
+
UserCog,
|
|
168
|
+
UserPlus,
|
|
169
|
+
UserX,
|
|
170
|
+
Users,
|
|
171
|
+
UsersRound,
|
|
172
|
+
Utensils,
|
|
173
|
+
WandSparkles,
|
|
174
|
+
Upload,
|
|
175
|
+
UtensilsCrossed,
|
|
176
|
+
Wallet,
|
|
177
|
+
Warehouse,
|
|
178
|
+
Wheat,
|
|
179
|
+
Workflow,
|
|
180
|
+
Wrench,
|
|
181
|
+
X,
|
|
182
|
+
XCircle,
|
|
183
|
+
Zap,
|
|
184
|
+
// The family's own product marks, resolvable by the same string names the
|
|
185
|
+
// app registry stores — a product that HAS a mark should never be drawn by a
|
|
186
|
+
// stand-in glyph in the launcher.
|
|
187
|
+
...BRAND_MARKS
|
|
188
|
+
};
|
|
189
|
+
function registerIcons(icons) {
|
|
190
|
+
Object.assign(registry, icons);
|
|
191
|
+
}
|
|
192
|
+
function getLucideIcon(name) {
|
|
193
|
+
return registry[name];
|
|
194
|
+
}
|
|
195
|
+
var ICON_MAP = registry;
|
|
196
|
+
|
|
197
|
+
export { BRAND_MARKS, ChefControlMark, ICON_MAP, getLucideIcon, registerIcons };
|
|
198
|
+
//# sourceMappingURL=chunk-SB6DWHXI.js.map
|
|
199
|
+
//# sourceMappingURL=chunk-SB6DWHXI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/primitives/brand-marks.tsx","../src/icons.ts"],"names":["ChefControlMark"],"mappings":"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","file":"chunk-SB6DWHXI.js","sourcesContent":["import * as React from 'react'\nimport type { LucideIcon } from 'lucide-react'\n\n// ---------------------------------------------------------------------------\n// The Control family's own product marks.\n//\n// Every other tile in the app switcher is a lucide glyph named by a row in\n// `app.apps`, which is fine for a product that has no mark of its own. It is\n// not fine for one that does: ChefControl's symbol has weight hierarchy — thin\n// crown, heavy base, the same contrast as the logotype beside it — and lucide's\n// `ChefHat` draws the same object at constant stroke. The launcher is where a\n// product is recognised rather than read, so the row that shows a stand-in is\n// the row that says \"this app has no brand\".\n//\n// They live in the registry rather than in each app because the switcher lists\n// SIBLINGS: StoreControl draws the Chef row too, and a mark that only the app\n// itself owns would leave the same product looking like two different products\n// depending on which window you opened the menu from.\n//\n// `fill=\"currentColor\"` and no stroke: the tile decides the ink (see AppMark),\n// the same way a surface decides the colour of the text beside it — one drawing\n// for the gold tile, the rail and the login card, with no per-surface file and\n// no `filter: invert`, which chews the anti-aliased edge.\n// ---------------------------------------------------------------------------\n\n/**\n * Typed as a lucide icon so it can sit in the same registry: the props a mark\n * actually reads are `className` and `style`, and the stroke props the callers\n * pass mean nothing to a filled path — harmless, and not worth a second\n * resolver to avoid.\n */\nexport const ChefControlMark = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(\n function ChefControlMark(props, ref) {\n return (\n // The viewBox is the symbol's ink box, not the 1080 square of the source\n // file: cropped, the hat centres in a tile instead of floating in padding.\n <svg ref={ref} viewBox=\"140.2 147.83 799.59 784.35\" fill=\"currentColor\" aria-hidden {...props}>\n <path d=\"M871.42,305.72c-8.6-6.71-17.86-12.68-27.66-17.78-25.93-13.54-55.59-21.23-87.13-21.23-8.66,0-17.18.58-25.51,1.7-33.22-70.59-106.31-120.58-191.12-120.58s-157.93,49.99-191.12,120.61h-.03c-8.33-1.15-16.85-1.73-25.51-1.73-32.62,0-63.27,8.24-89.79,22.68-9.74,5.27-18.94,11.41-27.45,18.27-40.27,32.41-65.9,81.19-65.9,135.73,0,93.23,74.89,169.64,169.82,176.21,3.88,33.85,5.91,68.69,5.91,104.24,0,45.93-3.38,90.64-9.77,133.6-2,13.45-4.3,26.71-6.87,39.79,13.5-3.43,27.27-6.6,41.25-9.42,62.07-12.68,128.53-19.54,197.6-19.54s135.5,6.86,197.57,19.54c13.98,2.82,27.75,5.96,41.25,9.42-2.57-13.08-4.87-26.33-6.87-39.79-6.39-42.96-9.77-87.67-9.77-133.6,0-35.47,2-70.21,5.89-104.01,96.69-4.84,173.58-82,173.58-176.44,0-55.64-26.67-105.28-68.37-137.66ZM771.38,570.43c-4.87.51-9.77.75-14.76.75-8.36,0-16.55-.72-24.52-2.09-1.94,12.64-3.64,25.42-5.11,38.35-4.03,35.73-6.12,72.47-6.12,110.02,0,44.3,2.93,173.01,8.48,214.69-60.25-12.28-124.5-18.91-191.2-18.91s-130.99,6.63-191.24,18.94c5.56-41.67,8.48-170.42,8.48-214.71,0-37.34-2.09-73.9-6.06-109.45-1.43-12.93-3.14-25.72-5.11-38.35-6.81,1.02-13.8,1.52-20.88,1.52-6.27,0-12.46-.39-18.52-1.19-71.03-9.08-125.94-69.78-125.94-143.29,0-42.06,17.95-79.91,46.63-106.31,8.54-7.88,18.04-14.73,28.32-20.37,20.64-11.35,44.33-17.8,69.51-17.8,4.24,0,8.42.18,12.55.54,13.2,1.13,25.87,4.03,37.82,8.48,3.2-12.7,7.83-24.79,13.68-36.17,28.47-55.29,86.12-93.11,152.61-93.11s124.11,37.82,152.58,93.11c5.85,11.38,10.49,23.48,13.68,36.17,11.92-4.45,24.61-7.35,37.82-8.48,4.12-.36,8.3-.54,12.55-.54,24.07,0,46.75,5.88,66.7,16.28,10.34,5.41,19.95,12.01,28.62,19.66,30.14,26.47,49.17,65.3,49.17,108.55,0,74.8-56.87,136.36-129.73,143.74Z\" />\n </svg>\n )\n },\n) as unknown as LucideIcon\n\n/** Registry entries, by the name `app.apps.icon` carries for these products. */\nexport const BRAND_MARKS: Record<string, LucideIcon> = {\n ChefControlMark,\n}\n","import type { LucideIcon } from 'lucide-react'\nimport { BRAND_MARKS } from './primitives/brand-marks'\nimport {\n Activity, AlertTriangle, Apple, ArrowDownCircle, ArrowDownRight, ArrowLeftRight, ArrowUpCircle, ArrowUpRight,\n Award, BadgeDollarSign, Ban, Banknote, BarChart3, Bell, Bike, BookOpen,\n BookOpenCheck, Box, Boxes, Briefcase, Building2, Calendar, CalendarCheck, CalendarCheck2,\n CalendarClock, CalendarDays, CalendarPlus, CalendarRange, CalendarX, Camera, Cat, Check, CheckCircle,\n CheckSquare, ChefHat, ChevronDown, ChevronsUpDown, Circle, CircleCheck, CircleDollarSign, Clapperboard,\n ClipboardCheck, ClipboardList,\n Clock, Clock3, Command, Compass, Contact, CookingPot, CreditCard, Database, Disc3, Dog,\n DollarSign, DoorOpen, Egg, ExternalLink, Eye, FileCheck2, FileDown,\n FileText, Filter, Flame, FolderOpen, Gauge, Gift, Globe, GraduationCap, HandCoins, Handshake, Heart, Hourglass,\n FolderTree, Home, Image, Images, Inbox, Instagram, Landmark, Layers, LayoutDashboard, LayoutTemplate,\n Leaf, LeafyGreen, LineChart, Link, List, ListChecks, ListMusic, ListPlus, Lock, LogIn,\n Mail, Map, MapPin, Megaphone, MessageCircle, MessageSquare, Mic, MoreHorizontal,\n MousePointerClick, Music, Newspaper, Package, PackageCheck, Palette, PartyPopper, PawPrint,\n Pencil, Percent, Phone, PieChart, Plug, Plus, PlusCircle, Puzzle, Radio,\n Receipt, Repeat, RotateCcw, RotateCw, Ruler, Scale, Search, Send, Settings, Shield,\n ShieldCheck, ShoppingBag, ShoppingCart, Sigma, SlidersHorizontal, Soup, Sparkles, Star, Tag,\n TableProperties, Tags, Target, Timer, ToggleLeft, TreePalm, TrendingDown, TrendingUp, Trophy, Truck,\n User, UserCheck, UserCog, UserPlus, UserX, Users, UsersRound, Utensils, WandSparkles,\n Upload, UtensilsCrossed, Wallet, Warehouse, Wheat, Workflow, Wrench, X, XCircle,\n Zap,\n} from 'lucide-react'\n\n// ---------------------------------------------------------------------------\n// Central lucide icon registry. The SDK's manifest-driven surfaces resolve\n// icons by string name; a namespace import (`import * as LucideIcons`) defeats\n// tree-shaking and drags all ~1,500 icons (~500 KB min) into every bundle, so\n// the SDK ships this curated set instead — the union of every icon name the\n// SDK, plugins, and app templates reference. Apps using names outside the set\n// call registerIcons({ Name: Component }) with their own named imports.\n// ---------------------------------------------------------------------------\n\nconst registry: Record<string, LucideIcon> = {\n Activity, AlertTriangle, Apple, ArrowDownCircle, ArrowDownRight, ArrowLeftRight, ArrowUpCircle, ArrowUpRight,\n Award, BadgeDollarSign, Ban, Banknote, BarChart3, Bell, Bike, BookOpen,\n BookOpenCheck, Box, Boxes, Briefcase, Building2, Calendar, CalendarCheck, CalendarCheck2,\n CalendarClock, CalendarDays, CalendarPlus, CalendarRange, CalendarX, Camera, Cat, Check, CheckCircle,\n CheckSquare, ChefHat, ChevronDown, ChevronsUpDown, Circle, CircleCheck, CircleDollarSign, Clapperboard,\n ClipboardCheck, ClipboardList,\n Clock, Clock3, Command, Compass, Contact, CookingPot, CreditCard, Database, Disc3, Dog,\n DollarSign, DoorOpen, Egg, ExternalLink, Eye, FileCheck2, FileDown,\n FileText, Filter, Flame, FolderOpen, Gauge, Gift, Globe, GraduationCap, HandCoins, Handshake, Heart, Hourglass,\n FolderTree, Home, Image, Images, Inbox, Instagram, Landmark, Layers, LayoutDashboard, LayoutTemplate,\n Leaf, LeafyGreen, LineChart, Link, List, ListChecks, ListMusic, ListPlus, Lock, LogIn,\n Mail, Map, MapPin, Megaphone, MessageCircle, MessageSquare, Mic, MoreHorizontal,\n MousePointerClick, Music, Newspaper, Package, PackageCheck, Palette, PartyPopper, PawPrint,\n Pencil, Percent, Phone, PieChart, Plug, Plus, PlusCircle, Puzzle, Radio,\n Receipt, Repeat, RotateCcw, RotateCw, Ruler, Scale, Search, Send, Settings, Shield,\n ShieldCheck, ShoppingBag, ShoppingCart, Sigma, SlidersHorizontal, Soup, Sparkles, Star, Tag,\n TableProperties, Tags, Target, Timer, ToggleLeft, TreePalm, TrendingDown, TrendingUp, Trophy, Truck,\n User, UserCheck, UserCog, UserPlus, UserX, Users, UsersRound, Utensils, WandSparkles,\n Upload, UtensilsCrossed, Wallet, Warehouse, Wheat, Workflow, Wrench, X, XCircle,\n Zap,\n // The family's own product marks, resolvable by the same string names the\n // app registry stores — a product that HAS a mark should never be drawn by a\n // stand-in glyph in the launcher.\n ...BRAND_MARKS,\n}\n\n/** Add or override icons resolvable by string name (e.g. from app manifests). */\nexport function registerIcons(icons: Record<string, LucideIcon>): void {\n Object.assign(registry, icons)\n}\n\n/** Resolve a lucide icon by name; undefined when not registered. */\nexport function getLucideIcon(name: string): LucideIcon | undefined {\n return registry[name]\n}\n\n/** The registered icon map (live reference — do not mutate directly). */\nexport const ICON_MAP = registry\n"]}
|
package/dist/dashboard/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { ChartWidget, DEFAULT_RANGE_OPTIONS, DashboardCanvas, DashboardCustomizeMenu, DashboardGrid, DashboardNavigateProvider, DashboardRangeControl, DashboardRangeProvider, GoldCard, KpiCard, OnboardingWidget, SidebarOnboarding, Sparkline, TableWidget, WidgetGrid, defineChartWidget, defineCustomWidget, defineKpiWidget, defineOnboardingWidget, defineTableWidget, formatKpiValue, renderIcon, resolveDashboardLayout, useDashboardNavigate, useDashboardPreferences, useDashboardRange, useOnboardingProgress } from '../chunk-
|
|
1
|
+
export { ChartWidget, DEFAULT_RANGE_OPTIONS, DashboardCanvas, DashboardCustomizeMenu, DashboardGrid, DashboardNavigateProvider, DashboardRangeControl, DashboardRangeProvider, GoldCard, KpiCard, OnboardingWidget, SidebarOnboarding, Sparkline, TableWidget, WidgetGrid, defineChartWidget, defineCustomWidget, defineKpiWidget, defineOnboardingWidget, defineTableWidget, formatKpiValue, renderIcon, resolveDashboardLayout, useDashboardNavigate, useDashboardPreferences, useDashboardRange, useOnboardingProgress } from '../chunk-ERSX3C7T.js';
|
|
2
2
|
import '../chunk-E44WOPCR.js';
|
|
3
3
|
import '../chunk-HKGTF2YA.js';
|
|
4
4
|
import '../chunk-OKZ6WQB3.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-SB6DWHXI.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/icons.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AA6D9C,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAErE;AAED,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED,yEAAyE;AACzE,eAAO,MAAM,QAAQ,4BAAW,CAAA"}
|
package/dist/icons.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { cn } from './lib/cn';
|
|
2
|
-
export { Button, buttonVariants, type ButtonProps, Input, type InputProps, Badge, badgeVariants, type BadgeProps, Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, Modal, ModalPortal, ModalOverlay, ModalClose, ModalTrigger, ModalContent, ModalHeader, ModalBody, ModalFooter, ModalTitle, ModalDescription, type ModalSize, Dropdown, DropdownTrigger, DropdownContent, DropdownItem, DropdownCheckboxItem, DropdownRadioItem, DropdownLabel, DropdownSeparator, DropdownShortcut, DropdownGroup, DropdownPortal, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownRadioGroup, DataTable, type DataTableProps, Checkbox, type CheckboxColor, type CheckboxProps, Sheet, SheetPortal, SheetOverlay, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetBody, SheetFooter, SheetTitle, SheetDescription, Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, ToastProvider, toast, Tabs, TabsList, TabsTrigger, TabsContent, Separator, PhoneLink, normalizePhone, type PhoneLinkProps, type NormalizedPhone, Breadcrumb, Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, PageHeader, PageHeaderCrumb, PageActionBar, RowActions, setRowActionsLabel, type PageActionItem, type PageActionIntent, type PageHeaderProps, SearchField, ChevronPager, BulkActionBar, type BulkAction, type BulkActionBarProps, Thumbnail, type ThumbnailProps, type ThumbnailSize, PhoneField, WhatsAppIcon, WHATSAPP_BRAND_COLOR, type WhatsAppIconProps, formatPhone, type PhoneFieldProps, type SearchFieldProps, type ChevronPagerProps, StatTiles, type StatTilesProps, type StatTileData, Switch, type SwitchProps, Hint, type HintProps, TimePicker, Skeleton, TableSkeleton, ListView, type ListViewProps, useRowSelection, type RowBulkAction, type RowSelection, type UseRowSelectionOptions, DatePicker, SearchSelect, type SearchSelectOption, type SearchSelectProps, CurrencyInput, ConfirmDialog, Popover, PopoverTrigger, PopoverAnchor, PopoverContent, SegmentedControl, type SegmentedControlProps, type SegmentedOption, HeaderTabs, PageTabs, PageToolbar, RangeControl, ToolbarButton, ToolbarAction, type PageToolbarProps, type RangeControlProps, type RangeOption, type HeaderTabsProps, type PageTabsProps, type HeaderTab, FilterChip, type FilterChipProps, type FilterChipOption, Markdown, renderMarkdown, type MarkdownProps, MarkdownEditor, type MarkdownEditorProps, SearchCombobox, type ComboboxOption, RefreshButton, type RefreshButtonProps, StepProgress, type StepProgressProps, OptionCards, OptionChips, type OptionCardsProps, type OptionChipsProps, type SelectableOption, ImageDrop, type ImageDropProps, } from './primitives';
|
|
2
|
+
export { Button, buttonVariants, type ButtonProps, Input, type InputProps, Badge, badgeVariants, type BadgeProps, Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, Modal, ModalPortal, ModalOverlay, ModalClose, ModalTrigger, ModalContent, ModalHeader, ModalBody, ModalFooter, ModalTitle, ModalDescription, type ModalSize, Dropdown, DropdownTrigger, DropdownContent, DropdownItem, DropdownCheckboxItem, DropdownRadioItem, DropdownLabel, DropdownSeparator, DropdownShortcut, DropdownGroup, DropdownPortal, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownRadioGroup, DataTable, type DataTableProps, Checkbox, type CheckboxColor, type CheckboxProps, Sheet, SheetPortal, SheetOverlay, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetBody, SheetFooter, SheetTitle, SheetDescription, Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, ToastProvider, toast, Tabs, TabsList, TabsTrigger, TabsContent, Separator, PhoneLink, normalizePhone, type PhoneLinkProps, type NormalizedPhone, Breadcrumb, Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, PageHeader, PageHeaderCrumb, PageActionBar, RowActions, setRowActionsLabel, type PageActionItem, type PageActionIntent, type PageHeaderProps, SearchField, ChevronPager, BulkActionBar, type BulkAction, type BulkActionBarProps, DraftCommitBar, type DraftCommitBarProps, Thumbnail, type ThumbnailProps, type ThumbnailSize, PhoneField, WhatsAppIcon, WHATSAPP_BRAND_COLOR, type WhatsAppIconProps, formatPhone, type PhoneFieldProps, type SearchFieldProps, type ChevronPagerProps, StatTiles, type StatTilesProps, type StatTileData, Switch, type SwitchProps, Hint, type HintProps, TimePicker, Skeleton, TableSkeleton, ListView, type ListViewProps, useRowSelection, type RowBulkAction, type RowSelection, type UseRowSelectionOptions, DatePicker, SearchSelect, type SearchSelectOption, type SearchSelectProps, CurrencyInput, ConfirmDialog, Popover, PopoverTrigger, PopoverAnchor, PopoverContent, SegmentedControl, type SegmentedControlProps, type SegmentedOption, HeaderTabs, PageTabs, PageToolbar, RangeControl, ToolbarButton, ToolbarAction, type PageToolbarProps, type RangeControlProps, type RangeOption, type HeaderTabsProps, type PageTabsProps, type HeaderTab, FilterChip, type FilterChipProps, type FilterChipOption, MultiSelect, type MultiSelectProps, type MultiSelectOption, Markdown, renderMarkdown, type MarkdownProps, MarkdownEditor, type MarkdownEditorProps, SearchCombobox, type ComboboxOption, RefreshButton, type RefreshButtonProps, StepProgress, type StepProgressProps, OptionCards, OptionChips, type OptionCardsProps, type OptionChipsProps, type SelectableOption, ImageDrop, type ImageDropProps, StockEntryForm, type StockEntryFormProps, type StockEntryVerb, type StockEntryReason, type StockEntrySubmit, MiniCalendar, toLocalISODate, type MiniCalendarProps, type MiniCalendarMarker, DotBadge, type DotBadgeProps, FilterCheckList, FilterSection, FilterCheckRow, FilterCheckBox, type FilterCheckListProps, type FilterCheckOption, } from './primitives';
|
|
3
3
|
export { Wizard, type WizardProps, type WizardLabels, WizardField, type WizardFieldProps, useWizard, type UseWizardOptions, type UseWizardResult, type WizardFieldDef, type WizardFieldKind, type WizardMedia, type WizardRenderContext, type WizardStepDef, type WizardValues, } from './wizard';
|
|
4
4
|
export { AppShell, type AppShellProps, type AppShellUser, AppShellSkeleton, type AppShellSkeletonProps, type BottomNavItem, type BottomNavRouteItem, type BottomNavActionItem, type BottomNavMoreItem, type BottomNavAssistantItem, bottomNavReachesAll, type MobileHeaderVariant, Sidebar, type SidebarProps, type SidebarUser, type NavigationItem, ICON_MAP, Topbar, type TopbarProps, ModulePage, SubpageHeader, ContentSplit, ContentSplitTrigger, ModuleLayoutProvider, useModuleLayout, PageHeaderActions, PageRail, RailNavItem, useRailRow, type RailFlyoutContent, BackStyleProvider, useBackStyle, PageTrail, usePageTrail, usePageTrailParent, navigateToCrumb, type PageTrailCrumb, SaveBar, SaveBarProvider, useSaveBar, useBackHandler, type SaveBarRegistration, useModuleHeaderSlot, useModuleHeaderActionsSlot, PageTransition, NavTransitionProvider, useNavTransition, type NavTransition, type ModulePageProps, type ModuleNavItem, type ModuleNavVariant, type SubpageHeaderProps, type ContentSplitProps, type ContentSplitTriggerProps, type BackButtonStyle, } from './layout';
|
|
5
5
|
export { useLayoutStore, usePageHeader, usePageHeaderClaimed, PageTitlePortal, usePageHeaderHost, useHasPageHeaderHost, useHasPageHeaderBack, useHasPageHeaderOutlet, PageHeaderOutlet, useRegisterPageActions, useHasPageActions, useThemeStore, lightTheme, darkTheme, type ThemeTokens, type SemanticColors, type UIPerceptionTokens, type CreateThemeOptions, } from './stores';
|
|
@@ -8,6 +8,7 @@ export { Avatar, AvatarImage, AvatarFallback } from './primitives/Avatar';
|
|
|
8
8
|
export { DashboardCanvas, WidgetGrid, DashboardNavigateProvider, useDashboardNavigate, type DashboardCanvasProps, resolveDashboardLayout, type LaidOutWidget, useDashboardPreferences, type DashboardPreferencesState, DashboardCustomizeMenu, type DashboardCustomizeMenuProps, DashboardGrid, type DashboardGridItem, type DashboardGridProps, GoldCard, type GoldCardProps, DashboardRangeProvider, DashboardRangeControl, useDashboardRange, DEFAULT_RANGE_OPTIONS, type DashboardRange, type DashboardRangeProviderProps, type DashboardRangeOptions, KpiCard, formatKpiValue, type KpiCardProps, ChartWidget, type ChartWidgetProps, TableWidget, type TableWidgetProps, OnboardingWidget, type OnboardingStepInput, type OnboardingWidgetProps, SidebarOnboarding, type SidebarOnboardingProps, useOnboardingProgress, type OnboardingProgress, renderIcon, defineKpiWidget, defineChartWidget, defineTableWidget, defineOnboardingWidget, defineCustomWidget, type DefineWidgetInput, type KpiFormat, type KpiTrend, type KpiValue, type KpiCurrency, type IconRef, type ChartType, type ChartSeries, } from './dashboard';
|
|
9
9
|
export * from './analytics';
|
|
10
10
|
export { registerIcons, getLucideIcon } from './icons';
|
|
11
|
+
export { ChefControlMark, BRAND_MARKS } from './primitives/brand-marks';
|
|
11
12
|
export { useIsWide, WIDE_QUERY } from './hooks/useIsWide';
|
|
12
13
|
export { TourSpotlight, type TourSpotlightProps, useTourStore, setTourNavigator, getTourNavigator, currentStop, type TourState, tourAnchor, } from './tour';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|