@k2b/ui 0.5.0 → 0.5.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 (364) hide show
  1. package/dist/browser/actions/Button.js.map +1 -1
  2. package/dist/browser/actions/ContextMenu.js.map +1 -1
  3. package/dist/browser/actions/CopyButton.js.map +1 -1
  4. package/dist/browser/actions/Disclosure.js.map +1 -1
  5. package/dist/browser/actions/Dropdown.js.map +1 -1
  6. package/dist/browser/actions/FilterChip.js.map +1 -1
  7. package/dist/browser/actions/RemoveButton.js.map +1 -1
  8. package/dist/browser/actions/SegmentedControl.js.map +1 -1
  9. package/dist/browser/actions/SplitButton.js.map +1 -1
  10. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  11. package/dist/browser/actions/Tabs.js.map +1 -1
  12. package/dist/browser/actions/Toolbar.js.map +1 -1
  13. package/dist/browser/actions/index.js.map +1 -1
  14. package/dist/browser/chat/ChatComposer.js.map +1 -1
  15. package/dist/browser/chat/ChatContextPopup.js.map +1 -1
  16. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  17. package/dist/browser/chat/ChatRoot.js.map +1 -1
  18. package/dist/browser/chat/ChatTasks.js +1 -1
  19. package/dist/browser/chat/ChatTasks.js.map +1 -1
  20. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  21. package/dist/browser/chat/chat-behavior.js.map +1 -1
  22. package/dist/browser/chat/composer-document.js.map +1 -1
  23. package/dist/browser/chat/index.js.map +1 -1
  24. package/dist/browser/content/Calendar.js.map +1 -1
  25. package/dist/browser/content/Chart.js.map +1 -1
  26. package/dist/browser/content/ChartExplorer.js.map +1 -1
  27. package/dist/browser/content/ChartExplorerControls.js.map +1 -1
  28. package/dist/browser/content/ChartFilterControls.js +1 -1
  29. package/dist/browser/content/ChartFilterControls.js.map +1 -1
  30. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  31. package/dist/browser/content/CodeDisplay.js.map +1 -1
  32. package/dist/browser/content/DataTable.js.map +1 -1
  33. package/dist/browser/content/Docs.js.map +1 -1
  34. package/dist/browser/content/FileBrowser.js.map +1 -1
  35. package/dist/browser/content/FileGrid.js.map +1 -1
  36. package/dist/browser/content/FileTree.js.map +1 -1
  37. package/dist/browser/content/FileView.js.map +1 -1
  38. package/dist/browser/content/Lightbox.js.map +1 -1
  39. package/dist/browser/content/LogEntriesTable.js.map +1 -1
  40. package/dist/browser/content/MarkdownView.js.map +1 -1
  41. package/dist/browser/content/Pagination.js.map +1 -1
  42. package/dist/browser/content/PdfPreview.js.map +1 -1
  43. package/dist/browser/content/RangePicker.js.map +1 -1
  44. package/dist/browser/content/StructuredDataPreview.js.map +1 -1
  45. package/dist/browser/content/calendar-event-layout.js.map +1 -1
  46. package/dist/browser/content/calendar-pointer.js.map +1 -1
  47. package/dist/browser/content/chart-cursor.js.map +1 -1
  48. package/dist/browser/content/chart-explorer.js.map +1 -1
  49. package/dist/browser/content/chart-inspection.js.map +1 -1
  50. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  51. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  52. package/dist/browser/content/chart-snapshot.js.map +1 -1
  53. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  54. package/dist/browser/content/chart-svg.js.map +1 -1
  55. package/dist/browser/content/code-highlight.js.map +1 -1
  56. package/dist/browser/content/collection-selection.js.map +1 -1
  57. package/dist/browser/content/delimited-preferences.js.map +1 -1
  58. package/dist/browser/content/file-tree.js.map +1 -1
  59. package/dist/browser/content/file-view-preview.js.map +1 -1
  60. package/dist/browser/content/index.js.map +1 -1
  61. package/dist/browser/feedback/InlineGuidance.js.map +1 -1
  62. package/dist/browser/feedback/Tooltip.js.map +1 -1
  63. package/dist/browser/feedback/dialog-core.js.map +1 -1
  64. package/dist/browser/feedback/index.js.map +1 -1
  65. package/dist/browser/feedback/prompts.js.map +1 -1
  66. package/dist/browser/feedback/toast.js.map +1 -1
  67. package/dist/browser/feedback/tooltip-position.js.map +1 -1
  68. package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
  69. package/dist/browser/inputs/AutocompleteSelect.js.map +1 -1
  70. package/dist/browser/inputs/Checkbox.js.map +1 -1
  71. package/dist/browser/inputs/CheckboxCard.js.map +1 -1
  72. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  73. package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
  74. package/dist/browser/inputs/Combobox.js.map +1 -1
  75. package/dist/browser/inputs/DatePicker.js.map +1 -1
  76. package/dist/browser/inputs/FileInputs.js.map +1 -1
  77. package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
  78. package/dist/browser/inputs/NumberInput.js.map +1 -1
  79. package/dist/browser/inputs/Select.js.map +1 -1
  80. package/dist/browser/inputs/SelectChip.js.map +1 -1
  81. package/dist/browser/inputs/SpecialInputs.js.map +1 -1
  82. package/dist/browser/inputs/Switch.js.map +1 -1
  83. package/dist/browser/inputs/TagEditor.js.map +1 -1
  84. package/dist/browser/inputs/TagsInput.js.map +1 -1
  85. package/dist/browser/inputs/TemplateEditor.js.map +1 -1
  86. package/dist/browser/inputs/TextInput.js.map +1 -1
  87. package/dist/browser/inputs/choice.js.map +1 -1
  88. package/dist/browser/inputs/completion/behaviors.js.map +1 -1
  89. package/dist/browser/inputs/completion/engine.js.map +1 -1
  90. package/dist/browser/inputs/completion/index.js.map +1 -1
  91. package/dist/browser/inputs/completion/overlay.js.map +1 -1
  92. package/dist/browser/inputs/date-picker.js.map +1 -1
  93. package/dist/browser/inputs/editor-dom.js.map +1 -1
  94. package/dist/browser/inputs/field-contract.js.map +1 -1
  95. package/dist/browser/inputs/icon-options.js.map +1 -1
  96. package/dist/browser/inputs/image-crop.js.map +1 -1
  97. package/dist/browser/inputs/index.js.map +1 -1
  98. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  99. package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
  100. package/dist/browser/inputs/markdown/actions.js.map +1 -1
  101. package/dist/browser/inputs/markdown/active-formats.js.map +1 -1
  102. package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
  103. package/dist/browser/inputs/markdown/code-zone.js.map +1 -1
  104. package/dist/browser/internal/color.js.map +1 -1
  105. package/dist/browser/internal/field.js.map +1 -1
  106. package/dist/browser/internal/portal.js.map +1 -1
  107. package/dist/browser/intl/Format.js.map +1 -1
  108. package/dist/browser/intl/index.js.map +1 -1
  109. package/dist/browser/intl/locale.js.map +1 -1
  110. package/dist/browser/intl/messages.js.map +1 -1
  111. package/dist/browser/layout/AppOverview.js.map +1 -1
  112. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  113. package/dist/browser/layout/BottomSheet.js.map +1 -1
  114. package/dist/browser/layout/DataPanel.js.map +1 -1
  115. package/dist/browser/layout/DetailPanel.js.map +1 -1
  116. package/dist/browser/layout/Discussion.js.map +1 -1
  117. package/dist/browser/layout/FloatingWindow.js.map +1 -1
  118. package/dist/browser/layout/Navigation.js.map +1 -1
  119. package/dist/browser/layout/PanelDialog.js.map +1 -1
  120. package/dist/browser/layout/PanelHeader.js.map +1 -1
  121. package/dist/browser/layout/Panes.js.map +1 -1
  122. package/dist/browser/layout/PullToRefresh.js.map +1 -1
  123. package/dist/browser/layout/ScrollArea.js.map +1 -1
  124. package/dist/browser/layout/Settings.js.map +1 -1
  125. package/dist/browser/layout/SettingsCollection.js.map +1 -1
  126. package/dist/browser/layout/SettingsModal.js.map +1 -1
  127. package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
  128. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  129. package/dist/browser/layout/app-workspace-state.js.map +1 -1
  130. package/dist/browser/layout/floating-window-geometry.js.map +1 -1
  131. package/dist/browser/layout/index.js.map +1 -1
  132. package/dist/browser/layout/navigation-model.js.map +1 -1
  133. package/dist/browser/layout/panes-layout.js.map +1 -1
  134. package/dist/browser/layout/scroll-fade.js.map +1 -1
  135. package/dist/browser/layout/stable-id.js.map +1 -1
  136. package/dist/browser/surfaces/Avatar.js.map +1 -1
  137. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  138. package/dist/browser/surfaces/LinkCard.js.map +1 -1
  139. package/dist/browser/surfaces/NotFoundState.js.map +1 -1
  140. package/dist/browser/surfaces/NoticeCard.js.map +1 -1
  141. package/dist/browser/surfaces/Paper.js.map +1 -1
  142. package/dist/browser/surfaces/Placeholder.js.map +1 -1
  143. package/dist/browser/surfaces/ProgressBar.js.map +1 -1
  144. package/dist/browser/surfaces/StatCell.js.map +1 -1
  145. package/dist/browser/surfaces/StatGrid.js.map +1 -1
  146. package/dist/browser/surfaces/StatusBadge.js.map +1 -1
  147. package/dist/browser/surfaces/Tag.js.map +1 -1
  148. package/dist/browser/surfaces/index.js.map +1 -1
  149. package/dist/browser/widgets/Widget.js.map +1 -1
  150. package/dist/browser/widgets/WidgetHero.js.map +1 -1
  151. package/dist/browser/widgets/WidgetList.js.map +1 -1
  152. package/dist/browser/widgets/WidgetPills.js.map +1 -1
  153. package/dist/browser/widgets/WidgetStat.js.map +1 -1
  154. package/dist/browser/widgets/WidgetStatus.js.map +1 -1
  155. package/dist/ssr/actions/Button.js +5 -4
  156. package/dist/ssr/actions/Button.js.map +1 -1
  157. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  158. package/dist/ssr/actions/CopyButton.js +2 -1
  159. package/dist/ssr/actions/CopyButton.js.map +1 -1
  160. package/dist/ssr/actions/Disclosure.js.map +1 -1
  161. package/dist/ssr/actions/Dropdown.js +7 -6
  162. package/dist/ssr/actions/Dropdown.js.map +1 -1
  163. package/dist/ssr/actions/FilterChip.js +5 -4
  164. package/dist/ssr/actions/FilterChip.js.map +1 -1
  165. package/dist/ssr/actions/RemoveButton.js +1 -0
  166. package/dist/ssr/actions/RemoveButton.js.map +1 -1
  167. package/dist/ssr/actions/SegmentedControl.js.map +1 -1
  168. package/dist/ssr/actions/SplitButton.js +1 -0
  169. package/dist/ssr/actions/SplitButton.js.map +1 -1
  170. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  171. package/dist/ssr/actions/Tabs.js.map +1 -1
  172. package/dist/ssr/actions/Toolbar.js.map +1 -1
  173. package/dist/ssr/actions/index.js.map +1 -1
  174. package/dist/ssr/chat/ChatComposer.js +6 -5
  175. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  176. package/dist/ssr/chat/ChatContextPopup.js.map +1 -1
  177. package/dist/ssr/chat/ChatPrimitives.js +6 -5
  178. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  179. package/dist/ssr/chat/ChatRoot.js.map +1 -1
  180. package/dist/ssr/chat/ChatTasks.js +1 -1
  181. package/dist/ssr/chat/ChatTasks.js.map +1 -1
  182. package/dist/ssr/chat/ChatTimeline.js +5 -4
  183. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  184. package/dist/ssr/chat/chat-behavior.js.map +1 -1
  185. package/dist/ssr/chat/composer-document.js.map +1 -1
  186. package/dist/ssr/chat/index.js.map +1 -1
  187. package/dist/ssr/content/Calendar.js +2 -1
  188. package/dist/ssr/content/Calendar.js.map +1 -1
  189. package/dist/ssr/content/Chart.js.map +1 -1
  190. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  191. package/dist/ssr/content/ChartExplorerControls.js +5 -4
  192. package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
  193. package/dist/ssr/content/ChartFilterControls.js +3 -2
  194. package/dist/ssr/content/ChartFilterControls.js.map +1 -1
  195. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  196. package/dist/ssr/content/CodeDisplay.js.map +1 -1
  197. package/dist/ssr/content/DataTable.js +1 -0
  198. package/dist/ssr/content/DataTable.js.map +1 -1
  199. package/dist/ssr/content/Docs.js +1 -0
  200. package/dist/ssr/content/Docs.js.map +1 -1
  201. package/dist/ssr/content/FileBrowser.js +2 -1
  202. package/dist/ssr/content/FileBrowser.js.map +1 -1
  203. package/dist/ssr/content/FileGrid.js.map +1 -1
  204. package/dist/ssr/content/FileTree.js +2 -1
  205. package/dist/ssr/content/FileTree.js.map +1 -1
  206. package/dist/ssr/content/FileView.js +5 -4
  207. package/dist/ssr/content/FileView.js.map +1 -1
  208. package/dist/ssr/content/Lightbox.js +2 -1
  209. package/dist/ssr/content/Lightbox.js.map +1 -1
  210. package/dist/ssr/content/LogEntriesTable.js.map +1 -1
  211. package/dist/ssr/content/MarkdownView.js.map +1 -1
  212. package/dist/ssr/content/Pagination.js +2 -1
  213. package/dist/ssr/content/Pagination.js.map +1 -1
  214. package/dist/ssr/content/PdfPreview.js.map +1 -1
  215. package/dist/ssr/content/RangePicker.js.map +1 -1
  216. package/dist/ssr/content/StructuredDataPreview.js.map +1 -1
  217. package/dist/ssr/content/calendar-event-layout.js.map +1 -1
  218. package/dist/ssr/content/calendar-pointer.js.map +1 -1
  219. package/dist/ssr/content/chart-cursor.js.map +1 -1
  220. package/dist/ssr/content/chart-explorer.js.map +1 -1
  221. package/dist/ssr/content/chart-inspection.js.map +1 -1
  222. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  223. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  224. package/dist/ssr/content/chart-snapshot.js.map +1 -1
  225. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  226. package/dist/ssr/content/chart-svg.js.map +1 -1
  227. package/dist/ssr/content/code-highlight.js.map +1 -1
  228. package/dist/ssr/content/collection-selection.js.map +1 -1
  229. package/dist/ssr/content/delimited-preferences.js.map +1 -1
  230. package/dist/ssr/content/file-tree.js.map +1 -1
  231. package/dist/ssr/content/file-view-preview.js.map +1 -1
  232. package/dist/ssr/content/index.js.map +1 -1
  233. package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
  234. package/dist/ssr/feedback/Tooltip.js.map +1 -1
  235. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  236. package/dist/ssr/feedback/index.js.map +1 -1
  237. package/dist/ssr/feedback/prompts.js +3 -2
  238. package/dist/ssr/feedback/prompts.js.map +1 -1
  239. package/dist/ssr/feedback/toast.js.map +1 -1
  240. package/dist/ssr/feedback/tooltip-position.js.map +1 -1
  241. package/dist/ssr/inputs/AutocompleteEditor.js +3 -2
  242. package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
  243. package/dist/ssr/inputs/AutocompleteSelect.js +5 -4
  244. package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -1
  245. package/dist/ssr/inputs/Checkbox.js +1 -0
  246. package/dist/ssr/inputs/Checkbox.js.map +1 -1
  247. package/dist/ssr/inputs/CheckboxCard.js.map +1 -1
  248. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  249. package/dist/ssr/inputs/ChoiceInputs.js +1 -0
  250. package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
  251. package/dist/ssr/inputs/Combobox.js +2 -1
  252. package/dist/ssr/inputs/Combobox.js.map +1 -1
  253. package/dist/ssr/inputs/DatePicker.js +4 -3
  254. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  255. package/dist/ssr/inputs/FileInputs.js +2 -1
  256. package/dist/ssr/inputs/FileInputs.js.map +1 -1
  257. package/dist/ssr/inputs/MultiSelectInput.js +4 -3
  258. package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
  259. package/dist/ssr/inputs/NumberInput.js +2 -1
  260. package/dist/ssr/inputs/NumberInput.js.map +1 -1
  261. package/dist/ssr/inputs/Select.js +4 -3
  262. package/dist/ssr/inputs/Select.js.map +1 -1
  263. package/dist/ssr/inputs/SelectChip.js +3 -2
  264. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  265. package/dist/ssr/inputs/SpecialInputs.js +1 -0
  266. package/dist/ssr/inputs/SpecialInputs.js.map +1 -1
  267. package/dist/ssr/inputs/Switch.js.map +1 -1
  268. package/dist/ssr/inputs/TagEditor.js +3 -2
  269. package/dist/ssr/inputs/TagEditor.js.map +1 -1
  270. package/dist/ssr/inputs/TagsInput.js.map +1 -1
  271. package/dist/ssr/inputs/TemplateEditor.js +1 -0
  272. package/dist/ssr/inputs/TemplateEditor.js.map +1 -1
  273. package/dist/ssr/inputs/TextInput.js +4 -3
  274. package/dist/ssr/inputs/TextInput.js.map +1 -1
  275. package/dist/ssr/inputs/choice.js.map +1 -1
  276. package/dist/ssr/inputs/completion/behaviors.js.map +1 -1
  277. package/dist/ssr/inputs/completion/engine.js.map +1 -1
  278. package/dist/ssr/inputs/completion/index.js.map +1 -1
  279. package/dist/ssr/inputs/completion/overlay.js.map +1 -1
  280. package/dist/ssr/inputs/date-picker.js.map +1 -1
  281. package/dist/ssr/inputs/editor-dom.js.map +1 -1
  282. package/dist/ssr/inputs/field-contract.js.map +1 -1
  283. package/dist/ssr/inputs/icon-options.js.map +1 -1
  284. package/dist/ssr/inputs/image-crop.js.map +1 -1
  285. package/dist/ssr/inputs/index.js.map +1 -1
  286. package/dist/ssr/inputs/markdown/MarkdownEditor.js +3 -2
  287. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  288. package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
  289. package/dist/ssr/inputs/markdown/actions.js.map +1 -1
  290. package/dist/ssr/inputs/markdown/active-formats.js.map +1 -1
  291. package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
  292. package/dist/ssr/inputs/markdown/code-zone.js.map +1 -1
  293. package/dist/ssr/internal/color.js.map +1 -1
  294. package/dist/ssr/internal/field.js.map +1 -1
  295. package/dist/ssr/internal/portal.js.map +1 -1
  296. package/dist/ssr/intl/Format.js.map +1 -1
  297. package/dist/ssr/intl/index.js.map +1 -1
  298. package/dist/ssr/intl/locale.js.map +1 -1
  299. package/dist/ssr/intl/messages.js.map +1 -1
  300. package/dist/ssr/layout/AppOverview.js +2 -1
  301. package/dist/ssr/layout/AppOverview.js.map +1 -1
  302. package/dist/ssr/layout/AppWorkspace.js +7 -6
  303. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  304. package/dist/ssr/layout/BottomSheet.js.map +1 -1
  305. package/dist/ssr/layout/DataPanel.js +1 -0
  306. package/dist/ssr/layout/DataPanel.js.map +1 -1
  307. package/dist/ssr/layout/DetailPanel.js +1 -0
  308. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  309. package/dist/ssr/layout/Discussion.js +3 -2
  310. package/dist/ssr/layout/Discussion.js.map +1 -1
  311. package/dist/ssr/layout/FloatingWindow.js +1 -0
  312. package/dist/ssr/layout/FloatingWindow.js.map +1 -1
  313. package/dist/ssr/layout/Navigation.js +3 -2
  314. package/dist/ssr/layout/Navigation.js.map +1 -1
  315. package/dist/ssr/layout/PanelDialog.js +1 -0
  316. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  317. package/dist/ssr/layout/PanelHeader.js.map +1 -1
  318. package/dist/ssr/layout/Panes.js.map +1 -1
  319. package/dist/ssr/layout/PullToRefresh.js.map +1 -1
  320. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  321. package/dist/ssr/layout/Settings.js +2 -1
  322. package/dist/ssr/layout/Settings.js.map +1 -1
  323. package/dist/ssr/layout/SettingsCollection.js +1 -0
  324. package/dist/ssr/layout/SettingsCollection.js.map +1 -1
  325. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  326. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
  327. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  328. package/dist/ssr/layout/app-workspace-state.js.map +1 -1
  329. package/dist/ssr/layout/floating-window-geometry.js.map +1 -1
  330. package/dist/ssr/layout/index.js.map +1 -1
  331. package/dist/ssr/layout/navigation-model.js.map +1 -1
  332. package/dist/ssr/layout/panes-layout.js.map +1 -1
  333. package/dist/ssr/layout/scroll-fade.js.map +1 -1
  334. package/dist/ssr/layout/stable-id.js.map +1 -1
  335. package/dist/ssr/surfaces/Avatar.js +2 -1
  336. package/dist/ssr/surfaces/Avatar.js.map +1 -1
  337. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  338. package/dist/ssr/surfaces/LinkCard.js.map +1 -1
  339. package/dist/ssr/surfaces/NotFoundState.js.map +1 -1
  340. package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
  341. package/dist/ssr/surfaces/Paper.js +2 -1
  342. package/dist/ssr/surfaces/Paper.js.map +1 -1
  343. package/dist/ssr/surfaces/Placeholder.js +2 -1
  344. package/dist/ssr/surfaces/Placeholder.js.map +1 -1
  345. package/dist/ssr/surfaces/ProgressBar.js.map +1 -1
  346. package/dist/ssr/surfaces/StatCell.js +2 -1
  347. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  348. package/dist/ssr/surfaces/StatGrid.js +1 -0
  349. package/dist/ssr/surfaces/StatGrid.js.map +1 -1
  350. package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
  351. package/dist/ssr/surfaces/Tag.js.map +1 -1
  352. package/dist/ssr/surfaces/index.js.map +1 -1
  353. package/dist/ssr/widgets/Widget.js +1 -0
  354. package/dist/ssr/widgets/Widget.js.map +1 -1
  355. package/dist/ssr/widgets/WidgetHero.js.map +1 -1
  356. package/dist/ssr/widgets/WidgetList.js.map +1 -1
  357. package/dist/ssr/widgets/WidgetPills.js.map +1 -1
  358. package/dist/ssr/widgets/WidgetStat.js +1 -0
  359. package/dist/ssr/widgets/WidgetStat.js.map +1 -1
  360. package/dist/ssr/widgets/WidgetStatus.js.map +1 -1
  361. package/dist/styles.css +1 -1
  362. package/dist/types/actions/SpotlightSearch.d.ts +1 -1
  363. package/dist/types/feedback/prompts.d.ts +2 -2
  364. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"names":["For","Show","splitProps","createFieldMeta","Field","fieldControlAria","useUiMessages","commitFieldValue","resolveMaybeAccessor","PinInput","props","messages","meta","id","length","Math","max","inputs","digits","value","replace","slice","error","emit","onValueChange","onValueCommit","updateDigit","index","input","disabled","readOnly","digit","current","focus","select","handleKeyDown","event","key","onSubmit","shiftKey","metaKey","preventDefault","handlePaste","pasted","clipboardData","getData","focused","indexOf","document","activeElement","start","insert","next","min","_$createComponent","class","label","description","labelFor","required","children","_$ssrElement","_$mergeProps","controlId","data-stretch","stretch","undefined","role","_$escape","each","Array","from","_","_$ssr","_tmpl$","_$ssrAttribute","password","pinDigit","total","when","name","_tmpl$2","Slider","local","rest","Number","percentage","span","track","position","center","low","high","resetValue","defaultValue","_tmpl$4","type","style","background","showValue","_tmpl$3","formatValue","ColorInput","currentColor","isTransparent","transparentValue","compact","picker","control","_tmpl$5","_tmpl$9","_tmpl$6","_$ssrStyle","_tmpl$7","toUpperCase","transparent","_tmpl$8","useColor","useTransparent"],"sources":["inputs/ChoiceInputs.tsx"],"sourcesContent":["import { For, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type PinInputProps = ValueFieldProps<string> & {\n length?: number;\n name?: string;\n stretch?: boolean;\n password?: boolean;\n readOnly?: boolean;\n onSubmit?: () => void;\n};\n\nexport function PinInput(props: PinInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const length = () => Math.max(1, props.length ?? 6);\n let inputs: HTMLInputElement[] = [];\n const digits = () => (resolveMaybeAccessor(props.value) ?? \"\").replace(/\\D/g, \"\").slice(0, length());\n const error = () => resolveMaybeAccessor(props.error);\n const emit = (value: string) => {\n props.onValueChange?.(value);\n if (value.length === length()) props.onValueCommit?.(value);\n };\n\n const updateDigit = (index: number, input: string) => {\n if (props.disabled || props.readOnly) return;\n const digit = input.replace(/\\D/g, \"\").slice(-1);\n const current = digits();\n emit(`${current.slice(0, index)}${digit}${current.slice(index + 1)}`);\n if (digit && index < length() - 1) {\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n }\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent) => {\n if (props.disabled || props.readOnly) return;\n if (event.key === \"Enter\" && props.onSubmit && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n props.onSubmit();\n } else if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n } else if (event.key === \"ArrowRight\" && index < length() - 1) {\n event.preventDefault();\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n } else if (event.key === \"Backspace\" && !digits()[index] && index > 0) {\n event.preventDefault();\n const current = digits();\n emit(`${current.slice(0, index - 1)}${current.slice(index)}`);\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n }\n };\n\n const handlePaste = (event: ClipboardEvent) => {\n if (props.disabled || props.readOnly) return;\n const pasted = event.clipboardData?.getData(\"text\").replace(/\\D/g, \"\");\n if (!pasted) return;\n event.preventDefault();\n const focused = inputs.indexOf(document.activeElement as HTMLInputElement);\n const start = focused >= 0 ? focused : 0;\n const insert = pasted.slice(0, length() - start);\n const current = digits();\n emit(`${current.slice(0, start)}${insert}${current.slice(start + insert.length)}`.slice(0, length()));\n const next = Math.min(start + insert.length, length() - 1);\n inputs[next]?.focus();\n inputs[next]?.select();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-pin-input\"\n id={meta.controlId}\n data-stretch={props.stretch ? \"true\" : undefined}\n role=\"group\"\n {...fieldControlAria(meta, props)}\n onPaste={handlePaste}\n >\n <For each={Array.from({ length: length() })}>\n {(_, index) => (\n <input\n ref={(element) => {\n inputs[index()] = element;\n }}\n class=\"k2b-control k2b-pin-input__digit\"\n data-filled={digits()[index()] ? \"true\" : undefined}\n type={props.password ? \"password\" : \"text\"}\n inputmode=\"numeric\"\n autocomplete=\"off\"\n pattern=\"[0-9]\"\n maxlength={1}\n value={digits()[index()] ?? \"\"}\n required={props.required}\n disabled={props.disabled}\n readOnly={props.readOnly}\n aria-label={messages().pinDigit({ index: index() + 1, total: length() })}\n onInput={(event) => updateDigit(index(), event.currentTarget.value)}\n onKeyDown={(event) => handleKeyDown(index(), event)}\n onFocus={(event) => event.currentTarget.select()}\n />\n )}\n </For>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={digits()} />}</Show>\n </Field>\n );\n}\n\nexport type SliderProps = FieldProps &\n Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"onInput\" | \"onChange\" | keyof FieldProps> &\n ValueFieldProps<number> & {\n value: MaybeAccessor<number>;\n formatValue?: (value: number) => string;\n showValue?: boolean;\n center?: boolean;\n defaultValue?: number;\n };\n\nexport function Slider(props: SliderProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"aria-label\",\n \"center\",\n \"class\",\n \"defaultValue\",\n \"description\",\n \"error\",\n \"id\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"required\",\n \"showValue\",\n \"value\",\n \"formatValue\",\n ]);\n const meta = createFieldMeta(local.id);\n const min = () => Number(rest.min ?? 0);\n const max = () => Number(rest.max ?? 100);\n const value = () => resolveMaybeAccessor(local.value) ?? min();\n const error = () => resolveMaybeAccessor(local.error);\n const percentage = () => {\n const span = max() - min();\n return span <= 0 ? 0 : Math.min(100, Math.max(0, ((value() - min()) / span) * 100));\n };\n const track = () => {\n const position = percentage();\n if (local.center) {\n const low = Math.min(50, position);\n const high = Math.max(50, position);\n return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, var(--k2b-action) ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;\n }\n return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;\n };\n const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div class=\"k2b-slider\">\n <input\n {...rest}\n id={meta.controlId}\n type=\"range\"\n value={value()}\n style={{ background: track() }}\n {...fieldControlAria(meta, local)}\n onInput={(event) => local.onValueChange?.(event.currentTarget.valueAsNumber)}\n onChange={(event) => local.onValueCommit?.(event.currentTarget.valueAsNumber)}\n onDblClick={() => {\n const next = resetValue();\n commitFieldValue(local, next);\n }}\n />\n <Show when={local.showValue ?? true}>\n <output for={meta.controlId}>{local.formatValue?.(value()) ?? value()}</output>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type ColorInputProps = ValueFieldProps<string> & {\n name?: string;\n compact?: boolean;\n transparent?: boolean;\n transparentValue?: MaybeAccessor<boolean>;\n onTransparentValueChange?: (value: boolean) => void;\n};\n\nexport function ColorInput(props: ColorInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const currentColor = () => resolveMaybeAccessor(props.value) || \"#3b82f6\";\n const isTransparent = () => resolveMaybeAccessor(props.transparentValue) ?? false;\n const error = () => resolveMaybeAccessor(props.error);\n const compact = () => props.compact ?? !props.label;\n let picker: HTMLInputElement | undefined;\n\n const control = () =>\n compact() ? (\n <span class=\"k2b-color-input k2b-color-input--compact\">\n <button\n type=\"button\"\n class=\"k2b-color-input__swatch\"\n style={{ \"background-color\": currentColor() }}\n disabled={props.disabled}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n />\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </span>\n ) : (\n <div\n class=\"k2b-color-input\"\n data-disabled={props.disabled || isTransparent() ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <button\n type=\"button\"\n class=\"k2b-color-input__value\"\n disabled={props.disabled || isTransparent()}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n >\n <span\n class=\"k2b-color-input__swatch\"\n data-transparent={isTransparent() ? \"true\" : undefined}\n style={isTransparent() ? undefined : { \"background-color\": currentColor() }}\n />\n <code>{isTransparent() ? \"transparent\" : currentColor().toUpperCase()}</code>\n </button>\n <Show when={props.transparent}>\n <button\n type=\"button\"\n class=\"k2b-color-input__transparent\"\n aria-label={isTransparent() ? messages().useColor : messages().useTransparent}\n aria-pressed={isTransparent()}\n disabled={props.disabled}\n onClick={() => props.onTransparentValueChange?.(!isTransparent())}\n >\n <i class=\"ti ti-grid-dots\" aria-hidden=\"true\" />\n </button>\n </Show>\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled || isTransparent()}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </div>\n );\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n {control()}\n </Field>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/ChoiceInputs.tsx"],"sourcesContent":["import { For, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type PinInputProps = ValueFieldProps<string> & {\n length?: number;\n name?: string;\n stretch?: boolean;\n password?: boolean;\n readOnly?: boolean;\n onSubmit?: () => void;\n};\n\nexport function PinInput(props: PinInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const length = () => Math.max(1, props.length ?? 6);\n let inputs: HTMLInputElement[] = [];\n const digits = () => (resolveMaybeAccessor(props.value) ?? \"\").replace(/\\D/g, \"\").slice(0, length());\n const error = () => resolveMaybeAccessor(props.error);\n const emit = (value: string) => {\n props.onValueChange?.(value);\n if (value.length === length()) props.onValueCommit?.(value);\n };\n\n const updateDigit = (index: number, input: string) => {\n if (props.disabled || props.readOnly) return;\n const digit = input.replace(/\\D/g, \"\").slice(-1);\n const current = digits();\n emit(`${current.slice(0, index)}${digit}${current.slice(index + 1)}`);\n if (digit && index < length() - 1) {\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n }\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent) => {\n if (props.disabled || props.readOnly) return;\n if (event.key === \"Enter\" && props.onSubmit && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n props.onSubmit();\n } else if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n } else if (event.key === \"ArrowRight\" && index < length() - 1) {\n event.preventDefault();\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n } else if (event.key === \"Backspace\" && !digits()[index] && index > 0) {\n event.preventDefault();\n const current = digits();\n emit(`${current.slice(0, index - 1)}${current.slice(index)}`);\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n }\n };\n\n const handlePaste = (event: ClipboardEvent) => {\n if (props.disabled || props.readOnly) return;\n const pasted = event.clipboardData?.getData(\"text\").replace(/\\D/g, \"\");\n if (!pasted) return;\n event.preventDefault();\n const focused = inputs.indexOf(document.activeElement as HTMLInputElement);\n const start = focused >= 0 ? focused : 0;\n const insert = pasted.slice(0, length() - start);\n const current = digits();\n emit(`${current.slice(0, start)}${insert}${current.slice(start + insert.length)}`.slice(0, length()));\n const next = Math.min(start + insert.length, length() - 1);\n inputs[next]?.focus();\n inputs[next]?.select();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-pin-input\"\n id={meta.controlId}\n data-stretch={props.stretch ? \"true\" : undefined}\n role=\"group\"\n {...fieldControlAria(meta, props)}\n onPaste={handlePaste}\n >\n <For each={Array.from({ length: length() })}>\n {(_, index) => (\n <input\n ref={(element) => {\n inputs[index()] = element;\n }}\n class=\"k2b-control k2b-pin-input__digit\"\n data-filled={digits()[index()] ? \"true\" : undefined}\n type={props.password ? \"password\" : \"text\"}\n inputmode=\"numeric\"\n autocomplete=\"off\"\n pattern=\"[0-9]\"\n maxlength={1}\n value={digits()[index()] ?? \"\"}\n required={props.required}\n disabled={props.disabled}\n readOnly={props.readOnly}\n aria-label={messages().pinDigit({ index: index() + 1, total: length() })}\n onInput={(event) => updateDigit(index(), event.currentTarget.value)}\n onKeyDown={(event) => handleKeyDown(index(), event)}\n onFocus={(event) => event.currentTarget.select()}\n />\n )}\n </For>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={digits()} />}</Show>\n </Field>\n );\n}\n\nexport type SliderProps = FieldProps &\n Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"onInput\" | \"onChange\" | keyof FieldProps> &\n ValueFieldProps<number> & {\n value: MaybeAccessor<number>;\n formatValue?: (value: number) => string;\n showValue?: boolean;\n center?: boolean;\n defaultValue?: number;\n };\n\nexport function Slider(props: SliderProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"aria-label\",\n \"center\",\n \"class\",\n \"defaultValue\",\n \"description\",\n \"error\",\n \"id\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"required\",\n \"showValue\",\n \"value\",\n \"formatValue\",\n ]);\n const meta = createFieldMeta(local.id);\n const min = () => Number(rest.min ?? 0);\n const max = () => Number(rest.max ?? 100);\n const value = () => resolveMaybeAccessor(local.value) ?? min();\n const error = () => resolveMaybeAccessor(local.error);\n const percentage = () => {\n const span = max() - min();\n return span <= 0 ? 0 : Math.min(100, Math.max(0, ((value() - min()) / span) * 100));\n };\n const track = () => {\n const position = percentage();\n if (local.center) {\n const low = Math.min(50, position);\n const high = Math.max(50, position);\n return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, var(--k2b-action) ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;\n }\n return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;\n };\n const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div class=\"k2b-slider\">\n <input\n {...rest}\n id={meta.controlId}\n type=\"range\"\n value={value()}\n style={{ background: track() }}\n {...fieldControlAria(meta, local)}\n onInput={(event) => local.onValueChange?.(event.currentTarget.valueAsNumber)}\n onChange={(event) => local.onValueCommit?.(event.currentTarget.valueAsNumber)}\n onDblClick={() => {\n const next = resetValue();\n commitFieldValue(local, next);\n }}\n />\n <Show when={local.showValue ?? true}>\n <output for={meta.controlId}>{local.formatValue?.(value()) ?? value()}</output>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type ColorInputProps = ValueFieldProps<string> & {\n name?: string;\n compact?: boolean;\n transparent?: boolean;\n transparentValue?: MaybeAccessor<boolean>;\n onTransparentValueChange?: (value: boolean) => void;\n};\n\nexport function ColorInput(props: ColorInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const currentColor = () => resolveMaybeAccessor(props.value) || \"#3b82f6\";\n const isTransparent = () => resolveMaybeAccessor(props.transparentValue) ?? false;\n const error = () => resolveMaybeAccessor(props.error);\n const compact = () => props.compact ?? !props.label;\n let picker: HTMLInputElement | undefined;\n\n const control = () =>\n compact() ? (\n <span class=\"k2b-color-input k2b-color-input--compact\">\n <button\n type=\"button\"\n class=\"k2b-color-input__swatch\"\n style={{ \"background-color\": currentColor() }}\n disabled={props.disabled}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n />\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </span>\n ) : (\n <div\n class=\"k2b-color-input\"\n data-disabled={props.disabled || isTransparent() ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <button\n type=\"button\"\n class=\"k2b-color-input__value\"\n disabled={props.disabled || isTransparent()}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n >\n <span\n class=\"k2b-color-input__swatch\"\n data-transparent={isTransparent() ? \"true\" : undefined}\n style={isTransparent() ? undefined : { \"background-color\": currentColor() }}\n />\n <code>{isTransparent() ? \"transparent\" : currentColor().toUpperCase()}</code>\n </button>\n <Show when={props.transparent}>\n <button\n type=\"button\"\n class=\"k2b-color-input__transparent\"\n aria-label={isTransparent() ? messages().useColor : messages().useTransparent}\n aria-pressed={isTransparent()}\n disabled={props.disabled}\n onClick={() => props.onTransparentValueChange?.(!isTransparent())}\n >\n <i class=\"ti ti-grid-dots\" aria-hidden=\"true\" />\n </button>\n </Show>\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled || isTransparent()}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </div>\n );\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n {control()}\n </Field>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ import { memo as _$memo } from "solid-js/web";
1
2
  import { createComponent as _$createComponent } from "solid-js/web";
2
3
  import { ssr as _$ssr } from "solid-js/web";
3
4
  import { ssrElement as _$ssrElement } from "solid-js/web";
@@ -153,7 +154,7 @@ export function Combobox(props) {
153
154
  children: message => _$ssr(_tmpl$4, _$escape(message()), _$escape(messages().retry))
154
155
  })), _$escape(_$createComponent(For, {
155
156
  get each() {
156
- return loader.error() ? [] : options();
157
+ return _$memo(() => !!loader.error())() ? [] : options();
157
158
  },
158
159
  get fallback() {
159
160
  return _$ssr(_tmpl$5, query().length >= 2 ? _$escape(messages().noResultsFound) : _$escape(messages().typeToSearch));
@@ -1 +1 @@
1
- {"version":3,"names":["createSignal","For","Show","createFieldMeta","Field","fieldControlAria","useUiMessages","createChoiceLoader","createChoicePopover","nextEnabledChoiceIndex","resolveMaybeAccessor","iconClass","icon","split","includes","Combobox","props","messages","meta","id","listboxId","controlId","localQuery","setLocalQuery","query","setQuery","value","onQueryChange","error","focusedIndex","setFocusedIndex","inputRef","optionRefs","loader","signal","fetchData","map","option","debounceMs","popover","Boolean","disabled","options","focusedOption","focus","index","scrollIntoView","block","open","eager","show","load","reset","cancel","close","hide","select","onSelect","label","description","onKeyDown","event","key","preventDefault","_$createComponent","class","required","children","_$ssr","_tmpl$2","_$ssrAttribute","_$escape","undefined","_$ssrElement","_$mergeProps","type","placeholder","search","role","aria-expanded","aria-activedescendant","when","loading","fallback","_tmpl$3","_tmpl$","message","_tmpl$4","retry","each","_tmpl$5","length","noResultsFound","typeToSearch","_tmpl$6","_tmpl$7","_tmpl$8"],"sources":["inputs/Combobox.tsx"],"sourcesContent":["import { createSignal, For, type JSX, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { type ChoiceOption, createChoiceLoader, createChoicePopover, nextEnabledChoiceIndex } from \"./choice\";\nimport type { FieldProps, MaybeAccessor } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type ComboboxOption = { id: string; label: string; description?: string; icon?: string };\nexport type ComboboxProps = FieldProps & {\n query?: MaybeAccessor<string>;\n onQueryChange?: (query: string) => void;\n placeholder?: string;\n fetchData: (query: string, signal: AbortSignal) => Promise<ComboboxOption[]>;\n onSelect: (option: ComboboxOption) => void;\n debounceMs?: number;\n};\n\nconst iconClass = (icon: string) => (icon.split(/\\s+/).includes(\"ti\") ? icon : `ti ${icon}`);\n\nexport function Combobox(props: ComboboxProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [localQuery, setLocalQuery] = createSignal(\"\");\n const query = () => resolveMaybeAccessor(props.query) ?? localQuery();\n const setQuery = (value: string) => {\n setLocalQuery(value);\n props.onQueryChange?.(value);\n };\n const error = () => resolveMaybeAccessor(props.error);\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n let inputRef: HTMLInputElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n const loader = createChoiceLoader(\n () => async (value, signal) => (await props.fetchData(value, signal)).map((option) => ({ ...option, value: option.id })),\n // Cloud debounces at 200ms and then pads the response with a 200ms minimum\n // load time to stop the spinner flickering. The spinner here sits in the\n // chevron slot and stale results stay visible, so there is nothing to pad —\n // 150ms keeps typing responsive without hammering the loader.\n () => props.debounceMs ?? 150,\n );\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const options = loader.options;\n const focusedOption = () => options()[focusedIndex()];\n const focus = (index: number) => {\n setFocusedIndex(index);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n /** `eager` loads the currently controlled query on open; typing supplies its\n * own query, so opening from `onInput` skips the duplicate request. */\n const open = (eager = true) => {\n if (props.disabled || popover.open()) return;\n popover.show();\n if (eager) loader.load(query(), true);\n focus(-1);\n };\n const reset = () => {\n loader.cancel();\n setQuery(\"\");\n focus(-1);\n };\n const close = () => {\n popover.hide();\n reset();\n };\n const select = (option: ChoiceOption<string>) => {\n popover.hide();\n props.onSelect({ id: option.value, label: option.label, description: option.description, icon: option.icon });\n reset();\n inputRef?.focus();\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else focus(nextEnabledChoiceIndex(options(), focusedIndex(), event.key === \"ArrowDown\" ? 1 : -1));\n } else if (event.key === \"Enter\" && popover.open() && options()[focusedIndex()]) {\n event.preventDefault();\n select(options()[focusedIndex()]!);\n } else if ((event.key === \"Escape\" || event.key === \"Tab\") && popover.open()) {\n // Escape is only ours while the list is open; otherwise it has to reach an\n // enclosing dialog or drawer.\n if (event.key === \"Escape\") event.preventDefault();\n close();\n }\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div class=\"k2b-combobox\" data-invalid={error() ? \"true\" : undefined}>\n <div ref={popover.setTrigger} class=\"k2b-combobox__input\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={(element) => {\n inputRef = element;\n }}\n id={meta.controlId}\n type=\"text\"\n value={query()}\n placeholder={props.placeholder ?? messages().search}\n disabled={props.disabled}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n {...fieldControlAria(meta, props)}\n onFocus={() => open()}\n onClick={() => open()}\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n open(false);\n loader.load(event.currentTarget.value);\n focus(-1);\n }}\n onKeyDown={onKeyDown}\n />\n <Show when={loader.loading()} fallback={<i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />}>\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n </Show>\n </div>\n <div ref={popover.setPopover} popover=\"manual\" class=\"k2b-choice-popover\">\n <div class=\"k2b-choice-options\" role=\"listbox\" id={listboxId}>\n <Show when={loader.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={loader.retry}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <For\n each={loader.error() ? [] : options()}\n fallback={<div class=\"k2b-choice-status\">{query().length >= 2 ? messages().noResultsFound : messages().typeToSearch}</div>}\n >\n {(option, index) => (\n <button\n ref={(element) => (optionRefs[index()] = element)}\n type=\"button\"\n id={`${listboxId}-${index()}`}\n class=\"k2b-choice-option\"\n role=\"option\"\n aria-selected={index() === focusedIndex()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n onPointerMove={() => focus(index())}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => select(option)}\n >\n <Show when={option.icon}>{(icon) => <i class={iconClass(icon())} aria-hidden=\"true\" />}</Show>\n <span>\n <strong>{option.label}</strong>\n <Show when={option.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </button>\n )}\n </For>\n </div>\n </div>\n </div>\n </Field>\n );\n}\n\nexport default Combobox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/Combobox.tsx"],"sourcesContent":["import { createSignal, For, type JSX, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { type ChoiceOption, createChoiceLoader, createChoicePopover, nextEnabledChoiceIndex } from \"./choice\";\nimport type { FieldProps, MaybeAccessor } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type ComboboxOption = { id: string; label: string; description?: string; icon?: string };\nexport type ComboboxProps = FieldProps & {\n query?: MaybeAccessor<string>;\n onQueryChange?: (query: string) => void;\n placeholder?: string;\n fetchData: (query: string, signal: AbortSignal) => Promise<ComboboxOption[]>;\n onSelect: (option: ComboboxOption) => void;\n debounceMs?: number;\n};\n\nconst iconClass = (icon: string) => (icon.split(/\\s+/).includes(\"ti\") ? icon : `ti ${icon}`);\n\nexport function Combobox(props: ComboboxProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [localQuery, setLocalQuery] = createSignal(\"\");\n const query = () => resolveMaybeAccessor(props.query) ?? localQuery();\n const setQuery = (value: string) => {\n setLocalQuery(value);\n props.onQueryChange?.(value);\n };\n const error = () => resolveMaybeAccessor(props.error);\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n let inputRef: HTMLInputElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n const loader = createChoiceLoader(\n () => async (value, signal) => (await props.fetchData(value, signal)).map((option) => ({ ...option, value: option.id })),\n // Cloud debounces at 200ms and then pads the response with a 200ms minimum\n // load time to stop the spinner flickering. The spinner here sits in the\n // chevron slot and stale results stay visible, so there is nothing to pad —\n // 150ms keeps typing responsive without hammering the loader.\n () => props.debounceMs ?? 150,\n );\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const options = loader.options;\n const focusedOption = () => options()[focusedIndex()];\n const focus = (index: number) => {\n setFocusedIndex(index);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n /** `eager` loads the currently controlled query on open; typing supplies its\n * own query, so opening from `onInput` skips the duplicate request. */\n const open = (eager = true) => {\n if (props.disabled || popover.open()) return;\n popover.show();\n if (eager) loader.load(query(), true);\n focus(-1);\n };\n const reset = () => {\n loader.cancel();\n setQuery(\"\");\n focus(-1);\n };\n const close = () => {\n popover.hide();\n reset();\n };\n const select = (option: ChoiceOption<string>) => {\n popover.hide();\n props.onSelect({ id: option.value, label: option.label, description: option.description, icon: option.icon });\n reset();\n inputRef?.focus();\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else focus(nextEnabledChoiceIndex(options(), focusedIndex(), event.key === \"ArrowDown\" ? 1 : -1));\n } else if (event.key === \"Enter\" && popover.open() && options()[focusedIndex()]) {\n event.preventDefault();\n select(options()[focusedIndex()]!);\n } else if ((event.key === \"Escape\" || event.key === \"Tab\") && popover.open()) {\n // Escape is only ours while the list is open; otherwise it has to reach an\n // enclosing dialog or drawer.\n if (event.key === \"Escape\") event.preventDefault();\n close();\n }\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div class=\"k2b-combobox\" data-invalid={error() ? \"true\" : undefined}>\n <div ref={popover.setTrigger} class=\"k2b-combobox__input\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={(element) => {\n inputRef = element;\n }}\n id={meta.controlId}\n type=\"text\"\n value={query()}\n placeholder={props.placeholder ?? messages().search}\n disabled={props.disabled}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n {...fieldControlAria(meta, props)}\n onFocus={() => open()}\n onClick={() => open()}\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n open(false);\n loader.load(event.currentTarget.value);\n focus(-1);\n }}\n onKeyDown={onKeyDown}\n />\n <Show when={loader.loading()} fallback={<i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />}>\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n </Show>\n </div>\n <div ref={popover.setPopover} popover=\"manual\" class=\"k2b-choice-popover\">\n <div class=\"k2b-choice-options\" role=\"listbox\" id={listboxId}>\n <Show when={loader.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={loader.retry}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <For\n each={loader.error() ? [] : options()}\n fallback={<div class=\"k2b-choice-status\">{query().length >= 2 ? messages().noResultsFound : messages().typeToSearch}</div>}\n >\n {(option, index) => (\n <button\n ref={(element) => (optionRefs[index()] = element)}\n type=\"button\"\n id={`${listboxId}-${index()}`}\n class=\"k2b-choice-option\"\n role=\"option\"\n aria-selected={index() === focusedIndex()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n onPointerMove={() => focus(index())}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => select(option)}\n >\n <Show when={option.icon}>{(icon) => <i class={iconClass(icon())} aria-hidden=\"true\" />}</Show>\n <span>\n <strong>{option.label}</strong>\n <Show when={option.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </button>\n )}\n </For>\n </div>\n </div>\n </div>\n </Field>\n );\n}\n\nexport default Combobox;\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import { ssrElement as _$ssrElement } from "solid-js/web";
2
2
  import { mergeProps as _$mergeProps } from "solid-js/web";
3
3
  import { createComponent as _$createComponent } from "solid-js/web";
4
+ import { memo as _$memo } from "solid-js/web";
4
5
  import { ssr as _$ssr } from "solid-js/web";
5
6
  import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
6
7
  import { escape as _$escape } from "solid-js/web";
@@ -157,7 +158,7 @@ function PickerShell(props) {
157
158
  }
158
159
  }))), _$ssr(_tmpl$3)], false), _$escape(_$createComponent(Show, {
159
160
  get when() {
160
- return props.owner.clearable && props.valueLabel() && !props.owner.disabled;
161
+ return _$memo(() => !!(props.owner.clearable && props.valueLabel()))() && !props.owner.disabled;
161
162
  },
162
163
  get children() {
163
164
  return _$ssr(_tmpl$4, _$ssrAttribute("aria-label", _$escape(messages().clearDate, true), false));
@@ -529,7 +530,7 @@ export function DateRangePicker(props) {
529
530
  end: null
530
531
  },
531
532
  get timezone() {
532
- return withTime() ? dateConfig().timeZone : undefined;
533
+ return _$memo(() => !!withTime())() ? dateConfig().timeZone : undefined;
533
534
  },
534
535
  footerMeta: () => _$createComponent(Show, {
535
536
  get when() {
@@ -613,7 +614,7 @@ export function DateRangePicker(props) {
613
614
  }
614
615
  }), _$ssr(_tmpl$18, _$escape(_$createComponent(Show, {
615
616
  get when() {
616
- return withTime() && props.durationPresets?.length;
617
+ return _$memo(() => !!withTime())() && props.durationPresets?.length;
617
618
  },
618
619
  get children() {
619
620
  return _$ssr(_tmpl$22, _$ssrAttribute("aria-label", _$escape(messages().durationPresets, true), false), _$escape(_$createComponent(For, {
@@ -1 +1 @@
1
- {"version":3,"names":["dates","createEffect","createMemo","createSignal","For","onCleanup","onMount","Show","createFieldMeta","Field","fieldControlAria","useDateConfigLocale","useUiMessages","dateKey","displayDate","filterTimeInput","formatDateOnlyRangeDuration","formatDateTimeValue","inRange","isCompleteTime","isRangeEdge","monthDate","monthNames","normalizeTimeInput","orderedRange","parseDateValue","pickerContext","previewRange","resolveFocusDay","splitDateTime","toDateTimeValue","yearMonth","commitFieldValue","resolveMaybeAccessor","popoverIsOpen","popover","matches","placeDatePopover","trigger","wide","margin","gap","rect","getBoundingClientRect","preferredWidth","width","Math","min","window","innerWidth","style","popoverRect","left","max","roomBelow","innerHeight","bottom","roomAbove","top","opensAbove","height","PickerShell","props","messages","meta","owner","id","open","setOpen","error","place","close","hidePopover","show","disabled","onOpen","showPopover","queueMicrotask","initial","querySelector","focus","toggle","syncOpenState","addEventListener","removeEventListener","_$createComponent","class","label","description","required","children","_$ssr","_tmpl$7","_$ssrAttribute","_$escape","undefined","_$ssrElement","_$mergeProps","controlId","type","data-placeholder","valueLabel","data-open","aria-expanded","aria-controls","_tmpl$","icon","_tmpl$2","when","fallback","placeholder","pickDate","valueContent","_tmpl$3","clearable","_tmpl$4","clearDate","datePicker","footerMeta","timezone","_tmpl$6","_tmpl$5","PresetRail","presets","length","_tmpl$8","datePresets","each","preset","_tmpl$9","DatePickerPanel","view","setView","context","dateConfig","month","visibleMonth","weeks","getMonthGrid","year","weekdays","months","dayNameFormatter","Intl","DateTimeFormat","locale","weekday","day","timeZone","dayRows","dateContext","formatter","map","week","key","formatDateKey","outside","isSameMonth","format","number","formatDayNumber","calendar","monthDayKeys","flat","filter","focusedKey","setFocusedKey","defaultFocus","focusDate","selected","today","moveMonth","delta","setVisibleMonth","addMonths","moveYear","previousLabel","previousMonth","previousYear","nextLabel","nextMonth","nextYear","date","targetKey","handleDayKeyDown","event","deltas","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","preventDefault","addDays","buttons","Array","from","currentTarget","closest","querySelectorAll","index","indexOf","offset","_tmpl$10","formatMonthYear","_tmpl$11","name","_tmpl$12","_tmpl$0","_tmpl$13","_tmpl$1","_tmpl$14","cell","range","start","end","active","focusable","_tmpl$15","TimeInput","_tmpl$16","time","timeLabel","DatePicker","value","clearValue","Boolean","_tmpl$17","onSelect","DateTimePicker","parts","draftDate","setDraftDate","draftTime","setDraftTime","syncDraft","next","_tmpl$18","onChange","DateRangePicker","withTime","draftRange","setDraftRange","previewDate","setPreviewDate","startTime","setStartTime","endTime","setEndTime","displayRange","_tmpl$19","selectDate","current","applyDuration","minutes","Date","getTime","toISOString","durationMinutes","round","durationLabel","formatDuration","commit","_tmpl$20","onDayPreview","_tmpl$21","durationPresets","_tmpl$22"],"sources":["inputs/DatePicker.tsx"],"sourcesContent":["import { type DateContext, dates } from \"@k2b/stdlib\";\nimport { createEffect, createMemo, createSignal, For, type JSX, onCleanup, onMount, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useDateConfigLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport {\n type DateRangeValue,\n dateKey,\n displayDate,\n filterTimeInput,\n formatDateOnlyRangeDuration,\n formatDateTimeValue,\n inRange,\n isCompleteTime,\n isRangeEdge,\n monthDate,\n monthNames,\n normalizeTimeInput,\n orderedRange,\n parseDateValue,\n pickerContext,\n previewRange,\n resolveFocusDay,\n splitDateTime,\n toDateTimeValue,\n yearMonth,\n} from \"./date-picker\";\nimport type { MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type { DateRangeValue } from \"./date-picker\";\n\nexport type DatePreset<T> = {\n label: string;\n value: T;\n};\n\nexport type DurationPreset = {\n label: string;\n minutes: number;\n};\n\nexport type DatePickerBaseProps<T> = Omit<ValueFieldProps<T>, \"value\"> & {\n placeholder?: string;\n value: MaybeAccessor<T>;\n presets?: readonly DatePreset<T>[];\n dateConfig?: DateContext;\n clearable?: boolean;\n};\n\nexport type DatePickerProps = DatePickerBaseProps<string | null>;\nexport type DateTimePickerProps = DatePickerBaseProps<string | null>;\nexport type DateRangePickerProps = DatePickerBaseProps<DateRangeValue> & {\n withTime?: boolean;\n datePresets?: readonly DatePreset<string | null>[];\n durationPresets?: readonly DurationPreset[];\n};\n\ntype PanelView = \"days\" | \"months\";\n\nconst popoverIsOpen = (popover: HTMLElement | undefined): boolean => {\n if (!popover) return false;\n try {\n return popover.matches(\":popover-open\");\n } catch {\n return false;\n }\n};\n\nexport const placeDatePopover = (trigger: HTMLElement, popover: HTMLElement, wide: boolean): void => {\n const margin = 8;\n const gap = 4;\n const rect = trigger.getBoundingClientRect();\n // Keep the panel at its designed width instead of stretching to a full-width\n // trigger; it only ever shrinks to fit a narrow viewport.\n const preferredWidth = wide ? 440 : 336;\n const width = Math.min(preferredWidth, window.innerWidth - margin * 2);\n popover.style.width = `${width}px`;\n\n const popoverRect = popover.getBoundingClientRect();\n const left = Math.max(margin, Math.min(rect.left, window.innerWidth - width - margin));\n const roomBelow = window.innerHeight - rect.bottom - gap - margin;\n const roomAbove = rect.top - gap - margin;\n const opensAbove = popoverRect.height > roomBelow && roomAbove > roomBelow;\n const top = opensAbove\n ? Math.max(margin, rect.top - popoverRect.height - gap)\n : Math.min(rect.bottom + gap, window.innerHeight - popoverRect.height - margin);\n\n popover.style.left = `${left}px`;\n popover.style.top = `${Math.max(margin, top)}px`;\n};\n\nfunction PickerShell<T>(props: {\n owner: DatePickerBaseProps<T>;\n icon: string;\n valueLabel: () => string;\n valueContent?: () => JSX.Element;\n children: (close: () => void) => JSX.Element;\n clearValue: T;\n onOpen?: () => void;\n footerMeta?: () => JSX.Element;\n wide?: boolean;\n timezone?: string;\n}): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.owner.id);\n const [open, setOpen] = createSignal(false);\n const error = () => resolveMaybeAccessor(props.owner.error);\n let trigger: HTMLButtonElement | undefined;\n let popover: HTMLDivElement | undefined;\n\n const place = () => {\n if (trigger && popover && open()) placeDatePopover(trigger, popover, props.wide ?? false);\n };\n\n const close = () => {\n if (popoverIsOpen(popover)) popover?.hidePopover();\n setOpen(false);\n };\n\n const show = () => {\n if (props.owner.disabled || !popover || popoverIsOpen(popover)) return;\n props.onOpen?.();\n popover.showPopover();\n setOpen(true);\n queueMicrotask(() => {\n place();\n const initial =\n popover?.querySelector<HTMLElement>('[data-date-focus=\"true\"]') ??\n popover?.querySelector<HTMLElement>('[data-date-day]:not([data-outside=\"true\"])');\n initial?.focus();\n });\n };\n\n const toggle = () => (open() ? close() : show());\n\n onMount(() => {\n const syncOpenState = () => setOpen(popoverIsOpen(popover));\n popover?.addEventListener(\"toggle\", syncOpenState);\n onCleanup(() => popover?.removeEventListener(\"toggle\", syncOpenState));\n });\n\n createEffect(() => {\n if (!open()) return;\n window.addEventListener(\"resize\", place);\n window.addEventListener(\"scroll\", place, true);\n onCleanup(() => {\n window.removeEventListener(\"resize\", place);\n window.removeEventListener(\"scroll\", place, true);\n });\n });\n onCleanup(close);\n\n return (\n <Field\n class={props.owner.class}\n label={props.owner.label}\n description={props.owner.description}\n error={error()}\n required={props.owner.required}\n disabled={props.owner.disabled}\n meta={meta}\n >\n <div class=\"k2b-date-picker\" data-invalid={error() ? \"true\" : undefined}>\n <button\n ref={trigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-date-trigger\"\n data-placeholder={props.valueLabel() ? undefined : \"true\"}\n data-open={open() ? \"true\" : undefined}\n disabled={props.owner.disabled}\n aria-haspopup=\"dialog\"\n aria-expanded={open()}\n aria-controls={`${meta.controlId}-popover`}\n {...fieldControlAria(meta, props.owner)}\n onClick={toggle}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n show();\n }\n }}\n >\n <i class={`${props.icon} k2b-date-trigger__icon`} aria-hidden=\"true\" />\n <span class=\"k2b-date-trigger__value\">\n <Show when={props.valueLabel()} fallback={props.owner.placeholder ?? messages().pickDate}>\n {props.valueContent?.() ?? props.valueLabel()}\n </Show>\n </span>\n <i class=\"ti ti-chevron-down k2b-date-trigger__chevron\" aria-hidden=\"true\" />\n </button>\n\n <Show when={props.owner.clearable && props.valueLabel() && !props.owner.disabled}>\n <button\n type=\"button\"\n class=\"k2b-date-trigger__clear k2b-input-clear-action\"\n aria-label={messages().clearDate}\n onClick={(event) => {\n event.stopPropagation();\n close();\n commitFieldValue(props.owner, props.clearValue);\n trigger?.focus();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n\n <div\n ref={popover}\n id={`${meta.controlId}-popover`}\n class=\"k2b-date-popover\"\n popover=\"auto\"\n role=\"dialog\"\n aria-label={typeof props.owner.label === \"string\" ? props.owner.label : messages().datePicker}\n onToggle={(event) => {\n const nextOpen = event.newState === \"open\";\n setOpen(nextOpen);\n if (nextOpen) queueMicrotask(place);\n }}\n >\n {props.children(close)}\n <Show when={props.footerMeta || props.timezone}>\n <footer class=\"k2b-date-popover__footer\">\n <span>{props.footerMeta?.()}</span>\n <Show when={props.timezone}>\n <span class=\"k2b-date-popover__timezone\">\n <i class=\"ti ti-world\" aria-hidden=\"true\" />\n {props.timezone}\n </span>\n </Show>\n </footer>\n </Show>\n </div>\n </div>\n </Field>\n );\n}\n\nfunction PresetRail<T>(props: { presets?: readonly DatePreset<T>[]; onSelect: (value: T) => void }): JSX.Element {\n const messages = useUiMessages();\n return (\n <Show when={props.presets?.length}>\n <aside class=\"k2b-date-presets\" aria-label={messages().datePresets}>\n <For each={props.presets}>\n {(preset) => (\n <button type=\"button\" onClick={() => props.onSelect(preset.value)}>\n {preset.label}\n </button>\n )}\n </For>\n </aside>\n </Show>\n );\n}\n\nfunction DatePickerPanel(props: {\n visibleMonth: () => Date;\n setVisibleMonth: (date: Date) => void;\n selected?: () => string | null | undefined;\n range?: () => DateRangeValue;\n focusDate?: () => string | null | undefined;\n onSelect: (date: string) => void;\n onDayPreview?: (date: string | null) => void;\n dateConfig?: DateContext;\n}): JSX.Element {\n const messages = useUiMessages();\n const [view, setView] = createSignal<PanelView>(\"days\");\n const context = createMemo(() => pickerContext(props.dateConfig));\n const month = createMemo(() => yearMonth(props.visibleMonth(), context()));\n const weeks = createMemo(() => dates.getMonthGrid(month().year, month().month, context()));\n const weekdays = createMemo(() => dates.weekdays(context()));\n const months = createMemo(() => monthNames(context()));\n const dayNameFormatter = createMemo(\n () =>\n new Intl.DateTimeFormat(context().locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: context().timeZone,\n }),\n );\n const dayRows = createMemo(() => {\n const visibleMonth = props.visibleMonth();\n const dateContext = context();\n const formatter = dayNameFormatter();\n return weeks().map((week) =>\n week.map((day) => ({\n day,\n key: dates.formatDateKey(day, dateContext),\n outside: !dates.isSameMonth(day, visibleMonth, dateContext),\n label: formatter.format(day),\n number: dates.formatDayNumber(day, dateContext),\n })),\n );\n });\n let calendar: HTMLElement | undefined;\n // Days that belong to the visible month; the roving tabindex must land on one\n // of them or the grid becomes unreachable by keyboard after month navigation.\n const monthDayKeys = createMemo(() =>\n dayRows()\n .flat()\n .filter((day) => !day.outside)\n .map((day) => day.key),\n );\n // Remembers where arrow-key navigation left off so Tab returns to that day.\n const [focusedKey, setFocusedKey] = createSignal<string>();\n const defaultFocus = createMemo(() =>\n resolveFocusDay(\n monthDayKeys(),\n focusedKey() || props.focusDate?.() || props.selected?.() || dateKey(dates.today(context()), context()),\n ),\n );\n\n const moveMonth = (delta: number) => props.setVisibleMonth(dates.addMonths(props.visibleMonth(), delta, context()));\n const moveYear = (delta: number) => props.setVisibleMonth(monthDate(month().year + delta, month().month, context()));\n const previousLabel = () => (view() === \"days\" ? messages().previousMonth : messages().previousYear);\n const nextLabel = () => (view() === \"days\" ? messages().nextMonth : messages().nextYear);\n\n const focusDate = (date: Date) => {\n const targetKey = dateKey(date, context());\n if (!dates.isSameMonth(date, props.visibleMonth(), context())) props.setVisibleMonth(date);\n queueMicrotask(() => calendar?.querySelector<HTMLElement>(`[data-date-day=\"${targetKey}\"]`)?.focus());\n };\n\n const handleDayKeyDown = (event: KeyboardEvent, day: Date) => {\n const deltas: Partial<Record<string, number>> = { ArrowLeft: -1, ArrowRight: 1, ArrowUp: -7, ArrowDown: 7 };\n const delta = deltas[event.key];\n if (delta !== undefined) {\n event.preventDefault();\n focusDate(dates.addDays(day, delta, context()));\n return;\n }\n if (event.key === \"PageUp\" || event.key === \"PageDown\") {\n event.preventDefault();\n focusDate(dates.addMonths(day, event.key === \"PageUp\" ? -1 : 1, context()));\n return;\n }\n if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n const buttons = Array.from(\n (event.currentTarget as HTMLButtonElement).closest(\".k2b-date-grid\")!.querySelectorAll<HTMLButtonElement>(\"[data-date-day]\"),\n );\n const index = buttons.indexOf(event.currentTarget as HTMLButtonElement);\n const offset = event.key === \"Home\" ? -(index % 7) : 6 - (index % 7);\n focusDate(dates.addDays(day, offset, context()));\n }\n };\n\n return (\n <section ref={calendar} class=\"k2b-date-calendar\" aria-label={messages().calendar}>\n <header class=\"k2b-date-calendar__header\">\n <button\n type=\"button\"\n class=\"k2b-date-calendar__nav\"\n onClick={() => (view() === \"days\" ? moveMonth(-1) : moveYear(-1))}\n aria-label={previousLabel()}\n >\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" class=\"k2b-date-calendar__title\" onClick={() => setView(view() === \"days\" ? \"months\" : \"days\")}>\n <Show when={view() === \"days\"} fallback={month().year}>\n {dates.formatMonthYear(props.visibleMonth(), context())}\n </Show>\n </button>\n <button\n type=\"button\"\n class=\"k2b-date-calendar__nav\"\n onClick={() => (view() === \"days\" ? moveMonth(1) : moveYear(1))}\n aria-label={nextLabel()}\n >\n <i class=\"ti ti-chevron-right\" aria-hidden=\"true\" />\n </button>\n </header>\n\n <Show\n when={view() === \"days\"}\n fallback={\n <div class=\"k2b-date-months\" role=\"group\" aria-label={`Months in ${month().year}`}>\n <For each={months()}>\n {(name, index) => (\n <button\n type=\"button\"\n aria-pressed={index() === month().month}\n data-selected={index() === month().month ? \"true\" : undefined}\n onClick={() => {\n props.setVisibleMonth(monthDate(month().year, index(), context()));\n setView(\"days\");\n }}\n >\n {name}\n </button>\n )}\n </For>\n </div>\n }\n >\n <div class=\"k2b-date-weekdays\" aria-hidden=\"true\">\n <For each={weekdays()}>{(day) => <span>{day}</span>}</For>\n </div>\n <div class=\"k2b-date-grid\" role=\"grid\">\n <For each={dayRows()}>\n {(week) => (\n <div class=\"k2b-date-week\" role=\"row\">\n <For each={week}>\n {(cell) => {\n const selected = () => props.selected?.() === cell.key;\n const range = () => props.range?.() ?? { start: null, end: null };\n const active = () => selected() || isRangeEdge(cell.key, range());\n const focusable = () => cell.key === defaultFocus();\n return (\n <button\n type=\"button\"\n role=\"gridcell\"\n data-date-day={cell.key}\n data-date-focus={focusable() ? \"true\" : undefined}\n data-outside={cell.outside ? \"true\" : undefined}\n data-in-range={inRange(cell.key, range()) && !active() ? \"true\" : undefined}\n aria-label={cell.label}\n aria-selected={active()}\n tabIndex={focusable() ? 0 : -1}\n onClick={() => props.onSelect(cell.key)}\n onKeyDown={(event) => handleDayKeyDown(event, cell.day)}\n onBlur={() => props.onDayPreview?.(null)}\n onFocus={() => {\n setFocusedKey(cell.key);\n props.onDayPreview?.(cell.key);\n }}\n onPointerEnter={() => props.onDayPreview?.(cell.key)}\n onPointerLeave={() => props.onDayPreview?.(null)}\n >\n {cell.number}\n </button>\n );\n }}\n </For>\n </div>\n )}\n </For>\n </div>\n </Show>\n </section>\n );\n}\n\nfunction TimeInput(props: { time: string; onChange: (time: string) => void; label?: string }): JSX.Element {\n const messages = useUiMessages();\n return (\n <label class=\"k2b-date-time\">\n <Show when={props.label}>\n <span>{props.label}</span>\n </Show>\n <span class=\"k2b-date-time__control\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n value={props.time}\n placeholder=\"09:00\"\n onInput={(event) => props.onChange(filterTimeInput(event.currentTarget.value))}\n onBlur={() => props.onChange(normalizeTimeInput(props.time))}\n aria-label={props.label ? messages().timeLabel({ label: props.label }) : messages().time}\n />\n <i class=\"ti ti-clock\" aria-hidden=\"true\" />\n </span>\n </label>\n );\n}\n\nexport function DatePicker(props: DatePickerProps): JSX.Element {\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(value(), dateConfig()));\n const valueLabel = () => displayDate(value(), dateConfig());\n\n return (\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar\"\n valueLabel={valueLabel}\n clearValue={null}\n onOpen={() => setVisibleMonth(parseDateValue(value(), dateConfig()))}\n wide={Boolean(props.presets?.length)}\n >\n {(close) => (\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={value}\n focusDate={value}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n dateConfig={dateConfig()}\n />\n </div>\n )}\n </PickerShell>\n );\n}\n\nexport function DateTimePicker(props: DateTimePickerProps): JSX.Element {\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const parts = () => splitDateTime(value(), dateConfig());\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().date, dateConfig()));\n const [draftDate, setDraftDate] = createSignal(parts().date);\n const [draftTime, setDraftTime] = createSignal(parts().time || \"09:00\");\n const valueLabel = () => formatDateTimeValue(value(), dateConfig());\n\n const syncDraft = () => {\n const next = parts();\n setDraftDate(next.date);\n setDraftTime(next.time || \"09:00\");\n setVisibleMonth(parseDateValue(next.date, dateConfig()));\n };\n\n return (\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar-time\"\n valueLabel={valueLabel}\n clearValue={null}\n timezone={dateConfig().timeZone}\n onOpen={syncDraft}\n wide={Boolean(props.presets?.length)}\n >\n {(close) => (\n <>\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={draftDate}\n focusDate={draftDate}\n onSelect={(value) => {\n setDraftDate(value);\n setVisibleMonth(parseDateValue(value, dateConfig()));\n }}\n dateConfig={dateConfig()}\n />\n </div>\n <div class=\"k2b-date-actions\">\n <TimeInput time={draftTime()} onChange={setDraftTime} />\n <button\n type=\"button\"\n class=\"k2b-date-apply\"\n disabled={!draftDate() || !isCompleteTime(draftTime())}\n onClick={() => {\n if (!draftDate() || !isCompleteTime(draftTime())) return;\n const value = toDateTimeValue(draftDate(), draftTime(), dateConfig());\n close();\n commitFieldValue(props, value);\n }}\n >\n Apply\n </button>\n </div>\n </>\n )}\n </PickerShell>\n );\n}\n\nexport function DateRangePicker(props: DateRangePickerProps): JSX.Element {\n const messages = useUiMessages();\n const withTime = () => props.withTime ?? false;\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const parts = () => ({\n start: withTime() ? splitDateTime(value().start, dateConfig()) : { date: value().start ?? \"\", time: \"09:00\" },\n end: withTime() ? splitDateTime(value().end, dateConfig()) : { date: value().end ?? \"\", time: \"10:00\" },\n });\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().start.date || parts().end.date, dateConfig()));\n const [draftRange, setDraftRange] = createSignal<DateRangeValue>({\n start: parts().start.date || null,\n end: parts().end.date || null,\n });\n const [previewDate, setPreviewDate] = createSignal<string | null>(null);\n const [startTime, setStartTime] = createSignal(parts().start.time || \"09:00\");\n const [endTime, setEndTime] = createSignal(parts().end.time || \"10:00\");\n const displayRange = createMemo(() => previewRange(draftRange(), previewDate()));\n\n const syncDraft = () => {\n const next = parts();\n setDraftRange({ start: next.start.date || null, end: next.end.date || null });\n setPreviewDate(null);\n setStartTime(next.start.time || \"09:00\");\n setEndTime(next.end.time || \"10:00\");\n setVisibleMonth(parseDateValue(next.start.date || next.end.date, dateConfig()));\n };\n\n const valueLabel = () => {\n if (!value().start && !value().end) return \"\";\n const format = withTime() ? formatDateTimeValue : displayDate;\n return `${value().start ? format(value().start, dateConfig()) : \"Start\"} to ${value().end ? format(value().end, dateConfig()) : \"End\"}`;\n };\n\n const valueContent = () => {\n const format = withTime() ? formatDateTimeValue : displayDate;\n return (\n <span class=\"k2b-date-range-value\">\n <span>{value().start ? format(value().start, dateConfig()) : messages().start}</span>\n <i class=\"ti ti-arrow-narrow-right\" aria-hidden=\"true\" />\n <span>{value().end ? format(value().end, dateConfig()) : \"End\"}</span>\n </span>\n );\n };\n\n const selectDate = (value: string) => {\n const current = draftRange();\n if (!current.start || current.end) {\n setDraftRange({ start: value, end: null });\n } else {\n setDraftRange(orderedRange(current.start, value));\n }\n setPreviewDate(null);\n };\n\n const applyDuration = (minutes: number) => {\n const current = draftRange();\n if (!current.start || !isCompleteTime(startTime())) return;\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n if (!start) return;\n const end = new Date(new Date(start).getTime() + minutes * 60_000).toISOString();\n const next = splitDateTime(end, dateConfig());\n setDraftRange({ start: current.start, end: next.date || current.end || current.start });\n setEndTime(next.time || endTime());\n };\n\n const durationMinutes = createMemo(() => {\n const current = displayRange();\n if (!current.start || !current.end || !isCompleteTime(startTime()) || !isCompleteTime(endTime())) return null;\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n const end = toDateTimeValue(current.end, endTime(), dateConfig());\n if (!start || !end) return null;\n return Math.round((new Date(end).getTime() - new Date(start).getTime()) / 60_000);\n });\n\n const durationLabel = () => {\n const current = displayRange();\n if (!current.start || !current.end) return \"\";\n if (!withTime()) return formatDateOnlyRangeDuration(current, dateConfig());\n if (!isCompleteTime(startTime()) || !isCompleteTime(endTime())) return \"\";\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n const end = toDateTimeValue(current.end, endTime(), dateConfig());\n return start && end ? dates.formatDuration(start, end, dateConfig()) : \"\";\n };\n\n const commit = (close: () => void) => {\n const current = draftRange();\n if (!withTime()) {\n close();\n commitFieldValue(props, current);\n return;\n }\n if ((current.start || current.end) && (!isCompleteTime(startTime()) || !isCompleteTime(endTime()))) return;\n const value = {\n start: current.start ? toDateTimeValue(current.start, startTime(), dateConfig()) : null,\n end: current.end ? toDateTimeValue(current.end, endTime(), dateConfig()) : null,\n };\n close();\n commitFieldValue(props, value);\n };\n\n return (\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar-stats\"\n valueLabel={valueLabel}\n valueContent={valueContent}\n clearValue={{ start: null, end: null }}\n timezone={withTime() ? dateConfig().timeZone : undefined}\n footerMeta={() => (\n <Show when={durationLabel()}>\n <span class=\"k2b-date-duration\">\n <i class=\"ti ti-hourglass-low\" aria-hidden=\"true\" />\n {durationLabel()}\n </span>\n </Show>\n )}\n onOpen={syncDraft}\n wide={Boolean(props.datePresets?.length || props.presets?.length)}\n >\n {(close) => (\n <>\n <div class=\"k2b-date-popover__body\">\n <Show\n when={props.datePresets?.length}\n fallback={\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n }\n >\n <PresetRail\n presets={props.datePresets}\n onSelect={(value) => {\n setDraftRange(value ? { start: value, end: value } : { start: null, end: null });\n if (value) setVisibleMonth(parseDateValue(value, dateConfig()));\n }}\n />\n </Show>\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n range={displayRange}\n focusDate={() => draftRange().start}\n onSelect={selectDate}\n onDayPreview={(value) => {\n const current = draftRange();\n setPreviewDate(current.start && !current.end ? value : null);\n }}\n dateConfig={dateConfig()}\n />\n </div>\n\n <Show when={withTime()}>\n <div class=\"k2b-date-range-times\">\n <TimeInput label={messages().start} time={startTime()} onChange={setStartTime} />\n <TimeInput label={messages().end} time={endTime()} onChange={setEndTime} />\n </div>\n </Show>\n\n <div class=\"k2b-date-actions\">\n <Show when={withTime() && props.durationPresets?.length}>\n <div class=\"k2b-date-durations\" role=\"group\" aria-label={messages().durationPresets}>\n <For each={props.durationPresets}>\n {(preset) => (\n <button type=\"button\" aria-pressed={durationMinutes() === preset.minutes} onClick={() => applyDuration(preset.minutes)}>\n {preset.label}\n </button>\n )}\n </For>\n </div>\n </Show>\n {/* Only a half-picked range is uncommittable; an empty draft must stay\n applicable so a \"clear\" date preset can be committed. */}\n <button\n type=\"button\"\n class=\"k2b-date-apply\"\n disabled={\n Boolean(draftRange().start) !== Boolean(draftRange().end) ||\n Boolean(\n withTime() && draftRange().start && draftRange().end && (!isCompleteTime(startTime()) || !isCompleteTime(endTime())),\n )\n }\n onClick={() => commit(close)}\n >\n Apply\n </button>\n </div>\n </>\n )}\n </PickerShell>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/DatePicker.tsx"],"sourcesContent":["import { type DateContext, dates } from \"@k2b/stdlib\";\nimport { createEffect, createMemo, createSignal, For, type JSX, onCleanup, onMount, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useDateConfigLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport {\n type DateRangeValue,\n dateKey,\n displayDate,\n filterTimeInput,\n formatDateOnlyRangeDuration,\n formatDateTimeValue,\n inRange,\n isCompleteTime,\n isRangeEdge,\n monthDate,\n monthNames,\n normalizeTimeInput,\n orderedRange,\n parseDateValue,\n pickerContext,\n previewRange,\n resolveFocusDay,\n splitDateTime,\n toDateTimeValue,\n yearMonth,\n} from \"./date-picker\";\nimport type { MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type { DateRangeValue } from \"./date-picker\";\n\nexport type DatePreset<T> = {\n label: string;\n value: T;\n};\n\nexport type DurationPreset = {\n label: string;\n minutes: number;\n};\n\nexport type DatePickerBaseProps<T> = Omit<ValueFieldProps<T>, \"value\"> & {\n placeholder?: string;\n value: MaybeAccessor<T>;\n presets?: readonly DatePreset<T>[];\n dateConfig?: DateContext;\n clearable?: boolean;\n};\n\nexport type DatePickerProps = DatePickerBaseProps<string | null>;\nexport type DateTimePickerProps = DatePickerBaseProps<string | null>;\nexport type DateRangePickerProps = DatePickerBaseProps<DateRangeValue> & {\n withTime?: boolean;\n datePresets?: readonly DatePreset<string | null>[];\n durationPresets?: readonly DurationPreset[];\n};\n\ntype PanelView = \"days\" | \"months\";\n\nconst popoverIsOpen = (popover: HTMLElement | undefined): boolean => {\n if (!popover) return false;\n try {\n return popover.matches(\":popover-open\");\n } catch {\n return false;\n }\n};\n\nexport const placeDatePopover = (trigger: HTMLElement, popover: HTMLElement, wide: boolean): void => {\n const margin = 8;\n const gap = 4;\n const rect = trigger.getBoundingClientRect();\n // Keep the panel at its designed width instead of stretching to a full-width\n // trigger; it only ever shrinks to fit a narrow viewport.\n const preferredWidth = wide ? 440 : 336;\n const width = Math.min(preferredWidth, window.innerWidth - margin * 2);\n popover.style.width = `${width}px`;\n\n const popoverRect = popover.getBoundingClientRect();\n const left = Math.max(margin, Math.min(rect.left, window.innerWidth - width - margin));\n const roomBelow = window.innerHeight - rect.bottom - gap - margin;\n const roomAbove = rect.top - gap - margin;\n const opensAbove = popoverRect.height > roomBelow && roomAbove > roomBelow;\n const top = opensAbove\n ? Math.max(margin, rect.top - popoverRect.height - gap)\n : Math.min(rect.bottom + gap, window.innerHeight - popoverRect.height - margin);\n\n popover.style.left = `${left}px`;\n popover.style.top = `${Math.max(margin, top)}px`;\n};\n\nfunction PickerShell<T>(props: {\n owner: DatePickerBaseProps<T>;\n icon: string;\n valueLabel: () => string;\n valueContent?: () => JSX.Element;\n children: (close: () => void) => JSX.Element;\n clearValue: T;\n onOpen?: () => void;\n footerMeta?: () => JSX.Element;\n wide?: boolean;\n timezone?: string;\n}): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.owner.id);\n const [open, setOpen] = createSignal(false);\n const error = () => resolveMaybeAccessor(props.owner.error);\n let trigger: HTMLButtonElement | undefined;\n let popover: HTMLDivElement | undefined;\n\n const place = () => {\n if (trigger && popover && open()) placeDatePopover(trigger, popover, props.wide ?? false);\n };\n\n const close = () => {\n if (popoverIsOpen(popover)) popover?.hidePopover();\n setOpen(false);\n };\n\n const show = () => {\n if (props.owner.disabled || !popover || popoverIsOpen(popover)) return;\n props.onOpen?.();\n popover.showPopover();\n setOpen(true);\n queueMicrotask(() => {\n place();\n const initial =\n popover?.querySelector<HTMLElement>('[data-date-focus=\"true\"]') ??\n popover?.querySelector<HTMLElement>('[data-date-day]:not([data-outside=\"true\"])');\n initial?.focus();\n });\n };\n\n const toggle = () => (open() ? close() : show());\n\n onMount(() => {\n const syncOpenState = () => setOpen(popoverIsOpen(popover));\n popover?.addEventListener(\"toggle\", syncOpenState);\n onCleanup(() => popover?.removeEventListener(\"toggle\", syncOpenState));\n });\n\n createEffect(() => {\n if (!open()) return;\n window.addEventListener(\"resize\", place);\n window.addEventListener(\"scroll\", place, true);\n onCleanup(() => {\n window.removeEventListener(\"resize\", place);\n window.removeEventListener(\"scroll\", place, true);\n });\n });\n onCleanup(close);\n\n return (\n <Field\n class={props.owner.class}\n label={props.owner.label}\n description={props.owner.description}\n error={error()}\n required={props.owner.required}\n disabled={props.owner.disabled}\n meta={meta}\n >\n <div class=\"k2b-date-picker\" data-invalid={error() ? \"true\" : undefined}>\n <button\n ref={trigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-date-trigger\"\n data-placeholder={props.valueLabel() ? undefined : \"true\"}\n data-open={open() ? \"true\" : undefined}\n disabled={props.owner.disabled}\n aria-haspopup=\"dialog\"\n aria-expanded={open()}\n aria-controls={`${meta.controlId}-popover`}\n {...fieldControlAria(meta, props.owner)}\n onClick={toggle}\n onKeyDown={(event) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n show();\n }\n }}\n >\n <i class={`${props.icon} k2b-date-trigger__icon`} aria-hidden=\"true\" />\n <span class=\"k2b-date-trigger__value\">\n <Show when={props.valueLabel()} fallback={props.owner.placeholder ?? messages().pickDate}>\n {props.valueContent?.() ?? props.valueLabel()}\n </Show>\n </span>\n <i class=\"ti ti-chevron-down k2b-date-trigger__chevron\" aria-hidden=\"true\" />\n </button>\n\n <Show when={props.owner.clearable && props.valueLabel() && !props.owner.disabled}>\n <button\n type=\"button\"\n class=\"k2b-date-trigger__clear k2b-input-clear-action\"\n aria-label={messages().clearDate}\n onClick={(event) => {\n event.stopPropagation();\n close();\n commitFieldValue(props.owner, props.clearValue);\n trigger?.focus();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n\n <div\n ref={popover}\n id={`${meta.controlId}-popover`}\n class=\"k2b-date-popover\"\n popover=\"auto\"\n role=\"dialog\"\n aria-label={typeof props.owner.label === \"string\" ? props.owner.label : messages().datePicker}\n onToggle={(event) => {\n const nextOpen = event.newState === \"open\";\n setOpen(nextOpen);\n if (nextOpen) queueMicrotask(place);\n }}\n >\n {props.children(close)}\n <Show when={props.footerMeta || props.timezone}>\n <footer class=\"k2b-date-popover__footer\">\n <span>{props.footerMeta?.()}</span>\n <Show when={props.timezone}>\n <span class=\"k2b-date-popover__timezone\">\n <i class=\"ti ti-world\" aria-hidden=\"true\" />\n {props.timezone}\n </span>\n </Show>\n </footer>\n </Show>\n </div>\n </div>\n </Field>\n );\n}\n\nfunction PresetRail<T>(props: { presets?: readonly DatePreset<T>[]; onSelect: (value: T) => void }): JSX.Element {\n const messages = useUiMessages();\n return (\n <Show when={props.presets?.length}>\n <aside class=\"k2b-date-presets\" aria-label={messages().datePresets}>\n <For each={props.presets}>\n {(preset) => (\n <button type=\"button\" onClick={() => props.onSelect(preset.value)}>\n {preset.label}\n </button>\n )}\n </For>\n </aside>\n </Show>\n );\n}\n\nfunction DatePickerPanel(props: {\n visibleMonth: () => Date;\n setVisibleMonth: (date: Date) => void;\n selected?: () => string | null | undefined;\n range?: () => DateRangeValue;\n focusDate?: () => string | null | undefined;\n onSelect: (date: string) => void;\n onDayPreview?: (date: string | null) => void;\n dateConfig?: DateContext;\n}): JSX.Element {\n const messages = useUiMessages();\n const [view, setView] = createSignal<PanelView>(\"days\");\n const context = createMemo(() => pickerContext(props.dateConfig));\n const month = createMemo(() => yearMonth(props.visibleMonth(), context()));\n const weeks = createMemo(() => dates.getMonthGrid(month().year, month().month, context()));\n const weekdays = createMemo(() => dates.weekdays(context()));\n const months = createMemo(() => monthNames(context()));\n const dayNameFormatter = createMemo(\n () =>\n new Intl.DateTimeFormat(context().locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: context().timeZone,\n }),\n );\n const dayRows = createMemo(() => {\n const visibleMonth = props.visibleMonth();\n const dateContext = context();\n const formatter = dayNameFormatter();\n return weeks().map((week) =>\n week.map((day) => ({\n day,\n key: dates.formatDateKey(day, dateContext),\n outside: !dates.isSameMonth(day, visibleMonth, dateContext),\n label: formatter.format(day),\n number: dates.formatDayNumber(day, dateContext),\n })),\n );\n });\n let calendar: HTMLElement | undefined;\n // Days that belong to the visible month; the roving tabindex must land on one\n // of them or the grid becomes unreachable by keyboard after month navigation.\n const monthDayKeys = createMemo(() =>\n dayRows()\n .flat()\n .filter((day) => !day.outside)\n .map((day) => day.key),\n );\n // Remembers where arrow-key navigation left off so Tab returns to that day.\n const [focusedKey, setFocusedKey] = createSignal<string>();\n const defaultFocus = createMemo(() =>\n resolveFocusDay(\n monthDayKeys(),\n focusedKey() || props.focusDate?.() || props.selected?.() || dateKey(dates.today(context()), context()),\n ),\n );\n\n const moveMonth = (delta: number) => props.setVisibleMonth(dates.addMonths(props.visibleMonth(), delta, context()));\n const moveYear = (delta: number) => props.setVisibleMonth(monthDate(month().year + delta, month().month, context()));\n const previousLabel = () => (view() === \"days\" ? messages().previousMonth : messages().previousYear);\n const nextLabel = () => (view() === \"days\" ? messages().nextMonth : messages().nextYear);\n\n const focusDate = (date: Date) => {\n const targetKey = dateKey(date, context());\n if (!dates.isSameMonth(date, props.visibleMonth(), context())) props.setVisibleMonth(date);\n queueMicrotask(() => calendar?.querySelector<HTMLElement>(`[data-date-day=\"${targetKey}\"]`)?.focus());\n };\n\n const handleDayKeyDown = (event: KeyboardEvent, day: Date) => {\n const deltas: Partial<Record<string, number>> = { ArrowLeft: -1, ArrowRight: 1, ArrowUp: -7, ArrowDown: 7 };\n const delta = deltas[event.key];\n if (delta !== undefined) {\n event.preventDefault();\n focusDate(dates.addDays(day, delta, context()));\n return;\n }\n if (event.key === \"PageUp\" || event.key === \"PageDown\") {\n event.preventDefault();\n focusDate(dates.addMonths(day, event.key === \"PageUp\" ? -1 : 1, context()));\n return;\n }\n if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n const buttons = Array.from(\n (event.currentTarget as HTMLButtonElement).closest(\".k2b-date-grid\")!.querySelectorAll<HTMLButtonElement>(\"[data-date-day]\"),\n );\n const index = buttons.indexOf(event.currentTarget as HTMLButtonElement);\n const offset = event.key === \"Home\" ? -(index % 7) : 6 - (index % 7);\n focusDate(dates.addDays(day, offset, context()));\n }\n };\n\n return (\n <section ref={calendar} class=\"k2b-date-calendar\" aria-label={messages().calendar}>\n <header class=\"k2b-date-calendar__header\">\n <button\n type=\"button\"\n class=\"k2b-date-calendar__nav\"\n onClick={() => (view() === \"days\" ? moveMonth(-1) : moveYear(-1))}\n aria-label={previousLabel()}\n >\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" class=\"k2b-date-calendar__title\" onClick={() => setView(view() === \"days\" ? \"months\" : \"days\")}>\n <Show when={view() === \"days\"} fallback={month().year}>\n {dates.formatMonthYear(props.visibleMonth(), context())}\n </Show>\n </button>\n <button\n type=\"button\"\n class=\"k2b-date-calendar__nav\"\n onClick={() => (view() === \"days\" ? moveMonth(1) : moveYear(1))}\n aria-label={nextLabel()}\n >\n <i class=\"ti ti-chevron-right\" aria-hidden=\"true\" />\n </button>\n </header>\n\n <Show\n when={view() === \"days\"}\n fallback={\n <div class=\"k2b-date-months\" role=\"group\" aria-label={`Months in ${month().year}`}>\n <For each={months()}>\n {(name, index) => (\n <button\n type=\"button\"\n aria-pressed={index() === month().month}\n data-selected={index() === month().month ? \"true\" : undefined}\n onClick={() => {\n props.setVisibleMonth(monthDate(month().year, index(), context()));\n setView(\"days\");\n }}\n >\n {name}\n </button>\n )}\n </For>\n </div>\n }\n >\n <div class=\"k2b-date-weekdays\" aria-hidden=\"true\">\n <For each={weekdays()}>{(day) => <span>{day}</span>}</For>\n </div>\n <div class=\"k2b-date-grid\" role=\"grid\">\n <For each={dayRows()}>\n {(week) => (\n <div class=\"k2b-date-week\" role=\"row\">\n <For each={week}>\n {(cell) => {\n const selected = () => props.selected?.() === cell.key;\n const range = () => props.range?.() ?? { start: null, end: null };\n const active = () => selected() || isRangeEdge(cell.key, range());\n const focusable = () => cell.key === defaultFocus();\n return (\n <button\n type=\"button\"\n role=\"gridcell\"\n data-date-day={cell.key}\n data-date-focus={focusable() ? \"true\" : undefined}\n data-outside={cell.outside ? \"true\" : undefined}\n data-in-range={inRange(cell.key, range()) && !active() ? \"true\" : undefined}\n aria-label={cell.label}\n aria-selected={active()}\n tabIndex={focusable() ? 0 : -1}\n onClick={() => props.onSelect(cell.key)}\n onKeyDown={(event) => handleDayKeyDown(event, cell.day)}\n onBlur={() => props.onDayPreview?.(null)}\n onFocus={() => {\n setFocusedKey(cell.key);\n props.onDayPreview?.(cell.key);\n }}\n onPointerEnter={() => props.onDayPreview?.(cell.key)}\n onPointerLeave={() => props.onDayPreview?.(null)}\n >\n {cell.number}\n </button>\n );\n }}\n </For>\n </div>\n )}\n </For>\n </div>\n </Show>\n </section>\n );\n}\n\nfunction TimeInput(props: { time: string; onChange: (time: string) => void; label?: string }): JSX.Element {\n const messages = useUiMessages();\n return (\n <label class=\"k2b-date-time\">\n <Show when={props.label}>\n <span>{props.label}</span>\n </Show>\n <span class=\"k2b-date-time__control\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n value={props.time}\n placeholder=\"09:00\"\n onInput={(event) => props.onChange(filterTimeInput(event.currentTarget.value))}\n onBlur={() => props.onChange(normalizeTimeInput(props.time))}\n aria-label={props.label ? messages().timeLabel({ label: props.label }) : messages().time}\n />\n <i class=\"ti ti-clock\" aria-hidden=\"true\" />\n </span>\n </label>\n );\n}\n\nexport function DatePicker(props: DatePickerProps): JSX.Element {\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(value(), dateConfig()));\n const valueLabel = () => displayDate(value(), dateConfig());\n\n return (\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar\"\n valueLabel={valueLabel}\n clearValue={null}\n onOpen={() => setVisibleMonth(parseDateValue(value(), dateConfig()))}\n wide={Boolean(props.presets?.length)}\n >\n {(close) => (\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={value}\n focusDate={value}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n dateConfig={dateConfig()}\n />\n </div>\n )}\n </PickerShell>\n );\n}\n\nexport function DateTimePicker(props: DateTimePickerProps): JSX.Element {\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const parts = () => splitDateTime(value(), dateConfig());\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().date, dateConfig()));\n const [draftDate, setDraftDate] = createSignal(parts().date);\n const [draftTime, setDraftTime] = createSignal(parts().time || \"09:00\");\n const valueLabel = () => formatDateTimeValue(value(), dateConfig());\n\n const syncDraft = () => {\n const next = parts();\n setDraftDate(next.date);\n setDraftTime(next.time || \"09:00\");\n setVisibleMonth(parseDateValue(next.date, dateConfig()));\n };\n\n return (\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar-time\"\n valueLabel={valueLabel}\n clearValue={null}\n timezone={dateConfig().timeZone}\n onOpen={syncDraft}\n wide={Boolean(props.presets?.length)}\n >\n {(close) => (\n <>\n <div class=\"k2b-date-popover__body\">\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n selected={draftDate}\n focusDate={draftDate}\n onSelect={(value) => {\n setDraftDate(value);\n setVisibleMonth(parseDateValue(value, dateConfig()));\n }}\n dateConfig={dateConfig()}\n />\n </div>\n <div class=\"k2b-date-actions\">\n <TimeInput time={draftTime()} onChange={setDraftTime} />\n <button\n type=\"button\"\n class=\"k2b-date-apply\"\n disabled={!draftDate() || !isCompleteTime(draftTime())}\n onClick={() => {\n if (!draftDate() || !isCompleteTime(draftTime())) return;\n const value = toDateTimeValue(draftDate(), draftTime(), dateConfig());\n close();\n commitFieldValue(props, value);\n }}\n >\n Apply\n </button>\n </div>\n </>\n )}\n </PickerShell>\n );\n}\n\nexport function DateRangePicker(props: DateRangePickerProps): JSX.Element {\n const messages = useUiMessages();\n const withTime = () => props.withTime ?? false;\n const value = () => resolveMaybeAccessor(props.value);\n const dateConfig = useDateConfigLocale(() => props.dateConfig);\n const parts = () => ({\n start: withTime() ? splitDateTime(value().start, dateConfig()) : { date: value().start ?? \"\", time: \"09:00\" },\n end: withTime() ? splitDateTime(value().end, dateConfig()) : { date: value().end ?? \"\", time: \"10:00\" },\n });\n const [visibleMonth, setVisibleMonth] = createSignal(parseDateValue(parts().start.date || parts().end.date, dateConfig()));\n const [draftRange, setDraftRange] = createSignal<DateRangeValue>({\n start: parts().start.date || null,\n end: parts().end.date || null,\n });\n const [previewDate, setPreviewDate] = createSignal<string | null>(null);\n const [startTime, setStartTime] = createSignal(parts().start.time || \"09:00\");\n const [endTime, setEndTime] = createSignal(parts().end.time || \"10:00\");\n const displayRange = createMemo(() => previewRange(draftRange(), previewDate()));\n\n const syncDraft = () => {\n const next = parts();\n setDraftRange({ start: next.start.date || null, end: next.end.date || null });\n setPreviewDate(null);\n setStartTime(next.start.time || \"09:00\");\n setEndTime(next.end.time || \"10:00\");\n setVisibleMonth(parseDateValue(next.start.date || next.end.date, dateConfig()));\n };\n\n const valueLabel = () => {\n if (!value().start && !value().end) return \"\";\n const format = withTime() ? formatDateTimeValue : displayDate;\n return `${value().start ? format(value().start, dateConfig()) : \"Start\"} to ${value().end ? format(value().end, dateConfig()) : \"End\"}`;\n };\n\n const valueContent = () => {\n const format = withTime() ? formatDateTimeValue : displayDate;\n return (\n <span class=\"k2b-date-range-value\">\n <span>{value().start ? format(value().start, dateConfig()) : messages().start}</span>\n <i class=\"ti ti-arrow-narrow-right\" aria-hidden=\"true\" />\n <span>{value().end ? format(value().end, dateConfig()) : \"End\"}</span>\n </span>\n );\n };\n\n const selectDate = (value: string) => {\n const current = draftRange();\n if (!current.start || current.end) {\n setDraftRange({ start: value, end: null });\n } else {\n setDraftRange(orderedRange(current.start, value));\n }\n setPreviewDate(null);\n };\n\n const applyDuration = (minutes: number) => {\n const current = draftRange();\n if (!current.start || !isCompleteTime(startTime())) return;\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n if (!start) return;\n const end = new Date(new Date(start).getTime() + minutes * 60_000).toISOString();\n const next = splitDateTime(end, dateConfig());\n setDraftRange({ start: current.start, end: next.date || current.end || current.start });\n setEndTime(next.time || endTime());\n };\n\n const durationMinutes = createMemo(() => {\n const current = displayRange();\n if (!current.start || !current.end || !isCompleteTime(startTime()) || !isCompleteTime(endTime())) return null;\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n const end = toDateTimeValue(current.end, endTime(), dateConfig());\n if (!start || !end) return null;\n return Math.round((new Date(end).getTime() - new Date(start).getTime()) / 60_000);\n });\n\n const durationLabel = () => {\n const current = displayRange();\n if (!current.start || !current.end) return \"\";\n if (!withTime()) return formatDateOnlyRangeDuration(current, dateConfig());\n if (!isCompleteTime(startTime()) || !isCompleteTime(endTime())) return \"\";\n const start = toDateTimeValue(current.start, startTime(), dateConfig());\n const end = toDateTimeValue(current.end, endTime(), dateConfig());\n return start && end ? dates.formatDuration(start, end, dateConfig()) : \"\";\n };\n\n const commit = (close: () => void) => {\n const current = draftRange();\n if (!withTime()) {\n close();\n commitFieldValue(props, current);\n return;\n }\n if ((current.start || current.end) && (!isCompleteTime(startTime()) || !isCompleteTime(endTime()))) return;\n const value = {\n start: current.start ? toDateTimeValue(current.start, startTime(), dateConfig()) : null,\n end: current.end ? toDateTimeValue(current.end, endTime(), dateConfig()) : null,\n };\n close();\n commitFieldValue(props, value);\n };\n\n return (\n <PickerShell\n owner={props}\n icon=\"ti ti-calendar-stats\"\n valueLabel={valueLabel}\n valueContent={valueContent}\n clearValue={{ start: null, end: null }}\n timezone={withTime() ? dateConfig().timeZone : undefined}\n footerMeta={() => (\n <Show when={durationLabel()}>\n <span class=\"k2b-date-duration\">\n <i class=\"ti ti-hourglass-low\" aria-hidden=\"true\" />\n {durationLabel()}\n </span>\n </Show>\n )}\n onOpen={syncDraft}\n wide={Boolean(props.datePresets?.length || props.presets?.length)}\n >\n {(close) => (\n <>\n <div class=\"k2b-date-popover__body\">\n <Show\n when={props.datePresets?.length}\n fallback={\n <PresetRail\n presets={props.presets}\n onSelect={(value) => {\n close();\n commitFieldValue(props, value);\n }}\n />\n }\n >\n <PresetRail\n presets={props.datePresets}\n onSelect={(value) => {\n setDraftRange(value ? { start: value, end: value } : { start: null, end: null });\n if (value) setVisibleMonth(parseDateValue(value, dateConfig()));\n }}\n />\n </Show>\n <DatePickerPanel\n visibleMonth={visibleMonth}\n setVisibleMonth={setVisibleMonth}\n range={displayRange}\n focusDate={() => draftRange().start}\n onSelect={selectDate}\n onDayPreview={(value) => {\n const current = draftRange();\n setPreviewDate(current.start && !current.end ? value : null);\n }}\n dateConfig={dateConfig()}\n />\n </div>\n\n <Show when={withTime()}>\n <div class=\"k2b-date-range-times\">\n <TimeInput label={messages().start} time={startTime()} onChange={setStartTime} />\n <TimeInput label={messages().end} time={endTime()} onChange={setEndTime} />\n </div>\n </Show>\n\n <div class=\"k2b-date-actions\">\n <Show when={withTime() && props.durationPresets?.length}>\n <div class=\"k2b-date-durations\" role=\"group\" aria-label={messages().durationPresets}>\n <For each={props.durationPresets}>\n {(preset) => (\n <button type=\"button\" aria-pressed={durationMinutes() === preset.minutes} onClick={() => applyDuration(preset.minutes)}>\n {preset.label}\n </button>\n )}\n </For>\n </div>\n </Show>\n {/* Only a half-picked range is uncommittable; an empty draft must stay\n applicable so a \"clear\" date preset can be committed. */}\n <button\n type=\"button\"\n class=\"k2b-date-apply\"\n disabled={\n Boolean(draftRange().start) !== Boolean(draftRange().end) ||\n Boolean(\n withTime() && draftRange().start && draftRange().end && (!isCompleteTime(startTime()) || !isCompleteTime(endTime())),\n )\n }\n onClick={() => commit(close)}\n >\n Apply\n </button>\n </div>\n </>\n )}\n </PickerShell>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import { ssrStyle as _$ssrStyle } from "solid-js/web";
2
+ import { memo as _$memo } from "solid-js/web";
2
3
  import { ssrElement as _$ssrElement } from "solid-js/web";
3
4
  import { mergeProps as _$mergeProps } from "solid-js/web";
4
5
  import { createComponent as _$createComponent } from "solid-js/web";
@@ -517,7 +518,7 @@ export function ImageCropper(props) {
517
518
  get children() {
518
519
  return _$createComponent(Show, {
519
520
  get when() {
520
- return preview() && crop();
521
+ return _$memo(() => !!preview())() && crop();
521
522
  },
522
523
  get children() {
523
524
  return _$ssr(_tmpl$1, _$ssrStyle(previewFrameStyle()), _$ssrAttribute("src", _$escape(preview().url, true), false) + _$ssrAttribute("alt", _$escape(messages().cropPreview, true), false), _$ssrStyle(previewImageStyle()), _$ssrAttribute("data-shape", _$escape(previewShape(), true), false), _$ssrStyle(cropStyle()), _$ssrAttribute("tabindex", disabled() ? _$escape(undefined, true) : 0, false) + _$ssrAttribute("aria-label", _$escape(messages().cropArea, true), false), _$escape(_$createComponent(Show, {