@vertz/ui-primitives 0.2.23 → 0.2.25

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 (191) hide show
  1. package/dist/shared/{chunk-pzx0vpq1.js → chunk-00fqgnq1.js} +6 -11
  2. package/dist/shared/chunk-1dx23qnr.js +232 -0
  3. package/dist/shared/chunk-1hm0mbke.js +258 -0
  4. package/dist/shared/{chunk-ww7k2azn.js → chunk-20kwns82.js} +5 -9
  5. package/dist/shared/chunk-3jack97k.js +509 -0
  6. package/dist/shared/{chunk-xs6gp369.js → chunk-455p0jbk.js} +3 -7
  7. package/dist/shared/chunk-4z006v1j.js +467 -0
  8. package/dist/shared/{chunk-b25npqer.js → chunk-585ysr70.js} +1 -1
  9. package/dist/shared/chunk-5964gmv0.js +416 -0
  10. package/dist/shared/chunk-75pegjs7.js +26 -0
  11. package/dist/shared/{chunk-mr1tb0dp.js → chunk-7a2nqmeh.js} +1 -1
  12. package/dist/shared/chunk-7wem1bhb.js +252 -0
  13. package/dist/shared/{chunk-7cb3z0s8.js → chunk-8evj43jn.js} +5 -8
  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-9eedsnnk.js +164 -0
  18. package/dist/shared/{chunk-8c01c8mb.js → chunk-9hv3vc72.js} +0 -2
  19. package/dist/shared/{chunk-4894pmy6.js → chunk-9ydd4pn3.js} +6 -1
  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-bc2qqkhr.js +194 -0
  24. package/dist/shared/chunk-brk0drrk.js +202 -0
  25. package/dist/shared/chunk-czv0kqj4.js +107 -0
  26. package/dist/shared/chunk-d83ag07h.js +189 -0
  27. package/dist/shared/{chunk-3kwh27dv.js → chunk-de18ashk.js} +0 -1
  28. package/dist/shared/{chunk-cgb2j94g.js → chunk-dvk4h36t.js} +0 -1
  29. package/dist/shared/chunk-e6660g7e.js +179 -0
  30. package/dist/shared/{chunk-3h1mxp95.js → chunk-eq4d9b0w.js} +0 -1
  31. package/dist/shared/chunk-ev367pq3.js +102 -0
  32. package/dist/shared/chunk-fjykbv0v.js +214 -0
  33. package/dist/shared/chunk-ghkw5bjq.js +55 -0
  34. package/dist/shared/chunk-gqb1n1hj.js +60 -0
  35. package/dist/shared/chunk-hfjtkytb.js +310 -0
  36. package/dist/shared/chunk-hpvjfj0j.js +31 -0
  37. package/dist/shared/chunk-hxmxvp56.js +67 -0
  38. package/dist/shared/chunk-j9m2f0rd.js +162 -0
  39. package/dist/shared/chunk-jpyjk616.js +52 -0
  40. package/dist/shared/{chunk-ttb2tt03.js → chunk-jsa3byag.js} +1 -1
  41. package/dist/shared/{chunk-9gfp3ffv.js → chunk-jzy1bkdk.js} +0 -1
  42. package/dist/shared/{chunk-f2vx4tpw.js → chunk-knzg86am.js} +5 -5
  43. package/dist/shared/chunk-metxdt5x.js +28 -0
  44. package/dist/shared/chunk-mhn2aazf.js +353 -0
  45. package/dist/shared/chunk-mtx2cfbx.js +175 -0
  46. package/dist/shared/chunk-nsmvdxgp.js +213 -0
  47. package/dist/shared/{chunk-pn6shbcs.js → chunk-pdzmg245.js} +1 -5
  48. package/dist/shared/chunk-pzknpa1y.js +327 -0
  49. package/dist/shared/chunk-q1ff3xp3.js +95 -0
  50. package/dist/shared/chunk-q7xbcj9q.js +7 -0
  51. package/dist/shared/{chunk-p0x7hgv6.js → chunk-qhnany7w.js} +0 -2
  52. package/dist/shared/chunk-qrm43tr3.js +357 -0
  53. package/dist/shared/{chunk-xa1b96mb.js → chunk-qsp7sfhp.js} +2 -2
  54. package/dist/shared/{chunk-j902w020.js → chunk-qwqnjjg8.js} +1 -1
  55. package/dist/shared/{chunk-h3v10x04.js → chunk-r0rz7z03.js} +6 -11
  56. package/dist/shared/chunk-r3ngaa64.js +418 -0
  57. package/dist/shared/chunk-r3pffzss.js +13 -0
  58. package/dist/shared/chunk-rrt62bp0.js +353 -0
  59. package/dist/shared/chunk-s24gkmna.js +131 -0
  60. package/dist/shared/chunk-s62e7jf4.js +30 -0
  61. package/dist/shared/chunk-spng4yb9.js +73 -0
  62. package/dist/shared/chunk-v0b5pkcq.js +30 -0
  63. package/dist/shared/chunk-v11kd39k.js +162 -0
  64. package/dist/shared/{chunk-0mcr52hc.js → chunk-vef3sepw.js} +17 -1
  65. package/dist/shared/chunk-vkscwzpr.js +294 -0
  66. package/dist/shared/chunk-vv187snj.js +112 -0
  67. package/dist/shared/chunk-wqsek87j.js +311 -0
  68. package/dist/shared/chunk-wtkxz2te.js +157 -0
  69. package/dist/shared/chunk-y1hpsqzy.js +185 -0
  70. package/dist/shared/chunk-yfzddvxc.js +71 -0
  71. package/dist/src/accordion/accordion-composed.d.ts +30 -0
  72. package/dist/src/accordion/accordion-composed.js +6 -0
  73. package/dist/src/accordion/accordion.js +1 -1
  74. package/dist/src/alert/alert-composed.d.ts +26 -0
  75. package/dist/src/alert/alert-composed.js +6 -0
  76. package/dist/src/alert-dialog/alert-dialog-composed.d.ts +40 -0
  77. package/dist/src/alert-dialog/alert-dialog-composed.js +6 -0
  78. package/dist/src/avatar/avatar-composed.d.ts +33 -0
  79. package/dist/src/avatar/avatar-composed.js +6 -0
  80. package/dist/src/badge/badge-composed.d.ts +33 -0
  81. package/dist/src/badge/badge-composed.js +6 -0
  82. package/dist/src/breadcrumb/breadcrumb-composed.d.ts +34 -0
  83. package/dist/src/breadcrumb/breadcrumb-composed.js +6 -0
  84. package/dist/src/button/button-composed.d.ts +34 -0
  85. package/dist/src/button/button-composed.js +6 -0
  86. package/dist/src/calendar/calendar-composed.d.ts +42 -0
  87. package/dist/src/calendar/calendar-composed.js +6 -0
  88. package/dist/src/calendar/calendar.js +1 -1
  89. package/dist/src/card/card-composed.d.ts +34 -0
  90. package/dist/src/card/card-composed.js +6 -0
  91. package/dist/src/carousel/carousel-composed.d.ts +32 -0
  92. package/dist/src/carousel/carousel-composed.js +6 -0
  93. package/dist/src/carousel/carousel.js +1 -1
  94. package/dist/src/checkbox/checkbox-composed.d.ts +18 -0
  95. package/dist/src/checkbox/checkbox-composed.js +6 -0
  96. package/dist/src/collapsible/collapsible-composed.d.ts +26 -0
  97. package/dist/src/collapsible/collapsible-composed.js +6 -0
  98. package/dist/src/combobox/combobox-composed.d.ts +30 -0
  99. package/dist/src/combobox/combobox-composed.js +6 -0
  100. package/dist/src/combobox/combobox.js +1 -1
  101. package/dist/src/command/command-composed.d.ts +67 -0
  102. package/dist/src/command/command-composed.js +6 -0
  103. package/dist/src/command/command.js +1 -1
  104. package/dist/src/composed/with-styles.d.ts +38 -0
  105. package/dist/src/composed/with-styles.js +6 -0
  106. package/dist/src/context-menu/context-menu-composed.d.ts +51 -0
  107. package/dist/src/context-menu/context-menu-composed.js +6 -0
  108. package/dist/src/context-menu/context-menu.js +1 -1
  109. package/dist/src/date-picker/date-picker-composed.d.ts +77 -0
  110. package/dist/src/date-picker/date-picker-composed.js +6 -0
  111. package/dist/src/date-picker/date-picker.js +1 -1
  112. package/dist/src/dialog/dialog-composed.d.ts +36 -0
  113. package/dist/src/dialog/dialog-composed.js +6 -0
  114. package/dist/src/dialog/dialog-stack-parts.d.ts +16 -0
  115. package/dist/src/dialog/dialog-stack-parts.js +18 -0
  116. package/dist/src/dropdown-menu/dropdown-menu-composed.d.ts +51 -0
  117. package/dist/src/dropdown-menu/dropdown-menu-composed.js +6 -0
  118. package/dist/src/dropdown-menu/dropdown-menu.js +1 -1
  119. package/dist/src/empty-state/empty-state-composed.d.ts +30 -0
  120. package/dist/src/empty-state/empty-state-composed.js +6 -0
  121. package/dist/src/form-group/form-group-composed.d.ts +24 -0
  122. package/dist/src/form-group/form-group-composed.js +6 -0
  123. package/dist/src/hover-card/hover-card-composed.d.ts +38 -0
  124. package/dist/src/hover-card/hover-card-composed.js +6 -0
  125. package/dist/src/hover-card/hover-card.js +1 -1
  126. package/dist/src/index.d.ts +1312 -812
  127. package/dist/src/index.js +79 -6566
  128. package/dist/src/input/input-composed.d.ts +35 -0
  129. package/dist/src/input/input-composed.js +6 -0
  130. package/dist/src/label/label-composed.d.ts +32 -0
  131. package/dist/src/label/label-composed.js +6 -0
  132. package/dist/src/list/list-composed.d.ts +34 -0
  133. package/dist/src/list/list-composed.js +6 -0
  134. package/dist/src/menu/menu-composed.d.ts +51 -0
  135. package/dist/src/menu/menu-composed.js +6 -0
  136. package/dist/src/menu/menu.js +1 -1
  137. package/dist/src/menubar/menubar-composed.d.ts +56 -0
  138. package/dist/src/menubar/menubar-composed.js +6 -0
  139. package/dist/src/menubar/menubar.js +1 -1
  140. package/dist/src/navigation-menu/navigation-menu-composed.d.ts +56 -0
  141. package/dist/src/navigation-menu/navigation-menu-composed.js +6 -0
  142. package/dist/src/navigation-menu/navigation-menu.js +1 -1
  143. package/dist/src/pagination/pagination-composed.d.ts +30 -0
  144. package/dist/src/pagination/pagination-composed.js +6 -0
  145. package/dist/src/popover/popover-composed.d.ts +36 -0
  146. package/dist/src/popover/popover-composed.js +6 -0
  147. package/dist/src/popover/popover.js +1 -1
  148. package/dist/src/progress/progress-composed.d.ts +17 -0
  149. package/dist/src/progress/progress-composed.js +6 -0
  150. package/dist/src/radio/radio-composed.d.ts +24 -0
  151. package/dist/src/radio/radio-composed.js +6 -0
  152. package/dist/src/radio/radio.js +1 -1
  153. package/dist/src/resizable-panel/resizable-panel-composed.d.ts +33 -0
  154. package/dist/src/resizable-panel/resizable-panel-composed.js +6 -0
  155. package/dist/src/resizable-panel/resizable-panel.js +1 -1
  156. package/dist/src/scroll-area/scroll-area-composed.d.ts +17 -0
  157. package/dist/src/scroll-area/scroll-area-composed.js +6 -0
  158. package/dist/src/scroll-area/scroll-area.js +1 -1
  159. package/dist/src/select/select-composed.d.ts +53 -0
  160. package/dist/src/select/select-composed.js +6 -0
  161. package/dist/src/select/select.js +1 -1
  162. package/dist/src/separator/separator-composed.d.ts +32 -0
  163. package/dist/src/separator/separator-composed.js +6 -0
  164. package/dist/src/sheet/sheet-composed.d.ts +34 -0
  165. package/dist/src/sheet/sheet-composed.js +6 -0
  166. package/dist/src/skeleton/skeleton-composed.d.ts +65 -0
  167. package/dist/src/skeleton/skeleton-composed.js +6 -0
  168. package/dist/src/slider/slider-composed.d.ts +22 -0
  169. package/dist/src/slider/slider-composed.js +6 -0
  170. package/dist/src/switch/switch-composed.d.ts +17 -0
  171. package/dist/src/switch/switch-composed.js +6 -0
  172. package/dist/src/table/table-composed.d.ts +34 -0
  173. package/dist/src/table/table-composed.js +6 -0
  174. package/dist/src/tabs/tabs-composed.d.ts +33 -0
  175. package/dist/src/tabs/tabs-composed.js +6 -0
  176. package/dist/src/tabs/tabs.js +1 -1
  177. package/dist/src/textarea/textarea-composed.d.ts +35 -0
  178. package/dist/src/textarea/textarea-composed.js +6 -0
  179. package/dist/src/toast/toast.js +1 -1
  180. package/dist/src/toggle/toggle-composed.d.ts +16 -0
  181. package/dist/src/toggle/toggle-composed.js +6 -0
  182. package/dist/src/toggle-group/toggle-group-composed.d.ts +24 -0
  183. package/dist/src/toggle-group/toggle-group-composed.js +6 -0
  184. package/dist/src/toggle-group/toggle-group.js +1 -1
  185. package/dist/src/tooltip/tooltip-composed.d.ts +36 -0
  186. package/dist/src/tooltip/tooltip-composed.js +6 -0
  187. package/dist/src/tooltip/tooltip.js +1 -1
  188. package/dist/src/utils.js +1 -1
  189. package/package.json +3 -3
  190. package/dist/shared/chunk-56reyd5r.js +0 -64
  191. package/dist/shared/chunk-mgr904ap.js +0 -370
