@vertz/ui-primitives 0.2.22 → 0.2.24

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 (236) hide show
  1. package/dist/shared/chunk-00fqgnq1.js +218 -0
  2. package/dist/shared/chunk-1hm0mbke.js +258 -0
  3. package/dist/shared/chunk-20kwns82.js +293 -0
  4. package/dist/shared/chunk-3jack97k.js +509 -0
  5. package/dist/shared/chunk-455p0jbk.js +241 -0
  6. package/dist/shared/chunk-4gyg71bn.js +178 -0
  7. package/dist/shared/chunk-4z006v1j.js +467 -0
  8. package/dist/shared/chunk-585ysr70.js +149 -0
  9. package/dist/shared/chunk-67sn29eh.js +125 -0
  10. package/dist/shared/chunk-75pegjs7.js +26 -0
  11. package/dist/shared/chunk-7a2nqmeh.js +167 -0
  12. package/dist/shared/chunk-7wem1bhb.js +252 -0
  13. package/dist/shared/chunk-8evj43jn.js +284 -0
  14. package/dist/shared/chunk-8t0nm721.js +152 -0
  15. package/dist/shared/chunk-94twh4s4.js +28 -0
  16. package/dist/shared/chunk-98y1sw9y.js +398 -0
  17. package/dist/shared/chunk-99tk72t3.js +69 -0
  18. package/dist/shared/chunk-9eedsnnk.js +164 -0
  19. package/dist/shared/chunk-9hv3vc72.js +215 -0
  20. package/dist/shared/chunk-aa3w85hn.js +321 -0
  21. package/dist/shared/chunk-axpbdpgx.js +177 -0
  22. package/dist/shared/chunk-b4zzg457.js +410 -0
  23. package/dist/shared/chunk-brk0drrk.js +202 -0
  24. package/dist/shared/chunk-czv0kqj4.js +107 -0
  25. package/dist/shared/chunk-d83ag07h.js +189 -0
  26. package/dist/shared/chunk-de18ashk.js +134 -0
  27. package/dist/shared/chunk-dvk4h36t.js +140 -0
  28. package/dist/shared/chunk-e1jcf22s.js +79 -0
  29. package/dist/shared/chunk-e3h0ddmx.js +168 -0
  30. package/dist/shared/chunk-e6660g7e.js +179 -0
  31. package/dist/shared/chunk-eq4d9b0w.js +147 -0
  32. package/dist/shared/chunk-ev367pq3.js +102 -0
  33. package/dist/shared/chunk-f0wy7k56.js +183 -0
  34. package/dist/shared/chunk-fjykbv0v.js +214 -0
  35. package/dist/shared/chunk-ghkw5bjq.js +55 -0
  36. package/dist/shared/chunk-gqb1n1hj.js +60 -0
  37. package/dist/shared/chunk-hdvdfd1c.js +96 -0
  38. package/dist/shared/chunk-hfjtkytb.js +310 -0
  39. package/dist/shared/chunk-hpvjfj0j.js +31 -0
  40. package/dist/shared/chunk-hxmxvp56.js +67 -0
  41. package/dist/shared/chunk-j9m2f0rd.js +162 -0
  42. package/dist/shared/chunk-jdygp28a.js +260 -0
  43. package/dist/shared/chunk-jpyjk616.js +52 -0
  44. package/dist/shared/chunk-jqre4qtw.js +180 -0
  45. package/dist/shared/{chunk-myq79qew.js → chunk-jsa3byag.js} +48 -28
  46. package/dist/shared/chunk-jzy1bkdk.js +203 -0
  47. package/dist/shared/chunk-knzg86am.js +168 -0
  48. package/dist/shared/chunk-kskxxc2q.js +228 -0
  49. package/dist/shared/chunk-metxdt5x.js +28 -0
  50. package/dist/shared/chunk-mhn2aazf.js +353 -0
  51. package/dist/shared/chunk-mtx2cfbx.js +175 -0
  52. package/dist/shared/chunk-nj420k31.js +54 -0
  53. package/dist/shared/chunk-nsmvdxgp.js +213 -0
  54. package/dist/shared/{chunk-w9dag6ce.js → chunk-pdzmg245.js} +133 -85
  55. package/dist/shared/chunk-pzknpa1y.js +327 -0
  56. package/dist/shared/chunk-q1ff3xp3.js +95 -0
  57. package/dist/shared/chunk-q7xbcj9q.js +7 -0
  58. package/dist/shared/chunk-qhnany7w.js +179 -0
  59. package/dist/shared/chunk-qrm43tr3.js +357 -0
  60. package/dist/shared/{chunk-jda3v59q.js → chunk-qsp7sfhp.js} +2 -2
  61. package/dist/shared/{chunk-dhyr0s9n.js → chunk-qwqnjjg8.js} +1 -1
  62. package/dist/shared/chunk-r0rz7z03.js +266 -0
  63. package/dist/shared/chunk-r3ngaa64.js +418 -0
  64. package/dist/shared/chunk-r3pffzss.js +13 -0
  65. package/dist/shared/chunk-rrt62bp0.js +353 -0
  66. package/dist/shared/chunk-s24gkmna.js +131 -0
  67. package/dist/shared/chunk-s62e7jf4.js +30 -0
  68. package/dist/shared/chunk-spng4yb9.js +73 -0
  69. package/dist/shared/chunk-tn0m98j8.js +42 -0
  70. package/dist/shared/chunk-v0b5pkcq.js +30 -0
  71. package/dist/shared/chunk-v11kd39k.js +162 -0
  72. package/dist/shared/{chunk-0mcr52hc.js → chunk-vef3sepw.js} +17 -1
  73. package/dist/shared/chunk-vkscwzpr.js +294 -0
  74. package/dist/shared/chunk-vv187snj.js +112 -0
  75. package/dist/shared/chunk-vy874zxe.js +68 -0
  76. package/dist/shared/chunk-wqsek87j.js +311 -0
  77. package/dist/shared/chunk-wtkxz2te.js +157 -0
  78. package/dist/shared/chunk-y1hpsqzy.js +185 -0
  79. package/dist/shared/chunk-y4mmmayp.js +206 -0
  80. package/dist/shared/chunk-yfzddvxc.js +71 -0
  81. package/dist/src/accordion/accordion-composed.d.ts +30 -0
  82. package/dist/src/accordion/accordion-composed.js +6 -0
  83. package/dist/src/accordion/accordion.js +1 -1
  84. package/dist/src/alert/alert-composed.d.ts +26 -0
  85. package/dist/src/alert/alert-composed.js +6 -0
  86. package/dist/src/alert-dialog/alert-dialog-composed.d.ts +40 -0
  87. package/dist/src/alert-dialog/alert-dialog-composed.js +6 -0
  88. package/dist/src/alert-dialog/alert-dialog.js +1 -1
  89. package/dist/src/avatar/avatar-composed.d.ts +33 -0
  90. package/dist/src/avatar/avatar-composed.js +6 -0
  91. package/dist/src/badge/badge-composed.d.ts +33 -0
  92. package/dist/src/badge/badge-composed.js +6 -0
  93. package/dist/src/badge/badge.js +1 -1
  94. package/dist/src/breadcrumb/breadcrumb-composed.d.ts +34 -0
  95. package/dist/src/breadcrumb/breadcrumb-composed.js +6 -0
  96. package/dist/src/button/button-composed.d.ts +34 -0
  97. package/dist/src/button/button-composed.js +6 -0
  98. package/dist/src/button/button.js +1 -1
  99. package/dist/src/calendar/calendar-composed.d.ts +42 -0
  100. package/dist/src/calendar/calendar-composed.js +6 -0
  101. package/dist/src/calendar/calendar.js +1 -1
  102. package/dist/src/card/card-composed.d.ts +34 -0
  103. package/dist/src/card/card-composed.js +6 -0
  104. package/dist/src/carousel/carousel-composed.d.ts +32 -0
  105. package/dist/src/carousel/carousel-composed.js +6 -0
  106. package/dist/src/carousel/carousel.js +1 -1
  107. package/dist/src/checkbox/checkbox-composed.d.ts +18 -0
  108. package/dist/src/checkbox/checkbox-composed.js +6 -0
  109. package/dist/src/checkbox/checkbox.js +1 -1
  110. package/dist/src/collapsible/collapsible-composed.d.ts +26 -0
  111. package/dist/src/collapsible/collapsible-composed.js +6 -0
  112. package/dist/src/collapsible/collapsible.js +1 -1
  113. package/dist/src/combobox/combobox-composed.d.ts +30 -0
  114. package/dist/src/combobox/combobox-composed.js +6 -0
  115. package/dist/src/combobox/combobox.js +1 -1
  116. package/dist/src/command/command-composed.d.ts +67 -0
  117. package/dist/src/command/command-composed.js +6 -0
  118. package/dist/src/command/command.js +1 -1
  119. package/dist/src/composed/with-styles.d.ts +38 -0
  120. package/dist/src/composed/with-styles.js +6 -0
  121. package/dist/src/context-menu/context-menu-composed.d.ts +51 -0
  122. package/dist/src/context-menu/context-menu-composed.js +6 -0
  123. package/dist/src/context-menu/context-menu.js +1 -1
  124. package/dist/src/date-picker/date-picker-composed.d.ts +77 -0
  125. package/dist/src/date-picker/date-picker-composed.js +6 -0
  126. package/dist/src/date-picker/date-picker.js +1 -1
  127. package/dist/src/dialog/dialog-composed.d.ts +36 -0
  128. package/dist/src/dialog/dialog-composed.js +6 -0
  129. package/dist/src/dialog/dialog-stack-parts.d.ts +16 -0
  130. package/dist/src/dialog/dialog-stack-parts.js +18 -0
  131. package/dist/src/dialog/dialog.js +1 -1
  132. package/dist/src/dropdown-menu/dropdown-menu-composed.d.ts +51 -0
  133. package/dist/src/dropdown-menu/dropdown-menu-composed.js +6 -0
  134. package/dist/src/dropdown-menu/dropdown-menu.js +1 -1
  135. package/dist/src/empty-state/empty-state-composed.d.ts +30 -0
  136. package/dist/src/empty-state/empty-state-composed.js +6 -0
  137. package/dist/src/form-group/form-group-composed.d.ts +24 -0
  138. package/dist/src/form-group/form-group-composed.js +6 -0
  139. package/dist/src/hover-card/hover-card-composed.d.ts +38 -0
  140. package/dist/src/hover-card/hover-card-composed.js +6 -0
  141. package/dist/src/hover-card/hover-card.js +1 -1
  142. package/dist/src/index.d.ts +1284 -804
  143. package/dist/src/index.js +78 -5281
  144. package/dist/src/input/input-composed.d.ts +35 -0
  145. package/dist/src/input/input-composed.js +6 -0
  146. package/dist/src/label/label-composed.d.ts +32 -0
  147. package/dist/src/label/label-composed.js +6 -0
  148. package/dist/src/menu/menu-composed.d.ts +51 -0
  149. package/dist/src/menu/menu-composed.js +6 -0
  150. package/dist/src/menu/menu.js +1 -1
  151. package/dist/src/menubar/menubar-composed.d.ts +56 -0
  152. package/dist/src/menubar/menubar-composed.js +6 -0
  153. package/dist/src/menubar/menubar.js +1 -1
  154. package/dist/src/navigation-menu/navigation-menu-composed.d.ts +56 -0
  155. package/dist/src/navigation-menu/navigation-menu-composed.js +6 -0
  156. package/dist/src/navigation-menu/navigation-menu.js +1 -1
  157. package/dist/src/pagination/pagination-composed.d.ts +30 -0
  158. package/dist/src/pagination/pagination-composed.js +6 -0
  159. package/dist/src/popover/popover-composed.d.ts +36 -0
  160. package/dist/src/popover/popover-composed.js +6 -0
  161. package/dist/src/popover/popover.js +1 -1
  162. package/dist/src/progress/progress-composed.d.ts +17 -0
  163. package/dist/src/progress/progress-composed.js +6 -0
  164. package/dist/src/progress/progress.js +1 -1
  165. package/dist/src/radio/radio-composed.d.ts +24 -0
  166. package/dist/src/radio/radio-composed.js +6 -0
  167. package/dist/src/radio/radio.js +1 -1
  168. package/dist/src/resizable-panel/resizable-panel-composed.d.ts +33 -0
  169. package/dist/src/resizable-panel/resizable-panel-composed.js +6 -0
  170. package/dist/src/resizable-panel/resizable-panel.js +1 -1
  171. package/dist/src/scroll-area/scroll-area-composed.d.ts +17 -0
  172. package/dist/src/scroll-area/scroll-area-composed.js +6 -0
  173. package/dist/src/scroll-area/scroll-area.js +1 -1
  174. package/dist/src/select/select-composed.d.ts +53 -0
  175. package/dist/src/select/select-composed.js +6 -0
  176. package/dist/src/select/select.js +1 -1
  177. package/dist/src/separator/separator-composed.d.ts +32 -0
  178. package/dist/src/separator/separator-composed.js +6 -0
  179. package/dist/src/sheet/sheet-composed.d.ts +34 -0
  180. package/dist/src/sheet/sheet-composed.js +6 -0
  181. package/dist/src/sheet/sheet.js +1 -1
  182. package/dist/src/skeleton/skeleton-composed.d.ts +65 -0
  183. package/dist/src/skeleton/skeleton-composed.js +6 -0
  184. package/dist/src/slider/slider-composed.d.ts +22 -0
  185. package/dist/src/slider/slider-composed.js +6 -0
  186. package/dist/src/slider/slider.js +1 -1
  187. package/dist/src/switch/switch-composed.d.ts +17 -0
  188. package/dist/src/switch/switch-composed.js +6 -0
  189. package/dist/src/switch/switch.js +1 -1
  190. package/dist/src/table/table-composed.d.ts +34 -0
  191. package/dist/src/table/table-composed.js +6 -0
  192. package/dist/src/tabs/tabs-composed.d.ts +33 -0
  193. package/dist/src/tabs/tabs-composed.js +6 -0
  194. package/dist/src/tabs/tabs.js +1 -1
  195. package/dist/src/textarea/textarea-composed.d.ts +35 -0
  196. package/dist/src/textarea/textarea-composed.js +6 -0
  197. package/dist/src/toast/toast.js +1 -1
  198. package/dist/src/toggle/toggle-composed.d.ts +16 -0
  199. package/dist/src/toggle/toggle-composed.js +6 -0
  200. package/dist/src/toggle/toggle.js +1 -1
  201. package/dist/src/toggle-group/toggle-group-composed.d.ts +24 -0
  202. package/dist/src/toggle-group/toggle-group-composed.js +6 -0
  203. package/dist/src/toggle-group/toggle-group.js +1 -1
  204. package/dist/src/tooltip/tooltip-composed.d.ts +36 -0
  205. package/dist/src/tooltip/tooltip-composed.js +6 -0
  206. package/dist/src/tooltip/tooltip.js +1 -1
  207. package/dist/src/utils.js +1 -1
  208. package/package.json +3 -3
  209. package/dist/shared/chunk-07yzsaaw.js +0 -165
  210. package/dist/shared/chunk-279bzynx.js +0 -132
  211. package/dist/shared/chunk-27xs9apd.js +0 -288
  212. package/dist/shared/chunk-2k8gxzdf.js +0 -151
  213. package/dist/shared/chunk-3rp73gkd.js +0 -175
  214. package/dist/shared/chunk-4rf1m34c.js +0 -267
  215. package/dist/shared/chunk-56reyd5r.js +0 -64
  216. package/dist/shared/chunk-7bxsf80c.js +0 -60
  217. package/dist/shared/chunk-8qtexw5s.js +0 -199
  218. package/dist/shared/chunk-9ezgd78r.js +0 -142
  219. package/dist/shared/chunk-ajpj10z0.js +0 -282
  220. package/dist/shared/chunk-c46v0fsw.js +0 -117
  221. package/dist/shared/chunk-e4mm5e59.js +0 -178
  222. package/dist/shared/chunk-fqa5bwn1.js +0 -128
  223. package/dist/shared/chunk-g8hnc95b.js +0 -219
  224. package/dist/shared/chunk-j2tdpxgc.js +0 -185
  225. package/dist/shared/chunk-k8nabsxm.js +0 -330
  226. package/dist/shared/chunk-kcnq15je.js +0 -175
  227. package/dist/shared/chunk-mqs4qq0b.js +0 -46
  228. package/dist/shared/chunk-pg2yjn8f.js +0 -88
  229. package/dist/shared/chunk-rb53v045.js +0 -71
  230. package/dist/shared/chunk-s6a2yph8.js +0 -239
  231. package/dist/shared/chunk-vhx3sqw6.js +0 -196
  232. package/dist/shared/chunk-w318par6.js +0 -204
  233. package/dist/shared/chunk-wcdq7bew.js +0 -133
  234. package/dist/shared/chunk-z0gwkzgp.js +0 -34
  235. package/dist/shared/chunk-z850et33.js +0 -161
  236. package/dist/shared/chunk-zyfc6cx3.js +0 -61
