@spear-ai/spectral 1.20.0 → 1.20.2

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 (117) hide show
  1. package/dist/Accordion.js +0 -4
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/Alert/AlertBase.d.ts +0 -1
  4. package/dist/Alert/AlertBase.d.ts.map +1 -1
  5. package/dist/Alert/AlertBase.js +14 -17
  6. package/dist/Alert/AlertBase.js.map +1 -1
  7. package/dist/Alert.js +16 -4
  8. package/dist/Alert.js.map +1 -1
  9. package/dist/AlertDialog.js +3 -3
  10. package/dist/AlertDialog.js.map +1 -1
  11. package/dist/Avatar.js +1 -9
  12. package/dist/Avatar.js.map +1 -1
  13. package/dist/Badge.js +0 -1
  14. package/dist/Badge.js.map +1 -1
  15. package/dist/Button.js +0 -3
  16. package/dist/Button.js.map +1 -1
  17. package/dist/ButtonGroup.js +0 -4
  18. package/dist/ButtonGroup.js.map +1 -1
  19. package/dist/ButtonIcon.js +0 -1
  20. package/dist/ButtonIcon.js.map +1 -1
  21. package/dist/ButtonIconSlideout.js +0 -3
  22. package/dist/ButtonIconSlideout.js.map +1 -1
  23. package/dist/Checkbox.d.ts.map +1 -1
  24. package/dist/Checkbox.js +5 -8
  25. package/dist/Checkbox.js.map +1 -1
  26. package/dist/Combobox.d.ts +1 -0
  27. package/dist/Combobox.d.ts.map +1 -1
  28. package/dist/Combobox.js +0 -4
  29. package/dist/Combobox.js.map +1 -1
  30. package/dist/ControlGroup/ControlGroupSelect.js +0 -5
  31. package/dist/ControlGroup/ControlGroupSelect.js.map +1 -1
  32. package/dist/DataCard/Card.js +0 -6
  33. package/dist/DataCard/Card.js.map +1 -1
  34. package/dist/DataCard.js +1 -7
  35. package/dist/DataCard.js.map +1 -1
  36. package/dist/DateTimePicker/Calendar.js +0 -1
  37. package/dist/DateTimePicker/Calendar.js.map +1 -1
  38. package/dist/DateTimePicker/DateTimeInput.js +0 -1
  39. package/dist/DateTimePicker/DateTimeInput.js.map +1 -1
  40. package/dist/DateTimePicker/TimePeriodSelect.js +0 -4
  41. package/dist/DateTimePicker/TimePeriodSelect.js.map +1 -1
  42. package/dist/DateTimePicker/TimePicker.js +0 -3
  43. package/dist/DateTimePicker/TimePicker.js.map +1 -1
  44. package/dist/DateTimePicker.js +0 -4
  45. package/dist/DateTimePicker.js.map +1 -1
  46. package/dist/Dialog.js +0 -16
  47. package/dist/Dialog.js.map +1 -1
  48. package/dist/DirectionalColorWheel/DirectionalColorWheelDisclosure.js +0 -2
  49. package/dist/DirectionalColorWheel/DirectionalColorWheelDisclosure.js.map +1 -1
  50. package/dist/DirectionalColorWheel/DirectionalColorWheelGlyph.js +0 -1
  51. package/dist/DirectionalColorWheel/DirectionalColorWheelGlyph.js.map +1 -1
  52. package/dist/DirectionalColorWheel.js +9 -21
  53. package/dist/DirectionalColorWheel.js.map +1 -1
  54. package/dist/Drawer.js +6 -29
  55. package/dist/Drawer.js.map +1 -1
  56. package/dist/DropdownMenu.js +1 -9
  57. package/dist/DropdownMenu.js.map +1 -1
  58. package/dist/FormFieldMessage.js +0 -1
  59. package/dist/FormFieldMessage.js.map +1 -1
  60. package/dist/HoverCard.js +0 -3
  61. package/dist/HoverCard.js.map +1 -1
  62. package/dist/Input.js +0 -10
  63. package/dist/Input.js.map +1 -1
  64. package/dist/InputOTP.js +0 -4
  65. package/dist/InputOTP.js.map +1 -1
  66. package/dist/InputSearch.js +3 -15
  67. package/dist/InputSearch.js.map +1 -1
  68. package/dist/Kbd.js +0 -2
  69. package/dist/Kbd.js.map +1 -1
  70. package/dist/Meter.d.ts +23 -0
  71. package/dist/Meter.d.ts.map +1 -0
  72. package/dist/Meter.js +45 -0
  73. package/dist/Meter.js.map +1 -0
  74. package/dist/MultiSelect/MultiSelectBase.js +1 -16
  75. package/dist/MultiSelect/MultiSelectBase.js.map +1 -1
  76. package/dist/Popover.js +0 -3
  77. package/dist/Popover.js.map +1 -1
  78. package/dist/RadialMenu.js +1 -7
  79. package/dist/RadialMenu.js.map +1 -1
  80. package/dist/RadioButtonGroup/RadioButtonGroupBase.d.ts.map +1 -1
  81. package/dist/RadioButtonGroup/RadioButtonGroupBase.js +1 -4
  82. package/dist/RadioButtonGroup/RadioButtonGroupBase.js.map +1 -1
  83. package/dist/RadioButtonGroup.js +1 -1
  84. package/dist/RadioButtonGroup.js.map +1 -1
  85. package/dist/RadioGroup.js +0 -6
  86. package/dist/RadioGroup.js.map +1 -1
  87. package/dist/Select.js +11 -40
  88. package/dist/Select.js.map +1 -1
  89. package/dist/Slider.js +2 -11
  90. package/dist/Slider.js.map +1 -1
  91. package/dist/Switch.js +0 -6
  92. package/dist/Switch.js.map +1 -1
  93. package/dist/Tabs/TabsBase.js +0 -5
  94. package/dist/Tabs/TabsBase.js.map +1 -1
  95. package/dist/Textarea.js +0 -4
  96. package/dist/Textarea.js.map +1 -1
  97. package/dist/Toast.js +1 -3
  98. package/dist/Toast.js.map +1 -1
  99. package/dist/Toggle.js +0 -1
  100. package/dist/Toggle.js.map +1 -1
  101. package/dist/ToggleGroup/ToggleGroupItem.js +0 -1
  102. package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
  103. package/dist/ToggleGroup.js +0 -1
  104. package/dist/ToggleGroup.js.map +1 -1
  105. package/dist/Tooltip.d.ts.map +1 -1
  106. package/dist/Tooltip.js +4 -5
  107. package/dist/Tooltip.js.map +1 -1
  108. package/dist/Tray.js +1 -9
  109. package/dist/Tray.js.map +1 -1
  110. package/dist/index.d.ts +2 -1
  111. package/dist/index.js +2 -1
  112. package/dist/styles/horizon/base.css +31 -16
  113. package/dist/styles/horizon/colors.css +37 -21
  114. package/dist/styles/horizon/theme.css +15 -7
  115. package/dist/styles/horizon/utilities.css +19 -45
  116. package/dist/styles/spectral.css +1 -1
  117. package/package.json +4 -1
