@kismet-ux/constellation 1.1.0 → 1.3.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 (54) 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-BwTP9oMP.d.ts} +1 -1
  7. package/dist/{index-BeCWb0Ix.d.ts → index-DCtv8Gm1.d.ts} +61 -16
  8. package/dist/{index-DVEBz660.d.ts → index-h4thndEb.d.ts} +1 -1
  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/styles/tokens.d.ts +2 -0
  21. package/dist/styles/tokens.d.ts.map +1 -0
  22. package/dist/styles/tokens.js +2 -0
  23. package/dist/styles/tokens.js.map +1 -0
  24. package/dist/tokens.css +435 -0
  25. package/dist/{tooltip-zOT3UHCF.d.ts → tooltip-C25-bG7o.d.ts} +2 -2
  26. package/dist/ui/Chip/chip-variants.d.ts +6 -1
  27. package/dist/ui/Chip/chip-variants.d.ts.map +1 -1
  28. package/dist/ui/Chip/chip-variants.js +19 -2
  29. package/dist/ui/Chip/chip-variants.js.map +1 -1
  30. package/dist/ui/Chip/chip.css +97 -47
  31. package/dist/ui/Chip/chip.d.ts +14 -0
  32. package/dist/ui/Chip/chip.d.ts.map +1 -1
  33. package/dist/ui/Chip/chip.js +10 -2
  34. package/dist/ui/Chip/chip.js.map +1 -1
  35. package/dist/ui/Chip/chip.module.scss.js +1 -1
  36. package/dist/ui/StatusDot/index.d.ts +3 -0
  37. package/dist/ui/StatusDot/index.d.ts.map +1 -0
  38. package/dist/ui/StatusDot/status-dot-variants.d.ts +7 -0
  39. package/dist/ui/StatusDot/status-dot-variants.d.ts.map +1 -0
  40. package/dist/ui/StatusDot/status-dot-variants.js +28 -0
  41. package/dist/ui/StatusDot/status-dot-variants.js.map +1 -0
  42. package/dist/ui/StatusDot/status-dot.css +61 -0
  43. package/dist/ui/StatusDot/status-dot.d.ts +23 -0
  44. package/dist/ui/StatusDot/status-dot.d.ts.map +1 -0
  45. package/dist/ui/StatusDot/status-dot.js +23 -0
  46. package/dist/ui/StatusDot/status-dot.js.map +1 -0
  47. package/dist/ui/StatusDot/status-dot.module.scss.js +6 -0
  48. package/dist/ui/StatusDot/status-dot.module.scss.js.map +1 -0
  49. package/dist/ui/index.d.ts +1 -0
  50. package/dist/ui/index.d.ts.map +1 -1
  51. package/dist/ui.d.ts +2 -2
  52. package/dist/ui.js +2 -0
  53. package/dist/ui.js.map +1 -1
  54. package/package.json +5 -1
@@ -40,6 +40,8 @@ import '../../ui/List/list.js';
40
40
  import '../../ui/Pagination/pagination.js';
41
41
  import '../../ui/ProgressBar/progress-bar.js';
42
42
  import '../../ui/StatCard/stat-card.js';
43
+ import '../../ui/StatusDot/status-dot.js';
44
+ import '../../ui/StatusDot/status-dot-variants.js';
43
45
  import '../../ui/StepProgress/step-progress.js';
44
46
  import '../../ui/Switch/switch.js';
45
47
  import '../../ui/Table/table.js';
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","sources":["../../../src/form/Checkbox/checkbox.tsx"],"sourcesContent":["import { Label } from '@constellation/form/Label';\nimport { Column, Row } from '@constellation/layout';\nimport { type FormTheme } from '@constellation/types';\nimport { Typography } from '@constellation/typography/Typography';\nimport cn from 'clsx';\nimport { CheckIcon } from 'lucide-react';\nimport * as React from 'react';\nimport s from './checkbox.module.scss';\n\ntype CheckedState = boolean | 'indeterminate';\n\nexport interface CheckboxProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n 'onChange' | 'value' | 'defaultValue' | 'defaultChecked'\n> {\n theme?: FormTheme;\n destructive?: boolean;\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n onCheckedChange?: (checked: CheckedState) => void;\n value?: string;\n name?: string;\n required?: boolean;\n /** Optional inline label rendered to the right of the checkbox and associated via htmlFor. */\n label?: React.ReactNode;\n /** Optional helper / validation text rendered beneath the checkbox + label row. */\n helperText?: React.ReactNode;\n}\n\nconst Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n className,\n id,\n theme = 'primary',\n destructive = false,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled,\n value = 'on',\n name,\n required,\n label,\n helperText,\n ['aria-invalid']: ariaInvalid,\n ['aria-describedby']: ariaDescribedBy,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n ) => {\n const isControlled = controlledChecked !== undefined;\n const [internalChecked, setInternalChecked] = React.useState<CheckedState>(defaultChecked);\n const checked = isControlled ? controlledChecked : internalChecked;\n\n const generatedId = React.useId();\n const checkboxId = id ?? generatedId;\n const helperId = helperText ? `${checkboxId}-helper` : undefined;\n const describedBy = [ariaDescribedBy, helperId].filter(Boolean).join(' ') || undefined;\n\n const dataState =\n checked === 'indeterminate' ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n\n const toggle = () => {\n if (disabled) return;\n const next = checked === 'indeterminate' ? true : !checked;\n if (!isControlled) {\n setInternalChecked(next);\n }\n onCheckedChange?.(next);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n toggle();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === ' ') {\n e.preventDefault();\n toggle();\n }\n };\n\n const button = (\n <button\n ref={ref}\n id={checkboxId}\n type={'button'}\n role={'checkbox'}\n aria-checked={checked === 'indeterminate' ? 'mixed' : checked}\n aria-invalid={destructive ? 'true' : ariaInvalid}\n aria-required={required}\n aria-describedby={describedBy}\n data-slot={'checkbox'}\n data-state={dataState}\n disabled={disabled}\n className={cn(s.checkbox, s[`theme-${theme}`], className)}\n {...props}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {checked ? (\n <span data-slot={'checkbox-indicator'} className={s.indicator}>\n <CheckIcon className={s.icon} />\n </span>\n ) : null}\n </button>\n );\n\n // Match native <input type='checkbox'> form-submission semantics: an\n // unchecked (or indeterminate) box is omitted entirely from the submission,\n // not present-but-empty. Only emit the hidden input when actually checked.\n const hiddenInput =\n name && checked === true ? <input type={'hidden'} name={name} value={value} /> : null;\n\n if (label === undefined && helperText === undefined) {\n return (\n <>\n {button}\n {hiddenInput}\n </>\n );\n }\n\n return (\n <Column data-slot={'checkbox-field'} gap={1}>\n <Row data-slot={'checkbox-row'} gap={1} align={'center'}>\n {button}\n {label !== undefined ? (\n <Label\n data-slot={'checkbox-label'}\n htmlFor={checkboxId}\n className={cn(s['label'], disabled && s['label--disabled'])}\n theme={destructive ? 'destructive' : 'inherit'}\n >\n {label}\n </Label>\n ) : null}\n </Row>\n {helperText !== undefined ? (\n <Typography\n data-slot={'checkbox-helper-text'}\n id={helperId}\n variant={'caption'}\n theme={destructive ? 'destructive' : 'muted'}\n className={s['helper-text']}\n >\n {helperText}\n </Typography>\n ) : null}\n {hiddenInput}\n </Column>\n );\n },\n);\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox };\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"checkbox.js","sources":["../../../src/form/Checkbox/checkbox.tsx"],"sourcesContent":["import { Label } from '@constellation/form/Label';\nimport { Column, Row } from '@constellation/layout';\nimport { type FormTheme } from '@constellation/types';\nimport { Typography } from '@constellation/typography/Typography';\nimport cn from 'clsx';\nimport { CheckIcon } from 'lucide-react';\nimport * as React from 'react';\nimport s from './checkbox.module.scss';\n\ntype CheckedState = boolean | 'indeterminate';\n\nexport interface CheckboxProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n 'onChange' | 'value' | 'defaultValue' | 'defaultChecked'\n> {\n theme?: FormTheme;\n destructive?: boolean;\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n onCheckedChange?: (checked: CheckedState) => void;\n value?: string;\n name?: string;\n required?: boolean;\n /** Optional inline label rendered to the right of the checkbox and associated via htmlFor. */\n label?: React.ReactNode;\n /** Optional helper / validation text rendered beneath the checkbox + label row. */\n helperText?: React.ReactNode;\n}\n\nconst Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n className,\n id,\n theme = 'primary',\n destructive = false,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled,\n value = 'on',\n name,\n required,\n label,\n helperText,\n ['aria-invalid']: ariaInvalid,\n ['aria-describedby']: ariaDescribedBy,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n ) => {\n const isControlled = controlledChecked !== undefined;\n const [internalChecked, setInternalChecked] = React.useState<CheckedState>(defaultChecked);\n const checked = isControlled ? controlledChecked : internalChecked;\n\n const generatedId = React.useId();\n const checkboxId = id ?? generatedId;\n const helperId = helperText ? `${checkboxId}-helper` : undefined;\n const describedBy = [ariaDescribedBy, helperId].filter(Boolean).join(' ') || undefined;\n\n const dataState =\n checked === 'indeterminate' ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n\n const toggle = () => {\n if (disabled) return;\n const next = checked === 'indeterminate' ? true : !checked;\n if (!isControlled) {\n setInternalChecked(next);\n }\n onCheckedChange?.(next);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n toggle();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === ' ') {\n e.preventDefault();\n toggle();\n }\n };\n\n const button = (\n <button\n ref={ref}\n id={checkboxId}\n type={'button'}\n role={'checkbox'}\n aria-checked={checked === 'indeterminate' ? 'mixed' : checked}\n aria-invalid={destructive ? 'true' : ariaInvalid}\n aria-required={required}\n aria-describedby={describedBy}\n data-slot={'checkbox'}\n data-state={dataState}\n disabled={disabled}\n className={cn(s.checkbox, s[`theme-${theme}`], className)}\n {...props}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {checked ? (\n <span data-slot={'checkbox-indicator'} className={s.indicator}>\n <CheckIcon className={s.icon} />\n </span>\n ) : null}\n </button>\n );\n\n // Match native <input type='checkbox'> form-submission semantics: an\n // unchecked (or indeterminate) box is omitted entirely from the submission,\n // not present-but-empty. Only emit the hidden input when actually checked.\n const hiddenInput =\n name && checked === true ? <input type={'hidden'} name={name} value={value} /> : null;\n\n if (label === undefined && helperText === undefined) {\n return (\n <>\n {button}\n {hiddenInput}\n </>\n );\n }\n\n return (\n <Column data-slot={'checkbox-field'} gap={1}>\n <Row data-slot={'checkbox-row'} gap={1} align={'center'}>\n {button}\n {label !== undefined ? (\n <Label\n data-slot={'checkbox-label'}\n htmlFor={checkboxId}\n className={cn(s['label'], disabled && s['label--disabled'])}\n theme={destructive ? 'destructive' : 'inherit'}\n >\n {label}\n </Label>\n ) : null}\n </Row>\n {helperText !== undefined ? (\n <Typography\n data-slot={'checkbox-helper-text'}\n id={helperId}\n variant={'caption'}\n theme={destructive ? 'destructive' : 'muted'}\n className={s['helper-text']}\n >\n {helperText}\n </Typography>\n ) : null}\n {hiddenInput}\n </Column>\n );\n },\n);\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox };\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -43,6 +43,8 @@ import '../../ui/List/list.js';
43
43
  import '../../ui/Pagination/pagination.js';
