@kismet-ux/constellation 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/form/Checkbox/checkbox.js +2 -0
  2. package/dist/form/Checkbox/checkbox.js.map +1 -1
  3. package/dist/form/DatePicker/date-picker.js +2 -0
  4. package/dist/form/DatePicker/date-picker.js.map +1 -1
  5. package/dist/form.d.ts +1 -1
  6. package/dist/{index-CBGZtocA.d.ts → index-CPpu2Wg4.d.ts} +2 -2
  7. package/dist/{index-BeCWb0Ix.d.ts → index-DMy7AzMN.d.ts} +68 -23
  8. package/dist/{index-DVEBz660.d.ts → index-YOC5H6Ls.d.ts} +2 -2
  9. package/dist/index.d.ts +6 -6
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/layout/AppSidebarHeader/app-sidebar-header.js +2 -0
  13. package/dist/layout/AppSidebarHeader/app-sidebar-header.js.map +1 -1
  14. package/dist/layout.d.ts +2 -2
  15. package/dist/navigation/Sheet/sheet.js +2 -0
  16. package/dist/navigation/Sheet/sheet.js.map +1 -1
  17. package/dist/navigation.d.ts +1 -1
  18. package/dist/settings/AppearanceTabs/appearance-tabs.js +2 -0
  19. package/dist/settings/AppearanceTabs/appearance-tabs.js.map +1 -1
  20. package/dist/{tooltip-zOT3UHCF.d.ts → tooltip-DoCbTucr.d.ts} +3 -3
  21. package/dist/ui/Chip/chip-variants.d.ts +6 -1
  22. package/dist/ui/Chip/chip-variants.d.ts.map +1 -1
  23. package/dist/ui/Chip/chip-variants.js +19 -2
  24. package/dist/ui/Chip/chip-variants.js.map +1 -1
  25. package/dist/ui/Chip/chip.css +97 -47
  26. package/dist/ui/Chip/chip.d.ts +14 -0
  27. package/dist/ui/Chip/chip.d.ts.map +1 -1
  28. package/dist/ui/Chip/chip.js +10 -2
  29. package/dist/ui/Chip/chip.js.map +1 -1
  30. package/dist/ui/Chip/chip.module.scss.js +1 -1
  31. package/dist/ui/StatusDot/index.d.ts +3 -0
  32. package/dist/ui/StatusDot/index.d.ts.map +1 -0
  33. package/dist/ui/StatusDot/status-dot-variants.d.ts +7 -0
  34. package/dist/ui/StatusDot/status-dot-variants.d.ts.map +1 -0
  35. package/dist/ui/StatusDot/status-dot-variants.js +28 -0
  36. package/dist/ui/StatusDot/status-dot-variants.js.map +1 -0
  37. package/dist/ui/StatusDot/status-dot.css +61 -0
  38. package/dist/ui/StatusDot/status-dot.d.ts +23 -0
  39. package/dist/ui/StatusDot/status-dot.d.ts.map +1 -0
  40. package/dist/ui/StatusDot/status-dot.js +23 -0
  41. package/dist/ui/StatusDot/status-dot.js.map +1 -0
  42. package/dist/ui/StatusDot/status-dot.module.scss.js +6 -0
  43. package/dist/ui/StatusDot/status-dot.module.scss.js.map +1 -0
  44. package/dist/ui/index.d.ts +1 -0
  45. package/dist/ui/index.d.ts.map +1 -1
  46. package/dist/ui.d.ts +2 -2
  47. package/dist/ui.js +2 -0
  48. package/dist/ui.js.map +1 -1
  49. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.js","sources":["../../../src/navigation/Sheet/sheet.tsx"],"sourcesContent":["import { Button } from '@constellation/ui';\nimport cn from 'clsx';\nimport { XIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { Slot } from '../../internal/slot';\nimport { useAnimationState } from '../../internal/use-animation-state';\nimport { useFocusTrap } from '../../internal/use-focus-trap';\nimport { useScrollLock } from '../../internal/use-scroll-lock';\nimport s from './sheet.module.scss';\n\n// ── Context ──────────────────────────────────────────────\n\ntype SheetContextValue = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n titleId: string;\n descriptionId: string;\n};\n\nconst SheetContext = React.createContext<SheetContextValue | null>(null);\n\nfunction useSheet() {\n const ctx = React.useContext(SheetContext);\n if (!ctx) throw new Error('Sheet compound components must be used within <Sheet>');\n return ctx;\n}\n\n// ── Root ─────────────────────────────────────────────────\n\nexport interface SheetProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: React.ReactNode;\n}\n\nfunction Sheet({ open: controlledOpen, defaultOpen = false, onOpenChange, children }: SheetProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n const titleId = React.useId();\n const descriptionId = React.useId();\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n return (\n <SheetContext.Provider value={{ open, onOpenChange: handleOpenChange, titleId, descriptionId }}>\n {children}\n </SheetContext.Provider>\n );\n}\n\n// ── Trigger ──────────────────────────────────────────────\n\nexport interface SheetTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nconst SheetTrigger = React.forwardRef<HTMLButtonElement, SheetTriggerProps>(\n ({ asChild, onClick, children, ...props }, ref) => {\n const { onOpenChange } = useSheet();\n const Comp = asChild ? Slot : 'button';\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n onOpenChange(true);\n };\n\n return (\n <Comp ref={ref} data-slot={'sheet-trigger'} onClick={handleClick} {...props}>\n {children}\n </Comp>\n );\n },\n);\nSheetTrigger.displayName = 'SheetTrigger';\n\n// ── Close ────────────────────────────────────────────────\n\nexport interface SheetCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nconst SheetClose = React.forwardRef<HTMLButtonElement, SheetCloseProps>(\n ({ asChild, onClick, children, ...props }, ref) => {\n const { onOpenChange } = useSheet();\n const Comp = asChild ? Slot : 'button';\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n onOpenChange(false);\n };\n\n return (\n <Comp ref={ref} data-slot={'sheet-close'} onClick={handleClick} {...props}>\n {children}\n </Comp>\n );\n },\n);\nSheetClose.displayName = 'SheetClose';\n\n// ── Content ──────────────────────────────────────────────\n\nconst sideClassMap = {\n right: s['content-right'],\n left: s['content-left'],\n top: s['content-top'],\n bottom: s['content-bottom'],\n} as const;\n\ntype SheetSide = keyof typeof sideClassMap;\n\nexport type SheetContentProps = React.HTMLAttributes<HTMLDivElement> & {\n side?: SheetSide;\n};\n\nconst SheetContent = React.forwardRef<HTMLDivElement, SheetContentProps>(\n ({ className, children, side = 'right', ...props }, ref) => {\n const { open, onOpenChange, titleId, descriptionId } = useSheet();\n const { mounted, state } = useAnimationState(open, 250);\n const focusTrapRef = useFocusTrap(open);\n useScrollLock(mounted);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n // A nested layer (an open Select, DatePicker or menu) marks Escape as\n // handled with preventDefault. Escape should dismiss the topmost layer\n // only, so the modal ignores an event something inside it already took.\n if (e.key === 'Escape' && !e.defaultPrevented) {\n onOpenChange(false);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [open, onOpenChange]);\n\n if (!mounted || state === 'idle') return null;\n\n return createPortal(\n <div ref={focusTrapRef}>\n <div\n data-slot={'sheet-overlay'}\n data-state={state}\n className={s.overlay}\n onClick={() => onOpenChange(false)}\n aria-hidden={'true'}\n />\n <div\n ref={ref}\n data-slot={'sheet-content'}\n data-state={state}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n className={cn(s['sheet-content'], sideClassMap[side], className)}\n onClick={e => e.stopPropagation()}\n {...props}\n >\n {children}\n <SheetClose className={s['close-button']} asChild>\n <Button variant={'ghost'} theme={'inherit'} iconOnly size={'sm'}>\n <XIcon />\n <span className={'srOnly'}>Close</span>\n </Button>\n </SheetClose>\n </div>\n </div>,\n document.body,\n );\n },\n);\nSheetContent.displayName = 'SheetContent';\n\n// ── Semantic sub-components ──────────────────────────────\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot={'sheet-header'} className={cn(s.header, className)} {...props} />;\n}\n\nfunction SheetBody({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot={'sheet-body'} className={cn(s.body, className)} {...props} />;\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot={'sheet-footer'} className={cn(s.footer, className)} {...props} />;\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<'h2'>) {\n const { titleId } = useSheet();\n\n return (\n <h2 id={titleId} data-slot={'sheet-title'} className={cn(s.title, className)} {...props} />\n );\n}\n\nfunction SheetDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { descriptionId } = useSheet();\n\n return (\n <p\n id={descriptionId}\n data-slot={'sheet-description'}\n className={cn(s.description, className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetBody,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"sheet.js","sources":["../../../src/navigation/Sheet/sheet.tsx"],"sourcesContent":["import { Button } from '@constellation/ui';\nimport cn from 'clsx';\nimport { XIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { Slot } from '../../internal/slot';\nimport { useAnimationState } from '../../internal/use-animation-state';\nimport { useFocusTrap } from '../../internal/use-focus-trap';\nimport { useScrollLock } from '../../internal/use-scroll-lock';\nimport s from './sheet.module.scss';\n\n// ── Context ──────────────────────────────────────────────\n\ntype SheetContextValue = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n titleId: string;\n descriptionId: string;\n};\n\nconst SheetContext = React.createContext<SheetContextValue | null>(null);\n\nfunction useSheet() {\n const ctx = React.useContext(SheetContext);\n if (!ctx) throw new Error('Sheet compound components must be used within <Sheet>');\n return ctx;\n}\n\n// ── Root ─────────────────────────────────────────────────\n\nexport interface SheetProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: React.ReactNode;\n}\n\nfunction Sheet({ open: controlledOpen, defaultOpen = false, onOpenChange, children }: SheetProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n const titleId = React.useId();\n const descriptionId = React.useId();\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n return (\n <SheetContext.Provider value={{ open, onOpenChange: handleOpenChange, titleId, descriptionId }}>\n {children}\n </SheetContext.Provider>\n );\n}\n\n// ── Trigger ──────────────────────────────────────────────\n\nexport interface SheetTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nconst SheetTrigger = React.forwardRef<HTMLButtonElement, SheetTriggerProps>(\n ({ asChild, onClick, children, ...props }, ref) => {\n const { onOpenChange } = useSheet();\n const Comp = asChild ? Slot : 'button';\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n onOpenChange(true);\n };\n\n return (\n <Comp ref={ref} data-slot={'sheet-trigger'} onClick={handleClick} {...props}>\n {children}\n </Comp>\n );\n },\n);\nSheetTrigger.displayName = 'SheetTrigger';\n\n// ── Close ────────────────────────────────────────────────\n\nexport interface SheetCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nconst SheetClose = React.forwardRef<HTMLButtonElement, SheetCloseProps>(\n ({ asChild, onClick, children, ...props }, ref) => {\n const { onOpenChange } = useSheet();\n const Comp = asChild ? Slot : 'button';\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n onOpenChange(false);\n };\n\n return (\n <Comp ref={ref} data-slot={'sheet-close'} onClick={handleClick} {...props}>\n {children}\n </Comp>\n );\n },\n);\nSheetClose.displayName = 'SheetClose';\n\n// ── Content ──────────────────────────────────────────────\n\nconst sideClassMap = {\n right: s['content-right'],\n left: s['content-left'],\n top: s['content-top'],\n bottom: s['content-bottom'],\n} as const;\n\ntype SheetSide = keyof typeof sideClassMap;\n\nexport type SheetContentProps = React.HTMLAttributes<HTMLDivElement> & {\n side?: SheetSide;\n};\n\nconst SheetContent = React.forwardRef<HTMLDivElement, SheetContentProps>(\n ({ className, children, side = 'right', ...props }, ref) => {\n const { open, onOpenChange, titleId, descriptionId } = useSheet();\n const { mounted, state } = useAnimationState(open, 250);\n const focusTrapRef = useFocusTrap(open);\n useScrollLock(mounted);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n // A nested layer (an open Select, DatePicker or menu) marks Escape as\n // handled with preventDefault. Escape should dismiss the topmost layer\n // only, so the modal ignores an event something inside it already took.\n if (e.key === 'Escape' && !e.defaultPrevented) {\n onOpenChange(false);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [open, onOpenChange]);\n\n if (!mounted || state === 'idle') return null;\n\n return createPortal(\n <div ref={focusTrapRef}>\n <div\n data-slot={'sheet-overlay'}\n data-state={state}\n className={s.overlay}\n onClick={() => onOpenChange(false)}\n aria-hidden={'true'}\n />\n <div\n ref={ref}\n data-slot={'sheet-content'}\n data-state={state}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n className={cn(s['sheet-content'], sideClassMap[side], className)}\n onClick={e => e.stopPropagation()}\n {...props}\n >\n {children}\n <SheetClose className={s['close-button']} asChild>\n <Button variant={'ghost'} theme={'inherit'} iconOnly size={'sm'}>\n <XIcon />\n <span className={'srOnly'}>Close</span>\n </Button>\n </SheetClose>\n </div>\n </div>,\n document.body,\n );\n },\n);\nSheetContent.displayName = 'SheetContent';\n\n// ── Semantic sub-components ──────────────────────────────\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot={'sheet-header'} className={cn(s.header, className)} {...props} />;\n}\n\nfunction SheetBody({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot={'sheet-body'} className={cn(s.body, className)} {...props} />;\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot={'sheet-footer'} className={cn(s.footer, className)} {...props} />;\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<'h2'>) {\n const { titleId } = useSheet();\n\n return (\n <h2 id={titleId} data-slot={'sheet-title'} className={cn(s.title, className)} {...props} />\n );\n}\n\nfunction SheetDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { descriptionId } = useSheet();\n\n return (\n <p\n id={descriptionId}\n data-slot={'sheet-description'}\n className={cn(s.description, className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetBody,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -62,7 +62,7 @@ declare function DropdownMenuSubContent({ className, ...props }: React.HTMLAttri
62
62
  declare const linkVariants: (props?: ({
63
63
  underline?: boolean | null | undefined;
64
64
  hover?: "default" | "none" | null | undefined;
65
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
65
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
66
66
  } & class_variance_authority_types.ClassProp) | undefined) => string;
67
67
 
68
68
  interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'onClick'>, VariantProps<typeof linkVariants> {
@@ -21,6 +21,8 @@ import '../../ui/Pagination/pagination.js';
21
21
  import '../../ui/ProgressBar/progress-bar.js';
22
22
  import '../../ui/Separator/separator.js';
23
23
  import '../../ui/StatCard/stat-card.js';
24
+ import '../../ui/StatusDot/status-dot.js';
25
+ import '../../ui/StatusDot/status-dot-variants.js';
24
26
  import '../../ui/StepProgress/step-progress.js';
25
27
  import '../../ui/Switch/switch.js';
26
28
  import '../../ui/Table/table.js';
@@ -1 +1 @@
1
- {"version":3,"file":"appearance-tabs.js","sources":["../../../src/settings/AppearanceTabs/appearance-tabs.tsx"],"sourcesContent":["import { type Appearance, useAppearance } from '@constellation/hooks';\nimport { Button } from '@constellation/ui';\nimport cn from 'clsx';\nimport { type LucideIcon, MonitorIcon, MoonIcon, SunIcon } from 'lucide-react';\nimport * as React from 'react';\nimport s from './appearance-tabs.module.scss';\n\ntype AppearanceTabsProps = React.HTMLAttributes<HTMLDivElement> & {\n iconOnly?: boolean;\n};\n\nexport function AppearanceTabs({\n className = '',\n iconOnly = false,\n ...props\n}: AppearanceTabsProps) {\n const { appearance, updateAppearance } = useAppearance();\n\n const tabs: { value: Appearance; icon: LucideIcon; label: string }[] = [\n { value: 'light', icon: SunIcon, label: 'Light' },\n { value: 'dark', icon: MoonIcon, label: 'Dark' },\n { value: 'system', icon: MonitorIcon, label: 'System' },\n ];\n\n return (\n <div data-slot={'appearance-tabs'} className={cn(s['tabs-root'], className)} {...props}>\n {tabs.map(({ value, icon: Icon, label }) => (\n <Button\n key={value}\n variant={'ghost'}\n theme={'inherit'}\n rounded\n onClick={() => updateAppearance(value)}\n aria-label={label}\n iconOnly={iconOnly}\n aria-pressed={appearance === value}\n className={cn(s['tab-button'], appearance === value && s['tab-button-active'])}\n title={iconOnly ? label : undefined}\n >\n <Icon />\n {!iconOnly && <span>{label}</span>}\n </Button>\n ))}\n </div>\n );\n}\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWM,SAAU,cAAc,CAAC,EAC7B,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,KAAK,EAChB,GAAG,KAAK,EACY,EAAA;IACpB,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,aAAa,EAAE;AAExD,IAAA,MAAM,IAAI,GAA6D;QACrE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QACjD,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;QAChD,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;KACxD;IAED,QACEA,GAAA,CAAA,KAAA,EAAA,EAAA,WAAA,EAAgB,iBAAiB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,QAAA,EACnF,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MACrCC,IAAA,CAAC,MAAM,EAAA,EAEL,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAA,IAAA,EACP,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,gBAC1B,KAAK,EACjB,QAAQ,EAAE,QAAQ,EAAA,cAAA,EACJ,UAAU,KAAK,KAAK,EAClC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,UAAU,KAAK,KAAK,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAC9E,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,SAAS,EAAA,QAAA,EAAA,CAEnCD,GAAA,CAAC,IAAI,EAAA,EAAA,CAAG,EACP,CAAC,QAAQ,IAAIA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,KAAK,EAAA,CAAQ,CAAA,EAAA,EAZ7B,KAAK,CAaH,CACV,CAAC,EAAA,CACE;AAEV;;"}
1
+ {"version":3,"file":"appearance-tabs.js","sources":["../../../src/settings/AppearanceTabs/appearance-tabs.tsx"],"sourcesContent":["import { type Appearance, useAppearance } from '@constellation/hooks';\nimport { Button } from '@constellation/ui';\nimport cn from 'clsx';\nimport { type LucideIcon, MonitorIcon, MoonIcon, SunIcon } from 'lucide-react';\nimport * as React from 'react';\nimport s from './appearance-tabs.module.scss';\n\ntype AppearanceTabsProps = React.HTMLAttributes<HTMLDivElement> & {\n iconOnly?: boolean;\n};\n\nexport function AppearanceTabs({\n className = '',\n iconOnly = false,\n ...props\n}: AppearanceTabsProps) {\n const { appearance, updateAppearance } = useAppearance();\n\n const tabs: { value: Appearance; icon: LucideIcon; label: string }[] = [\n { value: 'light', icon: SunIcon, label: 'Light' },\n { value: 'dark', icon: MoonIcon, label: 'Dark' },\n { value: 'system', icon: MonitorIcon, label: 'System' },\n ];\n\n return (\n <div data-slot={'appearance-tabs'} className={cn(s['tabs-root'], className)} {...props}>\n {tabs.map(({ value, icon: Icon, label }) => (\n <Button\n key={value}\n variant={'ghost'}\n theme={'inherit'}\n rounded\n onClick={() => updateAppearance(value)}\n aria-label={label}\n iconOnly={iconOnly}\n aria-pressed={appearance === value}\n className={cn(s['tab-button'], appearance === value && s['tab-button-active'])}\n title={iconOnly ? label : undefined}\n >\n <Icon />\n {!iconOnly && <span>{label}</span>}\n </Button>\n ))}\n </div>\n );\n}\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWM,SAAU,cAAc,CAAC,EAC7B,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,KAAK,EAChB,GAAG,KAAK,EACY,EAAA;IACpB,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,aAAa,EAAE;AAExD,IAAA,MAAM,IAAI,GAA6D;QACrE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QACjD,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;QAChD,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;KACxD;IAED,QACEA,GAAA,CAAA,KAAA,EAAA,EAAA,WAAA,EAAgB,iBAAiB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,QAAA,EACnF,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MACrCC,IAAA,CAAC,MAAM,EAAA,EAEL,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAA,IAAA,EACP,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,gBAC1B,KAAK,EACjB,QAAQ,EAAE,QAAQ,EAAA,cAAA,EACJ,UAAU,KAAK,KAAK,EAClC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,UAAU,KAAK,KAAK,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAC9E,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,SAAS,EAAA,QAAA,EAAA,CAEnCD,GAAA,CAAC,IAAI,EAAA,EAAA,CAAG,EACP,CAAC,QAAQ,IAAIA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,KAAK,EAAA,CAAQ,CAAA,EAAA,EAZ7B,KAAK,CAaH,CACV,CAAC,EAAA,CACE;AAEV;;"}
@@ -3,9 +3,9 @@ import * as React from 'react';
3
3
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
4
 
5
5
  declare const buttonVariants: (props?: ({
6
- variant?: "contained" | "outlined" | "ghost" | null | undefined;
7
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
8
- size?: "sm" | "md" | "lg" | "xs" | null | undefined;
6
+ variant?: "outlined" | "contained" | "ghost" | null | undefined;
7
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
8
+ size?: "lg" | "md" | "sm" | "xs" | null | undefined;
9
9
  iconOnly?: boolean | null | undefined;
10
10
  rounded?: boolean | "extra" | null | undefined;
11
11
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -1,6 +1,11 @@
1
1
  export declare const chipVariants: (props?: ({
2
2
  theme?: "inherit" | "primary" | "secondary" | "destructive" | "warning" | "success" | "info" | "slate" | null | undefined;
3
- size?: "sm" | "md" | null | undefined;
3
+ variant?: "solid" | "soft" | "outline" | null | undefined;
4
+ size?: "sm" | "md" | "xs" | "2xs" | null | undefined;
5
+ shape?: "rounded" | "pill" | null | undefined;
6
+ dashed?: boolean | null | undefined;
7
+ mono?: boolean | null | undefined;
8
+ uppercase?: boolean | null | undefined;
4
9
  wrap?: boolean | null | undefined;
5
10
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
11
  //# sourceMappingURL=chip-variants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chip-variants.d.ts","sourceRoot":"","sources":["../../../src/ui/Chip/chip-variants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;8EAyBvB,CAAC"}
1
+ {"version":3,"file":"chip-variants.d.ts","sourceRoot":"","sources":["../../../src/ui/Chip/chip-variants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;8EA0CvB,CAAC"}
@@ -13,17 +13,34 @@ const chipVariants = cva(s.chip, {
13
13
  slate: s['chip--slate'],
14
14
  inherit: s['chip--inherit'],
15
15
  },
16
+ variant: {
17
+ soft: s['chip--soft'],
18
+ outline: s['chip--outline'],
19
+ solid: s['chip--solid'],
20
+ },
16
21
  size: {
22
+ '2xs': s['chip--2xs'],
23
+ xs: s['chip--xs'],
17
24
  sm: s['chip--sm'],
18
25
  md: s['chip--md'],
19
26
  },
20
- wrap: {
21
- true: s['chip--wrap'],
27
+ shape: {
28
+ pill: undefined,
29
+ rounded: s['chip--rounded'],
22
30
  },
31
+ dashed: { true: s['chip--dashed'] },
32
+ mono: { true: s['chip--mono'] },
33
+ uppercase: { true: s['chip--uppercase'] },
34
+ wrap: { true: s['chip--wrap'] },
23
35
  },
24
36
  defaultVariants: {
25
37
  theme: 'primary',
38
+ variant: 'soft',
26
39
  size: 'md',
40
+ shape: 'pill',
41
+ dashed: false,
42
+ mono: false,
43
+ uppercase: false,
27
44
  wrap: false,
28
45
  },
29
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"chip-variants.js","sources":["../../../src/ui/Chip/chip-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport s from './chip.module.scss';\n\nexport const chipVariants = cva(s.chip, {\n variants: {\n theme: {\n primary: s['chip--primary'],\n secondary: s['chip--secondary'],\n destructive: s['chip--destructive'],\n warning: s['chip--warning'],\n success: s['chip--success'],\n info: s['chip--info'],\n slate: s['chip--slate'],\n inherit: s['chip--inherit'],\n },\n size: {\n sm: s['chip--sm'],\n md: s['chip--md'],\n },\n wrap: {\n true: s['chip--wrap'],\n },\n },\n defaultVariants: {\n theme: 'primary',\n size: 'md',\n wrap: false,\n },\n});\n"],"names":[],"mappings":";;;MAGa,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;AACtC,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC3B,YAAA,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC/B,YAAA,WAAW,EAAE,CAAC,CAAC,mBAAmB,CAAC;AACnC,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC3B,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC3B,YAAA,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC;AACrB,YAAA,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC;AACvB,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC5B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC;AACjB,YAAA,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC;AAClB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC;AACtB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,KAAK;AACZ,KAAA;AACF,CAAA;;"}
1
+ {"version":3,"file":"chip-variants.js","sources":["../../../src/ui/Chip/chip-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport s from './chip.module.scss';\n\nexport const chipVariants = cva(s.chip, {\n variants: {\n theme: {\n primary: s['chip--primary'],\n secondary: s['chip--secondary'],\n destructive: s['chip--destructive'],\n warning: s['chip--warning'],\n success: s['chip--success'],\n info: s['chip--info'],\n slate: s['chip--slate'],\n inherit: s['chip--inherit'],\n },\n variant: {\n soft: s['chip--soft'],\n outline: s['chip--outline'],\n solid: s['chip--solid'],\n },\n size: {\n '2xs': s['chip--2xs'],\n xs: s['chip--xs'],\n sm: s['chip--sm'],\n md: s['chip--md'],\n },\n shape: {\n pill: undefined,\n rounded: s['chip--rounded'],\n },\n dashed: { true: s['chip--dashed'] },\n mono: { true: s['chip--mono'] },\n uppercase: { true: s['chip--uppercase'] },\n wrap: { true: s['chip--wrap'] },\n },\n defaultVariants: {\n theme: 'primary',\n variant: 'soft',\n size: 'md',\n shape: 'pill',\n dashed: false,\n mono: false,\n uppercase: false,\n wrap: false,\n },\n});\n"],"names":[],"mappings":";;;MAGa,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;AACtC,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC3B,YAAA,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC/B,YAAA,WAAW,EAAE,CAAC,CAAC,mBAAmB,CAAC;AACnC,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC3B,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC3B,YAAA,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC;AACrB,YAAA,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC;AACvB,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC;AACrB,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC3B,YAAA,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC;AACrB,YAAA,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC;AACjB,YAAA,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC;AACjB,YAAA,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC;AAClB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC;AAC5B,SAAA;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE;QACnC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE;QAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE;QACzC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE;AAChC,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,IAAI,EAAE,KAAK;AACZ,KAAA;AACF,CAAA;;"}
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  /**
2
3
  * Size config. `icon-size` scales SVGs rendered as direct children to match
3
4
  * the chip's visual weight. `padding-with-icon` trims horizontal padding
@@ -22,6 +23,43 @@
22
23
  .chip-module_chip--wrap__YvZ3D {
23
24
  white-space: normal;
24
25
  }
26
+ .chip-module_chip--mono__SMCPR {
27
+ font-family: var(--font-mono), monospace;
28
+ font-variant-numeric: tabular-nums;
29
+ }
30
+ .chip-module_chip--uppercase__bLI8t {
31
+ font-weight: 700;
32
+ letter-spacing: 0.06em;
33
+ text-transform: uppercase;
34
+ }
35
+ .chip-module_chip--rounded__epRJb {
36
+ border-radius: var(--radius-xs);
37
+ }
38
+ .chip-module_chip--dashed__trSp1 {
39
+ border-style: dashed;
40
+ }
41
+ .chip-module_chip--2xs__GJtZF {
42
+ font-size: 0.56rem;
43
+ padding: 0 0.25rem;
44
+ }
45
+ .chip-module_chip--2xs__GJtZF > svg {
46
+ height: 0.6rem;
47
+ width: 0.6rem;
48
+ }
49
+ .chip-module_chip--2xs__GJtZF:has(> svg) {
50
+ padding: 0 0.2rem;
51
+ }
52
+ .chip-module_chip--xs__Smd5u {
53
+ font-size: 0.66rem;
54
+ padding: 0.1rem 0.4rem;
55
+ }
56
+ .chip-module_chip--xs__Smd5u > svg {
57
+ height: 0.7rem;
58
+ width: 0.7rem;
59
+ }
60
+ .chip-module_chip--xs__Smd5u:has(> svg) {
61
+ padding: 0.1rem 0.32rem;
62
+ }
25
63
  .chip-module_chip--sm___bJkU {
26
64
  font-size: 0.72rem;
27
65
  padding: 0.15rem 0.5rem;
@@ -44,12 +82,14 @@
44
82
  .chip-module_chip--md__N7LAU:has(> svg) {
45
83
  padding: 0.25rem 0.55rem;
46
84
  }
47
- .chip-module_chip__u4PJ9.chip-module_chip--inherit__HjU_P {
48
- border-color: currentColor;
49
- color: currentColor;
50
- }
51
- .chip-module_chip__u4PJ9.chip-module_chip--inherit__HjU_P:hover {
52
- background-color: var(--themed-hover, var(--action-hover));
85
+ .chip-module_chip__u4PJ9 {
86
+ /**
87
+ * Each theme resolves four roles. Every one is written as
88
+ * `var(--chip-color, <token>)`, so setting a single `--chip-color` on the
89
+ * element overrides the whole set — that is the escape hatch for a colour
90
+ * the theme scale does not have (a diet marker, a category hue), without
91
+ * needing a bespoke component.
92
+ */
53
93
  }
54
94
  .chip-module_chip__u4PJ9.chip-module_chip--primary__kBS6M {
55
95
  --themed-main: var(--primary-main);
@@ -62,12 +102,10 @@
62
102
  --themed-focus-visible: var(--primary-focus-visible);
63
103
  --themed-outlined-border: var(--primary-outlined-border);
64
104
  --themed-selected: var(--primary-selected);
65
- background-color: color-mix(in srgb, var(--primary-hover) 20%, transparent);
66
- border-color: var(--primary-outlined-border);
67
- color: var(--primary-outlined-border);
68
- }
69
- .chip-module_chip__u4PJ9.chip-module_chip--primary__kBS6M:hover {
70
- background-color: color-mix(in srgb, var(--primary-hover) 40%, transparent);
105
+ --chip-ink: var(--chip-color, var(--primary-outlined-border));
106
+ --chip-fill: var(--chip-color, var(--primary-main));
107
+ --chip-wash: var(--chip-color, var(--primary-hover));
108
+ --chip-on-fill: var(--primary-contrast);
71
109
  }
72
110
  .chip-module_chip__u4PJ9.chip-module_chip--secondary__eyfdz {
73
111
  --themed-main: var(--secondary-main);
@@ -80,12 +118,10 @@
80
118
  --themed-focus-visible: var(--secondary-focus-visible);
81
119
  --themed-outlined-border: var(--secondary-outlined-border);
82
120
  --themed-selected: var(--secondary-selected);
83
- background-color: color-mix(in srgb, var(--secondary-hover) 20%, transparent);
84
- border-color: var(--secondary-outlined-border);
85
- color: var(--secondary-outlined-border);
86
- }
87
- .chip-module_chip__u4PJ9.chip-module_chip--secondary__eyfdz:hover {
88
- background-color: color-mix(in srgb, var(--secondary-hover) 40%, transparent);
121
+ --chip-ink: var(--chip-color, var(--secondary-outlined-border));
122
+ --chip-fill: var(--chip-color, var(--secondary-main));
123
+ --chip-wash: var(--chip-color, var(--secondary-hover));
124
+ --chip-on-fill: var(--secondary-contrast);
89
125
  }
90
126
  .chip-module_chip__u4PJ9.chip-module_chip--destructive__80JrW {
91
127
  --themed-main: var(--destructive-main);
@@ -98,12 +134,10 @@
98
134
  --themed-focus-visible: var(--destructive-focus-visible);
99
135
  --themed-outlined-border: var(--destructive-outlined-border);
100
136
  --themed-selected: var(--destructive-selected);
101
- background-color: color-mix(in srgb, var(--destructive-hover) 20%, transparent);
102
- border-color: var(--destructive-outlined-border);
103
- color: var(--destructive-outlined-border);
104
- }
105
- .chip-module_chip__u4PJ9.chip-module_chip--destructive__80JrW:hover {
106
- background-color: color-mix(in srgb, var(--destructive-hover) 40%, transparent);
137
+ --chip-ink: var(--chip-color, var(--destructive-outlined-border));
138
+ --chip-fill: var(--chip-color, var(--destructive-main));
139
+ --chip-wash: var(--chip-color, var(--destructive-hover));
140
+ --chip-on-fill: var(--destructive-contrast);
107
141
  }
108
142
  .chip-module_chip__u4PJ9.chip-module_chip--warning__3oxvl {
109
143
  --themed-main: var(--warning-main);
@@ -116,12 +150,10 @@
116
150
  --themed-focus-visible: var(--warning-focus-visible);
117
151
  --themed-outlined-border: var(--warning-outlined-border);
118
152
  --themed-selected: var(--warning-selected);
119
- background-color: color-mix(in srgb, var(--warning-hover) 20%, transparent);
120
- border-color: var(--warning-outlined-border);
121
- color: var(--warning-outlined-border);
122
- }
123
- .chip-module_chip__u4PJ9.chip-module_chip--warning__3oxvl:hover {
124
- background-color: color-mix(in srgb, var(--warning-hover) 40%, transparent);
153
+ --chip-ink: var(--chip-color, var(--warning-outlined-border));
154
+ --chip-fill: var(--chip-color, var(--warning-main));
155
+ --chip-wash: var(--chip-color, var(--warning-hover));
156
+ --chip-on-fill: var(--warning-contrast);
125
157
  }
126
158
  .chip-module_chip__u4PJ9.chip-module_chip--success__VF1tZ {
127
159
  --themed-main: var(--success-main);
@@ -134,12 +166,10 @@
134
166
  --themed-focus-visible: var(--success-focus-visible);
135
167
  --themed-outlined-border: var(--success-outlined-border);
136
168
  --themed-selected: var(--success-selected);
137
- background-color: color-mix(in srgb, var(--success-hover) 20%, transparent);
138
- border-color: var(--success-outlined-border);
139
- color: var(--success-outlined-border);
140
- }
141
- .chip-module_chip__u4PJ9.chip-module_chip--success__VF1tZ:hover {
142
- background-color: color-mix(in srgb, var(--success-hover) 40%, transparent);
169
+ --chip-ink: var(--chip-color, var(--success-outlined-border));
170
+ --chip-fill: var(--chip-color, var(--success-main));
171
+ --chip-wash: var(--chip-color, var(--success-hover));
172
+ --chip-on-fill: var(--success-contrast);
143
173
  }
144
174
  .chip-module_chip__u4PJ9.chip-module_chip--info__Jgnsc {
145
175
  --themed-main: var(--info-main);
@@ -152,12 +182,10 @@
152
182
  --themed-focus-visible: var(--info-focus-visible);
153
183
  --themed-outlined-border: var(--info-outlined-border);
154
184
  --themed-selected: var(--info-selected);
155
- background-color: color-mix(in srgb, var(--info-hover) 20%, transparent);
156
- border-color: var(--info-outlined-border);
157
- color: var(--info-outlined-border);
158
- }
159
- .chip-module_chip__u4PJ9.chip-module_chip--info__Jgnsc:hover {
160
- background-color: color-mix(in srgb, var(--info-hover) 40%, transparent);
185
+ --chip-ink: var(--chip-color, var(--info-outlined-border));
186
+ --chip-fill: var(--chip-color, var(--info-main));
187
+ --chip-wash: var(--chip-color, var(--info-hover));
188
+ --chip-on-fill: var(--info-contrast);
161
189
  }
162
190
  .chip-module_chip__u4PJ9.chip-module_chip--slate__vmQ7R {
163
191
  --themed-main: var(--slate-main);
@@ -170,10 +198,32 @@
170
198
  --themed-focus-visible: var(--slate-focus-visible);
171
199
  --themed-outlined-border: var(--slate-outlined-border);
172
200
  --themed-selected: var(--slate-selected);
173
- background-color: color-mix(in srgb, var(--slate-hover) 20%, transparent);
174
- border-color: var(--slate-outlined-border);
175
- color: var(--slate-outlined-border);
201
+ --chip-ink: var(--chip-color, var(--slate-outlined-border));
202
+ --chip-fill: var(--chip-color, var(--slate-main));
203
+ --chip-wash: var(--chip-color, var(--slate-hover));
204
+ --chip-on-fill: var(--slate-contrast);
176
205
  }
177
- .chip-module_chip__u4PJ9.chip-module_chip--slate__vmQ7R:hover {
178
- background-color: color-mix(in srgb, var(--slate-hover) 40%, transparent);
206
+ .chip-module_chip__u4PJ9.chip-module_chip--inherit__HjU_P {
207
+ --chip-ink: var(--chip-color, currentColor);
208
+ --chip-fill: var(--chip-color, currentColor);
209
+ --chip-wash: var(--chip-color, var(--themed-hover, var(--action-hover)));
210
+ --chip-on-fill: var(--themed-contrast, var(--background-default));
211
+ }
212
+ .chip-module_chip--soft__zYBtU {
213
+ background-color: color-mix(in srgb, var(--chip-wash) 20%, transparent);
214
+ border-color: var(--chip-ink);
215
+ color: var(--chip-ink);
216
+ }
217
+ .chip-module_chip--soft__zYBtU:hover {
218
+ background-color: color-mix(in srgb, var(--chip-wash) 40%, transparent);
219
+ }
220
+ .chip-module_chip--outline__TO-HF {
221
+ background-color: transparent;
222
+ border-color: color-mix(in srgb, var(--chip-ink) 55%, transparent);
223
+ color: var(--chip-ink);
224
+ }
225
+ .chip-module_chip--solid__F89cD {
226
+ background-color: var(--chip-fill);
227
+ border-color: var(--chip-fill);
228
+ color: var(--chip-on-fill);
179
229
  }
@@ -2,7 +2,21 @@ import { type VariantProps } from 'class-variance-authority';
2
2
  import * as React from 'react';
3
3
  import { chipVariants } from './chip-variants';
4
4
  export interface ChipProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof chipVariants> {
5
+ /**
6
+ * Any colour outside the theme scale — a category hue, a dietary marker.
7
+ * Overrides the whole set of colour roles the theme would otherwise supply,
8
+ * so one value is enough for every `variant`.
9
+ */
10
+ color?: string;
5
11
  }
12
+ /**
13
+ * A small status marker.
14
+ *
15
+ * `variant` chooses how much weight it carries: `soft` (a tinted fill, the
16
+ * default) reads as ambient, `outline` recedes further, and `solid` is a claim.
17
+ * `dashed` marks the value as provisional — a guess rather than a reading —
18
+ * which is a distinction worth drawing without spending a second colour on it.
19
+ */
6
20
  declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLSpanElement>>;
7
21
  export { Chip };
8
22
  //# sourceMappingURL=chip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chip.d.ts","sourceRoot":"","sources":["../../../src/ui/Chip/chip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,SACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,OAAO,YAAY,CAAC;CAAG;AAErF,QAAA,MAAM,IAAI,mFAaT,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"chip.d.ts","sourceRoot":"","sources":["../../../src/ui/Chip/chip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,SACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,OAAO,YAAY,CAAC;IAChF;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,IAAI,mFAkCT,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -4,8 +4,16 @@ import * as React from 'react';
4
4
  import { withAriaHiddenChildren } from '../../internal/with-aria-hidden-children.js';
5
5
  import { chipVariants } from './chip-variants.js';
6
6
 
7
- const Chip = React.forwardRef(({ className, size, theme, wrap, children, ...props }, ref) => {
8
- return (jsx("span", { "data-slot": 'chip', ref: ref, className: cn(chipVariants({ size, theme, wrap }), className), ...props, children: withAriaHiddenChildren(children) }));
7
+ /**
8
+ * A small status marker.
9
+ *
10
+ * `variant` chooses how much weight it carries: `soft` (a tinted fill, the
11
+ * default) reads as ambient, `outline` recedes further, and `solid` is a claim.
12
+ * `dashed` marks the value as provisional — a guess rather than a reading —
13
+ * which is a distinction worth drawing without spending a second colour on it.
14
+ */
15
+ const Chip = React.forwardRef(({ className, size, theme, variant, shape, dashed, mono, uppercase, wrap, color, style, children, ...props }, ref) => {
16
+ return (jsx("span", { "data-slot": 'chip', ref: ref, className: cn(chipVariants({ size, theme, variant, shape, dashed, mono, uppercase, wrap }), className), style: color ? { ...style, '--chip-color': color } : style, ...props, children: withAriaHiddenChildren(children) }));
9
17
  });
10
18
  Chip.displayName = 'Chip';
11
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"chip.js","sources":["../../../src/ui/Chip/chip.tsx"],"sourcesContent":["import { type VariantProps } from 'class-variance-authority';\nimport cn from 'clsx';\nimport * as React from 'react';\nimport { withAriaHiddenChildren } from '../../internal/with-aria-hidden-children';\nimport { chipVariants } from './chip-variants';\n\nexport interface ChipProps\n extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof chipVariants> {}\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n ({ className, size, theme, wrap, children, ...props }, ref) => {\n return (\n <span\n data-slot={'chip'}\n ref={ref}\n className={cn(chipVariants({ size, theme, wrap }), className)}\n {...props}\n >\n {withAriaHiddenChildren(children)}\n </span>\n );\n },\n);\nChip.displayName = 'Chip';\n\nexport { Chip };\n"],"names":["_jsx"],"mappings":";;;;;;AASA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAC3B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AAC5D,IAAA,QACEA,GAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EACa,MAAM,EACjB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAA,GACzD,KAAK,EAAA,QAAA,EAER,sBAAsB,CAAC,QAAQ,CAAC,EAAA,CAC5B;AAEX,CAAC;AAEH,IAAI,CAAC,WAAW,GAAG,MAAM;;"}
1
+ {"version":3,"file":"chip.js","sources":["../../../src/ui/Chip/chip.tsx"],"sourcesContent":["import { type VariantProps } from 'class-variance-authority';\nimport cn from 'clsx';\nimport * as React from 'react';\nimport { withAriaHiddenChildren } from '../../internal/with-aria-hidden-children';\nimport { chipVariants } from './chip-variants';\n\nexport interface ChipProps\n extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof chipVariants> {\n /**\n * Any colour outside the theme scale — a category hue, a dietary marker.\n * Overrides the whole set of colour roles the theme would otherwise supply,\n * so one value is enough for every `variant`.\n */\n color?: string;\n}\n\n/**\n * A small status marker.\n *\n * `variant` chooses how much weight it carries: `soft` (a tinted fill, the\n * default) reads as ambient, `outline` recedes further, and `solid` is a claim.\n * `dashed` marks the value as provisional — a guess rather than a reading —\n * which is a distinction worth drawing without spending a second colour on it.\n */\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n className,\n size,\n theme,\n variant,\n shape,\n dashed,\n mono,\n uppercase,\n wrap,\n color,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <span\n data-slot={'chip'}\n ref={ref}\n className={cn(\n chipVariants({ size, theme, variant, shape, dashed, mono, uppercase, wrap }),\n className,\n )}\n style={color ? ({ ...style, '--chip-color': color } as React.CSSProperties) : style}\n {...props}\n >\n {withAriaHiddenChildren(children)}\n </span>\n );\n },\n);\nChip.displayName = 'Chip';\n\nexport { Chip };\n"],"names":["_jsx"],"mappings":";;;;;;AAgBA;;;;;;;AAOG;AACH,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAC3B,CACE,EACE,SAAS,EACT,IAAI,EACJ,KAAK,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,QACEA,GAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EACa,MAAM,EACjB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAC5E,SAAS,CACV,EACD,KAAK,EAAE,KAAK,GAAI,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,KAAK,EAA0B,GAAG,KAAK,EAAA,GAC/E,KAAK,EAAA,QAAA,EAER,sBAAsB,CAAC,QAAQ,CAAC,EAAA,CAC5B;AAEX,CAAC;AAEH,IAAI,CAAC,WAAW,GAAG,MAAM;;"}
@@ -1,6 +1,6 @@
1
1
  import './chip.css';
2
2
 
3
- var s = {"chip":"chip-module_chip__u4PJ9","chip--wrap":"chip-module_chip--wrap__YvZ3D","chip--sm":"chip-module_chip--sm___bJkU","chip--md":"chip-module_chip--md__N7LAU","chip--inherit":"chip-module_chip--inherit__HjU_P","chip--primary":"chip-module_chip--primary__kBS6M","chip--secondary":"chip-module_chip--secondary__eyfdz","chip--destructive":"chip-module_chip--destructive__80JrW","chip--warning":"chip-module_chip--warning__3oxvl","chip--success":"chip-module_chip--success__VF1tZ","chip--info":"chip-module_chip--info__Jgnsc","chip--slate":"chip-module_chip--slate__vmQ7R"};
3
+ var s = {"chip":"chip-module_chip__u4PJ9","chip--wrap":"chip-module_chip--wrap__YvZ3D","chip--mono":"chip-module_chip--mono__SMCPR","chip--uppercase":"chip-module_chip--uppercase__bLI8t","chip--rounded":"chip-module_chip--rounded__epRJb","chip--dashed":"chip-module_chip--dashed__trSp1","chip--2xs":"chip-module_chip--2xs__GJtZF","chip--xs":"chip-module_chip--xs__Smd5u","chip--sm":"chip-module_chip--sm___bJkU","chip--md":"chip-module_chip--md__N7LAU","chip--primary":"chip-module_chip--primary__kBS6M","chip--secondary":"chip-module_chip--secondary__eyfdz","chip--destructive":"chip-module_chip--destructive__80JrW","chip--warning":"chip-module_chip--warning__3oxvl","chip--success":"chip-module_chip--success__VF1tZ","chip--info":"chip-module_chip--info__Jgnsc","chip--slate":"chip-module_chip--slate__vmQ7R","chip--inherit":"chip-module_chip--inherit__HjU_P","chip--soft":"chip-module_chip--soft__zYBtU","chip--outline":"chip-module_chip--outline__TO-HF","chip--solid":"chip-module_chip--solid__F89cD"};
4
4
 
5
5
  export { s as default };
6
6
  //# sourceMappingURL=chip.module.scss.js.map
@@ -0,0 +1,3 @@
1
+ export * from './status-dot';
2
+ export * from './status-dot-variants';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/StatusDot/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const statusDotVariants: (props?: ({
2
+ theme?: "inherit" | "primary" | "secondary" | "destructive" | "warning" | "success" | "info" | "slate" | null | undefined;
3
+ size?: "sm" | "md" | "lg" | null | undefined;
4
+ glow?: boolean | null | undefined;
5
+ pulse?: boolean | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ //# sourceMappingURL=status-dot-variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-dot-variants.d.ts","sourceRoot":"","sources":["../../../src/ui/StatusDot/status-dot-variants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB;;;;;8EAqB5B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { cva } from 'class-variance-authority';
2
+ import s from './status-dot.module.scss.js';
3
+
4
+ const statusDotVariants = cva(s['status-dot'], {
5
+ variants: {
6
+ theme: {
7
+ primary: s['status-dot--primary'],
8
+ secondary: s['status-dot--secondary'],
9
+ destructive: s['status-dot--destructive'],
10
+ warning: s['status-dot--warning'],
11
+ success: s['status-dot--success'],
12
+ info: s['status-dot--info'],
13
+ slate: s['status-dot--slate'],
14
+ inherit: s['status-dot--inherit'],
15
+ },
16
+ size: {
17
+ sm: s['status-dot--sm'],
18
+ md: s['status-dot--md'],
19
+ lg: s['status-dot--lg'],
20
+ },
21
+ glow: { true: s['status-dot--glow'] },
22
+ pulse: { true: s['status-dot--pulse'] },
23
+ },
24
+ defaultVariants: { theme: 'slate', size: 'md', glow: false, pulse: false },
25
+ });
26
+
27
+ export { statusDotVariants };
28
+ //# sourceMappingURL=status-dot-variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-dot-variants.js","sources":["../../../src/ui/StatusDot/status-dot-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport s from './status-dot.module.scss';\n\nexport const statusDotVariants = cva(s['status-dot'], {\n variants: {\n theme: {\n primary: s['status-dot--primary'],\n secondary: s['status-dot--secondary'],\n destructive: s['status-dot--destructive'],\n warning: s['status-dot--warning'],\n success: s['status-dot--success'],\n info: s['status-dot--info'],\n slate: s['status-dot--slate'],\n inherit: s['status-dot--inherit'],\n },\n size: {\n sm: s['status-dot--sm'],\n md: s['status-dot--md'],\n lg: s['status-dot--lg'],\n },\n glow: { true: s['status-dot--glow'] },\n pulse: { true: s['status-dot--pulse'] },\n },\n defaultVariants: { theme: 'slate', size: 'md', glow: false, pulse: false },\n});\n"],"names":[],"mappings":";;;AAGO,MAAM,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;AACpD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,CAAC,CAAC,qBAAqB,CAAC;AACjC,YAAA,SAAS,EAAE,CAAC,CAAC,uBAAuB,CAAC;AACrC,YAAA,WAAW,EAAE,CAAC,CAAC,yBAAyB,CAAC;AACzC,YAAA,OAAO,EAAE,CAAC,CAAC,qBAAqB,CAAC;AACjC,YAAA,OAAO,EAAE,CAAC,CAAC,qBAAqB,CAAC;AACjC,YAAA,IAAI,EAAE,CAAC,CAAC,kBAAkB,CAAC;AAC3B,YAAA,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC;AAC7B,YAAA,OAAO,EAAE,CAAC,CAAC,qBAAqB,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC;AACvB,YAAA,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC;AACvB,YAAA,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC;AACxB,SAAA;QACD,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE;QACrC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE;AACxC,KAAA;AACD,IAAA,eAAe,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3E,CAAA;;"}
@@ -0,0 +1,61 @@
1
+ .status-dot-module_status-dot__MoSd6 {
2
+ background-color: var(--dot-color);
3
+ border-radius: 50%;
4
+ display: inline-block;
5
+ flex-shrink: 0;
6
+ height: var(--dot-size);
7
+ width: var(--dot-size);
8
+ }
9
+ .status-dot-module_status-dot--primary__DoTcY {
10
+ --dot-color: var(--primary-main);
11
+ }
12
+ .status-dot-module_status-dot--secondary__pnRMx {
13
+ --dot-color: var(--secondary-main);
14
+ }
15
+ .status-dot-module_status-dot--destructive__z-jPU {
16
+ --dot-color: var(--destructive-main);
17
+ }
18
+ .status-dot-module_status-dot--warning__ZFtBS {
19
+ --dot-color: var(--warning-main);
20
+ }
21
+ .status-dot-module_status-dot--success__cYB5i {
22
+ --dot-color: var(--success-main);
23
+ }
24
+ .status-dot-module_status-dot--info__sAXNn {
25
+ --dot-color: var(--info-main);
26
+ }
27
+ .status-dot-module_status-dot--slate__bapda {
28
+ --dot-color: var(--slate-main);
29
+ }
30
+ .status-dot-module_status-dot--inherit__6o2O9 {
31
+ --dot-color: currentColor;
32
+ }
33
+ .status-dot-module_status-dot--sm__lPs5V {
34
+ --dot-size: 5px;
35
+ }
36
+ .status-dot-module_status-dot--md__CELtX {
37
+ --dot-size: 6px;
38
+ }
39
+ .status-dot-module_status-dot--lg__7M2z0 {
40
+ --dot-size: 9px;
41
+ }
42
+ .status-dot-module_status-dot--glow__Tbf-5 {
43
+ box-shadow: 0 0 8px var(--dot-color);
44
+ }
45
+ .status-dot-module_status-dot--pulse__Vw5aP {
46
+ animation: status-dot-module_status-dot-pulse__zH12Y 1.5s ease-in-out infinite;
47
+ }
48
+
49
+ @keyframes status-dot-module_status-dot-pulse__zH12Y {
50
+ 0%, 100% {
51
+ opacity: 1;
52
+ }
53
+ 50% {
54
+ opacity: 0.35;
55
+ }
56
+ }
57
+ @media (prefers-reduced-motion: reduce) {
58
+ .status-dot-module_status-dot--pulse__Vw5aP {
59
+ animation: none;
60
+ }
61
+ }
@@ -0,0 +1,23 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ import { statusDotVariants } from './status-dot-variants';
4
+ export interface StatusDotProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>, VariantProps<typeof statusDotVariants> {
5
+ /** A colour outside the theme scale. */
6
+ color?: string;
7
+ /** Accessible name. Omit only when adjacent text already says the state. */
8
+ label?: string;
9
+ }
10
+ /**
11
+ * The dot that says what state a connection or process is in.
12
+ *
13
+ * Deliberately not a `Chip`: a chip is a bordered object that holds a word,
14
+ * where this is a single mark that usually sits *beside* one. Pairing it with
15
+ * text is the caller's job, which keeps the wording — and its translation —
16
+ * out of here.
17
+ *
18
+ * `glow` is for the state worth catching in peripheral vision (a save landing);
19
+ * `pulse` for one that is still in flight.
20
+ */
21
+ declare const StatusDot: React.ForwardRefExoticComponent<StatusDotProps & React.RefAttributes<HTMLSpanElement>>;
22
+ export { StatusDot };
23
+ //# sourceMappingURL=status-dot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-dot.d.ts","sourceRoot":"","sources":["../../../src/ui/StatusDot/status-dot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,cACf,SACE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,EACpD,YAAY,CAAC,OAAO,iBAAiB,CAAC;IACxC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,SAAS,wFAed,CAAC;AAGF,OAAO,EAAE,SAAS,EAAE,CAAC"}