@david-richard/notify-ds 1.0.1 → 1.0.3

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/utils.ts","../components/button.tsx","../components/input.tsx","../components/checkbox.tsx","../components/radio.tsx","../components/toggle.tsx","../components/selector.tsx","../components/tabs.tsx","../components/switcher.tsx","../components/bottom-nav.tsx","../components/badge.tsx","../components/metric-tile.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","jsxs","React3","React4","React5","React6","React7","React8","React9"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"./utils\"\n\n/**\n * Button — shadcn-style primitive backed by the semantic tokens in tokens.css.\n *\n * Matrix:\n * variant: primary | secondary | tertiary | link\n * size: xsm | sm | md | lg\n * state: active (default) | inactive | disabled — driven by `data-state` + `disabled`\n *\n * Use `<Button iconOnly />` (or `<IconButton />` below) to render the icon-only square form.\n */\nconst buttonVariants = cva(\n [\n // base\n \"inline-flex items-center justify-center whitespace-nowrap select-none\",\n \"rounded-[var(--button-radius)] font-medium font-[var(--font-family-secondary)]\", // Red Hat Text Medium per spec\n \"transition-colors duration-[var(--p-duration-fast)] ease-[var(--p-easing-standard)]\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-[var(--p-opacity-disabled)]\",\n // icon child sizing\n \"[&_svg]:shrink-0\",\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\n \"hover:bg-[var(--color-primary-hover)] active:bg-[var(--color-primary-pressed)]\",\n \"data-[state=inactive]:bg-[var(--color-inactive)] data-[state=inactive]:text-[var(--color-inactive-foreground)]\",\n ],\n secondary: [\n \"bg-transparent text-[var(--color-secondary-foreground)]\",\n \"border border-[var(--color-secondary-border)]\",\n \"hover:bg-[var(--color-secondary-hover)] active:bg-[var(--color-secondary-pressed)]\",\n \"data-[state=inactive]:text-[var(--color-inactive-foreground)] data-[state=inactive]:border-[var(--color-inactive-border)]\",\n ],\n tertiary: [\n \"bg-transparent text-[var(--color-tertiary-foreground)]\",\n \"hover:bg-[var(--color-tertiary-hover)]\",\n \"data-[state=inactive]:text-[var(--color-inactive-foreground)]\",\n ],\n link: [\n \"bg-transparent text-[var(--color-link-foreground)] underline underline-offset-4\",\n \"hover:decoration-2\",\n \"data-[state=inactive]:text-[var(--color-inactive-foreground)]\",\n ],\n },\n size: {\n xsm: \"h-[var(--button-xsm-h)] px-[var(--button-xsm-px)] gap-[var(--button-xsm-gap)] text-[length:var(--button-xsm-fs)] leading-[var(--button-xsm-lh)] [&_svg]:size-3\",\n sm: \"h-[var(--button-sm-h)] px-[var(--button-sm-px)] gap-[var(--button-sm-gap)] text-[length:var(--button-sm-fs)] leading-[var(--button-sm-lh)] [&_svg]:size-[14px]\",\n md: \"h-[var(--button-md-h)] px-[var(--button-md-px)] gap-[var(--button-md-gap)] text-[length:var(--button-md-fs)] leading-[var(--button-md-lh)] [&_svg]:size-4\",\n lg: \"h-[var(--button-lg-h)] px-[var(--button-lg-px)] gap-[var(--button-lg-gap)] text-[length:var(--button-lg-fs)] leading-[var(--button-lg-lh)] [&_svg]:size-5\",\n },\n iconOnly: {\n true: \"px-0 aspect-square rounded-[var(--button-icon-radius)]\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Link variant has no horizontal padding — it's text-like.\n { variant: \"link\", iconOnly: false, class: \"px-0 h-auto\" },\n // Tertiary should hug its text vertically.\n { variant: \"tertiary\", iconOnly: false, class: \"\" },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n iconOnly: false,\n },\n },\n)\n\ntype ButtonState = \"active\" | \"inactive\"\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n state?: ButtonState\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, iconOnly, state = \"active\", asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n ref={ref}\n data-state={state}\n className={cn(buttonVariants({ variant, size, iconOnly }), className)}\n {...props}\n />\n )\n },\n)\nButton.displayName = \"Button\"\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, Omit<ButtonProps, \"iconOnly\">>(\n (props, ref) => <Button ref={ref} iconOnly {...props} />,\n)\nIconButton.displayName = \"IconButton\"\n\nexport { buttonVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"./utils\"\n\n/**\n * Input — pill-shaped form field matching the Qu Notify Input component set.\n *\n * Matrix:\n * type: default | password | search\n * state: normal | active | filled | error | disabled | readonly\n *\n * Anatomy (top → bottom):\n * <label> — Red Hat Text Medium 18px, required asterisk in brand-red\n * <pill> — full-radius container, white bg, 1.5px stroke\n * [left-icon] — search icon (search type only)\n * <input> — Inter Regular 16px placeholder / filled text\n * [right-icon] — eye/eye-off toggle (password), x-circle clear (search filled), info (error)\n * <helper> — Inter Regular 12px, gray or red\n *\n * Usage:\n * <InputField label=\"Email\" placeholder=\"you@example.com\" />\n * <InputField type=\"password\" label=\"Password\" required />\n * <InputField type=\"search\" placeholder=\"Search checks...\" />\n * <InputField state=\"error\" errorMessage=\"Invalid email address\" />\n */\n\n// ── pill shell ──────────────────────────────────────────────────────────────\nconst pillVariants = cva(\n [\n \"flex items-center gap-2\",\n \"h-12 w-full rounded-full px-4\",\n \"border-[1.5px] bg-[var(--color-input-bg,#fff)]\",\n \"transition-colors duration-[120ms]\",\n ],\n {\n variants: {\n state: {\n normal: \"border-[var(--color-input-border-default,#C9C9C9)]\",\n active: \"border-[var(--color-input-border-active,#40CCF2)] ring-0\",\n filled: \"border-[var(--color-input-border-default,#C9C9C9)]\",\n error: \"border-[var(--color-input-border-error,#EF2149)]\",\n disabled: \"border-[var(--color-input-border-default,#C9C9C9)] bg-[var(--color-input-bg-disabled,#F4F4F4)] cursor-not-allowed opacity-50\",\n readonly: \"border-[var(--color-input-border-default,#C9C9C9)] bg-[var(--color-input-bg-disabled,#F4F4F4)]\",\n },\n },\n defaultVariants: { state: \"normal\" },\n },\n)\n\ntype InputState = \"normal\" | \"active\" | \"filled\" | \"error\" | \"disabled\" | \"readonly\"\ntype InputType = \"default\" | \"password\" | \"search\"\n\nexport interface InputFieldProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /** Visual input type — controls icons and keyboard on mobile */\n type?: InputType\n /** Controlled state override — set automatically on focus/blur if uncontrolled */\n state?: InputState\n label?: string\n /** Whether to show the red required asterisk */\n required?: boolean\n helperText?: string\n errorMessage?: string\n /** Slot for a custom right-side icon/action */\n rightSlot?: React.ReactNode\n}\n\nexport const InputField = React.forwardRef<HTMLInputElement, InputFieldProps>(\n (\n {\n type = \"default\",\n state: stateProp,\n label,\n required,\n helperText,\n errorMessage,\n rightSlot,\n className,\n onFocus,\n onBlur,\n onChange,\n value,\n defaultValue,\n disabled,\n readOnly,\n placeholder,\n ...props\n },\n ref,\n ) => {\n // ── internal state for uncontrolled focus/fill tracking ──\n const [focused, setFocused] = React.useState(false)\n const [hasValue, setHasValue] = React.useState(!!defaultValue || !!value)\n const [showPassword, setShowPassword] = React.useState(false)\n\n // Derive visual state\n const state: InputState =\n stateProp ??\n (disabled ? \"disabled\"\n : readOnly ? \"readonly\"\n : errorMessage ? \"error\"\n : focused ? \"active\"\n : hasValue ? \"filled\"\n : \"normal\")\n\n const nativeType =\n type === \"password\" ? (showPassword ? \"text\" : \"password\") :\n type === \"search\" ? \"search\" :\n \"text\"\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true)\n onFocus?.(e)\n }\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n onBlur?.(e)\n }\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setHasValue(e.target.value.length > 0)\n onChange?.(e)\n }\n\n // ── icon colors ──────────────────────────────────────────────────────────\n const iconColor =\n state === \"active\" ? \"text-[var(--color-input-icon-active,#40CCF2)]\" :\n state === \"error\" ? \"text-[var(--color-input-icon-error,#EF2149)]\" :\n \"text-[var(--color-input-icon-default,#B1B1B1)]\"\n\n return (\n <div className={cn(\"flex w-full flex-col gap-1.5\", className)}>\n\n {/* Label row */}\n {label && (\n <label className=\"flex items-center gap-0.5 font-['Red_Hat_Text'] text-[18px] font-medium leading-tight text-[var(--color-text-primary,#000)]\">\n {label}\n {required && (\n <span className=\"text-[var(--color-brand-red,#EF2149)]\" aria-hidden=\"true\"> *</span>\n )}\n </label>\n )}\n\n {/* Pill */}\n <div className={pillVariants({ state })}>\n\n {/* Left icon — search only */}\n {type === \"search\" && (\n <span className={cn(\"shrink-0\", iconColor)} aria-hidden=\"true\">\n <SearchIcon />\n </span>\n )}\n\n {/* Native input */}\n <input\n ref={ref}\n type={nativeType}\n disabled={disabled || state === \"disabled\"}\n readOnly={readOnly || state === \"readonly\"}\n placeholder={placeholder}\n value={value}\n defaultValue={defaultValue}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n className={cn(\n \"min-w-0 flex-1 bg-transparent outline-none\",\n \"font-['Inter'] text-[16px] font-normal\",\n \"text-[var(--color-input-text,#000)] placeholder:text-[var(--color-input-placeholder,#B1B1B1)]\",\n \"disabled:cursor-not-allowed\",\n )}\n aria-invalid={state === \"error\" || undefined}\n {...props}\n />\n\n {/* Right slot — custom override */}\n {rightSlot}\n\n {/* Right icon — contextual */}\n {!rightSlot && type === \"password\" && (\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => setShowPassword(v => !v)}\n className={cn(\"shrink-0 cursor-pointer\", iconColor)}\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\n >\n {showPassword ? <EyeOffIcon /> : <EyeIcon />}\n </button>\n )}\n {!rightSlot && type === \"search\" && hasValue && !disabled && (\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => setHasValue(false)}\n className={cn(\"shrink-0 cursor-pointer\", iconColor)}\n aria-label=\"Clear search\"\n >\n <XCircleIcon />\n </button>\n )}\n {!rightSlot && state === \"error\" && type !== \"password\" && (\n <span className={cn(\"shrink-0\", iconColor)} aria-hidden=\"true\">\n <InfoCircleIcon />\n </span>\n )}\n </div>\n\n {/* Helper / error text */}\n {(errorMessage || helperText) && (\n <p\n className={cn(\n \"font-['Inter'] text-[12px] font-normal leading-tight px-1\",\n errorMessage\n ? \"text-[var(--color-input-text-error,#EF2149)]\"\n : \"text-[var(--color-text-tertiary,#6B7280)]\",\n )}\n >\n {errorMessage ?? helperText}\n </p>\n )}\n </div>\n )\n },\n)\nInputField.displayName = \"InputField\"\n\n// ── inline icon components (16×16 stroke, matches Figma set) ─────────────────\n\nfunction SearchIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\" />\n <line x1=\"10.5\" y1=\"10.5\" x2=\"14\" y2=\"14\" />\n </svg>\n )\n}\n\nfunction EyeIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M1 8s2.5-5 7-5 7 5 7 5-2.5 5-7 5-7-5-7-5Z\" />\n <circle cx=\"8\" cy=\"8\" r=\"2\" />\n </svg>\n )\n}\n\nfunction EyeOffIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M2 2l12 12M6.5 6.5A2 2 0 0 0 9.5 9.5\" />\n <path d=\"M4.2 4.2C2.6 5.2 1 8 1 8s2.5 5 7 5c1.4 0 2.7-.4 3.8-1\" />\n <path d=\"M9.8 3.2C12.2 4.2 15 8 15 8s-.7 1.4-1.8 2.6\" />\n </svg>\n )\n}\n\nfunction XCircleIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <line x1=\"5.5\" y1=\"5.5\" x2=\"10.5\" y2=\"10.5\" />\n <line x1=\"10.5\" y1=\"5.5\" x2=\"5.5\" y2=\"10.5\" />\n </svg>\n )\n}\n\nfunction InfoCircleIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <line x1=\"8\" y1=\"7\" x2=\"8\" y2=\"11\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.5\" fill=\"currentColor\" stroke=\"none\" />\n </svg>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * Checkbox — Qu Notify form control.\n *\n * States: unchecked | checked | indeterminate | disabled\n * - Unchecked: transparent fill, 1.5px teal (#339FB8) stroke, 4px radius\n * - Checked: cyan (#40CCF2) fill, white checkmark, no stroke\n * - Indeterminate: cyan fill, white dash, no stroke\n * - Disabled: opacity 0.5 on full component\n *\n * Usage:\n * <Checkbox label=\"Remember me\" />\n * <Checkbox checked label=\"Agreed to terms\" />\n * <Checkbox indeterminate label=\"Select all\" />\n * <Checkbox disabled label=\"Unavailable option\" />\n */\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: string\n indeterminate?: boolean\n helperText?: string\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ label, indeterminate, helperText, disabled, checked, defaultChecked, className, onChange, ...props }, ref) => {\n const internalRef = React.useRef<HTMLInputElement>(null)\n const resolvedRef = (ref as React.RefObject<HTMLInputElement>) ?? internalRef\n\n const [isChecked, setIsChecked] = React.useState(!!defaultChecked || !!checked)\n const isControlled = checked !== undefined\n const currentChecked = isControlled ? !!checked : isChecked\n\n React.useEffect(() => {\n if (resolvedRef.current) {\n resolvedRef.current.indeterminate = !!indeterminate\n }\n }, [indeterminate, resolvedRef])\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setIsChecked(e.target.checked)\n onChange?.(e)\n }\n\n const showCheck = !indeterminate && currentChecked\n const showDash = !!indeterminate\n\n return (\n <label\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n {/* Hidden native input for a11y / form submission */}\n <input\n ref={resolvedRef}\n type=\"checkbox\"\n checked={isControlled ? checked : isChecked}\n disabled={disabled}\n onChange={handleChange}\n className=\"sr-only\"\n {...props}\n />\n\n {/* Visual control */}\n <span\n aria-hidden=\"true\"\n className={cn(\n \"flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-[4px]\",\n \"border-[1.5px] transition-colors duration-[120ms]\",\n (showCheck || showDash)\n ? \"border-transparent bg-[var(--color-primary,#40CCF2)]\"\n : \"border-[var(--color-secondary-border,#339FB8)] bg-transparent\",\n )}\n >\n {showCheck && <CheckIcon />}\n {showDash && <DashIcon />}\n </span>\n\n {/* Label + helper */}\n {(label || helperText) && (\n <span className=\"flex flex-col gap-0.5\">\n {label && (\n <span className=\"font-['Red_Hat_Text'] text-[14px] font-normal leading-tight text-[var(--color-text-primary,#000)]\">\n {label}\n </span>\n )}\n {helperText && (\n <span className=\"font-['Inter'] text-[12px] text-[var(--color-text-tertiary,#6B7280)]\">\n {helperText}\n </span>\n )}\n </span>\n )}\n </label>\n )\n },\n)\nCheckbox.displayName = \"Checkbox\"\n\n// ── icons ────────────────────────────────────────────────────────────────────\n\nfunction CheckIcon() {\n return (\n <svg width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"1,4 4,7 10,1\" />\n </svg>\n )\n}\n\nfunction DashIcon() {\n return (\n <svg width=\"10\" height=\"2\" viewBox=\"0 0 10 2\" fill=\"none\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"1\" y1=\"1\" x2=\"9\" y2=\"1\" />\n </svg>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * Radio — Qu Notify form control.\n *\n * States: unselected | selected | disabled\n * - Unselected: transparent fill, 1.5px teal (#339FB8) stroke, full radius\n * - Selected: cyan (#40CCF2) fill, white center dot, no stroke\n * - Disabled: opacity 0.5 on full component\n *\n * Usage (uncontrolled, group via same `name`):\n * <Radio name=\"time\" value=\"day\" label=\"Day\" />\n * <Radio name=\"time\" value=\"week\" label=\"Week\" defaultChecked />\n * <Radio name=\"time\" value=\"month\" label=\"Month\" />\n *\n * Usage (controlled):\n * <Radio name=\"x\" value=\"a\" checked={val === \"a\"} onChange={() => setVal(\"a\")} label=\"Option A\" />\n */\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: string\n helperText?: string\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ label, helperText, disabled, checked, defaultChecked, className, onChange, ...props }, ref) => {\n const [isChecked, setIsChecked] = React.useState(!!defaultChecked)\n const isControlled = checked !== undefined\n const currentChecked = isControlled ? !!checked : isChecked\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setIsChecked(e.target.checked)\n onChange?.(e)\n }\n\n return (\n <label\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n {/* Hidden native input */}\n <input\n ref={ref}\n type=\"radio\"\n checked={isControlled ? checked : isChecked}\n disabled={disabled}\n onChange={handleChange}\n className=\"sr-only\"\n {...props}\n />\n\n {/* Visual control */}\n <span\n aria-hidden=\"true\"\n className={cn(\n \"flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-full\",\n \"border-[1.5px] transition-colors duration-[120ms]\",\n currentChecked\n ? \"border-transparent bg-[var(--color-primary,#40CCF2)]\"\n : \"border-[var(--color-secondary-border,#339FB8)] bg-transparent\",\n )}\n >\n {currentChecked && (\n <span className=\"h-[6px] w-[6px] rounded-full bg-white\" />\n )}\n </span>\n\n {/* Label + helper */}\n {(label || helperText) && (\n <span className=\"flex flex-col gap-0.5\">\n {label && (\n <span className=\"font-['Red_Hat_Text'] text-[14px] font-normal leading-tight text-[var(--color-text-primary,#000)]\">\n {label}\n </span>\n )}\n {helperText && (\n <span className=\"font-['Inter'] text-[12px] text-[var(--color-text-tertiary,#6B7280)]\">\n {helperText}\n </span>\n )}\n </span>\n )}\n </label>\n )\n },\n)\nRadio.displayName = \"Radio\"\n\n/**\n * RadioGroup — convenience wrapper for a labelled set of Radio options.\n *\n * Usage:\n * <RadioGroup label=\"Time period\" name=\"period\" value={val} onChange={setVal}>\n * <Radio value=\"day\" label=\"Day\" />\n * <Radio value=\"week\" label=\"Week\" />\n * <Radio value=\"month\" label=\"Month\" />\n * </RadioGroup>\n */\nexport interface RadioGroupProps {\n label?: string\n name: string\n value?: string\n onChange?: (value: string) => void\n children: React.ReactNode\n className?: string\n orientation?: \"horizontal\" | \"vertical\"\n}\n\nexport function RadioGroup({\n label,\n name,\n value,\n onChange,\n children,\n className,\n orientation = \"vertical\",\n}: RadioGroupProps) {\n const cloned = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n const el = child as React.ReactElement<RadioProps>\n return React.cloneElement(el, {\n name,\n checked: value !== undefined ? el.props.value === value : undefined,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) onChange?.(e.target.value as string)\n el.props.onChange?.(e)\n },\n })\n })\n\n return (\n <fieldset className={cn(\"border-none p-0 m-0\", className)}>\n {label && (\n <legend className=\"mb-2 font-['Red_Hat_Text'] text-[18px] font-medium text-[var(--color-text-primary,#000)]\">\n {label}\n </legend>\n )}\n <div className={cn(\"flex gap-3\", orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\")}>\n {cloned}\n </div>\n </fieldset>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * Toggle — iOS-style switch. Qu Notify form control.\n *\n * States: off | on | disabled-off | disabled-on\n * - Off: gray-100 (#DEDEDE) track, white knob positioned left\n * - On: cyan (#40CCF2) track, white knob positioned right\n * - Disabled: opacity 0.5 on full component\n *\n * Track: 44×24px, full-radius pill\n * Knob: 20×20px white circle, 2px from edge, animates on toggle\n *\n * Usage:\n * <Toggle label=\"Enable notifications\" />\n * <Toggle checked label=\"Push alerts\" />\n * <Toggle disabled label=\"Feature unavailable\" />\n *\n * Controlled:\n * <Toggle checked={enabled} onChange={(v) => setEnabled(v)} label=\"Face ID\" />\n */\n\nexport interface ToggleProps {\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n label?: string\n /** Label position relative to the toggle */\n labelPosition?: \"right\" | \"left\"\n helperText?: string\n onChange?: (checked: boolean) => void\n className?: string\n id?: string\n}\n\nexport const Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n checked,\n defaultChecked = false,\n disabled = false,\n label,\n labelPosition = \"right\",\n helperText,\n onChange,\n className,\n id: idProp,\n },\n ref,\n ) => {\n const generatedId = React.useId()\n const id = idProp ?? generatedId\n\n const [isOn, setIsOn] = React.useState(defaultChecked)\n const isControlled = checked !== undefined\n const currentOn = isControlled ? !!checked : isOn\n\n const handleClick = () => {\n if (disabled) return\n const next = !currentOn\n if (!isControlled) setIsOn(next)\n onChange?.(next)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault()\n handleClick()\n }\n }\n\n const track = (\n <button\n ref={ref}\n id={id}\n role=\"switch\"\n type=\"button\"\n aria-checked={currentOn}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n // track\n \"relative inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer rounded-full\",\n \"border-0 outline-none transition-colors duration-[180ms] ease-[cubic-bezier(0.2,0,0,1)]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed\",\n currentOn\n ? \"bg-[var(--color-primary,#40CCF2)]\"\n : \"bg-[var(--color-inactive,#DEDEDE)]\",\n )}\n >\n {/* Knob */}\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute top-[2px] h-[20px] w-[20px] rounded-full bg-white shadow-sm\",\n \"transition-transform duration-[180ms] ease-[cubic-bezier(0.2,0,0,1)]\",\n currentOn ? \"translate-x-[22px]\" : \"translate-x-[2px]\",\n )}\n />\n </button>\n )\n\n if (!label && !helperText) {\n return <span className={cn(disabled && \"opacity-50\", className)}>{track}</span>\n }\n\n const labelContent = (\n <label\n htmlFor={id}\n className={cn(\n \"flex flex-col gap-0.5 cursor-pointer\",\n disabled && \"cursor-not-allowed\",\n )}\n >\n <span className=\"font-['Red_Hat_Text'] text-[14px] font-normal leading-tight text-[var(--color-text-primary,#000)]\">\n {label}\n </span>\n {helperText && (\n <span className=\"font-['Inter'] text-[12px] text-[var(--color-text-tertiary,#6B7280)]\">\n {helperText}\n </span>\n )}\n </label>\n )\n\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2.5\",\n disabled && \"opacity-50\",\n className,\n )}\n >\n {labelPosition === \"left\" && labelContent}\n {track}\n {labelPosition === \"right\" && labelContent}\n </div>\n )\n },\n)\nToggle.displayName = \"Toggle\"\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"./utils\"\n\n/**\n * Selector — pill-shaped dropdown trigger. Qu Notify filter/store-picker control.\n *\n * Variants:\n * variant: primary | secondary\n * state: active | inactive | disabled\n *\n * Primary Active: cyan (#40CCF2) fill, black text\n * Primary Inactive: gray-100 fill, primary text\n * Secondary Active: teal outline, teal text\n * Secondary Inactive: gray-200 outline, secondary text\n *\n * The component is a styled button — wire up a Popover/DropdownMenu to it externally.\n * The `open` prop controls the chevron rotation only.\n *\n * Usage:\n * <Selector label=\"All Stores\" />\n * <Selector label=\"This Week\" variant=\"secondary\" state=\"active\" />\n * <Selector label=\"Location\" open />\n * <Selector label=\"Date Range\" state=\"disabled\" />\n */\n\nconst selectorVariants = cva(\n [\n \"inline-flex items-center gap-1.5 rounded-full select-none cursor-pointer\",\n \"py-2 pl-3.5 pr-2.5\",\n \"font-['Red_Hat_Text'] text-[14px] font-medium leading-tight\",\n \"border-[1.5px] transition-colors duration-[120ms]\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n ],\n {\n variants: {\n variant: {\n primary: \"\",\n secondary: \"\",\n },\n state: {\n active: \"\",\n inactive: \"\",\n disabled: \"\",\n },\n },\n compoundVariants: [\n // Primary\n {\n variant: \"primary\",\n state: \"active\",\n class: \"bg-[var(--color-primary,#40CCF2)] border-transparent text-[var(--color-text-primary,#000)]\",\n },\n {\n variant: \"primary\",\n state: [\"inactive\", \"disabled\"],\n class: \"bg-[var(--color-inactive,#DEDEDE)] border-transparent text-[var(--color-text-primary,#000)]\",\n },\n // Secondary\n {\n variant: \"secondary\",\n state: \"active\",\n class: \"bg-transparent border-[var(--color-secondary-border,#339FB8)] text-[var(--color-secondary-foreground,#339FB8)]\",\n },\n {\n variant: \"secondary\",\n state: [\"inactive\", \"disabled\"],\n class: \"bg-transparent border-[var(--color-border,#C9C9C9)] text-[var(--color-text-secondary,#6B7280)]\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n state: \"active\",\n },\n },\n)\n\nexport interface SelectorProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof selectorVariants> {\n label: string\n /** Controlled open state — rotates chevron 180° */\n open?: boolean\n /** Icon to show before the label (optional) */\n icon?: React.ReactNode\n}\n\nexport const Selector = React.forwardRef<HTMLButtonElement, SelectorProps>(\n ({ label, variant = \"primary\", state = \"active\", open = false, icon, className, disabled, ...props }, ref) => {\n const isDisabled = disabled || state === \"disabled\"\n\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={isDisabled}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n className={cn(selectorVariants({ variant, state: isDisabled ? \"disabled\" : state }), className)}\n {...props}\n >\n {icon && <span className=\"shrink-0 [&_svg]:size-4\">{icon}</span>}\n <span>{label}</span>\n <ChevronDownIcon\n className={cn(\n \"shrink-0 transition-transform duration-[120ms]\",\n open && \"rotate-180\",\n )}\n />\n </button>\n )\n },\n)\nSelector.displayName = \"Selector\"\n\n// ── Selector Group — renders a horizontal row of Selectors ───────────────────\nexport interface SelectorGroupProps {\n children: React.ReactNode\n className?: string\n}\nexport function SelectorGroup({ children, className }: SelectorGroupProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children}\n </div>\n )\n}\n\n// ── icon ─────────────────────────────────────────────────────────────────────\nfunction ChevronDownIcon({ className }: { className?: string }) {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polyline points=\"2,4 6,8 10,4\" />\n </svg>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * TabBar — Qu Notify segmented tab selector.\n *\n * Visual spec:\n * Container: gray-100 (#DEDEDE) pill, 4px padding all sides, full-radius\n * Selected tab: black fill, white text, full-radius pill\n * Unselected tab: transparent, primary text\n * Font: Inter Medium 14px\n *\n * Usage (uncontrolled):\n * <TabBar tabs={[\"Sales\", \"Labor\", \"Store\"]} defaultValue=\"Sales\" />\n *\n * Usage (controlled):\n * <TabBar\n * tabs={[\"Sales\", \"Labor\", \"Store\", \"Product\"]}\n * value={activeTab}\n * onValueChange={setActiveTab}\n * />\n *\n * Usage with content panels:\n * <TabBar tabs={tabs} value={active} onValueChange={setActive} />\n * {active === \"Sales\" && <SalesPanel />}\n */\n\nexport interface TabBarProps {\n tabs: string[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n className?: string\n /** Make all tabs equal width (fills container) */\n stretch?: boolean\n}\n\nexport function TabBar({\n tabs,\n value,\n defaultValue,\n onValueChange,\n className,\n stretch = false,\n}: TabBarProps) {\n const [selected, setSelected] = React.useState(defaultValue ?? tabs[0])\n const isControlled = value !== undefined\n const current = isControlled ? value : selected\n\n const handleSelect = (tab: string) => {\n if (!isControlled) setSelected(tab)\n onValueChange?.(tab)\n }\n\n return (\n <div\n role=\"tablist\"\n aria-label=\"Tabs\"\n className={cn(\n \"inline-flex items-center gap-1 rounded-full p-1\",\n \"bg-[var(--color-inactive,#DEDEDE)]\",\n stretch && \"w-full\",\n className,\n )}\n >\n {tabs.map((tab) => {\n const isSelected = tab === current\n return (\n <button\n key={tab}\n role=\"tab\"\n type=\"button\"\n aria-selected={isSelected}\n onClick={() => handleSelect(tab)}\n className={cn(\n \"rounded-full px-4 py-[7px] cursor-pointer select-none\",\n \"font-['Inter'] text-[14px] font-medium leading-tight\",\n \"outline-none transition-colors duration-[120ms]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1\",\n stretch && \"flex-1 text-center\",\n isSelected\n ? \"bg-[var(--color-foreground,#000)] text-white\"\n : \"bg-transparent text-[var(--color-text-primary,#000)] hover:bg-black/5\",\n )}\n >\n {tab}\n </button>\n )\n })}\n </div>\n )\n}\n\n/**\n * TabPanels — optional declarative panel companion for TabBar.\n *\n * Usage:\n * <TabBar tabs={[\"Sales\",\"Labor\"]} value={tab} onValueChange={setTab} />\n * <TabPanels value={tab}>\n * <TabPanel value=\"Sales\"><SalesContent /></TabPanel>\n * <TabPanel value=\"Labor\"><LaborContent /></TabPanel>\n * </TabPanels>\n */\nexport interface TabPanelsProps {\n value: string\n children: React.ReactNode\n className?: string\n}\nexport function TabPanels({ value, children, className }: TabPanelsProps) {\n return (\n <div className={className}>\n {React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return null\n const el = child as React.ReactElement<TabPanelProps>\n return el.props.value === value ? el : null\n })}\n </div>\n )\n}\n\nexport interface TabPanelProps {\n value: string\n children: React.ReactNode\n className?: string\n}\nexport function TabPanel({ children, className }: TabPanelProps) {\n return <div role=\"tabpanel\" className={className}>{children}</div>\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * Switcher — Qu Notify segmented control (iOS-style).\n *\n * Visual spec:\n * Container: gray-100 (#DEDEDE) bg, 8px corner radius, 3px padding\n * Selected segment: black fill, white text, 6px corner radius\n * Unselected segment: transparent, secondary text (gray)\n * Font: Inter Medium 14px\n *\n * Differs from TabBar:\n * - TabBar: full-radius pill, used for primary page-level navigation\n * - Switcher: square-ish corners (8px), used for inline data filters\n * (e.g. Day / Week / Month, Net / Gross, All / Open / Closed)\n *\n * Usage (uncontrolled):\n * <Switcher segments={[\"Day\", \"Week\", \"Month\"]} defaultValue=\"Week\" />\n *\n * Usage (controlled):\n * <Switcher\n * segments={[\"Net\", \"Gross\"]}\n * value={metric}\n * onValueChange={setMetric}\n * />\n *\n * Usage with icon segments:\n * <Switcher\n * segments={[\n * { value: \"list\", label: \"List\", icon: <ListIcon /> },\n * { value: \"grid\", label: \"Grid\", icon: <GridIcon /> },\n * ]}\n * value={view}\n * onValueChange={setView}\n * />\n */\n\ntype Segment = string | { value: string; label: string; icon?: React.ReactNode }\n\nfunction segmentValue(s: Segment): string {\n return typeof s === \"string\" ? s : s.value\n}\nfunction segmentLabel(s: Segment): string {\n return typeof s === \"string\" ? s : s.label\n}\nfunction segmentIcon(s: Segment): React.ReactNode | undefined {\n return typeof s === \"string\" ? undefined : s.icon\n}\n\nexport interface SwitcherProps {\n segments: Segment[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n className?: string\n /** Stretch to fill container width */\n stretch?: boolean\n}\n\nexport function Switcher({\n segments,\n value,\n defaultValue,\n onValueChange,\n className,\n stretch = false,\n}: SwitcherProps) {\n const [selected, setSelected] = React.useState(\n defaultValue ?? segmentValue(segments[0]),\n )\n const isControlled = value !== undefined\n const current = isControlled ? value : selected\n\n const handleSelect = (val: string) => {\n if (!isControlled) setSelected(val)\n onValueChange?.(val)\n }\n\n return (\n <div\n role=\"group\"\n className={cn(\n \"inline-flex items-center gap-0.5 rounded-[8px] p-[3px]\",\n \"bg-[var(--color-inactive,#DEDEDE)]\",\n stretch && \"w-full\",\n className,\n )}\n >\n {segments.map((seg) => {\n const val = segmentValue(seg)\n const label = segmentLabel(seg)\n const icon = segmentIcon(seg)\n const isSelected = val === current\n\n return (\n <button\n key={val}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n onClick={() => handleSelect(val)}\n className={cn(\n \"inline-flex items-center justify-center gap-1.5 rounded-[6px]\",\n \"px-4 py-[7px] cursor-pointer select-none\",\n \"font-['Inter'] text-[14px] font-medium leading-tight\",\n \"outline-none transition-colors duration-[120ms]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1\",\n stretch && \"flex-1\",\n isSelected\n ? \"bg-[var(--color-foreground,#000)] text-white\"\n : \"bg-transparent text-[var(--color-text-secondary,#6B7280)] hover:text-[var(--color-text-primary,#000)]\",\n )}\n >\n {icon && <span className=\"shrink-0 [&_svg]:size-[14px]\">{icon}</span>}\n {label}\n </button>\n )\n })}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * BottomNav — Qu Notify floating bottom navigation bar.\n *\n * Visual spec:\n * Container: glass gradient pill (180deg, rgba(220,220,220,0.2) → rgba(118,118,118,0.2))\n * box-shadow: 0 4px 4px rgba(0,0,0,0.14)\n * border-radius: 60px\n * max-width: 360px, height: 72px\n * Selected item: black fill pill, white icon + label (Semi Bold)\n * Unselected item: transparent, gray icon + label (Regular)\n * Font: Inter — label 10px\n * Icon: 20×20px\n *\n * Usage (controlled — you manage routing):\n * const [active, setActive] = useState(\"dashboard\")\n *\n * <BottomNav\n * items={[\n * { value: \"dashboard\", label: \"Dashboard\", icon: <DashboardIcon /> },\n * { value: \"inventory\", label: \"Inventory\", icon: <BoxIcon /> },\n * { value: \"menu\", label: \"Menu\", icon: <MenuIcon /> },\n * ]}\n * value={active}\n * onValueChange={setActive}\n * />\n *\n * Usage with React Router / Next.js:\n * <BottomNav\n * items={navItems}\n * value={pathname}\n * onValueChange={(v) => router.push(v)}\n * />\n *\n * Positioning:\n * Wrap in a <div className=\"fixed bottom-6 left-1/2 -translate-x-1/2 w-full max-w-sm px-4 z-50\">\n * for the standard bottom-floating placement used in the app.\n */\n\nexport interface NavItem {\n value: string\n label: string\n icon: React.ReactNode\n /** Notification indicator */\n badge?: boolean | number\n}\n\nexport interface BottomNavProps {\n items: NavItem[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n className?: string\n}\n\nexport function BottomNav({\n items,\n value,\n defaultValue,\n onValueChange,\n className,\n}: BottomNavProps) {\n const [selected, setSelected] = React.useState(\n defaultValue ?? items[0]?.value,\n )\n const isControlled = value !== undefined\n const current = isControlled ? value : selected\n\n const handleSelect = (val: string) => {\n if (!isControlled) setSelected(val)\n onValueChange?.(val)\n }\n\n return (\n <nav\n aria-label=\"Main navigation\"\n className={cn(\n // Glass pill container\n \"flex items-center justify-between\",\n \"w-full max-w-[360px] h-[72px] rounded-[60px]\",\n \"px-3 py-2\",\n // Glass gradient\n \"bg-gradient-to-b from-[rgba(220,220,220,0.20)] to-[rgba(118,118,118,0.20)]\",\n \"backdrop-blur-md\",\n // Shadow\n \"shadow-[0_4px_4px_rgba(0,0,0,0.14)]\",\n className,\n )}\n >\n {items.map((item) => {\n const isSelected = item.value === current\n return (\n <NavItemButton\n key={item.value}\n item={item}\n isSelected={isSelected}\n onClick={() => handleSelect(item.value)}\n />\n )\n })}\n </nav>\n )\n}\n\n// ── Internal nav item ─────────────────────────────────────────────────────────\ninterface NavItemButtonProps {\n item: NavItem\n isSelected: boolean\n onClick: () => void\n}\n\nfunction NavItemButton({ item, isSelected, onClick }: NavItemButtonProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-current={isSelected ? \"page\" : undefined}\n className={cn(\n \"relative inline-flex flex-col items-center justify-center gap-[3px]\",\n \"rounded-full py-2 px-4 cursor-pointer select-none\",\n \"outline-none transition-colors duration-[120ms]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1\",\n isSelected\n ? \"bg-[var(--color-foreground,#000)] text-white\"\n : \"bg-transparent text-[var(--color-muted-foreground,#6B7280)]\",\n )}\n >\n {/* Badge dot */}\n {item.badge && (\n <span\n aria-label={typeof item.badge === \"number\" ? `${item.badge} notifications` : \"New notification\"}\n className={cn(\n \"absolute right-2 top-2 flex items-center justify-center\",\n \"rounded-full bg-[var(--color-destructive,#EF2149)] text-white\",\n typeof item.badge === \"number\"\n ? \"h-4 min-w-4 px-1 font-['Inter'] text-[10px] font-semibold\"\n : \"h-2 w-2\",\n )}\n >\n {typeof item.badge === \"number\" ? item.badge : null}\n </span>\n )}\n\n {/* Icon */}\n <span className=\"[&_svg]:size-5\" aria-hidden=\"true\">\n {item.icon}\n </span>\n\n {/* Label */}\n <span\n className={cn(\n \"font-['Inter'] text-[10px] leading-tight\",\n isSelected ? \"font-semibold\" : \"font-normal\",\n )}\n >\n {item.label}\n </span>\n </button>\n )\n}\n\n// ── Positioning wrapper — use as-is for the standard app layout ───────────────\nexport function BottomNavContainer({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"fixed bottom-6 left-1/2 z-50 flex w-full max-w-[402px] -translate-x-1/2 items-center justify-center px-4\">\n {children}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"./utils\"\n\n/**\n * Badge — Qu Notify status/trend pill label.\n *\n * Variants:\n * variant: default | success | error | warning | alert | info | neutral\n * size: sm | md\n *\n * Usage:\n * <Badge>Open</Badge>\n * <Badge variant=\"success\">+11.8%</Badge>\n * <Badge variant=\"error\">-5.6%</Badge>\n * <Badge variant=\"warning\">Delayed</Badge>\n * <Badge icon={<TrendUpIcon />} variant=\"success\">Net Sales</Badge>\n */\n\nconst badgeVariants = cva(\n [\n \"inline-flex items-center gap-1 rounded-full font-['Inter'] font-medium whitespace-nowrap\",\n \"select-none leading-tight\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-[var(--color-inactive,#DEDEDE)] text-[var(--color-text-primary,#000)]\",\n success: \"bg-[var(--color-success-soft,#B3F5D1)] text-[var(--color-success,#16A34A)]\",\n error: \"bg-[var(--color-error-soft,#FFC9C9)] text-[var(--color-destructive,#EF2149)]\",\n warning: \"bg-[var(--color-warning-soft,#FFF085)] text-[#92680E]\",\n alert: \"bg-[var(--color-alert-soft,#EAC1C3)] text-[var(--color-alert,#FA6A0A)]\",\n info: \"bg-[var(--color-info-soft,#BEDBFF)] text-[var(--color-info,#2F80ED)]\",\n neutral: \"bg-transparent text-[var(--color-text-secondary,#6B7280)] border border-[var(--color-border,#C9C9C9)]\",\n // Brand accent fills — used for status tags in Kitchen Intelligence\n brand: \"bg-[var(--color-primary,#40CCF2)] text-[var(--color-text-primary,#000)]\",\n },\n size: {\n sm: \"h-5 px-2 text-[11px]\",\n md: \"h-6 px-2.5 text-[12px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n icon?: React.ReactNode\n}\n\nexport function Badge({ variant, size, icon, children, className, ...props }: BadgeProps) {\n return (\n <span className={cn(badgeVariants({ variant, size }), className)} {...props}>\n {icon && <span className=\"shrink-0 [&_svg]:size-3\" aria-hidden=\"true\">{icon}</span>}\n {children}\n </span>\n )\n}\n\n/**\n * TrendBadge — convenience wrapper that picks variant from sign of the value.\n *\n * Usage:\n * <TrendBadge value={11.8} /> → green \"+11.8%\"\n * <TrendBadge value={-5.6} /> → red \"−5.6%\"\n * <TrendBadge value={0} /> → neutral \"0.0%\"\n */\nexport interface TrendBadgeProps extends Omit<BadgeProps, \"variant\" | \"children\"> {\n value: number\n /** Number of decimal places (default: 1) */\n decimals?: number\n /** Show arrow icon (default: true) */\n showArrow?: boolean\n}\n\nexport function TrendBadge({ value, decimals = 1, showArrow = true, ...props }: TrendBadgeProps) {\n const variant: BadgeProps[\"variant\"] =\n value > 0 ? \"success\" : value < 0 ? \"error\" : \"neutral\"\n\n const formatted = `${value > 0 ? \"+\" : \"\"}${value.toFixed(decimals)}%`\n\n const arrow = showArrow ? (\n value > 0 ? <ArrowUpIcon /> :\n value < 0 ? <ArrowDownIcon /> :\n null\n ) : null\n\n return (\n <Badge variant={variant} icon={arrow} {...props}>\n {formatted}\n </Badge>\n )\n}\n\n// ── icons ─────────────────────────────────────────────────────────────────────\nfunction ArrowUpIcon() {\n return (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"2,7 5,3 8,7\" />\n </svg>\n )\n}\nfunction ArrowDownIcon() {\n return (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"2,3 5,7 8,3\" />\n </svg>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\nimport { TrendBadge } from \"./badge\"\n\n/**\n * MetricTile — the core data display unit of the Qu Notify dashboard.\n *\n * Visual spec:\n * Container: white card, 16px border-radius, shadow: 0 4px 4px rgba(0,0,0,0.06)\n * Label: Inter Regular 12px, gray (#6B7280)\n * Value: Inter SemiBold 24px, black (#000)\n * Trend: TrendBadge (green/red/neutral)\n * Sub-label: Inter Regular 12px, gray — secondary context (e.g. \"vs last week\")\n *\n * Variants:\n * size: sm | md | lg\n * loading: skeleton state\n *\n * Usage (minimal):\n * <MetricTile label=\"Net Sales\" value=\"$42,810\" />\n *\n * Usage (with trend):\n * <MetricTile label=\"Average Check\" value=\"$18.42\" trend={11.8} trendLabel=\"vs last week\" />\n *\n * Usage (with icon and custom value color):\n * <MetricTile\n * label=\"Labor %\"\n * value=\"24.1%\"\n * trend={-2.3}\n * icon={<UserIcon />}\n * valueColor=\"var(--color-success,#16A34A)\"\n * />\n *\n * Usage (loading):\n * <MetricTile label=\"Net Sales\" value=\"...\" loading />\n *\n * Usage (grid):\n * <MetricTileGrid cols={2}>\n * <MetricTile label=\"Net Sales\" value=\"$42,810\" trend={11.8} />\n * <MetricTile label=\"Avg Check\" value=\"$18.42\" trend={-1.2} />\n * <MetricTile label=\"Checks\" value=\"2,324\" />\n * <MetricTile label=\"Speed of Svc\" value=\"3m 12s\" />\n * </MetricTileGrid>\n */\n\nexport interface MetricTileProps {\n label: string\n value: string | number\n /** Percentage change. Positive = green, negative = red. */\n trend?: number\n trendLabel?: string\n icon?: React.ReactNode\n /** Override the value text color (e.g. for KPI goal states) */\n valueColor?: string\n size?: \"sm\" | \"md\" | \"lg\"\n loading?: boolean\n /** Click handler — makes the tile interactive */\n onClick?: () => void\n className?: string\n /** Render as a specific element */\n as?: \"div\" | \"article\"\n}\n\nexport function MetricTile({\n label,\n value,\n trend,\n trendLabel,\n icon,\n valueColor,\n size = \"md\",\n loading = false,\n onClick,\n className,\n as: Tag = \"div\",\n}: MetricTileProps) {\n const valueSize = {\n sm: \"text-[18px]\",\n md: \"text-[24px]\",\n lg: \"text-[30px]\",\n }[size]\n\n const padding = {\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-5\",\n }[size]\n\n return (\n <Tag\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick() } : undefined}\n className={cn(\n // Card shell\n \"flex flex-col gap-1 rounded-[16px] bg-white\",\n \"shadow-[0_4px_4px_rgba(0,0,0,0.06)]\",\n padding,\n // Interactive\n onClick && \"cursor-pointer outline-none hover:shadow-[0_4px_12px_rgba(0,0,0,0.10)] transition-shadow duration-[120ms]\",\n onClick && \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-2\",\n // Loading\n loading && \"animate-pulse\",\n className,\n )}\n >\n {/* Label row */}\n <div className=\"flex items-center justify-between gap-2\">\n <span\n className={cn(\n \"font-['Inter'] text-[12px] font-normal leading-tight\",\n \"text-[var(--color-text-tertiary,#6B7280)]\",\n loading && \"h-3 w-24 rounded bg-gray-200\",\n )}\n >\n {!loading && label}\n </span>\n {icon && !loading && (\n <span className=\"shrink-0 text-[var(--color-text-tertiary,#6B7280)] [&_svg]:size-4\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n </div>\n\n {/* Value */}\n <span\n className={cn(\n \"font-['Inter'] font-semibold leading-tight tracking-tight\",\n valueSize,\n loading && \"mt-1 h-7 w-28 rounded bg-gray-200\",\n )}\n style={valueColor && !loading ? { color: valueColor } : undefined}\n >\n {!loading && value}\n </span>\n\n {/* Trend + sub-label row */}\n {(trend !== undefined || trendLabel) && !loading && (\n <div className=\"flex items-center gap-1.5\">\n {trend !== undefined && <TrendBadge value={trend} size=\"sm\" />}\n {trendLabel && (\n <span className=\"font-['Inter'] text-[11px] text-[var(--color-text-tertiary,#6B7280)]\">\n {trendLabel}\n </span>\n )}\n </div>\n )}\n {loading && trend !== undefined && (\n <div className=\"mt-1 h-4 w-16 rounded bg-gray-200\" />\n )}\n </Tag>\n )\n}\n\n/**\n * MetricTileGrid — responsive grid wrapper.\n *\n * Usage:\n * <MetricTileGrid cols={2}> ... </MetricTileGrid>\n */\nexport interface MetricTileGridProps {\n cols?: 1 | 2 | 3 | 4\n children: React.ReactNode\n className?: string\n}\n\nexport function MetricTileGrid({ cols = 2, children, className }: MetricTileGridProps) {\n const colClass = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n }[cols]\n\n return (\n <div className={cn(\"grid gap-3\", colClass, className)}>\n {children}\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../components/utils.ts","../components/button.tsx","../components/input.tsx","../components/checkbox.tsx","../components/radio.tsx","../components/toggle.tsx","../components/selector.tsx","../components/tabs.tsx","../components/switcher.tsx","../components/bottom-nav.tsx","../components/badge.tsx","../components/metric-tile.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","jsxs","React3","React4","React5","React6","React7","React8","React9"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"./utils\"\n\n/**\n * Button — shadcn-style primitive backed by the semantic tokens in tokens.css.\n *\n * Matrix:\n * variant: primary | secondary | tertiary | link\n * size: xsm | sm | md | lg\n * state: active (default) | inactive | disabled — driven by `data-state` + `disabled`\n *\n * Use `<Button iconOnly />` (or `<IconButton />` below) to render the icon-only square form.\n */\nconst buttonVariants = cva(\n [\n // base\n \"inline-flex items-center justify-center whitespace-nowrap select-none\",\n \"rounded-[var(--button-radius)] font-medium font-[var(--font-family-secondary)]\", // Red Hat Text Medium per spec\n \"transition-colors duration-[var(--p-duration-fast)] ease-[var(--p-easing-standard)]\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-[var(--p-opacity-disabled)]\",\n // icon child sizing\n \"[&_svg]:shrink-0\",\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\n \"hover:bg-[var(--color-primary-hover)] active:bg-[var(--color-primary-pressed)]\",\n \"data-[state=inactive]:bg-[var(--color-inactive)] data-[state=inactive]:text-[var(--color-inactive-foreground)]\",\n ],\n secondary: [\n \"bg-transparent text-[var(--color-secondary-foreground)]\",\n \"border border-[var(--color-secondary-border)]\",\n \"hover:bg-[var(--color-secondary-hover)] active:bg-[var(--color-secondary-pressed)]\",\n \"data-[state=inactive]:text-[var(--color-inactive-foreground)] data-[state=inactive]:border-[var(--color-inactive-border)]\",\n ],\n tertiary: [\n \"bg-transparent text-[var(--color-tertiary-foreground)]\",\n \"hover:bg-[var(--color-tertiary-hover)]\",\n \"data-[state=inactive]:text-[var(--color-inactive-foreground)]\",\n ],\n link: [\n \"bg-transparent text-[var(--color-link-foreground)] underline underline-offset-4\",\n \"hover:decoration-2\",\n \"data-[state=inactive]:text-[var(--color-inactive-foreground)]\",\n ],\n },\n size: {\n xsm: \"h-[var(--button-xsm-h)] px-[var(--button-xsm-px)] gap-[var(--button-xsm-gap)] text-[length:var(--button-xsm-fs)] leading-[var(--button-xsm-lh)] [&_svg]:size-3\",\n sm: \"h-[var(--button-sm-h)] px-[var(--button-sm-px)] gap-[var(--button-sm-gap)] text-[length:var(--button-sm-fs)] leading-[var(--button-sm-lh)] [&_svg]:size-[14px]\",\n md: \"h-[var(--button-md-h)] px-[var(--button-md-px)] gap-[var(--button-md-gap)] text-[length:var(--button-md-fs)] leading-[var(--button-md-lh)] [&_svg]:size-4\",\n lg: \"h-[var(--button-lg-h)] px-[var(--button-lg-px)] gap-[var(--button-lg-gap)] text-[length:var(--button-lg-fs)] leading-[var(--button-lg-lh)] [&_svg]:size-5\",\n },\n iconOnly: {\n true: \"px-0 aspect-square rounded-[var(--button-icon-radius)]\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Link variant has no horizontal padding — it's text-like.\n { variant: \"link\", iconOnly: false, class: \"px-0 h-auto\" },\n // Tertiary should hug its text vertically.\n { variant: \"tertiary\", iconOnly: false, class: \"\" },\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n iconOnly: false,\n },\n },\n)\n\ntype ButtonState = \"active\" | \"inactive\"\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n state?: ButtonState\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, iconOnly, state = \"active\", asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n ref={ref}\n data-state={state}\n className={cn(buttonVariants({ variant, size, iconOnly }), className)}\n {...props}\n />\n )\n },\n)\nButton.displayName = \"Button\"\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, Omit<ButtonProps, \"iconOnly\">>(\n (props, ref) => <Button ref={ref} iconOnly {...props} />,\n)\nIconButton.displayName = \"IconButton\"\n\nexport { buttonVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"./utils\"\n\n/**\n * Input — pill-shaped form field matching the Qu Notify Input component set.\n *\n * Matrix:\n * type: default | password | search\n * state: normal | active | filled | error | disabled | readonly\n *\n * Anatomy (top → bottom):\n * <label> — Red Hat Text Medium 18px, required asterisk in brand-red\n * <pill> — full-radius container, white bg, 1.5px stroke\n * [left-icon] — search icon (search type only)\n * <input> — Inter Regular 16px placeholder / filled text\n * [right-icon] — eye/eye-off toggle (password), x-circle clear (search filled), info (error)\n * <helper> — Inter Regular 12px, gray or red\n *\n * Usage:\n * <InputField label=\"Email\" placeholder=\"you@example.com\" />\n * <InputField type=\"password\" label=\"Password\" required />\n * <InputField type=\"search\" placeholder=\"Search checks...\" />\n * <InputField state=\"error\" errorMessage=\"Invalid email address\" />\n */\n\n// ── pill shell ──────────────────────────────────────────────────────────────\nconst pillVariants = cva(\n [\n \"flex items-center gap-2\",\n \"h-12 w-full rounded-full px-4\",\n \"border-[1.5px] bg-[var(--color-input-bg,#fff)]\",\n \"transition-colors duration-[120ms]\",\n ],\n {\n variants: {\n state: {\n normal: \"border-[var(--color-input-border-default,#C9C9C9)]\",\n active: \"border-[var(--color-input-border-active,#40CCF2)] ring-0\",\n filled: \"border-[var(--color-input-border-default,#C9C9C9)]\",\n error: \"border-[var(--color-input-border-error,#EF2149)]\",\n disabled: \"border-[var(--color-input-border-default,#C9C9C9)] bg-[var(--color-input-bg-disabled,#F4F4F4)] cursor-not-allowed opacity-50\",\n readonly: \"border-[var(--color-input-border-default,#C9C9C9)] bg-[var(--color-input-bg-disabled,#F4F4F4)]\",\n },\n },\n defaultVariants: { state: \"normal\" },\n },\n)\n\ntype InputState = \"normal\" | \"active\" | \"filled\" | \"error\" | \"disabled\" | \"readonly\"\ntype InputType = \"default\" | \"password\" | \"search\"\n\nexport interface InputFieldProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /** Visual input type — controls icons and keyboard on mobile */\n type?: InputType\n /** Controlled state override — set automatically on focus/blur if uncontrolled */\n state?: InputState\n label?: string\n /** Whether to show the red required asterisk */\n required?: boolean\n helperText?: string\n errorMessage?: string\n /** Slot for a custom right-side icon/action */\n rightSlot?: React.ReactNode\n}\n\nexport const InputField = React.forwardRef<HTMLInputElement, InputFieldProps>(\n (\n {\n type = \"default\",\n state: stateProp,\n label,\n required,\n helperText,\n errorMessage,\n rightSlot,\n className,\n onFocus,\n onBlur,\n onChange,\n value,\n defaultValue,\n disabled,\n readOnly,\n placeholder,\n ...props\n },\n ref,\n ) => {\n // ── internal state for uncontrolled focus/fill tracking ──\n const [focused, setFocused] = React.useState(false)\n const [hasValue, setHasValue] = React.useState(!!defaultValue || !!value)\n const [showPassword, setShowPassword] = React.useState(false)\n\n // Derive visual state\n const state: InputState =\n stateProp ??\n (disabled ? \"disabled\"\n : readOnly ? \"readonly\"\n : errorMessage ? \"error\"\n : focused ? \"active\"\n : hasValue ? \"filled\"\n : \"normal\")\n\n const nativeType =\n type === \"password\" ? (showPassword ? \"text\" : \"password\") :\n type === \"search\" ? \"search\" :\n \"text\"\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true)\n onFocus?.(e)\n }\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n onBlur?.(e)\n }\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setHasValue(e.target.value.length > 0)\n onChange?.(e)\n }\n\n // ── icon colors ──────────────────────────────────────────────────────────\n const iconColor =\n state === \"active\" ? \"text-[var(--color-input-icon-active,#40CCF2)]\" :\n state === \"error\" ? \"text-[var(--color-input-icon-error,#EF2149)]\" :\n \"text-[var(--color-input-icon-default,#B1B1B1)]\"\n\n return (\n <div className={cn(\"flex w-full flex-col gap-1.5\", className)}>\n\n {/* Label row */}\n {label && (\n <label className=\"flex items-center gap-0.5 font-['Red_Hat_Text'] text-[18px] font-medium leading-tight text-[var(--color-text-primary,#000)]\">\n {label}\n {required && (\n <span className=\"text-[var(--color-brand-red,#EF2149)]\" aria-hidden=\"true\"> *</span>\n )}\n </label>\n )}\n\n {/* Pill */}\n <div className={pillVariants({ state })}>\n\n {/* Left icon — search only */}\n {type === \"search\" && (\n <span className={cn(\"shrink-0\", iconColor)} aria-hidden=\"true\">\n <SearchIcon />\n </span>\n )}\n\n {/* Native input */}\n <input\n ref={ref}\n type={nativeType}\n disabled={disabled || state === \"disabled\"}\n readOnly={readOnly || state === \"readonly\"}\n placeholder={placeholder}\n value={value}\n defaultValue={defaultValue}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n className={cn(\n \"min-w-0 flex-1 bg-transparent outline-none\",\n \"font-['Inter'] text-[16px] font-normal\",\n \"text-[var(--color-input-text,#000)] placeholder:text-[var(--color-input-placeholder,#B1B1B1)]\",\n \"disabled:cursor-not-allowed\",\n )}\n aria-invalid={state === \"error\" || undefined}\n {...props}\n />\n\n {/* Right slot — custom override */}\n {rightSlot}\n\n {/* Right icon — contextual */}\n {!rightSlot && type === \"password\" && (\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => setShowPassword(v => !v)}\n className={cn(\"shrink-0 cursor-pointer\", iconColor)}\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\n >\n {showPassword ? <EyeOffIcon /> : <EyeIcon />}\n </button>\n )}\n {!rightSlot && type === \"search\" && hasValue && !disabled && (\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => setHasValue(false)}\n className={cn(\"shrink-0 cursor-pointer\", iconColor)}\n aria-label=\"Clear search\"\n >\n <XCircleIcon />\n </button>\n )}\n {!rightSlot && state === \"error\" && type !== \"password\" && (\n <span className={cn(\"shrink-0\", iconColor)} aria-hidden=\"true\">\n <InfoCircleIcon />\n </span>\n )}\n </div>\n\n {/* Helper / error text */}\n {(errorMessage || helperText) && (\n <p\n className={cn(\n \"font-['Inter'] text-[12px] font-normal leading-tight px-1\",\n errorMessage\n ? \"text-[var(--color-input-text-error,#EF2149)]\"\n : \"text-[var(--color-text-tertiary,#6B7280)]\",\n )}\n >\n {errorMessage ?? helperText}\n </p>\n )}\n </div>\n )\n },\n)\nInputField.displayName = \"InputField\"\n\n// ── inline icon components (16×16 stroke, matches Figma set) ─────────────────\n\nfunction SearchIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"4.5\" />\n <line x1=\"10.5\" y1=\"10.5\" x2=\"14\" y2=\"14\" />\n </svg>\n )\n}\n\nfunction EyeIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M1 8s2.5-5 7-5 7 5 7 5-2.5 5-7 5-7-5-7-5Z\" />\n <circle cx=\"8\" cy=\"8\" r=\"2\" />\n </svg>\n )\n}\n\nfunction EyeOffIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M2 2l12 12M6.5 6.5A2 2 0 0 0 9.5 9.5\" />\n <path d=\"M4.2 4.2C2.6 5.2 1 8 1 8s2.5 5 7 5c1.4 0 2.7-.4 3.8-1\" />\n <path d=\"M9.8 3.2C12.2 4.2 15 8 15 8s-.7 1.4-1.8 2.6\" />\n </svg>\n )\n}\n\nfunction XCircleIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <line x1=\"5.5\" y1=\"5.5\" x2=\"10.5\" y2=\"10.5\" />\n <line x1=\"10.5\" y1=\"5.5\" x2=\"5.5\" y2=\"10.5\" />\n </svg>\n )\n}\n\nfunction InfoCircleIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <line x1=\"8\" y1=\"7\" x2=\"8\" y2=\"11\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.5\" fill=\"currentColor\" stroke=\"none\" />\n </svg>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * Checkbox — Qu Notify form control.\n *\n * States: unchecked | checked | indeterminate | disabled\n * - Unchecked: transparent fill, 1.5px teal (#339FB8) stroke, 4px radius\n * - Checked: cyan (#40CCF2) fill, white checkmark, no stroke\n * - Indeterminate: cyan fill, white dash, no stroke\n * - Disabled: opacity 0.5 on full component\n *\n * Usage:\n * <Checkbox label=\"Remember me\" />\n * <Checkbox checked label=\"Agreed to terms\" />\n * <Checkbox indeterminate label=\"Select all\" />\n * <Checkbox disabled label=\"Unavailable option\" />\n */\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: string\n indeterminate?: boolean\n helperText?: string\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ label, indeterminate, helperText, disabled, checked, defaultChecked, className, onChange, ...props }, ref) => {\n const internalRef = React.useRef<HTMLInputElement>(null)\n const resolvedRef = (ref as React.RefObject<HTMLInputElement>) ?? internalRef\n\n const [isChecked, setIsChecked] = React.useState(!!defaultChecked || !!checked)\n const isControlled = checked !== undefined\n const currentChecked = isControlled ? !!checked : isChecked\n\n React.useEffect(() => {\n if (resolvedRef.current) {\n resolvedRef.current.indeterminate = !!indeterminate\n }\n }, [indeterminate, resolvedRef])\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setIsChecked(e.target.checked)\n onChange?.(e)\n }\n\n const showCheck = !indeterminate && currentChecked\n const showDash = !!indeterminate\n\n return (\n <label\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n {/* Hidden native input for a11y / form submission */}\n <input\n ref={resolvedRef}\n type=\"checkbox\"\n checked={isControlled ? checked : isChecked}\n disabled={disabled}\n onChange={handleChange}\n className=\"sr-only\"\n {...props}\n />\n\n {/* Visual control */}\n <span\n aria-hidden=\"true\"\n className={cn(\n \"flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-[6px]\",\n \"border-[2px] transition-colors duration-[120ms]\",\n (showCheck || showDash)\n ? \"border-transparent bg-[var(--color-secondary,#339FB8)] text-[var(--color-foreground,#000)]\"\n : \"border-[var(--color-secondary,#339FB8)] bg-transparent\",\n )}\n >\n {showCheck && <CheckIcon />}\n {showDash && <DashIcon />}\n </span>\n\n {/* Label + helper */}\n {(label || helperText) && (\n <span className=\"flex flex-col gap-0.5\">\n {label && (\n <span className=\"font-['Red_Hat_Text'] text-[14px] font-normal leading-tight text-[var(--color-text-primary,#000)]\">\n {label}\n </span>\n )}\n {helperText && (\n <span className=\"font-['Inter'] text-[12px] text-[var(--color-text-tertiary,#6B7280)]\">\n {helperText}\n </span>\n )}\n </span>\n )}\n </label>\n )\n },\n)\nCheckbox.displayName = \"Checkbox\"\n\n// ── icons ────────────────────────────────────────────────────────────────────\n\nfunction CheckIcon() {\n return (\n <svg width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"1,4 4,7 10,1\" />\n </svg>\n )\n}\n\nfunction DashIcon() {\n return (\n <svg width=\"10\" height=\"2\" viewBox=\"0 0 10 2\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"1\" y1=\"1\" x2=\"9\" y2=\"1\" />\n </svg>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * Radio — Qu Notify form control.\n *\n * States: unselected | selected | disabled\n * - Unselected: transparent fill, 1.5px teal (#339FB8) stroke, full radius\n * - Selected: cyan (#40CCF2) fill, white center dot, no stroke\n * - Disabled: opacity 0.5 on full component\n *\n * Usage (uncontrolled, group via same `name`):\n * <Radio name=\"time\" value=\"day\" label=\"Day\" />\n * <Radio name=\"time\" value=\"week\" label=\"Week\" defaultChecked />\n * <Radio name=\"time\" value=\"month\" label=\"Month\" />\n *\n * Usage (controlled):\n * <Radio name=\"x\" value=\"a\" checked={val === \"a\"} onChange={() => setVal(\"a\")} label=\"Option A\" />\n */\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: string\n helperText?: string\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ label, helperText, disabled, checked, defaultChecked, className, onChange, ...props }, ref) => {\n const [isChecked, setIsChecked] = React.useState(!!defaultChecked)\n const isControlled = checked !== undefined\n const currentChecked = isControlled ? !!checked : isChecked\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setIsChecked(e.target.checked)\n onChange?.(e)\n }\n\n return (\n <label\n className={cn(\n \"inline-flex items-center gap-2 cursor-pointer select-none\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n {/* Hidden native input */}\n <input\n ref={ref}\n type=\"radio\"\n checked={isControlled ? checked : isChecked}\n disabled={disabled}\n onChange={handleChange}\n className=\"sr-only\"\n {...props}\n />\n\n {/* Visual control */}\n <span\n aria-hidden=\"true\"\n className={cn(\n \"flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-full\",\n \"border-[2px] bg-transparent transition-colors duration-[120ms]\",\n \"border-[var(--color-secondary,#339FB8)]\",\n )}\n >\n {currentChecked && (\n <span className=\"h-[8px] w-[8px] rounded-full bg-[var(--color-foreground,#000)]\" />\n )}\n </span>\n\n {/* Label + helper */}\n {(label || helperText) && (\n <span className=\"flex flex-col gap-0.5\">\n {label && (\n <span className=\"font-['Red_Hat_Text'] text-[14px] font-normal leading-tight text-[var(--color-text-primary,#000)]\">\n {label}\n </span>\n )}\n {helperText && (\n <span className=\"font-['Inter'] text-[12px] text-[var(--color-text-tertiary,#6B7280)]\">\n {helperText}\n </span>\n )}\n </span>\n )}\n </label>\n )\n },\n)\nRadio.displayName = \"Radio\"\n\n/**\n * RadioGroup — convenience wrapper for a labelled set of Radio options.\n *\n * Usage:\n * <RadioGroup label=\"Time period\" name=\"period\" value={val} onChange={setVal}>\n * <Radio value=\"day\" label=\"Day\" />\n * <Radio value=\"week\" label=\"Week\" />\n * <Radio value=\"month\" label=\"Month\" />\n * </RadioGroup>\n */\nexport interface RadioGroupProps {\n label?: string\n name: string\n value?: string\n onChange?: (value: string) => void\n children: React.ReactNode\n className?: string\n orientation?: \"horizontal\" | \"vertical\"\n}\n\nexport function RadioGroup({\n label,\n name,\n value,\n onChange,\n children,\n className,\n orientation = \"vertical\",\n}: RadioGroupProps) {\n const cloned = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n const el = child as React.ReactElement<RadioProps>\n return React.cloneElement(el, {\n name,\n checked: value !== undefined ? el.props.value === value : undefined,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) onChange?.(e.target.value as string)\n el.props.onChange?.(e)\n },\n })\n })\n\n return (\n <fieldset className={cn(\"border-none p-0 m-0\", className)}>\n {label && (\n <legend className=\"mb-2 font-['Red_Hat_Text'] text-[18px] font-medium text-[var(--color-text-primary,#000)]\">\n {label}\n </legend>\n )}\n <div className={cn(\"flex gap-3\", orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\")}>\n {cloned}\n </div>\n </fieldset>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * Toggle — iOS-style switch. Qu Notify form control.\n *\n * States: off | on | disabled-off | disabled-on\n * - Off: gray-100 (#DEDEDE) track, white knob positioned left\n * - On: cyan (#40CCF2) track, white knob positioned right\n * - Disabled: opacity 0.5 on full component\n *\n * Track: 44×24px, full-radius pill\n * Knob: 20×20px white circle, 2px from edge, animates on toggle\n *\n * Usage:\n * <Toggle label=\"Enable notifications\" />\n * <Toggle checked label=\"Push alerts\" />\n * <Toggle disabled label=\"Feature unavailable\" />\n *\n * Controlled:\n * <Toggle checked={enabled} onChange={(v) => setEnabled(v)} label=\"Face ID\" />\n */\n\nexport interface ToggleProps {\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n label?: string\n /** Label position relative to the toggle */\n labelPosition?: \"right\" | \"left\"\n helperText?: string\n onChange?: (checked: boolean) => void\n className?: string\n id?: string\n}\n\nexport const Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n checked,\n defaultChecked = false,\n disabled = false,\n label,\n labelPosition = \"right\",\n helperText,\n onChange,\n className,\n id: idProp,\n },\n ref,\n ) => {\n const generatedId = React.useId()\n const id = idProp ?? generatedId\n\n const [isOn, setIsOn] = React.useState(defaultChecked)\n const isControlled = checked !== undefined\n const currentOn = isControlled ? !!checked : isOn\n\n const handleClick = () => {\n if (disabled) return\n const next = !currentOn\n if (!isControlled) setIsOn(next)\n onChange?.(next)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault()\n handleClick()\n }\n }\n\n const track = (\n <button\n ref={ref}\n id={id}\n role=\"switch\"\n type=\"button\"\n aria-checked={currentOn}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n // track\n \"relative inline-flex h-[19px] w-[45px] shrink-0 cursor-pointer rounded-full\",\n \"border-0 outline-none transition-colors duration-[180ms] ease-[cubic-bezier(0.2,0,0,1)]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-secondary,#339FB8)] focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed\",\n currentOn\n ? \"bg-[var(--color-secondary,#339FB8)]\"\n : \"bg-[var(--color-inactive,#DEDEDE)]\",\n )}\n >\n {/* Knob */}\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute top-[2px] h-[15px] w-[24px] rounded-full bg-white shadow-sm\",\n \"transition-transform duration-[180ms] ease-[cubic-bezier(0.2,0,0,1)]\",\n currentOn ? \"translate-x-[19px]\" : \"translate-x-[2px]\",\n )}\n />\n </button>\n )\n\n if (!label && !helperText) {\n return <span className={cn(disabled && \"opacity-50\", className)}>{track}</span>\n }\n\n const labelContent = (\n <label\n htmlFor={id}\n className={cn(\n \"flex flex-col gap-0.5 cursor-pointer\",\n disabled && \"cursor-not-allowed\",\n )}\n >\n <span className=\"font-['Red_Hat_Text'] text-[14px] font-normal leading-tight text-[var(--color-text-primary,#000)]\">\n {label}\n </span>\n {helperText && (\n <span className=\"font-['Inter'] text-[12px] text-[var(--color-text-tertiary,#6B7280)]\">\n {helperText}\n </span>\n )}\n </label>\n )\n\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-2.5\",\n disabled && \"opacity-50\",\n className,\n )}\n >\n {labelPosition === \"left\" && labelContent}\n {track}\n {labelPosition === \"right\" && labelContent}\n </div>\n )\n },\n)\nToggle.displayName = \"Toggle\"\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"./utils\"\n\n/**\n * Selector — pill-shaped dropdown trigger. Qu Notify filter/store-picker control.\n *\n * Variants:\n * variant: primary | secondary\n * state: active | inactive | disabled\n *\n * Primary Active: cyan (#40CCF2) fill, black text\n * Primary Inactive: gray-100 fill, primary text\n * Secondary Active: teal outline, teal text\n * Secondary Inactive: gray-200 outline, secondary text\n *\n * The component is a styled button — wire up a Popover/DropdownMenu to it externally.\n * The `open` prop controls the chevron rotation only.\n *\n * Usage:\n * <Selector label=\"All Stores\" />\n * <Selector label=\"This Week\" variant=\"secondary\" state=\"active\" />\n * <Selector label=\"Location\" open />\n * <Selector label=\"Date Range\" state=\"disabled\" />\n */\n\nconst selectorVariants = cva(\n [\n \"inline-flex items-center gap-1.5 rounded-xl select-none cursor-pointer\",\n \"py-2 pl-3.5 pr-2.5\",\n \"font-['Red_Hat_Text'] text-[14px] font-medium leading-tight\",\n \"border-[1.5px] transition-colors duration-[120ms]\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n ],\n {\n variants: {\n variant: {\n primary: \"\",\n secondary: \"\",\n },\n state: {\n active: \"\",\n inactive: \"\",\n disabled: \"\",\n },\n },\n compoundVariants: [\n // Primary\n {\n variant: \"primary\",\n state: \"active\",\n class: \"bg-[var(--color-primary,#40CCF2)] border-transparent text-[var(--color-text-primary,#000)]\",\n },\n {\n variant: \"primary\",\n state: [\"inactive\", \"disabled\"],\n class: \"bg-[var(--color-inactive,#DEDEDE)] border-transparent text-[var(--color-text-primary,#000)]\",\n },\n // Secondary\n {\n variant: \"secondary\",\n state: \"active\",\n class: \"bg-transparent border-[var(--color-secondary-border,#339FB8)] text-[var(--color-secondary-foreground,#339FB8)]\",\n },\n {\n variant: \"secondary\",\n state: [\"inactive\", \"disabled\"],\n class: \"bg-transparent border-[var(--color-border,#C9C9C9)] text-[var(--color-text-secondary,#6B7280)]\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n state: \"active\",\n },\n },\n)\n\nexport interface SelectorProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof selectorVariants> {\n label: string\n /** Controlled open state — rotates chevron 180° */\n open?: boolean\n /** Icon to show before the label (optional) */\n icon?: React.ReactNode\n}\n\nexport const Selector = React.forwardRef<HTMLButtonElement, SelectorProps>(\n ({ label, variant = \"primary\", state = \"active\", open = false, icon, className, disabled, ...props }, ref) => {\n const isDisabled = disabled || state === \"disabled\"\n\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={isDisabled}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n className={cn(selectorVariants({ variant, state: isDisabled ? \"disabled\" : state }), className)}\n {...props}\n >\n {icon && <span className=\"shrink-0 [&_svg]:size-4\">{icon}</span>}\n <span>{label}</span>\n <ChevronDownIcon\n className={cn(\n \"shrink-0 transition-transform duration-[120ms]\",\n open && \"rotate-180\",\n )}\n />\n </button>\n )\n },\n)\nSelector.displayName = \"Selector\"\n\n// ── Selector Group — renders a horizontal row of Selectors ───────────────────\nexport interface SelectorGroupProps {\n children: React.ReactNode\n className?: string\n}\nexport function SelectorGroup({ children, className }: SelectorGroupProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children}\n </div>\n )\n}\n\n// ── icon ─────────────────────────────────────────────────────────────────────\nfunction ChevronDownIcon({ className }: { className?: string }) {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polyline points=\"2,4 6,8 10,4\" />\n </svg>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * TabBar — Qu Notify top-level tab selector (L1).\n *\n * Visual spec:\n * Layout: standalone pills sitting in a row with gaps (no outer container).\n * Selected tab: black fill, white text, full-radius pill.\n * Unselected tab: gray-100 fill, primary text, full-radius pill.\n * Font: Inter Medium 14px.\n *\n * Differs from Switcher: TabBar is for primary page-level navigation where\n * each tab reads as its own standalone affordance. Switcher is for inline\n * filters where the segments share an outer track.\n *\n * Usage (uncontrolled):\n * <TabBar tabs={[\"Sales\", \"Labor\", \"Store\"]} defaultValue=\"Sales\" />\n *\n * Usage (controlled):\n * <TabBar\n * tabs={[\"Sales\", \"Labor\", \"Store\", \"Product\"]}\n * value={activeTab}\n * onValueChange={setActiveTab}\n * />\n *\n * Usage with content panels:\n * <TabBar tabs={tabs} value={active} onValueChange={setActive} />\n * {active === \"Sales\" && <SalesPanel />}\n */\n\nexport interface TabBarProps {\n tabs: string[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n className?: string\n /** Make all tabs equal width (fills container) */\n stretch?: boolean\n}\n\nexport function TabBar({\n tabs,\n value,\n defaultValue,\n onValueChange,\n className,\n stretch = false,\n}: TabBarProps) {\n const [selected, setSelected] = React.useState(defaultValue ?? tabs[0])\n const isControlled = value !== undefined\n const current = isControlled ? value : selected\n\n const handleSelect = (tab: string) => {\n if (!isControlled) setSelected(tab)\n onValueChange?.(tab)\n }\n\n return (\n <div\n role=\"tablist\"\n aria-label=\"Tabs\"\n className={cn(\n \"inline-flex items-center gap-2\",\n stretch && \"w-full\",\n className,\n )}\n >\n {tabs.map((tab) => {\n const isSelected = tab === current\n return (\n <button\n key={tab}\n role=\"tab\"\n type=\"button\"\n aria-selected={isSelected}\n onClick={() => handleSelect(tab)}\n className={cn(\n \"rounded-full px-4 py-[7px] cursor-pointer select-none\",\n \"font-['Inter'] text-[14px] font-medium leading-tight\",\n \"outline-none transition-colors duration-[120ms]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1\",\n stretch && \"flex-1 text-center\",\n isSelected\n ? \"bg-[var(--color-foreground,#000)] text-white\"\n : \"bg-[var(--color-inactive,#DEDEDE)] text-[var(--color-text-primary,#000)] hover:brightness-95\",\n )}\n >\n {tab}\n </button>\n )\n })}\n </div>\n )\n}\n\n/**\n * TabPanels — optional declarative panel companion for TabBar.\n *\n * Usage:\n * <TabBar tabs={[\"Sales\",\"Labor\"]} value={tab} onValueChange={setTab} />\n * <TabPanels value={tab}>\n * <TabPanel value=\"Sales\"><SalesContent /></TabPanel>\n * <TabPanel value=\"Labor\"><LaborContent /></TabPanel>\n * </TabPanels>\n */\nexport interface TabPanelsProps {\n value: string\n children: React.ReactNode\n className?: string\n}\nexport function TabPanels({ value, children, className }: TabPanelsProps) {\n return (\n <div className={className}>\n {React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return null\n const el = child as React.ReactElement<TabPanelProps>\n return el.props.value === value ? el : null\n })}\n </div>\n )\n}\n\nexport interface TabPanelProps {\n value: string\n children: React.ReactNode\n className?: string\n}\nexport function TabPanel({ children, className }: TabPanelProps) {\n return <div role=\"tabpanel\" className={className}>{children}</div>\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * Switcher — Qu Notify segmented control (L2 — inline data filter).\n *\n * Visual spec:\n * Container: gray-100 (#DEDEDE) bg, full-radius pill, 3px padding\n * Selected segment: black fill, white text, full-radius pill\n * Unselected segment: transparent, primary text (black)\n * Font: Inter Medium 14px\n *\n * Differs from TabBar:\n * - TabBar: standalone pill tabs, no outer container — primary page navigation\n * - Switcher: outer pill container holding inner pill segments — inline\n * data filters (e.g. Day / Week / Month, Net / Gross, All / Open / Closed)\n *\n * Usage (uncontrolled):\n * <Switcher segments={[\"Day\", \"Week\", \"Month\"]} defaultValue=\"Week\" />\n *\n * Usage (controlled):\n * <Switcher\n * segments={[\"Net\", \"Gross\"]}\n * value={metric}\n * onValueChange={setMetric}\n * />\n *\n * Usage with icon segments:\n * <Switcher\n * segments={[\n * { value: \"list\", label: \"List\", icon: <ListIcon /> },\n * { value: \"grid\", label: \"Grid\", icon: <GridIcon /> },\n * ]}\n * value={view}\n * onValueChange={setView}\n * />\n */\n\ntype Segment = string | { value: string; label: string; icon?: React.ReactNode }\n\nfunction segmentValue(s: Segment): string {\n return typeof s === \"string\" ? s : s.value\n}\nfunction segmentLabel(s: Segment): string {\n return typeof s === \"string\" ? s : s.label\n}\nfunction segmentIcon(s: Segment): React.ReactNode | undefined {\n return typeof s === \"string\" ? undefined : s.icon\n}\n\nexport interface SwitcherProps {\n segments: Segment[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n className?: string\n /** Stretch to fill container width */\n stretch?: boolean\n}\n\nexport function Switcher({\n segments,\n value,\n defaultValue,\n onValueChange,\n className,\n stretch = false,\n}: SwitcherProps) {\n const [selected, setSelected] = React.useState(\n defaultValue ?? segmentValue(segments[0]),\n )\n const isControlled = value !== undefined\n const current = isControlled ? value : selected\n\n const handleSelect = (val: string) => {\n if (!isControlled) setSelected(val)\n onValueChange?.(val)\n }\n\n return (\n <div\n role=\"group\"\n className={cn(\n \"inline-flex items-center gap-0.5 rounded-full p-[3px]\",\n \"bg-[var(--color-inactive,#DEDEDE)]\",\n stretch && \"w-full\",\n className,\n )}\n >\n {segments.map((seg) => {\n const val = segmentValue(seg)\n const label = segmentLabel(seg)\n const icon = segmentIcon(seg)\n const isSelected = val === current\n\n return (\n <button\n key={val}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n onClick={() => handleSelect(val)}\n className={cn(\n \"inline-flex items-center justify-center gap-1.5 rounded-full\",\n \"px-4 py-[7px] cursor-pointer select-none\",\n \"font-['Inter'] text-[14px] font-medium leading-tight\",\n \"outline-none transition-colors duration-[120ms]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1\",\n stretch && \"flex-1\",\n isSelected\n ? \"bg-[var(--color-foreground,#000)] text-white\"\n : \"bg-transparent text-[var(--color-text-primary,#000)] hover:bg-black/5\",\n )}\n >\n {icon && <span className=\"shrink-0 [&_svg]:size-[14px]\">{icon}</span>}\n {label}\n </button>\n )\n })}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\n\n/**\n * BottomNav — Qu Notify floating bottom navigation bar.\n *\n * Visual spec:\n * Container: glass gradient pill (180deg, rgba(220,220,220,0.2) → rgba(118,118,118,0.2))\n * box-shadow: 0 4px 4px rgba(0,0,0,0.14)\n * border-radius: 60px\n * max-width: 360px, height: 72px\n * Selected item: black fill pill, white icon + label (Semi Bold)\n * Unselected item: transparent, gray icon + label (Regular)\n * Font: Inter — label 10px\n * Icon: 20×20px\n *\n * Usage (controlled — you manage routing):\n * const [active, setActive] = useState(\"dashboard\")\n *\n * <BottomNav\n * items={[\n * { value: \"dashboard\", label: \"Dashboard\", icon: <DashboardIcon /> },\n * { value: \"inventory\", label: \"Inventory\", icon: <BoxIcon /> },\n * { value: \"menu\", label: \"Menu\", icon: <MenuIcon /> },\n * ]}\n * value={active}\n * onValueChange={setActive}\n * />\n *\n * Usage with React Router / Next.js:\n * <BottomNav\n * items={navItems}\n * value={pathname}\n * onValueChange={(v) => router.push(v)}\n * />\n *\n * Positioning:\n * Wrap in a <div className=\"fixed bottom-6 left-1/2 -translate-x-1/2 w-full max-w-sm px-4 z-50\">\n * for the standard bottom-floating placement used in the app.\n */\n\nexport interface NavItem {\n value: string\n label: string\n icon: React.ReactNode\n /** Notification indicator */\n badge?: boolean | number\n}\n\nexport interface BottomNavProps {\n items: NavItem[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n className?: string\n}\n\nexport function BottomNav({\n items,\n value,\n defaultValue,\n onValueChange,\n className,\n}: BottomNavProps) {\n const [selected, setSelected] = React.useState(\n defaultValue ?? items[0]?.value,\n )\n const isControlled = value !== undefined\n const current = isControlled ? value : selected\n\n const handleSelect = (val: string) => {\n if (!isControlled) setSelected(val)\n onValueChange?.(val)\n }\n\n return (\n <nav\n aria-label=\"Main navigation\"\n className={cn(\n // Glass pill container\n \"flex items-center justify-between\",\n \"w-full max-w-[360px] h-[72px] rounded-[60px]\",\n \"px-3 py-2\",\n // Glass gradient\n \"bg-gradient-to-b from-[rgba(220,220,220,0.20)] to-[rgba(118,118,118,0.20)]\",\n \"backdrop-blur-md\",\n // Shadow\n \"shadow-[0_4px_4px_rgba(0,0,0,0.14)]\",\n className,\n )}\n >\n {items.map((item) => {\n const isSelected = item.value === current\n return (\n <NavItemButton\n key={item.value}\n item={item}\n isSelected={isSelected}\n onClick={() => handleSelect(item.value)}\n />\n )\n })}\n </nav>\n )\n}\n\n// ── Internal nav item ─────────────────────────────────────────────────────────\ninterface NavItemButtonProps {\n item: NavItem\n isSelected: boolean\n onClick: () => void\n}\n\nfunction NavItemButton({ item, isSelected, onClick }: NavItemButtonProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-current={isSelected ? \"page\" : undefined}\n className={cn(\n \"relative inline-flex flex-col items-center justify-center gap-[3px]\",\n \"rounded-full py-2 px-4 cursor-pointer select-none\",\n \"outline-none transition-colors duration-[120ms]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1\",\n isSelected\n ? \"bg-[var(--color-foreground,#000)] text-white\"\n : \"bg-transparent text-[var(--color-muted-foreground,#6B7280)]\",\n )}\n >\n {/* Badge dot */}\n {item.badge && (\n <span\n aria-label={typeof item.badge === \"number\" ? `${item.badge} notifications` : \"New notification\"}\n className={cn(\n \"absolute right-2 top-2 flex items-center justify-center\",\n \"rounded-full bg-[var(--color-destructive,#EF2149)] text-white\",\n typeof item.badge === \"number\"\n ? \"h-4 min-w-4 px-1 font-['Inter'] text-[10px] font-semibold\"\n : \"h-2 w-2\",\n )}\n >\n {typeof item.badge === \"number\" ? item.badge : null}\n </span>\n )}\n\n {/* Icon */}\n <span className=\"[&_svg]:size-5\" aria-hidden=\"true\">\n {item.icon}\n </span>\n\n {/* Label */}\n <span\n className={cn(\n \"font-['Inter'] text-[10px] leading-tight\",\n isSelected ? \"font-semibold\" : \"font-normal\",\n )}\n >\n {item.label}\n </span>\n </button>\n )\n}\n\n// ── Positioning wrapper — use as-is for the standard app layout ───────────────\nexport function BottomNavContainer({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"fixed bottom-6 left-1/2 z-50 flex w-full max-w-[402px] -translate-x-1/2 items-center justify-center px-4\">\n {children}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"./utils\"\n\n/**\n * Badge — Qu Notify status/trend pill label.\n *\n * Variants:\n * variant: default | success | error | warning | alert | info | neutral\n * size: sm | md\n *\n * Usage:\n * <Badge>Open</Badge>\n * <Badge variant=\"success\">+11.8%</Badge>\n * <Badge variant=\"error\">-5.6%</Badge>\n * <Badge variant=\"warning\">Delayed</Badge>\n * <Badge icon={<TrendUpIcon />} variant=\"success\">Net Sales</Badge>\n */\n\nconst badgeVariants = cva(\n [\n \"inline-flex items-center gap-1 rounded-full font-['Inter'] font-medium whitespace-nowrap\",\n \"select-none leading-tight\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-[var(--color-inactive,#DEDEDE)] text-[var(--color-text-primary,#000)]\",\n success: \"bg-[var(--color-success-soft,#B3F5D1)] text-[var(--color-success,#16A34A)]\",\n error: \"bg-[var(--color-error-soft,#FFC9C9)] text-[var(--color-destructive,#EF2149)]\",\n warning: \"bg-[var(--color-warning-soft,#FFF085)] text-[#92680E]\",\n alert: \"bg-[var(--color-alert-soft,#EAC1C3)] text-[var(--color-alert,#FA6A0A)]\",\n info: \"bg-[var(--color-info-soft,#BEDBFF)] text-[var(--color-info,#2F80ED)]\",\n neutral: \"bg-transparent text-[var(--color-text-secondary,#6B7280)] border border-[var(--color-border,#C9C9C9)]\",\n // Brand accent fills — used for status tags in Kitchen Intelligence\n brand: \"bg-[var(--color-primary,#40CCF2)] text-[var(--color-text-primary,#000)]\",\n },\n size: {\n sm: \"h-5 px-2 text-[11px]\",\n md: \"h-6 px-2.5 text-[12px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n icon?: React.ReactNode\n}\n\nexport function Badge({ variant, size, icon, children, className, ...props }: BadgeProps) {\n return (\n <span className={cn(badgeVariants({ variant, size }), className)} {...props}>\n {icon && <span className=\"shrink-0 [&_svg]:size-3\" aria-hidden=\"true\">{icon}</span>}\n {children}\n </span>\n )\n}\n\n/**\n * TrendBadge — convenience wrapper that picks variant from sign of the value.\n *\n * Usage:\n * <TrendBadge value={11.8} /> → green \"+11.8%\"\n * <TrendBadge value={-5.6} /> → red \"−5.6%\"\n * <TrendBadge value={0} /> → neutral \"0.0%\"\n */\nexport interface TrendBadgeProps extends Omit<BadgeProps, \"variant\" | \"children\"> {\n value: number\n /** Number of decimal places (default: 1) */\n decimals?: number\n /** Show arrow icon (default: true) */\n showArrow?: boolean\n}\n\nexport function TrendBadge({ value, decimals = 1, showArrow = true, ...props }: TrendBadgeProps) {\n const variant: BadgeProps[\"variant\"] =\n value > 0 ? \"success\" : value < 0 ? \"error\" : \"neutral\"\n\n const formatted = `${value > 0 ? \"+\" : \"\"}${value.toFixed(decimals)}%`\n\n const arrow = showArrow ? (\n value > 0 ? <ArrowUpIcon /> :\n value < 0 ? <ArrowDownIcon /> :\n null\n ) : null\n\n return (\n <Badge variant={variant} icon={arrow} {...props}>\n {formatted}\n </Badge>\n )\n}\n\n// ── icons ─────────────────────────────────────────────────────────────────────\nfunction ArrowUpIcon() {\n return (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"2,7 5,3 8,7\" />\n </svg>\n )\n}\nfunction ArrowDownIcon() {\n return (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"2,3 5,7 8,3\" />\n </svg>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"./utils\"\nimport { TrendBadge } from \"./badge\"\n\n/**\n * MetricTile — the core data display unit of the Qu Notify dashboard.\n *\n * Visual spec:\n * Container: white card, 16px border-radius, shadow: 0 4px 4px rgba(0,0,0,0.06)\n * Label: Inter Regular 12px, gray (#6B7280)\n * Value: Inter SemiBold 24px, black (#000)\n * Trend: TrendBadge (green/red/neutral)\n * Sub-label: Inter Regular 12px, gray — secondary context (e.g. \"vs last week\")\n *\n * Variants:\n * size: sm | md | lg\n * loading: skeleton state\n *\n * Usage (minimal):\n * <MetricTile label=\"Net Sales\" value=\"$42,810\" />\n *\n * Usage (with trend):\n * <MetricTile label=\"Average Check\" value=\"$18.42\" trend={11.8} trendLabel=\"vs last week\" />\n *\n * Usage (with icon and custom value color):\n * <MetricTile\n * label=\"Labor %\"\n * value=\"24.1%\"\n * trend={-2.3}\n * icon={<UserIcon />}\n * valueColor=\"var(--color-success,#16A34A)\"\n * />\n *\n * Usage (loading):\n * <MetricTile label=\"Net Sales\" value=\"...\" loading />\n *\n * Usage (grid):\n * <MetricTileGrid cols={2}>\n * <MetricTile label=\"Net Sales\" value=\"$42,810\" trend={11.8} />\n * <MetricTile label=\"Avg Check\" value=\"$18.42\" trend={-1.2} />\n * <MetricTile label=\"Checks\" value=\"2,324\" />\n * <MetricTile label=\"Speed of Svc\" value=\"3m 12s\" />\n * </MetricTileGrid>\n */\n\nexport interface MetricTileProps {\n label: string\n value: string | number\n /** Percentage change. Positive = green, negative = red. */\n trend?: number\n trendLabel?: string\n icon?: React.ReactNode\n /** Override the value text color (e.g. for KPI goal states) */\n valueColor?: string\n size?: \"sm\" | \"md\" | \"lg\"\n loading?: boolean\n /** Click handler — makes the tile interactive */\n onClick?: () => void\n className?: string\n /** Render as a specific element */\n as?: \"div\" | \"article\"\n}\n\nexport function MetricTile({\n label,\n value,\n trend,\n trendLabel,\n icon,\n valueColor,\n size = \"md\",\n loading = false,\n onClick,\n className,\n as: Tag = \"div\",\n}: MetricTileProps) {\n const valueSize = {\n sm: \"text-[18px]\",\n md: \"text-[24px]\",\n lg: \"text-[30px]\",\n }[size]\n\n const padding = {\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-5\",\n }[size]\n\n return (\n <Tag\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick() } : undefined}\n className={cn(\n // Card shell\n \"flex flex-col gap-1 rounded-[16px] bg-white\",\n \"shadow-[0_4px_4px_rgba(0,0,0,0.06)]\",\n padding,\n // Interactive\n onClick && \"cursor-pointer outline-none hover:shadow-[0_4px_12px_rgba(0,0,0,0.10)] transition-shadow duration-[120ms]\",\n onClick && \"focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-2\",\n // Loading\n loading && \"animate-pulse\",\n className,\n )}\n >\n {/* Label row */}\n <div className=\"flex items-center justify-between gap-2\">\n <span\n className={cn(\n \"font-['Inter'] text-[12px] font-normal leading-tight\",\n \"text-[var(--color-text-tertiary,#6B7280)]\",\n loading && \"h-3 w-24 rounded bg-gray-200\",\n )}\n >\n {!loading && label}\n </span>\n {icon && !loading && (\n <span className=\"shrink-0 text-[var(--color-text-tertiary,#6B7280)] [&_svg]:size-4\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n </div>\n\n {/* Value */}\n <span\n className={cn(\n \"font-['Inter'] font-semibold leading-tight tracking-tight\",\n valueSize,\n loading && \"mt-1 h-7 w-28 rounded bg-gray-200\",\n )}\n style={valueColor && !loading ? { color: valueColor } : undefined}\n >\n {!loading && value}\n </span>\n\n {/* Trend + sub-label row */}\n {(trend !== undefined || trendLabel) && !loading && (\n <div className=\"flex items-center gap-1.5\">\n {trend !== undefined && <TrendBadge value={trend} size=\"sm\" />}\n {trendLabel && (\n <span className=\"font-['Inter'] text-[11px] text-[var(--color-text-tertiary,#6B7280)]\">\n {trendLabel}\n </span>\n )}\n </div>\n )}\n {loading && trend !== undefined && (\n <div className=\"mt-1 h-4 w-16 rounded bg-gray-200\" />\n )}\n </Tag>\n )\n}\n\n/**\n * MetricTileGrid — responsive grid wrapper.\n *\n * Usage:\n * <MetricTileGrid cols={2}> ... </MetricTileGrid>\n */\nexport interface MetricTileGridProps {\n cols?: 1 | 2 | 3 | 4\n children: React.ReactNode\n className?: string\n}\n\nexport function MetricTileGrid({ cols = 2, children, className }: MetricTileGridProps) {\n const colClass = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n }[cols]\n\n return (\n <div className={cn(\"grid gap-3\", colClass, className)}>\n {children}\n </div>\n )\n}\n"]}
package/dist/index.mjs CHANGED
@@ -294,9 +294,9 @@ var Checkbox = React4.forwardRef(
294
294
  {
295
295
  "aria-hidden": "true",
296
296
  className: cn(
297
- "flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-[4px]",
298
- "border-[1.5px] transition-colors duration-[120ms]",
299
- showCheck || showDash ? "border-transparent bg-[var(--color-primary,#40CCF2)]" : "border-[var(--color-secondary-border,#339FB8)] bg-transparent"
297
+ "flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-[6px]",
298
+ "border-[2px] transition-colors duration-[120ms]",
299
+ showCheck || showDash ? "border-transparent bg-[var(--color-secondary,#339FB8)] text-[var(--color-foreground,#000)]" : "border-[var(--color-secondary,#339FB8)] bg-transparent"
300
300
  ),
301
301
  children: [
302
302
  showCheck && /* @__PURE__ */ jsx(CheckIcon, {}),
@@ -315,10 +315,10 @@ var Checkbox = React4.forwardRef(
315
315
  );
316
316
  Checkbox.displayName = "Checkbox";
317
317
  function CheckIcon() {
318
- return /* @__PURE__ */ jsx("svg", { width: "11", height: "8", viewBox: "0 0 11 8", fill: "none", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "1,4 4,7 10,1" }) });
318
+ return /* @__PURE__ */ jsx("svg", { width: "11", height: "8", viewBox: "0 0 11 8", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "1,4 4,7 10,1" }) });
319
319
  }