44
44
  import '../../ui/ProgressBar/progress-bar.js';
45
45
  import '../../ui/StatCard/stat-card.js';
46
+ import '../../ui/StatusDot/status-dot.js';
47
+ import '../../ui/StatusDot/status-dot-variants.js';
46
48
  import '../../ui/StepProgress/step-progress.js';
47
49
  import '../../ui/Switch/switch.js';
48
50
  import '../../ui/Table/table.js';
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.js","sources":["../../../src/form/DatePicker/date-picker.tsx"],"sourcesContent":["import inputStyles from '@constellation/form/Input/input.module.scss';\nimport { Label } from '@constellation/form/Label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@constellation/form/Select';\nimport { useBreakpoint } from '@constellation/hooks/use-mobile';\nimport { Row } from '@constellation/layout';\nimport { type DatePickerProps } from '@constellation/types';\nimport { Typography } from '@constellation/typography/Typography';\nimport { Button } from '@constellation/ui';\nimport cn from 'clsx';\nimport { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport s from './date-picker.module.scss';\nimport {\n formatDateValue,\n formatDisplayDate,\n formatIso,\n isDateWithinRange,\n maskDateInput,\n normalizeIsoValue,\n parseDateValue,\n useCalendar,\n} from './use-calendar';\n\nconst ANIMATION_DURATION = 200;\n\nfunction DatePicker({\n value: valueProp,\n defaultValue,\n onChange,\n label,\n helperText,\n error = false,\n disabled = false,\n sizeVariant,\n placeholder,\n min,\n max,\n required = false,\n id,\n className,\n name,\n}: DatePickerProps) {\n const generatedId = React.useId();\n const triggerId = id ?? generatedId;\n const helperId = `${triggerId}-helper`;\n const fieldRef = React.useRef<HTMLDivElement | null>(null);\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const { isBelow } = useBreakpoint();\n const resolvedSize = sizeVariant ?? (isBelow(900) ? 'sm' : 'md');\n\n const isControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() =>\n normalizeIsoValue(defaultValue),\n );\n const currentValue = isControlled ? valueProp : uncontrolledValue;\n const normalizedCurrentValue = normalizeIsoValue(currentValue);\n\n const [isOpen, setIsOpen] = React.useState(false);\n const [isClosing, setIsClosing] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const [manualError, setManualError] = React.useState<string | null>(null);\n const [inputValue, setInputValue] = React.useState(() =>\n formatDisplayDate(normalizedCurrentValue),\n );\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const [position, setPosition] = React.useState<{ top: number; left: number }>({\n top: 0,\n left: 0,\n });\n const hasError = error || !!manualError;\n\n const displayOpen = isOpen || isClosing;\n\n // Pixel-accurate positioning via fixed + raw getBoundingClientRect — matches\n // Tooltip / DropdownMenu / Select. Recomputes on scroll + resize so the\n // popover tracks the trigger when the page or a parent scrolls. Flips\n // above the trigger when there isn't enough room below (DropdownMenu pattern).\n const calcPosition = React.useCallback(() => {\n const rect = fieldRef.current?.getBoundingClientRect();\n if (!rect) return;\n const offset = 4;\n const popoverHeight = contentRef.current?.offsetHeight ?? 0;\n const fitsBelow = window.innerHeight - rect.bottom - offset >= popoverHeight;\n const top = fitsBelow ? rect.bottom + offset : rect.top - popoverHeight - offset;\n setPosition({ top, left: rect.left });\n }, []);\n\n React.useLayoutEffect(() => {\n if (!displayOpen) return;\n calcPosition();\n }, [displayOpen, calcPosition]);\n\n React.useEffect(() => {\n if (!displayOpen) return;\n window.addEventListener('scroll', calcPosition, true);\n window.addEventListener('resize', calcPosition);\n return () => {\n window.removeEventListener('scroll', calcPosition, true);\n window.removeEventListener('resize', calcPosition);\n };\n }, [displayOpen, calcPosition]);\n\n const hasValue = Boolean(normalizedCurrentValue);\n const helperMessage = manualError ?? helperText;\n const draftDate = parseDateValue(inputValue);\n const calendarValue = draftDate ? inputValue : isFocused ? undefined : normalizedCurrentValue;\n const resolvedPlaceholder = placeholder ?? 'MM/DD/YYYY';\n\n React.useEffect(() => {\n setInputValue(formatDisplayDate(normalizedCurrentValue));\n setManualError(null);\n }, [normalizedCurrentValue]);\n\n const {\n viewYear,\n viewMonth,\n setViewYear,\n setViewMonth,\n monthNames,\n yearRange,\n weekdays,\n days,\n goToPrevMonth,\n goToNextMonth,\n canGoPrev,\n canGoNext,\n } = useCalendar({ selectedDate: calendarValue, min, max });\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n if (open) {\n clearCloseTimer();\n setIsClosing(false);\n setIsOpen(true);\n return;\n }\n\n setIsOpen(false);\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, ANIMATION_DURATION);\n },\n [clearCloseTimer],\n );\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n // Click-outside handler\n React.useEffect(() => {\n if (!displayOpen) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (fieldRef.current?.contains(target)) return;\n if (contentRef.current?.contains(target)) return;\n handleOpenChange(false);\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [displayOpen, handleOpenChange]);\n\n const syncCalendarPreview = React.useCallback(\n (maskedValue: string) => {\n const digits = maskedValue.replace(/\\D/g, '');\n\n if (digits.length >= 2) {\n const month = Number(digits.slice(0, 2));\n if (month >= 1 && month <= 12) {\n setViewMonth(month - 1);\n }\n }\n\n if (digits.length === 8) {\n const year = Number(digits.slice(4, 8));\n if (year >= 1000 && year <= 9999) {\n setViewYear(year);\n }\n }\n },\n [setViewMonth, setViewYear],\n );\n\n const handleDayClick = React.useCallback(\n (date: Date) => {\n const isoDate = formatIso(date);\n const displayDate = formatDateValue(date);\n if (!isControlled) {\n setUncontrolledValue(isoDate);\n }\n setInputValue(displayDate);\n setManualError(null);\n onChange?.(isoDate);\n handleOpenChange(false);\n },\n [isControlled, onChange, handleOpenChange],\n );\n\n const syncSelectedDate = React.useCallback(\n (date: Date) => {\n const isoDate = formatIso(date);\n const displayDate = formatDateValue(date);\n\n if (!isDateWithinRange(date, min, max)) {\n return;\n }\n\n if (!isControlled) {\n setUncontrolledValue(isoDate);\n }\n setInputValue(displayDate);\n setManualError(null);\n onChange?.(isoDate);\n },\n [isControlled, max, min, onChange],\n );\n\n const commitValue = React.useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n onChange?.(nextValue);\n },\n [isControlled, onChange],\n );\n\n const commitTypedValue = React.useCallback(() => {\n const trimmedValue = inputValue.trim();\n\n if (!trimmedValue) {\n setManualError(null);\n commitValue('');\n setInputValue('');\n return;\n }\n\n const parsedDate = parseDateValue(trimmedValue);\n\n if (!parsedDate) {\n setManualError('Enter a valid date in MM/DD/YYYY format.');\n return;\n }\n\n if (!isDateWithinRange(parsedDate, min, max)) {\n setManualError('Entered date is outside the allowed range.');\n return;\n }\n\n const normalizedDate = formatDateValue(parsedDate);\n const isoDate = formatIso(parsedDate);\n setManualError(null);\n commitValue(isoDate);\n setInputValue(normalizedDate);\n }, [commitValue, inputValue, max, min]);\n\n const updateDateFromCalendarView = React.useCallback(\n (nextYear: number, nextMonth: number) => {\n const baseDate = parseDateValue(inputValue) ?? parseDateValue(normalizedCurrentValue);\n\n if (!baseDate) {\n return;\n }\n\n const lastDayOfMonth = new Date(nextYear, nextMonth + 1, 0).getDate();\n const nextDay = Math.min(baseDate.getDate(), lastDayOfMonth);\n const nextDate = new Date(nextYear, nextMonth, nextDay);\n\n syncSelectedDate(nextDate);\n },\n [inputValue, normalizedCurrentValue, syncSelectedDate],\n );\n\n const containerClasses = cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: hasError },\n { [inputStyles.disabled]: disabled },\n { [inputStyles.placeholder]: !!resolvedPlaceholder },\n { [inputStyles['has-value']]: hasValue || !!inputValue },\n { [inputStyles['is-focused']]: isFocused || displayOpen },\n className,\n );\n\n return (\n <>\n <div data-slot={'date-picker'} data-constellation-field className={containerClasses}>\n <div ref={fieldRef} className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId}>\n {label}\n {required && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n <input\n ref={inputRef}\n id={triggerId}\n type={'text'}\n className={cn(inputStyles['input-field'], s['text-input'])}\n value={inputValue}\n disabled={disabled}\n placeholder={resolvedPlaceholder}\n aria-invalid={hasError ? 'true' : undefined}\n aria-describedby={helperMessage ? helperId : undefined}\n inputMode={'numeric'}\n autoComplete={'off'}\n maxLength={10}\n pattern={'\\\\d{2}/\\\\d{2}/\\\\d{4}'}\n onChange={e => {\n const maskedValue = maskDateInput(e.target.value);\n setInputValue(maskedValue);\n syncCalendarPreview(maskedValue);\n setManualError(null);\n }}\n onFocus={() => {\n setIsFocused(true);\n handleOpenChange(true);\n syncCalendarPreview(inputValue);\n }}\n onBlur={() => {\n setIsFocused(false);\n commitTypedValue();\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n commitTypedValue();\n handleOpenChange(false);\n }\n\n // Guarded + preventDefault so Escape dismisses this calendar and\n // not the Dialog around it, while a closed field ignores the key.\n if (e.key === 'Escape' && displayOpen) {\n e.preventDefault();\n setManualError(null);\n setInputValue(formatDisplayDate(normalizedCurrentValue));\n handleOpenChange(false);\n }\n }}\n />\n <button\n type={'button'}\n className={s.trigger}\n aria-label={'Open calendar'}\n disabled={disabled}\n onMouseDown={e => e.preventDefault()}\n onClick={() => {\n handleOpenChange(true);\n syncCalendarPreview(inputValue);\n inputRef.current?.focus();\n }}\n >\n <CalendarIcon className={s['trigger-icon']} />\n <span className={'srOnly'}>Open calendar</span>\n </button>\n </div>\n {helperMessage ? (\n <Typography id={helperId} variant={'caption'} className={inputStyles['helper-text']}>\n {helperMessage}\n </Typography>\n ) : null}\n </div>\n {name && <input type={'hidden'} name={name} value={normalizedCurrentValue} />}\n {displayOpen\n ? createPortal(\n <div\n ref={contentRef}\n className={s.content}\n data-state={isOpen ? 'open' : 'closed'}\n data-closing={isClosing ? 'true' : undefined}\n data-side={'bottom'}\n style={{\n position: 'fixed',\n top: position.top,\n left: position.left,\n }}\n >\n <Row gap={1} justify={'space-between'}>\n <Button\n type={'button'}\n theme={'inherit'}\n size={'sm'}\n variant={'ghost'}\n iconOnly\n onClick={goToPrevMonth}\n disabled={!canGoPrev}\n aria-label={'Previous month'}\n >\n <ChevronLeftIcon />\n </Button>\n <Row gap={1}>\n <Select\n value={String(viewMonth)}\n onValueChange={v => {\n const nextMonth = Number(v);\n setViewMonth(nextMonth);\n updateDateFromCalendarView(viewYear, nextMonth);\n }}\n >\n <SelectTrigger className={s['header-trigger']} aria-label={'Month'}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {monthNames.map((name, i) => (\n <SelectItem key={i} value={String(i)}>\n {name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Select\n value={String(viewYear)}\n onValueChange={v => {\n const nextYear = Number(v);\n setViewYear(nextYear);\n updateDateFromCalendarView(nextYear, viewMonth);\n }}\n >\n <SelectTrigger className={s['header-trigger']} aria-label={'Year'}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {yearRange.map(y => (\n <SelectItem key={y} value={String(y)}>\n {y}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Row>\n <Button\n theme={'inherit'}\n size={'sm'}\n variant={'ghost'}\n iconOnly\n type={'button'}\n onClick={goToNextMonth}\n disabled={!canGoNext}\n aria-label={'Next month'}\n >\n <ChevronRightIcon />\n </Button>\n </Row>\n <div className={s.weekdays}>\n {weekdays.map(wd => (\n <span key={wd} className={s.weekday}>\n {wd}\n </span>\n ))}\n </div>\n <div className={s.grid}>\n {days.map((d, i) => (\n <button\n key={i}\n type={'button'}\n className={cn(\n s.day,\n { [s.outside]: !d.isCurrentMonth },\n { [s.today]: d.isToday },\n { [s.selected]: d.isSelected },\n )}\n disabled={d.isDisabled}\n onClick={() => handleDayClick(d.date)}\n aria-label={d.date.toLocaleDateString(undefined, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })}\n >\n {d.day}\n </button>\n ))}\n </div>\n </div>,\n document.body,\n )\n : null}\n </>\n );\n}\n\nexport { DatePicker };\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"date-picker.js","sources":["../../../src/form/DatePicker/date-picker.tsx"],"sourcesContent":["import inputStyles from '@constellation/form/Input/input.module.scss';\nimport { Label } from '@constellation/form/Label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@constellation/form/Select';\nimport { useBreakpoint } from '@constellation/hooks/use-mobile';\nimport { Row } from '@constellation/layout';\nimport { type DatePickerProps } from '@constellation/types';\nimport { Typography } from '@constellation/typography/Typography';\nimport { Button } from '@constellation/ui';\nimport cn from 'clsx';\nimport { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport s from './date-picker.module.scss';\nimport {\n formatDateValue,\n formatDisplayDate,\n formatIso,\n isDateWithinRange,\n maskDateInput,\n normalizeIsoValue,\n parseDateValue,\n useCalendar,\n} from './use-calendar';\n\nconst ANIMATION_DURATION = 200;\n\nfunction DatePicker({\n value: valueProp,\n defaultValue,\n onChange,\n label,\n helperText,\n error = false,\n disabled = false,\n sizeVariant,\n placeholder,\n min,\n max,\n required = false,\n id,\n className,\n name,\n}: DatePickerProps) {\n const generatedId = React.useId();\n const triggerId = id ?? generatedId;\n const helperId = `${triggerId}-helper`;\n const fieldRef = React.useRef<HTMLDivElement | null>(null);\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const { isBelow } = useBreakpoint();\n const resolvedSize = sizeVariant ?? (isBelow(900) ? 'sm' : 'md');\n\n const isControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = React.useState(() =>\n normalizeIsoValue(defaultValue),\n );\n const currentValue = isControlled ? valueProp : uncontrolledValue;\n const normalizedCurrentValue = normalizeIsoValue(currentValue);\n\n const [isOpen, setIsOpen] = React.useState(false);\n const [isClosing, setIsClosing] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const [manualError, setManualError] = React.useState<string | null>(null);\n const [inputValue, setInputValue] = React.useState(() =>\n formatDisplayDate(normalizedCurrentValue),\n );\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const [position, setPosition] = React.useState<{ top: number; left: number }>({\n top: 0,\n left: 0,\n });\n const hasError = error || !!manualError;\n\n const displayOpen = isOpen || isClosing;\n\n // Pixel-accurate positioning via fixed + raw getBoundingClientRect — matches\n // Tooltip / DropdownMenu / Select. Recomputes on scroll + resize so the\n // popover tracks the trigger when the page or a parent scrolls. Flips\n // above the trigger when there isn't enough room below (DropdownMenu pattern).\n const calcPosition = React.useCallback(() => {\n const rect = fieldRef.current?.getBoundingClientRect();\n if (!rect) return;\n const offset = 4;\n const popoverHeight = contentRef.current?.offsetHeight ?? 0;\n const fitsBelow = window.innerHeight - rect.bottom - offset >= popoverHeight;\n const top = fitsBelow ? rect.bottom + offset : rect.top - popoverHeight - offset;\n setPosition({ top, left: rect.left });\n }, []);\n\n React.useLayoutEffect(() => {\n if (!displayOpen) return;\n calcPosition();\n }, [displayOpen, calcPosition]);\n\n React.useEffect(() => {\n if (!displayOpen) return;\n window.addEventListener('scroll', calcPosition, true);\n window.addEventListener('resize', calcPosition);\n return () => {\n window.removeEventListener('scroll', calcPosition, true);\n window.removeEventListener('resize', calcPosition);\n };\n }, [displayOpen, calcPosition]);\n\n const hasValue = Boolean(normalizedCurrentValue);\n const helperMessage = manualError ?? helperText;\n const draftDate = parseDateValue(inputValue);\n const calendarValue = draftDate ? inputValue : isFocused ? undefined : normalizedCurrentValue;\n const resolvedPlaceholder = placeholder ?? 'MM/DD/YYYY';\n\n React.useEffect(() => {\n setInputValue(formatDisplayDate(normalizedCurrentValue));\n setManualError(null);\n }, [normalizedCurrentValue]);\n\n const {\n viewYear,\n viewMonth,\n setViewYear,\n setViewMonth,\n monthNames,\n yearRange,\n weekdays,\n days,\n goToPrevMonth,\n goToNextMonth,\n canGoPrev,\n canGoNext,\n } = useCalendar({ selectedDate: calendarValue, min, max });\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n if (open) {\n clearCloseTimer();\n setIsClosing(false);\n setIsOpen(true);\n return;\n }\n\n setIsOpen(false);\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, ANIMATION_DURATION);\n },\n [clearCloseTimer],\n );\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n // Click-outside handler\n React.useEffect(() => {\n if (!displayOpen) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (fieldRef.current?.contains(target)) return;\n if (contentRef.current?.contains(target)) return;\n handleOpenChange(false);\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [displayOpen, handleOpenChange]);\n\n const syncCalendarPreview = React.useCallback(\n (maskedValue: string) => {\n const digits = maskedValue.replace(/\\D/g, '');\n\n if (digits.length >= 2) {\n const month = Number(digits.slice(0, 2));\n if (month >= 1 && month <= 12) {\n setViewMonth(month - 1);\n }\n }\n\n if (digits.length === 8) {\n const year = Number(digits.slice(4, 8));\n if (year >= 1000 && year <= 9999) {\n setViewYear(year);\n }\n }\n },\n [setViewMonth, setViewYear],\n );\n\n const handleDayClick = React.useCallback(\n (date: Date) => {\n const isoDate = formatIso(date);\n const displayDate = formatDateValue(date);\n if (!isControlled) {\n setUncontrolledValue(isoDate);\n }\n setInputValue(displayDate);\n setManualError(null);\n onChange?.(isoDate);\n handleOpenChange(false);\n },\n [isControlled, onChange, handleOpenChange],\n );\n\n const syncSelectedDate = React.useCallback(\n (date: Date) => {\n const isoDate = formatIso(date);\n const displayDate = formatDateValue(date);\n\n if (!isDateWithinRange(date, min, max)) {\n return;\n }\n\n if (!isControlled) {\n setUncontrolledValue(isoDate);\n }\n setInputValue(displayDate);\n setManualError(null);\n onChange?.(isoDate);\n },\n [isControlled, max, min, onChange],\n );\n\n const commitValue = React.useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n onChange?.(nextValue);\n },\n [isControlled, onChange],\n );\n\n const commitTypedValue = React.useCallback(() => {\n const trimmedValue = inputValue.trim();\n\n if (!trimmedValue) {\n setManualError(null);\n commitValue('');\n setInputValue('');\n return;\n }\n\n const parsedDate = parseDateValue(trimmedValue);\n\n if (!parsedDate) {\n setManualError('Enter a valid date in MM/DD/YYYY format.');\n return;\n }\n\n if (!isDateWithinRange(parsedDate, min, max)) {\n setManualError('Entered date is outside the allowed range.');\n return;\n }\n\n const normalizedDate = formatDateValue(parsedDate);\n const isoDate = formatIso(parsedDate);\n setManualError(null);\n commitValue(isoDate);\n setInputValue(normalizedDate);\n }, [commitValue, inputValue, max, min]);\n\n const updateDateFromCalendarView = React.useCallback(\n (nextYear: number, nextMonth: number) => {\n const baseDate = parseDateValue(inputValue) ?? parseDateValue(normalizedCurrentValue);\n\n if (!baseDate) {\n return;\n }\n\n const lastDayOfMonth = new Date(nextYear, nextMonth + 1, 0).getDate();\n const nextDay = Math.min(baseDate.getDate(), lastDayOfMonth);\n const nextDate = new Date(nextYear, nextMonth, nextDay);\n\n syncSelectedDate(nextDate);\n },\n [inputValue, normalizedCurrentValue, syncSelectedDate],\n );\n\n const containerClasses = cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: hasError },\n { [inputStyles.disabled]: disabled },\n { [inputStyles.placeholder]: !!resolvedPlaceholder },\n { [inputStyles['has-value']]: hasValue || !!inputValue },\n { [inputStyles['is-focused']]: isFocused || displayOpen },\n className,\n );\n\n return (\n <>\n <div data-slot={'date-picker'} data-constellation-field className={containerClasses}>\n <div ref={fieldRef} className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId}>\n {label}\n {required && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n <input\n ref={inputRef}\n id={triggerId}\n type={'text'}\n className={cn(inputStyles['input-field'], s['text-input'])}\n value={inputValue}\n disabled={disabled}\n placeholder={resolvedPlaceholder}\n aria-invalid={hasError ? 'true' : undefined}\n aria-describedby={helperMessage ? helperId : undefined}\n inputMode={'numeric'}\n autoComplete={'off'}\n maxLength={10}\n pattern={'\\\\d{2}/\\\\d{2}/\\\\d{4}'}\n onChange={e => {\n const maskedValue = maskDateInput(e.target.value);\n setInputValue(maskedValue);\n syncCalendarPreview(maskedValue);\n setManualError(null);\n }}\n onFocus={() => {\n setIsFocused(true);\n handleOpenChange(true);\n syncCalendarPreview(inputValue);\n }}\n onBlur={() => {\n setIsFocused(false);\n commitTypedValue();\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n commitTypedValue();\n handleOpenChange(false);\n }\n\n // Guarded + preventDefault so Escape dismisses this calendar and\n // not the Dialog around it, while a closed field ignores the key.\n if (e.key === 'Escape' && displayOpen) {\n e.preventDefault();\n setManualError(null);\n setInputValue(formatDisplayDate(normalizedCurrentValue));\n handleOpenChange(false);\n }\n }}\n />\n <button\n type={'button'}\n className={s.trigger}\n aria-label={'Open calendar'}\n disabled={disabled}\n onMouseDown={e => e.preventDefault()}\n onClick={() => {\n handleOpenChange(true);\n syncCalendarPreview(inputValue);\n inputRef.current?.focus();\n }}\n >\n <CalendarIcon className={s['trigger-icon']} />\n <span className={'srOnly'}>Open calendar</span>\n </button>\n </div>\n {helperMessage ? (\n <Typography id={helperId} variant={'caption'} className={inputStyles['helper-text']}>\n {helperMessage}\n </Typography>\n ) : null}\n </div>\n {name && <input type={'hidden'} name={name} value={normalizedCurrentValue} />}\n {displayOpen\n ? createPortal(\n <div\n ref={contentRef}\n className={s.content}\n data-state={isOpen ? 'open' : 'closed'}\n data-closing={isClosing ? 'true' : undefined}\n data-side={'bottom'}\n style={{\n position: 'fixed',\n top: position.top,\n left: position.left,\n }}\n >\n <Row gap={1} justify={'space-between'}>\n <Button\n type={'button'}\n theme={'inherit'}\n size={'sm'}\n variant={'ghost'}\n iconOnly\n onClick={goToPrevMonth}\n disabled={!canGoPrev}\n aria-label={'Previous month'}\n >\n <ChevronLeftIcon />\n </Button>\n <Row gap={1}>\n <Select\n value={String(viewMonth)}\n onValueChange={v => {\n const nextMonth = Number(v);\n setViewMonth(nextMonth);\n updateDateFromCalendarView(viewYear, nextMonth);\n }}\n >\n <SelectTrigger className={s['header-trigger']} aria-label={'Month'}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {monthNames.map((name, i) => (\n <SelectItem key={i} value={String(i)}>\n {name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Select\n value={String(viewYear)}\n onValueChange={v => {\n const nextYear = Number(v);\n setViewYear(nextYear);\n updateDateFromCalendarView(nextYear, viewMonth);\n }}\n >\n <SelectTrigger className={s['header-trigger']} aria-label={'Year'}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {yearRange.map(y => (\n <SelectItem key={y} value={String(y)}>\n {y}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Row>\n <Button\n theme={'inherit'}\n size={'sm'}\n variant={'ghost'}\n iconOnly\n type={'button'}\n onClick={goToNextMonth}\n disabled={!canGoNext}\n aria-label={'Next month'}\n >\n <ChevronRightIcon />\n </Button>\n </Row>\n <div className={s.weekdays}>\n {weekdays.map(wd => (\n <span key={wd} className={s.weekday}>\n {wd}\n </span>\n ))}\n </div>\n <div className={s.grid}>\n {days.map((d, i) => (\n <button\n key={i}\n type={'button'}\n className={cn(\n s.day,\n { [s.outside]: !d.isCurrentMonth },\n { [s.today]: d.isToday },\n { [s.selected]: d.isSelected },\n )}\n disabled={d.isDisabled}\n onClick={() => handleDayClick(d.date)}\n aria-label={d.date.toLocaleDateString(undefined, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })}\n >\n {d.day}\n </button>\n ))}\n </div>\n </div>,\n document.body,\n )\n : null}\n </>\n );\n}\n\nexport { DatePicker };\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
package/dist/form.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { C as Checkbox, a as CheckboxProps, D as DatePicker, L as Label, c as LabelProps, S as Select, e as SelectContent, g as SelectField, i as SelectGroup, j as SelectItem, m as SelectSeparator, o as SelectTrigger, p as SelectValue } from './index-DVEBz660.js';
1
+ export { C as Checkbox, a as CheckboxProps, D as DatePicker, L as Label, c as LabelProps, S as Select, e as SelectContent, g as SelectField, i as SelectGroup, j as SelectItem, m as SelectSeparator, o as SelectTrigger, p as SelectValue } from './index-h4thndEb.js';
2
2
  export { I as Input, a as InputBaseProps } from './input-CWHXOpeH.js';
3
3
  import 'react';
4
4
  import 'class-variance-authority';
@@ -3,7 +3,7 @@ import React__default from 'react';
3
3
  import { d as SidebarSection, S as SidebarNavItem, B as BreadcrumbItemData, c as NavUserProps } from './nav-user-CJIcWKyY.js';
4
4
  import { R as RowProps } from './row-CS9-talZ.js';
5
5
  import { I as Input } from './input-CWHXOpeH.js';
6
- import { b as TooltipContent, B as Button } from './tooltip-zOT3UHCF.js';
6
+ import { b as TooltipContent, B as Button } from './tooltip-C25-bG7o.js';
7
7
  import { VariantProps } from 'class-variance-authority';
8
8
  import * as class_variance_authority_types from 'class-variance-authority/types';
9
9
 
@@ -2,7 +2,7 @@ import { VariantProps } from 'class-variance-authority';
2
2
  import * as React from 'react';
3
3
  import React__default, { ReactNode } from 'react';
4
4
  import * as class_variance_authority_types from 'class-variance-authority/types';
5
- import './tooltip-zOT3UHCF.js';
5
+ import './tooltip-C25-bG7o.js';
6
6
  import { e as TypographyVariant } from './typography-DOZHFR5A.js';
7
7
 
8
8
  type AlertTheme = 'default' | 'primary' | 'secondary' | 'success' | 'destructive' | 'warning' | 'info' | 'slate';
@@ -45,7 +45,7 @@ type SortContextValue = {
45
45
  };
46
46
 
47
47
  declare const alertVariants: (props?: ({
48
- theme?: "destructive" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | "default" | null | undefined;
48
+ theme?: "default" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
49
49
  } & class_variance_authority_types.ClassProp) | undefined) => string;
50
50
 
51
51
  interface AlertProps extends VariantProps<typeof alertVariants> {
@@ -82,17 +82,36 @@ type AvatarFallbackProps = React.HTMLAttributes<HTMLSpanElement>;
82
82
  declare const AvatarFallback: React.ForwardRefExoticComponent<AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>>;
83
83
 
84
84
  declare const chipVariants: (props?: ({
85
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
86
- size?: "sm" | "md" | null | undefined;
85
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
86
+ variant?: "soft" | "outline" | "solid" | null | undefined;
87
+ size?: "sm" | "md" | "2xs" | "xs" | null | undefined;
88
+ shape?: "rounded" | "pill" | null | undefined;
89
+ dashed?: boolean | null | undefined;
90
+ mono?: boolean | null | undefined;
91
+ uppercase?: boolean | null | undefined;
87
92
  wrap?: boolean | null | undefined;
88
93
  } & class_variance_authority_types.ClassProp) | undefined) => string;
89
94
 
90
95
  interface ChipProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof chipVariants> {
96
+ /**
97
+ * Any colour outside the theme scale — a category hue, a dietary marker.
98
+ * Overrides the whole set of colour roles the theme would otherwise supply,
99
+ * so one value is enough for every `variant`.
100
+ */
101
+ color?: string;
91
102
  }
103
+ /**
104
+ * A small status marker.
105
+ *
106
+ * `variant` chooses how much weight it carries: `soft` (a tinted fill, the
107
+ * default) reads as ambient, `outline` recedes further, and `solid` is a claim.
108
+ * `dashed` marks the value as provisional — a guess rather than a reading —
109
+ * which is a distinction worth drawing without spending a second colour on it.
110
+ */
92
111
  declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLSpanElement>>;
93
112
 
94
113
  declare const codeBlockVariants: (props?: ({
95
- theme?: "destructive" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | "default" | null | undefined;
114
+ theme?: "default" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
96
115
  size?: "sm" | "md" | "lg" | null | undefined;
97
116
  } & class_variance_authority_types.ClassProp) | undefined) => string;
98
117
 
@@ -165,7 +184,7 @@ declare function DialogPortal({ children }: {
165
184
  }): React.JSX.Element;
166
185
 
167
186
  declare const emptyStateVariants: (props?: ({
168
- theme?: "destructive" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | "default" | null | undefined;
187
+ theme?: "default" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
169
188
  size?: "sm" | "md" | "lg" | null | undefined;
170
189
  } & class_variance_authority_types.ClassProp) | undefined) => string;
171
190
 
@@ -182,8 +201,8 @@ interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement>, VariantP
182
201
  declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
183
202
 
184
203
  declare const iconVariants: (props?: ({
185
- variant?: "contained" | "outlined" | "ghost" | "plain" | null | undefined;
186
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
204
+ variant?: "outlined" | "contained" | "ghost" | "plain" | null | undefined;
205
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
187
206
  size?: "sm" | "md" | "lg" | "xs" | null | undefined;
188
207
  rounded?: boolean | "extra" | null | undefined;
189
208
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -234,7 +253,7 @@ interface ListProps extends React.HTMLAttributes<HTMLUListElement | HTMLOListEle
234
253
  size?: 'xs' | 'sm' | 'md' | 'lg';
235
254
  muted?: boolean;
236
255
  }
237
- declare const List: React.ForwardRefExoticComponent<ListProps & React.RefAttributes<HTMLUListElement | HTMLOListElement>>;
256
+ declare const List: React.ForwardRefExoticComponent<ListProps & React.RefAttributes<HTMLOListElement | HTMLUListElement>>;
238
257
  interface ListItemProps extends React.LiHTMLAttributes<HTMLLIElement> {
239
258
  icon?: React.ReactNode;
240
259
  }
@@ -243,7 +262,7 @@ declare const ListItem: React.ForwardRefExoticComponent<ListItemProps & React.Re
243
262
  declare const Pagination: React.ForwardRefExoticComponent<PaginationProps & React.RefAttributes<HTMLElement>>;
244
263
 
245
264
  declare const progressBarVariants: (props?: ({
246
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
265
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
247
266
  size?: "sm" | "md" | "lg" | "xs" | null | undefined;
248
267
  rounded?: boolean | null | undefined;
249
268
  animated?: boolean | null | undefined;
@@ -294,8 +313,34 @@ interface StatCardProps extends React.ComponentPropsWithoutRef<'div'> {
294
313
  }
295
314
  declare const StatCard: React.ForwardRefExoticComponent<StatCardProps & React.RefAttributes<HTMLDivElement>>;
296
315
 
316
+ declare const statusDotVariants: (props?: ({
317
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
318
+ size?: "sm" | "md" | "lg" | null | undefined;
319
+ glow?: boolean | null | undefined;
320
+ pulse?: boolean | null | undefined;
321
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
322
+
323
+ interface StatusDotProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>, VariantProps<typeof statusDotVariants> {
324
+ /** A colour outside the theme scale. */
325
+ color?: string;
326
+ /** Accessible name. Omit only when adjacent text already says the state. */
327
+ label?: string;
328
+ }
329
+ /**
330
+ * The dot that says what state a connection or process is in.
331
+ *
332
+ * Deliberately not a `Chip`: a chip is a bordered object that holds a word,
333
+ * where this is a single mark that usually sits *beside* one. Pairing it with
334
+ * text is the caller's job, which keeps the wording — and its translation —
335
+ * out of here.
336
+ *
337
+ * `glow` is for the state worth catching in peripheral vision (a save landing);
338
+ * `pulse` for one that is still in flight.
339
+ */
340
+ declare const StatusDot: React.ForwardRefExoticComponent<StatusDotProps & React.RefAttributes<HTMLSpanElement>>;
341
+
297
342
  declare const stepProgressVariants: (props?: ({
298
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
343
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
299
344
  size?: "sm" | "md" | "lg" | null | undefined;
300
345
  orientation?: "horizontal" | "vertical" | null | undefined;
301
346
  stretch?: boolean | null | undefined;
@@ -318,7 +363,7 @@ interface StepProgressProps extends Omit<React.HTMLAttributes<HTMLOListElement>,
318
363
  declare const StepProgress: React.ForwardRefExoticComponent<StepProgressProps & React.RefAttributes<HTMLOListElement>>;
319
364
 
320
365
  declare const switchVariants: (props?: ({
321
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
366
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
322
367
  size?: "sm" | "md" | "lg" | null | undefined;
323
368
  } & class_variance_authority_types.ClassProp) | undefined) => string;
324
369
 
@@ -411,8 +456,8 @@ interface TableToolbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, '
411
456
  declare const TableToolbar: React.ForwardRefExoticComponent<TableToolbarProps & React.RefAttributes<HTMLDivElement>>;
412
457
 
413
458
  declare const toggleVariants: (props?: ({
414
- variant?: "contained" | "outlined" | "ghost" | null | undefined;
415
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
459
+ variant?: "outlined" | "contained" | "ghost" | null | undefined;
460
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
416
461
  size?: "sm" | "md" | "lg" | "xs" | null | undefined;
417
462
  iconOnly?: boolean | null | undefined;
418
463
  rounded?: boolean | "extra" | null | undefined;
@@ -446,5 +491,5 @@ type ToggleGroupMultipleProps = ToggleGroupBaseProps & {
446
491
  type ToggleGroupProps = ToggleGroupSingleProps | ToggleGroupMultipleProps;
447
492
  declare const ToggleGroup: React.ForwardRefExoticComponent<ToggleGroupProps & React.RefAttributes<HTMLDivElement>>;
448
493
 
449
- export { DialogHeader as B, Chip as C, DevIndicator as D, DialogOverlay as E, DialogPortal as F, DialogTitle as H, DialogTrigger as I, EmptyState as K, Icon as M, List as O, ListItem as P, Pagination as T, ProgressBar as V, Separator as Y, Alert as a, StatCard as a0, StepProgress as a7, Switch as a9, Table as ab, TableActionCell as ac, TableBody as af, TableCard as ah, TableCell as ai, TableFooter as aj, TableHead as ak, TableHeader as al, TableRow as am, TableSortableHeader as an, TableToolbar as ap, Toggle as ar, ToggleGroup as as, persistAlert as aw, AlertBanner as b, AlertDescription as d, AlertProvider as g, AlertTitle as i, Avatar as j, AvatarFallback as k, AvatarImage as m, CodeBlock as q, Dialog as t, DialogClose as u, DialogContent as w, DialogDescription as y, DialogFooter as z };
450
- export type { SortDirection as $, AlertContextValue as A, DialogProps as G, DialogTriggerProps as J, EmptyStateProps as L, IconProps as N, ListItemProps as Q, ListProps as R, SortState as S, PaginationProps as U, ProgressBarProps as W, PushAlertInput as X, SeparatorProps as Z, SortContextValue as _, StatCardDirection as a1, StatCardProps as a2, StatCardSize as a3, StatCardTheme as a4, StatCardVariant as a5, Step as a6, StepProgressProps as a8, SwitchProps as aa, TableActionCellProps as ad, TableActionItem as ae, TableBodyProps as ag, TableSortableHeaderProps as ao, TableToolbarProps as aq, ToggleGroupProps as at, ToggleProps as au, TrendDirection as av, AlertBannerProps as c, AlertMessage as e, AlertProps as f, AlertTheme as h, AvatarFallbackProps as l, AvatarImageProps as n, AvatarProps as o, ChipProps as p, CodeBlockProps as r, DevIndicatorProps as s, DialogCloseProps as v, DialogContentProps as x };
494
+ export { DialogHeader as B, Chip as C, DevIndicator as D, DialogOverlay as E, DialogPortal as F, DialogTitle as H, DialogTrigger as I, EmptyState as K, Icon as M, List as O, ListItem as P, Pagination as T, ProgressBar as V, Separator as Y, Alert as a, StatCard as a0, StatusDot as a6, StepProgress as a9, Switch as ab, Table as ad, TableActionCell as ae, TableBody as ah, TableCard as aj, TableCell as ak, TableFooter as al, TableHead as am, TableHeader as an, TableRow as ao, TableSortableHeader as ap, TableToolbar as ar, Toggle as at, ToggleGroup as au, persistAlert as ay, statusDotVariants as az, AlertBanner as b, AlertDescription as d, AlertProvider as g, AlertTitle as i, Avatar as j, AvatarFallback as k, AvatarImage as m, CodeBlock as q, Dialog as t, DialogClose as u, DialogContent as w, DialogDescription as y, DialogFooter as z };
495
+ export type { SortDirection as $, AlertContextValue as A, DialogProps as G, DialogTriggerProps as J, EmptyStateProps as L, IconProps as N, ListItemProps as Q, ListProps as R, SortState as S, PaginationProps as U, ProgressBarProps as W, PushAlertInput as X, SeparatorProps as Z, SortContextValue as _, StatCardDirection as a1, StatCardProps as a2, StatCardSize as a3, StatCardTheme as a4, StatCardVariant as a5, StatusDotProps as a7, Step as a8, StepProgressProps as aa, SwitchProps as ac, TableActionCellProps as af, TableActionItem as ag, TableBodyProps as ai, TableSortableHeaderProps as aq, TableToolbarProps as as, ToggleGroupProps as av, ToggleProps as aw, TrendDirection as ax, AlertBannerProps as c, AlertMessage as e, AlertProps as f, AlertTheme as h, AvatarFallbackProps as l, AvatarImageProps as n, AvatarProps as o, ChipProps as p, CodeBlockProps as r, DevIndicatorProps as s, DialogCloseProps as v, DialogContentProps as x };
@@ -95,7 +95,7 @@ declare function DatePicker({ value: valueProp, defaultValue, onChange, label, h
95
95
 
96
96
  declare const labelVariants: (props?: ({
97
97
  size?: "sm" | "md" | "lg" | null | undefined;
98
- theme?: "destructive" | "inherit" | "primary" | "secondary" | "warning" | "success" | "info" | "slate" | null | undefined;
98
+ theme?: "inherit" | "primary" | "secondary" | "success" | "destructive" | "warning" | "info" | "slate" | null | undefined;
99
99
  } & class_variance_authority_types.ClassProp) | undefined) => string;
100
100
 
101
101
  interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement>, VariantProps<typeof labelVariants> {
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  export { Logo, LogoProps } from './brand.js';
2
- export { C as Checkbox, a as CheckboxProps, D as DatePicker, b as DatePickerProps, F as FormTheme, L as Label, c as LabelProps, S as Select, d as SelectAlign, e as SelectContent, f as SelectContentProps, g as SelectField, h as SelectFieldProps, i as SelectGroup, j as SelectItem, k as SelectPosition, l as SelectProps, m as SelectSeparator, n as SelectSide, o as SelectTrigger, p as SelectValue } from './index-DVEBz660.js';
2
+ export { C as Checkbox, a as CheckboxProps, D as DatePicker, b as DatePickerProps, F as FormTheme, L as Label, c as LabelProps, S as Select, d as SelectAlign, e as SelectContent, f as SelectContentProps, g as SelectField, h as SelectFieldProps, i as SelectGroup, j as SelectItem, k as SelectPosition, l as SelectProps, m as SelectSeparator, n as SelectSide, o as SelectTrigger, p as SelectValue } from './index-h4thndEb.js';
3
3
  export { I as Input, a as InputBaseProps } from './input-CWHXOpeH.js';
4
- import { S as SidebarContextValue } from './index-CBGZtocA.js';
5
- export { A as AppContent, a as AppFooter, b as AppFooterProps, c as AppShell, d as AppShellProps, e as AppSidebar, f as AppSidebarHeader, g as AppSidebarHeaderProps, h as AppSidebarProps, C as Collapse, i as CollapseProps, j as Column, k as ColumnProps, l as Container, m as ContainerProps, G as Grid, n as GridColumns, o as GridProps, R as Row, p as Sidebar, q as SidebarContent, r as SidebarFooter, s as SidebarGroup, t as SidebarGroupAction, u as SidebarGroupContent, v as SidebarGroupLabel, w as SidebarHeader, x as SidebarInput, y as SidebarInset, z as SidebarMenu, B as SidebarMenuAction, D as SidebarMenuBadge, E as SidebarMenuButton, F as SidebarMenuItem, H as SidebarMenuSkeleton, I as SidebarMenuSub, J as SidebarMenuSubButton, K as SidebarMenuSubItem, L as SidebarProvider, M as SidebarRail, N as SidebarTrigger, O as SidebarVariant, P as Skeleton } from './index-CBGZtocA.js';
6
- import { A as AlertContextValue, S as SortState } from './index-BeCWb0Ix.js';
7
- export { a as Alert, b as AlertBanner, c as AlertBannerProps, d as AlertDescription, e as AlertMessage, f as AlertProps, g as AlertProvider, h as AlertTheme, i as AlertTitle, j as Avatar, k as AvatarFallback, l as AvatarFallbackProps, m as AvatarImage, n as AvatarImageProps, o as AvatarProps, C as Chip, p as ChipProps, q as CodeBlock, r as CodeBlockProps, D as DevIndicator, s as DevIndicatorProps, t as Dialog, u as DialogClose, v as DialogCloseProps, w as DialogContent, x as DialogContentProps, y as DialogDescription, z as DialogFooter, B as DialogHeader, E as DialogOverlay, F as DialogPortal, G as DialogProps, H as DialogTitle, I as DialogTrigger, J as DialogTriggerProps, K as EmptyState, L as EmptyStateProps, M as Icon, N as IconProps, O as List, P as ListItem, Q as ListItemProps, R as ListProps, T as Pagination, U as PaginationProps, V as ProgressBar, W as ProgressBarProps, X as PushAlertInput, Y as Separator, Z as SeparatorProps, _ as SortContextValue, $ as SortDirection, a0 as StatCard, a1 as StatCardDirection, a2 as StatCardProps, a3 as StatCardSize, a4 as StatCardTheme, a5 as StatCardVariant, a6 as Step, a7 as StepProgress, a8 as StepProgressProps, a9 as Switch, aa as SwitchProps, ab as Table, ac as TableActionCell, ad as TableActionCellProps, ae as TableActionItem, af as TableBody, ag as TableBodyProps, ah as TableCard, ai as TableCell, aj as TableFooter, ak as TableHead, al as TableHeader, am as TableRow, an as TableSortableHeader, ao as TableSortableHeaderProps, ap as TableToolbar, aq as TableToolbarProps, ar as Toggle, as as ToggleGroup, at as ToggleGroupProps, au as ToggleProps, av as TrendDirection, aw as persistAlert } from './index-BeCWb0Ix.js';
4
+ import { S as SidebarContextValue } from './index-BwTP9oMP.js';
5
+ export { A as AppContent, a as AppFooter, b as AppFooterProps, c as AppShell, d as AppShellProps, e as AppSidebar, f as AppSidebarHeader, g as AppSidebarHeaderProps, h as AppSidebarProps, C as Collapse, i as CollapseProps, j as Column, k as ColumnProps, l as Container, m as ContainerProps, G as Grid, n as GridColumns, o as GridProps, R as Row, p as Sidebar, q as SidebarContent, r as SidebarFooter, s as SidebarGroup, t as SidebarGroupAction, u as SidebarGroupContent, v as SidebarGroupLabel, w as SidebarHeader, x as SidebarInput, y as SidebarInset, z as SidebarMenu, B as SidebarMenuAction, D as SidebarMenuBadge, E as SidebarMenuButton, F as SidebarMenuItem, H as SidebarMenuSkeleton, I as SidebarMenuSub, J as SidebarMenuSubButton, K as SidebarMenuSubItem, L as SidebarProvider, M as SidebarRail, N as SidebarTrigger, O as SidebarVariant, P as Skeleton } from './index-BwTP9oMP.js';
6
+ import { A as AlertContextValue, S as SortState } from './index-DCtv8Gm1.js';
7
+ export { a as Alert, b as AlertBanner, c as AlertBannerProps, d as AlertDescription, e as AlertMessage, f as AlertProps, g as AlertProvider, h as AlertTheme, i as AlertTitle, j as Avatar, k as AvatarFallback, l as AvatarFallbackProps, m as AvatarImage, n as AvatarImageProps, o as AvatarProps, C as Chip, p as ChipProps, q as CodeBlock, r as CodeBlockProps, D as DevIndicator, s as DevIndicatorProps, t as Dialog, u as DialogClose, v as DialogCloseProps, w as DialogContent, x as DialogContentProps, y as DialogDescription, z as DialogFooter, B as DialogHeader, E as DialogOverlay, F as DialogPortal, G as DialogProps, H as DialogTitle, I as DialogTrigger, J as DialogTriggerProps, K as EmptyState, L as EmptyStateProps, M as Icon, N as IconProps, O as List, P as ListItem, Q as ListItemProps, R as ListProps, T as Pagination, U as PaginationProps, V as ProgressBar, W as ProgressBarProps, X as PushAlertInput, Y as Separator, Z as SeparatorProps, _ as SortContextValue, $ as SortDirection, a0 as StatCard, a1 as StatCardDirection, a2 as StatCardProps, a3 as StatCardSize, a4 as StatCardTheme, a5 as StatCardVariant, a6 as StatusDot, a7 as StatusDotProps, a8 as Step, a9 as StepProgress, aa as StepProgressProps, ab as Switch, ac as SwitchProps, ad as Table, ae as TableActionCell, af as TableActionCellProps, ag as TableActionItem, ah as TableBody, ai as TableBodyProps, aj as TableCard, ak as TableCell, al as TableFooter, am as TableHead, an as TableHeader, ao as TableRow, ap as TableSortableHeader, aq as TableSortableHeaderProps, ar as TableToolbar, as as TableToolbarProps, at as Toggle, au as ToggleGroup, av as ToggleGroupProps, aw as ToggleProps, ax as TrendDirection, ay as persistAlert, az as statusDotVariants } from './index-DCtv8Gm1.js';
8
8
  export { R as RowProps } from './row-CS9-talZ.js';
9
9
  export { Breadcrumbs, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, DropdownMenuItemProps, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuProps, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownMenuTriggerProps, Link, LinkProps, RouterAdapter, RouterProvider, Sheet, SheetBody, SheetClose, SheetCloseProps, SheetContent, SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetProps, SheetTitle, SheetTrigger, SheetTriggerProps, useRouterAdapter } from './navigation.js';
10
10
  export { B as BreadcrumbItemData, N as NavGroup, a as NavItem, b as NavUser, c as NavUserProps, S as SidebarNavItem, d as SidebarSection } from './nav-user-CJIcWKyY.js';
@@ -12,7 +12,7 @@ export { AppearanceTabs, AppearanceToggleDropdown } from './settings.js';
12
12
  export { a as User, b as UserMenuContent, U as UserMenuContentProps, c as UserMenuItem } from './user-menu-content-D0Ldzigm.js';
13
13
  export { Heading, TruncatedText, TruncatedTextProps } from './typography.js';
14
14
  export { T as Typography, a as TypographyAlign, b as TypographyProps, c as TypographyTheme, d as TypographyTransform, e as TypographyVariant, f as TypographyWeight } from './typography-DOZHFR5A.js';
15
- export { B as Button, a as ButtonProps, T as Tooltip, b as TooltipContent, c as TooltipContentProps, d as TooltipProps, e as TooltipProvider, f as TooltipTrigger, g as TooltipTriggerProps } from './tooltip-zOT3UHCF.js';
15
+ export { B as Button, a as ButtonProps, T as Tooltip, b as TooltipContent, c as TooltipContentProps, d as TooltipProps, e as TooltipProvider, f as TooltipTrigger, g as TooltipTriggerProps } from './tooltip-C25-bG7o.js';
16
16
  export { UserInfo } from './user.js';
17
17
  export { getCsrfToken } from './utils.js';
18
18
  import 'react';
package/dist/index.js CHANGED
@@ -50,6 +50,8 @@ export { Pagination } from './ui/Pagination/pagination.js';
50
50
  export { ProgressBar } from './ui/ProgressBar/progress-bar.js';
51
51
  export { Separator } from './ui/Separator/separator.js';
52
52
  export { StatCard } from './ui/StatCard/stat-card.js';
53
+ export { StatusDot } from './ui/StatusDot/status-dot.js';
54
+ export { statusDotVariants } from './ui/StatusDot/status-dot-variants.js';
53
55
  export { StepProgress } from './ui/StepProgress/step-progress.js';
54
56
  export { Switch } from './ui/Switch/switch.js';
55
57
  export { Table, TableBody, TableCard, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableSortableHeader } from './ui/Table/table.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -25,6 +25,8 @@ import '../../ui/Pagination/pagination.js';
25
25
  import '../../ui/ProgressBar/progress-bar.js';
26
26
  import '../../ui/Separator/separator.js';
27
27
  import '../../ui/StatCard/stat-card.js';
28
+ import '../../ui/StatusDot/status-dot.js';
29
+ import '../../ui/StatusDot/status-dot-variants.js';
28
30
  import '../../ui/StepProgress/step-progress.js';
29
31
  import '../../ui/Switch/switch.js';
30
32
  import '../../ui/Table/table.js';
@@ -1 +1 @@
1
- {"version":3,"file":"app-sidebar-header.js","sources":["../../../src/layout/AppSidebarHeader/app-sidebar-header.tsx"],"sourcesContent":["import { useSidebar } from '@constellation/hooks';\nimport { Row } from '@constellation/layout/Row';\nimport { SidebarTrigger } from '@constellation/layout/Sidebar';\nimport { Breadcrumbs } from '@constellation/navigation/Breadcrumbs';\nimport { NavUser, type NavUserProps } from '@constellation/navigation/NavUser';\nimport { AppearanceToggleDropdown } from '@constellation/settings';\nimport { type BreadcrumbItemData } from '@constellation/types';\nimport cn from 'clsx';\nimport * as React from 'react';\nimport s from './app-sidebar-header.module.scss';\n\nexport interface AppSidebarHeaderProps {\n breadcrumbs?: BreadcrumbItemData[];\n /** Omit to hide the account menu (e.g. on signed-out chrome). */\n user?: NavUserProps['user'];\n userMenu?: Omit<NavUserProps, 'user'>;\n /** Extra controls between the appearance toggle and the account menu. */\n actions?: React.ReactNode;\n}\n\nexport function AppSidebarHeader({\n breadcrumbs = [],\n user,\n userMenu,\n actions,\n}: AppSidebarHeaderProps) {\n const { state } = useSidebar();\n\n return (\n <Row\n data-slot={'app-sidebar-header'}\n el={'header'}\n align={'center'}\n gap={1}\n justify={'space-between'}\n className={cn(\n s['app-sidebar-header'],\n state === 'collapsed' && s['sidebar-header-collapsed'],\n )}\n >\n <Row gap={1}>\n <SidebarTrigger />\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n </Row>\n <Row gap={1} align={'center'}>\n {actions}\n <AppearanceToggleDropdown />\n {user && <NavUser user={user} {...userMenu} />}\n </Row>\n </Row>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBM,SAAU,gBAAgB,CAAC,EAC/B,WAAW,GAAG,EAAE,EAChB,IAAI,EACJ,QAAQ,EACR,OAAO,GACe,EAAA;AACtB,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE;IAE9B,QACEA,KAAC,GAAG,EAAA,EAAA,WAAA,EACS,oBAAoB,EAC/B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,EAAE,CACX,CAAC,CAAC,oBAAoB,CAAC,EACvB,KAAK,KAAK,WAAW,IAAI,CAAC,CAAC,0BAA0B,CAAC,CACvD,aAEDA,IAAA,CAAC,GAAG,IAAC,GAAG,EAAE,CAAC,EAAA,QAAA,EAAA,CACTC,GAAA,CAAC,cAAc,EAAA,EAAA,CAAG,EAClBA,IAAC,WAAW,EAAA,EAAC,WAAW,EAAE,WAAW,GAAI,CAAA,EAAA,CACrC,EACND,KAAC,GAAG,EAAA,EAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAA,QAAA,EAAA,CACzB,OAAO,EACRC,GAAA,CAAC,wBAAwB,KAAG,EAC3B,IAAI,IAAIA,GAAA,CAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAA,GAAM,QAAQ,GAAI,CAAA,EAAA,CAC1C,CAAA,EAAA,CACF;AAEV;;"}
1
+ {"version":3,"file":"app-sidebar-header.js","sources":["../../../src/layout/AppSidebarHeader/app-sidebar-header.tsx"],"sourcesContent":["import { useSidebar } from '@constellation/hooks';\nimport { Row } from '@constellation/layout/Row';\nimport { SidebarTrigger } from '@constellation/layout/Sidebar';\nimport { Breadcrumbs } from '@constellation/navigation/Breadcrumbs';\nimport { NavUser, type NavUserProps } from '@constellation/navigation/NavUser';\nimport { AppearanceToggleDropdown } from '@constellation/settings';\nimport { type BreadcrumbItemData } from '@constellation/types';\nimport cn from 'clsx';\nimport * as React from 'react';\nimport s from './app-sidebar-header.module.scss';\n\nexport interface AppSidebarHeaderProps {\n breadcrumbs?: BreadcrumbItemData[];\n /** Omit to hide the account menu (e.g. on signed-out chrome). */\n user?: NavUserProps['user'];\n userMenu?: Omit<NavUserProps, 'user'>;\n /** Extra controls between the appearance toggle and the account menu. */\n actions?: React.ReactNode;\n}\n\nexport function AppSidebarHeader({\n breadcrumbs = [],\n user,\n userMenu,\n actions,\n}: AppSidebarHeaderProps) {\n const { state } = useSidebar();\n\n return (\n <Row\n data-slot={'app-sidebar-header'}\n el={'header'}\n align={'center'}\n gap={1}\n justify={'space-between'}\n className={cn(\n s['app-sidebar-header'],\n state === 'collapsed' && s['sidebar-header-collapsed'],\n )}\n >\n <Row gap={1}>\n <SidebarTrigger />\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n </Row>\n <Row gap={1} align={'center'}>\n {actions}\n <AppearanceToggleDropdown />\n {user && <NavUser user={user} {...userMenu} />}\n </Row>\n </Row>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBM,SAAU,gBAAgB,CAAC,EAC/B,WAAW,GAAG,EAAE,EAChB,IAAI,EACJ,QAAQ,EACR,OAAO,GACe,EAAA;AACtB,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE;IAE9B,QACEA,KAAC,GAAG,EAAA,EAAA,WAAA,EACS,oBAAoB,EAC/B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,EAAE,CACX,CAAC,CAAC,oBAAoB,CAAC,EACvB,KAAK,KAAK,WAAW,IAAI,CAAC,CAAC,0BAA0B,CAAC,CACvD,aAEDA,IAAA,CAAC,GAAG,IAAC,GAAG,EAAE,CAAC,EAAA,QAAA,EAAA,CACTC,GAAA,CAAC,cAAc,EAAA,EAAA,CAAG,EAClBA,IAAC,WAAW,EAAA,EAAC,WAAW,EAAE,WAAW,GAAI,CAAA,EAAA,CACrC,EACND,KAAC,GAAG,EAAA,EAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAA,QAAA,EAAA,CACzB,OAAO,EACRC,GAAA,CAAC,wBAAwB,KAAG,EAC3B,IAAI,IAAIA,GAAA,CAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAA,GAAM,QAAQ,GAAI,CAAA,EAAA,CAC1C,CAAA,EAAA,CACF;AAEV;;"}
package/dist/layout.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- export { A as AppContent, a as AppFooter, b as AppFooterProps, c as AppShell, d as AppShellProps, e as AppSidebar, f as AppSidebarHeader, g as AppSidebarHeaderProps, h as AppSidebarProps, C as Collapse, i as CollapseProps, j as Column, k as ColumnProps, l as Container, G as Grid, R as Row, p as Sidebar, q as SidebarContent, r as SidebarFooter, s as SidebarGroup, t as SidebarGroupAction, u as SidebarGroupContent, v as SidebarGroupLabel, w as SidebarHeader, x as SidebarInput, y as SidebarInset, z as SidebarMenu, B as SidebarMenuAction, D as SidebarMenuBadge, E as SidebarMenuButton, F as SidebarMenuItem, H as SidebarMenuSkeleton, I as SidebarMenuSub, J as SidebarMenuSubButton, K as SidebarMenuSubItem, L as SidebarProvider, M as SidebarRail, N as SidebarTrigger, P as Skeleton } from './index-CBGZtocA.js';
1
+ export { A as AppContent, a as AppFooter, b as AppFooterProps, c as AppShell, d as AppShellProps, e as AppSidebar, f as AppSidebarHeader, g as AppSidebarHeaderProps, h as AppSidebarProps, C as Collapse, i as CollapseProps, j as Column, k as ColumnProps, l as Container, G as Grid, R as Row, p as Sidebar, q as SidebarContent, r as SidebarFooter, s as SidebarGroup, t as SidebarGroupAction, u as SidebarGroupContent, v as SidebarGroupLabel, w as SidebarHeader, x as SidebarInput, y as SidebarInset, z as SidebarMenu, B as SidebarMenuAction, D as SidebarMenuBadge, E as SidebarMenuButton, F as SidebarMenuItem, H as SidebarMenuSkeleton, I as SidebarMenuSub, J as SidebarMenuSubButton, K as SidebarMenuSubItem, L as SidebarProvider, M as SidebarRail, N as SidebarTrigger, P as Skeleton } from './index-BwTP9oMP.js';
2
2
  export { R as RowProps } from './row-CS9-talZ.js';
3
3
  import 'react';
4
4
  import './nav-user-CJIcWKyY.js';
5
5
  import 'lucide-react';
6
6
  import './user-menu-content-D0Ldzigm.js';
7
7
  import './input-CWHXOpeH.js';
8
- import './tooltip-zOT3UHCF.js';
8
+ import './tooltip-C25-bG7o.js';
9
9
  import 'class-variance-authority';
10
10
  import 'class-variance-authority/types';
@@ -18,6 +18,8 @@ import '../../ui/Pagination/pagination.js';
18
18
  import '../../ui/ProgressBar/progress-bar.js';
19
19
  import '../../ui/Separator/separator.js';
20
20
  import '../../ui/StatCard/stat-card.js';
21
+ import '../../ui/StatusDot/status-dot.js';
22
+ import '../../ui/StatusDot/status-dot-variants.js';
21
23
  import '../../ui/StepProgress/step-progress.js';
22
24
  import '../../ui/Switch/switch.js';
23
25
  import '../../ui/Table/table.js';
@@ -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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"}