@vertz/ui-primitives 0.2.20 → 0.2.21

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 (104) hide show
  1. package/dist/shared/{chunk-ppcv3ehd.js → chunk-0gn67thm.js} +14 -11
  2. package/dist/shared/{chunk-4da5zksy.js → chunk-1dzcjmfq.js} +2 -2
  3. package/dist/shared/{chunk-avxcmmk6.js → chunk-1hv9yd28.js} +6 -6
  4. package/dist/shared/{chunk-kg27s15c.js → chunk-2d05qxdw.js} +4 -4
  5. package/dist/shared/{chunk-bew4bjgf.js → chunk-4jnweh3m.js} +4 -4
  6. package/dist/shared/{chunk-jctqs9m4.js → chunk-7867pr13.js} +36 -12
  7. package/dist/shared/{chunk-rnjm61t0.js → chunk-90hmpm0w.js} +3 -3
  8. package/dist/shared/{chunk-hr9hx58m.js → chunk-ac86qw7a.js} +4 -4
  9. package/dist/shared/{chunk-gt0wth9h.js → chunk-b02fkvts.js} +2 -2
  10. package/dist/shared/{chunk-7kpsyjd7.js → chunk-bsx59bv9.js} +4 -4
  11. package/dist/shared/{chunk-jz0s6srh.js → chunk-cm2akzrm.js} +1 -1
  12. package/dist/shared/{chunk-yr9yzpvq.js → chunk-cvms20w3.js} +82 -57
  13. package/dist/shared/{chunk-ttsyf6ma.js → chunk-d8n8mggh.js} +4 -4
  14. package/dist/shared/{chunk-34yfm2b0.js → chunk-er9625ar.js} +105 -83
  15. package/dist/shared/{chunk-tfyg0qrp.js → chunk-ewxzhtej.js} +5 -5
  16. package/dist/shared/{chunk-4085nbdq.js → chunk-ey4485fh.js} +4 -4
  17. package/dist/shared/{chunk-x2hz98qn.js → chunk-f501vw7e.js} +2 -2
  18. package/dist/shared/{chunk-9hj9p7s2.js → chunk-g67tnd19.js} +36 -30
  19. package/dist/shared/{chunk-j4cm8avr.js → chunk-gbxbkmte.js} +4 -4
  20. package/dist/shared/chunk-gzgyfhz6.js +237 -0
  21. package/dist/shared/{chunk-g9qvd20g.js → chunk-je7tqf67.js} +2 -2
  22. package/dist/shared/{chunk-sqs8kyb2.js → chunk-kr5qg80z.js} +4 -4
  23. package/dist/shared/{chunk-7krvqrwq.js → chunk-kytkmdpc.js} +35 -13
  24. package/dist/shared/{chunk-18y8gfk0.js → chunk-pvy0tcd7.js} +115 -93
  25. package/dist/shared/{chunk-n9nwx58j.js → chunk-q2q20y9a.js} +4 -4
  26. package/dist/shared/{chunk-dpsgb1xw.js → chunk-q8dm19a5.js} +7 -2
  27. package/dist/shared/{chunk-7ffg0caj.js → chunk-q9fgfgh9.js} +7 -5
  28. package/dist/shared/{chunk-m1ptgp1s.js → chunk-qfk1ycfw.js} +6 -6
  29. package/dist/shared/{chunk-x0we8gcy.js → chunk-te4pdqnh.js} +4 -4
  30. package/dist/shared/{chunk-gkddsbmh.js → chunk-v9qddmh9.js} +3 -3
  31. package/dist/shared/{chunk-t1vkvsz2.js → chunk-vm37m55w.js} +4 -4
  32. package/dist/shared/{chunk-8ak7vdk1.js → chunk-y5vdb6br.js} +4 -4
  33. package/dist/shared/{chunk-96d9nr7y.js → chunk-zf0rhm9e.js} +1 -1
  34. package/dist/shared/chunk-ztvj60xp.js +185 -0
  35. package/dist/src/accordion/accordion.d.ts +2 -0
  36. package/dist/src/accordion/accordion.js +1 -5
  37. package/dist/src/alert-dialog/alert-dialog.d.ts +7 -7
  38. package/dist/src/alert-dialog/alert-dialog.js +1 -4
  39. package/dist/src/badge/badge.d.ts +2 -0
  40. package/dist/src/badge/badge.js +1 -3
  41. package/dist/src/button/button.d.ts +2 -0
  42. package/dist/src/button/button.js +1 -3
  43. package/dist/src/calendar/calendar.d.ts +9 -6
  44. package/dist/src/calendar/calendar.js +1 -2
  45. package/dist/src/carousel/carousel.d.ts +2 -0
  46. package/dist/src/carousel/carousel.js +1 -4
  47. package/dist/src/checkbox/checkbox.d.ts +2 -0
  48. package/dist/src/checkbox/checkbox.js +1 -4
  49. package/dist/src/collapsible/collapsible.d.ts +2 -0
  50. package/dist/src/collapsible/collapsible.js +1 -4
  51. package/dist/src/combobox/combobox.d.ts +2 -0
  52. package/dist/src/combobox/combobox.js +1 -5
  53. package/dist/src/command/command.d.ts +2 -0
  54. package/dist/src/command/command.js +1 -5
  55. package/dist/src/context-menu/context-menu.d.ts +2 -0
  56. package/dist/src/context-menu/context-menu.js +1 -7
  57. package/dist/src/date-picker/date-picker.d.ts +6 -6
  58. package/dist/src/date-picker/date-picker.js +1 -10
  59. package/dist/src/dialog/dialog.d.ts +3 -0
  60. package/dist/src/dialog/dialog.js +1 -6
  61. package/dist/src/dropdown-menu/dropdown-menu.d.ts +3 -0
  62. package/dist/src/dropdown-menu/dropdown-menu.js +1 -8
  63. package/dist/src/hover-card/hover-card.d.ts +2 -0
  64. package/dist/src/hover-card/hover-card.js +1 -6
  65. package/dist/src/index.d.ts +744 -34
  66. package/dist/src/index.js +4955 -39
  67. package/dist/src/menu/menu.d.ts +3 -0
  68. package/dist/src/menu/menu.js +1 -7
  69. package/dist/src/menubar/menubar.d.ts +2 -0
  70. package/dist/src/menubar/menubar.js +1 -8
  71. package/dist/src/navigation-menu/navigation-menu.d.ts +7 -5
  72. package/dist/src/navigation-menu/navigation-menu.js +1 -6
  73. package/dist/src/popover/popover.d.ts +2 -0
  74. package/dist/src/popover/popover.js +1 -8
  75. package/dist/src/progress/progress.d.ts +4 -2
  76. package/dist/src/progress/progress.js +1 -4
  77. package/dist/src/radio/radio.d.ts +9 -3
  78. package/dist/src/radio/radio.js +1 -6
  79. package/dist/src/resizable-panel/resizable-panel.d.ts +2 -0
  80. package/dist/src/resizable-panel/resizable-panel.js +1 -4
  81. package/dist/src/scroll-area/scroll-area.d.ts +2 -0
  82. package/dist/src/scroll-area/scroll-area.js +1 -2
  83. package/dist/src/select/select.d.ts +2 -0
  84. package/dist/src/select/select.js +1 -7
  85. package/dist/src/sheet/sheet.js +1 -5
  86. package/dist/src/slider/slider.d.ts +2 -0
  87. package/dist/src/slider/slider.js +1 -5
  88. package/dist/src/switch/switch.d.ts +2 -0
  89. package/dist/src/switch/switch.js +1 -4
  90. package/dist/src/tabs/tabs.d.ts +7 -4
  91. package/dist/src/tabs/tabs.js +1 -6
  92. package/dist/src/toast/toast.d.ts +2 -0
  93. package/dist/src/toast/toast.js +1 -4
  94. package/dist/src/toggle/toggle.d.ts +2 -0
  95. package/dist/src/toggle/toggle.js +1 -4
  96. package/dist/src/toggle-group/toggle-group.d.ts +2 -0
  97. package/dist/src/toggle-group/toggle-group.js +1 -5
  98. package/dist/src/tooltip/tooltip.d.ts +3 -1
  99. package/dist/src/tooltip/tooltip.js +1 -6
  100. package/dist/src/utils.d.ts +61 -1
  101. package/dist/src/utils.js +48 -1
  102. package/package.json +4 -6
  103. package/dist/shared/chunk-8nk0ya7a.js +0 -163
  104. package/dist/shared/chunk-8tvzqry6.js +0 -218
