@mortenbrudvik/waveui 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +357 -72
  2. package/dist/components/button/Toolbar.cjs +1 -1
  3. package/dist/components/button/Toolbar.cjs.map +1 -1
  4. package/dist/components/button/Toolbar.mjs +25 -30
  5. package/dist/components/button/Toolbar.mjs.map +1 -1
  6. package/dist/components/button/Toolbar.navigation.cjs +2 -0
  7. package/dist/components/button/Toolbar.navigation.cjs.map +1 -0
  8. package/dist/components/button/Toolbar.navigation.mjs +17 -0
  9. package/dist/components/button/Toolbar.navigation.mjs.map +1 -0
  10. package/dist/components/data-display/Avatar.cjs +1 -1
  11. package/dist/components/data-display/Avatar.cjs.map +1 -1
  12. package/dist/components/data-display/Avatar.context.cjs +2 -0
  13. package/dist/components/data-display/Avatar.context.cjs.map +1 -0
  14. package/dist/components/data-display/Avatar.context.mjs +9 -0
  15. package/dist/components/data-display/Avatar.context.mjs.map +1 -0
  16. package/dist/components/data-display/Avatar.mjs +66 -61
  17. package/dist/components/data-display/Avatar.mjs.map +1 -1
  18. package/dist/components/data-display/InteractionTag.cjs +2 -0
  19. package/dist/components/data-display/InteractionTag.cjs.map +1 -0
  20. package/dist/components/data-display/InteractionTag.mjs +234 -0
  21. package/dist/components/data-display/InteractionTag.mjs.map +1 -0
  22. package/dist/components/data-display/Tag.cjs +1 -1
  23. package/dist/components/data-display/Tag.cjs.map +1 -1
  24. package/dist/components/data-display/Tag.mjs +222 -90
  25. package/dist/components/data-display/Tag.mjs.map +1 -1
  26. package/dist/components/data-display/TagGroup.cjs +2 -0
  27. package/dist/components/data-display/TagGroup.cjs.map +1 -0
  28. package/dist/components/data-display/TagGroup.context.cjs +2 -0
  29. package/dist/components/data-display/TagGroup.context.cjs.map +1 -0
  30. package/dist/components/data-display/TagGroup.context.mjs +113 -0
  31. package/dist/components/data-display/TagGroup.context.mjs.map +1 -0
  32. package/dist/components/data-display/TagGroup.mjs +149 -0
  33. package/dist/components/data-display/TagGroup.mjs.map +1 -0
  34. package/dist/components/data-display/tagStyles.cjs +2 -0
  35. package/dist/components/data-display/tagStyles.cjs.map +1 -0
  36. package/dist/components/data-display/tagStyles.mjs +108 -0
  37. package/dist/components/data-display/tagStyles.mjs.map +1 -0
  38. package/dist/components/feedback/Toaster.cjs +1 -1
  39. package/dist/components/feedback/Toaster.cjs.map +1 -1
  40. package/dist/components/feedback/Toaster.mjs +213 -181
  41. package/dist/components/feedback/Toaster.mjs.map +1 -1
  42. package/dist/components/input/Combobox.expand.cjs +1 -1
  43. package/dist/components/input/Combobox.expand.cjs.map +1 -1
  44. package/dist/components/input/Combobox.expand.mjs +7 -7
  45. package/dist/components/input/Combobox.expand.mjs.map +1 -1
  46. package/dist/components/input/Option.cjs +1 -1
  47. package/dist/components/input/Option.cjs.map +1 -1
  48. package/dist/components/input/Option.mjs +16 -11
  49. package/dist/components/input/Option.mjs.map +1 -1
  50. package/dist/components/input/SwatchPicker.cjs.map +1 -1
  51. package/dist/components/input/SwatchPicker.context.cjs.map +1 -1
  52. package/dist/components/input/SwatchPicker.context.mjs.map +1 -1
  53. package/dist/components/input/SwatchPicker.mjs.map +1 -1
  54. package/dist/components/input/TagPicker.cjs +1 -1
  55. package/dist/components/input/TagPicker.cjs.map +1 -1
  56. package/dist/components/input/TagPicker.context.cjs +2 -0
  57. package/dist/components/input/TagPicker.context.cjs.map +1 -0
  58. package/dist/components/input/TagPicker.context.mjs +20 -0
  59. package/dist/components/input/TagPicker.context.mjs.map +1 -0
  60. package/dist/components/input/TagPicker.create.cjs +2 -0
  61. package/dist/components/input/TagPicker.create.cjs.map +1 -0
  62. package/dist/components/input/TagPicker.create.mjs +24 -0
  63. package/dist/components/input/TagPicker.create.mjs.map +1 -0
  64. package/dist/components/input/TagPicker.mjs +13 -279
  65. package/dist/components/input/TagPicker.mjs.map +1 -1
  66. package/dist/components/input/TagPicker.option.cjs +2 -0
  67. package/dist/components/input/TagPicker.option.cjs.map +1 -0
  68. package/dist/components/input/TagPicker.option.mjs +45 -0
  69. package/dist/components/input/TagPicker.option.mjs.map +1 -0
  70. package/dist/components/input/TagPicker.overflow.cjs +2 -0
  71. package/dist/components/input/TagPicker.overflow.cjs.map +1 -0
  72. package/dist/components/input/TagPicker.overflow.mjs +153 -0
  73. package/dist/components/input/TagPicker.overflow.mjs.map +1 -0
  74. package/dist/components/input/TagPicker.parts.cjs +2 -0
  75. package/dist/components/input/TagPicker.parts.cjs.map +1 -0
  76. package/dist/components/input/TagPicker.parts.mjs +425 -0
  77. package/dist/components/input/TagPicker.parts.mjs.map +1 -0
  78. package/dist/components/input/TagPicker.root.cjs +2 -0
  79. package/dist/components/input/TagPicker.root.cjs.map +1 -0
  80. package/dist/components/input/TagPicker.root.mjs +416 -0
  81. package/dist/components/input/TagPicker.root.mjs.map +1 -0
  82. package/dist/components/layout/Accordion.cjs.map +1 -1
  83. package/dist/components/layout/Accordion.mjs.map +1 -1
  84. package/dist/components/navigation/Hamburger.cjs +2 -0
  85. package/dist/components/navigation/Hamburger.cjs.map +1 -0
  86. package/dist/components/navigation/Hamburger.mjs +54 -0
  87. package/dist/components/navigation/Hamburger.mjs.map +1 -0
  88. package/dist/components/navigation/Nav.cjs +1 -1
  89. package/dist/components/navigation/Nav.cjs.map +1 -1
  90. package/dist/components/navigation/Nav.context.cjs +2 -0
  91. package/dist/components/navigation/Nav.context.cjs.map +1 -0
  92. package/dist/components/navigation/Nav.context.mjs +137 -0
  93. package/dist/components/navigation/Nav.context.mjs.map +1 -0
  94. package/dist/components/navigation/Nav.mjs +151 -258
  95. package/dist/components/navigation/Nav.mjs.map +1 -1
  96. package/dist/components/navigation/Nav.parts.cjs +2 -0
  97. package/dist/components/navigation/Nav.parts.cjs.map +1 -0
  98. package/dist/components/navigation/Nav.parts.mjs +77 -0
  99. package/dist/components/navigation/Nav.parts.mjs.map +1 -0
  100. package/dist/components/navigation/Nav.root.cjs +2 -0
  101. package/dist/components/navigation/Nav.root.cjs.map +1 -0
  102. package/dist/components/navigation/Nav.root.mjs +78 -0
  103. package/dist/components/navigation/Nav.root.mjs.map +1 -0
  104. package/dist/components/navigation/NavDrawer.cjs +2 -0
  105. package/dist/components/navigation/NavDrawer.cjs.map +1 -0
  106. package/dist/components/navigation/NavDrawer.context.cjs +2 -0
  107. package/dist/components/navigation/NavDrawer.context.cjs.map +1 -0
  108. package/dist/components/navigation/NavDrawer.context.mjs +11 -0
  109. package/dist/components/navigation/NavDrawer.context.mjs.map +1 -0
  110. package/dist/components/navigation/NavDrawer.mjs +179 -0
  111. package/dist/components/navigation/NavDrawer.mjs.map +1 -0
  112. package/dist/components/overlays/Dialog.cjs +1 -1
  113. package/dist/components/overlays/Dialog.cjs.map +1 -1
  114. package/dist/components/overlays/Dialog.mjs +190 -125
  115. package/dist/components/overlays/Dialog.mjs.map +1 -1
  116. package/dist/components/overlays/Dialog.shared.cjs +1 -1
  117. package/dist/components/overlays/Dialog.shared.cjs.map +1 -1
  118. package/dist/components/overlays/Dialog.shared.mjs +157 -81
  119. package/dist/components/overlays/Dialog.shared.mjs.map +1 -1
  120. package/dist/components/overlays/Dialog.slots.cjs +2 -0
  121. package/dist/components/overlays/Dialog.slots.cjs.map +1 -0
  122. package/dist/components/overlays/Dialog.slots.mjs +129 -0
  123. package/dist/components/overlays/Dialog.slots.mjs.map +1 -0
  124. package/dist/components/overlays/Drawer.cjs +1 -1
  125. package/dist/components/overlays/Drawer.cjs.map +1 -1
  126. package/dist/components/overlays/Drawer.context.cjs +2 -0
  127. package/dist/components/overlays/Drawer.context.cjs.map +1 -0
  128. package/dist/components/overlays/Drawer.context.mjs +29 -0
  129. package/dist/components/overlays/Drawer.context.mjs.map +1 -0
  130. package/dist/components/overlays/Drawer.mjs +12 -187
  131. package/dist/components/overlays/Drawer.mjs.map +1 -1
  132. package/dist/components/overlays/Drawer.panel.cjs +2 -0
  133. package/dist/components/overlays/Drawer.panel.cjs.map +1 -0
  134. package/dist/components/overlays/Drawer.panel.mjs +159 -0
  135. package/dist/components/overlays/Drawer.panel.mjs.map +1 -0
  136. package/dist/components/overlays/Drawer.parts.cjs +2 -0
  137. package/dist/components/overlays/Drawer.parts.cjs.map +1 -0
  138. package/dist/components/overlays/Drawer.parts.mjs +152 -0
  139. package/dist/components/overlays/Drawer.parts.mjs.map +1 -0
  140. package/dist/components/overlays/Drawer.root.cjs +2 -0
  141. package/dist/components/overlays/Drawer.root.cjs.map +1 -0
  142. package/dist/components/overlays/Drawer.root.mjs +207 -0
  143. package/dist/components/overlays/Drawer.root.mjs.map +1 -0
  144. package/dist/components/overlays/Drawer.scroll.cjs +2 -0
  145. package/dist/components/overlays/Drawer.scroll.cjs.map +1 -0
  146. package/dist/components/overlays/Drawer.scroll.mjs +42 -0
  147. package/dist/components/overlays/Drawer.scroll.mjs.map +1 -0
  148. package/dist/hooks/useDismiss.cjs.map +1 -1
  149. package/dist/hooks/useDismiss.mjs.map +1 -1
  150. package/dist/hooks/useFocusTrap.cjs +1 -1
  151. package/dist/hooks/useFocusTrap.cjs.map +1 -1
  152. package/dist/hooks/useFocusTrap.mjs +115 -98
  153. package/dist/hooks/useFocusTrap.mjs.map +1 -1
  154. package/dist/hooks/useModalLayer.cjs +1 -1
  155. package/dist/hooks/useModalLayer.cjs.map +1 -1
  156. package/dist/hooks/useModalLayer.mjs +35 -22
  157. package/dist/hooks/useModalLayer.mjs.map +1 -1
  158. package/dist/hooks/useRestoreFocus.cjs +1 -1
  159. package/dist/hooks/useRestoreFocus.cjs.map +1 -1
  160. package/dist/hooks/useRestoreFocus.mjs +91 -78
  161. package/dist/hooks/useRestoreFocus.mjs.map +1 -1
  162. package/dist/hooks/useRovingTabIndex.cjs +1 -1
  163. package/dist/hooks/useRovingTabIndex.cjs.map +1 -1
  164. package/dist/hooks/useRovingTabIndex.mjs +102 -78
  165. package/dist/hooks/useRovingTabIndex.mjs.map +1 -1
  166. package/dist/index.cjs +1 -1
  167. package/dist/index.d.cts +2226 -221
  168. package/dist/index.d.ts +2226 -221
  169. package/dist/index.mjs +115 -107
  170. package/dist/lib/classNames.cjs +1 -1
  171. package/dist/lib/classNames.cjs.map +1 -1
  172. package/dist/lib/classNames.mjs +137 -77
  173. package/dist/lib/classNames.mjs.map +1 -1
  174. package/dist/lib/icons.cjs +1 -1
  175. package/dist/lib/icons.cjs.map +1 -1
  176. package/dist/lib/icons.mjs +13 -6
  177. package/dist/lib/icons.mjs.map +1 -1
  178. package/dist/lib/layers.cjs +1 -1
  179. package/dist/lib/layers.cjs.map +1 -1
  180. package/dist/lib/layers.mjs +53 -47
  181. package/dist/lib/layers.mjs.map +1 -1
  182. package/dist/styles.css +1 -1
  183. package/package.json +1 -1
  184. package/src/styles/tokens.css +25 -0
