@vertz/ui-primitives 0.2.20 → 0.2.22

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 (105) hide show
  1. package/dist/shared/{chunk-bew4bjgf.js → chunk-07yzsaaw.js} +5 -5
  2. package/dist/shared/{chunk-yr9yzpvq.js → chunk-279bzynx.js} +83 -58
  3. package/dist/shared/{chunk-sqs8kyb2.js → chunk-27xs9apd.js} +5 -5
  4. package/dist/shared/{chunk-dpsgb1xw.js → chunk-2db2dnp3.js} +6 -2
  5. package/dist/shared/{chunk-8ak7vdk1.js → chunk-2k8gxzdf.js} +5 -5
  6. package/dist/shared/{chunk-t1vkvsz2.js → chunk-3rp73gkd.js} +5 -5
  7. package/dist/shared/{chunk-7ffg0caj.js → chunk-4rf1m34c.js} +8 -6
  8. package/dist/shared/{chunk-gkddsbmh.js → chunk-56reyd5r.js} +22 -31
  9. package/dist/shared/{chunk-jctqs9m4.js → chunk-7867pr13.js} +36 -12
  10. package/dist/shared/{chunk-n9nwx58j.js → chunk-7bxsf80c.js} +4 -4
  11. package/dist/shared/{chunk-7krvqrwq.js → chunk-8qtexw5s.js} +36 -14
  12. package/dist/shared/{chunk-m1ptgp1s.js → chunk-9ezgd78r.js} +7 -7
  13. package/dist/shared/{chunk-kg27s15c.js → chunk-ajpj10z0.js} +5 -5
  14. package/dist/shared/{chunk-tfyg0qrp.js → chunk-c46v0fsw.js} +6 -6
  15. package/dist/shared/{chunk-96d9nr7y.js → chunk-dhyr0s9n.js} +1 -1
  16. package/dist/shared/{chunk-avxcmmk6.js → chunk-e4mm5e59.js} +7 -7
  17. package/dist/shared/{chunk-gt0wth9h.js → chunk-fqa5bwn1.js} +3 -3
  18. package/dist/shared/{chunk-x0we8gcy.js → chunk-g8hnc95b.js} +5 -5
  19. package/dist/shared/chunk-j2tdpxgc.js +185 -0
  20. package/dist/shared/{chunk-x2hz98qn.js → chunk-jda3v59q.js} +2 -2
  21. package/dist/shared/{chunk-18y8gfk0.js → chunk-k8nabsxm.js} +115 -93
  22. package/dist/shared/{chunk-j4cm8avr.js → chunk-kcnq15je.js} +5 -5
  23. package/dist/shared/{chunk-4da5zksy.js → chunk-mqs4qq0b.js} +2 -2
  24. package/dist/shared/{chunk-9hj9p7s2.js → chunk-myq79qew.js} +37 -31
  25. package/dist/shared/{chunk-ppcv3ehd.js → chunk-pg2yjn8f.js} +15 -12
  26. package/dist/shared/{chunk-hr9hx58m.js → chunk-rb53v045.js} +4 -4
  27. package/dist/shared/{chunk-ttsyf6ma.js → chunk-s6a2yph8.js} +5 -5
  28. package/dist/shared/{chunk-vvjyx7fe.js → chunk-vevfhpc9.js} +1 -1
  29. package/dist/shared/{chunk-4085nbdq.js → chunk-vhx3sqw6.js} +5 -5
  30. package/dist/shared/{chunk-34yfm2b0.js → chunk-w318par6.js} +106 -84
  31. package/dist/shared/chunk-w9dag6ce.js +237 -0
  32. package/dist/shared/{chunk-g9qvd20g.js → chunk-wcdq7bew.js} +3 -3
  33. package/dist/shared/{chunk-rnjm61t0.js → chunk-z0gwkzgp.js} +3 -3
  34. package/dist/shared/{chunk-jz0s6srh.js → chunk-z850et33.js} +1 -1
  35. package/dist/shared/{chunk-7kpsyjd7.js → chunk-zyfc6cx3.js} +4 -4
  36. package/dist/src/accordion/accordion.d.ts +2 -0
  37. package/dist/src/accordion/accordion.js +1 -5
  38. package/dist/src/alert-dialog/alert-dialog.d.ts +7 -7
  39. package/dist/src/alert-dialog/alert-dialog.js +1 -4
  40. package/dist/src/badge/badge.d.ts +2 -0
  41. package/dist/src/badge/badge.js +1 -3
  42. package/dist/src/button/button.d.ts +2 -0
  43. package/dist/src/button/button.js +1 -3
  44. package/dist/src/calendar/calendar.d.ts +9 -6
  45. package/dist/src/calendar/calendar.js +1 -2
  46. package/dist/src/carousel/carousel.d.ts +2 -0
  47. package/dist/src/carousel/carousel.js +1 -4
  48. package/dist/src/checkbox/checkbox.d.ts +2 -0
  49. package/dist/src/checkbox/checkbox.js +1 -4
  50. package/dist/src/collapsible/collapsible.d.ts +2 -0
  51. package/dist/src/collapsible/collapsible.js +1 -4
  52. package/dist/src/combobox/combobox.d.ts +2 -0
  53. package/dist/src/combobox/combobox.js +1 -5
  54. package/dist/src/command/command.d.ts +2 -0
  55. package/dist/src/command/command.js +1 -5
  56. package/dist/src/context-menu/context-menu.d.ts +2 -0
  57. package/dist/src/context-menu/context-menu.js +1 -7
  58. package/dist/src/date-picker/date-picker.d.ts +6 -6
  59. package/dist/src/date-picker/date-picker.js +1 -10
  60. package/dist/src/dialog/dialog.d.ts +3 -0
  61. package/dist/src/dialog/dialog.js +1 -6
  62. package/dist/src/dropdown-menu/dropdown-menu.d.ts +3 -0
  63. package/dist/src/dropdown-menu/dropdown-menu.js +1 -8
  64. package/dist/src/hover-card/hover-card.d.ts +2 -0
  65. package/dist/src/hover-card/hover-card.js +1 -6
  66. package/dist/src/index.d.ts +906 -34
  67. package/dist/src/index.js +5183 -39
  68. package/dist/src/menu/menu.d.ts +3 -0
  69. package/dist/src/menu/menu.js +1 -7
  70. package/dist/src/menubar/menubar.d.ts +2 -0
  71. package/dist/src/menubar/menubar.js +1 -8
  72. package/dist/src/navigation-menu/navigation-menu.d.ts +7 -5
  73. package/dist/src/navigation-menu/navigation-menu.js +1 -6
  74. package/dist/src/popover/popover.d.ts +2 -0
  75. package/dist/src/popover/popover.js +1 -8
  76. package/dist/src/progress/progress.d.ts +4 -2
  77. package/dist/src/progress/progress.js +1 -4
  78. package/dist/src/radio/radio.d.ts +9 -3
  79. package/dist/src/radio/radio.js +1 -6
  80. package/dist/src/resizable-panel/resizable-panel.d.ts +2 -0
  81. package/dist/src/resizable-panel/resizable-panel.js +1 -4
  82. package/dist/src/scroll-area/scroll-area.d.ts +2 -0
  83. package/dist/src/scroll-area/scroll-area.js +1 -2
  84. package/dist/src/select/select.d.ts +2 -0
  85. package/dist/src/select/select.js +1 -7
  86. package/dist/src/sheet/sheet.js +1 -5
  87. package/dist/src/slider/slider.d.ts +2 -0
  88. package/dist/src/slider/slider.js +1 -5
  89. package/dist/src/switch/switch.d.ts +2 -0
  90. package/dist/src/switch/switch.js +1 -4
  91. package/dist/src/tabs/tabs.d.ts +7 -4
  92. package/dist/src/tabs/tabs.js +1 -6
  93. package/dist/src/toast/toast.d.ts +2 -0
  94. package/dist/src/toast/toast.js +1 -4
  95. package/dist/src/toggle/toggle.d.ts +2 -0
  96. package/dist/src/toggle/toggle.js +1 -4
  97. package/dist/src/toggle-group/toggle-group.d.ts +2 -0
  98. package/dist/src/toggle-group/toggle-group.js +1 -5
  99. package/dist/src/tooltip/tooltip.d.ts +3 -1
  100. package/dist/src/tooltip/tooltip.js +1 -6
  101. package/dist/src/utils.d.ts +62 -2
  102. package/dist/src/utils.js +50 -3
  103. package/package.json +4 -6
  104. package/dist/shared/chunk-8nk0ya7a.js +0 -163
  105. package/dist/shared/chunk-8tvzqry6.js +0 -218
