@k2b/ui 0.18.0 → 0.19.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 (178) hide show
  1. package/README.md +3 -2
  2. package/dist/browser/actions/ContextMenu.js +3 -1
  3. package/dist/browser/actions/ContextMenu.js.map +1 -1
  4. package/dist/browser/actions/Dropdown.js +91 -46
  5. package/dist/browser/actions/Dropdown.js.map +1 -1
  6. package/dist/browser/actions/FilterChip.js +4 -1
  7. package/dist/browser/actions/FilterChip.js.map +1 -1
  8. package/dist/browser/chat/ChatComposer.js +1293 -534
  9. package/dist/browser/chat/ChatComposer.js.map +1 -1
  10. package/dist/browser/chat/chat-behavior.js +9 -0
  11. package/dist/browser/chat/chat-behavior.js.map +1 -1
  12. package/dist/browser/chat/index.js.map +1 -1
  13. package/dist/browser/chat/types.js.map +1 -1
  14. package/dist/browser/content/Calendar.js +579 -533
  15. package/dist/browser/content/Calendar.js.map +1 -1
  16. package/dist/browser/content/Lightbox.js +76 -40
  17. package/dist/browser/content/Lightbox.js.map +1 -1
  18. package/dist/browser/content/PdfPreview.js +146 -79
  19. package/dist/browser/content/PdfPreview.js.map +1 -1
  20. package/dist/browser/content/Timeline.js +1038 -0
  21. package/dist/browser/content/Timeline.js.map +1 -0
  22. package/dist/browser/content/VideoPlayer.js +29 -9
  23. package/dist/browser/content/VideoPlayer.js.map +1 -1
  24. package/dist/browser/content/chart-inspection.js +7 -2
  25. package/dist/browser/content/chart-inspection.js.map +1 -1
  26. package/dist/browser/content/index.js +1 -0
  27. package/dist/browser/content/index.js.map +1 -1
  28. package/dist/browser/content/timeline-model.js +579 -0
  29. package/dist/browser/content/timeline-model.js.map +1 -0
  30. package/dist/browser/feedback/dialog-core.js +26 -14
  31. package/dist/browser/feedback/dialog-core.js.map +1 -1
  32. package/dist/browser/inputs/ChoiceChips.js +66 -0
  33. package/dist/browser/inputs/ChoiceChips.js.map +1 -0
  34. package/dist/browser/inputs/ChoiceGroups.js +53 -12
  35. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  36. package/dist/browser/inputs/FileInputs.js +48 -33
  37. package/dist/browser/inputs/FileInputs.js.map +1 -1
  38. package/dist/browser/inputs/SignatureInput.js +558 -0
  39. package/dist/browser/inputs/SignatureInput.js.map +1 -0
  40. package/dist/browser/inputs/emoji/EmojiPicker.js +841 -0
  41. package/dist/browser/inputs/emoji/EmojiPicker.js.map +1 -0
  42. package/dist/browser/inputs/emoji/emoji-data.js +1903 -0
  43. package/dist/browser/inputs/emoji/emoji-data.js.map +1 -0
  44. package/dist/browser/inputs/emoji/emoji-index.js +209 -0
  45. package/dist/browser/inputs/emoji/emoji-index.js.map +1 -0
  46. package/dist/browser/inputs/emoji/emoji-messages.js +64 -0
  47. package/dist/browser/inputs/emoji/emoji-messages.js.map +1 -0
  48. package/dist/browser/inputs/index.js +5 -0
  49. package/dist/browser/inputs/index.js.map +1 -1
  50. package/dist/browser/inputs/markdown/actions.js +48 -2
  51. package/dist/browser/inputs/markdown/actions.js.map +1 -1
  52. package/dist/browser/inputs/markdown/code-zone.js +38 -2
  53. package/dist/browser/inputs/markdown/code-zone.js.map +1 -1
  54. package/dist/browser/inputs/signature-messages.js +39 -0
  55. package/dist/browser/inputs/signature-messages.js.map +1 -0
  56. package/dist/browser/inputs/signature.js +208 -0
  57. package/dist/browser/inputs/signature.js.map +1 -0
  58. package/dist/browser/internal/render-error.js +49 -0
  59. package/dist/browser/internal/render-error.js.map +1 -0
  60. package/dist/browser/intl/messages.js +108 -0
  61. package/dist/browser/intl/messages.js.map +1 -1
  62. package/dist/browser/layout/AppWorkspace.js +321 -222
  63. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  64. package/dist/browser/layout/FloatingWindow.js +4 -1
  65. package/dist/browser/layout/FloatingWindow.js.map +1 -1
  66. package/dist/browser/layout/SidebarItemPreview.js +5 -1
  67. package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
  68. package/dist/browser/layout/index.js.map +1 -1
  69. package/dist/browser/surfaces/ResourceCard.js +212 -0
  70. package/dist/browser/surfaces/ResourceCard.js.map +1 -0
  71. package/dist/browser/surfaces/index.js +1 -0
  72. package/dist/browser/surfaces/index.js.map +1 -1
  73. package/dist/licenses/emojibase-data.txt +21 -0
  74. package/dist/ssr/actions/ContextMenu.js +3 -1
  75. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  76. package/dist/ssr/actions/Dropdown.js +49 -12
  77. package/dist/ssr/actions/Dropdown.js.map +1 -1
  78. package/dist/ssr/actions/FilterChip.js +4 -1
  79. package/dist/ssr/actions/FilterChip.js.map +1 -1
  80. package/dist/ssr/chat/ChatComposer.js +805 -214
  81. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  82. package/dist/ssr/chat/chat-behavior.js +9 -0
  83. package/dist/ssr/chat/chat-behavior.js.map +1 -1
  84. package/dist/ssr/chat/index.js.map +1 -1
  85. package/dist/ssr/chat/types.js.map +1 -1
  86. package/dist/ssr/content/Calendar.js +183 -142
  87. package/dist/ssr/content/Calendar.js.map +1 -1
  88. package/dist/ssr/content/Lightbox.js +19 -5
  89. package/dist/ssr/content/Lightbox.js.map +1 -1
  90. package/dist/ssr/content/PdfPreview.js +77 -36
  91. package/dist/ssr/content/PdfPreview.js.map +1 -1
  92. package/dist/ssr/content/Timeline.js +804 -0
  93. package/dist/ssr/content/Timeline.js.map +1 -0
  94. package/dist/ssr/content/VideoPlayer.js +29 -9
  95. package/dist/ssr/content/VideoPlayer.js.map +1 -1
  96. package/dist/ssr/content/chart-inspection.js +7 -2
  97. package/dist/ssr/content/chart-inspection.js.map +1 -1
  98. package/dist/ssr/content/index.js +1 -0
  99. package/dist/ssr/content/index.js.map +1 -1
  100. package/dist/ssr/content/timeline-model.js +579 -0
  101. package/dist/ssr/content/timeline-model.js.map +1 -0
  102. package/dist/ssr/feedback/dialog-core.js +26 -14
  103. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  104. package/dist/ssr/inputs/ChoiceChips.js +66 -0
  105. package/dist/ssr/inputs/ChoiceChips.js.map +1 -0
  106. package/dist/ssr/inputs/ChoiceGroups.js +12 -4
  107. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  108. package/dist/ssr/inputs/FileInputs.js +19 -4
  109. package/dist/ssr/inputs/FileInputs.js.map +1 -1
  110. package/dist/ssr/inputs/SignatureInput.js +404 -0
  111. package/dist/ssr/inputs/SignatureInput.js.map +1 -0
  112. package/dist/ssr/inputs/emoji/EmojiPicker.js +551 -0
  113. package/dist/ssr/inputs/emoji/EmojiPicker.js.map +1 -0
  114. package/dist/ssr/inputs/emoji/emoji-data.js +1903 -0
  115. package/dist/ssr/inputs/emoji/emoji-data.js.map +1 -0
  116. package/dist/ssr/inputs/emoji/emoji-index.js +209 -0
  117. package/dist/ssr/inputs/emoji/emoji-index.js.map +1 -0
  118. package/dist/ssr/inputs/emoji/emoji-messages.js +64 -0
  119. package/dist/ssr/inputs/emoji/emoji-messages.js.map +1 -0
  120. package/dist/ssr/inputs/index.js +5 -0
  121. package/dist/ssr/inputs/index.js.map +1 -1
  122. package/dist/ssr/inputs/markdown/actions.js +48 -2
  123. package/dist/ssr/inputs/markdown/actions.js.map +1 -1
  124. package/dist/ssr/inputs/markdown/code-zone.js +38 -2
  125. package/dist/ssr/inputs/markdown/code-zone.js.map +1 -1
  126. package/dist/ssr/inputs/signature-messages.js +39 -0
  127. package/dist/ssr/inputs/signature-messages.js.map +1 -0
  128. package/dist/ssr/inputs/signature.js +208 -0
  129. package/dist/ssr/inputs/signature.js.map +1 -0
  130. package/dist/ssr/internal/render-error.js +49 -0
  131. package/dist/ssr/internal/render-error.js.map +1 -0
  132. package/dist/ssr/intl/messages.js +108 -0
  133. package/dist/ssr/intl/messages.js.map +1 -1
  134. package/dist/ssr/layout/AppWorkspace.js +112 -41
  135. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  136. package/dist/ssr/layout/FloatingWindow.js +4 -1
  137. package/dist/ssr/layout/FloatingWindow.js.map +1 -1
  138. package/dist/ssr/layout/SidebarItemPreview.js +5 -1
  139. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
  140. package/dist/ssr/layout/index.js.map +1 -1
  141. package/dist/ssr/surfaces/ResourceCard.js +115 -0
  142. package/dist/ssr/surfaces/ResourceCard.js.map +1 -0
  143. package/dist/ssr/surfaces/index.js +1 -0
  144. package/dist/ssr/surfaces/index.js.map +1 -1
  145. package/dist/styles.css +1 -1
  146. package/dist/types/actions/Dropdown.d.ts +13 -1
  147. package/dist/types/actions/FilterChip.d.ts +5 -0
  148. package/dist/types/chat/ChatComposer.d.ts +24 -1
  149. package/dist/types/chat/chat-behavior.d.ts +15 -0
  150. package/dist/types/chat/index.d.ts +1 -1
  151. package/dist/types/chat/types.d.ts +34 -0
  152. package/dist/types/content/Calendar.d.ts +28 -8
  153. package/dist/types/content/Lightbox.d.ts +8 -0
  154. package/dist/types/content/Timeline.d.ts +49 -0
  155. package/dist/types/content/index.d.ts +4 -2
  156. package/dist/types/content/timeline-model.d.ts +148 -0
  157. package/dist/types/feedback/dialog-core.d.ts +1 -1
  158. package/dist/types/inputs/ChoiceChips.d.ts +20 -0
  159. package/dist/types/inputs/ChoiceGroups.d.ts +11 -2
  160. package/dist/types/inputs/FileInputs.d.ts +6 -0
  161. package/dist/types/inputs/SignatureInput.d.ts +22 -0
  162. package/dist/types/inputs/emoji/EmojiPicker.d.ts +42 -0
  163. package/dist/types/inputs/emoji/emoji-data.d.ts +2 -0
  164. package/dist/types/inputs/emoji/emoji-index.d.ts +109 -0
  165. package/dist/types/inputs/emoji/emoji-messages.d.ts +30 -0
  166. package/dist/types/inputs/index.d.ts +10 -0
  167. package/dist/types/inputs/markdown/actions.d.ts +4 -0
  168. package/dist/types/inputs/markdown/code-zone.d.ts +7 -0
  169. package/dist/types/inputs/signature-messages.d.ts +11 -0
  170. package/dist/types/inputs/signature.d.ts +72 -0
  171. package/dist/types/internal/render-error.d.ts +13 -0
  172. package/dist/types/intl/messages.d.ts +54 -0
  173. package/dist/types/layout/AppWorkspace.d.ts +17 -0
  174. package/dist/types/layout/SidebarItemPreview.d.ts +2 -0
  175. package/dist/types/layout/index.d.ts +1 -1
  176. package/dist/types/surfaces/ResourceCard.d.ts +31 -0
  177. package/dist/types/surfaces/index.d.ts +2 -0
  178. package/package.json +5 -4