package/dist/Tray.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Tray.js","names":["TrayBase"],"sources":["../src/components/Tray/Tray.tsx"],"sourcesContent":["import { ButtonIcon } from '@components/ButtonIcon/ButtonIcon'\nimport { CloseIcon } from '@components/Icons'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { AnimatePresence, motion } from 'motion/react'\nimport { createContext, useContext, useMemo, useRef, type ComponentPropsWithoutRef, type ReactNode, type Ref } from 'react'\nimport { Drawer as TrayBase } from 'vaul'\n\nconst TrayContentVariants = cva('bottom-4 rounded-2xl sm:max-md:max-w-full fixed left-1/2 z-10 w-full -translate-x-1/2 overflow-hidden bg-drawer-bg outline-none', {\n variants: {\n size: {\n sm: 'max-w-[400px]',\n md: 'max-w-[600px]',\n lg: 'max-w-[800px]',\n full: 'max-w-full',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n})\n\ninterface TrayContextValue {\n animationKey: string | number\n setAnimationKey: (key: string | number) => void\n size: 'sm' | 'md' | 'lg' | 'full'\n}\n\nconst TrayContext = createContext<TrayContextValue | undefined>(undefined)\n\nconst useTrayContext = () => {\n const context = useContext(TrayContext)\n if (!context) {\n throw new Error('Tray components must be used within Tray root')\n }\n return context\n}\n\nexport type TrayBaseProps = ComponentPropsWithoutRef<typeof TrayBase.Root> & {\n children?: ReactNode\n size?: 'sm' | 'md' | 'lg' | 'full'\n}\n\nexport const Tray = ({ children, size = 'sm', ...props }: TrayBaseProps) => {\n const animationKeyRef = useRef<string | number>('default')\n\n const contextValue = useMemo(\n () => ({\n animationKey: animationKeyRef.current,\n setAnimationKey: (key: string | number) => {\n animationKeyRef.current = key\n },\n size,\n }),\n [size],\n )\n\n return (\n <TrayContext.Provider value={contextValue}>\n <TrayBase.Root data-testid='spectral-tray' {...props}>\n {children}\n </TrayBase.Root>\n </TrayContext.Provider>\n )\n}\nTray.displayName = 'Tray'\n\nexport const TrayTrigger = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<typeof TrayBase.Trigger> & {\n ref?: Ref<HTMLButtonElement>\n}) => <TrayBase.Trigger className={cn(className)} data-testid='spectral-tray-trigger' data-vaul-no-drag='' ref={ref} {...props} />\nTrayTrigger.displayName = 'TrayTrigger'\n\nexport const TrayClose = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<typeof TrayBase.Close> & {\n ref?: Ref<HTMLButtonElement>\n}) => (\n <TrayBase.Close asChild className={cn(className)} data-testid='spectral-tray-close' data-vaul-no-drag='' ref={ref} {...props}>\n <CloseIcon />\n </TrayBase.Close>\n)\nTrayClose.displayName = 'TrayClose'\n\nconst TrayOverlay = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<typeof TrayBase.Overlay> & {\n ref?: Ref<HTMLDivElement>\n}) => <TrayBase.Overlay className={cn('inset-0 fixed z-10 bg-overlay', className)} ref={ref} {...props} />\nTrayOverlay.displayName = 'TrayOverlay'\n\nexport type TrayContentProps = ComponentPropsWithoutRef<typeof TrayBase.Content> &\n VariantProps<typeof TrayContentVariants> & {\n /** Accessible label for the tray (used when no visible `TrayTitle` is provided). */\n 'aria-label'?: string\n children?: ReactNode\n }\n\nexport const TrayContent = ({\n 'aria-label': ariaLabel,\n children,\n className,\n ref,\n size: sizeProp,\n ...props\n}: TrayContentProps & {\n ref?: Ref<HTMLDivElement>\n}) => {\n const { size: contextSize } = useTrayContext()\n const size = sizeProp ?? contextSize\n\n return (\n <TrayBase.Portal>\n <TrayOverlay />\n <TrayBase.Content aria-describedby={undefined} asChild className={cn(TrayContentVariants({ size }), className)} data-testid='spectral-tray-content' ref={ref} {...props}>\n <div>\n <TrayBase.Title className='sr-only'>{ariaLabel ?? 'Tray'}</TrayBase.Title>\n <div className='px-6 pb-6 pt-2.5 antialiased'>\n {children}\n </div>\n </div>\n </TrayBase.Content>\n </TrayBase.Portal>\n )\n}\nTrayContent.displayName = 'TrayContent'\n\nexport const TrayHeader = ({\n children,\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<'div'> & {\n ref?: Ref<HTMLDivElement>\n}) => (\n <div className={cn('relative flex flex-col gap-1.5 pb-4 text-start', className)} data-testid='spectral-tray-header' ref={ref} {...props}>\n {children}\n <TrayClose className='text-neutral-400 hover:text-neutral-100 p-1 top-0 absolute right-[-14px] z-10 cursor-pointer rounded-full transition-colors hover:scale-110 hover:bg-level-four'>\n <ButtonIcon icon={<CloseIcon />} label='Close tray' shape='circle' />\n </TrayClose>\n </div>\n)\nTrayHeader.displayName = 'TrayHeader'\n\nexport const TrayTitle = ({\n children,\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<'h2'> & {\n ref?: Ref<HTMLHeadingElement>\n}) => (\n <h2 className={cn('text-xl font-semibold text-text-primary', className)} data-testid='spectral-tray-title' ref={ref} {...props}>\n {children}\n </h2>\n)\nTrayTitle.displayName = 'TrayTitle'\n\nexport const TraySubtitle = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<'p'> & {\n ref?: Ref<HTMLParagraphElement>\n}) => <p className={cn('text-sm text-text-secondary', className)} data-testid='spectral-tray-subtitle' ref={ref} {...props} />\nTraySubtitle.displayName = 'TraySubtitle'\n\nexport type TrayBodyProps = ComponentPropsWithoutRef<'div'> & {\n animationKey?: string | number\n}\n\nexport const TrayBody = ({\n animationKey: keyProp,\n children,\n className,\n ref,\n ...props\n}: TrayBodyProps & {\n ref?: Ref<HTMLDivElement>\n}) => {\n const { animationKey: contextKey } = useTrayContext()\n const key = keyProp ?? contextKey\n\n return (\n <div ref={ref} data-testid='spectral-tray-body' className={cn(className)} {...props}>\n <AnimatePresence initial={false} mode='wait' custom={key}>\n <motion.div\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.96 }}\n initial={{ opacity: 0, scale: 0.96 }}\n key={key}\n transition={{\n duration: 0.2,\n ease: 'easeOut',\n }}\n >\n {children}\n </motion.div>\n </AnimatePresence>\n </div>\n )\n}\nTrayBody.displayName = 'TrayBody'\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tray.js","names":[],"sources":["../src/components/Tray/Tray.tsx"],"sourcesContent":["import { ButtonIcon } from '@components/ButtonIcon/ButtonIcon'\nimport { CloseIcon } from '@components/Icons'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { AnimatePresence, motion } from 'motion/react'\nimport { createContext, useContext, useMemo, useRef, type ComponentPropsWithoutRef, type ReactNode, type Ref } from 'react'\nimport { Drawer as TrayBase } from 'vaul'\n\nconst TrayContentVariants = cva('bottom-4 rounded-2xl sm:max-md:max-w-full fixed left-1/2 z-10 w-full -translate-x-1/2 overflow-hidden bg-drawer-bg outline-none shadow-elevation-2', {\n variants: {\n size: {\n sm: 'max-w-[400px]',\n md: 'max-w-[600px]',\n lg: 'max-w-[800px]',\n full: 'max-w-full',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n})\n\ninterface TrayContextValue {\n animationKey: string | number\n setAnimationKey: (key: string | number) => void\n size: 'sm' | 'md' | 'lg' | 'full'\n}\n\nconst TrayContext = createContext<TrayContextValue | undefined>(undefined)\n\nconst useTrayContext = () => {\n const context = useContext(TrayContext)\n if (!context) {\n throw new Error('Tray components must be used within Tray root')\n }\n return context\n}\n\nexport type TrayBaseProps = ComponentPropsWithoutRef<typeof TrayBase.Root> & {\n children?: ReactNode\n size?: 'sm' | 'md' | 'lg' | 'full'\n}\n\nexport const Tray = ({ children, size = 'sm', ...props }: TrayBaseProps) => {\n const animationKeyRef = useRef<string | number>('default')\n\n const contextValue = useMemo(\n () => ({\n animationKey: animationKeyRef.current,\n setAnimationKey: (key: string | number) => {\n animationKeyRef.current = key\n },\n size,\n }),\n [size],\n )\n\n return (\n <TrayContext.Provider value={contextValue}>\n <TrayBase.Root data-testid='spectral-tray' {...props}>\n {children}\n </TrayBase.Root>\n </TrayContext.Provider>\n )\n}\nTray.displayName = 'Tray'\n\nexport const TrayTrigger = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<typeof TrayBase.Trigger> & {\n ref?: Ref<HTMLButtonElement>\n}) => <TrayBase.Trigger className={cn(className)} data-testid='spectral-tray-trigger' data-vaul-no-drag='' ref={ref} {...props} />\nTrayTrigger.displayName = 'TrayTrigger'\n\nexport const TrayClose = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<typeof TrayBase.Close> & {\n ref?: Ref<HTMLButtonElement>\n}) => (\n <TrayBase.Close asChild className={cn(className)} data-testid='spectral-tray-close' data-vaul-no-drag='' ref={ref} {...props}>\n <CloseIcon />\n </TrayBase.Close>\n)\nTrayClose.displayName = 'TrayClose'\n\nconst TrayOverlay = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<typeof TrayBase.Overlay> & {\n ref?: Ref<HTMLDivElement>\n}) => <TrayBase.Overlay className={cn('inset-0 fixed z-10 bg-overlay', className)} ref={ref} {...props} />\nTrayOverlay.displayName = 'TrayOverlay'\n\nexport type TrayContentProps = ComponentPropsWithoutRef<typeof TrayBase.Content> &\n VariantProps<typeof TrayContentVariants> & {\n /** Accessible label for the tray (used when no visible `TrayTitle` is provided). */\n 'aria-label'?: string\n children?: ReactNode\n }\n\nexport const TrayContent = ({\n 'aria-label': ariaLabel,\n children,\n className,\n ref,\n size: sizeProp,\n ...props\n}: TrayContentProps & {\n ref?: Ref<HTMLDivElement>\n}) => {\n const { size: contextSize } = useTrayContext()\n const size = sizeProp ?? contextSize\n\n return (\n <TrayBase.Portal>\n <TrayOverlay />\n <TrayBase.Content aria-describedby={undefined} asChild className={cn(TrayContentVariants({ size }), className)} data-testid='spectral-tray-content' ref={ref} {...props}>\n <div>\n <TrayBase.Title className='sr-only'>{ariaLabel ?? 'Tray'}</TrayBase.Title>\n <div className='px-6 pb-6 pt-2.5 antialiased'>\n {children}\n </div>\n </div>\n </TrayBase.Content>\n </TrayBase.Portal>\n )\n}\nTrayContent.displayName = 'TrayContent'\n\nexport const TrayHeader = ({\n children,\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<'div'> & {\n ref?: Ref<HTMLDivElement>\n}) => (\n <div className={cn('relative flex flex-col gap-1.5 pb-4 text-start', className)} data-testid='spectral-tray-header' ref={ref} {...props}>\n {children}\n <TrayClose className='text-neutral-400 hover:text-neutral-100 p-1 top-0 absolute right-[-14px] z-10 cursor-pointer rounded-full transition-colors hover:scale-110 hover:bg-level-four'>\n <ButtonIcon icon={<CloseIcon />} label='Close tray' shape='circle' />\n </TrayClose>\n </div>\n)\nTrayHeader.displayName = 'TrayHeader'\n\nexport const TrayTitle = ({\n children,\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<'h2'> & {\n ref?: Ref<HTMLHeadingElement>\n}) => (\n <h2 className={cn('text-xl font-semibold text-text-primary', className)} data-testid='spectral-tray-title' ref={ref} {...props}>\n {children}\n </h2>\n)\nTrayTitle.displayName = 'TrayTitle'\n\nexport const TraySubtitle = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<'p'> & {\n ref?: Ref<HTMLParagraphElement>\n}) => <p className={cn('text-sm text-text-secondary', className)} data-testid='spectral-tray-subtitle' ref={ref} {...props} />\nTraySubtitle.displayName = 'TraySubtitle'\n\nexport type TrayBodyProps = ComponentPropsWithoutRef<'div'> & {\n animationKey?: string | number\n}\n\nexport const TrayBody = ({\n animationKey: keyProp,\n children,\n className,\n ref,\n ...props\n}: TrayBodyProps & {\n ref?: Ref<HTMLDivElement>\n}) => {\n const { animationKey: contextKey } = useTrayContext()\n const key = keyProp ?? contextKey\n\n return (\n <div ref={ref} data-testid='spectral-tray-body' className={cn(className)} {...props}>\n <AnimatePresence initial={false} mode='wait' custom={key}>\n <motion.div\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.96 }}\n initial={{ opacity: 0, scale: 0.96 }}\n key={key}\n transition={{\n duration: 0.2,\n ease: 'easeOut',\n }}\n >\n {children}\n </motion.div>\n </AnimatePresence>\n </div>\n )\n}\nTrayBody.displayName = 'TrayBody'\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -116,6 +116,7 @@ import { InputOTP, InputOTPBaseProps, InputOTPProps } from "./InputOTP.js";
116
116
  import { InputSearch, InputSearchOption, InputSearchProps } from "./InputSearch.js";