@@ -3,16 +3,16 @@ import {
3
3
  setExpanded,
4
4
  setHidden,
5
5
  setHiddenAnimated
6
- } from "./chunk-vvjyx7fe.js";
7
- import {
8
- applyAttrs
9
- } from "./chunk-dpsgb1xw.js";
6
+ } from "./chunk-vevfhpc9.js";
10
7
  import {
11
8
  linkedIds
12
9
  } from "./chunk-8y1jf6xr.js";
10
+ import {
11
+ applyAttrs
12
+ } from "./chunk-2db2dnp3.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,6 +1,6 @@
1
1
  import {
2
2
  Menu
3
- } from "./chunk-7ffg0caj.js";
3
+ } from "./chunk-4rf1m34c.js";
4
4
 
5
5
  // src/dropdown-menu/dropdown-menu.ts
6
6
  var DropdownMenu = {
@@ -2,22 +2,22 @@ import {
2
2
  Keys,
3
3
  handleListNavigation,
4
4
  isKey
5
- } from "./chunk-jctqs9m4.js";
5
+ } from "./chunk-7867pr13.js";
6
6
  import {
7
7
  setDataState,
8
8
  setExpanded,
9
9
  setHidden,
10
10
  setHiddenAnimated
11
- } from "./chunk-vvjyx7fe.js";
12
- import {
13
- applyAttrs
14
- } from "./chunk-dpsgb1xw.js";
11
+ } from "./chunk-vevfhpc9.js";
15
12
  import {
16
13
  uniqueId
17
14
  } from "./chunk-8y1jf6xr.js";
