@spark-ui/components 16.1.1-beta.0 → 16.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/{Button-BIAkZTRR.js → Button-B6rA3-e5.js} +2 -2
  2. package/dist/{Button-BIAkZTRR.js.map → Button-B6rA3-e5.js.map} +1 -1
  3. package/dist/{Button-DggC4GFM.mjs → Button-DPncfbbM.mjs} +2 -2
  4. package/dist/{Button-DggC4GFM.mjs.map → Button-DPncfbbM.mjs.map} +1 -1
  5. package/dist/{IconButton-Mv9tO1ZH.mjs → IconButton-Bfd-6BAD.mjs} +14 -14
  6. package/dist/IconButton-Bfd-6BAD.mjs.map +1 -0
  7. package/dist/IconButton-D3g86WpZ.js +2 -0
  8. package/dist/IconButton-D3g86WpZ.js.map +1 -0
  9. package/dist/avatar/index.js +1 -1
  10. package/dist/avatar/index.mjs +1 -1
  11. package/dist/button/index.js +1 -1
  12. package/dist/button/index.mjs +1 -1
  13. package/dist/carousel/index.js +1 -1
  14. package/dist/carousel/index.mjs +1 -1
  15. package/dist/checkbox/index.js +1 -1
  16. package/dist/checkbox/index.js.map +1 -1
  17. package/dist/checkbox/index.mjs +30 -30
  18. package/dist/checkbox/index.mjs.map +1 -1
  19. package/dist/chip/index.js +1 -1
  20. package/dist/chip/index.js.map +1 -1
  21. package/dist/chip/index.mjs +1 -1
  22. package/dist/chip/index.mjs.map +1 -1
  23. package/dist/combobox/index.js +1 -1
  24. package/dist/combobox/index.js.map +1 -1
  25. package/dist/combobox/index.mjs +39 -39
  26. package/dist/combobox/index.mjs.map +1 -1
  27. package/dist/dialog/index.js +1 -1
  28. package/dist/dialog/index.mjs +1 -1
  29. package/dist/drawer/index.js +1 -1
  30. package/dist/drawer/index.mjs +1 -1
  31. package/dist/dropdown/index.js +1 -1
  32. package/dist/dropdown/index.js.map +1 -1
  33. package/dist/dropdown/index.mjs +1 -1
  34. package/dist/dropdown/index.mjs.map +1 -1
  35. package/dist/file-upload/index.js +1 -1
  36. package/dist/file-upload/index.mjs +2 -2
  37. package/dist/icon-button/index.js +1 -1
  38. package/dist/icon-button/index.mjs +1 -1
  39. package/dist/input/index.js +1 -1
  40. package/dist/input/index.js.map +1 -1
  41. package/dist/input/index.mjs +6 -6
  42. package/dist/input/index.mjs.map +1 -1
  43. package/dist/pagination/index.js +1 -1
  44. package/dist/pagination/index.mjs +2 -2
  45. package/dist/popover/index.js +1 -1
  46. package/dist/popover/index.mjs +1 -1
  47. package/dist/radio-group/index.js +1 -1
  48. package/dist/radio-group/index.js.map +1 -1
  49. package/dist/radio-group/index.mjs +7 -7
  50. package/dist/radio-group/index.mjs.map +1 -1
  51. package/dist/scrolling-list/index.js +1 -1
  52. package/dist/scrolling-list/index.mjs +2 -2
  53. package/dist/select/index.js +1 -1
  54. package/dist/select/index.js.map +1 -1
  55. package/dist/select/index.mjs +1 -1
  56. package/dist/select/index.mjs.map +1 -1
  57. package/dist/snackbar/index.js +1 -1
  58. package/dist/snackbar/index.mjs +2 -2
  59. package/dist/stepper/index.js +1 -1
  60. package/dist/stepper/index.mjs +1 -1
  61. package/dist/tabs/index.js +1 -1
  62. package/dist/tabs/index.mjs +2 -2
  63. package/dist/tag/index.js +1 -1
  64. package/dist/tag/index.js.map +1 -1
  65. package/dist/tag/index.mjs +6 -6
  66. package/dist/tag/index.mjs.map +1 -1
  67. package/dist/textarea/index.js +1 -1
  68. package/dist/textarea/index.js.map +1 -1
  69. package/dist/textarea/index.mjs +14 -10
  70. package/dist/textarea/index.mjs.map +1 -1
  71. package/dist/toast/index.js +1 -1
  72. package/dist/toast/index.mjs +2 -2
  73. package/package.json +4 -4
  74. package/dist/IconButton-D5fk89W-.js +0 -2
  75. package/dist/IconButton-D5fk89W-.js.map +0 -1
  76. package/dist/IconButton-Mv9tO1ZH.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/select/utils.ts","../../src/select/SelectContext.tsx","../../src/select/Select.tsx","../../src/select/SelectItemsGroupContext.tsx","../../src/select/SelectGroup.tsx","../../src/select/SelectItem.tsx","../../src/select/SelectItems.tsx","../../src/select/SelectLabel.tsx","../../src/select/SelectLeadingIcon.tsx","../../src/select/SelectPlaceholder.tsx","../../src/select/SelectTrigger.styles.tsx","../../src/select/SelectTrigger.tsx","../../src/select/SelectValue.tsx","../../src/select/index.ts"],"sourcesContent":["import { Children, type FC, isValidElement, type ReactElement, type ReactNode } from 'react'\n\nimport { type ItemProps } from './SelectItem'\nimport { type ItemsMap, type SelectItem } from './types'\n\nexport const findElement = (children: ReactNode) => (name: string) => {\n const validChildren = Children.toArray(children).filter(isValidElement)\n\n return validChildren.find(child => {\n return getElementDisplayName(child)?.includes(name)\n })\n}\n\nconst getElementDisplayName = (element?: ReactElement) => {\n return element ? (element.type as FC & { displayName?: string }).displayName : ''\n}\n\nconst getOrderedItems = (children: ReactNode, result: SelectItem[] = []): SelectItem[] => {\n Children.forEach(children, child => {\n if (!isValidElement(child)) return\n\n if (\n getElementDisplayName(child) === 'Select.Item' ||\n getElementDisplayName(child) === 'Select.Placeholder'\n ) {\n const childProps = child.props as ItemProps\n result.push({\n value: childProps.value,\n disabled: !!childProps.disabled,\n text: childProps.children,\n })\n }\n\n if ((child.props as { children: ReactNode }).children) {\n getOrderedItems((child.props as { children: ReactNode }).children, result)\n }\n })\n\n return result\n}\n\nexport const getItemsFromChildren = (children: ReactNode): ItemsMap => {\n const newMap: ItemsMap = new Map()\n\n getOrderedItems(children).forEach(itemData => {\n newMap.set(itemData.value, itemData)\n })\n\n return newMap\n}\n","import { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { useCombinedState } from '@spark-ui/hooks/use-combined-state'\nimport {\n createContext,\n Dispatch,\n PropsWithChildren,\n ReactElement,\n SetStateAction,\n useContext,\n useEffect,\n useId,\n useState,\n} from 'react'\n\nimport { type ItemsMap, SelectItem } from './types'\nimport { getItemsFromChildren } from './utils'\n\nexport interface SelectContextState {\n itemsMap: ItemsMap\n disabled: boolean\n readOnly: boolean\n state?: 'error' | 'alert' | 'success'\n itemsComponent: ReactElement | undefined\n selectedItem: SelectItem | undefined\n setValue: (value: string) => void\n isControlled: boolean\n onValueChange?: (value: string) => void\n ariaLabel: string | undefined\n setAriaLabel: Dispatch<SetStateAction<string | undefined>>\n fieldId: string\n fieldLabelId: string | undefined\n name: string | undefined\n required: boolean\n placeholder: string | undefined\n setPlaceholder: Dispatch<SetStateAction<string | undefined>>\n}\n\nexport type SelectContextProps = PropsWithChildren<{\n /**\n * Use `state` prop to assign a specific state to the select, choosing from: `error`, `alert` and `success`. By doing so, the outline styles will be updated.\n */\n state?: 'error' | 'alert' | 'success'\n /**\n * When true, prevents the user from interacting with the select.\n */\n disabled?: boolean\n /**\n * Sets the select as interactive or not.\n */\n readOnly?: boolean\n /**\n * The value of the select when initially rendered. Use when you do not need to control the state of the select.\n */\n defaultValue?: string\n /**\n * The controlled value of the select. Should be used in conjunction with `onValueChange`.\n */\n value?: string\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string) => void\n\n itemsComponent: ReactElement | undefined\n /**\n * This attribute is used to specify the name of the control.\n * If wrapped with a FormField with a name, will be inherited from it.\n */\n name?: string\n /**\n * A Boolean attribute indicating that an option with a non-empty string value must be selected.\n */\n required?: boolean\n}>\n\nconst SelectContext = createContext<SelectContextState | null>(null)\n\nconst ID_PREFIX = ':select'\n\nexport const SelectProvider = ({\n children,\n defaultValue,\n value: valueProp,\n onValueChange,\n disabled: disabledProp = false,\n readOnly: readOnlyProp = false,\n state: stateProp,\n itemsComponent,\n name: nameProp,\n required: requiredProp,\n}: SelectContextProps) => {\n const [value, setValue] = useCombinedState(valueProp, defaultValue, onValueChange)\n const [placeholder, setPlaceholder] = useState<string | undefined>(undefined)\n const [itemsMap, setItemsMap] = useState<ItemsMap>(getItemsFromChildren(itemsComponent))\n const [ariaLabel, setAriaLabel] = useState<string>()\n\n // Computed state\n const firstItem = itemsMap.entries().next()?.value?.[1]\n const selectedItem = typeof value === 'string' ? itemsMap.get(value) : firstItem\n const isControlled = valueProp != null\n\n // Derivated from FormField context\n const field = useFormFieldControl()\n const state = field.state || stateProp\n\n const internalFieldID = `${ID_PREFIX}-field-${useId()}`\n const fieldId = field.id || internalFieldID\n const fieldLabelId = field.labelId\n const disabled = field.disabled ?? disabledProp\n const readOnly = field.readOnly ?? readOnlyProp\n const name = field.name ?? nameProp\n const required = !!(field.isRequired ?? requiredProp)\n\n /**\n * Indices in a Map are set when an element is added to the Map.\n * If for some reason, in the Select:\n * - items order changes\n * - items are added\n * - items are removed\n *\n * The Map must be rebuilt from the new children in order to preserve logical indices.\n *\n */\n useEffect(() => {\n const newMap = getItemsFromChildren(itemsComponent)\n\n const previousItems = [...itemsMap.values()]\n const newItems = [...newMap.values()]\n\n const hasItemsChanges =\n previousItems.length !== newItems.length ||\n previousItems.some((item, index) => {\n const hasUpdatedValue = item.value !== newItems[index]?.value\n const hasUpdatedText = item.text !== newItems[index]?.text\n\n return hasUpdatedValue || hasUpdatedText\n })\n\n if (hasItemsChanges) {\n setItemsMap(newMap)\n }\n }, [children])\n\n return (\n <SelectContext.Provider\n value={{\n disabled,\n readOnly,\n itemsMap,\n state,\n itemsComponent,\n selectedItem,\n setValue,\n isControlled,\n onValueChange,\n ariaLabel,\n setAriaLabel,\n fieldId,\n fieldLabelId,\n name,\n required,\n placeholder,\n setPlaceholder,\n }}\n >\n {children}\n </SelectContext.Provider>\n )\n}\n\nexport const useSelectContext = () => {\n const context = useContext(SelectContext)\n\n if (!context) {\n throw Error('useSelectContext must be used within a Select provider')\n }\n\n return context\n}\n","import { type SelectContextProps, SelectProvider } from './SelectContext'\nimport { findElement } from './utils'\n\nexport type SelectProps = Omit<SelectContextProps, 'itemsComponent'>\n\nexport const Select = ({ children, ...props }: SelectProps) => {\n const finder = findElement(children)\n const trigger = finder('Trigger')\n const items = finder('Items')\n\n return (\n <SelectProvider {...props} itemsComponent={items}>\n {trigger}\n </SelectProvider>\n )\n}\n\nSelect.displayName = 'Select'\n","import { createContext, type PropsWithChildren, useContext, useState } from 'react'\n\nexport interface SelectContextState {\n groupLabel: string\n setGroupLabel: (label: string) => void\n}\n\ntype SelectContextProps = PropsWithChildren\n\nconst SelectGroupContext = createContext<SelectContextState | null>(null)\n\nexport const SelectGroupProvider = ({ children }: SelectContextProps) => {\n const [groupLabel, setGroupLabel] = useState('')\n\n return (\n <SelectGroupContext.Provider value={{ groupLabel, setGroupLabel }}>\n {children}\n </SelectGroupContext.Provider>\n )\n}\n\nexport const useSelectGroupContext = () => {\n const context = useContext(SelectGroupContext)\n\n if (!context) {\n throw Error('useSelectGroupContext must be used within a SelectGroup provider')\n }\n\n return context\n}\n","import { cx } from 'class-variance-authority'\nimport { ReactNode, type Ref } from 'react'\n\nimport { SelectGroupProvider, useSelectGroupContext } from './SelectItemsGroupContext'\n\ninterface GroupProps {\n children: ReactNode\n className?: string\n ref?: Ref<HTMLOptGroupElement>\n}\n\nexport const Group = ({ children, ref: forwardedRef, ...props }: GroupProps) => {\n return (\n <SelectGroupProvider>\n <GroupContent ref={forwardedRef} {...props}>\n {children}\n </GroupContent>\n </SelectGroupProvider>\n )\n}\n\nconst GroupContent = ({ children, className, ref: forwardedRef }: GroupProps) => {\n const { groupLabel } = useSelectGroupContext()\n\n return (\n <optgroup\n data-spark-component=\"select-group\"\n ref={forwardedRef}\n className={cx(className)}\n label={groupLabel}\n >\n {children}\n </optgroup>\n )\n}\n\nGroup.displayName = 'Select.Group'\n","import { type Ref } from 'react'\n\nexport interface ItemProps {\n disabled?: boolean\n value: string\n children: string\n ref?: Ref<HTMLOptionElement>\n}\n\nexport const Item = ({ disabled = false, value, children, ref: forwardedRef }: ItemProps) => {\n return (\n <option\n data-spark-component=\"select-item\"\n ref={forwardedRef}\n key={value}\n value={value}\n disabled={disabled}\n // label\n >\n {children}\n </option>\n )\n}\n\nItem.displayName = 'Select.Item'\n","import { cva } from 'class-variance-authority'\nimport { ChangeEvent, ComponentPropsWithRef, PropsWithChildren } from 'react'\n\nimport { useSelectContext } from './SelectContext'\n\nexport const styles = cva(\n [\n 'absolute left-0 top-0 size-full rounded-lg opacity-0',\n 'min-h-sz-44',\n // outline styles\n 'ring-1 outline-hidden ring-inset focus:ring-2',\n ],\n {\n variants: {\n state: {\n undefined: 'ring-outline focus:ring-outline-high',\n error: 'ring-error',\n alert: 'ring-alert',\n success: 'ring-success',\n },\n disabled: {\n true: 'cursor-not-allowed',\n },\n readOnly: {\n true: 'cursor-default',\n },\n },\n compoundVariants: [\n {\n disabled: false,\n state: undefined,\n class: 'hover:ring-outline-high',\n },\n ],\n }\n)\n\nexport const Items = ({\n children,\n className,\n ref,\n ...rest\n}: PropsWithChildren<ComponentPropsWithRef<'select'>>) => {\n const {\n state,\n disabled,\n readOnly,\n ariaLabel,\n fieldLabelId,\n isControlled,\n onValueChange,\n selectedItem,\n setValue,\n name,\n required,\n fieldId,\n } = useSelectContext()\n\n const handleChange = (event: ChangeEvent<HTMLSelectElement>) => {\n if (isControlled) {\n event.preventDefault()\n onValueChange?.(event.target.value)\n } else {\n setValue(event.target.value)\n }\n }\n\n return (\n <select\n data-spark-component=\"select-items\"\n ref={ref}\n disabled={disabled || readOnly}\n name={name}\n required={required}\n aria-labelledby={fieldLabelId}\n {...(ariaLabel && { 'aria-label': ariaLabel })}\n className={styles({ className, state, disabled, readOnly })}\n value={selectedItem?.value}\n onChange={handleChange}\n id={fieldId}\n {...rest}\n >\n {children}\n </select>\n )\n}\n\nItems.displayName = 'Select.Items'\n","import { useEffect } from 'react'\n\nimport { useSelectGroupContext } from './SelectItemsGroupContext'\n\ninterface LabelProps {\n children: string\n}\n\nexport const Label = ({ children }: LabelProps) => {\n const { setGroupLabel } = useSelectGroupContext()\n\n useEffect(() => {\n setGroupLabel(children)\n }, [children])\n\n return null\n}\n\nLabel.displayName = 'Select.Label'\n","import { ReactElement } from 'react'\n\nimport { Icon } from '../icon'\n\nexport const LeadingIcon = ({ children }: { children: ReactElement }) => {\n return (\n <Icon size={'sm'} className=\"shrink-0\">\n {children}\n </Icon>\n )\n}\n\nLeadingIcon.displayName = 'Select.LeadingIcon'\n","import { type Ref, useEffect } from 'react'\n\nimport { useSelectContext } from './SelectContext'\n\nexport interface PlaceholderProps {\n disabled?: boolean\n children: string\n ref?: Ref<HTMLOptionElement>\n}\n\nexport const Placeholder = ({\n disabled = false,\n children,\n ref: forwardedRef,\n}: PlaceholderProps) => {\n const { setPlaceholder } = useSelectContext()\n\n useEffect(() => {\n setPlaceholder(children)\n }, [children])\n\n return (\n <option\n data-spark-component=\"select-placeholder\"\n ref={forwardedRef}\n key=\"placeholder\"\n value=\"\"\n disabled={disabled}\n >\n {children}\n </option>\n )\n}\n\nPlaceholder.displayName = 'Select.Placeholder'\n","import { cva } from 'class-variance-authority'\n\nexport const styles = cva(\n [\n 'relative flex w-full items-center justify-between',\n 'min-h-sz-44 rounded-full px-lg',\n 'text-body-1',\n // outline styles\n 'ring-1 outline-hidden ring-inset focus-within:ring-focus',\n ],\n {\n variants: {\n state: {\n undefined: 'ring-outline',\n error: 'ring-error',\n alert: 'ring-alert',\n success: 'ring-success',\n },\n disabled: {\n false: 'focus-within:ring-2',\n },\n readOnly: {\n true: '',\n },\n },\n compoundVariants: [\n {\n readOnly: false,\n disabled: false,\n class: 'bg-surface text-on-surface',\n },\n {\n readOnly: true,\n class: 'bg-on-surface/dim-5 text-on-surface cursor-default',\n },\n {\n disabled: true,\n class: ['bg-on-surface/dim-5 text-on-surface/dim-3', 'cursor-not-allowed'],\n },\n {\n disabled: false,\n state: undefined,\n class: 'default:hover:ring-outline-high',\n },\n ],\n }\n)\n","import { ArrowHorizontalDown } from '@spark-ui/icons/ArrowHorizontalDown'\nimport { ReactNode, type Ref, useEffect } from 'react'\n\nimport { Icon } from '../icon'\nimport { useSelectContext } from './SelectContext'\nimport { styles } from './SelectTrigger.styles'\n\ninterface TriggerProps {\n 'aria-label'?: string\n children: ReactNode\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * This trigger acts as a fake button for the `select` tag.\n * It is not interactive.\n */\nexport const Trigger = ({\n 'aria-label': ariaLabel,\n children,\n className,\n ref: forwardedRef,\n}: TriggerProps) => {\n const { disabled, readOnly, state, setAriaLabel, itemsComponent } = useSelectContext()\n\n useEffect(() => {\n if (ariaLabel) {\n setAriaLabel(ariaLabel)\n }\n }, [ariaLabel])\n\n return (\n <div\n data-spark-component=\"select-trigger\"\n ref={forwardedRef}\n className={styles({ className, state, disabled, readOnly })}\n >\n <span className=\"gap-md flex items-center justify-start\">{children}</span>\n\n <Icon className=\"ml-md shrink-0\" size=\"sm\">\n <ArrowHorizontalDown />\n </Icon>\n\n {itemsComponent}\n </div>\n )\n}\n\nTrigger.displayName = 'Select.Trigger'\n","import { cx } from 'class-variance-authority'\nimport { ReactNode, type Ref } from 'react'\n\nimport { useSelectContext } from './SelectContext'\n\nexport interface ValueProps {\n children?: ReactNode\n className?: string\n /**\n * Optional placeholder value for the trigger.\n * If not specified, the value inside `Select.Placeholder` item will be used.\n */\n placeholder?: string\n ref?: Ref<HTMLSpanElement>\n}\n\nexport const Value = ({\n children,\n className,\n placeholder: customPlaceholder,\n ref: forwardedRef,\n}: ValueProps) => {\n const { selectedItem, placeholder, disabled } = useSelectContext()\n\n const isPlaceholderSelected = selectedItem?.value == null\n const valuePlaceholder = customPlaceholder || placeholder\n\n return (\n <span\n role=\"presentation\"\n data-spark-component=\"select-value\"\n ref={forwardedRef}\n className={cx('flex shrink items-center text-left', className)}\n >\n <span\n className={cx(\n 'line-clamp-1 flex-1 overflow-hidden break-all text-ellipsis',\n isPlaceholderSelected && !disabled && 'text-on-surface/dim-1'\n )}\n >\n {isPlaceholderSelected ? valuePlaceholder : children || selectedItem?.text}\n </span>\n </span>\n )\n}\n\nValue.displayName = 'Select.Value'\n","import { Select as Root } from './Select'\nimport { SelectProvider, useSelectContext } from './SelectContext'\nimport { Group } from './SelectGroup'\nimport { Item } from './SelectItem'\nimport { Items } from './SelectItems'\nimport { Label } from './SelectLabel'\nimport { LeadingIcon } from './SelectLeadingIcon'\nimport { Placeholder } from './SelectPlaceholder'\nimport { Trigger } from './SelectTrigger'\nimport { Value } from './SelectValue'\n\nexport { useSelectContext, SelectProvider }\n\nexport const Select: typeof Root & {\n Group: typeof Group\n Item: typeof Item\n Items: typeof Items\n Placeholder: typeof Placeholder\n Label: typeof Label\n Trigger: typeof Trigger\n Value: typeof Value\n LeadingIcon: typeof LeadingIcon\n} = Object.assign(Root, {\n Group,\n Item,\n Items,\n Placeholder,\n Label,\n Trigger,\n Value,\n LeadingIcon,\n})\n\nSelect.displayName = 'Select'\nGroup.displayName = 'Select.Group'\nItems.displayName = 'Select.Items'\nItem.displayName = 'Select.Item'\nPlaceholder.displayName = 'Select.Placeholder'\nLabel.displayName = 'Select.Label'\nTrigger.displayName = 'Select.Trigger'\nValue.displayName = 'Select.Value'\nLeadingIcon.displayName = 'Select.LeadingIcon'\n"],"names":["findElement","children","name","Children","isValidElement","child","getElementDisplayName","element","getOrderedItems","result","childProps","getItemsFromChildren","newMap","itemData","SelectContext","createContext","ID_PREFIX","SelectProvider","defaultValue","valueProp","onValueChange","disabledProp","readOnlyProp","stateProp","itemsComponent","nameProp","requiredProp","value","setValue","useCombinedState","placeholder","setPlaceholder","useState","itemsMap","setItemsMap","ariaLabel","setAriaLabel","firstItem","selectedItem","isControlled","field","useFormFieldControl","state","internalFieldID","useId","fieldId","fieldLabelId","disabled","readOnly","required","useEffect","previousItems","newItems","item","index","hasUpdatedValue","hasUpdatedText","jsx","useSelectContext","context","useContext","Select","props","finder","trigger","items","SelectGroupContext","SelectGroupProvider","groupLabel","setGroupLabel","useSelectGroupContext","Group","forwardedRef","GroupContent","className","cx","Item","styles","cva","Items","ref","rest","handleChange","event","Label","LeadingIcon","Icon","Placeholder","Trigger","jsxs","ArrowHorizontalDown","Value","customPlaceholder","isPlaceholderSelected","valuePlaceholder","Root"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/select/utils.ts","../../src/select/SelectContext.tsx","../../src/select/Select.tsx","../../src/select/SelectItemsGroupContext.tsx","../../src/select/SelectGroup.tsx","../../src/select/SelectItem.tsx","../../src/select/SelectItems.tsx","../../src/select/SelectLabel.tsx","../../src/select/SelectLeadingIcon.tsx","../../src/select/SelectPlaceholder.tsx","../../src/select/SelectTrigger.styles.tsx","../../src/select/SelectTrigger.tsx","../../src/select/SelectValue.tsx","../../src/select/index.ts"],"sourcesContent":["import { Children, type FC, isValidElement, type ReactElement, type ReactNode } from 'react'\n\nimport { type ItemProps } from './SelectItem'\nimport { type ItemsMap, type SelectItem } from './types'\n\nexport const findElement = (children: ReactNode) => (name: string) => {\n const validChildren = Children.toArray(children).filter(isValidElement)\n\n return validChildren.find(child => {\n return getElementDisplayName(child)?.includes(name)\n })\n}\n\nconst getElementDisplayName = (element?: ReactElement) => {\n return element ? (element.type as FC & { displayName?: string }).displayName : ''\n}\n\nconst getOrderedItems = (children: ReactNode, result: SelectItem[] = []): SelectItem[] => {\n Children.forEach(children, child => {\n if (!isValidElement(child)) return\n\n if (\n getElementDisplayName(child) === 'Select.Item' ||\n getElementDisplayName(child) === 'Select.Placeholder'\n ) {\n const childProps = child.props as ItemProps\n result.push({\n value: childProps.value,\n disabled: !!childProps.disabled,\n text: childProps.children,\n })\n }\n\n if ((child.props as { children: ReactNode }).children) {\n getOrderedItems((child.props as { children: ReactNode }).children, result)\n }\n })\n\n return result\n}\n\nexport const getItemsFromChildren = (children: ReactNode): ItemsMap => {\n const newMap: ItemsMap = new Map()\n\n getOrderedItems(children).forEach(itemData => {\n newMap.set(itemData.value, itemData)\n })\n\n return newMap\n}\n","import { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { useCombinedState } from '@spark-ui/hooks/use-combined-state'\nimport {\n createContext,\n Dispatch,\n PropsWithChildren,\n ReactElement,\n SetStateAction,\n useContext,\n useEffect,\n useId,\n useState,\n} from 'react'\n\nimport { type ItemsMap, SelectItem } from './types'\nimport { getItemsFromChildren } from './utils'\n\nexport interface SelectContextState {\n itemsMap: ItemsMap\n disabled: boolean\n readOnly: boolean\n state?: 'error' | 'alert' | 'success'\n itemsComponent: ReactElement | undefined\n selectedItem: SelectItem | undefined\n setValue: (value: string) => void\n isControlled: boolean\n onValueChange?: (value: string) => void\n ariaLabel: string | undefined\n setAriaLabel: Dispatch<SetStateAction<string | undefined>>\n fieldId: string\n fieldLabelId: string | undefined\n name: string | undefined\n required: boolean\n placeholder: string | undefined\n setPlaceholder: Dispatch<SetStateAction<string | undefined>>\n}\n\nexport type SelectContextProps = PropsWithChildren<{\n /**\n * Use `state` prop to assign a specific state to the select, choosing from: `error`, `alert` and `success`. By doing so, the outline styles will be updated.\n */\n state?: 'error' | 'alert' | 'success'\n /**\n * When true, prevents the user from interacting with the select.\n */\n disabled?: boolean\n /**\n * Sets the select as interactive or not.\n */\n readOnly?: boolean\n /**\n * The value of the select when initially rendered. Use when you do not need to control the state of the select.\n */\n defaultValue?: string\n /**\n * The controlled value of the select. Should be used in conjunction with `onValueChange`.\n */\n value?: string\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string) => void\n\n itemsComponent: ReactElement | undefined\n /**\n * This attribute is used to specify the name of the control.\n * If wrapped with a FormField with a name, will be inherited from it.\n */\n name?: string\n /**\n * A Boolean attribute indicating that an option with a non-empty string value must be selected.\n */\n required?: boolean\n}>\n\nconst SelectContext = createContext<SelectContextState | null>(null)\n\nconst ID_PREFIX = ':select'\n\nexport const SelectProvider = ({\n children,\n defaultValue,\n value: valueProp,\n onValueChange,\n disabled: disabledProp = false,\n readOnly: readOnlyProp = false,\n state: stateProp,\n itemsComponent,\n name: nameProp,\n required: requiredProp,\n}: SelectContextProps) => {\n const [value, setValue] = useCombinedState(valueProp, defaultValue, onValueChange)\n const [placeholder, setPlaceholder] = useState<string | undefined>(undefined)\n const [itemsMap, setItemsMap] = useState<ItemsMap>(getItemsFromChildren(itemsComponent))\n const [ariaLabel, setAriaLabel] = useState<string>()\n\n // Computed state\n const firstItem = itemsMap.entries().next()?.value?.[1]\n const selectedItem = typeof value === 'string' ? itemsMap.get(value) : firstItem\n const isControlled = valueProp != null\n\n // Derivated from FormField context\n const field = useFormFieldControl()\n const state = field.state || stateProp\n\n const internalFieldID = `${ID_PREFIX}-field-${useId()}`\n const fieldId = field.id || internalFieldID\n const fieldLabelId = field.labelId\n const disabled = field.disabled ?? disabledProp\n const readOnly = field.readOnly ?? readOnlyProp\n const name = field.name ?? nameProp\n const required = !!(field.isRequired ?? requiredProp)\n\n /**\n * Indices in a Map are set when an element is added to the Map.\n * If for some reason, in the Select:\n * - items order changes\n * - items are added\n * - items are removed\n *\n * The Map must be rebuilt from the new children in order to preserve logical indices.\n *\n */\n useEffect(() => {\n const newMap = getItemsFromChildren(itemsComponent)\n\n const previousItems = [...itemsMap.values()]\n const newItems = [...newMap.values()]\n\n const hasItemsChanges =\n previousItems.length !== newItems.length ||\n previousItems.some((item, index) => {\n const hasUpdatedValue = item.value !== newItems[index]?.value\n const hasUpdatedText = item.text !== newItems[index]?.text\n\n return hasUpdatedValue || hasUpdatedText\n })\n\n if (hasItemsChanges) {\n setItemsMap(newMap)\n }\n }, [children])\n\n return (\n <SelectContext.Provider\n value={{\n disabled,\n readOnly,\n itemsMap,\n state,\n itemsComponent,\n selectedItem,\n setValue,\n isControlled,\n onValueChange,\n ariaLabel,\n setAriaLabel,\n fieldId,\n fieldLabelId,\n name,\n required,\n placeholder,\n setPlaceholder,\n }}\n >\n {children}\n </SelectContext.Provider>\n )\n}\n\nexport const useSelectContext = () => {\n const context = useContext(SelectContext)\n\n if (!context) {\n throw Error('useSelectContext must be used within a Select provider')\n }\n\n return context\n}\n","import { type SelectContextProps, SelectProvider } from './SelectContext'\nimport { findElement } from './utils'\n\nexport type SelectProps = Omit<SelectContextProps, 'itemsComponent'>\n\nexport const Select = ({ children, ...props }: SelectProps) => {\n const finder = findElement(children)\n const trigger = finder('Trigger')\n const items = finder('Items')\n\n return (\n <SelectProvider {...props} itemsComponent={items}>\n {trigger}\n </SelectProvider>\n )\n}\n\nSelect.displayName = 'Select'\n","import { createContext, type PropsWithChildren, useContext, useState } from 'react'\n\nexport interface SelectContextState {\n groupLabel: string\n setGroupLabel: (label: string) => void\n}\n\ntype SelectContextProps = PropsWithChildren\n\nconst SelectGroupContext = createContext<SelectContextState | null>(null)\n\nexport const SelectGroupProvider = ({ children }: SelectContextProps) => {\n const [groupLabel, setGroupLabel] = useState('')\n\n return (\n <SelectGroupContext.Provider value={{ groupLabel, setGroupLabel }}>\n {children}\n </SelectGroupContext.Provider>\n )\n}\n\nexport const useSelectGroupContext = () => {\n const context = useContext(SelectGroupContext)\n\n if (!context) {\n throw Error('useSelectGroupContext must be used within a SelectGroup provider')\n }\n\n return context\n}\n","import { cx } from 'class-variance-authority'\nimport { ReactNode, type Ref } from 'react'\n\nimport { SelectGroupProvider, useSelectGroupContext } from './SelectItemsGroupContext'\n\ninterface GroupProps {\n children: ReactNode\n className?: string\n ref?: Ref<HTMLOptGroupElement>\n}\n\nexport const Group = ({ children, ref: forwardedRef, ...props }: GroupProps) => {\n return (\n <SelectGroupProvider>\n <GroupContent ref={forwardedRef} {...props}>\n {children}\n </GroupContent>\n </SelectGroupProvider>\n )\n}\n\nconst GroupContent = ({ children, className, ref: forwardedRef }: GroupProps) => {\n const { groupLabel } = useSelectGroupContext()\n\n return (\n <optgroup\n data-spark-component=\"select-group\"\n ref={forwardedRef}\n className={cx(className)}\n label={groupLabel}\n >\n {children}\n </optgroup>\n )\n}\n\nGroup.displayName = 'Select.Group'\n","import { type Ref } from 'react'\n\nexport interface ItemProps {\n disabled?: boolean\n value: string\n children: string\n ref?: Ref<HTMLOptionElement>\n}\n\nexport const Item = ({ disabled = false, value, children, ref: forwardedRef }: ItemProps) => {\n return (\n <option\n data-spark-component=\"select-item\"\n ref={forwardedRef}\n key={value}\n value={value}\n disabled={disabled}\n // label\n >\n {children}\n </option>\n )\n}\n\nItem.displayName = 'Select.Item'\n","import { cva } from 'class-variance-authority'\nimport { ChangeEvent, ComponentPropsWithRef, PropsWithChildren } from 'react'\n\nimport { useSelectContext } from './SelectContext'\n\nexport const styles = cva(\n [\n 'absolute left-0 top-0 size-full rounded-lg opacity-0',\n 'min-h-sz-44',\n // outline styles\n 'ring-1 outline-hidden ring-inset focus:ring-2',\n ],\n {\n variants: {\n state: {\n undefined: 'ring-outline focus:ring-outline-high',\n error: 'ring-error',\n alert: 'ring-alert',\n success: 'ring-success',\n },\n disabled: {\n true: 'cursor-not-allowed',\n },\n readOnly: {\n true: 'cursor-default',\n },\n },\n compoundVariants: [\n {\n disabled: false,\n state: undefined,\n class: 'hover:ring-outline-high',\n },\n ],\n }\n)\n\nexport const Items = ({\n children,\n className,\n ref,\n ...rest\n}: PropsWithChildren<ComponentPropsWithRef<'select'>>) => {\n const {\n state,\n disabled,\n readOnly,\n ariaLabel,\n fieldLabelId,\n isControlled,\n onValueChange,\n selectedItem,\n setValue,\n name,\n required,\n fieldId,\n } = useSelectContext()\n\n const handleChange = (event: ChangeEvent<HTMLSelectElement>) => {\n if (isControlled) {\n event.preventDefault()\n onValueChange?.(event.target.value)\n } else {\n setValue(event.target.value)\n }\n }\n\n return (\n <select\n data-spark-component=\"select-items\"\n ref={ref}\n disabled={disabled || readOnly}\n name={name}\n required={required}\n aria-labelledby={fieldLabelId}\n {...(ariaLabel && { 'aria-label': ariaLabel })}\n className={styles({ className, state, disabled, readOnly })}\n value={selectedItem?.value}\n onChange={handleChange}\n id={fieldId}\n {...rest}\n >\n {children}\n </select>\n )\n}\n\nItems.displayName = 'Select.Items'\n","import { useEffect } from 'react'\n\nimport { useSelectGroupContext } from './SelectItemsGroupContext'\n\ninterface LabelProps {\n children: string\n}\n\nexport const Label = ({ children }: LabelProps) => {\n const { setGroupLabel } = useSelectGroupContext()\n\n useEffect(() => {\n setGroupLabel(children)\n }, [children])\n\n return null\n}\n\nLabel.displayName = 'Select.Label'\n","import { ReactElement } from 'react'\n\nimport { Icon } from '../icon'\n\nexport const LeadingIcon = ({ children }: { children: ReactElement }) => {\n return (\n <Icon size={'sm'} className=\"shrink-0\">\n {children}\n </Icon>\n )\n}\n\nLeadingIcon.displayName = 'Select.LeadingIcon'\n","import { type Ref, useEffect } from 'react'\n\nimport { useSelectContext } from './SelectContext'\n\nexport interface PlaceholderProps {\n disabled?: boolean\n children: string\n ref?: Ref<HTMLOptionElement>\n}\n\nexport const Placeholder = ({\n disabled = false,\n children,\n ref: forwardedRef,\n}: PlaceholderProps) => {\n const { setPlaceholder } = useSelectContext()\n\n useEffect(() => {\n setPlaceholder(children)\n }, [children])\n\n return (\n <option\n data-spark-component=\"select-placeholder\"\n ref={forwardedRef}\n key=\"placeholder\"\n value=\"\"\n disabled={disabled}\n >\n {children}\n </option>\n )\n}\n\nPlaceholder.displayName = 'Select.Placeholder'\n","import { cva } from 'class-variance-authority'\n\nexport const styles = cva(\n [\n 'relative flex w-full items-center justify-between',\n 'min-h-sz-44 rounded-lg px-lg',\n 'text-body-1',\n // outline styles\n 'ring-1 outline-hidden ring-inset focus-within:ring-focus',\n ],\n {\n variants: {\n state: {\n undefined: 'ring-outline',\n error: 'ring-error',\n alert: 'ring-alert',\n success: 'ring-success',\n },\n disabled: {\n false: 'focus-within:ring-2',\n },\n readOnly: {\n true: '',\n },\n },\n compoundVariants: [\n {\n readOnly: false,\n disabled: false,\n class: 'bg-surface text-on-surface',\n },\n {\n readOnly: true,\n class: 'bg-on-surface/dim-5 text-on-surface cursor-default',\n },\n {\n disabled: true,\n class: ['bg-on-surface/dim-5 text-on-surface/dim-3', 'cursor-not-allowed'],\n },\n {\n disabled: false,\n state: undefined,\n class: 'default:hover:ring-outline-high',\n },\n ],\n }\n)\n","import { ArrowHorizontalDown } from '@spark-ui/icons/ArrowHorizontalDown'\nimport { ReactNode, type Ref, useEffect } from 'react'\n\nimport { Icon } from '../icon'\nimport { useSelectContext } from './SelectContext'\nimport { styles } from './SelectTrigger.styles'\n\ninterface TriggerProps {\n 'aria-label'?: string\n children: ReactNode\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * This trigger acts as a fake button for the `select` tag.\n * It is not interactive.\n */\nexport const Trigger = ({\n 'aria-label': ariaLabel,\n children,\n className,\n ref: forwardedRef,\n}: TriggerProps) => {\n const { disabled, readOnly, state, setAriaLabel, itemsComponent } = useSelectContext()\n\n useEffect(() => {\n if (ariaLabel) {\n setAriaLabel(ariaLabel)\n }\n }, [ariaLabel])\n\n return (\n <div\n data-spark-component=\"select-trigger\"\n ref={forwardedRef}\n className={styles({ className, state, disabled, readOnly })}\n >\n <span className=\"gap-md flex items-center justify-start\">{children}</span>\n\n <Icon className=\"ml-md shrink-0\" size=\"sm\">\n <ArrowHorizontalDown />\n </Icon>\n\n {itemsComponent}\n </div>\n )\n}\n\nTrigger.displayName = 'Select.Trigger'\n","import { cx } from 'class-variance-authority'\nimport { ReactNode, type Ref } from 'react'\n\nimport { useSelectContext } from './SelectContext'\n\nexport interface ValueProps {\n children?: ReactNode\n className?: string\n /**\n * Optional placeholder value for the trigger.\n * If not specified, the value inside `Select.Placeholder` item will be used.\n */\n placeholder?: string\n ref?: Ref<HTMLSpanElement>\n}\n\nexport const Value = ({\n children,\n className,\n placeholder: customPlaceholder,\n ref: forwardedRef,\n}: ValueProps) => {\n const { selectedItem, placeholder, disabled } = useSelectContext()\n\n const isPlaceholderSelected = selectedItem?.value == null\n const valuePlaceholder = customPlaceholder || placeholder\n\n return (\n <span\n role=\"presentation\"\n data-spark-component=\"select-value\"\n ref={forwardedRef}\n className={cx('flex shrink items-center text-left', className)}\n >\n <span\n className={cx(\n 'line-clamp-1 flex-1 overflow-hidden break-all text-ellipsis',\n isPlaceholderSelected && !disabled && 'text-on-surface/dim-1'\n )}\n >\n {isPlaceholderSelected ? valuePlaceholder : children || selectedItem?.text}\n </span>\n </span>\n )\n}\n\nValue.displayName = 'Select.Value'\n","import { Select as Root } from './Select'\nimport { SelectProvider, useSelectContext } from './SelectContext'\nimport { Group } from './SelectGroup'\nimport { Item } from './SelectItem'\nimport { Items } from './SelectItems'\nimport { Label } from './SelectLabel'\nimport { LeadingIcon } from './SelectLeadingIcon'\nimport { Placeholder } from './SelectPlaceholder'\nimport { Trigger } from './SelectTrigger'\nimport { Value } from './SelectValue'\n\nexport { useSelectContext, SelectProvider }\n\nexport const Select: typeof Root & {\n Group: typeof Group\n Item: typeof Item\n Items: typeof Items\n Placeholder: typeof Placeholder\n Label: typeof Label\n Trigger: typeof Trigger\n Value: typeof Value\n LeadingIcon: typeof LeadingIcon\n} = Object.assign(Root, {\n Group,\n Item,\n Items,\n Placeholder,\n Label,\n Trigger,\n Value,\n LeadingIcon,\n})\n\nSelect.displayName = 'Select'\nGroup.displayName = 'Select.Group'\nItems.displayName = 'Select.Items'\nItem.displayName = 'Select.Item'\nPlaceholder.displayName = 'Select.Placeholder'\nLabel.displayName = 'Select.Label'\nTrigger.displayName = 'Select.Trigger'\nValue.displayName = 'Select.Value'\nLeadingIcon.displayName = 'Select.LeadingIcon'\n"],"names":["findElement","children","name","Children","isValidElement","child","getElementDisplayName","element","getOrderedItems","result","childProps","getItemsFromChildren","newMap","itemData","SelectContext","createContext","ID_PREFIX","SelectProvider","defaultValue","valueProp","onValueChange","disabledProp","readOnlyProp","stateProp","itemsComponent","nameProp","requiredProp","value","setValue","useCombinedState","placeholder","setPlaceholder","useState","itemsMap","setItemsMap","ariaLabel","setAriaLabel","firstItem","selectedItem","isControlled","field","useFormFieldControl","state","internalFieldID","useId","fieldId","fieldLabelId","disabled","readOnly","required","useEffect","previousItems","newItems","item","index","hasUpdatedValue","hasUpdatedText","jsx","useSelectContext","context","useContext","Select","props","finder","trigger","items","SelectGroupContext","SelectGroupProvider","groupLabel","setGroupLabel","useSelectGroupContext","Group","forwardedRef","GroupContent","className","cx","Item","styles","cva","Items","ref","rest","handleChange","event","Label","LeadingIcon","Icon","Placeholder","Trigger","jsxs","ArrowHorizontalDown","Value","customPlaceholder","isPlaceholderSelected","valuePlaceholder","Root"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react/jsx-runtime"),O=require("@react-stately/toast"),c=require("react"),tt=require("react-dom"),T=require("@react-aria/toast"),S=require("class-variance-authority"),et=require("../Button-BIAkZTRR.js"),nt=require("@spark-ui/icons/Close"),D=require("../Icon-CF0W0LKr.js"),at=require("../IconButton-D5fk89W-.js"),it=[{design:"filled",intent:"success",class:["bg-success text-on-success"]},{design:"filled",intent:"alert",class:["bg-alert text-on-alert"]},{design:"filled",intent:"error",class:["bg-error text-on-error"]},{design:"filled",intent:"info",class:["bg-info text-on-info"]},{design:"filled",intent:"neutral",class:["bg-neutral text-on-neutral"]},{design:"filled",intent:"main",class:["bg-main text-on-main"]},{design:"filled",intent:"basic",class:["bg-basic text-on-basic"]},{design:"filled",intent:"support",class:["bg-support text-on-support"]},{design:"filled",intent:"accent",class:["bg-accent text-on-accent"]},{design:"filled",intent:"inverse",class:["bg-surface-inverse text-on-surface-inverse"]}],ot=[{design:"tinted",intent:"success",class:["bg-success-container text-on-success-container"]},{design:"tinted",intent:"alert",class:["bg-alert-container text-on-alert-container"]},{design:"tinted",intent:"error",class:["bg-error-container text-on-error-container"]},{design:"tinted",intent:"info",class:["bg-info-container text-on-info-container"]},{design:"tinted",intent:"neutral",class:["bg-neutral-container text-on-neutral-container"]},{design:"tinted",intent:"main",class:["bg-main-container text-on-main-container"]},{design:"tinted",intent:"basic",class:["bg-basic-container text-on-basic-container"]},{design:"tinted",intent:"support",class:["bg-support-container text-on-support-container"]},{design:"tinted",intent:"accent",class:["bg-accent-container text-on-accent-container"]},{design:"tinted",intent:"inverse",class:["bg-surface-inverse text-on-surface-inverse"]}],st=S.cva(["rounded-md shadow-sm","max-w-[600px]","cursor-default pointer-events-auto touch-none select-none","absolute","group-focus-visible:outline-hidden group-focus-visible:u-outline group-not-focus-visible:ring-inset","group-data-[position=bottom]:bottom-0 group-data-[position=bottom-left]:bottom-0 group-data-[position=bottom-right]:bottom-0","group-data-[position=top]:top-0 group-data-[position=top-left]:top-0 group-data-[position=top-right]:top-0","animation-duration-400","[animation-fill-mode: forwards]!","data-[animation=queued]:animate-fade-in","data-[animation=entering]:animation-ease-decelerate-back","data-[animation=exiting]:animation-ease-accelerate","data-[animation=entering]:group-data-[position=bottom]:[&:not([data-swipe])]:animate-slide-in-bottom","data-[animation=exiting]:opacity-0 data-[animation=exiting]:transition-opacity","data-[animation=exiting]:group-data-[position=bottom]:[&:not([data-swipe])]:animate-slide-out-bottom","data-[animation=entering]:group-data-[position=bottom-left]:[&:not([data-swipe])]:animate-slide-in-bottom","data-[animation=exiting]:group-data-[position=bottom-left]:[&:not([data-swipe])]:animate-slide-out-bottom","data-[animation=entering]:group-data-[position=bottom-right]:[&:not([data-swipe])]:animate-slide-in-bottom","data-[animation=exiting]:group-data-[position=bottom-right]:[&:not([data-swipe])]:animate-slide-out-bottom","data-[animation=entering]:group-data-[position=top]:[&:not([data-swipe])]:animate-slide-in-top","data-[animation=exiting]:group-data-[position=top]:[&:not([data-swipe])]:animate-slide-out-top","data-[animation=entering]:group-data-[position=top-left]:[&:not([data-swipe])]:animate-slide-in-top","data-[animation=exiting]:group-data-[position=top-left]:[&:not([data-swipe])]:animate-slide-out-top","data-[animation=entering]:group-data-[position=top-right]:[&:not([data-swipe])]:animate-slide-in-top","data-[animation=exiting]:group-data-[position=top-right]:[&:not([data-swipe])]:animate-slide-out-top","data-[swipe=move]:data-[swipe-direction=right]:translate-x-(--swipe-position-x)","data-[swipe=move]:data-[swipe-direction=left]:translate-x-(--swipe-position-x)","data-[swipe=cancel]:translate-x-0","data-[swipe=end]:data-[swipe-direction=right]:animate-standalone-swipe-out-right","data-[swipe=end]:data-[swipe-direction=left]:animate-standalone-swipe-out-left"],{variants:{design:{filled:"",tinted:""},intent:{success:"",alert:"",error:"",info:"",neutral:"",main:"",basic:"",support:"",accent:"",inverse:""}},compoundVariants:[...it,...ot],defaultVariants:{design:"filled",intent:"neutral"}}),rt=S.cva(["inline-grid items-center","col-start-1 row-start-1","pl-md pr-lg"],{variants:{actionOnNewline:{true:["grid-rows-[52px_1fr_52px]","grid-cols-[min-content_1fr_min-content]","[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']"],false:["grid-cols-[min-content_1fr_min-content_min-content]","[grid-template-areas:'icon_message_action_close']"]}},defaultVariants:{actionOnNewline:!1}}),Q=c.createContext({}),q=()=>c.useContext(Q),h=({design:t="filled",intent:e="neutral",onClick:n,children:s,className:l,ref:u,...m})=>{const{toast:a,state:o}=q(),i=e??a.content.intent,f=t??a.content.design;return b.jsx(et.Button,{"data-spark-component":"snackbar-item-action",ref:u,size:"md",shape:"rounded",...i==="inverse"?{design:"ghost",intent:"surface"}:{design:f,intent:i==="error"?"danger":i},onClick:y=>{n?.(y),o.close(a.key)},style:{gridArea:"action",...m.style},className:S.cx("ml-md justify-self-end",l),...m,children:s})};h.displayName="Snackbar.ItemAction";const I=({design:t="filled",intent:e="neutral","aria-label":n,onClick:s,className:l,ref:u,...m})=>{const{toast:a,state:o}=q(),i=e??a.content.intent,f=t??a.content.design;return b.jsx(at.IconButton,{"data-spark-component":"snackbar-item-close",ref:u,size:"md",shape:"rounded",...i==="inverse"?{design:"ghost",intent:"surface"}:{design:f,intent:i==="error"?"danger":i},"aria-label":n,onClick:y=>{s?.(y),o.close(a.key)},style:{gridArea:"close",...m.style},className:S.cx("ml-md justify-self-end",l),...m,children:b.jsx(D.Icon,{size:"sm",children:b.jsx(nt.Close,{})})})};I.displayName="Snackbar.ItemClose";const C=({children:t,className:e,...n})=>b.jsx(D.Icon,{size:"md",className:S.cx("mx-md",e),style:{gridArea:"icon",...n.style},...n,children:t});C.displayName="Snackbar.ItemIcon";const V=75,ct=({swipeRef:t,onSwipeStart:e,onSwipeMove:n,onSwipeCancel:s,onSwipeEnd:l,threshold:u=10})=>{const[m,a]=c.useState(),o=c.useRef(null),i=c.useRef(null),f=c.useRef(null),y=r=>{i.current={x:r.clientX,y:r.clientY},document.addEventListener("selectstart",p=>p.preventDefault())},k=r=>{if(!i.current)return;const p=Math.abs(r.clientX-i.current.x),x=Math.abs(r.clientY-i.current.y);let d;p>x&&p>u?o.current=r.clientX>i.current.x?"right":"left":x>u&&(o.current=r.clientY>i.current.y?"down":"up"),o.current&&(f.current?(d="move",f.current={x:p,y:x},t.current.style.setProperty("--swipe-position-x",`${p>x?r.clientX-i.current.x:0}px`),t.current.style.setProperty("--swipe-position-y",`${p>x?0:r.clientY-i.current.y}px`),n?.({state:d,direction:o.current})):(d="start",f.current={x:p,y:x},e?.({state:d,direction:o.current})),a(d))},g=()=>{const r=f.current;if(i.current=null,f.current=null,r){const{x:p,y:x}=r;let d;p>x?p>V?(d="end",l?.({state:d,direction:o.current})):(d="cancel",s?.({state:d,direction:o.current})):x>V?(d="end",l?.({state:d,direction:o.current})):(d="cancel",s?.({state:d,direction:o.current})),a(d),document.removeEventListener("selectstart",v=>v.preventDefault())}};return c.useEffect(()=>{if(!t.current)return;const r=t.current;return r.addEventListener("pointerdown",y),document.addEventListener("pointermove",k),document.addEventListener("pointerup",g),()=>{r.removeEventListener("pointerdown",y),document.removeEventListener("pointermove",k),document.removeEventListener("pointerup",g)}},[]),{state:m,direction:o.current}},A=({"aria-label":t,"aria-labelledby":e,"aria-describedby":n,"aria-details":s,design:l,intent:u,actionOnNewline:m,className:a,children:o,ref:i,...f})=>{const y=c.useRef(null),k=typeof i!="function"&&i||y,{toast:g,state:r}=q(),{state:p,direction:x}=ct({swipeRef:k,onSwipeStart:r.pauseAll,onSwipeCancel:r.resumeAll,onSwipeEnd:({direction:_})=>{["left","right"].includes(`${_}`)&&r.close(g.key)}}),{message:d,icon:v,isClosable:$,onAction:B,actionLabel:R}=g.content,N=u??g.content.intent,j=l??g.content.design,z=m??g.content.actionOnNewline,F={ariaLabel:t,ariaLabelledby:e,ariaDescribedby:n,ariaDetails:s},{toastProps:M,titleProps:G,closeButtonProps:H,contentProps:K}=T.useToast({toast:g,...F},r,k),E=c.useCallback(_=>c.Children.toArray(o).filter(c.isValidElement).find(Z=>!!Z.type.displayName?.includes(_)),[o]),U=E("Snackbar.ItemIcon"),W=E("Snackbar.ItemAction"),J=E("Snackbar.ItemClose");return b.jsx("div",{"data-spark-component":"snackbar-item",className:st({design:j,intent:N,className:a}),"data-animation":g.animation,...!(p==="cancel"&&g.animation==="exiting")&&{"data-swipe":p,"data-swipe-direction":x},...g.animation==="exiting"&&{onAnimationEnd:()=>r.remove(g.key)},ref:k,...M,...f,children:b.jsxs("div",{className:rt({actionOnNewline:z}),...K,children:[P(U,v?C:null,{children:v}),b.jsx("p",{className:"px-md py-lg text-body-2 row-span-3",style:{gridArea:"message"},...G,children:d}),P(W,R&&B?h:null,{intent:N,design:j,onClick:B,children:R}),P(J,$?I:null,{intent:N,design:j,"aria-label":H["aria-label"]})]})})};A.displayName="Snackbar.Item";const P=(t,e,n)=>{if(t)return c.cloneElement(t,{...n,...t.props});if(e){const s=e;return b.jsx(s,{...n})}else return null},lt=S.cva(["fixed inset-x-lg z-toast group","outline-hidden pointer-events-none","grid grid-rows-1 grid-cols-1 gap-lg"],{variants:{position:{top:"top-lg justify-items-center","top-right":"top-lg justify-items-end","top-left":"top-lg justify-items-start",bottom:"bottom-lg justify-items-center","bottom-right":"bottom-lg justify-items-end","bottom-left":"bottom-lg justify-items-start"}},defaultVariants:{position:"bottom"}}),dt=({children:t=b.jsx(A,{}),state:e,position:n="bottom",className:s,ref:l,...u})=>{const m=c.useRef(null),a=l&&typeof l!="function"?l:m,{regionProps:o}=T.useToastRegion(u,e,a);return b.jsx("div",{...o,ref:a,"data-position":n,className:lt({position:n,className:s}),children:e.visibleToasts.map(i=>b.jsx(Q.Provider,{value:{toast:i,state:e},children:c.cloneElement(t,{key:i.key})},i.key))})},ut=({providers:t,subscriptions:e})=>{const n=c.useCallback(a=>(e.add(a),()=>e.delete(a)),[e]),s=c.useCallback(()=>[...t].reverse()[0],[t]),l=c.useCallback(a=>{t.add(a);for(const o of e)o()},[t,e]),u=c.useCallback(a=>{t.delete(a);for(const o of e)o()},[t,e]);return{provider:c.useSyncExternalStore(n,s,s),addProvider:l,deleteProvider:u}};let w=null;const L=()=>(w||(w=new O.ToastQueue({maxVisibleToasts:1,hasExitAnimation:!0})),w),mt=()=>{w=null},pt={providers:new Set,subscriptions:new Set},X=({ref:t,...e})=>{const n=c.useRef(null),s=O.useToastQueue(L()),{provider:l,addProvider:u,deleteProvider:m}=ut(pt);return c.useEffect(()=>(u(n),()=>{for(const a of L().visibleToasts)a.animation=void 0;m(n)}),[]),n===l&&s.visibleToasts.length>0?tt.createPortal(b.jsx(dt,{ref:t,state:s,...e}),document.body):null};X.displayName="Snackbar";const gt=({onClose:t,timeout:e=5e3,priority:n,...s})=>{L().add(s,{onClose:t,timeout:e&&!s.onAction?Math.max(e,5e3):void 0,priority:n})},Y=Object.assign(X,{Item:A,ItemAction:h,ItemClose:I,ItemIcon:C});Y.displayName="Snackbar";A.displayName="Snackbar.Item";h.displayName="Snackbar.ItemAction";I.displayName="Snackbar.ItemClose";C.displayName="Snackbar.ItemIcon";exports.Snackbar=Y;exports.addSnackbar=gt;exports.clearSnackbarQueue=mt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react/jsx-runtime"),O=require("@react-stately/toast"),c=require("react"),tt=require("react-dom"),T=require("@react-aria/toast"),S=require("class-variance-authority"),et=require("../Button-B6rA3-e5.js"),nt=require("@spark-ui/icons/Close"),D=require("../Icon-CF0W0LKr.js"),at=require("../IconButton-D3g86WpZ.js"),it=[{design:"filled",intent:"success",class:["bg-success text-on-success"]},{design:"filled",intent:"alert",class:["bg-alert text-on-alert"]},{design:"filled",intent:"error",class:["bg-error text-on-error"]},{design:"filled",intent:"info",class:["bg-info text-on-info"]},{design:"filled",intent:"neutral",class:["bg-neutral text-on-neutral"]},{design:"filled",intent:"main",class:["bg-main text-on-main"]},{design:"filled",intent:"basic",class:["bg-basic text-on-basic"]},{design:"filled",intent:"support",class:["bg-support text-on-support"]},{design:"filled",intent:"accent",class:["bg-accent text-on-accent"]},{design:"filled",intent:"inverse",class:["bg-surface-inverse text-on-surface-inverse"]}],ot=[{design:"tinted",intent:"success",class:["bg-success-container text-on-success-container"]},{design:"tinted",intent:"alert",class:["bg-alert-container text-on-alert-container"]},{design:"tinted",intent:"error",class:["bg-error-container text-on-error-container"]},{design:"tinted",intent:"info",class:["bg-info-container text-on-info-container"]},{design:"tinted",intent:"neutral",class:["bg-neutral-container text-on-neutral-container"]},{design:"tinted",intent:"main",class:["bg-main-container text-on-main-container"]},{design:"tinted",intent:"basic",class:["bg-basic-container text-on-basic-container"]},{design:"tinted",intent:"support",class:["bg-support-container text-on-support-container"]},{design:"tinted",intent:"accent",class:["bg-accent-container text-on-accent-container"]},{design:"tinted",intent:"inverse",class:["bg-surface-inverse text-on-surface-inverse"]}],st=S.cva(["rounded-md shadow-sm","max-w-[600px]","cursor-default pointer-events-auto touch-none select-none","absolute","group-focus-visible:outline-hidden group-focus-visible:u-outline group-not-focus-visible:ring-inset","group-data-[position=bottom]:bottom-0 group-data-[position=bottom-left]:bottom-0 group-data-[position=bottom-right]:bottom-0","group-data-[position=top]:top-0 group-data-[position=top-left]:top-0 group-data-[position=top-right]:top-0","animation-duration-400","[animation-fill-mode: forwards]!","data-[animation=queued]:animate-fade-in","data-[animation=entering]:animation-ease-decelerate-back","data-[animation=exiting]:animation-ease-accelerate","data-[animation=entering]:group-data-[position=bottom]:[&:not([data-swipe])]:animate-slide-in-bottom","data-[animation=exiting]:opacity-0 data-[animation=exiting]:transition-opacity","data-[animation=exiting]:group-data-[position=bottom]:[&:not([data-swipe])]:animate-slide-out-bottom","data-[animation=entering]:group-data-[position=bottom-left]:[&:not([data-swipe])]:animate-slide-in-bottom","data-[animation=exiting]:group-data-[position=bottom-left]:[&:not([data-swipe])]:animate-slide-out-bottom","data-[animation=entering]:group-data-[position=bottom-right]:[&:not([data-swipe])]:animate-slide-in-bottom","data-[animation=exiting]:group-data-[position=bottom-right]:[&:not([data-swipe])]:animate-slide-out-bottom","data-[animation=entering]:group-data-[position=top]:[&:not([data-swipe])]:animate-slide-in-top","data-[animation=exiting]:group-data-[position=top]:[&:not([data-swipe])]:animate-slide-out-top","data-[animation=entering]:group-data-[position=top-left]:[&:not([data-swipe])]:animate-slide-in-top","data-[animation=exiting]:group-data-[position=top-left]:[&:not([data-swipe])]:animate-slide-out-top","data-[animation=entering]:group-data-[position=top-right]:[&:not([data-swipe])]:animate-slide-in-top","data-[animation=exiting]:group-data-[position=top-right]:[&:not([data-swipe])]:animate-slide-out-top","data-[swipe=move]:data-[swipe-direction=right]:translate-x-(--swipe-position-x)","data-[swipe=move]:data-[swipe-direction=left]:translate-x-(--swipe-position-x)","data-[swipe=cancel]:translate-x-0","data-[swipe=end]:data-[swipe-direction=right]:animate-standalone-swipe-out-right","data-[swipe=end]:data-[swipe-direction=left]:animate-standalone-swipe-out-left"],{variants:{design:{filled:"",tinted:""},intent:{success:"",alert:"",error:"",info:"",neutral:"",main:"",basic:"",support:"",accent:"",inverse:""}},compoundVariants:[...it,...ot],defaultVariants:{design:"filled",intent:"neutral"}}),rt=S.cva(["inline-grid items-center","col-start-1 row-start-1","pl-md pr-lg"],{variants:{actionOnNewline:{true:["grid-rows-[52px_1fr_52px]","grid-cols-[min-content_1fr_min-content]","[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']"],false:["grid-cols-[min-content_1fr_min-content_min-content]","[grid-template-areas:'icon_message_action_close']"]}},defaultVariants:{actionOnNewline:!1}}),Q=c.createContext({}),q=()=>c.useContext(Q),h=({design:t="filled",intent:e="neutral",onClick:n,children:s,className:l,ref:u,...m})=>{const{toast:a,state:o}=q(),i=e??a.content.intent,f=t??a.content.design;return b.jsx(et.Button,{"data-spark-component":"snackbar-item-action",ref:u,size:"md",shape:"rounded",...i==="inverse"?{design:"ghost",intent:"surface"}:{design:f,intent:i==="error"?"danger":i},onClick:y=>{n?.(y),o.close(a.key)},style:{gridArea:"action",...m.style},className:S.cx("ml-md justify-self-end",l),...m,children:s})};h.displayName="Snackbar.ItemAction";const I=({design:t="filled",intent:e="neutral","aria-label":n,onClick:s,className:l,ref:u,...m})=>{const{toast:a,state:o}=q(),i=e??a.content.intent,f=t??a.content.design;return b.jsx(at.IconButton,{"data-spark-component":"snackbar-item-close",ref:u,size:"md",shape:"rounded",...i==="inverse"?{design:"ghost",intent:"surface"}:{design:f,intent:i==="error"?"danger":i},"aria-label":n,onClick:y=>{s?.(y),o.close(a.key)},style:{gridArea:"close",...m.style},className:S.cx("ml-md justify-self-end",l),...m,children:b.jsx(D.Icon,{size:"sm",children:b.jsx(nt.Close,{})})})};I.displayName="Snackbar.ItemClose";const C=({children:t,className:e,...n})=>b.jsx(D.Icon,{size:"md",className:S.cx("mx-md",e),style:{gridArea:"icon",...n.style},...n,children:t});C.displayName="Snackbar.ItemIcon";const V=75,ct=({swipeRef:t,onSwipeStart:e,onSwipeMove:n,onSwipeCancel:s,onSwipeEnd:l,threshold:u=10})=>{const[m,a]=c.useState(),o=c.useRef(null),i=c.useRef(null),f=c.useRef(null),y=r=>{i.current={x:r.clientX,y:r.clientY},document.addEventListener("selectstart",p=>p.preventDefault())},k=r=>{if(!i.current)return;const p=Math.abs(r.clientX-i.current.x),x=Math.abs(r.clientY-i.current.y);let d;p>x&&p>u?o.current=r.clientX>i.current.x?"right":"left":x>u&&(o.current=r.clientY>i.current.y?"down":"up"),o.current&&(f.current?(d="move",f.current={x:p,y:x},t.current.style.setProperty("--swipe-position-x",`${p>x?r.clientX-i.current.x:0}px`),t.current.style.setProperty("--swipe-position-y",`${p>x?0:r.clientY-i.current.y}px`),n?.({state:d,direction:o.current})):(d="start",f.current={x:p,y:x},e?.({state:d,direction:o.current})),a(d))},g=()=>{const r=f.current;if(i.current=null,f.current=null,r){const{x:p,y:x}=r;let d;p>x?p>V?(d="end",l?.({state:d,direction:o.current})):(d="cancel",s?.({state:d,direction:o.current})):x>V?(d="end",l?.({state:d,direction:o.current})):(d="cancel",s?.({state:d,direction:o.current})),a(d),document.removeEventListener("selectstart",v=>v.preventDefault())}};return c.useEffect(()=>{if(!t.current)return;const r=t.current;return r.addEventListener("pointerdown",y),document.addEventListener("pointermove",k),document.addEventListener("pointerup",g),()=>{r.removeEventListener("pointerdown",y),document.removeEventListener("pointermove",k),document.removeEventListener("pointerup",g)}},[]),{state:m,direction:o.current}},A=({"aria-label":t,"aria-labelledby":e,"aria-describedby":n,"aria-details":s,design:l,intent:u,actionOnNewline:m,className:a,children:o,ref:i,...f})=>{const y=c.useRef(null),k=typeof i!="function"&&i||y,{toast:g,state:r}=q(),{state:p,direction:x}=ct({swipeRef:k,onSwipeStart:r.pauseAll,onSwipeCancel:r.resumeAll,onSwipeEnd:({direction:_})=>{["left","right"].includes(`${_}`)&&r.close(g.key)}}),{message:d,icon:v,isClosable:$,onAction:B,actionLabel:R}=g.content,N=u??g.content.intent,j=l??g.content.design,z=m??g.content.actionOnNewline,F={ariaLabel:t,ariaLabelledby:e,ariaDescribedby:n,ariaDetails:s},{toastProps:M,titleProps:G,closeButtonProps:H,contentProps:K}=T.useToast({toast:g,...F},r,k),E=c.useCallback(_=>c.Children.toArray(o).filter(c.isValidElement).find(Z=>!!Z.type.displayName?.includes(_)),[o]),U=E("Snackbar.ItemIcon"),W=E("Snackbar.ItemAction"),J=E("Snackbar.ItemClose");return b.jsx("div",{"data-spark-component":"snackbar-item",className:st({design:j,intent:N,className:a}),"data-animation":g.animation,...!(p==="cancel"&&g.animation==="exiting")&&{"data-swipe":p,"data-swipe-direction":x},...g.animation==="exiting"&&{onAnimationEnd:()=>r.remove(g.key)},ref:k,...M,...f,children:b.jsxs("div",{className:rt({actionOnNewline:z}),...K,children:[P(U,v?C:null,{children:v}),b.jsx("p",{className:"px-md py-lg text-body-2 row-span-3",style:{gridArea:"message"},...G,children:d}),P(W,R&&B?h:null,{intent:N,design:j,onClick:B,children:R}),P(J,$?I:null,{intent:N,design:j,"aria-label":H["aria-label"]})]})})};A.displayName="Snackbar.Item";const P=(t,e,n)=>{if(t)return c.cloneElement(t,{...n,...t.props});if(e){const s=e;return b.jsx(s,{...n})}else return null},lt=S.cva(["fixed inset-x-lg z-toast group","outline-hidden pointer-events-none","grid grid-rows-1 grid-cols-1 gap-lg"],{variants:{position:{top:"top-lg justify-items-center","top-right":"top-lg justify-items-end","top-left":"top-lg justify-items-start",bottom:"bottom-lg justify-items-center","bottom-right":"bottom-lg justify-items-end","bottom-left":"bottom-lg justify-items-start"}},defaultVariants:{position:"bottom"}}),dt=({children:t=b.jsx(A,{}),state:e,position:n="bottom",className:s,ref:l,...u})=>{const m=c.useRef(null),a=l&&typeof l!="function"?l:m,{regionProps:o}=T.useToastRegion(u,e,a);return b.jsx("div",{...o,ref:a,"data-position":n,className:lt({position:n,className:s}),children:e.visibleToasts.map(i=>b.jsx(Q.Provider,{value:{toast:i,state:e},children:c.cloneElement(t,{key:i.key})},i.key))})},ut=({providers:t,subscriptions:e})=>{const n=c.useCallback(a=>(e.add(a),()=>e.delete(a)),[e]),s=c.useCallback(()=>[...t].reverse()[0],[t]),l=c.useCallback(a=>{t.add(a);for(const o of e)o()},[t,e]),u=c.useCallback(a=>{t.delete(a);for(const o of e)o()},[t,e]);return{provider:c.useSyncExternalStore(n,s,s),addProvider:l,deleteProvider:u}};let w=null;const L=()=>(w||(w=new O.ToastQueue({maxVisibleToasts:1,hasExitAnimation:!0})),w),mt=()=>{w=null},pt={providers:new Set,subscriptions:new Set},X=({ref:t,...e})=>{const n=c.useRef(null),s=O.useToastQueue(L()),{provider:l,addProvider:u,deleteProvider:m}=ut(pt);return c.useEffect(()=>(u(n),()=>{for(const a of L().visibleToasts)a.animation=void 0;m(n)}),[]),n===l&&s.visibleToasts.length>0?tt.createPortal(b.jsx(dt,{ref:t,state:s,...e}),document.body):null};X.displayName="Snackbar";const gt=({onClose:t,timeout:e=5e3,priority:n,...s})=>{L().add(s,{onClose:t,timeout:e&&!s.onAction?Math.max(e,5e3):void 0,priority:n})},Y=Object.assign(X,{Item:A,ItemAction:h,ItemClose:I,ItemIcon:C});Y.displayName="Snackbar";A.displayName="Snackbar.Item";h.displayName="Snackbar.ItemAction";I.displayName="Snackbar.ItemClose";C.displayName="Snackbar.ItemIcon";exports.Snackbar=Y;exports.addSnackbar=gt;exports.clearSnackbarQueue=mt;
2
2
  //# sourceMappingURL=index.js.map
@@ -4,10 +4,10 @@ import { createContext as at, useContext as ot, useState as st, useRef as w, use
4
4
  import { createPortal as dt } from "react-dom";
5
5
  import { useToast as mt, useToastRegion as ut } from "@react-aria/toast";
6
6
  import { cva as B, cx as V } from "class-variance-authority";
7
- import { B as pt } from "../Button-DggC4GFM.mjs";
7
+ import { B as pt } from "../Button-DPncfbbM.mjs";
8
8
  import { Close as gt } from "@spark-ui/icons/Close";
9
9
  import { I as F } from "../Icon-C23-htlD.mjs";
10
- import { I as bt } from "../IconButton-Mv9tO1ZH.mjs";
10
+ import { I as bt } from "../IconButton-Bfd-6BAD.mjs";
11
11
  const ft = [
12
12
  {
13
13
  design: "filled",
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),M=require("@spark-ui/components/form-field"),l=require("react"),m=require("../input/index.js"),A=require("@react-aria/numberfield"),_=require("@react-stately/numberfield"),S=require("@react-aria/button"),k=require("@spark-ui/icons/Minus"),G=require("@spark-ui/icons/Plus"),I=require("../Icon-CF0W0LKr.js"),P=require("../IconButton-D5fk89W-.js"),T=require("@spark-ui/hooks/use-merge-refs"),$=({inputRef:r,locale:i="fr",...e})=>{const u=_.useNumberFieldState({...e,isDisabled:e.disabled,isReadOnly:e.readOnly,isRequired:e.required,locale:i}),{groupProps:n,inputProps:t,incrementButtonProps:s,decrementButtonProps:c}=A.useNumberField({isWheelDisabled:!1,...e,isDisabled:e.disabled,isReadOnly:e.readOnly,isRequired:e.required},u,r);return{groupProps:n,inputProps:t,incrementButtonProps:s,decrementButtonProps:c}},f=l.createContext(null),g=({children:r,formatOptions:i,minValue:e,maxValue:u,ref:n,...t})=>{const s=l.useRef(null),{groupProps:c,inputProps:d,incrementButtonProps:p,decrementButtonProps:R}=$({...t,..."value"in t&&{value:t.value??NaN},onChange:t.onValueChange,formatOptions:i,minValue:e,maxValue:u,inputRef:s}),a=M.useFormFieldControl(),b=!!a.id,v={...p,...b&&{"aria-controls":a.id}},D={...R,...b&&{"aria-controls":a.id}},O={...d,...b&&{id:a.id,required:a.isRequired,"aria-invalid":a.isInvalid?!0:void 0}},{onValueChange:L,...F}=t;return o.jsx(f.Provider,{value:{incrementButtonProps:v,decrementButtonProps:D,inputProps:O,inputRef:s},children:o.jsx(m.InputGroup,{...F,...c,"data-spark-component":"stepper",ref:n,children:r})})};g.displayName="Stepper";const B=()=>{const r=l.useContext(f);if(!r)throw Error("useStepperContext must be used within a Stepper provider");return r},x=({children:r,design:i="ghost",intent:e="neutral",className:u,ref:n,...t})=>{const s=l.useRef(null),c=n&&typeof n!="function"?n:s,{incrementButtonProps:d}=B(),{buttonProps:p}=S.useButton({...d,...t},c);return o.jsx(m.InputGroup.TrailingAddon,{asChild:!0,"data-spark-component":"stepper-increment-button",children:o.jsx(P.IconButton,{ref:c,design:i,intent:e,className:u,"aria-label":p["aria-label"],...p,disabled:t.disabled||p.disabled,children:r||o.jsx(I.Icon,{children:o.jsx(G.Plus,{})})})})},q=({children:r,design:i="ghost",intent:e="neutral",className:u,ref:n,...t})=>{const s=l.useRef(null),c=n&&typeof n!="function"?n:s,{decrementButtonProps:d}=B(),{buttonProps:p}=S.useButton({...d,...t},c);return o.jsx(m.InputGroup.LeadingAddon,{asChild:!0,"data-spark-component":"stepper-decrement-button",children:o.jsx(P.IconButton,{ref:c,design:i,intent:e,className:u,"aria-label":p["aria-label"],...p,disabled:t.disabled||p.disabled,children:r||o.jsx(I.Icon,{children:o.jsx(k.Minus,{})})})})},h=Object.assign(x,{id:"TrailingAddon"}),j=Object.assign(q,{id:"LeadingAddon"});x.displayName="Stepper.DecrementButton";q.displayName="Stepper.DecrementButton";const y=({ref:r,...i})=>{const{inputRef:e,inputProps:u}=B(),n=T.useMergeRefs(r,e),{className:t="",...s}=i;return o.jsx(m.Input,{ref:n,...s,...u,className:`min-w-sz-56 text-center ${t}`})},N=Object.assign(y,{id:"Input"});y.displayName="Stepper.Input";const C=Object.assign(g,{IncrementButton:h,DecrementButton:j,Input:N});C.displayName="Stepper";h.displayName="Stepper.IncrementButton";j.displayName="Stepper.DecrementButton";N.displayName="Stepper.Input";exports.Stepper=C;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),M=require("@spark-ui/components/form-field"),l=require("react"),m=require("../input/index.js"),A=require("@react-aria/numberfield"),_=require("@react-stately/numberfield"),S=require("@react-aria/button"),k=require("@spark-ui/icons/Minus"),G=require("@spark-ui/icons/Plus"),I=require("../Icon-CF0W0LKr.js"),P=require("../IconButton-D3g86WpZ.js"),T=require("@spark-ui/hooks/use-merge-refs"),$=({inputRef:r,locale:i="fr",...e})=>{const u=_.useNumberFieldState({...e,isDisabled:e.disabled,isReadOnly:e.readOnly,isRequired:e.required,locale:i}),{groupProps:n,inputProps:t,incrementButtonProps:s,decrementButtonProps:c}=A.useNumberField({isWheelDisabled:!1,...e,isDisabled:e.disabled,isReadOnly:e.readOnly,isRequired:e.required},u,r);return{groupProps:n,inputProps:t,incrementButtonProps:s,decrementButtonProps:c}},f=l.createContext(null),g=({children:r,formatOptions:i,minValue:e,maxValue:u,ref:n,...t})=>{const s=l.useRef(null),{groupProps:c,inputProps:d,incrementButtonProps:p,decrementButtonProps:R}=$({...t,..."value"in t&&{value:t.value??NaN},onChange:t.onValueChange,formatOptions:i,minValue:e,maxValue:u,inputRef:s}),a=M.useFormFieldControl(),b=!!a.id,v={...p,...b&&{"aria-controls":a.id}},D={...R,...b&&{"aria-controls":a.id}},O={...d,...b&&{id:a.id,required:a.isRequired,"aria-invalid":a.isInvalid?!0:void 0}},{onValueChange:L,...F}=t;return o.jsx(f.Provider,{value:{incrementButtonProps:v,decrementButtonProps:D,inputProps:O,inputRef:s},children:o.jsx(m.InputGroup,{...F,...c,"data-spark-component":"stepper",ref:n,children:r})})};g.displayName="Stepper";const B=()=>{const r=l.useContext(f);if(!r)throw Error("useStepperContext must be used within a Stepper provider");return r},x=({children:r,design:i="ghost",intent:e="neutral",className:u,ref:n,...t})=>{const s=l.useRef(null),c=n&&typeof n!="function"?n:s,{incrementButtonProps:d}=B(),{buttonProps:p}=S.useButton({...d,...t},c);return o.jsx(m.InputGroup.TrailingAddon,{asChild:!0,"data-spark-component":"stepper-increment-button",children:o.jsx(P.IconButton,{ref:c,design:i,intent:e,className:u,"aria-label":p["aria-label"],...p,disabled:t.disabled||p.disabled,children:r||o.jsx(I.Icon,{children:o.jsx(G.Plus,{})})})})},q=({children:r,design:i="ghost",intent:e="neutral",className:u,ref:n,...t})=>{const s=l.useRef(null),c=n&&typeof n!="function"?n:s,{decrementButtonProps:d}=B(),{buttonProps:p}=S.useButton({...d,...t},c);return o.jsx(m.InputGroup.LeadingAddon,{asChild:!0,"data-spark-component":"stepper-decrement-button",children:o.jsx(P.IconButton,{ref:c,design:i,intent:e,className:u,"aria-label":p["aria-label"],...p,disabled:t.disabled||p.disabled,children:r||o.jsx(I.Icon,{children:o.jsx(k.Minus,{})})})})},h=Object.assign(x,{id:"TrailingAddon"}),j=Object.assign(q,{id:"LeadingAddon"});x.displayName="Stepper.DecrementButton";q.displayName="Stepper.DecrementButton";const y=({ref:r,...i})=>{const{inputRef:e,inputProps:u}=B(),n=T.useMergeRefs(r,e),{className:t="",...s}=i;return o.jsx(m.Input,{ref:n,...s,...u,className:`min-w-sz-56 text-center ${t}`})},N=Object.assign(y,{id:"Input"});y.displayName="Stepper.Input";const C=Object.assign(g,{IncrementButton:h,DecrementButton:j,Input:N});C.displayName="Stepper";h.displayName="Stepper.IncrementButton";j.displayName="Stepper.DecrementButton";N.displayName="Stepper.Input";exports.Stepper=C;
2
2
  //# sourceMappingURL=index.js.map
@@ -8,7 +8,7 @@ import { useButton as B } from "@react-aria/button";
8
8
  import { Minus as M } from "@spark-ui/icons/Minus";
9
9
  import { Plus as T } from "@spark-ui/icons/Plus";
10
10
  import { I as P } from "../Icon-C23-htlD.mjs";
11
- import { I as S } from "../IconButton-Mv9tO1ZH.mjs";
11
+ import { I as S } from "../IconButton-Bfd-6BAD.mjs";
12
12
  import { useMergeRefs as V } from "@spark-ui/hooks/use-merge-refs";
13
13
  const W = ({
14
14
  inputRef: r,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),T=require("radix-ui"),s=require("react"),m=require("class-variance-authority"),D=require("@spark-ui/icons/ArrowVerticalLeft"),F=require("@spark-ui/icons/ArrowVerticalRight"),M=require("../Button-BIAkZTRR.js"),j=require("../Icon-CF0W0LKr.js"),q=require("@spark-ui/hooks/use-merge-refs"),K=require("@spark-ui/icons/MoreMenuHorizontal"),H=require("../IconButton-D5fk89W-.js"),g=require("../popover/index.js"),U=require("@spark-ui/internal-utils"),W=s.createContext({}),R=()=>{const t=s.useContext(W);if(!t)throw Error("useTabsContext must be used within a TabsContext Provider");return t},$=m.cva(["flex","data-[orientation=horizontal]:flex-col","data-[orientation=vertical]:flex-row","max-w-full"]),V=({intent:t="basic",size:o="md",asChild:c=!1,forceMount:i=!1,orientation:n="horizontal",children:a,className:l,ref:d,...e})=>r.jsx(W.Provider,{value:{intent:t,size:o,orientation:n,forceMount:i},children:r.jsx(T.Tabs.Root,{ref:d,asChild:c,orientation:n,className:$({className:l}),"data-spark-component":"tabs",activationMode:"automatic",...e,children:a})});V.displayName="Tabs";const G=m.cva(["w-full p-lg","focus-visible:u-outline-inset"],{variants:{forceMount:{true:"data-[state=inactive]:hidden",false:""}}}),P=({children:t,asChild:o=!1,className:c,ref:i,...n})=>{const{forceMount:a}=R();return r.jsx(T.Tabs.Content,{"data-spark-component":"tabs-content",ref:i,forceMount:a||n.forceMount,className:G({className:c,forceMount:a}),asChild:o,...n,children:t})};P.displayName="Tabs.Content";const J=m.cva(["relative flex"]),Q=m.cva(["flex w-full","data-[orientation=horizontal]:flex-row","data-[orientation=vertical]:flex-col","overflow-y-hidden u-no-scrollbar data-[orientation=vertical]:overflow-x-hidden","after:flex after:shrink after:grow after:border-outline","data-[orientation=horizontal]:after:border-b-sm","data-[orientation=vertical]:after:border-r-sm"]),S=m.cva(["h-auto! flex-none","border-b-sm border-outline","outline-hidden","focus-visible:border-none focus-visible:bg-surface-hovered focus-visible:u-outline-inset!"]),X=(t,o)=>{const[c,i]=s.useState({width:void 0,height:void 0}),n=s.useRef(null),a=s.useRef(o);return s.useEffect(()=>{a.current=o},[o]),s.useEffect(()=>{const l=t&&"current"in t?t.current:t;if(!(!l||n.current))return n.current=new ResizeObserver(([d])=>{const{inlineSize:e,blockSize:x}=d?.borderBoxSize?.[0]??{};a.current?.(d),i({width:e,height:x})}),n.current.observe(l),()=>{n.current&&n.current.unobserve(l)}},[t,n,a]),c},N=({asChild:t=!1,loop:o=!1,children:c,className:i,ref:n,...a})=>{const l=s.useRef(null),d=s.useRef(null),e=n||d,{orientation:x}=R(),{width:w}=X(l),[u,h]=s.useState({prev:"hidden",next:"hidden"});s.useEffect(()=>{typeof e=="function"||!e.current||h(x!=="horizontal"?{prev:"hidden",next:"hidden"}:{prev:e.current.scrollWidth>e.current.clientWidth?"visible":"hidden",next:e.current.scrollWidth>e.current.clientWidth?"visible":"hidden"})},[x,e,w]),s.useEffect(()=>{if(typeof e=="function"||!e.current||u.prev==="hidden"||o)return;const v=f=>{h({prev:f.scrollLeft>0?"visible":"disabled",next:f.scrollLeft+f.clientWidth<f.scrollWidth?"visible":"disabled"})},p=e.current;return v(p),p.addEventListener("scroll",({target:f})=>v(f)),()=>p.removeEventListener("scroll",({target:f})=>v(f))},[e,u.prev,o]);const z=()=>{if(typeof e=="function"||!e.current)return;const v=o&&e.current.scrollLeft<=0;e.current.scrollTo({left:v?e.current.scrollLeft+e.current.scrollWidth-e.current.clientWidth:e.current.scrollLeft-e.current.clientWidth,behavior:"smooth"})},y=()=>{if(typeof e=="function"||!e.current)return;const v=o&&e.current.scrollLeft+e.current.clientWidth>=e.current.scrollWidth;e.current.scrollTo({left:v?0:e.current.scrollLeft+e.current.clientWidth,behavior:"smooth"})};return r.jsxs("div",{className:J({className:i}),ref:l,children:[u.prev!=="hidden"&&r.jsx(M.Button,{shape:"square",intent:"surface",size:"sm",className:S(),onClick:z,disabled:u.prev==="disabled","aria-label":"Scroll left",children:r.jsx(j.Icon,{children:r.jsx(D.ArrowVerticalLeft,{})})}),r.jsx(T.Tabs.List,{"data-spark-component":"tabs-list",ref:e,className:Q(),asChild:t,loop:o,...a,children:c}),u.next!=="hidden"&&r.jsx(M.Button,{shape:"square",intent:"surface",size:"sm",className:S(),onClick:y,disabled:u.next==="disabled","aria-label":"Scroll right",children:r.jsx(j.Icon,{children:r.jsx(F.ArrowVerticalRight,{})})})]})};N.displayName="Tabs.List";const C=s.createContext(void 0),E=()=>{const t=s.useContext(C);if(!t)throw new Error("TabsPopover components must be used within TabsPopover");return t},I=s.forwardRef(({"aria-label":t,children:o,...c},i)=>{const{popoverTriggerRef:n}=E(),a=q.useMergeRefs(i,n);return r.jsx(g.Popover.Trigger,{asChild:!0,...c,children:r.jsx(H.IconButton,{ref:a,size:"sm",intent:"surfaceInverse",design:"ghost","aria-label":t,tabIndex:-1,children:r.jsx(j.Icon,{children:o||r.jsx(K.MoreMenuHorizontal,{})})})})});I.displayName="Popover.Trigger";const A=s.forwardRef(({side:t,align:o="start",className:c,...i},n)=>{const{popoverSide:a}=E(),l=m.cx("gap-sm flex flex-col",c);return r.jsx(g.Popover.Content,{ref:n,...i,side:t??a,align:o,className:l})});A.displayName="Popover.Content";const B=({popoverSide:t,popoverTriggerRef:o,children:c})=>{const i=s.useMemo(()=>({popoverSide:t,popoverTriggerRef:o}),[t,o]),a=Object.assign((l=>r.jsx(C.Provider,{value:i,children:r.jsx(g.Popover,{...l,children:l.children})})),g.Popover,{Content:A,Trigger:I});return r.jsx(C.Provider,{value:i,children:c(a)})};B.displayName="Popover";const Y=m.cva(["px-md","relative flex flex-none items-center","border-outline","hover:not-disabled:bg-surface-hovered","after:absolute","data-[state=active]:font-bold","data-[state=inactive]:not-disabled:cursor-pointer","data-[orientation=horizontal]:border-b-sm data-[orientation=horizontal]:after:inset-x-0 data-[orientation=horizontal]:after:bottom-[-1px] data-[orientation=horizontal]:after:h-sz-2","data-[orientation=vertical]:border-r-sm data-[orientation=vertical]:after:inset-y-0 data-[orientation=vertical]:after:right-[-1px] data-[orientation=vertical]:after:w-sz-2","focus-visible:border-none focus-visible:bg-surface-hovered focus-visible:u-outline-inset","disabled:cursor-not-allowed disabled:opacity-dim-3","gap-md [&>*:first-child]:ml-md [&>*:last-child]:mr-md","[&>svg:last-child:first-child]:mx-auto"],{variants:{intent:U.makeVariants({main:["data-[state=active]:text-main data-[state=active]:after:bg-main"],support:["data-[state=active]:text-support data-[state=active]:after:bg-support"],basic:["data-[state=active]:text-basic data-[state=active]:after:bg-basic"]}),size:{xs:["h-sz-32 min-w-sz-32 text-caption"],sm:["h-sz-36 min-w-sz-36 text-body-2"],md:["h-sz-40 min-w-sz-40 text-body-1"]},hasMenu:{true:"pr-3xl"},orientation:{horizontal:"",vertical:""}},compoundVariants:[{hasMenu:!0,orientation:"vertical",class:"w-full"}],defaultVariants:{intent:"basic",size:"md",hasMenu:!1,orientation:"horizontal"}}),L=({asChild:t=!1,value:o,disabled:c=!1,children:i,className:n,ref:a,onKeyDown:l,renderMenu:d,...e})=>{const{intent:x,size:w,orientation:u}=R(),h=s.useRef(null),z=s.useRef(null),y=q.useMergeRefs(a,z),v=b=>{b.key==="F10"&&b.shiftKey&&d&&h.current&&(b.preventDefault(),h.current.click()),l?.(b)},p=!!d,f=u==="vertical"?"right":"bottom",k=r.jsx(T.Tabs.Trigger,{"data-spark-component":"tabs-trigger",ref:y,className:Y({intent:x,size:w,hasMenu:p,orientation:u??"horizontal",className:n}),asChild:t,disabled:c,value:o,onFocus:({target:b})=>b.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),onKeyDown:v,"aria-haspopup":p?"true":void 0,...e,children:i});return p?r.jsxs("div",{className:u==="vertical"?"relative w-full":"relative",children:[k,r.jsx("div",{className:"right-md mr-md pointer-events-auto absolute top-1/2 -translate-y-1/2",children:r.jsx(B,{popoverSide:f,popoverTriggerRef:h,children:b=>d?.({Popover:b})})})]}):k};L.displayName="Tabs.Trigger";const O=Object.assign(V,{List:N,Trigger:L,Content:P});O.displayName="Tabs";N.displayName="Tabs.List";L.displayName="Tabs.Trigger";P.displayName="Tabs.Content";exports.Tabs=O;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),T=require("radix-ui"),s=require("react"),m=require("class-variance-authority"),D=require("@spark-ui/icons/ArrowVerticalLeft"),F=require("@spark-ui/icons/ArrowVerticalRight"),M=require("../Button-B6rA3-e5.js"),j=require("../Icon-CF0W0LKr.js"),q=require("@spark-ui/hooks/use-merge-refs"),K=require("@spark-ui/icons/MoreMenuHorizontal"),H=require("../IconButton-D3g86WpZ.js"),g=require("../popover/index.js"),U=require("@spark-ui/internal-utils"),W=s.createContext({}),R=()=>{const t=s.useContext(W);if(!t)throw Error("useTabsContext must be used within a TabsContext Provider");return t},$=m.cva(["flex","data-[orientation=horizontal]:flex-col","data-[orientation=vertical]:flex-row","max-w-full"]),V=({intent:t="basic",size:o="md",asChild:c=!1,forceMount:i=!1,orientation:n="horizontal",children:a,className:l,ref:d,...e})=>r.jsx(W.Provider,{value:{intent:t,size:o,orientation:n,forceMount:i},children:r.jsx(T.Tabs.Root,{ref:d,asChild:c,orientation:n,className:$({className:l}),"data-spark-component":"tabs",activationMode:"automatic",...e,children:a})});V.displayName="Tabs";const G=m.cva(["w-full p-lg","focus-visible:u-outline-inset"],{variants:{forceMount:{true:"data-[state=inactive]:hidden",false:""}}}),P=({children:t,asChild:o=!1,className:c,ref:i,...n})=>{const{forceMount:a}=R();return r.jsx(T.Tabs.Content,{"data-spark-component":"tabs-content",ref:i,forceMount:a||n.forceMount,className:G({className:c,forceMount:a}),asChild:o,...n,children:t})};P.displayName="Tabs.Content";const J=m.cva(["relative flex"]),Q=m.cva(["flex w-full","data-[orientation=horizontal]:flex-row","data-[orientation=vertical]:flex-col","overflow-y-hidden u-no-scrollbar data-[orientation=vertical]:overflow-x-hidden","after:flex after:shrink after:grow after:border-outline","data-[orientation=horizontal]:after:border-b-sm","data-[orientation=vertical]:after:border-r-sm"]),S=m.cva(["h-auto! flex-none","border-b-sm border-outline","outline-hidden","focus-visible:border-none focus-visible:bg-surface-hovered focus-visible:u-outline-inset!"]),X=(t,o)=>{const[c,i]=s.useState({width:void 0,height:void 0}),n=s.useRef(null),a=s.useRef(o);return s.useEffect(()=>{a.current=o},[o]),s.useEffect(()=>{const l=t&&"current"in t?t.current:t;if(!(!l||n.current))return n.current=new ResizeObserver(([d])=>{const{inlineSize:e,blockSize:x}=d?.borderBoxSize?.[0]??{};a.current?.(d),i({width:e,height:x})}),n.current.observe(l),()=>{n.current&&n.current.unobserve(l)}},[t,n,a]),c},N=({asChild:t=!1,loop:o=!1,children:c,className:i,ref:n,...a})=>{const l=s.useRef(null),d=s.useRef(null),e=n||d,{orientation:x}=R(),{width:w}=X(l),[u,h]=s.useState({prev:"hidden",next:"hidden"});s.useEffect(()=>{typeof e=="function"||!e.current||h(x!=="horizontal"?{prev:"hidden",next:"hidden"}:{prev:e.current.scrollWidth>e.current.clientWidth?"visible":"hidden",next:e.current.scrollWidth>e.current.clientWidth?"visible":"hidden"})},[x,e,w]),s.useEffect(()=>{if(typeof e=="function"||!e.current||u.prev==="hidden"||o)return;const v=f=>{h({prev:f.scrollLeft>0?"visible":"disabled",next:f.scrollLeft+f.clientWidth<f.scrollWidth?"visible":"disabled"})},p=e.current;return v(p),p.addEventListener("scroll",({target:f})=>v(f)),()=>p.removeEventListener("scroll",({target:f})=>v(f))},[e,u.prev,o]);const z=()=>{if(typeof e=="function"||!e.current)return;const v=o&&e.current.scrollLeft<=0;e.current.scrollTo({left:v?e.current.scrollLeft+e.current.scrollWidth-e.current.clientWidth:e.current.scrollLeft-e.current.clientWidth,behavior:"smooth"})},y=()=>{if(typeof e=="function"||!e.current)return;const v=o&&e.current.scrollLeft+e.current.clientWidth>=e.current.scrollWidth;e.current.scrollTo({left:v?0:e.current.scrollLeft+e.current.clientWidth,behavior:"smooth"})};return r.jsxs("div",{className:J({className:i}),ref:l,children:[u.prev!=="hidden"&&r.jsx(M.Button,{shape:"square",intent:"surface",size:"sm",className:S(),onClick:z,disabled:u.prev==="disabled","aria-label":"Scroll left",children:r.jsx(j.Icon,{children:r.jsx(D.ArrowVerticalLeft,{})})}),r.jsx(T.Tabs.List,{"data-spark-component":"tabs-list",ref:e,className:Q(),asChild:t,loop:o,...a,children:c}),u.next!=="hidden"&&r.jsx(M.Button,{shape:"square",intent:"surface",size:"sm",className:S(),onClick:y,disabled:u.next==="disabled","aria-label":"Scroll right",children:r.jsx(j.Icon,{children:r.jsx(F.ArrowVerticalRight,{})})})]})};N.displayName="Tabs.List";const C=s.createContext(void 0),E=()=>{const t=s.useContext(C);if(!t)throw new Error("TabsPopover components must be used within TabsPopover");return t},I=s.forwardRef(({"aria-label":t,children:o,...c},i)=>{const{popoverTriggerRef:n}=E(),a=q.useMergeRefs(i,n);return r.jsx(g.Popover.Trigger,{asChild:!0,...c,children:r.jsx(H.IconButton,{ref:a,size:"sm",intent:"surfaceInverse",design:"ghost","aria-label":t,tabIndex:-1,children:r.jsx(j.Icon,{children:o||r.jsx(K.MoreMenuHorizontal,{})})})})});I.displayName="Popover.Trigger";const A=s.forwardRef(({side:t,align:o="start",className:c,...i},n)=>{const{popoverSide:a}=E(),l=m.cx("gap-sm flex flex-col",c);return r.jsx(g.Popover.Content,{ref:n,...i,side:t??a,align:o,className:l})});A.displayName="Popover.Content";const B=({popoverSide:t,popoverTriggerRef:o,children:c})=>{const i=s.useMemo(()=>({popoverSide:t,popoverTriggerRef:o}),[t,o]),a=Object.assign((l=>r.jsx(C.Provider,{value:i,children:r.jsx(g.Popover,{...l,children:l.children})})),g.Popover,{Content:A,Trigger:I});return r.jsx(C.Provider,{value:i,children:c(a)})};B.displayName="Popover";const Y=m.cva(["px-md","relative flex flex-none items-center","border-outline","hover:not-disabled:bg-surface-hovered","after:absolute","data-[state=active]:font-bold","data-[state=inactive]:not-disabled:cursor-pointer","data-[orientation=horizontal]:border-b-sm data-[orientation=horizontal]:after:inset-x-0 data-[orientation=horizontal]:after:bottom-[-1px] data-[orientation=horizontal]:after:h-sz-2","data-[orientation=vertical]:border-r-sm data-[orientation=vertical]:after:inset-y-0 data-[orientation=vertical]:after:right-[-1px] data-[orientation=vertical]:after:w-sz-2","focus-visible:border-none focus-visible:bg-surface-hovered focus-visible:u-outline-inset","disabled:cursor-not-allowed disabled:opacity-dim-3","gap-md [&>*:first-child]:ml-md [&>*:last-child]:mr-md","[&>svg:last-child:first-child]:mx-auto"],{variants:{intent:U.makeVariants({main:["data-[state=active]:text-main data-[state=active]:after:bg-main"],support:["data-[state=active]:text-support data-[state=active]:after:bg-support"],basic:["data-[state=active]:text-basic data-[state=active]:after:bg-basic"]}),size:{xs:["h-sz-32 min-w-sz-32 text-caption"],sm:["h-sz-36 min-w-sz-36 text-body-2"],md:["h-sz-40 min-w-sz-40 text-body-1"]},hasMenu:{true:"pr-3xl"},orientation:{horizontal:"",vertical:""}},compoundVariants:[{hasMenu:!0,orientation:"vertical",class:"w-full"}],defaultVariants:{intent:"basic",size:"md",hasMenu:!1,orientation:"horizontal"}}),L=({asChild:t=!1,value:o,disabled:c=!1,children:i,className:n,ref:a,onKeyDown:l,renderMenu:d,...e})=>{const{intent:x,size:w,orientation:u}=R(),h=s.useRef(null),z=s.useRef(null),y=q.useMergeRefs(a,z),v=b=>{b.key==="F10"&&b.shiftKey&&d&&h.current&&(b.preventDefault(),h.current.click()),l?.(b)},p=!!d,f=u==="vertical"?"right":"bottom",k=r.jsx(T.Tabs.Trigger,{"data-spark-component":"tabs-trigger",ref:y,className:Y({intent:x,size:w,hasMenu:p,orientation:u??"horizontal",className:n}),asChild:t,disabled:c,value:o,onFocus:({target:b})=>b.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),onKeyDown:v,"aria-haspopup":p?"true":void 0,...e,children:i});return p?r.jsxs("div",{className:u==="vertical"?"relative w-full":"relative",children:[k,r.jsx("div",{className:"right-md mr-md pointer-events-auto absolute top-1/2 -translate-y-1/2",children:r.jsx(B,{popoverSide:f,popoverTriggerRef:h,children:b=>d?.({Popover:b})})})]}):k};L.displayName="Tabs.Trigger";const O=Object.assign(V,{List:N,Trigger:L,Content:P});O.displayName="Tabs";N.displayName="Tabs.List";L.displayName="Tabs.Trigger";P.displayName="Tabs.Content";exports.Tabs=O;