@@ -0,0 +1,215 @@
1
+ import {
2
+ setRovingTabindex
3
+ } from "./chunk-e2v1c9ex.js";
4
+ import {
5
+ handleListNavigation
6
+ } from "./chunk-7867pr13.js";
7
+ import {
8
+ setDataState,
9
+ setHidden,
10
+ setSelected
11
+ } from "./chunk-vevfhpc9.js";
12
+ import {
13
+ uniqueId
14
+ } from "./chunk-8y1jf6xr.js";
15
+ import {
16
+ applyAttrs
17
+ } from "./chunk-2db2dnp3.js";
18
+
19
+ // src/tabs/tabs.tsx
20
+ import { __discardMountFrame, __element, __enterChildren, __exitChildren, __flushMountFrame, __insert, __on, __pushMountFrame, __styleStr } from "@vertz/ui/internals";
21
+ import { signal } from "@vertz/ui";
22
+ function TabList(orientation, triggers, tabValues, selectTab) {
23
+ const __mfDepth = __pushMountFrame();
24
+ try {
25
+ const __mfResult0 = (() => {
26
+ const __el0 = __element("div");
27
+ __el0.setAttribute("role", "tablist");
28
+ {
29
+ const __v = orientation === "vertical" ? "vertical" : undefined;
30
+ if (__v != null && __v !== false)
31
+ __el0.setAttribute("aria-orientation", __v === true ? "" : __v);
32
+ }
33
+ __on(__el0, "keydown", (event) => {
34
+ const result = handleListNavigation(event, triggers, {
35
+ orientation
36
+ });
37
+ if (result) {
38
+ const idx = triggers.indexOf(result);
39
+ if (idx >= 0) {
40
+ const val = tabValues[idx];
41
+ if (val !== undefined)
42
+ selectTab(val);
43
+ }
44
+ }
45
+ });
46
+ return __el0;
47
+ })();
48
+ __flushMountFrame();
49
+ return __mfResult0;
50
+ } catch (__mfErr) {
51
+ __discardMountFrame(__mfDepth);
52
+ throw __mfErr;
53
+ }
54
+ }
55
+ function TabTrigger(triggerId, panelId, value, label, isActive, selectTab) {
56
+ const __mfDepth = __pushMountFrame();
57
+ try {
58
+ const __mfResult0 = (() => {
59
+ const __el0 = __element("button");
60
+ __el0.setAttribute("type", "button");
61
+ __el0.setAttribute("role", "tab");
62
+ {
63
+ const __v = triggerId;
64
+ if (__v != null && __v !== false)
65
+ __el0.setAttribute("id", __v === true ? "" : __v);
66
+ }
67
+ {
68
+ const __v = panelId;
69
+ if (__v != null && __v !== false)
70
+ __el0.setAttribute("aria-controls", __v === true ? "" : __v);
71
+ }
72
+ {
73
+ const __v = value;
74
+ if (__v != null && __v !== false)
75
+ __el0.setAttribute("data-value", __v === true ? "" : __v);
76
+ }
77
+ {
78
+ const __v = isActive ? "true" : "false";
79
+ if (__v != null && __v !== false)
80
+ __el0.setAttribute("aria-selected", __v === true ? "" : __v);
81
+ }
82
+ {
83
+ const __v = isActive ? "active" : "inactive";
84
+ if (__v != null && __v !== false)
85
+ __el0.setAttribute("data-state", __v === true ? "" : __v);
86
+ }
87
+ __on(__el0, "click", () => {
88
+ selectTab(value);
89
+ });
90
+ __enterChildren(__el0);
91
+ __insert(__el0, label ?? value);
92
+ __exitChildren();
93
+ return __el0;
94
+ })();
95
+ __flushMountFrame();
96
+ return __mfResult0;
97
+ } catch (__mfErr) {
98
+ __discardMountFrame(__mfDepth);
99
+ throw __mfErr;
100
+ }
101
+ }
102
+ function TabsContainer(list) {
103
+ const __mfDepth = __pushMountFrame();
104
+ try {
105
+ const __mfResult0 = (() => {
106
+ const __el0 = __element("div");
107
+ __enterChildren(__el0);
108
+ __insert(__el0, list);
109
+ __exitChildren();
110
+ return __el0;
111
+ })();
112
+ __flushMountFrame();
113
+ return __mfResult0;
114
+ } catch (__mfErr) {
115
+ __discardMountFrame(__mfDepth);
116
+ throw __mfErr;
117
+ }
118
+ }
119
+ function TabPanel(panelId, triggerId, isActive) {
120
+ const __mfDepth = __pushMountFrame();
121
+ try {
122
+ const __mfResult0 = (() => {
123
+ const __el0 = __element("div");
124
+ __el0.setAttribute("role", "tabpanel");
125
+ {
126
+ const __v = panelId;
127
+ if (__v != null && __v !== false)
128
+ __el0.setAttribute("id", __v === true ? "" : __v);
129
+ }
130
+ {
131
+ const __v = triggerId;
132
+ if (__v != null && __v !== false)
133
+ __el0.setAttribute("aria-labelledby", __v === true ? "" : __v);
134
+ }
135
+ __el0.setAttribute("tabindex", "0");
136
+ {
137
+ const __v = isActive ? "false" : "true";
138
+ if (__v != null && __v !== false)
139
+ __el0.setAttribute("aria-hidden", __v === true ? "" : __v);
140
+ }
141
+ {
142
+ const __v = isActive ? "active" : "inactive";
143
+ if (__v != null && __v !== false)
144
+ __el0.setAttribute("data-state", __v === true ? "" : __v);
145
+ }
146
+ {
147
+ const __v = { display: isActive ? "" : "none" };
148
+ if (__v != null && __v !== false)
149
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
150
+ }
151
+ return __el0;
152
+ })();
153
+ __flushMountFrame();
154
+ return __mfResult0;
155
+ } catch (__mfErr) {
156
+ __discardMountFrame(__mfDepth);
157
+ throw __mfErr;
158
+ }
159
+ }
160
+ function TabsRoot(options = {}) {
161
+ const { defaultValue = "", orientation = "horizontal", onValueChange, ...attrs } = options;
162
+ const state = { value: signal(defaultValue) };
163
+ const triggers = [];
164
+ const panels = [];
165
+ const tabValues = [];
166
+ function selectTab(value) {
167
+ state.value.value = value;
168
+ for (let i = 0;i < tabValues.length; i++) {
169
+ const isActive = tabValues[i] === value;
170
+ const trig = triggers[i];
171
+ const panel = panels[i];
172
+ if (!trig || !panel)
173
+ continue;
174
+ setSelected(trig, isActive);
175
+ setDataState(trig, isActive ? "active" : "inactive");
176
+ trig.setAttribute("tabindex", isActive ? "0" : "-1");
177
+ setHidden(panel, !isActive);
178
+ setDataState(panel, isActive ? "active" : "inactive");
179
+ }
180
+ onValueChange?.(value);
181
+ }
182
+ const list = TabList(orientation, triggers, tabValues, selectTab);
183
+ const root = TabsContainer(list);
184
+ const cleanups = [];
185
+ function Tab(value, label) {
186
+ const baseId = uniqueId("tab");
187
+ const triggerId = `${baseId}-trigger`;
188
+ const panelId = `${baseId}-panel`;
189
+ const isActive = value === state.value.peek();
190
+ const trig = TabTrigger(triggerId, panelId, value, label, isActive, selectTab);
191
+ const handleClick = () => {
192
+ trig.focus();
193
+ };
194
+ trig.addEventListener("click", handleClick);
195
+ cleanups.push(() => trig.removeEventListener("click", handleClick));
196
+ const panel = TabPanel(panelId, triggerId, isActive);
197
+ triggers.push(trig);
198
+ panels.push(panel);
199
+ tabValues.push(value);
200
+ setRovingTabindex(triggers, triggers.findIndex((t) => tabValues[triggers.indexOf(t)] === state.value.peek()));
201
+ return { trigger: trig, panel };
202
+ }
203
+ function destroy() {
204
+ for (const cleanup of cleanups)
205
+ cleanup();
206
+ cleanups.length = 0;
207
+ }
208
+ applyAttrs(root, attrs);
209
+ return { root, list, state, Tab, destroy };
210
+ }
211
+ var Tabs = {
212
+ Root: TabsRoot
213
+ };
214
+
215
+ export { Tabs };
@@ -0,0 +1,321 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-q7xbcj9q.js";
4
+ import {
5
+ createDismiss
6
+ } from "./chunk-a6wp8c32.js";
7
+ import {
8
+ createFloatingPosition,
9
+ virtualElement
10
+ } from "./chunk-vef3sepw.js";
11
+ import {
12
+ Keys,
13
+ handleListNavigation,
14
+ isKey
15
+ } from "./chunk-7867pr13.js";
16
+ import {
17
+ linkedIds
18
+ } from "./chunk-8y1jf6xr.js";
19
+
20
+ // src/context-menu/context-menu-composed.tsx
21
+ import { computed, signal } from "@vertz/ui";
22
+ import { __append, __attr, __child, __discardMountFrame, __element, __enterChildren, __exitChildren, __flushMountFrame, __on, __pushMountFrame, __styleStr } from "@vertz/ui/internals";
23
+ import { createContext, onMount, ref, useContext } from "@vertz/ui";
24
+ var ContextMenuContext = createContext(undefined, "@vertz/ui-primitives::ContextMenuContext");
25
+ function useContextMenuContext(componentName) {
26
+ const ctx = useContext(ContextMenuContext);
27
+ if (!ctx) {
28
+ throw new Error(`<ContextMenu.${componentName}> must be used inside <ContextMenu>. ` + "Ensure it is a direct or nested child of the ContextMenu root component.");
29
+ }
30
+ return ctx;
31
+ }
32
+ function ContextMenuTrigger(__props) {
33
+ const __mfDepth = __pushMountFrame();
34
+ try {
35
+ const ctx = useContextMenuContext("Trigger");
36
+ const el = computed(() => (() => {
37
+ const __el0 = __element("div");
38
+ {
39
+ const __v = { display: "contents" };
40
+ if (__v != null && __v !== false)
41
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
42
+ }
43
+ __el0.setAttribute("data-part", "trigger");
44
+ __el0.setAttribute("data-contextmenu-trigger", "");
45
+ __enterChildren(__el0);
46
+ __append(__el0, __child(() => __props.children));
47
+ __exitChildren();
48
+ return __el0;
49
+ })());
50
+ onMount(() => {
51
+ const triggerEl = el.value;
52
+ function handleContextMenu(e) {
53
+ e.preventDefault();
54
+ ctx.open(e.clientX, e.clientY);
55
+ }
56
+ triggerEl.addEventListener("contextmenu", handleContextMenu);
57
+ return () => triggerEl.removeEventListener("contextmenu", handleContextMenu);
58
+ });
59
+ const __mfResult0 = el.value;
60
+ __flushMountFrame();
61
+ return __mfResult0;
62
+ } catch (__mfErr) {
63
+ __discardMountFrame(__mfDepth);
64
+ throw __mfErr;
65
+ }
66
+ }
67
+ function ContextMenuContent(__props) {
68
+ const __mfDepth = __pushMountFrame();
69
+ try {
70
+ const ctx = useContextMenuContext("Content");
71
+ const instanceIndex = ctx._contentCount.value++;
72
+ if (instanceIndex > 0) {
73
+ console.warn("Duplicate <ContextMenu.Content> detected – only the first is used");
74
+ }
75
+ const el = computed(() => (() => {
76
+ const __el0 = __element("div");
77
+ ctx.contentRef.current = __el0;
78
+ __el0.setAttribute("role", "menu");
79
+ __el0.setAttribute("tabindex", "-1");
80
+ {
81
+ const __v = ctx.contentId;
82
+ if (__v != null && __v !== false)
83
+ __el0.setAttribute("id", __v === true ? "" : __v);
84
+ }
85
+ __el0.setAttribute("data-contextmenu-content", "");
86
+ __el0.setAttribute("aria-hidden", "true");
87
+ __el0.setAttribute("data-state", "closed");
88
+ {
89
+ const __v = { display: "none" };
90
+ if (__v != null && __v !== false)
91
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
92
+ }
93
+ __attr(__el0, "class", () => cn(ctx.classes?.content, __props.className ?? __props.class));
94
+ __on(__el0, "keydown", (event) => {
95
+ if (isKey(event, Keys.Escape, Keys.Tab)) {
96
+ event.preventDefault();
97
+ ctx.close();
98
+ return;
99
+ }
100
+ const el2 = event.currentTarget ?? event.target;
101
+ const items = [...el2.querySelectorAll('[role="menuitem"]')];
102
+ const focusedIdx = items.indexOf(document.activeElement);
103
+ if (isKey(event, Keys.Enter, Keys.Space)) {
104
+ event.preventDefault();
105
+ const active = items[focusedIdx];
106
+ if (active) {
107
+ const val = active.getAttribute("data-value");
108
+ if (val !== null) {
109
+ ctx.onSelect?.(val);
110
+ ctx.close();
111
+ }
112
+ }
113
+ return;
114
+ }
115
+ handleListNavigation(event, items, { orientation: "vertical" });
116
+ });
117
+ __enterChildren(__el0);
118
+ __append(__el0, __child(() => __props.children));
119
+ __exitChildren();
120
+ return __el0;
121
+ })());
122
+ const __mfResult0 = el.value;
123
+ __flushMountFrame();
124
+ return __mfResult0;
125
+ } catch (__mfErr) {
126
+ __discardMountFrame(__mfDepth);
127
+ throw __mfErr;
128
+ }
129
+ }
130
+ function ContextMenuItem(__props) {
131
+ const __mfDepth = __pushMountFrame();
132
+ try {
133
+ const ctx = useContextMenuContext("Item");
134
+ const __mfResult0 = (() => {
135
+ const __el0 = __element("div");
136
+ __el0.setAttribute("role", "menuitem");
137
+ __attr(__el0, "data-value", () => __props.value);
138
+ __el0.setAttribute("tabindex", "-1");
139
+ __attr(__el0, "class", () => cn(ctx.classes?.item, __props.className ?? __props.class));
140
+ __on(__el0, "click", () => {
141
+ ctx.onSelect?.(__props.value);
142
+ ctx.close();
143
+ });
144
+ __enterChildren(__el0);
145
+ __append(__el0, __child(() => __props.children));
146
+ __exitChildren();
147
+ return __el0;
148
+ })();
149
+ __flushMountFrame();
150
+ return __mfResult0;
151
+ } catch (__mfErr) {
152
+ __discardMountFrame(__mfDepth);
153
+ throw __mfErr;
154
+ }
155
+ }
156
+ function ContextMenuGroup(__props) {
157
+ const __mfDepth = __pushMountFrame();
158
+ try {
159
+ const ctx = useContextMenuContext("Group");
160
+ const __mfResult0 = (() => {
161
+ const __el0 = __element("div");
162
+ __el0.setAttribute("role", "group");
163
+ __attr(__el0, "aria-label", () => __props.label);
164
+ __attr(__el0, "class", () => cn(ctx.classes?.group, __props.className ?? __props.class));
165
+ __enterChildren(__el0);
166
+ __append(__el0, __child(() => __props.children));
167
+ __exitChildren();
168
+ return __el0;
169
+ })();
170
+ __flushMountFrame();
171
+ return __mfResult0;
172
+ } catch (__mfErr) {
173
+ __discardMountFrame(__mfDepth);
174
+ throw __mfErr;
175
+ }
176
+ }
177
+ function ContextMenuLabel(__props) {
178
+ const __mfDepth = __pushMountFrame();
179
+ try {
180
+ const { classes } = useContextMenuContext("Label");
181
+ const __mfResult0 = (() => {
182
+ const __el0 = __element("div");
183
+ __el0.setAttribute("role", "none");
184
+ __attr(__el0, "class", () => cn(classes?.label, __props.className ?? __props.class));
185
+ __enterChildren(__el0);
186
+ __append(__el0, __child(() => __props.children));
187
+ __exitChildren();
188
+ return __el0;
189
+ })();
190
+ __flushMountFrame();
191
+ return __mfResult0;
192
+ } catch (__mfErr) {
193
+ __discardMountFrame(__mfDepth);
194
+ throw __mfErr;
195
+ }
196
+ }
197
+ function ContextMenuSeparator(__props) {
198
+ const __mfDepth = __pushMountFrame();
199
+ try {
200
+ const { classes } = useContextMenuContext("Separator");
201
+ const __mfResult0 = (() => {
202
+ const __el0 = __element("hr");
203
+ __el0.setAttribute("role", "separator");
204
+ __attr(__el0, "class", () => cn(classes?.separator, __props.className ?? __props.class));
205
+ return __el0;
206
+ })();
207
+ __flushMountFrame();
208
+ return __mfResult0;
209
+ } catch (__mfErr) {
210
+ __discardMountFrame(__mfDepth);
211
+ throw __mfErr;
212
+ }
213
+ }
214
+ function updateContentDOM(el, isOpen) {
215
+ el.setAttribute("data-state", isOpen ? "open" : "closed");
216
+ el.setAttribute("aria-hidden", isOpen ? "false" : "true");
217
+ el.style.display = isOpen ? "" : "none";
218
+ }
219
+ function ComposedContextMenuRoot(__props) {
220
+ const __mfDepth = __pushMountFrame();
221
+ try {
222
+ let getContentEl = function() {
223
+ return contentRef.current ?? null;
224
+ }, getItems = function() {
225
+ const content = getContentEl();
226
+ if (!content)
227
+ return [];
228
+ return [...content.querySelectorAll('[role="menuitem"]')];
229
+ }, updateActiveItem = function(items, index) {
230
+ items.forEach((item, i) => {
231
+ item.setAttribute("tabindex", i === index ? "0" : "-1");
232
+ });
233
+ }, open = function(x, y) {
234
+ isOpen.value = true;
235
+ state.activeIndex = -1;
236
+ __props.onOpenChange?.(true);
237
+ const contentEl = getContentEl();
238
+ if (contentEl) {
239
+ updateContentDOM(contentEl, true);
240
+ }
241
+ queueMicrotask(() => {
242
+ const el = contentEl ?? getContentEl();
243
+ if (!el)
244
+ return;
245
+ const effectivePositioning = {
246
+ ...__props.positioning ?? {},
247
+ placement: __props.positioning?.placement ?? "bottom-start"
248
+ };
249
+ const result = createFloatingPosition(virtualElement(x, y), el, effectivePositioning);
250
+ state.floatingCleanup = result.cleanup;
251
+ state.dismissCleanup = createDismiss({
252
+ onDismiss: close,
253
+ insideElements: [el],
254
+ escapeKey: false
255
+ });
256
+ const items = getItems();
257
+ updateActiveItem(items, -1);
258
+ el.focus();
259
+ });
260
+ }, close = function() {
261
+ isOpen.value = false;
262
+ state.floatingCleanup?.();
263
+ state.floatingCleanup = null;
264
+ state.dismissCleanup?.();
265
+ state.dismissCleanup = null;
266
+ __props.onOpenChange?.(false);
267
+ const contentEl = getContentEl();
268
+ if (contentEl) {
269
+ updateContentDOM(contentEl, false);
270
+ }
271
+ };
272
+ const ids = linkedIds("ctxmenu");
273
+ const contentRef = ref();
274
+ const isOpen = signal(false, "isOpen");
275
+ const state = { activeIndex: -1, floatingCleanup: null, dismissCleanup: null };
276
+ const ctx = {
277
+ isOpen,
278
+ contentId: ids.contentId,
279
+ contentRef,
280
+ classes: __props.classes,
281
+ onSelect: __props.onSelect,
282
+ open,
283
+ close,
284
+ _contentCount: { value: 0 }
285
+ };
286
+ const __mfResult0 = ContextMenuContext.Provider({ get value() {
287
+ return ctx;
288
+ }, children: () => (() => {
289
+ const __el0 = __element("span");
290
+ {
291
+ const __v = { display: "contents" };
292
+ if (__v != null && __v !== false)
293
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
294
+ }
295
+ {
296
+ const __v = ids.contentId;
297
+ if (__v != null && __v !== false)
298
+ __el0.setAttribute("data-contextmenu-root", __v === true ? "" : __v);
299
+ }
300
+ __enterChildren(__el0);
301
+ __append(__el0, __child(() => __props.children));
302
+ __exitChildren();
303
+ return __el0;
304
+ })() });
305
+ __flushMountFrame();
306
+ return __mfResult0;
307
+ } catch (__mfErr) {
308
+ __discardMountFrame(__mfDepth);
309
+ throw __mfErr;
310
+ }
311
+ }
312
+ var ComposedContextMenu = Object.assign(ComposedContextMenuRoot, {
313
+ Trigger: ContextMenuTrigger,
314
+ Content: ContextMenuContent,
315
+ Item: ContextMenuItem,
316
+ Group: ContextMenuGroup,
317
+ Label: ContextMenuLabel,
318
+ Separator: ContextMenuSeparator
319
+ });
320
+
321
+ export { ComposedContextMenu };