15
+ import {
16
+ applyAttrs
17
+ } from "./chunk-2db2dnp3.js";
18
18
 
19
19
  // src/accordion/accordion.tsx
20
- import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
20
+ import { __element, __enterChildren, __exitChildren, __insert, __on, __styleStr } from "@vertz/ui/internals";
21
21
  import { signal } from "@vertz/ui";
22
22
  function AccordionRoot(options = {}) {
23
23
  const { multiple = false, defaultValue = [], onValueChange, ...attrs } = options;
@@ -140,7 +140,7 @@ function AccordionRoot(options = {}) {
140
140
  {
141
141
  const __v = isOpen ? "" : "display: none";
142
142
  if (__v != null && __v !== false)
143
- __el2.setAttribute("style", __v === true ? "" : __v);
143
+ __el2.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
144
144
  }
145
145
  return __el2;
146
146
  })();
@@ -5,14 +5,14 @@ import {
5
5
  Keys,
6
6
  handleListNavigation,
7
7
  isKey
8
- } from "./chunk-jctqs9m4.js";
8
+ } from "./chunk-7867pr13.js";
9
9
  import {
10
10
  setDataState,
11
11
  setPressed
12
- } from "./chunk-vvjyx7fe.js";
12
+ } from "./chunk-vevfhpc9.js";
13
13
  import {
14
14
  applyAttrs
15
- } from "./chunk-dpsgb1xw.js";
15
+ } from "./chunk-2db2dnp3.js";
16
16
 
17
17
  // src/toggle-group/toggle-group.tsx
18
18
  import { __element, __on } from "@vertz/ui/internals";
@@ -9,18 +9,18 @@ import {
9
9
  Keys,
10
10
  handleListNavigation,
11
11
  isKey
12
- } from "./chunk-jctqs9m4.js";
12
+ } from "./chunk-7867pr13.js";
13
13
  import {
14
14
  setDataState,
15
15
  setHidden,
16
16
  setHiddenAnimated
17
- } from "./chunk-vvjyx7fe.js";
18
- import {
19
- applyAttrs
20
- } from "./chunk-dpsgb1xw.js";
17
+ } from "./chunk-vevfhpc9.js";
21
18
  import {
22
19
  uniqueId
23
20
  } from "./chunk-8y1jf6xr.js";
21
+ import {
22
+ applyAttrs
23
+ } from "./chunk-2db2dnp3.js";
24
24
 
25
25
  // src/context-menu/context-menu.tsx
26
26
  import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