117
117
  import { Kbd, KbdGroup, KbdGroupProps, KbdProps, KbdSymbol } from "./Kbd.js";
118
118
  import { Label, LabelProps } from "./Label.js";
119
+ import { Meter, MeterProps } from "./Meter.js";
119
120
  import { MultiSelect, MultiSelectProps } from "./MultiSelect.js";
120
121
  import { Popover, PopoverAnchor, PopoverContent, PopoverContentProps, PopoverTrigger } from "./Popover.js";
121
122
  import { RadialMenu, RadialMenuItem, RadialMenuProps } from "./RadialMenu.js";
@@ -141,4 +142,4 @@ import { useControllableState } from "./hooks/useControllableState.js";
141
142
  import { useUncontrolledState } from "./hooks/useUncontrolledState.js";
142
143
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea } from "./primitives/input-group.js";
143
144
  import { cn } from "./utils/twUtils.js";
144
- export { Accordion, type AccordionProps, AdjustmentsIcon, Alert, AlertDialog, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, type AlertDialogPopupProps, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, Avatar, type AvatarProps, Badge, type BadgeProps, BoxToolIcon, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupProps, ButtonGroupSeparator, ButtonIcon, type ButtonIconProps, ButtonIconSlideout, type ButtonIconSlideoutProps, type ButtonProps, CalendarIcon, CheckCircleIcon, CheckSquareIcon, Checkbox, type CheckboxProps, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Combobox, type ComboboxOption, type ComboboxProps, ControlGroupSelect, type ControlGroupSelectCaptionLayout, type ControlGroupSelectProps, Crosshairs2Icon, CrosshairsIcon, DEFAULT_DIRECTIONAL_COLOR_STOPS, DashboardIcon, DataCard, type DataCardProps, DatabaseIcon, DateTimePicker, type DateTimePickerProps, DeleteIcon, Dialog, type DirectionalColorStop, DirectionalColorWheel, DirectionalColorWheelDisclosure, type DirectionalColorWheelDisclosurePosition, type DirectionalColorWheelDisclosureProps, DirectionalColorWheelGlyph, type DirectionalColorWheelGlyphProps, type DirectionalColorWheelProps, type DirectionalSectorCount, Drawer, type DrawerProps, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, ErrorMessage, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, type FormFieldMessageValue, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, HoverCard, HoverCardContent, type HoverCardProps, HoverCardTrigger, IconBase, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumeric, type InputNumericProps, InputOTP, type InputOTPBaseProps, type InputOTPProps, type InputProps, InputSearch, type InputSearchOption, type InputSearchProps, IterationArrowIcon, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, type KbdSymbol, KeyboardIcon, Label, LabelIcon, type LabelProps, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, MinimizeIcon, MinusIcon, MultiSelect, type MultiSelectProps, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, Popover, PopoverAnchor, PopoverContent, type PopoverContentProps, PopoverTrigger, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, RadialMenu, type RadialMenuItem, type RadialMenuProps, RadioButton, RadioButtonGroup, RadioButtonGroupItem, type RadioButtonGroupItemProps, type RadioButtonGroupProps, type RadioButtonProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, ResetIcon, ReviewedIcon, SUPPORTED_SECTOR_COUNTS, ScissorsIcon, SearchIcon, Select, type SelectExtendedProps, type SelectProps, Separator, type SeparatorProps, SettingsIcon, Skeleton, Slider, type SliderProps, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, SpectralProvider, type SpectralProviderProps, StackIcon, StarIcon, SvgIdContext, Switch, type SwitchProps, SyncIcon, SyncOffIcon, Tabs, type TabsProps, Textarea, type TextareaProps, Toast, type ToastProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, ToggleGroupSplitMenuItem, type ToggleGroupSplitMenuItemProps, type ToggleProps, Tooltip, TooltipContent, TooltipTrigger, TrashIcon, Tray, type TrayBaseProps, type TrayBodyProps, type TrayContentProps, UndoIcon, UnlinkIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, WarningMessage, ZoomAllIcon, ZoomXIcon, ZoomYIcon, bearingFromComponents, bearingToPalettePosition, cn, normalizeBearing, sectorBearingRange, sectorId, toast, useAccordionAutoScroll, useControllableState, useUncontrolledState };
145
+ export { Accordion, type AccordionProps, AdjustmentsIcon, Alert, AlertDialog, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, type AlertDialogPopupProps, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, Avatar, type AvatarProps, Badge, type BadgeProps, BoxToolIcon, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupProps, ButtonGroupSeparator, ButtonIcon, type ButtonIconProps, ButtonIconSlideout, type ButtonIconSlideoutProps, type ButtonProps, CalendarIcon, CheckCircleIcon, CheckSquareIcon, Checkbox, type CheckboxProps, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Combobox, type ComboboxOption, type ComboboxProps, ControlGroupSelect, type ControlGroupSelectCaptionLayout, type ControlGroupSelectProps, Crosshairs2Icon, CrosshairsIcon, DEFAULT_DIRECTIONAL_COLOR_STOPS, DashboardIcon, DataCard, type DataCardProps, DatabaseIcon, DateTimePicker, type DateTimePickerProps, DeleteIcon, Dialog, type DirectionalColorStop, DirectionalColorWheel, DirectionalColorWheelDisclosure, type DirectionalColorWheelDisclosurePosition, type DirectionalColorWheelDisclosureProps, DirectionalColorWheelGlyph, type DirectionalColorWheelGlyphProps, type DirectionalColorWheelProps, type DirectionalSectorCount, Drawer, type DrawerProps, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, ErrorMessage, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, type FormFieldMessageValue, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, HoverCard, HoverCardContent, type HoverCardProps, HoverCardTrigger, IconBase, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumeric, type InputNumericProps, InputOTP, type InputOTPBaseProps, type InputOTPProps, type InputProps, InputSearch, type InputSearchOption, type InputSearchProps, IterationArrowIcon, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, type KbdSymbol, KeyboardIcon, Label, LabelIcon, type LabelProps, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, Meter, type MeterProps, MinimizeIcon, MinusIcon, MultiSelect, type MultiSelectProps, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, Popover, PopoverAnchor, PopoverContent, type PopoverContentProps, PopoverTrigger, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, RadialMenu, type RadialMenuItem, type RadialMenuProps, RadioButton, RadioButtonGroup, RadioButtonGroupItem, type RadioButtonGroupItemProps, type RadioButtonGroupProps, type RadioButtonProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, ResetIcon, ReviewedIcon, SUPPORTED_SECTOR_COUNTS, ScissorsIcon, SearchIcon, Select, type SelectExtendedProps, type SelectProps, Separator, type SeparatorProps, SettingsIcon, Skeleton, Slider, type SliderProps, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, SpectralProvider, type SpectralProviderProps, StackIcon, StarIcon, SvgIdContext, Switch, type SwitchProps, SyncIcon, SyncOffIcon, Tabs, type TabsProps, Textarea, type TextareaProps, Toast, type ToastProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, ToggleGroupSplitMenuItem, type ToggleGroupSplitMenuItemProps, type ToggleProps, Tooltip, TooltipContent, TooltipTrigger, TrashIcon, Tray, type TrayBaseProps, type TrayBodyProps, type TrayContentProps, UndoIcon, UnlinkIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, WarningMessage, ZoomAllIcon, ZoomXIcon, ZoomYIcon, bearingFromComponents, bearingToPalettePosition, cn, normalizeBearing, sectorBearingRange, sectorId, toast, useAccordionAutoScroll, useControllableState, useUncontrolledState };
package/dist/index.js CHANGED
@@ -123,6 +123,7 @@ import { InputNumeric } from "./InputNumeric.js";
123
123
  import { InputOTP } from "./InputOTP.js";