@@ -0,0 +1,509 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-q7xbcj9q.js";
4
+
5
+ // src/calendar/calendar-composed.tsx
6
+ import { computed, signal } from "@vertz/ui";
7
+ import { __append, __attr, __child, __conditional, __discardMountFrame, __element, __enterChildren, __exitChildren, __flushMountFrame, __insert, __list, __on, __prop, __pushMountFrame } from "@vertz/ui/internals";
8
+ var MONTH_NAMES = [
9
+ "January",
10
+ "February",
11
+ "March",
12
+ "April",
13
+ "May",
14
+ "June",
15
+ "July",
16
+ "August",
17
+ "September",
18
+ "October",
19
+ "November",
20
+ "December"
21
+ ];
22
+ var DAY_NAMES = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
23
+ var MONTH_OPTIONS = MONTH_NAMES.map((name, index) => ({ name, index }));
24
+ function getDaysInMonth(year, month) {
25
+ return new Date(year, month + 1, 0).getDate();
26
+ }
27
+ function isSameDay(a, b) {
28
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
29
+ }
30
+ function addDays(date, days) {
31
+ const result = new Date(date);
32
+ result.setDate(result.getDate() + days);
33
+ return result;
34
+ }
35
+ function addMonths(date, months) {
36
+ const result = new Date(date);
37
+ result.setMonth(result.getMonth() + months);
38
+ return result;
39
+ }
40
+ function formatDate(date) {
41
+ const y = date.getFullYear();
42
+ const m = String(date.getMonth() + 1).padStart(2, "0");
43
+ const d = String(date.getDate()).padStart(2, "0");
44
+ return `${y}-${m}-${d}`;
45
+ }
46
+ function isSelectedDate(date, val) {
47
+ if (val === null)
48
+ return false;
49
+ if (val instanceof Date)
50
+ return isSameDay(val, date);
51
+ if (Array.isArray(val))
52
+ return val.some((d) => isSameDay(d, date));
53
+ if ("from" in val && "to" in val) {
54
+ return isSameDay(val.from, date) || isSameDay(val.to, date);
55
+ }
56
+ return false;
57
+ }
58
+ function isInRangeDate(date, val) {
59
+ if (val === null || !("from" in val))
60
+ return false;
61
+ const range = val;
62
+ return date > range.from && date < range.to;
63
+ }
64
+ function isDateDisabledCheck(date, minDate, maxDate, disabled) {
65
+ if (disabled?.(date))
66
+ return true;
67
+ if (minDate && date < minDate && !isSameDay(date, minDate))
68
+ return true;
69
+ if (maxDate && date > maxDate && !isSameDay(date, maxDate))
70
+ return true;
71
+ return false;
72
+ }
73
+ function computeYearRange(now, minDate, maxDate) {
74
+ const minYear = minDate ? minDate.getFullYear() : now.getFullYear() - 100;
75
+ const maxYear = maxDate ? maxDate.getFullYear() : now.getFullYear() + 10;
76
+ const years = [];
77
+ for (let y = minYear;y <= maxYear; y++) {
78
+ years.push(y);
79
+ }
80
+ return years;
81
+ }
82
+ function isMonthDisabled(month, year, minDate, maxDate) {
83
+ if (minDate && year === minDate.getFullYear() && month < minDate.getMonth())
84
+ return true;
85
+ if (maxDate && year === maxDate.getFullYear() && month > maxDate.getMonth())
86
+ return true;
87
+ return false;
88
+ }
89
+ function computeGridRows(display, weekStartsOn) {
90
+ const year = display.getFullYear();
91
+ const month = display.getMonth();
92
+ const daysInMonth = getDaysInMonth(year, month);
93
+ const firstDay = new Date(year, month, 1);
94
+ const firstDayOfWeek = firstDay.getDay();
95
+ const offset = (firstDayOfWeek - weekStartsOn + 7) % 7;
96
+ const startDate = addDays(firstDay, -offset);
97
+ const totalCells = offset + daysInMonth;
98
+ const totalRows = Math.ceil(totalCells / 7);
99
+ const rows = [];
100
+ let current = startDate;
101
+ for (let row = 0;row < totalRows; row++) {
102
+ const rowDates = [];
103
+ for (let col = 0;col < 7; col++) {
104
+ rowDates.push(new Date(current));
105
+ current = addDays(current, 1);
106
+ }
107
+ rows.push(rowDates);
108
+ }
109
+ return rows;
110
+ }
111
+ function DayCell(__props) {
112
+ const __mfDepth = __pushMountFrame();
113
+ try {
114
+ const dateStr = computed(() => formatDate(__props.cellDate));
115
+ const isOutside = computed(() => __props.cellDate.getMonth() !== __props.displayMonth.getMonth());
116
+ const isToday = computed(() => isSameDay(__props.cellDate, __props.now));
117
+ const isDisabled = computed(() => isDateDisabledCheck(__props.cellDate, __props.minDate, __props.maxDate, __props.disabled));
118
+ const selected = computed(() => isSelectedDate(__props.cellDate, __props.value));
119
+ const rangeVal = computed(() => __props.value);
120
+ const isRangeStart = computed(() => __props.mode === "range" && rangeVal.value && ("from" in rangeVal.value) && isSameDay(__props.cellDate, rangeVal.value.from));
121
+ const isRangeEnd = computed(() => __props.mode === "range" && rangeVal.value && ("to" in rangeVal.value) && isSameDay(__props.cellDate, rangeVal.value.to));
122
+ const inRange = computed(() => __props.mode === "range" && isInRangeDate(__props.cellDate, __props.value));
123
+ const __mfResult0 = (() => {
124
+ const __el0 = __element("button");
125
+ __el0.setAttribute("type", "button");
126
+ __attr(__el0, "class", () => cn(__props.classes?.dayButton));
127
+ __attr(__el0, "data-date", () => dateStr.value);
128
+ __attr(__el0, "data-outside-month", () => isOutside.value ? "true" : undefined);
129
+ __attr(__el0, "data-today", () => isToday.value ? "true" : undefined);
130
+ __attr(__el0, "aria-disabled", () => isDisabled.value ? "true" : undefined);
131
+ __attr(__el0, "aria-selected", () => selected.value ? "true" : undefined);
132
+ __attr(__el0, "data-range-start", () => isRangeStart.value ? "true" : undefined);
133
+ __attr(__el0, "data-range-end", () => isRangeEnd.value ? "true" : undefined);
134
+ __attr(__el0, "data-in-range", () => inRange.value ? "true" : undefined);
135
+ __on(__el0, "click", () => __props.onSelect(__props.cellDate));
136
+ __enterChildren(__el0);
137
+ __append(__el0, __child(() => __props.cellDate.getDate()));
138
+ __exitChildren();
139
+ return __el0;
140
+ })();
141
+ __flushMountFrame();
142
+ return __mfResult0;
143
+ } catch (__mfErr) {
144
+ __discardMountFrame(__mfDepth);
145
+ throw __mfErr;
146
+ }
147
+ }
148
+ function ComposedCalendarRoot(__props) {
149
+ const __mfDepth = __pushMountFrame();
150
+ try {
151
+ let selectDate = function(date) {
152
+ if (isDateDisabledCheck(date, __props.minDate, __props.maxDate, __props.disabled))
153
+ return;
154
+ if (mode.value === "single") {
155
+ value.value = date;
156
+ } else if (mode.value === "multiple") {
157
+ const current = value.value ?? [];
158
+ const existing = current.findIndex((d) => isSameDay(d, date));
159
+ if (existing >= 0) {
160
+ const next = [...current];
161
+ next.splice(existing, 1);
162
+ value.value = next;
163
+ } else {
164
+ value.value = [...current, date];
165
+ }
166
+ } else if (mode.value === "range") {
167
+ const current = value.value;
168
+ if (!current || "to" in current && current.to) {
169
+ value.value = { from: date, to: date };
170
+ } else {
171
+ if (date < current.from) {
172
+ value.value = { from: date, to: current.from };
173
+ } else {
174
+ value.value = { from: current.from, to: date };
175
+ }
176
+ }
177
+ }
178
+ __props.onValueChange?.(value.value);
179
+ }, navigateMonth = function(delta) {
180
+ displayMonth.value = addMonths(displayMonth.value, delta);
181
+ __props.onMonthChange?.(displayMonth.value);
182
+ }, handleGridKeydown = function(event) {
183
+ const gridEl = event.currentTarget;
184
+ const active = document.activeElement;
185
+ if (!active || active.tagName !== "BUTTON")
186
+ return;
187
+ const dateStr = active.getAttribute("data-date");
188
+ if (!dateStr)
189
+ return;
190
+ const focused = new Date(`${dateStr}T00:00:00`);
191
+ let next = null;
192
+ if (event.key === "ArrowLeft") {
193
+ event.preventDefault();
194
+ next = addDays(focused, -1);
195
+ } else if (event.key === "ArrowRight") {
196
+ event.preventDefault();
197
+ next = addDays(focused, 1);
198
+ } else if (event.key === "ArrowUp") {
199
+ event.preventDefault();
200
+ next = addDays(focused, -7);
201
+ } else if (event.key === "ArrowDown") {
202
+ event.preventDefault();
203
+ next = addDays(focused, 7);
204
+ } else if (event.key === "Home") {
205
+ event.preventDefault();
206
+ const dayOfWeek = (focused.getDay() - (__props.weekStartsOn ?? 0) + 7) % 7;
207
+ next = addDays(focused, -dayOfWeek);
208
+ } else if (event.key === "End") {
209
+ event.preventDefault();
210
+ const dayOfWeek = (focused.getDay() - (__props.weekStartsOn ?? 0) + 7) % 7;
211
+ next = addDays(focused, 6 - dayOfWeek);
212
+ } else if (event.key === "PageUp") {
213
+ event.preventDefault();
214
+ next = event.shiftKey ? addMonths(focused, -12) : addMonths(focused, -1);
215
+ } else if (event.key === "PageDown") {
216
+ event.preventDefault();
217
+ next = event.shiftKey ? addMonths(focused, 12) : addMonths(focused, 1);
218
+ } else if (event.key === "Enter" || event.key === " ") {
219
+ event.preventDefault();
220
+ selectDate(focused);
221
+ return;
222
+ }
223
+ if (next) {
224
+ if (showDropdowns.value) {
225
+ const minYear = yearRange.value[0] ?? now.getFullYear();
226
+ const maxYear = yearRange.value[yearRange.value.length - 1] ?? now.getFullYear();
227
+ const minMo = __props.minDate && next.getFullYear() === __props.minDate.getFullYear() ? __props.minDate.getMonth() : 0;
228
+ const maxMo = __props.maxDate && next.getFullYear() === __props.maxDate.getFullYear() ? __props.maxDate.getMonth() : 11;
229
+ if (next.getFullYear() < minYear || next.getFullYear() > maxYear || next.getFullYear() === minYear && next.getMonth() < minMo || next.getFullYear() === maxYear && next.getMonth() > maxMo) {
230
+ return;
231
+ }
232
+ }
233
+ const needsMonthChange = next.getMonth() !== displayMonth.value.getMonth() || next.getFullYear() !== displayMonth.value.getFullYear();
234
+ if (needsMonthChange) {
235
+ displayMonth.value = new Date(next.getFullYear(), next.getMonth(), 1);
236
+ __props.onMonthChange?.(displayMonth.value);
237
+ }
238
+ const dateKey = formatDate(next);
239
+ const focusBtn = () => {
240
+ const btn = gridEl.querySelector(`button[data-date="${dateKey}"]`);
241
+ btn?.focus();
242
+ };
243
+ if (needsMonthChange) {
244
+ queueMicrotask(focusBtn);
245
+ } else {
246
+ focusBtn();
247
+ }
248
+ }
249
+ }, handleMonthSelect = function(event) {
250
+ const target = event.target;
251
+ const newMonth = Number(target.value);
252
+ if (isMonthDisabled(newMonth, displayMonth.value.getFullYear(), __props.minDate, __props.maxDate))
253
+ return;
254
+ displayMonth.value = new Date(displayMonth.value.getFullYear(), newMonth, 1);
255
+ __props.onMonthChange?.(displayMonth.value);
256
+ }, handleYearSelect = function(event) {
257
+ const target = event.target;
258
+ const newYear = Number(target.value);
259
+ let month = displayMonth.value.getMonth();
260
+ if (isMonthDisabled(month, newYear, __props.minDate, __props.maxDate)) {
261
+ if (__props.minDate && newYear === __props.minDate.getFullYear())
262
+ month = __props.minDate.getMonth();
263
+ else if (__props.maxDate && newYear === __props.maxDate.getFullYear())
264
+ month = __props.maxDate.getMonth();
265
+ }
266
+ displayMonth.value = new Date(newYear, month, 1);
267
+ __props.onMonthChange?.(displayMonth.value);
268
+ };
269
+ const now = new Date;
270
+ const mode = computed(() => __props.mode ?? "single");
271
+ const displayMonth = signal(__props.defaultMonth ?? now, "displayMonth");
272
+ const value = signal(__props.defaultValue ?? null, "value");
273
+ const dayHeaders = computed(() => Array.from({ length: 7 }, (_, i) => DAY_NAMES[((__props.weekStartsOn ?? 0) + i) % 7] ?? ""));
274
+ const titleText = computed(() => `${MONTH_NAMES[displayMonth.value.getMonth()]} ${displayMonth.value.getFullYear()}`);
275
+ const showDropdowns = computed(() => (__props.captionLayout ?? "buttons") === "dropdown" || (__props.captionLayout ?? "buttons") === "dropdown-buttons");
276
+ const showButtons = computed(() => (__props.captionLayout ?? "buttons") === "buttons" || (__props.captionLayout ?? "buttons") === "dropdown-buttons");
277
+ const yearRange = computed(() => showDropdowns.value ? computeYearRange(now, __props.minDate, __props.maxDate) : []);
278
+ const effectiveMinYear = computed(() => showDropdowns.value ? yearRange.value[0] ?? now.getFullYear() : 0);
279
+ const effectiveMaxYear = computed(() => showDropdowns.value ? yearRange.value[yearRange.value.length - 1] ?? now.getFullYear() : 9999);
280
+ const effectiveMinMonth = computed(() => __props.minDate && effectiveMinYear.value === __props.minDate.getFullYear() ? __props.minDate.getMonth() : 0);
281
+ const effectiveMaxMonth = computed(() => __props.maxDate && effectiveMaxYear.value === __props.maxDate.getFullYear() ? __props.maxDate.getMonth() : 11);
282
+ const isAtMinBoundary = computed(() => showDropdowns.value && displayMonth.value.getFullYear() === effectiveMinYear.value && displayMonth.value.getMonth() === effectiveMinMonth.value);
283
+ const isAtMaxBoundary = computed(() => showDropdowns.value && displayMonth.value.getFullYear() === effectiveMaxYear.value && displayMonth.value.getMonth() === effectiveMaxMonth.value);
284
+ const rows = computed(() => computeGridRows(displayMonth.value, __props.weekStartsOn ?? 0));
285
+ const prevChevron = (() => {
286
+ const __el0 = __element("svg");
287
+ __el0.setAttribute("xmlns", "http://www.w3.org/2000/svg");
288
+ __el0.setAttribute("width", "16");
289
+ __el0.setAttribute("height", "16");
290
+ __el0.setAttribute("viewBox", "0 0 24 24");
291
+ __el0.setAttribute("fill", "none");
292
+ __el0.setAttribute("stroke", "currentColor");
293
+ __el0.setAttribute("stroke-width", "2");
294
+ __el0.setAttribute("stroke-linecap", "round");
295
+ __el0.setAttribute("stroke-linejoin", "round");
296
+ __el0.setAttribute("aria-hidden", "true");
297
+ __enterChildren(__el0);
298
+ __append(__el0, (() => {
299
+ const __el1 = __element("path");
300
+ __el1.setAttribute("d", "m15 18-6-6 6-6");
301
+ return __el1;
302
+ })());
303
+ __exitChildren();
304
+ return __el0;
305
+ })();
306
+ const nextChevron = (() => {
307
+ const __el2 = __element("svg");
308
+ __el2.setAttribute("xmlns", "http://www.w3.org/2000/svg");
309
+ __el2.setAttribute("width", "16");
310
+ __el2.setAttribute("height", "16");
311
+ __el2.setAttribute("viewBox", "0 0 24 24");
312
+ __el2.setAttribute("fill", "none");
313
+ __el2.setAttribute("stroke", "currentColor");
314
+ __el2.setAttribute("stroke-width", "2");
315
+ __el2.setAttribute("stroke-linecap", "round");
316
+ __el2.setAttribute("stroke-linejoin", "round");
317
+ __el2.setAttribute("aria-hidden", "true");
318
+ __enterChildren(__el2);
319
+ __append(__el2, (() => {
320
+ const __el3 = __element("path");
321
+ __el3.setAttribute("d", "m9 18 6-6-6-6");
322
+ return __el3;
323
+ })());
324
+ __exitChildren();
325
+ return __el2;
326
+ })();
327
+ const __mfResult0 = (() => {
328
+ const __el4 = __element("div");
329
+ __el4.setAttribute("data-v-id", "ComposedCalendarRoot");
330
+ __attr(__el4, "class", () => cn(__props.classes?.root));
331
+ __enterChildren(__el4);
332
+ __append(__el4, (() => {
333
+ const __el5 = __element("div");
334
+ __attr(__el5, "class", () => cn(__props.classes?.header));
335
+ __attr(__el5, "data-caption-layout", () => __props.captionLayout ?? "buttons");
336
+ __enterChildren(__el5);
337
+ __append(__el5, __conditional(() => showButtons.value, () => (() => {
338
+ const __el6 = __element("button");
339
+ __el6.setAttribute("type", "button");
340
+ __attr(__el6, "class", () => cn(__props.classes?.navButton));
341
+ __el6.setAttribute("aria-label", "Previous month");
342
+ __attr(__el6, "aria-disabled", () => isAtMinBoundary.value ? "true" : undefined);
343
+ __on(__el6, "click", () => {
344
+ if (!isAtMinBoundary.value)
345
+ navigateMonth(-1);
346
+ });
347
+ __enterChildren(__el6);
348
+ __insert(__el6, prevChevron);
349
+ __exitChildren();
350
+ return __el6;
351
+ })(), () => null));
352
+ __append(__el5, __conditional(() => showDropdowns.value, () => (() => {
353
+ const __el7 = document.createDocumentFragment();
354
+ __append(__el7, (() => {
355
+ const __el8 = __element("select");
356
+ __el8.setAttribute("aria-label", "Select month");
357
+ __attr(__el8, "class", () => cn(__props.classes?.monthSelect));
358
+ __on(__el8, "change", handleMonthSelect);
359
+ __enterChildren(__el8);
360
+ __list(__el8, () => MONTH_OPTIONS, null, (mo) => (() => {
361
+ const __el9 = __element("option");
362
+ {
363
+ const __v = String(mo.index);
364
+ if (__v != null && __v !== false)
365
+ __el9.setAttribute("value", __v === true ? "" : __v);
366
+ }
367
+ __attr(__el9, "disabled", () => isMonthDisabled(mo.index, displayMonth.value.getFullYear(), __props.minDate, __props.maxDate));
368
+ __enterChildren(__el9);
369
+ __insert(__el9, mo.name);
370
+ __exitChildren();
371
+ return __el9;
372
+ })());
373
+ __exitChildren();
374
+ __prop(__el8, "value", () => String(displayMonth.value.getMonth()));
375
+ return __el8;
376
+ })());
377
+ __append(__el7, (() => {
378
+ const __el10 = __element("select");
379
+ __el10.setAttribute("aria-label", "Select year");
380
+ __attr(__el10, "class", () => cn(__props.classes?.yearSelect));
381
+ __on(__el10, "change", handleYearSelect);
382
+ __enterChildren(__el10);
383
+ __list(__el10, () => yearRange.value, null, (yr) => (() => {
384
+ const __el11 = __element("option");
385
+ {
386
+ const __v = String(yr);
387
+ if (__v != null && __v !== false)
388
+ __el11.setAttribute("value", __v === true ? "" : __v);
389
+ }
390
+ __enterChildren(__el11);
391
+ __insert(__el11, yr);
392
+ __exitChildren();
393
+ return __el11;
394
+ })());
395
+ __exitChildren();
396
+ __prop(__el10, "value", () => String(displayMonth.value.getFullYear()));
397
+ return __el10;
398
+ })());
399
+ return __el7;
400
+ })(), () => (() => {
401
+ const __el12 = __element("div");
402
+ __attr(__el12, "class", () => cn(__props.classes?.title));
403
+ __enterChildren(__el12);
404
+ __append(__el12, __child(() => titleText.value));
405
+ __exitChildren();
406
+ return __el12;
407
+ })()));
408
+ __append(__el5, __conditional(() => showButtons.value, () => (() => {
409
+ const __el13 = __element("button");
410
+ __el13.setAttribute("type", "button");
411
+ __attr(__el13, "class", () => cn(__props.classes?.navButton));
412
+ __el13.setAttribute("aria-label", "Next month");
413
+ __attr(__el13, "aria-disabled", () => isAtMaxBoundary.value ? "true" : undefined);
414
+ __on(__el13, "click", () => {
415
+ if (!isAtMaxBoundary.value)
416
+ navigateMonth(1);
417
+ });
418
+ __enterChildren(__el13);
419
+ __insert(__el13, nextChevron);
420
+ __exitChildren();
421
+ return __el13;
422
+ })(), () => null));
423
+ __exitChildren();
424
+ return __el5;
425
+ })());
426
+ __append(__el4, (() => {
427
+ const __el14 = __element("table");
428
+ __el14.setAttribute("role", "grid");
429
+ __attr(__el14, "class", () => cn(__props.classes?.grid));
430
+ __on(__el14, "keydown", handleGridKeydown);
431
+ __enterChildren(__el14);
432
+ __append(__el14, (() => {
433
+ const __el15 = __element("thead");
434
+ __enterChildren(__el15);
435
+ __append(__el15, (() => {
436
+ const __el16 = __element("tr");
437
+ __enterChildren(__el16);
438
+ __list(__el16, () => dayHeaders.value, null, (day) => (() => {
439
+ const __el17 = __element("th");
440
+ __el17.setAttribute("scope", "col");
441
+ __attr(__el17, "class", () => cn(__props.classes?.headCell));
442
+ __enterChildren(__el17);
443
+ __insert(__el17, day);
444
+ __exitChildren();
445
+ return __el17;
446
+ })());
447
+ __exitChildren();
448
+ return __el16;
449
+ })());
450
+ __exitChildren();
451
+ return __el15;
452
+ })());
453
+ __append(__el14, (() => {
454
+ const __el18 = __element("tbody");
455
+ __enterChildren(__el18);
456
+ __list(__el18, () => rows.value, null, (rowDates) => (() => {
457
+ const __el19 = __element("tr");
458
+ __enterChildren(__el19);
459
+ __list(__el19, () => rowDates, null, (cellDate) => (() => {
460
+ const __el20 = __element("td");
461
+ __el20.setAttribute("role", "gridcell");
462
+ __attr(__el20, "class", () => cn(__props.classes?.cell));
463
+ __enterChildren(__el20);
464
+ __append(__el20, DayCell({ get cellDate() {
465
+ return cellDate;
466
+ }, get displayMonth() {
467
+ return displayMonth.value;
468
+ }, get now() {
469
+ return now;
470
+ }, get mode() {
471
+ return mode.value;
472
+ }, get value() {
473
+ return value.value;
474
+ }, get minDate() {
475
+ return __props.minDate;
476
+ }, get maxDate() {
477
+ return __props.maxDate;
478
+ }, get disabled() {
479
+ return __props.disabled;
480
+ }, get classes() {
481
+ return __props.classes;
482
+ }, get onSelect() {
483
+ return selectDate;
484
+ } }));
485
+ __exitChildren();
486
+ return __el20;
487
+ })());
488
+ __exitChildren();
489
+ return __el19;
490
+ })());
491
+ __exitChildren();
492
+ return __el18;
493
+ })());
494
+ __exitChildren();
495
+ return __el14;
496
+ })());
497
+ __exitChildren();
498
+ return __el4;
499
+ })();
500
+ __flushMountFrame();
501
+ return __mfResult0;
502
+ } catch (__mfErr) {
503
+ __discardMountFrame(__mfDepth);
504
+ throw __mfErr;
505
+ }
506
+ }
507
+ var ComposedCalendar = ComposedCalendarRoot;
508
+
509
+ export { ComposedCalendar };
@@ -54,7 +54,7 @@ function CommandRoot(options = {}) {
54
54
  setHidden(empty, visibleCount > 0);
55
55
  state.activeIndex.value = 0;
56
56
  updateActiveItem();
57
- }, createItem = function(value, label, keywords, parent) {
57
+ }, createItem = function(value, label, keywords) {
58
58
  const item = (() => {
59
59
  const __el4 = __element("div");
60
60
  __el4.setAttribute("role", "option");
@@ -78,7 +78,6 @@ function CommandRoot(options = {}) {
78
78
  return __el4;
79
79
  })();
80
80
  allItems.push(item);
81
- (parent ?? list).appendChild(item);
82
81
  updateActiveItem();
83
82
  return item;
84
83
  }, Item = function(value, label, keywords) {
@@ -112,23 +111,20 @@ function CommandRoot(options = {}) {
112
111
  })();
113
112
  const groupItems = [];
114
113
  groups.set(el, { heading, items: groupItems });
115
- list.appendChild(el);
116
114
  return {
117
115
  el,
118
116
  Item: (value, itemLabel, keywords) => {
119
- const item = createItem(value, itemLabel, keywords, el);
117
+ const item = createItem(value, itemLabel, keywords);
120
118
  groupItems.push(item);
121
119
  return item;
122
120
  }
123
121
  };
124
122
  }, Separator = function() {
125
- const hr = (() => {
123
+ return (() => {
126
124
  const __el7 = __element("hr");
127
125
  __el7.setAttribute("role", "separator");
128
126
  return __el7;
129
127
  })();
130
- list.appendChild(hr);
131
- return hr;
132
128
  };
133
129
  const { filter: customFilter, onSelect, onInputChange, placeholder, ...attrs } = options;
134
130
  const listId = uniqueId("command-list");