@@ -1,291 +1,184 @@
1
1
  "use client";
2
2
  import { cn as e } from "../../lib/cn.mjs";
3
- import { getElementType as t } from "../../lib/children.mjs";
4
- import { reportMissingContext as n, resolveDeprecatedProp as r, warnDeprecated as i, warnOnce as a } from "../../lib/dev.mjs";
5
- import { renderSlot as o, slotRendersContent as s } from "../../lib/slot.mjs";
6
- import { navCategoryClassNames as c, navClassNames as l, navItemClassNames as u, navSubItemClassNames as d } from "../../lib/classNames.mjs";
7
- import { useEventCallback as f } from "../../hooks/useEventCallback.mjs";
8
- import { useControllable as p } from "../../hooks/useControllable.mjs";
9
- import { useId as m } from "../../hooks/useId.mjs";
10
- import { disabledStyles as h, focusRingInset as g } from "../../lib/styles.mjs";
11
- import { ChevronDownIcon as _ } from "../../lib/icons.mjs";
12
- import * as v from "react";
13
- import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
3
+ import { warnDeprecated as t } from "../../lib/dev.mjs";
4
+ import { materialiseSlotContent as n, renderSlot as r, slotRendersContent as i } from "../../lib/slot.mjs";
5
+ import { navCategoryClassNames as a, navItemClassNames as o, navSubItemClassNames as s } from "../../lib/classNames.mjs";
6
+ import { useId as c } from "../../hooks/useId.mjs";
7
+ import { disabledStyles as l, focusRingInset as u } from "../../lib/styles.mjs";
8
+ import { ChevronDownIcon as d } from "../../lib/icons.mjs";
9
+ import { NavCategoryValueContext as f, NavRovingContext as p, containsValue as m, markNavPart as h, useNavContext as g, useNavListChildCheck as _, useNavValue as v, useRecordCategory as y } from "./Nav.context.mjs";
10
+ import { NavAppItem as b, NavAppItemStatic as x, NavDivider as S, NavSectionHeader as C } from "./Nav.parts.mjs";
11
+ import { NavRoot as w } from "./Nav.root.mjs";
12
+ import * as T from "react";
13
+ import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
14
14
  //#region src/components/navigation/Nav.tsx