124
124
  import { InputSearch } from "./InputSearch.js";
125
125
  import { Kbd, KbdGroup } from "./Kbd.js";
126
+ import { Meter } from "./Meter.js";
126
127
  import { MultiSelect } from "./MultiSelect.js";
127
128
  import { Tooltip, TooltipContent, TooltipTrigger } from "./Tooltip.js";
128
129
  import { RadialMenu } from "./RadialMenu.js";
@@ -142,4 +143,4 @@ import { ToggleGroupSplitMenuItem } from "./ToggleGroup/ToggleGroupSplitMenuItem
142
143
  import { ToggleGroup } from "./ToggleGroup.js";
143
144
  import { Tray } from "./Tray.js";
144
145
 
145
- export { Accordion, AdjustmentsIcon, Alert, AlertDialog, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, AlertDialogTitle, AlertDialogTrigger, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, Avatar, Badge, BoxToolIcon, Button, ButtonGroup, ButtonGroupItem, ButtonGroupSeparator, ButtonIcon, ButtonIconSlideout, CalendarIcon, CheckCircleIcon, CheckSquareIcon, Checkbox, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Combobox, ControlGroupSelect, Crosshairs2Icon, CrosshairsIcon, DEFAULT_DIRECTIONAL_COLOR_STOPS, DashboardIcon, DataCard, DatabaseIcon, DateTimePicker, DeleteIcon, Dialog, DirectionalColorWheel, DirectionalColorWheelDisclosure, DirectionalColorWheelGlyph, Drawer, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, ErrorMessage, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, HoverCard, HoverCardContent, HoverCardTrigger, IconBase, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumeric, InputOTP, InputSearch, IterationArrowIcon, Kbd, KbdGroup, KeyboardIcon, Label, LabelIcon, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, MinimizeIcon, MinusIcon, MultiSelect, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, RadialMenu, RadioButton, RadioButtonGroup, RadioButtonGroupItem, RadioGroup, RadioGroupItem, ResetIcon, ReviewedIcon, SUPPORTED_SECTOR_COUNTS, ScissorsIcon, SearchIcon, Select, Separator, SettingsIcon, Skeleton, Slider, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, SpectralProvider, StackIcon, StarIcon, SvgIdContext, Switch, SyncIcon, SyncOffIcon, Tabs, Textarea, Toast, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupSplitMenuItem, Tooltip, TooltipContent, TooltipTrigger, TrashIcon, Tray, UndoIcon, UnlinkIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, WarningMessage, ZoomAllIcon, ZoomXIcon, ZoomYIcon, bearingFromComponents, bearingToPalettePosition, cn, normalizeBearing, sectorBearingRange, sectorId, toast, useAccordionAutoScroll, useControllableState, useUncontrolledState };
146
+ export { Accordion, AdjustmentsIcon, Alert, AlertDialog, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPopup, AlertDialogTitle, AlertDialogTrigger, AnalyzeIcon, AnnotationsIcon, ApprovedIcon, ArrowDownIcon, ArrowUpIcon, Avatar, Badge, BoxToolIcon, Button, ButtonGroup, ButtonGroupItem, ButtonGroupSeparator, ButtonIcon, ButtonIconSlideout, CalendarIcon, CheckCircleIcon, CheckSquareIcon, Checkbox, CheckmarkIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon, CloseCircleIcon, CloseIcon, Combobox, ControlGroupSelect, Crosshairs2Icon, CrosshairsIcon, DEFAULT_DIRECTIONAL_COLOR_STOPS, DashboardIcon, DataCard, DatabaseIcon, DateTimePicker, DeleteIcon, Dialog, DirectionalColorWheel, DirectionalColorWheelDisclosure, DirectionalColorWheelGlyph, Drawer, DurationIcon, EditIcon, EmailIcon, EraserIcon, ErrorIcon, ErrorMessage, EyeClosedIcon, EyeClosedIcon2, EyeOpenIcon, FileDownloadIcon, GoToFirstIcon, GoToLastIcon, HarmonicCursorsIcon, HoverCard, HoverCardContent, HoverCardTrigger, IconBase, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumeric, InputOTP, InputSearch, IterationArrowIcon, Kbd, KbdGroup, KeyboardIcon, Label, LabelIcon, LassoIcon, LineToolIcon, LinkIcon, LiveViewIcon, LoaderIcon, LocationIcon, LogoutIcon, MaximizeIcon, MeasureIcon, MenuDotsIcon, MenuIcon, MessagesIcon, MetadataIcon, Meter, MinimizeIcon, MinusIcon, MultiSelect, OntologyIcon, PanelIconClose, PanelIconOpen, PauseIcon, PdfIcon, PlayIcon, PlusIcon, PolygonIcon, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PrinterIcon, ProgressArrowIcon, ProgressCheckIcon, RadialMenu, RadioButton, RadioButtonGroup, RadioButtonGroupItem, RadioGroup, RadioGroupItem, ResetIcon, ReviewedIcon, SUPPORTED_SECTOR_COUNTS, ScissorsIcon, SearchIcon, Select, Separator, SettingsIcon, Skeleton, Slider, SortAscendingIcon, SortAtoZIcon, SortDescendingIcon, SortZtoAIcon, SparklesIcon, SpectralProvider, StackIcon, StarIcon, SvgIdContext, Switch, SyncIcon, SyncOffIcon, Tabs, Textarea, Toast, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupSplitMenuItem, Tooltip, TooltipContent, TooltipTrigger, TrashIcon, Tray, UndoIcon, UnlinkIcon, UploadIcon, User2Icon, UserIcon, WarningIcon, WarningMessage, ZoomAllIcon, ZoomXIcon, ZoomYIcon, bearingFromComponents, bearingToPalettePosition, cn, normalizeBearing, sectorBearingRange, sectorId, toast, useAccordionAutoScroll, useControllableState, useUncontrolledState };
@@ -23,7 +23,7 @@
23
23
  font-family: var(--font-sans);
