@k2b/ui 0.33.0 → 0.35.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 (310) hide show
  1. package/dist/base.css +14 -1
  2. package/dist/browser/actions/ContextMenu.js +13 -0
  3. package/dist/browser/actions/ContextMenu.js.map +1 -1
  4. package/dist/browser/actions/Dropdown.js +16 -4
  5. package/dist/browser/actions/Dropdown.js.map +1 -1
  6. package/dist/browser/actions/SelectionToolbar.js +129 -0
  7. package/dist/browser/actions/SelectionToolbar.js.map +1 -0
  8. package/dist/browser/actions/index.js +1 -0
  9. package/dist/browser/actions/index.js.map +1 -1
  10. package/dist/browser/charts.js +6 -0
  11. package/dist/browser/charts.js.map +1 -0
  12. package/dist/browser/chat/ChatComposer.js +525 -407
  13. package/dist/browser/chat/ChatComposer.js.map +1 -1
  14. package/dist/browser/chat/chat-messages.js +4 -0
  15. package/dist/browser/chat/chat-messages.js.map +1 -1
  16. package/dist/browser/chat/composer-document.js +19 -0
  17. package/dist/browser/chat/composer-document.js.map +1 -1
  18. package/dist/browser/chat/index.js.map +1 -1
  19. package/dist/browser/content/Chart.js +8 -0
  20. package/dist/browser/content/Chart.js.map +1 -1
  21. package/dist/browser/content/FileGrid.js +231 -9
  22. package/dist/browser/content/FileGrid.js.map +1 -1
  23. package/dist/browser/content/FileTypeIcon.js +15 -0
  24. package/dist/browser/content/FileTypeIcon.js.map +1 -1
  25. package/dist/browser/content/FileView.js +11 -4
  26. package/dist/browser/content/FileView.js.map +1 -1
  27. package/dist/browser/content/MatchText.js +61 -0
  28. package/dist/browser/content/MatchText.js.map +1 -0
  29. package/dist/browser/content/MessageRow.js +73 -53
  30. package/dist/browser/content/MessageRow.js.map +1 -1
  31. package/dist/browser/content/ReactionBar.js +3 -1
  32. package/dist/browser/content/ReactionBar.js.map +1 -1
  33. package/dist/browser/content/calendar-day-scroll.js +4 -3
  34. package/dist/browser/content/calendar-day-scroll.js.map +1 -1
  35. package/dist/browser/content/chart-bar.js +476 -0
  36. package/dist/browser/content/chart-bar.js.map +1 -0
  37. package/dist/browser/content/file-list-messages.js +52 -0
  38. package/dist/browser/content/file-list-messages.js.map +1 -0
  39. package/dist/browser/content/index.js +2 -1
  40. package/dist/browser/content/index.js.map +1 -1
  41. package/dist/browser/feedback/Tooltip.js +31 -14
  42. package/dist/browser/feedback/Tooltip.js.map +1 -1
  43. package/dist/browser/inputs/ChoiceList.js +178 -0
  44. package/dist/browser/inputs/ChoiceList.js.map +1 -0
  45. package/dist/browser/inputs/ChoiceSlider.js +314 -0
  46. package/dist/browser/inputs/ChoiceSlider.js.map +1 -0
  47. package/dist/browser/inputs/ChoiceTiles.js +135 -0
  48. package/dist/browser/inputs/ChoiceTiles.js.map +1 -0
  49. package/dist/browser/inputs/ColorChoices.js +120 -0
  50. package/dist/browser/inputs/ColorChoices.js.map +1 -0
  51. package/dist/browser/inputs/QrScanner.js +95 -13
  52. package/dist/browser/inputs/QrScanner.js.map +1 -1
  53. package/dist/browser/inputs/TextInput.js +15 -13
  54. package/dist/browser/inputs/TextInput.js.map +1 -1
  55. package/dist/browser/inputs/index.js +4 -0
  56. package/dist/browser/inputs/index.js.map +1 -1
  57. package/dist/browser/inputs/qr-messages.js +2 -0
  58. package/dist/browser/inputs/qr-messages.js.map +1 -1
  59. package/dist/browser/internal/radio-keys.js +13 -0
  60. package/dist/browser/internal/radio-keys.js.map +1 -0
  61. package/dist/browser/layout/AnchoredPopover.js +180 -0
  62. package/dist/browser/layout/AnchoredPopover.js.map +1 -0
  63. package/dist/browser/layout/AppWorkspace.js +155 -20
  64. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  65. package/dist/browser/layout/DetailPanel.js +443 -333
  66. package/dist/browser/layout/DetailPanel.js.map +1 -1
  67. package/dist/browser/layout/MobileShell.js +21 -7
  68. package/dist/browser/layout/MobileShell.js.map +1 -1
  69. package/dist/browser/layout/Settings.js +283 -175
  70. package/dist/browser/layout/Settings.js.map +1 -1
  71. package/dist/browser/layout/SidebarRailHint.js +79 -0
  72. package/dist/browser/layout/SidebarRailHint.js.map +1 -0
  73. package/dist/browser/layout/SidebarSwitcher.js +79 -66
  74. package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
  75. package/dist/browser/layout/TabBar.js +18 -4
  76. package/dist/browser/layout/TabBar.js.map +1 -1
  77. package/dist/browser/layout/app-workspace-controller.js +11 -4
  78. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  79. package/dist/browser/layout/detail-panel-messages.js +4 -2
  80. package/dist/browser/layout/detail-panel-messages.js.map +1 -1
  81. package/dist/browser/layout/index.js +2 -1
  82. package/dist/browser/layout/index.js.map +1 -1
  83. package/dist/browser/layout/settings-messages.js +26 -2
  84. package/dist/browser/layout/settings-messages.js.map +1 -1
  85. package/dist/browser/surfaces/Avatar.js +2 -14
  86. package/dist/browser/surfaces/Avatar.js.map +1 -1
  87. package/dist/browser/surfaces/DotStrip.js +70 -0
  88. package/dist/browser/surfaces/DotStrip.js.map +1 -0
  89. package/dist/browser/surfaces/ProgressRing.js +3 -0
  90. package/dist/browser/surfaces/ProgressRing.js.map +1 -1
  91. package/dist/browser/surfaces/ResourceCard.js +125 -68
  92. package/dist/browser/surfaces/ResourceCard.js.map +1 -1
  93. package/dist/browser/surfaces/index.js +2 -0
  94. package/dist/browser/surfaces/index.js.map +1 -1
  95. package/dist/browser/surfaces/person-color.js +18 -0
  96. package/dist/browser/surfaces/person-color.js.map +1 -0
  97. package/dist/browser/surfaces/resource-messages.js +6 -2
  98. package/dist/browser/surfaces/resource-messages.js.map +1 -1
  99. package/dist/browser/text-editor/TextEditor.js +1358 -0
  100. package/dist/browser/text-editor/TextEditor.js.map +1 -0
  101. package/dist/browser/text-editor/clipboard-html.js +152 -0
  102. package/dist/browser/text-editor/clipboard-html.js.map +1 -0
  103. package/dist/browser/text-editor/clipboard-loading.js +68 -0
  104. package/dist/browser/text-editor/clipboard-loading.js.map +1 -0
  105. package/dist/browser/text-editor/clipboard.js +51 -0
  106. package/dist/browser/text-editor/clipboard.js.map +1 -0
  107. package/dist/browser/text-editor/engine.js +125 -0
  108. package/dist/browser/text-editor/engine.js.map +1 -0
  109. package/dist/browser/text-editor/format.js +218 -0
  110. package/dist/browser/text-editor/format.js.map +1 -0
  111. package/dist/browser/text-editor/formatted.js +164 -0
  112. package/dist/browser/text-editor/formatted.js.map +1 -0
  113. package/dist/browser/text-editor/language.js +19 -0
  114. package/dist/browser/text-editor/language.js.map +1 -0
  115. package/dist/browser/text-editor/markdown-table.js +563 -0
  116. package/dist/browser/text-editor/markdown-table.js.map +1 -0
  117. package/dist/browser/text-editor/messages.js +233 -0
  118. package/dist/browser/text-editor/messages.js.map +1 -0
  119. package/dist/browser/text-editor/paste.js +115 -0
  120. package/dist/browser/text-editor/paste.js.map +1 -0
  121. package/dist/browser/text-editor/table.js +1760 -0
  122. package/dist/browser/text-editor/table.js.map +1 -0
  123. package/dist/browser/text-editor.js +5 -0
  124. package/dist/browser/text-editor.js.map +1 -0
  125. package/dist/browser/widgets/Widget.js +3 -2
  126. package/dist/browser/widgets/Widget.js.map +1 -1
  127. package/dist/ssr/actions/ContextMenu.js +9 -0
  128. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  129. package/dist/ssr/actions/Dropdown.js +15 -4
  130. package/dist/ssr/actions/Dropdown.js.map +1 -1
  131. package/dist/ssr/actions/SelectionToolbar.js +104 -0
  132. package/dist/ssr/actions/SelectionToolbar.js.map +1 -0
  133. package/dist/ssr/actions/index.js +1 -0
  134. package/dist/ssr/actions/index.js.map +1 -1
  135. package/dist/ssr/charts.js +6 -0
  136. package/dist/ssr/charts.js.map +1 -0
  137. package/dist/ssr/chat/ChatComposer.js +132 -53
  138. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  139. package/dist/ssr/chat/chat-messages.js +4 -0
  140. package/dist/ssr/chat/chat-messages.js.map +1 -1
  141. package/dist/ssr/chat/composer-document.js +19 -0
  142. package/dist/ssr/chat/composer-document.js.map +1 -1
  143. package/dist/ssr/chat/index.js.map +1 -1
  144. package/dist/ssr/content/Chart.js +8 -0
  145. package/dist/ssr/content/Chart.js.map +1 -1
  146. package/dist/ssr/content/FileGrid.js +132 -5
  147. package/dist/ssr/content/FileGrid.js.map +1 -1
  148. package/dist/ssr/content/FileTypeIcon.js +15 -0
  149. package/dist/ssr/content/FileTypeIcon.js.map +1 -1
  150. package/dist/ssr/content/FileView.js +11 -4
  151. package/dist/ssr/content/FileView.js.map +1 -1
  152. package/dist/ssr/content/MatchText.js +56 -0
  153. package/dist/ssr/content/MatchText.js.map +1 -0
  154. package/dist/ssr/content/MessageRow.js +16 -6
  155. package/dist/ssr/content/MessageRow.js.map +1 -1
  156. package/dist/ssr/content/ReactionBar.js +3 -1
  157. package/dist/ssr/content/ReactionBar.js.map +1 -1
  158. package/dist/ssr/content/calendar-day-scroll.js +4 -3
  159. package/dist/ssr/content/calendar-day-scroll.js.map +1 -1
  160. package/dist/ssr/content/chart-bar.js +476 -0
  161. package/dist/ssr/content/chart-bar.js.map +1 -0
  162. package/dist/ssr/content/file-list-messages.js +52 -0
  163. package/dist/ssr/content/file-list-messages.js.map +1 -0
  164. package/dist/ssr/content/index.js +2 -1
  165. package/dist/ssr/content/index.js.map +1 -1
  166. package/dist/ssr/feedback/Tooltip.js +31 -14
  167. package/dist/ssr/feedback/Tooltip.js.map +1 -1
  168. package/dist/ssr/inputs/ChoiceList.js +95 -0
  169. package/dist/ssr/inputs/ChoiceList.js.map +1 -0
  170. package/dist/ssr/inputs/ChoiceSlider.js +191 -0
  171. package/dist/ssr/inputs/ChoiceSlider.js.map +1 -0
  172. package/dist/ssr/inputs/ChoiceTiles.js +61 -0
  173. package/dist/ssr/inputs/ChoiceTiles.js.map +1 -0
  174. package/dist/ssr/inputs/ColorChoices.js +60 -0
  175. package/dist/ssr/inputs/ColorChoices.js.map +1 -0
  176. package/dist/ssr/inputs/QrScanner.js +89 -10
  177. package/dist/ssr/inputs/QrScanner.js.map +1 -1
  178. package/dist/ssr/inputs/TextInput.js +13 -1
  179. package/dist/ssr/inputs/TextInput.js.map +1 -1
  180. package/dist/ssr/inputs/index.js +4 -0
  181. package/dist/ssr/inputs/index.js.map +1 -1
  182. package/dist/ssr/inputs/qr-messages.js +2 -0
  183. package/dist/ssr/inputs/qr-messages.js.map +1 -1
  184. package/dist/ssr/internal/radio-keys.js +13 -0
  185. package/dist/ssr/internal/radio-keys.js.map +1 -0
  186. package/dist/ssr/layout/AnchoredPopover.js +142 -0
  187. package/dist/ssr/layout/AnchoredPopover.js.map +1 -0
  188. package/dist/ssr/layout/AppWorkspace.js +154 -20
  189. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  190. package/dist/ssr/layout/DetailPanel.js +181 -108
  191. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  192. package/dist/ssr/layout/MobileShell.js +20 -6
  193. package/dist/ssr/layout/MobileShell.js.map +1 -1
  194. package/dist/ssr/layout/Settings.js +122 -45
  195. package/dist/ssr/layout/Settings.js.map +1 -1
  196. package/dist/ssr/layout/SidebarRailHint.js +79 -0
  197. package/dist/ssr/layout/SidebarRailHint.js.map +1 -0
  198. package/dist/ssr/layout/SidebarSwitcher.js +13 -3
  199. package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
  200. package/dist/ssr/layout/TabBar.js +11 -3
  201. package/dist/ssr/layout/TabBar.js.map +1 -1
  202. package/dist/ssr/layout/app-workspace-controller.js +11 -4
  203. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  204. package/dist/ssr/layout/detail-panel-messages.js +4 -2
  205. package/dist/ssr/layout/detail-panel-messages.js.map +1 -1
  206. package/dist/ssr/layout/index.js +2 -1
  207. package/dist/ssr/layout/index.js.map +1 -1
  208. package/dist/ssr/layout/settings-messages.js +26 -2
  209. package/dist/ssr/layout/settings-messages.js.map +1 -1
  210. package/dist/ssr/surfaces/Avatar.js +2 -14
  211. package/dist/ssr/surfaces/Avatar.js.map +1 -1
  212. package/dist/ssr/surfaces/DotStrip.js +31 -0
  213. package/dist/ssr/surfaces/DotStrip.js.map +1 -0
  214. package/dist/ssr/surfaces/ProgressRing.js +3 -0
  215. package/dist/ssr/surfaces/ProgressRing.js.map +1 -1
  216. package/dist/ssr/surfaces/ResourceCard.js +40 -15
  217. package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
  218. package/dist/ssr/surfaces/index.js +2 -0
  219. package/dist/ssr/surfaces/index.js.map +1 -1
  220. package/dist/ssr/surfaces/person-color.js +18 -0
  221. package/dist/ssr/surfaces/person-color.js.map +1 -0
  222. package/dist/ssr/surfaces/resource-messages.js +6 -2
  223. package/dist/ssr/surfaces/resource-messages.js.map +1 -1
  224. package/dist/ssr/text-editor/TextEditor.js +1155 -0
  225. package/dist/ssr/text-editor/TextEditor.js.map +1 -0
  226. package/dist/ssr/text-editor/clipboard-html.js +152 -0
  227. package/dist/ssr/text-editor/clipboard-html.js.map +1 -0
  228. package/dist/ssr/text-editor/clipboard-loading.js +68 -0
  229. package/dist/ssr/text-editor/clipboard-loading.js.map +1 -0
  230. package/dist/ssr/text-editor/clipboard.js +51 -0
  231. package/dist/ssr/text-editor/clipboard.js.map +1 -0
  232. package/dist/ssr/text-editor/engine.js +125 -0
  233. package/dist/ssr/text-editor/engine.js.map +1 -0
  234. package/dist/ssr/text-editor/format.js +218 -0
  235. package/dist/ssr/text-editor/format.js.map +1 -0
  236. package/dist/ssr/text-editor/formatted.js +164 -0
  237. package/dist/ssr/text-editor/formatted.js.map +1 -0
  238. package/dist/ssr/text-editor/language.js +19 -0
  239. package/dist/ssr/text-editor/language.js.map +1 -0
  240. package/dist/ssr/text-editor/markdown-table.js +563 -0
  241. package/dist/ssr/text-editor/markdown-table.js.map +1 -0
  242. package/dist/ssr/text-editor/messages.js +233 -0
  243. package/dist/ssr/text-editor/messages.js.map +1 -0
  244. package/dist/ssr/text-editor/paste.js +115 -0
  245. package/dist/ssr/text-editor/paste.js.map +1 -0
  246. package/dist/ssr/text-editor/table.js +1760 -0
  247. package/dist/ssr/text-editor/table.js.map +1 -0
  248. package/dist/ssr/text-editor.js +5 -0
  249. package/dist/ssr/text-editor.js.map +1 -0
  250. package/dist/ssr/widgets/Widget.js +3 -2
  251. package/dist/ssr/widgets/Widget.js.map +1 -1
  252. package/dist/styles.css +1 -1
  253. package/dist/types/actions/ContextMenu.d.ts +5 -0
  254. package/dist/types/actions/Dropdown.d.ts +7 -0
  255. package/dist/types/actions/SelectionToolbar.d.ts +38 -0
  256. package/dist/types/actions/index.d.ts +2 -0
  257. package/dist/types/charts.d.ts +5 -0
  258. package/dist/types/chat/ChatComposer.d.ts +15 -0
  259. package/dist/types/chat/chat-messages.d.ts +2 -0
  260. package/dist/types/chat/composer-document.d.ts +5 -0
  261. package/dist/types/chat/index.d.ts +1 -1
  262. package/dist/types/content/Chart.d.ts +2 -1
  263. package/dist/types/content/FileGrid.d.ts +43 -3
  264. package/dist/types/content/FileTypeIcon.d.ts +10 -0
  265. package/dist/types/content/FileView.d.ts +5 -1
  266. package/dist/types/content/MatchText.d.ts +21 -0
  267. package/dist/types/content/MessageRow.d.ts +2 -0
  268. package/dist/types/content/calendar-day-scroll.d.ts +2 -1
  269. package/dist/types/content/chart-bar.d.ts +60 -0
  270. package/dist/types/content/file-list-messages.d.ts +24 -0
  271. package/dist/types/content/index.d.ts +3 -2
  272. package/dist/types/feedback/Tooltip.d.ts +8 -2
  273. package/dist/types/inputs/ChoiceList.d.ts +28 -0
  274. package/dist/types/inputs/ChoiceSlider.d.ts +36 -0
  275. package/dist/types/inputs/ChoiceTiles.d.ts +25 -0
  276. package/dist/types/inputs/ColorChoices.d.ts +19 -0
  277. package/dist/types/inputs/index.d.ts +8 -0
  278. package/dist/types/inputs/qr-messages.d.ts +1 -0
  279. package/dist/types/internal/radio-keys.d.ts +5 -0
  280. package/dist/types/layout/AnchoredPopover.d.ts +31 -0
  281. package/dist/types/layout/AppWorkspace.d.ts +10 -0
  282. package/dist/types/layout/DetailPanel.d.ts +17 -0
  283. package/dist/types/layout/MobileShell.d.ts +5 -2
  284. package/dist/types/layout/Settings.d.ts +22 -0
  285. package/dist/types/layout/SidebarRailHint.d.ts +26 -0
  286. package/dist/types/layout/TabBar.d.ts +5 -0
  287. package/dist/types/layout/detail-panel-messages.d.ts +1 -0
  288. package/dist/types/layout/index.d.ts +3 -2
  289. package/dist/types/layout/settings-messages.d.ts +12 -0
  290. package/dist/types/surfaces/DotStrip.d.ts +22 -0
  291. package/dist/types/surfaces/ProgressRing.d.ts +2 -1
  292. package/dist/types/surfaces/ResourceCard.d.ts +9 -0
  293. package/dist/types/surfaces/index.d.ts +4 -1
  294. package/dist/types/surfaces/person-color.d.ts +10 -0
  295. package/dist/types/surfaces/resource-messages.d.ts +2 -0
  296. package/dist/types/text-editor/TextEditor.d.ts +69 -0
  297. package/dist/types/text-editor/clipboard-html.d.ts +9 -0
  298. package/dist/types/text-editor/clipboard-loading.d.ts +8 -0
  299. package/dist/types/text-editor/clipboard.d.ts +20 -0
  300. package/dist/types/text-editor/engine.d.ts +34 -0
  301. package/dist/types/text-editor/format.d.ts +34 -0
  302. package/dist/types/text-editor/formatted.d.ts +1 -0
  303. package/dist/types/text-editor/language.d.ts +8 -0
  304. package/dist/types/text-editor/markdown-table.d.ts +105 -0
  305. package/dist/types/text-editor/messages.d.ts +113 -0
  306. package/dist/types/text-editor/paste.d.ts +6 -0
  307. package/dist/types/text-editor/table.d.ts +81 -0
  308. package/dist/types/text-editor.d.ts +4 -0
  309. package/dist/types/widgets/Widget.d.ts +3 -2
  310. package/package.json +28 -3