@@ -4,52 +4,53 @@ import { ssrElement as _$ssrElement } from "solid-js/web";
4
4
  import { mergeProps as _$mergeProps } from "solid-js/web";
5
5
  import { ssrStyle as _$ssrStyle } from "solid-js/web";
6
6
  import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
7
+ import { escape as _$escape } from "solid-js/web";
7
8
  import { createComponent as _$createComponent } from "solid-js/web";
8
9
  import { ssr as _$ssr } from "solid-js/web";
9
- import { escape as _$escape } from "solid-js/web";
10
- var _tmpl$ = ["<span class=\"k2b-calendar-event__title\">", "</span>"],
11
- _tmpl$2 = ["<span class=\"k2b-calendar-event__meta\">", "</span>"],
12
- _tmpl$3 = ["<span class=\"k2b-calendar-event__description\">", "</span>"],
13
- _tmpl$4 = ["<a", " class=\"k2b-calendar-event\" data-calendar-event", " style=\"", "\"", ">", "</a>"],
14
- _tmpl$5 = ["<button type=\"button\" class=\"k2b-calendar-event\" data-calendar-event", " data-interactive=\"true\"", " style=\"", "\"", ">", "</button>"],
15
- _tmpl$6 = ["<div class=\"k2b-calendar-event\" role=\"group\" data-calendar-event", " style=\"", "\"", ">", "</div>"],
16
- _tmpl$7 = ["<div role=\"radiogroup\"", " aria-orientation=\"horizontal\" class=\"k2b-segmented-control k2b-calendar-view-switcher\">", "</div>"],
17
- _tmpl$8 = ["<i class=\"", "\"></i>"],
18
- _tmpl$9 = ["<button type=\"button\"", " class=\"k2b-calendar-header__nav-button\"><i class=\"", "\"></i></button>"],
19
- _tmpl$0 = ["<span class=\"k2b-button__label\">", "</span>"],
20
- _tmpl$1 = "<span class=\"k2b-calendar-header__progress\" aria-hidden=\"true\"></span>",
21
- _tmpl$10 = ["<header class=\"k2b-calendar-header\"><div class=\"k2b-calendar-header__navigation\">", "", "<div class=\"k2b-calendar-header__title\">", "</div></div><div class=\"k2b-calendar-header__actions\">", "", "", "</div>", "</header>"],
22
- _tmpl$11 = ["<div class=\"k2b-calendar-month__weekday\">", "</div>"],
23
- _tmpl$12 = ["<div class=\"k2b-calendar-month\" style=\"", "\"><div class=\"k2b-calendar-month__weekdays\"", ">", "", "</div>", "</div>"],
24
- _tmpl$13 = ["<div class=\"k2b-calendar-month__week-number\">", "</div>"],
25
- _tmpl$14 = ["<div class=\"k2b-calendar-month__week\"", ">", "", "</div>"],
26
- _tmpl$15 = ["<div class=\"k2b-calendar-preview\">", "</div>"],
27
- _tmpl$16 = ["<div class=\"k2b-calendar-month__day\"", ">", "<div class=\"k2b-calendar-month__day-header\">", "", "</div><div class=\"k2b-calendar-month__events\">", "", "", "</div><div class=\"k2b-calendar-month__dots\">", "</div></div>"],
28
- _tmpl$17 = ["<span class=\"k2b-calendar-month__day-number\"", ">", "</span>"],
29
- _tmpl$18 = ["<span class=\"k2b-calendar-month__badge\">", "", "</span>"],
30
- _tmpl$19 = ["<span class=\"k2b-calendar-dot\"", " style=\"", "\"></span>"],
31
- _tmpl$20 = ["<div class=\"k2b-calendar-time-grid__all-day\" style=\"", "\"><div class=\"k2b-calendar-time-grid__all-day-label\">", "</div>", "</div>"],
32
- _tmpl$21 = ["<div class=\"k2b-calendar-time-grid\"><div class=\"k2b-calendar-time-grid__days\" style=\"", "\"><div></div>", "</div>", "<div class=\"k2b-calendar-time-grid__scroll\"><div class=\"k2b-calendar-time-grid__grid\" style=\"", "\"><div class=\"k2b-calendar-time-grid__gutter\" style=\"", "\">", "</div>", "</div></div></div>"],
33
- _tmpl$22 = ["<span class=\"k2b-calendar-time-grid__day-label\"", ">", "</span>"],
34
- _tmpl$23 = ["<span class=\"k2b-calendar-time-grid__badge\">", "", "</span>"],
35
- _tmpl$24 = ["<div class=\"k2b-calendar-time-grid__all-day-events\">", "", "</div>"],
36
- _tmpl$25 = ["<div class=\"k2b-calendar-time-grid__hour\"", ">", ":00</div>"],
37
- _tmpl$26 = ["<div class=\"k2b-calendar-time-grid__now\" style=\"", "\"></div>"],
38
- _tmpl$27 = ["<div class=\"k2b-calendar-time-grid__column\" style=\"", "\">", "", "", "", "", "</div>"],
39
- _tmpl$28 = ["<div class=\"k2b-calendar-preview__title\">", "</div>"],
40
- _tmpl$29 = ["<div class=\"k2b-calendar-preview k2b-calendar-preview--timed\"", " style=\"", "\"><div class=\"k2b-calendar-preview__content\">", "<div class=\"k2b-calendar-preview__label\">", " - ", "</div></div></div>"],
41
- _tmpl$30 = ["<button type=\"button\"", " draggable=\"false\" class=\"k2b-calendar-time-grid__resize\"><span class=\"k2b-calendar-time-grid__resize-icon\" aria-hidden=\"true\"></span></button>"],
42
- _tmpl$31 = ["<div class=\"k2b-calendar-time-grid__event-position\" style=\"", "\"><div class=\"k2b-calendar-time-grid__event-frame\">", "", "</div></div>"],
43
- _tmpl$32 = ["<button type=\"button\" class=\"k2b-calendar-time-grid__overflow\" style=\"", "\"", "><span class=\"k2b-calendar-time-grid__overflow-count\">+", "</span></button>"],
44
- _tmpl$33 = ["<div class=\"k2b-calendar-time-grid__overflow-menu\" style=\"", "\"><div class=\"k2b-calendar-time-grid__overflow-title\">", " - ", "</div>", "</div>"],
45
- _tmpl$34 = ["<div class=\"k2b-calendar-year\">", "</div>"],
46
- _tmpl$35 = ["<div class=\"k2b-calendar-year__month\"><div class=\"k2b-calendar-year__title\">", "</div><div class=\"k2b-calendar-year__grid\">", "</div></div>"],
47
- _tmpl$36 = ["<span class=\"k2b-calendar-year__indicator\"", " style=\"", "\"></span>"],
48
- _tmpl$37 = ["<div class=\"k2b-calendar-mobile-month__events\">", "</div>"],
49
- _tmpl$38 = ["<div class=\"k2b-calendar-mobile-month\">", "<div class=\"k2b-calendar-mobile-month__agenda\"><div class=\"k2b-calendar-mobile-month__title\">", "</div>", "</div></div>"],
50
- _tmpl$39 = ["<div class=\"k2b-calendar-mobile-month__empty\">", "</div>"],
51
- _tmpl$40 = ["<div class=\"k2b-calendar-body\">", "</div>"],
52
- _tmpl$41 = ["<section class=\"", "\"", ">", "", "", "</section>"];
10
+ var _tmpl$ = "<span class=\"k2b-calendar-event__marker\" aria-hidden=\"true\"></span>",
11
+ _tmpl$2 = ["<span class=\"k2b-calendar-event__title\">", "", "</span>"],
12
+ _tmpl$3 = ["<span class=\"k2b-calendar-event__meta\">", "</span>"],
13
+ _tmpl$4 = ["<span class=\"k2b-calendar-event__description\">", "</span>"],
14
+ _tmpl$5 = ["<a", " class=\"k2b-calendar-event\" data-calendar-event", " style=\"", "\"", ">", "</a>"],
15
+ _tmpl$6 = ["<button type=\"button\" class=\"k2b-calendar-event\" data-calendar-event", " data-interactive=\"true\"", " style=\"", "\"", ">", "</button>"],
16
+ _tmpl$7 = ["<div class=\"k2b-calendar-event\" role=\"group\" data-calendar-event", " style=\"", "\"", ">", "</div>"],
17
+ _tmpl$8 = ["<div role=\"radiogroup\"", " aria-orientation=\"horizontal\" class=\"k2b-segmented-control k2b-calendar-view-switcher\">", "</div>"],
18
+ _tmpl$9 = ["<i class=\"", "\"></i>"],
19
+ _tmpl$0 = ["<button type=\"button\"", " class=\"k2b-calendar-header__nav-button\"><i class=\"", "\"></i></button>"],
20
+ _tmpl$1 = ["<span class=\"k2b-button__label\">", "</span>"],
21
+ _tmpl$10 = "<span class=\"k2b-calendar-header__progress\" aria-hidden=\"true\"></span>",
22
+ _tmpl$11 = ["<header class=\"k2b-calendar-header\"><div class=\"k2b-calendar-header__navigation\">", "", "<div class=\"k2b-calendar-header__title\">", "</div></div><div class=\"k2b-calendar-header__actions\">", "", "", "</div>", "</header>"],
23
+ _tmpl$12 = ["<div class=\"k2b-calendar-month__weekday\">", "</div>"],
24
+ _tmpl$13 = ["<div class=\"k2b-calendar-month\" style=\"", "\"><div class=\"k2b-calendar-month__weekdays\"", ">", "", "</div>", "</div>"],
25
+ _tmpl$14 = ["<div class=\"k2b-calendar-month__week-number\">", "</div>"],
26
+ _tmpl$15 = ["<div class=\"k2b-calendar-month__week\"", ">", "", "</div>"],
27
+ _tmpl$16 = ["<div class=\"k2b-calendar-preview\">", "</div>"],
28
+ _tmpl$17 = ["<div class=\"k2b-calendar-month__day\"", ">", "<div class=\"k2b-calendar-month__day-header\">", "", "</div><div class=\"k2b-calendar-month__events\">", "", "", "</div><div class=\"k2b-calendar-month__dots\">", "</div></div>"],
29
+ _tmpl$18 = ["<span class=\"k2b-calendar-month__day-number\"", ">", "</span>"],
30
+ _tmpl$19 = ["<span class=\"k2b-calendar-month__badge\">", "", "</span>"],
31
+ _tmpl$20 = ["<span class=\"k2b-calendar-dot\"", " style=\"", "\"></span>"],
32
+ _tmpl$21 = ["<div class=\"k2b-calendar-time-grid__all-day\" style=\"", "\"><div class=\"k2b-calendar-time-grid__all-day-label\">", "</div>", "</div>"],
33
+ _tmpl$22 = ["<div class=\"k2b-calendar-time-grid\"><div class=\"k2b-calendar-time-grid__days\" style=\"", "\"><div></div>", "</div>", "<div class=\"k2b-calendar-time-grid__scroll\"><div class=\"k2b-calendar-time-grid__grid\" style=\"", "\"><div class=\"k2b-calendar-time-grid__gutter\" style=\"", "\">", "</div>", "</div></div></div>"],
34
+ _tmpl$23 = ["<span class=\"k2b-calendar-time-grid__day-label\"", ">", "</span>"],
35
+ _tmpl$24 = ["<span class=\"k2b-calendar-time-grid__badge\">", "", "</span>"],
36
+ _tmpl$25 = ["<div class=\"k2b-calendar-time-grid__all-day-events\">", "", "</div>"],
37
+ _tmpl$26 = ["<div class=\"k2b-calendar-time-grid__hour\"", ">", ":00</div>"],
38
+ _tmpl$27 = ["<div class=\"k2b-calendar-time-grid__now\" style=\"", "\"></div>"],
39
+ _tmpl$28 = ["<div class=\"k2b-calendar-time-grid__column\" style=\"", "\">", "", "", "", "", "</div>"],
40
+ _tmpl$29 = ["<div class=\"k2b-calendar-preview__title\">", "</div>"],
41
+ _tmpl$30 = ["<div class=\"k2b-calendar-preview k2b-calendar-preview--timed\"", " style=\"", "\"><div class=\"k2b-calendar-preview__content\">", "<div class=\"k2b-calendar-preview__label\">", " - ", "</div></div></div>"],
42
+ _tmpl$31 = ["<button type=\"button\"", " draggable=\"false\" class=\"k2b-calendar-time-grid__resize\"><span class=\"k2b-calendar-time-grid__resize-icon\" aria-hidden=\"true\"></span></button>"],
43
+ _tmpl$32 = ["<div class=\"k2b-calendar-time-grid__event-position\" style=\"", "\"><div class=\"k2b-calendar-time-grid__event-frame\">", "", "</div></div>"],
44
+ _tmpl$33 = ["<button type=\"button\" class=\"k2b-calendar-time-grid__overflow\" style=\"", "\"", "><span class=\"k2b-calendar-time-grid__overflow-count\">+", "</span></button>"],
45
+ _tmpl$34 = ["<div class=\"k2b-calendar-time-grid__overflow-menu\" style=\"", "\"><div class=\"k2b-calendar-time-grid__overflow-title\">", " - ", "</div>", "</div>"],
46
+ _tmpl$35 = ["<div class=\"k2b-calendar-year\">", "</div>"],
47
+ _tmpl$36 = ["<div class=\"k2b-calendar-year__month\"><div class=\"k2b-calendar-year__title\">", "</div><div class=\"k2b-calendar-year__grid\">", "</div></div>"],
48
+ _tmpl$37 = ["<span class=\"k2b-calendar-year__indicator\"", " style=\"", "\"></span>"],
49
+ _tmpl$38 = ["<div class=\"k2b-calendar-mobile-month__events\">", "</div>"],
50
+ _tmpl$39 = ["<div class=\"k2b-calendar-mobile-month\">", "<div class=\"k2b-calendar-mobile-month__agenda\"><div class=\"k2b-calendar-mobile-month__title\">", "</div>", "</div></div>"],
51
+ _tmpl$40 = ["<div class=\"k2b-calendar-mobile-month__empty\">", "</div>"],
52
+ _tmpl$41 = ["<div class=\"k2b-calendar-body\">", "</div>"],
53
+ _tmpl$42 = ["<section class=\"", "\"", ">", "", "", "</section>"];
53
54
  import { Link } from "@k2b/ssr/nav";