@@ -0,0 +1,185 @@
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 { __element, __enterChildren, __exitChildren, __insert, __on, __styleStr } from "@vertz/ui/internals";
21
+ import { signal } from "@vertz/ui";
22
+ function TabList(orientation, triggers, tabValues, selectTab) {
23
+ return (() => {
24
+ const __el0 = __element("div");
25
+ __el0.setAttribute("role", "tablist");
26
+ {
27
+ const __v = orientation === "vertical" ? "vertical" : undefined;
28
+ if (__v != null && __v !== false)
29
+ __el0.setAttribute("aria-orientation", __v === true ? "" : __v);
30
+ }
31
+ __on(__el0, "keydown", (event) => {
32
+ const result = handleListNavigation(event, triggers, {
33
+ orientation
34
+ });
35
+ if (result) {
36
+ const idx = triggers.indexOf(result);
37
+ if (idx >= 0) {
38
+ const val = tabValues[idx];
39
+ if (val !== undefined)
40
+ selectTab(val);
41
+ }
42
+ }
43
+ });
44
+ return __el0;
45
+ })();
46
+ }
47
+ function TabTrigger(triggerId, panelId, value, label, isActive, selectTab) {
48
+ return (() => {
49
+ const __el0 = __element("button");
50
+ __el0.setAttribute("type", "button");
51
+ __el0.setAttribute("role", "tab");
52
+ {
53
+ const __v = triggerId;
54
+ if (__v != null && __v !== false)
55
+ __el0.setAttribute("id", __v === true ? "" : __v);
56
+ }
57
+ {
58
+ const __v = panelId;
59
+ if (__v != null && __v !== false)
60
+ __el0.setAttribute("aria-controls", __v === true ? "" : __v);
61
+ }
62
+ {
63
+ const __v = value;
64
+ if (__v != null && __v !== false)
65
+ __el0.setAttribute("data-value", __v === true ? "" : __v);
66
+ }
67
+ {
68
+ const __v = isActive ? "true" : "false";
69
+ if (__v != null && __v !== false)
70
+ __el0.setAttribute("aria-selected", __v === true ? "" : __v);
71
+ }
72
+ {
73
+ const __v = isActive ? "active" : "inactive";
74
+ if (__v != null && __v !== false)
75
+ __el0.setAttribute("data-state", __v === true ? "" : __v);
76
+ }
77
+ __on(__el0, "click", () => {
78
+ selectTab(value);
79
+ });
80
+ __enterChildren(__el0);
81
+ __insert(__el0, label ?? value);
82
+ __exitChildren();
83
+ return __el0;
84
+ })();
85
+ }
86
+ function TabsContainer(list) {
87
+ return (() => {
88
+ const __el0 = __element("div");
89
+ __enterChildren(__el0);
90
+ __insert(__el0, list);
91
+ __exitChildren();
92
+ return __el0;
93
+ })();
94
+ }
95
+ function TabPanel(panelId, triggerId, isActive) {
96
+ return (() => {
97
+ const __el0 = __element("div");
98
+ __el0.setAttribute("role", "tabpanel");
99
+ {
100
+ const __v = panelId;
101
+ if (__v != null && __v !== false)
102
+ __el0.setAttribute("id", __v === true ? "" : __v);
103
+ }
104
+ {
105
+ const __v = triggerId;
106
+ if (__v != null && __v !== false)
107
+ __el0.setAttribute("aria-labelledby", __v === true ? "" : __v);
108
+ }
109
+ __el0.setAttribute("tabindex", "0");
110
+ {
111
+ const __v = isActive ? "false" : "true";
112
+ if (__v != null && __v !== false)
113
+ __el0.setAttribute("aria-hidden", __v === true ? "" : __v);
114
+ }
115
+ {
116
+ const __v = isActive ? "active" : "inactive";
117
+ if (__v != null && __v !== false)
118
+ __el0.setAttribute("data-state", __v === true ? "" : __v);
119
+ }
120
+ {
121
+ const __v = isActive ? "" : "display: none";
122
+ if (__v != null && __v !== false)
123
+ __el0.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
124
+ }
125
+ return __el0;
126
+ })();
127
+ }
128
+ function TabsRoot(options = {}) {
129
+ const { defaultValue = "", orientation = "horizontal", onValueChange, ...attrs } = options;
130
+ const state = { value: signal(defaultValue) };
131
+ const triggers = [];
132
+ const panels = [];
133
+ const tabValues = [];
134
+ function selectTab(value) {
135
+ state.value.value = value;
136
+ for (let i = 0;i < tabValues.length; i++) {
137
+ const isActive = tabValues[i] === value;
138
+ const trig = triggers[i];
139
+ const panel = panels[i];
140
+ if (!trig || !panel)
141
+ continue;
142
+ setSelected(trig, isActive);
143
+ setDataState(trig, isActive ? "active" : "inactive");
144
+ trig.setAttribute("tabindex", isActive ? "0" : "-1");
145
+ setHidden(panel, !isActive);
146
+ setDataState(panel, isActive ? "active" : "inactive");
147
+ }
148
+ onValueChange?.(value);
149
+ }
150
+ const list = TabList(orientation, triggers, tabValues, selectTab);
151
+ const root = TabsContainer(list);
152
+ const cleanups = [];
153
+ function Tab(value, label) {
154
+ const baseId = uniqueId("tab");
155
+ const triggerId = `${baseId}-trigger`;
156
+ const panelId = `${baseId}-panel`;
157
+ const isActive = value === state.value.peek();
158
+ const trig = TabTrigger(triggerId, panelId, value, label, isActive, selectTab);
159
+ const handleClick = () => {
160
+ trig.focus();
161
+ };
162
+ trig.addEventListener("click", handleClick);
163
+ cleanups.push(() => trig.removeEventListener("click", handleClick));
164
+ const panel = TabPanel(panelId, triggerId, isActive);
165
+ triggers.push(trig);
166
+ panels.push(panel);
167
+ tabValues.push(value);
168
+ list.appendChild(trig);
169
+ root.appendChild(panel);
170
+ setRovingTabindex(triggers, triggers.findIndex((t) => tabValues[triggers.indexOf(t)] === state.value.peek()));
171
+ return { trigger: trig, panel };
172
+ }
173
+ function destroy() {
174
+ for (const cleanup of cleanups)
175
+ cleanup();
176
+ cleanups.length = 0;
177
+ }
178
+ applyAttrs(root, attrs);
179
+ return { root, list, state, Tab, destroy };
180
+ }
181
+ var Tabs = {
182
+ Root: TabsRoot
183
+ };
184
+
185
+ export { Tabs };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Calendar
3
- } from "./chunk-18y8gfk0.js";
3
+ } from "./chunk-k8nabsxm.js";
4
4
  import {
5
5
  Popover
6
- } from "./chunk-m1ptgp1s.js";
6
+ } from "./chunk-9ezgd78r.js";
7
7
 