320
320
  function DashIcon() {
321
- return /* @__PURE__ */ jsx("svg", { width: "10", height: "2", viewBox: "0 0 10 2", fill: "none", stroke: "white", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx("line", { x1: "1", y1: "1", x2: "9", y2: "1" }) });
321
+ return /* @__PURE__ */ jsx("svg", { width: "10", height: "2", viewBox: "0 0 10 2", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: /* @__PURE__ */ jsx("line", { x1: "1", y1: "1", x2: "9", y2: "1" }) });
322
322
  }
323
323
  var Radio = React4.forwardRef(
324
324
  ({ label, helperText, disabled, checked, defaultChecked, className, onChange, ...props }, ref) => {
@@ -356,10 +356,10 @@ var Radio = React4.forwardRef(
356
356
  "aria-hidden": "true",
357
357
  className: cn(
358
358
  "flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-full",
359
- "border-[1.5px] transition-colors duration-[120ms]",
360
- currentChecked ? "border-transparent bg-[var(--color-primary,#40CCF2)]" : "border-[var(--color-secondary-border,#339FB8)] bg-transparent"
359
+ "border-[2px] bg-transparent transition-colors duration-[120ms]",
360
+ "border-[var(--color-secondary,#339FB8)]"
361
361
  ),
362
- children: currentChecked && /* @__PURE__ */ jsx("span", { className: "h-[6px] w-[6px] rounded-full bg-white" })
362
+ children: currentChecked && /* @__PURE__ */ jsx("span", { className: "h-[8px] w-[8px] rounded-full bg-[var(--color-foreground,#000)]" })
363
363
  }
364
364
  ),
365
365
  (label || helperText) && /* @__PURE__ */ jsxs("span", { className: "flex flex-col gap-0.5", children: [
@@ -440,20 +440,20 @@ var Toggle = React4.forwardRef(
440
440
  onKeyDown: handleKeyDown,
441
441
  className: cn(
442
442
  // track
443
- "relative inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer rounded-full",
443
+ "relative inline-flex h-[19px] w-[45px] shrink-0 cursor-pointer rounded-full",
444
444
  "border-0 outline-none transition-colors duration-[180ms] ease-[cubic-bezier(0.2,0,0,1)]",
445
- "focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-2",
445
+ "focus-visible:ring-2 focus-visible:ring-[var(--color-secondary,#339FB8)] focus-visible:ring-offset-2",
446
446
  "disabled:cursor-not-allowed",
447
- currentOn ? "bg-[var(--color-primary,#40CCF2)]" : "bg-[var(--color-inactive,#DEDEDE)]"
447
+ currentOn ? "bg-[var(--color-secondary,#339FB8)]" : "bg-[var(--color-inactive,#DEDEDE)]"
448
448
  ),
449
449
  children: /* @__PURE__ */ jsx(
450
450
  "span",
451
451
  {
452
452
  "aria-hidden": "true",
453
453
  className: cn(
454
- "absolute top-[2px] h-[20px] w-[20px] rounded-full bg-white shadow-sm",
454
+ "absolute top-[2px] h-[15px] w-[24px] rounded-full bg-white shadow-sm",
455
455
  "transition-transform duration-[180ms] ease-[cubic-bezier(0.2,0,0,1)]",
456
- currentOn ? "translate-x-[22px]" : "translate-x-[2px]"
456
+ currentOn ? "translate-x-[19px]" : "translate-x-[2px]"
457
457
  )
458
458
  }
459
459
  )
@@ -496,7 +496,7 @@ var Toggle = React4.forwardRef(
496
496
  Toggle.displayName = "Toggle";
497
497
  var selectorVariants = cva(
498
498
  [
499
- "inline-flex items-center gap-1.5 rounded-full select-none cursor-pointer",
499
+ "inline-flex items-center gap-1.5 rounded-xl select-none cursor-pointer",
500
500
  "py-2 pl-3.5 pr-2.5",
501
501
  "font-['Red_Hat_Text'] text-[14px] font-medium leading-tight",
502
502
  "border-[1.5px] transition-colors duration-[120ms]",
@@ -617,8 +617,7 @@ function TabBar({
617
617
  role: "tablist",
618
618
  "aria-label": "Tabs",
619
619
  className: cn(
620
- "inline-flex items-center gap-1 rounded-full p-1",
621
- "bg-[var(--color-inactive,#DEDEDE)]",
620
+ "inline-flex items-center gap-2",
622
621
  stretch && "w-full",
623
622
  className
624
623
  ),
@@ -637,7 +636,7 @@ function TabBar({
637
636
  "outline-none transition-colors duration-[120ms]",
638
637
  "focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1",
639
638
  stretch && "flex-1 text-center",
640
- isSelected ? "bg-[var(--color-foreground,#000)] text-white" : "bg-transparent text-[var(--color-text-primary,#000)] hover:bg-black/5"
639
+ isSelected ? "bg-[var(--color-foreground,#000)] text-white" : "bg-[var(--color-inactive,#DEDEDE)] text-[var(--color-text-primary,#000)] hover:brightness-95"
641
640
  ),
642
641
  children: tab
643
642
  },
@@ -688,7 +687,7 @@ function Switcher({
688
687
  {
689
688
  role: "group",
690
689
  className: cn(
691
- "inline-flex items-center gap-0.5 rounded-[8px] p-[3px]",
690
+ "inline-flex items-center gap-0.5 rounded-full p-[3px]",
692
691
  "bg-[var(--color-inactive,#DEDEDE)]",
693
692
  stretch && "w-full",
694
693
  className
@@ -706,13 +705,13 @@ function Switcher({
706
705
  "aria-checked": isSelected,
707
706
  onClick: () => handleSelect(val),
708
707
  className: cn(
709
- "inline-flex items-center justify-center gap-1.5 rounded-[6px]",
708
+ "inline-flex items-center justify-center gap-1.5 rounded-full",
710
709
  "px-4 py-[7px] cursor-pointer select-none",
711
710
  "font-['Inter'] text-[14px] font-medium leading-tight",
712
711
  "outline-none transition-colors duration-[120ms]",
713
712
  "focus-visible:ring-2 focus-visible:ring-[var(--color-ring,#40CCF2)] focus-visible:ring-offset-1",
714
713
  stretch && "flex-1",
715
- isSelected ? "bg-[var(--color-foreground,#000)] text-white" : "bg-transparent text-[var(--color-text-secondary,#6B7280)] hover:text-[var(--color-text-primary,#000)]"
714
+ isSelected ? "bg-[var(--color-foreground,#000)] text-white" : "bg-transparent text-[var(--color-text-primary,#000)] hover:bg-black/5"
716
715
  ),
717
716
  children: [
718
717
  icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 [&_svg]:size-[14px]", children: icon }),