@k2b/ui 0.50.0 → 0.51.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 (294) hide show
  1. package/dist/base.css +32 -1
  2. package/dist/browser/actions/Button.js.map +1 -1
  3. package/dist/browser/actions/CommandList.js +861 -0
  4. package/dist/browser/actions/CommandList.js.map +1 -0
  5. package/dist/browser/actions/CommandMenu.js +237 -0
  6. package/dist/browser/actions/CommandMenu.js.map +1 -0
  7. package/dist/browser/actions/Dropdown.js +43 -10
  8. package/dist/browser/actions/Dropdown.js.map +1 -1
  9. package/dist/browser/actions/command-dock.js +47 -0
  10. package/dist/browser/actions/command-dock.js.map +1 -0
  11. package/dist/browser/actions/command-items.js +84 -0
  12. package/dist/browser/actions/command-items.js.map +1 -0
  13. package/dist/browser/actions/command-messages.js +42 -0
  14. package/dist/browser/actions/command-messages.js.map +1 -0
  15. package/dist/browser/actions/index.js +1 -0
  16. package/dist/browser/actions/index.js.map +1 -1
  17. package/dist/browser/charts/core/area.js +3 -5
  18. package/dist/browser/charts/core/area.js.map +1 -1
  19. package/dist/browser/charts/core/calendar.js +1 -1
  20. package/dist/browser/charts/core/calendar.js.map +1 -1
  21. package/dist/browser/charts/core/chart-messages.js +17 -0
  22. package/dist/browser/charts/core/chart-messages.js.map +1 -0
  23. package/dist/browser/charts/core/hbar-layout.js +118 -0
  24. package/dist/browser/charts/core/hbar-layout.js.map +1 -0
  25. package/dist/browser/charts/core/hbar.js +39 -0
  26. package/dist/browser/charts/core/hbar.js.map +1 -0
  27. package/dist/browser/charts/core/index.js +7 -2
  28. package/dist/browser/charts/core/index.js.map +1 -1
  29. package/dist/browser/charts/core/map.js +116 -0
  30. package/dist/browser/charts/core/map.js.map +1 -0
  31. package/dist/browser/charts/core/registry.js +22 -15
  32. package/dist/browser/charts/core/registry.js.map +1 -1
  33. package/dist/browser/charts/core/render-size.js +13 -0
  34. package/dist/browser/charts/core/render-size.js.map +1 -0
  35. package/dist/browser/charts/core/render.js +20 -10
  36. package/dist/browser/charts/core/render.js.map +1 -1
  37. package/dist/browser/charts/core/snapshot.js +3 -3
  38. package/dist/browser/charts/core/snapshot.js.map +1 -1
  39. package/dist/browser/charts/core/svg-renderers.js +2406 -0
  40. package/dist/browser/charts/core/svg-renderers.js.map +1 -0
  41. package/dist/browser/charts/core/svg.js +4 -2525
  42. package/dist/browser/charts/core/svg.js.map +1 -1
  43. package/dist/browser/charts/core/types.js +0 -2
  44. package/dist/browser/charts/core/types.js.map +1 -1
  45. package/dist/browser/charts/core/waterfall.js +162 -0
  46. package/dist/browser/charts/core/waterfall.js.map +1 -0
  47. package/dist/browser/charts/description.js +2 -0
  48. package/dist/browser/charts/description.js.map +1 -0
  49. package/dist/browser/charts.js.map +1 -1
  50. package/dist/browser/content/Chart.js +14 -628
  51. package/dist/browser/content/Chart.js.map +1 -1
  52. package/dist/browser/content/ChartRoot.js +632 -0
  53. package/dist/browser/content/ChartRoot.js.map +1 -0
  54. package/dist/browser/content/ChartSparkline.js +24 -0
  55. package/dist/browser/content/ChartSparkline.js.map +1 -0
  56. package/dist/browser/content/FileView.js +111 -61
  57. package/dist/browser/content/FileView.js.map +1 -1
  58. package/dist/browser/content/Lightbox.js +8 -8
  59. package/dist/browser/content/Lightbox.js.map +1 -1
  60. package/dist/browser/content/MapView.js +30 -28
  61. package/dist/browser/content/MapView.js.map +1 -1
  62. package/dist/browser/content/PdfPreview.js +84 -52
  63. package/dist/browser/content/PdfPreview.js.map +1 -1
  64. package/dist/browser/content/PdfViewer.js +588 -0
  65. package/dist/browser/content/PdfViewer.js.map +1 -0
  66. package/dist/browser/content/chart-bar.js +246 -16
  67. package/dist/browser/content/chart-bar.js.map +1 -1
  68. package/dist/browser/content/chart-inspection-core.js +22 -21
  69. package/dist/browser/content/chart-inspection-core.js.map +1 -1
  70. package/dist/browser/content/chart-line-gaps.js +1 -1
  71. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  72. package/dist/browser/content/chart-message-catalog.js +10 -0
  73. package/dist/browser/content/chart-message-catalog.js.map +1 -1
  74. package/dist/browser/content/chart-state-timeline.js +1 -1
  75. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  76. package/dist/browser/content/chart-svg.js +2 -1
  77. package/dist/browser/content/chart-svg.js.map +1 -1
  78. package/dist/browser/content/index.js +1 -0
  79. package/dist/browser/content/index.js.map +1 -1
  80. package/dist/browser/content/pdf-document.js +29 -0
  81. package/dist/browser/content/pdf-document.js.map +1 -0
  82. package/dist/browser/content/pdf-limits.js +31 -0
  83. package/dist/browser/content/pdf-limits.js.map +1 -0
  84. package/dist/browser/content/pdf-messages.js +34 -2
  85. package/dist/browser/content/pdf-messages.js.map +1 -1
  86. package/dist/browser/content/pdf-viewer-engine.js +57 -0
  87. package/dist/browser/content/pdf-viewer-worker.js +28 -0
  88. package/dist/browser/inputs/ChoiceInputs.js +94 -51
  89. package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
  90. package/dist/browser/inputs/ChoiceSlider.js +75 -58
  91. package/dist/browser/inputs/ChoiceSlider.js.map +1 -1
  92. package/dist/browser/inputs/DatePicker.js +113 -98
  93. package/dist/browser/inputs/DatePicker.js.map +1 -1
  94. package/dist/browser/inputs/PeriodPicker.js +874 -0
  95. package/dist/browser/inputs/PeriodPicker.js.map +1 -0
  96. package/dist/browser/inputs/index.js +4 -1
  97. package/dist/browser/inputs/index.js.map +1 -1
  98. package/dist/browser/inputs/input-messages.js +8 -2
  99. package/dist/browser/inputs/input-messages.js.map +1 -1
  100. package/dist/browser/inputs/markdown/MarkdownEditor.js +14 -10
  101. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  102. package/dist/browser/inputs/markdown/SlashCommands.js +402 -0
  103. package/dist/browser/inputs/markdown/SlashCommands.js.map +1 -0
  104. package/dist/browser/inputs/period-picker-messages.js +71 -0
  105. package/dist/browser/inputs/period-picker-messages.js.map +1 -0
  106. package/dist/browser/inputs/period.js +263 -0
  107. package/dist/browser/inputs/period.js.map +1 -0
  108. package/dist/browser/layout/DetailPanel.js +147 -120
  109. package/dist/browser/layout/DetailPanel.js.map +1 -1
  110. package/dist/browser/layout/Discussion.js +101 -108
  111. package/dist/browser/layout/Discussion.js.map +1 -1
  112. package/dist/browser/layout/index.js.map +1 -1
  113. package/dist/browser/surfaces/DescriptionList.js +5 -2
  114. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  115. package/dist/browser/surfaces/StatCell.js +19 -14
  116. package/dist/browser/surfaces/StatCell.js.map +1 -1
  117. package/dist/browser/surfaces/delta-badge.js +16 -2
  118. package/dist/browser/surfaces/delta-badge.js.map +1 -1
  119. package/dist/browser/widgets/DashboardFrame.js +310 -0
  120. package/dist/browser/widgets/DashboardFrame.js.map +1 -0
  121. package/dist/browser/widgets/index.js +1 -0
  122. package/dist/browser/widgets/index.js.map +1 -1
  123. package/dist/licenses/pdfjs-dist.txt +177 -0
  124. package/dist/ssr/actions/Button.js.map +1 -1
  125. package/dist/ssr/actions/CommandList.js +638 -0
  126. package/dist/ssr/actions/CommandList.js.map +1 -0
  127. package/dist/ssr/actions/CommandMenu.js +197 -0
  128. package/dist/ssr/actions/CommandMenu.js.map +1 -0
  129. package/dist/ssr/actions/Dropdown.js +43 -10
  130. package/dist/ssr/actions/Dropdown.js.map +1 -1
  131. package/dist/ssr/actions/command-dock.js +47 -0
  132. package/dist/ssr/actions/command-dock.js.map +1 -0
  133. package/dist/ssr/actions/command-items.js +84 -0
  134. package/dist/ssr/actions/command-items.js.map +1 -0
  135. package/dist/ssr/actions/command-messages.js +42 -0
  136. package/dist/ssr/actions/command-messages.js.map +1 -0
  137. package/dist/ssr/actions/index.js +1 -0
  138. package/dist/ssr/actions/index.js.map +1 -1
  139. package/dist/ssr/charts/core/area.js +3 -5
  140. package/dist/ssr/charts/core/area.js.map +1 -1
  141. package/dist/ssr/charts/core/calendar.js +1 -1
  142. package/dist/ssr/charts/core/calendar.js.map +1 -1
  143. package/dist/ssr/charts/core/chart-messages.js +17 -0
  144. package/dist/ssr/charts/core/chart-messages.js.map +1 -0
  145. package/dist/ssr/charts/core/hbar-layout.js +118 -0
  146. package/dist/ssr/charts/core/hbar-layout.js.map +1 -0
  147. package/dist/ssr/charts/core/hbar.js +39 -0
  148. package/dist/ssr/charts/core/hbar.js.map +1 -0
  149. package/dist/ssr/charts/core/index.js +7 -2
  150. package/dist/ssr/charts/core/index.js.map +1 -1
  151. package/dist/ssr/charts/core/map.js +116 -0
  152. package/dist/ssr/charts/core/map.js.map +1 -0
  153. package/dist/ssr/charts/core/registry.js +22 -15
  154. package/dist/ssr/charts/core/registry.js.map +1 -1
  155. package/dist/ssr/charts/core/render-size.js +13 -0
  156. package/dist/ssr/charts/core/render-size.js.map +1 -0
  157. package/dist/ssr/charts/core/render.js +20 -10
  158. package/dist/ssr/charts/core/render.js.map +1 -1
  159. package/dist/ssr/charts/core/snapshot.js +3 -3
  160. package/dist/ssr/charts/core/snapshot.js.map +1 -1
  161. package/dist/ssr/charts/core/svg-renderers.js +2406 -0
  162. package/dist/ssr/charts/core/svg-renderers.js.map +1 -0
  163. package/dist/ssr/charts/core/svg.js +4 -2525
  164. package/dist/ssr/charts/core/svg.js.map +1 -1
  165. package/dist/ssr/charts/core/types.js +0 -2
  166. package/dist/ssr/charts/core/types.js.map +1 -1
  167. package/dist/ssr/charts/core/waterfall.js +162 -0
  168. package/dist/ssr/charts/core/waterfall.js.map +1 -0
  169. package/dist/ssr/charts/description.js +2 -0
  170. package/dist/ssr/charts/description.js.map +1 -0
  171. package/dist/ssr/charts.js.map +1 -1
  172. package/dist/ssr/content/Chart.js +14 -471
  173. package/dist/ssr/content/Chart.js.map +1 -1
  174. package/dist/ssr/content/ChartRoot.js +475 -0
  175. package/dist/ssr/content/ChartRoot.js.map +1 -0
  176. package/dist/ssr/content/ChartSparkline.js +24 -0
  177. package/dist/ssr/content/ChartSparkline.js.map +1 -0
  178. package/dist/ssr/content/FileView.js +56 -7
  179. package/dist/ssr/content/FileView.js.map +1 -1
  180. package/dist/ssr/content/Lightbox.js +8 -8
  181. package/dist/ssr/content/Lightbox.js.map +1 -1
  182. package/dist/ssr/content/MapView.js +9 -9
  183. package/dist/ssr/content/MapView.js.map +1 -1
  184. package/dist/ssr/content/PdfPreview.js +49 -20
  185. package/dist/ssr/content/PdfPreview.js.map +1 -1
  186. package/dist/ssr/content/PdfViewer.js +484 -0
  187. package/dist/ssr/content/PdfViewer.js.map +1 -0
  188. package/dist/ssr/content/chart-bar.js +246 -16
  189. package/dist/ssr/content/chart-bar.js.map +1 -1
  190. package/dist/ssr/content/chart-inspection-core.js +22 -21
  191. package/dist/ssr/content/chart-inspection-core.js.map +1 -1
  192. package/dist/ssr/content/chart-line-gaps.js +1 -1
  193. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  194. package/dist/ssr/content/chart-message-catalog.js +10 -0
  195. package/dist/ssr/content/chart-message-catalog.js.map +1 -1
  196. package/dist/ssr/content/chart-state-timeline.js +1 -1
  197. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  198. package/dist/ssr/content/chart-svg.js +2 -1
  199. package/dist/ssr/content/chart-svg.js.map +1 -1
  200. package/dist/ssr/content/index.js +1 -0
  201. package/dist/ssr/content/index.js.map +1 -1
  202. package/dist/ssr/content/pdf-document.js +29 -0
  203. package/dist/ssr/content/pdf-document.js.map +1 -0
  204. package/dist/ssr/content/pdf-limits.js +31 -0
  205. package/dist/ssr/content/pdf-limits.js.map +1 -0
  206. package/dist/ssr/content/pdf-messages.js +34 -2
  207. package/dist/ssr/content/pdf-messages.js.map +1 -1
  208. package/dist/ssr/inputs/ChoiceInputs.js +49 -12
  209. package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
  210. package/dist/ssr/inputs/ChoiceSlider.js +17 -12
  211. package/dist/ssr/inputs/ChoiceSlider.js.map +1 -1
  212. package/dist/ssr/inputs/DatePicker.js +14 -9
  213. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  214. package/dist/ssr/inputs/PeriodPicker.js +598 -0
  215. package/dist/ssr/inputs/PeriodPicker.js.map +1 -0
  216. package/dist/ssr/inputs/index.js +4 -1
  217. package/dist/ssr/inputs/index.js.map +1 -1
  218. package/dist/ssr/inputs/input-messages.js +8 -2
  219. package/dist/ssr/inputs/input-messages.js.map +1 -1
  220. package/dist/ssr/inputs/markdown/MarkdownEditor.js +3 -2
  221. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  222. package/dist/ssr/inputs/markdown/SlashCommands.js +339 -0
  223. package/dist/ssr/inputs/markdown/SlashCommands.js.map +1 -0
  224. package/dist/ssr/inputs/period-picker-messages.js +71 -0
  225. package/dist/ssr/inputs/period-picker-messages.js.map +1 -0
  226. package/dist/ssr/inputs/period.js +263 -0
  227. package/dist/ssr/inputs/period.js.map +1 -0
  228. package/dist/ssr/layout/DetailPanel.js +27 -4
  229. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  230. package/dist/ssr/layout/Discussion.js +16 -2
  231. package/dist/ssr/layout/Discussion.js.map +1 -1
  232. package/dist/ssr/layout/index.js.map +1 -1
  233. package/dist/ssr/surfaces/DescriptionList.js +1 -1
  234. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  235. package/dist/ssr/surfaces/StatCell.js +4 -5
  236. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  237. package/dist/ssr/surfaces/delta-badge.js +16 -2
  238. package/dist/ssr/surfaces/delta-badge.js.map +1 -1
  239. package/dist/ssr/widgets/DashboardFrame.js +200 -0
  240. package/dist/ssr/widgets/DashboardFrame.js.map +1 -0
  241. package/dist/ssr/widgets/index.js +1 -0
  242. package/dist/ssr/widgets/index.js.map +1 -1
  243. package/dist/styles.css +1 -1
  244. package/dist/types/actions/Button.d.ts +1 -1
  245. package/dist/types/actions/CommandList.d.ts +120 -0
  246. package/dist/types/actions/CommandMenu.d.ts +39 -0
  247. package/dist/types/actions/Dropdown.d.ts +17 -0
  248. package/dist/types/actions/command-dock.d.ts +8 -0
  249. package/dist/types/actions/command-items.d.ts +134 -0
  250. package/dist/types/actions/command-messages.d.ts +19 -0
  251. package/dist/types/actions/index.d.ts +3 -0
  252. package/dist/types/charts/core/calendar.d.ts +1 -1
  253. package/dist/types/charts/core/chart-messages.d.ts +5 -0
  254. package/dist/types/charts/core/hbar-layout.d.ts +74 -0
  255. package/dist/types/charts/core/hbar.d.ts +13 -0
  256. package/dist/types/charts/core/index.d.ts +7 -2
  257. package/dist/types/charts/core/map.d.ts +3 -0
  258. package/dist/types/charts/core/registry.d.ts +17 -11
  259. package/dist/types/charts/core/render-size.d.ts +7 -0
  260. package/dist/types/charts/core/render.d.ts +1 -4
  261. package/dist/types/charts/core/snapshot.d.ts +2 -2
  262. package/dist/types/charts/core/svg-renderers.d.ts +722 -0
  263. package/dist/types/charts/core/svg.d.ts +4 -698
  264. package/dist/types/charts/core/types.d.ts +1 -12
  265. package/dist/types/charts/core/waterfall.d.ts +68 -0
  266. package/dist/types/charts/description.d.ts +226 -0
  267. package/dist/types/charts.d.ts +1 -0
  268. package/dist/types/content/Chart.d.ts +3 -91
  269. package/dist/types/content/ChartRoot.d.ts +92 -0
  270. package/dist/types/content/ChartSparkline.d.ts +5 -0
  271. package/dist/types/content/PdfViewer.d.ts +32 -0
  272. package/dist/types/content/chart-bar.d.ts +95 -2
  273. package/dist/types/content/index.d.ts +2 -0
  274. package/dist/types/content/pdf-document.d.ts +5 -0
  275. package/dist/types/content/pdf-engine.d.ts +9 -0
  276. package/dist/types/content/pdf-limits.d.ts +43 -0
  277. package/dist/types/content/pdf-messages.d.ts +16 -0
  278. package/dist/types/inputs/ChoiceInputs.d.ts +4 -0
  279. package/dist/types/inputs/ChoiceSlider.d.ts +12 -0
  280. package/dist/types/inputs/DatePicker.d.ts +22 -0
  281. package/dist/types/inputs/PeriodPicker.d.ts +24 -0
  282. package/dist/types/inputs/index.d.ts +8 -2
  283. package/dist/types/inputs/input-messages.d.ts +3 -0
  284. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -0
  285. package/dist/types/inputs/markdown/SlashCommands.d.ts +20 -0
  286. package/dist/types/inputs/period-picker-messages.d.ts +34 -0
  287. package/dist/types/inputs/period.d.ts +134 -0
  288. package/dist/types/layout/DetailPanel.d.ts +12 -0
  289. package/dist/types/layout/index.d.ts +1 -1
  290. package/dist/types/surfaces/DescriptionList.d.ts +5 -0
  291. package/dist/types/surfaces/StatCell.d.ts +6 -1
  292. package/dist/types/widgets/DashboardFrame.d.ts +58 -0
  293. package/dist/types/widgets/index.d.ts +1 -0
  294. package/package.json +2 -1
