@astryx-vue/core 0.2.2 → 0.2.3

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 (253) hide show
  1. package/THIRD_PARTY_NOTICES.md +2 -0
  2. package/dist/AppShell/index.d.ts +1 -1
  3. package/dist/AppShell/index.js +1 -1
  4. package/dist/{AppShell-Cb41gIAj.js → AppShell-Dd-D4bA2.js} +2 -2
  5. package/dist/AvatarGroup/index.d.ts +1 -1
  6. package/dist/Banner/index.d.ts +1 -1
  7. package/dist/Breadcrumbs/index.d.ts +3 -2
  8. package/dist/Breadcrumbs/index.js +3 -2
  9. package/dist/{Breadcrumbs-CTQ7fjDn.js → Breadcrumbs-CWGfgLNK.js} +13 -8
  10. package/dist/Button/index.d.ts +1 -1
  11. package/dist/ButtonGroup/index.d.ts +1 -1
  12. package/dist/Calendar/index.d.ts +2 -2
  13. package/dist/Calendar/index.js +1 -1
  14. package/dist/Calendar-CnOsSjMY.js +656 -0
  15. package/dist/Card/index.d.ts +1 -1
  16. package/dist/Carousel/index.js +1 -1
  17. package/dist/{Carousel-X0cuQkvg.js → Carousel-JA7ilqI_.js} +2 -2
  18. package/dist/Chat/index.d.ts +1 -1
  19. package/dist/Chat/index.js +1 -1
  20. package/dist/{Chat-M0tiGrNT.js → Chat-C7WrCOE4.js} +3 -3
  21. package/dist/CheckboxIndicator/index.js +1 -1
  22. package/dist/CheckboxIndicator-D37cm2Rh.js +68 -0
  23. package/dist/CheckboxInput/index.d.ts +1 -1
  24. package/dist/CheckboxInput/index.js +1 -1
  25. package/dist/{CheckboxInput-CMsEE1_4.js → CheckboxInput-25Q8ItH-.js} +10 -9
  26. package/dist/CheckboxList/index.d.ts +1 -1
  27. package/dist/CheckboxList/index.js +1 -1
  28. package/dist/{CheckboxList-BbCPiend.js → CheckboxList-CnCGnkZk.js} +77 -24
  29. package/dist/Citation/index.js +1 -1
  30. package/dist/{Citation-C1veUk5p.js → Citation-CtwrU33I.js} +2 -2
  31. package/dist/ClickableCard/index.d.ts +1 -1
  32. package/dist/Code/index.d.ts +1 -1
  33. package/dist/Code/index.js +2 -2
  34. package/dist/{Code-yb_KOFtJ.js → Code-BvefYRpx.js} +2 -1
  35. package/dist/{CodeBlock-DesTJAkm.js → CodeBlock-BZGzYeoL.js} +1 -1
  36. package/dist/Collapsible/index.d.ts +1 -1
  37. package/dist/Collapsible/index.js +1 -1
  38. package/dist/{Collapsible-BestK35V.js → Collapsible-3YerR-FO.js} +1 -1
  39. package/dist/CommandPalette/index.js +1 -1
  40. package/dist/{CommandPalette-BArt97V8.js → CommandPalette-BNbM9T9y.js} +1 -1
  41. package/dist/ComplexSelector/index.d.ts +1 -1
  42. package/dist/ComplexSelector/index.js +1 -1
  43. package/dist/{ComplexSelector-CAoig1RK.js → ComplexSelector-LtbLlrcj.js} +3 -3
  44. package/dist/ContextMenu/index.d.ts +3 -2
  45. package/dist/ContextMenu/index.js +3 -2
  46. package/dist/{ContextMenu-9Im6i43E.js → ContextMenu-DVQl0xL5.js} +204 -56
  47. package/dist/DateInput/index.d.ts +2 -2
  48. package/dist/DateInput/index.js +1 -1
  49. package/dist/DateInput-zm8sNc0t.js +743 -0
  50. package/dist/DateRangeInput/index.d.ts +1 -1
  51. package/dist/DateRangeInput/index.js +1 -1
  52. package/dist/{DateRangeInput-DwDy3eRo.js → DateRangeInput-DlVFzrf7.js} +54 -19
  53. package/dist/DateTimeInput/index.d.ts +1 -1
  54. package/dist/DateTimeInput/index.js +1 -1
  55. package/dist/{DateTimeInput-BYiaC9bn.js → DateTimeInput-C7Z-p6Yd.js} +54 -15
  56. package/dist/Dialog/index.d.ts +1 -1
  57. package/dist/DropdownMenu/index.d.ts +3 -3
  58. package/dist/DropdownMenu/index.js +4 -3
  59. package/dist/{DropdownMenu-Dh-WAHKb.js → DropdownMenu-BoZChdev.js} +308 -63
  60. package/dist/DropdownMenu-u1psFjis.js +325 -0
  61. package/dist/DropdownMenuRadioItem.vue-uVM0FD2f.d.ts +564 -0
  62. package/dist/FileInput/index.d.ts +1 -1
  63. package/dist/FileInput/index.js +1 -1
  64. package/dist/{FileInput-DLO6V12n.js → FileInput-QdlZn7qK.js} +2 -2
  65. package/dist/Icon/index.d.ts +4 -3
  66. package/dist/Icon/index.js +2 -2
  67. package/dist/{Icon-CJKjdJy-.js → Icon-bteSId7T.js} +113 -18
  68. package/dist/Indicator/index.d.ts +3 -0
  69. package/dist/Indicator/index.js +2 -0
  70. package/dist/InputGroup/index.d.ts +2 -2
  71. package/dist/InputGroup/index.js +3 -2
  72. package/dist/InputGroup-BzR6JRZb.js +129 -0
  73. package/dist/Lightbox/index.js +1 -1
  74. package/dist/{Lightbox-CdFCS_EA.js → Lightbox-BSzfqZ-u.js} +2 -2
  75. package/dist/List/index.d.ts +1 -1
  76. package/dist/Markdown/index.js +1 -1
  77. package/dist/{Markdown-BqKloI3w.js → Markdown-B6tSqenv.js} +8 -5
  78. package/dist/MetadataList/index.js +1 -1
  79. package/dist/{MetadataList-CvZkmisf.js → MetadataList-aN1tRn6W.js} +1 -1
  80. package/dist/MobileNav/index.js +1 -1
  81. package/dist/{MobileNavToggle-Bwi0qXXM.js → MobileNavToggle-fqcSafkc.js} +1 -1
  82. package/dist/MoreMenu/index.d.ts +1 -1
  83. package/dist/MoreMenu/index.js +1 -1
  84. package/dist/{MoreMenu-BwJaJrkB.js → MoreMenu-B3brqdK_.js} +1 -1
  85. package/dist/MultiSelector/index.d.ts +2 -2
  86. package/dist/MultiSelector/index.js +1 -1
  87. package/dist/{MultiSelector-C-ETfFy_.js → MultiSelector-BD5PMgez.js} +303 -121
  88. package/dist/{NavDisclosure-DHrSNRDR.js → NavDisclosure-DbYLDXK0.js} +1 -1
  89. package/dist/NavItem/index.d.ts +1 -1
  90. package/dist/NavMenu/index.js +2 -2
  91. package/dist/{NavMenuItem-B-k7olt5.js → NavMenuItem-DrwIMHKO.js} +1 -1
  92. package/dist/NumberInput/index.d.ts +1 -1
  93. package/dist/NumberInput/index.js +1 -1
  94. package/dist/{NumberInput-DjetVB8O.js → NumberInput-CBeU4lEl.js} +1 -1
  95. package/dist/Outline/index.js +1 -1
  96. package/dist/{Outline-Bz9c-u5y.js → Outline--HVMSB6i.js} +1 -1
  97. package/dist/OverflowList/index.d.ts +1 -1
  98. package/dist/OverflowList/index.js +1 -1
  99. package/dist/{OverflowList-ED-KN9Y5.js → OverflowList-FMh7r-r_.js} +3 -3
  100. package/dist/Pagination/index.d.ts +1 -1
  101. package/dist/Pagination/index.js +1 -1
  102. package/dist/{Pagination-Cb66HMEf.js → Pagination-DlIvESjx.js} +2 -2
  103. package/dist/Popover/index.d.ts +1 -1
  104. package/dist/Popover/index.js +1 -1
  105. package/dist/{Popover-Crhk9PNP.js → Popover-D7zqpFwU.js} +1 -1
  106. package/dist/PowerSearch/index.d.ts +1 -1
  107. package/dist/PowerSearch/index.js +1 -1
  108. package/dist/{PowerSearch-CjU8y4mi.js → PowerSearch-CMG7Rb69.js} +14 -14
  109. package/dist/ProgressBar/index.d.ts +1 -1
  110. package/dist/Radio/index.d.ts +1 -1
  111. package/dist/Radio/index.js +1 -1
  112. package/dist/{RadioGroup-BqjdSCfJ.js → RadioGroup-CBqUPq_L.js} +16 -8
  113. package/dist/RadioList/index.d.ts +1 -1
  114. package/dist/RadioList/index.js +1 -1
  115. package/dist/{RadioList-DI8ujXcT.js → RadioList-CPOJn9Th.js} +1 -1
  116. package/dist/Resizable/index.js +1 -1
  117. package/dist/{Resizable-D-TBCg0Y.js → Resizable-CXpvj1TZ.js} +1 -1
  118. package/dist/ScrollableArea/index.d.ts +1 -1
  119. package/dist/SegmentedControl/index.d.ts +1 -1
  120. package/dist/SelectableCard/index.d.ts +1 -1
  121. package/dist/Selector/index.d.ts +2 -2
  122. package/dist/Selector/index.js +1 -1
  123. package/dist/Selector-BpPnuWH3.js +618 -0
  124. package/dist/SideNav/index.d.ts +1 -1
  125. package/dist/SideNav/index.js +1 -1
  126. package/dist/{SideNav-DonEfiAx.js → SideNav-D4TupqgE.js} +3 -3
  127. package/dist/Stack/index.d.ts +1 -1
  128. package/dist/Stepper/index.d.ts +1 -1
  129. package/dist/Stepper/index.js +1 -1
  130. package/dist/{Stepper-D2ZIcUNx.js → Stepper-H-6-T5Ps.js} +1 -1
  131. package/dist/Switch/index.d.ts +1 -1
  132. package/dist/TabList/index.d.ts +1 -1
  133. package/dist/TabList/index.js +1 -1
  134. package/dist/{TabList-D3F-stq-.js → TabList-BlzkrObv.js} +2 -2
  135. package/dist/Table/index.js +1 -1
  136. package/dist/{Table-CrP2Uffq.js → Table-nqA_njNz.js} +6 -6
  137. package/dist/TextArea/index.d.ts +1 -1
  138. package/dist/TextInput/index.d.ts +1 -1
  139. package/dist/Theme/index.d.ts +2 -1
  140. package/dist/Theme/index.js +1 -1
  141. package/dist/{Theme-BuUiiJNr.js → Theme-CejS9MHm.js} +21 -3
  142. package/dist/Thumbnail/index.js +1 -1
  143. package/dist/{Thumbnail-BC5JGPGZ.js → Thumbnail-CXb3m_Hv.js} +2 -2
  144. package/dist/{TimeField-DpHFrNv0.js → TimeField-B3cndWb0.js} +2 -2
  145. package/dist/TimeInput/index.d.ts +1 -1
  146. package/dist/TimeInput/index.js +1 -1
  147. package/dist/{TimeInput-DJLV0_4z.js → TimeInput-BHQ_LKGm.js} +1 -1
  148. package/dist/Timestamp/index.d.ts +1 -1
  149. package/dist/Timestamp/index.js +1 -1
  150. package/dist/{Timestamp-GKNjjt5g.js → Timestamp-Cfuxbb3i.js} +2 -2
  151. package/dist/ToggleButton/index.d.ts +1 -1
  152. package/dist/Token/index.d.ts +1 -1
  153. package/dist/Token/index.js +1 -1
  154. package/dist/{Token-Chu_eCVs.js → Token-CdVLH0_H.js} +2 -2
  155. package/dist/Tokenizer/index.d.ts +1 -1
  156. package/dist/Tokenizer/index.js +1 -1
  157. package/dist/{Tokenizer-DRDpvQ_l.js → Tokenizer-DlD-S_8-.js} +3 -3
  158. package/dist/Toolbar/index.d.ts +1 -1
  159. package/dist/TopNav/index.d.ts +1 -1
  160. package/dist/TopNav/index.js +1 -1
  161. package/dist/{TopNav-CEyWddtA.js → TopNav-DzV874G7.js} +5 -5
  162. package/dist/TreeList/index.js +1 -1
  163. package/dist/{TreeList-COS8US8e.js → TreeList-DEwvlZRV.js} +2 -2
  164. package/dist/Typeahead/index.d.ts +1 -1
  165. package/dist/Typeahead/index.js +1 -1
  166. package/dist/{Typeahead-P7cCqtaQ.js → Typeahead-DQ3tmqYe.js} +3 -3
  167. package/dist/{context-O2Vb8cJl.js → colorMode-CBgdgDSn.js} +1 -7
  168. package/dist/composables/index.d.ts +2 -2
  169. package/dist/composables/index.js +10 -5
  170. package/dist/{composables-CVfjp9h4.js → composables-DDI08XFF.js} +98 -1
  171. package/dist/context-Cws_tXTr.js +7 -0
  172. package/dist/context-D5-MwxnN.js +4 -0
  173. package/dist/{context-CiKncNSH.js → context-DmOLCubj.js} +82 -8
  174. package/dist/{index-DimuSES0.d.ts → index-B1x05arQ.d.ts} +3 -1
  175. package/dist/index-B9f1rUEv.d.ts +77 -0
  176. package/dist/{index-D-ZuubCK.d.ts → index-BB5yVIN-.d.ts} +2 -2
  177. package/dist/{index-Bu0Zd1uw.d.ts → index-BMn9ghAX.d.ts} +3 -3
  178. package/dist/{index-CJlBAXwj.d.ts → index-BRfR0lhb.d.ts} +41 -4
  179. package/dist/{index-DNRBbwp_.d.ts → index-BTAgQRP0.d.ts} +758 -111
  180. package/dist/{index-DA52oIdw.d.ts → index-BcJBLWJ0.d.ts} +2 -2
  181. package/dist/{index-jdjcb3Js.d.ts → index-Bqb_Fyju.d.ts} +2 -2
  182. package/dist/{index-CNjbOgty.d.ts → index-C-QpeUlQ.d.ts} +2 -2
  183. package/dist/{index-DGXviOlp.d.ts → index-C2sfHfBw.d.ts} +31 -5
  184. package/dist/{index-By2mSzUA.d.ts → index-CA6RbRWx.d.ts} +1 -1
  185. package/dist/{index-gW0HW02U.d.ts → index-COxy6LEW.d.ts} +1 -1
  186. package/dist/{index-CVn0GBdB.d.ts → index-Ca8VIE4l.d.ts} +1 -1
  187. package/dist/{index-CRizexSC.d.ts → index-Ch6BbxCP.d.ts} +2 -67
  188. package/dist/{index-DWH_HzXi.d.ts → index-ChWlKHjc.d.ts} +1 -1
  189. package/dist/{index-kVhSuA9t.d.ts → index-Ctu32CLv.d.ts} +4 -4
  190. package/dist/{index-DOUEn7V0.d.ts → index-D1Twv_fL.d.ts} +65 -6
  191. package/dist/{index-D_nYxnNv.d.ts → index-D7-WTV6I.d.ts} +1 -1
  192. package/dist/{index-c_TaW8mM.d.ts → index-D8o50qOE.d.ts} +1 -1
  193. package/dist/{index-D4I_obqR.d.ts → index-DAiGhkNZ.d.ts} +1 -1
  194. package/dist/{index-Cs5pcwY3.d.ts → index-DMQG6kdM.d.ts} +3 -3
  195. package/dist/index-D_UEJIU5.d.ts +83 -0
  196. package/dist/{index-fa72tWIU.d.ts → index-DkVEBdWa.d.ts} +2 -2
  197. package/dist/{index-B1TG2GPS.d.ts → index-DxsKyAxq.d.ts} +116 -44
  198. package/dist/{index-BHqRH7QW.d.ts → index-FEy8qFSD.d.ts} +2 -2
  199. package/dist/{index-qiZtHnGK.d.ts → index-LIyvJTW3.d.ts} +39 -0
  200. package/dist/{index-BKr7yvVv.d.ts → index-MPcg1Pm4.d.ts} +1 -1
  201. package/dist/{index-cGagYM1g.d.ts → index-ViSV0RBx.d.ts} +1 -1
  202. package/dist/{index-C7mxUcDR.d.ts → index-f4NGT-e2.d.ts} +4 -4
  203. package/dist/{index-DsyKhauk.d.ts → index-foQMNKZO.d.ts} +1 -1
  204. package/dist/{index-u5ozu0G7.d.ts → index-vP0EtrJJ.d.ts} +13 -3
  205. package/dist/{index-CZeoAr0a.d.ts → index-xfkEuGLY.d.ts} +2 -2
  206. package/dist/index.d.ts +76 -75
  207. package/dist/index.js +115 -107
  208. package/dist/locale/index.d.ts +1 -1
  209. package/dist/locale/index.js +2 -2
  210. package/dist/{locale-Cpk_nrLA.js → locale-CCwVnyMZ.js} +25 -1
  211. package/dist/searchResultMessage-DN0HeRRB.js +94 -0
  212. package/dist/semantic-CKH9XVqa.d.ts +54 -0
  213. package/dist/{types-pnljWjEE.d.ts → types-CwyibrRB.d.ts} +12 -11
  214. package/dist/types-jmqqnkKA.d.ts +163 -0
  215. package/dist/{useAnchoredListbox-7W90Ny-9.js → useAnchoredListbox-BN9LQnon.js} +1 -1
  216. package/dist/useDatePresentation-C07PnOCw.js +21 -0
  217. package/dist/{useMonthGrid-CmJsZTcB.js → useDateRange-CIXoE_8k.js} +1 -42
  218. package/dist/useDisclosureHandle-Df3HhAfC.js +24 -0
  219. package/dist/{useDismiss-CAiHU6QD.js → useDismiss-Cj8x_51F.js} +8 -4
  220. package/dist/useFieldControlState-voICDrys.js +18 -0
  221. package/dist/useHandleRef-6cdKugm8.js +17 -0
  222. package/dist/useIndicator-i1NORM7W.js +147 -0
  223. package/dist/useMenuDrillIn-OaEwjK44.js +520 -0
  224. package/dist/useMonthGrid-fGHSSrFc.js +43 -0
  225. package/dist/usePendingChange-ib-h8FZK.js +25 -0
  226. package/dist/useSubmenuMode-CZN9qrUo.js +37 -0
  227. package/package.json +5 -1
  228. package/styles/calendar.css +38 -3
  229. package/styles/check-indicator.css +17 -0
  230. package/styles/checkbox-indicator.css +29 -10
  231. package/styles/checkbox-input.css +0 -11
  232. package/styles/date-input.css +48 -0
  233. package/styles/dropdown-menu.css +163 -0
  234. package/styles/field.css +48 -0
  235. package/styles/icon.css +51 -3
  236. package/styles/input-group.css +32 -3
  237. package/styles/multi-selector.css +26 -0
  238. package/styles/radio-indicator.css +90 -0
  239. package/styles/radio.css +9 -42
  240. package/styles/selector.css +112 -14
  241. package/styles.css +2 -0
  242. package/dist/Calendar-BFaI5AMv.js +0 -352
  243. package/dist/CheckboxIndicator-DdJmksHt.js +0 -52
  244. package/dist/DateInput-BLocxqC3.js +0 -376
  245. package/dist/DropdownMenu-Ddfr-aEC.js +0 -164
  246. package/dist/InputGroup-ChrFVxzV.js +0 -42
  247. package/dist/Selector-DE2IEFML.js +0 -468
  248. package/dist/index-Bgv4ZmBl.d.ts +0 -72
  249. package/dist/index-DN7MXPHM.d.ts +0 -398
  250. package/dist/index-IbUN4M8V.d.ts +0 -40
  251. package/dist/types-DDAAT1Xd.d.ts +0 -285
  252. package/dist/useGridRovingFocus-DQQAOYH5.js +0 -99
  253. /package/dist/{index-BUXNRekN.d.ts → index-BXkNZF3q.d.ts} +0 -0