24
24
 
25
25
  &::-webkit-scrollbar {
26
- width: 14px;
26
+ width: 0.875rem;
27
27
  }
28
28
 
29
29
  &::-webkit-scrollbar-track {
@@ -33,7 +33,7 @@
33
33
 
34
34
  &::-webkit-scrollbar-thumb {
35
35
  background: var(--color-level-three);
36
- border-radius: 6px;
36
+ border-radius: 0.375rem;
37
37
  }
38
38
  }
39
39
 
@@ -70,32 +70,47 @@ body[data-scroll-locked][data-scroll-locked] .width-before-scroll-bar {
70
70
  }
71
71
 
72
72
  /* these aren't bundled because horizon has their own set of the same classes */
73
+ .card-effects,
74
+ .card-effects-medium,
73
75
  .card-effects-small {
74
- background:
75
- linear-gradient(180deg, rgba(255, 255, 255, 0.015) 0%, rgba(255, 255, 255, 0) 100%),
76
- rgba(32, 32, 32, 0.6);
77
- backdrop-filter: blur(12px);
78
- border: 1px solid rgba(0, 0, 0, 0.5);
76
+ backdrop-filter: blur(0.75rem);
77
+ border: 1px solid var(--color-neutral-900);
79
78
  border-radius: 1rem;
79
+ }
80
+
81
+ .card-effects-small {
82
+ background:
83
+ linear-gradient(
84
+ 180deg,
85
+ oklch(from var(--color-white) l c h / 0.015) 0%,
86
+ oklch(from var(--color-white) l c h / 0) 100%
87
+ ),
88
+ rgba(40, 40, 40, 0.65);
80
89
  box-shadow: var(--shadow-elevation-1);
81
90
  }