@@ -13,53 +13,19 @@ import {
13
13
  } from "./chunk-8y1jf6xr.js";
14
14
 
15
15
  // src/alert-dialog/alert-dialog.tsx
16
- import { __element, __on } from "@vertz/ui/internals";
16
+ import { __element, __on, __styleStr } from "@vertz/ui/internals";
17
17
  import { signal } from "@vertz/ui";
18
- function AlertDialogRoot(options = {}) {
19
- const { defaultOpen = false, onOpenChange, onAction } = options;
20
- const ids = linkedIds("alertdialog");
21
- const titleId = `${ids.contentId}-title`;
22
- const descriptionId = `${ids.contentId}-description`;
23
- const state = { open: signal(defaultOpen) };
24
- let restoreFocus = null;
25
- let removeTrap = null;
26
- function show() {
27
- state.open.value = true;
28
- setExpanded(trigger, true);
29
- setHidden(overlay, false);
30
- setHidden(content, false);
31
- setDataState(trigger, "open");
32
- setDataState(overlay, "open");
33
- setDataState(content, "open");
34
- restoreFocus = saveFocus();
35
- removeTrap = trapFocus(content);
36
- queueMicrotask(() => cancel.focus());
37
- onOpenChange?.(true);
38
- }
39
- function hide() {
40
- state.open.value = false;
41
- setExpanded(trigger, false);
42
- setDataState(trigger, "closed");
43
- setDataState(overlay, "closed");
44
- setDataState(content, "closed");
45
- setHiddenAnimated(overlay, true);
46
- setHiddenAnimated(content, true);
47
- removeTrap?.();
48
- removeTrap = null;
49
- restoreFocus?.();
50
- restoreFocus = null;
51
- onOpenChange?.(false);
52
- }
53
- const trigger = (() => {
18
+ function AlertDialogTriggerEl(triggerId, contentId, defaultOpen, onClick) {
19
+ return (() => {
54
20
  const __el0 = __element("button");
55
21
  __el0.setAttribute("type", "button");
56
22
  {
57
- const __v = ids.triggerId;
23
+ const __v = triggerId;
58
24
  if (__v != null && __v !== false)
59
25
  __el0.setAttribute("id", __v === true ? "" : __v);
60
26
  }
61
27
  {
62
- const __v = ids.contentId;
28
+ const __v = contentId;
63
29
  if (__v != null && __v !== false)
64
30
  __el0.setAttribute("aria-controls", __v === true ? "" : __v);
65
31
  }
@@ -73,101 +39,157 @@ function AlertDialogRoot(options = {}) {
73
39
  if (__v != null && __v !== false)
74
40
  __el0.setAttribute("data-state", __v === true ? "" : __v);
75
41
  }
76
- __on(__el0, "click", () => {
77
- if (!state.open.peek())
78
- show();
79
- });
42
+ __on(__el0, "click", onClick);
80
43
  return __el0;
81
44
  })();
82
- const overlay = (() => {
83
- const __el1 = __element("div");
84
- __el1.setAttribute("data-alertdialog-overlay", "");
45
+ }
46
+ function AlertDialogOverlayEl(defaultOpen) {
47
+ return (() => {
48
+ const __el0 = __element("div");
49
+ __el0.setAttribute("data-alertdialog-overlay", "");
85
50
  {
86
51
  const __v = defaultOpen ? "false" : "true";
87
52
  if (__v != null && __v !== false)
88
- __el1.setAttribute("aria-hidden", __v === true ? "" : __v);
53
+ __el0.setAttribute("aria-hidden", __v === true ? "" : __v);
89
54
  }
90
55
  {
91
56
  const __v = defaultOpen ? "open" : "closed";
92
57
  if (__v != null && __v !== false)
93
- __el1.setAttribute("data-state", __v === true ? "" : __v);
58
+ __el0.setAttribute("data-state", __v === true ? "" : __v);
94
59
  }
95
60
  {
96
61
  const __v = defaultOpen ? "" : "display: none";
97
62
  if (__v != null && __v !== false)
98
- __el1.setAttribute("style", __v === true ? "" : __v);
63
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
99
64
  }
100
- return __el1;
65
+ return __el0;
101
66
  })();
102
- const content = (() => {
103
- const __el2 = __element("div");
104
- __el2.setAttribute("role", "alertdialog");
67
+ }
68
+ function AlertDialogContentEl(contentId, titleId, descriptionId, defaultOpen) {
69
+ return (() => {
70
+ const __el0 = __element("div");
71
+ __el0.setAttribute("role", "alertdialog");
105
72
  {
106
- const __v = ids.contentId;
73
+ const __v = contentId;
107
74
  if (__v != null && __v !== false)
108
- __el2.setAttribute("id", __v === true ? "" : __v);
75
+ __el0.setAttribute("id", __v === true ? "" : __v);
109
76
  }
110
- __el2.setAttribute("aria-modal", "true");
77
+ __el0.setAttribute("aria-modal", "true");
111
78
  {
112
79
  const __v = titleId;
113
80
  if (__v != null && __v !== false)
114
- __el2.setAttribute("aria-labelledby", __v === true ? "" : __v);
81
+ __el0.setAttribute("aria-labelledby", __v === true ? "" : __v);
115
82
  }
116
83
  {
117
84
  const __v = descriptionId;
118
85
  if (__v != null && __v !== false)
119
- __el2.setAttribute("aria-describedby", __v === true ? "" : __v);
86
+ __el0.setAttribute("aria-describedby", __v === true ? "" : __v);
120
87
  }
121
88
  {
122
89
  const __v = defaultOpen ? "false" : "true";
123
90
  if (__v != null && __v !== false)
124
- __el2.setAttribute("aria-hidden", __v === true ? "" : __v);
91
+ __el0.setAttribute("aria-hidden", __v === true ? "" : __v);
125
92
  }
126
93
  {
127
94
  const __v = defaultOpen ? "open" : "closed";
128
95
  if (__v != null && __v !== false)
129
- __el2.setAttribute("data-state", __v === true ? "" : __v);
96
+ __el0.setAttribute("data-state", __v === true ? "" : __v);
130
97
  }
131
98
  {
132
99
  const __v = defaultOpen ? "" : "display: none";
133
100
  if (__v != null && __v !== false)
134
- __el2.setAttribute("style", __v === true ? "" : __v);
101
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
135
102
  }
136
- return __el2;
103
+ return __el0;
137
104
  })();
138
- const title = (() => {
139
- const __el3 = __element("h2");
105
+ }
106
+ function AlertDialogTitleEl(titleId) {
107
+ return (() => {
108
+ const __el0 = __element("h2");
140
109
  {
141
110
  const __v = titleId;
142
111
  if (__v != null && __v !== false)
143
- __el3.setAttribute("id", __v === true ? "" : __v);
112
+ __el0.setAttribute("id", __v === true ? "" : __v);
144
113
  }
145
- return __el3;
114
+ return __el0;
146
115
  })();
147
- const description = (() => {
148
- const __el4 = __element("p");
116
+ }
117
+ function AlertDialogDescriptionEl(descriptionId) {
118
+ return (() => {
119
+ const __el0 = __element("p");
149
120
  {
150
121
  const __v = descriptionId;
151
122
  if (__v != null && __v !== false)
152
- __el4.setAttribute("id", __v === true ? "" : __v);
123
+ __el0.setAttribute("id", __v === true ? "" : __v);
153
124
  }
154
- return __el4;
125
+ return __el0;
155
126
  })();
156
- const cancel = (() => {
157
- const __el5 = __element("button");
158
- __el5.setAttribute("type", "button");
159
- __on(__el5, "click", () => hide());
160
- return __el5;
127
+ }
128
+ function AlertDialogCancelBtn(onClick) {
129
+ return (() => {
130
+ const __el0 = __element("button");
131
+ __el0.setAttribute("type", "button");
132
+ __on(__el0, "click", onClick);
133
+ return __el0;
161
134
  })();
162
- const action = (() => {
163
- const __el6 = __element("button");
164
- __el6.setAttribute("type", "button");
165
- __on(__el6, "click", () => {
166
- onAction?.();
167
- hide();
168
- });
169
- return __el6;
135
+ }
136
+ function AlertDialogActionBtn(onClick) {
137
+ return (() => {
138
+ const __el0 = __element("button");
139
+ __el0.setAttribute("type", "button");
140
+ __on(__el0, "click", onClick);
141
+ return __el0;
170
142
  })();
143
+ }
144
+ function AlertDialogRoot(options = {}) {
145
+ const { defaultOpen = false, onOpenChange, onAction } = options;
146
+ const ids = linkedIds("alertdialog");
147
+ const titleId = `${ids.contentId}-title`;
148
+ const descriptionId = `${ids.contentId}-description`;
149
+ const state = { open: signal(defaultOpen) };
150
+ let restoreFocus = null;
151
+ let removeTrap = null;
152
+ function show() {
153
+ if (state.open.peek())
154
+ return;
155
+ state.open.value = true;
156
+ setExpanded(trigger, true);
157
+ setHidden(overlay, false);
158
+ setHidden(content, false);
159
+ setDataState(trigger, "open");
160
+ setDataState(overlay, "open");
161
+ setDataState(content, "open");
162
+ restoreFocus = saveFocus();
163
+ removeTrap = trapFocus(content);
164
+ queueMicrotask(() => cancel.focus());
165
+ onOpenChange?.(true);
166
+ }
167
+ function hide() {
168
+ if (!state.open.peek())
169
+ return;
170
+ state.open.value = false;
171
+ setExpanded(trigger, false);
172
+ setDataState(trigger, "closed");
173
+ setDataState(overlay, "closed");
174
+ setDataState(content, "closed");
175
+ setHiddenAnimated(overlay, true);
176
+ setHiddenAnimated(content, true);
177
+ removeTrap?.();
178
+ removeTrap = null;
179
+ restoreFocus?.();
180
+ restoreFocus = null;
181
+ onOpenChange?.(false);
182
+ }
183
+ const trigger = AlertDialogTriggerEl(ids.triggerId, ids.contentId, defaultOpen, show);
184
+ const overlay = AlertDialogOverlayEl(defaultOpen);
185
+ const content = AlertDialogContentEl(ids.contentId, titleId, descriptionId, defaultOpen);
186
+ const title = AlertDialogTitleEl(titleId);
187
+ const description = AlertDialogDescriptionEl(descriptionId);
188
+ const cancel = AlertDialogCancelBtn(() => hide());
189
+ const action = AlertDialogActionBtn(() => {
190
+ onAction?.();
191
+ hide();
192
+ });
171
193
  if (defaultOpen) {
172
194
  restoreFocus = saveFocus();
173
195
  removeTrap = trapFocus(content);
@@ -4,15 +4,15 @@ import {
4
4
  setHidden,
5
5
  setHiddenAnimated
6
6
  } from "./chunk-vvjyx7fe.js";
7
- import {
8
- applyAttrs
9
- } from "./chunk-dpsgb1xw.js";
10
7
  import {
11
8
  linkedIds
12
9
  } from "./chunk-8y1jf6xr.js";
10
+ import {
11
+ applyAttrs
12
+ } from "./chunk-q8dm19a5.js";
13
13
 
14
14
  // src/collapsible/collapsible.tsx
15
- import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
15
+ import { __element, __enterChildren, __exitChildren, __insert, __on, __styleStr } from "@vertz/ui/internals";
16
16
  import { signal } from "@vertz/ui";
17
17
  function CollapsibleRoot(options = {}) {
18
18
  const { defaultOpen = false, disabled = false, onOpenChange, ...attrs } = options;
@@ -95,7 +95,7 @@ function CollapsibleRoot(options = {}) {
95
95
  {
96
96
  const __v = defaultOpen ? "" : "display: none";
97
97
  if (__v != null && __v !== false)
98
- __el1.setAttribute("style", __v === true ? "" : __v);
98
+ __el1.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
99
99
  }
100
100
  return __el1;
101
101
  })();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Keys,
3
3
  isKey
4
- } from "./chunk-jctqs9m4.js";
4
+ } from "./chunk-7867pr13.js";
5
5
  import {
6
6
  setDataState,
7
7
  setExpanded,
@@ -9,12 +9,12 @@ import {
9
9
  setHiddenAnimated,
10
10
  setSelected
11
11
  } from "./chunk-vvjyx7fe.js";
12
- import {
13
- applyAttrs
14
- } from "./chunk-dpsgb1xw.js";
15
12
  import {
16
13
  linkedIds
17
14
  } from "./chunk-8y1jf6xr.js";
15
+ import {
16
+ applyAttrs
17
+ } from "./chunk-q8dm19a5.js";
18
18
 
19
19
  // src/combobox/combobox.tsx
20
20
  import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Calendar
3
- } from "./chunk-18y8gfk0.js";
3
+ } from "./chunk-pvy0tcd7.js";
4
4
  import {
5
5
  Popover
6
- } from "./chunk-m1ptgp1s.js";
6
+ } from "./chunk-qfk1ycfw.js";
7
7
 
8
8
  // src/date-picker/date-picker.ts
9
9
  import { signal } from "@vertz/ui";
@@ -4,29 +4,60 @@ import {
4
4
  import {
5
5
  Keys,
6
6
  isKey
7
- } from "./chunk-jctqs9m4.js";
7
+ } from "./chunk-7867pr13.js";
8
8
  import {
9
9
  setDataState,
10
10
  setDescribedBy,
11
11
  setHidden,
12
12
  setHiddenAnimated
13
13
  } from "./chunk-vvjyx7fe.js";
14
- import {
15
- applyAttrs
16
- } from "./chunk-dpsgb1xw.js";
17
14
  import {
18
15
  uniqueId
19
16
  } from "./chunk-8y1jf6xr.js";
17
+ import {
18
+ applyAttrs
19
+ } from "./chunk-q8dm19a5.js";
20
20
 
21
21
  // src/tooltip/tooltip.tsx
22
22
  import { __element, __on } from "@vertz/ui/internals";
23
23
  import { signal } from "@vertz/ui";
24
+ function TooltipTrigger(show, hide) {
25
+ return (() => {
26
+ const __el0 = __element("span");
27
+ __on(__el0, "mouseenter", show);
28
+ __on(__el0, "mouseleave", hide);
29
+ __on(__el0, "focus", show);
30
+ __on(__el0, "blur", hide);
31
+ __on(__el0, "keydown", (event) => {
32
+ if (isKey(event, Keys.Escape)) {
33
+ hide();
34
+ }
35
+ });
36
+ return __el0;
37
+ })();
38
+ }
39
+ function TooltipContent(contentId) {
40
+ return (() => {
41
+ const __el0 = __element("div");
42
+ __el0.setAttribute("role", "tooltip");
43
+ {
44
+ const __v = contentId;
45
+ if (__v != null && __v !== false)
46
+ __el0.setAttribute("id", __v === true ? "" : __v);
47
+ }
48
+ __el0.setAttribute("aria-hidden", "true");
49
+ __el0.setAttribute("data-state", "closed");
50
+ __el0.setAttribute("style", "display: none");
51
+ return __el0;
52
+ })();
53
+ }
24
54
  function TooltipRoot(options = {}) {
25
55
  const { delay = 300, onOpenChange, positioning, ...attrs } = options;
26
56
  const contentId = uniqueId("tooltip");
27
57
  const state = { open: signal(false) };
28
58
  let showTimeout = null;
29
59
  let floatingCleanup = null;
60
+ const content = TooltipContent(contentId);
30
61
  function show() {
31
62
  if (showTimeout !== null)
32
63
  return;
@@ -58,33 +89,8 @@ function TooltipRoot(options = {}) {
58
89
  floatingCleanup = null;
59
90
  onOpenChange?.(false);
60
91
  }
61
- const trigger = (() => {
62
- const __el0 = __element("span");
63
- __on(__el0, "mouseenter", show);
64
- __on(__el0, "mouseleave", hide);
65
- __on(__el0, "focus", show);
66
- __on(__el0, "blur", hide);
67
- __on(__el0, "keydown", (event) => {
68
- if (isKey(event, Keys.Escape)) {
69
- hide();
70
- }
71
- });
72
- return __el0;
73
- })();
92
+ const trigger = TooltipTrigger(show, hide);
74
93
  setDescribedBy(trigger, contentId);
75
- const content = (() => {
76
- const __el1 = __element("div");
77
- __el1.setAttribute("role", "tooltip");
78
- {
79
- const __v = contentId;
80
- if (__v != null && __v !== false)
81
- __el1.setAttribute("id", __v === true ? "" : __v);
82
- }
83
- __el1.setAttribute("aria-hidden", "true");
84
- __el1.setAttribute("data-state", "closed");
85
- __el1.setAttribute("style", "display: none");
86
- return __el1;
87
- })();
88
94
  applyAttrs(trigger, attrs);
89
95
  return { trigger, content, state };
90
96
  }
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  Keys,
3
3
  isKey
4
- } from "./chunk-jctqs9m4.js";
4
+ } from "./chunk-7867pr13.js";
5
5
  import {
6
6
  setDataState,
7
7
  setValueRange
8
8
  } from "./chunk-vvjyx7fe.js";
9
9
  import {
10
10
  applyAttrs
11
- } from "./chunk-dpsgb1xw.js";
11
+ } from "./chunk-q8dm19a5.js";
12
12
 
13
13
  // src/resizable-panel/resizable-panel.tsx
14
- import { __element, __on } from "@vertz/ui/internals";
14
+ import { __element, __on, __styleStr } from "@vertz/ui/internals";
15
15
  import { signal } from "@vertz/ui";
16
16
  function ResizablePanelRoot(options = {}) {
17
17
  const { orientation = "horizontal", onResize, ...attrs } = options;
@@ -42,7 +42,7 @@ function ResizablePanelRoot(options = {}) {
42
42
  {
43
43
  const __v = `display: flex; flex-direction: ${orientation === "horizontal" ? "row" : "column"};`;
44
44
  if (__v != null && __v !== false)
45
- __el0.setAttribute("style", __v === true ? "" : __v);
45
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
46
46
  }
47
47
  {
48
48
  const __v = orientation;
@@ -0,0 +1,237 @@
1
+ import {
2
+ focusFirst,
3
+ setRovingTabindex
4
+ } from "./chunk-e2v1c9ex.js";
5
+ import {
6
+ Keys,
7
+ handleListNavigation,
8
+ isKey
9
+ } from "./chunk-7867pr13.js";
10
+ import {
11
+ setDataState,
12
+ setExpanded,
13
+ setHidden,
14
+ setHiddenAnimated
15
+ } from "./chunk-vvjyx7fe.js";
16
+ import {
17
+ linkedIds
18
+ } from "./chunk-8y1jf6xr.js";
19
+ import {
20
+ applyAttrs
21
+ } from "./chunk-q8dm19a5.js";
22
+
23
+ // src/navigation-menu/navigation-menu.tsx
24
+ import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
25
+ import { signal } from "@vertz/ui";
26
+ function NavMenuList(triggers, orientation) {
27
+ return (() => {
28
+ const __el0 = __element("div");
29
+ __on(__el0, "keydown", (event) => {
30
+ if (isKey(event, Keys.ArrowLeft, Keys.ArrowRight, Keys.Home, Keys.End)) {
31
+ handleListNavigation(event, triggers, {
32
+ orientation: orientation === "horizontal" ? "horizontal" : "vertical"
33
+ });
34
+ }
35
+ });
36
+ return __el0;
37
+ })();
38
+ }
39
+ function NavMenuViewport() {
40
+ return (() => {
41
+ const __el0 = __element("div");
42
+ return __el0;
43
+ })();
44
+ }
45
+ function NavMenuNav(list, viewport) {
46
+ return (() => {
47
+ const __el0 = __element("nav");
48
+ __enterChildren(__el0);
49
+ __insert(__el0, list);
50
+ __insert(__el0, viewport);
51
+ __exitChildren();
52
+ return __el0;
53
+ })();
54
+ }
55
+ function NavMenuItemTrigger(triggerId, contentId, value, label, onClick, onMouseenter, onMouseleave, onKeydown) {
56
+ return (() => {
57
+ const __el0 = __element("button");
58
+ __el0.setAttribute("type", "button");
59
+ {
60
+ const __v = triggerId;
61
+ if (__v != null && __v !== false)
62
+ __el0.setAttribute("id", __v === true ? "" : __v);
63
+ }
64
+ {
65
+ const __v = contentId;
66
+ if (__v != null && __v !== false)
67
+ __el0.setAttribute("aria-controls", __v === true ? "" : __v);
68
+ }
69
+ {
70
+ const __v = value;
71
+ if (__v != null && __v !== false)
72
+ __el0.setAttribute("data-value", __v === true ? "" : __v);
73
+ }
74
+ __el0.setAttribute("aria-expanded", "false");
75
+ __el0.setAttribute("data-state", "closed");
76
+ __on(__el0, "click", onClick);
77
+ __on(__el0, "mouseenter", onMouseenter);
78
+ __on(__el0, "mouseleave", onMouseleave);
79
+ __on(__el0, "keydown", onKeydown);
80
+ __enterChildren(__el0);
81
+ __insert(__el0, label ?? value);
82
+ __exitChildren();
83
+ return __el0;
84
+ })();
85
+ }
86
+ function NavMenuItemContent(contentId, onMouseenter, onMouseleave, onKeydown) {
87
+ return (() => {
88
+ const __el0 = __element("div");
89
+ {
90
+ const __v = contentId;
91
+ if (__v != null && __v !== false)
92
+ __el0.setAttribute("id", __v === true ? "" : __v);
93
+ }
94
+ __el0.setAttribute("aria-hidden", "true");
95
+ __el0.setAttribute("data-state", "closed");
96
+ __el0.setAttribute("style", "display: none");
97
+ __on(__el0, "mouseenter", onMouseenter);
98
+ __on(__el0, "mouseleave", onMouseleave);
99
+ __on(__el0, "keydown", onKeydown);
100
+ return __el0;
101
+ })();
102
+ }
103
+ function NavMenuLink(href, label) {
104
+ return (() => {
105
+ const __el0 = __element("a");
106
+ {
107
+ const __v = href;
108
+ if (__v != null && __v !== false)
109
+ __el0.setAttribute("href", __v === true ? "" : __v);
110
+ }
111
+ __enterChildren(__el0);
112
+ __insert(__el0, label);
113
+ __exitChildren();
114
+ return __el0;
115
+ })();
116
+ }
117
+ function NavigationMenuRoot(options = {}) {
118
+ const { orientation = "horizontal", delayOpen = 200, delayClose = 300, ...attrs } = options;
119
+ const state = { activeItem: signal(null) };
120
+ const triggers = [];
121
+ const items = new Map;
122
+ let openTimeout = null;
123
+ let closeTimeout = null;
124
+ function cancelTimers() {
125
+ if (openTimeout) {
126
+ clearTimeout(openTimeout);
127
+ openTimeout = null;
128
+ }
129
+ if (closeTimeout) {
130
+ clearTimeout(closeTimeout);
131
+ closeTimeout = null;
132
+ }
133
+ }
134
+ function openItem(value) {
135
+ cancelTimers();
136
+ const current = state.activeItem.peek();
137
+ if (current && current !== value) {
138
+ const prev = items.get(current);
139
+ if (prev) {
140
+ setExpanded(prev.trigger, false);
141
+ setDataState(prev.trigger, "closed");
142
+ setDataState(prev.content, "closed");
143
+ setHiddenAnimated(prev.content, true);
144
+ }
145
+ }
146
+ const item = items.get(value);
147
+ if (!item)
148
+ return;
149
+ state.activeItem.value = value;
150
+ setExpanded(item.trigger, true);
151
+ setHidden(item.content, false);
152
+ setDataState(item.trigger, "open");
153
+ setDataState(item.content, "open");
154
+ }
155
+ function closeAll() {
156
+ cancelTimers();
157
+ const current = state.activeItem.peek();
158
+ if (current) {
159
+ const item = items.get(current);
160
+ if (item) {
161
+ setExpanded(item.trigger, false);
162
+ setDataState(item.trigger, "closed");
163
+ setDataState(item.content, "closed");
164
+ setHiddenAnimated(item.content, true);
165
+ }
166
+ }
167
+ state.activeItem.value = null;
168
+ }
169
+ const list = NavMenuList(triggers, orientation);
170
+ const viewport = NavMenuViewport();
171
+ const root = NavMenuNav(list, viewport);
172
+ function Item(value, label) {
173
+ const ids = linkedIds("nav-menu");
174
+ let contentEl;
175
+ const trigger = NavMenuItemTrigger(ids.triggerId, ids.contentId, value, label, () => {
176
+ if (state.activeItem.peek() === value) {
177
+ closeAll();
178
+ } else {
179
+ openItem(value);
180
+ }
181
+ }, () => {
182
+ cancelTimers();
183
+ openTimeout = setTimeout(() => {
184
+ openItem(value);
185
+ openTimeout = null;
186
+ }, delayOpen);
187
+ }, () => {
188
+ cancelTimers();
189
+ closeTimeout = setTimeout(() => {
190
+ closeAll();
191
+ closeTimeout = null;
192
+ }, delayClose);
193
+ }, (event) => {
194
+ if (isKey(event, Keys.Enter, Keys.Space)) {
195
+ event.preventDefault();
196
+ openItem(value);
197
+ queueMicrotask(() => focusFirst(contentEl));
198
+ }
199
+ if (isKey(event, Keys.Escape)) {
200
+ event.preventDefault();
201
+ closeAll();
202
+ }
203
+ });
204
+ contentEl = NavMenuItemContent(ids.contentId, () => cancelTimers(), () => {
205
+ cancelTimers();
206
+ closeTimeout = setTimeout(() => {
207
+ closeAll();
208
+ closeTimeout = null;
209
+ }, delayClose);
210
+ }, (event) => {
211
+ if (isKey(event, Keys.Escape)) {
212
+ event.preventDefault();
213
+ event.stopPropagation();
214
+ closeAll();
215
+ trigger.focus();
216
+ }
217
+ });
218
+ triggers.push(trigger);
219
+ setRovingTabindex(triggers, 0);
220
+ items.set(value, { trigger, content: contentEl });
221
+ list.appendChild(trigger);
222
+ viewport.appendChild(contentEl);
223
+ return { trigger, content: contentEl };
224
+ }
225
+ function Link(href, label) {
226
+ const a = NavMenuLink(href, label);
227
+ list.appendChild(a);
228
+ return a;
229
+ }
230
+ applyAttrs(root, attrs);
231
+ return { root, list, viewport, state, Item, Link };
232
+ }
233
+ var NavigationMenu = {
234
+ Root: NavigationMenuRoot
235
+ };
236
+
237
+ export { NavigationMenu };