@@ -0,0 +1,656 @@
1
+ import { t as _sfc_main$1 } from "./VisuallyHidden-C7NN3VEP.js";
2
+ import { t as useAnnounce } from "./announce-Cnio10Wk.js";
3
+ import { c as resolveWeekStart } from "./useDateRange-CIXoE_8k.js";
4
+ import { t as useHandleRef } from "./useHandleRef-6cdKugm8.js";
5
+ import { a as useAstryxMessages, i as useAstryxLocale } from "./context-DmOLCubj.js";
6
+ import { n as standaloneShortWeekdayNames, r as weekdayNames, t as formatCalendarMonth } from "./locale-CCwVnyMZ.js";
7
+ import { t as _sfc_main$2 } from "./Icon-bteSId7T.js";
8
+ import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, normalizeClass, openBlock, renderList, renderSlot, shallowRef, toDisplayString, unref, useTemplateRef, watch, withCtx } from "vue";
9
+ import { CalendarDate } from "@internationalized/date";
10
+ import "../styles/calendar.css";
11
+ //#region src/Calendar/calendarDate.ts
12
+ function toCalendarDate(date) {
13
+ return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate());
14
+ }
15
+ function fromCalendarDate(date) {
16
+ return new Date(date.year, date.month - 1, date.day);
17
+ }
18
+ function calendarISO(date) {
19
+ const month = String(date.month).padStart(2, "0");
20
+ const day = String(date.day).padStart(2, "0");
21
+ return `${date.year}-${month}-${day}`;
22
+ }
23
+ function dateISO(date) {
24
+ return calendarISO(toCalendarDate(date));
25
+ }
26
+ function sameCalendarDay(a, b) {
27
+ return a.compare(b) === 0;
28
+ }
29
+ function calendarDiffDays(a, b) {
30
+ const start = Date.UTC(a.year, a.month - 1, a.day);
31
+ const end = Date.UTC(b.year, b.month - 1, b.day);
32
+ return Math.round((end - start) / 864e5);
33
+ }
34
+ function monthIndex(date) {
35
+ return date.year * 12 + date.month;
36
+ }
37
+ function shiftMonth(date, amount) {
38
+ return new CalendarDate(date.year, date.month, 1).add({ months: amount });
39
+ }
40
+ function weekdayIndex(date) {
41
+ return date.toDate("UTC").getUTCDay();
42
+ }
43
+ function weekStartIndex(value) {
44
+ return resolveWeekStart(value);
45
+ }
46
+ /** ISO week number. The Thursday of the week decides the year. */
47
+ function isoWeekNumber(date) {
48
+ const utc = new Date(Date.UTC(date.year, date.month - 1, date.day));
49
+ const day = utc.getUTCDay() || 7;
50
+ utc.setUTCDate(utc.getUTCDate() + 4 - day);
51
+ const yearStart = Date.UTC(utc.getUTCFullYear(), 0, 1);
52
+ return Math.ceil(((utc.getTime() - yearStart) / 864e5 + 1) / 7);
53
+ }
54
+ function weekFieldName(locale) {
55
+ try {
56
+ const name = new Intl.DisplayNames(locale, { type: "dateTimeField" }).of("weekOfYear");
57
+ if (name) return name;
58
+ } catch {}
59
+ return locale.startsWith("zh") ? "周" : "week";
60
+ }
61
+ function formatWeekdayDate(date, locale) {
62
+ return new Intl.DateTimeFormat(locale, {
63
+ weekday: "long",
64
+ year: "numeric",
65
+ month: "long",
66
+ day: "numeric"
67
+ }).format(fromCalendarDate(date));
68
+ }
69
+ /**
70
+ * The month the calendar opens on. An explicit focus date wins, then the
71
+ * selection. Otherwise today is clamped into the min/max window so the first
72
+ * paint is not an all-disabled month.
73
+ */
74
+ function initialCalendarFocus(options) {
75
+ if (options.focusDate) return toCalendarDate(options.focusDate);
76
+ if (options.selected) return toCalendarDate(options.selected);
77
+ if (options.rangeStart) return toCalendarDate(options.rangeStart);
78
+ const today = options.today ? toCalendarDate(options.today) : toCalendarDate(/* @__PURE__ */ new Date());
79
+ const min = options.min ? toCalendarDate(options.min) : null;
80
+ const max = options.max ? toCalendarDate(options.max) : null;
81
+ if (min && today.compare(min) < 0) return min;
82
+ if (max && today.compare(max) > 0) {
83
+ const shifted = shiftMonth(max, -Math.max(0, options.numberOfMonths - 1));
84
+ if (min && shifted.compare(new CalendarDate(min.year, min.month, 1)) < 0) return min;
85
+ return shifted;
86
+ }
87
+ return today;
88
+ }
89
+ //#endregion
90
+ //#region src/Calendar/useCalendarConstraints.ts
91
+ /**
92
+ * Bounds, custom constraints, and an in-progress range span.
93
+ * Span counts both endpoints, so a max of 7 reaches six days either side of the anchor.
94
+ * The anchor itself stays enabled so the start can be moved or cancelled.
95
+ */
96
+ function isCalendarDateDisabled(date, input) {
97
+ const min = input.min ? toCalendarDate(input.min) : null;
98
+ const max = input.max ? toCalendarDate(input.max) : null;
99
+ if (min && date.compare(min) < 0) return true;
100
+ if (max && date.compare(max) > 0) return true;
101
+ const anchor = input.rangeAnchor;
102
+ if (anchor) {
103
+ const distance = Math.abs(calendarDiffDays(anchor, date));
104
+ if (input.maxRangeSpan != null && distance > input.maxRangeSpan - 1) return true;
105
+ if (input.minRangeSpan != null && distance > 0 && distance < input.minRangeSpan - 1) return true;
106
+ }
107
+ const jsDate = fromCalendarDate(date);
108
+ if (input.isDateDisabled?.(jsDate)) return true;
109
+ if (input.dateConstraints?.some((constraint) => !constraint(jsDate))) return true;
110
+ return false;
111
+ }
112
+ function isOutsideCalendarBounds(date, min, max) {
113
+ const earliest = min ? toCalendarDate(min) : null;
114
+ const latest = max ? toCalendarDate(max) : null;
115
+ if (earliest && date.compare(earliest) < 0) return true;
116
+ if (latest && date.compare(latest) > 0) return true;
117
+ return false;
118
+ }
119
+ //#endregion
120
+ //#region src/Calendar/useCalendarGrid.ts
121
+ function buildCalendarWeeks(year, month, weekStartsOn = 0, variableRows = false) {
122
+ const first = new CalendarDate(year, month, 1);
123
+ const offset = (weekdayIndex(first) - weekStartsOn + 7) % 7;
124
+ const daysInMonth = first.add({ months: 1 }).subtract({ days: 1 }).day;
125
+ const rows = variableRows ? Math.ceil((daysInMonth + offset) / 7) : 6;
126
+ let cursor = first.subtract({ days: offset });
127
+ const weeks = [];
128
+ for (let row = 0; row < rows; row += 1) {
129
+ const days = [];
130
+ for (let column = 0; column < 7; column += 1) {
131
+ days.push({
132
+ date: cursor,
133
+ iso: calendarISO(cursor),
134
+ outside: cursor.month !== month || cursor.year !== year,
135
+ day: cursor.day
136
+ });
137
+ cursor = cursor.add({ days: 1 });
138
+ }
139
+ const anchor = days.find((day) => !day.outside)?.date ?? days[0].date;
140
+ weeks.push({
141
+ number: isoWeekNumber(anchor),
142
+ days
143
+ });
144
+ }
145
+ return weeks;
146
+ }
147
+ function firstEnabledDay(year, month, isDisabled) {
148
+ const total = new CalendarDate(year, month, 1).add({ months: 1 }).subtract({ days: 1 }).day;
149
+ for (let day = 1; day <= total; day += 1) {
150
+ const date = new CalendarDate(year, month, day);
151
+ if (!isDisabled(date)) return date;
152
+ }
153
+ return null;
154
+ }
155
+ //#endregion
156
+ //#region src/Calendar/useCalendarKeyboard.ts
157
+ function startOfWeek(date, weekStartsOn) {
158
+ const delta = (weekdayIndex(date) - weekStartsOn + 7) % 7;
159
+ return date.subtract({ days: delta });
160
+ }
161
+ function viewFor(target, input) {
162
+ const targetMonth = monthIndex(target);
163
+ const first = input.viewYear * 12 + input.viewMonth;
164
+ const last = first + input.numberOfMonths - 1;
165
+ if (targetMonth >= first && targetMonth <= last) return void 0;
166
+ if (targetMonth < first) return new CalendarDate(target.year, target.month, 1);
167
+ return shiftMonth({
168
+ year: target.year,
169
+ month: target.month
170
+ }, -(input.numberOfMonths - 1));
171
+ }
172
+ function walk(focused, step, input) {
173
+ let candidate = focused.add({ days: step });
174
+ while (Math.abs(calendarDiffDays(focused, candidate)) <= 366) {
175
+ if (input.isOutOfBounds(candidate)) return null;
176
+ if (!input.isDisabled(candidate)) return candidate;
177
+ candidate = candidate.add({ days: step });
178
+ }
179
+ return null;
180
+ }
181
+ function page(focused, delta, input) {
182
+ const candidate = focused.add({ months: delta });
183
+ if (input.isOutOfBounds(candidate)) return null;
184
+ if (!input.isDisabled(candidate)) return candidate;
185
+ return firstEnabledDay(candidate.year, candidate.month, (date) => input.isDisabled(date) || input.isOutOfBounds(date));
186
+ }
187
+ function weekEdge(focused, edge, input) {
188
+ const start = startOfWeek(focused, input.weekStartsOn);
189
+ const days = Array.from({ length: 7 }, (_, index) => start.add({ days: index })).filter((date) => date.year === focused.year && date.month === focused.month).filter((date) => !input.isDisabled(date) && !input.isOutOfBounds(date));
190
+ if (days.length === 0) return null;
191
+ return edge === "home" ? days[0] : days[days.length - 1];
192
+ }
193
+ /** Where an arrow, Home, End, or Page key should land. Null means the focus stays put. */
194
+ function resolveCalendarKey(input) {
195
+ const { key, focused } = input;
196
+ let target = null;
197
+ if (key === "Home" || key === "End") target = weekEdge(focused, key === "Home" ? "home" : "end", input);
198
+ else if (key === "PageUp" || key === "PageDown") target = page(focused, key === "PageDown" ? 1 : -1, input);
199
+ else if (key === "ArrowLeft" || key === "ArrowRight" || key === "ArrowUp" || key === "ArrowDown") {
200
+ const horizontal = key === "ArrowLeft" || key === "ArrowRight";
201
+ let direction = key === "ArrowRight" || key === "ArrowDown" ? 1 : -1;
202
+ if (input.rtl && horizontal) direction = -direction;
203
+ target = walk(focused, horizontal ? direction : direction * 7, input);
204
+ } else return null;
205
+ if (!target || target.compare(focused) === 0) return null;
206
+ return {
207
+ date: target,
208
+ view: viewFor(target, input)
209
+ };
210
+ }
211
+ //#endregion
212
+ //#region src/Calendar/Calendar.vue
213
+ const _hoisted_1 = [
214
+ "data-months",
215
+ "data-mode",
216
+ "data-week-numbers",
217
+ "aria-label"
218
+ ];
219
+ const _hoisted_2 = { class: "astryx-calendar-header" };
220
+ const _hoisted_3 = ["disabled", "aria-label"];
221
+ const _hoisted_4 = { class: "astryx-calendar-month-year" };
222
+ const _hoisted_5 = ["disabled", "aria-label"];
223
+ const _hoisted_6 = { class: "astryx-calendar-months" };
224
+ const _hoisted_7 = [
225
+ "aria-label",
226
+ "aria-multiselectable",
227
+ "data-week-numbers"
228
+ ];
229
+ const _hoisted_8 = {
230
+ class: "astryx-calendar-weekdays",
231
+ role: "row"
232
+ };
233
+ const _hoisted_9 = {
234
+ key: 0,
235
+ class: "astryx-calendar-weekday",
236
+ role: "columnheader"
237
+ };
238
+ const _hoisted_10 = ["aria-label"];
239
+ const _hoisted_11 = {
240
+ key: 0,
241
+ class: "astryx-calendar-week-number",
242
+ role: "rowheader"
243
+ };
244
+ const _hoisted_12 = ["aria-selected"];
245
+ const _hoisted_13 = [
246
+ "data-date",
247
+ "tabindex",
248
+ "aria-disabled",
249
+ "aria-current",
250
+ "aria-label",
251
+ "onClick",
252
+ "onMouseenter",
253
+ "onFocus"
254
+ ];
255
+ const _hoisted_14 = { class: "astryx-calendar-day" };
256
+ const _sfc_main = /*@__PURE__*/ defineComponent({
257
+ name: "AstryxCalendar",
258
+ __name: "Calendar",
259
+ props: {
260
+ modelValue: { default: null },
261
+ mode: { default: "single" },
262
+ range: { default: null },
263
+ numberOfMonths: { default: 1 },
264
+ focusDate: {},
265
+ min: {},
266
+ max: {},
267
+ isDateDisabled: {},
268
+ dateConstraints: {},
269
+ minRangeSpan: { default: 1 },
270
+ maxRangeSpan: {},
271
+ hasOutsideDays: {
272
+ type: Boolean,
273
+ default: true
274
+ },
275
+ hasWeekNumbers: {
276
+ type: Boolean,
277
+ default: false
278
+ },
279
+ hasVariableRowCount: {
280
+ type: Boolean,
281
+ default: false
282
+ },
283
+ weekStartsOn: { default: 0 },
284
+ handleRef: {},
285
+ label: {},
286
+ disabled: {
287
+ type: Boolean,
288
+ default: false
289
+ }
290
+ },
291
+ emits: [
292
+ "update:modelValue",
293
+ "update:range",
294
+ "update:focusDate",
295
+ "change"
296
+ ],
297
+ setup(__props, { expose: __expose, emit: __emit }) {
298
+ const props = __props;
299
+ const emit = __emit;
300
+ const locale = useAstryxLocale();
301
+ const messages = useAstryxMessages();
302
+ const announce = useAnnounce();
303
+ const rootRef = useTemplateRef("root");
304
+ const monthCount = computed(() => props.numberOfMonths === 2 ? 2 : 1);
305
+ const weekStart = computed(() => weekStartIndex(props.weekStartsOn));
306
+ const todayDate = toCalendarDate(/* @__PURE__ */ new Date());
307
+ const pending = shallowRef(null);
308
+ const hover = shallowRef(null);
309
+ const opened = initialCalendarFocus({
310
+ focusDate: props.focusDate,
311
+ selected: props.mode === "single" ? props.modelValue : null,
312
+ rangeStart: props.range?.start ?? null,
313
+ min: props.min,
314
+ max: props.max,
315
+ numberOfMonths: monthCount.value,
316
+ today: fromCalendarDate(todayDate)
317
+ });
318
+ const view = shallowRef(shiftMonth(opened, 0));
319
+ const focused = shallowRef(opened);
320
+ const rtl = computed(() => {
321
+ if (typeof document !== "undefined" && document.documentElement.dir === "rtl") return true;
322
+ return /^(?:ar|he|fa|ur)\b/i.test(locale.value);
323
+ });
324
+ const resolvedLabel = computed(() => props.label ?? messages.value.calendar.label);
325
+ const weekName = computed(() => weekFieldName(locale.value));
326
+ const headers = computed(() => {
327
+ const short = standaloneShortWeekdayNames(locale.value);
328
+ const long = weekdayNames(locale.value, "long");
329
+ const start = weekStart.value;
330
+ return Array.from({ length: 7 }, (_, index) => ({
331
+ short: short[(index + start) % 7],
332
+ long: long[(index + start) % 7]
333
+ }));
334
+ });
335
+ function constraints() {
336
+ return {
337
+ min: props.min,
338
+ max: props.max,
339
+ isDateDisabled: props.isDateDisabled,
340
+ dateConstraints: props.dateConstraints,
341
+ minRangeSpan: props.mode === "range" ? props.minRangeSpan : void 0,
342
+ maxRangeSpan: props.mode === "range" ? props.maxRangeSpan : void 0,
343
+ rangeAnchor: props.mode === "range" ? pending.value : null
344
+ };
345
+ }
346
+ function blocked(date) {
347
+ return isCalendarDateDisabled(date, constraints());
348
+ }
349
+ function visible(date) {
350
+ const start = view.value.year * 12 + view.value.month;
351
+ const index = date.year * 12 + date.month;
352
+ return index >= start && index < start + monthCount.value;
353
+ }
354
+ function seed(month) {
355
+ const candidates = [];
356
+ if (props.mode === "single" && props.modelValue) candidates.push(toCalendarDate(props.modelValue));
357
+ candidates.push(todayDate);
358
+ for (const date of candidates) if (date.year === month.year && date.month === month.month && !blocked(date)) return date;
359
+ for (const week of buildCalendarWeeks(month.year, month.month, weekStart.value, false)) for (const day of week.days) if (!day.outside && !blocked(day.date)) return day.date;
360
+ return shiftMonth(month, 0);
361
+ }
362
+ focused.value = seed(view.value);
363
+ const months = computed(() => Array.from({ length: monthCount.value }, (_, index) => {
364
+ const cursor = shiftMonth(view.value, index);
365
+ return {
366
+ year: cursor.year,
367
+ month: cursor.month,
368
+ label: formatCalendarMonth(cursor.year, cursor.month, locale.value),
369
+ weeks: buildCalendarWeeks(cursor.year, cursor.month, weekStart.value, props.hasVariableRowCount)
370
+ };
371
+ }));
372
+ const headerLabel = computed(() => months.value.map((month) => month.label).join(" – "));
373
+ const canPrevious = computed(() => {
374
+ if (!props.min) return true;
375
+ const min = toCalendarDate(props.min);
376
+ return min.year < view.value.year || min.year === view.value.year && min.month < view.value.month;
377
+ });
378
+ const canNext = computed(() => {
379
+ if (!props.max) return true;
380
+ const max = toCalendarDate(props.max);
381
+ const last = shiftMonth(view.value, monthCount.value - 1);
382
+ return max.year > last.year || max.year === last.year && max.month > last.month;
383
+ });
384
+ const selectedSingle = computed(() => props.mode === "single" && props.modelValue ? toCalendarDate(props.modelValue) : null);
385
+ const committedStart = computed(() => props.mode === "range" && props.range?.start ? toCalendarDate(props.range.start) : null);
386
+ const committedEnd = computed(() => props.mode === "range" && props.range?.end ? toCalendarDate(props.range.end) : null);
387
+ const preview = computed(() => {
388
+ if (!pending.value || !hover.value || sameCalendarDay(pending.value, hover.value)) return null;
389
+ if (blocked(hover.value)) return null;
390
+ return pending.value.compare(hover.value) <= 0 ? {
391
+ start: pending.value,
392
+ end: hover.value
393
+ } : {
394
+ start: hover.value,
395
+ end: pending.value
396
+ };
397
+ });
398
+ const visualStart = computed(() => preview.value?.start ?? pending.value ?? committedStart.value);
399
+ const visualEnd = computed(() => preview.value?.end ?? (pending.value ? null : committedEnd.value));
400
+ function setView(next, keep) {
401
+ view.value = shiftMonth(next, 0);
402
+ emit("update:focusDate", fromCalendarDate(view.value));
403
+ if (keep) focused.value = keep;
404
+ else if (!visible(focused.value)) focused.value = seed(view.value);
405
+ }
406
+ function focusStop() {
407
+ nextTick(() => {
408
+ rootRef.value?.querySelector(".astryx-calendar-cell[tabindex=\"0\"]")?.focus();
409
+ });
410
+ }
411
+ function shift(amount) {
412
+ if (props.disabled) return;
413
+ if (amount < 0 && !canPrevious.value) return;
414
+ if (amount > 0 && !canNext.value) return;
415
+ setView(shiftMonth(view.value, amount));
416
+ focusStop();
417
+ }
418
+ function navigateTo(date) {
419
+ const target = toCalendarDate(date);
420
+ setView(target, blocked(target) ? seed(target) : target);
421
+ focusStop();
422
+ }
423
+ const handle = { navigateTo };
424
+ useHandleRef(() => props.handleRef, handle);
425
+ __expose(handle);
426
+ watch(() => props.focusDate ? dateISO(props.focusDate) : "", (iso) => {
427
+ if (!iso || !props.focusDate) return;
428
+ const next = toCalendarDate(props.focusDate);
429
+ if (next.year === view.value.year && next.month === view.value.month) return;
430
+ view.value = shiftMonth(next, 0);
431
+ if (!visible(focused.value)) focused.value = seed(view.value);
432
+ });
433
+ watch(headerLabel, (label) => announce(label));
434
+ function inSpan(date, start, end) {
435
+ return !!start && !!end && date.compare(start) >= 0 && date.compare(end) <= 0;
436
+ }
437
+ function paint(week) {
438
+ const start = visualStart.value;
439
+ const end = visualEnd.value;
440
+ return week.days.map((day, index) => {
441
+ const outside = day.outside;
442
+ const disabled = outside || blocked(day.date);
443
+ const continues = !outside && !blocked(day.date) && inSpan(day.date, start, end);
444
+ const previous = index > 0 ? week.days[index - 1] : null;
445
+ const next = index < 6 ? week.days[index + 1] : null;
446
+ const previousContinues = !!previous && !previous.outside && !blocked(previous.date) && inSpan(previous.date, start, end);
447
+ const nextContinues = !!next && !next.outside && !blocked(next.date) && inSpan(next.date, start, end);
448
+ const isStart = !!start && !outside && sameCalendarDay(day.date, start);
449
+ const isEnd = !!end && !outside && sameCalendarDay(day.date, end);
450
+ const selected = !outside && (props.mode === "single" && !!selectedSingle.value && sameCalendarDay(day.date, selectedSingle.value) || isStart || isEnd);
451
+ const named = formatWeekdayDate(day.date, locale.value);
452
+ let label = named;
453
+ if (props.mode === "range" && isStart && isEnd) label = messages.value.calendar.rangeBoth(named);
454
+ else if (props.mode === "range" && isStart) label = messages.value.calendar.rangeStartName(named);
455
+ else if (props.mode === "range" && isEnd) label = messages.value.calendar.rangeEndName(named);
456
+ return {
457
+ iso: day.iso,
458
+ date: day.date,
459
+ text: day.day,
460
+ outside,
461
+ shown: props.hasOutsideDays || !outside,
462
+ disabled,
463
+ selected,
464
+ inRange: continues && !isStart && !isEnd,
465
+ rangeStart: isStart,
466
+ rangeEnd: isEnd,
467
+ today: !outside && sameCalendarDay(day.date, todayDate),
468
+ tab: !outside && !props.disabled && sameCalendarDay(day.date, focused.value),
469
+ roundStart: continues && (isStart || index === 0 || !previousContinues),
470
+ roundEnd: continues && (isEnd || index === 6 || !nextContinues),
471
+ label
472
+ };
473
+ });
474
+ }
475
+ function pick(date) {
476
+ if (props.disabled || blocked(date)) return;
477
+ focused.value = date;
478
+ if (props.mode !== "range") {
479
+ const value = fromCalendarDate(date);
480
+ emit("update:modelValue", value);
481
+ emit("change", value);
482
+ return;
483
+ }
484
+ if (!pending.value) {
485
+ pending.value = date;
486
+ const value = fromCalendarDate(date);
487
+ emit("update:range", {
488
+ start: value,
489
+ end: null
490
+ });
491
+ emit("change", value);
492
+ announce(messages.value.calendar.rangeStart(formatWeekdayDate(date, locale.value)));
493
+ return;
494
+ }
495
+ if (sameCalendarDay(date, pending.value) && props.minRangeSpan > 1) {
496
+ pending.value = null;
497
+ hover.value = null;
498
+ emit("update:range", {
499
+ start: null,
500
+ end: null
501
+ });
502
+ emit("change", null);
503
+ announce(messages.value.calendar.rangeCleared(formatWeekdayDate(date, locale.value)));
504
+ return;
505
+ }
506
+ const start = pending.value.compare(date) <= 0 ? pending.value : date;
507
+ const end = pending.value.compare(date) <= 0 ? date : pending.value;
508
+ pending.value = null;
509
+ hover.value = null;
510
+ const value = {
511
+ start: fromCalendarDate(start),
512
+ end: fromCalendarDate(end)
513
+ };
514
+ emit("update:range", value);
515
+ emit("change", value.end);
516
+ announce(messages.value.calendar.rangeComplete(formatWeekdayDate(start, locale.value), formatWeekdayDate(end, locale.value)));
517
+ }
518
+ function onKeyDown(event) {
519
+ if (props.disabled) return;
520
+ if (event.key === "Escape" && pending.value) {
521
+ event.preventDefault();
522
+ event.stopPropagation();
523
+ const date = pending.value;
524
+ pending.value = null;
525
+ hover.value = null;
526
+ emit("update:range", {
527
+ start: null,
528
+ end: null
529
+ });
530
+ announce(messages.value.calendar.rangeCleared(formatWeekdayDate(date, locale.value)));
531
+ return;
532
+ }
533
+ if (event.key === "Enter" || event.key === " ") {
534
+ event.preventDefault();
535
+ if (!blocked(focused.value)) pick(focused.value);
536
+ return;
537
+ }
538
+ const move = resolveCalendarKey({
539
+ key: event.key,
540
+ rtl: rtl.value,
541
+ focused: focused.value,
542
+ weekStartsOn: weekStart.value,
543
+ numberOfMonths: monthCount.value,
544
+ viewYear: view.value.year,
545
+ viewMonth: view.value.month,
546
+ isOutOfBounds: (date) => isOutsideCalendarBounds(date, props.min, props.max),
547
+ isDisabled: (date) => isCalendarDateDisabled(date, constraints())
548
+ });
549
+ if (!move) return;
550
+ event.preventDefault();
551
+ if (move.view) setView(move.view, move.date);
552
+ else focused.value = move.date;
553
+ focusStop();
554
+ }
555
+ return (_ctx, _cache) => {
556
+ return openBlock(), createElementBlock("div", {
557
+ ref: "root",
558
+ class: normalizeClass(["astryx-calendar", { "is-disabled": __props.disabled }]),
559
+ "data-months": monthCount.value,
560
+ "data-mode": __props.mode,
561
+ "data-week-numbers": __props.hasWeekNumbers || void 0,
562
+ "aria-label": resolvedLabel.value
563
+ }, [createElementVNode("div", _hoisted_2, [renderSlot(_ctx.$slots, "header", {}, () => [
564
+ createElementVNode("button", {
565
+ type: "button",
566
+ class: "astryx-calendar-nav-button",
567
+ disabled: __props.disabled || !canPrevious.value,
568
+ "aria-label": unref(messages).calendar.previousMonth,
569
+ onClick: _cache[0] || (_cache[0] = ($event) => shift(-1))
570
+ }, [createVNode(_sfc_main$2, {
571
+ icon: "chevronLeft",
572
+ size: "sm"
573
+ })], 8, _hoisted_3),
574
+ createElementVNode("span", _hoisted_4, toDisplayString(headerLabel.value), 1),
575
+ createElementVNode("button", {
576
+ type: "button",
577
+ class: "astryx-calendar-nav-button",
578
+ disabled: __props.disabled || !canNext.value,
579
+ "aria-label": unref(messages).calendar.nextMonth,
580
+ onClick: _cache[1] || (_cache[1] = ($event) => shift(1))
581
+ }, [createVNode(_sfc_main$2, {
582
+ icon: "chevronRight",
583
+ size: "sm"
584
+ })], 8, _hoisted_5)
585
+ ])]), createElementVNode("div", _hoisted_6, [(openBlock(true), createElementBlock(Fragment, null, renderList(months.value, (month) => {
586
+ return openBlock(), createElementBlock("section", {
587
+ key: `${month.year}-${month.month}`,
588
+ class: "astryx-calendar-month"
589
+ }, [createElementVNode("div", {
590
+ class: "astryx-calendar-grid",
591
+ role: "grid",
592
+ "aria-label": month.label,
593
+ "aria-multiselectable": __props.mode === "range" ? "true" : void 0,
594
+ "data-week-numbers": __props.hasWeekNumbers || void 0,
595
+ tabindex: "-1",
596
+ onKeydown: onKeyDown
597
+ }, [createElementVNode("div", _hoisted_8, [__props.hasWeekNumbers ? (openBlock(), createElementBlock("div", _hoisted_9, [createVNode(_sfc_main$1, null, {
598
+ default: withCtx(() => [createTextVNode(toDisplayString(weekName.value), 1)]),
599
+ _: 1
600
+ })])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(headers.value, (day) => {
601
+ return openBlock(), createElementBlock("div", {
602
+ key: day.long,
603
+ class: "astryx-calendar-weekday",
604
+ role: "columnheader",
605
+ "aria-label": day.long
606
+ }, toDisplayString(day.short), 9, _hoisted_10);
607
+ }), 128))]), (openBlock(true), createElementBlock(Fragment, null, renderList(month.weeks, (week, rowIndex) => {
608
+ return openBlock(), createElementBlock("div", {
609
+ key: `${month.year}-${month.month}-${rowIndex}`,
610
+ class: "astryx-calendar-row",
611
+ role: "row"
612
+ }, [__props.hasWeekNumbers ? (openBlock(), createElementBlock("div", _hoisted_11, toDisplayString(week.number), 1)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(paint(week), (day) => {
613
+ return openBlock(), createElementBlock("div", {
614
+ key: day.iso,
615
+ class: "astryx-calendar-gridcell",
616
+ role: "gridcell",
617
+ "aria-selected": day.selected || day.inRange
618
+ }, [day.shown ? (openBlock(), createElementBlock("button", {
619
+ key: 0,
620
+ type: "button",
621
+ class: normalizeClass(["astryx-calendar-cell", {
622
+ "is-selected": day.selected,
623
+ "is-range-start": day.rangeStart,
624
+ "is-range-end": day.rangeEnd,
625
+ "is-in-range": day.inRange,
626
+ "is-round-start": day.roundStart,
627
+ "is-round-end": day.roundEnd,
628
+ "is-disabled": day.disabled,
629
+ "is-today": day.today,
630
+ "is-other-month": day.outside
631
+ }]),
632
+ "data-date": day.iso,
633
+ tabindex: day.tab ? 0 : -1,
634
+ "aria-disabled": day.disabled || void 0,
635
+ "aria-current": day.today ? "date" : void 0,
636
+ "aria-label": day.label,
637
+ onClick: ($event) => day.outside ? void 0 : pick(day.date),
638
+ onMouseenter: ($event) => hover.value = day.outside || day.disabled ? null : day.date,
639
+ onMouseleave: _cache[2] || (_cache[2] = ($event) => hover.value = null),
640
+ onBlur: _cache[3] || (_cache[3] = ($event) => hover.value = null),
641
+ onFocus: ($event) => focused.value = day.outside ? focused.value : day.date
642
+ }, [renderSlot(_ctx.$slots, "day", {
643
+ date: day.date,
644
+ isSelected: day.selected,
645
+ isDisabled: day.disabled,
646
+ isToday: day.today,
647
+ isInMonth: !day.outside
648
+ }, () => [createElementVNode("span", _hoisted_14, toDisplayString(day.text), 1)])], 42, _hoisted_13)) : createCommentVNode("v-if", true)], 8, _hoisted_12);
649
+ }), 128))]);
650
+ }), 128))], 40, _hoisted_7)]);
651
+ }), 128))])], 10, _hoisted_1);
652
+ };
653
+ }
654
+ });
655
+ //#endregion
656
+ export { isCalendarDateDisabled as n, toCalendarDate as r, _sfc_main as t };
@@ -1,2 +1,2 @@
1
- import { a as CardSlots, i as CardSizeValue, n as CardElevation, o as CardVariant, r as CardProps, t as _default } from "../index-D_nYxnNv.js";
1
+ import { a as CardSlots, i as CardSizeValue, n as CardElevation, o as CardVariant, r as CardProps, t as _default } from "../index-D7-WTV6I.js";
2
2
  export { _default as Card, type CardElevation, type CardProps, type CardSizeValue, type CardSlots, type CardVariant };
@@ -1,2 +1,2 @@
1
- import { t as _sfc_main } from "../Carousel-X0cuQkvg.js";
1
+ import { t as _sfc_main } from "../Carousel-JA7ilqI_.js";
2
2
  export { _sfc_main as Carousel };
@@ -1,6 +1,6 @@
1
- import { a as useAstryxMessages } from "./context-CiKncNSH.js";
1
+ import { a as useAstryxMessages } from "./context-DmOLCubj.js";
2
2
  import { t as _sfc_main$1 } from "./IconButton-BNQuz9W_.js";
3
- import { t as _sfc_main$2 } from "./Icon-CJKjdJy-.js";
3
+ import { t as _sfc_main$2 } from "./Icon-bteSId7T.js";
4
4
  import { Comment, Fragment, Text, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, unref, useSlots, watch, withCtx } from "vue";
5
5
  import "../styles/carousel.css";
6
6
  //#region src/Carousel/slides.ts