@proyecto-viviana/solidaria-components 0.3.2 → 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 +4 -4
- 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 +6 -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 -23932
- package/dist/index.jsx +70 -18337
- 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 +22 -2
- 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 +50 -6
- package/src/DateField.tsx +20 -2
- package/src/DatePicker.tsx +57 -5
- 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 +252 -128
- package/src/Meter.tsx +3 -1
- package/src/Modal.tsx +100 -52
- package/src/NumberField.tsx +51 -8
- package/src/Popover.tsx +40 -10
- 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 +3 -1
- package/src/Text.tsx +31 -10
- package/src/TextField.tsx +43 -5
- 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 +3 -1
- 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":"Landmark.js","names":["JSX","createContext","createMemo","createSignal","splitProps","Dynamic","createLandmark","getLandmarkController","AriaLandmarkProps","AriaLandmarkRole","LandmarkController","SlotProps","filterDOMProps","LandmarkRenderProps","role","LandmarkProps","elementType","IntrinsicElements","class","renderProps","style","CSSProperties","children","Element","LandmarkContext","roleToSemanticElement","Partial","Record","main","navigation","search","banner","contentinfo","complementary","form","region","Landmark","props","local","ariaProps","ref","setRef","HTMLElement","landmarkAria","aria-label","aria-labelledby","id","focus","renderValues","resolvedClass","cls","resolvedStyle","domProps","global","_$createComponent","_$mergeProps","component","landmarkProps","slot","useLandmarkController"],"sources":["../src/Landmark.tsx"],"sourcesContent":["/**\n * Landmark component for solidaria-components\n *\n * Pre-wired headless landmark component that combines aria hooks.\n * Enables F6 keyboard navigation between major page sections.\n */\n\nimport { type JSX, createContext, createMemo, createSignal, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport {\n createLandmark,\n getLandmarkController,\n type AriaLandmarkProps,\n type AriaLandmarkRole,\n type LandmarkController,\n} from \"@proyecto-viviana/solidaria\";\nimport { type SlotProps, filterDOMProps } from \"./utils\";\n\nexport interface LandmarkRenderProps {\n /** The ARIA landmark role. */\n role: AriaLandmarkRole;\n}\n\nexport interface LandmarkProps extends AriaLandmarkProps, SlotProps {\n /**\n * The HTML element type to render.\n * @default 'div' (or semantic element based on role)\n */\n elementType?: keyof JSX.IntrinsicElements;\n /** The CSS className for the element. A function may be provided to receive render props. */\n class?: string | ((renderProps: LandmarkRenderProps) => string);\n /** The inline style for the element. A function may be provided to receive render props. */\n style?: JSX.CSSProperties | ((renderProps: LandmarkRenderProps) => JSX.CSSProperties);\n /** Children content. */\n children?: JSX.Element;\n}\n\nexport type { AriaLandmarkRole, LandmarkController };\n\nexport const LandmarkContext = createContext<LandmarkProps | null>(null);\n\n/**\n * Maps ARIA landmark roles to their semantic HTML elements.\n * Using semantic elements is preferred when possible.\n */\nconst roleToSemanticElement: Partial<Record<AriaLandmarkRole, keyof JSX.IntrinsicElements>> = {\n main: \"main\",\n navigation: \"nav\",\n search: \"search\", // HTML5.3 <search> element\n banner: \"header\",\n contentinfo: \"footer\",\n complementary: \"aside\",\n form: \"form\",\n region: \"section\",\n};\n\n/**\n * A landmark is a region of the page that helps screen reader users navigate.\n * Press F6 to cycle through landmarks, or Shift+F6 to go backwards.\n *\n * @example\n * ```tsx\n * // Main content area\n * <Landmark role=\"main\" aria-label=\"Main content\">\n * <h1>Welcome</h1>\n * <p>Page content here...</p>\n * </Landmark>\n *\n * // Navigation\n * <Landmark role=\"navigation\" aria-label=\"Primary navigation\">\n * <nav>...</nav>\n * </Landmark>\n *\n * // Search\n * <Landmark role=\"search\" aria-label=\"Site search\">\n * <form>...</form>\n * </Landmark>\n *\n * // Custom element type\n * <Landmark role=\"region\" aria-label=\"Featured content\" elementType=\"div\">\n * ...\n * </Landmark>\n * ```\n */\nexport function Landmark(props: LandmarkProps): JSX.Element {\n const [local, ariaProps] = splitProps(props, [\n \"class\",\n \"style\",\n \"slot\",\n \"children\",\n \"elementType\",\n ]);\n\n // Element ref\n const [ref, setRef] = createSignal<HTMLElement>();\n\n // Determine the element type - use semantic element for the role if not specified\n const elementType = createMemo(() => {\n if (local.elementType) {\n return local.elementType;\n }\n return roleToSemanticElement[ariaProps.role] ?? \"div\";\n });\n\n // Create landmark aria props\n const landmarkAria = createLandmark(\n {\n get role() {\n return ariaProps.role;\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get id() {\n return ariaProps.id;\n },\n get focus() {\n return ariaProps.focus;\n },\n },\n ref,\n );\n\n const renderValues = createMemo<LandmarkRenderProps>(() => ({\n role: ariaProps.role,\n }));\n\n const resolvedClass = createMemo(() => {\n const cls = local.class;\n if (typeof cls === \"function\") {\n return cls(renderValues());\n }\n return cls ?? `solidaria-Landmark solidaria-Landmark--${ariaProps.role}`;\n });\n\n const resolvedStyle = createMemo(() => {\n const style = local.style;\n if (typeof style === \"function\") {\n return style(renderValues());\n }\n return style;\n });\n\n const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));\n\n return (\n <Dynamic\n component={elementType()}\n ref={setRef}\n {...domProps()}\n {...landmarkAria.landmarkProps}\n class={resolvedClass()}\n style={resolvedStyle()}\n slot={local.slot}\n >\n {props.children}\n </Dynamic>\n );\n}\n\n/**\n * Returns a controller for programmatic landmark navigation.\n *\n * @example\n * ```tsx\n * const controller = useLandmarkController();\n *\n * <button onClick={() => controller.focusMain()}>Skip to main content</button>\n * <button onClick={() => controller.focusNext()}>Next landmark</button>\n * ```\n */\nexport function useLandmarkController(): LandmarkController {\n return getLandmarkController();\n}\n"],"mappings":";;;;;;;;;;;AAuCA,MAAawB,kBAAkBvB,cAAoC,IAAI;;;;;AAMvE,MAAMwB,wBAAwF;CAC5FG,MAAM;CACNC,YAAY;CACZC,QAAQ;CACRC,QAAQ;CACRC,aAAa;CACbC,eAAe;CACfC,MAAM;CACNC,QAAQ;AACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgBC,SAASC,OAAmC;CAC1D,MAAM,CAACC,OAAOC,aAAanC,WAAWiC,OAAO;EAC3C;EACA;EACA;EACA;EACA;CAAa,CACd;CAGD,MAAM,CAACG,KAAKC,UAAUtC,aAA0B;CAGhD,MAAMa,cAAcd,iBAAiB;EACnC,IAAIoC,MAAMtB,aACR,OAAOsB,MAAMtB;EAEf,OAAOS,sBAAsBc,UAAUzB,SAAS;CAClD,CAAC;CAGD,MAAM6B,eAAerC,eACnB;EACE,IAAIQ,OAAO;GACT,OAAOyB,UAAUzB;EACnB;EACA,IAAI,eAAe;GACjB,OAAOyB,UAAU;EACnB;EACA,IAAI,oBAAoB;GACtB,OAAOA,UAAU;EACnB;EACA,IAAIO,KAAK;GACP,OAAOP,UAAUO;EACnB;EACA,IAAIC,QAAQ;GACV,OAAOR,UAAUQ;EACnB;CACF,GACAP,GACF;CAEA,MAAMQ,eAAe9C,kBAAuC,EAC1DY,MAAMyB,UAAUzB,KAClB,EAAE;CAEF,MAAMmC,gBAAgB/C,iBAAiB;EACrC,MAAMgD,MAAMZ,MAAMpB;EAClB,IAAI,OAAOgC,QAAQ,YACjB,OAAOA,IAAIF,aAAa,CAAC;EAE3B,OAAOE,OAAO,0CAA0CX,UAAUzB;CACpE,CAAC;CAED,MAAMqC,gBAAgBjD,iBAAiB;EACrC,MAAMkB,QAAQkB,MAAMlB;EACpB,IAAI,OAAOA,UAAU,YACnB,OAAOA,MAAM4B,aAAa,CAAC;EAE7B,OAAO5B;CACT,CAAC;CAED,MAAMgC,WAAWlD,iBAAiBU,eAAe2B,WAAW,EAAEc,QAAQ,KAAK,CAAC,CAAC;CAE7E,OAAAC,gBACGjD,SAAOkD,WAAA;EAAA,IACNC,YAAS;GAAA,OAAExC,YAAY;EAAC;EAAAwB,KACnBC;CAAM,GACPW,gBACAT,aAAac,eAAa;EAAA,KAAA,WAAA;GAAA,OACvBR,cAAc;EAAC;EAAA,IACtB7B,QAAK;GAAA,OAAE+B,cAAc;EAAC;EAAA,IACtBO,OAAI;GAAA,OAAEpB,MAAMoB;EAAI;EAAA,IAAApC,WAAA;GAAA,OAEfe,MAAMf;EAAQ;CAAA,CAAA,CAAA;AAGrB;;;;;;;;;;;;AAaA,SAAgBqC,wBAA4C;CAC1D,OAAOpD,sBAAsB;AAC/B"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { filterDOMProps } from "./utils.jsx";
|
|
2
|
+
import { createContext, createMemo, createSignal, splitProps } from "solid-js";
|
|
3
|
+
import { Dynamic } from "solid-js/web";
|
|
4
|
+
import { createLandmark, getLandmarkController } from "@proyecto-viviana/solidaria";
|
|
5
|
+
//#region src/Landmark.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Landmark component for solidaria-components
|
|
8
|
+
*
|
|
9
|
+
* Pre-wired headless landmark component that combines aria hooks.
|
|
10
|
+
* Enables F6 keyboard navigation between major page sections.
|
|
11
|
+
*/
|
|
12
|
+
const LandmarkContext = createContext(null);
|
|
13
|
+
/**
|
|
14
|
+
* Maps ARIA landmark roles to their semantic HTML elements.
|
|
15
|
+
* Using semantic elements is preferred when possible.
|
|
16
|
+
*/
|
|
17
|
+
const roleToSemanticElement = {
|
|
18
|
+
main: "main",
|
|
19
|
+
navigation: "nav",
|
|
20
|
+
search: "search",
|
|
21
|
+
banner: "header",
|
|
22
|
+
contentinfo: "footer",
|
|
23
|
+
complementary: "aside",
|
|
24
|
+
form: "form",
|
|
25
|
+
region: "section"
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* A landmark is a region of the page that helps screen reader users navigate.
|
|
29
|
+
* Press F6 to cycle through landmarks, or Shift+F6 to go backwards.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* // Main content area
|
|
34
|
+
* <Landmark role="main" aria-label="Main content">
|
|
35
|
+
* <h1>Welcome</h1>
|
|
36
|
+
* <p>Page content here...</p>
|
|
37
|
+
* </Landmark>
|
|
38
|
+
*
|
|
39
|
+
* // Navigation
|
|
40
|
+
* <Landmark role="navigation" aria-label="Primary navigation">
|
|
41
|
+
* <nav>...</nav>
|
|
42
|
+
* </Landmark>
|
|
43
|
+
*
|
|
44
|
+
* // Search
|
|
45
|
+
* <Landmark role="search" aria-label="Site search">
|
|
46
|
+
* <form>...</form>
|
|
47
|
+
* </Landmark>
|
|
48
|
+
*
|
|
49
|
+
* // Custom element type
|
|
50
|
+
* <Landmark role="region" aria-label="Featured content" elementType="div">
|
|
51
|
+
* ...
|
|
52
|
+
* </Landmark>
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
function Landmark(props) {
|
|
56
|
+
const [local, ariaProps] = splitProps(props, [
|
|
57
|
+
"class",
|
|
58
|
+
"style",
|
|
59
|
+
"slot",
|
|
60
|
+
"children",
|
|
61
|
+
"elementType"
|
|
62
|
+
]);
|
|
63
|
+
const [ref, setRef] = createSignal();
|
|
64
|
+
const elementType = createMemo(() => {
|
|
65
|
+
if (local.elementType) return local.elementType;
|
|
66
|
+
return roleToSemanticElement[ariaProps.role] ?? "div";
|
|
67
|
+
});
|
|
68
|
+
const landmarkAria = createLandmark({
|
|
69
|
+
get role() {
|
|
70
|
+
return ariaProps.role;
|
|
71
|
+
},
|
|
72
|
+
get "aria-label"() {
|
|
73
|
+
return ariaProps["aria-label"];
|
|
74
|
+
},
|
|
75
|
+
get "aria-labelledby"() {
|
|
76
|
+
return ariaProps["aria-labelledby"];
|
|
77
|
+
},
|
|
78
|
+
get id() {
|
|
79
|
+
return ariaProps.id;
|
|
80
|
+
},
|
|
81
|
+
get focus() {
|
|
82
|
+
return ariaProps.focus;
|
|
83
|
+
}
|
|
84
|
+
}, ref);
|
|
85
|
+
const renderValues = createMemo(() => ({ role: ariaProps.role }));
|
|
86
|
+
const resolvedClass = createMemo(() => {
|
|
87
|
+
const cls = local.class;
|
|
88
|
+
if (typeof cls === "function") return cls(renderValues());
|
|
89
|
+
return cls ?? `solidaria-Landmark solidaria-Landmark--${ariaProps.role}`;
|
|
90
|
+
});
|
|
91
|
+
const resolvedStyle = createMemo(() => {
|
|
92
|
+
const style = local.style;
|
|
93
|
+
if (typeof style === "function") return style(renderValues());
|
|
94
|
+
return style;
|
|
95
|
+
});
|
|
96
|
+
const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));
|
|
97
|
+
return <Dynamic component={elementType()} ref={setRef} {...domProps()} {...landmarkAria.landmarkProps} class={resolvedClass()} style={resolvedStyle()} slot={local.slot}>
|
|
98
|
+
{props.children}
|
|
99
|
+
</Dynamic>;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Returns a controller for programmatic landmark navigation.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```tsx
|
|
106
|
+
* const controller = useLandmarkController();
|
|
107
|
+
*
|
|
108
|
+
* <button onClick={() => controller.focusMain()}>Skip to main content</button>
|
|
109
|
+
* <button onClick={() => controller.focusNext()}>Next landmark</button>
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
function useLandmarkController() {
|
|
113
|
+
return getLandmarkController();
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { Landmark, LandmarkContext, useLandmarkController };
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=Landmark.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Landmark.jsx","names":[],"sources":["../src/Landmark.tsx"],"sourcesContent":["/**\n * Landmark component for solidaria-components\n *\n * Pre-wired headless landmark component that combines aria hooks.\n * Enables F6 keyboard navigation between major page sections.\n */\n\nimport { type JSX, createContext, createMemo, createSignal, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport {\n createLandmark,\n getLandmarkController,\n type AriaLandmarkProps,\n type AriaLandmarkRole,\n type LandmarkController,\n} from \"@proyecto-viviana/solidaria\";\nimport { type SlotProps, filterDOMProps } from \"./utils\";\n\nexport interface LandmarkRenderProps {\n /** The ARIA landmark role. */\n role: AriaLandmarkRole;\n}\n\nexport interface LandmarkProps extends AriaLandmarkProps, SlotProps {\n /**\n * The HTML element type to render.\n * @default 'div' (or semantic element based on role)\n */\n elementType?: keyof JSX.IntrinsicElements;\n /** The CSS className for the element. A function may be provided to receive render props. */\n class?: string | ((renderProps: LandmarkRenderProps) => string);\n /** The inline style for the element. A function may be provided to receive render props. */\n style?: JSX.CSSProperties | ((renderProps: LandmarkRenderProps) => JSX.CSSProperties);\n /** Children content. */\n children?: JSX.Element;\n}\n\nexport type { AriaLandmarkRole, LandmarkController };\n\nexport const LandmarkContext = createContext<LandmarkProps | null>(null);\n\n/**\n * Maps ARIA landmark roles to their semantic HTML elements.\n * Using semantic elements is preferred when possible.\n */\nconst roleToSemanticElement: Partial<Record<AriaLandmarkRole, keyof JSX.IntrinsicElements>> = {\n main: \"main\",\n navigation: \"nav\",\n search: \"search\", // HTML5.3 <search> element\n banner: \"header\",\n contentinfo: \"footer\",\n complementary: \"aside\",\n form: \"form\",\n region: \"section\",\n};\n\n/**\n * A landmark is a region of the page that helps screen reader users navigate.\n * Press F6 to cycle through landmarks, or Shift+F6 to go backwards.\n *\n * @example\n * ```tsx\n * // Main content area\n * <Landmark role=\"main\" aria-label=\"Main content\">\n * <h1>Welcome</h1>\n * <p>Page content here...</p>\n * </Landmark>\n *\n * // Navigation\n * <Landmark role=\"navigation\" aria-label=\"Primary navigation\">\n * <nav>...</nav>\n * </Landmark>\n *\n * // Search\n * <Landmark role=\"search\" aria-label=\"Site search\">\n * <form>...</form>\n * </Landmark>\n *\n * // Custom element type\n * <Landmark role=\"region\" aria-label=\"Featured content\" elementType=\"div\">\n * ...\n * </Landmark>\n * ```\n */\nexport function Landmark(props: LandmarkProps): JSX.Element {\n const [local, ariaProps] = splitProps(props, [\n \"class\",\n \"style\",\n \"slot\",\n \"children\",\n \"elementType\",\n ]);\n\n // Element ref\n const [ref, setRef] = createSignal<HTMLElement>();\n\n // Determine the element type - use semantic element for the role if not specified\n const elementType = createMemo(() => {\n if (local.elementType) {\n return local.elementType;\n }\n return roleToSemanticElement[ariaProps.role] ?? \"div\";\n });\n\n // Create landmark aria props\n const landmarkAria = createLandmark(\n {\n get role() {\n return ariaProps.role;\n },\n get \"aria-label\"() {\n return ariaProps[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return ariaProps[\"aria-labelledby\"];\n },\n get id() {\n return ariaProps.id;\n },\n get focus() {\n return ariaProps.focus;\n },\n },\n ref,\n );\n\n const renderValues = createMemo<LandmarkRenderProps>(() => ({\n role: ariaProps.role,\n }));\n\n const resolvedClass = createMemo(() => {\n const cls = local.class;\n if (typeof cls === \"function\") {\n return cls(renderValues());\n }\n return cls ?? `solidaria-Landmark solidaria-Landmark--${ariaProps.role}`;\n });\n\n const resolvedStyle = createMemo(() => {\n const style = local.style;\n if (typeof style === \"function\") {\n return style(renderValues());\n }\n return style;\n });\n\n const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));\n\n return (\n <Dynamic\n component={elementType()}\n ref={setRef}\n {...domProps()}\n {...landmarkAria.landmarkProps}\n class={resolvedClass()}\n style={resolvedStyle()}\n slot={local.slot}\n >\n {props.children}\n </Dynamic>\n );\n}\n\n/**\n * Returns a controller for programmatic landmark navigation.\n *\n * @example\n * ```tsx\n * const controller = useLandmarkController();\n *\n * <button onClick={() => controller.focusMain()}>Skip to main content</button>\n * <button onClick={() => controller.focusNext()}>Next landmark</button>\n * ```\n */\nexport function useLandmarkController(): LandmarkController {\n return getLandmarkController();\n}\n"],"mappings":";;;;;;;;;;;AAuCA,MAAa,kBAAkB,cAAoC,IAAI;;;;;AAMvE,MAAM,wBAAwF;CAC5F,MAAM;CACN,YAAY;CACZ,QAAQ;CACR,QAAQ;CACR,aAAa;CACb,eAAe;CACf,MAAM;CACN,QAAQ;AACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgB,SAAS,OAAmC;CAC1D,MAAM,CAAC,OAAO,aAAa,WAAW,OAAO;EAC3C;EACA;EACA;EACA;EACA;CACF,CAAC;CAGD,MAAM,CAAC,KAAK,UAAU,aAA0B;CAGhD,MAAM,cAAc,iBAAiB;EACnC,IAAI,MAAM,aACR,OAAO,MAAM;EAEf,OAAO,sBAAsB,UAAU,SAAS;CAClD,CAAC;CAGD,MAAM,eAAe,eACnB;EACE,IAAI,OAAO;GACT,OAAO,UAAU;EACnB;EACA,IAAI,eAAe;GACjB,OAAO,UAAU;EACnB;EACA,IAAI,oBAAoB;GACtB,OAAO,UAAU;EACnB;EACA,IAAI,KAAK;GACP,OAAO,UAAU;EACnB;EACA,IAAI,QAAQ;GACV,OAAO,UAAU;EACnB;CACF,GACA,GACF;CAEA,MAAM,eAAe,kBAAuC,EAC1D,MAAM,UAAU,KAClB,EAAE;CAEF,MAAM,gBAAgB,iBAAiB;EACrC,MAAM,MAAM,MAAM;EAClB,IAAI,OAAO,QAAQ,YACjB,OAAO,IAAI,aAAa,CAAC;EAE3B,OAAO,OAAO,0CAA0C,UAAU;CACpE,CAAC;CAED,MAAM,gBAAgB,iBAAiB;EACrC,MAAM,QAAQ,MAAM;EACpB,IAAI,OAAO,UAAU,YACnB,OAAO,MAAM,aAAa,CAAC;EAE7B,OAAO;CACT,CAAC;CAED,MAAM,WAAW,iBAAiB,eAAe,WAAW,EAAE,QAAQ,KAAK,CAAC,CAAC;CAE7E,OACE,CAAC,QACC,WAAW,YAAY,GACvB,KAAK,YACD,SAAS,OACT,aAAa,eACjB,OAAO,cAAc,GACrB,OAAO,cAAc,GACrB,MAAM,MAAM,MACb;OACE,MAAM,SAAS;IAClB,EAAE;AAEN;;;;;;;;;;;;AAaA,SAAgB,wBAA4C;CAC1D,OAAO,sBAAsB;AAC/B"}
|
package/dist/Link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../src/Link.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,WAAW,EAAyC,MAAM,UAAU,CAAC;AAE7F,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,SAAS,EAGf,MAAM,SAAS,CAAC;AAGjB,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;AAWzE,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,cAAc,EAAE,OAAO,CAAC;IACxB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,WAAW,EAAE,SAAS;IAC3F,yFAAyF;IACzF,QAAQ,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAC3C,yCAAyC;IACzC,KAAK,CAAC,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAC7C,wCAAwC;IACxC,KAAK,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACzC,2CAA2C;IAC3C,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,8CAAwC,CAAC;AAEjE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../src/Link.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,WAAW,EAAyC,MAAM,UAAU,CAAC;AAE7F,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,SAAS,EAGf,MAAM,SAAS,CAAC;AAGjB,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;AAWzE,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,cAAc,EAAE,OAAO,CAAC;IACxB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,WAAW,EAAE,SAAS;IAC3F,yFAAyF;IACzF,QAAQ,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAC3C,yCAAyC;IACzC,KAAK,CAAC,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAC7C,wCAAwC;IACxC,KAAK,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACzC,2CAA2C;IAC3C,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,8CAAwC,CAAC;AAEjE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAsL/D"}
|
package/dist/Link.js
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { filterDOMProps, useRenderProps } from "./utils.js";
|
|
2
|
+
import { handleLinkClick, useRouter } from "./RouterProvider.js";
|
|
3
|
+
import { Dynamic, createComponent, mergeProps } from "solid-js/web";
|
|
4
|
+
import { createContext, createMemo, splitProps } from "solid-js";
|
|
5
|
+
import { createFocusRing, createHover, createLink } from "@proyecto-viviana/solidaria";
|
|
6
|
+
//#region src/Link.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Link component for solidaria-components
|
|
9
|
+
*
|
|
10
|
+
* Pre-wired headless link component that combines aria hooks.
|
|
11
|
+
* Port of react-aria-components/src/Link.tsx
|
|
12
|
+
*/
|
|
13
|
+
function assignRef(ref, el) {
|
|
14
|
+
if (!ref) return;
|
|
15
|
+
if (typeof ref === "function") ref(el);
|
|
16
|
+
else ref.current = el;
|
|
17
|
+
}
|
|
18
|
+
const LinkContext = createContext(null);
|
|
19
|
+
/**
|
|
20
|
+
* A link allows a user to navigate to another page or resource within a web page
|
|
21
|
+
* or application.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <Link href="https://example.com">Visit Example</Link>
|
|
26
|
+
*
|
|
27
|
+
* // With render props
|
|
28
|
+
* <Link href="/about">
|
|
29
|
+
* {({ isHovered, isFocusVisible }) => (
|
|
30
|
+
* <span class={isHovered ? 'underline' : ''}>
|
|
31
|
+
* About Us
|
|
32
|
+
* </span>
|
|
33
|
+
* )}
|
|
34
|
+
* </Link>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
function Link(props) {
|
|
38
|
+
const [local, ariaProps] = splitProps(props, [
|
|
39
|
+
"children",
|
|
40
|
+
"class",
|
|
41
|
+
"style",
|
|
42
|
+
"ref",
|
|
43
|
+
"slot",
|
|
44
|
+
"onHoverStart",
|
|
45
|
+
"onHoverEnd",
|
|
46
|
+
"onHoverChange"
|
|
47
|
+
]);
|
|
48
|
+
const router = useRouter();
|
|
49
|
+
const resolvedHref = createMemo(() => ariaProps.href ? router.useHref(ariaProps.href) : void 0);
|
|
50
|
+
const elementType = () => {
|
|
51
|
+
if (ariaProps.href && !ariaProps.isDisabled) return "a";
|
|
52
|
+
return "span";
|
|
53
|
+
};
|
|
54
|
+
const linkAria = createLink({
|
|
55
|
+
get elementType() {
|
|
56
|
+
return elementType();
|
|
57
|
+
},
|
|
58
|
+
get isDisabled() {
|
|
59
|
+
return ariaProps.isDisabled;
|
|
60
|
+
},
|
|
61
|
+
get href() {
|
|
62
|
+
return resolvedHref();
|
|
63
|
+
},
|
|
64
|
+
get hrefLang() {
|
|
65
|
+
return ariaProps.hrefLang;
|
|
66
|
+
},
|
|
67
|
+
get target() {
|
|
68
|
+
return ariaProps.target;
|
|
69
|
+
},
|
|
70
|
+
get rel() {
|
|
71
|
+
return ariaProps.rel;
|
|
72
|
+
},
|
|
73
|
+
get download() {
|
|
74
|
+
return ariaProps.download;
|
|
75
|
+
},
|
|
76
|
+
get ping() {
|
|
77
|
+
return ariaProps.ping;
|
|
78
|
+
},
|
|
79
|
+
get referrerPolicy() {
|
|
80
|
+
return ariaProps.referrerPolicy;
|
|
81
|
+
},
|
|
82
|
+
get onPress() {
|
|
83
|
+
return ariaProps.onPress;
|
|
84
|
+
},
|
|
85
|
+
get onPressStart() {
|
|
86
|
+
return ariaProps.onPressStart;
|
|
87
|
+
},
|
|
88
|
+
get onPressEnd() {
|
|
89
|
+
return ariaProps.onPressEnd;
|
|
90
|
+
},
|
|
91
|
+
get onPressUp() {
|
|
92
|
+
return ariaProps.onPressUp;
|
|
93
|
+
},
|
|
94
|
+
get onPressChange() {
|
|
95
|
+
return ariaProps.onPressChange;
|
|
96
|
+
},
|
|
97
|
+
get onClick() {
|
|
98
|
+
return ariaProps.onClick;
|
|
99
|
+
},
|
|
100
|
+
get onFocus() {
|
|
101
|
+
return ariaProps.onFocus;
|
|
102
|
+
},
|
|
103
|
+
get onBlur() {
|
|
104
|
+
return ariaProps.onBlur;
|
|
105
|
+
},
|
|
106
|
+
get onFocusChange() {
|
|
107
|
+
return ariaProps.onFocusChange;
|
|
108
|
+
},
|
|
109
|
+
get onKeyDown() {
|
|
110
|
+
return ariaProps.onKeyDown;
|
|
111
|
+
},
|
|
112
|
+
get onKeyUp() {
|
|
113
|
+
return ariaProps.onKeyUp;
|
|
114
|
+
},
|
|
115
|
+
get autoFocus() {
|
|
116
|
+
return ariaProps.autoFocus;
|
|
117
|
+
},
|
|
118
|
+
get "aria-current"() {
|
|
119
|
+
return ariaProps["aria-current"];
|
|
120
|
+
},
|
|
121
|
+
get "aria-label"() {
|
|
122
|
+
return ariaProps["aria-label"];
|
|
123
|
+
},
|
|
124
|
+
get "aria-labelledby"() {
|
|
125
|
+
return ariaProps["aria-labelledby"];
|
|
126
|
+
},
|
|
127
|
+
get "aria-describedby"() {
|
|
128
|
+
return ariaProps["aria-describedby"];
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
132
|
+
const { isHovered, hoverProps } = createHover({
|
|
133
|
+
get isDisabled() {
|
|
134
|
+
return ariaProps.isDisabled ?? false;
|
|
135
|
+
},
|
|
136
|
+
get onHoverStart() {
|
|
137
|
+
return local.onHoverStart;
|
|
138
|
+
},
|
|
139
|
+
get onHoverEnd() {
|
|
140
|
+
return local.onHoverEnd;
|
|
141
|
+
},
|
|
142
|
+
get onHoverChange() {
|
|
143
|
+
return local.onHoverChange;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
const renderValues = createMemo(() => ({
|
|
147
|
+
isCurrent: !!ariaProps["aria-current"],
|
|
148
|
+
isHovered: isHovered(),
|
|
149
|
+
isPressed: linkAria.isPressed(),
|
|
150
|
+
isFocused: isFocused(),
|
|
151
|
+
isFocusVisible: isFocusVisible(),
|
|
152
|
+
isDisabled: ariaProps.isDisabled ?? false
|
|
153
|
+
}));
|
|
154
|
+
const renderProps = useRenderProps({
|
|
155
|
+
get children() {
|
|
156
|
+
return props.children;
|
|
157
|
+
},
|
|
158
|
+
class: local.class,
|
|
159
|
+
style: local.style,
|
|
160
|
+
defaultClassName: "solidaria-Link"
|
|
161
|
+
}, renderValues);
|
|
162
|
+
const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));
|
|
163
|
+
const cleanLinkProps = () => {
|
|
164
|
+
const { ref: _ref1, ...rest } = linkAria.linkProps;
|
|
165
|
+
return rest;
|
|
166
|
+
};
|
|
167
|
+
const cleanHoverProps = () => {
|
|
168
|
+
const { ref: _ref2, ...rest } = hoverProps;
|
|
169
|
+
return rest;
|
|
170
|
+
};
|
|
171
|
+
const cleanFocusProps = () => {
|
|
172
|
+
const { ref: _ref3, ...rest } = focusProps;
|
|
173
|
+
return rest;
|
|
174
|
+
};
|
|
175
|
+
const onLinkClick = (event) => {
|
|
176
|
+
const onClick = cleanLinkProps().onClick;
|
|
177
|
+
onClick?.(event);
|
|
178
|
+
handleLinkClick(event, router, ariaProps.href, ariaProps.routerOptions);
|
|
179
|
+
};
|
|
180
|
+
return createComponent(Dynamic, mergeProps({ get component() {
|
|
181
|
+
return elementType();
|
|
182
|
+
} }, domProps, cleanLinkProps, cleanHoverProps, cleanFocusProps, {
|
|
183
|
+
ref: (element) => {
|
|
184
|
+
assignRef(local.ref, element);
|
|
185
|
+
},
|
|
186
|
+
onClick: onLinkClick,
|
|
187
|
+
get ["class"]() {
|
|
188
|
+
return renderProps.class();
|
|
189
|
+
},
|
|
190
|
+
get style() {
|
|
191
|
+
return renderProps.style();
|
|
192
|
+
},
|
|
193
|
+
get ["data-hovered"]() {
|
|
194
|
+
return isHovered() || void 0;
|
|
195
|
+
},
|
|
196
|
+
get ["data-pressed"]() {
|
|
197
|
+
return linkAria.isPressed() || void 0;
|
|
198
|
+
},
|
|
199
|
+
get ["data-focused"]() {
|
|
200
|
+
return isFocused() || void 0;
|
|
201
|
+
},
|
|
202
|
+
get ["data-focus-visible"]() {
|
|
203
|
+
return isFocusVisible() || void 0;
|
|
204
|
+
},
|
|
205
|
+
get ["data-current"]() {
|
|
206
|
+
return !!ariaProps["aria-current"] || void 0;
|
|
207
|
+
},
|
|
208
|
+
get ["data-disabled"]() {
|
|
209
|
+
return ariaProps.isDisabled || void 0;
|
|
210
|
+
},
|
|
211
|
+
get children() {
|
|
212
|
+
return renderProps.renderChildren();
|
|
213
|
+
}
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
//#endregion
|
|
217
|
+
export { Link, LinkContext };
|
|
218
|
+
|
|
219
|
+
//# sourceMappingURL=Link.js.map
|
package/dist/Link.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.js","names":["JSX","ParentProps","createContext","createMemo","splitProps","Dynamic","createLink","createFocusRing","createHover","AriaLinkProps","HoverEvents","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","filterDOMProps","handleLinkClick","useRouter","RefLike","el","T","current","assignRef","ref","LinkRenderProps","isCurrent","isHovered","isPressed","isFocused","isFocusVisible","isDisabled","LinkProps","Omit","children","class","style","HTMLElement","LinkContext","Link","props","Element","local","ariaProps","router","resolvedHref","href","useHref","undefined","elementType","linkAria","hrefLang","target","rel","download","ping","referrerPolicy","onPress","onPressStart","onPressEnd","onPressUp","onPressChange","onClick","onFocus","onBlur","onFocusChange","onKeyDown","onKeyUp","autoFocus","aria-current","aria-label","aria-labelledby","aria-describedby","focusProps","hoverProps","onHoverStart","onHoverEnd","onHoverChange","renderValues","renderProps","defaultClassName","domProps","global","cleanLinkProps","_ref1","rest","linkProps","Record","cleanHoverProps","_ref2","cleanFocusProps","_ref3","onLinkClick","event","MouseEvent","routerOptions","_$createComponent","_$mergeProps","component","element","data-hovered","data-pressed","data-focused","data-focus-visible","data-current","data-disabled","renderChildren"],"sources":["../src/Link.tsx"],"sourcesContent":["/**\n * Link component for solidaria-components\n *\n * Pre-wired headless link component that combines aria hooks.\n * Port of react-aria-components/src/Link.tsx\n */\n\nimport { type JSX, type ParentProps, createContext, createMemo, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport {\n createLink,\n createFocusRing,\n createHover,\n type AriaLinkProps,\n type HoverEvents,\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 { handleLinkClick, useRouter } from \"./RouterProvider\";\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\nexport interface LinkRenderProps {\n /** Whether the link is the current item within a list. */\n isCurrent: boolean;\n /** Whether the link is currently hovered with a mouse. */\n isHovered: boolean;\n /** Whether the link is currently in a pressed state. */\n isPressed: boolean;\n /** Whether the link is focused, either via a mouse or keyboard. */\n isFocused: boolean;\n /** Whether the link is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the link is disabled. */\n isDisabled: boolean;\n}\n\nexport interface LinkProps extends Omit<AriaLinkProps, \"elementType\">, HoverEvents, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<LinkRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<LinkRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<LinkRenderProps>;\n /** Ref for the underlying link element. */\n ref?: RefLike<HTMLElement>;\n}\n\nexport const LinkContext = createContext<LinkProps | null>(null);\n\n/**\n * A link allows a user to navigate to another page or resource within a web page\n * or application.\n *\n * @example\n * ```tsx\n * <Link href=\"https://example.com\">Visit Example</Link>\n *\n * // With render props\n * <Link href=\"/about\">\n * {({ isHovered, isFocusVisible }) => (\n * <span class={isHovered ? 'underline' : ''}>\n * About Us\n * </span>\n * )}\n * </Link>\n * ```\n */\nexport function Link(props: ParentProps<LinkProps>): JSX.Element {\n const [local, ariaProps] = splitProps(props, [\n \"children\",\n \"class\",\n \"style\",\n \"ref\",\n \"slot\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onHoverChange\",\n ]);\n const router = useRouter();\n const resolvedHref = createMemo(() =>\n ariaProps.href ? router.useHref(ariaProps.href) : undefined,\n );\n\n const elementType = () => {\n if (ariaProps.href && !ariaProps.isDisabled) {\n return \"a\";\n }\n return \"span\";\n };\n\n const linkAria = createLink({\n get elementType() {\n return elementType();\n },\n get isDisabled() {\n return ariaProps.isDisabled;\n },\n get href() {\n return resolvedHref();\n },\n get hrefLang() {\n return ariaProps.hrefLang;\n },\n get target() {\n return ariaProps.target;\n },\n get rel() {\n return ariaProps.rel;\n },\n get download() {\n return ariaProps.download;\n },\n get ping() {\n return ariaProps.ping;\n },\n get referrerPolicy() {\n return ariaProps.referrerPolicy;\n },\n get onPress() {\n return ariaProps.onPress;\n },\n get onPressStart() {\n return ariaProps.onPressStart;\n },\n get onPressEnd() {\n return ariaProps.onPressEnd;\n },\n get onPressUp() {\n return ariaProps.onPressUp;\n },\n get onPressChange() {\n return ariaProps.onPressChange;\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-current\"() {\n return ariaProps[\"aria-current\"];\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 });\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return ariaProps.isDisabled ?? false;\n },\n get onHoverStart() {\n return local.onHoverStart;\n },\n get onHoverEnd() {\n return local.onHoverEnd;\n },\n get onHoverChange() {\n return local.onHoverChange;\n },\n });\n\n const renderValues = createMemo<LinkRenderProps>(() => ({\n isCurrent: !!ariaProps[\"aria-current\"],\n isHovered: isHovered(),\n isPressed: linkAria.isPressed(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: ariaProps.isDisabled ?? false,\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-Link\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));\n\n const cleanLinkProps = () => {\n const { ref: _ref1, ...rest } = linkAria.linkProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref2, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref3, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const onLinkClick = (event: MouseEvent) => {\n const onClick = cleanLinkProps().onClick as ((event: MouseEvent) => void) | undefined;\n onClick?.(event);\n handleLinkClick(event, router, ariaProps.href, ariaProps.routerOptions);\n };\n\n return (\n <Dynamic\n component={elementType()}\n {...domProps()}\n {...cleanLinkProps()}\n {...cleanHoverProps()}\n {...cleanFocusProps()}\n ref={(element: HTMLElement) => {\n assignRef(local.ref, element);\n }}\n onClick={onLinkClick}\n class={renderProps.class()}\n style={renderProps.style()}\n data-hovered={isHovered() || undefined}\n data-pressed={linkAria.isPressed() || undefined}\n data-focused={isFocused() || undefined}\n data-focus-visible={isFocusVisible() || undefined}\n data-current={!!ariaProps[\"aria-current\"] || undefined}\n data-disabled={ariaProps.isDisabled || undefined}\n >\n {renderProps.renderChildren()}\n </Dynamic>\n );\n}\n"],"mappings":"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"}
|
package/dist/Link.jsx
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { filterDOMProps, useRenderProps } from "./utils.jsx";
|
|
2
|
+
import { handleLinkClick, useRouter } from "./RouterProvider.jsx";
|
|
3
|
+
import { createContext, createMemo, splitProps } from "solid-js";
|
|
4
|
+
import { Dynamic } from "solid-js/web";
|
|
5
|
+
import { createFocusRing, createHover, createLink } from "@proyecto-viviana/solidaria";
|
|
6
|
+
//#region src/Link.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Link component for solidaria-components
|
|
9
|
+
*
|
|
10
|
+
* Pre-wired headless link component that combines aria hooks.
|
|
11
|
+
* Port of react-aria-components/src/Link.tsx
|
|
12
|
+
*/
|
|
13
|
+
function assignRef(ref, el) {
|
|
14
|
+
if (!ref) return;
|
|
15
|
+
if (typeof ref === "function") ref(el);
|
|
16
|
+
else ref.current = el;
|
|
17
|
+
}
|
|
18
|
+
const LinkContext = createContext(null);
|
|
19
|
+
/**
|
|
20
|
+
* A link allows a user to navigate to another page or resource within a web page
|
|
21
|
+
* or application.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <Link href="https://example.com">Visit Example</Link>
|
|
26
|
+
*
|
|
27
|
+
* // With render props
|
|
28
|
+
* <Link href="/about">
|
|
29
|
+
* {({ isHovered, isFocusVisible }) => (
|
|
30
|
+
* <span class={isHovered ? 'underline' : ''}>
|
|
31
|
+
* About Us
|
|
32
|
+
* </span>
|
|
33
|
+
* )}
|
|
34
|
+
* </Link>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
function Link(props) {
|
|
38
|
+
const [local, ariaProps] = splitProps(props, [
|
|
39
|
+
"children",
|
|
40
|
+
"class",
|
|
41
|
+
"style",
|
|
42
|
+
"ref",
|
|
43
|
+
"slot",
|
|
44
|
+
"onHoverStart",
|
|
45
|
+
"onHoverEnd",
|
|
46
|
+
"onHoverChange"
|
|
47
|
+
]);
|
|
48
|
+
const router = useRouter();
|
|
49
|
+
const resolvedHref = createMemo(() => ariaProps.href ? router.useHref(ariaProps.href) : void 0);
|
|
50
|
+
const elementType = () => {
|
|
51
|
+
if (ariaProps.href && !ariaProps.isDisabled) return "a";
|
|
52
|
+
return "span";
|
|
53
|
+
};
|
|
54
|
+
const linkAria = createLink({
|
|
55
|
+
get elementType() {
|
|
56
|
+
return elementType();
|
|
57
|
+
},
|
|
58
|
+
get isDisabled() {
|
|
59
|
+
return ariaProps.isDisabled;
|
|
60
|
+
},
|
|
61
|
+
get href() {
|
|
62
|
+
return resolvedHref();
|
|
63
|
+
},
|
|
64
|
+
get hrefLang() {
|
|
65
|
+
return ariaProps.hrefLang;
|
|
66
|
+
},
|
|
67
|
+
get target() {
|
|
68
|
+
return ariaProps.target;
|
|
69
|
+
},
|
|
70
|
+
get rel() {
|
|
71
|
+
return ariaProps.rel;
|
|
72
|
+
},
|
|
73
|
+
get download() {
|
|
74
|
+
return ariaProps.download;
|
|
75
|
+
},
|
|
76
|
+
get ping() {
|
|
77
|
+
return ariaProps.ping;
|
|
78
|
+
},
|
|
79
|
+
get referrerPolicy() {
|
|
80
|
+
return ariaProps.referrerPolicy;
|
|
81
|
+
},
|
|
82
|
+
get onPress() {
|
|
83
|
+
return ariaProps.onPress;
|
|
84
|
+
},
|
|
85
|
+
get onPressStart() {
|
|
86
|
+
return ariaProps.onPressStart;
|
|
87
|
+
},
|
|
88
|
+
get onPressEnd() {
|
|
89
|
+
return ariaProps.onPressEnd;
|
|
90
|
+
},
|
|
91
|
+
get onPressUp() {
|
|
92
|
+
return ariaProps.onPressUp;
|
|
93
|
+
},
|
|
94
|
+
get onPressChange() {
|
|
95
|
+
return ariaProps.onPressChange;
|
|
96
|
+
},
|
|
97
|
+
get onClick() {
|
|
98
|
+
return ariaProps.onClick;
|
|
99
|
+
},
|
|
100
|
+
get onFocus() {
|
|
101
|
+
return ariaProps.onFocus;
|
|
102
|
+
},
|
|
103
|
+
get onBlur() {
|
|
104
|
+
return ariaProps.onBlur;
|
|
105
|
+
},
|
|
106
|
+
get onFocusChange() {
|
|
107
|
+
return ariaProps.onFocusChange;
|
|
108
|
+
},
|
|
109
|
+
get onKeyDown() {
|
|
110
|
+
return ariaProps.onKeyDown;
|
|
111
|
+
},
|
|
112
|
+
get onKeyUp() {
|
|
113
|
+
return ariaProps.onKeyUp;
|
|
114
|
+
},
|
|
115
|
+
get autoFocus() {
|
|
116
|
+
return ariaProps.autoFocus;
|
|
117
|
+
},
|
|
118
|
+
get "aria-current"() {
|
|
119
|
+
return ariaProps["aria-current"];
|
|
120
|
+
},
|
|
121
|
+
get "aria-label"() {
|
|
122
|
+
return ariaProps["aria-label"];
|
|
123
|
+
},
|
|
124
|
+
get "aria-labelledby"() {
|
|
125
|
+
return ariaProps["aria-labelledby"];
|
|
126
|
+
},
|
|
127
|
+
get "aria-describedby"() {
|
|
128
|
+
return ariaProps["aria-describedby"];
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
132
|
+
const { isHovered, hoverProps } = createHover({
|
|
133
|
+
get isDisabled() {
|
|
134
|
+
return ariaProps.isDisabled ?? false;
|
|
135
|
+
},
|
|
136
|
+
get onHoverStart() {
|
|
137
|
+
return local.onHoverStart;
|
|
138
|
+
},
|
|
139
|
+
get onHoverEnd() {
|
|
140
|
+
return local.onHoverEnd;
|
|
141
|
+
},
|
|
142
|
+
get onHoverChange() {
|
|
143
|
+
return local.onHoverChange;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
const renderValues = createMemo(() => ({
|
|
147
|
+
isCurrent: !!ariaProps["aria-current"],
|
|
148
|
+
isHovered: isHovered(),
|
|
149
|
+
isPressed: linkAria.isPressed(),
|
|
150
|
+
isFocused: isFocused(),
|
|
151
|
+
isFocusVisible: isFocusVisible(),
|
|
152
|
+
isDisabled: ariaProps.isDisabled ?? false
|
|
153
|
+
}));
|
|
154
|
+
const renderProps = useRenderProps({
|
|
155
|
+
get children() {
|
|
156
|
+
return props.children;
|
|
157
|
+
},
|
|
158
|
+
class: local.class,
|
|
159
|
+
style: local.style,
|
|
160
|
+
defaultClassName: "solidaria-Link"
|
|
161
|
+
}, renderValues);
|
|
162
|
+
const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));
|
|
163
|
+
const cleanLinkProps = () => {
|
|
164
|
+
const { ref: _ref1, ...rest } = linkAria.linkProps;
|
|
165
|
+
return rest;
|
|
166
|
+
};
|
|
167
|
+
const cleanHoverProps = () => {
|
|
168
|
+
const { ref: _ref2, ...rest } = hoverProps;
|
|
169
|
+
return rest;
|
|
170
|
+
};
|
|
171
|
+
const cleanFocusProps = () => {
|
|
172
|
+
const { ref: _ref3, ...rest } = focusProps;
|
|
173
|
+
return rest;
|
|
174
|
+
};
|
|
175
|
+
const onLinkClick = (event) => {
|
|
176
|
+
const onClick = cleanLinkProps().onClick;
|
|
177
|
+
onClick?.(event);
|
|
178
|
+
handleLinkClick(event, router, ariaProps.href, ariaProps.routerOptions);
|
|
179
|
+
};
|
|
180
|
+
return <Dynamic component={elementType()} {...domProps()} {...cleanLinkProps()} {...cleanHoverProps()} {...cleanFocusProps()} ref={(element) => {
|
|
181
|
+
assignRef(local.ref, element);
|
|
182
|
+
}} onClick={onLinkClick} class={renderProps.class()} style={renderProps.style()} data-hovered={isHovered() || void 0} data-pressed={linkAria.isPressed() || void 0} data-focused={isFocused() || void 0} data-focus-visible={isFocusVisible() || void 0} data-current={!!ariaProps["aria-current"] || void 0} data-disabled={ariaProps.isDisabled || void 0}>
|
|
183
|
+
{renderProps.renderChildren()}
|
|
184
|
+
</Dynamic>;
|
|
185
|
+
}
|
|
186
|
+
//#endregion
|
|
187
|
+
export { Link, LinkContext };
|
|
188
|
+
|
|
189
|
+
//# sourceMappingURL=Link.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.jsx","names":[],"sources":["../src/Link.tsx"],"sourcesContent":["/**\n * Link component for solidaria-components\n *\n * Pre-wired headless link component that combines aria hooks.\n * Port of react-aria-components/src/Link.tsx\n */\n\nimport { type JSX, type ParentProps, createContext, createMemo, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport {\n createLink,\n createFocusRing,\n createHover,\n type AriaLinkProps,\n type HoverEvents,\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 { handleLinkClick, useRouter } from \"./RouterProvider\";\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\nexport interface LinkRenderProps {\n /** Whether the link is the current item within a list. */\n isCurrent: boolean;\n /** Whether the link is currently hovered with a mouse. */\n isHovered: boolean;\n /** Whether the link is currently in a pressed state. */\n isPressed: boolean;\n /** Whether the link is focused, either via a mouse or keyboard. */\n isFocused: boolean;\n /** Whether the link is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the link is disabled. */\n isDisabled: boolean;\n}\n\nexport interface LinkProps extends Omit<AriaLinkProps, \"elementType\">, HoverEvents, SlotProps {\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<LinkRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<LinkRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<LinkRenderProps>;\n /** Ref for the underlying link element. */\n ref?: RefLike<HTMLElement>;\n}\n\nexport const LinkContext = createContext<LinkProps | null>(null);\n\n/**\n * A link allows a user to navigate to another page or resource within a web page\n * or application.\n *\n * @example\n * ```tsx\n * <Link href=\"https://example.com\">Visit Example</Link>\n *\n * // With render props\n * <Link href=\"/about\">\n * {({ isHovered, isFocusVisible }) => (\n * <span class={isHovered ? 'underline' : ''}>\n * About Us\n * </span>\n * )}\n * </Link>\n * ```\n */\nexport function Link(props: ParentProps<LinkProps>): JSX.Element {\n const [local, ariaProps] = splitProps(props, [\n \"children\",\n \"class\",\n \"style\",\n \"ref\",\n \"slot\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onHoverChange\",\n ]);\n const router = useRouter();\n const resolvedHref = createMemo(() =>\n ariaProps.href ? router.useHref(ariaProps.href) : undefined,\n );\n\n const elementType = () => {\n if (ariaProps.href && !ariaProps.isDisabled) {\n return \"a\";\n }\n return \"span\";\n };\n\n const linkAria = createLink({\n get elementType() {\n return elementType();\n },\n get isDisabled() {\n return ariaProps.isDisabled;\n },\n get href() {\n return resolvedHref();\n },\n get hrefLang() {\n return ariaProps.hrefLang;\n },\n get target() {\n return ariaProps.target;\n },\n get rel() {\n return ariaProps.rel;\n },\n get download() {\n return ariaProps.download;\n },\n get ping() {\n return ariaProps.ping;\n },\n get referrerPolicy() {\n return ariaProps.referrerPolicy;\n },\n get onPress() {\n return ariaProps.onPress;\n },\n get onPressStart() {\n return ariaProps.onPressStart;\n },\n get onPressEnd() {\n return ariaProps.onPressEnd;\n },\n get onPressUp() {\n return ariaProps.onPressUp;\n },\n get onPressChange() {\n return ariaProps.onPressChange;\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-current\"() {\n return ariaProps[\"aria-current\"];\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 });\n\n const { isFocused, isFocusVisible, focusProps } = createFocusRing();\n\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return ariaProps.isDisabled ?? false;\n },\n get onHoverStart() {\n return local.onHoverStart;\n },\n get onHoverEnd() {\n return local.onHoverEnd;\n },\n get onHoverChange() {\n return local.onHoverChange;\n },\n });\n\n const renderValues = createMemo<LinkRenderProps>(() => ({\n isCurrent: !!ariaProps[\"aria-current\"],\n isHovered: isHovered(),\n isPressed: linkAria.isPressed(),\n isFocused: isFocused(),\n isFocusVisible: isFocusVisible(),\n isDisabled: ariaProps.isDisabled ?? false,\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-Link\",\n },\n renderValues,\n );\n\n const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));\n\n const cleanLinkProps = () => {\n const { ref: _ref1, ...rest } = linkAria.linkProps as Record<string, unknown>;\n return rest;\n };\n const cleanHoverProps = () => {\n const { ref: _ref2, ...rest } = hoverProps as Record<string, unknown>;\n return rest;\n };\n const cleanFocusProps = () => {\n const { ref: _ref3, ...rest } = focusProps as Record<string, unknown>;\n return rest;\n };\n const onLinkClick = (event: MouseEvent) => {\n const onClick = cleanLinkProps().onClick as ((event: MouseEvent) => void) | undefined;\n onClick?.(event);\n handleLinkClick(event, router, ariaProps.href, ariaProps.routerOptions);\n };\n\n return (\n <Dynamic\n component={elementType()}\n {...domProps()}\n {...cleanLinkProps()}\n {...cleanHoverProps()}\n {...cleanFocusProps()}\n ref={(element: HTMLElement) => {\n assignRef(local.ref, element);\n }}\n onClick={onLinkClick}\n class={renderProps.class()}\n style={renderProps.style()}\n data-hovered={isHovered() || undefined}\n data-pressed={linkAria.isPressed() || undefined}\n data-focused={isFocused() || undefined}\n data-focus-visible={isFocusVisible() || undefined}\n data-current={!!ariaProps[\"aria-current\"] || undefined}\n data-disabled={ariaProps.isDisabled || undefined}\n >\n {renderProps.renderChildren()}\n </Dynamic>\n );\n}\n"],"mappings":"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"}
|
package/dist/ListBox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListBox.d.ts","sourceRoot":"","sources":["../src/ListBox.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,GAAG,EAUT,MAAM,UAAU,CAAC;AAClB,OAAO,
|
|
1
|
+
{"version":3,"file":"ListBox.d.ts","sourceRoot":"","sources":["../src/ListBox.tsx"],"names":[],"mappings":"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"}
|