@@ -17,11 +17,13 @@ var _tmpl$ = /*#__PURE__*/_$template(`<div class=k2b-pin-input role=group>`),
17
17
  _tmpl$2 = /*#__PURE__*/_$template(`<input class="k2b-control k2b-pin-input__digit"inputmode=numeric autocomplete=off pattern=[0-9] maxlength=1>`),
18
18
  _tmpl$3 = /*#__PURE__*/_$template(`<input type=hidden>`),
19
19
  _tmpl$4 = /*#__PURE__*/_$template(`<output>`),
20
- _tmpl$5 = /*#__PURE__*/_$template(`<div class=k2b-slider><input><!$><!/>`),
21
- _tmpl$6 = /*#__PURE__*/_$template(`<span class="k2b-color-input k2b-color-input--compact"><button type=button class=k2b-color-input__swatch></button><input class=k2b-color-input__native type=color>`),
22
- _tmpl$7 = /*#__PURE__*/_$template(`<button type=button class=k2b-color-input__transparent><i class="ti ti-grid-dots"aria-hidden=true>`),
23
- _tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-color-input><button type=button class=k2b-color-input__value><span class=k2b-color-input__swatch></span><code></code></button><!$><!/><input class=k2b-color-input__native type=color>`);
20
+ _tmpl$5 = /*#__PURE__*/_$template(`<i class="ti ti-arrow-back-up"aria-hidden=true>`),
21
+ _tmpl$6 = /*#__PURE__*/_$template(`<div class=k2b-slider><input><!$><!/><!$><!/>`),
22
+ _tmpl$7 = /*#__PURE__*/_$template(`<span class="k2b-color-input k2b-color-input--compact"><button type=button class=k2b-color-input__swatch></button><input class=k2b-color-input__native type=color>`),
23
+ _tmpl$8 = /*#__PURE__*/_$template(`<button type=button class=k2b-color-input__transparent><i class="ti ti-grid-dots"aria-hidden=true>`),
24
+ _tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-color-input><button type=button class=k2b-color-input__value><span class=k2b-color-input__swatch></span><code></code></button><!$><!/><input class=k2b-color-input__native type=color>`);
24
25
  import { For, Show, splitProps } from "solid-js";