82
91
 
83
92
  .card-effects-medium {
84
93
  background:
85
- linear-gradient(180deg, rgba(255, 255, 255, 0.02) 0%, rgba(255, 255, 255, 0) 100%),
86
- rgba(36, 36, 36, 0.6);
87
- backdrop-filter: blur(12px);
88
- border: 1px solid rgba(0, 0, 0, 0.5);
89
- border-radius: 1rem;
94
+ linear-gradient(
95
+ 180deg,
96
+ oklch(from var(--color-white) l c h / 0.02) 0%,
97
+ oklch(from var(--color-white) l c h / 0) 100%
98
+ ),
99
+ rgba(40, 40, 40, 0.65);
90
100
  box-shadow: var(--shadow-elevation-2);
91
101
  }
92
102
 
93
103
  .card-effects {
94
104
  background:
95
- linear-gradient(180deg, rgba(255, 255, 255, 0.025) 0%, rgba(255, 255, 255, 0) 100%),
105
+ linear-gradient(
106
+ 180deg,
107
+ oklch(from var(--color-white) l c h / 0.025) 0%,
108
+ oklch(from var(--color-white) l c h / 0) 100%
109
+ ),
96
110
  rgba(40, 40, 40, 0.65);
97
- backdrop-filter: blur(12px);
98
- border: 1px solid rgba(0, 0, 0, 0.5);
99
- border-radius: 1rem;
100
111
  box-shadow: var(--shadow-elevation-3);
101
112
  }
113
+
114
+ .tooltip-effects {
115
+ box-shadow: var(--shadow-tooltip);
116
+ }
@@ -2,9 +2,9 @@
2
2
 
3
3
  /*
4
4
  * `static` forces Tailwind v4 to emit every variable below as a CSS custom
5
- * property, even ones only referenced from JS (e.g. activeColor inline styles
6
- * resolve to var(--color-toggle-bg--active-accent)). Without it, Tailwind
7
- * tree-shakes unused theme vars out of the published spectral.css.
5
+ * property, even ones only referenced from JS (e.g. `activeColor` inline styles
6
+ * resolve to `var(--color-toggle-bg--active-accent)`). Without it, Tailwind
7
+ * tree-shakes unused theme vars out of the published `spectral.css`.
8
8
  */