2
2
  //# sourceMappingURL=index.js.map
@@ -4,11 +4,11 @@ import { createContext as E, useContext as A, useState as B, useRef as p, useEff
4
4
  import { cva as x, cx as J } from "class-variance-authority";
5
5
  import { ArrowVerticalLeft as Q } from "@spark-ui/icons/ArrowVerticalLeft";
6
6
  import { ArrowVerticalRight as U } from "@spark-ui/icons/ArrowVerticalRight";
7
- import { B as M } from "../Button-DggC4GFM.mjs";
7
+ import { B as M } from "../Button-DPncfbbM.mjs";
8
8
  import { I as N } from "../Icon-C23-htlD.mjs";
9
9
  import { useMergeRefs as j } from "@spark-ui/hooks/use-merge-refs";
10
10
  import { MoreMenuHorizontal as X } from "@spark-ui/icons/MoreMenuHorizontal";
11
- import { I as Y } from "../IconButton-Mv9tO1ZH.mjs";
11
+ import { I as Y } from "../IconButton-Bfd-6BAD.mjs";
12
12
  import { Popover as w } from "../popover/index.mjs";
13
13
  import { makeVariants as Z } from "@spark-ui/internal-utils";
14
14
  const D = E({}), L = () => {
package/dist/tag/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),u=require("../Slot-DQ8z2zsy.js"),t=require("@spark-ui/internal-utils"),g=require("class-variance-authority"),b=[{intent:"main",design:"filled",class:t.tw(["bg-main","text-on-main"])},{intent:"support",design:"filled",class:t.tw(["bg-support","text-on-support"])},{intent:"accent",design:"filled",class:t.tw(["bg-accent","text-on-accent"])},{intent:"basic",design:"filled",class:t.tw(["bg-basic","text-on-basic"])},{intent:"success",design:"filled",class:t.tw(["bg-success","text-on-success"])},{intent:"alert",design:"filled",class:t.tw(["bg-alert","text-on-alert"])},{intent:"danger",design:"filled",class:t.tw(["bg-error","text-on-error"])},{intent:"info",design:"filled",class:t.tw(["bg-info","text-on-info"])},{intent:"neutral",design:"filled",class:t.tw(["bg-neutral","text-on-neutral"])},{intent:"surface",design:"filled",class:t.tw(["bg-surface","text-on-surface"])}],f=[{intent:"main",design:"outlined",class:t.tw(["text-main"])},{intent:"support",design:"outlined",class:t.tw(["text-support"])},{intent:"accent",design:"outlined",class:t.tw(["text-accent"])},{intent:"basic",design:"outlined",class:t.tw(["text-basic"])},{intent:"success",design:"outlined",class:t.tw(["text-success"])},{intent:"alert",design:"outlined",class:t.tw(["text-alert"])},{intent:"danger",design:"outlined",class:t.tw(["text-error"])},{intent:"info",design:"outlined",class:t.tw(["text-info"])},{intent:"neutral",design:"outlined",class:t.tw(["text-neutral"])}],x=[{intent:"main",design:"tinted",class:t.tw(["bg-main-container","text-on-main-container"])},{intent:"support",design:"tinted",class:t.tw(["bg-support-container","text-on-support-container"])},{intent:"accent",design:"tinted",class:t.tw(["bg-accent-container","text-on-accent-container"])},{intent:"basic",design:"tinted",class:t.tw(["bg-basic-container","text-on-basic-container"])},{intent:"success",design:"tinted",class:t.tw(["bg-success-container","text-on-success-container"])},{intent:"alert",design:"tinted",class:t.tw(["bg-alert-container","text-on-alert-container"])},{intent:"danger",design:"tinted",class:t.tw(["bg-error-container","text-on-error-container"])},{intent:"info",design:"tinted",class:t.tw(["bg-info-container","text-on-info-container"])},{intent:"neutral",design:"tinted",class:t.tw(["bg-neutral-container","text-on-neutral-container"])}],p=g.cva(["box-border default:inline-flex default:w-fit items-center justify-center gap-sm whitespace-nowrap","text-caption font-bold","px-md"],{variants:{design:t.makeVariants({filled:[],outlined:["border-sm","border-current"],tinted:[]}),size:t.makeVariants({md:["h-sz-20"],lg:["h-sz-24"]}),shape:t.makeVariants({square:[],rounded:["rounded-sm"],pill:["rounded-full"]}),intent:t.makeVariants({main:[],support:[],accent:[],basic:[],success:[],alert:[],danger:[],info:[],neutral:[],surface:[]})},compoundVariants:[...b,...f,...x],defaultVariants:{design:"filled",intent:"basic",size:"md",shape:"pill"}}),w=({design:n="filled",intent:e="basic",size:s="md",shape:i="rounded",asChild:a,className:c,ref:r,...l})=>{const o=a?u.Slot:"span";return d.jsx(o,{"data-spark-component":"tag",ref:r,className:p({className:c,design:n,intent:e,size:s,shape:i}),...l})};exports.Tag=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),u=require("../Slot-DQ8z2zsy.js"),t=require("@spark-ui/internal-utils"),g=require("class-variance-authority"),b=[{intent:"main",design:"filled",class:t.tw(["bg-main","text-on-main"])},{intent:"support",design:"filled",class:t.tw(["bg-support","text-on-support"])},{intent:"accent",design:"filled",class:t.tw(["bg-accent","text-on-accent"])},{intent:"basic",design:"filled",class:t.tw(["bg-basic","text-on-basic"])},{intent:"success",design:"filled",class:t.tw(["bg-success","text-on-success"])},{intent:"alert",design:"filled",class:t.tw(["bg-alert","text-on-alert"])},{intent:"danger",design:"filled",class:t.tw(["bg-error","text-on-error"])},{intent:"info",design:"filled",class:t.tw(["bg-info","text-on-info"])},{intent:"neutral",design:"filled",class:t.tw(["bg-neutral","text-on-neutral"])},{intent:"surface",design:"filled",class:t.tw(["bg-surface","text-on-surface"])}],f=[{intent:"main",design:"outlined",class:t.tw(["text-main"])},{intent:"support",design:"outlined",class:t.tw(["text-support"])},{intent:"accent",design:"outlined",class:t.tw(["text-accent"])},{intent:"basic",design:"outlined",class:t.tw(["text-basic"])},{intent:"success",design:"outlined",class:t.tw(["text-success"])},{intent:"alert",design:"outlined",class:t.tw(["text-alert"])},{intent:"danger",design:"outlined",class:t.tw(["text-error"])},{intent:"info",design:"outlined",class:t.tw(["text-info"])},{intent:"neutral",design:"outlined",class:t.tw(["text-neutral"])}],p=[{intent:"main",design:"tinted",class:t.tw(["bg-main-container","text-on-main-container"])},{intent:"support",design:"tinted",class:t.tw(["bg-support-container","text-on-support-container"])},{intent:"accent",design:"tinted",class:t.tw(["bg-accent-container","text-on-accent-container"])},{intent:"basic",design:"tinted",class:t.tw(["bg-basic-container","text-on-basic-container"])},{intent:"success",design:"tinted",class:t.tw(["bg-success-container","text-on-success-container"])},{intent:"alert",design:"tinted",class:t.tw(["bg-alert-container","text-on-alert-container"])},{intent:"danger",design:"tinted",class:t.tw(["bg-error-container","text-on-error-container"])},{intent:"info",design:"tinted",class:t.tw(["bg-info-container","text-on-info-container"])},{intent:"neutral",design:"tinted",class:t.tw(["bg-neutral-container","text-on-neutral-container"])}],x=g.cva(["box-border default:inline-flex default:w-fit items-center justify-center gap-sm whitespace-nowrap","text-caption font-bold","px-md"],{variants:{design:t.makeVariants({filled:[],outlined:["border-sm","border-current"],tinted:[]}),size:t.makeVariants({md:["h-sz-20"],lg:["h-sz-24"]}),shape:t.makeVariants({square:[],rounded:["rounded-md"],pill:["rounded-full"]}),intent:t.makeVariants({main:[],support:[],accent:[],basic:[],success:[],alert:[],danger:[],info:[],neutral:[],surface:[]})},compoundVariants:[...b,...f,...p],defaultVariants:{design:"filled",intent:"basic",size:"md",shape:"pill"}}),w=({design:n="filled",intent:e="basic",size:s="md",shape:i="pill",asChild:a,className:c,ref:r,...l})=>{const o=a?u.Slot:"span";return d.jsx(o,{"data-spark-component":"tag",ref:r,className:x({className:c,design:n,intent:e,size:s,shape:i}),...l})};exports.Tag=w;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/tag/variants/filled.ts","../../src/tag/variants/outlined.ts","../../src/tag/variants/tinted.ts","../../src/tag/Tag.styles.tsx","../../src/tag/Tag.tsx"],"sourcesContent":["import { tw } from '@spark-ui/internal-utils'\n\nexport const filledVariants = [\n {\n intent: 'main',\n design: 'filled',\n class: tw(['bg-main', 'text-on-main']),\n },\n {\n intent: 'support',\n design: 'filled',\n class: tw(['bg-support', 'text-on-support']),\n },\n {\n intent: 'accent',\n design: 'filled',\n class: tw(['bg-accent', 'text-on-accent']),\n },\n {\n intent: 'basic',\n design: 'filled',\n class: tw(['bg-basic', 'text-on-basic']),\n },\n {\n intent: 'success',\n design: 'filled',\n class: tw(['bg-success', 'text-on-success']),\n },\n {\n intent: 'alert',\n design: 'filled',\n class: tw(['bg-alert', 'text-on-alert']),\n },\n {\n intent: 'danger',\n design: 'filled',\n class: tw(['bg-error', 'text-on-error']),\n },\n {\n intent: 'info',\n design: 'filled',\n class: tw(['bg-info', 'text-on-info']),\n },\n {\n intent: 'neutral',\n design: 'filled',\n class: tw(['bg-neutral', 'text-on-neutral']),\n },\n {\n intent: 'surface',\n design: 'filled',\n class: tw(['bg-surface', 'text-on-surface']),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const outlinedVariants = [\n {\n intent: 'main',\n design: 'outlined',\n class: tw(['text-main']),\n },\n {\n intent: 'support',\n design: 'outlined',\n class: tw(['text-support']),\n },\n {\n intent: 'accent',\n design: 'outlined',\n class: tw(['text-accent']),\n },\n {\n intent: 'basic',\n design: 'outlined',\n class: tw(['text-basic']),\n },\n {\n intent: 'success',\n design: 'outlined',\n class: tw(['text-success']),\n },\n {\n intent: 'alert',\n design: 'outlined',\n class: tw(['text-alert']),\n },\n {\n intent: 'danger',\n design: 'outlined',\n class: tw(['text-error']),\n },\n {\n intent: 'info',\n design: 'outlined',\n class: tw(['text-info']),\n },\n {\n intent: 'neutral',\n design: 'outlined',\n class: tw(['text-neutral']),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const tintedVariants = [\n {\n intent: 'main',\n design: 'tinted',\n class: tw(['bg-main-container', 'text-on-main-container']),\n },\n {\n intent: 'support',\n design: 'tinted',\n class: tw(['bg-support-container', 'text-on-support-container']),\n },\n {\n intent: 'accent',\n design: 'tinted',\n class: tw(['bg-accent-container', 'text-on-accent-container']),\n },\n {\n intent: 'basic',\n design: 'tinted',\n class: tw(['bg-basic-container', 'text-on-basic-container']),\n },\n {\n intent: 'success',\n design: 'tinted',\n class: tw(['bg-success-container', 'text-on-success-container']),\n },\n {\n intent: 'alert',\n design: 'tinted',\n class: tw(['bg-alert-container', 'text-on-alert-container']),\n },\n {\n intent: 'danger',\n design: 'tinted',\n class: tw(['bg-error-container', 'text-on-error-container']),\n },\n {\n intent: 'info',\n design: 'tinted',\n class: tw(['bg-info-container', 'text-on-info-container']),\n },\n {\n intent: 'neutral',\n design: 'tinted',\n class: tw(['bg-neutral-container', 'text-on-neutral-container']),\n },\n] as const\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { filledVariants, outlinedVariants, tintedVariants } from './variants'\n\nexport const tagStyles = cva(\n [\n 'box-border default:inline-flex default:w-fit items-center justify-center gap-sm whitespace-nowrap',\n 'text-caption font-bold',\n 'px-md',\n ],\n {\n variants: {\n /**\n * Main style of the tag.\n * - `filled`: Tag will be plain.\n * - `outlined`: Tag will have a surface background with an colored outline/text.\n * - `tinted`: Tag will be filled but using a lighter color scheme.\n */\n design: makeVariants<'design', ['filled', 'outlined', 'tinted']>({\n filled: [],\n outlined: ['border-sm', 'border-current'],\n tinted: [],\n }),\n size: makeVariants<'size', ['md', 'lg']>({\n md: ['h-sz-20'],\n lg: ['h-sz-24'],\n }),\n shape: makeVariants<'shape', ['square', 'rounded', 'pill']>({\n square: [],\n rounded: ['rounded-sm'],\n pill: ['rounded-full'],\n }),\n /**\n * Color scheme of the tag.\n */\n intent: makeVariants<\n 'intent',\n [\n 'main',\n 'support',\n 'accent',\n 'basic',\n 'success',\n 'alert',\n 'info',\n 'neutral',\n 'danger',\n 'surface',\n ]\n >({\n main: [],\n support: [],\n accent: [],\n basic: [],\n success: [],\n alert: [],\n danger: [],\n info: [],\n neutral: [],\n surface: [],\n }),\n },\n compoundVariants: [...filledVariants, ...outlinedVariants, ...tintedVariants],\n defaultVariants: {\n design: 'filled',\n intent: 'basic',\n size: 'md',\n shape: 'pill',\n },\n }\n)\n\nexport type TagStylesProps = VariantProps<typeof tagStyles>\n","import { ButtonHTMLAttributes, type PropsWithChildren, Ref } from 'react'\n\nimport { Slot } from '../slot'\nimport { tagStyles, type TagStylesProps } from './Tag.styles'\n\ninterface BaseTagProps\n extends PropsWithChildren<ButtonHTMLAttributes<HTMLSpanElement>>,\n TagStylesProps {\n /**\n * Change the component to the HTML tag or custom component of the only child.\n */\n asChild?: boolean\n}\n\ninterface FilteredDesignIntent<\n Design extends TagProps['design'],\n K extends TagStylesProps['intent'] | never = never,\n> {\n design?: Design\n intent?: Exclude<TagStylesProps['intent'], K>\n ref?: Ref<HTMLButtonElement>\n}\n\nexport type ValidTagDesignIntent =\n | FilteredDesignIntent<'tinted', 'surface'>\n | FilteredDesignIntent<'outlined', 'surface'>\n | FilteredDesignIntent<'filled'>\n\nexport type TagProps = BaseTagProps & ValidTagDesignIntent\n\nexport const Tag = ({\n design = 'filled',\n intent = 'basic',\n size = 'md',\n shape = 'rounded',\n asChild,\n className,\n ref,\n ...others\n}: TagProps) => {\n const Component = asChild ? Slot : 'span'\n\n return (\n <Component\n data-spark-component=\"tag\"\n ref={ref}\n className={tagStyles({\n className,\n design,\n intent,\n size,\n shape,\n })}\n {...others}\n />\n )\n}\n"],"names":["filledVariants","tw","outlinedVariants","tintedVariants","tagStyles","cva","makeVariants","Tag","design","intent","size","shape","asChild","className","ref","others","Component","Slot","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/tag/variants/filled.ts","../../src/tag/variants/outlined.ts","../../src/tag/variants/tinted.ts","../../src/tag/Tag.styles.tsx","../../src/tag/Tag.tsx"],"sourcesContent":["import { tw } from '@spark-ui/internal-utils'\n\nexport const filledVariants = [\n {\n intent: 'main',\n design: 'filled',\n class: tw(['bg-main', 'text-on-main']),\n },\n {\n intent: 'support',\n design: 'filled',\n class: tw(['bg-support', 'text-on-support']),\n },\n {\n intent: 'accent',\n design: 'filled',\n class: tw(['bg-accent', 'text-on-accent']),\n },\n {\n intent: 'basic',\n design: 'filled',\n class: tw(['bg-basic', 'text-on-basic']),\n },\n {\n intent: 'success',\n design: 'filled',\n class: tw(['bg-success', 'text-on-success']),\n },\n {\n intent: 'alert',\n design: 'filled',\n class: tw(['bg-alert', 'text-on-alert']),\n },\n {\n intent: 'danger',\n design: 'filled',\n class: tw(['bg-error', 'text-on-error']),\n },\n {\n intent: 'info',\n design: 'filled',\n class: tw(['bg-info', 'text-on-info']),\n },\n {\n intent: 'neutral',\n design: 'filled',\n class: tw(['bg-neutral', 'text-on-neutral']),\n },\n {\n intent: 'surface',\n design: 'filled',\n class: tw(['bg-surface', 'text-on-surface']),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const outlinedVariants = [\n {\n intent: 'main',\n design: 'outlined',\n class: tw(['text-main']),\n },\n {\n intent: 'support',\n design: 'outlined',\n class: tw(['text-support']),\n },\n {\n intent: 'accent',\n design: 'outlined',\n class: tw(['text-accent']),\n },\n {\n intent: 'basic',\n design: 'outlined',\n class: tw(['text-basic']),\n },\n {\n intent: 'success',\n design: 'outlined',\n class: tw(['text-success']),\n },\n {\n intent: 'alert',\n design: 'outlined',\n class: tw(['text-alert']),\n },\n {\n intent: 'danger',\n design: 'outlined',\n class: tw(['text-error']),\n },\n {\n intent: 'info',\n design: 'outlined',\n class: tw(['text-info']),\n },\n {\n intent: 'neutral',\n design: 'outlined',\n class: tw(['text-neutral']),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const tintedVariants = [\n {\n intent: 'main',\n design: 'tinted',\n class: tw(['bg-main-container', 'text-on-main-container']),\n },\n {\n intent: 'support',\n design: 'tinted',\n class: tw(['bg-support-container', 'text-on-support-container']),\n },\n {\n intent: 'accent',\n design: 'tinted',\n class: tw(['bg-accent-container', 'text-on-accent-container']),\n },\n {\n intent: 'basic',\n design: 'tinted',\n class: tw(['bg-basic-container', 'text-on-basic-container']),\n },\n {\n intent: 'success',\n design: 'tinted',\n class: tw(['bg-success-container', 'text-on-success-container']),\n },\n {\n intent: 'alert',\n design: 'tinted',\n class: tw(['bg-alert-container', 'text-on-alert-container']),\n },\n {\n intent: 'danger',\n design: 'tinted',\n class: tw(['bg-error-container', 'text-on-error-container']),\n },\n {\n intent: 'info',\n design: 'tinted',\n class: tw(['bg-info-container', 'text-on-info-container']),\n },\n {\n intent: 'neutral',\n design: 'tinted',\n class: tw(['bg-neutral-container', 'text-on-neutral-container']),\n },\n] as const\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { filledVariants, outlinedVariants, tintedVariants } from './variants'\n\nexport const tagStyles = cva(\n [\n 'box-border default:inline-flex default:w-fit items-center justify-center gap-sm whitespace-nowrap',\n 'text-caption font-bold',\n 'px-md',\n ],\n {\n variants: {\n /**\n * Main style of the tag.\n * - `filled`: Tag will be plain.\n * - `outlined`: Tag will have a surface background with an colored outline/text.\n * - `tinted`: Tag will be filled but using a lighter color scheme.\n */\n design: makeVariants<'design', ['filled', 'outlined', 'tinted']>({\n filled: [],\n outlined: ['border-sm', 'border-current'],\n tinted: [],\n }),\n size: makeVariants<'size', ['md', 'lg']>({\n md: ['h-sz-20'],\n lg: ['h-sz-24'],\n }),\n shape: makeVariants<'shape', ['square', 'rounded', 'pill']>({\n square: [],\n rounded: ['rounded-md'],\n pill: ['rounded-full'],\n }),\n /**\n * Color scheme of the tag.\n */\n intent: makeVariants<\n 'intent',\n [\n 'main',\n 'support',\n 'accent',\n 'basic',\n 'success',\n 'alert',\n 'info',\n 'neutral',\n 'danger',\n 'surface',\n ]\n >({\n main: [],\n support: [],\n accent: [],\n basic: [],\n success: [],\n alert: [],\n danger: [],\n info: [],\n neutral: [],\n surface: [],\n }),\n },\n compoundVariants: [...filledVariants, ...outlinedVariants, ...tintedVariants],\n defaultVariants: {\n design: 'filled',\n intent: 'basic',\n size: 'md',\n shape: 'pill',\n },\n }\n)\n\nexport type TagStylesProps = VariantProps<typeof tagStyles>\n","import { ButtonHTMLAttributes, type PropsWithChildren, Ref } from 'react'\n\nimport { Slot } from '../slot'\nimport { tagStyles, type TagStylesProps } from './Tag.styles'\n\ninterface BaseTagProps\n extends PropsWithChildren<ButtonHTMLAttributes<HTMLSpanElement>>,\n TagStylesProps {\n /**\n * Change the component to the HTML tag or custom component of the only child.\n */\n asChild?: boolean\n}\n\ninterface FilteredDesignIntent<\n Design extends TagProps['design'],\n K extends TagStylesProps['intent'] | never = never,\n> {\n design?: Design\n intent?: Exclude<TagStylesProps['intent'], K>\n ref?: Ref<HTMLButtonElement>\n}\n\nexport type ValidTagDesignIntent =\n | FilteredDesignIntent<'tinted', 'surface'>\n | FilteredDesignIntent<'outlined', 'surface'>\n | FilteredDesignIntent<'filled'>\n\nexport type TagProps = BaseTagProps & ValidTagDesignIntent\n\nexport const Tag = ({\n design = 'filled',\n intent = 'basic',\n size = 'md',\n shape = 'pill',\n asChild,\n className,\n ref,\n ...others\n}: TagProps) => {\n const Component = asChild ? Slot : 'span'\n\n return (\n <Component\n data-spark-component=\"tag\"\n ref={ref}\n className={tagStyles({\n className,\n design,\n intent,\n size,\n shape,\n })}\n {...others}\n />\n )\n}\n"],"names":["filledVariants","tw","outlinedVariants","tintedVariants","tagStyles","cva","makeVariants","Tag","design","intent","size","shape","asChild","className","ref","others","Component","Slot","jsx"],"mappings":"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"}
@@ -170,7 +170,7 @@ const f = [
170
170
  }),
171
171
  shape: n({
172
172
  square: [],
173
- rounded: ["rounded-sm"],
173
+ rounded: ["rounded-md"],
174
174
  pill: ["rounded-full"]
175
175
  }),
176
176
  /**
@@ -201,16 +201,16 @@ const f = [
201
201
  design: e = "filled",
202
202
  intent: s = "basic",
203
203
  size: i = "md",
204
- shape: a = "rounded",
204
+ shape: a = "pill",
205
205
  asChild: c,
206
206
  className: o,
207
- ref: r,
208
- ...l
207
+ ref: l,
208
+ ...r
209
209
  }) => /* @__PURE__ */ d(
210
210
  c ? g : "span",
211
211
  {
212
212
  "data-spark-component": "tag",
213
- ref: r,
213
+ ref: l,
214
214
  className: x({
215
215
  className: o,
216
216
  design: e,
@@ -218,7 +218,7 @@ const f = [
218
218
  size: i,
219
219
  shape: a
220
220
  }),
221
- ...l
221
+ ...r
222
222
  }
223
223
  );
224
224
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/tag/variants/filled.ts","../../src/tag/variants/outlined.ts","../../src/tag/variants/tinted.ts","../../src/tag/Tag.styles.tsx","../../src/tag/Tag.tsx"],"sourcesContent":["import { tw } from '@spark-ui/internal-utils'\n\nexport const filledVariants = [\n {\n intent: 'main',\n design: 'filled',\n class: tw(['bg-main', 'text-on-main']),\n },\n {\n intent: 'support',\n design: 'filled',\n class: tw(['bg-support', 'text-on-support']),\n },\n {\n intent: 'accent',\n design: 'filled',\n class: tw(['bg-accent', 'text-on-accent']),\n },\n {\n intent: 'basic',\n design: 'filled',\n class: tw(['bg-basic', 'text-on-basic']),\n },\n {\n intent: 'success',\n design: 'filled',\n class: tw(['bg-success', 'text-on-success']),\n },\n {\n intent: 'alert',\n design: 'filled',\n class: tw(['bg-alert', 'text-on-alert']),\n },\n {\n intent: 'danger',\n design: 'filled',\n class: tw(['bg-error', 'text-on-error']),\n },\n {\n intent: 'info',\n design: 'filled',\n class: tw(['bg-info', 'text-on-info']),\n },\n {\n intent: 'neutral',\n design: 'filled',\n class: tw(['bg-neutral', 'text-on-neutral']),\n },\n {\n intent: 'surface',\n design: 'filled',\n class: tw(['bg-surface', 'text-on-surface']),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const outlinedVariants = [\n {\n intent: 'main',\n design: 'outlined',\n class: tw(['text-main']),\n },\n {\n intent: 'support',\n design: 'outlined',\n class: tw(['text-support']),\n },\n {\n intent: 'accent',\n design: 'outlined',\n class: tw(['text-accent']),\n },\n {\n intent: 'basic',\n design: 'outlined',\n class: tw(['text-basic']),\n },\n {\n intent: 'success',\n design: 'outlined',\n class: tw(['text-success']),\n },\n {\n intent: 'alert',\n design: 'outlined',\n class: tw(['text-alert']),\n },\n {\n intent: 'danger',\n design: 'outlined',\n class: tw(['text-error']),\n },\n {\n intent: 'info',\n design: 'outlined',\n class: tw(['text-info']),\n },\n {\n intent: 'neutral',\n design: 'outlined',\n class: tw(['text-neutral']),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const tintedVariants = [\n {\n intent: 'main',\n design: 'tinted',\n class: tw(['bg-main-container', 'text-on-main-container']),\n },\n {\n intent: 'support',\n design: 'tinted',\n class: tw(['bg-support-container', 'text-on-support-container']),\n },\n {\n intent: 'accent',\n design: 'tinted',\n class: tw(['bg-accent-container', 'text-on-accent-container']),\n },\n {\n intent: 'basic',\n design: 'tinted',\n class: tw(['bg-basic-container', 'text-on-basic-container']),\n },\n {\n intent: 'success',\n design: 'tinted',\n class: tw(['bg-success-container', 'text-on-success-container']),\n },\n {\n intent: 'alert',\n design: 'tinted',\n class: tw(['bg-alert-container', 'text-on-alert-container']),\n },\n {\n intent: 'danger',\n design: 'tinted',\n class: tw(['bg-error-container', 'text-on-error-container']),\n },\n {\n intent: 'info',\n design: 'tinted',\n class: tw(['bg-info-container', 'text-on-info-container']),\n },\n {\n intent: 'neutral',\n design: 'tinted',\n class: tw(['bg-neutral-container', 'text-on-neutral-container']),\n },\n] as const\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { filledVariants, outlinedVariants, tintedVariants } from './variants'\n\nexport const tagStyles = cva(\n [\n 'box-border default:inline-flex default:w-fit items-center justify-center gap-sm whitespace-nowrap',\n 'text-caption font-bold',\n 'px-md',\n ],\n {\n variants: {\n /**\n * Main style of the tag.\n * - `filled`: Tag will be plain.\n * - `outlined`: Tag will have a surface background with an colored outline/text.\n * - `tinted`: Tag will be filled but using a lighter color scheme.\n */\n design: makeVariants<'design', ['filled', 'outlined', 'tinted']>({\n filled: [],\n outlined: ['border-sm', 'border-current'],\n tinted: [],\n }),\n size: makeVariants<'size', ['md', 'lg']>({\n md: ['h-sz-20'],\n lg: ['h-sz-24'],\n }),\n shape: makeVariants<'shape', ['square', 'rounded', 'pill']>({\n square: [],\n rounded: ['rounded-sm'],\n pill: ['rounded-full'],\n }),\n /**\n * Color scheme of the tag.\n */\n intent: makeVariants<\n 'intent',\n [\n 'main',\n 'support',\n 'accent',\n 'basic',\n 'success',\n 'alert',\n 'info',\n 'neutral',\n 'danger',\n 'surface',\n ]\n >({\n main: [],\n support: [],\n accent: [],\n basic: [],\n success: [],\n alert: [],\n danger: [],\n info: [],\n neutral: [],\n surface: [],\n }),\n },\n compoundVariants: [...filledVariants, ...outlinedVariants, ...tintedVariants],\n defaultVariants: {\n design: 'filled',\n intent: 'basic',\n size: 'md',\n shape: 'pill',\n },\n }\n)\n\nexport type TagStylesProps = VariantProps<typeof tagStyles>\n","import { ButtonHTMLAttributes, type PropsWithChildren, Ref } from 'react'\n\nimport { Slot } from '../slot'\nimport { tagStyles, type TagStylesProps } from './Tag.styles'\n\ninterface BaseTagProps\n extends PropsWithChildren<ButtonHTMLAttributes<HTMLSpanElement>>,\n TagStylesProps {\n /**\n * Change the component to the HTML tag or custom component of the only child.\n */\n asChild?: boolean\n}\n\ninterface FilteredDesignIntent<\n Design extends TagProps['design'],\n K extends TagStylesProps['intent'] | never = never,\n> {\n design?: Design\n intent?: Exclude<TagStylesProps['intent'], K>\n ref?: Ref<HTMLButtonElement>\n}\n\nexport type ValidTagDesignIntent =\n | FilteredDesignIntent<'tinted', 'surface'>\n | FilteredDesignIntent<'outlined', 'surface'>\n | FilteredDesignIntent<'filled'>\n\nexport type TagProps = BaseTagProps & ValidTagDesignIntent\n\nexport const Tag = ({\n design = 'filled',\n intent = 'basic',\n size = 'md',\n shape = 'rounded',\n asChild,\n className,\n ref,\n ...others\n}: TagProps) => {\n const Component = asChild ? Slot : 'span'\n\n return (\n <Component\n data-spark-component=\"tag\"\n ref={ref}\n className={tagStyles({\n className,\n design,\n intent,\n size,\n shape,\n })}\n {...others}\n />\n )\n}\n"],"names":["filledVariants","tw","outlinedVariants","tintedVariants","tagStyles","cva","makeVariants","Tag","design","intent","size","shape","asChild","className","ref","others","jsx","Slot"],"mappings":";;;;AAEO,MAAMA,IAAiB;AAAA,EAC5B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOC,EAAG,CAAC,WAAW,cAAc,CAAC;AAAA,EAAA;AAAA,EAEvC;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,cAAc,iBAAiB,CAAC;AAAA,EAAA;AAAA,EAE7C;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,aAAa,gBAAgB,CAAC;AAAA,EAAA;AAAA,EAE3C;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,YAAY,eAAe,CAAC;AAAA,EAAA;AAAA,EAEzC;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,cAAc,iBAAiB,CAAC;AAAA,EAAA;AAAA,EAE7C;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,YAAY,eAAe,CAAC;AAAA,EAAA;AAAA,EAEzC;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,YAAY,eAAe,CAAC;AAAA,EAAA;AAAA,EAEzC;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,WAAW,cAAc,CAAC;AAAA,EAAA;AAAA,EAEvC;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,cAAc,iBAAiB,CAAC;AAAA,EAAA;AAAA,EAE7C;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,cAAc,iBAAiB,CAAC;AAAA,EAAA;AAE/C,GCnDaC,IAAmB;AAAA,EAC9B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOD,EAAG,CAAC,WAAW,CAAC;AAAA,EAAA;AAAA,EAEzB;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,cAAc,CAAC;AAAA,EAAA;AAAA,EAE5B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,aAAa,CAAC;AAAA,EAAA;AAAA,EAE3B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,YAAY,CAAC;AAAA,EAAA;AAAA,EAE1B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,cAAc,CAAC;AAAA,EAAA;AAAA,EAE5B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,YAAY,CAAC;AAAA,EAAA;AAAA,EAE1B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,YAAY,CAAC;AAAA,EAAA;AAAA,EAE1B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,WAAW,CAAC;AAAA,EAAA;AAAA,EAEzB;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,cAAc,CAAC;AAAA,EAAA;AAE9B,GC9CaE,IAAiB;AAAA,EAC5B;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOF,EAAG,CAAC,qBAAqB,wBAAwB,CAAC;AAAA,EAAA;AAAA,EAE3D;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,wBAAwB,2BAA2B,CAAC;AAAA,EAAA;AAAA,EAEjE;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,uBAAuB,0BAA0B,CAAC;AAAA,EAAA;AAAA,EAE/D;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,sBAAsB,yBAAyB,CAAC;AAAA,EAAA;AAAA,EAE7D;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,wBAAwB,2BAA2B,CAAC;AAAA,EAAA;AAAA,EAEjE;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,sBAAsB,yBAAyB,CAAC;AAAA,EAAA;AAAA,EAE7D;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,sBAAsB,yBAAyB,CAAC;AAAA,EAAA;AAAA,EAE7D;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,qBAAqB,wBAAwB,CAAC;AAAA,EAAA;AAAA,EAE3D;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAOA,EAAG,CAAC,wBAAwB,2BAA2B,CAAC;AAAA,EAAA;AAEnE,GC3CaG,IAAYC;AAAA,EACvB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOR,QAAQC,EAAyD;AAAA,QAC/D,QAAQ,CAAA;AAAA,QACR,UAAU,CAAC,aAAa,gBAAgB;AAAA,QACxC,QAAQ,CAAA;AAAA,MAAC,CACV;AAAA,MACD,MAAMA,EAAmC;AAAA,QACvC,IAAI,CAAC,SAAS;AAAA,QACd,IAAI,CAAC,SAAS;AAAA,MAAA,CACf;AAAA,MACD,OAAOA,EAAqD;AAAA,QAC1D,QAAQ,CAAA;AAAA,QACR,SAAS,CAAC,YAAY;AAAA,QACtB,MAAM,CAAC,cAAc;AAAA,MAAA,CACtB;AAAA;AAAA;AAAA;AAAA,MAID,QAAQA,EAcN;AAAA,QACA,MAAM,CAAA;AAAA,QACN,SAAS,CAAA;AAAA,QACT,QAAQ,CAAA;AAAA,QACR,OAAO,CAAA;AAAA,QACP,SAAS,CAAA;AAAA,QACT,OAAO,CAAA;AAAA,QACP,QAAQ,CAAA;AAAA,QACR,MAAM,CAAA;AAAA,QACN,SAAS,CAAA;AAAA,QACT,SAAS,CAAA;AAAA,MAAC,CACX;AAAA,IAAA;AAAA,IAEH,kBAAkB,CAAC,GAAGN,GAAgB,GAAGE,GAAkB,GAAGC,CAAc;AAAA,IAC5E,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ,GCzCaI,IAAM,CAAC;AAAA,EAClB,QAAAC,IAAS;AAAA,EACT,QAAAC,IAAS;AAAA,EACT,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,KAAAC;AAAA,EACA,GAAGC;AACL,MAII,gBAAAC;AAAA,EAHgBJ,IAAUK,IAAO;AAAA,EAGhC;AAAA,IACC,wBAAqB;AAAA,IACrB,KAAAH;AAAA,IACA,WAAWV,EAAU;AAAA,MACnB,WAAAS;AAAA,MACA,QAAAL;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,IAAA,CACD;AAAA,IACA,GAAGI;AAAA,EAAA;AAAA;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/tag/variants/filled.ts","../../src/tag/variants/outlined.ts","../../src/tag/variants/tinted.ts","../../src/tag/Tag.styles.tsx","../../src/tag/Tag.tsx"],"sourcesContent":["import { tw } from '@spark-ui/internal-utils'\n\nexport const filledVariants = [\n {\n intent: 'main',\n design: 'filled',\n class: tw(['bg-main', 'text-on-main']),\n },\n {\n intent: 'support',\n design: 'filled',\n class: tw(['bg-support', 'text-on-support']),\n },\n {\n intent: 'accent',\n design: 'filled',\n class: tw(['bg-accent', 'text-on-accent']),\n },\n {\n intent: 'basic',\n design: 'filled',\n class: tw(['bg-basic', 'text-on-basic']),\n },\n {\n intent: 'success',\n design: 'filled',\n class: tw(['bg-success', 'text-on-success']),\n },\n {\n intent: 'alert',\n design: 'filled',\n class: tw(['bg-alert', 'text-on-alert']),\n },\n {\n intent: 'danger',\n design: 'filled',\n class: tw(['bg-error', 'text-on-error']),\n },\n {\n intent: 'info',\n design: 'filled',\n class: tw(['bg-info', 'text-on-info']),\n },\n {\n intent: 'neutral',\n design: 'filled',\n class: tw(['bg-neutral', 'text-on-neutral']),\n },\n {\n intent: 'surface',\n design: 'filled',\n class: tw(['bg-surface', 'text-on-surface']),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const outlinedVariants = [\n {\n intent: 'main',\n design: 'outlined',\n class: tw(['text-main']),\n },\n {\n intent: 'support',\n design: 'outlined',\n class: tw(['text-support']),\n },\n {\n intent: 'accent',\n design: 'outlined',\n class: tw(['text-accent']),\n },\n {\n intent: 'basic',\n design: 'outlined',\n class: tw(['text-basic']),\n },\n {\n intent: 'success',\n design: 'outlined',\n class: tw(['text-success']),\n },\n {\n intent: 'alert',\n design: 'outlined',\n class: tw(['text-alert']),\n },\n {\n intent: 'danger',\n design: 'outlined',\n class: tw(['text-error']),\n },\n {\n intent: 'info',\n design: 'outlined',\n class: tw(['text-info']),\n },\n {\n intent: 'neutral',\n design: 'outlined',\n class: tw(['text-neutral']),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const tintedVariants = [\n {\n intent: 'main',\n design: 'tinted',\n class: tw(['bg-main-container', 'text-on-main-container']),\n },\n {\n intent: 'support',\n design: 'tinted',\n class: tw(['bg-support-container', 'text-on-support-container']),\n },\n {\n intent: 'accent',\n design: 'tinted',\n class: tw(['bg-accent-container', 'text-on-accent-container']),\n },\n {\n intent: 'basic',\n design: 'tinted',\n class: tw(['bg-basic-container', 'text-on-basic-container']),\n },\n {\n intent: 'success',\n design: 'tinted',\n class: tw(['bg-success-container', 'text-on-success-container']),\n },\n {\n intent: 'alert',\n design: 'tinted',\n class: tw(['bg-alert-container', 'text-on-alert-container']),\n },\n {\n intent: 'danger',\n design: 'tinted',\n class: tw(['bg-error-container', 'text-on-error-container']),\n },\n {\n intent: 'info',\n design: 'tinted',\n class: tw(['bg-info-container', 'text-on-info-container']),\n },\n {\n intent: 'neutral',\n design: 'tinted',\n class: tw(['bg-neutral-container', 'text-on-neutral-container']),\n },\n] as const\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { filledVariants, outlinedVariants, tintedVariants } from './variants'\n\nexport const tagStyles = cva(\n [\n 'box-border default:inline-flex default:w-fit items-center justify-center gap-sm whitespace-nowrap',\n 'text-caption font-bold',\n 'px-md',\n ],\n {\n variants: {\n /**\n * Main style of the tag.\n * - `filled`: Tag will be plain.\n * - `outlined`: Tag will have a surface background with an colored outline/text.\n * - `tinted`: Tag will be filled but using a lighter color scheme.\n */\n design: makeVariants<'design', ['filled', 'outlined', 'tinted']>({\n filled: [],\n outlined: ['border-sm', 'border-current'],\n tinted: [],\n }),\n size: makeVariants<'size', ['md', 'lg']>({\n md: ['h-sz-20'],\n lg: ['h-sz-24'],\n }),\n shape: makeVariants<'shape', ['square', 'rounded', 'pill']>({\n square: [],\n rounded: ['rounded-md'],\n pill: ['rounded-full'],\n }),\n /**\n * Color scheme of the tag.\n */\n intent: makeVariants<\n 'intent',\n [\n 'main',\n 'support',\n 'accent',\n 'basic',\n 'success',\n 'alert',\n 'info',\n 'neutral',\n 'danger',\n 'surface',\n ]\n >({\n main: [],\n support: [],\n accent: [],\n basic: [],\n success: [],\n alert: [],\n danger: [],\n info: [],\n neutral: [],\n surface: [],\n }),\n },\n compoundVariants: [...filledVariants, ...outlinedVariants, ...tintedVariants],\n defaultVariants: {\n design: 'filled',\n intent: 'basic',\n size: 'md',\n shape: 'pill',\n },\n }\n)\n\nexport type TagStylesProps = VariantProps<typeof tagStyles>\n","import { ButtonHTMLAttributes, type PropsWithChildren, Ref } from 'react'\n\nimport { Slot } from '../slot'\nimport { tagStyles, type TagStylesProps } from './Tag.styles'\n\ninterface BaseTagProps\n extends PropsWithChildren<ButtonHTMLAttributes<HTMLSpanElement>>,\n TagStylesProps {\n /**\n * Change the component to the HTML tag or custom component of the only child.\n */\n asChild?: boolean\n}\n\ninterface FilteredDesignIntent<\n Design extends TagProps['design'],\n K extends TagStylesProps['intent'] | never = never,\n> {\n design?: Design\n intent?: Exclude<TagStylesProps['intent'], K>\n ref?: Ref<HTMLButtonElement>\n}\n\nexport type ValidTagDesignIntent =\n | FilteredDesignIntent<'tinted', 'surface'>\n | FilteredDesignIntent<'outlined', 'surface'>\n | FilteredDesignIntent<'filled'>\n\nexport type TagProps = BaseTagProps & ValidTagDesignIntent\n\nexport const Tag = ({\n design = 'filled',\n intent = 'basic',\n size = 'md',\n shape = 'pill',\n asChild,\n className,\n ref,\n ...others\n}: TagProps) => {\n const Component = asChild ? Slot : 'span'\n\n return (\n <Component\n data-spark-component=\"tag\"\n ref={ref}\n className={tagStyles({\n className,\n design,\n intent,\n size,\n shape,\n })}\n {...others}\n />\n )\n}\n"],"names":["filledVariants","tw","outlinedVariants","tintedVariants","tagStyles","cva","makeVariants","Tag","design","intent","size","shape","asChild","className","ref","others","jsx","Slot"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),e=require("../input/index.js"),g=require("class-variance-authority"),t=a=>r.jsx(e.InputGroup.ClearButton,{inline:!0,"data-spark-component":"textarea-group-trailing-icon",...a});t.id=e.InputGroup.ClearButton.id;t.displayName="TextareaGroup.ClearButton";const i=a=>r.jsx(e.InputGroup,{...a});i.displayName="TextareaGroup";const n=a=>r.jsx(e.InputGroup.LeadingIcon,{"data-spark-component":"textarea-group-leading-icon",...a});n.id=e.InputGroup.LeadingIcon.id;n.displayName="TextareaGroup.LeadingIcon";const o=a=>r.jsx(e.InputGroup.TrailingIcon,{"data-spark-component":"textarea-group-trailing-icon",...a});o.id=e.InputGroup.TrailingIcon.id;o.displayName="TextareaGroup.TrailingIcon";const u=({className:a,disabled:s,rows:c=1,isResizable:d=!0,ref:l,onValueChange:x,...T})=>r.jsx(e.Input,{className:g.cx(a,"py-sz-10 rounded-xl!",d?"resize-y":"resize-none"),"data-spark-component":"textarea",disabled:s,asChild:!0,onValueChange:x,children:r.jsx("textarea",{ref:l,rows:c,...T})}),I=Object.assign(u,{id:e.Input.id});u.displayName="Textarea";const p=Object.assign(i,{LeadingIcon:n,TrailingIcon:o,ClearButton:t});p.displayName="TextareaGroup";n.displayName="TextareaGroup.LeadingIcon";o.displayName="TextareaGroup.TrailingIcon";t.displayName="TextareaGroup.ClearButton";exports.Textarea=I;exports.TextareaGroup=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),e=require("../input/index.js"),g=require("class-variance-authority"),t=a=>r.jsx(e.InputGroup.ClearButton,{inline:!0,"data-spark-component":"textarea-group-trailing-icon",...a});t.id=e.InputGroup.ClearButton.id;t.displayName="TextareaGroup.ClearButton";const i=a=>r.jsx(e.InputGroup,{...a});i.displayName="TextareaGroup";const n=a=>r.jsx(e.InputGroup.LeadingIcon,{"data-spark-component":"textarea-group-leading-icon",...a});n.id=e.InputGroup.LeadingIcon.id;n.displayName="TextareaGroup.LeadingIcon";const o=a=>r.jsx(e.InputGroup.TrailingIcon,{"data-spark-component":"textarea-group-trailing-icon",...a});o.id=e.InputGroup.TrailingIcon.id;o.displayName="TextareaGroup.TrailingIcon";const u=({className:a,disabled:s,rows:c=1,isResizable:d=!0,ref:l,onValueChange:x,...T})=>r.jsx(e.Input,{className:g.cx(a,"py-[var(--spacing-sz-10)]",d?"resize-y":"resize-none"),"data-spark-component":"textarea",disabled:s,asChild:!0,onValueChange:x,children:r.jsx("textarea",{ref:l,rows:c,...T})}),I=Object.assign(u,{id:e.Input.id});u.displayName="Textarea";const p=Object.assign(i,{LeadingIcon:n,TrailingIcon:o,ClearButton:t});p.displayName="TextareaGroup";n.displayName="TextareaGroup.LeadingIcon";o.displayName="TextareaGroup.TrailingIcon";t.displayName="TextareaGroup.ClearButton";exports.Textarea=I;exports.TextareaGroup=p;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/textarea/TextareaClearButton.tsx","../../src/textarea/TextareaGroup.tsx","../../src/textarea/TextareaLeadingIcon.tsx","../../src/textarea/TextareaTrailingIcon.tsx","../../src/textarea/Textarea.tsx","../../src/textarea/index.ts"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref } from 'react'\n\nimport { InputGroup } from '../input'\n\nexport interface TextareaClearButtonProps extends ComponentPropsWithoutRef<'button'> {\n 'aria-label': string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const TextareaClearButton = (props: TextareaClearButtonProps) => {\n return (\n <InputGroup.ClearButton inline data-spark-component=\"textarea-group-trailing-icon\" {...props} />\n )\n}\n\nTextareaClearButton.id = InputGroup.ClearButton.id\nTextareaClearButton.displayName = 'TextareaGroup.ClearButton'\n","import { InputGroup, InputGroupProps } from '../input'\n\nexport type TextareaGroupProps = InputGroupProps\n\nexport const TextareaGroup = (props: TextareaGroupProps) => {\n return <InputGroup {...props} />\n}\n\nTextareaGroup.displayName = 'TextareaGroup'\n","import { InputGroup, InputLeadingIconProps } from '../input'\n\nexport type TextareaLeadingIconProps = InputLeadingIconProps\n\nexport const TextareaLeadingIcon = (props: InputLeadingIconProps) => {\n return <InputGroup.LeadingIcon data-spark-component=\"textarea-group-leading-icon\" {...props} />\n}\n\nTextareaLeadingIcon.id = InputGroup.LeadingIcon.id\nTextareaLeadingIcon.displayName = 'TextareaGroup.LeadingIcon'\n","import { InputGroup, InputTrailingIconProps } from '../input'\n\nexport type TextareaTrailingIconProps = InputTrailingIconProps\n\nexport const TextareaTrailingIcon = (props: InputTrailingIconProps) => {\n return <InputGroup.TrailingIcon data-spark-component=\"textarea-group-trailing-icon\" {...props} />\n}\n\nTextareaTrailingIcon.id = InputGroup.TrailingIcon.id\nTextareaTrailingIcon.displayName = 'TextareaGroup.TrailingIcon'\n","import { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, PropsWithChildren, Ref } from 'react'\n\nimport { Input, InputProps } from '../input'\n\ntype TextareaPrimitiveProps = ComponentPropsWithoutRef<'textarea'>\n\nexport interface TextareaProps extends TextareaPrimitiveProps, Pick<InputProps, 'onValueChange'> {\n isResizable?: boolean\n ref?: Ref<HTMLTextAreaElement>\n}\n\nconst Root = ({\n className,\n disabled,\n rows = 1,\n isResizable = true,\n ref,\n onValueChange,\n ...others\n}: PropsWithChildren<TextareaProps>) => {\n return (\n <Input\n className={cx(className, 'py-sz-10 rounded-xl!', isResizable ? 'resize-y' : 'resize-none')}\n data-spark-component=\"textarea\"\n disabled={disabled}\n asChild\n onValueChange={onValueChange}\n >\n <textarea ref={ref} rows={rows} {...others} />\n </Input>\n )\n}\n\nexport const Textarea = Object.assign(Root, {\n id: Input.id,\n})\n\nRoot.displayName = 'Textarea'\n","import { TextareaClearButton } from './TextareaClearButton'\nimport { TextareaGroup as Root } from './TextareaGroup'\nimport { TextareaLeadingIcon } from './TextareaLeadingIcon'\nimport { TextareaTrailingIcon } from './TextareaTrailingIcon'\n\nexport * from './Textarea'\n\nexport const TextareaGroup: typeof Root & {\n LeadingIcon: typeof TextareaLeadingIcon\n TrailingIcon: typeof TextareaTrailingIcon\n ClearButton: typeof TextareaClearButton\n} = Object.assign(Root, {\n LeadingIcon: TextareaLeadingIcon,\n TrailingIcon: TextareaTrailingIcon,\n ClearButton: TextareaClearButton,\n})\n\nTextareaGroup.displayName = 'TextareaGroup'\nTextareaLeadingIcon.displayName = 'TextareaGroup.LeadingIcon'\nTextareaTrailingIcon.displayName = 'TextareaGroup.TrailingIcon'\nTextareaClearButton.displayName = 'TextareaGroup.ClearButton'\n\nexport { type TextareaGroupProps } from './TextareaGroup'\nexport { type TextareaLeadingIconProps } from './TextareaLeadingIcon'\nexport { type TextareaTrailingIconProps } from './TextareaTrailingIcon'\nexport { type TextareaClearButtonProps } from './TextareaClearButton'\n"],"names":["TextareaClearButton","props","jsx","InputGroup","TextareaGroup","TextareaLeadingIcon","TextareaTrailingIcon","Root","className","disabled","rows","isResizable","ref","onValueChange","others","Input","cx","Textarea"],"mappings":"0LASaA,EAAuBC,GAEhCC,EAAAA,IAACC,aAAW,YAAX,CAAuB,OAAM,GAAC,uBAAqB,+BAAgC,GAAGF,EAAO,EAIlGD,EAAoB,GAAKG,aAAW,YAAY,GAChDH,EAAoB,YAAc,4BCZ3B,MAAMI,EAAiBH,GACrBC,MAACC,EAAAA,WAAA,CAAY,GAAGF,CAAA,CAAO,EAGhCG,EAAc,YAAc,gBCJrB,MAAMC,EAAuBJ,SAC1BE,EAAAA,WAAW,YAAX,CAAuB,uBAAqB,8BAA+B,GAAGF,EAAO,EAG/FI,EAAoB,GAAKF,aAAW,YAAY,GAChDE,EAAoB,YAAc,4BCL3B,MAAMC,EAAwBL,SAC3BE,EAAAA,WAAW,aAAX,CAAwB,uBAAqB,+BAAgC,GAAGF,EAAO,EAGjGK,EAAqB,GAAKH,aAAW,aAAa,GAClDG,EAAqB,YAAc,6BCGnC,MAAMC,EAAO,CAAC,CACZ,UAAAC,EACA,SAAAC,EACA,KAAAC,EAAO,EACP,YAAAC,EAAc,GACd,IAAAC,EACA,cAAAC,EACA,GAAGC,CACL,IAEIZ,EAAAA,IAACa,EAAAA,MAAA,CACC,UAAWC,EAAAA,GAAGR,EAAW,uBAAwBG,EAAc,WAAa,aAAa,EACzF,uBAAqB,WACrB,SAAAF,EACA,QAAO,GACP,cAAAI,EAEA,SAAAX,EAAAA,IAAC,WAAA,CAAS,IAAAU,EAAU,KAAAF,EAAa,GAAGI,CAAA,CAAQ,CAAA,CAAA,EAKrCG,EAAW,OAAO,OAAOV,EAAM,CAC1C,GAAIQ,EAAAA,MAAM,EACZ,CAAC,EAEDR,EAAK,YAAc,WC/BZ,MAAMH,EAIT,OAAO,OAAOG,EAAM,CACtB,YAAaF,EACb,aAAcC,EACd,YAAaN,CACf,CAAC,EAEDI,EAAc,YAAc,gBAC5BC,EAAoB,YAAc,4BAClCC,EAAqB,YAAc,6BACnCN,EAAoB,YAAc"}
1
+ {"version":3,"file":"index.js","sources":["../../src/textarea/TextareaClearButton.tsx","../../src/textarea/TextareaGroup.tsx","../../src/textarea/TextareaLeadingIcon.tsx","../../src/textarea/TextareaTrailingIcon.tsx","../../src/textarea/Textarea.tsx","../../src/textarea/index.ts"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref } from 'react'\n\nimport { InputGroup } from '../input'\n\nexport interface TextareaClearButtonProps extends ComponentPropsWithoutRef<'button'> {\n 'aria-label': string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const TextareaClearButton = (props: TextareaClearButtonProps) => {\n return (\n <InputGroup.ClearButton inline data-spark-component=\"textarea-group-trailing-icon\" {...props} />\n )\n}\n\nTextareaClearButton.id = InputGroup.ClearButton.id\nTextareaClearButton.displayName = 'TextareaGroup.ClearButton'\n","import { InputGroup, InputGroupProps } from '../input'\n\nexport type TextareaGroupProps = InputGroupProps\n\nexport const TextareaGroup = (props: TextareaGroupProps) => {\n return <InputGroup {...props} />\n}\n\nTextareaGroup.displayName = 'TextareaGroup'\n","import { InputGroup, InputLeadingIconProps } from '../input'\n\nexport type TextareaLeadingIconProps = InputLeadingIconProps\n\nexport const TextareaLeadingIcon = (props: InputLeadingIconProps) => {\n return <InputGroup.LeadingIcon data-spark-component=\"textarea-group-leading-icon\" {...props} />\n}\n\nTextareaLeadingIcon.id = InputGroup.LeadingIcon.id\nTextareaLeadingIcon.displayName = 'TextareaGroup.LeadingIcon'\n","import { InputGroup, InputTrailingIconProps } from '../input'\n\nexport type TextareaTrailingIconProps = InputTrailingIconProps\n\nexport const TextareaTrailingIcon = (props: InputTrailingIconProps) => {\n return <InputGroup.TrailingIcon data-spark-component=\"textarea-group-trailing-icon\" {...props} />\n}\n\nTextareaTrailingIcon.id = InputGroup.TrailingIcon.id\nTextareaTrailingIcon.displayName = 'TextareaGroup.TrailingIcon'\n","import { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, PropsWithChildren, Ref } from 'react'\n\nimport { Input, InputProps } from '../input'\n\ntype TextareaPrimitiveProps = ComponentPropsWithoutRef<'textarea'>\n\nexport interface TextareaProps extends TextareaPrimitiveProps, Pick<InputProps, 'onValueChange'> {\n isResizable?: boolean\n ref?: Ref<HTMLTextAreaElement>\n}\n\nconst Root = ({\n className,\n disabled,\n rows = 1,\n isResizable = true,\n ref,\n onValueChange,\n ...others\n}: PropsWithChildren<TextareaProps>) => {\n return (\n <Input\n className={cx(\n className,\n 'py-[var(--spacing-sz-10)]',\n isResizable ? 'resize-y' : 'resize-none'\n )}\n data-spark-component=\"textarea\"\n disabled={disabled}\n asChild\n onValueChange={onValueChange}\n >\n <textarea ref={ref} rows={rows} {...others} />\n </Input>\n )\n}\n\nexport const Textarea = Object.assign(Root, {\n id: Input.id,\n})\n\nRoot.displayName = 'Textarea'\n","import { TextareaClearButton } from './TextareaClearButton'\nimport { TextareaGroup as Root } from './TextareaGroup'\nimport { TextareaLeadingIcon } from './TextareaLeadingIcon'\nimport { TextareaTrailingIcon } from './TextareaTrailingIcon'\n\nexport * from './Textarea'\n\nexport const TextareaGroup: typeof Root & {\n LeadingIcon: typeof TextareaLeadingIcon\n TrailingIcon: typeof TextareaTrailingIcon\n ClearButton: typeof TextareaClearButton\n} = Object.assign(Root, {\n LeadingIcon: TextareaLeadingIcon,\n TrailingIcon: TextareaTrailingIcon,\n ClearButton: TextareaClearButton,\n})\n\nTextareaGroup.displayName = 'TextareaGroup'\nTextareaLeadingIcon.displayName = 'TextareaGroup.LeadingIcon'\nTextareaTrailingIcon.displayName = 'TextareaGroup.TrailingIcon'\nTextareaClearButton.displayName = 'TextareaGroup.ClearButton'\n\nexport { type TextareaGroupProps } from './TextareaGroup'\nexport { type TextareaLeadingIconProps } from './TextareaLeadingIcon'\nexport { type TextareaTrailingIconProps } from './TextareaTrailingIcon'\nexport { type TextareaClearButtonProps } from './TextareaClearButton'\n"],"names":["TextareaClearButton","props","jsx","InputGroup","TextareaGroup","TextareaLeadingIcon","TextareaTrailingIcon","Root","className","disabled","rows","isResizable","ref","onValueChange","others","Input","cx","Textarea"],"mappings":"0LASaA,EAAuBC,GAEhCC,EAAAA,IAACC,aAAW,YAAX,CAAuB,OAAM,GAAC,uBAAqB,+BAAgC,GAAGF,EAAO,EAIlGD,EAAoB,GAAKG,aAAW,YAAY,GAChDH,EAAoB,YAAc,4BCZ3B,MAAMI,EAAiBH,GACrBC,MAACC,EAAAA,WAAA,CAAY,GAAGF,CAAA,CAAO,EAGhCG,EAAc,YAAc,gBCJrB,MAAMC,EAAuBJ,SAC1BE,EAAAA,WAAW,YAAX,CAAuB,uBAAqB,8BAA+B,GAAGF,EAAO,EAG/FI,EAAoB,GAAKF,aAAW,YAAY,GAChDE,EAAoB,YAAc,4BCL3B,MAAMC,EAAwBL,SAC3BE,EAAAA,WAAW,aAAX,CAAwB,uBAAqB,+BAAgC,GAAGF,EAAO,EAGjGK,EAAqB,GAAKH,aAAW,aAAa,GAClDG,EAAqB,YAAc,6BCGnC,MAAMC,EAAO,CAAC,CACZ,UAAAC,EACA,SAAAC,EACA,KAAAC,EAAO,EACP,YAAAC,EAAc,GACd,IAAAC,EACA,cAAAC,EACA,GAAGC,CACL,IAEIZ,EAAAA,IAACa,EAAAA,MAAA,CACC,UAAWC,EAAAA,GACTR,EACA,4BACAG,EAAc,WAAa,aAAA,EAE7B,uBAAqB,WACrB,SAAAF,EACA,QAAO,GACP,cAAAI,EAEA,SAAAX,EAAAA,IAAC,WAAA,CAAS,IAAAU,EAAU,KAAAF,EAAa,GAAGI,CAAA,CAAQ,CAAA,CAAA,EAKrCG,EAAW,OAAO,OAAOV,EAAM,CAC1C,GAAIQ,EAAAA,MAAM,EACZ,CAAC,EAEDR,EAAK,YAAc,WCnCZ,MAAMH,EAIT,OAAO,OAAOG,EAAM,CACtB,YAAaF,EACb,aAAcC,EACd,YAAaN,CACf,CAAC,EAEDI,EAAc,YAAc,gBAC5BC,EAAoB,YAAc,4BAClCC,EAAqB,YAAc,6BACnCN,EAAoB,YAAc"}