@proyecto-viviana/solidaria-components 0.3.1 → 0.4.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.
- package/dist/ActionBar.js +184 -0
- package/dist/ActionBar.js.map +1 -0
- package/dist/ActionBar.jsx +128 -0
- package/dist/ActionBar.jsx.map +1 -0
- package/dist/ActionGroup.js +179 -0
- package/dist/ActionGroup.js.map +1 -0
- package/dist/ActionGroup.jsx +129 -0
- package/dist/ActionGroup.jsx.map +1 -0
- package/dist/Alert.js +111 -0
- package/dist/Alert.js.map +1 -0
- package/dist/Alert.jsx +82 -0
- package/dist/Alert.jsx.map +1 -0
- package/dist/Autocomplete.js +130 -0
- package/dist/Autocomplete.js.map +1 -0
- package/dist/Autocomplete.jsx +116 -0
- package/dist/Autocomplete.jsx.map +1 -0
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +334 -0
- package/dist/Breadcrumbs.js.map +1 -0
- package/dist/Breadcrumbs.jsx +266 -0
- package/dist/Breadcrumbs.jsx.map +1 -0
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +348 -0
- package/dist/Button.js.map +1 -0
- package/dist/Button.jsx +314 -0
- package/dist/Button.jsx.map +1 -0
- package/dist/Calendar.d.ts +4 -4
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +538 -0
- package/dist/Calendar.js.map +1 -0
- package/dist/Calendar.jsx +333 -0
- package/dist/Calendar.jsx.map +1 -0
- package/dist/CalendarPicker.d.ts +33 -0
- package/dist/CalendarPicker.d.ts.map +1 -0
- package/dist/CalendarPicker.js +44 -0
- package/dist/CalendarPicker.js.map +1 -0
- package/dist/CalendarPicker.jsx +44 -0
- package/dist/CalendarPicker.jsx.map +1 -0
- package/dist/Checkbox.d.ts +83 -4
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +923 -0
- package/dist/Checkbox.js.map +1 -0
- package/dist/Checkbox.jsx +707 -0
- package/dist/Checkbox.jsx.map +1 -0
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +202 -0
- package/dist/Collection.js.map +1 -0
- package/dist/Collection.jsx +152 -0
- package/dist/Collection.jsx.map +1 -0
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +1720 -0
- package/dist/Color.js.map +1 -0
- package/dist/Color.jsx +1344 -0
- package/dist/Color.jsx.map +1 -0
- package/dist/ColorEditor.js +208 -0
- package/dist/ColorEditor.js.map +1 -0
- package/dist/ColorEditor.jsx +120 -0
- package/dist/ColorEditor.jsx.map +1 -0
- package/dist/ComboBox.d.ts +8 -5
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +992 -0
- package/dist/ComboBox.js.map +1 -0
- package/dist/ComboBox.jsx +714 -0
- package/dist/ComboBox.jsx.map +1 -0
- package/dist/ContextualHelpTrigger.js +146 -0
- package/dist/ContextualHelpTrigger.js.map +1 -0
- package/dist/ContextualHelpTrigger.jsx +109 -0
- package/dist/ContextualHelpTrigger.jsx.map +1 -0
- package/dist/DateField.d.ts +3 -3
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +4 -0
- package/dist/DateField.jsx +4 -0
- package/dist/DateField2.js +499 -0
- package/dist/DateField2.js.map +1 -0
- package/dist/DateField2.jsx +317 -0
- package/dist/DateField2.jsx.map +1 -0
- package/dist/DatePicker.d.ts +4 -4
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +991 -0
- package/dist/DatePicker.js.map +1 -0
- package/dist/DatePicker.jsx +682 -0
- package/dist/DatePicker.jsx.map +1 -0
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +337 -0
- package/dist/Dialog.js.map +1 -0
- package/dist/Dialog.jsx +192 -0
- package/dist/Dialog.jsx.map +1 -0
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/Disclosure.js +328 -0
- package/dist/Disclosure.js.map +1 -0
- package/dist/Disclosure.jsx +230 -0
- package/dist/Disclosure.jsx.map +1 -0
- package/dist/DragAndDrop.d.ts.map +1 -1
- package/dist/DragAndDrop.js +176 -0
- package/dist/DragAndDrop.js.map +1 -0
- package/dist/DragAndDrop.jsx +160 -0
- package/dist/DragAndDrop.jsx.map +1 -0
- package/dist/DropZone.d.ts.map +1 -1
- package/dist/DropZone.js +189 -0
- package/dist/DropZone.js.map +1 -0
- package/dist/DropZone.jsx +144 -0
- package/dist/DropZone.jsx.map +1 -0
- package/dist/FieldError.js +66 -0
- package/dist/FieldError.js.map +1 -0
- package/dist/FieldError.jsx +47 -0
- package/dist/FieldError.jsx.map +1 -0
- package/dist/FileTrigger.js +79 -0
- package/dist/FileTrigger.js.map +1 -0
- package/dist/FileTrigger.jsx +49 -0
- package/dist/FileTrigger.jsx.map +1 -0
- package/dist/Focusable.js +70 -0
- package/dist/Focusable.js.map +1 -0
- package/dist/Focusable.jsx +69 -0
- package/dist/Focusable.jsx.map +1 -0
- package/dist/Form.js +99 -0
- package/dist/Form.js.map +1 -0
- package/dist/Form.jsx +73 -0
- package/dist/Form.jsx.map +1 -0
- package/dist/GridList.d.ts +34 -2
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +723 -0
- package/dist/GridList.js.map +1 -0
- package/dist/GridList.jsx +552 -0
- package/dist/GridList.jsx.map +1 -0
- package/dist/HiddenTimeInput.js +104 -0
- package/dist/HiddenTimeInput.js.map +1 -0
- package/dist/HiddenTimeInput.jsx +69 -0
- package/dist/HiddenTimeInput.jsx.map +1 -0
- package/dist/Icon.d.ts.map +1 -1
- package/dist/Icon.js +127 -0
- package/dist/Icon.js.map +1 -0
- package/dist/Icon.jsx +72 -0
- package/dist/Icon.jsx.map +1 -0
- package/dist/Keyboard.js +30 -0
- package/dist/Keyboard.js.map +1 -0
- package/dist/Keyboard.jsx +24 -0
- package/dist/Keyboard.jsx.map +1 -0
- package/dist/Landmark.js +134 -0
- package/dist/Landmark.js.map +1 -0
- package/dist/Landmark.jsx +118 -0
- package/dist/Landmark.jsx.map +1 -0
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +219 -0
- package/dist/Link.js.map +1 -0
- package/dist/Link.jsx +189 -0
- package/dist/Link.jsx.map +1 -0
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +670 -0
- package/dist/ListBox.js.map +1 -0
- package/dist/ListBox.jsx +508 -0
- package/dist/ListBox.jsx.map +1 -0
- package/dist/Menu.d.ts +27 -9
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +1254 -0
- package/dist/Menu.js.map +1 -0
- package/dist/Menu.jsx +1042 -0
- package/dist/Menu.jsx.map +1 -0
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Meter.js +123 -0
- package/dist/Meter.js.map +1 -0
- package/dist/Meter.jsx +107 -0
- package/dist/Meter.jsx.map +1 -0
- package/dist/Modal.d.ts.map +1 -1
- package/dist/Modal.js +380 -0
- package/dist/Modal.js.map +1 -0
- package/dist/Modal.jsx +314 -0
- package/dist/Modal.jsx.map +1 -0
- package/dist/NumberField.d.ts +3 -3
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/NumberField.js +573 -0
- package/dist/NumberField.js.map +1 -0
- package/dist/NumberField.jsx +443 -0
- package/dist/NumberField.jsx.map +1 -0
- package/dist/Popover.d.ts +10 -2
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +464 -0
- package/dist/Popover.js.map +1 -0
- package/dist/Popover.jsx +333 -0
- package/dist/Popover.jsx.map +1 -0
- package/dist/Pressable.js +69 -0
- package/dist/Pressable.js.map +1 -0
- package/dist/Pressable.jsx +68 -0
- package/dist/Pressable.jsx.map +1 -0
- package/dist/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar.js +130 -0
- package/dist/ProgressBar.js.map +1 -0
- package/dist/ProgressBar.jsx +114 -0
- package/dist/ProgressBar.jsx.map +1 -0
- package/dist/RadioGroup.d.ts +82 -4
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +931 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/RadioGroup.jsx +681 -0
- package/dist/RadioGroup.jsx.map +1 -0
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +410 -0
- package/dist/RangeCalendar.js.map +1 -0
- package/dist/RangeCalendar.jsx +253 -0
- package/dist/RangeCalendar.jsx.map +1 -0
- package/dist/RouterProvider.js +118 -0
- package/dist/RouterProvider.js.map +1 -0
- package/dist/RouterProvider.jsx +112 -0
- package/dist/RouterProvider.jsx.map +1 -0
- package/dist/SearchField.d.ts +2 -2
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +643 -0
- package/dist/SearchField.js.map +1 -0
- package/dist/SearchField.jsx +526 -0
- package/dist/SearchField.jsx.map +1 -0
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +1031 -0
- package/dist/Select.js.map +1 -0
- package/dist/Select.jsx +744 -0
- package/dist/Select.jsx.map +1 -0
- package/dist/SelectionIndicator.d.ts.map +1 -1
- package/dist/SelectionIndicator.js +86 -0
- package/dist/SelectionIndicator.js.map +1 -0
- package/dist/SelectionIndicator.jsx +50 -0
- package/dist/SelectionIndicator.jsx.map +1 -0
- package/dist/Separator.js +97 -0
- package/dist/Separator.js.map +1 -0
- package/dist/Separator.jsx +85 -0
- package/dist/Separator.jsx.map +1 -0
- package/dist/SharedElementTransition.d.ts.map +1 -1
- package/dist/SharedElementTransition.js +165 -0
- package/dist/SharedElementTransition.js.map +1 -0
- package/dist/SharedElementTransition.jsx +138 -0
- package/dist/SharedElementTransition.jsx.map +1 -0
- package/dist/Slider.d.ts +33 -1
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +515 -0
- package/dist/Slider.js.map +1 -0
- package/dist/Slider.jsx +403 -0
- package/dist/Slider.jsx.map +1 -0
- package/dist/StepList.js +198 -0
- package/dist/StepList.js.map +1 -0
- package/dist/StepList.jsx +141 -0
- package/dist/StepList.jsx.map +1 -0
- package/dist/Switch.d.ts +65 -2
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +534 -0
- package/dist/Switch.js.map +1 -0
- package/dist/Switch.jsx +393 -0
- package/dist/Switch.jsx.map +1 -0
- package/dist/Table.d.ts +48 -0
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +1759 -0
- package/dist/Table.js.map +1 -0
- package/dist/Table.jsx +1348 -0
- package/dist/Table.jsx.map +1 -0
- package/dist/Tabs.d.ts +0 -4
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +595 -0
- package/dist/Tabs.js.map +1 -0
- package/dist/Tabs.jsx +367 -0
- package/dist/Tabs.jsx.map +1 -0
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +378 -0
- package/dist/TagGroup.js.map +1 -0
- package/dist/TagGroup.jsx +270 -0
- package/dist/TagGroup.jsx.map +1 -0
- package/dist/Text.d.ts +18 -6
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +42 -0
- package/dist/Text.js.map +1 -0
- package/dist/Text.jsx +35 -0
- package/dist/Text.jsx.map +1 -0
- package/dist/TextField.d.ts +7 -6
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TextField.js +436 -0
- package/dist/TextField.js.map +1 -0
- package/dist/TextField.jsx +403 -0
- package/dist/TextField.jsx.map +1 -0
- package/dist/TimeField.d.ts +3 -3
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +372 -0
- package/dist/TimeField.js.map +1 -0
- package/dist/TimeField.jsx +224 -0
- package/dist/TimeField.jsx.map +1 -0
- package/dist/Toast.d.ts +14 -0
- package/dist/Toast.d.ts.map +1 -1
- package/dist/Toast.js +551 -0
- package/dist/Toast.js.map +1 -0
- package/dist/Toast.jsx +361 -0
- package/dist/Toast.jsx.map +1 -0
- package/dist/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton.js +123 -0
- package/dist/ToggleButton.js.map +1 -0
- package/dist/ToggleButton.jsx +88 -0
- package/dist/ToggleButton.jsx.map +1 -0
- package/dist/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButtonGroup.js +114 -0
- package/dist/ToggleButtonGroup.js.map +1 -0
- package/dist/ToggleButtonGroup.jsx +85 -0
- package/dist/ToggleButtonGroup.jsx.map +1 -0
- package/dist/Toolbar.js +112 -0
- package/dist/Toolbar.js.map +1 -0
- package/dist/Toolbar.jsx +92 -0
- package/dist/Toolbar.jsx.map +1 -0
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip.js +539 -0
- package/dist/Tooltip.js.map +1 -0
- package/dist/Tooltip.jsx +465 -0
- package/dist/Tooltip.jsx.map +1 -0
- package/dist/Tree.d.ts +14 -2
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +1424 -0
- package/dist/Tree.js.map +1 -0
- package/dist/Tree.jsx +1172 -0
- package/dist/Tree.jsx.map +1 -0
- package/dist/Virtualizer.d.ts +16 -2
- package/dist/Virtualizer.d.ts.map +1 -1
- package/dist/Virtualizer.js +2 -0
- package/dist/Virtualizer.jsx +2 -0
- package/dist/Virtualizer2.js +751 -0
- package/dist/Virtualizer2.js.map +1 -0
- package/dist/Virtualizer2.jsx +730 -0
- package/dist/Virtualizer2.jsx.map +1 -0
- package/dist/VirtualizerLayouts.d.ts +18 -0
- package/dist/VirtualizerLayouts.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +42 -0
- package/dist/VisuallyHidden.js.map +1 -0
- package/dist/VisuallyHidden.jsx +35 -0
- package/dist/VisuallyHidden.jsx.map +1 -0
- package/dist/contexts.js +33 -0
- package/dist/contexts.js.map +1 -0
- package/dist/contexts.jsx +33 -0
- package/dist/contexts.jsx.map +1 -0
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -23711
- package/dist/index.jsx +70 -18116
- package/dist/useDragAndDrop.js +2 -0
- package/dist/useDragAndDrop.jsx +2 -0
- package/dist/useDragAndDrop2.js +395 -0
- package/dist/useDragAndDrop2.js.map +1 -0
- package/dist/useDragAndDrop2.jsx +395 -0
- package/dist/useDragAndDrop2.jsx.map +1 -0
- package/dist/utils.d.ts +83 -11
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +285 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.jsx +277 -0
- package/dist/utils.jsx.map +1 -0
- package/dist/virtualizer/Layout.js +144 -0
- package/dist/virtualizer/Layout.js.map +1 -0
- package/dist/virtualizer/Layout.jsx +144 -0
- package/dist/virtualizer/Layout.jsx.map +1 -0
- package/package.json +401 -4
- package/src/Breadcrumbs.tsx +3 -1
- package/src/Button.tsx +90 -23
- package/src/Calendar.tsx +27 -10
- package/src/CalendarPicker.tsx +73 -0
- package/src/Checkbox.tsx +539 -3
- package/src/Collection.tsx +9 -3
- package/src/Color.tsx +42 -14
- package/src/ComboBox.tsx +126 -14
- package/src/DateField.tsx +20 -2
- package/src/DatePicker.tsx +117 -10
- package/src/Dialog.tsx +13 -5
- package/src/Disclosure.tsx +3 -1
- package/src/DragAndDrop.tsx +3 -1
- package/src/DropZone.tsx +3 -1
- package/src/GridList.tsx +125 -24
- package/src/Icon.tsx +3 -1
- package/src/Link.tsx +3 -1
- package/src/ListBox.tsx +31 -4
- package/src/Menu.tsx +298 -131
- package/src/Meter.tsx +3 -1
- package/src/Modal.tsx +100 -52
- package/src/NumberField.tsx +73 -10
- package/src/Popover.tsx +49 -11
- package/src/ProgressBar.tsx +3 -1
- package/src/RadioGroup.tsx +468 -4
- package/src/RangeCalendar.tsx +3 -1
- package/src/SearchField.tsx +27 -3
- package/src/Select.tsx +22 -7
- package/src/SelectionIndicator.tsx +3 -1
- package/src/SharedElementTransition.tsx +3 -1
- package/src/Slider.tsx +159 -13
- package/src/Switch.tsx +395 -2
- package/src/Table.tsx +409 -95
- package/src/Tabs.tsx +16 -45
- package/src/TagGroup.tsx +4 -1
- package/src/Text.tsx +31 -10
- package/src/TextField.tsx +73 -10
- package/src/TimeField.tsx +20 -2
- package/src/Toast.tsx +79 -14
- package/src/ToggleButton.tsx +3 -1
- package/src/ToggleButtonGroup.tsx +3 -1
- package/src/Tooltip.tsx +55 -8
- package/src/Tree.tsx +77 -9
- package/src/Virtualizer.tsx +180 -31
- package/src/VirtualizerLayouts.ts +45 -10
- package/src/index.ts +50 -0
- package/src/utils.tsx +243 -27
- package/dist/index.js.map +0 -1
- package/dist/index.jsx.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.jsx","names":["resolveChildren","mergeProps"],"sources":["../src/Breadcrumbs.tsx"],"sourcesContent":["/**\n * Breadcrumbs component for solidaria-components\n *\n * A pre-wired headless breadcrumbs component that combines aria hooks.\n * Port of react-aria-components Breadcrumbs.\n */\n\nimport {\n type Accessor,\n type JSX,\n createContext,\n createMemo,\n createSignal,\n children as resolveChildren,\n splitProps,\n useContext,\n For,\n Show,\n} from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport {\n createBreadcrumbs,\n createBreadcrumbItem,\n createFocusRing,\n createHover,\n mergeProps,\n type AriaBreadcrumbsProps,\n type AriaBreadcrumbItemProps,\n type PressEvent,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) {\n return;\n }\n\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nexport interface BreadcrumbsRenderProps {\n /** Whether the breadcrumbs are disabled. */\n isDisabled: boolean;\n}\n\nexport interface BreadcrumbsProps<T> extends Omit<AriaBreadcrumbsProps, \"isDisabled\">, SlotProps {\n /** The items to render in the breadcrumbs. */\n items?: T[];\n /** Function to get the key from an item. */\n getKey?: (item: T) => string | number;\n /** Whether the breadcrumbs are disabled. */\n isDisabled?: boolean;\n /** Handler called when a breadcrumb item is activated. */\n onAction?: (key: string | number) => void;\n /** The children of the component, or a render function for collection items. */\n children?: JSX.Element | ((item: T) => JSX.Element);\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<BreadcrumbsRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<BreadcrumbsRenderProps>;\n /** Ref for the navigation element. */\n ref?: RefLike<HTMLElement>;\n}\n\nexport interface BreadcrumbItemRenderProps {\n /** Whether this is the current/last item. */\n isCurrent: boolean;\n /** Whether the item is disabled. */\n isDisabled: boolean;\n /** Whether the item is pressed. */\n isPressed: boolean;\n /** Whether the item is focused. */\n isFocused: boolean;\n /** Whether the item has visible focus ring. */\n isFocusVisible: boolean;\n /** Whether the item is hovered. */\n isHovered: boolean;\n}\n\nexport interface BreadcrumbItemProps\n extends Omit<AriaBreadcrumbItemProps, \"isDisabled\">, SlotProps {\n /** The children of the breadcrumb item. */\n children?: RenderChildren<BreadcrumbItemRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<BreadcrumbItemRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<BreadcrumbItemRenderProps>;\n /** Whether this item is disabled. */\n isDisabled?: boolean;\n /** Ref for the breadcrumb item element. */\n ref?: RefLike<HTMLElement>;\n}\n\ninterface BreadcrumbsContextValue {\n isDisabled: Accessor<boolean>;\n onAction?: (key: string | number) => void;\n registerStaticItem?: () => number;\n staticItemCount?: Accessor<number>;\n resetStaticItems?: () => void;\n setStaticItemCount?: (count: number) => void;\n}\n\nexport const BreadcrumbsContext = createContext<BreadcrumbsContextValue | null>(null);\n\ninterface BreadcrumbItemContextValue {\n itemKey: string | number | null;\n isLast: Accessor<boolean>;\n}\n\nexport const BreadcrumbItemContext = createContext<BreadcrumbItemContextValue | null>(null);\n\nfunction defaultItemKey(item: unknown, index: number): string | number {\n const maybeItem = item as { key?: string | number; id?: string | number };\n return maybeItem.key ?? maybeItem.id ?? index;\n}\n\n/**\n * Breadcrumbs show hierarchy and navigational context for a user's location within an application.\n */\nexport function Breadcrumbs<T>(props: BreadcrumbsProps<T>): JSX.Element {\n const [local, ariaProps, rest] = splitProps(\n props,\n [\"children\", \"class\", \"style\", \"slot\", \"items\", \"getKey\", \"isDisabled\", \"onAction\", \"ref\"],\n [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-details\"],\n );\n\n const isDisabled = () => local.isDisabled ?? false;\n const items = () => local.items ?? [];\n const hasCollectionItems = () => local.items !== undefined;\n const getItemKey = (item: T, index: number): string | number =>\n local.getKey?.(item) ?? defaultItemKey(item, index);\n const [staticItemCount, setStaticItemCount] = createSignal(0);\n let nextStaticIndex = 0;\n const resetStaticItems = () => {\n nextStaticIndex = 0;\n setStaticItemCount(0);\n };\n const registerStaticItem = () => {\n const index = nextStaticIndex;\n nextStaticIndex += 1;\n return index;\n };\n\n const { navProps } = createBreadcrumbs({\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return ariaProps[\"aria-describedby\"];\n },\n get isDisabled() {\n return isDisabled();\n },\n });\n\n const renderValues = createMemo<BreadcrumbsRenderProps>(() => ({\n isDisabled: isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Breadcrumbs\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() =>\n filterDOMProps(rest as Record<string, unknown>, { global: true }),\n );\n return (\n <BreadcrumbsContext.Provider\n value={{\n isDisabled,\n onAction: local.onAction,\n registerStaticItem,\n staticItemCount,\n resetStaticItems,\n setStaticItemCount,\n }}\n >\n <nav\n {...navProps}\n {...domProps()}\n ref={(element) => assignRef(local.ref, element)}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={isDisabled() || undefined}\n >\n <ol\n style={{\n display: \"flex\",\n \"align-items\": \"center\",\n \"list-style\": \"none\",\n margin: 0,\n padding: 0,\n }}\n >\n <Show\n when={hasCollectionItems()}\n fallback={\n <StaticBreadcrumbItems>{local.children as JSX.Element}</StaticBreadcrumbItems>\n }\n >\n <For each={items()}>\n {(item, index) => {\n const itemKey = getItemKey(item, index());\n const isLast = () => index() === items().length - 1;\n const renderItem = local.children as ((item: T) => JSX.Element) | undefined;\n\n return (\n <li style={{ display: \"flex\", \"align-items\": \"center\" }}>\n <BreadcrumbItemContext.Provider value={{ itemKey, isLast }}>\n {renderItem?.(item)}\n </BreadcrumbItemContext.Provider>\n </li>\n );\n }}\n </For>\n </Show>\n </ol>\n </nav>\n </BreadcrumbsContext.Provider>\n );\n}\n\nfunction StaticBreadcrumbItems(props: { children?: JSX.Element }): JSX.Element {\n const context = useContext(BreadcrumbsContext);\n const staticChildren = resolveChildren(() => props.children);\n const childArray = createMemo(() => {\n context?.resetStaticItems?.();\n const array = staticChildren.toArray();\n context?.setStaticItemCount?.(array.length);\n return array;\n });\n\n return (\n <For each={childArray()}>\n {(child) => <li style={{ display: \"flex\", \"align-items\": \"center\" }}>{child}</li>}\n </For>\n );\n}\n\n/**\n * A BreadcrumbItem represents an individual breadcrumb in the navigation trail.\n */\nexport function BreadcrumbItem(props: BreadcrumbItemProps): JSX.Element {\n const [local, ariaProps] = splitProps(props, [\"class\", \"style\", \"slot\", \"isDisabled\", \"ref\"]);\n\n const context = useContext(BreadcrumbsContext);\n const itemContext = useContext(BreadcrumbItemContext);\n const staticIndex = itemContext ? null : context?.registerStaticItem?.();\n const isDisabled = () => local.isDisabled ?? context?.isDisabled() ?? false;\n const isCurrent = () =>\n ariaProps.isCurrent ??\n itemContext?.isLast() ??\n (staticIndex !== null &&\n staticIndex !== undefined &&\n context?.staticItemCount !== undefined &&\n staticIndex === context.staticItemCount() - 1);\n const itemKey = () => itemContext?.itemKey ?? ariaProps.id ?? null;\n\n const handlePress = (e: PressEvent) => {\n ariaProps.onPress?.(e);\n const key = itemKey();\n if (key !== null && !isCurrent() && !isDisabled()) {\n context?.onAction?.(key);\n }\n };\n\n const { itemProps, isPressed } = createBreadcrumbItem({\n get id() {\n return ariaProps.id;\n },\n get isCurrent() {\n return isCurrent();\n },\n get isDisabled() {\n return isDisabled();\n },\n get href() {\n return ariaProps.href;\n },\n get target() {\n return ariaProps.target;\n },\n get rel() {\n return ariaProps.rel;\n },\n get elementType() {\n return ariaProps.elementType;\n },\n get onPress() {\n return handlePress;\n },\n get onPressStart() {\n return ariaProps.onPressStart;\n },\n get onPressEnd() {\n return ariaProps.onPressEnd;\n },\n get onClick() {\n return ariaProps.onClick;\n },\n get onFocus() {\n return ariaProps.onFocus;\n },\n get onBlur() {\n return ariaProps.onBlur;\n },\n get onFocusChange() {\n return ariaProps.onFocusChange;\n },\n get onKeyDown() {\n return ariaProps.onKeyDown;\n },\n get onKeyUp() {\n return ariaProps.onKeyUp;\n },\n get autoFocus() {\n return ariaProps.autoFocus;\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return ariaProps[\"aria-describedby\"];\n },\n get \"aria-details\"() {\n return ariaProps[\"aria-details\"];\n },\n get \"aria-current\"() {\n return ariaProps[\"aria-current\"];\n },\n });\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return isDisabled();\n },\n });\n const mergedItemProps = createMemo(() =>\n mergeProps(\n itemProps as Record<string, unknown>,\n focusProps as Record<string, unknown>,\n hoverProps as Record<string, unknown>,\n ),\n );\n const elementType = () => ariaProps.elementType ?? \"a\";\n\n const renderValues = createMemo<BreadcrumbItemRenderProps>(() => ({\n isCurrent: isCurrent(),\n isDisabled: isDisabled(),\n isPressed: isPressed(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isHovered: isHovered(),\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-BreadcrumbItem\",\n },\n renderValues,\n );\n\n const mergedStyle = () => {\n const userStyle = renderProps.style();\n const baseStyle = { display: \"inline-flex\", \"align-items\": \"center\" };\n return userStyle ? { ...baseStyle, ...userStyle } : baseStyle;\n };\n\n return (\n <Dynamic\n component={elementType()}\n {...mergedItemProps()}\n ref={(element: HTMLElement) => assignRef(local.ref, element)}\n href={isCurrent() ? undefined : (mergedItemProps() as { href?: string }).href}\n aria-current={isCurrent() ? (ariaProps[\"aria-current\"] ?? \"page\") : undefined}\n aria-disabled={isDisabled() || isCurrent() || undefined}\n class={renderProps.class()}\n style={mergedStyle()}\n data-current={isCurrent() || undefined}\n data-disabled={isDisabled() || undefined}\n data-pressed={isPressed() || undefined}\n data-focused={isFocused() || undefined}\n data-focus-visible={isFocusVisible() || undefined}\n data-hovered={isHovered() || undefined}\n >\n {renderProps.renderChildren()}\n </Dynamic>\n );\n}\n\nBreadcrumbs.Item = BreadcrumbItem;\n"],"mappings":"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"}
|
package/dist/Button.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,GAAG,EAOT,MAAM,UAAU,CAAC;AAClB,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,UAAU,EAEhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,SAAS,EAGf,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,GAAG,EAOT,MAAM,UAAU,CAAC;AAClB,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,UAAU,EAEhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,SAAS,EAGf,MAAM,SAAS,CAAC;AAUjB,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAAC;AAmGzE,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,cAAc,EAAE,OAAO,CAAC;IACxB,sCAAsC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,SAAS;IAC/E,yFAAyF;IACzF,QAAQ,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC7C,yCAAyC;IACzC,KAAK,CAAC,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAC/C,wCAAwC;IACxC,KAAK,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAC3C,oDAAoD;IACpD,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAClD,WAAW,EAAE,iBAAiB,KAC3B,GAAG,CAAC,OAAO,CAAC;IACjB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjC,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kGAAkG;IAClG,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wCAAwC;IACxC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,sCAAsC;IACtC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,+CAA+C;IAC/C,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,aAAa,uDAAiD,CAAC;AAE5E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAkVtD"}
|
package/dist/Button.js
ADDED
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
import { filterDOMProps, useRenderProps } from "./utils.js";
|
|
2
|
+
import { r as PopoverTriggerContext, t as DialogTriggerContext } from "./contexts.js";
|
|
3
|
+
import { ProgressBarContext } from "./ProgressBar.js";
|
|
4
|
+
import { createComponent, effect, getNextElement, insert, mergeProps, runHydrationEvents, setAttribute, spread, template, use } from "solid-js/web";
|
|
5
|
+
import { createContext, createEffect, createMemo, createSignal, splitProps, useContext } from "solid-js";
|
|
6
|
+
import { announce, createButton, createFocusRing, createHover, createId, mergeProps as mergeProps$2 } from "@proyecto-viviana/solidaria";
|
|
7
|
+
//#region src/Button.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Button component for solidaria-components
|
|
10
|
+
*
|
|
11
|
+
* A pre-wired headless button that combines state + aria hooks.
|
|
12
|
+
* Port of react-aria-components/src/Button.tsx
|
|
13
|
+
*/
|
|
14
|
+
var _tmpl$ = /*#__PURE__*/ template(`<button>`);
|
|
15
|
+
const pendingPreservedEventPattern = /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;
|
|
16
|
+
function assignRef(ref, el) {
|
|
17
|
+
if (!ref) return;
|
|
18
|
+
if (typeof ref === "function") ref(el);
|
|
19
|
+
else ref.current = el;
|
|
20
|
+
}
|
|
21
|
+
function createLiveButtonRenderProps(values) {
|
|
22
|
+
return {
|
|
23
|
+
get isHovered() {
|
|
24
|
+
return values().isHovered;
|
|
25
|
+
},
|
|
26
|
+
get isPressed() {
|
|
27
|
+
return values().isPressed;
|
|
28
|
+
},
|
|
29
|
+
get isFocused() {
|
|
30
|
+
return values().isFocused;
|
|
31
|
+
},
|
|
32
|
+
get isFocusVisible() {
|
|
33
|
+
return values().isFocusVisible;
|
|
34
|
+
},
|
|
35
|
+
get isDisabled() {
|
|
36
|
+
return values().isDisabled;
|
|
37
|
+
},
|
|
38
|
+
get isPending() {
|
|
39
|
+
return values().isPending;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function createLiveCustomRootProps(getProps, getChildren, ref) {
|
|
44
|
+
const props = {};
|
|
45
|
+
const keys = new Set([
|
|
46
|
+
...Object.keys(getProps()),
|
|
47
|
+
"children",
|
|
48
|
+
"ref"
|
|
49
|
+
]);
|
|
50
|
+
for (const key of keys) Object.defineProperty(props, key, {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
configurable: true,
|
|
53
|
+
get() {
|
|
54
|
+
if (key === "children") return getChildren();
|
|
55
|
+
if (key === "ref") return ref;
|
|
56
|
+
return getProps()[key];
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return props;
|
|
60
|
+
}
|
|
61
|
+
const buttonAriaOverrideProps = [
|
|
62
|
+
"aria-label",
|
|
63
|
+
"aria-labelledby",
|
|
64
|
+
"aria-describedby",
|
|
65
|
+
"aria-details",
|
|
66
|
+
"aria-haspopup",
|
|
67
|
+
"aria-expanded",
|
|
68
|
+
"aria-controls",
|
|
69
|
+
"aria-pressed",
|
|
70
|
+
"aria-current",
|
|
71
|
+
"aria-disabled"
|
|
72
|
+
];
|
|
73
|
+
function createForwardedAriaButtonProps(source, overrides) {
|
|
74
|
+
const result = {};
|
|
75
|
+
for (const key in source) Object.defineProperty(result, key, {
|
|
76
|
+
enumerable: true,
|
|
77
|
+
configurable: true,
|
|
78
|
+
get() {
|
|
79
|
+
return source[key];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
for (const key in overrides) {
|
|
83
|
+
const descriptor = Object.getOwnPropertyDescriptor(overrides, key);
|
|
84
|
+
if (!descriptor) continue;
|
|
85
|
+
Object.defineProperty(result, key, {
|
|
86
|
+
...descriptor,
|
|
87
|
+
enumerable: true,
|
|
88
|
+
configurable: true
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
const ButtonContext = createContext(null);
|
|
94
|
+
/**
|
|
95
|
+
* A button allows a user to perform an action.
|
|
96
|
+
*
|
|
97
|
+
* This is a headless component that provides accessibility and state management.
|
|
98
|
+
* Style it using the render props pattern or data attributes.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```tsx
|
|
102
|
+
* <Button onPress={() => alert('Pressed!')}>
|
|
103
|
+
* {({ isPressed, isHovered }) => (
|
|
104
|
+
* <span class={isPressed ? 'bg-blue-700' : isHovered ? 'bg-blue-600' : 'bg-blue-500'}>
|
|
105
|
+
* Click me
|
|
106
|
+
* </span>
|
|
107
|
+
* )}
|
|
108
|
+
* </Button>
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
function Button(props) {
|
|
112
|
+
const contextProps = useContext(ButtonContext);
|
|
113
|
+
const contextSlotProps = contextProps?.slots?.[props.slot ?? "default"];
|
|
114
|
+
const contextBaseProps = createMemo(() => {
|
|
115
|
+
if (!contextProps) return {};
|
|
116
|
+
const { slots: _slots, ...rest } = contextProps;
|
|
117
|
+
return rest;
|
|
118
|
+
});
|
|
119
|
+
const [local, ariaProps] = splitProps(contextProps ? mergeProps$2(contextBaseProps(), contextSlotProps ?? {}, props) : props, [
|
|
120
|
+
"children",
|
|
121
|
+
"class",
|
|
122
|
+
"style",
|
|
123
|
+
"render",
|
|
124
|
+
"ref",
|
|
125
|
+
"slot",
|
|
126
|
+
"isPending",
|
|
127
|
+
"isPendingFocusable",
|
|
128
|
+
"onHoverStart",
|
|
129
|
+
"onHoverEnd",
|
|
130
|
+
"onHoverChange"
|
|
131
|
+
]);
|
|
132
|
+
const dialogTriggerContext = useContext(DialogTriggerContext);
|
|
133
|
+
const popoverTriggerContext = useContext(PopoverTriggerContext);
|
|
134
|
+
const resolveDisabled = () => {
|
|
135
|
+
const disabled = ariaProps.isDisabled;
|
|
136
|
+
if (typeof disabled === "function") return disabled();
|
|
137
|
+
return !!disabled;
|
|
138
|
+
};
|
|
139
|
+
const resolvePending = () => !!local.isPending;
|
|
140
|
+
const isPendingFocusable = () => local.isPendingFocusable !== false;
|
|
141
|
+
const [resolvedButtonEl, setResolvedButtonEl] = createSignal(null);
|
|
142
|
+
const buttonId = createId(ariaProps.id);
|
|
143
|
+
const progressId = createId();
|
|
144
|
+
const isDialogTrigger = () => !!dialogTriggerContext && !!resolvedButtonEl() && dialogTriggerContext.triggerRef() === resolvedButtonEl();
|
|
145
|
+
const isPopoverTrigger = () => !!popoverTriggerContext && !!resolvedButtonEl() && popoverTriggerContext.triggerRef() === resolvedButtonEl();
|
|
146
|
+
const handlePress = (e) => {
|
|
147
|
+
if (resolvePending()) return;
|
|
148
|
+
if (typeof ariaProps.onPress === "function") ariaProps.onPress(e);
|
|
149
|
+
if (isDialogTrigger()) dialogTriggerContext.state.toggle();
|
|
150
|
+
if (isPopoverTrigger()) popoverTriggerContext.state.toggle();
|
|
151
|
+
};
|
|
152
|
+
const buttonAria = createButton(createForwardedAriaButtonProps(ariaProps, {
|
|
153
|
+
onPress: handlePress,
|
|
154
|
+
get onPressStart() {
|
|
155
|
+
return resolvePending() ? void 0 : ariaProps.onPressStart;
|
|
156
|
+
},
|
|
157
|
+
get onPressEnd() {
|
|
158
|
+
return resolvePending() ? void 0 : ariaProps.onPressEnd;
|
|
159
|
+
},
|
|
160
|
+
get onPressUp() {
|
|
161
|
+
return resolvePending() ? void 0 : ariaProps.onPressUp;
|
|
162
|
+
},
|
|
163
|
+
get onPressChange() {
|
|
164
|
+
return resolvePending() ? void 0 : ariaProps.onPressChange;
|
|
165
|
+
},
|
|
166
|
+
get onClick() {
|
|
167
|
+
return resolvePending() ? void 0 : ariaProps.onClick;
|
|
168
|
+
},
|
|
169
|
+
get isDisabled() {
|
|
170
|
+
return resolveDisabled();
|
|
171
|
+
}
|
|
172
|
+
}));
|
|
173
|
+
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
174
|
+
const { isHovered, hoverProps } = createHover({
|
|
175
|
+
get isDisabled() {
|
|
176
|
+
return resolveDisabled() || resolvePending();
|
|
177
|
+
},
|
|
178
|
+
onHoverStart: local.onHoverStart,
|
|
179
|
+
onHoverEnd: local.onHoverEnd,
|
|
180
|
+
onHoverChange: local.onHoverChange
|
|
181
|
+
});
|
|
182
|
+
const renderValues = createMemo(() => ({
|
|
183
|
+
isHovered: isHovered(),
|
|
184
|
+
isPressed: buttonAria.isPressed() && !resolvePending(),
|
|
185
|
+
isFocused: isFocused(),
|
|
186
|
+
isFocusVisible: isFocusVisible(),
|
|
187
|
+
isDisabled: resolveDisabled(),
|
|
188
|
+
isPending: resolvePending()
|
|
189
|
+
}));
|
|
190
|
+
const renderProps = useRenderProps({
|
|
191
|
+
get children() {
|
|
192
|
+
return local.children;
|
|
193
|
+
},
|
|
194
|
+
class: local.class,
|
|
195
|
+
style: local.style,
|
|
196
|
+
defaultClassName: "solidaria-Button"
|
|
197
|
+
}, renderValues);
|
|
198
|
+
const domProps = createMemo(() => {
|
|
199
|
+
const filtered = filterDOMProps(ariaProps, { global: true });
|
|
200
|
+
delete filtered.onClick;
|
|
201
|
+
return filtered;
|
|
202
|
+
});
|
|
203
|
+
const buttonPropsRef = buttonAria.buttonProps.ref;
|
|
204
|
+
const focusPropsRef = focusProps.ref;
|
|
205
|
+
const hoverPropsRef = hoverProps.ref;
|
|
206
|
+
const cleanButtonProps = () => {
|
|
207
|
+
const { ref: _ref1, ...rest } = buttonAria.buttonProps;
|
|
208
|
+
return rest;
|
|
209
|
+
};
|
|
210
|
+
const cleanFocusProps = () => {
|
|
211
|
+
const { ref: _ref2, ...rest } = focusProps;
|
|
212
|
+
return rest;
|
|
213
|
+
};
|
|
214
|
+
const cleanHoverProps = () => {
|
|
215
|
+
const { ref: _ref3, ...rest } = hoverProps;
|
|
216
|
+
return rest;
|
|
217
|
+
};
|
|
218
|
+
const ariaLabelledBy = createMemo(() => {
|
|
219
|
+
const labelledBy = cleanButtonProps()["aria-labelledby"];
|
|
220
|
+
if (!resolvePending()) return labelledBy;
|
|
221
|
+
if (labelledBy) return `${labelledBy} ${progressId}`;
|
|
222
|
+
if (cleanButtonProps()["aria-label"]) return `${buttonId} ${progressId}`;
|
|
223
|
+
return labelledBy;
|
|
224
|
+
});
|
|
225
|
+
const handleRef = (el) => {
|
|
226
|
+
setResolvedButtonEl(el);
|
|
227
|
+
assignRef(local.ref, el);
|
|
228
|
+
buttonPropsRef?.(el);
|
|
229
|
+
focusPropsRef?.(el);
|
|
230
|
+
hoverPropsRef?.(el);
|
|
231
|
+
if (dialogTriggerContext?.setTriggerRef) {
|
|
232
|
+
if (!el.id) el.id = dialogTriggerContext.triggerId;
|
|
233
|
+
dialogTriggerContext.setTriggerRef(el);
|
|
234
|
+
}
|
|
235
|
+
if (popoverTriggerContext?.setTriggerRef) popoverTriggerContext.setTriggerRef(el);
|
|
236
|
+
};
|
|
237
|
+
const buttonType = () => buttonAria.buttonProps.type === "submit" && resolvePending() ? "button" : buttonAria.buttonProps.type;
|
|
238
|
+
const triggerAriaProps = () => {
|
|
239
|
+
const dialogTriggerProps = dialogTriggerContext?.triggerProps;
|
|
240
|
+
if (dialogTriggerProps && isDialogTrigger()) {
|
|
241
|
+
const next = {};
|
|
242
|
+
for (const name of [
|
|
243
|
+
"aria-haspopup",
|
|
244
|
+
"aria-expanded",
|
|
245
|
+
"aria-controls"
|
|
246
|
+
]) if (dialogTriggerProps[name] != null) next[name] = dialogTriggerProps[name];
|
|
247
|
+
return next;
|
|
248
|
+
}
|
|
249
|
+
const triggerProps = popoverTriggerContext?.triggerProps;
|
|
250
|
+
if (!triggerProps || !isPopoverTrigger()) return {};
|
|
251
|
+
const next = {};
|
|
252
|
+
for (const name of [
|
|
253
|
+
"aria-haspopup",
|
|
254
|
+
"aria-expanded",
|
|
255
|
+
"aria-controls"
|
|
256
|
+
]) if (triggerProps[name] != null) next[name] = triggerProps[name];
|
|
257
|
+
return next;
|
|
258
|
+
};
|
|
259
|
+
const directAriaProps = () => {
|
|
260
|
+
const next = {};
|
|
261
|
+
for (const name of buttonAriaOverrideProps) next[name] = ariaProps[name];
|
|
262
|
+
return next;
|
|
263
|
+
};
|
|
264
|
+
const disablePendingInteractions = (props) => {
|
|
265
|
+
if (!resolvePending()) return props;
|
|
266
|
+
const next = { ...props };
|
|
267
|
+
for (const key of Object.keys(next)) if (key.startsWith("on") && !pendingPreservedEventPattern.test(key)) next[key] = void 0;
|
|
268
|
+
next.href = void 0;
|
|
269
|
+
next.target = void 0;
|
|
270
|
+
return next;
|
|
271
|
+
};
|
|
272
|
+
const dataState = (value) => value ? "true" : void 0;
|
|
273
|
+
const buttonChildren = () => renderProps.renderChildren();
|
|
274
|
+
const buttonContent = () => createComponent(ProgressBarContext.Provider, {
|
|
275
|
+
value: { id: progressId },
|
|
276
|
+
get children() {
|
|
277
|
+
return buttonChildren();
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
let wasPending = resolvePending();
|
|
281
|
+
createEffect(() => {
|
|
282
|
+
const pending = resolvePending();
|
|
283
|
+
const message = { "aria-labelledby": ariaLabelledBy() || buttonId };
|
|
284
|
+
if (!wasPending && isFocused() && pending) announce(message, "assertive");
|
|
285
|
+
else if (wasPending && isFocused() && !pending) announce(message, "assertive");
|
|
286
|
+
wasPending = pending;
|
|
287
|
+
});
|
|
288
|
+
const rootProps = () => ({
|
|
289
|
+
...domProps(),
|
|
290
|
+
...disablePendingInteractions(cleanButtonProps()),
|
|
291
|
+
...directAriaProps(),
|
|
292
|
+
...triggerAriaProps(),
|
|
293
|
+
...cleanFocusProps(),
|
|
294
|
+
...cleanHoverProps(),
|
|
295
|
+
type: buttonType(),
|
|
296
|
+
id: buttonId,
|
|
297
|
+
class: renderProps.class(),
|
|
298
|
+
style: renderProps.style(),
|
|
299
|
+
slot: local.slot,
|
|
300
|
+
disabled: resolvePending() && isPendingFocusable() ? void 0 : cleanButtonProps().disabled,
|
|
301
|
+
"aria-labelledby": ariaLabelledBy(),
|
|
302
|
+
"aria-disabled": resolvePending() ? "true" : cleanButtonProps()["aria-disabled"] ?? ariaProps["aria-disabled"],
|
|
303
|
+
"data-pressed": dataState(buttonAria.isPressed() && !resolvePending()),
|
|
304
|
+
"data-hovered": dataState(isHovered()),
|
|
305
|
+
"data-focused": dataState(isFocused()),
|
|
306
|
+
"data-focus-visible": dataState(isFocusVisible()),
|
|
307
|
+
"data-disabled": dataState(resolveDisabled()),
|
|
308
|
+
"data-pending": dataState(resolvePending())
|
|
309
|
+
});
|
|
310
|
+
const customRootProps = createLiveCustomRootProps(rootProps, buttonContent, handleRef);
|
|
311
|
+
const customRenderValues = createLiveButtonRenderProps(renderValues);
|
|
312
|
+
return local.render ? local.render(customRootProps, customRenderValues) : (() => {
|
|
313
|
+
var _el$ = getNextElement(_tmpl$);
|
|
314
|
+
use(handleRef, _el$);
|
|
315
|
+
spread(_el$, mergeProps(rootProps, {
|
|
316
|
+
get ["class"]() {
|
|
317
|
+
return renderProps.class();
|
|
318
|
+
},
|
|
319
|
+
get style() {
|
|
320
|
+
return renderProps.style();
|
|
321
|
+
}
|
|
322
|
+
}), false, true);
|
|
323
|
+
insert(_el$, buttonContent);
|
|
324
|
+
effect((_p$) => {
|
|
325
|
+
var _v$ = rootProps()["data-pressed"], _v$2 = rootProps()["data-hovered"], _v$3 = rootProps()["data-focused"], _v$4 = rootProps()["data-focus-visible"], _v$5 = rootProps()["data-disabled"], _v$6 = rootProps()["data-pending"];
|
|
326
|
+
_v$ !== _p$.e && setAttribute(_el$, "data-pressed", _p$.e = _v$);
|
|
327
|
+
_v$2 !== _p$.t && setAttribute(_el$, "data-hovered", _p$.t = _v$2);
|
|
328
|
+
_v$3 !== _p$.a && setAttribute(_el$, "data-focused", _p$.a = _v$3);
|
|
329
|
+
_v$4 !== _p$.o && setAttribute(_el$, "data-focus-visible", _p$.o = _v$4);
|
|
330
|
+
_v$5 !== _p$.i && setAttribute(_el$, "data-disabled", _p$.i = _v$5);
|
|
331
|
+
_v$6 !== _p$.n && setAttribute(_el$, "data-pending", _p$.n = _v$6);
|
|
332
|
+
return _p$;
|
|
333
|
+
}, {
|
|
334
|
+
e: void 0,
|
|
335
|
+
t: void 0,
|
|
336
|
+
a: void 0,
|
|
337
|
+
o: void 0,
|
|
338
|
+
i: void 0,
|
|
339
|
+
n: void 0
|
|
340
|
+
});
|
|
341
|
+
runHydrationEvents();
|
|
342
|
+
return _el$;
|
|
343
|
+
})();
|
|
344
|
+
}
|
|
345
|
+
//#endregion
|
|
346
|
+
export { Button, ButtonContext };
|
|
347
|
+
|
|
348
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","names":["JSX","createContext","createEffect","createMemo","createSignal","splitProps","useContext","announce","createButton","createFocusRing","createHover","createId","mergeProps","AriaButtonProps","HoverEvent","PressEvent","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","filterDOMProps","DialogTriggerContext","PopoverTriggerContext","ProgressBarContext","pendingPreservedEventPattern","RefLike","el","T","current","assignRef","ref","createLiveButtonRenderProps","values","ButtonRenderProps","isHovered","isPressed","isFocused","isFocusVisible","isDisabled","isPending","createLiveCustomRootProps","getProps","ButtonHTMLAttributes","HTMLButtonElement","getChildren","Element","props","keys","Set","Object","key","defineProperty","enumerable","configurable","get","Record","buttonAriaOverrideProps","const","createForwardedAriaButtonProps","source","overrides","result","descriptor","getOwnPropertyDescriptor","ButtonProps","Omit","children","class","style","render","renderProps","isPendingFocusable","onHoverStart","e","onHoverEnd","onHoverChange","ButtonContextValue","slots","ButtonContext","Button","contextProps","contextSlotProps","slot","contextBaseProps","_slots","rest","mergedProps","local","ariaProps","dialogTriggerContext","popoverTriggerContext","resolveDisabled","disabled","resolvePending","resolvedButtonEl","setResolvedButtonEl","buttonId","id","progressId","isDialogTrigger","triggerRef","isPopoverTrigger","handlePress","onPress","state","toggle","buttonAria","onPressStart","undefined","onPressEnd","onPressUp","onPressChange","onClick","focusProps","hoverProps","renderValues","defaultClassName","domProps","filtered","global","buttonPropsRef","buttonProps","HTMLElement","focusPropsRef","hoverPropsRef","cleanButtonProps","_ref1","cleanFocusProps","_ref2","cleanHoverProps","_ref3","ariaLabelledBy","labelledBy","handleRef","setTriggerRef","triggerId","buttonType","type","triggerAriaProps","dialogTriggerProps","triggerProps","next","name","directAriaProps","disablePendingInteractions","startsWith","test","href","target","dataState","value","buttonChildren","renderChildren","buttonContent","_$createComponent","Provider","wasPending","pending","message","rootProps","customRootProps","customRenderValues","_el$","_$getNextElement","_tmpl$","_$use","_$spread","_$mergeProps","_$insert","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_$setAttribute","t","a","o","i","n","_$runHydrationEvents"],"sources":["../src/Button.tsx"],"sourcesContent":["/**\n * Button component for solidaria-components\n *\n * A pre-wired headless button that combines state + aria hooks.\n * Port of react-aria-components/src/Button.tsx\n */\n\nimport {\n type JSX,\n createContext,\n createEffect,\n createMemo,\n createSignal,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport {\n announce,\n createButton,\n createFocusRing,\n createHover,\n createId,\n mergeProps,\n type AriaButtonProps,\n type HoverEvent,\n type PressEvent,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n filterDOMProps,\n} from \"./utils\";\nimport { DialogTriggerContext, PopoverTriggerContext } from \"./contexts\";\nimport { ProgressBarContext } from \"./ProgressBar\";\n\n// Events preserved when `isPending` is true (for tooltips and other overlays),\n// mirroring RAC Button's `PRESERVED_EVENT_PATTERN`. Every other `on*` handler\n// is stripped so a pending-but-focusable button cannot be activated.\nconst pendingPreservedEventPattern =\n /Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nfunction createLiveButtonRenderProps(values: () => ButtonRenderProps): ButtonRenderProps {\n return {\n get isHovered() {\n return values().isHovered;\n },\n get isPressed() {\n return values().isPressed;\n },\n get isFocused() {\n return values().isFocused;\n },\n get isFocusVisible() {\n return values().isFocusVisible;\n },\n get isDisabled() {\n return values().isDisabled;\n },\n get isPending() {\n return values().isPending;\n },\n };\n}\n\nfunction createLiveCustomRootProps(\n getProps: () => JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n getChildren: () => JSX.Element,\n ref: (el: HTMLButtonElement) => void,\n): JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n const props = {} as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n const keys = new Set([...Object.keys(getProps()), \"children\", \"ref\"]);\n\n for (const key of keys) {\n Object.defineProperty(props, key, {\n enumerable: true,\n configurable: true,\n get() {\n if (key === \"children\") {\n return getChildren();\n }\n if (key === \"ref\") {\n return ref;\n }\n return (getProps() as Record<string, unknown>)[key];\n },\n });\n }\n\n return props;\n}\n\nconst buttonAriaOverrideProps = [\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-describedby\",\n \"aria-details\",\n \"aria-haspopup\",\n \"aria-expanded\",\n \"aria-controls\",\n \"aria-pressed\",\n \"aria-current\",\n \"aria-disabled\",\n] as const;\n\nfunction createForwardedAriaButtonProps(\n source: AriaButtonProps,\n overrides: AriaButtonProps,\n): AriaButtonProps {\n const result = {} as AriaButtonProps;\n\n for (const key in source) {\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get() {\n return (source as Record<string, unknown>)[key];\n },\n });\n }\n\n for (const key in overrides) {\n const descriptor = Object.getOwnPropertyDescriptor(overrides, key);\n if (!descriptor) continue;\n Object.defineProperty(result, key, { ...descriptor, enumerable: true, configurable: true });\n }\n\n return result;\n}\n\nexport interface ButtonRenderProps {\n /** Whether the button is currently hovered with a mouse. */\n isHovered: boolean;\n /** Whether the button is currently in a pressed state. */\n isPressed: boolean;\n /** Whether the button is focused, either via a mouse or keyboard. */\n isFocused: boolean;\n /** Whether the button is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the button is disabled. */\n isDisabled: boolean;\n /** Whether the button is currently in a pending state. */\n isPending: boolean;\n}\n\nexport interface ButtonProps extends Omit<AriaButtonProps, \"children\">, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<ButtonRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<ButtonRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<ButtonRenderProps>;\n /** Custom renderer for the outer button element. */\n render?: (\n props: JSX.ButtonHTMLAttributes<HTMLButtonElement>,\n renderProps: ButtonRenderProps,\n ) => JSX.Element;\n /** Ref for the underlying button element. */\n ref?: RefLike<HTMLButtonElement>;\n /** Whether the button is in a pending state. */\n isPending?: boolean;\n /** Keeps pending buttons focusable by using aria-disabled without a native disabled attribute. */\n isPendingFocusable?: boolean;\n /** Handler called when hover starts. */\n onHoverStart?: (e: HoverEvent) => void;\n /** Handler called when hover ends. */\n onHoverEnd?: (e: HoverEvent) => void;\n /** Handler called when hover state changes. */\n onHoverChange?: (isHovered: boolean) => void;\n}\n\nexport interface ButtonContextValue extends ButtonProps {\n slots?: Record<string, ButtonProps>;\n}\n\nexport const ButtonContext = createContext<ButtonContextValue | null>(null);\n\n/**\n * A button allows a user to perform an action.\n *\n * This is a headless component that provides accessibility and state management.\n * Style it using the render props pattern or data attributes.\n *\n * @example\n * ```tsx\n * <Button onPress={() => alert('Pressed!')}>\n * {({ isPressed, isHovered }) => (\n * <span class={isPressed ? 'bg-blue-700' : isHovered ? 'bg-blue-600' : 'bg-blue-500'}>\n * Click me\n * </span>\n * )}\n * </Button>\n * ```\n */\nexport function Button(props: ButtonProps): JSX.Element {\n const contextProps = useContext(ButtonContext);\n const contextSlotProps = contextProps?.slots?.[props.slot ?? \"default\"];\n const contextBaseProps = createMemo<ButtonProps>(() => {\n if (!contextProps) return {};\n const { slots: _slots, ...rest } = contextProps;\n return rest;\n });\n const mergedProps = (\n contextProps ? mergeProps(contextBaseProps(), contextSlotProps ?? {}, props) : props\n ) as ButtonProps;\n\n const [local, ariaProps] = splitProps(mergedProps, [\n \"children\",\n \"class\",\n \"style\",\n \"render\",\n \"ref\",\n \"slot\",\n \"isPending\",\n \"isPendingFocusable\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onHoverChange\",\n ]);\n\n // Check if inside a DialogTrigger or PopoverTrigger - if so, toggle on press\n // NOTE: Context is captured at component creation time. For Buttons inside a Modal,\n // the Modal provides OverlayTriggerStateContext, but due to SolidJS's eager JSX evaluation,\n // components inside Modal children are created before the Modal's Show renders.\n // So we can't reliably use context here to determine if we're inside a Modal.\n const dialogTriggerContext = useContext(DialogTriggerContext);\n const popoverTriggerContext = useContext(PopoverTriggerContext);\n\n // Helper to resolve isDisabled (handles both boolean and Accessor<boolean>)\n const resolveDisabled = (): boolean => {\n const disabled = ariaProps.isDisabled;\n if (typeof disabled === \"function\") {\n return disabled();\n }\n return !!disabled;\n };\n\n const resolvePending = (): boolean => !!local.isPending;\n const isPendingFocusable = () => local.isPendingFocusable !== false;\n\n const [resolvedButtonEl, setResolvedButtonEl] = createSignal<HTMLButtonElement | null>(null);\n const buttonId = createId((ariaProps as Record<string, unknown>).id as string | undefined);\n const progressId = createId();\n\n // Explicit trigger ownership: a button toggles overlays only when it is the\n // registered trigger element for the surrounding trigger context.\n const isDialogTrigger = () =>\n !!dialogTriggerContext &&\n !!resolvedButtonEl() &&\n dialogTriggerContext.triggerRef() === resolvedButtonEl();\n const isPopoverTrigger = () =>\n !!popoverTriggerContext &&\n !!resolvedButtonEl() &&\n popoverTriggerContext.triggerRef() === resolvedButtonEl();\n\n const handlePress = (e: PressEvent) => {\n if (resolvePending()) {\n return;\n }\n if (typeof ariaProps.onPress === \"function\") {\n ariaProps.onPress(e);\n }\n // Toggle only when this exact button is the registered trigger element.\n if (isDialogTrigger()) {\n dialogTriggerContext!.state.toggle();\n }\n if (isPopoverTrigger()) {\n popoverTriggerContext!.state.toggle();\n }\n };\n\n const buttonAria = createButton(\n createForwardedAriaButtonProps(ariaProps, {\n onPress: handlePress,\n get onPressStart() {\n return resolvePending() ? undefined : ariaProps.onPressStart;\n },\n get onPressEnd() {\n return resolvePending() ? undefined : ariaProps.onPressEnd;\n },\n get onPressUp() {\n return resolvePending() ? undefined : ariaProps.onPressUp;\n },\n get onPressChange() {\n return resolvePending() ? undefined : ariaProps.onPressChange;\n },\n get onClick() {\n return resolvePending() ? undefined : ariaProps.onClick;\n },\n // Mirror React Aria's RAC `Button`: `useButton` is called with the base\n // `isDisabled` WITHOUT `isPending`, so a pending-focusable button stays a\n // non-disabled native `<button>` — keeping `useFocusable`'s always-on\n // `tabIndex={0}` (the Safari focus workaround) and no native `disabled`\n // attribute. The pending \"disabled\" semantics are layered ON TOP:\n // `aria-disabled=\"true\"` below and `disablePendingInteractions` stripping\n // the press handlers post-hoc (RAC's `useDisableInteractions`). Folding\n // `isPending` in here instead would make the focusable hook drop\n // `tabIndex`, diverging from upstream's pending button (D4).\n get isDisabled() {\n return resolveDisabled();\n },\n }),\n );\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return resolveDisabled() || resolvePending();\n },\n onHoverStart: local.onHoverStart,\n onHoverEnd: local.onHoverEnd,\n onHoverChange: local.onHoverChange,\n });\n\n const renderValues = createMemo<ButtonRenderProps>(() => ({\n isHovered: isHovered(),\n isPressed: buttonAria.isPressed() && !resolvePending(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: resolveDisabled(),\n isPending: resolvePending(),\n }));\n\n const renderProps = useRenderProps(\n {\n // Use merged children so ButtonContext can supply slot/default content.\n get children() {\n return local.children;\n },\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Button\",\n },\n renderValues,\n );\n\n // Remove onClick from DOM props - it's already handled by createPress\n // This matches React Aria Components behavior (Button.tsx line 144: delete DOMProps.onClick)\n const domProps = createMemo(() => {\n const filtered = filterDOMProps(ariaProps, { global: true });\n // onClick is handled by createPress, not passed directly to DOM\n delete (filtered as Record<string, unknown>).onClick;\n return filtered;\n });\n\n const buttonPropsRef = (buttonAria.buttonProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n const focusPropsRef = (focusProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n const hoverPropsRef = (hoverProps as Record<string, unknown>).ref as\n | ((el: HTMLElement) => void)\n | undefined;\n\n const cleanButtonProps = () => {\n const { ref: _ref1, ...rest } = buttonAria.buttonProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref2, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref3, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n const ariaLabelledBy = createMemo(() => {\n const labelledBy = cleanButtonProps()[\"aria-labelledby\"] as string | undefined;\n if (!resolvePending()) {\n return labelledBy;\n }\n\n if (labelledBy) {\n return `${labelledBy} ${progressId}`;\n }\n\n if (cleanButtonProps()[\"aria-label\"]) {\n return `${buttonId} ${progressId}`;\n }\n\n return labelledBy;\n });\n\n const handleRef = (el: HTMLButtonElement) => {\n setResolvedButtonEl(el);\n assignRef(local.ref, el);\n\n buttonPropsRef?.(el);\n focusPropsRef?.(el);\n hoverPropsRef?.(el);\n\n // Register trigger ownership for surrounding trigger contexts.\n if (dialogTriggerContext?.setTriggerRef) {\n if (!el.id) {\n el.id = dialogTriggerContext.triggerId;\n }\n dialogTriggerContext.setTriggerRef(el);\n }\n if (popoverTriggerContext?.setTriggerRef) {\n popoverTriggerContext.setTriggerRef(el);\n }\n };\n const buttonType = () =>\n (buttonAria.buttonProps as Record<string, unknown>).type === \"submit\" && resolvePending()\n ? \"button\"\n : ((buttonAria.buttonProps as Record<string, unknown>).type as\n | \"button\"\n | \"submit\"\n | \"reset\"\n | undefined);\n const triggerAriaProps = () => {\n const dialogTriggerProps = dialogTriggerContext?.triggerProps;\n if (dialogTriggerProps && isDialogTrigger()) {\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (dialogTriggerProps[name] != null) {\n next[name] = dialogTriggerProps[name];\n }\n }\n return next;\n }\n\n const triggerProps = popoverTriggerContext?.triggerProps;\n if (!triggerProps || !isPopoverTrigger()) {\n return {};\n }\n\n const next: Record<string, unknown> = {};\n for (const name of [\"aria-haspopup\", \"aria-expanded\", \"aria-controls\"]) {\n if (triggerProps[name] != null) {\n next[name] = triggerProps[name];\n }\n }\n return next;\n };\n const directAriaProps = () => {\n const next: Record<string, unknown> = {};\n for (const name of buttonAriaOverrideProps) {\n next[name] = (ariaProps as Record<string, unknown>)[name];\n }\n return next;\n };\n const disablePendingInteractions = (props: Record<string, unknown>) => {\n if (!resolvePending()) {\n return props;\n }\n\n const next = { ...props };\n for (const key of Object.keys(next)) {\n // Mirror RAC's `useDisableInteractions`: when pending, strip every event\n // handler except the ones overlays/tooltips still need — focus/blur,\n // hover, and pointer/mouse enter-leave-over-out. Press handlers\n // (click/pointerdown/keydown/…) are removed so the focusable button\n // cannot be activated while pending.\n if (key.startsWith(\"on\") && !pendingPreservedEventPattern.test(key)) {\n next[key] = undefined;\n }\n }\n next.href = undefined;\n next.target = undefined;\n return next;\n };\n const dataState = (value: boolean) => (value ? \"true\" : undefined);\n const buttonChildren = () => renderProps.renderChildren();\n const buttonContent = () => (\n <ProgressBarContext.Provider value={{ id: progressId }}>\n {buttonChildren()}\n </ProgressBarContext.Provider>\n );\n let wasPending = resolvePending();\n createEffect(() => {\n const pending = resolvePending();\n const message = { \"aria-labelledby\": ariaLabelledBy() || buttonId };\n\n if (!wasPending && isFocused() && pending) {\n announce(message, \"assertive\");\n } else if (wasPending && isFocused() && !pending) {\n announce(message, \"assertive\");\n }\n\n wasPending = pending;\n });\n const rootProps = () =>\n ({\n ...domProps(),\n ...disablePendingInteractions(cleanButtonProps()),\n ...directAriaProps(),\n ...triggerAriaProps(),\n ...cleanFocusProps(),\n ...cleanHoverProps(),\n type: buttonType(),\n id: buttonId,\n class: renderProps.class(),\n style: renderProps.style(),\n slot: local.slot,\n disabled: resolvePending() && isPendingFocusable() ? undefined : cleanButtonProps().disabled,\n \"aria-labelledby\": ariaLabelledBy(),\n \"aria-disabled\": resolvePending()\n ? \"true\"\n : (cleanButtonProps()[\"aria-disabled\"] ?? ariaProps[\"aria-disabled\"]),\n \"data-pressed\": dataState(buttonAria.isPressed() && !resolvePending()),\n \"data-hovered\": dataState(isHovered()),\n \"data-focused\": dataState(isFocused()),\n \"data-focus-visible\": dataState(isFocusVisible()),\n \"data-disabled\": dataState(resolveDisabled()),\n \"data-pending\": dataState(resolvePending()),\n }) as JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n const customRootProps = createLiveCustomRootProps(rootProps, buttonContent, handleRef);\n const customRenderValues = createLiveButtonRenderProps(renderValues);\n\n return local.render ? (\n local.render(customRootProps, customRenderValues)\n ) : (\n <button\n ref={handleRef}\n {...rootProps()}\n class={renderProps.class()}\n style={renderProps.style()}\n attr:data-pressed={(rootProps() as Record<string, unknown>)[\"data-pressed\"] as string}\n attr:data-hovered={(rootProps() as Record<string, unknown>)[\"data-hovered\"] as string}\n attr:data-focused={(rootProps() as Record<string, unknown>)[\"data-focused\"] as string}\n attr:data-focus-visible={\n (rootProps() as Record<string, unknown>)[\"data-focus-visible\"] as string\n }\n attr:data-disabled={(rootProps() as Record<string, unknown>)[\"data-disabled\"] as string}\n attr:data-pending={(rootProps() as Record<string, unknown>)[\"data-pending\"] as string}\n >\n {buttonContent()}\n </button>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAyCA,MAAMyB,+BACJ;AAIF,SAASK,UAAaC,KAAiBJ,IAAa;CAClD,IAAI,CAACI,KAAK;CACV,IAAI,OAAOA,QAAQ,YACjBA,IAAIJ,EAAE;MAENI,IAAIF,UAAUF;AAElB;AAEA,SAASK,4BAA4BC,QAAoD;CACvF,OAAO;EACL,IAAIE,YAAY;GACd,OAAOF,OAAO,CAAC,CAACE;EAClB;EACA,IAAIC,YAAY;GACd,OAAOH,OAAO,CAAC,CAACG;EAClB;EACA,IAAIC,YAAY;GACd,OAAOJ,OAAO,CAAC,CAACI;EAClB;EACA,IAAIC,iBAAiB;GACnB,OAAOL,OAAO,CAAC,CAACK;EAClB;EACA,IAAIC,aAAa;GACf,OAAON,OAAO,CAAC,CAACM;EAClB;EACA,IAAIC,YAAY;GACd,OAAOP,OAAO,CAAC,CAACO;EAClB;CACF;AACF;AAEA,SAASC,0BACPC,UACAG,aACAd,KAC6C;CAC7C,MAAMgB,QAAQ,CAAC;CACf,MAAMC,OAAO,IAAIC,IAAI;EAAC,GAAGC,OAAOF,KAAKN,SAAS,CAAC;EAAG;EAAY;CAAK,CAAC;CAEpE,KAAK,MAAMS,OAAOH,MAChBE,OAAOE,eAAeL,OAAOI,KAAK;EAChCE,YAAY;EACZC,cAAc;EACdC,MAAM;GACJ,IAAIJ,QAAQ,YACV,OAAON,YAAY;GAErB,IAAIM,QAAQ,OACV,OAAOpB;GAET,OAAQW,SAAS,CAAC,CAA6BS;EACjD;CACF,CAAC;CAGH,OAAOJ;AACT;AAEA,MAAMU,0BAA0B;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAAe;AAGjB,SAASE,+BACPC,QACAC,WACiB;CACjB,MAAMC,SAAS,CAAC;CAEhB,KAAK,MAAMX,OAAOS,QAChBV,OAAOE,eAAeU,QAAQX,KAAK;EACjCE,YAAY;EACZC,cAAc;EACdC,MAAM;GACJ,OAAQK,OAAmCT;EAC7C;CACF,CAAC;CAGH,KAAK,MAAMA,OAAOU,WAAW;EAC3B,MAAME,aAAab,OAAOc,yBAAyBH,WAAWV,GAAG;EACjE,IAAI,CAACY,YAAY;EACjBb,OAAOE,eAAeU,QAAQX,KAAK;GAAE,GAAGY;GAAYV,YAAY;GAAMC,cAAc;EAAK,CAAC;CAC5F;CAEA,OAAOQ;AACT;AA+CA,MAAaiB,gBAAgB9E,cAAyC,IAAI;;;;;;;;;;;;;;;;;;AAmB1E,SAAgB+E,OAAOjC,OAAiC;CACtD,MAAMkC,eAAe3E,WAAWyE,aAAa;CAC7C,MAAMG,mBAAmBD,cAAcH,QAAQ/B,MAAMoC,QAAQ;CAC7D,MAAMC,mBAAmBjF,iBAA8B;EACrD,IAAI,CAAC8E,cAAc,OAAO,CAAC;EAC3B,MAAM,EAAEH,OAAOO,QAAQ,GAAGC,SAASL;EACnC,OAAOK;CACT,CAAC;CAKD,MAAM,CAACE,OAAOC,aAAapF,WAHzB4E,eAAerE,aAAWwE,iBAAiB,GAAGF,oBAAoB,CAAC,GAAGnC,KAAK,IAAIA,OAG9B;EACjD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAe,CAChB;CAOD,MAAM2C,uBAAuBpF,WAAWgB,oBAAoB;CAC5D,MAAMqE,wBAAwBrF,WAAWiB,qBAAqB;CAG9D,MAAMqE,wBAAiC;EACrC,MAAMC,WAAWJ,UAAUlD;EAC3B,IAAI,OAAOsD,aAAa,YACtB,OAAOA,SAAS;EAElB,OAAO,CAAC,CAACA;CACX;CAEA,MAAMC,uBAAgC,CAAC,CAACN,MAAMhD;CAC9C,MAAMgC,2BAA2BgB,MAAMhB,uBAAuB;CAE9D,MAAM,CAACuB,kBAAkBC,uBAAuB5F,aAAuC,IAAI;CAC3F,MAAM6F,WAAWtF,SAAU8E,UAAsCS,EAAwB;CACzF,MAAMC,aAAaxF,SAAS;CAI5B,MAAMyF,wBACJ,CAAC,CAACV,wBACF,CAAC,CAACK,iBAAiB,KACnBL,qBAAqBW,WAAW,MAAMN,iBAAiB;CACzD,MAAMO,yBACJ,CAAC,CAACX,yBACF,CAAC,CAACI,iBAAiB,KACnBJ,sBAAsBU,WAAW,MAAMN,iBAAiB;CAE1D,MAAMQ,eAAe7B,MAAkB;EACrC,IAAIoB,eAAe,GACjB;EAEF,IAAI,OAAOL,UAAUe,YAAY,YAC/Bf,UAAUe,QAAQ9B,CAAC;EAGrB,IAAI0B,gBAAgB,GAClBV,qBAAsBe,MAAMC,OAAO;EAErC,IAAIJ,iBAAiB,GACnBX,sBAAuBc,MAAMC,OAAO;CAExC;CAEA,MAAMC,aAAanG,aACjBmD,+BAA+B8B,WAAW;EACxCe,SAASD;EACT,IAAIK,eAAe;GACjB,OAAOd,eAAe,IAAIe,KAAAA,IAAYpB,UAAUmB;EAClD;EACA,IAAIE,aAAa;GACf,OAAOhB,eAAe,IAAIe,KAAAA,IAAYpB,UAAUqB;EAClD;EACA,IAAIC,YAAY;GACd,OAAOjB,eAAe,IAAIe,KAAAA,IAAYpB,UAAUsB;EAClD;EACA,IAAIC,gBAAgB;GAClB,OAAOlB,eAAe,IAAIe,KAAAA,IAAYpB,UAAUuB;EAClD;EACA,IAAIC,UAAU;GACZ,OAAOnB,eAAe,IAAIe,KAAAA,IAAYpB,UAAUwB;EAClD;EAUA,IAAI1E,aAAa;GACf,OAAOqD,gBAAgB;EACzB;CACF,CAAC,CACH;CAEA,MAAM,EAAEvD,WAAWC,gBAAgB4E,eAAezG,gBAAgB;CAElE,MAAM,EAAE0B,WAAWgF,eAAezG,YAAY;EAC5C,IAAI6B,aAAa;GACf,OAAOqD,gBAAgB,KAAKE,eAAe;EAC7C;EACArB,cAAce,MAAMf;EACpBE,YAAYa,MAAMb;EAClBC,eAAeY,MAAMZ;CACvB,CAAC;CAED,MAAMwC,eAAejH,kBAAqC;EACxDgC,WAAWA,UAAU;EACrBC,WAAWuE,WAAWvE,UAAU,KAAK,CAAC0D,eAAe;EACrDzD,WAAWA,UAAU;EACrBC,gBAAgBA,eAAe;EAC/BC,YAAYqD,gBAAgB;EAC5BpD,WAAWsD,eAAe;CAC5B,EAAE;CAEF,MAAMvB,cAAcnD,eAClB;EAEE,IAAI+C,WAAW;GACb,OAAOqB,MAAMrB;EACf;EACAC,OAAOoB,MAAMpB;EACbC,OAAOmB,MAAMnB;EACbgD,kBAAkB;CACpB,GACAD,YACF;CAIA,MAAME,WAAWnH,iBAAiB;EAChC,MAAMoH,WAAWlG,eAAeoE,WAAW,EAAE+B,QAAQ,KAAK,CAAC;EAE3D,OAAQD,SAAqCN;EAC7C,OAAOM;CACT,CAAC;CAED,MAAME,iBAAkBd,WAAWe,YAAwC3F;CAG3E,MAAM6F,gBAAiBV,WAAuCnF;CAG9D,MAAM8F,gBAAiBV,WAAuCpF;CAI9D,MAAM+F,yBAAyB;EAC7B,MAAM,EAAE/F,KAAKgG,OAAO,GAAGzC,SAASqB,WAAWe;EAC3C,OAAOpC;CACT;CACA,MAAM0C,wBAAwB;EAC5B,MAAM,EAAEjG,KAAKkG,OAAO,GAAG3C,SAAS4B;EAChC,OAAO5B;CACT;CACA,MAAM4C,wBAAwB;EAC5B,MAAM,EAAEnG,KAAKoG,OAAO,GAAG7C,SAAS6B;EAChC,OAAO7B;CACT;CACA,MAAM8C,iBAAiBjI,iBAAiB;EACtC,MAAMkI,aAAaP,iBAAiB,CAAC,CAAC;EACtC,IAAI,CAAChC,eAAe,GAClB,OAAOuC;EAGT,IAAIA,YACF,OAAO,GAAGA,WAAU,GAAIlC;EAG1B,IAAI2B,iBAAiB,CAAC,CAAC,eACrB,OAAO,GAAG7B,SAAQ,GAAIE;EAGxB,OAAOkC;CACT,CAAC;CAED,MAAMC,aAAa3G,OAA0B;EAC3CqE,oBAAoBrE,EAAE;EACtBG,UAAU0D,MAAMzD,KAAKJ,EAAE;EAEvB8F,iBAAiB9F,EAAE;EACnBiG,gBAAgBjG,EAAE;EAClBkG,gBAAgBlG,EAAE;EAGlB,IAAI+D,sBAAsB6C,eAAe;GACvC,IAAI,CAAC5G,GAAGuE,IACNvE,GAAGuE,KAAKR,qBAAqB8C;GAE/B9C,qBAAqB6C,cAAc5G,EAAE;EACvC;EACA,IAAIgE,uBAAuB4C,eACzB5C,sBAAsB4C,cAAc5G,EAAE;CAE1C;CACA,MAAM8G,mBACH9B,WAAWe,YAAwCgB,SAAS,YAAY5C,eAAe,IACpF,WACEa,WAAWe,YAAwCgB;CAK3D,MAAMC,yBAAyB;EAC7B,MAAMC,qBAAqBlD,sBAAsBmD;EACjD,IAAID,sBAAsBxC,gBAAgB,GAAG;GAC3C,MAAM0C,OAAgC,CAAC;GACvC,KAAK,MAAMC,QAAQ;IAAC;IAAiB;IAAiB;GAAe,GACnE,IAAIH,mBAAmBG,SAAS,MAC9BD,KAAKC,QAAQH,mBAAmBG;GAGpC,OAAOD;EACT;EAEA,MAAMD,eAAelD,uBAAuBkD;EAC5C,IAAI,CAACA,gBAAgB,CAACvC,iBAAiB,GACrC,OAAO,CAAC;EAGV,MAAMwC,OAAgC,CAAC;EACvC,KAAK,MAAMC,QAAQ;GAAC;GAAiB;GAAiB;EAAe,GACnE,IAAIF,aAAaE,SAAS,MACxBD,KAAKC,QAAQF,aAAaE;EAG9B,OAAOD;CACT;CACA,MAAME,wBAAwB;EAC5B,MAAMF,OAAgC,CAAC;EACvC,KAAK,MAAMC,QAAQtF,yBACjBqF,KAAKC,QAAStD,UAAsCsD;EAEtD,OAAOD;CACT;CACA,MAAMG,8BAA8BlG,UAAmC;EACrE,IAAI,CAAC+C,eAAe,GAClB,OAAO/C;EAGT,MAAM+F,OAAO,EAAE,GAAG/F,MAAM;EACxB,KAAK,MAAMI,OAAOD,OAAOF,KAAK8F,IAAI,GAMhC,IAAI3F,IAAI+F,WAAW,IAAI,KAAK,CAACzH,6BAA6B0H,KAAKhG,GAAG,GAChE2F,KAAK3F,OAAO0D,KAAAA;EAGhBiC,KAAKM,OAAOvC,KAAAA;EACZiC,KAAKO,SAASxC,KAAAA;EACd,OAAOiC;CACT;CACA,MAAMQ,aAAaC,UAAoBA,QAAQ,SAAS1C,KAAAA;CACxD,MAAM2C,uBAAuBjF,YAAYkF,eAAe;CACxD,MAAMC,sBAAgBC,gBACnBnI,mBAAmBoI,UAAQ;EAACL,OAAO,EAAErD,IAAIC,WAAW;EAAC,IAAAhC,WAAA;GAAA,OACnDqF,eAAe;EAAC;CAAA,CAAA;CAGrB,IAAIK,aAAa/D,eAAe;CAChC5F,mBAAmB;EACjB,MAAM4J,UAAUhE,eAAe;EAC/B,MAAMiE,UAAU,EAAE,mBAAmB3B,eAAe,KAAKnC,SAAS;EAElE,IAAI,CAAC4D,cAAcxH,UAAU,KAAKyH,SAChCvJ,SAASwJ,SAAS,WAAW;OACxB,IAAIF,cAAcxH,UAAU,KAAK,CAACyH,SACvCvJ,SAASwJ,SAAS,WAAW;EAG/BF,aAAaC;CACf,CAAC;CACD,MAAME,mBACH;EACC,GAAG1C,SAAS;EACZ,GAAG2B,2BAA2BnB,iBAAiB,CAAC;EAChD,GAAGkB,gBAAgB;EACnB,GAAGL,iBAAiB;EACpB,GAAGX,gBAAgB;EACnB,GAAGE,gBAAgB;EACnBQ,MAAMD,WAAW;EACjBvC,IAAID;EACJ7B,OAAOG,YAAYH,MAAM;EACzBC,OAAOE,YAAYF,MAAM;EACzBc,MAAMK,MAAML;EACZU,UAAUC,eAAe,KAAKtB,mBAAmB,IAAIqC,KAAAA,IAAYiB,iBAAiB,CAAC,CAACjC;EACpF,mBAAmBuC,eAAe;EAClC,iBAAiBtC,eAAe,IAC5B,SACCgC,iBAAiB,CAAC,CAAC,oBAAoBrC,UAAU;EACtD,gBAAgB6D,UAAU3C,WAAWvE,UAAU,KAAK,CAAC0D,eAAe,CAAC;EACrE,gBAAgBwD,UAAUnH,UAAU,CAAC;EACrC,gBAAgBmH,UAAUjH,UAAU,CAAC;EACrC,sBAAsBiH,UAAUhH,eAAe,CAAC;EAChD,iBAAiBgH,UAAU1D,gBAAgB,CAAC;EAC5C,gBAAgB0D,UAAUxD,eAAe,CAAC;CAC5C;CACF,MAAMmE,kBAAkBxH,0BAA0BuH,WAAWN,eAAepB,SAAS;CACrF,MAAM4B,qBAAqBlI,4BAA4BoF,YAAY;CAEnE,OAAO5B,MAAMlB,SACXkB,MAAMlB,OAAO2F,iBAAiBC,kBAAkB,WAAC;EAAA,IAAAC,OAAAC,eAAAC,MAAA;EAAAC,IAG1ChC,WAAS6B,IAAA;EAAAI,OAAAJ,MAAAK,WACVR,WAAS;GAAA,KAAA,WAAA;IAAA,OACNzF,YAAYH,MAAM;GAAC;GAAA,IAC1BC,QAAK;IAAA,OAAEE,YAAYF,MAAM;GAAC;EAAA,CAAA,GAAA,OAAA,IAAA;EAAAoG,OAAAN,MAUzBT,aAAa;EAAAgB,QAAAC,QAAA;GAAA,IAAAC,MATMZ,UAAU,CAAC,CAA6B,iBAAyBa,OACjEb,UAAU,CAAC,CAA6B,iBAAyBc,OACjEd,UAAU,CAAC,CAA6B,iBAAyBe,OAElFf,UAAU,CAAC,CAA6B,uBAA+BgB,OAErDhB,UAAU,CAAC,CAA6B,kBAA0BiB,OACnEjB,UAAU,CAAC,CAA6B;GAAyBY,QAAAD,IAAAjG,KAAAwG,aAAAf,MAAA,gBAAAQ,IAAAjG,IAAAkG,GAAA;GAAAC,SAAAF,IAAAQ,KAAAD,aAAAf,MAAA,gBAAAQ,IAAAQ,IAAAN,IAAA;GAAAC,SAAAH,IAAAS,KAAAF,aAAAf,MAAA,gBAAAQ,IAAAS,IAAAN,IAAA;GAAAC,SAAAJ,IAAAU,KAAAH,aAAAf,MAAA,sBAAAQ,IAAAU,IAAAN,IAAA;GAAAC,SAAAL,IAAAW,KAAAJ,aAAAf,MAAA,iBAAAQ,IAAAW,IAAAN,IAAA;GAAAC,SAAAN,IAAAY,KAAAL,aAAAf,MAAA,gBAAAQ,IAAAY,IAAAN,IAAA;GAAA,OAAAN;EAAA,GAAA;GAAAjG,GAAAmC,KAAAA;GAAAsE,GAAAtE,KAAAA;GAAAuE,GAAAvE,KAAAA;GAAAwE,GAAAxE,KAAAA;GAAAyE,GAAAzE,KAAAA;GAAA0E,GAAA1E,KAAAA;EAAA,CAAA;EAAA2E,mBAAA;EAAA,OAAArB;CAAA,EAAA,CAAA;AAK3F"}
|