8
8
  // src/date-picker/date-picker.ts
9
9
  import { signal } from "@vertz/ui";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  applyAttrs
3
- } from "./chunk-dpsgb1xw.js";
3
+ } from "./chunk-2db2dnp3.js";
4
4
 
5
5
  // src/calendar/calendar.tsx
6
6
  import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
@@ -36,6 +36,49 @@ function addMonths(date, months) {
36
36
  result.setMonth(result.getMonth() + months);
37
37
  return result;
38
38
  }
39
+ function CalendarTitleEl() {
40
+ return (() => {
41
+ const __el0 = __element("div");
42
+ return __el0;
43
+ })();
44
+ }
45
+ function CalendarNavButton(onClick) {
46
+ return (() => {
47
+ const __el0 = __element("button");
48
+ __el0.setAttribute("type", "button");
49
+ __on(__el0, "click", onClick);
50
+ return __el0;
51
+ })();
52
+ }
53
+ function CalendarHeaderEl(prevButton, title, nextButton) {
54
+ return (() => {
55
+ const __el0 = __element("div");
56
+ __enterChildren(__el0);
57
+ __insert(__el0, prevButton);
58
+ __insert(__el0, title);
59
+ __insert(__el0, nextButton);
60
+ __exitChildren();
61
+ return __el0;
62
+ })();
63
+ }
64
+ function CalendarGridEl(onKeydown) {
65
+ return (() => {
66
+ const __el0 = __element("table");
67
+ __el0.setAttribute("role", "grid");
68
+ __on(__el0, "keydown", onKeydown);
69
+ return __el0;
70
+ })();
71
+ }
72
+ function CalendarRootEl(header, grid) {
73
+ return (() => {
74
+ const __el0 = __element("div");
75
+ __enterChildren(__el0);
76
+ __insert(__el0, header);
77
+ __insert(__el0, grid);
78
+ __exitChildren();
79
+ return __el0;
80
+ })();
81
+ }
39
82
  function CalendarRoot(options = {}) {
40
83
  const {
41
84
  mode: modeOpt,
@@ -122,7 +165,14 @@ function CalendarRoot(options = {}) {
122
165
  }
123
166
  onValueChange?.(state.value.peek());
124
167
  }
168
+ const gridCleanups = [];
169
+ function cleanupGridListeners() {
170
+ for (const cleanup of gridCleanups)
171
+ cleanup();
172
+ gridCleanups.length = 0;
173
+ }
125
174
  function buildGrid() {
175
+ cleanupGridListeners();
126
176
  grid.innerHTML = "";
127
177
  const display = state.displayMonth.peek();
128
178
  const year = display.getFullYear();
@@ -184,10 +234,12 @@ function CalendarRoot(options = {}) {
184
234
  }
185
235
  }
186
236
  }