9
9
  @theme static {
10
10
  --color-background: var(--horizon-color-neutral-950);
@@ -50,21 +50,21 @@
50
50
  --color-danger-400: var(--horizon-color-danger-400);
51
51
  --color-danger-500: var(--horizon-color-danger-500);
52
52
 
53
- --color-alert-bg: var(--horizon-color-level-two);
54
- --color-alert-border: var(--horizon-color-level-three);
53
+ --color-alert-bg: var(--horizon-color-level-one);
54
+ --color-alert-border: var(--horizon-color-level-two);
55
55
  --color-alert-text: var(--horizon-color-neutral-50);
56
- --color-alert-success-bg: var(--horizon-color-success-50);
57
- --color-alert-success-border: var(--horizon-color-success-500);
58
- --color-alert-success-text: var(--horizon-color-success-500);
59
- --color-alert-warning-bg: var(--horizon-color-warning-50);
60
- --color-alert-warning-border: var(--horizon-color-warning-500);
61
- --color-alert-warning-text: var(--horizon-color-warning-500);
62
- --color-alert-danger-bg: var(--horizon-color-danger-50);
63
- --color-alert-danger-border: var(--horizon-color-danger-500);
64
- --color-alert-danger-text: var(--horizon-color-danger-500);
65
- --color-alert-info-bg: var(--horizon-color-primary-50);
66
- --color-alert-info-border: var(--horizon-color-primary-700);
67
- --color-alert-info-text: var(--horizon-color-primary-700);
56
+ --color-alert-success-bg: color-mix(in srgb, var(--horizon-color-success-400) 20%, var(--horizon-color-black));
57
+ --color-alert-success-border: var(--horizon-color-success-400);
58
+ --color-alert-success-text: var(--horizon-color-success-400);
59
+ --color-alert-warning-bg: color-mix(in srgb, var(--horizon-color-warning-400) 20%, var(--horizon-color-black));
60
+ --color-alert-warning-border: var(--horizon-color-warning-400);
61
+ --color-alert-warning-text: var(--horizon-color-warning-400);
62
+ --color-alert-danger-bg: color-mix(in srgb, var(--horizon-color-danger-400) 20%, var(--horizon-color-black));
63
+ --color-alert-danger-border: var(--horizon-color-danger-400);
64
+ --color-alert-danger-text: var(--horizon-color-danger-400);
65
+ --color-alert-info-bg: color-mix(in srgb, var(--horizon-color-primary-500) 20%, var(--horizon-color-black));
66
+ --color-alert-info-border: var(--horizon-color-primary-500);
67
+ --color-alert-info-text: var(--horizon-color-primary-500);
68
68
 
69
69
  --color-badge-primary-bg: var(--horizon-color-level-five);
70
70
  --color-badge-primary-bg--hover: var(--horizon-color-level-four);
@@ -194,8 +194,8 @@
194
194
  --color-tabs-enclosed-indicator: var(--horizon-color-level-two);
195
195
  --color-tabs-border: var(--horizon-color-level-four);
196
196
 
197
- --color-toast-bg: var(--horizon-color-level-one);
198
- --color-toast-border: var(--horizon-color-neutral-50);
197
+ --color-toast-bg: var(--horizon-color-level-two);
198
+ --color-toast-border: var(--horizon-color-neutral-300);
199
199
  --color-toast-text: var(--horizon-color-neutral-50);
200
200
  --color-toast-icon: var(--horizon-color-neutral-50);
201
201
 
@@ -244,10 +244,26 @@
244
244
  --color-tooltip-outline-border: var(--horizon-color-level-four);
245
245
  --color-tooltip-outline-arrow: var(--horizon-color-level-four);
246
246
 
247
+ /* black shades */
248
+ --color-black-10: oklch(0% 0 0 / 10%);
249
+ --color-black-20: oklch(0% 0 0 / 20%);
250
+ --color-black-30: oklch(0% 0 0 / 30%);
247
251
  --color-black-40: oklch(0% 0 0 / 40%);
252
+ --color-black-50: oklch(0% 0 0 / 50%);
253
+ --color-black-60: oklch(0% 0 0 / 60%);
254
+ --color-black-70: oklch(0% 0 0 / 70%);
255
+
256
+ /* white shades */
257
+ --color-white-10: oklch(100% 0 0 / 10%);
258
+ --color-white-20: oklch(100% 0 0 / 20%);
259
+ --color-white-30: oklch(100% 0 0 / 30%);
260
+ --color-white-40: oklch(100% 0 0 / 40%);
261
+ --color-white-50: oklch(100% 0 0 / 50%);
262
+ --color-white-60: oklch(100% 0 0 / 60%);
263
+ --color-white-70: oklch(100% 0 0 / 70%);
248
264
  }
249
265
 
250
266
  /* light theme variant */
251
- :root[data-theme='light'] {
267
+ /* :root[data-theme='light'] {
252
268
  --color-background: var(--horizon-color-neutral-50);
253
- }
269
+ } */
@@ -4,20 +4,28 @@
4
4
  --font-serif: 'Bitter', ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
5
5
  --font-mono: 'Source Code Pro', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Courier New', monospace;
6
6
 
7
- --ring: var(--color-accent);
7
+ --ring: var(--color-transparent);
8
8
  --ring-offset: var(--color-background);
9
9
 
10
10
  --shadow-elevation-1:
11
- inset 0 1px 0 0 rgba(255, 255, 255, 0.04), 0 1px 2px 0 rgba(0, 0, 0, 0.4),
12
- 0 8px 16px -4px rgba(0, 0, 0, 0.3);
11
+ 0 0.0625rem 0 0 oklch(from var(--color-white) l c h / 0.04),
12
+ 0 0.0625rem 0.125rem 0 oklch(from var(--color-black) l c h / 0.4),
13
+ 0 0.5rem 1rem -0.25rem oklch(from var(--color-black) l c h / 0.3);
13
14
 
14
15
  --shadow-elevation-2:
15
- inset 0 1px 0 0 rgba(255, 255, 255, 0.05), 0 2px 4px 0 rgba(0, 0, 0, 0.5),
16
- 0 12px 24px -6px rgba(0, 0, 0, 0.4);
16
+ 0 0.0625rem 0 0 oklch(from var(--color-white) l c h / 0.05),
17
+ 0 0.125rem 0.25rem 0 oklch(from var(--color-black) l c h / 0.5),
18
+ 0 0.75rem 0.75rem -0.375rem oklch(from var(--color-black) l c h / 0.4);
17
19
 
18
20
  --shadow-elevation-3:
19
- inset 0 1px 0 0 rgba(255, 255, 255, 0.07), 0 4px 8px 0 rgba(0, 0, 0, 0.5),
20
- 0 20px 40px -8px rgba(0, 0, 0, 0.5);
21
+ 0 0.0625rem 0 0 oklch(from var(--color-white) l c h / 0.07),
22
+ 0 0.25rem 0.5rem 0 oklch(from var(--color-black) l c h / 0.5),
23
+ 0 1rem 1.5rem -0.5rem oklch(from var(--color-black) l c h / 0.5);
24
+
25
+ --shadow-tooltip:
26
+ 0 0.0625rem 0 0 oklch(from var(--color-white) l c h / 0.05),
27
+ 0 0.125rem 0.25rem 0 oklch(from var(--color-black) l c h / 0.7),
28
+ 0 0.75rem 1.5rem -0.375rem oklch(from var(--color-black) l c h / 0.6);
21
29
 
22
30
  /* animations */
23
31
  --animate-animate-in: animate-in;
@@ -47,11 +47,11 @@
47
47
  }
