@lostgradient/cinder 0.3.0 → 0.4.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 (921) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/README.md +2 -2
  3. package/components.json +138 -86
  4. package/dist/_internal/locale-context.d.ts +9 -0
  5. package/dist/_internal/text-direction.d.ts +4 -0
  6. package/dist/_internal/tree-context.d.ts +2 -0
  7. package/dist/api-contract.d.ts +1 -1
  8. package/dist/components/_internal/create-command-list-state.svelte.d.ts +43 -0
  9. package/dist/components/_internal/create-sliding-dialog-state.svelte.d.ts +26 -0
  10. package/dist/components/access-gate/index.js +379 -513
  11. package/dist/components/alert/alert.css +1 -1
  12. package/dist/components/alert/alert.schema.js +4 -4
  13. package/dist/components/alert/alert.types.d.ts +4 -4
  14. package/dist/components/alert/index.js +4 -4
  15. package/dist/components/alert-dialog/index.js +9 -3
  16. package/dist/components/approval-card/approval-card-state.d.ts +3 -0
  17. package/dist/components/approval-card/approval-card.css +239 -0
  18. package/dist/components/approval-card/approval-card.schema.js +236 -0
  19. package/dist/components/approval-card/approval-card.svelte.d.ts +21 -0
  20. package/dist/components/approval-card/approval-card.types.d.ts +155 -0
  21. package/dist/components/{subscription-badge/subscription-badge.variables.js → approval-card/approval-card.variables.js} +4 -4
  22. package/dist/components/approval-card/index.d.ts +5 -0
  23. package/dist/components/approval-card/index.js +3794 -0
  24. package/dist/components/autocomplete/autocomplete.css +12 -1
  25. package/dist/components/autocomplete/index.js +106 -81
  26. package/dist/components/avatar-group/index.js +3 -2
  27. package/dist/components/badge/badge.schema.js +6 -3
  28. package/dist/components/badge/badge.svelte.d.ts +4 -0
  29. package/dist/components/badge/badge.types.d.ts +18 -4
  30. package/dist/components/badge/index.d.ts +1 -1
  31. package/dist/components/badge/index.js +99 -3
  32. package/dist/components/banner/banner.schema.js +2 -2
  33. package/dist/components/banner/banner.types.d.ts +1 -1
  34. package/dist/components/banner/index.js +3 -3
  35. package/dist/components/button/button.css +1 -1
  36. package/dist/components/capability-gate/capability-gate.css +15 -2
  37. package/dist/components/capability-gate/capability-gate.schema.js +4 -4
  38. package/dist/components/capability-gate/capability-gate.types.d.ts +6 -6
  39. package/dist/components/capability-gate/index.js +7 -7
  40. package/dist/components/chat/chat.schema.js +11 -26
  41. package/dist/components/chat/chat.types.d.ts +30 -15
  42. package/dist/components/chat/container/chat-events.d.ts +2 -2
  43. package/dist/components/chat/container/chat-history-trigger.svelte.d.ts +1 -1
  44. package/dist/components/chat/container/chat.svelte.d.ts +1 -1
  45. package/dist/components/chat/container/use-chat-scroll-state.svelte.d.ts +4 -4
  46. package/dist/components/chat/container/use-chat-unread-state.svelte.d.ts +6 -6
  47. package/dist/components/chat/index.d.ts +1 -1
  48. package/dist/components/chat/index.js +2257 -1913
  49. package/dist/components/chat/input/chat-input.svelte.d.ts +3 -1
  50. package/dist/components/chat-conversation-header/index.js +261 -29
  51. package/dist/components/chat-conversation-list/chat-conversation-list.css +13 -0
  52. package/dist/components/checkbox/checkbox.css +3 -0
  53. package/dist/components/checkbox/checkbox.schema.js +6 -1
  54. package/dist/components/checkbox/checkbox.types.d.ts +2 -0
  55. package/dist/components/checkbox/index.js +78 -22
  56. package/dist/components/checkbox-group/checkbox-group.css +3 -0
  57. package/dist/components/checkbox-group/checkbox-group.schema.js +4 -4
  58. package/dist/components/checkbox-group/checkbox-group.types.d.ts +12 -7
  59. package/dist/components/checkbox-group/index.js +50 -21
  60. package/dist/components/choice-grid/index.js +2 -2
  61. package/dist/components/choice-grid-item/index.js +2 -2
  62. package/dist/components/click-away-listener/click-away-listener.schema.js +3 -3
  63. package/dist/components/click-away-listener/click-away-listener.types.d.ts +3 -3
  64. package/dist/components/click-away-listener/index.js +3 -3
  65. package/dist/components/code-block/code-block.css +4 -3
  66. package/dist/components/code-block/index.js +6 -5
  67. package/dist/components/collapsible/collapsible.schema.js +2 -2
  68. package/dist/components/collapsible/collapsible.types.d.ts +2 -2
  69. package/dist/components/collapsible/index.js +3 -3
  70. package/dist/components/color-field/color-field.schema.js +3 -3
  71. package/dist/components/color-field/color-field.types.d.ts +2 -2
  72. package/dist/components/color-field/index.js +133 -69
  73. package/dist/components/color-picker/index.js +29 -18
  74. package/dist/components/color-swatch-picker/index.js +29 -18
  75. package/dist/components/combobox/combobox.schema.js +6 -2
  76. package/dist/components/combobox/combobox.types.d.ts +7 -1
  77. package/dist/components/combobox/index.js +112 -60
  78. package/dist/components/command-item/command-item.css +10 -0
  79. package/dist/components/command-item/command-item.schema.js +9 -1
  80. package/dist/components/command-item/command-item.types.d.ts +4 -0
  81. package/dist/components/command-item/index.js +9 -1
  82. package/dist/components/command-menu/index.js +257 -161
  83. package/dist/components/command-palette/command-palette.schema.js +2 -3
  84. package/dist/components/command-palette/command-palette.types.d.ts +1 -2
  85. package/dist/components/command-palette/index.js +282 -192
  86. package/dist/components/confirm-dialog/index.js +9 -3
  87. package/dist/components/context-menu/context-menu.context.d.ts +2 -0
  88. package/dist/components/context-menu/index.js +300 -40
  89. package/dist/components/context-menu-trigger/index.js +11 -8
  90. package/dist/components/copy-button/index.js +6 -5
  91. package/dist/components/data-grid/_internal/column-model.svelte.d.ts +1 -0
  92. package/dist/components/data-grid/data-grid.css +25 -0
  93. package/dist/components/data-grid/data-grid.schema.js +3 -3
  94. package/dist/components/data-grid/data-grid.types.d.ts +8 -2
  95. package/dist/components/data-grid/index.js +11 -8
  96. package/dist/components/data-list/data-list.schema.js +7 -10
  97. package/dist/components/data-list/data-list.types.d.ts +5 -9
  98. package/dist/components/data-list/index.js +15 -39
  99. package/dist/components/data-table/data-table.css +13 -0
  100. package/dist/components/data-table/index.js +32 -19
  101. package/dist/components/date-range-field/date-range-field.schema.js +7 -3
  102. package/dist/components/date-range-field/date-range-field.svelte.d.ts +2 -2
  103. package/dist/components/date-range-field/date-range-field.types.d.ts +15 -10
  104. package/dist/components/date-range-field/index.d.ts +1 -1
  105. package/dist/components/date-range-field/index.js +160 -17
  106. package/dist/components/diff-viewer/diff-front-matter.svelte.d.ts +2 -2
  107. package/dist/components/diff-viewer/diff-line.svelte.d.ts +2 -2
  108. package/dist/components/diff-viewer/diff-toolbar.svelte.d.ts +2 -2
  109. package/dist/components/diff-viewer/diff-viewer.svelte.d.ts +1 -1
  110. package/dist/components/diff-viewer/diff-viewer.types.d.ts +3 -3
  111. package/dist/components/diff-viewer/index.d.ts +1 -1
  112. package/dist/components/diff-viewer/index.js +171 -67
  113. package/dist/components/drawer/index.js +353 -283
  114. package/dist/components/dropdown/dropdown.css +7 -1
  115. package/dist/components/dropdown/dropdown.types.d.ts +3 -0
  116. package/dist/components/dropdown/index.js +267 -35
  117. package/dist/components/dropdown-group/dropdown-group.schema.js +4 -4
  118. package/dist/components/dropdown-group/dropdown-group.types.d.ts +4 -4
  119. package/dist/components/dropdown-group/index.js +7 -7
  120. package/dist/components/dropdown-item/dropdown-item.schema.js +9 -1
  121. package/dist/components/dropdown-item/dropdown-item.types.d.ts +5 -0
  122. package/dist/components/dropdown-item/index.js +13 -8
  123. package/dist/components/dropdown-menu/index.js +236 -14
  124. package/dist/components/dropdown-trigger/index.js +11 -12
  125. package/dist/components/event-stream-viewer/event-stream-viewer-keys.d.ts +6 -0
  126. package/dist/components/event-stream-viewer/event-stream-viewer.css +46 -0
  127. package/dist/components/event-stream-viewer/event-stream-viewer.schema.js +83 -10
  128. package/dist/components/event-stream-viewer/event-stream-viewer.svelte.d.ts +3 -3
  129. package/dist/components/event-stream-viewer/event-stream-viewer.types.d.ts +124 -3
  130. package/dist/components/event-stream-viewer/index.d.ts +1 -1
  131. package/dist/components/event-stream-viewer/index.js +764 -409
  132. package/dist/components/faceted-filter-bar/faceted-filter-bar.css +9 -0
  133. package/dist/components/faceted-filter-bar/index.js +25 -6
  134. package/dist/components/file-upload/file-upload.css +5 -5
  135. package/dist/components/floating-action-button/floating-action-button.css +22 -22
  136. package/dist/components/floating-action-button/floating-action-button.schema.js +5 -5
  137. package/dist/components/floating-action-button/floating-action-button.svelte.d.ts +1 -1
  138. package/dist/components/floating-action-button/floating-action-button.types.d.ts +21 -21
  139. package/dist/components/floating-action-button/index.d.ts +1 -1
  140. package/dist/components/floating-action-button/index.js +8 -8
  141. package/dist/components/form-field/form-field.css +3 -13
  142. package/dist/components/form-field/index.js +2 -2
  143. package/dist/components/hover-card/index.js +3 -2
  144. package/dist/components/input/index.js +131 -67
  145. package/dist/components/input/input.schema.js +6 -1
  146. package/dist/components/input/input.types.d.ts +2 -0
  147. package/dist/components/invocation-rule-builder/index.d.ts +1 -1
  148. package/dist/components/invocation-rule-builder/index.js +184 -107
  149. package/dist/components/invocation-rule-builder/invocation-rule-builder.css +63 -6
  150. package/dist/components/invocation-rule-builder/invocation-rule-builder.schema.js +133 -35
  151. package/dist/components/invocation-rule-builder/invocation-rule-builder.svelte.d.ts +2 -2
  152. package/dist/components/invocation-rule-builder/invocation-rule-builder.types.d.ts +85 -8
  153. package/dist/components/json-schema-editor/form-view.svelte.d.ts +1 -0
  154. package/dist/components/json-schema-editor/index.js +677 -357
  155. package/dist/components/json-schema-editor/json-schema-editor.css +6 -1
  156. package/dist/components/json-schema-editor/json-schema-toolbar.svelte.d.ts +1 -0
  157. package/dist/components/json-schema-editor/property-editor.svelte.d.ts +2 -0
  158. package/dist/components/json-schema-editor/property-list-validation.d.ts +1 -0
  159. package/dist/components/json-schema-editor/property-list.svelte.d.ts +1 -0
  160. package/dist/components/json-viewer/_json-viewer-node.svelte.d.ts +3 -0
  161. package/dist/components/json-viewer/index.js +112 -26
  162. package/dist/components/json-viewer/json-viewer.css +11 -0
  163. package/dist/components/kanban-board/index.js +18 -13
  164. package/dist/components/kanban-board/kanban-board.css +56 -3
  165. package/dist/components/keyboard-shortcuts/index.js +2 -2
  166. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.css +2 -2
  167. package/dist/components/label/index.js +2 -2
  168. package/dist/components/label/label.css +2 -9
  169. package/dist/components/load-more/index.js +4 -4
  170. package/dist/components/load-more/load-more.css +13 -5
  171. package/dist/components/load-more/load-more.schema.js +4 -4
  172. package/dist/components/load-more/load-more.types.d.ts +3 -3
  173. package/dist/components/locale-provider/index.d.ts +4 -0
  174. package/dist/components/locale-provider/index.js +76 -0
  175. package/dist/components/{connection-indicator/connection-indicator.schema.js → locale-provider/locale-provider.schema.js} +18 -14
  176. package/dist/components/locale-provider/locale-provider.svelte.d.ts +17 -0
  177. package/dist/components/locale-provider/locale-provider.types.d.ts +17 -0
  178. package/dist/components/{connection-indicator/connection-indicator.variables.js → locale-provider/locale-provider.variables.js} +4 -4
  179. package/dist/components/markdown-editor/editor-toolbar/editor-toolbar.svelte.d.ts +2 -0
  180. package/dist/components/markdown-editor/index.js +437 -128
  181. package/dist/components/markdown-editor/markdown-editor.schema.js +4 -4
  182. package/dist/components/markdown-editor/markdown-editor.types.d.ts +4 -4
  183. package/dist/components/masonry/masonry.schema.js +4 -3
  184. package/dist/components/masonry/masonry.types.d.ts +13 -2
  185. package/dist/components/matrix-chart/index.js +245 -224
  186. package/dist/components/media-controls/index.js +7 -7
  187. package/dist/components/media-controls/media-controls.css +15 -4
  188. package/dist/components/media-controls/media-controls.schema.js +4 -4
  189. package/dist/components/media-controls/media-controls.types.d.ts +7 -7
  190. package/dist/components/menu-bar/menu-bar.css +11 -0
  191. package/dist/components/menu-bar/menu-bar.svelte.d.ts +1 -0
  192. package/dist/components/modal/index.js +9 -3
  193. package/dist/components/navigation-bar/index.js +4 -4
  194. package/dist/components/navigation-bar/navigation-bar.schema.js +2 -2
  195. package/dist/components/navigation-bar/navigation-bar.types.d.ts +1 -1
  196. package/dist/components/number-input/index.js +88 -42
  197. package/dist/components/number-input/number-input.schema.js +4 -3
  198. package/dist/components/number-input/number-input.types.d.ts +16 -5
  199. package/dist/components/payload-inspector/index.d.ts +1 -1
  200. package/dist/components/payload-inspector/index.js +271 -64
  201. package/dist/components/payload-inspector/payload-inspector.css +6 -0
  202. package/dist/components/payload-inspector/payload-inspector.schema.js +27 -15
  203. package/dist/components/payload-inspector/payload-inspector.svelte.d.ts +2 -2
  204. package/dist/components/payload-inspector/payload-inspector.types.d.ts +52 -3
  205. package/dist/components/permission-matrix/permission-matrix.css +10 -0
  206. package/dist/components/phone-input/index.js +56 -33
  207. package/dist/components/phone-input/phone-input.schema.js +2 -2
  208. package/dist/components/phone-input/phone-input.types.d.ts +3 -2
  209. package/dist/components/pin-input/index.js +46 -41
  210. package/dist/components/pin-input/pin-input.schema.js +9 -2
  211. package/dist/components/pin-input/pin-input.types.d.ts +10 -1
  212. package/dist/components/popover/index.js +11 -4
  213. package/dist/components/portal/index.js +3 -2
  214. package/dist/components/pricing-card/index.js +22 -7
  215. package/dist/components/radio-group/index.js +51 -21
  216. package/dist/components/radio-group/radio-group.css +3 -0
  217. package/dist/components/radio-group/radio-group.schema.js +3 -3
  218. package/dist/components/radio-group/radio-group.types.d.ts +6 -2
  219. package/dist/components/rating/index.js +1 -6
  220. package/dist/components/rating/rating.schema.js +9 -2
  221. package/dist/components/rating/rating.types.d.ts +6 -0
  222. package/dist/components/review-editor/comment-list.svelte.d.ts +1 -1
  223. package/dist/components/review-editor/index.d.ts +1 -1
  224. package/dist/components/review-editor/index.js +789 -314
  225. package/dist/components/review-editor/review-editor-controls.svelte.d.ts +1 -1
  226. package/dist/components/review-editor/review-editor-impl.svelte.d.ts +4 -4
  227. package/dist/components/review-editor/review-editor-selection-types.d.ts +1 -1
  228. package/dist/components/review-editor/review-editor-state.svelte.d.ts +1 -1
  229. package/dist/components/review-editor/review-editor-threads.svelte.d.ts +2 -2
  230. package/dist/components/review-editor/review-editor.svelte.d.ts +2 -1
  231. package/dist/components/review-editor/review-editor.types.d.ts +77 -3
  232. package/dist/components/review-editor/thread-popover.svelte.d.ts +1 -1
  233. package/dist/components/run-step-timeline/index.d.ts +1 -1
  234. package/dist/components/run-step-timeline/index.js +747 -273
  235. package/dist/components/run-step-timeline/run-step-timeline.css +25 -5
  236. package/dist/components/run-step-timeline/run-step-timeline.schema.js +351 -21
  237. package/dist/components/run-step-timeline/run-step-timeline.svelte.d.ts +1 -1
  238. package/dist/components/run-step-timeline/run-step-timeline.types.d.ts +184 -3
  239. package/dist/components/schema-form/index.d.ts +1 -1
  240. package/dist/components/schema-form/index.js +1916 -474
  241. package/dist/components/schema-form/schema-form-async.fixture.d.ts +1 -0
  242. package/dist/components/schema-form/schema-form-body.svelte.d.ts +25 -0
  243. package/dist/components/schema-form/schema-form-model.d.ts +1 -4
  244. package/dist/components/schema-form/schema-form-validation.d.ts +1 -2
  245. package/dist/components/schema-form/schema-form.css +12 -74
  246. package/dist/components/schema-form/schema-form.schema.js +10 -3
  247. package/dist/components/schema-form/schema-form.svelte.d.ts +3 -3
  248. package/dist/components/schema-form/schema-form.types.d.ts +15 -8
  249. package/dist/components/scroll-area/index.js +3 -3
  250. package/dist/components/scroll-area/scroll-area.schema.js +2 -2
  251. package/dist/components/scroll-area/scroll-area.types.d.ts +1 -1
  252. package/dist/components/secret-value-field/index.js +10 -4
  253. package/dist/components/secret-value-field/secret-value-field.svelte.d.ts +1 -1
  254. package/dist/components/segmented-control/segmented-control.css +22 -1
  255. package/dist/components/select/index.js +37 -24
  256. package/dist/components/select/select.css +9 -2
  257. package/dist/components/selection-popover/index.js +11 -4
  258. package/dist/components/share-card/index.js +3 -4
  259. package/dist/components/share-card/share-card.css +15 -4
  260. package/dist/components/sheet/index.js +365 -300
  261. package/dist/components/shortcut-hint/index.js +3 -3
  262. package/dist/components/sidebar/index.js +423 -353
  263. package/dist/components/sidebar/sidebar.schema.js +2 -2
  264. package/dist/components/sidebar/sidebar.types.d.ts +1 -1
  265. package/dist/components/slider/index.js +211 -9
  266. package/dist/components/slider/slider.css +14 -9
  267. package/dist/components/sortable-list/sortable-list.css +1 -1
  268. package/dist/components/spectrogram/index.js +224 -203
  269. package/dist/components/spectrum-chart/index.js +208 -187
  270. package/dist/components/speed-dial/index.js +11 -11
  271. package/dist/components/speed-dial/speed-dial.css +3 -3
  272. package/dist/components/speed-dial-action/index.js +9 -9
  273. package/dist/components/stat/index.js +26 -4
  274. package/dist/components/stat/stat.schema.js +2 -2
  275. package/dist/components/stat/stat.types.d.ts +2 -2
  276. package/dist/components/stat-group/index.js +26 -4
  277. package/dist/components/stat-group/stat-group.css +1 -1
  278. package/dist/components/status-dot/index.d.ts +1 -1
  279. package/dist/components/status-dot/index.js +47 -8
  280. package/dist/components/status-dot/status-dot.css +45 -1
  281. package/dist/components/status-dot/status-dot.schema.js +12 -5
  282. package/dist/components/status-dot/status-dot.svelte.d.ts +5 -1
  283. package/dist/components/status-dot/status-dot.types.d.ts +16 -6
  284. package/dist/components/steps/steps.css +3 -3
  285. package/dist/components/table/index.js +23 -17
  286. package/dist/components/table/table.css +10 -0
  287. package/dist/components/table/table.types.d.ts +3 -3
  288. package/dist/components/table-header/index.js +5 -5
  289. package/dist/components/table-header/table-header.schema.js +3 -3
  290. package/dist/components/table-header/table-header.types.d.ts +2 -2
  291. package/dist/components/table-header-cell/index.js +11 -5
  292. package/dist/components/table-row/index.js +7 -7
  293. package/dist/components/table-row/table-row.schema.js +3 -3
  294. package/dist/components/table-row/table-row.types.d.ts +6 -6
  295. package/dist/components/tabs/index.js +17 -4
  296. package/dist/components/tabs/tabs.schema.js +6 -1
  297. package/dist/components/tabs/tabs.types.d.ts +2 -0
  298. package/dist/components/textarea/index.js +37 -24
  299. package/dist/components/textarea/textarea.css +16 -1
  300. package/dist/components/time-field/index.d.ts +5 -0
  301. package/dist/components/time-field/index.js +456 -0
  302. package/dist/components/time-field/time-field.css +60 -0
  303. package/dist/components/time-field/time-field.schema.d.ts +3 -0
  304. package/dist/components/time-field/time-field.schema.js +107 -0
  305. package/dist/components/time-field/time-field.svelte.d.ts +18 -0
  306. package/dist/components/time-field/time-field.types.d.ts +63 -0
  307. package/dist/components/time-field/time-field.variables.d.ts +2 -0
  308. package/dist/components/{experimental/connection-indicator/index.js → time-field/time-field.variables.js} +5 -14
  309. package/dist/components/toggle/index.js +39 -7
  310. package/dist/components/toggle/toggle.schema.js +11 -2
  311. package/dist/components/toggle/toggle.types.d.ts +2 -0
  312. package/dist/components/tooltip/index.js +3 -2
  313. package/dist/components/transfer-list/index.js +41 -11
  314. package/dist/components/transfer-list/transfer-list.css +22 -0
  315. package/dist/components/transfer-list/transfer-list.schema.js +2 -2
  316. package/dist/components/transfer-list/transfer-list.types.d.ts +2 -2
  317. package/dist/components/tree/index.js +238 -153
  318. package/dist/components/tree/tree.css +69 -0
  319. package/dist/components/tree/tree.schema.js +3 -3
  320. package/dist/components/tree/tree.types.d.ts +2 -2
  321. package/dist/components/tree-item/index.js +107 -68
  322. package/dist/components/tree-item/tree-item.schema.js +5 -5
  323. package/dist/components/tree-item/tree-item.types.d.ts +4 -4
  324. package/dist/components/virtual-list/index.js +98 -63
  325. package/dist/components/waveform/index.js +185 -164
  326. package/dist/editor/attach.d.ts +2 -2
  327. package/dist/editor/attach.js +10 -16
  328. package/dist/editor/editor.js +6 -6
  329. package/dist/editor/keymap-plugin.d.ts +2 -2
  330. package/dist/editor/keymap-plugin.js +4 -4
  331. package/dist/editor/types.d.ts +11 -11
  332. package/dist/index.d.ts +14 -12
  333. package/dist/index.js +106 -105
  334. package/dist/server/components/access-gate/index.js +176 -305
  335. package/dist/server/components/alert/alert.schema.js +4 -4
  336. package/dist/server/components/alert/index.css +1 -1
  337. package/dist/server/components/alert/index.js +4 -4
  338. package/dist/server/components/alert-dialog/index.js +9 -3
  339. package/dist/server/components/approval-card/approval-card.schema.js +217 -0
  340. package/dist/server/components/approval-card/approval-card.variables.js +12 -0
  341. package/dist/server/components/approval-card/index.css +1767 -0
  342. package/dist/server/components/approval-card/index.js +2499 -0
  343. package/dist/server/components/autocomplete/index.css +12 -1
  344. package/dist/server/components/autocomplete/index.js +34 -24
  345. package/dist/server/components/badge/badge.schema.js +6 -3
  346. package/dist/server/components/badge/index.js +71 -4
  347. package/dist/server/components/banner/banner.schema.js +2 -2
  348. package/dist/server/components/banner/index.js +3 -3
  349. package/dist/server/components/button/index.css +1 -1
  350. package/dist/server/components/capability-gate/capability-gate.schema.js +4 -4
  351. package/dist/server/components/capability-gate/index.css +10 -2
  352. package/dist/server/components/capability-gate/index.js +5 -5
  353. package/dist/server/components/chat/chat.schema.js +11 -26
  354. package/dist/server/components/chat/index.js +695 -438
  355. package/dist/server/components/chat-conversation-header/index.css +7 -1
  356. package/dist/server/components/chat-conversation-header/index.js +215 -17
  357. package/dist/server/components/chat-conversation-list/index.css +8 -0
  358. package/dist/server/components/checkbox/checkbox.schema.js +6 -1
  359. package/dist/server/components/checkbox/index.css +3 -0
  360. package/dist/server/components/checkbox/index.js +41 -4
  361. package/dist/server/components/checkbox-group/checkbox-group.schema.js +4 -4
  362. package/dist/server/components/checkbox-group/index.css +3 -0
  363. package/dist/server/components/checkbox-group/index.js +23 -4
  364. package/dist/server/components/choice-grid/index.js +2 -2
  365. package/dist/server/components/choice-grid-item/index.js +2 -2
  366. package/dist/server/components/click-away-listener/click-away-listener.schema.js +3 -3
  367. package/dist/server/components/click-away-listener/index.js +2 -2
  368. package/dist/server/components/code-block/index.css +4 -3
  369. package/dist/server/components/code-block/index.js +1 -6
  370. package/dist/server/components/collapsible/collapsible.schema.js +2 -2
  371. package/dist/server/components/collapsible/index.js +3 -3
  372. package/dist/server/components/color-field/color-field.schema.js +3 -3
  373. package/dist/server/components/color-field/index.js +61 -17
  374. package/dist/server/components/color-picker/index.js +29 -12
  375. package/dist/server/components/color-swatch-picker/index.js +29 -12
  376. package/dist/server/components/combobox/combobox.schema.js +6 -2
  377. package/dist/server/components/combobox/index.js +61 -12
  378. package/dist/server/components/command-item/command-item.schema.js +9 -1
  379. package/dist/server/components/command-item/index.css +1 -0
  380. package/dist/server/components/command-item/index.js +10 -2
  381. package/dist/server/components/command-menu/index.css +1 -0
  382. package/dist/server/components/command-menu/index.js +193 -102
  383. package/dist/server/components/command-palette/command-palette.schema.js +2 -3
  384. package/dist/server/components/command-palette/index.css +1 -0
  385. package/dist/server/components/command-palette/index.js +190 -106
  386. package/dist/server/components/confirm-dialog/index.js +9 -3
  387. package/dist/server/components/context-menu/index.css +7 -1
  388. package/dist/server/components/context-menu/index.js +244 -26
  389. package/dist/server/components/context-menu-trigger/index.js +7 -4
  390. package/dist/server/components/copy-button/index.js +1 -6
  391. package/dist/server/components/data-grid/data-grid.schema.js +3 -3
  392. package/dist/server/components/data-grid/index.css +23 -0
  393. package/dist/server/components/data-grid/index.js +9 -7
  394. package/dist/server/components/data-list/data-list.schema.js +7 -10
  395. package/dist/server/components/data-list/index.js +7 -21
  396. package/dist/server/components/data-table/index.css +20 -0
  397. package/dist/server/components/data-table/index.js +26 -16
  398. package/dist/server/components/date-range-field/date-range-field.schema.js +7 -3
  399. package/dist/server/components/date-range-field/index.js +146 -12
  400. package/dist/server/components/diff-viewer/index.js +79 -7
  401. package/dist/server/components/drawer/index.js +260 -193
  402. package/dist/server/components/dropdown/index.css +7 -1
  403. package/dist/server/components/dropdown/index.js +221 -23
  404. package/dist/server/components/dropdown-group/dropdown-group.schema.js +4 -4
  405. package/dist/server/components/dropdown-group/index.js +7 -7
  406. package/dist/server/components/dropdown-item/dropdown-item.schema.js +9 -1
  407. package/dist/server/components/dropdown-item/index.js +12 -7
  408. package/dist/server/components/dropdown-menu/index.js +197 -13
  409. package/dist/server/components/dropdown-trigger/index.js +5 -2
  410. package/dist/server/components/event-stream-viewer/event-stream-viewer.schema.js +83 -10
  411. package/dist/server/components/event-stream-viewer/index.css +323 -0
  412. package/dist/server/components/event-stream-viewer/index.js +406 -139
  413. package/dist/server/components/faceted-filter-bar/index.css +10 -1
  414. package/dist/server/components/faceted-filter-bar/index.js +24 -6
  415. package/dist/server/components/file-upload/index.css +3 -3
  416. package/dist/server/components/floating-action-button/floating-action-button.schema.js +5 -5
  417. package/dist/server/components/floating-action-button/index.css +16 -16
  418. package/dist/server/components/floating-action-button/index.js +5 -5
  419. package/dist/server/components/form-field/index.css +0 -10
  420. package/dist/server/components/form-field/index.js +2 -2
  421. package/dist/server/components/input/index.js +59 -15
  422. package/dist/server/components/input/input.schema.js +6 -1
  423. package/dist/server/components/invocation-rule-builder/index.css +51 -6
  424. package/dist/server/components/invocation-rule-builder/index.js +56 -17
  425. package/dist/server/components/invocation-rule-builder/invocation-rule-builder.schema.js +133 -35
  426. package/dist/server/components/json-schema-editor/index.css +4 -1
  427. package/dist/server/components/json-schema-editor/index.js +282 -52
  428. package/dist/server/components/json-viewer/index.css +7 -1
  429. package/dist/server/components/json-viewer/index.js +83 -11
  430. package/dist/server/components/kanban-board/index.css +42 -3
  431. package/dist/server/components/kanban-board/index.js +7 -6
  432. package/dist/server/components/keyboard-shortcuts/index.css +2 -2
  433. package/dist/server/components/keyboard-shortcuts/index.js +2 -2
  434. package/dist/server/components/label/index.css +0 -10
  435. package/dist/server/components/label/index.js +2 -2
  436. package/dist/server/components/load-more/index.css +12 -4
  437. package/dist/server/components/load-more/index.js +5 -5
  438. package/dist/server/components/load-more/load-more.schema.js +4 -4
  439. package/dist/server/components/locale-provider/index.js +55 -0
  440. package/dist/server/components/locale-provider/locale-provider.schema.js +35 -0
  441. package/dist/server/components/locale-provider/locale-provider.variables.js +12 -0
  442. package/dist/server/components/markdown-editor/index.js +297 -60
  443. package/dist/server/components/markdown-editor/markdown-editor.schema.js +4 -4
  444. package/dist/server/components/masonry/masonry.schema.js +4 -3
  445. package/dist/server/components/matrix-chart/index.js +62 -39
  446. package/dist/server/components/media-controls/index.css +11 -3
  447. package/dist/server/components/media-controls/index.js +7 -7
  448. package/dist/server/components/media-controls/media-controls.schema.js +4 -4
  449. package/dist/server/components/menu-bar/index.css +15 -1
  450. package/dist/server/components/modal/index.js +9 -3
  451. package/dist/server/components/navigation-bar/index.js +3 -3
  452. package/dist/server/components/navigation-bar/navigation-bar.schema.js +2 -2
  453. package/dist/server/components/number-input/index.js +56 -18
  454. package/dist/server/components/number-input/number-input.schema.js +4 -3
  455. package/dist/server/components/payload-inspector/index.css +616 -0
  456. package/dist/server/components/payload-inspector/index.js +181 -22
  457. package/dist/server/components/payload-inspector/payload-inspector.schema.js +27 -15
  458. package/dist/server/components/permission-matrix/index.css +8 -0
  459. package/dist/server/components/phone-input/index.js +21 -3
  460. package/dist/server/components/phone-input/phone-input.schema.js +2 -2
  461. package/dist/server/components/pin-input/index.js +12 -7
  462. package/dist/server/components/pin-input/pin-input.schema.js +9 -2
  463. package/dist/server/components/popover/index.js +9 -3
  464. package/dist/server/components/pricing-card/index.js +22 -7
  465. package/dist/server/components/radio-group/index.css +3 -0
  466. package/dist/server/components/radio-group/index.js +24 -3
  467. package/dist/server/components/radio-group/radio-group.schema.js +3 -3
  468. package/dist/server/components/rating/rating.schema.js +9 -2
  469. package/dist/server/components/review-editor/index.js +426 -80
  470. package/dist/server/components/run-step-timeline/index.css +503 -6
  471. package/dist/server/components/run-step-timeline/index.js +455 -109
  472. package/dist/server/components/run-step-timeline/run-step-timeline.schema.js +351 -21
  473. package/dist/server/components/schema-form/index.css +11 -69
  474. package/dist/server/components/schema-form/index.js +1291 -218
  475. package/dist/server/components/schema-form/schema-form.schema.js +10 -3
  476. package/dist/server/components/scroll-area/index.js +3 -3
  477. package/dist/server/components/scroll-area/scroll-area.schema.js +2 -2
  478. package/dist/server/components/secret-value-field/index.js +4 -4
  479. package/dist/server/components/segmented-control/index.css +15 -1
  480. package/dist/server/components/select/index.css +9 -2
  481. package/dist/server/components/select/index.js +9 -2
  482. package/dist/server/components/selection-popover/index.js +9 -3
  483. package/dist/server/components/share-card/index.css +11 -3
  484. package/dist/server/components/share-card/index.js +1 -5
  485. package/dist/server/components/sheet/index.js +265 -195
  486. package/dist/server/components/sidebar/index.js +274 -207
  487. package/dist/server/components/sidebar/sidebar.schema.js +2 -2
  488. package/dist/server/components/slider/index.css +13 -9
  489. package/dist/server/components/slider/index.js +173 -4
  490. package/dist/server/components/sortable-list/index.css +1 -1
  491. package/dist/server/components/spectrogram/index.js +68 -45
  492. package/dist/server/components/spectrum-chart/index.js +54 -31
  493. package/dist/server/components/speed-dial/index.css +3 -3
  494. package/dist/server/components/speed-dial/index.js +8 -8
  495. package/dist/server/components/speed-dial-action/index.js +6 -6
  496. package/dist/server/components/stat/index.js +26 -4
  497. package/dist/server/components/stat/stat.schema.js +2 -2
  498. package/dist/server/components/stat-group/index.css +1 -1
  499. package/dist/server/components/stat-group/index.js +26 -4
  500. package/dist/server/components/status-dot/index.css +45 -1
  501. package/dist/server/components/status-dot/index.js +35 -7
  502. package/dist/server/components/status-dot/status-dot.schema.js +12 -5
  503. package/dist/server/components/steps/index.css +3 -3
  504. package/dist/server/components/table/index.css +8 -0
  505. package/dist/server/components/table/index.js +22 -16
  506. package/dist/server/components/table-header/index.js +6 -6
  507. package/dist/server/components/table-header/table-header.schema.js +3 -3
  508. package/dist/server/components/table-header-cell/index.js +9 -3
  509. package/dist/server/components/table-row/index.js +7 -7
  510. package/dist/server/components/table-row/table-row.schema.js +3 -3
  511. package/dist/server/components/tabs/index.js +18 -4
  512. package/dist/server/components/tabs/tabs.schema.js +6 -1
  513. package/dist/server/components/textarea/index.css +16 -1
  514. package/dist/server/components/textarea/index.js +9 -2
  515. package/dist/server/components/time-field/index.css +58 -0
  516. package/dist/server/components/time-field/index.js +291 -0
  517. package/dist/server/components/time-field/time-field.schema.js +88 -0
  518. package/dist/server/components/time-field/time-field.variables.js +12 -0
  519. package/dist/server/components/toggle/index.js +40 -7
  520. package/dist/server/components/toggle/toggle.schema.js +11 -2
  521. package/dist/server/components/transfer-list/index.css +16 -0
  522. package/dist/server/components/transfer-list/index.js +37 -11
  523. package/dist/server/components/transfer-list/transfer-list.schema.js +2 -2
  524. package/dist/server/components/tree/index.css +68 -0
  525. package/dist/server/components/tree/index.js +67 -20
  526. package/dist/server/components/tree/tree.schema.js +3 -3
  527. package/dist/server/components/tree-item/index.js +34 -13
  528. package/dist/server/components/tree-item/tree-item.schema.js +5 -5
  529. package/dist/server/components/virtual-list/index.js +36 -13
  530. package/dist/server/components/waveform/index.js +51 -28
  531. package/dist/server/editor/attach.d.ts +2 -2
  532. package/dist/server/editor/attach.js +10 -16
  533. package/dist/server/editor/editor.js +6 -6
  534. package/dist/server/editor/keymap-plugin.d.ts +2 -2
  535. package/dist/server/editor/keymap-plugin.js +4 -4
  536. package/dist/server/editor/types.d.ts +11 -11
  537. package/dist/server/index.css +2033 -1463
  538. package/dist/server/index.js +7203 -5135
  539. package/dist/utilities/attachments.d.ts +6 -6
  540. package/dist/utilities/value-change.d.ts +2 -0
  541. package/package.json +96 -63
  542. package/src/_internal/locale-context.ts +21 -0
  543. package/src/_internal/text-direction.ts +213 -0
  544. package/src/_internal/tree-context.ts +2 -0
  545. package/src/components/_internal/create-command-list-state.svelte.ts +171 -0
  546. package/src/components/_internal/create-sliding-dialog-state.svelte.ts +170 -0
  547. package/src/components/_radio/README.md +1 -1
  548. package/src/components/access-gate/access-gate-inline.svelte +3 -1
  549. package/src/components/alert/README.md +8 -8
  550. package/src/components/alert/alert.css +1 -1
  551. package/src/components/alert/alert.examples.json +4 -4
  552. package/src/components/alert/alert.svelte +3 -5
  553. package/src/components/alert/alert.types.ts +4 -4
  554. package/src/components/approval-card/README.md +92 -0
  555. package/src/components/approval-card/approval-card-state.ts +24 -0
  556. package/src/components/approval-card/approval-card.css +239 -0
  557. package/src/components/approval-card/approval-card.examples.json +25 -0
  558. package/src/components/approval-card/approval-card.svelte +583 -0
  559. package/src/components/approval-card/approval-card.types.ts +180 -0
  560. package/src/components/approval-card/index.ts +16 -0
  561. package/src/components/autocomplete/autocomplete.css +12 -1
  562. package/src/components/autocomplete/autocomplete.svelte +53 -27
  563. package/src/components/badge/README.md +8 -7
  564. package/src/components/badge/badge.svelte +80 -3
  565. package/src/components/badge/badge.types.ts +36 -13
  566. package/src/components/badge/index.ts +1 -1
  567. package/src/components/banner/README.md +2 -2
  568. package/src/components/banner/banner.examples.json +19 -0
  569. package/src/components/banner/banner.svelte +2 -2
  570. package/src/components/banner/banner.types.ts +1 -1
  571. package/src/components/button/button.css +1 -1
  572. package/src/components/callout/callout.examples.json +19 -0
  573. package/src/components/capability-gate/README.md +3 -3
  574. package/src/components/capability-gate/capability-gate.css +15 -2
  575. package/src/components/capability-gate/capability-gate.examples.json +1 -1
  576. package/src/components/capability-gate/capability-gate.svelte +7 -7
  577. package/src/components/capability-gate/capability-gate.types.ts +6 -6
  578. package/src/components/chat/README.md +6 -10
  579. package/src/components/chat/chat.examples.json +8 -8
  580. package/src/components/chat/chat.types.ts +31 -15
  581. package/src/components/chat/container/chat-events.ts +2 -2
  582. package/src/components/chat/container/chat-history-trigger.svelte +9 -1
  583. package/src/components/chat/container/chat.svelte +47 -46
  584. package/src/components/chat/container/use-chat-scroll-state.svelte.ts +21 -18
  585. package/src/components/chat/container/use-chat-unread-state.svelte.ts +19 -19
  586. package/src/components/chat/index.ts +1 -1
  587. package/src/components/chat/input/chat-input.svelte +35 -13
  588. package/src/components/chat/message/image-lightbox.svelte +38 -15
  589. package/src/components/chat/message/message-attachments.svelte +1 -1
  590. package/src/components/chat/message/parts/reasoning-part.svelte +8 -0
  591. package/src/components/chat/message/parts/tool-approval-part.svelte +22 -9
  592. package/src/components/chat-conversation-list/chat-conversation-list.css +13 -0
  593. package/src/components/checkbox/README.md +1 -0
  594. package/src/components/checkbox/checkbox.css +3 -0
  595. package/src/components/checkbox/checkbox.svelte +44 -2
  596. package/src/components/checkbox/checkbox.types.ts +2 -0
  597. package/src/components/checkbox-group/README.md +2 -2
  598. package/src/components/checkbox-group/checkbox-group.css +3 -0
  599. package/src/components/checkbox-group/checkbox-group.examples.json +13 -0
  600. package/src/components/checkbox-group/checkbox-group.svelte +23 -2
  601. package/src/components/checkbox-group/checkbox-group.types.ts +12 -7
  602. package/src/components/choice-grid-item/choice-grid-item.svelte +1 -1
  603. package/src/components/click-away-listener/README.md +2 -2
  604. package/src/components/click-away-listener/click-away-listener.examples.json +1 -1
  605. package/src/components/click-away-listener/click-away-listener.svelte +2 -2
  606. package/src/components/click-away-listener/click-away-listener.types.ts +3 -3
  607. package/src/components/code-block/code-block.css +4 -3
  608. package/src/components/collapsible/README.md +2 -2
  609. package/src/components/collapsible/collapsible.svelte +2 -2
  610. package/src/components/collapsible/collapsible.types.ts +5 -2
  611. package/src/components/color-field/README.md +18 -18
  612. package/src/components/color-field/color-field.svelte +2 -2
  613. package/src/components/color-field/color-field.types.ts +2 -2
  614. package/src/components/color-swatch-picker/color-swatch-picker.examples.json +13 -0
  615. package/src/components/color-swatch-picker/color-swatch-picker.svelte +38 -24
  616. package/src/components/combobox/README.md +2 -1
  617. package/src/components/combobox/combobox.svelte +38 -17
  618. package/src/components/combobox/combobox.types.ts +7 -1
  619. package/src/components/command-item/README.md +13 -11
  620. package/src/components/command-item/command-item.css +10 -0
  621. package/src/components/command-item/command-item.svelte +11 -0
  622. package/src/components/command-item/command-item.types.ts +4 -0
  623. package/src/components/command-menu/command-menu.svelte +21 -102
  624. package/src/components/command-palette/README.md +12 -12
  625. package/src/components/command-palette/command-palette.examples.json +3 -3
  626. package/src/components/command-palette/command-palette.svelte +17 -134
  627. package/src/components/command-palette/command-palette.types.ts +1 -2
  628. package/src/components/context-menu/context-menu.context.ts +2 -0
  629. package/src/components/context-menu/context-menu.svelte +35 -9
  630. package/src/components/context-menu-trigger/context-menu-trigger.svelte +9 -6
  631. package/src/components/copy-button/copy-button.svelte +4 -3
  632. package/src/components/data-grid/README.md +3 -3
  633. package/src/components/data-grid/_internal/column-model.svelte.ts +2 -0
  634. package/src/components/data-grid/data-grid.css +25 -0
  635. package/src/components/data-grid/data-grid.svelte +7 -7
  636. package/src/components/data-grid/data-grid.types.ts +8 -2
  637. package/src/components/data-list/README.md +9 -9
  638. package/src/components/data-list/data-list.examples.json +1 -1
  639. package/src/components/data-list/data-list.svelte +3 -9
  640. package/src/components/data-list/data-list.types.ts +5 -9
  641. package/src/components/data-table/data-table.css +13 -0
  642. package/src/components/data-table/data-table.svelte +13 -3
  643. package/src/components/date-range-field/README.md +9 -8
  644. package/src/components/date-range-field/date-range-field.svelte +193 -19
  645. package/src/components/date-range-field/date-range-field.types.ts +16 -10
  646. package/src/components/date-range-field/index.ts +1 -0
  647. package/src/components/diff-viewer/diff-front-matter.svelte +2 -2
  648. package/src/components/diff-viewer/diff-line.svelte +32 -8
  649. package/src/components/diff-viewer/diff-toolbar.svelte +3 -3
  650. package/src/components/diff-viewer/diff-viewer.svelte +4 -4
  651. package/src/components/diff-viewer/diff-viewer.types.ts +3 -3
  652. package/src/components/diff-viewer/index.ts +1 -1
  653. package/src/components/drawer/drawer.svelte +26 -145
  654. package/src/components/dropdown/dropdown.css +7 -1
  655. package/src/components/dropdown/dropdown.types.ts +3 -0
  656. package/src/components/dropdown-group/README.md +6 -6
  657. package/src/components/dropdown-group/dropdown-group.svelte +8 -8
  658. package/src/components/dropdown-group/dropdown-group.types.ts +4 -4
  659. package/src/components/dropdown-item/README.md +2 -0
  660. package/src/components/dropdown-item/dropdown-item.svelte +14 -11
  661. package/src/components/dropdown-item/dropdown-item.types.ts +5 -0
  662. package/src/components/dropdown-menu/dropdown-menu.svelte +42 -9
  663. package/src/components/dropdown-trigger/dropdown-trigger.svelte +4 -6
  664. package/src/components/event-stream-viewer/README.md +38 -16
  665. package/src/components/event-stream-viewer/event-stream-viewer-keys.ts +74 -0
  666. package/src/components/event-stream-viewer/event-stream-viewer.css +46 -0
  667. package/src/components/event-stream-viewer/event-stream-viewer.examples.json +6 -0
  668. package/src/components/event-stream-viewer/event-stream-viewer.svelte +262 -69
  669. package/src/components/event-stream-viewer/event-stream-viewer.types.ts +130 -3
  670. package/src/components/event-stream-viewer/index.ts +6 -0
  671. package/src/components/faceted-filter-bar/faceted-filter-bar.css +9 -0
  672. package/src/components/faceted-filter-bar/faceted-filter-bar.svelte +31 -5
  673. package/src/components/file-upload/file-upload.css +5 -5
  674. package/src/components/file-upload/file-upload.examples.json +13 -0
  675. package/src/components/floating-action-button/README.md +9 -9
  676. package/src/components/floating-action-button/floating-action-button.css +22 -22
  677. package/src/components/floating-action-button/floating-action-button.examples.json +1 -1
  678. package/src/components/floating-action-button/floating-action-button.svelte +7 -7
  679. package/src/components/floating-action-button/floating-action-button.types.ts +21 -21
  680. package/src/components/floating-action-button/index.ts +1 -1
  681. package/src/components/form-field/form-field.css +3 -13
  682. package/src/components/form-field/form-field.svelte +4 -1
  683. package/src/components/image/image.examples.json +13 -0
  684. package/src/components/input/README.md +16 -15
  685. package/src/components/input/input.examples.json +1 -1
  686. package/src/components/input/input.svelte +65 -28
  687. package/src/components/input/input.types.ts +2 -0
  688. package/src/components/invocation-rule-builder/README.md +14 -14
  689. package/src/components/invocation-rule-builder/index.ts +1 -0
  690. package/src/components/invocation-rule-builder/invocation-rule-builder.css +63 -6
  691. package/src/components/invocation-rule-builder/invocation-rule-builder.svelte +73 -16
  692. package/src/components/invocation-rule-builder/invocation-rule-builder.types.ts +99 -8
  693. package/src/components/json-schema-editor/form-view.svelte +3 -1
  694. package/src/components/json-schema-editor/json-schema-editor-impl.svelte +30 -18
  695. package/src/components/json-schema-editor/json-schema-editor.css +6 -1
  696. package/src/components/json-schema-editor/json-schema-toolbar.svelte +6 -0
  697. package/src/components/json-schema-editor/json-view.svelte +1 -1
  698. package/src/components/json-schema-editor/property-editor.svelte +38 -2
  699. package/src/components/json-schema-editor/property-list-validation.ts +10 -0
  700. package/src/components/json-schema-editor/property-list.svelte +48 -3
  701. package/src/components/json-viewer/_json-viewer-node.svelte +55 -9
  702. package/src/components/json-viewer/json-viewer.css +11 -0
  703. package/src/components/json-viewer/json-viewer.svelte +63 -1
  704. package/src/components/kanban-board/kanban-board.css +56 -3
  705. package/src/components/kanban-board/kanban-board.svelte +10 -3
  706. package/src/components/keyboard-shortcuts/keyboard-shortcuts.css +2 -2
  707. package/src/components/keyboard-shortcuts/keyboard-shortcuts.svelte +1 -1
  708. package/src/components/label/README.md +1 -1
  709. package/src/components/label/label.css +2 -9
  710. package/src/components/label/label.svelte +4 -2
  711. package/src/components/load-more/README.md +4 -4
  712. package/src/components/load-more/load-more.css +13 -5
  713. package/src/components/load-more/load-more.examples.json +2 -2
  714. package/src/components/load-more/load-more.svelte +4 -4
  715. package/src/components/load-more/load-more.types.ts +3 -3
  716. package/src/components/locale-provider/README.md +43 -0
  717. package/src/components/locale-provider/index.ts +5 -0
  718. package/src/components/locale-provider/locale-provider.svelte +40 -0
  719. package/src/components/locale-provider/locale-provider.types.ts +21 -0
  720. package/src/components/markdown-editor/README.md +3 -3
  721. package/src/components/markdown-editor/editor-toolbar/editor-toolbar.svelte +5 -2
  722. package/src/components/markdown-editor/editor-toolbar/link-popover.svelte +13 -0
  723. package/src/components/markdown-editor/editor-toolbar/toolbar-dropdown.svelte +2 -0
  724. package/src/components/markdown-editor/markdown-editor.svelte +14 -12
  725. package/src/components/markdown-editor/markdown-editor.types.ts +4 -4
  726. package/src/components/masonry/README.md +7 -7
  727. package/src/components/masonry/masonry.types.ts +24 -2
  728. package/src/components/matrix-chart/matrix-chart.svelte +7 -21
  729. package/src/components/media-controls/README.md +3 -3
  730. package/src/components/media-controls/media-controls.css +15 -4
  731. package/src/components/media-controls/media-controls.examples.json +1 -1
  732. package/src/components/media-controls/media-controls.svelte +6 -6
  733. package/src/components/media-controls/media-controls.types.ts +10 -7
  734. package/src/components/menu-bar/menu-bar.css +11 -0
  735. package/src/components/menu-bar/menu-bar.svelte +81 -12
  736. package/src/components/navigation-bar/README.md +1 -1
  737. package/src/components/navigation-bar/navigation-bar.examples.json +1 -1
  738. package/src/components/navigation-bar/navigation-bar.svelte +2 -2
  739. package/src/components/navigation-bar/navigation-bar.types.ts +1 -1
  740. package/src/components/number-input/README.md +18 -18
  741. package/src/components/number-input/number-input.examples.json +13 -0
  742. package/src/components/number-input/number-input.svelte +77 -38
  743. package/src/components/number-input/number-input.types.ts +15 -5
  744. package/src/components/pagination/README.md +3 -1
  745. package/src/components/payload-inspector/README.md +11 -11
  746. package/src/components/payload-inspector/index.ts +2 -0
  747. package/src/components/payload-inspector/payload-inspector.css +6 -0
  748. package/src/components/payload-inspector/payload-inspector.svelte +22 -4
  749. package/src/components/payload-inspector/payload-inspector.types.ts +54 -3
  750. package/src/components/permission-matrix/permission-matrix.css +10 -0
  751. package/src/components/phone-input/README.md +1 -1
  752. package/src/components/phone-input/phone-input.svelte +7 -1
  753. package/src/components/phone-input/phone-input.types.ts +3 -2
  754. package/src/components/pin-input/README.md +19 -19
  755. package/src/components/pin-input/pin-input.svelte +16 -12
  756. package/src/components/pin-input/pin-input.types.ts +10 -1
  757. package/src/components/portal/portal.utilities.svelte.ts +4 -1
  758. package/src/components/pricing-card/pricing-card.svelte +26 -1
  759. package/src/components/radio-group/README.md +12 -12
  760. package/src/components/radio-group/radio-group.css +3 -0
  761. package/src/components/radio-group/radio-group.examples.json +3 -3
  762. package/src/components/radio-group/radio-group.svelte +22 -2
  763. package/src/components/radio-group/radio-group.types.ts +6 -2
  764. package/src/components/rating/README.md +18 -18
  765. package/src/components/rating/rating.svelte +0 -8
  766. package/src/components/rating/rating.types.ts +6 -0
  767. package/src/components/review-editor/comment-list.svelte +1 -1
  768. package/src/components/review-editor/index.ts +1 -1
  769. package/src/components/review-editor/review-editor-controls.svelte +8 -3
  770. package/src/components/review-editor/review-editor-impl.svelte +11 -7
  771. package/src/components/review-editor/review-editor-selection-types.ts +1 -1
  772. package/src/components/review-editor/review-editor-selection.svelte.ts +1 -1
  773. package/src/components/review-editor/review-editor-state.svelte.ts +1 -1
  774. package/src/components/review-editor/review-editor-threads.svelte.ts +2 -2
  775. package/src/components/review-editor/review-editor.types.ts +91 -3
  776. package/src/components/review-editor/thread-popover.svelte +1 -1
  777. package/src/components/run-step-timeline/README.md +53 -6
  778. package/src/components/run-step-timeline/index.ts +6 -0
  779. package/src/components/run-step-timeline/run-step-timeline.css +25 -5
  780. package/src/components/run-step-timeline/run-step-timeline.examples.json +3 -3
  781. package/src/components/run-step-timeline/run-step-timeline.svelte +314 -78
  782. package/src/components/run-step-timeline/run-step-timeline.types.ts +190 -3
  783. package/src/components/schema-form/README.md +9 -9
  784. package/src/components/schema-form/index.ts +0 -1
  785. package/src/components/schema-form/schema-form-async.fixture.ts +101 -0
  786. package/src/components/schema-form/schema-form-body.svelte +646 -0
  787. package/src/components/schema-form/schema-form-model.ts +4 -44
  788. package/src/components/schema-form/schema-form-validation.ts +83 -46
  789. package/src/components/schema-form/schema-form.css +12 -74
  790. package/src/components/schema-form/schema-form.examples.json +0 -6
  791. package/src/components/schema-form/schema-form.svelte +30 -598
  792. package/src/components/schema-form/schema-form.types.ts +16 -12
  793. package/src/components/scroll-area/README.md +1 -1
  794. package/src/components/scroll-area/scroll-area.examples.json +3 -3
  795. package/src/components/scroll-area/scroll-area.svelte +5 -5
  796. package/src/components/scroll-area/scroll-area.types.ts +1 -1
  797. package/src/components/secret-value-field/secret-value-field.svelte +10 -6
  798. package/src/components/segmented-control/segmented-control.css +22 -1
  799. package/src/components/segmented-control/segmented-control.examples.json +2 -2
  800. package/src/components/select/select.css +9 -2
  801. package/src/components/select/select.svelte +6 -1
  802. package/src/components/selection-popover/selection-popover.examples.json +1 -1
  803. package/src/components/share-card/share-card.css +15 -4
  804. package/src/components/share-card/share-card.svelte +2 -4
  805. package/src/components/sheet/sheet.svelte +30 -145
  806. package/src/components/shortcut-hint/shortcut-hint.svelte +1 -1
  807. package/src/components/side-navigation/side-navigation.examples.json +1 -1
  808. package/src/components/sidebar/README.md +6 -2
  809. package/src/components/sidebar/sidebar.examples.json +1 -1
  810. package/src/components/sidebar/sidebar.svelte +4 -4
  811. package/src/components/sidebar/sidebar.types.ts +1 -1
  812. package/src/components/slider/slider.css +14 -9
  813. package/src/components/slider/slider.svelte +33 -2
  814. package/src/components/sortable-list/README.md +18 -1
  815. package/src/components/sortable-list/sortable-list.css +1 -1
  816. package/src/components/sortable-list/sortable-list.examples.json +13 -0
  817. package/src/components/spectrogram/spectrogram.examples.json +1 -0
  818. package/src/components/spectrogram/spectrogram.svelte +7 -19
  819. package/src/components/spectrum-chart/spectrum-chart.svelte +8 -20
  820. package/src/components/speed-dial/speed-dial.css +3 -3
  821. package/src/components/speed-dial/speed-dial.examples.json +1 -1
  822. package/src/components/speed-dial/speed-dial.svelte +2 -2
  823. package/src/components/speed-dial-action/speed-dial-action.svelte +1 -1
  824. package/src/components/stacked-list-item/stacked-list-item.examples.json +1 -1
  825. package/src/components/stat/README.md +1 -1
  826. package/src/components/stat/stat.svelte +7 -2
  827. package/src/components/stat/stat.types.ts +2 -2
  828. package/src/components/stat-group/stat-group.css +1 -1
  829. package/src/components/status-dot/README.md +9 -7
  830. package/src/components/status-dot/index.ts +6 -1
  831. package/src/components/status-dot/status-dot.css +45 -1
  832. package/src/components/status-dot/status-dot.examples.json +1 -1
  833. package/src/components/status-dot/status-dot.svelte +57 -8
  834. package/src/components/status-dot/status-dot.types.ts +17 -6
  835. package/src/components/steps/steps.css +3 -3
  836. package/src/components/table/table.css +10 -0
  837. package/src/components/table/table.examples.json +1 -1
  838. package/src/components/table/table.svelte +2 -2
  839. package/src/components/table/table.types.ts +3 -3
  840. package/src/components/table-header/README.md +2 -2
  841. package/src/components/table-header/table-header.svelte +5 -5
  842. package/src/components/table-header/table-header.types.ts +2 -2
  843. package/src/components/table-header-cell/table-header-cell.svelte +13 -2
  844. package/src/components/table-row/README.md +2 -2
  845. package/src/components/table-row/table-row.svelte +6 -6
  846. package/src/components/table-row/table-row.types.ts +6 -6
  847. package/src/components/tabs/README.md +1 -0
  848. package/src/components/tabs/tabs.svelte +11 -3
  849. package/src/components/tabs/tabs.types.ts +2 -0
  850. package/src/components/textarea/textarea.css +16 -1
  851. package/src/components/textarea/textarea.svelte +6 -1
  852. package/src/components/time-field/README.md +60 -0
  853. package/src/components/time-field/index.ts +6 -0
  854. package/src/components/time-field/time-field.css +60 -0
  855. package/src/components/time-field/time-field.examples.json +13 -0
  856. package/src/components/time-field/time-field.svelte +277 -0
  857. package/src/components/time-field/time-field.types.ts +70 -0
  858. package/src/components/toggle/README.md +12 -11
  859. package/src/components/toggle/toggle.svelte +19 -6
  860. package/src/components/toggle/toggle.types.ts +2 -0
  861. package/src/components/transfer-list/README.md +1 -1
  862. package/src/components/transfer-list/transfer-list.css +22 -0
  863. package/src/components/transfer-list/transfer-list.svelte +44 -10
  864. package/src/components/transfer-list/transfer-list.types.ts +5 -2
  865. package/src/components/tree/README.md +2 -2
  866. package/src/components/tree/tree.css +69 -0
  867. package/src/components/tree/tree.examples.json +1 -1
  868. package/src/components/tree/tree.svelte +52 -9
  869. package/src/components/tree/tree.types.ts +2 -2
  870. package/src/components/tree-item/README.md +4 -4
  871. package/src/components/tree-item/tree-item.svelte +42 -12
  872. package/src/components/tree-item/tree-item.types.ts +4 -4
  873. package/src/components/virtual-list/virtual-list.svelte +5 -5
  874. package/src/components/waveform/waveform.svelte +7 -19
  875. package/src/index.ts +40 -16
  876. package/src/styles/components/_field-label.css +20 -0
  877. package/src/styles/components/_input-frame.css +2 -1
  878. package/src/styles/components.css +3 -2
  879. package/src/styles/index.css +1 -0
  880. package/src/styles/tokens-base.css +3 -0
  881. package/src/utilities/attachments.ts +15 -12
  882. package/src/utilities/value-change.ts +11 -0
  883. package/dist/components/connection-indicator/connection-indicator.css +0 -63
  884. package/dist/components/connection-indicator/connection-indicator.svelte.d.ts +0 -18
  885. package/dist/components/connection-indicator/connection-indicator.types.d.ts +0 -14
  886. package/dist/components/connection-indicator/index.d.ts +0 -5
  887. package/dist/components/connection-indicator/index.js +0 -75
  888. package/dist/components/experimental/connection-indicator/index.d.ts +0 -2
  889. package/dist/components/review-editor/review-editor-types.d.ts +0 -77
  890. package/dist/components/subscription-badge/index.d.ts +0 -5
  891. package/dist/components/subscription-badge/index.js +0 -353
  892. package/dist/components/subscription-badge/subscription-badge.css +0 -18
  893. package/dist/components/subscription-badge/subscription-badge.schema.js +0 -47
  894. package/dist/components/subscription-badge/subscription-badge.svelte.d.ts +0 -19
  895. package/dist/components/subscription-badge/subscription-badge.types.d.ts +0 -28
  896. package/dist/server/components/connection-indicator/connection-indicator.schema.js +0 -31
  897. package/dist/server/components/connection-indicator/connection-indicator.variables.js +0 -12
  898. package/dist/server/components/connection-indicator/index.css +0 -60
  899. package/dist/server/components/connection-indicator/index.js +0 -42
  900. package/dist/server/components/experimental/connection-indicator/index.js +0 -23
  901. package/dist/server/components/subscription-badge/index.css +0 -2
  902. package/dist/server/components/subscription-badge/index.js +0 -308
  903. package/dist/server/components/subscription-badge/subscription-badge.schema.js +0 -28
  904. package/dist/server/components/subscription-badge/subscription-badge.variables.js +0 -12
  905. package/src/components/connection-indicator/README.md +0 -41
  906. package/src/components/connection-indicator/connection-indicator.css +0 -63
  907. package/src/components/connection-indicator/connection-indicator.svelte +0 -44
  908. package/src/components/connection-indicator/connection-indicator.types.ts +0 -18
  909. package/src/components/connection-indicator/index.ts +0 -6
  910. package/src/components/experimental/connection-indicator/index.ts +0 -20
  911. package/src/components/review-editor/review-editor-types.ts +0 -92
  912. package/src/components/subscription-badge/README.md +0 -50
  913. package/src/components/subscription-badge/index.ts +0 -6
  914. package/src/components/subscription-badge/subscription-badge.css +0 -18
  915. package/src/components/subscription-badge/subscription-badge.examples.json +0 -19
  916. package/src/components/subscription-badge/subscription-badge.svelte +0 -69
  917. package/src/components/subscription-badge/subscription-badge.types.ts +0 -37
  918. /package/dist/components/{connection-indicator/connection-indicator.schema.d.ts → approval-card/approval-card.schema.d.ts} +0 -0
  919. /package/dist/components/{connection-indicator/connection-indicator.variables.d.ts → approval-card/approval-card.variables.d.ts} +0 -0
  920. /package/dist/components/{subscription-badge/subscription-badge.schema.d.ts → locale-provider/locale-provider.schema.d.ts} +0 -0
  921. /package/dist/components/{subscription-badge/subscription-badge.variables.d.ts → locale-provider/locale-provider.variables.d.ts} +0 -0
