@kodffe/ui 0.0.0-stage → 0.10.1

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 (304) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +11 -0
  2. package/dist/accordion/accordion.d.ts +44 -0
  3. package/dist/accordion/accordion.js +84 -0
  4. package/dist/accordion/accordion.js.map +1 -0
  5. package/dist/alert/alert.d.ts +17 -0
  6. package/dist/alert/alert.js +59 -0
  7. package/dist/alert/alert.js.map +1 -0
  8. package/dist/app-shell/app-footer.d.ts +29 -0
  9. package/dist/app-shell/app-footer.js +39 -0
  10. package/dist/app-shell/app-footer.js.map +1 -0
  11. package/dist/app-shell/app-shell-context.d.ts +10 -0
  12. package/dist/app-shell/app-shell-context.js +12 -0
  13. package/dist/app-shell/app-shell-context.js.map +1 -0
  14. package/dist/app-shell/app-shell.d.ts +42 -0
  15. package/dist/app-shell/app-shell.js +191 -0
  16. package/dist/app-shell/app-shell.js.map +1 -0
  17. package/dist/app-shell/floating-actions.d.ts +19 -0
  18. package/dist/app-shell/floating-actions.js +59 -0
  19. package/dist/app-shell/floating-actions.js.map +1 -0
  20. package/dist/app-shell/workspace-switcher.d.ts +25 -0
  21. package/dist/app-shell/workspace-switcher.js +82 -0
  22. package/dist/app-shell/workspace-switcher.js.map +1 -0
  23. package/dist/badge/badge.d.ts +19 -0
  24. package/dist/badge/badge.js +59 -0
  25. package/dist/badge/badge.js.map +1 -0
  26. package/dist/banner/banner.d.ts +22 -0
  27. package/dist/banner/banner.js +80 -0
  28. package/dist/banner/banner.js.map +1 -0
  29. package/dist/breadcrumbs/breadcrumbs.d.ts +18 -0
  30. package/dist/breadcrumbs/breadcrumbs.js +45 -0
  31. package/dist/breadcrumbs/breadcrumbs.js.map +1 -0
  32. package/dist/button/button.d.ts +38 -0
  33. package/dist/button/button.js +83 -0
  34. package/dist/button/button.js.map +1 -0
  35. package/dist/card/card.d.ts +159 -0
  36. package/dist/card/card.js +390 -0
  37. package/dist/card/card.js.map +1 -0
  38. package/dist/card/insight-card.d.ts +19 -0
  39. package/dist/card/insight-card.js +51 -0
  40. package/dist/card/insight-card.js.map +1 -0
  41. package/dist/card/integration-card.d.ts +19 -0
  42. package/dist/card/integration-card.js +70 -0
  43. package/dist/card/integration-card.js.map +1 -0
  44. package/dist/charts/charts.d.ts +75 -0
  45. package/dist/charts/charts.js +453 -0
  46. package/dist/charts/charts.js.map +1 -0
  47. package/dist/choice/choice.d.ts +39 -0
  48. package/dist/choice/choice.js +143 -0
  49. package/dist/choice/choice.js.map +1 -0
  50. package/dist/combobox/combobox.d.ts +46 -0
  51. package/dist/combobox/combobox.js +196 -0
  52. package/dist/combobox/combobox.js.map +1 -0
  53. package/dist/command-palette/command-palette.d.ts +35 -0
  54. package/dist/command-palette/command-palette.js +164 -0
  55. package/dist/command-palette/command-palette.js.map +1 -0
  56. package/dist/confirm-dialog/confirm-dialog.d.ts +37 -0
  57. package/dist/confirm-dialog/confirm-dialog.js +106 -0
  58. package/dist/confirm-dialog/confirm-dialog.js.map +1 -0
  59. package/dist/content/assistant.d.ts +86 -0
  60. package/dist/content/assistant.js +213 -0
  61. package/dist/content/assistant.js.map +1 -0
  62. package/dist/content/content.d.ts +45 -0
  63. package/dist/content/content.js +136 -0
  64. package/dist/content/content.js.map +1 -0
  65. package/dist/data-display/avatar-sizes.d.ts +8 -0
  66. package/dist/data-display/avatar-sizes.js +12 -0
  67. package/dist/data-display/avatar-sizes.js.map +1 -0
  68. package/dist/data-display/avatar.d.ts +21 -0
  69. package/dist/data-display/avatar.js +53 -0
  70. package/dist/data-display/avatar.js.map +1 -0
  71. package/dist/data-display/chip.d.ts +20 -0
  72. package/dist/data-display/chip.js +64 -0
  73. package/dist/data-display/chip.js.map +1 -0
  74. package/dist/data-display/code-block.d.ts +14 -0
  75. package/dist/data-display/code-block.js +50 -0
  76. package/dist/data-display/code-block.js.map +1 -0
  77. package/dist/data-display/data-display.d.ts +73 -0
  78. package/dist/data-display/data-display.js +227 -0
  79. package/dist/data-display/data-display.js.map +1 -0
  80. package/dist/data-display/insights.d.ts +120 -0
  81. package/dist/data-display/insights.js +220 -0
  82. package/dist/data-display/insights.js.map +1 -0
  83. package/dist/data-table/cells.d.ts +86 -0
  84. package/dist/data-table/cells.js +163 -0
  85. package/dist/data-table/cells.js.map +1 -0
  86. package/dist/data-table/data-table.d.ts +112 -0
  87. package/dist/data-table/data-table.js +558 -0
  88. package/dist/data-table/data-table.js.map +1 -0
  89. package/dist/date-picker/date-picker.d.ts +61 -0
  90. package/dist/date-picker/date-picker.js +309 -0
  91. package/dist/date-picker/date-picker.js.map +1 -0
  92. package/dist/drawer/drawer.d.ts +32 -0
  93. package/dist/drawer/drawer.js +72 -0
  94. package/dist/drawer/drawer.js.map +1 -0
  95. package/dist/empty-state/empty-state.d.ts +25 -0
  96. package/dist/empty-state/empty-state.js +78 -0
  97. package/dist/empty-state/empty-state.js.map +1 -0
  98. package/dist/error-state/error-state.d.ts +19 -0
  99. package/dist/error-state/error-state.js +56 -0
  100. package/dist/error-state/error-state.js.map +1 -0
  101. package/dist/event-calendar/calendar-logic.test.d.ts +1 -0
  102. package/dist/event-calendar/dates.d.ts +35 -0
  103. package/dist/event-calendar/dates.js +55 -0
  104. package/dist/event-calendar/dates.js.map +1 -0
  105. package/dist/event-calendar/event-calendar.d.ts +125 -0
  106. package/dist/event-calendar/event-calendar.js +795 -0
  107. package/dist/event-calendar/event-calendar.js.map +1 -0
  108. package/dist/event-calendar/event-details.d.ts +50 -0
  109. package/dist/event-calendar/event-details.js +124 -0
  110. package/dist/event-calendar/event-details.js.map +1 -0
  111. package/dist/event-calendar/layout.d.ts +48 -0
  112. package/dist/event-calendar/layout.js +55 -0
  113. package/dist/event-calendar/layout.js.map +1 -0
  114. package/dist/file-upload/file-upload.d.ts +70 -0
  115. package/dist/file-upload/file-upload.js +307 -0
  116. package/dist/file-upload/file-upload.js.map +1 -0
  117. package/dist/filters/filters.d.ts +48 -0
  118. package/dist/filters/filters.js +103 -0
  119. package/dist/filters/filters.js.map +1 -0
  120. package/dist/form-field/form-field.d.ts +39 -0
  121. package/dist/form-field/form-field.js +88 -0
  122. package/dist/form-field/form-field.js.map +1 -0
  123. package/dist/hover-card/hover-card.d.ts +15 -0
  124. package/dist/hover-card/hover-card.js +27 -0
  125. package/dist/hover-card/hover-card.js.map +1 -0
  126. package/dist/hover-card/person-hover-card.d.ts +26 -0
  127. package/dist/hover-card/person-hover-card.js +85 -0
  128. package/dist/hover-card/person-hover-card.js.map +1 -0
  129. package/dist/icon/icon-tile.d.ts +20 -0
  130. package/dist/icon/icon-tile.js +55 -0
  131. package/dist/icon/icon-tile.js.map +1 -0
  132. package/dist/icon/icon.d.ts +14 -0
  133. package/dist/icon/icon.js +28 -0
  134. package/dist/icon/icon.js.map +1 -0
  135. package/dist/icon/icons.generated.d.ts +358 -0
  136. package/dist/icon/icons.generated.js +362 -0
  137. package/dist/icon/icons.generated.js.map +1 -0
  138. package/dist/index.d.ts +90 -0
  139. package/dist/index.js +88 -0
  140. package/dist/input/extra-inputs.d.ts +122 -0
  141. package/dist/input/extra-inputs.js +351 -0
  142. package/dist/input/extra-inputs.js.map +1 -0
  143. package/dist/input/field-styles.d.ts +5 -0
  144. package/dist/input/field-styles.js +14 -0
  145. package/dist/input/field-styles.js.map +1 -0
  146. package/dist/input/input.d.ts +50 -0
  147. package/dist/input/input.js +107 -0
  148. package/dist/input/input.js.map +1 -0
  149. package/dist/layout/layout.d.ts +41 -0
  150. package/dist/layout/layout.js +90 -0
  151. package/dist/layout/layout.js.map +1 -0
  152. package/dist/lib/control-styles.d.ts +9 -0
  153. package/dist/lib/control-styles.js +16 -0
  154. package/dist/lib/control-styles.js.map +1 -0
  155. package/dist/lib/cx.d.ts +2 -0
  156. package/dist/lib/cx.js +8 -0
  157. package/dist/lib/cx.js.map +1 -0
  158. package/dist/lib/glyphs.d.ts +13 -0
  159. package/dist/lib/glyphs.js +67 -0
  160. package/dist/lib/glyphs.js.map +1 -0
  161. package/dist/lib/segmented-styles.d.ts +8 -0
  162. package/dist/lib/segmented-styles.js +12 -0
  163. package/dist/lib/segmented-styles.js.map +1 -0
  164. package/dist/lib/select-on-arrow.d.ts +7 -0
  165. package/dist/lib/select-on-arrow.js +21 -0
  166. package/dist/lib/select-on-arrow.js.map +1 -0
  167. package/dist/lib/skip-link.d.ts +5 -0
  168. package/dist/lib/skip-link.js +13 -0
  169. package/dist/lib/skip-link.js.map +1 -0
  170. package/dist/lib/use-media-query.d.ts +4 -0
  171. package/dist/lib/use-media-query.js +15 -0
  172. package/dist/lib/use-media-query.js.map +1 -0
  173. package/dist/lists/lists.d.ts +76 -0
  174. package/dist/lists/lists.js +133 -0
  175. package/dist/lists/lists.js.map +1 -0
  176. package/dist/locale-switch/locale-switch.d.ts +29 -0
  177. package/dist/locale-switch/locale-switch.js +62 -0
  178. package/dist/locale-switch/locale-switch.js.map +1 -0
  179. package/dist/logo/logo.d.ts +31 -0
  180. package/dist/logo/logo.js +157 -0
  181. package/dist/logo/logo.js.map +1 -0
  182. package/dist/logo/product-logo.d.ts +19 -0
  183. package/dist/logo/product-logo.js +46 -0
  184. package/dist/logo/product-logo.js.map +1 -0
  185. package/dist/marketing/marketing.d.ts +176 -0
  186. package/dist/marketing/marketing.js +451 -0
  187. package/dist/marketing/marketing.js.map +1 -0
  188. package/dist/marketing/newsletter-form.d.ts +21 -0
  189. package/dist/marketing/newsletter-form.js +100 -0
  190. package/dist/marketing/newsletter-form.js.map +1 -0
  191. package/dist/mascot/mascot.d.ts +28 -0
  192. package/dist/mascot/mascot.js +28 -0
  193. package/dist/mascot/mascot.js.map +1 -0
  194. package/dist/mascot/mascots.generated.d.ts +284 -0
  195. package/dist/mascot/mascots.generated.js +287 -0
  196. package/dist/mascot/mascots.generated.js.map +1 -0
  197. package/dist/master-detail/master-detail.d.ts +30 -0
  198. package/dist/master-detail/master-detail.js +71 -0
  199. package/dist/master-detail/master-detail.js.map +1 -0
  200. package/dist/menu/account-menu.d.ts +44 -0
  201. package/dist/menu/account-menu.js +78 -0
  202. package/dist/menu/account-menu.js.map +1 -0
  203. package/dist/menu/context-menu.d.ts +31 -0
  204. package/dist/menu/context-menu.js +111 -0
  205. package/dist/menu/context-menu.js.map +1 -0
  206. package/dist/menu/dropdown-menu.d.ts +49 -0
  207. package/dist/menu/dropdown-menu.js +152 -0
  208. package/dist/menu/dropdown-menu.js.map +1 -0
  209. package/dist/menu/menu-styles.d.ts +8 -0
  210. package/dist/menu/menu-styles.js +6 -0
  211. package/dist/menu/menu-styles.js.map +1 -0
  212. package/dist/menu/menubar.d.ts +31 -0
  213. package/dist/menu/menubar.js +125 -0
  214. package/dist/menu/menubar.js.map +1 -0
  215. package/dist/modal/modal.d.ts +34 -0
  216. package/dist/modal/modal.js +58 -0
  217. package/dist/modal/modal.js.map +1 -0
  218. package/dist/notification-center/notification-center.d.ts +51 -0
  219. package/dist/notification-center/notification-center.js +244 -0
  220. package/dist/notification-center/notification-center.js.map +1 -0
  221. package/dist/otp-input/otp-input.d.ts +23 -0
  222. package/dist/otp-input/otp-input.js +61 -0
  223. package/dist/otp-input/otp-input.js.map +1 -0
  224. package/dist/overlay/overlay.d.ts +53 -0
  225. package/dist/overlay/overlay.js +103 -0
  226. package/dist/overlay/overlay.js.map +1 -0
  227. package/dist/page-header/page-header.d.ts +55 -0
  228. package/dist/page-header/page-header.js +114 -0
  229. package/dist/page-header/page-header.js.map +1 -0
  230. package/dist/page-header/record-headers.d.ts +51 -0
  231. package/dist/page-header/record-headers.js +134 -0
  232. package/dist/page-header/record-headers.js.map +1 -0
  233. package/dist/page-header/section-header.d.ts +21 -0
  234. package/dist/page-header/section-header.js +44 -0
  235. package/dist/page-header/section-header.js.map +1 -0
  236. package/dist/page-navigation/page-navigation.d.ts +59 -0
  237. package/dist/page-navigation/page-navigation.js +136 -0
  238. package/dist/page-navigation/page-navigation.js.map +1 -0
  239. package/dist/pagination/pagination.d.ts +28 -0
  240. package/dist/pagination/pagination.js +102 -0
  241. package/dist/pagination/pagination.js.map +1 -0
  242. package/dist/phone-input/phone-input.d.ts +34 -0
  243. package/dist/phone-input/phone-input.js +171 -0
  244. package/dist/phone-input/phone-input.js.map +1 -0
  245. package/dist/popover/popover.d.ts +23 -0
  246. package/dist/popover/popover.js +40 -0
  247. package/dist/popover/popover.js.map +1 -0
  248. package/dist/progress/progress.d.ts +21 -0
  249. package/dist/progress/progress.js +49 -0
  250. package/dist/progress/progress.js.map +1 -0
  251. package/dist/segmented-control/segmented-control.d.ts +32 -0
  252. package/dist/segmented-control/segmented-control.js +29 -0
  253. package/dist/segmented-control/segmented-control.js.map +1 -0
  254. package/dist/select/select.d.ts +48 -0
  255. package/dist/select/select.js +136 -0
  256. package/dist/select/select.js.map +1 -0
  257. package/dist/settings/permission-matrix.d.ts +29 -0
  258. package/dist/settings/permission-matrix.js +101 -0
  259. package/dist/settings/permission-matrix.js.map +1 -0
  260. package/dist/settings/settings-row.d.ts +32 -0
  261. package/dist/settings/settings-row.js +63 -0
  262. package/dist/settings/settings-row.js.map +1 -0
  263. package/dist/side-nav/side-nav.d.ts +36 -0
  264. package/dist/side-nav/side-nav.js +123 -0
  265. package/dist/side-nav/side-nav.js.map +1 -0
  266. package/dist/site-header/site-header.d.ts +32 -0
  267. package/dist/site-header/site-header.js +99 -0
  268. package/dist/site-header/site-header.js.map +1 -0
  269. package/dist/skeleton/skeleton.d.ts +16 -0
  270. package/dist/skeleton/skeleton.js +19 -0
  271. package/dist/skeleton/skeleton.js.map +1 -0
  272. package/dist/slider/slider.d.ts +15 -0
  273. package/dist/slider/slider.js +48 -0
  274. package/dist/slider/slider.js.map +1 -0
  275. package/dist/spinner/spinner.d.ts +15 -0
  276. package/dist/spinner/spinner.js +42 -0
  277. package/dist/spinner/spinner.js.map +1 -0
  278. package/dist/stepper/step-dots.d.ts +16 -0
  279. package/dist/stepper/step-dots.js +26 -0
  280. package/dist/stepper/step-dots.js.map +1 -0
  281. package/dist/stepper/stepper.d.ts +26 -0
  282. package/dist/stepper/stepper.js +113 -0
  283. package/dist/stepper/stepper.js.map +1 -0
  284. package/dist/tabs/tabs.d.ts +31 -0
  285. package/dist/tabs/tabs.js +66 -0
  286. package/dist/tabs/tabs.js.map +1 -0
  287. package/dist/templates/app-templates.d.ts +126 -0
  288. package/dist/templates/app-templates.js +153 -0
  289. package/dist/templates/app-templates.js.map +1 -0
  290. package/dist/templates/site-templates.d.ts +49 -0
  291. package/dist/templates/site-templates.js +110 -0
  292. package/dist/templates/site-templates.js.map +1 -0
  293. package/dist/toast/toast-store.d.ts +54 -0
  294. package/dist/toast/toast-store.js +49 -0
  295. package/dist/toast/toast-store.js.map +1 -0
  296. package/dist/toast/toaster.d.ts +15 -0
  297. package/dist/toast/toaster.js +124 -0
  298. package/dist/toast/toaster.js.map +1 -0
  299. package/dist/tooltip/tooltip.d.ts +29 -0
  300. package/dist/tooltip/tooltip.js +54 -0
  301. package/dist/tooltip/tooltip.js.map +1 -0
  302. package/package.json +88 -3
  303. package/styles.css +521 -0
  304. package/README.md +0 -3
