@dev-dga/react 0.8.2 → 0.9.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 (82) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +2 -0
  3. package/dist/{chunk-EFKAKU2X.js → chunk-66EVFQVL.js} +2 -2
  4. package/dist/{chunk-SOIZIH7F.js → chunk-6DN3JE3P.js} +10 -1
  5. package/dist/chunk-6DN3JE3P.js.map +1 -0
  6. package/dist/{chunk-D7BZ6L4Z.cjs → chunk-BBGCS5PZ.cjs} +7 -2
  7. package/dist/chunk-BBGCS5PZ.cjs.map +1 -0
  8. package/dist/{chunk-MUM6HKPT.js → chunk-BTP7G7WR.js} +7 -2
  9. package/dist/chunk-BTP7G7WR.js.map +1 -0
  10. package/dist/{chunk-LES7CZSC.cjs → chunk-CISRE6BC.cjs} +14 -3
  11. package/dist/chunk-CISRE6BC.cjs.map +1 -0
  12. package/dist/{chunk-4ZCLTLVC.cjs → chunk-CVQFSXRR.cjs} +10 -1
  13. package/dist/chunk-CVQFSXRR.cjs.map +1 -0
  14. package/dist/{chunk-BNULFLPC.js → chunk-HBAHWCBK.js} +14 -3
  15. package/dist/chunk-HBAHWCBK.js.map +1 -0
  16. package/dist/{chunk-54GIEP6E.cjs → chunk-I6BOBHO6.cjs} +7 -2
  17. package/dist/chunk-I6BOBHO6.cjs.map +1 -0
  18. package/dist/{chunk-DBB47IAX.js → chunk-IFB53HNO.js} +1 -1
  19. package/dist/chunk-IFB53HNO.js.map +1 -0
  20. package/dist/{chunk-TWCX4EZR.js → chunk-JOJ23OD4.js} +6 -1
  21. package/dist/{chunk-TWCX4EZR.js.map → chunk-JOJ23OD4.js.map} +1 -1
  22. package/dist/{chunk-PI4OPECU.cjs → chunk-LG2IADSZ.cjs} +1 -1
  23. package/dist/{chunk-PI4OPECU.cjs.map → chunk-LG2IADSZ.cjs.map} +1 -1
  24. package/dist/{chunk-CHE75QHA.js → chunk-MCHL23CE.js} +1 -1
  25. package/dist/{chunk-CHE75QHA.js.map → chunk-MCHL23CE.js.map} +1 -1
  26. package/dist/{chunk-MWOGVEQB.cjs → chunk-NUC6WJU4.cjs} +5 -5
  27. package/dist/{chunk-MWOGVEQB.cjs.map → chunk-NUC6WJU4.cjs.map} +1 -1
  28. package/dist/{chunk-JQO3EFLX.cjs → chunk-PAUY27WX.cjs} +3 -14
  29. package/dist/chunk-PAUY27WX.cjs.map +1 -0
  30. package/dist/{chunk-6A73DWVA.js → chunk-UAECZXU5.js} +3 -14
  31. package/dist/chunk-UAECZXU5.js.map +1 -0
  32. package/dist/{chunk-43763K2A.cjs → chunk-WI4WQGF6.cjs} +1 -1
  33. package/dist/{chunk-43763K2A.cjs.map → chunk-WI4WQGF6.cjs.map} +1 -1
  34. package/dist/components/Combobox/Combobox.cjs +2 -2
  35. package/dist/components/Combobox/Combobox.js +1 -1
  36. package/dist/components/Combobox/index.cjs +2 -2
  37. package/dist/components/Combobox/index.js +1 -1
  38. package/dist/components/DateRangePicker/DateRangePicker.cjs +2 -2
  39. package/dist/components/DateRangePicker/DateRangePicker.js +1 -1
  40. package/dist/components/DateRangePicker/index.cjs +2 -2
  41. package/dist/components/DateRangePicker/index.js +1 -1
  42. package/dist/components/Modal/Modal.cjs +4 -2
  43. package/dist/components/Modal/Modal.cjs.map +1 -1
  44. package/dist/components/Modal/Modal.js +3 -1
  45. package/dist/components/Modal/index.cjs +4 -2
  46. package/dist/components/Modal/index.cjs.map +1 -1
  47. package/dist/components/Modal/index.js +3 -1
  48. package/dist/components/ScrollArea/ScrollArea.cjs +2 -2
  49. package/dist/components/ScrollArea/ScrollArea.js +1 -1
  50. package/dist/components/ScrollArea/index.cjs +2 -2
  51. package/dist/components/ScrollArea/index.js +1 -1
  52. package/dist/components/Sidebar/Sidebar.cjs +2 -2
  53. package/dist/components/Sidebar/Sidebar.js +1 -1
  54. package/dist/components/Sidebar/SidebarMenu.cjs +3 -3
  55. package/dist/components/Sidebar/SidebarMenu.js +2 -2
  56. package/dist/components/Sidebar/index.cjs +4 -4
  57. package/dist/components/Sidebar/index.js +3 -3
  58. package/dist/components/TagInput/TagInput.cjs +2 -2
  59. package/dist/components/TagInput/TagInput.js +1 -1
  60. package/dist/components/TagInput/index.cjs +2 -2
  61. package/dist/components/TagInput/index.js +1 -1
  62. package/dist/components/Tooltip/Tooltip.cjs +2 -2
  63. package/dist/components/Tooltip/Tooltip.js +1 -1
  64. package/dist/components/Tooltip/index.cjs +2 -2
  65. package/dist/components/Tooltip/index.js +1 -1
  66. package/dist/index.cjs +11 -9
  67. package/dist/index.cjs.map +1 -1
  68. package/dist/index.d.cts +20 -6
  69. package/dist/index.d.ts +20 -6
  70. package/dist/index.js +10 -8
  71. package/package.json +3 -3
  72. package/dist/chunk-4ZCLTLVC.cjs.map +0 -1
  73. package/dist/chunk-54GIEP6E.cjs.map +0 -1
  74. package/dist/chunk-6A73DWVA.js.map +0 -1
  75. package/dist/chunk-BNULFLPC.js.map +0 -1
  76. package/dist/chunk-D7BZ6L4Z.cjs.map +0 -1
  77. package/dist/chunk-DBB47IAX.js.map +0 -1
  78. package/dist/chunk-JQO3EFLX.cjs.map +0 -1
  79. package/dist/chunk-LES7CZSC.cjs.map +0 -1
  80. package/dist/chunk-MUM6HKPT.js.map +0 -1
  81. package/dist/chunk-SOIZIH7F.js.map +0 -1
  82. /package/dist/{chunk-EFKAKU2X.js.map → chunk-66EVFQVL.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Combobox/Combobox.tsx"],"sourcesContent":["'use client';\n\nimport {\n Children,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useId,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport { Command } from 'cmdk';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { Check, ChevronDown } from '../../internal/icons';\nimport { useFieldA11y, FieldMessage } from '../../field';\nimport { DgaContext } from '../../providers/DgaContext';\n\n// ─── 1. Variants ─── //\n\n// Trigger height matches Input/Select so a Combobox lines up in a form row.\nconst comboboxTriggerVariants = cva('ddga-combobox-trigger', {\n variants: {\n size: {\n sm: 'ddga-combobox-trigger--sm',\n md: 'ddga-combobox-trigger--md',\n },\n error: {\n true: 'ddga-combobox-trigger--error',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// Keep a no-op `comboboxVariants` for parity with the project's barrel\n// convention (every component re-exports a *Variants from its barrel).\nconst comboboxVariants = comboboxTriggerVariants;\n\n// ─── 2. Context (bridges Root state to Items + label lookup) ─── //\n//\n// Items register `value → label` on mount so the trigger can render the\n// selected option's human-readable label without consumers having to thread\n// a separate `displayValue` function in the common case. Async-loaded\n// options can still override via `<Combobox getLabel={...}>` below.\n\ninterface ComboboxContextValue {\n value?: string;\n select: (value: string) => void;\n}\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null);\n\nfunction useComboboxContext(component: string): ComboboxContextValue {\n const ctx = useContext(ComboboxContext);\n if (!ctx) {\n throw new Error(`<${component}> must be rendered inside <Combobox>.`);\n }\n return ctx;\n}\n\n// ─── 3. Types ─── //\n\ninterface ComboboxProps extends VariantProps<typeof comboboxTriggerVariants> {\n /** Currently selected option value (controlled). */\n value?: string;\n /** Initial value when uncontrolled. */\n defaultValue?: string;\n /** Fires whenever the selection changes (controlled or uncontrolled). */\n onValueChange?: (value: string) => void;\n /** Controlled popover open state. */\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Visible label above the trigger. */\n label?: ReactNode;\n /** Hint shown below the trigger when there's no error. */\n helperText?: ReactNode;\n /** Message shown below the trigger when `error` is true. */\n errorMessage?: ReactNode;\n /** Marks the field invalid — sets `aria-invalid` and the error border. */\n error?: boolean;\n /** Marks the field required — adds the asterisk + `aria-required`. */\n required?: boolean;\n /** Disables the trigger entirely. */\n disabled?: boolean;\n /** Placeholder shown in the trigger when no value is selected. */\n placeholder?: ReactNode;\n /** Placeholder for the search input inside the panel. Defaults to `\"Search…\"`. */\n searchPlaceholder?: string;\n /** Shown when no item matches the search query. Defaults to `\"No results.\"`. */\n emptyMessage?: ReactNode;\n /**\n * Override the trigger label resolver — useful when items are loaded async\n * after the value is set, or when the trigger should show a richer label\n * than the item's rendered children. Receives the current value, returns\n * the node to display. Falls back to the registered item's label.\n */\n getLabel?: (value: string) => ReactNode;\n /** Caller-supplied id for the trigger; falls back to a generated one. */\n id?: string;\n /** Forwarded to the trigger (the focusable button). */\n className?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n /** `<ComboboxItem>` (+ optional Group / Separator) children. */\n children: ReactNode;\n}\n\ninterface ComboboxItemProps extends Omit<\n React.ComponentProps<typeof Command.Item>,\n 'value' | 'onSelect'\n> {\n /** Stable value for filtering + selection. */\n value: string;\n /** Extra search terms cmdk should match against the input. */\n keywords?: string[];\n /** Disable this item from selection. */\n disabled?: boolean;\n /** Optional select handler — fires alongside the root's `onValueChange`. */\n onSelect?: (value: string) => void;\n}\n\ninterface ComboboxGroupProps extends React.ComponentProps<typeof Command.Group> {\n /** Group heading rendered above its items. */\n heading?: ReactNode;\n}\n\ntype ComboboxSeparatorProps = React.ComponentProps<typeof Command.Separator>;\n\n// ─── 4. Root ─── //\n\nfunction Combobox({\n value: controlledValue,\n defaultValue,\n onValueChange,\n open: controlledOpen,\n defaultOpen,\n onOpenChange,\n label,\n helperText,\n errorMessage,\n error,\n required,\n disabled,\n size,\n placeholder,\n searchPlaceholder = 'Search…',\n emptyMessage = 'No results.',\n getLabel,\n id: externalId,\n className,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n}: ComboboxProps) {\n // Uncontrolled fallbacks.\n const [internalValue, setInternalValue] = useState<string | undefined>(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const isOpenControlled = controlledOpen !== undefined;\n const open = isOpenControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange],\n );\n\n const select = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n setOpen(false);\n },\n [isControlled, onValueChange, setOpen],\n );\n\n const ctx = useMemo<ComboboxContextValue>(() => ({ value, select }), [value, select]);\n\n // Walk `children` once to build a value → label map. Synchronous so the\n // trigger shows the right label on first render — registration via\n // useEffect would only fire when items mount, and items don't mount until\n // the popover opens (Radix Portal lazy-mounts). Recurses through\n // `ComboboxGroup` so grouped items still resolve. Bare children only —\n // doesn't dive into arbitrary nested DOM.\n const itemLabels = useMemo<Map<string, ReactNode>>(() => {\n const map = new Map<string, ReactNode>();\n const visit = (nodes: ReactNode): void => {\n Children.forEach(nodes, (child) => {\n if (!isValidElement(child)) return;\n const childProps = child.props as { value?: unknown; children?: ReactNode };\n if (typeof childProps.value === 'string') {\n map.set(childProps.value, childProps.children);\n } else if (childProps.children) {\n visit(childProps.children);\n }\n });\n };\n visit(children);\n return map;\n }, [children]);\n\n // Field a11y wiring — same primitive as Select.\n const { fieldId, errorId, helperId, hasError, hasErrorMessage, hasHelper, controlProps } =\n useFieldA11y({\n name: 'Combobox',\n id: externalId,\n label,\n error,\n errorMessage,\n helperText,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n });\n\n // Portal anchored to DgaProvider root (mirrors Select/Modal/DropdownMenu).\n const providerCtx = useContext(DgaContext);\n // Body-mounted portal target (see DgaProvider) — escapes ancestor\n // clipping while keeping theme inheritance via mirrored data-theme/vars.\n const portalContainer = providerCtx?.portalEl ?? providerCtx?.rootEl ?? undefined;\n\n // Trigger label — explicit override wins; otherwise look up from the\n // children-derived map; otherwise fall back to the placeholder.\n const triggerLabel = useMemo<ReactNode>(() => {\n if (value === undefined) return null;\n if (getLabel) return getLabel(value);\n return itemLabels.get(value) ?? null;\n }, [value, getLabel, itemLabels]);\n\n const searchId = useId();\n\n return (\n <ComboboxContext.Provider value={ctx}>\n <div data-slot=\"combobox-field\" className=\"ddga-field\">\n {label && (\n <label htmlFor={fieldId} className=\"ddga-combobox__label\">\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"ddga-combobox__required\">\n *\n </span>\n )}\n </label>\n )}\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n {...controlProps}\n // Trigger stays a plain button — Radix Popover.Trigger sets\n // aria-haspopup + aria-expanded + aria-controls so AT users\n // hear \"Pick a fruit, button, has popup\". We declared role=\"combobox\"\n // earlier but it requires aria-controls pointing to the listbox,\n // which Radix wires for dialog semantics — axe flagged the mismatch.\n aria-required={required || undefined}\n disabled={disabled}\n data-slot=\"combobox-trigger\"\n className={cn(comboboxTriggerVariants({ size, error: hasError }), className)}\n >\n <span className=\"ddga-combobox__value\">\n {triggerLabel ?? <span className=\"ddga-combobox__placeholder\">{placeholder}</span>}\n </span>\n <ChevronDown aria-hidden=\"true\" className=\"ddga-combobox__icon\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={portalContainer}>\n <PopoverPrimitive.Content\n data-slot=\"combobox-content\"\n className=\"ddga-combobox-content\"\n sideOffset={4}\n align=\"start\"\n // Popover.Content is role=\"dialog\" → axe requires an accessible\n // name. Use the field label when it's a string; otherwise fall\n // back to a generic \"Options\" so a11y stays valid even when the\n // consumer composes a rich React node as the label.\n aria-label={ariaLabel ?? (typeof label === 'string' ? label : 'Options')}\n aria-labelledby={ariaLabelledBy}\n // Match trigger width so the panel doesn't visually float over.\n style={{ inlineSize: 'var(--radix-popover-trigger-width)' }}\n onOpenAutoFocus={(event) => {\n // cmdk handles its own focus management (Input gets focused on\n // mount via autoFocus below). Prevent Radix from also moving\n // focus or we lose the search input as the auto-focus target.\n event.preventDefault();\n }}\n >\n <Command\n id={searchId}\n data-slot=\"combobox-command\"\n className=\"ddga-combobox-command\"\n // cmdk's default filter matches if the input is a substring of\n // the item value OR any keyword — fine for our v1 use case.\n >\n <Command.Input\n autoFocus\n placeholder={searchPlaceholder}\n data-slot=\"combobox-input\"\n className=\"ddga-combobox-input\"\n />\n <Command.List data-slot=\"combobox-list\" className=\"ddga-combobox-list\">\n <Command.Empty data-slot=\"combobox-empty\" className=\"ddga-combobox-empty\">\n {emptyMessage}\n </Command.Empty>\n {children}\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {hasErrorMessage && (\n <FieldMessage id={errorId} variant=\"error\">\n {errorMessage}\n </FieldMessage>\n )}\n {hasHelper && (\n <FieldMessage id={helperId} variant=\"helper\">\n {helperText}\n </FieldMessage>\n )}\n </div>\n </ComboboxContext.Provider>\n );\n}\n\n// ─── 5. Item ─── //\n\nfunction ComboboxItem({\n value,\n keywords,\n disabled,\n onSelect,\n className,\n children,\n ...props\n}: ComboboxItemProps) {\n const { value: selectedValue, select } = useComboboxContext('ComboboxItem');\n\n const isSelected = selectedValue === value;\n\n return (\n <Command.Item\n value={value}\n keywords={keywords}\n disabled={disabled}\n onSelect={(v) => {\n onSelect?.(v);\n select(v);\n }}\n data-slot=\"combobox-item\"\n // cmdk owns `data-selected` for keyboard highlight — use a separate\n // attribute for the chosen value so the two don't collide.\n data-active={isSelected ? '' : undefined}\n className={cn('ddga-combobox-item', className)}\n {...props}\n >\n <span className=\"ddga-combobox-item__check\" aria-hidden=\"true\">\n {isSelected ? <Check /> : null}\n </span>\n <span className=\"ddga-combobox-item__label\">{children}</span>\n </Command.Item>\n );\n}\n\n// ─── 6. Group + Separator (cmdk passthroughs) ─── //\n\nfunction ComboboxGroup({ className, heading, ...props }: ComboboxGroupProps) {\n return (\n <Command.Group\n heading={heading}\n data-slot=\"combobox-group\"\n className={cn('ddga-combobox-group', className)}\n {...props}\n />\n );\n}\n\nfunction ComboboxSeparator({ className, ...props }: ComboboxSeparatorProps) {\n return (\n <Command.Separator\n data-slot=\"combobox-separator\"\n className={cn('ddga-combobox-separator', className)}\n {...props}\n />\n );\n}\n\n// ─── 7. Exports ─── //\n\nexport {\n Combobox,\n ComboboxItem,\n ComboboxGroup,\n ComboboxSeparator,\n comboboxTriggerVariants,\n comboboxVariants,\n};\nexport type { ComboboxProps, ComboboxItemProps, ComboboxGroupProps, ComboboxSeparatorProps };\n"],"mappings":"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","names":[]}