54
55
  import { dates as calendar } from "@k2b/stdlib";
55
56
  import { createMemo, createSignal, For, mergeProps, onCleanup, onMount, Show } from "solid-js";
@@ -59,6 +60,11 @@ import { useDateConfigLocale } from "../intl/locale";
59
60
  import { useUiMessages } from "../intl/messages";
60
61
  import { layoutCalendarIntervals } from "./calendar-event-layout";
61
62
  import { calendarDayIndexAtPoint, calendarMinuteAtPoint, startCalendarPointerSession } from "./calendar-pointer";
63
+
64
+ /** A view the application adds to the switcher; the calendar shows its header and toolbar, the application the body. */
65
+
66
+ /** What the built-in views read from the props: they only ever link to built-in views. */
67
+
62
68
  const ownerDateConfig = owner => ({
63
69
  ...owner.dateConfig,
64
70
  timeZone: owner.timeZone ?? owner.dateConfig?.timeZone,
@@ -228,11 +234,14 @@ const EventChip = props => {
228
234
  const showLocation = () => Boolean(props.event.location && !props.compact && durationHours() >= 1.25);
229
235
  const showDescription = () => Boolean(props.event.description?.trim() && props.fill && !props.event.allDay && !props.compact && durationHours() >= 1.5);
230
236
  const timeLabel = () => `${formatTime(props.event.startDate, dateConfig())} - ${formatTime(props.event.endDate, dateConfig())}`;
231
- const ariaLabel = () => props.event.allDay ? props.event.title : messages().calendarEventTime({
232
- title: props.event.title,
233
- start: formatTime(props.event.startDate, dateConfig()),
234
- end: formatTime(props.event.endDate, dateConfig())
235
- });
237
+ const ariaLabel = () => {
238
+ const label = props.event.allDay ? props.event.title : messages().calendarEventTime({
239
+ title: props.event.title,
240
+ start: formatTime(props.event.startDate, dateConfig()),
241
+ end: formatTime(props.event.endDate, dateConfig())
242
+ });
243
+ return props.event.accessibleDetail ? `${label}, ${props.event.accessibleDetail}` : label;
244
+ };
236
245
  const renderedEvent = () => props.owner.renderEvent?.(props.event, {
237
246
  compact: props.compact ?? false,
238
247
  fill: props.fill ?? false,
@@ -242,26 +251,33 @@ const EventChip = props => {
242
251
  durationHours: durationHours(),
243
252
  timeLabel: timeLabel()
244
253
  });
245
- const defaultContent = [_$ssr(_tmpl$, _$escape(props.event.title)), _$createComponent(Show, {
254
+ const defaultContent = [_$ssr(_tmpl$2, _$escape(_$createComponent(Show, {
255
+ get when() {
256
+ return props.event.display === "marker";
257
+ },
258
+ get children() {
259
+ return _$ssr(_tmpl$);
260
+ }
261
+ })), _$escape(props.event.title)), _$createComponent(Show, {
246
262
  get when() {
247
263
  return showTime();
248
264
  },
249
265
  get children() {
250
- return _$ssr(_tmpl$2, _$escape(timeLabel()));
266
+ return _$ssr(_tmpl$3, _$escape(timeLabel()));
251
267
  }
252
268
  }), _$createComponent(Show, {
253
269
  get when() {
254
270
  return showLocation();
255
271
  },
256
272
  get children() {
257
- return _$ssr(_tmpl$2, _$escape(props.event.location));
273
+ return _$ssr(_tmpl$3, _$escape(props.event.location));
258
274
  }
259
275
  }), _$createComponent(Show, {
260
276
  get when() {
261
277
  return showDescription();
262
278
  },
263
279
  get children() {
264
- return _$ssr(_tmpl$3, _$escape(props.event.description));
280
+ return _$ssr(_tmpl$4, _$escape(props.event.description));
265
281
  }
266
282
  })];
267
283
  const content = () => renderedEvent() ?? defaultContent;
@@ -296,7 +312,7 @@ const EventChip = props => {
296
312
  suppressClickUntil = performance.now() + 400;
297
313
  });
298
314
  };
299
- return props.href ? _$ssr(_tmpl$4, _$ssrAttribute("href", _$escape(props.href, true), false), _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-interactive", isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-display", _$escape(props.event.display, true), false) + _$ssrAttribute("data-space-item-id", _$escape(props.event.dataSpaceItemId, true), false), _$ssrStyle(style()), _$ssrAttribute("draggable", props.onMovePointerDown ? _$escape(false, true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content())) : isActionable() ? _$ssr(_tmpl$5, _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false), _$ssrAttribute("data-display", _$escape(props.event.display, true), false), _$ssrStyle(style()), _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content())) : _$ssr(_tmpl$6, _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-interactive", _$escape(undefined, true), false) + _$ssrAttribute("data-display", _$escape(props.event.display, true), false), _$ssrStyle(style()), _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content()));
315
+ return props.href ? _$ssr(_tmpl$5, _$ssrAttribute("href", _$escape(props.href, true), false), _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-interactive", isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-display", _$escape(props.event.display, true), false) + _$ssrAttribute("data-space-item-id", _$escape(props.event.dataSpaceItemId, true), false), _$ssrStyle(style()), _$ssrAttribute("draggable", props.onMovePointerDown ? _$escape(false, true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content())) : isActionable() ? _$ssr(_tmpl$6, _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false), _$ssrAttribute("data-display", _$escape(props.event.display, true), false), _$ssrStyle(style()), _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content())) : _$ssr(_tmpl$7, _$ssrAttribute("data-color", props.event.colorHex ? _$escape(undefined, true) : _$escape(color(), true), false) + _$ssrAttribute("data-selected", selected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-compact", props.compact ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-fill", props.fill ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-short", short() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-moving", props.moving ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-interactive", _$escape(undefined, true), false) + _$ssrAttribute("data-display", _$escape(props.event.display, true), false), _$ssrStyle(style()), _$ssrAttribute("aria-label", _$escape(ariaLabel(), true), false), _$escape(content()));
300
316
  };
301
317
  const slotInteractionProps = (owner, slot, suppressed, nativeControl = false) => {
302
318
  const isSlotChild = event => {
@@ -379,7 +395,7 @@ const CalendarViewLinks = props => {
379
395
  refs[event.key === "Home" ? 0 : props.options.length - 1]?.click();
380
396
  }
381
397
  };
382
- return _$ssr(_tmpl$7, _$ssrAttribute("aria-label", _$escape(messages().calendarView, true), false), _$escape(_$createComponent(For, {
398
+ return _$ssr(_tmpl$8, _$ssrAttribute("aria-label", _$escape(messages().calendarView, true), false), _$escape(_$createComponent(For, {
383
399
  get each() {
384
400
  return props.options;
385
401
  },
@@ -413,10 +429,12 @@ const CalendarViewLinks = props => {
413
429
  }
414
430
  })));
415
431
  };
432
+
433
+ /** Custom views page by day, like the day view. */
416
434
  const adjacentCalendarDate = (date, view, direction, dateConfig) => {
417
435
  if (view === "year") return calendar.addMonths(date, direction * 12, dateConfig);
418
436
  if (view === "month" || view === "mobile-month") return calendar.addMonths(date, direction, dateConfig);
419
- return calendar.addDays(date, direction * (view === "day" ? 1 : 7), dateConfig);
437
+ return calendar.addDays(date, direction * (view === "week" ? 7 : 1), dateConfig);
420
438
  };
421
439
  const CalendarHeader = props => {
422
440
  const messages = useUiMessages();
@@ -428,7 +446,7 @@ const CalendarHeader = props => {
428
446
  year: "numeric",
429
447
  timeZone: dateConfig().timeZone
430
448
  }).format(props.date);
431
- if (props.view === "day") return props.date.toLocaleDateString(dateConfig().locale ?? "en", {
449
+ if (props.view !== "week" && props.view !== "month" && props.view !== "mobile-month") return props.date.toLocaleDateString(dateConfig().locale ?? "en", {
432
450
  weekday: "long",
433
451
  month: "long",
434
452
  day: "numeric",
@@ -460,9 +478,9 @@ const CalendarHeader = props => {
460
478
  class: "k2b-calendar-header__nav-button"
461
479
  },
462
480
  get children() {
463
- return _$ssr(_tmpl$8, `ti ${_$escape(icon, true)}`);
481
+ return _$ssr(_tmpl$9, `ti ${_$escape(icon, true)}`);
464
482
  }
465
- }) : props.owner.onDateChange ? _$ssr(_tmpl$9, _$ssrAttribute("aria-label", _$escape(label, true), false), `ti ${_$escape(icon, true)}`) : _$createComponent(CalendarNavigationLink, {
483
+ }) : props.owner.onDateChange ? _$ssr(_tmpl$0, _$ssrAttribute("aria-label", _$escape(label, true), false), `ti ${_$escape(icon, true)}`) : _$createComponent(CalendarNavigationLink, {
466
484
  get owner() {
467
485
  return props.owner;
468
486
  },
@@ -473,14 +491,14 @@ const CalendarHeader = props => {
473
491
  class: "k2b-calendar-header__nav-button"
474
492
  },
475
493
  get children() {
476
- return _$ssr(_tmpl$8, `ti ${_$escape(icon, true)}`);
494
+ return _$ssr(_tmpl$9, `ti ${_$escape(icon, true)}`);
477
495
  }
478
496
  });
479
497
  };
480
498
  const todayButton = () => {
481
499
  const today = calendar.today(dateConfig());
482
500
  const href = props.owner.getDateHref?.(today, props.view);
483
- const label = _$ssr(_tmpl$0, _$escape(props.labels.today));
501
+ const label = _$ssr(_tmpl$1, _$escape(props.labels.today));
484
502
  return (props.owner.onNavigateHref || props.owner.onNavigate) && href ? _$createComponent(CalendarNavigationLink, {
485
503
  get owner() {
486
504
  return props.owner;
@@ -514,7 +532,7 @@ const CalendarHeader = props => {
514
532
  children: label
515
533
  });
516
534
  };
517
- const viewOptions = createMemo(() => [{
535
+ const viewOptions = createMemo(() => [...[{
518
536
  value: "day",
519
537
  label: props.labels.day
520
538
  }, {
@@ -526,8 +544,8 @@ const CalendarHeader = props => {
526
544
  }, {
527
545
  value: "year",
528
546
  label: props.labels.year
529
- }].filter(option => !props.owner.views || props.owner.views.includes(option.value)));
530
- return _$ssr(_tmpl$10, _$escape(navButton(previous(), "ti-chevron-left", props.labels.previous)), _$escape(navButton(next(), "ti-chevron-right", props.labels.next)), _$escape(title()), _$escape(todayButton()), _$escape(_$createComponent(Show, {
547
+ }].filter(option => !props.owner.views || props.owner.views.includes(option.value)), ...(props.owner.customViews ?? [])]);
548
+ return _$ssr(_tmpl$11, _$escape(navButton(previous(), "ti-chevron-left", props.labels.previous)), _$escape(navButton(next(), "ti-chevron-right", props.labels.next)), _$escape(title()), _$escape(todayButton()), _$escape(_$createComponent(Show, {
531
549
  get when() {
532
550
  return _$memo(() => !!!props.owner.onViewChange)() && props.owner.getViewHref;
533
551
  },
@@ -561,7 +579,7 @@ const CalendarHeader = props => {
561
579
  return props.owner.navigationPending;
562
580
  },
563
581
  get children() {
564
- return _$ssr(_tmpl$1);
582
+ return _$ssr(_tmpl$10);
565
583
  }
566
584
  })));
567
585
  };
@@ -619,28 +637,28 @@ const MonthView = props => {
619
637
  });
620
638
  };
621
639
  onCleanup(() => cancelInteraction?.());
622
- return _$ssr(_tmpl$12, _$ssrStyleProperty("grid-template-rows:", `auto repeat(${_$escape(weeks().length, true)}, ${props.compact ? "minmax(2.75rem, auto)" : "minmax(5rem, 1fr)"})`), _$ssrAttribute("data-week-numbers", props.owner.withWeekNumbers ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
640
+ return _$ssr(_tmpl$13, _$ssrStyleProperty("grid-template-rows:", `auto repeat(${_$escape(weeks().length, true)}, ${props.compact ? "minmax(2.75rem, auto)" : "minmax(5rem, 1fr)"})`), _$ssrAttribute("data-week-numbers", props.owner.withWeekNumbers ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
623
641
  get when() {
624
642
  return props.owner.withWeekNumbers;
625
643
  },
626
644
  get children() {
627
- return _$ssr(_tmpl$11, _$escape(messages().weekShort));
645
+ return _$ssr(_tmpl$12, _$escape(messages().weekShort));
628
646
  }
629
647
  })), _$escape(_$createComponent(For, {
630
648
  get each() {
631
649
  return weekdays();
632
650
  },
633
- children: day => _$ssr(_tmpl$11, _$escape(day))
651
+ children: day => _$ssr(_tmpl$12, _$escape(day))
634
652
  })), _$escape(_$createComponent(For, {
635
653
  get each() {
636
654
  return weeks();
637
655
  },
638
- children: week => _$ssr(_tmpl$14, _$ssrAttribute("data-week-numbers", props.owner.withWeekNumbers ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
656
+ children: week => _$ssr(_tmpl$15, _$ssrAttribute("data-week-numbers", props.owner.withWeekNumbers ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
639
657
  get when() {
640
658
  return props.owner.withWeekNumbers;
641
659
  },
642
660
  get children() {
643
- return _$ssr(_tmpl$13, _$escape(zonedWeekNumber(week[0], dateConfig())));
661
+ return _$ssr(_tmpl$14, _$escape(zonedWeekNumber(week[0], dateConfig())));
644
662
  }
645
663
  })), _$escape(_$createComponent(For, {
646
664
  each: week,
@@ -669,7 +687,7 @@ const MonthView = props => {
669
687
  hiddenCount: Math.max(0, candidates.length - visibleLimit)
670
688
  };
671
689
  });
672
- return _$ssr(_tmpl$16, _$ssrAttribute("data-calendar-day-key", _$escape(dayKey, true), false) + _$ssrAttribute("data-outside", !sameMonth ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-drop-preview", movePreview()?.start && calendar.formatDateKey(movePreview().start, dateConfig()) === dayKey ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
690
+ return _$ssr(_tmpl$17, _$ssrAttribute("data-calendar-day-key", _$escape(dayKey, true), false) + _$ssrAttribute("data-outside", !sameMonth ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-drop-preview", movePreview()?.start && calendar.formatDateKey(movePreview().start, dateConfig()) === dayKey ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
673
691
  get when() {
674
692
  return props.owner.onSlotActivate;
675
693
  },
@@ -718,7 +736,7 @@ const MonthView = props => {
718
736
  return props.owner.onSlotActivate && href;
719
737
  },
720
738
  get fallback() {
721
- return _$ssr(_tmpl$17, _$ssrAttribute("data-today", isToday ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-outside", !sameMonth ? "true" : _$escape(undefined, true), false), _$escape(calendar.formatDayNumber(day, dateConfig())));
739
+ return _$ssr(_tmpl$18, _$ssrAttribute("data-today", isToday ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-outside", !sameMonth ? "true" : _$escape(undefined, true), false), _$escape(calendar.formatDayNumber(day, dateConfig())));
722
740
  },
723
741
  children: dayHref => _$createComponent(CalendarNavigationLink, {
724
742
  get owner() {
@@ -743,18 +761,18 @@ const MonthView = props => {
743
761
  })
744
762
  })), _$escape(_$createComponent(Show, {
745
763
  when: dayBadge,
746
- children: badge => _$ssr(_tmpl$18, _$escape(_$createComponent(Show, {
764
+ children: badge => _$ssr(_tmpl$19, _$escape(_$createComponent(Show, {
747
765
  get when() {
748
766
  return badge().icon;
749
767
  },
750
- children: icon => _$ssr(_tmpl$8, `k2b-calendar-month__badge-icon ti ti-${_$escape(icon(), true)}`)
768
+ children: icon => _$ssr(_tmpl$9, `k2b-calendar-month__badge-icon ti ti-${_$escape(icon(), true)}`)
751
769
  })), _$escape(badge().label))
752
770
  })), _$escape(_$createComponent(Show, {
753
771
  get when() {
754
772
  return eventStack().preview;
755
773
  },
756
774
  get children() {
757
- return _$ssr(_tmpl$15, _$escape(props.events.find(event => event.id === eventStack().preview.id)?.title ?? messages().moveEvent));
775
+ return _$ssr(_tmpl$16, _$escape(props.events.find(event => event.id === eventStack().preview.id)?.title ?? messages().moveEvent));
758
776
  }
759
777
  })), _$escape(_$createComponent(For, {
760
778
  get each() {
@@ -798,7 +816,7 @@ const MonthView = props => {
798
816
  get each() {
799
817
  return events.slice(0, 4);
800
818
  },
801
- children: event => _$ssr(_tmpl$19, _$ssrAttribute("data-color", event.colorHex ? _$escape(undefined, true) : _$escape(event.color ?? "blue", true), false), _$ssrStyle(event.colorHex ? {
819
+ children: event => _$ssr(_tmpl$20, _$ssrAttribute("data-color", event.colorHex ? _$escape(undefined, true) : _$escape(event.color ?? "blue", true), false), _$ssrStyle(event.colorHex ? {
802
820
  "background-color": event.colorHex
803
821
  } : undefined))
804
822
  })));
@@ -1009,13 +1027,15 @@ const TimeGridView = props => {
1009
1027
  requestAnimationFrame(() => {
1010
1028
  if (!scrollContainer || !defaultHourMarker) return;
1011
1029
  const targetTop = defaultHourMarker.getBoundingClientRect().top - scrollContainer.getBoundingClientRect().top;
1030
+ // Reduced motion jumps to the business hours instead of gliding there, like every transition of the library.
1031
+ const behavior = window.matchMedia("(prefers-reduced-motion: reduce)").matches ? "auto" : "smooth";
1012
1032
  scrollContainer.scrollTo({
1013
1033
  top: Math.max(0, scrollContainer.scrollTop + targetTop),
1014
- behavior: "smooth"
1034
+ behavior
1015
1035
  });
1016
1036
  });
1017
1037
  });
1018
- return _$ssr(_tmpl$21, _$ssrStyleProperty("grid-template-columns:", `4rem repeat(${_$escape(props.days.length, true)}, minmax(0, 1fr))`), _$escape(_$createComponent(For, {
1038
+ return _$ssr(_tmpl$22, _$ssrStyleProperty("grid-template-columns:", `4rem repeat(${_$escape(props.days.length, true)}, minmax(0, 1fr))`), _$escape(_$createComponent(For, {
1019
1039
  get each() {
1020
1040
  return props.days;
1021
1041
  },
@@ -1033,13 +1053,13 @@ const TimeGridView = props => {
1033
1053
  class: "k2b-calendar-time-grid__day"
1034
1054
  },
1035
1055
  get children() {
1036
- return [_$ssr(_tmpl$22, _$ssrAttribute("data-today", today() ? "true" : _$escape(undefined, true), false), _$escape(formatDay(day, dateConfig()))), _$createComponent(Show, {
1056
+ return [_$ssr(_tmpl$23, _$ssrAttribute("data-today", today() ? "true" : _$escape(undefined, true), false), _$escape(formatDay(day, dateConfig()))), _$createComponent(Show, {
1037
1057
  when: dayBadge,
1038
- children: badge => _$ssr(_tmpl$23, _$escape(_$createComponent(Show, {
1058
+ children: badge => _$ssr(_tmpl$24, _$escape(_$createComponent(Show, {
1039
1059
  get when() {
1040
1060
  return badge().icon;
1041
1061
  },
1042
- children: icon => _$ssr(_tmpl$8, `k2b-calendar-time-grid__badge-icon ti ti-${_$escape(icon(), true)}`)
1062
+ children: icon => _$ssr(_tmpl$9, `k2b-calendar-time-grid__badge-icon ti ti-${_$escape(icon(), true)}`)
1043
1063
  })), _$escape(badge().label))
1044
1064
  })];
1045
1065
  }
@@ -1050,7 +1070,7 @@ const TimeGridView = props => {
1050
1070
  return !props.owner.hideAllDay;
1051
1071
  },
1052
1072
  get children() {
1053
- return _$ssr(_tmpl$20, _$ssrStyleProperty("grid-template-columns:", `4rem repeat(${_$escape(props.days.length, true)}, minmax(0, 1fr))`) + _$ssrStyleProperty(";max-height:", `${_$escape(props.owner.allDayMaxHeightRem ?? 7, true)}rem`), _$escape(props.labels.allDay), _$escape(_$createComponent(For, {
1073
+ return _$ssr(_tmpl$21, _$ssrStyleProperty("grid-template-columns:", `4rem repeat(${_$escape(props.days.length, true)}, minmax(0, 1fr))`) + _$ssrStyleProperty(";max-height:", `${_$escape(props.owner.allDayMaxHeightRem ?? 7, true)}rem`), _$escape(props.labels.allDay), _$escape(_$createComponent(For, {
1054
1074
  get each() {
1055
1075
  return props.days;
1056
1076
  },
@@ -1074,9 +1094,9 @@ const TimeGridView = props => {
1074
1094
  end: calendar.addDays(start, 1, dateConfig()),
1075
1095
  allDay: true
1076
1096
  };
1077
- }, () => performance.now() < suppressSlotClickUntil)), _$ssr(_tmpl$24, _$escape(_$createComponent(For, {
1097
+ }, () => performance.now() < suppressSlotClickUntil)), _$ssr(_tmpl$25, _$escape(_$createComponent(For, {
1078
1098
  each: previewAllDay,
1079
- children: event => _$ssr(_tmpl$15, _$escape(event.title))
1099
+ children: event => _$ssr(_tmpl$16, _$escape(event.title))
1080
1100
  })), _$escape(_$createComponent(For, {
1081
1101
  get each() {
1082
1102
  return allDay();
@@ -1105,7 +1125,7 @@ const TimeGridView = props => {
1105
1125
  get each() {
1106
1126
  return hours();
1107
1127
  },
1108
- children: hour => _$ssr(_tmpl$25, _$ssrAttribute("data-outside-business", hour < businessStartHour() || hour > businessEndHour() ? "true" : _$escape(undefined, true), false), _$escape(`${hour}`.padStart(2, "0")))
1128
+ children: hour => _$ssr(_tmpl$26, _$ssrAttribute("data-outside-business", hour < businessStartHour() || hour > businessEndHour() ? "true" : _$escape(undefined, true), false), _$escape(`${hour}`.padStart(2, "0")))
1109
1129
  })), _$escape(_$createComponent(For, {
1110
1130
  get each() {
1111
1131
  return props.days;
@@ -1113,12 +1133,12 @@ const TimeGridView = props => {
1113
1133
  children: day => {
1114
1134
  const dayKey = calendar.formatDateKey(day, dateConfig());
1115
1135
  const layouts = createMemo(() => timedEventLayouts(eventsByDay().get(dayKey)?.timed ?? []));
1116
- return _$ssr(_tmpl$27, _$ssrStyleProperty("min-width:", _$escape(dayColumnMinWidth(layouts()), true)) + _$ssrStyleProperty(";grid-template-rows:", `repeat(${_$escape(hours().length, true)}, minmax(4rem, 1fr))`), _$escape(_$createComponent(Show, {
1136
+ return _$ssr(_tmpl$28, _$ssrStyleProperty("min-width:", _$escape(dayColumnMinWidth(layouts()), true)) + _$ssrStyleProperty(";grid-template-rows:", `repeat(${_$escape(hours().length, true)}, minmax(4rem, 1fr))`), _$escape(_$createComponent(Show, {
1117
1137
  get when() {
1118
1138
  return currentTimeLine(day) !== null;
1119
1139
  },
1120
1140
  get children() {
1121
- return _$ssr(_tmpl$26, _$ssrStyleProperty("top:", `${_$escape(currentTimeLine(day) ?? 0, true)}%`));
1141
+ return _$ssr(_tmpl$27, _$ssrStyleProperty("top:", `${_$escape(currentTimeLine(day) ?? 0, true)}%`));
1122
1142
  }
1123
1143
  })), _$escape(_$createComponent(For, {
1124
1144
  get each() {
@@ -1147,12 +1167,12 @@ const TimeGridView = props => {
1147
1167
  children: event => {
1148
1168
  const layout = eventLayout(event);
1149
1169
  const short = event.endDate.getTime() - event.startDate.getTime() < 60 * 60_000;
1150
- return _$ssr(_tmpl$29, _$ssrAttribute("data-short", short ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`), _$escape(_$createComponent(Show, {
1170
+ return _$ssr(_tmpl$30, _$ssrAttribute("data-short", short ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`), _$escape(_$createComponent(Show, {
1151
1171
  get when() {
1152
1172
  return event.title;
1153
1173
  },
1154
1174
  get children() {
1155
- return _$ssr(_tmpl$28, _$escape(event.title));
1175
+ return _$ssr(_tmpl$29, _$escape(event.title));
1156
1176
  }
1157
1177
  })), _$escape(formatTime(event.startDate, dateConfig())), _$escape(formatTime(event.endDate, dateConfig())));
1158
1178
  }
@@ -1198,7 +1218,7 @@ const TimeGridView = props => {
1198
1218
  onCancel: clearInteraction
1199
1219
  });
1200
1220
  };
1201
- return _$ssr(_tmpl$31, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`) + _$ssrStyleProperty(";left:", _$escape(position.left, true)) + _$ssrStyleProperty(";width:", _$escape(position.width, true)) + _$ssrStyleProperty(";z-index:", _$escape(String(20 + layoutItem.lane), true)), _$escape(_$createComponent(EventChip, {
1221
+ return _$ssr(_tmpl$32, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`) + _$ssrStyleProperty(";left:", _$escape(position.left, true)) + _$ssrStyleProperty(";width:", _$escape(position.width, true)) + _$ssrStyleProperty(";z-index:", _$escape(String(20 + layoutItem.lane), true)), _$escape(_$createComponent(EventChip, {
1202
1222
  event: event,
1203
1223
  get owner() {
1204
1224
  return props.owner;
@@ -1218,7 +1238,7 @@ const TimeGridView = props => {
1218
1238
  return props.owner.onEventResize;
1219
1239
  },
1220
1240
  get children() {
1221
- return _$ssr(_tmpl$30, _$ssrAttribute("aria-label", _$escape(messages().resizeEvent, true), false));
1241
+ return _$ssr(_tmpl$31, _$ssrAttribute("aria-label", _$escape(messages().resizeEvent, true), false));
1222
1242
  }
1223
1243
  })));
1224
1244
  }
@@ -1230,14 +1250,14 @@ const TimeGridView = props => {
1230
1250
  const layout = timeRangeLayout(overflow.groupStartDate, overflow.groupEndDate);
1231
1251
  const key = `${dayKey}-${overflow.groupId}`;
1232
1252
  const hiddenTitle = () => overflow.hiddenEvents.map(event => `${formatTime(event.startDate, dateConfig())} ${event.title}`).join("\n");
1233
- return [_$ssr(_tmpl$32, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`), _$ssrAttribute("title", _$escape(hiddenTitle(), true), false) + _$ssrAttribute("aria-label", _$escape(messages().hiddenOverlappingEvents({
1253
+ return [_$ssr(_tmpl$33, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`) + _$ssrStyleProperty(";height:", `${_$escape(layout.height, true)}%`), _$ssrAttribute("title", _$escape(hiddenTitle(), true), false) + _$ssrAttribute("aria-label", _$escape(messages().hiddenOverlappingEvents({
1234
1254
  count: overflow.hiddenEvents.length
1235
1255
  }), true), false), _$escape(overflow.hiddenEvents.length)), _$createComponent(Show, {
1236
1256
  get when() {
1237
1257
  return expandedOverflow() === key;
1238
1258
  },
1239
1259
  get children() {
1240
- return _$ssr(_tmpl$33, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`), _$escape(formatTime(overflow.groupStartDate, dateConfig())), _$escape(formatTime(overflow.groupEndDate, dateConfig())), _$escape(_$createComponent(For, {
1260
+ return _$ssr(_tmpl$34, _$ssrStyleProperty("top:", `${_$escape(layout.top, true)}%`), _$escape(formatTime(overflow.groupStartDate, dateConfig())), _$escape(formatTime(overflow.groupEndDate, dateConfig())), _$escape(_$createComponent(For, {
1241
1261
  get each() {
1242
1262
  return overflow.hiddenEvents;
1243
1263
  },
@@ -1296,11 +1316,11 @@ const YearView = props => {
1296
1316
  };
1297
1317
  });
1298
1318
  });
1299
- return _$ssr(_tmpl$34, _$escape(_$createComponent(For, {
1319
+ return _$ssr(_tmpl$35, _$escape(_$createComponent(For, {
1300
1320
  get each() {
1301
1321
  return months();
1302
1322
  },
1303
- children: month => _$ssr(_tmpl$35, _$escape(month.label), _$escape(_$createComponent(For, {
1323
+ children: month => _$ssr(_tmpl$36, _$escape(month.label), _$escape(_$createComponent(For, {
1304
1324
  get each() {
1305
1325
  return month.days;
1306
1326
  },
@@ -1323,7 +1343,7 @@ const YearView = props => {
1323
1343
  get when() {
1324
1344
  return day.events[0];
1325
1345
  },
1326
- children: event => _$ssr(_tmpl$36, _$ssrAttribute("data-color", event().colorHex ? _$escape(undefined, true) : _$escape(event().color ?? "blue", true), false) + _$ssrAttribute("data-today", day.isToday ? "true" : _$escape(undefined, true), false), _$ssrStyle(event().colorHex ? {
1346
+ children: event => _$ssr(_tmpl$37, _$ssrAttribute("data-color", event().colorHex ? _$escape(undefined, true) : _$escape(event().color ?? "blue", true), false) + _$ssrAttribute("data-today", day.isToday ? "true" : _$escape(undefined, true), false), _$ssrStyle(event().colorHex ? {
1327
1347
  "background-color": day.isToday ? "white" : event().colorHex
1328
1348
  } : undefined))
1329
1349
  })];
@@ -1336,7 +1356,7 @@ const MobileMonthView = props => {
1336
1356
  const dateConfig = createMemo(() => ownerDateConfig(props.owner));
1337
1357
  const selectedDateKey = createMemo(() => calendar.formatDateKey(props.selectedDate, dateConfig()));
1338
1358
  const selectedEvents = createMemo(() => props.events.filter(event => event.dayKey === selectedDateKey()));
1339
- return _$ssr(_tmpl$38, _$escape(_$createComponent(MonthView, {
1359
+ return _$ssr(_tmpl$39, _$escape(_$createComponent(MonthView, {
1340
1360
  get owner() {
1341
1361
  return {
1342
1362
  ...props.owner,
@@ -1366,10 +1386,10 @@ const MobileMonthView = props => {
1366
1386
  return selectedEvents().length > 0;
1367
1387
  },
1368
1388
  get fallback() {
1369
- return _$ssr(_tmpl$39, _$escape(props.labels.noEvents));
1389
+ return _$ssr(_tmpl$40, _$escape(props.labels.noEvents));
1370
1390
  },
1371
1391
  get children() {
1372
- return _$ssr(_tmpl$37, _$escape(_$createComponent(For, {
1392
+ return _$ssr(_tmpl$38, _$escape(_$createComponent(For, {
1373
1393
  get each() {
1374
1394
  return selectedEvents();
1375
1395
  },
@@ -1386,8 +1406,8 @@ const MobileMonthView = props => {
1386
1406
  }
1387
1407
  })));
1388
1408
  };
1389
- const CalendarBody = props => _$ssr(_tmpl$40, _$escape(props.children));
1390
- const Calendar = props => {
1409
+ const CalendarBody = props => _$ssr(_tmpl$41, _$escape(props.children));
1410
+ const CalendarRoot = props => {
1391
1411
  const messages = useUiMessages();
1392
1412
  // Subviews derive their date config from the owner props, so the inherited
1393
1413
  // render locale is merged here once; an explicit dateConfig.locale wins.
@@ -1398,6 +1418,7 @@ const Calendar = props => {
1398
1418
  }
1399
1419
  });
1400
1420
  const view = () => props.view ?? "month";
1421
+ const custom = () => props.customViews?.some(option => option.value === view()) ?? false;
1401
1422
  const dateConfig = createMemo(() => ownerDateConfig(owner));
1402
1423
  const safeDate = value => {
1403
1424
  const parsed = parseDate(value, dateConfig());
@@ -1432,7 +1453,7 @@ const Calendar = props => {
1432
1453
  document.removeEventListener("visibilitychange", updateNow);
1433
1454
  });
1434
1455
  });
1435
- return _$ssr(_tmpl$41, `k2b-content-calendar ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-busy", props.navigationPending ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(CalendarHeader, {
1456
+ return _$ssr(_tmpl$42, `k2b-content-calendar ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-busy", props.navigationPending ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(CalendarHeader, {
1436
1457
  get date() {
1437
1458
  return date();
1438
1459
  },
@@ -1445,38 +1466,24 @@ const Calendar = props => {
1445
1466
  owner: owner
1446
1467
  })), _$escape(props.toolbarContent), _$escape(_$createComponent(Show, {
1447
1468
  get when() {
1448
- return view() !== "month";
1469
+ return !custom();
1449
1470
  },
1450
1471
  get fallback() {
1451
1472
  return _$createComponent(CalendarBody, {
1452
1473
  get children() {
1453
- return _$createComponent(MonthView, {
1454
- owner: owner,
1455
- get date() {
1456
- return date();
1457
- },
1458
- get now() {
1459
- return now();
1460
- },
1461
- get events() {
1462
- return normalizedEvents();
1463
- },
1464
- get labels() {
1465
- return mergedLabels();
1466
- }
1467
- });
1474
+ return props.children;
1468
1475
  }
1469
1476
  });
1470
1477
  },
1471
1478
  get children() {
1472
1479
  return _$createComponent(Show, {
1473
1480
  get when() {
1474
- return view() !== "year";
1481
+ return view() !== "month";
1475
1482
  },
1476
1483
  get fallback() {
1477
1484
  return _$createComponent(CalendarBody, {
1478
1485
  get children() {
1479
- return _$createComponent(YearView, {
1486
+ return _$createComponent(MonthView, {
1480
1487
  owner: owner,
1481
1488
  get date() {
1482
1489
  return date();
@@ -1486,6 +1493,9 @@ const Calendar = props => {
1486
1493
  },
1487
1494
  get events() {
1488
1495
  return normalizedEvents();
1496
+ },
1497
+ get labels() {
1498
+ return mergedLabels();
1489
1499
  }
1490
1500
  });
1491
1501
  }
@@ -1494,12 +1504,12 @@ const Calendar = props => {
1494
1504
  get children() {
1495
1505
  return _$createComponent(Show, {
1496
1506
  get when() {
1497
- return view() !== "mobile-month";
1507
+ return view() !== "year";
1498
1508
  },
1499
1509
  get fallback() {
1500
1510
  return _$createComponent(CalendarBody, {
1501
1511
  get children() {
1502
- return _$createComponent(MobileMonthView, {
1512
+ return _$createComponent(YearView, {
1503
1513
  owner: owner,
1504
1514
  get date() {
1505
1515
  return date();
@@ -1507,36 +1517,61 @@ const Calendar = props => {
1507
1517
  get now() {
1508
1518
  return now();
1509
1519
  },
1510
- get selectedDate() {
1511
- return selectedDate();
1512
- },
1513
1520
  get events() {
1514
1521
  return normalizedEvents();
1515
- },
1516
- get labels() {
1517
- return mergedLabels();
1518
1522
  }
1519
1523
  });
1520
1524
  }
1521
1525
  });
1522
1526
  },
1523
1527
  get children() {
1524
- return _$createComponent(TimeGridView, {
1525
- owner: owner,
1526
- get date() {
1527
- return date();
1528
- },
1529
- get now() {
1530
- return now();
1528
+ return _$createComponent(Show, {
1529
+ get when() {
1530
+ return view() !== "mobile-month";
1531
1531
  },
1532
- get events() {
1533
- return normalizedEvents();
1534
- },
1535
- get labels() {
1536
- return mergedLabels();
1532
+ get fallback() {
1533
+ return _$createComponent(CalendarBody, {
1534
+ get children() {
1535
+ return _$createComponent(MobileMonthView, {
1536
+ owner: owner,
1537
+ get date() {
1538
+ return date();
1539
+ },
1540
+ get now() {
1541
+ return now();
1542
+ },
1543
+ get selectedDate() {
1544
+ return selectedDate();
1545
+ },
1546
+ get events() {
1547
+ return normalizedEvents();
1548
+ },
1549
+ get labels() {
1550
+ return mergedLabels();
1551
+ }
1552
+ });
1553
+ }
1554
+ });
1537
1555
  },
1538
- get days() {
1539
- return days();
1556
+ get children() {
1557
+ return _$createComponent(TimeGridView, {
1558
+ owner: owner,
1559
+ get date() {
1560
+ return date();
1561
+ },
1562
+ get now() {
1563
+ return now();
1564
+ },
1565
+ get events() {
1566
+ return normalizedEvents();
1567
+ },
1568
+ get labels() {
1569
+ return mergedLabels();
1570
+ },
1571
+ get days() {
1572
+ return days();
1573
+ }
1574
+ });
1540
1575
  }
1541
1576
  });
1542
1577
  }
@@ -1546,5 +1581,11 @@ const Calendar = props => {
1546
1581
  }
1547
1582
  })));
1548
1583
  };
1584
+
1585
+ /** JSX infers the values of `customViews`; inference from the last signature, as in `createComponent`, sees plain props. */
1586
+
1587
+ function Calendar(props) {
1588
+ return CalendarRoot(props);
1589
+ }
1549
1590
  export default Calendar;
1550
1591
  //# sourceMappingURL=Calendar.js.map