15
- function S() {
16
- let e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Set(), n = () => t.forEach((e) => e());
17
- return {
18
- record(t, r) {
19
- (e.get(t) ?? null) !== r && (r === null ? e.delete(t) : e.set(t, r), n());
20
- },
21
- forget(t, r) {
22
- e.get(t) === r && (e.delete(t), n());
23
- },
24
- get: (t) => e.get(t),
25
- subscribe(e) {
26
- return t.add(e), () => {
27
- t.delete(e);
28
- };
29
- }
30
- };
31
- }
32
- var C = v.createContext(null);
33
- C.displayName = "NavContext";
34
- var w = () => {}, T = {
35
- value: "",
36
- select: w,
37
- openCategories: [],
38
- toggleCategory: w,
39
- registerValue: () => w,
40
- currentCategory: void 0,
41
- categoryStore: {
42
- record: w,
43
- forget: w,
44
- get: () => void 0,
45
- subscribe: () => w
46
- }
47
- }, E = v.createContext(null);
48
- E.displayName = "NavCategoryValueContext";
49
- function D(e) {
50
- return v.useContext(C) || (n(e, "Nav"), T);
51
- }
52
- function O(e, t) {
53
- a(`Nav:duplicate-${e}:${t}`, e === "item" ? `Nav: several items share the value "${t}". Nav.Item and Nav.SubItem values must be unique within a Nav; every item with the current value is marked as the current page.` : `Nav: several categories share the value "${t}". Nav.Category values must be unique within a Nav; they open and close together.`);
15
+ var k = "flex h-5 w-5 shrink-0 items-center justify-center";
16
+ function A(t, n) {
17
+ return t && i(t) ? r(t, "span", e(n, k), { "aria-hidden": !0 }) : null;
54
18
  }
55
- function k(e, t, n) {
56
- let { registerValue: r } = e;
57
- v.useEffect(() => r(t, n), [
58
- r,
59
- t,
60
- n
61
- ]);
62
- }
63
- function A(e, t) {
64
- let n = v.useContext(E), { categoryStore: r } = e;
65
- v.useLayoutEffect(() => {
66
- r.record(t, n);
67
- }, [
68
- r,
69
- t,
70
- n
71
- ]);
72
- }
73
- var j = "flex h-5 w-5 shrink-0 items-center justify-center";
74
- function M(t, n) {
75
- return t && s(t) ? o(t, "span", e(n, j), { "aria-hidden": !0 }) : null;
76
- }
77
- var N = {
78
- base: e("flex w-full items-center gap-2 px-4 py-2 text-body-1 text-start no-underline transition-colors motion-reduce:transition-none", g, h),
19
+ var j = {
20
+ base: e("flex w-full items-center gap-2 px-4 py-2 text-body-1 text-start no-underline transition-colors motion-reduce:transition-none", u, l),
79
21
  selected: "bg-subtle-selected text-primary font-semibold border-s-2 border-s-primary",
80
- idle: "text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover"
81
- }, P = {
82
- base: e("flex w-full items-center ps-11 pe-4 py-1.5 text-body-1 text-start no-underline transition-colors motion-reduce:transition-none", g, h),
22
+ idle: "text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover",
23
+ selectedInRow: "text-primary font-semibold",
24
+ rowSelected: "bg-subtle-selected border-s-2 border-s-primary"
25
+ }, M = {
26
+ base: e("flex w-full items-center ps-11 pe-4 py-1.5 text-body-1 text-start no-underline transition-colors motion-reduce:transition-none", u, l),
83
27
  selected: "text-primary font-semibold",
84
- idle: "text-muted-foreground not-disabled:not-aria-disabled:hover:text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover"
85
- }, F = e("flex w-full items-center gap-2 px-4 py-2 text-body-1 font-semibold text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover transition-colors motion-reduce:transition-none", "data-[contains-current]:bg-subtle-selected data-[contains-current]:text-primary data-[contains-current]:border-s-2 data-[contains-current]:border-s-primary", g);
86
- function I(e) {
87
- let { children: t } = e.props;
88
- return typeof t == "function" ? void 0 : t;
89
- }
28
+ idle: "text-muted-foreground not-disabled:not-aria-disabled:hover:text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover",
29
+ selectedInRow: "text-primary font-semibold",
30
+ rowSelected: void 0
31
+ }, N = "group/nav-row flex items-center transition-colors motion-reduce:transition-none", P = "hover:bg-subtle-hover", F = e("flex shrink-0 items-center gap-1 pe-2", "*:opacity-0 group-hover/nav-row:*:opacity-100 group-focus-within/nav-row:*:opacity-100", "forced-colors:*:opacity-100 [@media(hover:none)]:*:opacity-100", "*:has-[[aria-pressed=true]]:opacity-100 *:has-[[aria-expanded=true]]:opacity-100", "[&>[aria-pressed=true]]:opacity-100 [&>[aria-expanded=true]]:opacity-100"), I = e("flex w-full items-center gap-2 px-4 py-2 text-body-1 font-semibold text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover transition-colors motion-reduce:transition-none", "data-[contains-current]:bg-subtle-selected data-[contains-current]:text-primary data-[contains-current]:border-s-2 data-[contains-current]:border-s-primary", u);
90
32
  function L(e) {
91
- return (typeof e == "object" || typeof e == "function") && e !== null && typeof e.then == "function";
92
- }
93
- function R(e, t) {
94
- if (Array.isArray(e)) {
95
- for (let n of e) R(n, t);
96
- return;
97
- }
98
- try {
99
- v.Children.forEach(e, (e) => {
100
- v.isValidElement(e) && t(e);
101
- });
102
- } catch (e) {
103
- if (!L(e)) throw e;
104
- }
105
- }
106
- function z(e, ...n) {
107
- return n.includes(t(e, { suspend: !1 }));
108
- }
109
- function B(e, t) {
110
- let n = !1;
111
- return R(e, (e) => {
112
- n ||= z(e, G, K) && e.props.value === t ? !0 : B(I(e), t);
113
- }), n;
114
- }
115
- function V(e, t) {
116
- let n = [];
117
- if (!t) return n;
118
- let r = (e) => {
119
- R(e, (e) => {
120
- let i = I(e);
121
- z(e, W) && typeof e.props.value == "string" && B(i, t) && n.push(e.props.value), r(i);
122
- });
123
- };
124
- return r(e), n;
125
- }
126
- function H(e) {
127
33
  if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return !0;
128
34
  let t = e.currentTarget, n = t.getAttribute("target");
129
35
  return !!n && n.toLowerCase() !== "_self" || t.hasAttribute("download");
130
36
  }
131
- function U(t, n, r, i, a) {
132
- let { value: o, icon: s, disabled: c = !1, href: l, className: u, children: d, onClick: f, ref: p, ...m } = t, h = n.value === o, g = l !== void 0, _ = (e) => {
133
- if (c) {
37
+ function R(t, r, a, o, s, c, l) {
38
+ let { value: u, icon: d, disabled: f = !1, href: p, className: m, children: h, onClick: g, actions: _, ref: v, ...y } = t, b = r.value === u, x = p !== void 0, S = a ? { "data-roving-value": u } : void 0, C = i(_), w = y.id ?? l, T = C ? { id: w } : void 0, k = (e) => {
39
+ if (f) {
134
40
  e.preventDefault();
135
41
  return;
136
42
  }
137
- f?.(e), !(g ? !e.defaultPrevented && H(e) : e.defaultPrevented) && n.select(o);
138
- }, v = /* @__PURE__ */ x(y, { children: [a && M(s, i.icon), a ? /* @__PURE__ */ b("span", {
139
- className: e(i.content, "flex-1 text-start"),
140
- children: d
141
- }) : d] }), S = e(i.root, r.base, h ? r.selected : r.idle, u);
142
- if (g) return /* @__PURE__ */ b("li", {
143
- className: i.listItem,
144
- children: /* @__PURE__ */ b("a", {
145
- ...m,
146
- ref: p,
147
- href: c ? void 0 : l,
148
- role: c ? "link" : m.role,
149
- "aria-disabled": c ? !0 : m["aria-disabled"],
150
- "aria-current": h ? "page" : void 0,
151
- onClick: _,
152
- className: S,
153
- children: v
154
- })
43
+ g?.(e), !(x ? !e.defaultPrevented && L(e) : e.defaultPrevented) && r.select(u);
44
+ }, j = /* @__PURE__ */ O(E, { children: [c && A(d, s.icon), c ? /* @__PURE__ */ D("span", {
45
+ className: e(s.content, "flex-1 text-start"),
46
+ children: h
47
+ }) : h] }), M = e(s.root, o.base, b ? C ? o.selectedInRow : o.selected : o.idle, C && "min-w-0 flex-1", m), I = C ? e(s.listItem, N, b && o.rowSelected ? o.rowSelected : !f && P) : s.listItem, R = C ? /* @__PURE__ */ D("span", {
48
+ role: "group",
49
+ "aria-labelledby": w,
50
+ "data-wave-nav-actions": "",
51
+ className: e(s.actions, F),
52
+ children: n(_)
53
+ }) : null;
54
+ if (x) return /* @__PURE__ */ O("li", {
55
+ className: I,
56
+ children: [/* @__PURE__ */ D("a", {
57
+ ...y,
58
+ ...T,
59
+ ...S,
60
+ ref: v,
61
+ href: f ? void 0 : p,
62
+ role: f ? "link" : y.role,
63
+ "aria-disabled": f ? !0 : y["aria-disabled"],
64
+ "aria-current": b ? "page" : void 0,
65
+ onClick: k,
66
+ className: M,
67
+ children: j
68
+ }), R]
155
69
  });
156
- let { rel: C, ...w } = m;
157
- return /* @__PURE__ */ b("li", {
158
- className: i.listItem,
159
- children: /* @__PURE__ */ b("button", {
70
+ let { rel: z, ...B } = y;
71
+ return /* @__PURE__ */ O("li", {
72
+ className: I,
73
+ children: [/* @__PURE__ */ D("button", {
160
74
  type: "button",
161
- ...w,
162
- ref: p,
163
- disabled: c,
164
- "aria-current": h ? "page" : void 0,
165
- onClick: _,
166
- className: S,
167
- children: v
168
- })
75
+ ...B,
76
+ ...T,
77
+ ...S,
78
+ ref: v,
79
+ disabled: f,
80
+ "aria-current": b ? "page" : void 0,
81
+ onClick: k,
82
+ className: M,
83
+ children: j
84
+ }), R]
169
85
  });
170
86
  }
171
- var W = ({ value: t, label: n, icon: r, className: a, children: o, ref: s, ...l }) => {
172
- let u = D("Nav.Category"), { value: d, openCategories: f, toggleCategory: p, currentCategory: h, categoryStore: g } = u;
173
- k(u, "category", t);
174
- let y = m("wave-nav-category"), S = f.includes(t), C = !S && d !== "" && B(o, d), w = v.useSyncExternalStore(g.subscribe, () => d !== "" && g.get(d) === t, () => !1);
175
- v.useLayoutEffect(() => {
176
- if (C) return g.record(d, t), () => g.forget(d, t);
87
+ var z = ({ value: n, label: r, icon: i, className: o, children: s, ref: l, ...u }) => {
88
+ let h = g("Nav.Category"), y = T.useContext(p), { value: b, openCategories: x, toggleCategory: S, currentCategory: C, categoryStore: w } = h;
89
+ v(h, "category", n);
90
+ let E = c("wave-nav-category"), k = x.includes(n), j = !k && b !== "" && m(s, b), M = T.useSyncExternalStore(w.subscribe, () => b !== "" && w.get(b) === n, () => !1);
91
+ T.useLayoutEffect(() => {
92
+ if (j) return w.record(b, n), () => w.forget(b, n);
93
+ }, [
94
+ w,
95
+ j,
96
+ b,
97
+ n
98
+ ]);
99
+ let N = !k && (C === n || M || j);
100
+ T.useLayoutEffect(() => {
101
+ if (y) return y.reportCurrentCategory(n, N), () => y.reportCurrentCategory(n, !1);
177
102
  }, [
178
- g,
179
- C,
180
- d,
181
- t
103
+ y,
104
+ n,
105
+ N
182
106
  ]);
183
- let T = !S && (h === t || w || C), O = n, A = o;
184
- if (n === void 0) {
185
- i("Nav.Category", "text children as the label", "label", "Pass the category label in `label` and only the sub-items as children.");
186
- let e = v.Children.toArray(o), t = (e) => typeof e == "string" || typeof e == "number";
187
- O = e.filter(t).join(""), A = e.filter((e) => !t(e));
107
+ let P = T.useRef(null);
108
+ _(P, "Nav.Category", "sub-items");
109
+ let F = r, L = s;
110
+ if (r === void 0) {
111
+ t("Nav.Category", "text children as the label", "label", "Pass the category label in `label` and only the sub-items as children.");
112
+ let e = T.Children.toArray(s), n = (e) => typeof e == "string" || typeof e == "number";
113
+ F = e.filter(n).join(""), L = e.filter((e) => !n(e));
188
114
  }
189
- return /* @__PURE__ */ x("li", {
190
- ref: s,
191
- ...l,
192
- className: e(c.root, a),
193
- children: [/* @__PURE__ */ x("button", {
115
+ return /* @__PURE__ */ O("li", {
116
+ ref: l,
117
+ ...u,
118
+ className: e(a.root, o),
119
+ children: [/* @__PURE__ */ O("button", {
194
120
  type: "button",
195
- "aria-expanded": S,
196
- "aria-controls": S ? y : void 0,
197
- "aria-current": T ? !0 : void 0,
198
- "data-contains-current": T ? "" : void 0,
199
- onClick: () => p(t),
200
- className: e(c.button, F),
121
+ "aria-expanded": k,
122
+ "aria-controls": k ? E : void 0,
123
+ "aria-current": N ? !0 : void 0,
124
+ "data-contains-current": N ? "" : void 0,
125
+ "data-roving-value": y ? `wave-nav-category:${n}` : void 0,
126
+ onClick: () => S(n),
127
+ className: e(a.button, I),
201
128
  children: [
202
- M(r, c.icon),
203
- /* @__PURE__ */ b("span", {
204
- className: e(c.label, "flex-1 text-start"),
205
- children: O
129
+ A(i, a.icon),
130
+ /* @__PURE__ */ D("span", {
131
+ className: e(a.label, "flex-1 text-start"),
132
+ children: F
206
133
  }),
207
- /* @__PURE__ */ b(_, { className: e(c.expandIcon, "shrink-0 transition-transform motion-reduce:transition-none", S && "rotate-180") })
134
+ /* @__PURE__ */ D(d, { className: e(a.expandIcon, "shrink-0 transition-transform motion-reduce:transition-none", k && "rotate-180") })
208
135
  ]
209
- }), S && /* @__PURE__ */ b(E.Provider, {
210
- value: t,
211
- children: /* @__PURE__ */ b("ul", {
212
- id: y,
213
- className: e(c.list, "m-0 list-none p-0"),
214
- children: A
136
+ }), k && /* @__PURE__ */ D(f.Provider, {
137
+ value: n,
138
+ children: /* @__PURE__ */ D("ul", {
139
+ ref: P,
140
+ id: E,
141
+ className: e(a.list, "m-0 list-none p-0"),
142
+ children: L
215
143
  })
216
144
  })]
217
145
  });
218
146
  };
219
- W.displayName = "NavCategory";
220
- function G(e) {
221
- let t = D("Nav.Item");
222
- return k(t, "item", e.value), A(t, e.value), U(e, t, N, {
223
- root: u.root,
224
- listItem: u.listItem,
225
- icon: u.icon,
226
- content: u.content
227
- }, !0);
228
- }
229
- G.displayName = "NavItem";
230
- function K(e) {
231
- let t = D("Nav.SubItem");
232
- return k(t, "item", e.value), A(t, e.value), U(e, t, P, {
233
- root: d.root,
234
- listItem: d.listItem
235
- }, !1);
236
- }
237
- K.displayName = "NavSubItem";
238
- var q = ({ value: t, defaultValue: n, onValueChange: a, selectedValue: o, defaultSelectedValue: s, onNavItemSelect: c, openCategories: u, defaultOpenCategories: d, onOpenCategoriesChange: m, currentCategory: h, className: g, children: _, ref: y, ...x }) => {
239
- let w = r("Nav", t, o, "selectedValue", "value"), T = r("Nav", n, s, "defaultSelectedValue", "defaultValue") ?? "";
240
- c !== void 0 && i("Nav", "onNavItemSelect", "onValueChange");
241
- let [E, D] = p(w, T, a), k = f(c), A = v.useCallback((e) => {
242
- D(e), k(e);
243
- }, [D, k]), [j] = v.useState(() => d ?? V(_, w ?? T)), [M, N] = p(u, j, (e) => m?.([...e])), P = v.useCallback((e) => {
244
- N((t) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
245
- }, [N]), F = v.useRef(null), I = v.useCallback((e, t) => {
246
- let n = F.current ??= /* @__PURE__ */ new Map(), r = `${e}:${t}`, i = (n.get(r) ?? 0) + 1;
247
- return n.set(r, i), i > 1 && O(e, t), () => {
248
- let e = (n.get(r) ?? 1) - 1;
249
- e > 0 ? n.set(r, e) : n.delete(r);
250
- };
251
- }, []), [L] = v.useState(S), R = v.useMemo(() => ({
252
- value: E,
253
- select: A,
254
- openCategories: M,
255
- toggleCategory: P,
256
- registerValue: I,
257
- currentCategory: h,
258
- categoryStore: L
259
- }), [
260
- E,
261
- A,
262
- M,
263
- P,
264
- I,
265
- h,
266
- L
267
- ]);
268
- return /* @__PURE__ */ b(C.Provider, {
269
- value: R,
270
- children: /* @__PURE__ */ b("nav", {
271
- "aria-label": "Navigation",
272
- ...x,
273
- ref: y,
274
- className: e(l.root, "w-60 border-e border-border bg-background py-2", g),
275
- children: /* @__PURE__ */ b("ul", {
276
- className: e(l.list, "m-0 list-none p-0"),
277
- children: _
278
- })
279
- })
280
- });
281
- };
282
- q.displayName = "Nav";
283
- var J = /* @__PURE__ */ Object.assign(q, {
284
- Category: W,
285
- Item: G,
286
- SubItem: K
147
+ z.displayName = "NavCategory", h(z, "category");
148
+ function B(e) {
149
+ let t = g("Nav.Item");
150
+ v(t, "item", e.value), y(t, e.value);
151
+ let n = T.useContext(p), r = c("wave-nav-item");
152
+ return R(e, t, n, j, {
153
+ root: o.root,
154
+ listItem: o.listItem,
155
+ actions: o.actions,
156
+ icon: o.icon,
157
+ content: o.content
158
+ }, !0, r);
159
+ }
160
+ B.displayName = "NavItem", h(B, "entry");
161
+ function V(e) {
162
+ let t = g("Nav.SubItem");
163
+ v(t, "item", e.value), y(t, e.value);
164
+ let n = T.useContext(p), r = c("wave-nav-item");
165
+ return R(e, t, n, M, {
166
+ root: s.root,
167
+ listItem: s.listItem,
168
+ actions: s.actions
169
+ }, !1, r);
170
+ }
171
+ V.displayName = "NavSubItem", h(V, "entry");
172
+ var H = /* @__PURE__ */ Object.assign(w, {
173
+ Category: z,
174
+ Item: B,
175
+ SubItem: V,
176
+ SectionHeader: C,
177
+ Divider: S,
178
+ AppItem: b,
179
+ AppItemStatic: x
287
180
  });
288
181
  //#endregion
289
- export { J as Nav, W as NavCategory, G as NavItem, K as NavSubItem };
182
+ export { H as Nav, b as NavAppItem, x as NavAppItemStatic, z as NavCategory, S as NavDivider, B as NavItem, C as NavSectionHeader, V as NavSubItem };
290
183
 
291
184
  //# sourceMappingURL=Nav.mjs.map