@@ -3,7 +3,10 @@ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
3
3
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
4
4
 
5
5
  // src/components/schema-form/schema-form.svelte
6
- import * as $ from "svelte/internal/server";
6
+ import * as $7 from "svelte/internal/server";
7
+
8
+ // src/components/schema-form/schema-form-body.svelte
9
+ import * as $6 from "svelte/internal/server";
7
10
  import { tick } from "svelte";
8
11
 
9
12
  // src/utilities/class-names.ts
@@ -11,41 +14,971 @@ function classNames(...parts) {
11
14
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
12
15
  }
13
16
 
14
- // src/components/schema-form/schema-form-model.ts
15
- function isRecord(value) {
16
- return value !== null && typeof value === "object" && !Array.isArray(value);
17
+ // src/components/checkbox/checkbox.svelte
18
+ import * as $ from "svelte/internal/server";
19
+
20
+ // src/_internal/field-control.ts
21
+ function describeId(fieldId, hasDescription) {
22
+ return hasDescription ? `${fieldId}-description` : undefined;
17
23
  }
18
- function isStandardSchema(value) {
19
- if (!isRecord(value))
20
- return false;
21
- const standard = value["~standard"];
22
- return isRecord(standard) && standard["version"] === 1;
24
+ function errorId(fieldId, hasError) {
25
+ return hasError ? `${fieldId}-error` : undefined;
23
26
  }
24
- function hasJsonSchemaConverter(value) {
25
- const standard = value["~standard"];
26
- return isRecord(standard.jsonSchema) && typeof standard.jsonSchema.input === "function";
27
+ function composeDescribedBy(...ids) {
28
+ const filtered = ids.flatMap((id) => typeof id === "string" ? id.trim().split(/\s+/).filter(Boolean) : []);
29
+ const unique = Array.from(new Set(filtered));
30
+ return unique.length > 0 ? unique.join(" ") : undefined;
27
31
  }
28
- function jsonSchemaFromStandardSchema(schema) {
29
- if (!hasJsonSchemaConverter(schema))
30
- return null;
31
- try {
32
- const generated = schema["~standard"].jsonSchema.input({ target: "draft-2020-12" });
33
- return isRecord(generated) ? generated : null;
34
- } catch {
35
- return null;
36
- }
32
+ function ariaInvalid(hasError) {
33
+ return hasError ? "true" : undefined;
37
34
  }
38
- function createSchemaFormModel(schema) {
39
- const sourceSchema = isStandardSchema(schema) ? jsonSchemaFromStandardSchema(schema) ?? fallbackRawJsonSchema() : schema;
35
+ function resolveFieldControl(input) {
36
+ const resolvedId = input.id ?? input.context?.controlId ?? input.generatedId;
37
+ const defaultDescriptionId = describeId(resolvedId, input.hasDescription ?? false);
38
+ const defaultErrorId = errorId(resolvedId, input.hasError ?? false);
39
+ const ownDescriptionId = defaultDescriptionId && defaultDescriptionId === input.context?.descriptionId && input.localIdNamespace ? `${resolvedId}-${input.localIdNamespace}-description` : defaultDescriptionId;
40
+ const ownErrorId = defaultErrorId && defaultErrorId === input.context?.errorId && input.localIdNamespace ? `${resolvedId}-${input.localIdNamespace}-error` : defaultErrorId;
41
+ const descriptionId = ownDescriptionId ?? input.context?.descriptionId;
42
+ const resolvedErrorId = ownErrorId ?? input.context?.errorId;
43
+ const explicitInvalid = ariaInvalid(input.hasError ?? false);
44
+ const consumerInvalid = input.consumerInvalid === true ? "true" : input.consumerInvalid === false ? undefined : input.consumerInvalid ?? undefined;
40
45
  return {
41
- field: fieldFromJsonSchema(sourceSchema, [], "value", true),
42
- sourceSchema
46
+ id: resolvedId,
47
+ ownDescriptionId,
48
+ ownErrorId,
49
+ descriptionId,
50
+ errorId: resolvedErrorId,
51
+ describedBy: composeDescribedBy(descriptionId, ...input.additionalDescribedBy ?? [], resolvedErrorId, input.context?.describedBy, input.consumerDescribedBy),
52
+ ariaInvalid: explicitInvalid ?? input.context?.invalid ?? consumerInvalid,
53
+ required: input.required ?? input.context?.required ?? false,
54
+ disabled: input.disabled ?? input.context?.disabled ?? false
43
55
  };
44
56
  }
45
- function fallbackRawJsonSchema() {
57
+
58
+ // src/_internal/form-field-context.ts
59
+ import { createContext } from "svelte";
60
+
61
+ // src/_internal/optional-context.ts
62
+ function optionalContext(getStrict) {
63
+ return () => {
64
+ try {
65
+ return getStrict();
66
+ } catch {
67
+ return;
68
+ }
69
+ };
70
+ }
71
+
72
+ // src/_internal/form-field-context.ts
73
+ var [getFormFieldContextStrict, setFormFieldContextRaw] = createContext();
74
+ function setFormFieldContext(context) {
75
+ setFormFieldContextRaw(context);
76
+ }
77
+ var getFormFieldContext = optionalContext(getFormFieldContextStrict);
78
+
79
+ // ../../node_modules/esm-env/false.js
80
+ var false_default = false;
81
+ // ../../node_modules/esm-env/true.js
82
+ var true_default = true;
83
+ // src/utilities/dev-warn.ts
84
+ function devWarn(message, ...args) {
85
+ if (!true_default)
86
+ return;
87
+ console.warn(message, ...args);
88
+ }
89
+
90
+ // src/utilities/value-change.ts
91
+ function commitValue(proposed, onValueChange, setValue) {
92
+ const committed = onValueChange?.(proposed) ?? proposed;
93
+ setValue(committed);
94
+ return committed;
95
+ }
96
+
97
+ // src/components/checkbox/checkbox.svelte
98
+ function Checkbox($$renderer, $$props) {
99
+ $$renderer.component(($$renderer2) => {
100
+ const generatedId = $.props_id($$renderer2);
101
+ let {
102
+ id,
103
+ checked = false,
104
+ onValueChange,
105
+ indeterminate = false,
106
+ label,
107
+ description,
108
+ error,
109
+ disabled,
110
+ required,
111
+ class: className,
112
+ "aria-describedby": consumerDescribedBy,
113
+ "aria-invalid": consumerInvalid,
114
+ onchange: consumerOnchange,
115
+ $$slots,
116
+ $$events,
117
+ ...rest
118
+ } = $$props;
119
+ const context = getFormFieldContext();
120
+ const field = $.derived(() => resolveFieldControl({
121
+ ...id !== undefined ? { id } : {},
122
+ generatedId,
123
+ context,
124
+ hasDescription: !!description,
125
+ hasError: !!error,
126
+ localIdNamespace: "checkbox",
127
+ consumerDescribedBy,
128
+ consumerInvalid,
129
+ disabled,
130
+ required: required ?? undefined
131
+ }));
132
+ let inputElement = undefined;
133
+ let resetSyncTimeout;
134
+ function syncCheckedAfterFormReset() {
135
+ if (resetSyncTimeout !== undefined)
136
+ clearTimeout(resetSyncTimeout);
137
+ resetSyncTimeout = setTimeout(() => {
138
+ resetSyncTimeout = undefined;
139
+ if (!inputElement)
140
+ return;
141
+ checked = inputElement.checked;
142
+ inputElement.indeterminate = indeterminate && !inputElement.checked;
143
+ }, 0);
144
+ }
145
+ function handleChange(event) {
146
+ const target = event.currentTarget;
147
+ const committed = commitValue(target.checked, onValueChange, (next) => {
148
+ checked = next;
149
+ });
150
+ target.checked = committed;
151
+ target.indeterminate = indeterminate && !committed;
152
+ consumerOnchange?.(event);
153
+ }
154
+ $$renderer2.push(`<div class="cinder-checkbox-field"><div class="cinder-checkbox-row"><span class="cinder-checkbox-field__control"><input${$.attributes({
155
+ id: field().id,
156
+ type: "checkbox",
157
+ ...rest,
158
+ disabled: field().disabled,
159
+ required: field().required,
160
+ checked,
161
+ class: $.clsx(classNames("cinder-checkbox", className)),
162
+ "aria-invalid": field().ariaInvalid,
163
+ "aria-describedby": field().describedBy
164
+ }, undefined, undefined, undefined, 4)}/> <span class="cinder-checkbox-field__indicator" aria-hidden="true"></span></span> `);
165
+ if (label) {
166
+ $$renderer2.push("<!--[0-->");
167
+ $$renderer2.push(`<label${$.attr("for", field().id)} class="cinder-checkbox-field__label"${$.attr("data-disabled", field().disabled || undefined)}>${$.escape(label)} `);
168
+ if (field().required) {
169
+ $$renderer2.push("<!--[0-->");
170
+ $$renderer2.push(`<span class="cinder-_required-marker" aria-hidden="true">*</span>`);
171
+ } else {
172
+ $$renderer2.push("<!--[-1-->");
173
+ }
174
+ $$renderer2.push(`<!--]--></label>`);
175
+ } else {
176
+ $$renderer2.push("<!--[-1-->");
177
+ }
178
+ $$renderer2.push(`<!--]--></div> `);
179
+ if (description) {
180
+ $$renderer2.push("<!--[0-->");
181
+ $$renderer2.push(`<p${$.attr("id", field().ownDescriptionId)} class="cinder-checkbox-field__description">${$.escape(description)}</p>`);
182
+ } else {
183
+ $$renderer2.push("<!--[-1-->");
184
+ }
185
+ $$renderer2.push(`<!--]--> `);
186
+ if (error) {
187
+ $$renderer2.push("<!--[0-->");
188
+ $$renderer2.push(`<p${$.attr("id", field().ownErrorId)} class="cinder-checkbox-field__error" aria-live="polite">${$.escape(error)}</p>`);
189
+ } else {
190
+ $$renderer2.push("<!--[-1-->");
191
+ }
192
+ $$renderer2.push(`<!--]--></div>`);
193
+ $.bind_props($$props, { checked, indeterminate });
194
+ });
195
+ }
196
+
197
+ // src/components/input/input.svelte
198
+ import * as $2 from "svelte/internal/server";
199
+ function calendarIcon($$renderer) {
200
+ $$renderer.push(`<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>`);
201
+ }
202
+ function Input($$renderer, $$props) {
203
+ $$renderer.component(($$renderer2) => {
204
+ let {
205
+ id,
206
+ value = "",
207
+ onValueChange,
208
+ label,
209
+ description,
210
+ error,
211
+ disabled,
212
+ required,
213
+ type = "text",
214
+ class: className,
215
+ leading,
216
+ trailing,
217
+ leadingInteractive = false,
218
+ trailingInteractive = false,
219
+ "aria-describedby": consumerDescribedBy,
220
+ "aria-invalid": consumerInvalid,
221
+ oninput: consumerOninput,
222
+ $$slots,
223
+ $$events,
224
+ ...rest
225
+ } = $$props;
226
+ const context = getFormFieldContext();
227
+ const field = $2.derived(() => resolveFieldControl({
228
+ id,
229
+ generatedId: id,
230
+ context,
231
+ hasDescription: !!description,
232
+ hasError: !!error,
233
+ localIdNamespace: "input",
234
+ consumerDescribedBy,
235
+ consumerInvalid,
236
+ required,
237
+ disabled
238
+ }));
239
+ const ownDescriptionId = $2.derived(() => field().ownDescriptionId);
240
+ const ownErrorId = $2.derived(() => field().ownErrorId);
241
+ const describedBy = $2.derived(() => field().describedBy);
242
+ const resolvedAriaInvalid = $2.derived(() => field().ariaInvalid);
243
+ const resolvedRequired = $2.derived(() => field().required);
244
+ const resolvedDisabled = $2.derived(() => field().disabled);
245
+ const isNativeDateInput = $2.derived(() => type === "date");
246
+ const rendersNativeDateIcon = $2.derived(() => isNativeDateInput() && !trailing);
247
+ const hasTrailing = $2.derived(() => !!trailing || isNativeDateInput());
248
+ const hasGroupWrapper = $2.derived(() => !!leading || hasTrailing());
249
+ const isInvalid = $2.derived(() => resolvedAriaInvalid() === "true");
250
+ let inputNode = undefined;
251
+ let resetSyncTimeout;
252
+ function syncValueAfterFormReset() {
253
+ if (resetSyncTimeout !== undefined)
254
+ clearTimeout(resetSyncTimeout);
255
+ resetSyncTimeout = setTimeout(() => {
256
+ resetSyncTimeout = undefined;
257
+ if (inputNode)
258
+ value = inputNode.value;
259
+ }, 0);
260
+ }
261
+ function handleInput(event) {
262
+ const target = event.currentTarget;
263
+ const committed = commitValue(target.value, onValueChange, (next) => {
264
+ value = next;
265
+ });
266
+ target.value = committed;
267
+ consumerOninput?.(event);
268
+ }
269
+ function inputElement($$renderer3) {
270
+ $$renderer3.push(`<input${$2.attributes({
271
+ id,
272
+ type,
273
+ ...rest,
274
+ disabled: resolvedDisabled(),
275
+ required: resolvedRequired(),
276
+ value,
277
+ class: $2.clsx(classNames("cinder-input", className)),
278
+ "data-cinder-native-date": rendersNativeDateIcon() ? "" : undefined,
279
+ "aria-invalid": resolvedAriaInvalid(),
280
+ "aria-describedby": describedBy()
281
+ }, undefined, undefined, undefined, 4)}/>`);
282
+ }
283
+ $$renderer2.push(`<div class="cinder-input-field">`);
284
+ if (label) {
285
+ $$renderer2.push("<!--[0-->");
286
+ $$renderer2.push(`<label${$2.attr("for", id)} class="cinder-input-field__label"${$2.attr("data-disabled", resolvedDisabled() || undefined)}>${$2.escape(label)} `);
287
+ if (resolvedRequired()) {
288
+ $$renderer2.push("<!--[0-->");
289
+ $$renderer2.push(`<span class="cinder-_required-marker" aria-hidden="true">*</span>`);
290
+ } else {
291
+ $$renderer2.push("<!--[-1-->");
292
+ }
293
+ $$renderer2.push(`<!--]--></label>`);
294
+ } else {
295
+ $$renderer2.push("<!--[-1-->");
296
+ }
297
+ $$renderer2.push(`<!--]--> `);
298
+ if (hasGroupWrapper()) {
299
+ $$renderer2.push("<!--[0-->");
300
+ $$renderer2.push(`<div class="cinder-input-group"${$2.attr("data-leading", leading ? "" : undefined)}${$2.attr("data-trailing", hasTrailing() ? "" : undefined)}${$2.attr("data-native-date", rendersNativeDateIcon() ? "" : undefined)}${$2.attr("data-disabled", resolvedDisabled() ? "" : undefined)}${$2.attr("data-invalid", isInvalid() ? "" : undefined)}>`);
301
+ if (leading) {
302
+ $$renderer2.push("<!--[0-->");
303
+ $$renderer2.push(`<span class="cinder-input-group__leading cinder-_truncate"${$2.attr("aria-hidden", leadingInteractive ? undefined : "true")}>`);
304
+ leading($$renderer2);
305
+ $$renderer2.push(`<!----></span>`);
306
+ } else {
307
+ $$renderer2.push("<!--[-1-->");
308
+ }
309
+ $$renderer2.push(`<!--]--> `);
310
+ inputElement($$renderer2);
311
+ $$renderer2.push(`<!----> `);
312
+ if (trailing) {
313
+ $$renderer2.push("<!--[0-->");
314
+ $$renderer2.push(`<span class="cinder-input-group__trailing cinder-_truncate"${$2.attr("aria-hidden", trailingInteractive ? undefined : "true")}>`);
315
+ trailing($$renderer2);
316
+ $$renderer2.push(`<!----></span>`);
317
+ } else if (rendersNativeDateIcon()) {
318
+ $$renderer2.push("<!--[1-->");
319
+ $$renderer2.push(`<span class="cinder-input-group__trailing cinder-input-group__date-icon cinder-_truncate" aria-hidden="true">`);
320
+ calendarIcon($$renderer2);
321
+ $$renderer2.push(`<!----></span>`);
322
+ } else {
323
+ $$renderer2.push("<!--[-1-->");
324
+ }
325
+ $$renderer2.push(`<!--]--></div>`);
326
+ } else {
327
+ $$renderer2.push("<!--[-1-->");
328
+ inputElement($$renderer2);
329
+ }
330
+ $$renderer2.push(`<!--]--> `);
331
+ if (description) {
332
+ $$renderer2.push("<!--[0-->");
333
+ $$renderer2.push(`<p${$2.attr("id", ownDescriptionId())} class="cinder-input-field__description">${$2.escape(description)}</p>`);
334
+ } else {
335
+ $$renderer2.push("<!--[-1-->");
336
+ }
337
+ $$renderer2.push(`<!--]--> `);
338
+ if (error) {
339
+ $$renderer2.push("<!--[0-->");
340
+ $$renderer2.push(`<p${$2.attr("id", ownErrorId())} class="cinder-input-field__error" aria-live="polite">${$2.escape(error)}</p>`);
341
+ } else {
342
+ $$renderer2.push("<!--[-1-->");
343
+ }
344
+ $$renderer2.push(`<!--]--></div>`);
345
+ $2.bind_props($$props, { value });
346
+ });
347
+ }
348
+
349
+ // src/components/number-input/number-input.svelte
350
+ import * as $3 from "svelte/internal/server";
351
+ import { untrack } from "svelte";
352
+
353
+ // src/_internal/locale-context.ts
354
+ import { createContext as createContext2 } from "svelte";
355
+ var [getLocaleContextStrict, setLocaleContextRaw] = createContext2();
356
+ function setLocaleContext(context) {
357
+ setLocaleContextRaw(context);
358
+ }
359
+ var getLocaleContext = optionalContext(getLocaleContextStrict);
360
+
361
+ // src/utilities/format-number.ts
362
+ function formatNumber(value, locale = "en-US", options) {
363
+ return new Intl.NumberFormat(locale, options).format(value);
364
+ }
365
+
366
+ // src/utilities/parse-locale-number.ts
367
+ function escapeRegex(s) {
368
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
369
+ }
370
+ function parseLocaleNumber(text, locale, format) {
371
+ if (text.trim() === "")
372
+ return { value: null, status: "empty" };
373
+ let working = text;
374
+ const digitFormatter = new Intl.NumberFormat(locale, {
375
+ useGrouping: false,
376
+ maximumFractionDigits: 0
377
+ });
378
+ for (let d = 0;d <= 9; d++) {
379
+ const glyph = digitFormatter.format(d);
380
+ if (glyph !== String(d)) {
381
+ working = working.split(glyph).join(String(d));
382
+ }
383
+ }
384
+ const sepParts = new Intl.NumberFormat(locale, {
385
+ useGrouping: true,
386
+ minimumFractionDigits: 1,
387
+ maximumFractionDigits: 1
388
+ }).formatToParts(-12345.6);
389
+ const groupSep = sepParts.find((p) => p.type === "group")?.value ?? "";
390
+ const decimalSep = sepParts.find((p) => p.type === "decimal")?.value ?? ".";
391
+ working = working.replace(/[؜‎‏‪-‮⁦-⁩]/g, "");
392
+ const localeMinus = sepParts.find((p) => p.type === "minusSign")?.value ?? "-";
393
+ if (localeMinus !== "-") {
394
+ working = working.split(localeMinus).join("-");
395
+ }
396
+ let isNegativeByFormatAffix = false;
397
+ if (format) {
398
+ const positiveAffixValues = new Set(new Intl.NumberFormat(locale, format).formatToParts(0).filter((part) => part.type === "currency" || part.type === "percentSign" || part.type === "literal" || part.type === "unit" || part.type === "compact").map((part) => part.value));
399
+ const negativeParts = new Intl.NumberFormat(locale, format).formatToParts(-1);
400
+ const negativeOnlyAffixes = negativeParts.filter((part) => (part.type === "currency" || part.type === "percentSign" || part.type === "literal" || part.type === "unit" || part.type === "compact") && part.value.trim() !== "" && !positiveAffixValues.has(part.value)).map((part) => part.value);
401
+ isNegativeByFormatAffix = negativeOnlyAffixes.length > 0 && negativeOnlyAffixes.every((part) => working.includes(part));
402
+ const stripSamples = [0, -1];
403
+ for (const sample of stripSamples) {
404
+ const parts = new Intl.NumberFormat(locale, format).formatToParts(sample);
405
+ for (const part of parts) {
406
+ if (part.type === "currency" || part.type === "percentSign" || part.type === "literal" || part.type === "unit" || part.type === "compact") {
407
+ if (part.value)
408
+ working = working.split(part.value).join("");
409
+ }
410
+ }
411
+ }
412
+ }
413
+ if (isNegativeByFormatAffix && !/^[+-]/.test(working)) {
414
+ working = "-" + working;
415
+ }
416
+ working = working.split("%").join("");
417
+ working = working.replace(/^[\s ]+|[\s ]+$/g, "");
418
+ if (working === "")
419
+ return { value: null, status: "empty" };
420
+ const decimalSplit = working.split(decimalSep);
421
+ if (decimalSplit.length > 2)
422
+ return { value: null, status: "malformed" };
423
+ const integerPart = decimalSplit[0] ?? "";
424
+ const fractionPart = decimalSplit[1];
425
+ if (groupSep && integerPart.includes(groupSep)) {
426
+ const probeParts = new Intl.NumberFormat(locale, {
427
+ useGrouping: true
428
+ }).formatToParts(12345678);
429
+ const integerRuns = [];
430
+ for (const p of probeParts) {
431
+ if (p.type === "integer")
432
+ integerRuns.push(p.value);
433
+ }
434
+ const primary = integerRuns.length > 0 ? (integerRuns[integerRuns.length - 1] ?? "").length : 3;
435
+ const secondary = integerRuns.length > 1 ? (integerRuns[integerRuns.length - 2] ?? "").length : primary;
436
+ const groupEsc = escapeRegex(groupSep);
437
+ const grouped = new RegExp(`^[+-]?\\d{1,${secondary}}(${groupEsc}\\d{${secondary}})*${groupEsc}\\d{${primary}}$`);
438
+ if (!grouped.test(integerPart))
439
+ return { value: null, status: "malformed" };
440
+ }
441
+ let normalized = groupSep.length > 0 ? integerPart.split(groupSep).join("") : integerPart;
442
+ if (fractionPart !== undefined)
443
+ normalized += "." + fractionPart;
444
+ if (!/^[+-]?(\d+\.?\d*|\.\d+)$/.test(normalized)) {
445
+ return { value: null, status: "malformed" };
446
+ }
447
+ const parsed = parseFloat(normalized);
448
+ if (!Number.isFinite(parsed))
449
+ return { value: null, status: "malformed" };
450
+ return { value: parsed, status: "valid" };
451
+ }
452
+
453
+ // src/components/number-input/number-input.svelte
454
+ function Number_input($$renderer, $$props) {
455
+ $$renderer.component(($$renderer2) => {
456
+ let {
457
+ id,
458
+ defaultValue = null,
459
+ value = null,
460
+ min,
461
+ max,
462
+ step,
463
+ format,
464
+ locale,
465
+ disabled,
466
+ required,
467
+ name,
468
+ label,
469
+ description,
470
+ error,
471
+ class: className,
472
+ onchange,
473
+ onblur: consumerBlur,
474
+ "aria-describedby": consumerDescribedBy,
475
+ $$slots,
476
+ $$events,
477
+ ...rest
478
+ } = $$props;
479
+ const context = getFormFieldContext();
480
+ const localeContext = getLocaleContext();
481
+ let editorBuffer = "";
482
+ let isFocused = false;
483
+ let hasMounted = false;
484
+ let inputElement = undefined;
485
+ let malformedError = false;
486
+ let requiredEmptyError = false;
487
+ untrack(() => {
488
+ if (value === null && defaultValue !== null) {
489
+ value = defaultValue;
490
+ }
491
+ });
492
+ const resolvedLocale = $3.derived(() => locale ?? localeContext?.locale ?? (hasMounted ? navigator.language : "en-US"));
493
+ const resolvedMin = $3.derived(() => typeof min === "number" && Number.isFinite(min) ? min : -Infinity);
494
+ const resolvedMax = $3.derived(() => typeof max === "number" && Number.isFinite(max) ? max : Infinity);
495
+ const isValidStep = (s) => typeof s === "number" && Number.isFinite(s) && s > 0;
496
+ const incrementStep = $3.derived(() => isValidStep(step) ? step : 1);
497
+ const snapStep = $3.derived(() => isValidStep(step) ? step : null);
498
+ const resolvedRequired = $3.derived(() => required ?? context?.required ?? false);
499
+ const resolvedDisabled = $3.derived(() => disabled ?? context?.disabled ?? false);
500
+ function roundToPrecision(n, digits) {
501
+ return Number(n.toFixed(Math.min(digits, 12)));
502
+ }
503
+ function fractionalDigits(n) {
504
+ if (!Number.isFinite(n))
505
+ return 0;
506
+ const s = String(n);
507
+ if (s.includes("e") || s.includes("E")) {
508
+ const parts = s.toLowerCase().split("e");
509
+ const mantissa = parts[0] ?? "";
510
+ const expStr = parts[1] ?? "0";
511
+ const exp = Number(expStr);
512
+ const fracOfMantissa = mantissa.split(".")[1]?.length ?? 0;
513
+ return Math.max(0, fracOfMantissa - exp);
514
+ }
515
+ return s.split(".")[1]?.length ?? 0;
516
+ }
517
+ function commit(next, parseStatus, emitChange) {
518
+ const nextMalformed = !resolvedDisabled() && parseStatus === "malformed";
519
+ const nextRequiredEmpty = !resolvedDisabled() && !nextMalformed && resolvedRequired() && next === null;
520
+ if (inputElement) {
521
+ if (nextMalformed) {
522
+ inputElement.setCustomValidity("Please enter a valid number.");
523
+ } else if (nextRequiredEmpty) {
524
+ inputElement.setCustomValidity("Please enter a number.");
525
+ } else {
526
+ inputElement.setCustomValidity("");
527
+ }
528
+ }
529
+ malformedError = nextMalformed;
530
+ requiredEmptyError = nextRequiredEmpty;
531
+ if (!Object.is(next, value)) {
532
+ isInternalValueChange = true;
533
+ value = next;
534
+ }
535
+ if (emitChange) {
536
+ onchange?.(next);
537
+ }
538
+ return next;
539
+ }
540
+ function commitFromNumber(source, raw, parseStatus = "valid") {
541
+ if (raw === null)
542
+ return commit(null, parseStatus, true);
543
+ if (!Number.isFinite(raw))
544
+ return commit(null, "malformed", true);
545
+ let result = raw;
546
+ if (source === "typed" && snapStep() !== null) {
547
+ const origin = Number.isFinite(resolvedMin()) ? resolvedMin() : 0;
548
+ result = origin + Math.round((raw - origin) / snapStep()) * snapStep();
549
+ result = roundToPrecision(result, fractionalDigits(snapStep()));
550
+ } else if (source === "delta" && snapStep() !== null) {
551
+ const cleanRaw = roundToPrecision(raw, 12);
552
+ result = roundToPrecision(raw, Math.max(fractionalDigits(snapStep()), fractionalDigits(cleanRaw)));
553
+ }
554
+ const clamped = Math.min(resolvedMax(), Math.max(resolvedMin(), result));
555
+ return commit(clamped, parseStatus, true);
556
+ }
557
+ function commitFromText(source, text) {
558
+ const result = parseLocaleNumber(text, resolvedLocale(), format);
559
+ if (result.status !== "valid") {
560
+ return commit(null, result.status, true);
561
+ }
562
+ const canonical = format?.style === "percent" ? roundToPrecision(result.value / 100, Math.max(2, fractionalDigits(result.value) + 2)) : result.value;
563
+ return commitFromNumber(source, canonical, "valid");
564
+ }
565
+ let isInternalValueChange = false;
566
+ let enterKeyFlushed = false;
567
+ const displayValue = $3.derived(() => isFocused ? editorBuffer : malformedError ? editorBuffer : value === null || value === undefined ? "" : formatNumber(value, resolvedLocale(), format));
568
+ const parentValueSignature = $3.derived(() => `${value ?? ""}|${resolvedLocale()}|${JSON.stringify(format ?? null)}`);
569
+ let lastSeenParentSignature = untrack(() => parentValueSignature());
570
+ function buildEditDisplay(v) {
571
+ const editFormat = {
572
+ ...format,
573
+ style: "decimal",
574
+ useGrouping: false,
575
+ currency: undefined,
576
+ currencyDisplay: undefined,
577
+ notation: "standard",
578
+ compactDisplay: undefined
579
+ };
580
+ if (format?.style === "percent") {
581
+ const asPercent = roundToPrecision(v * 100, 12);
582
+ return formatNumber(asPercent, resolvedLocale(), editFormat);
583
+ }
584
+ return formatNumber(v, resolvedLocale(), editFormat);
585
+ }
586
+ function ariaValueNowFromText(text) {
587
+ const result = parseLocaleNumber(text, resolvedLocale(), format);
588
+ if (result.status !== "valid")
589
+ return;
590
+ return Number.isFinite(result.value) ? result.value : undefined;
591
+ }
592
+ const resolvedAriaValueNow = $3.derived(() => isFocused ? ariaValueNowFromText(editorBuffer) : value === null || value === undefined ? undefined : format?.style === "percent" ? roundToPrecision(value * 100, 12) : value);
593
+ const resolvedAriaValueMin = $3.derived(() => Number.isFinite(resolvedMin()) ? format?.style === "percent" ? roundToPrecision(resolvedMin() * 100, 12) : resolvedMin() : undefined);
594
+ const resolvedAriaValueMax = $3.derived(() => Number.isFinite(resolvedMax()) ? format?.style === "percent" ? roundToPrecision(resolvedMax() * 100, 12) : resolvedMax() : undefined);
595
+ function onFocus() {
596
+ if (!malformedError) {
597
+ editorBuffer = value === null || value === undefined ? "" : buildEditDisplay(value);
598
+ }
599
+ isFocused = true;
600
+ }
601
+ function onBlur(event) {
602
+ const buffered = editorBuffer;
603
+ isFocused = false;
604
+ commitFromText("typed", buffered);
605
+ consumerBlur?.(event);
606
+ }
607
+ function onInput(event) {
608
+ editorBuffer = event.currentTarget.value;
609
+ if (malformedError) {
610
+ malformedError = false;
611
+ inputElement?.setCustomValidity("");
612
+ }
613
+ }
614
+ function getBaseForStep(direction) {
615
+ const parsed = isFocused ? parseLocaleNumber(editorBuffer, resolvedLocale(), format) : null;
616
+ let baseFromDisplay = null;
617
+ if (parsed && parsed.status === "valid") {
618
+ baseFromDisplay = format?.style === "percent" ? roundToPrecision(parsed.value / 100, Math.max(2, fractionalDigits(parsed.value) + 2)) : parsed.value;
619
+ }
620
+ const defaultStart = direction === "increment" ? Number.isFinite(resolvedMin()) ? resolvedMin() : 0 : Number.isFinite(resolvedMax()) ? resolvedMax() : 0;
621
+ return baseFromDisplay ?? value ?? defaultStart;
622
+ }
623
+ function stepBy(direction, multiplier = 1) {
624
+ const base = getBaseForStep(direction);
625
+ const delta = incrementStep() * multiplier * (direction === "increment" ? 1 : -1);
626
+ const next = commitFromNumber("delta", base + delta);
627
+ if (isFocused) {
628
+ editorBuffer = next === null ? "" : buildEditDisplay(next);
629
+ }
630
+ inputElement?.focus();
631
+ }
632
+ function onKeyDown(event) {
633
+ if (resolvedDisabled())
634
+ return;
635
+ switch (event.key) {
636
+ case "ArrowUp":
637
+ event.preventDefault();
638
+ stepBy("increment");
639
+ break;
640
+ case "ArrowDown":
641
+ event.preventDefault();
642
+ stepBy("decrement");
643
+ break;
644
+ case "PageUp":
645
+ event.preventDefault();
646
+ stepBy("increment", 10);
647
+ break;
648
+ case "PageDown":
649
+ event.preventDefault();
650
+ stepBy("decrement", 10);
651
+ break;
652
+ case "Home":
653
+ if (Number.isFinite(resolvedMin())) {
654
+ event.preventDefault();
655
+ const homeNext = commitFromNumber("delta", resolvedMin());
656
+ if (isFocused)
657
+ editorBuffer = homeNext === null ? "" : buildEditDisplay(homeNext);
658
+ }
659
+ break;
660
+ case "End":
661
+ if (Number.isFinite(resolvedMax())) {
662
+ event.preventDefault();
663
+ const endNext = commitFromNumber("delta", resolvedMax());
664
+ if (isFocused)
665
+ editorBuffer = endNext === null ? "" : buildEditDisplay(endNext);
666
+ }
667
+ break;
668
+ case "Enter": {
669
+ event.preventDefault();
670
+ commitFromText("typed", isFocused ? editorBuffer : "");
671
+ const form = inputElement?.closest("form");
672
+ if (form) {
673
+ if (form.checkValidity()) {
674
+ enterKeyFlushed = true;
675
+ form.requestSubmit();
676
+ } else {
677
+ form.reportValidity();
678
+ }
679
+ }
680
+ break;
681
+ }
682
+ }
683
+ }
684
+ const internalErrorMessage = $3.derived(() => !error && malformedError ? "Please enter a valid number." : !error && requiredEmptyError ? "Please enter a number." : null);
685
+ const internalErrorId = $3.derived(() => internalErrorMessage() ? `${id}-internal-error` : undefined);
686
+ const internalInvalid = $3.derived(() => malformedError || requiredEmptyError ? "true" : undefined);
687
+ const field = $3.derived(() => resolveFieldControl({
688
+ id,
689
+ generatedId: id,
690
+ context,
691
+ hasDescription: !!description,
692
+ hasError: !!error,
693
+ localIdNamespace: "number-input",
694
+ consumerDescribedBy,
695
+ consumerInvalid: internalInvalid() ?? rest["aria-invalid"],
696
+ additionalDescribedBy: [internalErrorId()],
697
+ required,
698
+ disabled
699
+ }));
700
+ const ownDescriptionId = $3.derived(() => field().ownDescriptionId);
701
+ const ownErrorId = $3.derived(() => field().ownErrorId);
702
+ const describedBy = $3.derived(() => field().describedBy);
703
+ const resolvedAriaInvalid = $3.derived(() => field().ariaInvalid);
704
+ const incrementDisabled = $3.derived(() => resolvedDisabled() || value !== null && value !== undefined && value >= resolvedMax());
705
+ const decrementDisabled = $3.derived(() => resolvedDisabled() || value !== null && value !== undefined && value <= resolvedMin());
706
+ const showHiddenInput = $3.derived(() => typeof name === "string" && name.length > 0 && !resolvedDisabled());
707
+ const stepperLabelSuffix = $3.derived(() => label ? ` ${label} by ${incrementStep()}` : ` by ${incrementStep()}`);
708
+ $$renderer2.push(`<div${$3.attr_class($3.clsx(classNames("cinder-input-field", className)))}>`);
709
+ if (label) {
710
+ $$renderer2.push("<!--[0-->");
711
+ $$renderer2.push(`<label${$3.attr("for", id)} class="cinder-input-field__label"${$3.attr("data-disabled", resolvedDisabled() || undefined)}>${$3.escape(label)} `);
712
+ if (resolvedRequired()) {
713
+ $$renderer2.push("<!--[0-->");
714
+ $$renderer2.push(`<span class="cinder-_required-marker" aria-hidden="true">*</span>`);
715
+ } else {
716
+ $$renderer2.push("<!--[-1-->");
717
+ }
718
+ $$renderer2.push(`<!--]--></label>`);
719
+ } else {
720
+ $$renderer2.push("<!--[-1-->");
721
+ }
722
+ $$renderer2.push(`<!--]--> <div class="cinder-number-input"${$3.attr("data-disabled", resolvedDisabled() ? "" : undefined)}><input${$3.attributes({
723
+ id,
724
+ type: "text",
725
+ role: "spinbutton",
726
+ inputmode: "decimal",
727
+ value: displayValue(),
728
+ disabled: resolvedDisabled(),
729
+ required: resolvedRequired(),
730
+ class: "cinder-input cinder-number-input__input",
731
+ ...rest,
732
+ "aria-invalid": resolvedAriaInvalid(),
733
+ "aria-describedby": describedBy(),
734
+ "aria-valuenow": resolvedAriaValueNow(),
735
+ "aria-valuemin": resolvedAriaValueMin(),
736
+ "aria-valuemax": resolvedAriaValueMax()
737
+ }, undefined, undefined, undefined, 4)}/> <button type="button" class="cinder-number-input__stepper cinder-number-input__stepper--increment"${$3.attr("aria-label", `Increment${stepperLabelSuffix()}`)}${$3.attr("disabled", incrementDisabled(), true)} tabindex="-1"><span aria-hidden="true">+</span></button> <button type="button" class="cinder-number-input__stepper cinder-number-input__stepper--decrement"${$3.attr("aria-label", `Decrement${stepperLabelSuffix()}`)}${$3.attr("disabled", decrementDisabled(), true)} tabindex="-1"><span aria-hidden="true">−</span></button></div> `);
738
+ if (showHiddenInput()) {
739
+ $$renderer2.push("<!--[0-->");
740
+ $$renderer2.push(`<input type="hidden"${$3.attr("name", name)}${$3.attr("value", value === null || value === undefined ? "" : String(value))}/>`);
741
+ } else {
742
+ $$renderer2.push("<!--[-1-->");
743
+ }
744
+ $$renderer2.push(`<!--]--> `);
745
+ if (description) {
746
+ $$renderer2.push("<!--[0-->");
747
+ $$renderer2.push(`<p${$3.attr("id", ownDescriptionId())} class="cinder-input-field__description">${$3.escape(description)}</p>`);
748
+ } else {
749
+ $$renderer2.push("<!--[-1-->");
750
+ }
751
+ $$renderer2.push(`<!--]--> `);
752
+ if (error) {
753
+ $$renderer2.push("<!--[0-->");
754
+ $$renderer2.push(`<p${$3.attr("id", ownErrorId())} class="cinder-input-field__error" aria-live="polite">${$3.escape(error)}</p>`);
755
+ } else if (internalErrorMessage()) {
756
+ $$renderer2.push("<!--[1-->");
757
+ $$renderer2.push(`<p${$3.attr("id", internalErrorId())} class="cinder-input-field__error" aria-live="polite">${$3.escape(internalErrorMessage())}</p>`);
758
+ } else {
759
+ $$renderer2.push("<!--[-1-->");
760
+ }
761
+ $$renderer2.push(`<!--]--></div>`);
762
+ $3.bind_props($$props, { value });
763
+ });
764
+ }
765
+
766
+ // src/components/select/select.svelte
767
+ import * as $4 from "svelte/internal/server";
768
+ function Select($$renderer, $$props) {
769
+ $$renderer.component(($$renderer2) => {
770
+ let {
771
+ id,
772
+ value = undefined,
773
+ options,
774
+ label,
775
+ description,
776
+ error,
777
+ required,
778
+ disabled,
779
+ class: className,
780
+ "aria-describedby": consumerDescribedBy,
781
+ "aria-invalid": consumerInvalid,
782
+ $$slots,
783
+ $$events,
784
+ ...rest
785
+ } = $$props;
786
+ const context = getFormFieldContext();
787
+ const field = $4.derived(() => resolveFieldControl({
788
+ id,
789
+ generatedId: id,
790
+ context,
791
+ hasDescription: !!description,
792
+ hasError: !!error,
793
+ localIdNamespace: "select",
794
+ consumerDescribedBy,
795
+ consumerInvalid,
796
+ required,
797
+ disabled
798
+ }));
799
+ const stableLocalErrorId = $4.derived(() => context?.errorId === `${field().id}-error` ? `${field().id}-select-error` : `${field().id}-error`);
800
+ $$renderer2.push(`<div${$4.attr_class($4.clsx(classNames("cinder-select-field", className)))}>`);
801
+ if (label) {
802
+ $$renderer2.push("<!--[0-->");
803
+ $$renderer2.push(`<label${$4.attr("for", id)} class="cinder-select-field__label"${$4.attr("data-disabled", field().disabled || undefined)}>${$4.escape(label)} `);
804
+ if (field().required) {
805
+ $$renderer2.push("<!--[0-->");
806
+ $$renderer2.push(`<span class="cinder-_required-marker" aria-hidden="true">*</span>`);
807
+ } else {
808
+ $$renderer2.push("<!--[-1-->");
809
+ }
810
+ $$renderer2.push(`<!--]--></label>`);
811
+ } else {
812
+ $$renderer2.push("<!--[-1-->");
813
+ }
814
+ $$renderer2.push(`<!--]--> <span class="cinder-select-field__control">`);
815
+ if (options.length === 0) {
816
+ $$renderer2.push("<!--[0-->");
817
+ $$renderer2.select({
818
+ id,
819
+ class: "cinder-_input-frame cinder-select",
820
+ disabled: field().disabled,
821
+ required: field().required,
822
+ "data-cinder-empty": "true",
823
+ ...rest,
824
+ "aria-describedby": field().describedBy,
825
+ "aria-invalid": field().ariaInvalid
826
+ }, ($$renderer3) => {});
827
+ } else {
828
+ $$renderer2.push("<!--[-1-->");
829
+ $$renderer2.select({
830
+ id,
831
+ class: "cinder-_input-frame cinder-select",
832
+ disabled: field().disabled,
833
+ required: field().required,
834
+ value,
835
+ ...rest,
836
+ "aria-describedby": field().describedBy,
837
+ "aria-invalid": field().ariaInvalid
838
+ }, ($$renderer3) => {
839
+ $$renderer3.push(`<!--[-->`);
840
+ const each_array = $4.ensure_array_like(options);
841
+ for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
842
+ let option = each_array[$$index];
843
+ $$renderer3.option({ value: option.value, disabled: option.disabled }, ($$renderer4) => {
844
+ $$renderer4.push(`${$4.escape(option.label)}`);
845
+ });
846
+ }
847
+ $$renderer3.push(`<!--]-->`);
848
+ });
849
+ }
850
+ $$renderer2.push(`<!--]--> <span class="cinder-select-field__chevron" aria-hidden="true"></span></span> `);
851
+ if (description) {
852
+ $$renderer2.push("<!--[0-->");
853
+ $$renderer2.push(`<p${$4.attr("id", field().ownDescriptionId)} class="cinder-select-field__description">${$4.escape(description)}</p>`);
854
+ } else {
855
+ $$renderer2.push("<!--[-1-->");
856
+ }
857
+ $$renderer2.push(`<!--]--> <p${$4.attr("id", field().ownErrorId ?? stableLocalErrorId())} class="cinder-select-field__error" aria-live="polite"${$4.attr("data-cinder-error", !!error || undefined)}>${$4.escape(error ?? "")}</p></div>`);
858
+ $4.bind_props($$props, { value });
859
+ });
860
+ }
861
+
862
+ // src/components/textarea/textarea.svelte
863
+ import * as $5 from "svelte/internal/server";
864
+
865
+ // src/components/textarea-count.ts
866
+ function resolveMaximumLength(value) {
867
+ if (typeof value === "number") {
868
+ return Number.isSafeInteger(value) && value >= 0 ? value : undefined;
869
+ }
870
+ if (typeof value === "string") {
871
+ const trimmed = value.trim();
872
+ if (!/^\d+$/.test(trimmed))
873
+ return;
874
+ const parsed = Number(trimmed);
875
+ return parsed >= 0 && Number.isSafeInteger(parsed) ? parsed : undefined;
876
+ }
877
+ return;
878
+ }
879
+
880
+ // src/components/textarea/textarea.svelte
881
+ function Textarea($$renderer, $$props) {
882
+ $$renderer.component(($$renderer2) => {
883
+ let {
884
+ id,
885
+ value = "",
886
+ label,
887
+ description,
888
+ error,
889
+ rows = 4,
890
+ disabled,
891
+ required,
892
+ class: customClassName,
893
+ maxlength,
894
+ showCount = false,
895
+ "aria-describedby": consumerDescribedBy,
896
+ "aria-invalid": consumerInvalid,
897
+ $$slots,
898
+ $$events,
899
+ ...rest
900
+ } = $$props;
901
+ const context = getFormFieldContext();
902
+ const maximumLength = $5.derived(() => resolveMaximumLength(maxlength));
903
+ const countId = $5.derived(() => showCount && maximumLength() !== undefined ? `${id}-count` : undefined);
904
+ const currentCount = $5.derived(() => value?.length ?? 0);
905
+ const ownRequired = $5.derived(() => required ?? undefined);
906
+ const field = $5.derived(() => resolveFieldControl({
907
+ id,
908
+ generatedId: id,
909
+ context,
910
+ hasDescription: !!description,
911
+ hasError: !!error,
912
+ localIdNamespace: "textarea",
913
+ consumerDescribedBy,
914
+ consumerInvalid,
915
+ additionalDescribedBy: [countId()],
916
+ required: ownRequired(),
917
+ disabled
918
+ }));
919
+ $$renderer2.push(`<div class="cinder-textarea-field">`);
920
+ if (label) {
921
+ $$renderer2.push("<!--[0-->");
922
+ $$renderer2.push(`<label${$5.attr("for", id)} class="cinder-textarea-label"${$5.attr("data-disabled", field().disabled || undefined)}>${$5.escape(label)} `);
923
+ if (field().required) {
924
+ $$renderer2.push("<!--[0-->");
925
+ $$renderer2.push(`<span class="cinder-_required-marker" aria-hidden="true">*</span>`);
926
+ } else {
927
+ $$renderer2.push("<!--[-1-->");
928
+ }
929
+ $$renderer2.push(`<!--]--></label>`);
930
+ } else {
931
+ $$renderer2.push("<!--[-1-->");
932
+ }
933
+ $$renderer2.push(`<!--]--> <textarea${$5.attributes({
934
+ id,
935
+ rows,
936
+ disabled: field().disabled,
937
+ required: field().required,
938
+ maxlength,
939
+ class: $5.clsx(classNames("cinder-_input-frame", "cinder-textarea", customClassName)),
940
+ "aria-invalid": field().ariaInvalid,
941
+ "aria-describedby": field().describedBy,
942
+ ...rest
943
+ })}>`);
944
+ const $$body = $5.escape(value);
945
+ if ($$body) {
946
+ $$renderer2.push(`${$$body}`);
947
+ } else {}
948
+ $$renderer2.push(`</textarea> `);
949
+ if (description) {
950
+ $$renderer2.push("<!--[0-->");
951
+ $$renderer2.push(`<p${$5.attr("id", field().ownDescriptionId)} class="cinder-textarea-description">${$5.escape(description)}</p>`);
952
+ } else {
953
+ $$renderer2.push("<!--[-1-->");
954
+ }
955
+ $$renderer2.push(`<!--]--> `);
956
+ if (countId()) {
957
+ $$renderer2.push("<!--[0-->");
958
+ $$renderer2.push(`<output${$5.attr("id", countId())}${$5.attr("for", id)} class="cinder-textarea-count" aria-live="polite" aria-atomic="true">${$5.escape(currentCount())}/${$5.escape(maximumLength())}</output>`);
959
+ } else {
960
+ $$renderer2.push("<!--[-1-->");
961
+ }
962
+ $$renderer2.push(`<!--]--> `);
963
+ if (error) {
964
+ $$renderer2.push("<!--[0-->");
965
+ $$renderer2.push(`<p${$5.attr("id", field().ownErrorId)} class="cinder-textarea-error" aria-live="polite">${$5.escape(error)}</p>`);
966
+ } else {
967
+ $$renderer2.push("<!--[-1-->");
968
+ }
969
+ $$renderer2.push(`<!--]--></div>`);
970
+ $5.bind_props($$props, { value });
971
+ });
972
+ }
973
+
974
+ // src/components/schema-form/schema-form-model.ts
975
+ function isRecord(value) {
976
+ return value !== null && typeof value === "object" && !Array.isArray(value);
977
+ }
978
+ function createSchemaFormModel(schema) {
46
979
  return {
47
- title: "Value",
48
- description: "This schema cannot be inspected, so the value is edited as JSON."
980
+ field: fieldFromJsonSchema(schema, [], "value", true),
981
+ sourceSchema: schema
49
982
  };
50
983
  }
51
984
  function fieldFromJsonSchema(schema, path, key, required) {
@@ -176,6 +1109,35 @@ function defaultValueForField(field) {
176
1109
  return null;
177
1110
  return;
178
1111
  }
1112
+ function initialValueForField(field, value) {
1113
+ if (value === undefined)
1114
+ return defaultValueForField(field);
1115
+ const clonedValue = cloneJsonCompatible(value);
1116
+ if (clonedValue === undefined)
1117
+ return defaultValueForField(field);
1118
+ return mergeInitialValueWithFieldDefaults(field, clonedValue);
1119
+ }
1120
+ function mergeInitialValueWithFieldDefaults(field, value) {
1121
+ if (field.kind === "object" && isRecord(value)) {
1122
+ const defaultValue = defaultValueForField(field);
1123
+ const defaultRecord = isRecord(defaultValue) ? defaultValue : {};
1124
+ const result = { ...defaultRecord };
1125
+ const fieldKeys = new Set(field.fields.map((child) => child.key));
1126
+ for (const child of field.fields) {
1127
+ const seededValue = Object.hasOwn(value, child.key) ? value[child.key] : defaultRecord[child.key];
1128
+ result[child.key] = seededValue === undefined ? defaultValueForField(child) : mergeInitialValueWithFieldDefaults(child, seededValue);
1129
+ }
1130
+ for (const [key, extraValue] of Object.entries(value)) {
1131
+ if (!fieldKeys.has(key))
1132
+ result[key] = extraValue;
1133
+ }
1134
+ return result;
1135
+ }
1136
+ if (field.kind === "array" && Array.isArray(value) && field.item) {
1137
+ return value.map((item) => mergeInitialValueWithFieldDefaults(field.item, item));
1138
+ }
1139
+ return value;
1140
+ }
179
1141
  function cloneJsonCompatible(value) {
180
1142
  if (value === undefined)
181
1143
  return;
@@ -280,39 +1242,74 @@ function rebaseFieldPath(field, path) {
280
1242
  // src/components/schema-form/schema-form-validation.ts
281
1243
  var validatorCache = new WeakMap;
282
1244
  async function validateSchemaValue(schema, value) {
283
- if (isStandardSchema(schema))
284
- return validateStandardSchemaValue(schema, value);
1245
+ if (!isRecord(schema)) {
1246
+ return validationFailure(value, "SchemaForm only accepts JSON Schema objects.");
1247
+ }
1248
+ if (isLegacyStandardSchema(schema)) {
1249
+ return validationFailure(value, "SchemaForm only accepts JSON Schema objects.");
1250
+ }
285
1251
  return validateJsonSchemaValue(schema, value);
286
1252
  }
287
- async function validateStandardSchemaValue(schema, value) {
288
- const result = await schema["~standard"].validate(value);
289
- if (!result.issues)
290
- return { valid: true, value: result.value, issues: [] };
1253
+ async function validateJsonSchemaValue(schema, value) {
1254
+ let validate;
1255
+ try {
1256
+ validate = await validatorForSchema(schema);
1257
+ } catch (error) {
1258
+ return validationFailure(value, readableSchemaError(error));
1259
+ }
1260
+ let valid;
1261
+ try {
1262
+ const result = validate(value);
1263
+ valid = isPromiseLike(result) ? (await result, true) : result;
1264
+ } catch (error) {
1265
+ if (isAjvValidationError(error)) {
1266
+ return {
1267
+ valid: false,
1268
+ value,
1269
+ issues: ajvIssues(error.errors)
1270
+ };
1271
+ }
1272
+ return validationFailure(value, readableSchemaError(error));
1273
+ }
1274
+ if (valid)
1275
+ return { valid: true, value, issues: [] };
291
1276
  return {
292
1277
  valid: false,
293
1278
  value,
294
- issues: result.issues.map((issue) => ({
295
- path: standardIssuePath(issue.path),
296
- message: issue.message
297
- }))
1279
+ issues: ajvIssues(validate.errors ?? [])
298
1280
  };
299
1281
  }
300
- async function validateJsonSchemaValue(schema, value) {
301
- const validate = await validatorForSchema(schema);
302
- const valid = validate(value);
303
- if (valid)
304
- return { valid: true, value, issues: [] };
1282
+ function validationFailure(value, message) {
305
1283
  return {
306
1284
  valid: false,
307
1285
  value,
308
- issues: ajvIssues(validate.errors ?? [])
1286
+ issues: [{ path: [], message }]
309
1287
  };
310
1288
  }
1289
+ function isLegacyStandardSchema(schema) {
1290
+ const standard = schema["~standard"];
1291
+ return isRecord(standard) && standard["version"] === 1;
1292
+ }
1293
+ function readableSchemaError(error) {
1294
+ const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
1295
+ if (message.startsWith("Invalid JSON Schema"))
1296
+ return message;
1297
+ return message === "" ? "Invalid JSON Schema." : `Invalid JSON Schema: ${message}`;
1298
+ }
1299
+ function isPromiseLike(value) {
1300
+ return isRecord(value) && typeof value["then"] === "function";
1301
+ }
1302
+ function isAjvValidationError(error) {
1303
+ return isRecord(error) && Array.isArray(error["errors"]);
1304
+ }
311
1305
  function validatorForSchema(schema) {
312
1306
  const cached = validatorCache.get(schema);
313
1307
  if (cached)
314
1308
  return cached;
315
- const promise = createValidator(schema);
1309
+ const promise = createValidator(schema).catch((error) => {
1310
+ validatorCache.delete(schema);
1311
+ throw error;
1312
+ });
316
1313
  validatorCache.set(schema, promise);
317
1314
  return promise;
318
1315
  }
@@ -339,37 +1336,32 @@ function jsonSchemaDraft(schema) {
339
1336
  return "2019-09";
340
1337
  return "2020-12";
341
1338
  }
342
- function standardIssuePath(path) {
343
- if (!path)
344
- return [];
345
- return path.map((segment) => {
346
- if (isRecord(segment) && "key" in segment)
347
- return propertyKeyPathSegment(segment.key);
348
- return propertyKeyPathSegment(segment);
349
- });
350
- }
351
- function propertyKeyPathSegment(value) {
352
- if (typeof value === "string")
353
- return value;
354
- if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
355
- return String(value);
356
- }
357
- if (typeof value === "symbol")
358
- return value.description ?? value.toString();
359
- if (value === null || value === undefined)
360
- return "";
361
- try {
362
- return JSON.stringify(value) ?? "";
363
- } catch {
364
- return "";
365
- }
366
- }
367
1339
  function ajvIssues(errors) {
368
1340
  return errors.map((error) => ({
369
1341
  path: ajvErrorPath(error),
370
- message: error.message ?? "Invalid value"
1342
+ message: readableAjvMessage(error)
371
1343
  }));
372
1344
  }
1345
+ function readableAjvMessage(error) {
1346
+ const fieldName = ajvErrorPath(error).at(-1) ?? "Value";
1347
+ const label = humanizeFieldName(fieldName);
1348
+ if (error.keyword === "required")
1349
+ return `${label} is required.`;
1350
+ if (error.keyword === "minLength")
1351
+ return `${label} is too short.`;
1352
+ if (error.keyword === "maxLength")
1353
+ return `${label} is too long.`;
1354
+ if (error.keyword === "minimum")
1355
+ return `${label} must be at least ${error.params?.["limit"]}.`;
1356
+ if (error.keyword === "maximum")
1357
+ return `${label} must be at most ${error.params?.["limit"]}.`;
1358
+ if (error.keyword === "type")
1359
+ return `${label} must be ${error.params?.["type"]}.`;
1360
+ return error.message ?? "Invalid value";
1361
+ }
1362
+ function humanizeFieldName(name) {
1363
+ return name.replace(/[_-]+/g, " ").replace(/([a-z])([A-Z])/g, "$1 $2").replace(/^./, (character) => character.toUpperCase());
1364
+ }
373
1365
  function ajvErrorPath(error) {
374
1366
  const parentPath = jsonPointerToPath(error.instancePath);
375
1367
  if (error.keyword !== "required" || !isRecord(error.params))
@@ -440,20 +1432,10 @@ function readSchemaFormData(formData, name = "value") {
440
1432
  }
441
1433
  }
442
1434
 
443
- // src/components/schema-form/schema-form.svelte
444
- function fieldLabel2($$renderer, field) {
445
- $$renderer.push(`<span>${$.escape(field.label)}</span> `);
446
- if (field.required) {
447
- $$renderer.push("<!--[0-->");
448
- $$renderer.push(`<span class="cinder-schema-form__required" aria-hidden="true">*</span>`);
449
- } else {
450
- $$renderer.push("<!--[-1-->");
451
- }
452
- $$renderer.push(`<!--]-->`);
453
- }
454
- function Schema_form($$renderer, $$props) {
1435
+ // src/components/schema-form/schema-form-body.svelte
1436
+ function Schema_form_body($$renderer, $$props) {
455
1437
  $$renderer.component(($$renderer2) => {
456
- const generatedId = $.props_id($$renderer2);
1438
+ const generatedId = $6.props_id($$renderer2);
457
1439
  let {
458
1440
  schema,
459
1441
  value,
@@ -466,36 +1448,31 @@ function Schema_form($$renderer, $$props) {
466
1448
  $$events,
467
1449
  ...rest
468
1450
  } = $$props;
469
- const model = $.derived(() => createSchemaFormModel(schema));
1451
+ const initialModel = createSchemaFormModel(schema);
1452
+ const initialFormValue = initialValueForField(initialModel.field, value);
1453
+ const model = $6.derived(() => createSchemaFormModel(schema));
470
1454
  let formElement = undefined;
471
1455
  let serializedInputElement = undefined;
472
- let formValue = undefined;
1456
+ let formValue = initialFormValue;
473
1457
  let errors = {};
474
- let rawDrafts = {};
1458
+ let rawDrafts = seedRawDrafts(initialModel.field, initialFormValue);
1459
+ let touchedValidationSequences = {};
475
1460
  let serializedValue = "";
476
1461
  let submitting = false;
477
1462
  let allowNativeSubmit = false;
478
1463
  let activeSubmitId = 0;
479
1464
  let arrayKeyCounter = 0;
480
- let arrayKeys = {};
481
- const formId = $.derived(() => rest.id ?? `${generatedId}-form`);
482
- const rootFields = $.derived(() => model().field.kind === "object" ? model().field.fields : [model().field]);
483
- const rootError = $.derived(() => model().field.kind === "object" ? errors[pathKey([])] : undefined);
484
- const rootErrorId = $.derived(() => `${formId()}-${pathId([])}-error`);
1465
+ let arrayKeys = seedArrayKeys(initialModel.field, initialFormValue);
1466
+ const formId = $6.derived(() => rest.id ?? `${generatedId}-form`);
1467
+ const rootFields = $6.derived(() => model().field.kind === "object" ? model().field.fields : [model().field]);
1468
+ const rootError = $6.derived(() => model().field.kind === "object" ? errors[pathKey([])] : undefined);
1469
+ const rootErrorId = $6.derived(() => `${formId()}-${pathId([])}-error`);
485
1470
  function fieldDomId(field) {
486
1471
  return `${formId()}-${pathId(field.path)}`;
487
1472
  }
488
1473
  function fieldError(field) {
489
1474
  return errors[pathKey(field.path)];
490
1475
  }
491
- function describedBy(field) {
492
- const ids = [];
493
- if (field.description)
494
- ids.push(`${fieldDomId(field)}-description`);
495
- if (fieldError(field))
496
- ids.push(`${fieldDomId(field)}-error`);
497
- return ids.length > 0 ? ids.join(" ") : undefined;
498
- }
499
1476
  function stringValue(field) {
500
1477
  const current = getValueAtPath(formValue, field.path);
501
1478
  return current === undefined || current === null ? "" : String(current);
@@ -504,10 +1481,6 @@ function Schema_form($$renderer, $$props) {
504
1481
  const current = getValueAtPath(formValue, field.path);
505
1482
  return typeof current === "number" ? current : undefined;
506
1483
  }
507
- function numberInputValue(field) {
508
- const current = numberValue(field);
509
- return current === undefined ? "" : String(current);
510
- }
511
1484
  function booleanValue(field) {
512
1485
  return getValueAtPath(formValue, field.path) === true;
513
1486
  }
@@ -516,75 +1489,92 @@ function Schema_form($$renderer, $$props) {
516
1489
  const option = field.options.find((candidate) => Object.is(candidate.value, current));
517
1490
  return option?.encodedValue ?? field.options[0]?.encodedValue ?? "";
518
1491
  }
1492
+ function selectOptions(field) {
1493
+ return field.options.map((option) => ({ value: option.encodedValue, label: option.label }));
1494
+ }
1495
+ function numberFieldValue(field) {
1496
+ return numberValue(field) ?? null;
1497
+ }
519
1498
  function rawJsonValue(field) {
520
1499
  const key = pathKey(field.path);
521
1500
  if (rawDrafts[key] !== undefined)
522
1501
  return rawDrafts[key];
523
1502
  return JSON.stringify(getValueAtPath(formValue, field.path) ?? null, null, 2);
524
1503
  }
1504
+ function bumpTouchedValidationSequence(path) {
1505
+ const key = pathKey(path);
1506
+ touchedValidationSequences = {
1507
+ ...touchedValidationSequences,
1508
+ [key]: (touchedValidationSequences[key] ?? 0) + 1
1509
+ };
1510
+ }
525
1511
  function updateValue(path, next) {
526
1512
  if (submitting)
527
1513
  return;
528
1514
  formValue = setValueAtPath(formValue, path, next);
529
1515
  const key = pathKey(path);
1516
+ bumpTouchedValidationSequence(path);
530
1517
  if (errors[key]) {
531
1518
  const { [key]: _removed, ...remaining } = errors;
532
1519
  errors = remaining;
533
1520
  }
534
1521
  setSerializedValue("");
535
1522
  }
536
- function setSerializedValue(next) {
537
- serializedValue = next;
538
- if (serializedInputElement)
539
- serializedInputElement.value = next;
540
- }
541
- function updateString(field, event) {
542
- const input = event.currentTarget;
543
- if (submitting) {
544
- input.value = stringValue(field);
1523
+ async function validateTouchedField(field) {
1524
+ if (submitting)
1525
+ return;
1526
+ const fieldKey = pathKey(field.path);
1527
+ const sequence = (touchedValidationSequences[fieldKey] ?? 0) + 1;
1528
+ touchedValidationSequences = { ...touchedValidationSequences, [fieldKey]: sequence };
1529
+ const raw = rawJsonIssues();
1530
+ const rawIssue = raw.issues.find((candidateIssue) => {
1531
+ const candidateKey = pathKey(candidateIssue.path);
1532
+ return candidateKey === fieldKey || candidateKey.startsWith(`${fieldKey}/`);
1533
+ });
1534
+ if (rawIssue) {
1535
+ errors = { ...errors, [fieldKey]: rawIssue.message };
545
1536
  return;
546
1537
  }
547
- updateValue(field.path, input.value);
548
- }
549
- function updateNumber(field, event) {
550
- const input = event.currentTarget;
551
- if (submitting) {
552
- input.value = numberInputValue(field);
1538
+ const candidate = pruneUndefined(raw.value);
1539
+ const result = await validateSchemaValue(schema, candidate);
1540
+ if (touchedValidationSequences[fieldKey] !== sequence)
1541
+ return;
1542
+ const issue = (result.valid ? [] : result.issues).find((candidateIssue) => {
1543
+ const candidateKey = pathKey(candidateIssue.path);
1544
+ return candidateKey === fieldKey || candidateKey.startsWith(`${fieldKey}/`);
1545
+ });
1546
+ if (issue) {
1547
+ errors = { ...errors, [fieldKey]: issue.message };
553
1548
  return;
554
1549
  }
555
- const raw = input.value;
556
- updateValue(field.path, raw === "" ? undefined : Number(raw));
1550
+ if (errors[fieldKey]) {
1551
+ const { [fieldKey]: _removed, ...remaining } = errors;
1552
+ errors = remaining;
1553
+ }
557
1554
  }
558
- function updateBoolean(field, checked) {
559
- updateValue(field.path, checked);
1555
+ function setSerializedValue(next) {
1556
+ serializedValue = next;
1557
+ if (serializedInputElement)
1558
+ serializedInputElement.value = next;
560
1559
  }
561
1560
  function updateEnum(field, event) {
562
- const select = event.currentTarget;
563
- if (submitting) {
564
- select.value = enumValue(field);
1561
+ if (submitting)
565
1562
  return;
566
- }
1563
+ const select = event.currentTarget;
567
1564
  updateValue(field.path, decodeEnumValue(select.value));
568
1565
  }
569
- function updateRawJson(field, event) {
570
- const textarea = event.currentTarget;
571
- if (submitting) {
572
- textarea.value = rawJsonValue(field);
1566
+ function updateRawJsonValue(field, next) {
1567
+ if (submitting)
573
1568
  return;
574
- }
575
1569
  const key = pathKey(field.path);
576
- rawDrafts = { ...rawDrafts, [key]: textarea.value };
1570
+ rawDrafts = { ...rawDrafts, [key]: next };
1571
+ bumpTouchedValidationSequence(field.path);
1572
+ if (errors[key]) {
1573
+ const { [key]: _removed, ...remaining } = errors;
1574
+ errors = remaining;
1575
+ }
577
1576
  setSerializedValue("");
578
1577
  }
579
- function toggleSwitch(field) {
580
- updateBoolean(field, !booleanValue(field));
581
- }
582
- function handleSwitchKeydown(field, event) {
583
- if (event.key !== " " && event.key !== "Enter")
584
- return;
585
- event.preventDefault();
586
- toggleSwitch(field);
587
- }
588
1578
  function arrayRows(field) {
589
1579
  const values = arrayValueAtPath(formValue, field.path);
590
1580
  const keys = arrayKeys[pathKey(field.path)] ?? [];
@@ -609,6 +1599,7 @@ function Schema_form($$renderer, $$props) {
609
1599
  updateValue(field.path, values.filter((_, candidateIndex) => candidateIndex !== index));
610
1600
  rawDrafts = reindexArrayPathState(rawDrafts, field.path, index);
611
1601
  errors = reindexArrayPathState(errors, field.path, index);
1602
+ touchedValidationSequences = bumpPathValidationSequences(reindexArrayPathState(touchedValidationSequences, field.path, index), field.path);
612
1603
  const key = pathKey(field.path);
613
1604
  arrayKeys = {
614
1605
  ...arrayKeys,
@@ -646,6 +1637,15 @@ function Schema_form($$renderer, $$props) {
646
1637
  }
647
1638
  return next;
648
1639
  }
1640
+ function bumpPathValidationSequences(state, path) {
1641
+ const prefix = pathKey(path);
1642
+ const pathPrefix = prefix === "" ? "" : `${prefix}/`;
1643
+ const next = {};
1644
+ for (const [key, sequence] of Object.entries(state)) {
1645
+ next[key] = key === prefix || key.startsWith(pathPrefix) ? sequence + 1 : sequence;
1646
+ }
1647
+ return next;
1648
+ }
649
1649
  function seedRawDrafts(field, currentValue) {
650
1650
  const drafts = {};
651
1651
  for (const jsonField of currentJsonFields(field, currentValue)) {
@@ -769,17 +1769,25 @@ function Schema_form($$renderer, $$props) {
769
1769
  submitting = false;
770
1770
  }
771
1771
  }
772
- function fieldMessages($$renderer3, field) {
1772
+ function groupLegend($$renderer3, field) {
1773
+ $$renderer3.push(`<legend class="cinder-schema-form__legend">${$6.escape(field.label)} `);
1774
+ if (field.required) {
1775
+ $$renderer3.push("<!--[0-->");
1776
+ $$renderer3.push(`<span class="cinder-_required-marker" aria-hidden="true">*</span>`);
1777
+ } else {
1778
+ $$renderer3.push("<!--[-1-->");
1779
+ }
1780
+ $$renderer3.push(`<!--]--></legend> `);
773
1781
  if (field.description) {
774
1782
  $$renderer3.push("<!--[0-->");
775
- $$renderer3.push(`<p${$.attr("id", `${$.stringify(fieldDomId(field))}-description`)} class="cinder-schema-form__description">${$.escape(field.description)}</p>`);
1783
+ $$renderer3.push(`<p${$6.attr("id", `${$6.stringify(fieldDomId(field))}-description`)} class="cinder-schema-form__description">${$6.escape(field.description)}</p>`);
776
1784
  } else {
777
1785
  $$renderer3.push("<!--[-1-->");
778
1786
  }
779
1787
  $$renderer3.push(`<!--]--> `);
780
1788
  if (fieldError(field)) {
781
1789
  $$renderer3.push("<!--[0-->");
782
- $$renderer3.push(`<p${$.attr("id", `${$.stringify(fieldDomId(field))}-error`)} class="cinder-schema-form__error" aria-live="polite" tabindex="-1">${$.escape(fieldError(field))}</p>`);
1790
+ $$renderer3.push(`<p${$6.attr("id", `${$6.stringify(fieldDomId(field))}-error`)} class="cinder-schema-form__error" aria-live="polite" tabindex="-1">${$6.escape(fieldError(field))}</p>`);
783
1791
  } else {
784
1792
  $$renderer3.push("<!--[-1-->");
785
1793
  }
@@ -788,15 +1796,17 @@ function Schema_form($$renderer, $$props) {
788
1796
  function renderField($$renderer3, field) {
789
1797
  const id = fieldDomId(field);
790
1798
  const error = fieldError(field);
791
- const ariaDescribedBy = describedBy(field);
1799
+ const labelledProps = {
1800
+ label: field.label,
1801
+ ...field.description !== undefined ? { description: field.description } : {},
1802
+ ...error !== undefined ? { error } : {}
1803
+ };
792
1804
  if (field.kind === "object") {
793
1805
  $$renderer3.push("<!--[0-->");
794
- $$renderer3.push(`<fieldset class="cinder-schema-form__fieldset"><legend class="cinder-schema-form__legend">`);
795
- fieldLabel2($$renderer3, field);
796
- $$renderer3.push(`<!----></legend> `);
797
- fieldMessages($$renderer3, field);
1806
+ $$renderer3.push(`<fieldset class="cinder-schema-form__fieldset">`);
1807
+ groupLegend($$renderer3, field);
798
1808
  $$renderer3.push(`<!----> <div class="cinder-schema-form__fields"><!--[-->`);
799
- const each_array = $.ensure_array_like(field.fields);
1809
+ const each_array = $6.ensure_array_like(field.fields);
800
1810
  for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
801
1811
  let child = each_array[$$index];
802
1812
  renderField($$renderer3, child);
@@ -804,12 +1814,10 @@ function Schema_form($$renderer, $$props) {
804
1814
  $$renderer3.push(`<!--]--></div></fieldset>`);
805
1815
  } else if (field.kind === "array") {
806
1816
  $$renderer3.push("<!--[1-->");
807
- $$renderer3.push(`<fieldset class="cinder-schema-form__fieldset"><legend class="cinder-schema-form__legend">`);
808
- fieldLabel2($$renderer3, field);
809
- $$renderer3.push(`<!----></legend> `);
810
- fieldMessages($$renderer3, field);
811
- $$renderer3.push(`<!----> <div class="cinder-schema-form__array"${$.attr("data-cinder-empty", arrayRows(field).length === 0 || undefined)}><!--[-->`);
812
- const each_array_1 = $.ensure_array_like(arrayRows(field));
1817
+ $$renderer3.push(`<fieldset class="cinder-schema-form__fieldset">`);
1818
+ groupLegend($$renderer3, field);
1819
+ $$renderer3.push(`<!----> <div class="cinder-schema-form__array"${$6.attr("data-cinder-empty", arrayRows(field).length === 0 || undefined)}><!--[-->`);
1820
+ const each_array_1 = $6.ensure_array_like(arrayRows(field));
813
1821
  for (let $$index_1 = 0, $$length = each_array_1.length;$$index_1 < $$length; $$index_1++) {
814
1822
  let row = each_array_1[$$index_1];
815
1823
  const itemField = field.item ? rebaseFieldPath(field.item, [...field.path, String(row.index)]) : undefined;
@@ -820,86 +1828,151 @@ function Schema_form($$renderer, $$props) {
820
1828
  } else {
821
1829
  $$renderer3.push("<!--[-1-->");
822
1830
  }
823
- $$renderer3.push(`<!--]--> <button type="button" class="cinder-schema-form__secondary-button"${$.attr("aria-label", `Remove ${field.label} item ${row.index + 1}`)}${$.attr("disabled", submitting, true)}>Remove</button></div>`);
1831
+ $$renderer3.push(`<!--]--> <button type="button" class="cinder-schema-form__secondary-button"${$6.attr("aria-label", `Remove ${field.label} item ${row.index + 1}`)}${$6.attr("disabled", submitting, true)}>Remove</button></div>`);
824
1832
  }
825
- $$renderer3.push(`<!--]--></div> <button type="button" class="cinder-schema-form__secondary-button"${$.attr("disabled", submitting, true)}>Add ${$.escape(field.label)}</button></fieldset>`);
826
- } else if (field.kind === "boolean") {
827
- $$renderer3.push("<!--[2-->");
828
- $$renderer3.push(`<div class="cinder-schema-form__field"><button${$.attr("id", id)} type="button" role="switch"${$.attr("aria-checked", booleanValue(field))}${$.attr("aria-required", field.required ? "true" : undefined)}${$.attr("aria-describedby", ariaDescribedBy)}${$.attr("aria-invalid", error ? "true" : undefined)} class="cinder-schema-form__switch"${$.attr("data-cinder-checked", booleanValue(field) || undefined)}${$.attr("data-cinder-invalid", error ? "true" : undefined)}${$.attr("disabled", submitting, true)}><span class="cinder-schema-form__switch-thumb" aria-hidden="true"></span> <span class="cinder-schema-form__switch-label">`);
829
- fieldLabel2($$renderer3, field);
830
- $$renderer3.push(`<!----></span></button> `);
831
- fieldMessages($$renderer3, field);
832
- $$renderer3.push(`<!----></div>`);
1833
+ $$renderer3.push(`<!--]--></div> <button type="button" class="cinder-schema-form__secondary-button"${$6.attr("disabled", submitting, true)}>Add ${$6.escape(field.label)}</button></fieldset>`);
833
1834
  } else {
834
1835
  $$renderer3.push("<!--[-1-->");
835
- $$renderer3.push(`<div class="cinder-schema-form__field"><label class="cinder-schema-form__label"${$.attr("for", id)}>`);
836
- fieldLabel2($$renderer3, field);
837
- $$renderer3.push(`<!----></label> `);
1836
+ $$renderer3.push(`<div class="cinder-schema-form__field">`);
838
1837
  if (field.kind === "string") {
839
1838
  $$renderer3.push("<!--[0-->");
840
- $$renderer3.push(`<input${$.attr("id", id)} class="cinder-_input-frame cinder-schema-form__control"${$.attr("value", stringValue(field))}${$.attr("required", field.required, true)}${$.attr("disabled", submitting, true)}${$.attr("aria-describedby", ariaDescribedBy)}${$.attr("aria-invalid", error ? "true" : undefined)}/>`);
1839
+ var bind_get = () => stringValue(field);
1840
+ var bind_set = (next) => updateValue(field.path, next);
1841
+ Input($$renderer3, $6.spread_props([
1842
+ { id },
1843
+ labelledProps,
1844
+ {
1845
+ required: field.required,
1846
+ disabled: submitting,
1847
+ onblur: () => validateTouchedField(field),
1848
+ get value() {
1849
+ return bind_get();
1850
+ },
1851
+ set value($$value) {
1852
+ bind_set($$value);
1853
+ }
1854
+ }
1855
+ ]));
841
1856
  } else if (field.kind === "number" || field.kind === "integer") {
842
1857
  $$renderer3.push("<!--[1-->");
843
- $$renderer3.push(`<input${$.attr("id", id)} class="cinder-_input-frame cinder-schema-form__control" type="number"${$.attr("step", field.kind === "integer" ? "1" : "any")}${$.attr("value", numberInputValue(field))}${$.attr("required", field.required, true)}${$.attr("disabled", submitting, true)}${$.attr("aria-describedby", ariaDescribedBy)}${$.attr("aria-invalid", error ? "true" : undefined)}/>`);
1858
+ var bind_get_1 = () => numberFieldValue(field);
1859
+ var bind_set_1 = (next) => updateValue(field.path, next ?? undefined);
1860
+ Number_input($$renderer3, $6.spread_props([
1861
+ { id },
1862
+ labelledProps,
1863
+ {
1864
+ required: field.required,
1865
+ disabled: submitting,
1866
+ step: field.kind === "integer" ? 1 : undefined,
1867
+ onblur: () => validateTouchedField(field),
1868
+ get value() {
1869
+ return bind_get_1();
1870
+ },
1871
+ set value($$value) {
1872
+ bind_set_1($$value);
1873
+ }
1874
+ }
1875
+ ]));
844
1876
  } else if (field.kind === "enum") {
845
1877
  $$renderer3.push("<!--[2-->");
846
- $$renderer3.select({
847
- id,
848
- class: "cinder-_input-frame cinder-schema-form__control",
849
- value: enumValue(field),
850
- required: field.required,
851
- disabled: submitting,
852
- "aria-describedby": ariaDescribedBy,
853
- "aria-invalid": error ? "true" : undefined,
854
- onchange: (event) => updateEnum(field, event)
855
- }, ($$renderer4) => {
856
- $$renderer4.push(`<!--[-->`);
857
- const each_array_2 = $.ensure_array_like(field.options);
858
- for (let $$index_2 = 0, $$length = each_array_2.length;$$index_2 < $$length; $$index_2++) {
859
- let option = each_array_2[$$index_2];
860
- $$renderer4.option({ value: option.encodedValue }, ($$renderer5) => {
861
- $$renderer5.push(`${$.escape(option.label)}`);
862
- });
1878
+ Select($$renderer3, $6.spread_props([
1879
+ { id },
1880
+ labelledProps,
1881
+ {
1882
+ required: field.required,
1883
+ disabled: submitting,
1884
+ options: selectOptions(field),
1885
+ value: enumValue(field),
1886
+ onchange: (event) => updateEnum(field, event),
1887
+ onblur: () => validateTouchedField(field)
863
1888
  }
864
- $$renderer4.push(`<!--]-->`);
865
- });
1889
+ ]));
1890
+ } else if (field.kind === "boolean") {
1891
+ $$renderer3.push("<!--[3-->");
1892
+ var bind_get_2 = () => booleanValue(field);
1893
+ var bind_set_2 = (next) => updateValue(field.path, next);
1894
+ Checkbox($$renderer3, $6.spread_props([
1895
+ { id },
1896
+ labelledProps,
1897
+ {
1898
+ disabled: submitting,
1899
+ get checked() {
1900
+ return bind_get_2();
1901
+ },
1902
+ set checked($$value) {
1903
+ bind_set_2($$value);
1904
+ }
1905
+ }
1906
+ ]));
866
1907
  } else {
867
1908
  $$renderer3.push("<!--[-1-->");
868
- $$renderer3.push(`<textarea${$.attr("id", id)} class="cinder-_input-frame cinder-schema-form__control cinder-schema-form__json-control" rows="6" spellcheck="false"${$.attr("required", field.required, true)}${$.attr("disabled", submitting, true)}${$.attr("aria-describedby", ariaDescribedBy)}${$.attr("aria-invalid", error ? "true" : undefined)}>`);
869
- const $$body = $.escape(rawJsonValue(field));
870
- if ($$body) {
871
- $$renderer3.push(`${$$body}`);
872
- } else {}
873
- $$renderer3.push(`</textarea>`);
1909
+ var bind_get_3 = () => rawJsonValue(field);
1910
+ var bind_set_3 = (next) => updateRawJsonValue(field, next);
1911
+ Textarea($$renderer3, $6.spread_props([
1912
+ { id },
1913
+ labelledProps,
1914
+ {
1915
+ required: field.required,
1916
+ disabled: submitting,
1917
+ rows: 6,
1918
+ spellcheck: false,
1919
+ class: "cinder-schema-form__json-control",
1920
+ onblur: () => validateTouchedField(field),
1921
+ get value() {
1922
+ return bind_get_3();
1923
+ },
1924
+ set value($$value) {
1925
+ bind_set_3($$value);
1926
+ }
1927
+ }
1928
+ ]));
874
1929
  }
875
- $$renderer3.push(`<!--]--> `);
876
- fieldMessages($$renderer3, field);
877
- $$renderer3.push(`<!----></div>`);
1930
+ $$renderer3.push(`<!--]--></div>`);
878
1931
  }
879
1932
  $$renderer3.push(`<!--]-->`);
880
1933
  }
881
- $$renderer2.push(`<form${$.attributes({
882
- ...rest,
883
- id: formId(),
884
- class: $.clsx(classNames("cinder-schema-form", customClassName)),
885
- novalidate: novalidate ?? true
886
- })}>`);
887
- if (rootError()) {
888
- $$renderer2.push("<!--[0-->");
889
- $$renderer2.push(`<p${$.attr("id", rootErrorId())} class="cinder-schema-form__error" aria-live="polite" tabindex="-1">${$.escape(rootError())}</p>`);
890
- } else {
891
- $$renderer2.push("<!--[-1-->");
892
- }
893
- $$renderer2.push(`<!--]--> <div class="cinder-schema-form__fields"><!--[-->`);
894
- const each_array_3 = $.ensure_array_like(rootFields());
895
- for (let $$index_3 = 0, $$length = each_array_3.length;$$index_3 < $$length; $$index_3++) {
896
- let field = each_array_3[$$index_3];
897
- renderField($$renderer2, field);
1934
+ let $$settled = true;
1935
+ let $$inner_renderer;
1936
+ function $$render_inner($$renderer3) {
1937
+ $$renderer3.push(`<form${$6.attributes({
1938
+ ...rest,
1939
+ id: formId(),
1940
+ class: $6.clsx(classNames("cinder-schema-form", customClassName)),
1941
+ novalidate: novalidate ?? true
1942
+ })}>`);
1943
+ if (rootError()) {
1944
+ $$renderer3.push("<!--[0-->");
1945
+ $$renderer3.push(`<p${$6.attr("id", rootErrorId())} class="cinder-schema-form__error" role="alert" aria-live="polite" tabindex="-1">${$6.escape(rootError())}</p>`);
1946
+ } else {
1947
+ $$renderer3.push("<!--[-1-->");
1948
+ }
1949
+ $$renderer3.push(`<!--]--> <div class="cinder-schema-form__fields"><!--[-->`);
1950
+ const each_array_2 = $6.ensure_array_like(rootFields());
1951
+ for (let $$index_2 = 0, $$length = each_array_2.length;$$index_2 < $$length; $$index_2++) {
1952
+ let field = each_array_2[$$index_2];
1953
+ renderField($$renderer3, field);
1954
+ }
1955
+ $$renderer3.push(`<!--]--></div> <input type="hidden"${$6.attr("name", name)}${$6.attr("value", serializedValue)}/> <button type="submit" class="cinder-schema-form__submit"${$6.attr("disabled", submitting, true)}>${$6.escape(submitting ? "Validating..." : submitLabel)}</button></form>`);
898
1956
  }
899
- $$renderer2.push(`<!--]--></div> <input type="hidden"${$.attr("name", name)}${$.attr("value", serializedValue)}/> <button type="submit" class="cinder-schema-form__submit"${$.attr("disabled", submitting, true)}>${$.escape(submitting ? "Validating..." : submitLabel)}</button></form>`);
1957
+ do {
1958
+ $$settled = true;
1959
+ $$inner_renderer = $$renderer2.copy();
1960
+ $$render_inner($$inner_renderer);
1961
+ } while (!$$settled);
1962
+ $$renderer2.subsume($$inner_renderer);
900
1963
  });
901
1964
  }
902
1965
 
1966
+ // src/components/schema-form/schema-form.svelte
1967
+ function Schema_form($$renderer, $$props) {
1968
+ let { schema, $$slots, $$events, ...rest } = $$props;
1969
+ $$renderer.push(`<!---->`);
1970
+ {
1971
+ Schema_form_body($$renderer, $7.spread_props([{ schema }, rest]));
1972
+ }
1973
+ $$renderer.push(`<!---->`);
1974
+ }
1975
+
903
1976
  // src/components/schema-form/index.ts
904
1977
  var schema_form_default = Schema_form;
905
1978
  export {
@@ -908,4 +1981,4 @@ export {
908
1981
  Schema_form as SchemaForm
909
1982
  };
910
1983
 
911
- //# debugId=2E812A62D9F34B2364756E2164756E21
1984
+ //# debugId=CC6E6ECA2FC0CCC564756E2164756E21