@krelborn/stylesui 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/accessibility/idSegment.js +1 -2
- package/dist/collections/index.d.ts +3 -0
- package/dist/collections/optionId.js +6 -0
- package/dist/{components/Listbox → collections}/renderedOptions.d.ts +7 -0
- package/dist/{components/Listbox → collections}/renderedOptions.js +6 -4
- package/dist/collections/targetIndexForKey.js +1 -2
- package/dist/collections/typeAhead.js +0 -1
- package/dist/components/Accordion/Accordion.css +1 -0
- package/dist/components/Accordion/Accordion.d.ts +90 -0
- package/dist/components/Accordion/Accordion.js +47 -0
- package/dist/components/Accordion/Accordion.module.js +19 -0
- package/dist/components/Accordion/AccordionContext.d.ts +40 -0
- package/dist/components/Accordion/AccordionContext.js +4 -0
- package/dist/components/Accordion/AccordionItem.d.ts +51 -0
- package/dist/components/Accordion/AccordionItem.js +69 -0
- package/dist/components/Accordion/AccordionToggleContent.d.ts +30 -0
- package/dist/components/Accordion/AccordionToggleContent.js +44 -0
- package/dist/components/Accordion/accordionIds.d.ts +24 -0
- package/dist/components/Accordion/accordionIds.js +12 -0
- package/dist/components/Accordion/index.d.ts +4 -0
- package/dist/components/Accordion/useAccordionContext.d.ts +9 -0
- package/dist/components/Accordion/useAccordionContext.js +10 -0
- package/dist/components/Accordion/useFindablePanel.d.ts +25 -0
- package/dist/components/Accordion/useFindablePanel.js +36 -0
- package/dist/components/Accordion/useFragmentTargetReveal.d.ts +27 -0
- package/dist/components/Accordion/useFragmentTargetReveal.js +36 -0
- package/dist/components/Accordion/useHasOpened.d.ts +7 -0
- package/dist/components/Accordion/useHasOpened.js +7 -0
- package/dist/components/Alert/Alert.js +1 -2
- package/dist/components/Alert/Alert.module.js +1 -2
- package/dist/components/Alert/AlertIcon.js +1 -2
- package/dist/components/Avatar/Avatar.js +1 -2
- package/dist/components/Avatar/Avatar.module.js +1 -2
- package/dist/components/Avatar/initialsOf.js +1 -2
- package/dist/components/AvatarGroup/AvatarGroup.js +1 -2
- package/dist/components/AvatarGroup/AvatarGroup.module.js +1 -2
- package/dist/components/Badge/Badge.js +1 -2
- package/dist/components/Badge/Badge.module.js +1 -2
- package/dist/components/Box/Box.js +1 -2
- package/dist/components/Box/Box.module.js +1 -2
- package/dist/components/Button/Button.js +2 -7
- package/dist/components/Button/Button.module.js +1 -2
- package/dist/components/Card/Card.js +1 -2
- package/dist/components/Card/Card.module.js +1 -2
- package/dist/components/Center/Center.js +6 -7
- package/dist/components/Center/Center.module.js +1 -2
- package/dist/components/Checkbox/Checkbox.js +1 -2
- package/dist/components/ChoiceControl/ChoiceControl.js +1 -2
- package/dist/components/ChoiceControl/ChoiceControl.module.js +1 -2
- package/dist/components/Cluster/Cluster.js +1 -2
- package/dist/components/Code/Code.js +1 -2
- package/dist/components/Code/Code.module.js +1 -2
- package/dist/components/Combobox/Autocomplete.d.ts +83 -0
- package/dist/components/Combobox/Autocomplete.js +102 -0
- package/dist/components/Combobox/Combobox.css +1 -0
- package/dist/components/Combobox/Combobox.d.ts +59 -0
- package/dist/components/Combobox/Combobox.js +82 -0
- package/dist/components/Combobox/Combobox.module.js +17 -0
- package/dist/components/Combobox/ComboboxContext.d.ts +88 -0
- package/dist/components/Combobox/ComboboxContext.js +4 -0
- package/dist/components/Combobox/ComboboxFieldValue.d.ts +17 -0
- package/dist/components/Combobox/ComboboxFieldValue.js +33 -0
- package/dist/components/Combobox/ComboboxOption.d.ts +51 -0
- package/dist/components/Combobox/ComboboxOption.js +74 -0
- package/dist/components/Combobox/ComboboxOptionContent.d.ts +32 -0
- package/dist/components/Combobox/ComboboxOptionContent.js +51 -0
- package/dist/components/Combobox/ComboboxPopup.d.ts +50 -0
- package/dist/components/Combobox/ComboboxPopup.js +59 -0
- package/dist/components/Combobox/autocompleteKeys.d.ts +31 -0
- package/dist/components/Combobox/autocompleteKeys.js +25 -0
- package/dist/components/Combobox/comboboxKeys.d.ts +10 -0
- package/dist/components/Combobox/comboboxKeys.js +22 -0
- package/dist/components/Combobox/containsText.d.ts +9 -0
- package/dist/components/Combobox/containsText.js +8 -0
- package/dist/components/Combobox/index.d.ts +6 -0
- package/dist/components/Combobox/isAltArrow.d.ts +9 -0
- package/dist/components/Combobox/isAltArrow.js +5 -0
- package/dist/components/Combobox/isOptionShown.d.ts +10 -0
- package/dist/components/Combobox/isOptionShown.js +5 -0
- package/dist/components/Combobox/useAutocompleteText.d.ts +56 -0
- package/dist/components/Combobox/useAutocompleteText.js +27 -0
- package/dist/components/Combobox/useComboboxContext.d.ts +9 -0
- package/dist/components/Combobox/useComboboxContext.js +10 -0
- package/dist/components/Combobox/useComboboxList.d.ts +129 -0
- package/dist/components/Combobox/useComboboxList.js +138 -0
- package/dist/components/Combobox/useComboboxOption.d.ts +35 -0
- package/dist/components/Combobox/useComboboxOption.js +46 -0
- package/dist/components/Combobox/useComboboxSelection.d.ts +45 -0
- package/dist/components/Combobox/useComboboxSelection.js +17 -0
- package/dist/components/Combobox/useResultsAnnouncement.d.ts +23 -0
- package/dist/components/Combobox/useResultsAnnouncement.js +24 -0
- package/dist/components/ContextMenu/index.d.ts +2 -0
- package/dist/components/ContextMenu/useContextMenu.d.ts +112 -0
- package/dist/components/ContextMenu/useContextMenu.js +202 -0
- package/dist/components/ContextMenu/watchLongPress.d.ts +35 -0
- package/dist/components/ContextMenu/watchLongPress.js +38 -0
- package/dist/components/Counter/Counter.js +5 -6
- package/dist/components/Counter/Counter.module.js +1 -2
- package/dist/components/Cover/Cover.js +8 -9
- package/dist/components/Cover/Cover.module.js +1 -2
- package/dist/components/Divider/Divider.js +1 -2
- package/dist/components/Divider/Divider.module.js +1 -2
- package/dist/components/Field/Field.js +11 -10
- package/dist/components/Field/Field.module.js +1 -2
- package/dist/components/Fieldset/Fieldset.js +1 -2
- package/dist/components/Fieldset/Fieldset.module.js +1 -2
- package/dist/components/Frame/Frame.js +5 -6
- package/dist/components/Frame/Frame.module.js +1 -2
- package/dist/components/Grid/Grid.js +9 -10
- package/dist/components/Grid/Grid.module.js +1 -2
- package/dist/components/Heading/Heading.js +1 -2
- package/dist/components/Heading/Heading.module.js +1 -2
- package/dist/components/HorizontalFlow/HorizontalFlow.js +6 -7
- package/dist/components/HorizontalFlow/HorizontalFlow.module.js +1 -2
- package/dist/components/Icon/AddIcon.js +1 -2
- package/dist/components/Icon/CheckIcon.d.ts +11 -0
- package/dist/components/Icon/CheckIcon.js +18 -0
- package/dist/components/Icon/ChevronDownIcon.js +1 -2
- package/dist/components/Icon/ChevronRightIcon.d.ts +11 -0
- package/dist/components/Icon/ChevronRightIcon.js +19 -0
- package/dist/components/Icon/CloseIcon.js +1 -2
- package/dist/components/Icon/ColorModeIcon.js +1 -2
- package/dist/components/Icon/DeleteIcon.js +1 -2
- package/dist/components/Icon/Icon.js +1 -2
- package/dist/components/Icon/Icon.module.js +1 -2
- package/dist/components/Icon/InfoIcon.js +1 -2
- package/dist/components/Icon/MenuIcon.d.ts +12 -0
- package/dist/components/Icon/MenuIcon.js +28 -0
- package/dist/components/Icon/MoreHorizontalIcon.js +1 -2
- package/dist/components/Icon/MoreVerticalIcon.js +1 -2
- package/dist/components/Icon/PaletteIcon.js +1 -2
- package/dist/components/Icon/RefreshIcon.js +1 -2
- package/dist/components/Icon/RemoveIcon.js +1 -2
- package/dist/components/Icon/SendIcon.js +1 -2
- package/dist/components/Icon/index.d.ts +3 -0
- package/dist/components/IconButton/IconButton.js +1 -2
- package/dist/components/IconButton/IconButton.module.js +1 -2
- package/dist/components/Kbd/Kbd.js +1 -2
- package/dist/components/Kbd/Kbd.module.js +1 -2
- package/dist/components/Link/Link.js +1 -2
- package/dist/components/Link/Link.module.js +1 -2
- package/dist/components/Listbox/Listbox.js +9 -10
- package/dist/components/Listbox/Listbox.module.js +1 -2
- package/dist/components/Listbox/ListboxContext.js +1 -2
- package/dist/components/Listbox/ListboxOption.js +7 -8
- package/dist/components/Listbox/useListbox.js +22 -23
- package/dist/components/Listbox/useListboxContext.js +1 -2
- package/dist/components/Menu/Menu.d.ts +70 -0
- package/dist/components/Menu/Menu.js +76 -0
- package/dist/components/Menu/MenuContext.d.ts +29 -0
- package/dist/components/Menu/MenuContext.js +4 -0
- package/dist/components/Menu/MenuGroup.d.ts +22 -0
- package/dist/components/Menu/MenuGroup.js +32 -0
- package/dist/components/Menu/MenuItem.d.ts +77 -0
- package/dist/components/Menu/MenuItem.js +54 -0
- package/dist/components/Menu/MenuItemCheckbox.d.ts +61 -0
- package/dist/components/Menu/MenuItemCheckbox.js +37 -0
- package/dist/components/Menu/MenuItemRadio.d.ts +47 -0
- package/dist/components/Menu/MenuItemRadio.js +39 -0
- package/dist/components/Menu/MenuRadioGroup.d.ts +34 -0
- package/dist/components/Menu/MenuRadioGroup.js +27 -0
- package/dist/components/Menu/MenuRadioGroupContext.d.ts +17 -0
- package/dist/components/Menu/MenuRadioGroupContext.js +4 -0
- package/dist/components/Menu/MenuSeparator.d.ts +16 -0
- package/dist/components/Menu/MenuSeparator.js +20 -0
- package/dist/components/Menu/Submenu.d.ts +36 -0
- package/dist/components/Menu/Submenu.js +122 -0
- package/dist/components/Menu/index.d.ts +18 -0
- package/dist/components/Menu/useMenu.d.ts +18 -0
- package/dist/components/Menu/useMenu.js +20 -0
- package/dist/components/Menu/useMenuButton.d.ts +124 -0
- package/dist/components/Menu/useMenuButton.js +92 -0
- package/dist/components/Menu/useMenuContext.d.ts +9 -0
- package/dist/components/Menu/useMenuContext.js +10 -0
- package/dist/components/Menu/useMenuItemContent.d.ts +55 -0
- package/dist/components/Menu/useMenuItemContent.js +66 -0
- package/dist/components/Menu/useMenuPointer.d.ts +27 -0
- package/dist/components/Menu/useMenuPointer.js +56 -0
- package/dist/components/Menu/useMenuRadioGroupContext.d.ts +9 -0
- package/dist/components/Menu/useMenuRadioGroupContext.js +10 -0
- package/dist/components/MenuSurface/MenuSurface.css +1 -0
- package/dist/components/MenuSurface/MenuSurface.module.js +16 -0
- package/dist/components/Menubar/Menubar.css +1 -0
- package/dist/components/Menubar/Menubar.d.ts +23 -0
- package/dist/components/Menubar/Menubar.js +67 -0
- package/dist/components/Menubar/Menubar.module.js +7 -0
- package/dist/components/Menubar/MenubarContext.d.ts +29 -0
- package/dist/components/Menubar/MenubarContext.js +4 -0
- package/dist/components/Menubar/MenubarMenu.d.ts +26 -0
- package/dist/components/Menubar/MenubarMenu.js +88 -0
- package/dist/components/Menubar/findOpenMenubarItem.d.ts +7 -0
- package/dist/components/Menubar/findOpenMenubarItem.js +6 -0
- package/dist/components/Menubar/index.d.ts +4 -0
- package/dist/components/Menubar/menubarItems.d.ts +7 -0
- package/dist/components/Menubar/menubarItems.js +5 -0
- package/dist/components/Menubar/useMenubarContext.d.ts +9 -0
- package/dist/components/Menubar/useMenubarContext.js +10 -0
- package/dist/components/NavBar/NavBar.css +1 -0
- package/dist/components/NavBar/NavBar.d.ts +53 -0
- package/dist/components/NavBar/NavBar.js +97 -0
- package/dist/components/NavBar/NavBar.module.js +22 -0
- package/dist/components/NavBar/NavBarContext.d.ts +21 -0
- package/dist/components/NavBar/NavBarContext.js +4 -0
- package/dist/components/NavBar/NavBarItem.d.ts +32 -0
- package/dist/components/NavBar/NavBarItem.js +18 -0
- package/dist/components/NavBar/NavBarMenu.d.ts +32 -0
- package/dist/components/NavBar/NavBarMenu.js +84 -0
- package/dist/components/NavBar/NavBarMenuGroup.d.ts +25 -0
- package/dist/components/NavBar/NavBarMenuGroup.js +40 -0
- package/dist/components/NavBar/NavBarMenuItem.d.ts +36 -0
- package/dist/components/NavBar/NavBarMenuItem.js +49 -0
- package/dist/components/NavBar/index.d.ts +10 -0
- package/dist/components/NavBar/isNavBarCollapsed.d.ts +8 -0
- package/dist/components/NavBar/isNavBarCollapsed.js +5 -0
- package/dist/components/NavBar/leavesPageInPlace.d.ts +12 -0
- package/dist/components/NavBar/leavesPageInPlace.js +29 -0
- package/dist/components/NavBar/renderNavBarLink.d.ts +12 -0
- package/dist/components/NavBar/renderNavBarLink.js +16 -0
- package/dist/components/NavBar/useLayoutSwitch.d.ts +26 -0
- package/dist/components/NavBar/useLayoutSwitch.js +25 -0
- package/dist/components/NavBar/useNavBarContext.d.ts +9 -0
- package/dist/components/NavBar/useNavBarContext.js +10 -0
- package/dist/components/NavList/NavList.js +1 -2
- package/dist/components/NavList/NavList.module.js +1 -2
- package/dist/components/NavList/NavListGroup.js +1 -2
- package/dist/components/NavList/NavListItem.d.ts +4 -8
- package/dist/components/NavList/NavListItem.js +1 -2
- package/dist/components/Overlay/Overlay.js +6 -7
- package/dist/components/Overlay/Overlay.module.js +1 -2
- package/dist/components/PageLayout/PageLayout.js +6 -7
- package/dist/components/PageLayout/PageLayout.module.js +1 -2
- package/dist/components/Popover/Popover.js +1 -2
- package/dist/components/Popover/Popover.module.js +1 -2
- package/dist/components/Popover/usePopover.js +44 -39
- package/dist/components/Prose/Prose.js +1 -2
- package/dist/components/Prose/Prose.module.js +1 -2
- package/dist/components/Radio/Radio.js +1 -2
- package/dist/components/RadioGroup/RadioGroup.js +5 -6
- package/dist/components/RadioGroup/RadioGroup.module.js +1 -2
- package/dist/components/RequiredIndicator/RequiredIndicator.js +1 -2
- package/dist/components/RequiredIndicator/RequiredIndicator.module.js +1 -2
- package/dist/components/Row/Row.js +1 -2
- package/dist/components/SegmentedControl/Segment.js +1 -2
- package/dist/components/SegmentedControl/SegmentedControl.js +1 -2
- package/dist/components/SegmentedControl/SegmentedControl.module.js +1 -2
- package/dist/components/Select/Select.js +1 -2
- package/dist/components/Sidebar/Sidebar.js +7 -8
- package/dist/components/Sidebar/Sidebar.module.js +1 -2
- package/dist/components/SkipLink/SkipLink.js +1 -2
- package/dist/components/SkipLink/SkipLink.module.js +1 -2
- package/dist/components/Spinner/Spinner.js +1 -2
- package/dist/components/Spinner/Spinner.module.js +1 -2
- package/dist/components/Stack/Stack.js +8 -9
- package/dist/components/Stack/Stack.module.js +1 -2
- package/dist/components/StatusDot/StatusDot.js +1 -2
- package/dist/components/StatusDot/StatusDot.module.js +1 -2
- package/dist/components/Switch/Switch.js +1 -2
- package/dist/components/Switcher/Switcher.js +9 -10
- package/dist/components/Switcher/Switcher.module.js +1 -2
- package/dist/components/Tabs/Tab.js +12 -13
- package/dist/components/Tabs/TabList.js +1 -2
- package/dist/components/Tabs/TabPanel.js +1 -2
- package/dist/components/Tabs/Tabs.js +1 -2
- package/dist/components/Tabs/Tabs.module.js +1 -2
- package/dist/components/Tabs/TabsContext.js +1 -2
- package/dist/components/Tabs/tabIds.js +1 -2
- package/dist/components/Tabs/useTabsContext.js +1 -2
- package/dist/components/Text/Text.js +1 -2
- package/dist/components/Text/Text.module.js +1 -2
- package/dist/components/TextControl/TextControl.d.ts +3 -3
- package/dist/components/TextControl/TextControl.js +14 -10
- package/dist/components/TextControl/TextControl.module.js +1 -2
- package/dist/components/TextInput/TextInput.js +1 -2
- package/dist/components/Textarea/Textarea.js +1 -2
- package/dist/components/Theme/Theme.js +1 -2
- package/dist/components/Tooltip/Tooltip.js +1 -2
- package/dist/components/Tooltip/Tooltip.module.js +1 -2
- package/dist/components/Tooltip/tooltipCoordinator.js +1 -2
- package/dist/components/Tooltip/useTooltip.js +1 -2
- package/dist/components/VisuallyHidden/VisuallyHidden.js +1 -2
- package/dist/components/VisuallyHidden/VisuallyHidden.module.js +1 -2
- package/dist/errors/MissingContextError.js +1 -2
- package/dist/errors/PopoverRefusedError.js +1 -2
- package/dist/forms/FieldContext.d.ts +5 -0
- package/dist/forms/FieldContext.js +1 -2
- package/dist/forms/RadioGroupContext.js +1 -2
- package/dist/forms/hasContent.js +1 -2
- package/dist/forms/useFieldControl.js +1 -2
- package/dist/forms/useRadioGroupItem.js +1 -2
- package/dist/index.d.ts +13 -1
- package/dist/index.js +90 -65
- package/dist/layout/listRole.js +1 -2
- package/dist/layout/spaceValue.js +1 -2
- package/dist/layout/withCustomProperties.js +1 -2
- package/dist/links/LinkOrButtonProps.d.ts +17 -0
- package/dist/links/index.d.ts +1 -0
- package/dist/menus/closeWhenFocusLeaves.d.ts +9 -0
- package/dist/menus/closeWhenFocusLeaves.js +11 -0
- package/dist/menus/focusItem.d.ts +6 -0
- package/dist/menus/focusItem.js +9 -0
- package/dist/menus/focusOnOpening.d.ts +11 -0
- package/dist/menus/focusOnOpening.js +11 -0
- package/dist/menus/hasModifier.d.ts +7 -0
- package/dist/menus/hasModifier.js +5 -0
- package/dist/menus/index.d.ts +11 -0
- package/dist/menus/itemText.d.ts +8 -0
- package/dist/menus/itemText.js +6 -0
- package/dist/menus/leaveMenuOnTab.d.ts +9 -0
- package/dist/menus/leaveMenuOnTab.js +6 -0
- package/dist/menus/pointerIntent.d.ts +36 -0
- package/dist/menus/pointerIntent.js +68 -0
- package/dist/menus/renderedItems.d.ts +8 -0
- package/dist/menus/renderedItems.js +4 -0
- package/dist/menus/watchRemovals.d.ts +8 -0
- package/dist/menus/watchRemovals.js +23 -0
- package/dist/overlays/anchorNameFor.js +1 -2
- package/dist/overlays/mergeProps.js +1 -2
- package/dist/overlays/syncPopover.js +1 -2
- package/dist/overlays/useOverlay.js +2 -9
- package/package.json +10 -10
- package/dist/components/Listbox/optionId.js +0 -7
- /package/dist/{components/Listbox → collections}/optionId.d.ts +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { hasContent as e } from "../../forms/hasContent.js";
|
|
2
|
+
import { Box as t } from "../Box/Box.js";
|
|
3
|
+
import { CloseIcon as n } from "../Icon/CloseIcon.js";
|
|
4
|
+
import { MenuIcon as r } from "../Icon/MenuIcon.js";
|
|
5
|
+
import { isNavBarCollapsed as i } from "./isNavBarCollapsed.js";
|
|
6
|
+
import { leavesPageInPlace as a } from "./leavesPageInPlace.js";
|
|
7
|
+
import o from "./NavBar.module.js";
|
|
8
|
+
import { NavBarContext as s } from "./NavBarContext.js";
|
|
9
|
+
import { useLayoutSwitch as c } from "./useLayoutSwitch.js";
|
|
10
|
+
import { clsx as l } from "clsx";
|
|
11
|
+
import { useId as u, useRef as d, useState as f } from "react";
|
|
12
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
13
|
+
// src/components/NavBar/NavBar.tsx
|
|
14
|
+
function h({ "aria-label": h, "aria-labelledby": g, children: _, className: v, collapse: y = "md", end: b, menuLabel: x = "Menu", start: S, ...C }) {
|
|
15
|
+
let w = u(), T = d(null), E = d(null), D = d(null), [O, k] = f(!1), [A, j] = f([]);
|
|
16
|
+
function M() {
|
|
17
|
+
k(!1), j([]);
|
|
18
|
+
}
|
|
19
|
+
c({
|
|
20
|
+
collapse: y,
|
|
21
|
+
layoutRef: T,
|
|
22
|
+
navigationRef: E,
|
|
23
|
+
onSwitch: M
|
|
24
|
+
});
|
|
25
|
+
function N(e) {
|
|
26
|
+
j((t) => t.filter((t) => t !== e));
|
|
27
|
+
}
|
|
28
|
+
function P(e, t) {
|
|
29
|
+
let n = i(t);
|
|
30
|
+
j((t) => t.includes(e) ? t.filter((t) => t !== e) : n ? [...t, e] : [e]);
|
|
31
|
+
}
|
|
32
|
+
function F() {
|
|
33
|
+
O ? M() : k(!0);
|
|
34
|
+
}
|
|
35
|
+
function I(e) {
|
|
36
|
+
let t = e.target.closest("a");
|
|
37
|
+
t !== null && !a(e, t) && M();
|
|
38
|
+
}
|
|
39
|
+
function L(e) {
|
|
40
|
+
let t = D.current, n = E.current, r = e.target, a = r === t || n?.contains(r) === !0;
|
|
41
|
+
e.key === "Escape" && !e.defaultPrevented && O && n !== null && a && i(n) && (e.preventDefault(), M(), t?.focus());
|
|
42
|
+
}
|
|
43
|
+
return /* @__PURE__ */ p(s.Provider, {
|
|
44
|
+
value: {
|
|
45
|
+
closeSection: N,
|
|
46
|
+
openSections: A,
|
|
47
|
+
toggleSection: P
|
|
48
|
+
},
|
|
49
|
+
children: /* @__PURE__ */ p(t, {
|
|
50
|
+
...C,
|
|
51
|
+
className: l(o.bar, v),
|
|
52
|
+
"data-collapse": y,
|
|
53
|
+
children: /* @__PURE__ */ m(t, {
|
|
54
|
+
className: o.layout,
|
|
55
|
+
onClick: I,
|
|
56
|
+
onKeyDown: L,
|
|
57
|
+
ref: T,
|
|
58
|
+
children: [
|
|
59
|
+
e(S) && /* @__PURE__ */ p(t, {
|
|
60
|
+
className: o.start,
|
|
61
|
+
children: S
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ m(t, {
|
|
64
|
+
as: "button",
|
|
65
|
+
className: l(o.control, o.toggle),
|
|
66
|
+
onClick: F,
|
|
67
|
+
ref: D,
|
|
68
|
+
type: "button",
|
|
69
|
+
"aria-controls": w,
|
|
70
|
+
"aria-expanded": O,
|
|
71
|
+
children: [p(O ? n : r, {}), x]
|
|
72
|
+
}),
|
|
73
|
+
/* @__PURE__ */ p(t, {
|
|
74
|
+
as: "nav",
|
|
75
|
+
className: o.navigation,
|
|
76
|
+
id: w,
|
|
77
|
+
ref: E,
|
|
78
|
+
"aria-label": h,
|
|
79
|
+
"aria-labelledby": g,
|
|
80
|
+
"data-open": O ? !0 : void 0,
|
|
81
|
+
children: /* @__PURE__ */ p(t, {
|
|
82
|
+
as: "ul",
|
|
83
|
+
className: o.list,
|
|
84
|
+
role: "list",
|
|
85
|
+
children: _
|
|
86
|
+
})
|
|
87
|
+
}),
|
|
88
|
+
e(b) && /* @__PURE__ */ p(t, {
|
|
89
|
+
className: o.end,
|
|
90
|
+
children: b
|
|
91
|
+
})
|
|
92
|
+
]
|
|
93
|
+
})
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
export { h as NavBar };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import './NavBar.css';// src/components/NavBar/NavBar.module.css
|
|
2
|
+
var e = "sui-bar-YKJoe", t = "sui-layout-h4XLw", n = "sui-start-7Cofw", r = "sui-end-KbxmI", i = "sui-navigation-CUxrs", a = "sui-list-pjBUp", o = "sui-control-ORmQT", s = "sui-section-P9Rex", c = "sui-panel-LFMyY", l = "sui-toggle-4poR7", u = "sui-chevron-PDy4f", d = "sui-panelList-o--Wi", f = "sui-groupList-BACy0", p = "sui-group-nS46Z", m = "sui-groupTitle-e3Nhq", h = "sui-panelLink-PFMpf", g = "sui-title-db-od", _ = "sui-description-FOS-6", v = {
|
|
3
|
+
bar: e,
|
|
4
|
+
layout: t,
|
|
5
|
+
start: n,
|
|
6
|
+
end: r,
|
|
7
|
+
navigation: i,
|
|
8
|
+
list: a,
|
|
9
|
+
control: o,
|
|
10
|
+
section: s,
|
|
11
|
+
panel: c,
|
|
12
|
+
toggle: l,
|
|
13
|
+
chevron: u,
|
|
14
|
+
panelList: d,
|
|
15
|
+
groupList: f,
|
|
16
|
+
group: p,
|
|
17
|
+
groupTitle: m,
|
|
18
|
+
panelLink: h,
|
|
19
|
+
title: g,
|
|
20
|
+
description: _
|
|
21
|
+
};
|
|
22
|
+
export { e as bar, u as chevron, o as control, v as default, _ as description, r as end, p as group, f as groupList, m as groupTitle, t as layout, a as list, i as navigation, c as panel, h as panelLink, d as panelList, s as section, n as start, g as title, l as toggle };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State a `NavBar` shares with its entries
|
|
3
|
+
*/
|
|
4
|
+
export interface NavBarContextValue {
|
|
5
|
+
/**
|
|
6
|
+
* Closes the section with the given id
|
|
7
|
+
*/
|
|
8
|
+
closeSection: (id: string) => void;
|
|
9
|
+
/**
|
|
10
|
+
* Ids of the open sections
|
|
11
|
+
*/
|
|
12
|
+
openSections: readonly string[];
|
|
13
|
+
/**
|
|
14
|
+
* Opens or closes the section with the given id. On a wide bar, opening it closes any other.
|
|
15
|
+
*/
|
|
16
|
+
toggleSection: (id: string, button: Element) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Carries a `NavBar`'s state to its entries; null outside a `NavBar`
|
|
20
|
+
*/
|
|
21
|
+
export declare const NavBarContext: import("react").Context<NavBarContextValue | null>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from "react";
|
|
2
|
+
import type { LinkOrButtonProps } from "../../links";
|
|
3
|
+
import type { LinkElement } from "../Link";
|
|
4
|
+
interface NavBarItemOwnProps<E extends LinkElement> {
|
|
5
|
+
/**
|
|
6
|
+
* What to render: `a`, or a component that renders an anchor, such as a router's link. Defaults to `a`.
|
|
7
|
+
*/
|
|
8
|
+
as?: E;
|
|
9
|
+
/**
|
|
10
|
+
* The label
|
|
11
|
+
*/
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Class names merged with the link's base class
|
|
15
|
+
*/
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Props for `NavBarItem`: its own props plus every other prop of the anchor or component given in `as`, except
|
|
20
|
+
* `dangerouslySetInnerHTML`
|
|
21
|
+
*/
|
|
22
|
+
export type NavBarItemProps<E extends LinkElement = "a"> = E extends LinkElement ? NavBarItemOwnProps<E> & LinkOrButtonProps<E, "dangerouslySetInnerHTML" | keyof NavBarItemOwnProps<E>> : never;
|
|
23
|
+
/**
|
|
24
|
+
* A top-level link in a `NavBar`. Every prop but `children` goes to the link, not the list item around it, and a
|
|
25
|
+
* component given in `as` must pass the `className` it is given on to its anchor. Mark the current page with
|
|
26
|
+
* `aria-current="page"`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* <NavBarItem href="/articles" aria-current="page">Articles</NavBarItem>
|
|
30
|
+
*/
|
|
31
|
+
export declare function NavBarItem<E extends LinkElement = "a">({ as, children, className, ...rest }: NavBarItemProps<E>): JSX.Element;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Box as e } from "../Box/Box.js";
|
|
2
|
+
import t from "./NavBar.module.js";
|
|
3
|
+
import { renderNavBarLink as n } from "./renderNavBarLink.js";
|
|
4
|
+
import { useNavBarContext as r } from "./useNavBarContext.js";
|
|
5
|
+
import { clsx as i } from "clsx";
|
|
6
|
+
import { c as a } from "react/compiler-runtime";
|
|
7
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
8
|
+
// src/components/NavBar/NavBarItem.tsx
|
|
9
|
+
function s(s) {
|
|
10
|
+
let c = a(3), { as: l, children: u, className: d, ...f } = s;
|
|
11
|
+
r("NavBarItem");
|
|
12
|
+
let p = e, m = n(l, i(t.control, d), u, f), h;
|
|
13
|
+
return c[0] !== p || c[1] !== m ? (h = /* @__PURE__ */ o(p, {
|
|
14
|
+
as: "li",
|
|
15
|
+
children: m
|
|
16
|
+
}), c[0] = p, c[1] = m, c[2] = h) : h = c[2], h;
|
|
17
|
+
}
|
|
18
|
+
export { s as NavBarItem };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from "react";
|
|
2
|
+
import type { BoxProps } from "../Box";
|
|
3
|
+
/**
|
|
4
|
+
* Props for `NavBarMenu`: its own props plus every `li` prop except `dangerouslySetInnerHTML`
|
|
5
|
+
*/
|
|
6
|
+
export interface NavBarMenuProps extends Omit<BoxProps<"li">, "as" | "children" | "dangerouslySetInnerHTML"> {
|
|
7
|
+
/**
|
|
8
|
+
* The panel's links: `NavBarMenuItem`s, or `NavBarMenuGroup`s holding them
|
|
9
|
+
*/
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* How many columns the panel lays its links or groups out in on a wide bar. Defaults to 1.
|
|
13
|
+
*/
|
|
14
|
+
columns?: 1 | 2 | 3;
|
|
15
|
+
/**
|
|
16
|
+
* The text of the button that opens the panel
|
|
17
|
+
*/
|
|
18
|
+
label: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A section of a `NavBar`: a button that opens a panel of links below it. A click, Enter or Space opens and closes
|
|
22
|
+
* it. On a wide bar one section is open at a time, and Escape, a click outside or focus leaving closes it. On a
|
|
23
|
+
* collapsed bar the panel opens in place, pushing what follows down, and Escape closes it. Choosing a link closes it.
|
|
24
|
+
* Escape returns focus to the button.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* <NavBarMenu columns={2} label="Topics">
|
|
28
|
+
* <NavBarMenuItem description="Typography, colour, systems" href="/topics/design">Design</NavBarMenuItem>
|
|
29
|
+
* <NavBarMenuItem description="Front-end, performance, tooling" href="/topics/engineering">Engineering</NavBarMenuItem>
|
|
30
|
+
* </NavBarMenu>
|
|
31
|
+
*/
|
|
32
|
+
export declare function NavBarMenu({ children, className, columns, label, onBlur, onKeyDown, onPointerDown, ...rest }: NavBarMenuProps): JSX.Element;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { anchorNameFor as e } from "../../overlays/anchorNameFor.js";
|
|
2
|
+
import { Box as t } from "../Box/Box.js";
|
|
3
|
+
import { ChevronDownIcon as n } from "../Icon/ChevronDownIcon.js";
|
|
4
|
+
import { isNavBarCollapsed as r } from "./isNavBarCollapsed.js";
|
|
5
|
+
import i from "./NavBar.module.js";
|
|
6
|
+
import { useNavBarContext as a } from "./useNavBarContext.js";
|
|
7
|
+
import { clsx as o } from "clsx";
|
|
8
|
+
import { useEffect as s, useId as c, useRef as l } from "react";
|
|
9
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
10
|
+
// src/components/NavBar/NavBarMenu.tsx
|
|
11
|
+
function f({ children: f, className: m, columns: h = 1, label: g, onBlur: _, onKeyDown: v, onPointerDown: y, ...b }) {
|
|
12
|
+
let { closeSection: x, openSections: S, toggleSection: C } = a("NavBarMenu"), w = c(), T = e(w), E = l(null), D = l(!1), O = S.includes(w);
|
|
13
|
+
s(() => {
|
|
14
|
+
let e = E.current?.parentElement;
|
|
15
|
+
if (!O || e == null) return;
|
|
16
|
+
let t = (t) => {
|
|
17
|
+
let n = t.target;
|
|
18
|
+
!e.contains(n) && !r(e) && x(w);
|
|
19
|
+
}, n = (t) => {
|
|
20
|
+
p(e, t.target, D.current) && !r(e) && x(w);
|
|
21
|
+
}, i = () => {
|
|
22
|
+
D.current = !1;
|
|
23
|
+
}, a = e.ownerDocument;
|
|
24
|
+
return a.addEventListener("focusin", n, !0), a.addEventListener("keydown", i, !0), a.addEventListener("pointerdown", t, !0), () => {
|
|
25
|
+
a.removeEventListener("focusin", n, !0), a.removeEventListener("keydown", i, !0), a.removeEventListener("pointerdown", t, !0);
|
|
26
|
+
};
|
|
27
|
+
}, [
|
|
28
|
+
x,
|
|
29
|
+
O,
|
|
30
|
+
w
|
|
31
|
+
]);
|
|
32
|
+
function k(e) {
|
|
33
|
+
C(w, e.currentTarget);
|
|
34
|
+
}
|
|
35
|
+
function A(e) {
|
|
36
|
+
_?.(e);
|
|
37
|
+
let t = e.currentTarget;
|
|
38
|
+
e.relatedTarget === null && setTimeout(() => {
|
|
39
|
+
O && p(t, t.ownerDocument.activeElement, D.current) && !r(t) && x(w);
|
|
40
|
+
}, 0);
|
|
41
|
+
}
|
|
42
|
+
function j(e) {
|
|
43
|
+
y?.(e), D.current = !0;
|
|
44
|
+
}
|
|
45
|
+
function M(e) {
|
|
46
|
+
v?.(e), D.current = !1, e.key === "Escape" && O && !e.defaultPrevented && (e.preventDefault(), x(w), E.current?.focus());
|
|
47
|
+
}
|
|
48
|
+
return /* @__PURE__ */ d(t, {
|
|
49
|
+
...b,
|
|
50
|
+
as: "li",
|
|
51
|
+
className: o(i.section, m),
|
|
52
|
+
onBlur: A,
|
|
53
|
+
onKeyDown: M,
|
|
54
|
+
onPointerDown: j,
|
|
55
|
+
children: [/* @__PURE__ */ d(t, {
|
|
56
|
+
as: "button",
|
|
57
|
+
className: i.control,
|
|
58
|
+
onClick: k,
|
|
59
|
+
ref: E,
|
|
60
|
+
style: { anchorName: T },
|
|
61
|
+
type: "button",
|
|
62
|
+
"aria-controls": w,
|
|
63
|
+
"aria-expanded": O,
|
|
64
|
+
children: [g, /* @__PURE__ */ u(n, { className: i.chevron })]
|
|
65
|
+
}), /* @__PURE__ */ u(t, {
|
|
66
|
+
className: i.panel,
|
|
67
|
+
hidden: !O,
|
|
68
|
+
id: w,
|
|
69
|
+
style: { positionAnchor: T },
|
|
70
|
+
"data-columns": h,
|
|
71
|
+
children: /* @__PURE__ */ u(t, {
|
|
72
|
+
as: "ul",
|
|
73
|
+
className: i.panelList,
|
|
74
|
+
role: "list",
|
|
75
|
+
children: f
|
|
76
|
+
})
|
|
77
|
+
})]
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function p(e, t, n) {
|
|
81
|
+
let r = n && t?.contains(e) === !0;
|
|
82
|
+
return t !== null && !e.contains(t) && !r;
|
|
83
|
+
}
|
|
84
|
+
export { f as NavBarMenu };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from "react";
|
|
2
|
+
import type { BoxProps } from "../Box";
|
|
3
|
+
import type { HeadingLevel } from "../Heading";
|
|
4
|
+
/**
|
|
5
|
+
* Props for `NavBarMenuGroup`: its own props plus every `li` prop except `dangerouslySetInnerHTML` and `title`
|
|
6
|
+
*/
|
|
7
|
+
export interface NavBarMenuGroupProps extends Omit<BoxProps<"li">, "as" | "dangerouslySetInnerHTML" | "title"> {
|
|
8
|
+
/**
|
|
9
|
+
* The group's heading level, which the page outline decides: in a site's header before the page's `h1`, usually 2
|
|
10
|
+
*/
|
|
11
|
+
headingLevel: HeadingLevel;
|
|
12
|
+
/**
|
|
13
|
+
* The group's heading, which also names its list
|
|
14
|
+
*/
|
|
15
|
+
title: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A headed column of `NavBarMenuItem`s in a `NavBarMenu`'s panel
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <NavBarMenuGroup headingLevel={2} title="Topics">
|
|
22
|
+
* <NavBarMenuItem href="/topics/design">Design</NavBarMenuItem>
|
|
23
|
+
* </NavBarMenuGroup>
|
|
24
|
+
*/
|
|
25
|
+
export declare function NavBarMenuGroup({ children, className, headingLevel, title, ...rest }: NavBarMenuGroupProps): JSX.Element;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Box as e } from "../Box/Box.js";
|
|
2
|
+
import { Heading as t } from "../Heading/Heading.js";
|
|
3
|
+
import n from "./NavBar.module.js";
|
|
4
|
+
import { useNavBarContext as r } from "./useNavBarContext.js";
|
|
5
|
+
import { clsx as i } from "clsx";
|
|
6
|
+
import { useId as a } from "react";
|
|
7
|
+
import { c as o } from "react/compiler-runtime";
|
|
8
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
9
|
+
// src/components/NavBar/NavBarMenuGroup.tsx
|
|
10
|
+
function l(l) {
|
|
11
|
+
let u = o(20), d, f, p, m, h;
|
|
12
|
+
u[0] === l ? (d = u[1], f = u[2], p = u[3], m = u[4], h = u[5]) : ({children: d, className: f, headingLevel: p, title: h, ...m} = l, u[0] = l, u[1] = d, u[2] = f, u[3] = p, u[4] = m, u[5] = h), r("NavBarMenuGroup");
|
|
13
|
+
let g = a(), _;
|
|
14
|
+
u[6] === f ? _ = u[7] : (_ = i(n.group, f), u[6] = f, u[7] = _);
|
|
15
|
+
let v;
|
|
16
|
+
u[8] !== g || u[9] !== p || u[10] !== h ? (v = /* @__PURE__ */ s(t, {
|
|
17
|
+
className: n.groupTitle,
|
|
18
|
+
id: g,
|
|
19
|
+
level: p,
|
|
20
|
+
size: "xs",
|
|
21
|
+
tone: "muted",
|
|
22
|
+
children: h
|
|
23
|
+
}), u[8] = g, u[9] = p, u[10] = h, u[11] = v) : v = u[11];
|
|
24
|
+
let y;
|
|
25
|
+
u[12] !== d || u[13] !== g ? (y = /* @__PURE__ */ s(e, {
|
|
26
|
+
as: "ul",
|
|
27
|
+
className: n.groupList,
|
|
28
|
+
role: "list",
|
|
29
|
+
"aria-labelledby": g,
|
|
30
|
+
children: d
|
|
31
|
+
}), u[12] = d, u[13] = g, u[14] = y) : y = u[14];
|
|
32
|
+
let b;
|
|
33
|
+
return u[15] !== m || u[16] !== _ || u[17] !== v || u[18] !== y ? (b = /* @__PURE__ */ c(e, {
|
|
34
|
+
...m,
|
|
35
|
+
as: "li",
|
|
36
|
+
className: _,
|
|
37
|
+
children: [v, y]
|
|
38
|
+
}), u[15] = m, u[16] = _, u[17] = v, u[18] = y, u[19] = b) : b = u[19], b;
|
|
39
|
+
}
|
|
40
|
+
export { l as NavBarMenuGroup };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from "react";
|
|
2
|
+
import type { LinkOrButtonProps } from "../../links";
|
|
3
|
+
import type { LinkElement } from "../Link";
|
|
4
|
+
interface NavBarMenuItemOwnProps<E extends LinkElement> {
|
|
5
|
+
/**
|
|
6
|
+
* What to render: `a`, or a component that renders an anchor, such as a router's link. Defaults to `a`.
|
|
7
|
+
*/
|
|
8
|
+
as?: E;
|
|
9
|
+
/**
|
|
10
|
+
* The title, which names the link
|
|
11
|
+
*/
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Class names merged with the link's base class
|
|
15
|
+
*/
|
|
16
|
+
className?: string;
|
|
17
|
+
/**
|
|
18
|
+
* A line of muted text below the title, which describes the link
|
|
19
|
+
*/
|
|
20
|
+
description?: ReactNode;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Props for `NavBarMenuItem`: its own props plus every other prop of the anchor or component given in `as`, except
|
|
24
|
+
* `dangerouslySetInnerHTML`
|
|
25
|
+
*/
|
|
26
|
+
export type NavBarMenuItemProps<E extends LinkElement = "a"> = E extends LinkElement ? NavBarMenuItemOwnProps<E> & LinkOrButtonProps<E, "dangerouslySetInnerHTML" | keyof NavBarMenuItemOwnProps<E>> : never;
|
|
27
|
+
/**
|
|
28
|
+
* A link in a `NavBarMenu`'s panel, with an optional description below its title. Every prop but `children` and
|
|
29
|
+
* `description` goes to the link, and a component given in `as` must pass the `className` and ARIA attributes it is
|
|
30
|
+
* given on to its anchor. Mark the current page with `aria-current="page"`.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* <NavBarMenuItem description="Typography, colour, systems" href="/topics/design">Design</NavBarMenuItem>
|
|
34
|
+
*/
|
|
35
|
+
export declare function NavBarMenuItem<E extends LinkElement = "a">({ as, children, className, description, ...rest }: NavBarMenuItemProps<E>): JSX.Element;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { hasContent as e } from "../../forms/hasContent.js";
|
|
2
|
+
import { Box as t } from "../Box/Box.js";
|
|
3
|
+
import n from "./NavBar.module.js";
|
|
4
|
+
import { renderNavBarLink as r } from "./renderNavBarLink.js";
|
|
5
|
+
import { useNavBarContext as i } from "./useNavBarContext.js";
|
|
6
|
+
import { clsx as a } from "clsx";
|
|
7
|
+
import { useId as o } from "react";
|
|
8
|
+
import { c as s } from "react/compiler-runtime";
|
|
9
|
+
import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
10
|
+
// src/components/NavBar/NavBarMenuItem.tsx
|
|
11
|
+
function d(d) {
|
|
12
|
+
let f = s(15), { as: p, children: m, className: h, description: g, ..._ } = d;
|
|
13
|
+
i("NavBarMenuItem");
|
|
14
|
+
let v = o(), y = o(), { "aria-describedby": b, "aria-label": x, "aria-labelledby": S, ...C } = _, w;
|
|
15
|
+
f[0] === g ? w = f[1] : (w = e(g), f[0] = g, f[1] = w);
|
|
16
|
+
let T = w, E;
|
|
17
|
+
f[2] !== m || f[3] !== v ? (E = /* @__PURE__ */ l(t, {
|
|
18
|
+
as: "span",
|
|
19
|
+
className: n.title,
|
|
20
|
+
id: v,
|
|
21
|
+
children: m
|
|
22
|
+
}), f[2] = m, f[3] = v, f[4] = E) : E = f[4];
|
|
23
|
+
let D;
|
|
24
|
+
f[5] !== g || f[6] !== y || f[7] !== T ? (D = T && /* @__PURE__ */ l(t, {
|
|
25
|
+
as: "span",
|
|
26
|
+
className: n.description,
|
|
27
|
+
id: y,
|
|
28
|
+
children: g
|
|
29
|
+
}), f[5] = g, f[6] = y, f[7] = T, f[8] = D) : D = f[8];
|
|
30
|
+
let O;
|
|
31
|
+
f[9] !== E || f[10] !== D ? (O = /* @__PURE__ */ u(c, { children: [E, D] }), f[9] = E, f[10] = D, f[11] = O) : O = f[11];
|
|
32
|
+
let k = O, A = T ? {
|
|
33
|
+
"aria-describedby": b === void 0 ? y : `${y} ${b}`,
|
|
34
|
+
"aria-label": x,
|
|
35
|
+
"aria-labelledby": S ?? (x === void 0 ? v : void 0)
|
|
36
|
+
} : {
|
|
37
|
+
"aria-describedby": b,
|
|
38
|
+
"aria-label": x,
|
|
39
|
+
"aria-labelledby": S
|
|
40
|
+
}, j = t, M = r(p, a(n.panelLink, h), k, {
|
|
41
|
+
...C,
|
|
42
|
+
...A
|
|
43
|
+
}), N;
|
|
44
|
+
return f[12] !== j || f[13] !== M ? (N = /* @__PURE__ */ l(j, {
|
|
45
|
+
as: "li",
|
|
46
|
+
children: M
|
|
47
|
+
}), f[12] = j, f[13] = M, f[14] = N) : N = f[14], N;
|
|
48
|
+
}
|
|
49
|
+
export { d as NavBarMenuItem };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { NavBar } from "./NavBar";
|
|
2
|
+
export type { NavBarCollapse, NavBarProps } from "./NavBar";
|
|
3
|
+
export { NavBarItem } from "./NavBarItem";
|
|
4
|
+
export type { NavBarItemProps } from "./NavBarItem";
|
|
5
|
+
export { NavBarMenu } from "./NavBarMenu";
|
|
6
|
+
export type { NavBarMenuProps } from "./NavBarMenu";
|
|
7
|
+
export { NavBarMenuGroup } from "./NavBarMenuGroup";
|
|
8
|
+
export type { NavBarMenuGroupProps } from "./NavBarMenuGroup";
|
|
9
|
+
export { NavBarMenuItem } from "./NavBarMenuItem";
|
|
10
|
+
export type { NavBarMenuItemProps } from "./NavBarMenuItem";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tells whether the `NavBar` around an element shows its collapsed layout, behind its "Menu" toggle
|
|
3
|
+
*
|
|
4
|
+
* @param element the bar's navigation or an element inside it
|
|
5
|
+
* @returns true while the bar is narrower than its collapse width, or always collapses, and the browser lays it out
|
|
6
|
+
* collapsed
|
|
7
|
+
*/
|
|
8
|
+
export declare function isNavBarCollapsed(element: Element): boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type ModifierKeys = Pick<MouseEvent, "altKey" | "ctrlKey" | "metaKey" | "shiftKey">;
|
|
2
|
+
/**
|
|
3
|
+
* Tells whether a click on a link leaves this page where it was, opening the link in another tab or window or
|
|
4
|
+
* downloading it
|
|
5
|
+
*
|
|
6
|
+
* @param event the click, for the modifier keys held
|
|
7
|
+
* @param link the link clicked
|
|
8
|
+
* @returns true for a click with Alt, Ctrl, Meta or Shift held, on a link that opens in another browsing context, or
|
|
9
|
+
* on one that downloads its URL; false whenever that can't be established
|
|
10
|
+
*/
|
|
11
|
+
export declare function leavesPageInPlace(event: ModifierKeys, link: HTMLAnchorElement): boolean;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// src/components/NavBar/leavesPageInPlace.ts
|
|
2
|
+
function e(e, r) {
|
|
3
|
+
return e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || t(r) || n(r);
|
|
4
|
+
}
|
|
5
|
+
function t(e) {
|
|
6
|
+
let t = e.hasAttribute("target") ? e.target : e.ownerDocument.querySelector("base[target]")?.getAttribute("target") ?? "", n = t.toLowerCase(), r = e.ownerDocument.defaultView;
|
|
7
|
+
if (r === null || [
|
|
8
|
+
"",
|
|
9
|
+
"_parent",
|
|
10
|
+
"_self",
|
|
11
|
+
"_top"
|
|
12
|
+
].includes(n)) return !1;
|
|
13
|
+
let i = r;
|
|
14
|
+
for (;;) {
|
|
15
|
+
try {
|
|
16
|
+
if (i.name === t) return !1;
|
|
17
|
+
} catch {
|
|
18
|
+
return !1;
|
|
19
|
+
}
|
|
20
|
+
if (i.parent === i) return !0;
|
|
21
|
+
i = i.parent;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function n(e) {
|
|
25
|
+
if (!e.hasAttribute("download") || !URL.canParse(e.href)) return !1;
|
|
26
|
+
let t = new URL(e.href);
|
|
27
|
+
return t.protocol === "blob:" || t.protocol === "data:" || t.origin === e.ownerDocument.location.origin;
|
|
28
|
+
}
|
|
29
|
+
export { e as leavesPageInPlace };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { JSX, ReactNode } from "react";
|
|
2
|
+
import type { LinkElement } from "../Link";
|
|
3
|
+
/**
|
|
4
|
+
* Renders the link a `NavBar` entry's `as` names
|
|
5
|
+
*
|
|
6
|
+
* @param as the anchor or component to render, or undefined for an anchor
|
|
7
|
+
* @param className the entry's class names
|
|
8
|
+
* @param content what the link holds
|
|
9
|
+
* @param props every other prop the entry was given for its link
|
|
10
|
+
* @returns the link
|
|
11
|
+
*/
|
|
12
|
+
export declare function renderNavBarLink(as: LinkElement | undefined, className: string, content: ReactNode, props: object): JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Box as e } from "../Box/Box.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
// src/components/NavBar/renderNavBarLink.tsx
|
|
4
|
+
function n(n, r, i, a) {
|
|
5
|
+
return n === void 0 || n === "a" ? /* @__PURE__ */ t(e, {
|
|
6
|
+
...a,
|
|
7
|
+
as: "a",
|
|
8
|
+
className: r,
|
|
9
|
+
children: i
|
|
10
|
+
}) : /* @__PURE__ */ t(n, {
|
|
11
|
+
...a,
|
|
12
|
+
className: r,
|
|
13
|
+
children: i
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export { n as renderNavBarLink };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { RefObject } from "react";
|
|
2
|
+
interface UseLayoutSwitchOptions {
|
|
3
|
+
/**
|
|
4
|
+
* The bar's collapse width, a change of which can switch the layout with no resize
|
|
5
|
+
*/
|
|
6
|
+
collapse: string;
|
|
7
|
+
/**
|
|
8
|
+
* The bar's layout, whose resizes are watched
|
|
9
|
+
*/
|
|
10
|
+
layoutRef: RefObject<HTMLElement | null>;
|
|
11
|
+
/**
|
|
12
|
+
* The bar's navigation, whose layout is read
|
|
13
|
+
*/
|
|
14
|
+
navigationRef: RefObject<HTMLElement | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Called each time the bar switches between its wide and collapsed layouts
|
|
17
|
+
*/
|
|
18
|
+
onSwitch: () => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Reports a `NavBar` switching between its wide and collapsed layouts, from a resize or a new collapse width
|
|
22
|
+
*
|
|
23
|
+
* @param options the bar's collapse width, its layout and navigation, and what to call on a switch
|
|
24
|
+
*/
|
|
25
|
+
export declare function useLayoutSwitch({ collapse, layoutRef, navigationRef, onSwitch }: UseLayoutSwitchOptions): void;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isNavBarCollapsed as e } from "./isNavBarCollapsed.js";
|
|
2
|
+
import { useEffect as t, useEffectEvent as n, useRef as r } from "react";
|
|
3
|
+
import { c as i } from "react/compiler-runtime";
|
|
4
|
+
// src/components/NavBar/useLayoutSwitch.ts
|
|
5
|
+
function a(a) {
|
|
6
|
+
let o = i(8), { collapse: s, layoutRef: c, navigationRef: l, onSwitch: u } = a, d = r(null), f = n(u), p;
|
|
7
|
+
o[0] !== c || o[1] !== l || o[2] !== f ? (p = () => {
|
|
8
|
+
let t = c.current, n = l.current;
|
|
9
|
+
if (t === null || n === null) return;
|
|
10
|
+
let r = () => {
|
|
11
|
+
let t = e(n);
|
|
12
|
+
d.current !== null && d.current !== t && f(), d.current = t;
|
|
13
|
+
};
|
|
14
|
+
if (r(), typeof ResizeObserver > "u") return;
|
|
15
|
+
let i = new ResizeObserver(r);
|
|
16
|
+
return i.observe(t), () => i.disconnect();
|
|
17
|
+
}, o[0] = c, o[1] = l, o[2] = f, o[3] = p) : p = o[3];
|
|
18
|
+
let m;
|
|
19
|
+
o[4] !== s || o[5] !== c || o[6] !== l ? (m = [
|
|
20
|
+
s,
|
|
21
|
+
c,
|
|
22
|
+
l
|
|
23
|
+
], o[4] = s, o[5] = c, o[6] = l, o[7] = m) : m = o[7], t(p, m);
|
|
24
|
+
}
|
|
25
|
+
export { a as useLayoutSwitch };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NavBarContextValue } from "./NavBarContext";
|
|
2
|
+
/**
|
|
3
|
+
* Reads the state of the surrounding `NavBar`
|
|
4
|
+
*
|
|
5
|
+
* @param part the name of the part reading it, for the error message
|
|
6
|
+
* @returns the surrounding `NavBar`'s state
|
|
7
|
+
* @throws MissingContextError when the part is not inside a `NavBar`
|
|
8
|
+
*/
|
|
9
|
+
export declare function useNavBarContext(part: string): NavBarContextValue;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MissingContextError as e } from "../../errors/MissingContextError.js";
|
|
2
|
+
import { NavBarContext as t } from "./NavBarContext.js";
|
|
3
|
+
import { useContext as n } from "react";
|
|
4
|
+
// src/components/NavBar/useNavBarContext.ts
|
|
5
|
+
function r(r) {
|
|
6
|
+
let i = n(t);
|
|
7
|
+
if (i === null) throw new e(r, "NavBar");
|
|
8
|
+
return i;
|
|
9
|
+
}
|
|
10
|
+
export { r as useNavBarContext };
|