26
+ import { IconButton } from "../actions/Button";
25
27
  import { createFieldMeta, Field, fieldControlAria } from "../internal/field";
26
28
  import { commitFieldValue, resolveMaybeAccessor } from "./field-contract";
27
29
  import { useInputMessages } from "./input-messages";
@@ -196,6 +198,18 @@ export function Slider(props) {
196
198
  return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;
197
199
  };
198
200
  const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());
201
+ const changed = () => local.defaultValue !== undefined && value() !== local.defaultValue;
202
+ const inputMessages = useInputMessages();
203
+ // Names the value it returns to, formatted as the slider shows it: "Reset to 100%".
204
+ const resetLabel = () => inputMessages().resetTo({
205
+ value: local.formatValue?.(resetValue()) ?? String(resetValue())
206
+ });
207
+ let input;
208
+ const reset = () => {
209
+ commitFieldValue(local, resetValue());
210
+ // The button hides once the value is back, so focus returns to the slider it belongs to.
211
+ input?.focus();
212
+ };
199
213
  return _$createComponent(Field, {
200
214
  get ["class"]() {
201
215
  return local.class;
@@ -217,10 +231,14 @@ export function Slider(props) {
217
231
  return rest.disabled;
218
232
  },
219
233
  get children() {
220
- var _el$4 = _$getNextElement(_tmpl$5),
234
+ var _el$4 = _$getNextElement(_tmpl$6),
221
235
  _el$5 = _el$4.firstChild,
222
- _el$7 = _el$5.nextSibling,
223
- [_el$8, _co$] = _$getNextMarker(_el$7.nextSibling);
236
+ _el$8 = _el$5.nextSibling,
237
+ [_el$9, _co$] = _$getNextMarker(_el$8.nextSibling),
238
+ _el$0 = _el$9.nextSibling,
239
+ [_el$1, _co$2] = _$getNextMarker(_el$0.nextSibling);
240
+ var _ref$ = input;
241
+ typeof _ref$ === "function" ? _$use(_ref$, _el$5) : input = _el$5;
224
242
  _$spread(_el$5, _$mergeProps(rest, {
225
243
  get id() {
226
244
  return meta.controlId;
@@ -252,7 +270,32 @@ export function Slider(props) {
252
270
  _$effect(() => _$setAttribute(_el$6, "for", meta.controlId));
253
271
  return _el$6;
254
272
  }
255
- }), _el$8, _co$);
273
+ }), _el$9, _co$);
274
+ _$insert(_el$4, _$createComponent(Show, {
275
+ get when() {
276
+ return local.defaultValue !== undefined;
277
+ },
278
+ get children() {
279
+ return _$createComponent(IconButton, {
280
+ "class": "k2b-slider__reset",
281
+ size: "xs",
282
+ get label() {
283
+ return resetLabel();
284
+ },
285
+ get ["aria-describedby"]() {
286
+ return _$memo(() => !!local.label)() ? meta.labelId : undefined;
287
+ },
288
+ get disabled() {
289
+ return rest.disabled || !changed();
290
+ },
291
+ onClick: reset,
292
+ get children() {
293
+ return _$getNextElement(_tmpl$5);
294
+ }
295
+ });
296
+ }
297
+ }), _el$1, _co$2);
298
+ _$effect(() => _$setAttribute(_el$4, "data-changed", changed() ? "true" : undefined));
256
299
  _$runHydrationEvents();
257
300
  return _el$4;
258
301
  }
@@ -267,10 +310,10 @@ export function ColorInput(props) {
267
310
  const compact = () => props.compact ?? !props.label;
268
311
  let picker;
269
312
  const control = () => compact() ? (() => {
270
- var _el$9 = _$getNextElement(_tmpl$6),
271
- _el$0 = _el$9.firstChild,
272
- _el$1 = _el$0.nextSibling;
273
- _$spread(_el$0, _$mergeProps({
313
+ var _el$10 = _$getNextElement(_tmpl$7),
314
+ _el$11 = _el$10.firstChild,
315
+ _el$12 = _el$11.nextSibling;
316
+ _$spread(_el$11, _$mergeProps({
274
317
  get style() {
275
318
  return {
276
319
  "background-color": currentColor()
@@ -282,59 +325,59 @@ export function ColorInput(props) {
282
325
  }, () => fieldControlAria(meta, props), {
283
326
  "onClick": () => picker?.click()
284
327
  }), false, false);
285
- _el$1.addEventListener("change", event => props.onValueCommit?.(event.currentTarget.value));
286
- _el$1.$$input = event => props.onValueChange?.(event.currentTarget.value);
287
- var _ref$ = picker;
288
- typeof _ref$ === "function" ? _$use(_ref$, _el$1) : picker = _el$1;
328
+ _el$12.addEventListener("change", event => props.onValueCommit?.(event.currentTarget.value));
329
+ _el$12.$$input = event => props.onValueChange?.(event.currentTarget.value);
330
+ var _ref$2 = picker;
331
+ typeof _ref$2 === "function" ? _$use(_ref$2, _el$12) : picker = _el$12;
289
332
  _$effect(_p$ => {
290
333
  var _v$7 = meta.controlId,
291
334
  _v$8 = props.name,
292
335
  _v$9 = props.disabled;
293
- _v$7 !== _p$.e && _$setAttribute(_el$1, "id", _p$.e = _v$7);
294
- _v$8 !== _p$.t && _$setAttribute(_el$1, "name", _p$.t = _v$8);
295
- _v$9 !== _p$.a && _$setProperty(_el$1, "disabled", _p$.a = _v$9);
336
+ _v$7 !== _p$.e && _$setAttribute(_el$12, "id", _p$.e = _v$7);
337
+ _v$8 !== _p$.t && _$setAttribute(_el$12, "name", _p$.t = _v$8);
338
+ _v$9 !== _p$.a && _$setProperty(_el$12, "disabled", _p$.a = _v$9);
296
339
  return _p$;
297
340
  }, {
298
341
  e: undefined,
299
342
  t: undefined,
300
343
  a: undefined
301
344
  });
302
- _$effect(() => _$setProperty(_el$1, "value", currentColor()));
345
+ _$effect(() => _$setProperty(_el$12, "value", currentColor()));
303
346
  _$runHydrationEvents();
304
- return _el$9;
347
+ return _el$10;
305
348
  })() : (() => {
306
- var _el$10 = _$getNextElement(_tmpl$8),
307
- _el$11 = _el$10.firstChild,
308
- _el$12 = _el$11.firstChild,
309
- _el$13 = _el$12.nextSibling,
310
- _el$16 = _el$11.nextSibling,
311
- [_el$17, _co$2] = _$getNextMarker(_el$16.nextSibling),
312
- _el$15 = _el$17.nextSibling;
313
- _$spread(_el$11, _$mergeProps({
349
+ var _el$13 = _$getNextElement(_tmpl$9),
350
+ _el$14 = _el$13.firstChild,
351
+ _el$15 = _el$14.firstChild,
352
+ _el$16 = _el$15.nextSibling,
353
+ _el$19 = _el$14.nextSibling,
354
+ [_el$20, _co$3] = _$getNextMarker(_el$19.nextSibling),
355
+ _el$18 = _el$20.nextSibling;
356
+ _$spread(_el$14, _$mergeProps({
314
357
  get disabled() {
315
358
  return props.disabled || isTransparent();
316
359
  }
317
360
  }, () => fieldControlAria(meta, props), {
318
361
  "onClick": () => picker?.click()
319
362
  }), false, true);
320
- _$insert(_el$13, (() => {
363
+ _$insert(_el$16, (() => {
321
364
  var _c$ = _$memo(() => !!isTransparent());
322
365
  return () => _c$() ? "transparent" : currentColor().toUpperCase();
323
366
  })());
324
- _$insert(_el$10, _$createComponent(Show, {
367
+ _$insert(_el$13, _$createComponent(Show, {
325
368
  get when() {
326
369
  return props.transparent;
327
370
  },
328
371
  get children() {
329
- var _el$14 = _$getNextElement(_tmpl$7);
330
- _el$14.$$click = () => props.onTransparentValueChange?.(!isTransparent());
372
+ var _el$17 = _$getNextElement(_tmpl$8);
373
+ _el$17.$$click = () => props.onTransparentValueChange?.(!isTransparent());
331
374
  _$effect(_p$ => {
332
375
  var _v$0 = isTransparent() ? inputMessages().useColor : inputMessages().useTransparent,
333
376
  _v$1 = isTransparent(),
334
377
  _v$10 = props.disabled;
335
- _v$0 !== _p$.e && _$setAttribute(_el$14, "aria-label", _p$.e = _v$0);
336
- _v$1 !== _p$.t && _$setAttribute(_el$14, "aria-pressed", _p$.t = _v$1);
337
- _v$10 !== _p$.a && _$setProperty(_el$14, "disabled", _p$.a = _v$10);
378
+ _v$0 !== _p$.e && _$setAttribute(_el$17, "aria-label", _p$.e = _v$0);
379
+ _v$1 !== _p$.t && _$setAttribute(_el$17, "aria-pressed", _p$.t = _v$1);
380
+ _v$10 !== _p$.a && _$setProperty(_el$17, "disabled", _p$.a = _v$10);
338
381
  return _p$;
339
382
  }, {
340
383
  e: undefined,
@@ -342,13 +385,13 @@ export function ColorInput(props) {
342
385
  a: undefined
343
386
  });
344
387
  _$runHydrationEvents();
345
- return _el$14;
388
+ return _el$17;
346
389
  }
347
- }), _el$17, _co$2);
348
- _el$15.addEventListener("change", event => props.onValueCommit?.(event.currentTarget.value));
349
- _el$15.$$input = event => props.onValueChange?.(event.currentTarget.value);
350
- var _ref$2 = picker;
351
- typeof _ref$2 === "function" ? _$use(_ref$2, _el$15) : picker = _el$15;
390
+ }), _el$20, _co$3);
391
+ _el$18.addEventListener("change", event => props.onValueCommit?.(event.currentTarget.value));
392
+ _el$18.$$input = event => props.onValueChange?.(event.currentTarget.value);
393
+ var _ref$3 = picker;
394
+ typeof _ref$3 === "function" ? _$use(_ref$3, _el$18) : picker = _el$18;
352
395
  _$effect(_p$ => {
353
396
  var _v$11 = props.disabled || isTransparent() ? "true" : undefined,
354
397
  _v$12 = error() ? "true" : undefined,
@@ -359,13 +402,13 @@ export function ColorInput(props) {
359
402
  _v$15 = meta.controlId,
360
403
  _v$16 = props.name,
361
404
  _v$17 = props.disabled || isTransparent();
362
- _v$11 !== _p$.e && _$setAttribute(_el$10, "data-disabled", _p$.e = _v$11);
363
- _v$12 !== _p$.t && _$setAttribute(_el$10, "data-invalid", _p$.t = _v$12);
364
- _v$13 !== _p$.a && _$setAttribute(_el$12, "data-transparent", _p$.a = _v$13);
365
- _p$.o = _$style(_el$12, _v$14, _p$.o);
366
- _v$15 !== _p$.i && _$setAttribute(_el$15, "id", _p$.i = _v$15);
367
- _v$16 !== _p$.n && _$setAttribute(_el$15, "name", _p$.n = _v$16);
368
- _v$17 !== _p$.s && _$setProperty(_el$15, "disabled", _p$.s = _v$17);
405
+ _v$11 !== _p$.e && _$setAttribute(_el$13, "data-disabled", _p$.e = _v$11);
406
+ _v$12 !== _p$.t && _$setAttribute(_el$13, "data-invalid", _p$.t = _v$12);
407
+ _v$13 !== _p$.a && _$setAttribute(_el$15, "data-transparent", _p$.a = _v$13);
408
+ _p$.o = _$style(_el$15, _v$14, _p$.o);
409
+ _v$15 !== _p$.i && _$setAttribute(_el$18, "id", _p$.i = _v$15);
410
+ _v$16 !== _p$.n && _$setAttribute(_el$18, "name", _p$.n = _v$16);
411
+ _v$17 !== _p$.s && _$setProperty(_el$18, "disabled", _p$.s = _v$17);
369
412
  return _p$;
370
413
  }, {
371
414
  e: undefined,
@@ -376,9 +419,9 @@ export function ColorInput(props) {
376
419
  n: undefined,
377
420
  s: undefined
378
421
  });
379
- _$effect(() => _$setProperty(_el$15, "value", currentColor()));
422
+ _$effect(() => _$setProperty(_el$18, "value", currentColor()));
380
423
  _$runHydrationEvents();
381
- return _el$10;
424
+ return _el$13;
382
425
  })();
383
426
  return _$createComponent(Field, {
384
427
  get ["class"]() {
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["inputs/ChoiceInputs.tsx"],"sourcesContent":["import { For, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport type { FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { useInputMessages } from \"./input-messages\";\n\nexport type PinInputProps = ValueFieldProps<string> & {\n length?: number;\n name?: string;\n stretch?: boolean;\n password?: boolean;\n readOnly?: boolean;\n onSubmit?: () => void;\n};\n\nexport function PinInput(props: PinInputProps): JSX.Element {\n const inputMessages = useInputMessages();\n const meta = createFieldMeta(props.id);\n const length = () => Math.max(1, props.length ?? 6);\n let inputs: HTMLInputElement[] = [];\n const digits = () => (resolveMaybeAccessor(props.value) ?? \"\").replace(/\\D/g, \"\").slice(0, length());\n const error = () => resolveMaybeAccessor(props.error);\n const emit = (value: string) => {\n props.onValueChange?.(value);\n if (value.length === length()) props.onValueCommit?.(value);\n };\n\n const updateDigit = (index: number, input: string) => {\n if (props.disabled || props.readOnly) return;\n const digit = input.replace(/\\D/g, \"\").slice(-1);\n const current = digits();\n emit(`${current.slice(0, index)}${digit}${current.slice(index + 1)}`);\n if (digit && index < length() - 1) {\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n }\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent) => {\n if (props.disabled || props.readOnly) return;\n if (event.key === \"Enter\" && props.onSubmit && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n props.onSubmit();\n } else if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n } else if (event.key === \"ArrowRight\" && index < length() - 1) {\n event.preventDefault();\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n } else if (event.key === \"Backspace\" && !digits()[index] && index > 0) {\n event.preventDefault();\n const current = digits();\n emit(`${current.slice(0, index - 1)}${current.slice(index)}`);\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n }\n };\n\n const handlePaste = (event: ClipboardEvent) => {\n if (props.disabled || props.readOnly) return;\n const pasted = event.clipboardData?.getData(\"text\").replace(/\\D/g, \"\");\n if (!pasted) return;\n event.preventDefault();\n const focused = inputs.indexOf(document.activeElement as HTMLInputElement);\n const start = focused >= 0 ? focused : 0;\n const insert = pasted.slice(0, length() - start);\n const current = digits();\n emit(`${current.slice(0, start)}${insert}${current.slice(start + insert.length)}`.slice(0, length()));\n const next = Math.min(start + insert.length, length() - 1);\n inputs[next]?.focus();\n inputs[next]?.select();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-pin-input\"\n id={meta.controlId}\n data-stretch={props.stretch ? \"true\" : undefined}\n role=\"group\"\n {...fieldControlAria(meta, props)}\n onPaste={handlePaste}\n >\n <For each={Array.from({ length: length() })}>\n {(_, index) => (\n <input\n ref={(element) => {\n inputs[index()] = element;\n }}\n class=\"k2b-control k2b-pin-input__digit\"\n data-filled={digits()[index()] ? \"true\" : undefined}\n type={props.password ? \"password\" : \"text\"}\n inputmode=\"numeric\"\n autocomplete=\"off\"\n pattern=\"[0-9]\"\n maxlength={1}\n value={digits()[index()] ?? \"\"}\n required={props.required}\n disabled={props.disabled}\n readOnly={props.readOnly}\n aria-label={inputMessages().pinDigit({ index: index() + 1, total: length() })}\n onInput={(event) => updateDigit(index(), event.currentTarget.value)}\n onKeyDown={(event) => handleKeyDown(index(), event)}\n onFocus={(event) => event.currentTarget.select()}\n />\n )}\n </For>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={digits()} />}</Show>\n </Field>\n );\n}\n\nexport type SliderProps = FieldProps &\n Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"onInput\" | \"onChange\" | keyof FieldProps> &\n ValueFieldProps<number> & {\n value: MaybeAccessor<number>;\n formatValue?: (value: number) => string;\n showValue?: boolean;\n center?: boolean;\n defaultValue?: number;\n };\n\nexport function Slider(props: SliderProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"aria-label\",\n \"center\",\n \"class\",\n \"defaultValue\",\n \"description\",\n \"error\",\n \"id\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"required\",\n \"showValue\",\n \"value\",\n \"formatValue\",\n ]);\n const meta = createFieldMeta(local.id);\n const min = () => Number(rest.min ?? 0);\n const max = () => Number(rest.max ?? 100);\n const value = () => resolveMaybeAccessor(local.value) ?? min();\n const error = () => resolveMaybeAccessor(local.error);\n const percentage = () => {\n const span = max() - min();\n return span <= 0 ? 0 : Math.min(100, Math.max(0, ((value() - min()) / span) * 100));\n };\n const track = () => {\n const position = percentage();\n if (local.center) {\n const low = Math.min(50, position);\n const high = Math.max(50, position);\n return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, var(--k2b-action) ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;\n }\n return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;\n };\n const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div class=\"k2b-slider\">\n <input\n {...rest}\n id={meta.controlId}\n type=\"range\"\n value={value()}\n style={{ background: track() }}\n {...fieldControlAria(meta, local)}\n onInput={(event) => local.onValueChange?.(event.currentTarget.valueAsNumber)}\n onChange={(event) => local.onValueCommit?.(event.currentTarget.valueAsNumber)}\n onDblClick={() => {\n const next = resetValue();\n commitFieldValue(local, next);\n }}\n />\n <Show when={local.showValue ?? true}>\n <output for={meta.controlId}>{local.formatValue?.(value()) ?? value()}</output>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type ColorInputProps = ValueFieldProps<string> & {\n name?: string;\n compact?: boolean;\n transparent?: boolean;\n transparentValue?: MaybeAccessor<boolean>;\n onTransparentValueChange?: (value: boolean) => void;\n};\n\nexport function ColorInput(props: ColorInputProps): JSX.Element {\n const inputMessages = useInputMessages();\n const meta = createFieldMeta(props.id);\n const currentColor = () => resolveMaybeAccessor(props.value) || \"#3b82f6\";\n const isTransparent = () => resolveMaybeAccessor(props.transparentValue) ?? false;\n const error = () => resolveMaybeAccessor(props.error);\n const compact = () => props.compact ?? !props.label;\n let picker: HTMLInputElement | undefined;\n\n const control = () =>\n compact() ? (\n <span class=\"k2b-color-input k2b-color-input--compact\">\n <button\n type=\"button\"\n class=\"k2b-color-input__swatch\"\n style={{ \"background-color\": currentColor() }}\n disabled={props.disabled}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n />\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </span>\n ) : (\n <div\n class=\"k2b-color-input\"\n data-disabled={props.disabled || isTransparent() ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <button\n type=\"button\"\n class=\"k2b-color-input__value\"\n disabled={props.disabled || isTransparent()}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n >\n <span\n class=\"k2b-color-input__swatch\"\n data-transparent={isTransparent() ? \"true\" : undefined}\n style={isTransparent() ? undefined : { \"background-color\": currentColor() }}\n />\n <code>{isTransparent() ? \"transparent\" : currentColor().toUpperCase()}</code>\n </button>\n <Show when={props.transparent}>\n <button\n type=\"button\"\n class=\"k2b-color-input__transparent\"\n aria-label={isTransparent() ? inputMessages().useColor : inputMessages().useTransparent}\n aria-pressed={isTransparent()}\n disabled={props.disabled}\n onClick={() => props.onTransparentValueChange?.(!isTransparent())}\n >\n <i class=\"ti ti-grid-dots\" aria-hidden=\"true\" />\n </button>\n </Show>\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled || isTransparent()}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </div>\n );\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n {control()}\n </Field>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/ChoiceInputs.tsx"],"sourcesContent":["import { For, type JSX, Show, splitProps } from \"solid-js\";\nimport { IconButton } from \"../actions/Button\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport type { FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { useInputMessages } from \"./input-messages\";\n\nexport type PinInputProps = ValueFieldProps<string> & {\n length?: number;\n name?: string;\n stretch?: boolean;\n password?: boolean;\n readOnly?: boolean;\n onSubmit?: () => void;\n};\n\nexport function PinInput(props: PinInputProps): JSX.Element {\n const inputMessages = useInputMessages();\n const meta = createFieldMeta(props.id);\n const length = () => Math.max(1, props.length ?? 6);\n let inputs: HTMLInputElement[] = [];\n const digits = () => (resolveMaybeAccessor(props.value) ?? \"\").replace(/\\D/g, \"\").slice(0, length());\n const error = () => resolveMaybeAccessor(props.error);\n const emit = (value: string) => {\n props.onValueChange?.(value);\n if (value.length === length()) props.onValueCommit?.(value);\n };\n\n const updateDigit = (index: number, input: string) => {\n if (props.disabled || props.readOnly) return;\n const digit = input.replace(/\\D/g, \"\").slice(-1);\n const current = digits();\n emit(`${current.slice(0, index)}${digit}${current.slice(index + 1)}`);\n if (digit && index < length() - 1) {\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n }\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent) => {\n if (props.disabled || props.readOnly) return;\n if (event.key === \"Enter\" && props.onSubmit && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n props.onSubmit();\n } else if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n } else if (event.key === \"ArrowRight\" && index < length() - 1) {\n event.preventDefault();\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n } else if (event.key === \"Backspace\" && !digits()[index] && index > 0) {\n event.preventDefault();\n const current = digits();\n emit(`${current.slice(0, index - 1)}${current.slice(index)}`);\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n }\n };\n\n const handlePaste = (event: ClipboardEvent) => {\n if (props.disabled || props.readOnly) return;\n const pasted = event.clipboardData?.getData(\"text\").replace(/\\D/g, \"\");\n if (!pasted) return;\n event.preventDefault();\n const focused = inputs.indexOf(document.activeElement as HTMLInputElement);\n const start = focused >= 0 ? focused : 0;\n const insert = pasted.slice(0, length() - start);\n const current = digits();\n emit(`${current.slice(0, start)}${insert}${current.slice(start + insert.length)}`.slice(0, length()));\n const next = Math.min(start + insert.length, length() - 1);\n inputs[next]?.focus();\n inputs[next]?.select();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-pin-input\"\n id={meta.controlId}\n data-stretch={props.stretch ? \"true\" : undefined}\n role=\"group\"\n {...fieldControlAria(meta, props)}\n onPaste={handlePaste}\n >\n <For each={Array.from({ length: length() })}>\n {(_, index) => (\n <input\n ref={(element) => {\n inputs[index()] = element;\n }}\n class=\"k2b-control k2b-pin-input__digit\"\n data-filled={digits()[index()] ? \"true\" : undefined}\n type={props.password ? \"password\" : \"text\"}\n inputmode=\"numeric\"\n autocomplete=\"off\"\n pattern=\"[0-9]\"\n maxlength={1}\n value={digits()[index()] ?? \"\"}\n required={props.required}\n disabled={props.disabled}\n readOnly={props.readOnly}\n aria-label={inputMessages().pinDigit({ index: index() + 1, total: length() })}\n onInput={(event) => updateDigit(index(), event.currentTarget.value)}\n onKeyDown={(event) => handleKeyDown(index(), event)}\n onFocus={(event) => event.currentTarget.select()}\n />\n )}\n </For>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={digits()} />}</Show>\n </Field>\n );\n}\n\nexport type SliderProps = FieldProps &\n Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"onInput\" | \"onChange\" | keyof FieldProps> &\n ValueFieldProps<number> & {\n value: MaybeAccessor<number>;\n formatValue?: (value: number) => string;\n showValue?: boolean;\n center?: boolean;\n /**\n * The value the setting starts from. With it, a changed value shows in the accent color and a reset button\n * appears in a slot the slider always keeps, so nothing moves. Double-click resets too.\n */\n defaultValue?: number;\n };\n\nexport function Slider(props: SliderProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"aria-label\",\n \"center\",\n \"class\",\n \"defaultValue\",\n \"description\",\n \"error\",\n \"id\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"required\",\n \"showValue\",\n \"value\",\n \"formatValue\",\n ]);\n const meta = createFieldMeta(local.id);\n const min = () => Number(rest.min ?? 0);\n const max = () => Number(rest.max ?? 100);\n const value = () => resolveMaybeAccessor(local.value) ?? min();\n const error = () => resolveMaybeAccessor(local.error);\n const percentage = () => {\n const span = max() - min();\n return span <= 0 ? 0 : Math.min(100, Math.max(0, ((value() - min()) / span) * 100));\n };\n const track = () => {\n const position = percentage();\n if (local.center) {\n const low = Math.min(50, position);\n const high = Math.max(50, position);\n return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, var(--k2b-action) ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;\n }\n return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;\n };\n const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());\n const changed = () => local.defaultValue !== undefined && value() !== local.defaultValue;\n const inputMessages = useInputMessages();\n // Names the value it returns to, formatted as the slider shows it: \"Reset to 100%\".\n const resetLabel = () => inputMessages().resetTo({ value: local.formatValue?.(resetValue()) ?? String(resetValue()) });\n let input: HTMLInputElement | undefined;\n const reset = () => {\n commitFieldValue(local, resetValue());\n // The button hides once the value is back, so focus returns to the slider it belongs to.\n input?.focus();\n };\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div class=\"k2b-slider\" data-changed={changed() ? \"true\" : undefined}>\n <input\n {...rest}\n ref={input}\n id={meta.controlId}\n type=\"range\"\n value={value()}\n style={{ background: track() }}\n {...fieldControlAria(meta, local)}\n onInput={(event) => local.onValueChange?.(event.currentTarget.valueAsNumber)}\n onChange={(event) => local.onValueCommit?.(event.currentTarget.valueAsNumber)}\n onDblClick={() => {\n const next = resetValue();\n commitFieldValue(local, next);\n }}\n />\n <Show when={local.showValue ?? true}>\n <output for={meta.controlId}>{local.formatValue?.(value()) ?? value()}</output>\n </Show>\n <Show when={local.defaultValue !== undefined}>\n <IconButton\n class=\"k2b-slider__reset\"\n size=\"xs\"\n label={resetLabel()}\n aria-describedby={local.label ? meta.labelId : undefined}\n disabled={rest.disabled || !changed()}\n onClick={reset}\n >\n <i class=\"ti ti-arrow-back-up\" aria-hidden=\"true\" />\n </IconButton>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type ColorInputProps = ValueFieldProps<string> & {\n name?: string;\n compact?: boolean;\n transparent?: boolean;\n transparentValue?: MaybeAccessor<boolean>;\n onTransparentValueChange?: (value: boolean) => void;\n};\n\nexport function ColorInput(props: ColorInputProps): JSX.Element {\n const inputMessages = useInputMessages();\n const meta = createFieldMeta(props.id);\n const currentColor = () => resolveMaybeAccessor(props.value) || \"#3b82f6\";\n const isTransparent = () => resolveMaybeAccessor(props.transparentValue) ?? false;\n const error = () => resolveMaybeAccessor(props.error);\n const compact = () => props.compact ?? !props.label;\n let picker: HTMLInputElement | undefined;\n\n const control = () =>\n compact() ? (\n <span class=\"k2b-color-input k2b-color-input--compact\">\n <button\n type=\"button\"\n class=\"k2b-color-input__swatch\"\n style={{ \"background-color\": currentColor() }}\n disabled={props.disabled}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n />\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </span>\n ) : (\n <div\n class=\"k2b-color-input\"\n data-disabled={props.disabled || isTransparent() ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <button\n type=\"button\"\n class=\"k2b-color-input__value\"\n disabled={props.disabled || isTransparent()}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n >\n <span\n class=\"k2b-color-input__swatch\"\n data-transparent={isTransparent() ? \"true\" : undefined}\n style={isTransparent() ? undefined : { \"background-color\": currentColor() }}\n />\n <code>{isTransparent() ? \"transparent\" : currentColor().toUpperCase()}</code>\n </button>\n <Show when={props.transparent}>\n <button\n type=\"button\"\n class=\"k2b-color-input__transparent\"\n aria-label={isTransparent() ? inputMessages().useColor : inputMessages().useTransparent}\n aria-pressed={isTransparent()}\n disabled={props.disabled}\n onClick={() => props.onTransparentValueChange?.(!isTransparent())}\n >\n <i class=\"ti ti-grid-dots\" aria-hidden=\"true\" />\n </button>\n </Show>\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled || isTransparent()}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </div>\n );\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n {control()}\n </Field>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  import { template as _$template } from "solid-js/web";
2
2
  import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
3
  import { className as _$className } from "solid-js/web";
4
- import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
5
4
  import { setProperty as _$setProperty } from "solid-js/web";
5
+ import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
6
6
  import { setAttribute as _$setAttribute } from "solid-js/web";
7
7
  import { effect as _$effect } from "solid-js/web";
8
8
  import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
@@ -12,10 +12,10 @@ import { insert as _$insert } from "solid-js/web";
12
12
  import { createComponent as _$createComponent } from "solid-js/web";
13
13
  import { getNextElement as _$getNextElement } from "solid-js/web";
14
14
  var _tmpl$ = /*#__PURE__*/_$template(`<i class="ti ti-alert-triangle"aria-hidden=true>`),
15
- _tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-choice-slider__track role=slider aria-valuemin=1><!$><!/><!$><!/><span class=k2b-choice-slider__thumb>`),
15
+ _tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-choice-slider__track role=slider aria-valuemin=1><span class=k2b-choice-slider__rail></span><span class=k2b-choice-slider__fill></span><!$><!/><span class=k2b-choice-slider__thumb>`),
16
16
  _tmpl$3 = /*#__PURE__*/_$template(`<div><p class=k2b-choice-slider__line aria-live=polite><!$><!/><span></span></p><!$><!/>`),
17
- _tmpl$4 = /*#__PURE__*/_$template(`<span class=k2b-choice-slider__segment>`),
18
- _tmpl$5 = /*#__PURE__*/_$template(`<span class=k2b-choice-slider__stop>`);
17
+ _tmpl$4 = /*#__PURE__*/_$template(`<span class=k2b-choice-slider__stop>`),
18
+ _tmpl$5 = /*#__PURE__*/_$template(`<span data-size=indicator aria-hidden=true><span class=k2b-choice-slider__track><span class=k2b-choice-slider__rail></span><span class=k2b-choice-slider__fill></span><span class=k2b-choice-slider__thumb>`);
19
19
  import { createEffect, createMemo, createSignal, For, on, Show } from "solid-js";
20
20
  import { resolveMaybeAccessor } from "./field-contract";
21
21
  const position = (index, count) => count < 2 ? 0 : index / (count - 1) * 100;
@@ -125,8 +125,10 @@ export function ChoiceSlider(props) {
125
125
  // One pointer owns a drag; a second finger waits until it ends.
126
126
  if (props.disabled || count() < 2 || event.button !== 0 || drag) return;
127
127
  event.preventDefault();
128
+ // A pointer press focuses the track without the keyboard focus ring.
128
129
  track?.focus({
129
- preventScroll: true
130
+ preventScroll: true,
131
+ focusVisible: false
130
132
  });
131
133
  track?.setPointerCapture?.(event.pointerId);
132
134
  const near = Math.round(at(event.clientX));
@@ -177,7 +179,7 @@ export function ChoiceSlider(props) {
177
179
  [_el$6, _co$] = _$getNextMarker(_el$5.nextSibling),
178
180
  _el$4 = _el$6.nextSibling,
179
181
  _el$11 = _el$2.nextSibling,
180
- [_el$12, _co$4] = _$getNextMarker(_el$11.nextSibling);
182
+ [_el$12, _co$3] = _$getNextMarker(_el$11.nextSibling);
181
183
  _$insert(_el$2, _$createComponent(Show, {
182
184
  get when() {
183
185
  return warning();
@@ -193,11 +195,11 @@ export function ChoiceSlider(props) {
193
195
  },
194
196
  get children() {
195
197
  var _el$7 = _$getNextElement(_tmpl$2),
196
- _el$9 = _el$7.firstChild,
197
- [_el$0, _co$2] = _$getNextMarker(_el$9.nextSibling),
198
- _el$1 = _el$0.nextSibling,
199
- [_el$10, _co$3] = _$getNextMarker(_el$1.nextSibling),
200
- _el$8 = _el$10.nextSibling;
198
+ _el$8 = _el$7.firstChild,
199
+ _el$9 = _el$8.nextSibling,
200
+ _el$1 = _el$9.nextSibling,
201
+ [_el$10, _co$2] = _$getNextMarker(_el$1.nextSibling),
202
+ _el$0 = _el$10.nextSibling;
201
203
  _el$7.addEventListener("lostpointercapture", onPointerEnd);
202
204
  _el$7.addEventListener("pointercancel", onPointerEnd);
203
205
  _el$7.$$pointerup = onPointerEnd;
@@ -206,43 +208,21 @@ export function ChoiceSlider(props) {
206
208
  _el$7.$$keydown = onKeyDown;
207
209
  var _ref$ = track;
208
210
  typeof _ref$ === "function" ? _$use(_ref$, _el$7) : track = _el$7;
209
- _$insert(_el$7, _$createComponent(For, {
210
- get each() {
211
- return props.options.slice(1);
212
- },
213
- children: (_, index) => (() => {
214
- var _el$13 = _$getNextElement(_tmpl$4);
215
- _$effect(_p$ => {
216
- var _v$13 = shown() > index() ? "" : undefined,
217
- _v$14 = `calc(${position(index(), count())}% + 8px)`,
218
- _v$15 = `calc(${position(index() + 1, count()) - position(index(), count())}% - 16px)`;
219
- _v$13 !== _p$.e && _$setAttribute(_el$13, "data-on", _p$.e = _v$13);
220
- _v$14 !== _p$.t && _$setStyleProperty(_el$13, "left", _p$.t = _v$14);
221
- _v$15 !== _p$.a && _$setStyleProperty(_el$13, "width", _p$.a = _v$15);
222
- return _p$;
223
- }, {
224
- e: undefined,
225
- t: undefined,
226
- a: undefined
227
- });
228
- return _el$13;
229
- })()
230
- }), _el$0, _co$2);
231
211
  _$insert(_el$7, _$createComponent(For, {
232
212
  get each() {
233
213
  return props.options;
234
214
  },
235
215
  children: (stop, index) => (() => {
236
- var _el$14 = _$getNextElement(_tmpl$5);
216
+ var _el$13 = _$getNextElement(_tmpl$4);
237
217
  _$effect(_p$ => {
238
- var _v$16 = shown() > index() ? "" : undefined,
239
- _v$17 = stop.disabledReason ? "" : undefined,
240
- _v$18 = index() === shown() ? "" : undefined,
241
- _v$19 = `${position(index(), count())}%`;
242
- _v$16 !== _p$.e && _$setAttribute(_el$14, "data-on", _p$.e = _v$16);
243
- _v$17 !== _p$.t && _$setAttribute(_el$14, "data-unavailable", _p$.t = _v$17);
244
- _v$18 !== _p$.a && _$setAttribute(_el$14, "data-current", _p$.a = _v$18);
245
- _v$19 !== _p$.o && _$setStyleProperty(_el$14, "left", _p$.o = _v$19);
218
+ var _v$15 = shown() > index() ? "" : undefined,
219
+ _v$16 = stop.disabledReason ? "" : undefined,
220
+ _v$17 = index() === shown() ? "" : undefined,
221
+ _v$18 = `${position(index(), count())}%`;
222
+ _v$15 !== _p$.e && _$setAttribute(_el$13, "data-on", _p$.e = _v$15);
223
+ _v$16 !== _p$.t && _$setAttribute(_el$13, "data-unavailable", _p$.t = _v$16);
224
+ _v$17 !== _p$.a && _$setAttribute(_el$13, "data-current", _p$.a = _v$17);
225
+ _v$18 !== _p$.o && _$setStyleProperty(_el$13, "left", _p$.o = _v$18);
246
226
  return _p$;
247
227
  }, {
248
228
  e: undefined,
@@ -250,9 +230,9 @@ export function ChoiceSlider(props) {
250
230
  a: undefined,
251
231
  o: undefined
252
232
  });
253
- return _el$14;
233
+ return _el$13;
254
234
  })()
255
- }), _el$10, _co$3);
235
+ }), _el$10, _co$2);
256
236
  _$effect(_p$ => {
257
237
  var _v$ = props.id,
258
238
  _v$2 = props.disabled ? -1 : 0,
@@ -262,9 +242,11 @@ export function ChoiceSlider(props) {
262
242
  _v$6 = Math.max(0, shown()) + 1,
263
243
  _v$7 = valueText(),
264
244
  _v$8 = props.disabled ? "true" : undefined,
265
- _v$9 = warning() && preview() === null && option()?.disabledReason ? "warning" : undefined,
266
- _v$0 = shown() < 0,
267
- _v$1 = `${position(Math.max(0, shown()), count())}%`;
245
+ _v$9 = preview() !== null ? "" : undefined,
246
+ _v$0 = `${position(Math.max(0, shown()), count())}%`,
247
+ _v$1 = shown() < 0,
248
+ _v$10 = warning() && preview() === null && option()?.disabledReason ? "warning" : undefined,
249
+ _v$11 = shown() < 0;
268
250
  _v$ !== _p$.e && _$setAttribute(_el$7, "id", _p$.e = _v$);
269
251
  _v$2 !== _p$.t && _$setAttribute(_el$7, "tabindex", _p$.t = _v$2);
270
252
  _v$3 !== _p$.a && _$setAttribute(_el$7, "aria-label", _p$.a = _v$3);
@@ -273,9 +255,11 @@ export function ChoiceSlider(props) {
273
255
  _v$6 !== _p$.n && _$setAttribute(_el$7, "aria-valuenow", _p$.n = _v$6);
274
256
  _v$7 !== _p$.s && _$setAttribute(_el$7, "aria-valuetext", _p$.s = _v$7);
275
257
  _v$8 !== _p$.h && _$setAttribute(_el$7, "aria-disabled", _p$.h = _v$8);
276
- _v$9 !== _p$.r && _$setAttribute(_el$8, "data-tone", _p$.r = _v$9);
277
- _v$0 !== _p$.d && _$setProperty(_el$8, "hidden", _p$.d = _v$0);
278
- _v$1 !== _p$.l && _$setStyleProperty(_el$8, "left", _p$.l = _v$1);
258
+ _v$9 !== _p$.r && _$setAttribute(_el$7, "data-dragging", _p$.r = _v$9);
259
+ _v$0 !== _p$.d && _$setStyleProperty(_el$7, "--k2b-choice-slider-at", _p$.d = _v$0);
260
+ _v$1 !== _p$.l && _$setProperty(_el$9, "hidden", _p$.l = _v$1);
261
+ _v$10 !== _p$.u && _$setAttribute(_el$0, "data-tone", _p$.u = _v$10);
262
+ _v$11 !== _p$.c && _$setProperty(_el$0, "hidden", _p$.c = _v$11);
279
263
  return _p$;
280
264
  }, {
281
265
  e: undefined,
@@ -288,19 +272,21 @@ export function ChoiceSlider(props) {
288
272
  h: undefined,
289
273
  r: undefined,
290
274
  d: undefined,
291
- l: undefined
275
+ l: undefined,
276
+ u: undefined,
277
+ c: undefined
292
278
  });
293
279
  _$runHydrationEvents();
294
280
  return _el$7;
295
281
  }
296
- }), _el$12, _co$4);
282
+ }), _el$12, _co$3);
297
283
  _$effect(_p$ => {
298
- var _v$10 = ["k2b-choice-slider", props.class].filter(Boolean).join(" "),
299
- _v$11 = props.size ?? "md",
300
- _v$12 = warning() ? "warning" : undefined;
301
- _v$10 !== _p$.e && _$className(_el$, _p$.e = _v$10);
302
- _v$11 !== _p$.t && _$setAttribute(_el$, "data-size", _p$.t = _v$11);
303
- _v$12 !== _p$.a && _$setAttribute(_el$2, "data-tone", _p$.a = _v$12);
284
+ var _v$12 = ["k2b-choice-slider", props.class].filter(Boolean).join(" "),
285
+ _v$13 = props.size ?? "md",
286
+ _v$14 = warning() ? "warning" : undefined;
287
+ _v$12 !== _p$.e && _$className(_el$, _p$.e = _v$12);
288
+ _v$13 !== _p$.t && _$setAttribute(_el$, "data-size", _p$.t = _v$13);
289
+ _v$14 !== _p$.a && _$setAttribute(_el$2, "data-tone", _p$.a = _v$14);
304
290
  return _p$;
305
291
  }, {
306
292
  e: undefined,
@@ -310,5 +296,36 @@ export function ChoiceSlider(props) {
310
296
  return _el$;
311
297
  })();
312
298
  }
299
+ /**
300
+ * The slider in small and without interaction, 24 px wide: rail, fill and thumb in the same look, for a trigger that
301
+ * opens the real slider. It is decoration; the trigger's own label says the value.
302
+ */
303
+ export function ChoiceSliderIndicator(props) {
304
+ const at = () => props.index === null || props.index < 0 ? null : position(Math.min(props.index, props.count - 1), props.count);
305
+ return (() => {
306
+ var _el$14 = _$getNextElement(_tmpl$5),
307
+ _el$15 = _el$14.firstChild,
308
+ _el$16 = _el$15.firstChild,
309
+ _el$17 = _el$16.nextSibling,
310
+ _el$18 = _el$17.nextSibling;
311
+ _$effect(_p$ => {
312
+ var _v$19 = ["k2b-choice-slider", props.class].filter(Boolean).join(" "),
313
+ _v$20 = `${at() ?? 0}%`,
314
+ _v$21 = at() === null,
315
+ _v$22 = at() === null;
316
+ _v$19 !== _p$.e && _$className(_el$14, _p$.e = _v$19);
317
+ _v$20 !== _p$.t && _$setStyleProperty(_el$15, "--k2b-choice-slider-at", _p$.t = _v$20);
318
+ _v$21 !== _p$.a && _$setProperty(_el$17, "hidden", _p$.a = _v$21);
319
+ _v$22 !== _p$.o && _$setProperty(_el$18, "hidden", _p$.o = _v$22);
320
+ return _p$;
321
+ }, {
322
+ e: undefined,
323
+ t: undefined,
324
+ a: undefined,
325
+ o: undefined
326
+ });
327
+ return _el$14;
328
+ })();
329
+ }
313
330
  _$delegateEvents(["keydown", "pointerdown", "pointermove", "pointerup"]);
314
331
  //# sourceMappingURL=ChoiceSlider.js.map