@@ -11,21 +11,23 @@ import { insert as _$insert } from "solid-js/web";
11
11
  import { createComponent as _$createComponent } from "solid-js/web";
12
12
  var _tmpl$ = /*#__PURE__*/_$template(`<p>`),
13
13
  _tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-settings-page__actions>`),
14
- _tmpl$3 = /*#__PURE__*/_$template(`<footer class=k2b-settings-page__footer>`),
15
- _tmpl$4 = /*#__PURE__*/_$template(`<section><header class=k2b-settings-page__header><!$><!/><div class=k2b-settings-page__heading><h1></h1><!$><!/></div><!$><!/></header><div class=k2b-settings-page__body></div><!$><!/>`),
16
- _tmpl$5 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
17
- _tmpl$6 = /*#__PURE__*/_$template(`<div class=k2b-settings-section__actions>`),
18
- _tmpl$7 = /*#__PURE__*/_$template(`<section><header class=k2b-settings-section__header><!$><!/><div class=k2b-settings-section__heading><h2></h2><!$><!/></div><!$><!/></header><div class=k2b-settings-section__body>`),
19
- _tmpl$8 = /*#__PURE__*/_$template(`<section><header class=k2b-settings-group__header><div class=k2b-settings-group__heading><h3></h3><!$><!/></div><!$><!/></header><div class=k2b-settings-group__body>`),
20
- _tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-settings-group__action>`),
21
- _tmpl$0 = /*#__PURE__*/_$template(`<span>`),
22
- _tmpl$1 = /*#__PURE__*/_$template(`<div><div class=k2b-settings-field__copy><div class=k2b-settings-field__heading><strong></strong><!$><!/></div><p></p></div><!$><!/><!$><!/>`),
23
- _tmpl$10 = /*#__PURE__*/_$template(`<p class=k2b-settings-field__error role=alert><i class="ti ti-alert-circle"aria-hidden=true></i> <!$><!/>`),
24
- _tmpl$11 = /*#__PURE__*/_$template(`<i class="ti ti-device-floppy"aria-hidden=true>`),
25
- _tmpl$12 = /*#__PURE__*/_$template(`<div class=k2b-settings-actions><!$><!/><!$><!/>`),
26
- _tmpl$13 = /*#__PURE__*/_$template(`<div><p role=status aria-live=polite><strong></strong> <!$><!/></p><!$><!/>`),
27
- _tmpl$14 = /*#__PURE__*/_$template(`<strong>`),
28
- _tmpl$15 = /*#__PURE__*/_$template(`<p class=k2b-settings-panel-footer__status role=status aria-live=polite>`);
14
+ _tmpl$3 = /*#__PURE__*/_$template(`<header class=k2b-settings-page__header><!$><!/><div class=k2b-settings-page__heading><h1></h1><!$><!/></div><!$><!/>`),
15
+ _tmpl$4 = /*#__PURE__*/_$template(`<footer class=k2b-settings-page__footer>`),
16
+ _tmpl$5 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-settings-page__body></div><!$><!/>`),
17
+ _tmpl$6 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
18
+ _tmpl$7 = /*#__PURE__*/_$template(`<div class=k2b-settings-section__actions>`),
19
+ _tmpl$8 = /*#__PURE__*/_$template(`<section><header class=k2b-settings-section__header><!$><!/><div class=k2b-settings-section__heading><h2></h2><!$><!/></div><!$><!/></header><div class=k2b-settings-section__body>`),
20
+ _tmpl$9 = /*#__PURE__*/_$template(`<section><header class=k2b-settings-group__header><div class=k2b-settings-group__heading><h3></h3><!$><!/></div><!$><!/></header><div class=k2b-settings-group__body>`),
21
+ _tmpl$0 = /*#__PURE__*/_$template(`<div class=k2b-settings-group__action>`),
22
+ _tmpl$1 = /*#__PURE__*/_$template(`<span>`),
23
+ _tmpl$10 = /*#__PURE__*/_$template(`<div><div class=k2b-settings-field__copy><div class=k2b-settings-field__heading><strong></strong><!$><!/></div><p></p></div><!$><!/><!$><!/>`),
24
+ _tmpl$11 = /*#__PURE__*/_$template(`<p class=k2b-settings-field__error role=alert><i class="ti ti-alert-circle"aria-hidden=true></i> <!$><!/>`),
25
+ _tmpl$12 = /*#__PURE__*/_$template(`<i class="ti ti-device-floppy"aria-hidden=true>`),
26
+ _tmpl$13 = /*#__PURE__*/_$template(`<div class=k2b-settings-actions><!$><!/><!$><!/>`),
27
+ _tmpl$14 = /*#__PURE__*/_$template(`<div><p role=status aria-live=polite><strong></strong> <!$><!/></p><!$><!/>`),
28
+ _tmpl$15 = /*#__PURE__*/_$template(`<strong>`),
29
+ _tmpl$16 = /*#__PURE__*/_$template(`<p class=k2b-settings-panel-footer__status role=status aria-live=polite>`),
30
+ _tmpl$17 = /*#__PURE__*/_$template(`<div><span class=k2b-save-status__slot><span class=k2b-save-status__state role=status aria-live=polite><i aria-hidden=true></i><!$><!/></span></span><!$><!/>`);
29
31
  import { children, createMemo, createUniqueId, Show } from "solid-js";
30
32
  import { Button } from "../actions/Button";
31
33
  import { usePromptMessages } from "../feedback/prompt-messages";
@@ -33,73 +35,86 @@ import { useSettingsMessages } from "./settings-messages";
33
35
  const read = value => typeof value === "function" ? value() : value;
34
36
  export function SettingsPage(props) {
35
37
  return (() => {
36
- var _el$ = _$getNextElement(_tmpl$4),
37
- _el$2 = _el$.firstChild,
38
- _el$9 = _el$2.firstChild,
39
- [_el$0, _co$2] = _$getNextMarker(_el$9.nextSibling),
40
- _el$3 = _el$0.nextSibling,
41
- _el$4 = _el$3.firstChild,
42
- _el$6 = _el$4.nextSibling,
43
- [_el$7, _co$] = _$getNextMarker(_el$6.nextSibling),
44
- _el$1 = _el$3.nextSibling,
45
- [_el$10, _co$3] = _$getNextMarker(_el$1.nextSibling),
46
- _el$11 = _el$2.nextSibling,
47
- _el$13 = _el$11.nextSibling,
48
- [_el$14, _co$4] = _$getNextMarker(_el$13.nextSibling);
49
- _$insert(_el$2, _$createComponent(Show, {
50
- get when() {
51
- return props.icon;
52
- },
53
- children: icon => (() => {
54
- var _el$15 = _$getNextElement(_tmpl$5);
55
- _$effect(() => _$className(_el$15, icon()));
56
- return _el$15;
57
- })()
58
- }), _el$0, _co$2);
59
- _$insert(_el$4, () => props.title);
60
- _$insert(_el$3, _$createComponent(Show, {
61
- get when() {
62
- return props.subtitle;
63
- },
64
- get children() {
65
- var _el$5 = _$getNextElement(_tmpl$);
66
- _$insert(_el$5, () => props.subtitle);
67
- return _el$5;
68
- }
69
- }), _el$7, _co$);
70
- _$insert(_el$2, _$createComponent(Show, {
38
+ var _el$ = _$getNextElement(_tmpl$5),
39
+ _el$13 = _el$.firstChild,
40
+ [_el$14, _co$4] = _$getNextMarker(_el$13.nextSibling),
41
+ _el$11 = _el$14.nextSibling,
42
+ _el$15 = _el$11.nextSibling,
43
+ [_el$16, _co$5] = _$getNextMarker(_el$15.nextSibling);
44
+ _$insert(_el$, _$createComponent(Show, {
71
45
  get when() {
72
- return props.actions;
46
+ return props.header !== false;
73
47
  },
74
48
  get children() {
75
- var _el$8 = _$getNextElement(_tmpl$2);
76
- _$insert(_el$8, () => props.actions);
77
- return _el$8;
49
+ var _el$2 = _$getNextElement(_tmpl$3),
50
+ _el$9 = _el$2.firstChild,
51
+ [_el$0, _co$2] = _$getNextMarker(_el$9.nextSibling),
52
+ _el$3 = _el$0.nextSibling,
53
+ _el$4 = _el$3.firstChild,
54
+ _el$6 = _el$4.nextSibling,
55
+ [_el$7, _co$] = _$getNextMarker(_el$6.nextSibling),
56
+ _el$1 = _el$3.nextSibling,
57
+ [_el$10, _co$3] = _$getNextMarker(_el$1.nextSibling);
58
+ _$insert(_el$2, _$createComponent(Show, {
59
+ get when() {
60
+ return props.icon;
61
+ },
62
+ children: icon => (() => {
63
+ var _el$17 = _$getNextElement(_tmpl$6);
64
+ _$effect(() => _$className(_el$17, icon()));
65
+ return _el$17;
66
+ })()
67
+ }), _el$0, _co$2);
68
+ _$insert(_el$4, () => props.title);
69
+ _$insert(_el$3, _$createComponent(Show, {
70
+ get when() {
71
+ return props.subtitle;
72
+ },
73
+ get children() {
74
+ var _el$5 = _$getNextElement(_tmpl$);
75
+ _$insert(_el$5, () => props.subtitle);
76
+ return _el$5;
77
+ }
78
+ }), _el$7, _co$);
79
+ _$insert(_el$2, _$createComponent(Show, {
80
+ get when() {
81
+ return props.actions;
82
+ },
83
+ get children() {
84
+ var _el$8 = _$getNextElement(_tmpl$2);
85
+ _$insert(_el$8, () => props.actions);
86
+ return _el$8;
87
+ }
88
+ }), _el$10, _co$3);
89
+ return _el$2;
78
90
  }
79
- }), _el$10, _co$3);
91
+ }), _el$14, _co$4);
80
92
  _$insert(_el$11, () => props.children);
81
93
  _$insert(_el$, _$createComponent(Show, {
82
94
  get when() {
83
95
  return props.footer;
84
96
  },
85
97
  get children() {
86
- var _el$12 = _$getNextElement(_tmpl$3);
98
+ var _el$12 = _$getNextElement(_tmpl$4);
87
99
  _$insert(_el$12, () => props.footer);
88
100
  return _el$12;
89
101
  }
90
- }), _el$14, _co$4);
102
+ }), _el$16, _co$5);
91
103
  _$effect(_p$ => {
92
104
  var _v$ = `k2b-settings-page${props.class ? ` ${props.class}` : ""}`,
93
105
  _v$2 = props.style,
94
- _v$3 = props.scrollPreserveKey;
106
+ _v$3 = props.header === false && typeof props.title === "string" ? props.title : undefined,
107
+ _v$4 = props.scrollPreserveKey;
95
108
  _v$ !== _p$.e && _$className(_el$, _p$.e = _v$);
96
109
  _p$.t = _$style(_el$, _v$2, _p$.t);
97
- _v$3 !== _p$.a && _$setAttribute(_el$11, "data-scroll-preserve", _p$.a = _v$3);
110
+ _v$3 !== _p$.a && _$setAttribute(_el$, "aria-label", _p$.a = _v$3);
111
+ _v$4 !== _p$.o && _$setAttribute(_el$11, "data-scroll-preserve", _p$.o = _v$4);
98
112
  return _p$;
99
113
  }, {
100
114
  e: undefined,
101
115
  t: undefined,
102
- a: undefined
116
+ a: undefined,
117
+ o: undefined
103
118
  });
104
119
  return _el$;
105
120
  })();
@@ -111,53 +126,53 @@ export function SettingsPage(props) {
111
126
  export function SettingsSection(props) {
112
127
  const headingId = `k2b-settings-section-${createUniqueId()}`;
113
128
  return (() => {
114
- var _el$16 = _$getNextElement(_tmpl$7),
115
- _el$17 = _el$16.firstChild,
116
- _el$24 = _el$17.firstChild,
117
- [_el$25, _co$6] = _$getNextMarker(_el$24.nextSibling),
118
- _el$18 = _el$25.nextSibling,
129
+ var _el$18 = _$getNextElement(_tmpl$8),
119
130
  _el$19 = _el$18.firstChild,
120
- _el$21 = _el$19.nextSibling,
121
- [_el$22, _co$5] = _$getNextMarker(_el$21.nextSibling),
122
- _el$26 = _el$18.nextSibling,
131
+ _el$26 = _el$19.firstChild,
123
132
  [_el$27, _co$7] = _$getNextMarker(_el$26.nextSibling),
124
- _el$28 = _el$17.nextSibling;
125
- _$setAttribute(_el$16, "aria-labelledby", headingId);
126
- _$insert(_el$17, _$createComponent(Show, {
133
+ _el$20 = _el$27.nextSibling,
134
+ _el$21 = _el$20.firstChild,
135
+ _el$23 = _el$21.nextSibling,
136
+ [_el$24, _co$6] = _$getNextMarker(_el$23.nextSibling),
137
+ _el$28 = _el$20.nextSibling,
138
+ [_el$29, _co$8] = _$getNextMarker(_el$28.nextSibling),
139
+ _el$30 = _el$19.nextSibling;
140
+ _$setAttribute(_el$18, "aria-labelledby", headingId);
141
+ _$insert(_el$19, _$createComponent(Show, {
127
142
  get when() {
128
143
  return props.icon;
129
144
  },
130
145
  children: icon => (() => {
131
- var _el$29 = _$getNextElement(_tmpl$5);
132
- _$effect(() => _$className(_el$29, icon()));
133
- return _el$29;
146
+ var _el$31 = _$getNextElement(_tmpl$6);
147
+ _$effect(() => _$className(_el$31, icon()));
148
+ return _el$31;
134
149
  })()
135
- }), _el$25, _co$6);
136
- _$setAttribute(_el$19, "id", headingId);
137
- _$insert(_el$19, () => props.title);
138
- _$insert(_el$18, _$createComponent(Show, {
150
+ }), _el$27, _co$7);
151
+ _$setAttribute(_el$21, "id", headingId);
152
+ _$insert(_el$21, () => props.title);
153
+ _$insert(_el$20, _$createComponent(Show, {
139
154
  get when() {
140
155
  return props.subtitle;
141
156
  },
142
157
  get children() {
143
- var _el$20 = _$getNextElement(_tmpl$);
144
- _$insert(_el$20, () => props.subtitle);
145
- return _el$20;
158
+ var _el$22 = _$getNextElement(_tmpl$);
159
+ _$insert(_el$22, () => props.subtitle);
160
+ return _el$22;
146
161
  }
147
- }), _el$22, _co$5);
148
- _$insert(_el$17, _$createComponent(Show, {
162
+ }), _el$24, _co$6);
163
+ _$insert(_el$19, _$createComponent(Show, {
149
164
  get when() {
150
165
  return props.actions;
151
166
  },
152
167
  get children() {
153
- var _el$23 = _$getNextElement(_tmpl$6);
154
- _$insert(_el$23, () => props.actions);
155
- return _el$23;
168
+ var _el$25 = _$getNextElement(_tmpl$7);
169
+ _$insert(_el$25, () => props.actions);
170
+ return _el$25;
156
171
  }
157
- }), _el$27, _co$7);
158
- _$insert(_el$28, () => props.children);
159
- _$effect(() => _$className(_el$16, `k2b-settings-section${props.class ? ` ${props.class}` : ""}`));
160
- return _el$16;
172
+ }), _el$29, _co$8);
173
+ _$insert(_el$30, () => props.children);
174
+ _$effect(() => _$className(_el$18, `k2b-settings-section${props.class ? ` ${props.class}` : ""}`));
175
+ return _el$18;
161
176
  })();
162
177
  }
163
178
  const SETTINGS_GROUP_ACTION = Symbol("SettingsGroup.Action");
@@ -179,41 +194,41 @@ export const SettingsGroup = props => {
179
194
  const content = createMemo(() => collectSettingsGroupContent(resolved()));
180
195
  const headingId = `k2b-settings-group-${createUniqueId()}`;
181
196
  return (() => {
182
- var _el$30 = _$getNextElement(_tmpl$8),
183
- _el$31 = _el$30.firstChild,
184
- _el$32 = _el$31.firstChild,
197
+ var _el$32 = _$getNextElement(_tmpl$9),
185
198
  _el$33 = _el$32.firstChild,
186
- _el$35 = _el$33.nextSibling,
187
- [_el$36, _co$8] = _$getNextMarker(_el$35.nextSibling),
188
- _el$37 = _el$32.nextSibling,
199
+ _el$34 = _el$33.firstChild,
200
+ _el$35 = _el$34.firstChild,
201
+ _el$37 = _el$35.nextSibling,
189
202
  [_el$38, _co$9] = _$getNextMarker(_el$37.nextSibling),
190
- _el$39 = _el$31.nextSibling;
191
- _$setAttribute(_el$30, "aria-labelledby", headingId);
192
- _$setAttribute(_el$33, "id", headingId);
193
- _$insert(_el$33, () => props.title);
194
- _$insert(_el$32, _$createComponent(Show, {
203
+ _el$39 = _el$34.nextSibling,
204
+ [_el$40, _co$0] = _$getNextMarker(_el$39.nextSibling),
205
+ _el$41 = _el$33.nextSibling;
206
+ _$setAttribute(_el$32, "aria-labelledby", headingId);
207
+ _$setAttribute(_el$35, "id", headingId);
208
+ _$insert(_el$35, () => props.title);
209
+ _$insert(_el$34, _$createComponent(Show, {
195
210
  get when() {
196
211
  return props.description;
197
212
  },
198
213
  get children() {
199
- var _el$34 = _$getNextElement(_tmpl$);
200
- _$insert(_el$34, () => props.description);
201
- return _el$34;
214
+ var _el$36 = _$getNextElement(_tmpl$);
215
+ _$insert(_el$36, () => props.description);
216
+ return _el$36;
202
217
  }
203
- }), _el$36, _co$8);
204
- _$insert(_el$31, _$createComponent(Show, {
218
+ }), _el$38, _co$9);
219
+ _$insert(_el$33, _$createComponent(Show, {
205
220
  get when() {
206
221
  return action();
207
222
  },
208
223
  children: slot => (() => {
209
- var _el$40 = _$getNextElement(_tmpl$9);
210
- _$insert(_el$40, () => slot().props.children);
211
- return _el$40;
224
+ var _el$42 = _$getNextElement(_tmpl$0);
225
+ _$insert(_el$42, () => slot().props.children);
226
+ return _el$42;
212
227
  })()
213
- }), _el$38, _co$9);
214
- _$insert(_el$39, content);
215
- _$effect(() => _$className(_el$30, `k2b-settings-group${props.class ? ` ${props.class}` : ""}`));
216
- return _el$30;
228
+ }), _el$40, _co$0);
229
+ _$insert(_el$41, content);
230
+ _$effect(() => _$className(_el$32, `k2b-settings-group${props.class ? ` ${props.class}` : ""}`));
231
+ return _el$32;
217
232
  })();
218
233
  };
219
234
  SettingsGroup.Action = SettingsGroupAction;
@@ -235,48 +250,48 @@ export function SettingsField(props) {
235
250
  describedBy
236
251
  }) : props.children;
237
252
  return (() => {
238
- var _el$41 = _$getNextElement(_tmpl$1),
239
- _el$42 = _el$41.firstChild,
240
- _el$43 = _el$42.firstChild,
253
+ var _el$43 = _$getNextElement(_tmpl$10),
241
254
  _el$44 = _el$43.firstChild,
242
- _el$46 = _el$44.nextSibling,
243
- [_el$47, _co$0] = _$getNextMarker(_el$46.nextSibling),
244
- _el$48 = _el$43.nextSibling,
245
- _el$49 = _el$42.nextSibling,
246
- [_el$50, _co$1] = _$getNextMarker(_el$49.nextSibling),
247
- _el$51 = _el$50.nextSibling,
248
- [_el$52, _co$10] = _$getNextMarker(_el$51.nextSibling);
249
- _$insert(_el$44, () => props.label);
250
- _$insert(_el$43, _$createComponent(Show, {
255
+ _el$45 = _el$44.firstChild,
256
+ _el$46 = _el$45.firstChild,
257
+ _el$48 = _el$46.nextSibling,
258
+ [_el$49, _co$1] = _$getNextMarker(_el$48.nextSibling),
259
+ _el$50 = _el$45.nextSibling,
260
+ _el$51 = _el$44.nextSibling,
261
+ [_el$52, _co$10] = _$getNextMarker(_el$51.nextSibling),
262
+ _el$53 = _el$52.nextSibling,
263
+ [_el$54, _co$11] = _$getNextMarker(_el$53.nextSibling);
264
+ _$insert(_el$46, () => props.label);
265
+ _$insert(_el$45, _$createComponent(Show, {
251
266
  get when() {
252
267
  return _$memo(() => props.changed !== undefined)() && read(props.changed);
253
268
  },
254
269
  get children() {
255
- var _el$45 = _$getNextElement(_tmpl$0);
256
- _$insert(_el$45, () => settingsMessages().unsaved);
257
- return _el$45;
270
+ var _el$47 = _$getNextElement(_tmpl$1);
271
+ _$insert(_el$47, () => settingsMessages().unsaved);
272
+ return _el$47;
258
273
  }
259
- }), _el$47, _co$0);
260
- _$setAttribute(_el$48, "id", descriptionId);
261
- _$insert(_el$48, () => props.description);
262
- _$insert(_el$41, control, _el$50, _co$1);
263
- _$insert(_el$41, _$createComponent(Show, {
274
+ }), _el$49, _co$1);
275
+ _$setAttribute(_el$50, "id", descriptionId);
276
+ _$insert(_el$50, () => props.description);
277
+ _$insert(_el$43, control, _el$52, _co$10);
278
+ _$insert(_el$43, _$createComponent(Show, {
264
279
  get when() {
265
280
  return read(props.error);
266
281
  },
267
282
  children: error => (() => {
268
- var _el$53 = _$getNextElement(_tmpl$10),
269
- _el$54 = _el$53.firstChild,
270
- _el$55 = _el$54.nextSibling,
271
- _el$56 = _el$55.nextSibling,
272
- [_el$57, _co$11] = _$getNextMarker(_el$56.nextSibling);
273
- _$setAttribute(_el$53, "id", errorId);
274
- _$insert(_el$53, error, _el$57, _co$11);
275
- return _el$53;
283
+ var _el$55 = _$getNextElement(_tmpl$11),
284
+ _el$56 = _el$55.firstChild,
285
+ _el$57 = _el$56.nextSibling,
286
+ _el$58 = _el$57.nextSibling,
287
+ [_el$59, _co$12] = _$getNextMarker(_el$58.nextSibling);
288
+ _$setAttribute(_el$55, "id", errorId);
289
+ _$insert(_el$55, error, _el$59, _co$12);
290
+ return _el$55;
276
291
  })()
277
- }), _el$52, _co$10);
278
- _$effect(() => _$className(_el$41, `k2b-settings-field ${props.class ?? ""}`));
279
- return _el$41;
292
+ }), _el$54, _co$11);
293
+ _$effect(() => _$className(_el$43, `k2b-settings-field ${props.class ?? ""}`));
294
+ return _el$43;
280
295
  })();
281
296
  }
282
297
  const SettingsActions = props => {
@@ -287,12 +302,12 @@ const SettingsActions = props => {
287
302
  const disabled = () => loading() || Boolean(props.disableWithoutChanges && changeCount() === 0);
288
303
  const saveDisabled = () => disabled() || Boolean(props.saveDisabled !== undefined && read(props.saveDisabled));
289
304
  return (() => {
290
- var _el$58 = _$getNextElement(_tmpl$12),
291
- _el$60 = _el$58.firstChild,
292
- [_el$61, _co$12] = _$getNextMarker(_el$60.nextSibling),
293
- _el$62 = _el$61.nextSibling,
294
- [_el$63, _co$13] = _$getNextMarker(_el$62.nextSibling);
295
- _$insert(_el$58, _$createComponent(Button, {
305
+ var _el$60 = _$getNextElement(_tmpl$13),
306
+ _el$62 = _el$60.firstChild,
307
+ [_el$63, _co$13] = _$getNextMarker(_el$62.nextSibling),
308
+ _el$64 = _el$63.nextSibling,
309
+ [_el$65, _co$14] = _$getNextMarker(_el$64.nextSibling);
310
+ _$insert(_el$60, _$createComponent(Button, {
296
311
  variant: "secondary",
297
312
  get disabled() {
298
313
  return disabled();
@@ -303,8 +318,8 @@ const SettingsActions = props => {
303
318
  get children() {
304
319
  return promptMessages().discard;
305
320
  }
306
- }), _el$61, _co$12);
307
- _$insert(_el$58, _$createComponent(Button, {
321
+ }), _el$63, _co$13);
322
+ _$insert(_el$60, _$createComponent(Button, {
308
323
  get variant() {
309
324
  return props.saveVariant ?? "primary";
310
325
  },
@@ -321,10 +336,10 @@ const SettingsActions = props => {
321
336
  return props.onSave;
322
337
  },
323
338
  get children() {
324
- return [_$getNextElement(_tmpl$11), _$memo(() => props.saveLabel ?? settingsMessages().saveChanges)];
339
+ return [_$getNextElement(_tmpl$12), _$memo(() => props.saveLabel ?? settingsMessages().saveChanges)];
325
340
  }
326
- }), _el$63, _co$13);
327
- return _el$58;
341
+ }), _el$65, _co$14);
342
+ return _el$60;
328
343
  })();
329
344
  };
330
345
  export function SettingsSaveBar(props) {
@@ -335,21 +350,21 @@ export function SettingsSaveBar(props) {
335
350
  return changeCount() > 0;
336
351
  },
337
352
  get children() {
338
- var _el$64 = _$getNextElement(_tmpl$13),
339
- _el$65 = _el$64.firstChild,
340
- _el$66 = _el$65.firstChild,
341
- _el$67 = _el$66.nextSibling,
342
- _el$68 = _el$67.nextSibling,
343
- [_el$69, _co$14] = _$getNextMarker(_el$68.nextSibling),
344
- _el$70 = _el$65.nextSibling,
345
- [_el$71, _co$15] = _$getNextMarker(_el$70.nextSibling);
346
- _$insert(_el$66, changeCount);
347
- _$insert(_el$65, () => settingsMessages().unsavedChangeLabel({
353
+ var _el$66 = _$getNextElement(_tmpl$14),
354
+ _el$67 = _el$66.firstChild,
355
+ _el$68 = _el$67.firstChild,
356
+ _el$69 = _el$68.nextSibling,
357
+ _el$70 = _el$69.nextSibling,
358
+ [_el$71, _co$15] = _$getNextMarker(_el$70.nextSibling),
359
+ _el$72 = _el$67.nextSibling,
360
+ [_el$73, _co$16] = _$getNextMarker(_el$72.nextSibling);
361
+ _$insert(_el$68, changeCount);
362
+ _$insert(_el$67, () => settingsMessages().unsavedChangeLabel({
348
363
  count: changeCount()
349
- }), _el$69, _co$14);
350
- _$insert(_el$64, _$createComponent(SettingsActions, props), _el$71, _co$15);
351
- _$effect(() => _$className(_el$64, `k2b-settings-save-bar ${props.class ?? ""}`));
352
- return _el$64;
364
+ }), _el$71, _co$15);
365
+ _$insert(_el$66, _$createComponent(SettingsActions, props), _el$73, _co$16);
366
+ _$effect(() => _$className(_el$66, `k2b-settings-save-bar ${props.class ?? ""}`));
367
+ return _el$66;
353
368
  }
354
369
  });
355
370
  }
@@ -357,8 +372,8 @@ export function SettingsPanelFooter(props) {
357
372
  const settingsMessages = useSettingsMessages();
358
373
  const changeCount = () => read(props.changeCount);
359
374
  return [(() => {
360
- var _el$72 = _$getNextElement(_tmpl$15);
361
- _$insert(_el$72, _$createComponent(Show, {
375
+ var _el$74 = _$getNextElement(_tmpl$16);
376
+ _$insert(_el$74, _$createComponent(Show, {
362
377
  get when() {
363
378
  return changeCount() > 0;
364
379
  },
@@ -367,17 +382,110 @@ export function SettingsPanelFooter(props) {
367
382
  },
368
383
  get children() {
369
384
  return [(() => {
370
- var _el$73 = _$getNextElement(_tmpl$14);
371
- _$insert(_el$73, changeCount);
372
- return _el$73;
385
+ var _el$75 = _$getNextElement(_tmpl$15);
386
+ _$insert(_el$75, changeCount);
387
+ return _el$75;
373
388
  })(), " ", _$memo(() => settingsMessages().unsavedChangeLabel({
374
389
  count: changeCount()
375
390
  }))];
376
391
  }
377
392
  }));
378
- return _el$72;
393
+ return _el$74;
379
394
  })(), _$createComponent(SettingsActions, _$mergeProps(props, {
380
395
  disableWithoutChanges: true
381
396
  }))];
382
397
  }
398
+ const SAVE_STATUS_ICON = {
399
+ saved: "ti ti-check",
400
+ draft: "ti ti-pencil",
401
+ saving: "ti ti-loader-2",
402
+ failed: "ti ti-alert-triangle",
403
+ invalid: "ti ti-alert-triangle",
404
+ unknown: "ti ti-help-circle",
405
+ readonly: "ti ti-lock"
406
+ };
407
+
408
+ /**
409
+ * The save status of a settings form at one fixed place, usually the head of its column. It reserves its width, so
410
+ * a change of state never moves the title or the buttons beside it. Problems with one field stay at that field.
411
+ */
412
+ export function SaveStatus(props) {
413
+ const settingsMessages = useSettingsMessages();
414
+ const state = () => read(props.state);
415
+ const text = () => {
416
+ const t = settingsMessages();
417
+ switch (state()) {
418
+ case "saved":
419
+ {
420
+ const at = props.savedAt === undefined ? undefined : read(props.savedAt);
421
+ return at ? t.statusSavedAt({
422
+ time: at
423
+ }) : t.statusSaved;
424
+ }
425
+ case "draft":
426
+ return t.statusDraft;
427
+ case "saving":
428
+ return t.saving;
429
+ case "failed":
430
+ return t.statusFailed;
431
+ case "invalid":
432
+ return t.statusInvalid({
433
+ count: props.invalidCount === undefined ? 1 : read(props.invalidCount)
434
+ });
435
+ case "unknown":
436
+ return t.statusUnknown;
437
+ case "readonly":
438
+ return t.statusReadOnly;
439
+ }
440
+ };
441
+ const hasActions = () => Boolean(props.onSave && props.onDiscard) && state() !== "readonly";
442
+ const pending = () => state() === "draft" || state() === "failed" || state() === "invalid" || state() === "saving";
443
+ return (() => {
444
+ var _el$76 = _$getNextElement(_tmpl$17),
445
+ _el$77 = _el$76.firstChild,
446
+ _el$78 = _el$77.firstChild,
447
+ _el$79 = _el$78.firstChild,
448
+ _el$80 = _el$79.nextSibling,
449
+ [_el$81, _co$17] = _$getNextMarker(_el$80.nextSibling),
450
+ _el$82 = _el$77.nextSibling,
451
+ [_el$83, _co$18] = _$getNextMarker(_el$82.nextSibling);
452
+ _$insert(_el$78, text, _el$81, _co$17);
453
+ _$insert(_el$76, _$createComponent(Show, {
454
+ get when() {
455
+ return hasActions();
456
+ },
457
+ get children() {
458
+ return _$createComponent(SettingsActions, {
459
+ changeCount: () => pending() ? 1 : 0,
460
+ loading: () => state() === "saving",
461
+ saveDisabled: () => state() === "invalid" || Boolean(props.saveDisabled !== undefined && read(props.saveDisabled)),
462
+ get onDiscard() {
463
+ return props.onDiscard;
464
+ },
465
+ get onSave() {
466
+ return props.onSave;
467
+ },
468
+ get saveLabel() {
469
+ return props.saveLabel ?? settingsMessages().save;
470
+ },
471
+ disableWithoutChanges: true
472
+ });
473
+ }
474
+ }), _el$83, _co$18);
475
+ _$effect(_p$ => {
476
+ var _v$5 = `k2b-save-status ${props.class ?? ""}`,
477
+ _v$6 = state(),
478
+ _v$7 = `${SAVE_STATUS_ICON[state()]}${state() === "saving" ? " k2b-spin" : ""}`;
479
+ _v$5 !== _p$.e && _$className(_el$76, _p$.e = _v$5);
480
+ _v$6 !== _p$.t && _$setAttribute(_el$78, "data-state", _p$.t = _v$6);
481
+ _v$7 !== _p$.a && _$className(_el$79, _p$.a = _v$7);
482
+ return _p$;
483
+ }, {
484
+ e: undefined,
485
+ t: undefined,
486
+ a: undefined
487
+ });
488
+ return _el$76;
489
+ })();
490
+ }
383
491
  //# sourceMappingURL=Settings.js.map