@editora/ui-core 0.1.25 → 0.2.0

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 (314) hide show
  1. package/README.md +124 -0
  2. package/dist/accordion.cjs.js +13 -12
  3. package/dist/accordion.esm.js +13 -12
  4. package/dist/alert-dialog.cjs.js +76 -45
  5. package/dist/alert-dialog.esm.js +179 -135
  6. package/dist/alert.cjs.js +41 -32
  7. package/dist/alert.esm.js +79 -70
  8. package/dist/animated-beam.cjs.js +42 -50
  9. package/dist/animated-beam.esm.js +47 -55
  10. package/dist/animated-list.cjs.js +11 -27
  11. package/dist/animated-list.esm.js +12 -28
  12. package/dist/animated-text.cjs.js +4 -4
  13. package/dist/animated-text.esm.js +4 -4
  14. package/dist/app-header.cjs.js +5 -5
  15. package/dist/app-header.esm.js +6 -6
  16. package/dist/aspect-ratio.cjs.js +10 -12
  17. package/dist/aspect-ratio.esm.js +11 -13
  18. package/dist/avatar.cjs.js +13 -17
  19. package/dist/avatar.esm.js +13 -17
  20. package/dist/badge.cjs.js +27 -22
  21. package/dist/badge.esm.js +32 -27
  22. package/dist/block-controls.cjs.js +11 -12
  23. package/dist/block-controls.esm.js +8 -9
  24. package/dist/box.cjs.js +2 -3
  25. package/dist/box.esm.js +2 -3
  26. package/dist/breadcrumb.cjs.js +12 -18
  27. package/dist/breadcrumb.esm.js +11 -17
  28. package/dist/button.cjs.js +1 -1
  29. package/dist/button.esm.js +1 -1
  30. package/dist/{calendar-B3PUKHQm.mjs → calendar-DmxiZrR7.mjs} +126 -117
  31. package/dist/{calendar-D-mXMgqc.js → calendar-o273O28D.js} +53 -44
  32. package/dist/calendar.cjs.js +1 -1
  33. package/dist/calendar.esm.js +1 -1
  34. package/dist/card.cjs.js +6 -7
  35. package/dist/card.esm.js +5 -6
  36. package/dist/chart.cjs.js +52 -52
  37. package/dist/chart.esm.js +95 -95
  38. package/dist/checkbox.cjs.js +19 -15
  39. package/dist/checkbox.esm.js +19 -15
  40. package/dist/collapsible.cjs.js +7 -11
  41. package/dist/collapsible.esm.js +7 -11
  42. package/dist/color-picker.cjs.js +36 -17
  43. package/dist/color-picker.esm.js +132 -113
  44. package/dist/combobox.cjs.js +57 -54
  45. package/dist/combobox.esm.js +62 -58
  46. package/dist/command-palette.cjs.js +1 -0
  47. package/dist/command-palette.esm.js +1 -0
  48. package/dist/command.cjs.js +32 -14
  49. package/dist/command.esm.js +46 -28
  50. package/dist/components/date-time-utils.d.ts.map +1 -1
  51. package/dist/components/ui-accordion.d.ts.map +1 -1
  52. package/dist/components/ui-alert-dialog.d.ts +2 -0
  53. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  54. package/dist/components/ui-alert.d.ts.map +1 -1
  55. package/dist/components/ui-animated-beam.d.ts.map +1 -1
  56. package/dist/components/ui-animated-list.d.ts.map +1 -1
  57. package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
  58. package/dist/components/ui-avatar.d.ts.map +1 -1
  59. package/dist/components/ui-badge.d.ts.map +1 -1
  60. package/dist/components/ui-block-controls.d.ts.map +1 -1
  61. package/dist/components/ui-box.d.ts.map +1 -1
  62. package/dist/components/ui-breadcrumb.d.ts.map +1 -1
  63. package/dist/components/ui-button.d.ts.map +1 -1
  64. package/dist/components/ui-calendar.d.ts.map +1 -1
  65. package/dist/components/ui-card.d.ts.map +1 -1
  66. package/dist/components/ui-checkbox.d.ts.map +1 -1
  67. package/dist/components/ui-collapsible.d.ts.map +1 -1
  68. package/dist/components/ui-color-picker.d.ts.map +1 -1
  69. package/dist/components/ui-combobox.d.ts.map +1 -1
  70. package/dist/components/ui-command-palette.d.ts.map +1 -1
  71. package/dist/components/ui-command.d.ts.map +1 -1
  72. package/dist/components/ui-container.d.ts.map +1 -1
  73. package/dist/components/ui-context-menu.d.ts.map +1 -1
  74. package/dist/components/ui-data-table.d.ts +7 -0
  75. package/dist/components/ui-data-table.d.ts.map +1 -1
  76. package/dist/components/ui-date-picker.d.ts.map +1 -1
  77. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  78. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  79. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  80. package/dist/components/ui-dialog.d.ts +2 -0
  81. package/dist/components/ui-dialog.d.ts.map +1 -1
  82. package/dist/components/ui-dock.d.ts.map +1 -1
  83. package/dist/components/ui-drawer.d.ts.map +1 -1
  84. package/dist/components/ui-dropdown.d.ts.map +1 -1
  85. package/dist/components/ui-empty-state.d.ts.map +1 -1
  86. package/dist/components/ui-field.d.ts.map +1 -1
  87. package/dist/components/ui-fieldset.d.ts.map +1 -1
  88. package/dist/components/ui-file-upload.d.ts.map +1 -1
  89. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  90. package/dist/components/ui-form.d.ts.map +1 -1
  91. package/dist/components/ui-icon-cloud.d.ts.map +1 -1
  92. package/dist/components/ui-inline-edit.d.ts.map +1 -1
  93. package/dist/components/ui-input.d.ts.map +1 -1
  94. package/dist/components/ui-marquee.d.ts.map +1 -1
  95. package/dist/components/ui-menu.d.ts.map +1 -1
  96. package/dist/components/ui-menubar.d.ts.map +1 -1
  97. package/dist/components/ui-meter.d.ts.map +1 -1
  98. package/dist/components/ui-multi-select.d.ts.map +1 -1
  99. package/dist/components/ui-number-field.d.ts.map +1 -1
  100. package/dist/components/ui-orbiter.d.ts.map +1 -1
  101. package/dist/components/ui-pagination.d.ts.map +1 -1
  102. package/dist/components/ui-password-field.d.ts.map +1 -1
  103. package/dist/components/ui-pin-input.d.ts.map +1 -1
  104. package/dist/components/ui-popover.d.ts.map +1 -1
  105. package/dist/components/ui-progress.d.ts.map +1 -1
  106. package/dist/components/ui-radio-group.d.ts.map +1 -1
  107. package/dist/components/ui-radio.d.ts.map +1 -1
  108. package/dist/components/ui-rating.d.ts +1 -0
  109. package/dist/components/ui-rating.d.ts.map +1 -1
  110. package/dist/components/ui-scroll-area.d.ts.map +1 -1
  111. package/dist/components/ui-section.d.ts.map +1 -1
  112. package/dist/components/ui-select.d.ts.map +1 -1
  113. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  114. package/dist/components/ui-slider.d.ts.map +1 -1
  115. package/dist/components/ui-sortable.d.ts.map +1 -1
  116. package/dist/components/ui-spinning-text.d.ts.map +1 -1
  117. package/dist/components/ui-split-button.d.ts.map +1 -1
  118. package/dist/components/ui-splitter.d.ts.map +1 -1
  119. package/dist/components/ui-stepper.d.ts.map +1 -1
  120. package/dist/components/ui-switch.d.ts.map +1 -1
  121. package/dist/components/ui-tabs.d.ts.map +1 -1
  122. package/dist/components/ui-tags-input.d.ts.map +1 -1
  123. package/dist/components/ui-textarea.d.ts.map +1 -1
  124. package/dist/components/ui-time-picker.d.ts.map +1 -1
  125. package/dist/components/ui-toggle-group.d.ts +2 -0
  126. package/dist/components/ui-toggle-group.d.ts.map +1 -1
  127. package/dist/components/ui-toggle.d.ts.map +1 -1
  128. package/dist/components/ui-toolbar.d.ts +2 -0
  129. package/dist/components/ui-toolbar.d.ts.map +1 -1
  130. package/dist/components/ui-tooltip.d.ts.map +1 -1
  131. package/dist/components/ui-transfer-list.d.ts.map +1 -1
  132. package/dist/components/ui-tree-item.d.ts.map +1 -1
  133. package/dist/components/ui-tree.d.ts.map +1 -1
  134. package/dist/components/ui-wizard.d.ts.map +1 -1
  135. package/dist/container.cjs.js +6 -12
  136. package/dist/container.esm.js +8 -14
  137. package/dist/context-menu.cjs.js +8 -8
  138. package/dist/context-menu.esm.js +42 -41
  139. package/dist/data-table.cjs.js +18 -15
  140. package/dist/data-table.esm.js +207 -187
  141. package/dist/date-field.cjs.js +8 -8
  142. package/dist/date-field.esm.js +7 -7
  143. package/dist/date-picker.cjs.js +27 -18
  144. package/dist/date-picker.esm.js +57 -48
  145. package/dist/date-range-picker.cjs.js +22 -17
  146. package/dist/date-range-picker.esm.js +31 -26
  147. package/dist/date-range-time-picker.cjs.js +26 -19
  148. package/dist/date-range-time-picker.esm.js +23 -16
  149. package/dist/date-time-picker.cjs.js +23 -16
  150. package/dist/date-time-picker.esm.js +88 -81
  151. package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-B4hAkt36.mjs} +75 -68
  152. package/dist/date-time-utils-DdigV4hs.js +1 -0
  153. package/dist/dialog.cjs.js +57 -41
  154. package/dist/dialog.esm.js +84 -51
  155. package/dist/dock.cjs.js +16 -30
  156. package/dist/dock.esm.js +26 -40
  157. package/dist/drawer.cjs.js +8 -12
  158. package/dist/drawer.esm.js +6 -10
  159. package/dist/dropdown.cjs.js +8 -6
  160. package/dist/dropdown.esm.js +33 -30
  161. package/dist/empty-state.cjs.js +17 -15
  162. package/dist/empty-state.esm.js +13 -11
  163. package/dist/field.cjs.js +22 -13
  164. package/dist/field.esm.js +54 -45
  165. package/dist/fieldset.cjs.js +18 -11
  166. package/dist/fieldset.esm.js +20 -13
  167. package/dist/file-upload.cjs.js +77 -35
  168. package/dist/file-upload.esm.js +152 -110
  169. package/dist/floating-toolbar.cjs.js +6 -7
  170. package/dist/floating-toolbar.esm.js +8 -9
  171. package/dist/form.cjs.js +20 -23
  172. package/dist/form.esm.js +20 -23
  173. package/dist/gantt.cjs.js +6 -6
  174. package/dist/gantt.esm.js +6 -6
  175. package/dist/hover-card.cjs.js +7 -7
  176. package/dist/hover-card.esm.js +7 -7
  177. package/dist/icon-cloud.cjs.js +19 -36
  178. package/dist/icon-cloud.esm.js +41 -58
  179. package/dist/index.cjs.js +1 -1
  180. package/dist/index.d.ts +2 -0
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.esm.js +108 -104
  183. package/dist/inline-edit.cjs.js +47 -19
  184. package/dist/inline-edit.esm.js +66 -38
  185. package/dist/input.cjs.js +44 -37
  186. package/dist/input.esm.js +59 -52
  187. package/dist/layout.cjs.js +3 -3
  188. package/dist/layout.esm.js +3 -3
  189. package/dist/marquee.cjs.js +7 -10
  190. package/dist/marquee.esm.js +7 -10
  191. package/dist/menu.cjs.js +8 -24
  192. package/dist/menu.esm.js +52 -72
  193. package/dist/menubar.cjs.js +9 -31
  194. package/dist/menubar.esm.js +127 -153
  195. package/dist/meter.cjs.js +4 -9
  196. package/dist/meter.esm.js +6 -11
  197. package/dist/multi-select.cjs.js +48 -35
  198. package/dist/multi-select.esm.js +67 -53
  199. package/dist/navigation-menu.cjs.js +10 -10
  200. package/dist/navigation-menu.esm.js +33 -33
  201. package/dist/number-field.cjs.js +27 -16
  202. package/dist/number-field.esm.js +36 -25
  203. package/dist/odometer.cjs.js +5 -5
  204. package/dist/odometer.esm.js +3 -3
  205. package/dist/orbiter.cjs.js +11 -28
  206. package/dist/orbiter.esm.js +28 -45
  207. package/dist/overlay-motion-B56x1GoY.js +49 -0
  208. package/dist/overlay-motion-BX3dPLay.mjs +120 -0
  209. package/dist/pagination.cjs.js +28 -25
  210. package/dist/pagination.esm.js +54 -51
  211. package/dist/password-field.cjs.js +38 -33
  212. package/dist/password-field.esm.js +62 -57
  213. package/dist/pin-input.cjs.js +17 -13
  214. package/dist/pin-input.esm.js +23 -19
  215. package/dist/plugin-panel.cjs.js +1 -1
  216. package/dist/plugin-panel.esm.js +1 -1
  217. package/dist/popover.cjs.js +16 -28
  218. package/dist/popover.esm.js +29 -45
  219. package/dist/portal-DeaM1tYY.mjs +121 -0
  220. package/dist/portal-XbYR3m_q.js +1 -0
  221. package/dist/portal.d.ts +3 -1
  222. package/dist/portal.d.ts.map +1 -1
  223. package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
  224. package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
  225. package/dist/positioner.cjs.js +1 -1
  226. package/dist/positioner.esm.js +1 -1
  227. package/dist/primitives/overlay-motion.d.ts +47 -0
  228. package/dist/primitives/overlay-motion.d.ts.map +1 -0
  229. package/dist/primitives/positioner.d.ts.map +1 -1
  230. package/dist/progress.cjs.js +11 -16
  231. package/dist/progress.esm.js +37 -42
  232. package/dist/quick-actions.cjs.js +13 -13
  233. package/dist/quick-actions.esm.js +11 -11
  234. package/dist/radio-group.cjs.js +50 -26
  235. package/dist/radio-group.esm.js +53 -29
  236. package/dist/radio.cjs.js +15 -12
  237. package/dist/radio.esm.js +15 -12
  238. package/dist/rating.cjs.js +11 -15
  239. package/dist/rating.esm.js +48 -50
  240. package/dist/{runtime-CFnK53iC.mjs → runtime-CQM6wZOc.mjs} +498 -514
  241. package/dist/runtime-DxCl0A5q.js +5 -0
  242. package/dist/runtime.cjs.js +1 -1
  243. package/dist/runtime.d.ts +3 -2
  244. package/dist/runtime.d.ts.map +1 -1
  245. package/dist/runtime.esm.js +36 -32
  246. package/dist/scroll-area.cjs.js +3 -4
  247. package/dist/scroll-area.esm.js +3 -4
  248. package/dist/section.cjs.js +2 -4
  249. package/dist/section.esm.js +2 -4
  250. package/dist/select.cjs.js +40 -73
  251. package/dist/select.esm.js +55 -87
  252. package/dist/selection-popup.cjs.js +3 -4
  253. package/dist/selection-popup.esm.js +3 -4
  254. package/dist/semantic-tokens.d.ts +17 -0
  255. package/dist/semantic-tokens.d.ts.map +1 -0
  256. package/dist/sidebar.cjs.js +22 -22
  257. package/dist/sidebar.esm.js +25 -25
  258. package/dist/skeleton.cjs.js +2 -2
  259. package/dist/skeleton.esm.js +2 -2
  260. package/dist/slider.cjs.js +22 -26
  261. package/dist/slider.esm.js +25 -29
  262. package/dist/sortable.cjs.js +4 -5
  263. package/dist/sortable.esm.js +4 -5
  264. package/dist/spinning-text.cjs.js +4 -13
  265. package/dist/spinning-text.esm.js +4 -13
  266. package/dist/split-button.cjs.js +5 -5
  267. package/dist/split-button.esm.js +15 -14
  268. package/dist/splitter.cjs.js +52 -10
  269. package/dist/splitter.esm.js +55 -13
  270. package/dist/stepper.cjs.js +31 -65
  271. package/dist/stepper.esm.js +32 -66
  272. package/dist/switch.cjs.js +20 -22
  273. package/dist/switch.esm.js +20 -22
  274. package/dist/table.cjs.js +5 -5
  275. package/dist/table.esm.js +20 -20
  276. package/dist/tabs.cjs.js +91 -21
  277. package/dist/tabs.esm.js +182 -112
  278. package/dist/tags-input.cjs.js +41 -15
  279. package/dist/tags-input.esm.js +73 -47
  280. package/dist/textarea.cjs.js +32 -33
  281. package/dist/textarea.esm.js +38 -39
  282. package/dist/theme.d.ts +25 -1
  283. package/dist/theme.d.ts.map +1 -1
  284. package/dist/time-field.cjs.js +7 -7
  285. package/dist/time-field.esm.js +6 -6
  286. package/dist/time-picker.cjs.js +16 -13
  287. package/dist/time-picker.esm.js +27 -24
  288. package/dist/timeline.cjs.js +10 -10
  289. package/dist/timeline.esm.js +7 -7
  290. package/dist/toggle-group.cjs.js +13 -13
  291. package/dist/toggle-group.esm.js +66 -61
  292. package/dist/toggle.cjs.js +52 -34
  293. package/dist/toggle.esm.js +80 -62
  294. package/dist/toolbar.cjs.js +14 -14
  295. package/dist/toolbar.esm.js +41 -33
  296. package/dist/tooltip.cjs.js +3 -3
  297. package/dist/tooltip.esm.js +39 -33
  298. package/dist/transfer-list.cjs.js +28 -29
  299. package/dist/transfer-list.esm.js +28 -29
  300. package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
  301. package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
  302. package/dist/tree-item.cjs.js +9 -8
  303. package/dist/tree-item.esm.js +13 -12
  304. package/dist/tree.cjs.js +1 -1
  305. package/dist/tree.esm.js +1 -1
  306. package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
  307. package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
  308. package/dist/wizard.cjs.js +39 -36
  309. package/dist/wizard.esm.js +39 -36
  310. package/package.json +1 -1
  311. package/dist/date-time-utils-y3AvNvGe.js +0 -1
  312. package/dist/portal-DgpQ3Jo1.js +0 -1
  313. package/dist/portal-bR42gHvG.mjs +0 -118
  314. package/dist/runtime-DwE-tizc.js +0 -1