187
- btn.addEventListener("click", () => {
237
+ const handleClick = () => {
188
238
  selectDate(cellDate);
189
239
  rebuildGrid();
190
- });
240
+ };
241
+ btn.addEventListener("click", handleClick);
242
+ gridCleanups.push(() => btn.removeEventListener("click", handleClick));
191
243
  td.appendChild(btn);
192
244
  tr.appendChild(td);
193
245
  currentDate = addDays(currentDate, 1);
@@ -205,101 +257,71 @@ function CalendarRoot(options = {}) {
205
257
  onMonthChange?.(state.displayMonth.peek());
206
258
  rebuildGrid();
207
259
  }
208
- const title = (() => {
209
- const __el0 = __element("div");
210
- return __el0;
211
- })();
212
- const prevButton = (() => {
213
- const __el1 = __element("button");
214
- __el1.setAttribute("type", "button");
215
- __on(__el1, "click", () => navigateMonth(-1));
216
- return __el1;
217
- })();
218
- const nextButton = (() => {
219
- const __el2 = __element("button");
220
- __el2.setAttribute("type", "button");
221
- __on(__el2, "click", () => navigateMonth(1));
222
- return __el2;
223
- })();
224
- const header = (() => {
225
- const __el3 = __element("div");
226
- __enterChildren(__el3);
227
- __insert(__el3, prevButton);
228
- __insert(__el3, title);
229
- __insert(__el3, nextButton);
230
- __exitChildren();
231
- return __el3;
232
- })();
233
- const grid = (() => {
234
- const __el4 = __element("table");
235
- __el4.setAttribute("role", "grid");
236
- __on(__el4, "keydown", (event) => {
237
- const active = document.activeElement;
238
- if (!active || active.tagName !== "BUTTON")
239
- return;
240
- const dateStr = active.getAttribute("data-date");
241
- if (!dateStr)
242
- return;
243
- const focused = new Date(`${dateStr}T00:00:00`);
244
- let next = null;
245
- if (event.key === "ArrowLeft") {
246
- event.preventDefault();
247
- next = addDays(focused, -1);
248
- } else if (event.key === "ArrowRight") {
249
- event.preventDefault();
250
- next = addDays(focused, 1);
251
- } else if (event.key === "ArrowUp") {
252
- event.preventDefault();
253
- next = addDays(focused, -7);
254
- } else if (event.key === "ArrowDown") {
255
- event.preventDefault();
256
- next = addDays(focused, 7);
257
- } else if (event.key === "Home") {
258
- event.preventDefault();
259
- const dayOfWeek = (focused.getDay() - weekStartsOn + 7) % 7;
260
- next = addDays(focused, -dayOfWeek);
261
- } else if (event.key === "End") {
262
- event.preventDefault();
263
- const dayOfWeek = (focused.getDay() - weekStartsOn + 7) % 7;
264
- next = addDays(focused, 6 - dayOfWeek);
265
- } else if (event.key === "PageUp") {
266
- event.preventDefault();
267
- next = event.shiftKey ? addMonths(focused, -12) : addMonths(focused, -1);
268
- } else if (event.key === "PageDown") {
269
- event.preventDefault();
270
- next = event.shiftKey ? addMonths(focused, 12) : addMonths(focused, 1);
271
- } else if (event.key === "Enter" || event.key === " ") {
272
- event.preventDefault();
273
- selectDate(focused);
260
+ const title = CalendarTitleEl();
261
+ const prevButton = CalendarNavButton(() => navigateMonth(-1));
262
+ const nextButton = CalendarNavButton(() => navigateMonth(1));
263
+ const header = CalendarHeaderEl(prevButton, title, nextButton);
264
+ const grid = CalendarGridEl((event) => {
265
+ const active = document.activeElement;
266
+ if (!active || active.tagName !== "BUTTON")
267
+ return;
268
+ const dateStr = active.getAttribute("data-date");
269
+ if (!dateStr)
270
+ return;
271
+ const focused = new Date(`${dateStr}T00:00:00`);
272
+ let next = null;
273
+ if (event.key === "ArrowLeft") {
274
+ event.preventDefault();
275
+ next = addDays(focused, -1);
276
+ } else if (event.key === "ArrowRight") {
277
+ event.preventDefault();
278
+ next = addDays(focused, 1);
279
+ } else if (event.key === "ArrowUp") {
280
+ event.preventDefault();
281
+ next = addDays(focused, -7);
282
+ } else if (event.key === "ArrowDown") {
283
+ event.preventDefault();
284
+ next = addDays(focused, 7);
285
+ } else if (event.key === "Home") {
286
+ event.preventDefault();
287
+ const dayOfWeek = (focused.getDay() - weekStartsOn + 7) % 7;
288
+ next = addDays(focused, -dayOfWeek);
289
+ } else if (event.key === "End") {
290
+ event.preventDefault();
291
+ const dayOfWeek = (focused.getDay() - weekStartsOn + 7) % 7;
292
+ next = addDays(focused, 6 - dayOfWeek);
293
+ } else if (event.key === "PageUp") {
294
+ event.preventDefault();
295
+ next = event.shiftKey ? addMonths(focused, -12) : addMonths(focused, -1);
296
+ } else if (event.key === "PageDown") {
297
+ event.preventDefault();
298
+ next = event.shiftKey ? addMonths(focused, 12) : addMonths(focused, 1);
299
+ } else if (event.key === "Enter" || event.key === " ") {
300
+ event.preventDefault();
301
+ selectDate(focused);
302
+ rebuildGrid();
303
+ return;
304
+ }
305
+ if (next) {
306
+ state.focusedDate.value = next;
307
+ if (next.getMonth() !== state.displayMonth.peek().getMonth() || next.getFullYear() !== state.displayMonth.peek().getFullYear()) {
308
+ state.displayMonth.value = new Date(next.getFullYear(), next.getMonth(), 1);
309
+ onMonthChange?.(state.displayMonth.peek());
274
310
  rebuildGrid();
275
- return;
276
- }
277
- if (next) {
278
- state.focusedDate.value = next;
279
- if (next.getMonth() !== state.displayMonth.peek().getMonth() || next.getFullYear() !== state.displayMonth.peek().getFullYear()) {
280
- state.displayMonth.value = new Date(next.getFullYear(), next.getMonth(), 1);
281
- onMonthChange?.(state.displayMonth.peek());
282
- rebuildGrid();
283
- }
284
- const dateKey = next.toISOString().split("T")[0];
285
- const btn = grid.querySelector(`button[data-date="${dateKey}"]`);
286
- btn?.focus();
287
311
  }
288
- });
289
- return __el4;
290
- })();
312
+ const dateKey = next.toISOString().split("T")[0];
313
+ const btn = grid.querySelector(`button[data-date="${dateKey}"]`);
314
+ btn?.focus();
315
+ }
316
+ });
291
317
  updateTitle();
292
318
  buildGrid();
293
- const root = (() => {
294
- const __el5 = __element("div");
295
- __enterChildren(__el5);
296
- __insert(__el5, header);
297
- __insert(__el5, grid);
298
- __exitChildren();
299
- return __el5;
300
- })();
319
+ const root = CalendarRootEl(header, grid);
320
+ function destroy() {
321
+ cleanupGridListeners();
322
+ }
301
323
  applyAttrs(root, attrs);
302
- return { root, header, title, prevButton, nextButton, grid, state };
324
+ return { root, header, title, prevButton, nextButton, grid, state, destroy };
303
325
  }
304
326
  var Calendar = {
305
327
  Root: CalendarRoot
@@ -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
- } from "./chunk-vvjyx7fe.js";
8
+ } from "./chunk-vevfhpc9.js";
9
9
  import {
10
10
  applyAttrs
11
- } from "./chunk-dpsgb1xw.js";
11
+ } from "./chunk-2db2dnp3.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;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  handleActivation
3
- } from "./chunk-jctqs9m4.js";
3
+ } from "./chunk-7867pr13.js";
4
4
  import {
5
5
  applyAttrs
6
- } from "./chunk-dpsgb1xw.js";
6
+ } from "./chunk-2db2dnp3.js";
7
7
 
8
8
  // src/button/button.tsx
9
9
  import { __element, __on } from "@vertz/ui/internals";