@k2b/ui 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/dist/browser/actions/ContextMenu.js +3 -1
  2. package/dist/browser/actions/ContextMenu.js.map +1 -1
  3. package/dist/browser/actions/FilterChip.js +3 -1
  4. package/dist/browser/actions/FilterChip.js.map +1 -1
  5. package/dist/browser/actions/SpotlightSearch.js +3 -1
  6. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  7. package/dist/browser/actions/filter-messages.js +20 -0
  8. package/dist/browser/actions/filter-messages.js.map +1 -0
  9. package/dist/browser/actions/spotlight-messages.js +16 -0
  10. package/dist/browser/actions/spotlight-messages.js.map +1 -0
  11. package/dist/browser/chat/ChatComposer.js +47 -41
  12. package/dist/browser/chat/ChatComposer.js.map +1 -1
  13. package/dist/browser/chat/ChatPrimitives.js +25 -23
  14. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  15. package/dist/browser/chat/ChatRoot.js +3 -3
  16. package/dist/browser/chat/ChatRoot.js.map +1 -1
  17. package/dist/browser/chat/ChatTimeline.js +12 -12
  18. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  19. package/dist/browser/chat/chat-messages.js +236 -0
  20. package/dist/browser/chat/chat-messages.js.map +1 -0
  21. package/dist/browser/content/Calendar.js +1096 -1060
  22. package/dist/browser/content/Calendar.js.map +1 -1
  23. package/dist/browser/content/CalendarDayView.js +1187 -0
  24. package/dist/browser/content/CalendarDayView.js.map +1 -0
  25. package/dist/browser/content/CalendarWeekView.js +1571 -0
  26. package/dist/browser/content/CalendarWeekView.js.map +1 -0
  27. package/dist/browser/content/Chart.js +15 -8
  28. package/dist/browser/content/Chart.js.map +1 -1
  29. package/dist/browser/content/ChartExplorer.js +185 -85
  30. package/dist/browser/content/ChartExplorer.js.map +1 -1
  31. package/dist/browser/content/ChartExplorerControls.js +9 -7
  32. package/dist/browser/content/ChartExplorerControls.js.map +1 -1
  33. package/dist/browser/content/ChartFilterControls.js +93 -34
  34. package/dist/browser/content/ChartFilterControls.js.map +1 -1
  35. package/dist/browser/content/ChartSnapshotView.js +3 -3
  36. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  37. package/dist/browser/content/DataTable.js +238 -201
  38. package/dist/browser/content/DataTable.js.map +1 -1
  39. package/dist/browser/content/Docs.js +3 -1
  40. package/dist/browser/content/Docs.js.map +1 -1
  41. package/dist/browser/content/FileBrowser.js +30 -26
  42. package/dist/browser/content/FileBrowser.js.map +1 -1
  43. package/dist/browser/content/FileTree.js +9 -7
  44. package/dist/browser/content/FileTree.js.map +1 -1
  45. package/dist/browser/content/FileView.js +37 -28
  46. package/dist/browser/content/FileView.js.map +1 -1
  47. package/dist/browser/content/Lightbox.js +9 -7
  48. package/dist/browser/content/Lightbox.js.map +1 -1
  49. package/dist/browser/content/LogEntriesTable.js +3 -3
  50. package/dist/browser/content/LogEntriesTable.js.map +1 -1
  51. package/dist/browser/content/MessageRow.js +24 -22
  52. package/dist/browser/content/MessageRow.js.map +1 -1
  53. package/dist/browser/content/Pagination.js +7 -7
  54. package/dist/browser/content/Pagination.js.map +1 -1
  55. package/dist/browser/content/PdfPreview.js +15 -13
  56. package/dist/browser/content/PdfPreview.js.map +1 -1
  57. package/dist/browser/content/RangePicker.js +3 -1
  58. package/dist/browser/content/RangePicker.js.map +1 -1
  59. package/dist/browser/content/StructuredDataPreview.js +3 -1
  60. package/dist/browser/content/StructuredDataPreview.js.map +1 -1
  61. package/dist/browser/content/Timeline.js +13 -11
  62. package/dist/browser/content/Timeline.js.map +1 -1
  63. package/dist/browser/content/VideoPlayer.js +5 -5
  64. package/dist/browser/content/VideoPlayer.js.map +1 -1
  65. package/dist/browser/content/VirtualFeed.js +6 -4
  66. package/dist/browser/content/VirtualFeed.js.map +1 -1
  67. package/dist/browser/content/ZoomPanViewport.js +10 -7
  68. package/dist/browser/content/ZoomPanViewport.js.map +1 -1
  69. package/dist/browser/content/calendar-day-scroll.js +98 -0
  70. package/dist/browser/content/calendar-day-scroll.js.map +1 -0
  71. package/dist/browser/content/calendar-days.js +408 -0
  72. package/dist/browser/content/calendar-days.js.map +1 -0
  73. package/dist/browser/content/calendar-dialogs.js +236 -0
  74. package/dist/browser/content/calendar-dialogs.js.map +1 -0
  75. package/dist/browser/content/calendar-messages.js +249 -3
  76. package/dist/browser/content/calendar-messages.js.map +1 -1
  77. package/dist/browser/content/calendar-pointer.js +19 -6
  78. package/dist/browser/content/calendar-pointer.js.map +1 -1
  79. package/dist/browser/content/calendar-shared.js +328 -0
  80. package/dist/browser/content/calendar-shared.js.map +1 -0
  81. package/dist/browser/content/calendar-time-view.js +1649 -0
  82. package/dist/browser/content/calendar-time-view.js.map +1 -0
  83. package/dist/browser/content/chart-messages.js +146 -0
  84. package/dist/browser/content/chart-messages.js.map +1 -0
  85. package/dist/browser/content/collection-selection.js +2 -0
  86. package/dist/browser/content/collection-selection.js.map +1 -1
  87. package/dist/browser/content/data-table-messages.js +24 -0
  88. package/dist/browser/content/data-table-messages.js.map +1 -0
  89. package/dist/browser/content/docs-messages.js +24 -0
  90. package/dist/browser/content/docs-messages.js.map +1 -0
  91. package/dist/browser/content/feed-messages.js +34 -0
  92. package/dist/browser/content/feed-messages.js.map +1 -0
  93. package/dist/browser/content/file-browser-messages.js +69 -0
  94. package/dist/browser/content/file-browser-messages.js.map +1 -0
  95. package/dist/browser/content/file-view-messages.js +64 -0
  96. package/dist/browser/content/file-view-messages.js.map +1 -0
  97. package/dist/browser/content/index.js.map +1 -1
  98. package/dist/browser/content/lightbox-messages.js +36 -0
  99. package/dist/browser/content/lightbox-messages.js.map +1 -0
  100. package/dist/browser/content/log-entries-messages.js +20 -0
  101. package/dist/browser/content/log-entries-messages.js.map +1 -0
  102. package/dist/browser/content/markdown-info-block-messages.js +24 -0
  103. package/dist/browser/content/markdown-info-block-messages.js.map +1 -0
  104. package/dist/browser/content/markdown-info-blocks.js +3 -3
  105. package/dist/browser/content/markdown-info-blocks.js.map +1 -1
  106. package/dist/browser/content/markdown-links.js +2 -2
  107. package/dist/browser/content/markdown-links.js.map +1 -1
  108. package/dist/browser/content/markdown-reference-messages.js +30 -0
  109. package/dist/browser/content/markdown-reference-messages.js.map +1 -0
  110. package/dist/browser/content/pagination-messages.js +38 -0
  111. package/dist/browser/content/pagination-messages.js.map +1 -0
  112. package/dist/browser/content/pdf-messages.js +43 -0
  113. package/dist/browser/content/pdf-messages.js.map +1 -0
  114. package/dist/browser/content/range-picker-messages.js +20 -0
  115. package/dist/browser/content/range-picker-messages.js.map +1 -0
  116. package/dist/browser/content/structured-data-messages.js +22 -0
  117. package/dist/browser/content/structured-data-messages.js.map +1 -0
  118. package/dist/browser/content/timeline-messages.js +62 -0
  119. package/dist/browser/content/timeline-messages.js.map +1 -0
  120. package/dist/browser/content/video-messages.js +24 -0
  121. package/dist/browser/content/video-messages.js.map +1 -0
  122. package/dist/browser/content/viewport-messages.js +28 -0
  123. package/dist/browser/content/viewport-messages.js.map +1 -0
  124. package/dist/browser/feedback/HoverPreview.js +34 -6
  125. package/dist/browser/feedback/HoverPreview.js.map +1 -1
  126. package/dist/browser/feedback/InstallGuide.js +18 -18
  127. package/dist/browser/feedback/InstallGuide.js.map +1 -1
  128. package/dist/browser/feedback/install-messages.js +104 -0
  129. package/dist/browser/feedback/install-messages.js.map +1 -0
  130. package/dist/browser/feedback/prompt-messages.js +65 -0
  131. package/dist/browser/feedback/prompt-messages.js.map +1 -0
  132. package/dist/browser/feedback/prompts.js +14 -11
  133. package/dist/browser/feedback/prompts.js.map +1 -1
  134. package/dist/browser/feedback/toast-messages.js +18 -0
  135. package/dist/browser/feedback/toast-messages.js.map +1 -0
  136. package/dist/browser/feedback/toast.js +4 -3
  137. package/dist/browser/feedback/toast.js.map +1 -1
  138. package/dist/browser/index.js +1 -1
  139. package/dist/browser/index.js.map +1 -1
  140. package/dist/browser/inputs/AutocompleteEditor.js +6 -4
  141. package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
  142. package/dist/browser/inputs/AutocompleteSelect.js +10 -8
  143. package/dist/browser/inputs/AutocompleteSelect.js.map +1 -1
  144. package/dist/browser/inputs/ChoiceGroups.js +4 -0
  145. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  146. package/dist/browser/inputs/ChoiceInputs.js +5 -5
  147. package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
  148. package/dist/browser/inputs/Combobox.js +3 -2
  149. package/dist/browser/inputs/Combobox.js.map +1 -1
  150. package/dist/browser/inputs/FileDropTarget.js +6 -6
  151. package/dist/browser/inputs/FileDropTarget.js.map +1 -1
  152. package/dist/browser/inputs/FileInputs.js +30 -21
  153. package/dist/browser/inputs/FileInputs.js.map +1 -1
  154. package/dist/browser/inputs/MultiSelectInput.js +7 -5
  155. package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
  156. package/dist/browser/inputs/NumberInput.js +4 -2
  157. package/dist/browser/inputs/NumberInput.js.map +1 -1
  158. package/dist/browser/inputs/QrScanner.js +5 -5
  159. package/dist/browser/inputs/QrScanner.js.map +1 -1
  160. package/dist/browser/inputs/Select.js +7 -5
  161. package/dist/browser/inputs/Select.js.map +1 -1
  162. package/dist/browser/inputs/SelectChip.js +3 -3
  163. package/dist/browser/inputs/SelectChip.js.map +1 -1
  164. package/dist/browser/inputs/SignatureInput.js +9 -3
  165. package/dist/browser/inputs/SignatureInput.js.map +1 -1
  166. package/dist/browser/inputs/SpecialInputs.js +4 -2
  167. package/dist/browser/inputs/SpecialInputs.js.map +1 -1
  168. package/dist/browser/inputs/TagEditor.js +8 -6
  169. package/dist/browser/inputs/TagEditor.js.map +1 -1
  170. package/dist/browser/inputs/TagsInput.js +5 -5
  171. package/dist/browser/inputs/TagsInput.js.map +1 -1
  172. package/dist/browser/inputs/TemplateEditor.js +5 -5
  173. package/dist/browser/inputs/TemplateEditor.js.map +1 -1
  174. package/dist/browser/inputs/TextInput.js +3 -1
  175. package/dist/browser/inputs/TextInput.js.map +1 -1
  176. package/dist/browser/inputs/completion-messages.js +24 -0
  177. package/dist/browser/inputs/completion-messages.js.map +1 -0
  178. package/dist/browser/inputs/file-drop-messages.js +63 -0
  179. package/dist/browser/inputs/file-drop-messages.js.map +1 -0
  180. package/dist/browser/inputs/file-drop.js.map +1 -1
  181. package/dist/browser/inputs/file-input-messages.js +60 -0
  182. package/dist/browser/inputs/file-input-messages.js.map +1 -0
  183. package/dist/browser/inputs/icon-messages.js +22 -0
  184. package/dist/browser/inputs/icon-messages.js.map +1 -0
  185. package/dist/browser/inputs/input-messages.js +38 -0
  186. package/dist/browser/inputs/input-messages.js.map +1 -0
  187. package/dist/browser/inputs/markdown/MarkdownEditor.js +10 -6
  188. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  189. package/dist/browser/inputs/markdown/Toolbar.js +13 -13
  190. package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
  191. package/dist/browser/inputs/markdown/editor-messages.js +43 -0
  192. package/dist/browser/inputs/markdown/editor-messages.js.map +1 -0
  193. package/dist/browser/inputs/markdown/toolbar-messages.js +40 -0
  194. package/dist/browser/inputs/markdown/toolbar-messages.js.map +1 -0
  195. package/dist/browser/inputs/qr-messages.js +26 -0
  196. package/dist/browser/inputs/qr-messages.js.map +1 -0
  197. package/dist/browser/inputs/select-messages.js +63 -0
  198. package/dist/browser/inputs/select-messages.js.map +1 -0
  199. package/dist/browser/inputs/tag-messages.js +44 -0
  200. package/dist/browser/inputs/tag-messages.js.map +1 -0
  201. package/dist/browser/inputs/template-messages.js +22 -0
  202. package/dist/browser/inputs/template-messages.js.map +1 -0
  203. package/dist/browser/internal/render-error-messages.js +20 -0
  204. package/dist/browser/internal/render-error-messages.js.map +1 -0
  205. package/dist/browser/internal/render-error.js +3 -1
  206. package/dist/browser/internal/render-error.js.map +1 -1
  207. package/dist/browser/internal/text-selection.js +101 -0
  208. package/dist/browser/internal/text-selection.js.map +1 -0
  209. package/dist/browser/intl/messages.js +6 -1155
  210. package/dist/browser/intl/messages.js.map +1 -1
  211. package/dist/browser/layout/AppWorkspace.js +594 -425
  212. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  213. package/dist/browser/layout/BottomSheet.js +6 -1
  214. package/dist/browser/layout/BottomSheet.js.map +1 -1
  215. package/dist/browser/layout/Discussion.js +8 -5
  216. package/dist/browser/layout/Discussion.js.map +1 -1
  217. package/dist/browser/layout/FloatingWindow.js +8 -5
  218. package/dist/browser/layout/FloatingWindow.js.map +1 -1
  219. package/dist/browser/layout/Navigation.js +7 -6
  220. package/dist/browser/layout/Navigation.js.map +1 -1
  221. package/dist/browser/layout/PageTitle.js +373 -0
  222. package/dist/browser/layout/PageTitle.js.map +1 -0
  223. package/dist/browser/layout/PanelDialog.js +8 -6
  224. package/dist/browser/layout/PanelDialog.js.map +1 -1
  225. package/dist/browser/layout/Panes.js +23 -15
  226. package/dist/browser/layout/Panes.js.map +1 -1
  227. package/dist/browser/layout/PullToRefresh.js +13 -4
  228. package/dist/browser/layout/PullToRefresh.js.map +1 -1
  229. package/dist/browser/layout/Settings.js +14 -12
  230. package/dist/browser/layout/Settings.js.map +1 -1
  231. package/dist/browser/layout/SettingsCollection.js +6 -5
  232. package/dist/browser/layout/SettingsCollection.js.map +1 -1
  233. package/dist/browser/layout/SettingsModal.js +3 -1
  234. package/dist/browser/layout/SettingsModal.js.map +1 -1
  235. package/dist/browser/layout/app-workspace-controller.js +821 -12
  236. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  237. package/dist/browser/layout/app-workspace-state.js +3 -2
  238. package/dist/browser/layout/app-workspace-state.js.map +1 -1
  239. package/dist/browser/layout/floating-window-messages.js +28 -0
  240. package/dist/browser/layout/floating-window-messages.js.map +1 -0
  241. package/dist/browser/layout/index.js +2 -0
  242. package/dist/browser/layout/index.js.map +1 -1
  243. package/dist/browser/layout/navigation-model.js.map +1 -1
  244. package/dist/browser/layout/page-title-controller.js +169 -0
  245. package/dist/browser/layout/page-title-controller.js.map +1 -0
  246. package/dist/browser/layout/panel-dialog-messages.js +20 -0
  247. package/dist/browser/layout/panel-dialog-messages.js.map +1 -0
  248. package/dist/browser/layout/panes-messages.js +48 -0
  249. package/dist/browser/layout/panes-messages.js.map +1 -0
  250. package/dist/browser/layout/refresh-messages.js +20 -0
  251. package/dist/browser/layout/refresh-messages.js.map +1 -0
  252. package/dist/browser/layout/settings-messages.js +54 -0
  253. package/dist/browser/layout/settings-messages.js.map +1 -0
  254. package/dist/browser/layout/workspace-messages.js +56 -0
  255. package/dist/browser/layout/workspace-messages.js.map +1 -0
  256. package/dist/browser/surfaces/Avatar.js +5 -5
  257. package/dist/browser/surfaces/Avatar.js.map +1 -1
  258. package/dist/browser/surfaces/ResourceCard.js +4 -2
  259. package/dist/browser/surfaces/ResourceCard.js.map +1 -1
  260. package/dist/browser/surfaces/StatCell.js +18 -6
  261. package/dist/browser/surfaces/StatCell.js.map +1 -1
  262. package/dist/browser/surfaces/Tag.js +3 -3
  263. package/dist/browser/surfaces/Tag.js.map +1 -1
  264. package/dist/browser/surfaces/avatar-messages.js +26 -0
  265. package/dist/browser/surfaces/avatar-messages.js.map +1 -0
  266. package/dist/browser/surfaces/resource-messages.js +26 -0
  267. package/dist/browser/surfaces/resource-messages.js.map +1 -0
  268. package/dist/browser/widgets/Widget.js +6 -0
  269. package/dist/browser/widgets/Widget.js.map +1 -1
  270. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  271. package/dist/ssr/actions/FilterChip.js +3 -1
  272. package/dist/ssr/actions/FilterChip.js.map +1 -1
  273. package/dist/ssr/actions/SpotlightSearch.js +3 -1
  274. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  275. package/dist/ssr/actions/filter-messages.js +20 -0
  276. package/dist/ssr/actions/filter-messages.js.map +1 -0
  277. package/dist/ssr/actions/spotlight-messages.js +16 -0
  278. package/dist/ssr/actions/spotlight-messages.js.map +1 -0
  279. package/dist/ssr/chat/ChatComposer.js +47 -41
  280. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  281. package/dist/ssr/chat/ChatPrimitives.js +23 -21
  282. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  283. package/dist/ssr/chat/ChatRoot.js +3 -3
  284. package/dist/ssr/chat/ChatRoot.js.map +1 -1
  285. package/dist/ssr/chat/ChatTimeline.js +11 -11
  286. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  287. package/dist/ssr/chat/chat-messages.js +236 -0
  288. package/dist/ssr/chat/chat-messages.js.map +1 -0
  289. package/dist/ssr/content/Calendar.js +534 -346
  290. package/dist/ssr/content/Calendar.js.map +1 -1
  291. package/dist/ssr/content/CalendarDayView.js +800 -0
  292. package/dist/ssr/content/CalendarDayView.js.map +1 -0
  293. package/dist/ssr/content/CalendarWeekView.js +1069 -0
  294. package/dist/ssr/content/CalendarWeekView.js.map +1 -0
  295. package/dist/ssr/content/Chart.js +12 -5
  296. package/dist/ssr/content/Chart.js.map +1 -1
  297. package/dist/ssr/content/ChartExplorer.js +98 -37
  298. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  299. package/dist/ssr/content/ChartExplorerControls.js +9 -7
  300. package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
  301. package/dist/ssr/content/ChartFilterControls.js +52 -8
  302. package/dist/ssr/content/ChartFilterControls.js.map +1 -1
  303. package/dist/ssr/content/ChartSnapshotView.js +3 -3
  304. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  305. package/dist/ssr/content/DataTable.js +77 -53
  306. package/dist/ssr/content/DataTable.js.map +1 -1
  307. package/dist/ssr/content/Docs.js +3 -1
  308. package/dist/ssr/content/Docs.js.map +1 -1
  309. package/dist/ssr/content/FileBrowser.js +30 -26
  310. package/dist/ssr/content/FileBrowser.js.map +1 -1
  311. package/dist/ssr/content/FileTree.js +9 -7
  312. package/dist/ssr/content/FileTree.js.map +1 -1
  313. package/dist/ssr/content/FileView.js +37 -28
  314. package/dist/ssr/content/FileView.js.map +1 -1
  315. package/dist/ssr/content/Lightbox.js +8 -6
  316. package/dist/ssr/content/Lightbox.js.map +1 -1
  317. package/dist/ssr/content/LogEntriesTable.js +3 -3
  318. package/dist/ssr/content/LogEntriesTable.js.map +1 -1
  319. package/dist/ssr/content/MessageRow.js +24 -22
  320. package/dist/ssr/content/MessageRow.js.map +1 -1
  321. package/dist/ssr/content/Pagination.js +6 -6
  322. package/dist/ssr/content/Pagination.js.map +1 -1
  323. package/dist/ssr/content/PdfPreview.js +15 -13
  324. package/dist/ssr/content/PdfPreview.js.map +1 -1
  325. package/dist/ssr/content/RangePicker.js +3 -1
  326. package/dist/ssr/content/RangePicker.js.map +1 -1
  327. package/dist/ssr/content/StructuredDataPreview.js +3 -1
  328. package/dist/ssr/content/StructuredDataPreview.js.map +1 -1
  329. package/dist/ssr/content/Timeline.js +13 -11
  330. package/dist/ssr/content/Timeline.js.map +1 -1
  331. package/dist/ssr/content/VideoPlayer.js +5 -5
  332. package/dist/ssr/content/VideoPlayer.js.map +1 -1
  333. package/dist/ssr/content/VirtualFeed.js +6 -4
  334. package/dist/ssr/content/VirtualFeed.js.map +1 -1
  335. package/dist/ssr/content/ZoomPanViewport.js +7 -4
  336. package/dist/ssr/content/ZoomPanViewport.js.map +1 -1
  337. package/dist/ssr/content/calendar-day-scroll.js +98 -0
  338. package/dist/ssr/content/calendar-day-scroll.js.map +1 -0
  339. package/dist/ssr/content/calendar-days.js +408 -0
  340. package/dist/ssr/content/calendar-days.js.map +1 -0
  341. package/dist/ssr/content/calendar-dialogs.js +159 -0
  342. package/dist/ssr/content/calendar-dialogs.js.map +1 -0
  343. package/dist/ssr/content/calendar-messages.js +249 -3
  344. package/dist/ssr/content/calendar-messages.js.map +1 -1
  345. package/dist/ssr/content/calendar-pointer.js +19 -6
  346. package/dist/ssr/content/calendar-pointer.js.map +1 -1
  347. package/dist/ssr/content/calendar-shared.js +261 -0
  348. package/dist/ssr/content/calendar-shared.js.map +1 -0
  349. package/dist/ssr/content/calendar-time-view.js +1306 -0
  350. package/dist/ssr/content/calendar-time-view.js.map +1 -0
  351. package/dist/ssr/content/chart-messages.js +146 -0
  352. package/dist/ssr/content/chart-messages.js.map +1 -0
  353. package/dist/ssr/content/collection-selection.js +2 -0
  354. package/dist/ssr/content/collection-selection.js.map +1 -1
  355. package/dist/ssr/content/data-table-messages.js +24 -0
  356. package/dist/ssr/content/data-table-messages.js.map +1 -0
  357. package/dist/ssr/content/docs-messages.js +24 -0
  358. package/dist/ssr/content/docs-messages.js.map +1 -0
  359. package/dist/ssr/content/feed-messages.js +34 -0
  360. package/dist/ssr/content/feed-messages.js.map +1 -0
  361. package/dist/ssr/content/file-browser-messages.js +69 -0
  362. package/dist/ssr/content/file-browser-messages.js.map +1 -0
  363. package/dist/ssr/content/file-view-messages.js +64 -0
  364. package/dist/ssr/content/file-view-messages.js.map +1 -0
  365. package/dist/ssr/content/index.js.map +1 -1
  366. package/dist/ssr/content/lightbox-messages.js +36 -0
  367. package/dist/ssr/content/lightbox-messages.js.map +1 -0
  368. package/dist/ssr/content/log-entries-messages.js +20 -0
  369. package/dist/ssr/content/log-entries-messages.js.map +1 -0
  370. package/dist/ssr/content/markdown-info-block-messages.js +24 -0
  371. package/dist/ssr/content/markdown-info-block-messages.js.map +1 -0
  372. package/dist/ssr/content/markdown-info-blocks.js +3 -3
  373. package/dist/ssr/content/markdown-info-blocks.js.map +1 -1
  374. package/dist/ssr/content/markdown-links.js +2 -2
  375. package/dist/ssr/content/markdown-links.js.map +1 -1
  376. package/dist/ssr/content/markdown-reference-messages.js +30 -0
  377. package/dist/ssr/content/markdown-reference-messages.js.map +1 -0
  378. package/dist/ssr/content/pagination-messages.js +38 -0
  379. package/dist/ssr/content/pagination-messages.js.map +1 -0
  380. package/dist/ssr/content/pdf-messages.js +43 -0
  381. package/dist/ssr/content/pdf-messages.js.map +1 -0
  382. package/dist/ssr/content/range-picker-messages.js +20 -0
  383. package/dist/ssr/content/range-picker-messages.js.map +1 -0
  384. package/dist/ssr/content/structured-data-messages.js +22 -0
  385. package/dist/ssr/content/structured-data-messages.js.map +1 -0
  386. package/dist/ssr/content/timeline-messages.js +62 -0
  387. package/dist/ssr/content/timeline-messages.js.map +1 -0
  388. package/dist/ssr/content/video-messages.js +24 -0
  389. package/dist/ssr/content/video-messages.js.map +1 -0
  390. package/dist/ssr/content/viewport-messages.js +28 -0
  391. package/dist/ssr/content/viewport-messages.js.map +1 -0
  392. package/dist/ssr/feedback/HoverPreview.js +34 -6
  393. package/dist/ssr/feedback/HoverPreview.js.map +1 -1
  394. package/dist/ssr/feedback/InstallGuide.js +18 -18
  395. package/dist/ssr/feedback/InstallGuide.js.map +1 -1
  396. package/dist/ssr/feedback/install-messages.js +104 -0
  397. package/dist/ssr/feedback/install-messages.js.map +1 -0
  398. package/dist/ssr/feedback/prompt-messages.js +65 -0
  399. package/dist/ssr/feedback/prompt-messages.js.map +1 -0
  400. package/dist/ssr/feedback/prompts.js +14 -11
  401. package/dist/ssr/feedback/prompts.js.map +1 -1
  402. package/dist/ssr/feedback/toast-messages.js +18 -0
  403. package/dist/ssr/feedback/toast-messages.js.map +1 -0
  404. package/dist/ssr/feedback/toast.js +4 -3
  405. package/dist/ssr/feedback/toast.js.map +1 -1
  406. package/dist/ssr/index.js +1 -1
  407. package/dist/ssr/index.js.map +1 -1
  408. package/dist/ssr/inputs/AutocompleteEditor.js +5 -3
  409. package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
  410. package/dist/ssr/inputs/AutocompleteSelect.js +10 -8
  411. package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -1
  412. package/dist/ssr/inputs/ChoiceGroups.js +4 -0
  413. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  414. package/dist/ssr/inputs/ChoiceInputs.js +5 -5
  415. package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
  416. package/dist/ssr/inputs/Combobox.js +3 -1
  417. package/dist/ssr/inputs/Combobox.js.map +1 -1
  418. package/dist/ssr/inputs/FileDropTarget.js +6 -6
  419. package/dist/ssr/inputs/FileDropTarget.js.map +1 -1
  420. package/dist/ssr/inputs/FileInputs.js +29 -20
  421. package/dist/ssr/inputs/FileInputs.js.map +1 -1
  422. package/dist/ssr/inputs/MultiSelectInput.js +7 -5
  423. package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
  424. package/dist/ssr/inputs/NumberInput.js +4 -2
  425. package/dist/ssr/inputs/NumberInput.js.map +1 -1
  426. package/dist/ssr/inputs/QrScanner.js +4 -4
  427. package/dist/ssr/inputs/QrScanner.js.map +1 -1
  428. package/dist/ssr/inputs/Select.js +7 -5
  429. package/dist/ssr/inputs/Select.js.map +1 -1
  430. package/dist/ssr/inputs/SelectChip.js +3 -3
  431. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  432. package/dist/ssr/inputs/SignatureInput.js +9 -3
  433. package/dist/ssr/inputs/SignatureInput.js.map +1 -1
  434. package/dist/ssr/inputs/SpecialInputs.js +4 -2
  435. package/dist/ssr/inputs/SpecialInputs.js.map +1 -1
  436. package/dist/ssr/inputs/TagEditor.js +8 -6
  437. package/dist/ssr/inputs/TagEditor.js.map +1 -1
  438. package/dist/ssr/inputs/TagsInput.js +5 -5
  439. package/dist/ssr/inputs/TagsInput.js.map +1 -1
  440. package/dist/ssr/inputs/TemplateEditor.js +5 -5
  441. package/dist/ssr/inputs/TemplateEditor.js.map +1 -1
  442. package/dist/ssr/inputs/TextInput.js +3 -1
  443. package/dist/ssr/inputs/TextInput.js.map +1 -1
  444. package/dist/ssr/inputs/completion-messages.js +24 -0
  445. package/dist/ssr/inputs/completion-messages.js.map +1 -0
  446. package/dist/ssr/inputs/file-drop-messages.js +63 -0
  447. package/dist/ssr/inputs/file-drop-messages.js.map +1 -0
  448. package/dist/ssr/inputs/file-drop.js.map +1 -1
  449. package/dist/ssr/inputs/file-input-messages.js +60 -0
  450. package/dist/ssr/inputs/file-input-messages.js.map +1 -0
  451. package/dist/ssr/inputs/icon-messages.js +22 -0
  452. package/dist/ssr/inputs/icon-messages.js.map +1 -0
  453. package/dist/ssr/inputs/input-messages.js +38 -0
  454. package/dist/ssr/inputs/input-messages.js.map +1 -0
  455. package/dist/ssr/inputs/markdown/MarkdownEditor.js +9 -5
  456. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  457. package/dist/ssr/inputs/markdown/Toolbar.js +13 -13
  458. package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
  459. package/dist/ssr/inputs/markdown/editor-messages.js +43 -0
  460. package/dist/ssr/inputs/markdown/editor-messages.js.map +1 -0
  461. package/dist/ssr/inputs/markdown/toolbar-messages.js +40 -0
  462. package/dist/ssr/inputs/markdown/toolbar-messages.js.map +1 -0
  463. package/dist/ssr/inputs/qr-messages.js +26 -0
  464. package/dist/ssr/inputs/qr-messages.js.map +1 -0
  465. package/dist/ssr/inputs/select-messages.js +63 -0
  466. package/dist/ssr/inputs/select-messages.js.map +1 -0
  467. package/dist/ssr/inputs/tag-messages.js +44 -0
  468. package/dist/ssr/inputs/tag-messages.js.map +1 -0
  469. package/dist/ssr/inputs/template-messages.js +22 -0
  470. package/dist/ssr/inputs/template-messages.js.map +1 -0
  471. package/dist/ssr/internal/render-error-messages.js +20 -0
  472. package/dist/ssr/internal/render-error-messages.js.map +1 -0
  473. package/dist/ssr/internal/render-error.js +3 -1
  474. package/dist/ssr/internal/render-error.js.map +1 -1
  475. package/dist/ssr/internal/text-selection.js +101 -0
  476. package/dist/ssr/internal/text-selection.js.map +1 -0
  477. package/dist/ssr/intl/messages.js +6 -1155
  478. package/dist/ssr/intl/messages.js.map +1 -1
  479. package/dist/ssr/layout/AppWorkspace.js +219 -103
  480. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  481. package/dist/ssr/layout/BottomSheet.js +1 -0
  482. package/dist/ssr/layout/BottomSheet.js.map +1 -1
  483. package/dist/ssr/layout/Discussion.js +8 -5
  484. package/dist/ssr/layout/Discussion.js.map +1 -1
  485. package/dist/ssr/layout/FloatingWindow.js +8 -5
  486. package/dist/ssr/layout/FloatingWindow.js.map +1 -1
  487. package/dist/ssr/layout/Navigation.js +6 -5
  488. package/dist/ssr/layout/Navigation.js.map +1 -1
  489. package/dist/ssr/layout/PageTitle.js +256 -0
  490. package/dist/ssr/layout/PageTitle.js.map +1 -0
  491. package/dist/ssr/layout/PanelDialog.js +8 -6
  492. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  493. package/dist/ssr/layout/Panes.js +22 -14
  494. package/dist/ssr/layout/Panes.js.map +1 -1
  495. package/dist/ssr/layout/PullToRefresh.js +13 -4
  496. package/dist/ssr/layout/PullToRefresh.js.map +1 -1
  497. package/dist/ssr/layout/Settings.js +14 -12
  498. package/dist/ssr/layout/Settings.js.map +1 -1
  499. package/dist/ssr/layout/SettingsCollection.js +6 -5
  500. package/dist/ssr/layout/SettingsCollection.js.map +1 -1
  501. package/dist/ssr/layout/SettingsModal.js +3 -1
  502. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  503. package/dist/ssr/layout/app-workspace-controller.js +821 -12
  504. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  505. package/dist/ssr/layout/app-workspace-state.js +3 -2
  506. package/dist/ssr/layout/app-workspace-state.js.map +1 -1
  507. package/dist/ssr/layout/floating-window-messages.js +28 -0
  508. package/dist/ssr/layout/floating-window-messages.js.map +1 -0
  509. package/dist/ssr/layout/index.js +2 -0
  510. package/dist/ssr/layout/index.js.map +1 -1
  511. package/dist/ssr/layout/navigation-model.js.map +1 -1
  512. package/dist/ssr/layout/page-title-controller.js +169 -0
  513. package/dist/ssr/layout/page-title-controller.js.map +1 -0
  514. package/dist/ssr/layout/panel-dialog-messages.js +20 -0
  515. package/dist/ssr/layout/panel-dialog-messages.js.map +1 -0
  516. package/dist/ssr/layout/panes-messages.js +48 -0
  517. package/dist/ssr/layout/panes-messages.js.map +1 -0
  518. package/dist/ssr/layout/refresh-messages.js +20 -0
  519. package/dist/ssr/layout/refresh-messages.js.map +1 -0
  520. package/dist/ssr/layout/settings-messages.js +54 -0
  521. package/dist/ssr/layout/settings-messages.js.map +1 -0
  522. package/dist/ssr/layout/workspace-messages.js +56 -0
  523. package/dist/ssr/layout/workspace-messages.js.map +1 -0
  524. package/dist/ssr/surfaces/Avatar.js +5 -5
  525. package/dist/ssr/surfaces/Avatar.js.map +1 -1
  526. package/dist/ssr/surfaces/ResourceCard.js +4 -2
  527. package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
  528. package/dist/ssr/surfaces/StatCell.js +2 -2
  529. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  530. package/dist/ssr/surfaces/Tag.js +3 -3
  531. package/dist/ssr/surfaces/Tag.js.map +1 -1
  532. package/dist/ssr/surfaces/avatar-messages.js +26 -0
  533. package/dist/ssr/surfaces/avatar-messages.js.map +1 -0
  534. package/dist/ssr/surfaces/resource-messages.js +26 -0
  535. package/dist/ssr/surfaces/resource-messages.js.map +1 -0
  536. package/dist/ssr/widgets/Widget.js +6 -0
  537. package/dist/ssr/widgets/Widget.js.map +1 -1
  538. package/dist/styles.css +1 -1
  539. package/dist/types/actions/filter-messages.d.ts +8 -0
  540. package/dist/types/actions/spotlight-messages.d.ts +8 -0
  541. package/dist/types/chat/chat-messages.d.ts +116 -0
  542. package/dist/types/content/Calendar.d.ts +91 -0
  543. package/dist/types/content/CalendarDayView.d.ts +7 -0
  544. package/dist/types/content/CalendarWeekView.d.ts +7 -0
  545. package/dist/types/content/ChartExplorer.d.ts +36 -1
  546. package/dist/types/content/ChartFilterControls.d.ts +6 -1
  547. package/dist/types/content/DataTable.d.ts +7 -0
  548. package/dist/types/content/FileView.d.ts +0 -10
  549. package/dist/types/content/calendar-day-scroll.d.ts +42 -0
  550. package/dist/types/content/calendar-days.d.ts +192 -0
  551. package/dist/types/content/calendar-dialogs.d.ts +22 -0
  552. package/dist/types/content/calendar-messages.d.ts +119 -1
  553. package/dist/types/content/calendar-pointer.d.ts +9 -0
  554. package/dist/types/content/calendar-shared.d.ts +69 -0
  555. package/dist/types/content/calendar-time-view.d.ts +252 -0
  556. package/dist/types/content/chart-messages.d.ts +37 -0
  557. package/dist/types/content/data-table-messages.d.ts +10 -0
  558. package/dist/types/content/docs-messages.d.ts +10 -0
  559. package/dist/types/content/feed-messages.d.ts +15 -0
  560. package/dist/types/content/file-browser-messages.d.ts +33 -0
  561. package/dist/types/content/file-view-messages.d.ts +30 -0
  562. package/dist/types/content/index.d.ts +2 -2
  563. package/dist/types/content/lightbox-messages.d.ts +16 -0
  564. package/dist/types/content/log-entries-messages.d.ts +8 -0
  565. package/dist/types/content/markdown-info-block-messages.d.ts +12 -0
  566. package/dist/types/content/markdown-reference-messages.d.ts +15 -0
  567. package/dist/types/content/pagination-messages.d.ts +17 -0
  568. package/dist/types/content/pdf-messages.d.ts +20 -0
  569. package/dist/types/content/range-picker-messages.d.ts +8 -0
  570. package/dist/types/content/structured-data-messages.d.ts +9 -0
  571. package/dist/types/content/timeline-messages.d.ts +29 -0
  572. package/dist/types/content/video-messages.d.ts +10 -0
  573. package/dist/types/content/viewport-messages.d.ts +12 -0
  574. package/dist/types/feedback/install-messages.d.ts +50 -0
  575. package/dist/types/feedback/prompt-messages.d.ts +31 -0
  576. package/dist/types/feedback/toast-messages.d.ts +9 -0
  577. package/dist/types/index.d.ts +1 -0
  578. package/dist/types/inputs/completion-messages.d.ts +10 -0
  579. package/dist/types/inputs/file-drop-messages.d.ts +30 -0
  580. package/dist/types/inputs/file-drop.d.ts +3 -3
  581. package/dist/types/inputs/file-input-messages.d.ts +28 -0
  582. package/dist/types/inputs/icon-messages.d.ts +9 -0
  583. package/dist/types/inputs/input-messages.d.ts +17 -0
  584. package/dist/types/inputs/markdown/editor-messages.d.ts +20 -0
  585. package/dist/types/inputs/markdown/toolbar-messages.d.ts +18 -0
  586. package/dist/types/inputs/qr-messages.d.ts +11 -0
  587. package/dist/types/inputs/select-messages.d.ts +30 -0
  588. package/dist/types/inputs/tag-messages.d.ts +20 -0
  589. package/dist/types/inputs/template-messages.d.ts +9 -0
  590. package/dist/types/internal/render-error-messages.d.ts +8 -0
  591. package/dist/types/internal/text-selection.d.ts +18 -0
  592. package/dist/types/intl/messages.d.ts +3 -544
  593. package/dist/types/layout/AppWorkspace.d.ts +42 -5
  594. package/dist/types/layout/PageTitle.d.ts +65 -0
  595. package/dist/types/layout/app-workspace-controller.d.ts +12 -0
  596. package/dist/types/layout/app-workspace-state.d.ts +3 -2
  597. package/dist/types/layout/floating-window-messages.d.ts +12 -0
  598. package/dist/types/layout/index.d.ts +3 -0
  599. package/dist/types/layout/navigation-model.d.ts +7 -0
  600. package/dist/types/layout/page-title-controller.d.ts +13 -0
  601. package/dist/types/layout/panel-dialog-messages.d.ts +8 -0
  602. package/dist/types/layout/panes-messages.d.ts +22 -0
  603. package/dist/types/layout/refresh-messages.d.ts +8 -0
  604. package/dist/types/layout/settings-messages.d.ts +25 -0
  605. package/dist/types/layout/workspace-messages.d.ts +26 -0
  606. package/dist/types/surfaces/StatCell.d.ts +5 -0
  607. package/dist/types/surfaces/avatar-messages.d.ts +11 -0
  608. package/dist/types/surfaces/resource-messages.d.ts +11 -0
  609. package/dist/types/widgets/Widget.d.ts +5 -1
  610. package/package.json +1 -1