48
48
 
49
49
  .shadow-neumorphic-large {
50
- box-shadow: 12px 12px 24px var(--color-shadow-neumorphic-large), -12px -12px 24px var(--color-white);
50
+ box-shadow: 0.75rem 0.75rem 1.5rem var(--color-shadow-neumorphic-large), -0.75rem -0.75rem 1.5rem var(--color-white);
51
51
  }
52
52
 
53
53
  .shadow-neumorphic-small {
54
- box-shadow: 4px 4px 8px var(--color-shadow-neumorphic), -4px -4px 8px var(--color-white);
54
+ box-shadow: 0.25rem 0.25rem 0.5rem var(--color-shadow-neumorphic), -0.25rem -0.25rem 0.5rem var(--color-white);
55
55
  }
56
56
 
57
57
  .dialog-no-animations {
@@ -69,43 +69,17 @@
69
69
  transform: translateX(-50%) translateY(-50%) !important;
70
70
  }
71
71
 
72
- svg:focus-visible,
73
72
  svg:focus {
74
73
  outline: none;
75
74
  }
76
75
 
77
- .card-effects {
78
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.01) 0%, rgba(255, 255, 255, 0.00) 100%), rgba(38, 38, 38, 0.50);
79
- backdrop-filter: blur(12px);
80
- border: 0.5px solid rgba(255, 255, 255, 0.05);
81
- border-radius: 1rem;
82
- box-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.10) inset, 0 20px 40px 0 rgba(0, 0, 0, 0.25), 0 15px 30px 0 rgba(0, 0, 0, 0.15), 0 5px 10px 0 rgba(0, 0, 0, 0.05);
83
- }
84
-
85
- .tooltip-effects {
86
- box-shadow: 3px 3px 6px 3px rgba(0,0,0,0.3);
87
- }
88
-
89
- @supports not (backdrop-filter: blur(0)) {
90
-
91
- .card-effects {
92
- /* Fallback: slightly opaque fill to hint depth without blur */
93
- background-color: hsla(240, 4%, 14%, 0.6);
94
- }
95
-
96
- .card-effects-dark {
97
- /* Fallback tuned for level-zero dark surfaces */
98
- background-color: hsla(240, 4%, 16%, 0.72);
99
- }
100
- }
101
-
102
76
  /* DatePicker styles */
103
77
  .rdp {
104
78
  margin: 0;
105
79
  }
106
80
 
107
81
  .rdp-root {
108
- padding-right: 24px;
82
+ padding-right: 1.5rem;
109
83
 
110
84
  .rdp-nav {
111
85
  position: absolute;
@@ -130,11 +104,11 @@
130
104
  align-items: center;
131
105
  display: flex;
132
106
  justify-content: center;
133
- padding-block-end: 8px;
107
+ padding-block-end: 0.5rem;
134
108
  position: relative;
135
109
 
136
110
  .month-title {
137
- font-size: 18px;
111
+ font-size: 1.125rem;
138
112
  font-weight: 600;
139
113
  }
140
114
  }
@@ -142,8 +116,8 @@
142
116
  .rdp-day_button {
143
117
  border-color: transparent;
144
118
  border-radius: 100%;
145
- height: 40px;
146
- width: 40px;
119
+ height: 2.5rem;
120
+ width: 2.5rem;
147
121
  }
148
122
 
149
123
  .day {
@@ -204,7 +178,7 @@
204
178
  .minutes {
205
179
 
206
180
  input {
207
- max-width: 22px;
181
+ max-width: 1.375rem;
208
182
  width: max-content;
209
183
 
210
184
  &.hours-input {
@@ -223,7 +197,7 @@
223
197
 
224
198
  input {
225
199
  border: 0;
226
- font-size: 16px;
200
+ font-size: 1rem;
227
201
 
228
202
  &:hover,
229
203
  &:focus,
@@ -244,18 +218,18 @@
244
218
  }
245
219
 
246
220
  span {
247
- margin-inline: 1px 2px;
221
+ margin-inline: 0.0625rem 0.125rem;
248
222
  }
249
223
  }
250
224
 
251
225
  .am-pm {
252
- margin-inline-start: 8px;
226
+ margin-inline-start: 0.5rem;
253
227
  width: auto;
254
228
 
255
229
  button {
256
230
  background-color: transparent;
257
231
  border: 0;
258
- font-size: 14px;
232
+ font-size: 0.875rem;
259
233
  padding-inline: 0;
260
234
 
261
235
  &:hover {
@@ -282,12 +256,12 @@
282
256
  }
283
257
 
284
258
  .am-pm-dropdown {
285
- border-bottom-left-radius: 4px;
286
- border-bottom-right-radius: 4px;
287
- font-size: 14px;
288
- margin-top: -5px;
259
+ border-bottom-left-radius: 0.25rem;
260
+ border-bottom-right-radius: 0.25rem;
261
+ font-size: 0.875rem;
262
+ margin-top: -0.3125rem;
289
263
  position: relative;
290
- width: 58px;
264
+ width: 3.625rem;
291
265
  z-index: 999;
292
266
 
293
267
  &:hover {
@@ -297,9 +271,9 @@
297
271
  .am-pm-option {
298
272
  align-items: center;
299
273
  display: flex;
300
- height: 24px;
274
+ height: 1.5rem;
301
275
  justify-content: center;
302
- padding-inline: 8px;
276
+ padding-inline: 0.5rem;
303
277
  text-align: center;
304
278
  z-index: 999;
305
279