@@ -0,0 +1,795 @@
1
+ "use client";
2
+ import { cx as e } from "../lib/cx.js";
3
+ import { Icon as t } from "../icon/icon.js";
4
+ import { Button as n } from "../button/button.js";
5
+ import { useMediaQuery as r } from "../lib/use-media-query.js";
6
+ import { PopoverContent as i } from "../popover/popover.js";
7
+ import { Glyph as a } from "../lib/glyphs.js";
8
+ import { DropdownMenu as o, DropdownMenuContent as s, DropdownMenuItem as c, DropdownMenuLabel as l, DropdownMenuTrigger as u } from "../menu/dropdown-menu.js";
9
+ import { SegmentedControl as d } from "../segmented-control/segmented-control.js";
10
+ import { addDays as f, dayLabel as p, minutesOf as m, rangeLabel as h, shiftAnchor as g, timeOf as _, toDate as v, visibleDays as y, weekday as ee, weekdayName as b } from "./dates.js";
11
+ import { isAllDay as x, packRow as S, placeDay as te, sortItems as ne, touches as C } from "./layout.js";
12
+ import { jsx as w, jsxs as T } from "react/jsx-runtime";
13
+ import { useEffect as E, useMemo as re, useRef as ie, useState as D } from "react";
14
+ import * as ae from "@radix-ui/react-popover";
15
+ //#region src/event-calendar/event-calendar.tsx
16
+ var O = {
17
+ today: "Today",
18
+ previous: "Previous",
19
+ next: "Next",
20
+ views: {
21
+ day: "Day",
22
+ week: "Week",
23
+ month: "Month"
24
+ },
25
+ viewsLabel: "Calendar view",
26
+ allDay: "All day",
27
+ pending: "Pending",
28
+ busy: "Busy",
29
+ more: (e) => `+${e} more`,
30
+ togglePanel: "Side panel",
31
+ grid: "Days",
32
+ help: "Double-click a day or drag across days to add something. Shortcuts: T today, D / W / M views, ← → move.",
33
+ helpTouch: "Double-tap a day to add something.",
34
+ empty: "Nothing on these dates",
35
+ todaySuffix: "today"
36
+ }, k = 22, A = 44, j = 30;
37
+ function M(e) {
38
+ return e.busy ? "var(--kf-fg-muted)" : e.color ? `var(--kf-category-${e.color})` : "var(--kf-primary)";
39
+ }
40
+ function N(e, t = 14) {
41
+ let n = M(e), r = e.status === "pending";
42
+ return {
43
+ background: `color-mix(in srgb, ${n} ${r ? Math.round(t / 2) : t}%, var(--kf-surface))`,
44
+ borderInlineStart: `3px ${r ? "dashed" : "solid"} ${n}`
45
+ };
46
+ }
47
+ var oe = (e) => !x(e) && e.startTime ? `${e.startTime}${e.endTime ? ` – ${e.endTime}` : ""}` : "";
48
+ function se({ item: e, labels: t }) {
49
+ let n = [e.status === "pending" && t.pending, e.busy && t.busy].filter(Boolean);
50
+ return n.length ? /* @__PURE__ */ T("span", {
51
+ className: "sr-only",
52
+ children: [", ", n.join(", ")]
53
+ }) : null;
54
+ }
55
+ var ce = (e, t) => !!t && e >= t.start && e <= t.end, P = (e, t) => e <= t ? {
56
+ start: e,
57
+ end: t
58
+ } : {
59
+ start: t,
60
+ end: e
61
+ }, F = (e, t) => new DOMRect(e, t, 0, 0);
62
+ function le(e, t, n) {
63
+ let [r, i] = D(t);
64
+ return [e ?? r, (t) => {
65
+ e === void 0 && i(t), n?.(t);
66
+ }];
67
+ }
68
+ function ue({ glyph: t, label: n, pressed: r, onClick: i }) {
69
+ return /* @__PURE__ */ w("button", {
70
+ type: "button",
71
+ "aria-label": n,
72
+ title: n,
73
+ "aria-pressed": r,
74
+ onClick: i,
75
+ className: e("inline-grid size-9 shrink-0 cursor-pointer place-items-center rounded-full border-0 text-fg transition-colors duration-150 pointer-coarse:size-11", "focus-visible:outline-3 focus-visible:outline-offset-2 focus-visible:outline-focus", r ? "bg-surface-muted" : "bg-transparent hover:bg-surface-muted"),
76
+ children: /* @__PURE__ */ w(a, {
77
+ name: t,
78
+ size: 18
79
+ })
80
+ });
81
+ }
82
+ function de({ item: n, labels: r, className: i, style: a, onOpen: o }) {
83
+ let s = x(n) ? void 0 : n.startTime;
84
+ return /* @__PURE__ */ T("button", {
85
+ type: "button",
86
+ title: [
87
+ n.title,
88
+ oe(n),
89
+ n.status === "pending" && r.pending
90
+ ].filter(Boolean).join(" · "),
91
+ onPointerDown: (e) => e.stopPropagation(),
92
+ onDoubleClick: (e) => e.stopPropagation(),
93
+ onClick: (e) => o(n, e.currentTarget),
94
+ className: e("flex h-[19px] min-w-0 cursor-pointer items-center gap-1 overflow-hidden rounded-xs border-0 px-1.5 text-left font-sans text-[11px] leading-none font-medium text-fg", "focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus", n.status === "pending" && "italic", i),
95
+ style: {
96
+ ...N(n),
97
+ ...a
98
+ },
99
+ children: [
100
+ (n.busy || n.icon) && /* @__PURE__ */ w(t, {
101
+ name: n.busy ? "lock" : n.icon,
102
+ size: 12,
103
+ className: "shrink-0",
104
+ style: { color: M(n) }
105
+ }),
106
+ s && /* @__PURE__ */ T("span", {
107
+ className: "shrink-0 tabular-nums",
108
+ children: [s, " "]
109
+ }),
110
+ /* @__PURE__ */ w("span", {
111
+ className: "truncate",
112
+ children: n.title
113
+ }),
114
+ /* @__PURE__ */ w(se, {
115
+ item: n,
116
+ labels: r
117
+ })
118
+ ]
119
+ });
120
+ }
121
+ function fe({ weeks: t, items: n, lanes: r, top: i, minHeight: a, showNumbers: o, month: s, today: c, workDays: l, highlight: u, focusDay: d, locale: f, labels: m, onCellPointerDown: h, onCellPointerEnter: g, onCellDoubleClick: _, onGridKeyDown: y, onFocusDay: b, onOpenItem: te, onOpenDay: ne, ariaLabel: C }) {
122
+ let E = re(() => o ? n : n.filter(x), [n, o]);
123
+ return /* @__PURE__ */ w("div", {
124
+ role: "grid",
125
+ "aria-label": C,
126
+ onKeyDown: y,
127
+ className: "grid",
128
+ children: t.map((t) => {
129
+ let n = S(E, t), y = Math.max(0, ...n.map((e) => e.lane + 1)), x = Math.min(y, r), C = t.map((e, t) => n.filter((e) => e.lane >= r && e.from <= t && e.to >= t).length), re = Math.max(a, i + x * k + (C.some(Boolean) ? k : 0) + 4);
130
+ return /* @__PURE__ */ w("div", {
131
+ role: "row",
132
+ className: "grid border-b border-border last:border-b-0",
133
+ style: { gridTemplateColumns: `repeat(${t.length}, minmax(0, 1fr))` },
134
+ children: t.map((t, a) => {
135
+ let y = t === c, x = s !== void 0 && t.slice(0, 7) !== s, S = ce(t, u), E = !l.includes(ee(t));
136
+ return /* @__PURE__ */ T("div", {
137
+ role: "gridcell",
138
+ "data-day": t,
139
+ tabIndex: t === d ? 0 : -1,
140
+ "aria-selected": S,
141
+ "aria-current": y ? "date" : void 0,
142
+ onFocus: () => b(t),
143
+ onPointerDown: (e) => h(t, e),
144
+ onPointerEnter: () => g(t),
145
+ onDoubleClick: (e) => _(t, e),
146
+ className: e("relative border-r border-border last:border-r-0 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus", S ? "bg-primary/12" : E ? "bg-surface-muted/50" : "bg-transparent"),
147
+ style: { height: re },
148
+ children: [
149
+ o ? /* @__PURE__ */ T("span", {
150
+ className: e("absolute top-1 right-1 grid h-6 min-w-6 place-items-center rounded-full px-1 font-sans text-xs font-semibold tabular-nums", y ? "bg-primary text-on-primary" : x ? "text-fg-muted" : "text-fg"),
151
+ children: [v(t).getUTCDate(), /* @__PURE__ */ T("span", {
152
+ className: "sr-only",
153
+ children: [
154
+ " ",
155
+ "– ",
156
+ p(t, f),
157
+ y && `, ${m.todaySuffix}`
158
+ ]
159
+ })]
160
+ }) : /* @__PURE__ */ T("span", {
161
+ className: "sr-only",
162
+ children: [p(t, f), y && `, ${m.todaySuffix}`]
163
+ }),
164
+ n.filter((e) => e.from === a && e.lane < r).map((e) => /* @__PURE__ */ w(pe, {
165
+ bar: e,
166
+ top: i,
167
+ labels: m,
168
+ onOpen: te
169
+ }, e.item.id)),
170
+ C[a] > 0 && /* @__PURE__ */ w("button", {
171
+ type: "button",
172
+ "aria-label": `${m.more(C[a])}, ${p(t, f)}`,
173
+ onPointerDown: (e) => e.stopPropagation(),
174
+ onDoubleClick: (e) => e.stopPropagation(),
175
+ onClick: (e) => ne(t, e.currentTarget),
176
+ className: "absolute right-0.5 left-0.5 z-[1] h-[19px] cursor-pointer rounded-xs border-0 bg-transparent px-1.5 text-left font-sans text-[11px] font-semibold text-link hover:bg-surface-muted focus-visible:outline-2 focus-visible:outline-focus",
177
+ style: { top: i + r * k },
178
+ children: m.more(C[a])
179
+ })
180
+ ]
181
+ }, t);
182
+ })
183
+ }, t[0]);
184
+ })
185
+ });
186
+ }
187
+ function pe({ bar: t, top: n, labels: r, onOpen: i }) {
188
+ let a = t.to - t.from + 1;
189
+ return /* @__PURE__ */ w(de, {
190
+ item: t.item,
191
+ labels: r,
192
+ onOpen: i,
193
+ className: e("absolute z-[1]", t.continuesBefore ? "rounded-l-none" : "", t.continuesAfter ? "rounded-r-none" : ""),
194
+ style: {
195
+ top: n + t.lane * k,
196
+ left: t.continuesBefore ? 0 : 2,
197
+ width: `calc(${a * 100}% - ${(t.continuesBefore ? 0 : 2) + (t.continuesAfter ? 0 : 2)}px)`
198
+ }
199
+ });
200
+ }
201
+ function I(e) {
202
+ let t = Math.min(e.a, e.b) * j, n = (Math.max(e.a, e.b) + 1) * j;
203
+ return {
204
+ start: e.day,
205
+ end: e.day,
206
+ startTime: _(t),
207
+ endTime: _(n)
208
+ };
209
+ }
210
+ function me({ days: n, items: r, today: i, now: a, workDays: o, highlight: s, startHour: c, labels: l, onOpenItem: u, onSelect: d }) {
211
+ let f = ie(null), [p, h] = D(null), g = n.join();
212
+ E(() => {
213
+ f.current && (f.current.scrollTop = c * A - 8);
214
+ }, [n.length, c]);
215
+ let v = (e) => {
216
+ let t = e.currentTarget.getBoundingClientRect();
217
+ return Math.min(47, Math.max(0, Math.floor((e.clientY - t.top) / (A / 2))));
218
+ }, y = a ? m(a) : null, b = p ? I(p) : s?.startTime ? s : null;
219
+ return /* @__PURE__ */ w("div", {
220
+ ref: f,
221
+ className: "max-h-[560px] overflow-y-auto [scrollbar-gutter:stable]",
222
+ children: /* @__PURE__ */ T("div", {
223
+ className: "relative flex",
224
+ style: { height: 1056 },
225
+ children: [/* @__PURE__ */ T("div", {
226
+ "aria-hidden": "true",
227
+ className: "relative w-14 shrink-0",
228
+ children: [Array.from({ length: 23 }, (e, t) => /* @__PURE__ */ w("span", {
229
+ className: "absolute right-2 -translate-y-1/2 font-sans text-[11px] text-fg-muted tabular-nums",
230
+ style: { top: (t + 1) * A },
231
+ children: _((t + 1) * 60)
232
+ }, t)), y !== null && n.includes(i) && /* @__PURE__ */ w("span", {
233
+ className: "absolute right-1 z-[2] -translate-y-1/2 rounded-xs bg-danger-solid px-1 font-sans text-[10px] font-semibold text-on-danger-solid tabular-nums",
234
+ style: { top: y / 60 * A },
235
+ children: a
236
+ })]
237
+ }), /* @__PURE__ */ w("div", {
238
+ className: "grid flex-1",
239
+ style: { gridTemplateColumns: `repeat(${n.length}, minmax(0, 1fr))` },
240
+ children: n.map((n) => {
241
+ let a = te(r, n), s = !o.includes(ee(n)), c = b && b.start === n ? b : null;
242
+ return /* @__PURE__ */ T("div", {
243
+ "data-testid": `hours-${n}`,
244
+ className: e("relative border-l border-border select-none", n === i ? "bg-primary/5" : s ? "bg-surface-muted/50" : "bg-transparent"),
245
+ style: { backgroundImage: `repeating-linear-gradient(to bottom, transparent 0 43px, var(--kf-border) 43px ${A}px)` },
246
+ onPointerDown: (e) => {
247
+ if (e.button !== 0 || e.pointerType === "touch") return;
248
+ e.currentTarget.setPointerCapture(e.pointerId);
249
+ let t = v(e);
250
+ h({
251
+ day: n,
252
+ a: t,
253
+ b: t
254
+ });
255
+ },
256
+ onPointerMove: (e) => {
257
+ p?.day === n && h({
258
+ ...p,
259
+ b: v(e)
260
+ });
261
+ },
262
+ onPointerUp: (e) => {
263
+ if (!p) return;
264
+ let t = p.a !== p.b;
265
+ h(null), t && d(I(p), F(e.clientX, e.clientY));
266
+ },
267
+ onPointerCancel: () => h(null),
268
+ onDoubleClick: (e) => {
269
+ let t = v(e) - v(e) % 2;
270
+ h(null), d(I({
271
+ day: n,
272
+ a: t,
273
+ b: t + 1
274
+ }), F(e.clientX, e.clientY));
275
+ },
276
+ children: [
277
+ c && /* @__PURE__ */ T("div", {
278
+ "aria-hidden": "true",
279
+ className: "absolute inset-x-0.5 z-[1] rounded-sm bg-primary/20 px-1.5 py-0.5 font-sans text-[11px] font-semibold text-fg ring-1 ring-primary tabular-nums",
280
+ style: {
281
+ top: m(c.startTime) / 60 * A,
282
+ height: (m(c.endTime) - m(c.startTime)) / 60 * A
283
+ },
284
+ children: [
285
+ c.startTime,
286
+ " – ",
287
+ c.endTime
288
+ ]
289
+ }),
290
+ a.map((n) => {
291
+ let r = Math.max((n.to - n.from) / 60 * A - 2, 18), i = _(n.from), a = _(n.to);
292
+ return /* @__PURE__ */ T("button", {
293
+ type: "button",
294
+ onPointerDown: (e) => e.stopPropagation(),
295
+ onDoubleClick: (e) => e.stopPropagation(),
296
+ onClick: (e) => u(n.item, e.currentTarget),
297
+ className: e("absolute z-[1] flex cursor-pointer flex-col items-start overflow-hidden rounded-md border-0 px-1.5 py-0.5 text-left font-sans text-[11px] leading-tight text-fg shadow-sm", "focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus", n.item.status === "pending" && "italic"),
298
+ style: {
299
+ ...N(n.item, 22),
300
+ top: n.from / 60 * A + 1,
301
+ height: r,
302
+ left: `calc(${n.column / n.columns * 100}% + 2px)`,
303
+ width: `calc(${100 / n.columns}% - 4px)`
304
+ },
305
+ children: [
306
+ /* @__PURE__ */ T("span", {
307
+ className: r >= 34 ? "max-w-full truncate tabular-nums text-fg-muted" : "sr-only",
308
+ children: [
309
+ i,
310
+ " – ",
311
+ a,
312
+ " "
313
+ ]
314
+ }),
315
+ /* @__PURE__ */ T("span", {
316
+ className: "flex max-w-full items-center gap-1 font-semibold",
317
+ children: [
318
+ n.item.busy && /* @__PURE__ */ w(t, {
319
+ name: "lock",
320
+ size: 11,
321
+ className: "shrink-0"
322
+ }),
323
+ /* @__PURE__ */ w("span", {
324
+ className: "truncate",
325
+ children: n.item.title
326
+ }),
327
+ /* @__PURE__ */ w(se, {
328
+ item: n.item,
329
+ labels: l
330
+ })
331
+ ]
332
+ }),
333
+ r >= 52 && n.item.location && /* @__PURE__ */ T("span", {
334
+ className: "truncate text-fg-muted",
335
+ children: [" ", n.item.location]
336
+ })
337
+ ]
338
+ }, n.item.id);
339
+ }),
340
+ y !== null && n === i && /* @__PURE__ */ w("div", {
341
+ "aria-hidden": "true",
342
+ className: "absolute inset-x-0 z-[2] h-px bg-danger-solid",
343
+ style: { top: y / 60 * A },
344
+ children: /* @__PURE__ */ w("span", { className: "absolute -top-[3px] -left-[4px] size-[7px] rounded-full bg-danger-solid" })
345
+ })
346
+ ]
347
+ }, n);
348
+ })
349
+ })]
350
+ })
351
+ }, g);
352
+ }
353
+ function he({ days: n, today: r, items: i, locale: a = "en-US", labels: o, onOpenItem: s, onSelectRange: c, className: l }) {
354
+ let u = {
355
+ ...O,
356
+ ...o
357
+ }, d = n.map((e) => ({
358
+ day: e,
359
+ list: ne(i.filter((t) => C(t, e, e)))
360
+ })).filter((e) => e.list.length > 0 || e.day === r);
361
+ return d.length === 0 ? /* @__PURE__ */ w("p", {
362
+ className: e("m-0 p-4 font-sans text-sm text-fg-muted", l),
363
+ children: u.empty
364
+ }) : /* @__PURE__ */ w("ul", {
365
+ className: e("m-0 grid list-none gap-0 p-0 font-sans", l),
366
+ children: d.map(({ day: n, list: i }) => /* @__PURE__ */ T("li", {
367
+ className: "flex gap-3 border-b border-border px-3 py-2.5 last:border-b-0",
368
+ onDoubleClick: (e) => c?.({
369
+ start: n,
370
+ end: n
371
+ }, F(e.clientX, e.clientY)),
372
+ children: [/* @__PURE__ */ T("div", {
373
+ className: "grid w-10 shrink-0 content-start justify-items-center gap-0.5 pt-0.5",
374
+ children: [/* @__PURE__ */ w("span", {
375
+ className: "text-[11px] font-semibold text-fg-muted uppercase",
376
+ children: b(n, a)
377
+ }), /* @__PURE__ */ w("span", {
378
+ className: e("grid size-7 place-items-center rounded-full text-sm font-bold tabular-nums", n === r ? "bg-primary text-on-primary" : "text-fg"),
379
+ children: v(n).getUTCDate()
380
+ })]
381
+ }), /* @__PURE__ */ w("div", {
382
+ className: "grid min-w-0 flex-1 content-start gap-1",
383
+ children: i.length === 0 ? /* @__PURE__ */ w("span", {
384
+ className: "py-1 text-sm text-fg-muted",
385
+ children: u.empty
386
+ }) : i.map((n) => /* @__PURE__ */ T("button", {
387
+ type: "button",
388
+ onClick: (e) => s?.(n, e.currentTarget),
389
+ className: e("flex min-h-9 w-full cursor-pointer items-center gap-2 rounded-sm border-0 px-2 py-1 text-left text-sm text-fg pointer-coarse:min-h-11", "focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus", n.status === "pending" && "italic"),
390
+ style: N(n),
391
+ children: [
392
+ (n.busy || n.icon) && /* @__PURE__ */ w(t, {
393
+ name: n.busy ? "lock" : n.icon,
394
+ size: 14,
395
+ className: "shrink-0",
396
+ style: { color: M(n) }
397
+ }),
398
+ !x(n) && n.startTime && /* @__PURE__ */ T("span", {
399
+ className: "shrink-0 text-xs tabular-nums",
400
+ children: [n.startTime, " "]
401
+ }),
402
+ /* @__PURE__ */ w("span", {
403
+ className: "min-w-0 flex-1 truncate font-medium",
404
+ children: n.title
405
+ }),
406
+ n.status === "pending" && /* @__PURE__ */ T("span", {
407
+ className: "shrink-0 text-xs text-fg-muted",
408
+ children: [", ", u.pending]
409
+ }),
410
+ n.busy && /* @__PURE__ */ T("span", {
411
+ className: "sr-only",
412
+ children: [", ", u.busy]
413
+ })
414
+ ]
415
+ }, n.id))
416
+ })]
417
+ }, n))
418
+ });
419
+ }
420
+ var ge = (e) => e instanceof HTMLElement && (e.isContentEditable || [
421
+ "INPUT",
422
+ "TEXTAREA",
423
+ "SELECT"
424
+ ].includes(e.tagName) || !!e.closest("[role=\"radiogroup\"],[role=\"menu\"]"));
425
+ function _e({ items: t, today: a, now: m, view: ee, defaultView: x = "week", onViewChange: S, anchor: te, onAnchorChange: re, workDays: k = [
426
+ 1,
427
+ 2,
428
+ 3,
429
+ 4,
430
+ 5
431
+ ], weekStartsOn: A = 1, locale: j = "en-US", labels: M, selection: N = null, loading: oe = !1, onSelectRange: se, quickActions: ce, onOpenItem: pe, renderItemPopover: I, toolbarEnd: _e, aside: L, asideOpen: ve, defaultAsideOpen: ye = !0, onAsideOpenChange: be, startHour: xe = 8, monthLanes: Se = 3, shortcuts: Ce = !0, showHelp: we = !0, headingLevel: Te = 2, className: Ee }) {
432
+ let R = {
433
+ ...O,
434
+ ...M,
435
+ views: {
436
+ ...O.views,
437
+ ...M?.views
438
+ }
439
+ }, [z, De] = le(ee, x, S), [B, Oe] = le(te, a, re), [ke, Ae] = le(ve, ye, be), je = r("(min-width: 48rem)"), Me = r("(min-width: 64rem)"), V = y(z, B, A), Ne = z === "month" ? B.slice(0, 7) : void 0, [Pe, Fe] = D();
440
+ E(() => {
441
+ if (m !== void 0) return;
442
+ let e = () => {
443
+ let e = /* @__PURE__ */ new Date();
444
+ Fe(_(e.getHours() * 60 + e.getMinutes()));
445
+ };
446
+ e();
447
+ let t = window.setInterval(e, 6e4);
448
+ return () => window.clearInterval(t);
449
+ }, [m]);
450
+ let Ie = m ?? Pe, [H, U] = D(null), [W, G] = D(null), [K, q] = D(null), [Le, Re] = D(B), ze = ie(!1), Be = ie(null), J = V.includes(Le) ? Le : V.includes(B) ? B : V[0];
451
+ E(() => {
452
+ ze.current && (ze.current = !1, Be.current?.querySelector(`[role="gridcell"][data-day="${J}"]`)?.focus());
453
+ });
454
+ let Y = W && P(W.start, W.end) || K && P(K.start, K.end) || (H?.type === "menu" ? H.range : null) || N, X = (e, t, n) => {
455
+ se?.(e);
456
+ let r = ce?.(e) ?? [];
457
+ r.length && U({
458
+ type: "menu",
459
+ range: e,
460
+ actions: r,
461
+ rect: t,
462
+ returnTo: n
463
+ });
464
+ }, Ve = (e, t) => {
465
+ pe?.(e), I && U({
466
+ type: "item",
467
+ item: e,
468
+ rect: t.getBoundingClientRect(),
469
+ returnTo: t
470
+ });
471
+ };
472
+ E(() => {
473
+ if (!W) return;
474
+ let e = (e) => {
475
+ G(null), W.start !== W.end && X(P(W.start, W.end), F(e.clientX, e.clientY), null);
476
+ }, t = () => G(null);
477
+ return window.addEventListener("pointerup", e), window.addEventListener("blur", t), () => {
478
+ window.removeEventListener("pointerup", e), window.removeEventListener("blur", t);
479
+ };
480
+ });
481
+ let Z = (e) => Oe(e), Q = (e) => De(e), He = (e) => {
482
+ if (!Ce || e.defaultPrevented || e.altKey || e.ctrlKey || e.metaKey || H || ge(e.target)) return;
483
+ let t = e.key.toLowerCase();
484
+ if (t === "t") Z(a);
485
+ else if (t === "d") Q("day");
486
+ else if (t === "w") Q("week");
487
+ else if (t === "m") Q("month");
488
+ else if (e.key === "ArrowLeft") Z(g(z, B, -1));
489
+ else if (e.key === "ArrowRight") Z(g(z, B, 1));
490
+ else return;
491
+ e.preventDefault();
492
+ }, Ue = (e) => {
493
+ if (e.target instanceof HTMLElement && e.target.getAttribute("role") !== "gridcell") return;
494
+ let t = {
495
+ ArrowLeft: -1,
496
+ ArrowRight: 1
497
+ };
498
+ if (z === "month" && Object.assign(t, {
499
+ ArrowUp: -7,
500
+ ArrowDown: 7
501
+ }), e.key in t) {
502
+ e.preventDefault(), e.stopPropagation();
503
+ let n = f(J, t[e.key]);
504
+ q(e.shiftKey ? {
505
+ start: K?.start ?? J,
506
+ end: n
507
+ } : null), V.includes(n) || Z(z === "month" ? n : g(z, B, Math.sign(t[e.key]))), ze.current = !0, Re(n);
508
+ } else if (e.key === "Enter" || e.key === " ") {
509
+ e.preventDefault(), e.stopPropagation();
510
+ let t = e.target;
511
+ X(K ? P(K.start, K.end) : {
512
+ start: J,
513
+ end: J
514
+ }, t.getBoundingClientRect(), t), q(null);
515
+ } else e.key === "Escape" && K && q(null);
516
+ }, We = {
517
+ onCellPointerDown: (e, t) => {
518
+ t.button === 0 && t.pointerType !== "touch" && (q(null), G({
519
+ start: e,
520
+ end: e
521
+ }));
522
+ },
523
+ onCellPointerEnter: (e) => {
524
+ W && W.end !== e && G({
525
+ ...W,
526
+ end: e
527
+ });
528
+ },
529
+ onCellDoubleClick: (e, t) => {
530
+ G(null), X({
531
+ start: e,
532
+ end: e
533
+ }, F(t.clientX, t.clientY), t.currentTarget);
534
+ },
535
+ onFocusDay: (e) => Re(e),
536
+ onOpenItem: Ve,
537
+ onOpenDay: (e, t) => U({
538
+ type: "day",
539
+ day: e,
540
+ rect: t.getBoundingClientRect(),
541
+ returnTo: t
542
+ })
543
+ }, $ = () => U(null), Ge = (e) => {
544
+ e.preventDefault();
545
+ let t = H?.returnTo;
546
+ t?.isConnected && t.focus();
547
+ }, Ke = z === "week" ? V[3] : B, qe = new Intl.DateTimeFormat(j, {
548
+ timeZone: "UTC",
549
+ month: "long",
550
+ year: "numeric"
551
+ }).formatToParts(v(Ke)), Je = `h${Te}`, Ye = je ? z === "month" ? /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("div", {
552
+ "aria-hidden": "true",
553
+ className: "grid grid-cols-7 border-b border-border",
554
+ children: V.slice(0, 7).map((e) => /* @__PURE__ */ w("span", {
555
+ className: "px-2 py-1.5 text-right font-sans text-xs font-semibold text-fg-muted",
556
+ children: b(e, j)
557
+ }, e))
558
+ }), /* @__PURE__ */ w(fe, {
559
+ weeks: Array.from({ length: 6 }, (e, t) => V.slice(t * 7, t * 7 + 7)),
560
+ items: t,
561
+ lanes: Se,
562
+ top: 30,
563
+ minHeight: 112,
564
+ showNumbers: !0,
565
+ month: Ne,
566
+ today: a,
567
+ workDays: k,
568
+ highlight: Y,
569
+ focusDay: J,
570
+ locale: j,
571
+ labels: R,
572
+ onGridKeyDown: Ue,
573
+ ariaLabel: R.grid,
574
+ ...We
575
+ })] }) : /* @__PURE__ */ T("div", { children: [
576
+ /* @__PURE__ */ T("div", {
577
+ className: "flex border-b border-border [scrollbar-gutter:stable] overflow-hidden",
578
+ children: [/* @__PURE__ */ w("div", { className: "w-14 shrink-0" }), /* @__PURE__ */ w("div", {
579
+ "aria-hidden": "true",
580
+ className: "grid flex-1",
581
+ style: { gridTemplateColumns: `repeat(${V.length}, minmax(0, 1fr))` },
582
+ children: V.map((t) => z === "day" ? /* @__PURE__ */ w("span", {
583
+ className: e("px-2 py-2 font-sans text-sm font-semibold", t === a ? "text-primary" : "text-fg"),
584
+ children: p(t, j)
585
+ }, t) : /* @__PURE__ */ T("span", {
586
+ className: "flex items-center justify-center gap-1.5 py-2 font-sans text-xs font-semibold text-fg-muted",
587
+ children: [b(t, j), /* @__PURE__ */ w("span", {
588
+ className: e("grid size-7 place-items-center rounded-full text-sm tabular-nums", t === a ? "bg-primary text-on-primary" : "text-fg"),
589
+ children: v(t).getUTCDate()
590
+ })]
591
+ }, t))
592
+ })]
593
+ }),
594
+ /* @__PURE__ */ T("div", {
595
+ className: "flex border-b border-border [scrollbar-gutter:stable] overflow-hidden",
596
+ children: [/* @__PURE__ */ w("span", {
597
+ className: "w-14 shrink-0 pt-1.5 pr-2 text-right font-sans text-[11px] text-fg-muted",
598
+ children: R.allDay
599
+ }), /* @__PURE__ */ w("div", {
600
+ className: "flex-1",
601
+ children: /* @__PURE__ */ w(fe, {
602
+ weeks: [V],
603
+ items: t,
604
+ lanes: z === "day" ? 8 : 4,
605
+ top: 4,
606
+ minHeight: 32,
607
+ showNumbers: !1,
608
+ today: a,
609
+ workDays: k,
610
+ highlight: Y?.startTime ? null : Y,
611
+ focusDay: J,
612
+ locale: j,
613
+ labels: R,
614
+ onGridKeyDown: Ue,
615
+ ariaLabel: `${R.grid}, ${R.allDay}`,
616
+ ...We
617
+ })
618
+ })]
619
+ }),
620
+ /* @__PURE__ */ w(me, {
621
+ days: V,
622
+ items: t,
623
+ today: a,
624
+ now: Ie,
625
+ workDays: k,
626
+ highlight: Y,
627
+ startHour: xe,
628
+ labels: R,
629
+ onOpenItem: Ve,
630
+ onSelect: (e, t) => X(e, t, null)
631
+ })
632
+ ] }) : /* @__PURE__ */ w(he, {
633
+ days: V,
634
+ today: a,
635
+ items: t,
636
+ locale: j,
637
+ labels: R,
638
+ onOpenItem: Ve,
639
+ onSelectRange: (e, t) => X(e, t, null)
640
+ }), Xe = !!L && ke && Me;
641
+ return /* @__PURE__ */ T("div", {
642
+ ref: Be,
643
+ onKeyDown: He,
644
+ className: e("grid gap-4 font-sans", Xe && "lg:grid-cols-[minmax(0,1fr)_17.5rem]", Ee),
645
+ children: [
646
+ /* @__PURE__ */ T("div", {
647
+ className: "min-w-0 overflow-hidden rounded-lg border border-border bg-surface",
648
+ children: [
649
+ /* @__PURE__ */ T("div", {
650
+ className: "flex flex-wrap items-center gap-2 border-b border-border px-3 py-2.5",
651
+ children: [
652
+ /* @__PURE__ */ w(Je, {
653
+ className: "m-0 mr-auto font-display text-lg font-bold text-fg capitalize",
654
+ children: qe.map((e, t) => e.type === "year" ? /* @__PURE__ */ w("span", {
655
+ className: "font-normal text-fg-muted",
656
+ children: e.value
657
+ }, t) : e.value)
658
+ }),
659
+ /* @__PURE__ */ T("div", {
660
+ className: "flex items-center gap-1",
661
+ children: [
662
+ /* @__PURE__ */ w(ue, {
663
+ glyph: "chevron-left",
664
+ label: R.previous,
665
+ onClick: () => Z(g(z, B, -1))
666
+ }),
667
+ /* @__PURE__ */ w(n, {
668
+ variant: "secondary",
669
+ size: "sm",
670
+ title: "T",
671
+ onClick: () => Z(a),
672
+ children: R.today
673
+ }),
674
+ /* @__PURE__ */ w(ue, {
675
+ glyph: "chevron-right",
676
+ label: R.next,
677
+ onClick: () => Z(g(z, B, 1))
678
+ })
679
+ ]
680
+ }),
681
+ /* @__PURE__ */ w(d, {
682
+ size: "sm",
683
+ "aria-label": R.viewsLabel,
684
+ value: z,
685
+ onValueChange: (e) => Q(e),
686
+ options: [
687
+ "day",
688
+ "week",
689
+ "month"
690
+ ].map((e) => ({
691
+ value: e,
692
+ label: R.views[e]
693
+ }))
694
+ }),
695
+ _e,
696
+ L && Me && /* @__PURE__ */ w(ue, {
697
+ glyph: "sidebar",
698
+ label: R.togglePanel,
699
+ pressed: ke,
700
+ onClick: () => Ae(!ke)
701
+ })
702
+ ]
703
+ }),
704
+ /* @__PURE__ */ w("div", {
705
+ "aria-busy": oe || void 0,
706
+ className: e("select-none transition-opacity duration-150", oe && "pointer-events-none opacity-60"),
707
+ children: Ye
708
+ }),
709
+ we && /* @__PURE__ */ w("p", {
710
+ className: "m-0 border-t border-border px-3 py-2 text-xs text-fg-muted",
711
+ children: je ? R.help : R.helpTouch
712
+ })
713
+ ]
714
+ }),
715
+ Xe && /* @__PURE__ */ w("aside", {
716
+ className: "grid content-start gap-5 rounded-lg border border-border bg-surface p-4",
717
+ children: L
718
+ }),
719
+ /* @__PURE__ */ T(ae.Root, {
720
+ open: H?.type === "item" || H?.type === "day",
721
+ onOpenChange: (e) => !e && $(),
722
+ children: [
723
+ /* @__PURE__ */ w(ae.Anchor, { virtualRef: { current: { getBoundingClientRect: () => H?.rect ?? F(0, 0) } } }),
724
+ H?.type === "item" && /* @__PURE__ */ w(i, {
725
+ "aria-label": H.item.title,
726
+ side: "right",
727
+ align: "start",
728
+ className: "w-[21.25rem] p-0",
729
+ onCloseAutoFocus: Ge,
730
+ children: I?.(H.item, $)
731
+ }),
732
+ H?.type === "day" && /* @__PURE__ */ w(i, {
733
+ title: p(H.day, j),
734
+ size: "sm",
735
+ side: "bottom",
736
+ align: "start",
737
+ onCloseAutoFocus: Ge,
738
+ children: /* @__PURE__ */ w("div", {
739
+ className: "grid max-h-80 gap-1 overflow-y-auto",
740
+ children: ne(t.filter((e) => C(e, H.day, H.day))).map((e) => /* @__PURE__ */ w(de, {
741
+ item: e,
742
+ labels: R,
743
+ className: "h-7! text-xs",
744
+ onOpen: (e) => {
745
+ pe?.(e), I && U({
746
+ type: "item",
747
+ item: e,
748
+ rect: H.rect,
749
+ returnTo: H.returnTo
750
+ });
751
+ }
752
+ }, e.id))
753
+ })
754
+ })
755
+ ]
756
+ }),
757
+ /* @__PURE__ */ T(o, {
758
+ open: H?.type === "menu",
759
+ onOpenChange: (e) => !e && $(),
760
+ children: [/* @__PURE__ */ w(u, {
761
+ asChild: !0,
762
+ children: /* @__PURE__ */ w("span", {
763
+ "aria-hidden": "true",
764
+ tabIndex: -1,
765
+ className: "pointer-events-none fixed",
766
+ style: {
767
+ left: H?.rect.left ?? 0,
768
+ top: H?.rect.top ?? 0,
769
+ width: H?.rect.width ?? 0,
770
+ height: H?.rect.height ?? 0
771
+ }
772
+ })
773
+ }), H?.type === "menu" && /* @__PURE__ */ T(s, {
774
+ onCloseAutoFocus: Ge,
775
+ className: "min-w-64",
776
+ children: [/* @__PURE__ */ T(l, { children: [h(H.range.start, H.range.end, j), H.range.startTime && ` · ${H.range.startTime} – ${H.range.endTime}`] }), H.actions.map((e) => /* @__PURE__ */ w(c, {
777
+ icon: e.icon,
778
+ onSelect: e.onSelect,
779
+ children: /* @__PURE__ */ T("span", {
780
+ className: "grid",
781
+ children: [/* @__PURE__ */ w("span", { children: e.label }), e.hint && /* @__PURE__ */ w("span", {
782
+ className: "text-xs font-normal text-fg-muted",
783
+ children: e.hint
784
+ })]
785
+ })
786
+ }, e.key))]
787
+ })]
788
+ })
789
+ ]
790
+ });
791
+ }
792
+ //#endregion
793
+ export { he as CalendarAgenda, O as DEFAULT_CALENDAR_LABELS, _e as EventCalendar, M as itemColor };
794
+
795
+ //# sourceMappingURL=event-calendar.js.map