@@ -19,8 +19,8 @@ var _tmpl$ = /*#__PURE__*/_$template(`<p role=alert>`),
19
19
  import { clipboard } from "@k2b/stdlib/solid";
20
20
  import { createMemo, For, Match, Show, Switch } from "solid-js";
21
21
  import { Button, ButtonLink } from "../actions/Button";
22
- import { useUiMessages } from "../intl/messages";
23
22
  import { NoticeCard } from "../surfaces/NoticeCard";
23
+ import { useInstallMessages } from "./install-messages";
24
24
  /**
25
25
  * Opens `url` in Chrome on Android. Without Chrome, the browser loads `url` itself. Only an absolute http or https
26
26
  * address has an intent; anything else returns `undefined`.
@@ -45,7 +45,7 @@ const chromeIntent = url => {
45
45
  * the app package it builds. The host owns the surrounding surface, its heading, and dismissal.
46
46
  */
47
47
  export function InstallGuide(props) {
48
- const messages = useUiMessages();
48
+ const installMessages = useInstallMessages();
49
49
  // The host may hand over another state after mount, such as the browser's own in place of the server's view.
50
50
  const state = () => props.install;
51
51
  const copy = clipboard.createWriter({
@@ -54,7 +54,7 @@ export function InstallGuide(props) {
54
54
  const embedded = () => state().platform === "in-app" || state().platform === "apple-in-app";
55
55
  /** A browser that installs, but less reliably than the platform's own. */
56
56
  const hint = createMemo(() => {
57
- const t = messages();
57
+ const t = installMessages();
58
58
  if (state().platform === "apple-browser") return {
59
59
  title: t.installAppleBrowserTitle,
60
60
  detail: t.installAppleBrowserDetail
@@ -66,7 +66,7 @@ export function InstallGuide(props) {
66
66
  return undefined;
67
67
  });
68
68
  const steps = createMemo(() => {
69
- const t = messages();
69
+ const t = installMessages();
70
70
  if (state().platform === "apple-mobile" || state().platform === "apple-browser") return [{
71
71
  icon: "ti ti-share-2",
72
72
  title: t.installOpenShare,
@@ -111,7 +111,7 @@ export function InstallGuide(props) {
111
111
  },
112
112
  get children() {
113
113
  var _el$2 = _$getNextElement(_tmpl$);
114
- _$insert(_el$2, () => messages().installFailed);
114
+ _$insert(_el$2, () => installMessages().installFailed);
115
115
  return _el$2;
116
116
  }
117
117
  }), _el$1, _co$);
@@ -156,7 +156,7 @@ export function InstallGuide(props) {
156
156
  },
157
157
  get children() {
158
158
  var _el$13 = _$getNextElement(_tmpl$3);
159
- _$insert(_el$13, () => messages().installSafariFallback);
159
+ _$insert(_el$13, () => installMessages().installSafariFallback);
160
160
  return _el$13;
161
161
  }
162
162
  }), _$createComponent(Show, {
@@ -174,7 +174,7 @@ export function InstallGuide(props) {
174
174
  },
175
175
  get children() {
176
176
  var _el$15 = _$getNextElement(_tmpl$3);
177
- _$insert(_el$15, () => messages().installUnavailable);
177
+ _$insert(_el$15, () => installMessages().installUnavailable);
178
178
  return _el$15;
179
179
  }
180
180
  })];
@@ -186,7 +186,7 @@ export function InstallGuide(props) {
186
186
  },
187
187
  get children() {
188
188
  var _el$3 = _$getNextElement(_tmpl$2);
189
- _$insert(_el$3, () => messages().installRequested);
189
+ _$insert(_el$3, () => installMessages().installRequested);
190
190
  return _el$3;
191
191
  }
192
192
  }), _$createComponent(Match, {
@@ -197,10 +197,10 @@ export function InstallGuide(props) {
197
197
  return [_$createComponent(NoticeCard, {
198
198
  tone: "info",
199
199
  get title() {
200
- return messages().installSamsungTitle;
200
+ return installMessages().installSamsungTitle;
201
201
  },
202
202
  get detail() {
203
- return messages().installSamsungDetail({
203
+ return installMessages().installSamsungDetail({
204
204
  appName: props.appName
205
205
  });
206
206
  }
@@ -213,7 +213,7 @@ export function InstallGuide(props) {
213
213
  return href();
214
214
  },
215
215
  get children() {
216
- return [_$getNextElement(_tmpl$9), _$memo(() => messages().installOpenChrome)];
216
+ return [_$getNextElement(_tmpl$9), _$memo(() => installMessages().installOpenChrome)];
217
217
  }
218
218
  })
219
219
  }), _$createComponent(Show, {
@@ -234,7 +234,7 @@ export function InstallGuide(props) {
234
234
  get children() {
235
235
  return [(() => {
236
236
  var _el$5 = _$getNextElement(_tmpl$3);
237
- _$insert(_el$5, () => messages().installNative({
237
+ _$insert(_el$5, () => installMessages().installNative({
238
238
  appName: props.appName
239
239
  }));
240
240
  return _el$5;
@@ -244,7 +244,7 @@ export function InstallGuide(props) {
244
244
  },
245
245
  onClick: () => void state().install(),
246
246
  get children() {
247
- return messages().installApp;
247
+ return installMessages().installApp;
248
248
  }
249
249
  })];
250
250
  }
@@ -256,12 +256,12 @@ export function InstallGuide(props) {
256
256
  return [_$createComponent(NoticeCard, {
257
257
  tone: "warning",
258
258
  get title() {
259
- return _$memo(() => state().platform === "apple-in-app")() ? messages().installAppleInAppTitle : messages().installInAppTitle;
259
+ return _$memo(() => state().platform === "apple-in-app")() ? installMessages().installAppleInAppTitle : installMessages().installInAppTitle;
260
260
  },
261
261
  get detail() {
262
- return _$memo(() => state().platform === "apple-in-app")() ? messages().installAppleInAppDetail({
262
+ return _$memo(() => state().platform === "apple-in-app")() ? installMessages().installAppleInAppDetail({
263
263
  appName: props.appName
264
- }) : messages().installInAppDetail({
264
+ }) : installMessages().installInAppDetail({
265
265
  appName: props.appName
266
266
  });
267
267
  }
@@ -273,7 +273,7 @@ export function InstallGuide(props) {
273
273
  var _el$6 = _$getNextElement(_tmpl$4);
274
274
  _$effect(() => _$className(_el$6, copy.wasCopied() ? "ti ti-check" : "ti ti-copy"));
275
275
  return _el$6;
276
- })(), _$memo(() => _$memo(() => !!copy.wasCopied())() ? messages().installLinkCopied : messages().installCopyLink)];
276
+ })(), _$memo(() => _$memo(() => !!copy.wasCopied())() ? installMessages().installLinkCopied : installMessages().installCopyLink)];
277
277
  }
278
278
  }), _$createComponent(Show, {
279
279
  get when() {
@@ -282,7 +282,7 @@ export function InstallGuide(props) {
282
282
  get children() {
283
283
  return [(() => {
284
284
  var _el$7 = _$getNextElement(_tmpl$);
285
- _$insert(_el$7, () => messages().installCopyFailed);
285
+ _$insert(_el$7, () => installMessages().installCopyFailed);
286
286
  return _el$7;
287
287
  })(), (() => {
288
288
  var _el$8 = _$getNextElement(_tmpl$5);
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["feedback/InstallGuide.tsx"],"sourcesContent":["import { clipboard } from \"@k2b/stdlib/solid\";\nimport { createMemo, For, type JSX, Match, Show, Switch } from \"solid-js\";\nimport { Button, ButtonLink } from \"../actions/Button\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { NoticeCard } from \"../surfaces/NoticeCard\";\nimport type { InstallPrompt } from \"./install\";\n\nexport type InstallGuideProps = {\n /** The name people see on their Home Screen, used in the guidance text. */\n appName: string;\n install: InstallPrompt;\n /**\n * The absolute address of the page to install. A browser inside another app copies it, to open it in Safari or\n * Chrome, and shows it as text when copying fails, so it can be copied by hand. Samsung Internet opens an http or\n * https address in Chrome.\n */\n url: string;\n /**\n * An application note under the installation steps or the embedded browser's link, for example what else the\n * installed app enables.\n */\n note?: string;\n class?: string;\n};\n\n/**\n * Opens `url` in Chrome on Android. Without Chrome, the browser loads `url` itself. Only an absolute http or https\n * address has an intent; anything else returns `undefined`.\n */\nconst chromeIntent = (url: string) => {\n let target: URL;\n try {\n target = new URL(url);\n } catch {\n return undefined;\n }\n if (target.protocol !== \"https:\" && target.protocol !== \"http:\") return undefined;\n const scheme = target.protocol.slice(0, -1);\n return `intent://${target.host}${target.pathname}${target.search}${target.hash}#Intent;scheme=${scheme};package=com.android.chrome;S.browser_fallback_url=${encodeURIComponent(url)};end`;\n};\n\n/**\n * Explains how to install the current page as an app on this platform: the browser's own dialog where it offers\n * one, otherwise the steps for Safari on iPhone, iPad, and Mac, other browsers on iPhone and iPad, Android, and other\n * browsers. A browser inside another app cannot install, so it gets a warning and the link to copy into Safari or\n * Chrome instead. Samsung Internet gets a link to Chrome even when it offers its own dialog, because Android may block\n * the app package it builds. The host owns the surrounding surface, its heading, and dismissal.\n */\nexport function InstallGuide(props: InstallGuideProps): JSX.Element {\n const messages = useUiMessages();\n // The host may hand over another state after mount, such as the browser's own in place of the server's view.\n const state = () => props.install;\n const copy = clipboard.createWriter({ write: (url: string) => navigator.clipboard.writeText(url) });\n const embedded = () => state().platform === \"in-app\" || state().platform === \"apple-in-app\";\n /** A browser that installs, but less reliably than the platform's own. */\n const hint = createMemo(() => {\n const t = messages();\n if (state().platform === \"apple-browser\") return { title: t.installAppleBrowserTitle, detail: t.installAppleBrowserDetail };\n if (state().platform === \"android-browser\") return { title: t.installAndroidBrowserTitle, detail: t.installAndroidBrowserDetail };\n return undefined;\n });\n const steps = createMemo(() => {\n const t = messages();\n if (state().platform === \"apple-mobile\" || state().platform === \"apple-browser\")\n return [\n {\n icon: \"ti ti-share-2\",\n title: t.installOpenShare,\n detail: state().platform === \"apple-browser\" ? t.installOpenShareBrowserDetail : t.installOpenShareDetail,\n },\n { icon: \"ti ti-square-plus\", title: t.installHomeScreen, detail: t.installHomeScreenDetail },\n { icon: \"ti ti-check\", title: t.installConfirmAdd, detail: t.installConfirmAddDetail },\n ];\n if (state().platform === \"apple-desktop\")\n return [\n { icon: \"ti ti-share-2\", title: t.installSafariMenu, detail: t.installSafariMenuDetail },\n { icon: \"ti ti-app-window\", title: t.installAddDock, detail: t.installAddDockDetail },\n ];\n return [\n { icon: \"ti ti-dots\", title: t.installBrowserMenu, detail: t.installBrowserMenuDetail },\n {\n icon: \"ti ti-square-plus\",\n title: t.installApp,\n detail: state().platform === \"android\" || state().platform === \"android-browser\" ? t.installAndroidDetail : t.installBrowserDetail,\n },\n ];\n });\n return (\n <div class={props.class ? `k2b-install-guide ${props.class}` : \"k2b-install-guide\"} data-platform={state().platform}>\n <Show when={state().failed()}>\n <p role=\"alert\">{messages().installFailed}</p>\n </Show>\n <Switch\n fallback={\n <>\n <Show when={hint()}>{(hint) => <NoticeCard tone=\"info\" title={hint().title} detail={hint().detail} />}</Show>\n <ol class=\"k2b-install-guide__steps\">\n <For each={steps()}>\n {(step) => (\n <li>\n <span class=\"k2b-install-guide__step-icon\">\n <i class={step.icon} aria-hidden=\"true\" />\n </span>\n <div>\n <h3>{step.title}</h3>\n <p>{step.detail}</p>\n </div>\n </li>\n )}\n </For>\n </ol>\n <Show when={state().platform === \"apple-mobile\"}>\n <p>{messages().installSafariFallback}</p>\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n <Show when={state().platform === \"generic\"}>\n <p>{messages().installUnavailable}</p>\n </Show>\n </>\n }\n >\n <Match when={state().requested()}>\n <p role=\"status\">{messages().installRequested}</p>\n </Match>\n <Match when={state().platform === \"android-samsung\"}>\n <NoticeCard\n tone=\"info\"\n title={messages().installSamsungTitle}\n detail={messages().installSamsungDetail({ appName: props.appName })}\n />\n <Show when={chromeIntent(props.url)}>\n {(href) => (\n <ButtonLink href={href()}>\n <i class=\"ti ti-brand-chrome\" aria-hidden=\"true\" />\n {messages().installOpenChrome}\n </ButtonLink>\n )}\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n </Match>\n <Match when={state().canPrompt() || state().busy()}>\n <p>{messages().installNative({ appName: props.appName })}</p>\n <Button loading={state().busy()} onClick={() => void state().install()}>\n {messages().installApp}\n </Button>\n </Match>\n <Match when={embedded()}>\n <NoticeCard\n tone=\"warning\"\n title={state().platform === \"apple-in-app\" ? messages().installAppleInAppTitle : messages().installInAppTitle}\n detail={\n state().platform === \"apple-in-app\"\n ? messages().installAppleInAppDetail({ appName: props.appName })\n : messages().installInAppDetail({ appName: props.appName })\n }\n />\n <Button variant=\"secondary\" onClick={() => void copy.copy(props.url)}>\n <i class={copy.wasCopied() ? \"ti ti-check\" : \"ti ti-copy\"} aria-hidden=\"true\" />\n {copy.wasCopied() ? messages().installLinkCopied : messages().installCopyLink}\n </Button>\n <Show when={copy.error()}>\n <p role=\"alert\">{messages().installCopyFailed}</p>\n <code>{props.url}</code>\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n </Match>\n </Switch>\n </div>\n );\n}\n\nexport default InstallGuide;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["feedback/InstallGuide.tsx"],"sourcesContent":["import { clipboard } from \"@k2b/stdlib/solid\";\nimport { createMemo, For, type JSX, Match, Show, Switch } from \"solid-js\";\nimport { Button, ButtonLink } from \"../actions/Button\";\nimport { NoticeCard } from \"../surfaces/NoticeCard\";\nimport type { InstallPrompt } from \"./install\";\nimport { useInstallMessages } from \"./install-messages\";\n\nexport type InstallGuideProps = {\n /** The name people see on their Home Screen, used in the guidance text. */\n appName: string;\n install: InstallPrompt;\n /**\n * The absolute address of the page to install. A browser inside another app copies it, to open it in Safari or\n * Chrome, and shows it as text when copying fails, so it can be copied by hand. Samsung Internet opens an http or\n * https address in Chrome.\n */\n url: string;\n /**\n * An application note under the installation steps or the embedded browser's link, for example what else the\n * installed app enables.\n */\n note?: string;\n class?: string;\n};\n\n/**\n * Opens `url` in Chrome on Android. Without Chrome, the browser loads `url` itself. Only an absolute http or https\n * address has an intent; anything else returns `undefined`.\n */\nconst chromeIntent = (url: string) => {\n let target: URL;\n try {\n target = new URL(url);\n } catch {\n return undefined;\n }\n if (target.protocol !== \"https:\" && target.protocol !== \"http:\") return undefined;\n const scheme = target.protocol.slice(0, -1);\n return `intent://${target.host}${target.pathname}${target.search}${target.hash}#Intent;scheme=${scheme};package=com.android.chrome;S.browser_fallback_url=${encodeURIComponent(url)};end`;\n};\n\n/**\n * Explains how to install the current page as an app on this platform: the browser's own dialog where it offers\n * one, otherwise the steps for Safari on iPhone, iPad, and Mac, other browsers on iPhone and iPad, Android, and other\n * browsers. A browser inside another app cannot install, so it gets a warning and the link to copy into Safari or\n * Chrome instead. Samsung Internet gets a link to Chrome even when it offers its own dialog, because Android may block\n * the app package it builds. The host owns the surrounding surface, its heading, and dismissal.\n */\nexport function InstallGuide(props: InstallGuideProps): JSX.Element {\n const installMessages = useInstallMessages();\n // The host may hand over another state after mount, such as the browser's own in place of the server's view.\n const state = () => props.install;\n const copy = clipboard.createWriter({ write: (url: string) => navigator.clipboard.writeText(url) });\n const embedded = () => state().platform === \"in-app\" || state().platform === \"apple-in-app\";\n /** A browser that installs, but less reliably than the platform's own. */\n const hint = createMemo(() => {\n const t = installMessages();\n if (state().platform === \"apple-browser\") return { title: t.installAppleBrowserTitle, detail: t.installAppleBrowserDetail };\n if (state().platform === \"android-browser\") return { title: t.installAndroidBrowserTitle, detail: t.installAndroidBrowserDetail };\n return undefined;\n });\n const steps = createMemo(() => {\n const t = installMessages();\n if (state().platform === \"apple-mobile\" || state().platform === \"apple-browser\")\n return [\n {\n icon: \"ti ti-share-2\",\n title: t.installOpenShare,\n detail: state().platform === \"apple-browser\" ? t.installOpenShareBrowserDetail : t.installOpenShareDetail,\n },\n { icon: \"ti ti-square-plus\", title: t.installHomeScreen, detail: t.installHomeScreenDetail },\n { icon: \"ti ti-check\", title: t.installConfirmAdd, detail: t.installConfirmAddDetail },\n ];\n if (state().platform === \"apple-desktop\")\n return [\n { icon: \"ti ti-share-2\", title: t.installSafariMenu, detail: t.installSafariMenuDetail },\n { icon: \"ti ti-app-window\", title: t.installAddDock, detail: t.installAddDockDetail },\n ];\n return [\n { icon: \"ti ti-dots\", title: t.installBrowserMenu, detail: t.installBrowserMenuDetail },\n {\n icon: \"ti ti-square-plus\",\n title: t.installApp,\n detail: state().platform === \"android\" || state().platform === \"android-browser\" ? t.installAndroidDetail : t.installBrowserDetail,\n },\n ];\n });\n return (\n <div class={props.class ? `k2b-install-guide ${props.class}` : \"k2b-install-guide\"} data-platform={state().platform}>\n <Show when={state().failed()}>\n <p role=\"alert\">{installMessages().installFailed}</p>\n </Show>\n <Switch\n fallback={\n <>\n <Show when={hint()}>{(hint) => <NoticeCard tone=\"info\" title={hint().title} detail={hint().detail} />}</Show>\n <ol class=\"k2b-install-guide__steps\">\n <For each={steps()}>\n {(step) => (\n <li>\n <span class=\"k2b-install-guide__step-icon\">\n <i class={step.icon} aria-hidden=\"true\" />\n </span>\n <div>\n <h3>{step.title}</h3>\n <p>{step.detail}</p>\n </div>\n </li>\n )}\n </For>\n </ol>\n <Show when={state().platform === \"apple-mobile\"}>\n <p>{installMessages().installSafariFallback}</p>\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n <Show when={state().platform === \"generic\"}>\n <p>{installMessages().installUnavailable}</p>\n </Show>\n </>\n }\n >\n <Match when={state().requested()}>\n <p role=\"status\">{installMessages().installRequested}</p>\n </Match>\n <Match when={state().platform === \"android-samsung\"}>\n <NoticeCard\n tone=\"info\"\n title={installMessages().installSamsungTitle}\n detail={installMessages().installSamsungDetail({ appName: props.appName })}\n />\n <Show when={chromeIntent(props.url)}>\n {(href) => (\n <ButtonLink href={href()}>\n <i class=\"ti ti-brand-chrome\" aria-hidden=\"true\" />\n {installMessages().installOpenChrome}\n </ButtonLink>\n )}\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n </Match>\n <Match when={state().canPrompt() || state().busy()}>\n <p>{installMessages().installNative({ appName: props.appName })}</p>\n <Button loading={state().busy()} onClick={() => void state().install()}>\n {installMessages().installApp}\n </Button>\n </Match>\n <Match when={embedded()}>\n <NoticeCard\n tone=\"warning\"\n title={state().platform === \"apple-in-app\" ? installMessages().installAppleInAppTitle : installMessages().installInAppTitle}\n detail={\n state().platform === \"apple-in-app\"\n ? installMessages().installAppleInAppDetail({ appName: props.appName })\n : installMessages().installInAppDetail({ appName: props.appName })\n }\n />\n <Button variant=\"secondary\" onClick={() => void copy.copy(props.url)}>\n <i class={copy.wasCopied() ? \"ti ti-check\" : \"ti ti-copy\"} aria-hidden=\"true\" />\n {copy.wasCopied() ? installMessages().installLinkCopied : installMessages().installCopyLink}\n </Button>\n <Show when={copy.error()}>\n <p role=\"alert\">{installMessages().installCopyFailed}</p>\n <code>{props.url}</code>\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n </Match>\n </Switch>\n </div>\n );\n}\n\nexport default InstallGuide;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ import { i18n } from "@k2b/stdlib";
2
+ import { useLocale } from "../intl/locale";
3
+ const installMessages = i18n.define({
4
+ baseLocale: "en",
5
+ messages: {
6
+ en: {
7
+ installApp: "Install app",
8
+ installNative: ({
9
+ appName
10
+ }) => `Your browser can install ${appName}. Confirm installation in the dialog that opens next.`,
11
+ installRequested: "Installation requested. Follow your browser’s instructions.",
12
+ installFailed: "The installation dialog could not be opened.",
13
+ installOpenShare: "Open Share",
14
+ installOpenShareDetail: "Tap the Share button in Safari. It may be inside the More menu.",
15
+ installHomeScreen: "Add to Home Screen",
16
+ installHomeScreenDetail: "Scroll through the actions and choose “Add to Home Screen”.",
17
+ installConfirmAdd: "Confirm Add",
18
+ installConfirmAddDetail: "Keep “Open as Web App” enabled if shown, then tap “Add”.",
19
+ installOpenShareBrowserDetail: "In Chrome, tap Share in the address bar. In Firefox or Edge, open the menu, then Share.",
20
+ installSafariFallback: "Don’t see “Add to Home Screen”? This page may be open inside another app. Open it in Safari.",
21
+ installSafariMenu: "Open the Safari menu",
22
+ installSafariMenuDetail: "On your Mac, open File or click Share in Safari.",
23
+ installAddDock: "Add to Dock",
24
+ installAddDockDetail: "Choose “Add to Dock”, then confirm “Add”. Available in Safari on macOS Sonoma or later.",
25
+ installBrowserMenu: "Open the browser menu",
26
+ installBrowserMenuDetail: "Use the menu beside the address bar.",
27
+ installAndroidDetail: "Choose “Install app” or “Add to Home screen”, then follow the browser’s instructions.",
28
+ installBrowserDetail: "Look for “Install app” in the menu or an installation icon in the address bar.",
29
+ installUnavailable: "No installation option? You can keep using the browser or try another browser that supports installation.",
30
+ installAppleInAppTitle: "Open this page in Safari",
31
+ installAppleInAppDetail: ({
32
+ appName
33
+ }) => `This page is open inside another app, which can’t install ${appName}. In that app’s menu (••• or Share), choose “Open in Safari”, or copy the link and paste it into Safari.`,
34
+ installInAppTitle: "Open this page in your browser",
35
+ installInAppDetail: ({
36
+ appName
37
+ }) => `This page is open inside another app, which can’t install ${appName}. In that app’s menu, choose “Open in Chrome” or “Open in browser”, or copy the link and paste it into Chrome.`,
38
+ installAppleBrowserTitle: "Safari works best",
39
+ installAppleBrowserDetail: "This browser installs through Share → Add to Home Screen. If that isn’t there, open this page in Safari.",
40
+ installAndroidBrowserTitle: "Chrome works best",
41
+ installAndroidBrowserDetail: "In this browser, look for “Install” or “Add to Home screen” in the menu. If that isn’t there, open this page in Chrome.",
42
+ installSamsungTitle: "Install with Chrome",
43
+ installSamsungDetail: ({
44
+ appName
45
+ }) => `On Samsung phones, Samsung Internet builds its own app package, which Android 14 and later may block as “built for an older version of Android”. That warning is about the package, not about ${appName}. Chrome installs ${appName} without it. Without Chrome, use this browser’s menu and continue through that warning.`,
46
+ installOpenChrome: "Open in Chrome",
47
+ installCopyLink: "Copy link",
48
+ installLinkCopied: "Link copied",
49
+ installCopyFailed: "The link could not be copied. Copy this address manually:"
50
+ },
51
+ de: {
52
+ installApp: "App installieren",
53
+ installNative: ({
54
+ appName
55
+ }) => `Dein Browser kann ${appName} installieren. Bestätige die Installation im nächsten Dialog.`,
56
+ installRequested: "Installation angefragt. Folge den Hinweisen deines Browsers.",
57
+ installFailed: "Der Installationsdialog konnte nicht geöffnet werden.",
58
+ installOpenShare: "Teilen öffnen",
59
+ installOpenShareDetail: "Tippe in Safari auf Teilen. Der Eintrag kann im Mehr-Menü liegen.",
60
+ installHomeScreen: "Zum Home-Bildschirm",
61
+ installHomeScreenDetail: "Scrolle durch die Aktionen und wähle „Zum Home-Bildschirm“.",
62
+ installConfirmAdd: "Hinzufügen bestätigen",
63
+ installConfirmAddDetail: "Lass „Als Web-App öffnen“ aktiviert, falls angezeigt, und tippe auf „Hinzufügen“.",
64
+ installOpenShareBrowserDetail: "Tippe in Chrome in der Adressleiste auf Teilen. Öffne in Firefox oder Edge das Menü und dann Teilen.",
65
+ installSafariFallback: "Kein „Zum Home-Bildschirm“? Dann ist die Seite vielleicht in einer anderen App geöffnet. Öffne sie in Safari.",
66
+ installSafariMenu: "Safari-Menü öffnen",
67
+ installSafariMenuDetail: "Öffne auf deinem Mac in Safari „Ablage“ oder klicke auf Teilen.",
68
+ installAddDock: "Zum Dock hinzufügen",
69
+ installAddDockDetail: "Wähle „Zum Dock hinzufügen“ und bestätige mit „Hinzufügen“. Verfügbar in Safari ab macOS Sonoma.",
70
+ installBrowserMenu: "Browser-Menü öffnen",
71
+ installBrowserMenuDetail: "Nutze das Menü neben der Adressleiste.",
72
+ installAndroidDetail: "Wähle „App installieren“ oder „Zum Startbildschirm hinzufügen“ und folge den Hinweisen des Browsers.",
73
+ installBrowserDetail: "Suche nach „App installieren“ im Menü oder nach einem Installationssymbol in der Adressleiste.",
74
+ installUnavailable: "Keine Installationsoption? Nutze die App weiter im Browser oder versuche einen anderen Browser mit Installationsunterstützung.",
75
+ installAppleInAppTitle: "Öffne diese Seite in Safari",
76
+ installAppleInAppDetail: ({
77
+ appName
78
+ }) => `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App (••• oder Teilen) „In Safari öffnen“ oder kopiere den Link und füge ihn in Safari ein.`,
79
+ installInAppTitle: "Öffne diese Seite in deinem Browser",
80
+ installInAppDetail: ({
81
+ appName
82
+ }) => `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App „In Chrome öffnen“ oder „Im Browser öffnen“ oder kopiere den Link und füge ihn in Chrome ein.`,
83
+ installAppleBrowserTitle: "Am besten mit Safari",
84
+ installAppleBrowserDetail: "In diesem Browser installierst du über Teilen → Zum Home-Bildschirm. Fehlt der Eintrag, öffne diese Seite in Safari.",
85
+ installAndroidBrowserTitle: "Am besten mit Chrome",
86
+ installAndroidBrowserDetail: "Suche in diesem Browser im Menü nach „Installieren“ oder „Zum Startbildschirm hinzufügen“. Fehlt der Eintrag, öffne diese Seite in Chrome.",
87
+ installSamsungTitle: "Mit Chrome installieren",
88
+ installSamsungDetail: ({
89
+ appName
90
+ }) => `Auf Samsung-Handys erstellt Samsung Internet ein eigenes App-Paket, das Android ab Version 14 als „für eine ältere Android-Version entwickelt“ blockieren kann. Diese Warnung betrifft das Paket, nicht ${appName}. Mit Chrome installierst du ${appName} ohne sie. Ohne Chrome nutze das Menü dieses Browsers und fahre trotz dieser Warnung fort.`,
91
+ installOpenChrome: "In Chrome öffnen",
92
+ installCopyLink: "Link kopieren",
93
+ installLinkCopied: "Link kopiert",
94
+ installCopyFailed: "Der Link konnte nicht kopiert werden. Kopiere diese Adresse manuell:"
95
+ }
96
+ }
97
+ });
98
+ /** Resolved from the inherited render locale. */
99
+ export const useInstallMessages = () => {
100
+ const locale = useLocale();
101
+ return () => installMessages.resolve([locale()]).t;
102
+ };
103
+ export const checkInstallMessages = () => installMessages.check();
104
+ //# sourceMappingURL=install-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["feedback/install-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst installMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n installApp: \"Install app\",\n installNative: ({ appName }: { appName: string }) =>\n `Your browser can install ${appName}. Confirm installation in the dialog that opens next.`,\n installRequested: \"Installation requested. Follow your browser’s instructions.\",\n installFailed: \"The installation dialog could not be opened.\",\n installOpenShare: \"Open Share\",\n installOpenShareDetail: \"Tap the Share button in Safari. It may be inside the More menu.\",\n installHomeScreen: \"Add to Home Screen\",\n installHomeScreenDetail: \"Scroll through the actions and choose “Add to Home Screen”.\",\n installConfirmAdd: \"Confirm Add\",\n installConfirmAddDetail: \"Keep “Open as Web App” enabled if shown, then tap “Add”.\",\n installOpenShareBrowserDetail: \"In Chrome, tap Share in the address bar. In Firefox or Edge, open the menu, then Share.\",\n installSafariFallback: \"Don’t see “Add to Home Screen”? This page may be open inside another app. Open it in Safari.\",\n installSafariMenu: \"Open the Safari menu\",\n installSafariMenuDetail: \"On your Mac, open File or click Share in Safari.\",\n installAddDock: \"Add to Dock\",\n installAddDockDetail: \"Choose “Add to Dock”, then confirm “Add”. Available in Safari on macOS Sonoma or later.\",\n installBrowserMenu: \"Open the browser menu\",\n installBrowserMenuDetail: \"Use the menu beside the address bar.\",\n installAndroidDetail: \"Choose “Install app” or “Add to Home screen”, then follow the browser’s instructions.\",\n installBrowserDetail: \"Look for “Install app” in the menu or an installation icon in the address bar.\",\n installUnavailable: \"No installation option? You can keep using the browser or try another browser that supports installation.\",\n installAppleInAppTitle: \"Open this page in Safari\",\n installAppleInAppDetail: ({ appName }: { appName: string }) =>\n `This page is open inside another app, which can’t install ${appName}. In that app’s menu (••• or Share), choose “Open in Safari”, or copy the link and paste it into Safari.`,\n installInAppTitle: \"Open this page in your browser\",\n installInAppDetail: ({ appName }: { appName: string }) =>\n `This page is open inside another app, which can’t install ${appName}. In that app’s menu, choose “Open in Chrome” or “Open in browser”, or copy the link and paste it into Chrome.`,\n installAppleBrowserTitle: \"Safari works best\",\n installAppleBrowserDetail: \"This browser installs through Share → Add to Home Screen. If that isn’t there, open this page in Safari.\",\n installAndroidBrowserTitle: \"Chrome works best\",\n installAndroidBrowserDetail:\n \"In this browser, look for “Install” or “Add to Home screen” in the menu. If that isn’t there, open this page in Chrome.\",\n installSamsungTitle: \"Install with Chrome\",\n installSamsungDetail: ({ appName }: { appName: string }) =>\n `On Samsung phones, Samsung Internet builds its own app package, which Android 14 and later may block as “built for an older version of Android”. That warning is about the package, not about ${appName}. Chrome installs ${appName} without it. Without Chrome, use this browser’s menu and continue through that warning.`,\n installOpenChrome: \"Open in Chrome\",\n installCopyLink: \"Copy link\",\n installLinkCopied: \"Link copied\",\n installCopyFailed: \"The link could not be copied. Copy this address manually:\",\n },\n de: {\n installApp: \"App installieren\",\n installNative: ({ appName }) => `Dein Browser kann ${appName} installieren. Bestätige die Installation im nächsten Dialog.`,\n installRequested: \"Installation angefragt. Folge den Hinweisen deines Browsers.\",\n installFailed: \"Der Installationsdialog konnte nicht geöffnet werden.\",\n installOpenShare: \"Teilen öffnen\",\n installOpenShareDetail: \"Tippe in Safari auf Teilen. Der Eintrag kann im Mehr-Menü liegen.\",\n installHomeScreen: \"Zum Home-Bildschirm\",\n installHomeScreenDetail: \"Scrolle durch die Aktionen und wähle „Zum Home-Bildschirm“.\",\n installConfirmAdd: \"Hinzufügen bestätigen\",\n installConfirmAddDetail: \"Lass „Als Web-App öffnen“ aktiviert, falls angezeigt, und tippe auf „Hinzufügen“.\",\n installOpenShareBrowserDetail: \"Tippe in Chrome in der Adressleiste auf Teilen. Öffne in Firefox oder Edge das Menü und dann Teilen.\",\n installSafariFallback:\n \"Kein „Zum Home-Bildschirm“? Dann ist die Seite vielleicht in einer anderen App geöffnet. Öffne sie in Safari.\",\n installSafariMenu: \"Safari-Menü öffnen\",\n installSafariMenuDetail: \"Öffne auf deinem Mac in Safari „Ablage“ oder klicke auf Teilen.\",\n installAddDock: \"Zum Dock hinzufügen\",\n installAddDockDetail: \"Wähle „Zum Dock hinzufügen“ und bestätige mit „Hinzufügen“. Verfügbar in Safari ab macOS Sonoma.\",\n installBrowserMenu: \"Browser-Menü öffnen\",\n installBrowserMenuDetail: \"Nutze das Menü neben der Adressleiste.\",\n installAndroidDetail: \"Wähle „App installieren“ oder „Zum Startbildschirm hinzufügen“ und folge den Hinweisen des Browsers.\",\n installBrowserDetail: \"Suche nach „App installieren“ im Menü oder nach einem Installationssymbol in der Adressleiste.\",\n installUnavailable:\n \"Keine Installationsoption? Nutze die App weiter im Browser oder versuche einen anderen Browser mit Installationsunterstützung.\",\n installAppleInAppTitle: \"Öffne diese Seite in Safari\",\n installAppleInAppDetail: ({ appName }) =>\n `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App (••• oder Teilen) „In Safari öffnen“ oder kopiere den Link und füge ihn in Safari ein.`,\n installInAppTitle: \"Öffne diese Seite in deinem Browser\",\n installInAppDetail: ({ appName }) =>\n `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App „In Chrome öffnen“ oder „Im Browser öffnen“ oder kopiere den Link und füge ihn in Chrome ein.`,\n installAppleBrowserTitle: \"Am besten mit Safari\",\n installAppleBrowserDetail:\n \"In diesem Browser installierst du über Teilen → Zum Home-Bildschirm. Fehlt der Eintrag, öffne diese Seite in Safari.\",\n installAndroidBrowserTitle: \"Am besten mit Chrome\",\n installAndroidBrowserDetail:\n \"Suche in diesem Browser im Menü nach „Installieren“ oder „Zum Startbildschirm hinzufügen“. Fehlt der Eintrag, öffne diese Seite in Chrome.\",\n installSamsungTitle: \"Mit Chrome installieren\",\n installSamsungDetail: ({ appName }) =>\n `Auf Samsung-Handys erstellt Samsung Internet ein eigenes App-Paket, das Android ab Version 14 als „für eine ältere Android-Version entwickelt“ blockieren kann. Diese Warnung betrifft das Paket, nicht ${appName}. Mit Chrome installierst du ${appName} ohne sie. Ohne Chrome nutze das Menü dieses Browsers und fahre trotz dieser Warnung fort.`,\n installOpenChrome: \"In Chrome öffnen\",\n installCopyLink: \"Link kopieren\",\n installLinkCopied: \"Link kopiert\",\n installCopyFailed: \"Der Link konnte nicht kopiert werden. Kopiere diese Adresse manuell:\",\n },\n },\n});\n\nexport type InstallMessages = ReturnType<(typeof installMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useInstallMessages = (): (() => InstallMessages) => {\n const locale = useLocale();\n return () => installMessages.resolve([locale()]).t;\n};\n\nexport const checkInstallMessages = () => installMessages.check();\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ import { i18n } from "@k2b/stdlib";
2
+ import { useLocale } from "../intl/locale";
3
+ const promptMessages = i18n.define({
4
+ baseLocale: "en",
5
+ messages: {
6
+ en: {
7
+ minCharacters: ({
8
+ count
9
+ }) => `At least ${count} ${count === 1 ? "character" : "characters"}`,
10
+ maxCharacters: ({
11
+ count
12
+ }) => `At most ${count} ${count === 1 ? "character" : "characters"}`,
13
+ minTags: ({
14
+ count
15
+ }) => `At least ${count} ${count === 1 ? "tag" : "tags"}`,
16
+ maxTags: ({
17
+ count
18
+ }) => `At most ${count} ${count === 1 ? "tag" : "tags"}`,
19
+ searchFailed: "Search failed.",
20
+ confirmation: "Confirmation",
21
+ typeToConfirm: ({
22
+ phrase
23
+ }) => `Type ${phrase} to confirm`,
24
+ confirm: "Confirm",
25
+ discard: "Discard",
26
+ form: "Form",
27
+ discardUnsavedChanges: "Discard unsaved changes?",
28
+ unsavedChangesTitle: "Unsaved changes"
29
+ },
30
+ de: {
31
+ minCharacters: ({
32
+ count
33
+ }) => `Mindestens ${count} Zeichen`,
34
+ maxCharacters: ({
35
+ count
36
+ }) => `Höchstens ${count} Zeichen`,
37
+ minTags: ({
38
+ count
39
+ }) => `Mindestens ${count} ${count === 1 ? "Tag" : "Tags"}`,
40
+ maxTags: ({
41
+ count
42
+ }) => `Höchstens ${count} ${count === 1 ? "Tag" : "Tags"}`,
43
+ searchFailed: "Suche fehlgeschlagen.",
44
+ confirmation: "Bestätigung",
45
+ typeToConfirm: ({
46
+ phrase
47
+ }) => `Gib ${phrase} zur Bestätigung ein`,
48
+ confirm: "Bestätigen",
49
+ discard: "Verwerfen",
50
+ form: "Formular",
51
+ discardUnsavedChanges: "Ungespeicherte Änderungen verwerfen?",
52
+ unsavedChangesTitle: "Ungespeicherte Änderungen"
53
+ }
54
+ }
55
+ });
56
+ /** Resolved from the inherited render locale. */
57
+ export const usePromptMessages = () => {
58
+ const locale = useLocale();
59
+ return () => promptMessages.resolve([locale()]).t;
60
+ };
61
+
62
+ /** Imperative UI inherits the document locale when no locale is supplied. */
63
+ export const resolvePromptMessages = locale => promptMessages.resolve([locale ?? (typeof document === "undefined" ? promptMessages.baseLocale : document.documentElement.lang)]).t;
64
+ export const checkPromptMessages = () => promptMessages.check();
65
+ //# sourceMappingURL=prompt-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["feedback/prompt-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst promptMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n minCharacters: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n maxCharacters: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n minTags: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n maxTags: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n searchFailed: \"Search failed.\",\n confirmation: \"Confirmation\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Type ${phrase} to confirm`,\n confirm: \"Confirm\",\n discard: \"Discard\",\n form: \"Form\",\n discardUnsavedChanges: \"Discard unsaved changes?\",\n unsavedChangesTitle: \"Unsaved changes\",\n },\n de: {\n minCharacters: ({ count }) => `Mindestens ${count} Zeichen`,\n maxCharacters: ({ count }) => `Höchstens ${count} Zeichen`,\n minTags: ({ count }) => `Mindestens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n maxTags: ({ count }) => `Höchstens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n searchFailed: \"Suche fehlgeschlagen.\",\n confirmation: \"Bestätigung\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Gib ${phrase} zur Bestätigung ein`,\n confirm: \"Bestätigen\",\n discard: \"Verwerfen\",\n form: \"Formular\",\n discardUnsavedChanges: \"Ungespeicherte Änderungen verwerfen?\",\n unsavedChangesTitle: \"Ungespeicherte Änderungen\",\n },\n },\n});\n\nexport type PromptMessages = ReturnType<(typeof promptMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const usePromptMessages = (): (() => PromptMessages) => {\n const locale = useLocale();\n return () => promptMessages.resolve([locale()]).t;\n};\n\n/** Imperative UI inherits the document locale when no locale is supplied. */\nexport const resolvePromptMessages = (locale?: string): PromptMessages =>\n promptMessages.resolve([locale ?? (typeof document === \"undefined\" ? promptMessages.baseLocale : document.documentElement.lang)]).t;\n\nexport const checkPromptMessages = () => promptMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;EACjC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE;MAChH,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE;MAC/G,OAAO,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC9F,OAAO,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC7F,YAAY,EAAE,gBAAgB;MAC9B,YAAY,EAAE,cAAc;MAC5B,aAAa,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,QAAQ,MAAM,aAAa;MAC9E,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,SAAS;MAClB,IAAI,EAAE,MAAM;MACZ,qBAAqB,EAAE,0BAA0B;MACjD,mBAAmB,EAAE;IACvB,CAAC;IACD,EAAE,EAAE;MACF,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,UAAU;MAC3D,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,UAAU;MAC1D,OAAO,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC7E,OAAO,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC5E,YAAY,EAAE,uBAAuB;MACrC,YAAY,EAAE,aAAa;MAC3B,aAAa,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,OAAO,MAAM,sBAAsB;MACtF,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,WAAW;MACpB,IAAI,EAAE,UAAU;MAChB,qBAAqB,EAAE,sCAAsC;MAC7D,mBAAmB,EAAE;IACvB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,iBAAiB,GAAG,MAA8B;EAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;;AAED;AACA,OAAO,MAAM,qBAAqB,GAAI,MAAe,IACnD,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAErI,OAAO,MAAM,mBAAmB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -46,14 +46,17 @@ import { DatePicker, DateTimePicker } from "../inputs/DatePicker";
46
46
  import { ImageInput } from "../inputs/FileInputs";
47
47
  import { NumberInput } from "../inputs/NumberInput";
48
48
  import { Select } from "../inputs/Select";
49
+ import { resolveSelectMessages } from "../inputs/select-messages";
49
50
  import { TagsInput } from "../inputs/TagsInput";
50
51
  import { TextInput } from "../inputs/TextInput";
51
52
  import { resolveUiMessages } from "../intl/messages";
52
53
  import { dialogCore } from "./dialog-core";
54
+ import { resolvePromptMessages } from "./prompt-messages";
53
55
  const PHRASE_SLOT = "\u0000";
54
56
  const isEmpty = value => value === undefined || value === null || value === "" || Array.isArray(value) && value.length === 0;
55
57
  export const createFormState = schema => {
56
58
  const messages = resolveUiMessages();
59
+ const promptMessages = resolvePromptMessages();
57
60
  const [values, setValues] = createStore({});
58
61
  const [errors, setErrors] = createStore({});
59
62
  // Errors appear with the first submit and then follow every change. Before that, a check that fails mid-input,
@@ -72,18 +75,18 @@ export const createFormState = schema => {
72
75
  if (customError) return customError;
73
76
  }
74
77
  if (field.type === "text" && typeof value === "string" && value.length > 0) {
75
- if (field.minLength !== undefined && value.length < field.minLength) return messages.minCharacters({
78
+ if (field.minLength !== undefined && value.length < field.minLength) return promptMessages.minCharacters({
76
79
  count: field.minLength
77
80
  });
78
- if (field.maxLength !== undefined && value.length > field.maxLength) return messages.maxCharacters({
81
+ if (field.maxLength !== undefined && value.length > field.maxLength) return promptMessages.maxCharacters({
79
82
  count: field.maxLength
80
83
  });
81
84
  }
82
85
  if (field.type === "tags" && Array.isArray(value) && value.length > 0) {
83
- if (field.minTags !== undefined && value.length < field.minTags) return messages.minTags({
86
+ if (field.minTags !== undefined && value.length < field.minTags) return promptMessages.minTags({
84
87
  count: field.minTags
85
88
  });
86
- if (field.maxTags !== undefined && value.length > field.maxTags) return messages.maxTags({
89
+ if (field.maxTags !== undefined && value.length > field.maxTags) return promptMessages.maxTags({
87
90
  count: field.maxTags
88
91
  });
89
92
  }
@@ -495,14 +498,14 @@ const openSearchPrompt = (resolver, options) => dialogCore.open(close => {
495
498
  const searchError = createMemo(() => {
496
499
  const error = searchMutation.error();
497
500
  if (!error || error.name === "AbortError") return null;
498
- return error.message || resolveUiMessages().searchFailed;
501
+ return error.message || resolvePromptMessages().searchFailed;
499
502
  });
500
503
  const shouldShowResults = createMemo(() => {
501
504
  if (query().trim().length < minQueryLength) return false;
502
505
  return hasLoaded() || searchError() !== null || items().length > 0;
503
506
  });
504
507
  const emptyStateText = createMemo(() => {
505
- if (!hasLoaded()) return options?.emptyText ?? resolveUiMessages().typeToSearch;
508
+ if (!hasLoaded()) return options?.emptyText ?? resolveSelectMessages().typeToSearch;
506
509
  return options?.noResultsText ?? resolveUiMessages().noResults;
507
510
  });
508
511
  const {
@@ -851,7 +854,7 @@ export const prompts = {
851
854
  _el$61.$$click = () => close(false);
852
855
  _$insert(_el$61, () => options?.cancelText || resolveUiMessages().cancel);
853
856
  _el$62.$$click = () => close(true);
854
- _$insert(_el$62, () => options?.confirmText || resolveUiMessages().confirm);
857
+ _$insert(_el$62, () => options?.confirmText || resolvePromptMessages().confirm);
855
858
  _$effect(() => _$setAttribute(_el$62, "data-variant", options?.variant ?? "primary"));
856
859
  _$runHydrationEvents();
857
860
  return _el$58;
@@ -859,7 +862,7 @@ export const prompts = {
859
862
  }
860
863
 
861
864
  // The catalog owns word order; the slot marks where the verbatim phrase is rendered as code.
862
- const [labelBefore, labelAfter] = resolveUiMessages().typeToConfirm({
865
+ const [labelBefore, labelAfter] = resolvePromptMessages().typeToConfirm({
863
866
  phrase: PHRASE_SLOT
864
867
  }).split(PHRASE_SLOT);
865
868
  const [confirmationValue, setConfirmationValue] = createSignal("");
@@ -911,7 +914,7 @@ export const prompts = {
911
914
  }), _el$69, _co$11);
912
915
  _el$71.$$click = () => close(false);
913
916
  _$insert(_el$71, () => options?.cancelText || resolveUiMessages().cancel);
914
- _$insert(_el$72, () => options?.confirmText || resolveUiMessages().confirm);
917
+ _$insert(_el$72, () => options?.confirmText || resolvePromptMessages().confirm);
915
918
  _$effect(_p$ => {
916
919
  var _v$11 = options?.variant ?? "primary",
917
920
  _v$12 = !canConfirm();
@@ -932,7 +935,7 @@ export const prompts = {
932
935
  signal: options?.signal,
933
936
  cancelBehavior: options?.cancelBehavior,
934
937
  history: options?.history,
935
- ariaLabel: options?.ariaLabel ?? options?.title ?? resolveUiMessages().confirmation
938
+ ariaLabel: options?.ariaLabel ?? options?.title ?? resolvePromptMessages().confirmation
936
939
  });
937
940
  },
938
941
  prompt: promptText,
@@ -945,7 +948,7 @@ export const prompts = {
945
948
  contentClassName: contentClass(),
946
949
  signal: config.signal,
947
950
  cancelBehavior: config.cancelBehavior,
948
- ariaLabel: config.ariaLabel ?? config.title ?? resolveUiMessages().form
951
+ ariaLabel: config.ariaLabel ?? config.title ?? resolvePromptMessages().form
949
952
  })) ?? null,
950
953
  dialog: (component, options) => dialogCore.open(close => {
951
954
  const body = component(close);