@@ -1,31 +1,32 @@
1
1
  "use strict";const Oe=require("./ElementBase-DxbvhLJs.js"),Pe={calendarLabel:"Calendar",today:"Today",clear:"Clear",apply:"Apply",cancel:"Cancel",now:"Now",previousMonth:"Previous month",nextMonth:"Next month",chooseMonthYear:"Choose month and year",previousYear:"Previous year",nextYear:"Next year",syncingSchedule:"Syncing schedule...",unableToSyncEvents:"Unable to sync events",scheduleSynced:"Schedule synced",event:"Event",selectDate:"Select date",selectDateRange:"Select date range",startDate:"Start date",endDate:"End date",startEnd:"Start — End",toggleCalendar:"Toggle calendar",clearDate:"Clear date",clearDateRange:"Clear date range",invalidDate:"Invalid date",dateOutOfRange:"Date is outside the allowed range",invalidRange:"Invalid range",invalidTime:"Invalid time",invalidDateTime:"Invalid date-time",invalidRangeOrder:"Invalid range order",rangeIncomplete:"Range is incomplete",last7Days:"Last 7 days",thisMonth:"This month",hour:"Hour",minute:"Minute",second:"Second",meridiem:"Meridiem",am:"AM",pm:"PM",startTime:"Start time",endTime:"End time",datePickerPanel:"Date picker panel",timePlaceholder:"HH:mm",timePlaceholderSeconds:"HH:mm:ss",dateTimePlaceholder:"YYYY-MM-DD HH:mm",dateRangeTimePlaceholder:"Start — End"},Le={calendarLabel:"日历",today:"今天",clear:"清除",apply:"应用",cancel:"取消",now:"现在",previousMonth:"上个月",nextMonth:"下个月",chooseMonthYear:"选择月份和年份",previousYear:"上一年",nextYear:"下一年",syncingSchedule:"正在同步日程...",unableToSyncEvents:"无法同步事件",scheduleSynced:"日程已同步",event:"事件",selectDate:"选择日期",selectDateRange:"选择日期范围",startDate:"开始日期",endDate:"结束日期",startEnd:"开始 — 结束",toggleCalendar:"切换日历",clearDate:"清除日期",clearDateRange:"清除日期范围",invalidDate:"日期无效",dateOutOfRange:"日期超出允许范围",invalidRange:"范围无效",invalidTime:"时间无效",invalidDateTime:"日期时间无效",invalidRangeOrder:"范围顺序无效",rangeIncomplete:"范围不完整",last7Days:"最近7天",thisMonth:"本月",hour:"小时",minute:"分钟",second:"秒",meridiem:"上午/下午",am:"上午",pm:"下午",startTime:"开始时间",endTime:"结束时间",datePickerPanel:"日期选择面板",timePlaceholder:"HH:mm",timePlaceholderSeconds:"HH:mm:ss",dateTimePlaceholder:"YYYY-MM-DD HH:mm",dateRangeTimePlaceholder:"开始 — 结束"},Be={calendarLabel:"Calendrier",today:"Aujourd'hui",clear:"Effacer",apply:"Appliquer",cancel:"Annuler",now:"Maintenant",previousMonth:"Mois precedent",nextMonth:"Mois suivant",chooseMonthYear:"Choisir le mois et l annee",previousYear:"Annee precedente",nextYear:"Annee suivante",syncingSchedule:"Synchronisation du planning...",unableToSyncEvents:"Impossible de synchroniser les evenements",scheduleSynced:"Planning synchronise",event:"Evenement",selectDate:"Selectionner une date",selectDateRange:"Selectionner une periode",startDate:"Date de debut",endDate:"Date de fin",startEnd:"Debut — Fin",toggleCalendar:"Afficher le calendrier",clearDate:"Effacer la date",clearDateRange:"Effacer la periode",invalidDate:"Date invalide",dateOutOfRange:"La date est hors de la plage autorisee",invalidRange:"Periode invalide",invalidTime:"Heure invalide",invalidDateTime:"Date/heure invalide",invalidRangeOrder:"Ordre de periode invalide",rangeIncomplete:"Periode incomplete",last7Days:"7 derniers jours",thisMonth:"Ce mois-ci",hour:"Heure",minute:"Minute",second:"Seconde",meridiem:"AM/PM",am:"AM",pm:"PM",startTime:"Heure de debut",endTime:"Heure de fin",datePickerPanel:"Panneau de selection de date",timePlaceholder:"HH:mm",timePlaceholderSeconds:"HH:mm:ss",dateTimePlaceholder:"YYYY-MM-DD HH:mm",dateRangeTimePlaceholder:"Debut — Fin"},Fe={en:Pe,zh:Le,fr:Be},oe=new Map;function Ue(r){return r.trim().toLowerCase().replace(/_/g,"-")}function He(r){const e=r||(typeof navigator<"u"&&navigator.language?navigator.language:"en"),t=Ue(e||"");return t==="zh"||t.startsWith("zh-")||t==="cn"||t==="chinese"||t==="zh-cn"||t==="zh-hans"||t==="zh-hant"?"zh":t==="fr"||t.startsWith("fr-")||t==="french"?"fr":"en"}function de(r){if(!r||typeof r!="object"||Array.isArray(r))return{};const e={};return Object.entries(r).forEach(([t,n])=>{typeof n=="string"&&(e[t]=n)}),e}function Ne(r,e){if(!r)return{};try{const t=JSON.parse(r);if(!t||typeof t!="object"||Array.isArray(t))return{};const n=de(t),a=de(t[e]);return{...n,...a}}catch{return{}}}function fe(r,e){const t=He(r),n=`${t}::${e||""}`,a=oe.get(n);if(a)return a;const i=Fe[t],s=Ne(e,t),d={...i,...s};return oe.set(n,d),d}const Ye=`
2
2
  :host {
3
- --ui-calendar-bg: color-mix(in srgb, var(--ui-color-surface, #ffffff) 95%, transparent);
4
- --ui-calendar-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
3
+ --ui-calendar-bg: var(--color-panel-solid, var(--ui-color-surface, #ffffff));
4
+ --ui-calendar-border: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent));
5
5
  --ui-calendar-text: var(--ui-color-text, #0f172a);
6
6
  --ui-calendar-muted: var(--ui-color-muted, #526175);
7
7
  --ui-calendar-accent: var(--ui-color-primary, #2563eb);
8
8
 
9
- --ui-calendar-radius: 14px;
9
+ --ui-calendar-radius: calc(var(--ui-radius, 6px) + 4px);
10
10
  --ui-calendar-shadow: none;
11
11
  --ui-calendar-gap: 10px;
12
- --ui-calendar-day-radius: 10px;
13
- --ui-calendar-day-hover-bg: color-mix(in srgb, var(--ui-calendar-accent) 10%, transparent);
14
- --ui-calendar-selected-bg: color-mix(in srgb, var(--ui-calendar-accent) 14%, transparent);
15
- --ui-calendar-selected-border: color-mix(in srgb, var(--ui-calendar-accent) 44%, transparent);
12
+ --ui-calendar-day-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
13
+ --ui-calendar-day-hover-bg: var(--ui-color-fill, color-mix(in srgb, var(--ui-calendar-accent) 10%, transparent));
14
+ --ui-calendar-selected-bg: var(--ui-calendar-accent);
15
+ --ui-calendar-selected-color: var(--ui-color-foreground-on-primary, #ffffff);
16
+ --ui-calendar-selected-border: var(--ui-calendar-accent);
16
17
  --ui-calendar-today-ring: color-mix(in srgb, var(--ui-calendar-accent) 56%, transparent);
17
18
  --ui-calendar-range-bg: color-mix(in srgb, var(--ui-calendar-accent) 9%, transparent);
18
19
  --ui-calendar-range-edge: color-mix(in srgb, var(--ui-calendar-accent) 20%, transparent);
19
20
  --ui-calendar-disabled-opacity: 0.45;
20
21
 
21
- --ui-calendar-day-height: 52px;
22
+ --ui-calendar-day-height: 40px;
22
23
  --ui-calendar-day-font-size: 12px;
23
24
  --ui-calendar-weekday-font-size: 11px;
24
25
  --ui-calendar-title-font-size: 14px;
25
26
  --ui-calendar-day-padding-block: 6px;
26
27
  --ui-calendar-day-padding-inline: 6px;
27
28
  --ui-calendar-frame-padding: 12px;
28
- --ui-calendar-week-gap: 6px;
29
+ --ui-calendar-week-gap: 2px;
29
30
  --ui-calendar-control-height: 30px;
30
31
 
31
32
  display: block;
@@ -264,7 +265,7 @@
264
265
  border: 1px solid color-mix(in srgb, var(--ui-calendar-border) 84%, transparent);
265
266
  border-radius: 12px;
266
267
  background: color-mix(in srgb, var(--ui-calendar-bg) 96%, transparent);
267
- box-shadow: 0 10px 24px rgba(15, 23, 42, 0.1);
268
+ box-shadow: var(--shadow-5, 0 8px 24px rgba(15, 23, 42, 0.1));
268
269
  padding: 10px;
269
270
  display: grid;
270
271
  gap: 8px;
@@ -351,11 +352,11 @@
351
352
  }
352
353
 
353
354
  .day {
354
- border: 1px solid color-mix(in srgb, var(--ui-calendar-border) 78%, transparent);
355
+ border: 1px solid transparent;
355
356
  border-radius: var(--ui-calendar-day-radius);
356
357
  min-block-size: var(--ui-calendar-day-height);
357
358
  padding: var(--ui-calendar-day-padding-block) var(--ui-calendar-day-padding-inline);
358
- background: color-mix(in srgb, var(--ui-calendar-bg) 98%, transparent);
359
+ background: transparent;
359
360
  color: var(--ui-calendar-text);
360
361
  display: grid;
361
362
  align-content: center;
@@ -369,13 +370,11 @@
369
370
  }
370
371
 
371
372
  .day:hover {
372
- border-color: color-mix(in srgb, var(--ui-calendar-accent) 34%, var(--ui-calendar-border));
373
373
  background: var(--ui-calendar-day-hover-bg);
374
374
  }
375
375
 
376
376
  .day[data-outside="true"] {
377
- color: color-mix(in srgb, var(--ui-calendar-muted) 88%, transparent);
378
- background: color-mix(in srgb, var(--ui-calendar-bg) 92%, transparent);
377
+ color: var(--ui-calendar-muted);
379
378
  }
380
379
 
381
380
  .day[data-today="true"] {
@@ -385,17 +384,19 @@
385
384
  .day[data-selected="true"] {
386
385
  border-color: var(--ui-calendar-selected-border);
387
386
  background: var(--ui-calendar-selected-bg);
387
+ color: var(--ui-calendar-selected-color);
388
388
  }
389
389
 
390
390
  .day[data-range="true"] {
391
391
  background: var(--ui-calendar-range-bg);
392
- border-color: color-mix(in srgb, var(--ui-calendar-accent) 26%, var(--ui-calendar-border));
392
+ border-color: transparent;
393
393
  border-radius: 0;
394
394
  }
395
395
 
396
396
  .day[data-range-start="true"],
397
397
  .day[data-range-end="true"] {
398
- background: var(--ui-calendar-range-edge);
398
+ background: var(--ui-calendar-selected-bg);
399
+ color: var(--ui-calendar-selected-color);
399
400
  border-color: var(--ui-calendar-selected-border);
400
401
  border-radius: var(--ui-calendar-day-radius);
401
402
  }
@@ -426,7 +427,7 @@
426
427
 
427
428
  .day-number {
428
429
  font-size: var(--ui-calendar-day-font-size);
429
- font-weight: 650;
430
+ font-weight: 500;
430
431
  line-height: 1;
431
432
  justify-self: center;
432
433
  }
@@ -464,6 +465,14 @@
464
465
  text-overflow: ellipsis;
465
466
  }
466
467
 
468
+ /* Events are drawn over the day button: on a selected (solid) day they follow its text colour. */
469
+ .day-cell[data-selected="true"] .event-badge,
470
+ .day-cell[data-selected="true"] .event-count {
471
+ background: transparent;
472
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ui-calendar-selected-color) 60%, transparent);
473
+ color: var(--ui-calendar-selected-color);
474
+ }
475
+
467
476
  .event-count {
468
477
  inline-size: 16px;
469
478
  block-size: 16px;
@@ -492,7 +501,7 @@
492
501
  border-radius: 8px;
493
502
  border: 1px solid color-mix(in srgb, var(--ui-calendar-border) 80%, transparent);
494
503
  background: color-mix(in srgb, var(--ui-calendar-bg) 98%, #ffffff 2%);
495
- box-shadow: 0 10px 24px rgba(15, 23, 42, 0.14);
504
+ box-shadow: var(--shadow-5, 0 8px 24px rgba(15, 23, 42, 0.14));
496
505
  color: var(--ui-calendar-text);
497
506
  font: 500 11px/1.35 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
498
507
  /* Not drawn at all until its day is hovered or focused, so a hidden tooltip near an edge cannot widen the page. */
@@ -677,35 +686,35 @@
677
686
  from { background-position: 120% 0; }
678
687
  to { background-position: -120% 0; }
679
688
  }
680
- `,q={default:"var(--ui-color-primary, #2563eb)",info:"var(--ui-color-info, #0e7490)",success:"var(--ui-color-success, #15803d)",warning:"var(--ui-color-warning, #b45309)",danger:"var(--ui-color-danger, #dc2626)"};function O(r,e,t){return Math.max(e,Math.min(t,r))}function L(r){return String(r).padStart(2,"0")}function b(r){return`${r.y}-${L(r.m)}-${L(r.d)}`}function c(r){const e=/^(\d{4})-(\d{2})-(\d{2})$/.exec((r||"").trim());if(!e)return null;const t=Number(e[1]),n=Number(e[2]),a=Number(e[3]);if(!Number.isInteger(t)||!Number.isInteger(n)||!Number.isInteger(a)||n<1||n>12)return null;const i=F(t,n);return a<1||a>i?null:{y:t,m:n,d:a}}function F(r,e){return new Date(Date.UTC(r,e,0)).getUTCDate()}function B(r){return new Date(Date.UTC(r.y,r.m-1,r.d))}function ge(r){return{y:r.getUTCFullYear(),m:r.getUTCMonth()+1,d:r.getUTCDate()}}function k(r,e){const t=c(r),n=c(e);return!t||!n?r.localeCompare(e):t.y!==n.y?t.y-n.y:t.m!==n.m?t.m-n.m:t.d-n.d}function ve(r,e){const t=c(r);if(!t)return r;const n=B(t);return n.setUTCDate(n.getUTCDate()+e),b(ge(n))}function P(r,e){const t=new Date(Date.UTC(r.y,r.m-1,1));t.setUTCMonth(t.getUTCMonth()+e);const n=t.getUTCFullYear(),a=t.getUTCMonth()+1,i=O(r.d,1,F(n,a));return{y:n,m:a,d:i}}function be(r,e){const t=c(r);return t?b(P(t,e)):r}function W(r,e){return{y:r,m:e,d:1}}function me(r,e){return{y:r,m:e,d:F(r,e)}}function le(r){const e=c(r);return e?B(e).getUTCDay():0}function J(r,e){if(r==null||r==="")return e;const t=Number(r);return Number.isFinite(t)?Math.trunc(t):e}function ce(r,e){const t=J(r,e);return t<1?e:t}function je(r,e){if(r==null)return e;const t=String(r).toLowerCase();return t!=="false"&&t!=="0"&&t!=="off"}function m(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function K(r,e,t){return k(r,e)>=0&&k(r,t)<=0}function $(r,e){return k(r,e)<=0?{start:r,end:e}:{start:e,end:r}}function ue(r,e){const t=Number(r);if(t===0||t===1||t===6)return t;try{const a=new Intl.Locale(e||void 0)?.weekInfo?.firstDay;if(a===7)return 0;if(a===1||a===6)return a}catch{}return 0}function Ve(r){return r==="range"||r==="multiple"?r:"single"}function qe(r){return r==="none"||r==="select"?r:"navigate"}function Ke(r){return r==="badges"||r==="count"?r:"dots"}function We(r){return r==="sm"||r==="lg"?r:"md"}function Je(r){return r==="neutral"||r==="info"||r==="success"||r==="warning"||r==="danger"?r:null}function he(r){return r==="loading"||r==="error"||r==="success"?r:"idle"}function pe(r){const e=[],t=new Set;return r.forEach(n=>{const a=c(n);if(!a)return;const i=b(a);t.has(i)||(t.add(i),e.push(i))}),e.sort(k),e}function E(r){return r.mode==="single"?{mode:"single",value:r.value}:r.mode==="range"?{mode:"range",start:r.start,end:r.end}:{mode:"multiple",values:[...r.values]}}class ye extends Oe.ElementBase{constructor(){super(),this._eventsRawCache=null,this._eventsParsedCache=[],this._eventsByDateCache=new Map,this._valueRawCache=null,this._valueModeCache=null,this._valueParsedCache={mode:"single",value:null},this._focusedIso="",this._hoverIso=null,this._pickerOpen=!1,this._syncingValueAttribute=!1,this._rangeKeyboardAnchor=null,this._shouldRefocus=!1,this._docPointerDownBound=e=>this._onDocumentPointerDown(e),this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onPointerOver=this._onPointerOver.bind(this),this._onMouseLeave=this._onMouseLeave.bind(this),this._onFocusIn=this._onFocusIn.bind(this)}static get observedAttributes(){return["year","month","events","value","variant","headless","selection","min","max","disabled","readonly","week-start","locale","translations","outside-click","events-max","events-display","max-selections","size","hide-today","show-today","tone","state","bare","aria-label"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("click",this._onClick),this.root.addEventListener("keydown",this._onKeyDown),this.root.addEventListener("pointerover",this._onPointerOver),this.root.addEventListener("mouseleave",this._onMouseLeave),this.root.addEventListener("focusin",this._onFocusIn),this._syncDocumentListener()}disconnectedCallback(){this.root.removeEventListener("click",this._onClick),this.root.removeEventListener("keydown",this._onKeyDown),this.root.removeEventListener("pointerover",this._onPointerOver),this.root.removeEventListener("mouseleave",this._onMouseLeave),this.root.removeEventListener("focusin",this._onFocusIn),typeof document<"u"&&document.removeEventListener("pointerdown",this._docPointerDownBound,!0),super.disconnectedCallback()}attributeChangedCallback(e,t,n){t!==n&&(e==="events"&&(this._eventsRawCache=null),e==="value"&&!this._syncingValueAttribute&&(this._rangeKeyboardAnchor=null,this._valueRawCache=null),e==="selection"&&(this._rangeKeyboardAnchor=null,this._valueModeCache=null),e==="disabled"&&this.hasAttribute("disabled")&&(this._pickerOpen=!1,this._hoverIso=null),e==="state"&&he(n)==="loading"&&(this._pickerOpen=!1,this._hoverIso=null),this.isConnected&&(this._syncDocumentListener(),this.requestRender()))}focusDate(e){const t=c(e);t&&(this.goToMonth(t.y,t.m),this._focusedIso=b(t),this._shouldRefocus=!0,this.requestRender())}goToMonth(e,t,n="api"){if(!Number.isFinite(e)||!Number.isFinite(t))return;let a=Math.trunc(e),i=Math.trunc(t);for(;i<1;)i+=12,a-=1;for(;i>12;)i-=12,a+=1;let s=!1;if(String(a)!==(this.getAttribute("year")||"")&&(this.setAttribute("year",String(a)),s=!0),String(i)!==(this.getAttribute("month")||"")&&(this.setAttribute("month",String(i)),s=!0),s){const d={year:a,month:i,source:n};this.dispatchEvent(new CustomEvent("month-change",{detail:d,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("ui-month-change",{detail:d,bubbles:!0,composed:!0}))}}selectDate(e){const t=c(e);if(!t)return;const n=b(t);this._shouldRefocus=!0,this._applySelection(n,!1,"api")}_syncDocumentListener(){typeof document>"u"||(document.removeEventListener("pointerdown",this._docPointerDownBound,!0),this._pickerOpen&&document.addEventListener("pointerdown",this._docPointerDownBound,!0))}_onDocumentPointerDown(e){!this._pickerOpen||e.composedPath().includes(this)||(this._pickerOpen=!1,this.requestRender())}_resolveLocale(){const t=(this.getAttribute("locale")||"").trim()||(typeof navigator<"u"?navigator.language:"en-US");try{return new Intl.DateTimeFormat(t),t}catch{return"en-US"}}_resolvedView(){const e=new Date,t=J(this.getAttribute("year"),e.getFullYear()),n=J(this.getAttribute("month"),e.getMonth()+1);return{year:t,month:O(n,1,12)}}_todayIso(){const e=new Date;return`${e.getFullYear()}-${L(e.getMonth()+1)}-${L(e.getDate())}`}_resolveMinIso(){const e=c(this.getAttribute("min")||"");return e?b(e):null}_resolveMaxIso(){const e=c(this.getAttribute("max")||"");return e?b(e):null}_monthHasAllowedDay(e,t,n,a){const i=b(W(e,t)),s=b(me(e,t));return!(n&&k(s,n)<0||a&&k(i,a)>0)}_resolveSelectionMode(){return Ve(this.getAttribute("selection"))}_resolveEventsDisplay(){return Ke(this.getAttribute("events-display"))}_resolveOutsideClickMode(){return qe(this.getAttribute("outside-click"))}_resolveCalendarSize(){return We(this.getAttribute("size"))}_resolveTone(){return Je(this.getAttribute("tone"))}_resolveState(){return he(this.getAttribute("state"))}_resolveLabel(){const e=(this.getAttribute("aria-label")||"").trim();return e||this._translations().calendarLabel}_translations(){return fe(this.getAttribute("locale"),this.getAttribute("translations"))}_resolveBounds(){let e=this._resolveMinIso(),t=this._resolveMaxIso();if(e&&t&&k(e,t)>0){const n=e;e=t,t=n}return{minIso:e,maxIso:t}}_direction(){const e=this.getAttribute("dir");if(e==="rtl"||e==="ltr")return e;const n=this.closest("[dir]")?.getAttribute("dir");return n==="rtl"||n==="ltr"?n:getComputedStyle(this).direction==="rtl"?"rtl":"ltr"}_maxSelections(){return ce(this.getAttribute("max-selections"),Number.MAX_SAFE_INTEGER)}_eventsMax(){return O(ce(this.getAttribute("events-max"),3),1,9)}_showTodayButton(){return this.hasAttribute("hide-today")?!1:je(this.getAttribute("show-today"),!0)}_isDisabled(){return this.hasAttribute("disabled")}_isReadonly(){return this.hasAttribute("readonly")}_isInteractionDisabled(){return this._isDisabled()||this._resolveState()==="loading"}_isDateOutOfBounds(e,t,n){return!!(t&&k(e,t)<0||n&&k(e,n)>0)}_isDateBlocked(e,t,n,a){return!!(this._isInteractionDisabled()||this._isDateOutOfBounds(e,n,a)||t&&this._resolveOutsideClickMode()==="none")}_normalizeValueForMode(e){const t=this.getAttribute("value")||"";if(this._valueRawCache===t&&this._valueModeCache===e)return E(this._valueParsedCache);let n;if(e==="multiple"){try{const i=JSON.parse(t);if(!Array.isArray(i))n={mode:e,values:[]};else{const s=pe(i.map(d=>String(d||"")));n={mode:e,values:s}}}catch{n={mode:e,values:[]}}return this._valueRawCache=t,this._valueModeCache=e,this._valueParsedCache=E(n),n}if(e==="range"){try{const i=JSON.parse(t),s=i&&typeof i=="object"?String(i.start||""):"",d=i&&typeof i=="object"?String(i.end||""):"",o=c(s),p=c(d),u=o?b(o):null,h=p?b(p):null;if(u&&h){const f=$(u,h);n={mode:e,start:f.start,end:f.end}}else n={mode:e,start:u,end:null}}catch{n={mode:e,start:null,end:null}}return this._valueRawCache=t,this._valueModeCache=e,this._valueParsedCache=E(n),n}const a=c(t);return n={mode:e,value:a?b(a):null},this._valueRawCache=t,this._valueModeCache=e,this._valueParsedCache=E(n),n}_serializeSelection(e){if(e.mode==="single")return e.value;if(e.mode==="multiple")return JSON.stringify(e.values);const t={};return e.start&&(t.start=e.start),e.end&&(t.end=e.end),!t.start&&!t.end?null:JSON.stringify(t)}_emitSelectionEvents(e,t,n){e.mode==="single"&&t&&(this.dispatchEvent(new CustomEvent("select",{detail:{value:t,source:n},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("ui-select",{detail:{value:t,source:n},bubbles:!0,composed:!0})));const a={mode:e.mode,source:n};e.mode==="single"?a.value=e.value:e.mode==="range"?(a.value=e.start&&e.end?{start:e.start,end:e.end}:null,a.start=e.start,a.end=e.end):(a.value=[...e.values],a.values=[...e.values]),this.dispatchEvent(new CustomEvent("change",{detail:a,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("ui-change",{detail:a,bubbles:!0,composed:!0}))}_setValueAttribute(e){this._syncingValueAttribute=!0;try{e?this.getAttribute("value")!==e&&this.setAttribute("value",e):this.hasAttribute("value")&&this.removeAttribute("value")}finally{this._syncingValueAttribute=!1}}_applySelection(e,t,n){if(!c(e))return;const a=this._resolveSelectionMode(),{minIso:i,maxIso:s}=this._resolveBounds();if(this._isDateOutOfBounds(e,i,s))return;const d=this._isReadonly();if(this._isInteractionDisabled()||d)return;let o=this._normalizeValueForMode(a);if(a==="single")o={mode:a,value:e};else if(a==="multiple"){const h=this._normalizeValueForMode("multiple"),f=new Set(h.values);f.has(e)?f.delete(e):f.size<this._maxSelections()&&f.add(e),o={mode:a,values:pe(Array.from(f))}}else{const h=this._normalizeValueForMode("range"),f=h.start,_=h.end;if(t){const l=this._rangeKeyboardAnchor||f||this._focusedIso||e;if(!c(l))this._rangeKeyboardAnchor=e,o={mode:a,start:e,end:null};else{const v=$(l,e);o={mode:a,start:v.start,end:v.end}}}else if(!f||f&&_)this._rangeKeyboardAnchor=e,o={mode:a,start:e,end:null};else if(f&&!_){const l=$(f,e);o={mode:a,start:l.start,end:l.end}}}const p=this.getAttribute("value"),u=this._serializeSelection(o);p!==u?(this._setValueAttribute(u),this._emitSelectionEvents(o,a==="single"?e:null,n)):a==="single"&&this._emitSelectionEvents(o,e,n),this._focusedIso=e,this._hoverIso=null,this._shouldRefocus=!0,n!=="api"&&this.requestRender()}_monthLabel(e,t,n){try{return new Intl.DateTimeFormat(n,{month:"long",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(e,t-1,1)))}catch{return`${String(t)} ${e}`}}_monthPickerLabels(e){try{const t=new Intl.DateTimeFormat(e,{month:"short",timeZone:"UTC"});return Array.from({length:12},(n,a)=>t.format(new Date(Date.UTC(2024,a,1))))}catch{return["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}}_weekdayLabels(e,t){const n=[],a=new Intl.DateTimeFormat(e,{weekday:"short",timeZone:"UTC"});for(let i=0;i<7;i+=1){const s=(t+i)%7,d=new Date(Date.UTC(2024,0,7+s));n.push(a.format(d))}return n}_dayAriaLabel(e,t){const n=c(e);if(!n)return e;try{return new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric",timeZone:"UTC"}).format(B(n))}catch{return e}}_ensureEventsCache(){const e=this.getAttribute("events");if(e!==this._eventsRawCache&&(this._eventsRawCache=e,this._eventsParsedCache=[],this._eventsByDateCache=new Map,!!e))try{const t=JSON.parse(e);if(!Array.isArray(t))return;const n=[];t.forEach(a=>{if(!a||typeof a!="object")return;const i=String(a.date||"").trim(),s=c(i),d=s?b(s):"";if(!d)return;const o=String(a.tone||"default"),p=o==="success"||o==="warning"||o==="danger"||o==="info"?o:"default",u=a.title!=null?String(a.title):void 0;n.push({date:d,title:u,tone:p})}),this._eventsParsedCache=n,n.forEach(a=>{this._eventsByDateCache.has(a.date)||this._eventsByDateCache.set(a.date,[]),this._eventsByDateCache.get(a.date).push(a)})}catch{}}_buildCells(e,t,n,a,i,s){const d=b(W(e,t)),p=(le(d)-n+7)%7,u=c(d);if(!u)return[];const h=B(u);h.setUTCDate(h.getUTCDate()-p);const f=[];for(let _=0;_<42;_+=1){_>0&&h.setUTCDate(h.getUTCDate()+1);const l=ge(h),v=b(l),D=l.y!==e||l.m!==t,y=this._isDateBlocked(v,D,a,i);f.push({iso:v,parts:l,outside:D,disabled:y,today:v===s})}return f}_resolveFocusIso(e,t,n){const a=new Map;e.forEach(o=>a.set(o.iso,o));const i=o=>{if(!o)return null;const p=a.get(o);return!p||p.disabled?null:o};let s=i(this._focusedIso);if(s||(t.mode==="single"&&(s=i(t.value)),!s&&t.mode==="range"&&(s=i(t.end||t.start)),!s&&t.mode==="multiple"&&(s=i(t.values[0])),s||(s=i(n)),s))return s;const d=e.find(o=>!o.disabled);return d?d.iso:e[0]?.iso||""}_focusDateButton(e){if(!e||this.root.activeElement?.getAttribute("data-date")===e)return;const n=`.day[data-date="${e}"]`,a=this.root.querySelector(n);if(a)try{a.focus({preventScroll:!0})}catch{a.focus()}}_moveFocusByDays(e,t,n){const a=ve(e,t),i=c(a);i&&(this.goToMonth(i.y,i.m,"keyboard"),this._focusedIso=a,this._shouldRefocus=!0,n&&this._resolveSelectionMode()==="range"&&!this._isReadonly()&&!this._isInteractionDisabled()?this._applySelection(a,!0,"keyboard"):this.requestRender())}_moveFocusByMonths(e,t){const n=be(e,t),a=c(n);a&&(this.goToMonth(a.y,a.m,"keyboard"),this._focusedIso=n,this._shouldRefocus=!0,this.requestRender())}_focusWeekBoundary(e,t,n){const i=(le(e)-n+7)%7,s=t==="start"?-i:6-i;this._moveFocusByDays(e,s,!1)}_onPointerOver(e){if(this._resolveSelectionMode()!=="range")return;const t=this._normalizeValueForMode("range");if(!t.start||t.end)return;const a=e.target?.closest(".day");if(!a)return;const i=a.getAttribute("data-date")||"";if(!c(i))return;const s=a.getAttribute("data-outside")==="true",{minIso:d,maxIso:o}=this._resolveBounds();this._isDateBlocked(i,s,d,o)||this._hoverIso!==i&&(this._hoverIso=i,this.requestRender())}_onMouseLeave(){this._hoverIso!=null&&(this._hoverIso=null,this.requestRender())}_onFocusIn(e){const n=e.target?.closest(".day");if(!n)return;const a=n.getAttribute("data-date")||"";if(c(a)&&(this._focusedIso=a,this._resolveSelectionMode()==="range")){const i=this._normalizeValueForMode("range");i.start&&!i.end&&(this._hoverIso=a,this.requestRender())}}_toggleMonthYearPicker(e){this._isInteractionDisabled()||(this._pickerOpen=typeof e=="boolean"?e:!this._pickerOpen,this._syncDocumentListener(),this.requestRender())}_onClick(e){const t=e.target;if(!t)return;const n=t.closest("[data-action]"),a=n?.getAttribute("data-action")||"",{year:i,month:s}=this._resolvedView(),d=this._todayIso(),o=c(d);if(a==="prev-month"||a==="next-month"){if(this._isInteractionDisabled())return;const l=a==="prev-month"?-1:1,D=(this._focusedIso?c(this._focusedIso):null)||{y:i,m:s,d:1},y=P(D,l);this.goToMonth(y.y,y.m,"pointer"),this._focusedIso=b({y:y.y,m:y.m,d:O(D.d,1,F(y.y,y.m))}),this._shouldRefocus=!0,this.requestRender();return}if(a==="today"){if(this._isInteractionDisabled())return;this.goToMonth(o.y,o.m,"pointer"),this._focusedIso=d,this._shouldRefocus=!0,this._isReadonly()?this.requestRender():this._applySelection(d,!1,"pointer");return}if(a==="toggle-monthyear"){this._toggleMonthYearPicker();return}if(a==="picker-prev-year"||a==="picker-next-year"){if(this._isInteractionDisabled())return;const l=a==="picker-prev-year"?-1:1;this.goToMonth(i+l,s,"pointer"),this._pickerOpen=!0,this._shouldRefocus=!0,this.requestRender();return}if(a==="pick-month"){if(this._isInteractionDisabled())return;const l=Number(n?.getAttribute("data-month")||"");if(!Number.isInteger(l)||l<1||l>12)return;this.goToMonth(i,l,"pointer"),this._pickerOpen=!1,this._shouldRefocus=!0,this.requestRender();return}const p=t.closest(".day");if(!p)return;const u=p.getAttribute("data-date")||"";if(!c(u))return;const h=p.getAttribute("data-outside")==="true",{minIso:f,maxIso:_}=this._resolveBounds();if(!this._isDateBlocked(u,h,f,_)){if(h){const l=this._resolveOutsideClickMode();if(l==="none")return;if(l==="navigate"){const v=c(u);this.goToMonth(v.y,v.m,"pointer")}}if(this._isReadonly()){this._focusedIso=u,this._shouldRefocus=!0,this.requestRender();return}this._applySelection(u,!1,"pointer")}}_onKeyDown(e){if(e.key==="Escape"&&this._pickerOpen){e.preventDefault(),this._toggleMonthYearPicker(!1);return}const n=e.target?.closest(".day");if(!n)return;const a=n.getAttribute("data-date")||"";if(!c(a))return;const i=ue(this.getAttribute("week-start"),this._resolveLocale()),s=this._direction()==="rtl",d=e.shiftKey;if(e.key==="ArrowRight"){e.preventDefault(),this._moveFocusByDays(a,s?-1:1,d);return}if(e.key==="ArrowLeft"){e.preventDefault(),this._moveFocusByDays(a,s?1:-1,d);return}if(e.key==="ArrowDown"){e.preventDefault(),this._moveFocusByDays(a,7,d);return}if(e.key==="ArrowUp"){e.preventDefault(),this._moveFocusByDays(a,-7,d);return}if(e.key==="Home"){e.preventDefault(),this._focusWeekBoundary(a,"start",i);return}if(e.key==="End"){e.preventDefault(),this._focusWeekBoundary(a,"end",i);return}if(e.key==="PageUp"){e.preventDefault(),this._moveFocusByMonths(a,e.shiftKey?-12:-1);return}if(e.key==="PageDown"){e.preventDefault(),this._moveFocusByMonths(a,e.shiftKey?12:1);return}if(e.key==="Enter"||e.key===" "){e.preventDefault();const o=n.getAttribute("data-outside")==="true",{minIso:p,maxIso:u}=this._resolveBounds();if(this._isDateBlocked(a,o,p,u))return;if(o&&this._resolveOutsideClickMode()==="navigate"){const h=c(a);this.goToMonth(h.y,h.m,"keyboard")}this._isReadonly()||this._applySelection(a,!1,"keyboard")}}render(){const e=this._resolveLocale(),t=this._translations(),n=ue(this.getAttribute("week-start"),e),{year:a,month:i}=this._resolvedView(),s=this._resolveSelectionMode(),{minIso:d,maxIso:o}=this._resolveBounds(),p=this._todayIso(),u=this._resolveEventsDisplay(),h=this._eventsMax(),f=this._resolveCalendarSize(),_=this._resolveTone(),l=this._resolveState(),v=this._isInteractionDisabled(),D=this._resolveLabel();_?this.setAttribute("tone",_):this.removeAttribute("tone"),l!=="idle"?this.setAttribute("state",l):this.removeAttribute("state"),l==="loading"?this.setAttribute("aria-busy","true"):this.removeAttribute("aria-busy"),this._ensureEventsCache();const y=this._normalizeValueForMode(s),Z=this._buildCells(a,i,n,d,o,p);this._focusedIso=this._resolveFocusIso(Z,y,p);const U=this._monthLabel(a,i,e),X=P({y:a,m:i,d:1},-1),G=P({y:a,m:i,d:1},1),_e=this._monthHasAllowedDay(X.y,X.m,d,o),xe=this._monthHasAllowedDay(G.y,G.m,d,o),ke=this._weekdayLabels(e,n),Q=s==="range"?y:null,S=Q?.start||null,M=Q?.end||null,we=s==="multiple"?new Set(y.values):null;let H=null,N=null;if(s==="range"&&S&&!M&&this._hoverIso&&c(this._hoverIso)){const x=$(S,this._hoverIso);H=x.start,N=x.end}const ee=[];for(let x=0;x<6;x+=1){const C=Z.slice(x*7,x*7+7).map(g=>{const w=this._eventsByDateCache.get(g.iso)||[],Ae=this._dayAriaLabel(g.iso,e);let A=!1;s==="single"?A=y.value===g.iso:s==="multiple"?A=we?.has(g.iso)||!1:S&&M&&(A=K(g.iso,S,M));const T=!!(S&&M&&K(g.iso,S,M)),Y=!!(S&&g.iso===S),j=!!(M&&g.iso===M),Te=!!(H&&N&&K(g.iso,H,N)),Re=!g.disabled&&g.iso===this._focusedIso?0:-1;let I="";w.length>0&&(u==="count"?I=`<span class="event-count" part="event-more" style="--event-tone:${q[w[0].tone||"default"]}">${w.length}</span>`:u==="badges"?I=w.slice(0,h).map(z=>{const V=m(z.title||t.event);return`<span class="event-badge" part="event-dot" style="--event-tone:${q[z.tone||"default"]}" title="${V}">${V}</span>`}).join(""):I=w.slice(0,h).map(z=>`<span class="event-dot" part="event-dot" style="--event-tone:${q[z.tone||"default"]}"></span>`).join(""),w.length>h&&u!=="count"&&(I+=`<span class="event-more" part="event-more">+${w.length-h}</span>`));const ne=`ui-calendar-tip-${g.iso}`,re=w.length?w.map(R=>m(R.title||t.event)).join("<br/>"):"",ie=re.length>0,ze=I?`<span class="events" part="events" aria-hidden="true">${I}</span>`:"",$e=ie?`<span class="tooltip" part="tooltip" id="${ne}">${re}</span>`:"",se=A||T||Y||j,Ee=T||Y||j?"day range":"day";return`
681
- <div class="day-cell" part="day-cell"${I?` data-events="${u}"`:""}>
689
+ `,K={default:"var(--ui-color-primary, #2563eb)",info:"var(--ui-color-info, #0e7490)",success:"var(--ui-color-success, #15803d)",warning:"var(--ui-color-warning, #b45309)",danger:"var(--ui-color-danger, #dc2626)"};function O(r,e,t){return Math.max(e,Math.min(t,r))}function L(r){return String(r).padStart(2,"0")}function b(r){return`${r.y}-${L(r.m)}-${L(r.d)}`}function c(r){const e=/^(\d{4})-(\d{2})-(\d{2})$/.exec((r||"").trim());if(!e)return null;const t=Number(e[1]),n=Number(e[2]),a=Number(e[3]);if(!Number.isInteger(t)||!Number.isInteger(n)||!Number.isInteger(a)||n<1||n>12)return null;const i=F(t,n);return a<1||a>i?null:{y:t,m:n,d:a}}function F(r,e){return new Date(Date.UTC(r,e,0)).getUTCDate()}function B(r){return new Date(Date.UTC(r.y,r.m-1,r.d))}function ve(r){return{y:r.getUTCFullYear(),m:r.getUTCMonth()+1,d:r.getUTCDate()}}function k(r,e){const t=c(r),n=c(e);return!t||!n?r.localeCompare(e):t.y!==n.y?t.y-n.y:t.m!==n.m?t.m-n.m:t.d-n.d}function ge(r,e){const t=c(r);if(!t)return r;const n=B(t);return n.setUTCDate(n.getUTCDate()+e),b(ve(n))}function P(r,e){const t=new Date(Date.UTC(r.y,r.m-1,1));t.setUTCMonth(t.getUTCMonth()+e);const n=t.getUTCFullYear(),a=t.getUTCMonth()+1,i=O(r.d,1,F(n,a));return{y:n,m:a,d:i}}function be(r,e){const t=c(r);return t?b(P(t,e)):r}function J(r,e){return{y:r,m:e,d:1}}function me(r,e){return{y:r,m:e,d:F(r,e)}}function le(r){const e=c(r);return e?B(e).getUTCDay():0}function Z(r,e){if(r==null||r==="")return e;const t=Number(r);return Number.isFinite(t)?Math.trunc(t):e}function ce(r,e){const t=Z(r,e);return t<1?e:t}function je(r,e){if(r==null)return e;const t=String(r).toLowerCase();return t!=="false"&&t!=="0"&&t!=="off"}function m(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function W(r,e,t){return k(r,e)>=0&&k(r,t)<=0}function $(r,e){return k(r,e)<=0?{start:r,end:e}:{start:e,end:r}}function ue(r,e){const t=Number(r);if(t===0||t===1||t===6)return t;try{const a=new Intl.Locale(e||void 0)?.weekInfo?.firstDay;if(a===7)return 0;if(a===1||a===6)return a}catch{}return 0}function Ve(r){return r==="range"||r==="multiple"?r:"single"}function qe(r){return r==="none"||r==="select"?r:"navigate"}function Ke(r){return r==="badges"||r==="count"?r:"dots"}function We(r){return r==="sm"||r==="lg"?r:"md"}function Je(r){return r==="neutral"||r==="info"||r==="success"||r==="warning"||r==="danger"?r:null}function he(r){return r==="loading"||r==="error"||r==="success"?r:"idle"}function pe(r){const e=[],t=new Set;return r.forEach(n=>{const a=c(n);if(!a)return;const i=b(a);t.has(i)||(t.add(i),e.push(i))}),e.sort(k),e}function E(r){return r.mode==="single"?{mode:"single",value:r.value}:r.mode==="range"?{mode:"range",start:r.start,end:r.end}:{mode:"multiple",values:[...r.values]}}class ye extends Oe.ElementBase{constructor(){super(),this._eventsRawCache=null,this._eventsParsedCache=[],this._eventsByDateCache=new Map,this._valueRawCache=null,this._valueModeCache=null,this._valueParsedCache={mode:"single",value:null},this._focusedIso="",this._hoverIso=null,this._pickerOpen=!1,this._syncingValueAttribute=!1,this._rangeKeyboardAnchor=null,this._shouldRefocus=!1,this._docPointerDownBound=e=>this._onDocumentPointerDown(e),this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onPointerOver=this._onPointerOver.bind(this),this._onMouseLeave=this._onMouseLeave.bind(this),this._onFocusIn=this._onFocusIn.bind(this)}static get observedAttributes(){return["year","month","events","value","variant","headless","selection","min","max","disabled","readonly","week-start","locale","translations","outside-click","events-max","events-display","max-selections","size","hide-today","show-today","tone","state","bare","aria-label"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("click",this._onClick),this.root.addEventListener("keydown",this._onKeyDown),this.root.addEventListener("pointerover",this._onPointerOver),this.root.addEventListener("mouseleave",this._onMouseLeave),this.root.addEventListener("focusin",this._onFocusIn),this._syncDocumentListener()}disconnectedCallback(){this.root.removeEventListener("click",this._onClick),this.root.removeEventListener("keydown",this._onKeyDown),this.root.removeEventListener("pointerover",this._onPointerOver),this.root.removeEventListener("mouseleave",this._onMouseLeave),this.root.removeEventListener("focusin",this._onFocusIn),typeof document<"u"&&document.removeEventListener("pointerdown",this._docPointerDownBound,!0),super.disconnectedCallback()}attributeChangedCallback(e,t,n){t!==n&&(e==="events"&&(this._eventsRawCache=null),e==="value"&&!this._syncingValueAttribute&&(this._rangeKeyboardAnchor=null,this._valueRawCache=null),e==="selection"&&(this._rangeKeyboardAnchor=null,this._valueModeCache=null),e==="disabled"&&this.hasAttribute("disabled")&&(this._pickerOpen=!1,this._hoverIso=null),e==="state"&&he(n)==="loading"&&(this._pickerOpen=!1,this._hoverIso=null),this.isConnected&&(this._syncDocumentListener(),this.requestRender()))}focusDate(e){const t=c(e);t&&(this.goToMonth(t.y,t.m),this._focusedIso=b(t),this._shouldRefocus=!0,this.requestRender())}goToMonth(e,t,n="api"){if(!Number.isFinite(e)||!Number.isFinite(t))return;let a=Math.trunc(e),i=Math.trunc(t);for(;i<1;)i+=12,a-=1;for(;i>12;)i-=12,a+=1;let s=!1;if(String(a)!==(this.getAttribute("year")||"")&&(this.setAttribute("year",String(a)),s=!0),String(i)!==(this.getAttribute("month")||"")&&(this.setAttribute("month",String(i)),s=!0),s){const d={year:a,month:i,source:n};this.dispatchEvent(new CustomEvent("month-change",{detail:d,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("ui-month-change",{detail:d,bubbles:!0,composed:!0}))}}selectDate(e){const t=c(e);if(!t)return;const n=b(t);this._shouldRefocus=!0,this._applySelection(n,!1,"api")}_syncDocumentListener(){typeof document>"u"||(document.removeEventListener("pointerdown",this._docPointerDownBound,!0),this._pickerOpen&&document.addEventListener("pointerdown",this._docPointerDownBound,!0))}_onDocumentPointerDown(e){!this._pickerOpen||e.composedPath().includes(this)||(this._pickerOpen=!1,this.requestRender())}_resolveLocale(){const t=(this.getAttribute("locale")||"").trim()||(typeof navigator<"u"?navigator.language:"en-US");try{return new Intl.DateTimeFormat(t),t}catch{return"en-US"}}_resolvedView(){const e=new Date,t=Z(this.getAttribute("year"),e.getFullYear()),n=Z(this.getAttribute("month"),e.getMonth()+1);return{year:t,month:O(n,1,12)}}_todayIso(){const e=new Date;return`${e.getFullYear()}-${L(e.getMonth()+1)}-${L(e.getDate())}`}_resolveMinIso(){const e=c(this.getAttribute("min")||"");return e?b(e):null}_resolveMaxIso(){const e=c(this.getAttribute("max")||"");return e?b(e):null}_monthHasAllowedDay(e,t,n,a){const i=b(J(e,t)),s=b(me(e,t));return!(n&&k(s,n)<0||a&&k(i,a)>0)}_resolveSelectionMode(){return Ve(this.getAttribute("selection"))}_resolveEventsDisplay(){return Ke(this.getAttribute("events-display"))}_resolveOutsideClickMode(){return qe(this.getAttribute("outside-click"))}_resolveCalendarSize(){return We(this.getAttribute("size"))}_resolveTone(){return Je(this.getAttribute("tone"))}_resolveState(){return he(this.getAttribute("state"))}_resolveLabel(){const e=(this.getAttribute("aria-label")||"").trim();return e||this._translations().calendarLabel}_translations(){return fe(this.getAttribute("locale"),this.getAttribute("translations"))}_resolveBounds(){let e=this._resolveMinIso(),t=this._resolveMaxIso();if(e&&t&&k(e,t)>0){const n=e;e=t,t=n}return{minIso:e,maxIso:t}}_direction(){const e=this.getAttribute("dir");if(e==="rtl"||e==="ltr")return e;const n=this.closest("[dir]")?.getAttribute("dir");return n==="rtl"||n==="ltr"?n:getComputedStyle(this).direction==="rtl"?"rtl":"ltr"}_maxSelections(){return ce(this.getAttribute("max-selections"),Number.MAX_SAFE_INTEGER)}_eventsMax(){return O(ce(this.getAttribute("events-max"),3),1,9)}_showTodayButton(){return this.hasAttribute("hide-today")?!1:je(this.getAttribute("show-today"),!0)}_isDisabled(){return this.hasAttribute("disabled")}_isReadonly(){return this.hasAttribute("readonly")}_isInteractionDisabled(){return this._isDisabled()||this._resolveState()==="loading"}_isDateOutOfBounds(e,t,n){return!!(t&&k(e,t)<0||n&&k(e,n)>0)}_isDateBlocked(e,t,n,a){return!!(this._isInteractionDisabled()||this._isDateOutOfBounds(e,n,a)||t&&this._resolveOutsideClickMode()==="none")}_normalizeValueForMode(e){const t=this.getAttribute("value")||"";if(this._valueRawCache===t&&this._valueModeCache===e)return E(this._valueParsedCache);let n;if(e==="multiple"){try{const i=JSON.parse(t);if(!Array.isArray(i))n={mode:e,values:[]};else{const s=pe(i.map(d=>String(d||"")));n={mode:e,values:s}}}catch{n={mode:e,values:[]}}return this._valueRawCache=t,this._valueModeCache=e,this._valueParsedCache=E(n),n}if(e==="range"){try{const i=JSON.parse(t),s=i&&typeof i=="object"?String(i.start||""):"",d=i&&typeof i=="object"?String(i.end||""):"",o=c(s),p=c(d),u=o?b(o):null,h=p?b(p):null;if(u&&h){const f=$(u,h);n={mode:e,start:f.start,end:f.end}}else n={mode:e,start:u,end:null}}catch{n={mode:e,start:null,end:null}}return this._valueRawCache=t,this._valueModeCache=e,this._valueParsedCache=E(n),n}const a=c(t);return n={mode:e,value:a?b(a):null},this._valueRawCache=t,this._valueModeCache=e,this._valueParsedCache=E(n),n}_serializeSelection(e){if(e.mode==="single")return e.value;if(e.mode==="multiple")return JSON.stringify(e.values);const t={};return e.start&&(t.start=e.start),e.end&&(t.end=e.end),!t.start&&!t.end?null:JSON.stringify(t)}_emitSelectionEvents(e,t,n){e.mode==="single"&&t&&(this.dispatchEvent(new CustomEvent("select",{detail:{value:t,source:n},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("ui-select",{detail:{value:t,source:n},bubbles:!0,composed:!0})));const a={mode:e.mode,source:n};e.mode==="single"?a.value=e.value:e.mode==="range"?(a.value=e.start&&e.end?{start:e.start,end:e.end}:null,a.start=e.start,a.end=e.end):(a.value=[...e.values],a.values=[...e.values]),this.dispatchEvent(new CustomEvent("change",{detail:a,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("ui-change",{detail:a,bubbles:!0,composed:!0}))}_setValueAttribute(e){this._syncingValueAttribute=!0;try{e?this.getAttribute("value")!==e&&this.setAttribute("value",e):this.hasAttribute("value")&&this.removeAttribute("value")}finally{this._syncingValueAttribute=!1}}_applySelection(e,t,n){if(!c(e))return;const a=this._resolveSelectionMode(),{minIso:i,maxIso:s}=this._resolveBounds();if(this._isDateOutOfBounds(e,i,s))return;const d=this._isReadonly();if(this._isInteractionDisabled()||d)return;let o=this._normalizeValueForMode(a);if(a==="single")o={mode:a,value:e};else if(a==="multiple"){const h=this._normalizeValueForMode("multiple"),f=new Set(h.values);f.has(e)?f.delete(e):f.size<this._maxSelections()&&f.add(e),o={mode:a,values:pe(Array.from(f))}}else{const h=this._normalizeValueForMode("range"),f=h.start,_=h.end;if(t){const l=this._rangeKeyboardAnchor||f||this._focusedIso||e;if(!c(l))this._rangeKeyboardAnchor=e,o={mode:a,start:e,end:null};else{const g=$(l,e);o={mode:a,start:g.start,end:g.end}}}else if(!f||f&&_)this._rangeKeyboardAnchor=e,o={mode:a,start:e,end:null};else if(f&&!_){const l=$(f,e);o={mode:a,start:l.start,end:l.end}}}const p=this.getAttribute("value"),u=this._serializeSelection(o);p!==u?(this._setValueAttribute(u),this._emitSelectionEvents(o,a==="single"?e:null,n)):a==="single"&&this._emitSelectionEvents(o,e,n),this._focusedIso=e,this._hoverIso=null,this._shouldRefocus=!0,n!=="api"&&this.requestRender()}_monthLabel(e,t,n){try{return new Intl.DateTimeFormat(n,{month:"long",year:"numeric",timeZone:"UTC"}).format(new Date(Date.UTC(e,t-1,1)))}catch{return`${String(t)} ${e}`}}_monthPickerLabels(e){try{const t=new Intl.DateTimeFormat(e,{month:"short",timeZone:"UTC"});return Array.from({length:12},(n,a)=>t.format(new Date(Date.UTC(2024,a,1))))}catch{return["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}}_weekdayLabels(e,t){const n=[],a=new Intl.DateTimeFormat(e,{weekday:"short",timeZone:"UTC"});for(let i=0;i<7;i+=1){const s=(t+i)%7,d=new Date(Date.UTC(2024,0,7+s));n.push(a.format(d))}return n}_dayAriaLabel(e,t){const n=c(e);if(!n)return e;try{return new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric",timeZone:"UTC"}).format(B(n))}catch{return e}}_ensureEventsCache(){const e=this.getAttribute("events");if(e!==this._eventsRawCache&&(this._eventsRawCache=e,this._eventsParsedCache=[],this._eventsByDateCache=new Map,!!e))try{const t=JSON.parse(e);if(!Array.isArray(t))return;const n=[];t.forEach(a=>{if(!a||typeof a!="object")return;const i=String(a.date||"").trim(),s=c(i),d=s?b(s):"";if(!d)return;const o=String(a.tone||"default"),p=o==="success"||o==="warning"||o==="danger"||o==="info"?o:"default",u=a.title!=null?String(a.title):void 0;n.push({date:d,title:u,tone:p})}),this._eventsParsedCache=n,n.forEach(a=>{this._eventsByDateCache.has(a.date)||this._eventsByDateCache.set(a.date,[]),this._eventsByDateCache.get(a.date).push(a)})}catch{}}_buildCells(e,t,n,a,i,s){const d=b(J(e,t)),p=(le(d)-n+7)%7,u=c(d);if(!u)return[];const h=B(u);h.setUTCDate(h.getUTCDate()-p);const f=[];for(let _=0;_<42;_+=1){_>0&&h.setUTCDate(h.getUTCDate()+1);const l=ve(h),g=b(l),D=l.y!==e||l.m!==t,y=this._isDateBlocked(g,D,a,i);f.push({iso:g,parts:l,outside:D,disabled:y,today:g===s})}return f}_resolveFocusIso(e,t,n){const a=new Map;e.forEach(o=>a.set(o.iso,o));const i=o=>{if(!o)return null;const p=a.get(o);return!p||p.disabled?null:o};let s=i(this._focusedIso);if(s||(t.mode==="single"&&(s=i(t.value)),!s&&t.mode==="range"&&(s=i(t.end||t.start)),!s&&t.mode==="multiple"&&(s=i(t.values[0])),s||(s=i(n)),s))return s;const d=e.find(o=>!o.disabled);return d?d.iso:e[0]?.iso||""}_focusDateButton(e){if(!e||this.root.activeElement?.getAttribute("data-date")===e)return;const n=`.day[data-date="${e}"]`,a=this.root.querySelector(n);if(a)try{a.focus({preventScroll:!0})}catch{a.focus()}}_moveFocusByDays(e,t,n){const a=ge(e,t),i=c(a);i&&(this.goToMonth(i.y,i.m,"keyboard"),this._focusedIso=a,this._shouldRefocus=!0,n&&this._resolveSelectionMode()==="range"&&!this._isReadonly()&&!this._isInteractionDisabled()?this._applySelection(a,!0,"keyboard"):this.requestRender())}_moveFocusByMonths(e,t){const n=be(e,t),a=c(n);a&&(this.goToMonth(a.y,a.m,"keyboard"),this._focusedIso=n,this._shouldRefocus=!0,this.requestRender())}_focusWeekBoundary(e,t,n){const i=(le(e)-n+7)%7,s=t==="start"?-i:6-i;this._moveFocusByDays(e,s,!1)}_onPointerOver(e){if(this._resolveSelectionMode()!=="range")return;const t=this._normalizeValueForMode("range");if(!t.start||t.end)return;const a=e.target?.closest(".day");if(!a)return;const i=a.getAttribute("data-date")||"";if(!c(i))return;const s=a.getAttribute("data-outside")==="true",{minIso:d,maxIso:o}=this._resolveBounds();this._isDateBlocked(i,s,d,o)||this._hoverIso!==i&&(this._hoverIso=i,this.requestRender())}_onMouseLeave(){this._hoverIso!=null&&(this._hoverIso=null,this.requestRender())}_onFocusIn(e){const n=e.target?.closest(".day");if(!n)return;const a=n.getAttribute("data-date")||"";if(c(a)&&(this._focusedIso=a,this._resolveSelectionMode()==="range")){const i=this._normalizeValueForMode("range");i.start&&!i.end&&(this._hoverIso=a,this.requestRender())}}_toggleMonthYearPicker(e){this._isInteractionDisabled()||(this._pickerOpen=typeof e=="boolean"?e:!this._pickerOpen,this._syncDocumentListener(),this.requestRender())}_onClick(e){const t=e.target;if(!t)return;const n=t.closest("[data-action]"),a=n?.getAttribute("data-action")||"",{year:i,month:s}=this._resolvedView(),d=this._todayIso(),o=c(d);if(a==="prev-month"||a==="next-month"){if(this._isInteractionDisabled())return;const l=a==="prev-month"?-1:1,D=(this._focusedIso?c(this._focusedIso):null)||{y:i,m:s,d:1},y=P(D,l);this.goToMonth(y.y,y.m,"pointer"),this._focusedIso=b({y:y.y,m:y.m,d:O(D.d,1,F(y.y,y.m))}),this._shouldRefocus=!0,this.requestRender();return}if(a==="today"){if(this._isInteractionDisabled())return;this.goToMonth(o.y,o.m,"pointer"),this._focusedIso=d,this._shouldRefocus=!0,this._isReadonly()?this.requestRender():this._applySelection(d,!1,"pointer");return}if(a==="toggle-monthyear"){this._toggleMonthYearPicker();return}if(a==="picker-prev-year"||a==="picker-next-year"){if(this._isInteractionDisabled())return;const l=a==="picker-prev-year"?-1:1;this.goToMonth(i+l,s,"pointer"),this._pickerOpen=!0,this._shouldRefocus=!0,this.requestRender();return}if(a==="pick-month"){if(this._isInteractionDisabled())return;const l=Number(n?.getAttribute("data-month")||"");if(!Number.isInteger(l)||l<1||l>12)return;this.goToMonth(i,l,"pointer"),this._pickerOpen=!1,this._shouldRefocus=!0,this.requestRender();return}const p=t.closest(".day");if(!p)return;const u=p.getAttribute("data-date")||"";if(!c(u))return;const h=p.getAttribute("data-outside")==="true",{minIso:f,maxIso:_}=this._resolveBounds();if(!this._isDateBlocked(u,h,f,_)){if(h){const l=this._resolveOutsideClickMode();if(l==="none")return;if(l==="navigate"){const g=c(u);this.goToMonth(g.y,g.m,"pointer")}}if(this._isReadonly()){this._focusedIso=u,this._shouldRefocus=!0,this.requestRender();return}this._applySelection(u,!1,"pointer")}}_onKeyDown(e){if(e.key==="Escape"&&this._pickerOpen){e.preventDefault(),this._toggleMonthYearPicker(!1);return}const n=e.target?.closest(".day");if(!n)return;const a=n.getAttribute("data-date")||"";if(!c(a))return;const i=ue(this.getAttribute("week-start"),this._resolveLocale()),s=this._direction()==="rtl",d=e.shiftKey;if(e.key==="ArrowRight"){e.preventDefault(),this._moveFocusByDays(a,s?-1:1,d);return}if(e.key==="ArrowLeft"){e.preventDefault(),this._moveFocusByDays(a,s?1:-1,d);return}if(e.key==="ArrowDown"){e.preventDefault(),this._moveFocusByDays(a,7,d);return}if(e.key==="ArrowUp"){e.preventDefault(),this._moveFocusByDays(a,-7,d);return}if(e.key==="Home"){e.preventDefault(),this._focusWeekBoundary(a,"start",i);return}if(e.key==="End"){e.preventDefault(),this._focusWeekBoundary(a,"end",i);return}if(e.key==="PageUp"){e.preventDefault(),this._moveFocusByMonths(a,e.shiftKey?-12:-1);return}if(e.key==="PageDown"){e.preventDefault(),this._moveFocusByMonths(a,e.shiftKey?12:1);return}if(e.key==="Enter"||e.key===" "){e.preventDefault();const o=n.getAttribute("data-outside")==="true",{minIso:p,maxIso:u}=this._resolveBounds();if(this._isDateBlocked(a,o,p,u))return;if(o&&this._resolveOutsideClickMode()==="navigate"){const h=c(a);this.goToMonth(h.y,h.m,"keyboard")}this._isReadonly()||this._applySelection(a,!1,"keyboard")}}render(){const e=this._resolveLocale(),t=this._translations(),n=ue(this.getAttribute("week-start"),e),{year:a,month:i}=this._resolvedView(),s=this._resolveSelectionMode(),{minIso:d,maxIso:o}=this._resolveBounds(),p=this._todayIso(),u=this._resolveEventsDisplay(),h=this._eventsMax(),f=this._resolveCalendarSize(),_=this._resolveTone(),l=this._resolveState(),g=this._isInteractionDisabled(),D=this._resolveLabel();_?this.setAttribute("tone",_):this.removeAttribute("tone"),l!=="idle"?this.setAttribute("state",l):this.removeAttribute("state"),l==="loading"?this.setAttribute("aria-busy","true"):this.removeAttribute("aria-busy"),this._ensureEventsCache();const y=this._normalizeValueForMode(s),X=this._buildCells(a,i,n,d,o,p);this._focusedIso=this._resolveFocusIso(X,y,p);const U=this._monthLabel(a,i,e),G=P({y:a,m:i,d:1},-1),Q=P({y:a,m:i,d:1},1),_e=this._monthHasAllowedDay(G.y,G.m,d,o),xe=this._monthHasAllowedDay(Q.y,Q.m,d,o),ke=this._weekdayLabels(e,n),ee=s==="range"?y:null,S=ee?.start||null,M=ee?.end||null,we=s==="multiple"?new Set(y.values):null;let H=null,N=null;if(s==="range"&&S&&!M&&this._hoverIso&&c(this._hoverIso)){const x=$(S,this._hoverIso);H=x.start,N=x.end}const te=[];for(let x=0;x<6;x+=1){const C=X.slice(x*7,x*7+7).map(v=>{const w=this._eventsByDateCache.get(v.iso)||[],Ae=this._dayAriaLabel(v.iso,e);let A=!1;s==="single"?A=y.value===v.iso:s==="multiple"?A=we?.has(v.iso)||!1:S&&M&&(A=W(v.iso,S,M));const T=!!(S&&M&&W(v.iso,S,M)),Y=!!(S&&v.iso===S),j=!!(M&&v.iso===M),Te=!!(H&&N&&W(v.iso,H,N)),Re=!v.disabled&&v.iso===this._focusedIso?0:-1;let I="";w.length>0&&(u==="count"?I=`<span class="event-count" part="event-more" style="--event-tone:${K[w[0].tone||"default"]}">${w.length}</span>`:u==="badges"?I=w.slice(0,h).map(z=>{const q=m(z.title||t.event);return`<span class="event-badge" part="event-dot" style="--event-tone:${K[z.tone||"default"]}" title="${q}">${q}</span>`}).join(""):I=w.slice(0,h).map(z=>`<span class="event-dot" part="event-dot" style="--event-tone:${K[z.tone||"default"]}"></span>`).join(""),w.length>h&&u!=="count"&&(I+=`<span class="event-more" part="event-more">+${w.length-h}</span>`));const re=`ui-calendar-tip-${v.iso}`,ie=w.length?w.map(R=>m(R.title||t.event)).join("<br/>"):"",se=ie.length>0,ze=I?`<span class="events" part="events" aria-hidden="true">${I}</span>`:"",$e=se?`<span class="tooltip" part="tooltip" id="${re}">${ie}</span>`:"",V=A||T||Y||j,Ee=T||Y||j?"day range":"day";return`
690
+ <div class="day-cell" part="day-cell"${I?` data-events="${u}"`:""}${V?' data-selected="true"':""}>
682
691
  <button
683
692
  type="button"
684
693
  class="day"
685
694
  part="${Ee}"
686
695
  role="gridcell"
687
- data-date="${g.iso}"
688
- data-outside="${g.outside?"true":"false"}"
689
- data-disabled="${g.disabled?"true":"false"}"
690
- data-today="${g.today?"true":"false"}"
691
- data-selected="${se?"true":"false"}"
696
+ data-date="${v.iso}"
697
+ data-outside="${v.outside?"true":"false"}"
698
+ data-disabled="${v.disabled?"true":"false"}"
699
+ data-today="${v.today?"true":"false"}"
700
+ data-selected="${V?"true":"false"}"
692
701
  data-range="${T?"true":"false"}"
693
702
  data-range-start="${Y?"true":"false"}"
694
703
  data-range-end="${j?"true":"false"}"
695
704
  data-range-preview="${!T&&Te?"true":"false"}"
696
- aria-selected="${se?"true":"false"}"
697
- aria-disabled="${g.disabled?"true":"false"}"
698
- ${g.today?'aria-current="date"':""}
705
+ aria-selected="${V?"true":"false"}"
706
+ aria-disabled="${v.disabled?"true":"false"}"
707
+ ${v.today?'aria-current="date"':""}
699
708
  aria-label="${m(Ae)}"
700
- ${ie?`aria-describedby="${ne}"`:""}
709
+ ${se?`aria-describedby="${re}"`:""}
701
710
  tabindex="${Re}"
702
711
  >
703
- <span class="day-number" part="day-number">${g.parts.d}</span>
712
+ <span class="day-number" part="day-number">${v.parts.d}</span>
704
713
  </button>
705
714
  ${ze}
706
715
  ${$e}
707
716
  </div>
708
- `}).join("");ee.push(`<div class="week" role="row">${C}</div>`)}const De=this._monthPickerLabels(e).map((x,ae)=>{const C=ae+1;return`
717
+ `}).join("");te.push(`<div class="week" role="row">${C}</div>`)}const De=this._monthPickerLabels(e).map((x,ne)=>{const C=ne+1;return`
709
718
  <button
710
719
  type="button"
711
720
  class="picker-month"
@@ -713,28 +722,28 @@
713
722
  data-action="pick-month"
714
723
  data-month="${C}"
715
724
  data-active="${C===i?"true":"false"}"
716
- ${v?"disabled":""}
725
+ ${g?"disabled":""}
717
726
  >
718
727
  ${x}
719
728
  </button>
720
- `}).join(""),Se=ke.map(x=>`<span class="weekday" part="weekday" role="columnheader">${m(x)}</span>`).join(""),Me=this._showTodayButton()?`<button type="button" class="today-btn" part="today" data-action="today" ${v?"disabled":""}>${m(t.today)}</button>`:"",te=l==="loading"?t.syncingSchedule:l==="error"?t.unableToSyncEvents:l==="success"?t.scheduleSynced:"";this.setContent(`
729
+ `}).join(""),Se=ke.map(x=>`<span class="weekday" part="weekday" role="columnheader">${m(x)}</span>`).join(""),Me=this._showTodayButton()?`<button type="button" class="today-btn" part="today" data-action="today" ${g?"disabled":""}>${m(t.today)}</button>`:"",ae=l==="loading"?t.syncingSchedule:l==="error"?t.unableToSyncEvents:l==="success"?t.scheduleSynced:"";this.setContent(`
721
730
  <style>${Ye}</style>
722
731
  <section
723
732
  class="frame"
724
733
  part="frame"
725
734
  data-size="${f}"
726
735
  data-state="${l}"
727
- aria-disabled="${v?"true":"false"}"
736
+ aria-disabled="${g?"true":"false"}"
728
737
  aria-label="${m(D)}"
729
738
  >
730
739
  <div class="live-region" aria-live="polite" aria-atomic="true">${m(U)}</div>
731
740
 
732
741
  <header class="header" part="header">
733
742
  <div class="nav" part="nav">
734
- <button type="button" class="nav-btn" part="prev" data-action="prev-month" ${!_e||v?"disabled":""} aria-label="${m(t.previousMonth)}">
743
+ <button type="button" class="nav-btn" part="prev" data-action="prev-month" ${!_e||g?"disabled":""} aria-label="${m(t.previousMonth)}">
735
744
  <svg viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" focusable="false"><path d="M14.7 6.3a1 1 0 0 1 0 1.4L10.41 12l4.29 4.3a1 1 0 1 1-1.42 1.4l-5-5a1 1 0 0 1 0-1.4l5-5a1 1 0 0 1 1.42 0Z" fill="currentColor"/></svg>
736
745
  </button>
737
- <button type="button" class="nav-btn" part="next" data-action="next-month" ${!xe||v?"disabled":""} aria-label="${m(t.nextMonth)}">
746
+ <button type="button" class="nav-btn" part="next" data-action="next-month" ${!xe||g?"disabled":""} aria-label="${m(t.nextMonth)}">
738
747
  <svg viewBox="0 0 24 24" width="14" height="14" aria-hidden="true" focusable="false"><path d="M9.3 17.7a1 1 0 0 1 0-1.4L13.59 12 9.3 7.7a1 1 0 0 1 1.4-1.4l5 5a1 1 0 0 1 0 1.4l-5 5a1 1 0 0 1-1.4 0Z" fill="currentColor"/></svg>
739
748
  </button>
740
749
  </div>
@@ -745,7 +754,7 @@
745
754
  class="title-btn"
746
755
  part="title monthyear"
747
756
  data-action="toggle-monthyear"
748
- ${v?"disabled":""}
757
+ ${g?"disabled":""}
749
758
  aria-expanded="${this._pickerOpen?"true":"false"}"
750
759
  aria-label="${m(`${U}, ${t.chooseMonthYear}`)}"
751
760
  >
@@ -754,9 +763,9 @@
754
763
  </button>
755
764
  <section class="monthyear-pop" part="monthyear" ${this._pickerOpen?"":"hidden"}>
756
765
  <div class="picker-header">
757
- <button type="button" class="picker-year-btn" part="prev" data-action="picker-prev-year" ${v?"disabled":""} aria-label="${m(t.previousYear)}">-</button>
766
+ <button type="button" class="picker-year-btn" part="prev" data-action="picker-prev-year" ${g?"disabled":""} aria-label="${m(t.previousYear)}">-</button>
758
767
  <span class="picker-year">${a}</span>
759
- <button type="button" class="picker-year-btn" part="next" data-action="picker-next-year" ${v?"disabled":""} aria-label="${m(t.nextYear)}">+</button>
768
+ <button type="button" class="picker-year-btn" part="next" data-action="picker-next-year" ${g?"disabled":""} aria-label="${m(t.nextYear)}">+</button>
760
769
  </div>
761
770
  <div class="picker-months">${De}</div>
762
771
  </section>
@@ -767,14 +776,14 @@
767
776
  </div>
768
777
  </header>
769
778
 
770
- <div class="status" part="status" ${te?"":"hidden"}>
779
+ <div class="status" part="status" ${ae?"":"hidden"}>
771
780
  <span class="status-dot" aria-hidden="true"></span>
772
- <span>${m(te)}</span>
781
+ <span>${m(ae)}</span>
773
782
  </div>
774
783
 
775
784
  <div class="grid-wrap" part="grid" role="grid" aria-label="${m(D)}">
776
785
  <div class="weekdays" role="row">${Se}</div>
777
- ${ee.join("")}
786
+ ${te.join("")}
778
787
  </div>
779
788
  </section>
780
- `);const Ie=this._focusedIso,Ce=this._shouldRefocus;this._shouldRefocus=!1,Ce&&queueMicrotask(()=>{this.isConnected&&this._focusDateButton(Ie)})}shouldRenderOnAttributeChange(e,t,n){return!1}}typeof customElements<"u"&&!customElements.get("ui-calendar")&&customElements.define("ui-calendar",ye);exports.UICalendar=ye;exports.addDaysISO=ve;exports.addMonthsISO=be;exports.compareISO=k;exports.endOfMonth=me;exports.parseISO=c;exports.resolveDateTimeTranslations=fe;exports.startOfMonth=W;
789
+ `);const Ie=this._focusedIso,Ce=this._shouldRefocus;this._shouldRefocus=!1,Ce&&queueMicrotask(()=>{this.isConnected&&this._focusDateButton(Ie)})}shouldRenderOnAttributeChange(e,t,n){return!1}}typeof customElements<"u"&&!customElements.get("ui-calendar")&&customElements.define("ui-calendar",ye);exports.UICalendar=ye;exports.addDaysISO=ge;exports.addMonthsISO=be;exports.compareISO=k;exports.endOfMonth=me;exports.parseISO=c;exports.resolveDateTimeTranslations=fe;exports.startOfMonth=J;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./calendar-D-mXMgqc.js");exports.UICalendar=e.UICalendar;exports.addDaysISO=e.addDaysISO;exports.addMonthsISO=e.addMonthsISO;exports.compareISO=e.compareISO;exports.endOfMonth=e.endOfMonth;exports.parseISO=e.parseISO;exports.startOfMonth=e.startOfMonth;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./calendar-o273O28D.js");exports.UICalendar=e.UICalendar;exports.addDaysISO=e.addDaysISO;exports.addMonthsISO=e.addMonthsISO;exports.compareISO=e.compareISO;exports.endOfMonth=e.endOfMonth;exports.parseISO=e.parseISO;exports.startOfMonth=e.startOfMonth;
@@ -1,4 +1,4 @@
1
- import { U as d, a as e, b as o, c as r, e as t, p as O, s as n } from "./calendar-B3PUKHQm.mjs";
1
+ import { U as d, a as e, b as o, c as r, e as t, p as O, s as n } from "./calendar-DmxiZrR7.mjs";
2
2
  export {
3
3
  d as UICalendar,
4
4
  e as addDaysISO,
package/dist/card.cjs.js CHANGED
@@ -1,11 +1,11 @@
1
1
  "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("./ElementBase-DxbvhLJs.js"),c=`
2
2
  :host {
3
- --ui-card-radius: var(--base-card-radius, var(--ui-radius, 4px));
3
+ --ui-card-radius: var(--base-card-radius, calc(var(--ui-radius, 6px) + 2px));
4
4
  --ui-card-bg: var(--base-card-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
5
5
  --ui-card-color: var(--ui-color-text, var(--ui-text, #202020));
6
- --ui-card-border-color: color-mix(in srgb, var(--ui-color-border, rgba(15, 23, 42, 0.16)) 82%, transparent);
6
+ --ui-card-border-color: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, rgba(15, 23, 42, 0.16)) 82%, transparent));
7
7
  --ui-card-border: var(--base-card-border, 1px solid var(--ui-card-border-color));
8
- --ui-card-shadow: var(--base-card-shadow, var(--shadow-2, none));
8
+ --ui-card-shadow: var(--base-card-shadow, none);
9
9
  --ui-card-padding: 16px;
10
10
  --ui-card-gap: var(--ui-default-gap, 8px);
11
11
  --ui-card-header-gap: 4px;
@@ -159,7 +159,6 @@
159
159
  }
160
160
 
161
161
  :host([interactive]:not([disabled])):hover .card {
162
- transform: translateY(-1px);
163
162
  box-shadow:
164
163
  0 2px 8px rgba(15, 23, 42, 0.08),
165
164
  0 28px 56px rgba(15, 23, 42, 0.14);
@@ -173,7 +172,7 @@
173
172
  :host([interactive]:not([disabled])):focus-visible .card {
174
173
  border-color: color-mix(in srgb, var(--ui-card-accent) 24%, var(--ui-card-border-color));
175
174
  box-shadow:
176
- 0 0 0 3px color-mix(in srgb, var(--ui-card-accent) 20%, transparent),
175
+ 0 0 0 2px color-mix(in srgb, var(--ui-card-accent) 45%, transparent),
177
176
  var(--ui-card-shadow);
178
177
  }
179
178
 
@@ -284,7 +283,7 @@
284
283
  box-shadow: none;
285
284
  }
286
285
  }
287
- `;function l(o){if(!o||!o.trim())return"var(--base-card-radius, var(--ui-radius, 4px))";const i=o.trim().toLowerCase();return i==="full"?"999px":/^-?\d+(\.\d+)?$/.test(i)?`${i}px`:o}const s="data-ui-card-auto-label";class d extends n.ElementBase{constructor(){super(...arguments),this._slotCleanup=[],this._onKeyDownBound=this._onKeyDown.bind(this)}static get observedAttributes(){return["variant","size","radius","tone","elevation","interactive","disabled","tabindex","role"]}connectedCallback(){super.connectedCallback(),this._syncHostStyles(),this.addEventListener("keydown",this._onKeyDownBound),this._syncAccessibilityState()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",this._onKeyDownBound),this._cleanupSlotListeners()}attributeChangedCallback(i,r,e){super.attributeChangedCallback(i,r,e),r!==e&&(i==="radius"&&this._syncHostStyles(),(i==="interactive"||i==="disabled"||i==="tabindex"||i==="role")&&this._syncAccessibilityState())}shouldRenderOnAttributeChange(){return!1}render(){this.setContent(`
286
+ `;function l(o){if(!o||!o.trim())return"var(--base-card-radius, var(--ui-radius, 6px))";const i=o.trim().toLowerCase();return i==="full"?"999px":/^-?\d+(\.\d+)?$/.test(i)?`${i}px`:o}const s="data-ui-card-auto-label";class d extends n.ElementBase{constructor(){super(...arguments),this._slotCleanup=[],this._onKeyDownBound=this._onKeyDown.bind(this)}static get observedAttributes(){return["variant","size","radius","tone","elevation","interactive","disabled","tabindex","role"]}connectedCallback(){super.connectedCallback(),this._syncHostStyles(),this.addEventListener("keydown",this._onKeyDownBound),this._syncAccessibilityState()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",this._onKeyDownBound),this._cleanupSlotListeners()}attributeChangedCallback(i,r,t){super.attributeChangedCallback(i,r,t),r!==t&&(i==="radius"&&this._syncHostStyles(),(i==="interactive"||i==="disabled"||i==="tabindex"||i==="role")&&this._syncAccessibilityState())}shouldRenderOnAttributeChange(){return!1}render(){this.setContent(`
288
287
  <style>${c}</style>
289
288
  <div class="card" part="card" role="group">
290
289
  <div class="section media" part="media" hidden>
@@ -303,4 +302,4 @@
303
302
  <slot name="footer"></slot>
304
303
  </div>
305
304
  </div>
306
- `),this._syncHostStyles(),this._bindSlotListeners(),this._syncSlotState()}_syncHostStyles(){this.style.setProperty("--ui-card-radius",l(this.getAttribute("radius")))}_syncAccessibilityState(){const i=this.hasAttribute("interactive"),r=this.hasAttribute("disabled");if(!i){this._clearAutoLabel(),this.getAttribute("role")==="button"&&this.removeAttribute("role"),this.removeAttribute("aria-disabled"),(this.getAttribute("tabindex")==="0"||this.getAttribute("tabindex")==="-1")&&this.removeAttribute("tabindex");return}this.hasAttribute("role")||this.setAttribute("role","button"),this.setAttribute("aria-disabled",r?"true":"false"),this._syncAutoLabel(),this.hasAttribute("tabindex")?r&&this.getAttribute("tabindex")!=="-1"&&this.setAttribute("tabindex","-1"):this.setAttribute("tabindex",r?"-1":"0")}_shownText(){const i=[],r=t=>{if(t.nodeType===Node.TEXT_NODE){const a=t.textContent||"";a.trim()&&i.push({text:a,parent:t.parentNode});return}if(t instanceof Element&&!(t.hasAttribute("hidden")||t.getAttribute("aria-hidden")==="true")&&!(t.tagName==="STYLE"||t.tagName==="SCRIPT")){if(t instanceof HTMLSlotElement){const a=t.assignedNodes({flatten:!0});(a.length?a:Array.from(t.childNodes)).forEach(r);return}t.childNodes.forEach(r)}};this.root.childNodes.forEach(r);let e="";return i.forEach((t,a)=>{e+=a>0&&i[a-1].parent!==t.parent?` ${t.text}`:t.text}),e.replace(/\s+/g," ").trim().slice(0,500)}_clearAutoLabel(){this.hasAttribute(s)&&(this.removeAttribute("aria-label"),this.removeAttribute(s))}_syncAutoLabel(){if(this.hasAttribute("aria-labelledby")||this.hasAttribute("aria-label")&&!this.hasAttribute(s)||this.getAttribute("role")!=="button"){this._clearAutoLabel();return}const r=this._shownText();if(!r){this._clearAutoLabel();return}this.getAttribute("aria-label")!==r&&this.setAttribute("aria-label",r),this.setAttribute(s,"")}_cleanupSlotListeners(){for(const i of this._slotCleanup)i();this._slotCleanup=[]}_bindSlotListeners(){this._cleanupSlotListeners(),this.root.querySelectorAll("slot").forEach(r=>{const e=()=>this._syncSlotState();r.addEventListener("slotchange",e),this._slotCleanup.push(()=>r.removeEventListener("slotchange",e))})}_syncSlotState(){this._toggleSection("media"),this._toggleSection("inset"),this._toggleSection("header"),this._toggleSection("footer"),this.hasAttribute("interactive")&&this._syncAutoLabel()}_toggleSection(i){const r=this.root.querySelector(`slot[name="${i}"]`),e=this.root.querySelector(`.${i}`);if(!r||!e)return;const t=r.assignedNodes({flatten:!0}).some(a=>a.nodeType===Node.TEXT_NODE?!!a.textContent?.trim():!0);e.hidden=!t}_onKeyDown(i){!this.hasAttribute("interactive")||this.hasAttribute("disabled")||i.defaultPrevented||i.target===this&&(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),this.click())}}typeof customElements<"u"&&!customElements.get("ui-card")&&customElements.define("ui-card",d);exports.UICard=d;
305
+ `),this._syncHostStyles(),this._bindSlotListeners(),this._syncSlotState()}_syncHostStyles(){this.style.setProperty("--ui-card-radius",l(this.getAttribute("radius")))}_syncAccessibilityState(){const i=this.hasAttribute("interactive"),r=this.hasAttribute("disabled");if(!i){this._clearAutoLabel(),this.getAttribute("role")==="button"&&this.removeAttribute("role"),this.removeAttribute("aria-disabled"),(this.getAttribute("tabindex")==="0"||this.getAttribute("tabindex")==="-1")&&this.removeAttribute("tabindex");return}this.hasAttribute("role")||this.setAttribute("role","button"),this.setAttribute("aria-disabled",r?"true":"false"),this._syncAutoLabel(),this.hasAttribute("tabindex")?r&&this.getAttribute("tabindex")!=="-1"&&this.setAttribute("tabindex","-1"):this.setAttribute("tabindex",r?"-1":"0")}_shownText(){const i=[],r=e=>{if(e.nodeType===Node.TEXT_NODE){const a=e.textContent||"";a.trim()&&i.push({text:a,parent:e.parentNode});return}if(e instanceof Element&&!(e.hasAttribute("hidden")||e.getAttribute("aria-hidden")==="true")&&!(e.tagName==="STYLE"||e.tagName==="SCRIPT")){if(e instanceof HTMLSlotElement){const a=e.assignedNodes({flatten:!0});(a.length?a:Array.from(e.childNodes)).forEach(r);return}e.childNodes.forEach(r)}};this.root.childNodes.forEach(r);let t="";return i.forEach((e,a)=>{t+=a>0&&i[a-1].parent!==e.parent?` ${e.text}`:e.text}),t.replace(/\s+/g," ").trim().slice(0,500)}_clearAutoLabel(){this.hasAttribute(s)&&(this.removeAttribute("aria-label"),this.removeAttribute(s))}_syncAutoLabel(){if(this.hasAttribute("aria-labelledby")||this.hasAttribute("aria-label")&&!this.hasAttribute(s)||this.getAttribute("role")!=="button"){this._clearAutoLabel();return}const r=this._shownText();if(!r){this._clearAutoLabel();return}this.getAttribute("aria-label")!==r&&this.setAttribute("aria-label",r),this.setAttribute(s,"")}_cleanupSlotListeners(){for(const i of this._slotCleanup)i();this._slotCleanup=[]}_bindSlotListeners(){this._cleanupSlotListeners(),this.root.querySelectorAll("slot").forEach(r=>{const t=()=>this._syncSlotState();r.addEventListener("slotchange",t),this._slotCleanup.push(()=>r.removeEventListener("slotchange",t))})}_syncSlotState(){this._toggleSection("media"),this._toggleSection("inset"),this._toggleSection("header"),this._toggleSection("footer"),this.hasAttribute("interactive")&&this._syncAutoLabel()}_toggleSection(i){const r=this.root.querySelector(`slot[name="${i}"]`),t=this.root.querySelector(`.${i}`);if(!r||!t)return;const e=r.assignedNodes({flatten:!0}).some(a=>a.nodeType===Node.TEXT_NODE?!!a.textContent?.trim():!0);t.hidden=!e}_onKeyDown(i){!this.hasAttribute("interactive")||this.hasAttribute("disabled")||i.defaultPrevented||i.target===this&&(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),this.click())}}typeof customElements<"u"&&!customElements.get("ui-card")&&customElements.define("ui-card",d);exports.UICard=d;
package/dist/card.esm.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { E as d } from "./ElementBase-BeZT54Hj.mjs";
2
2
  const n = `
3
3
  :host {
4
- --ui-card-radius: var(--base-card-radius, var(--ui-radius, 4px));
4
+ --ui-card-radius: var(--base-card-radius, calc(var(--ui-radius, 6px) + 2px));
5
5
  --ui-card-bg: var(--base-card-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
6
6
  --ui-card-color: var(--ui-color-text, var(--ui-text, #202020));
7
- --ui-card-border-color: color-mix(in srgb, var(--ui-color-border, rgba(15, 23, 42, 0.16)) 82%, transparent);
7
+ --ui-card-border-color: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, rgba(15, 23, 42, 0.16)) 82%, transparent));
8
8
  --ui-card-border: var(--base-card-border, 1px solid var(--ui-card-border-color));
9
- --ui-card-shadow: var(--base-card-shadow, var(--shadow-2, none));
9
+ --ui-card-shadow: var(--base-card-shadow, none);
10
10
  --ui-card-padding: 16px;
11
11
  --ui-card-gap: var(--ui-default-gap, 8px);
12
12
  --ui-card-header-gap: 4px;
@@ -160,7 +160,6 @@ const n = `
160
160
  }
161
161
 
162
162
  :host([interactive]:not([disabled])):hover .card {
163
- transform: translateY(-1px);
164
163
  box-shadow:
165
164
  0 2px 8px rgba(15, 23, 42, 0.08),
166
165
  0 28px 56px rgba(15, 23, 42, 0.14);
@@ -174,7 +173,7 @@ const n = `
174
173
  :host([interactive]:not([disabled])):focus-visible .card {
175
174
  border-color: color-mix(in srgb, var(--ui-card-accent) 24%, var(--ui-card-border-color));
176
175
  box-shadow:
177
- 0 0 0 3px color-mix(in srgb, var(--ui-card-accent) 20%, transparent),
176
+ 0 0 0 2px color-mix(in srgb, var(--ui-card-accent) 45%, transparent),
178
177
  var(--ui-card-shadow);
179
178
  }
180
179
 
@@ -287,7 +286,7 @@ const n = `
287
286
  }
288
287
  `;
289
288
  function c(o) {
290
- if (!o || !o.trim()) return "var(--base-card-radius, var(--ui-radius, 4px))";
289
+ if (!o || !o.trim()) return "var(--base-card-radius, var(--ui-radius, 6px))";
291
290
  const i = o.trim().toLowerCase();
292
291
  return i === "full" ? "999px" : /^-?\d+(\.\d+)?$/.test(i) ? `${i}px` : o;
293
292
  }