@toclocoinc/lattice-grid 1.100.0 → 1.100.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -1
  3. package/angular/fesm2022/toclocoinc-lattice-grid-angular.mjs +6 -2
  4. package/angular/package.json +1 -1
  5. package/angular/types/toclocoinc-lattice-grid-angular.d.ts +3 -1
  6. package/docs/API.html +85 -11
  7. package/docs/api/adapters.html +1 -1
  8. package/docs/api/ai.html +1 -1
  9. package/docs/api/alarms.html +1 -1
  10. package/docs/api/calendar.html +1 -1
  11. package/docs/api/charts.html +1 -1
  12. package/docs/api/dashboard.html +1 -1
  13. package/docs/api/data-router.html +1 -1
  14. package/docs/api/deckgl.html +1 -1
  15. package/docs/api/designer.html +1 -1
  16. package/docs/api/form.html +77 -6
  17. package/docs/api/gantt.html +1 -1
  18. package/docs/api/geometry.html +1 -1
  19. package/docs/api/grid.html +2 -2
  20. package/docs/api/index.html +3 -3
  21. package/docs/api/kanban.html +1 -1
  22. package/docs/api/kpi.html +1 -1
  23. package/docs/api/layout.html +1 -1
  24. package/docs/api/leaflet.html +1 -1
  25. package/docs/api/list.html +1 -1
  26. package/docs/api/mapview.html +1 -1
  27. package/docs/api/mock-socket.html +1 -1
  28. package/docs/api/presets.html +1 -1
  29. package/docs/api/scheduler.html +1 -1
  30. package/docs/api/shell.html +1 -1
  31. package/docs/api/tabs.html +1 -1
  32. package/docs/api/types.html +7 -3
  33. package/docs/api-detail.html +18 -4
  34. package/docs/warnings.json +13 -2
  35. package/lattice-grid.d.ts +1 -1
  36. package/lattice-grid.esm.min.js +2 -2
  37. package/lattice-grid.min.cjs +2 -2
  38. package/lattice-grid.min.js +2 -2
  39. package/locales/all.d.ts +1 -1
  40. package/locales/all.esm.min.js +1 -1
  41. package/locales/all.min.cjs +1 -1
  42. package/locales/all.min.js +1 -1
  43. package/locales/ar.d.ts +1 -1
  44. package/locales/ar.esm.min.js +1 -1
  45. package/locales/ar.min.cjs +1 -1
  46. package/locales/ar.min.js +1 -1
  47. package/locales/cs-CZ.d.ts +1 -1
  48. package/locales/cs-CZ.esm.min.js +1 -1
  49. package/locales/cs-CZ.min.cjs +1 -1
  50. package/locales/cs-CZ.min.js +1 -1
  51. package/locales/da-DK.d.ts +1 -1
  52. package/locales/da-DK.esm.min.js +1 -1
  53. package/locales/da-DK.min.cjs +1 -1
  54. package/locales/da-DK.min.js +1 -1
  55. package/locales/de-DE.d.ts +1 -1
  56. package/locales/de-DE.esm.min.js +1 -1
  57. package/locales/de-DE.min.cjs +1 -1
  58. package/locales/de-DE.min.js +1 -1
  59. package/locales/el-GR.d.ts +1 -1
  60. package/locales/el-GR.esm.min.js +1 -1
  61. package/locales/el-GR.min.cjs +1 -1
  62. package/locales/el-GR.min.js +1 -1
  63. package/locales/en-US.d.ts +1 -1
  64. package/locales/en-US.esm.min.js +1 -1
  65. package/locales/en-US.min.cjs +1 -1
  66. package/locales/en-US.min.js +1 -1
  67. package/locales/es-ES.d.ts +1 -1
  68. package/locales/es-ES.esm.min.js +1 -1
  69. package/locales/es-ES.min.cjs +1 -1
  70. package/locales/es-ES.min.js +1 -1
  71. package/locales/fi-FI.d.ts +1 -1
  72. package/locales/fi-FI.esm.min.js +1 -1
  73. package/locales/fi-FI.min.cjs +1 -1
  74. package/locales/fi-FI.min.js +1 -1
  75. package/locales/fr-CA.d.ts +1 -1
  76. package/locales/fr-CA.esm.min.js +1 -1
  77. package/locales/fr-CA.min.cjs +1 -1
  78. package/locales/fr-CA.min.js +1 -1
  79. package/locales/fr-FR.d.ts +1 -1
  80. package/locales/fr-FR.esm.min.js +1 -1
  81. package/locales/fr-FR.min.cjs +1 -1
  82. package/locales/fr-FR.min.js +1 -1
  83. package/locales/hu-HU.d.ts +1 -1
  84. package/locales/hu-HU.esm.min.js +1 -1
  85. package/locales/hu-HU.min.cjs +1 -1
  86. package/locales/hu-HU.min.js +1 -1
  87. package/locales/it-IT.d.ts +1 -1
  88. package/locales/it-IT.esm.min.js +1 -1
  89. package/locales/it-IT.min.cjs +1 -1
  90. package/locales/it-IT.min.js +1 -1
  91. package/locales/ja-JP.d.ts +1 -1
  92. package/locales/ja-JP.esm.min.js +1 -1
  93. package/locales/ja-JP.min.cjs +1 -1
  94. package/locales/ja-JP.min.js +1 -1
  95. package/locales/nb-NO.d.ts +1 -1
  96. package/locales/nb-NO.esm.min.js +1 -1
  97. package/locales/nb-NO.min.cjs +1 -1
  98. package/locales/nb-NO.min.js +1 -1
  99. package/locales/nl-NL.d.ts +1 -1
  100. package/locales/nl-NL.esm.min.js +1 -1
  101. package/locales/nl-NL.min.cjs +1 -1
  102. package/locales/nl-NL.min.js +1 -1
  103. package/locales/pl-PL.d.ts +1 -1
  104. package/locales/pl-PL.esm.min.js +1 -1
  105. package/locales/pl-PL.min.cjs +1 -1
  106. package/locales/pl-PL.min.js +1 -1
  107. package/locales/pt-BR.d.ts +1 -1
  108. package/locales/pt-BR.esm.min.js +1 -1
  109. package/locales/pt-BR.min.cjs +1 -1
  110. package/locales/pt-BR.min.js +1 -1
  111. package/locales/ro-RO.d.ts +1 -1
  112. package/locales/ro-RO.esm.min.js +1 -1
  113. package/locales/ro-RO.min.cjs +1 -1
  114. package/locales/ro-RO.min.js +1 -1
  115. package/locales/sv-SE.d.ts +1 -1
  116. package/locales/sv-SE.esm.min.js +1 -1
  117. package/locales/sv-SE.min.cjs +1 -1
  118. package/locales/sv-SE.min.js +1 -1
  119. package/locales/uk-UA.d.ts +1 -1
  120. package/locales/uk-UA.esm.min.js +1 -1
  121. package/locales/uk-UA.min.cjs +1 -1
  122. package/locales/uk-UA.min.js +1 -1
  123. package/modules/ai.d.ts +1 -1
  124. package/modules/ai.esm.min.js +1 -1
  125. package/modules/ai.min.cjs +1 -1
  126. package/modules/ai.min.js +1 -1
  127. package/modules/alarms.d.ts +1 -1
  128. package/modules/alarms.esm.min.js +1 -1
  129. package/modules/alarms.min.cjs +1 -1
  130. package/modules/alarms.min.js +1 -1
  131. package/modules/angular.d.ts +1 -1
  132. package/modules/angular.esm.min.js +1 -1
  133. package/modules/angular.min.cjs +1 -1
  134. package/modules/angular.min.js +1 -1
  135. package/modules/calendar.d.ts +1 -1
  136. package/modules/calendar.esm.min.js +1 -1
  137. package/modules/calendar.min.cjs +1 -1
  138. package/modules/calendar.min.js +1 -1
  139. package/modules/chart-alluvial.d.ts +1 -1
  140. package/modules/chart-alluvial.esm.min.js +1 -1
  141. package/modules/chart-alluvial.min.cjs +1 -1
  142. package/modules/chart-alluvial.min.js +1 -1
  143. package/modules/chart-arc.d.ts +1 -1
  144. package/modules/chart-arc.esm.min.js +1 -1
  145. package/modules/chart-arc.min.cjs +1 -1
  146. package/modules/chart-arc.min.js +1 -1
  147. package/modules/chart-barrace.d.ts +1 -1
  148. package/modules/chart-barrace.esm.min.js +1 -1
  149. package/modules/chart-barrace.min.cjs +1 -1
  150. package/modules/chart-barrace.min.js +1 -1
  151. package/modules/chart-bubblemap.d.ts +1 -1
  152. package/modules/chart-bubblemap.esm.min.js +1 -1
  153. package/modules/chart-bubblemap.min.cjs +1 -1
  154. package/modules/chart-bubblemap.min.js +1 -1
  155. package/modules/chart-bump.d.ts +1 -1
  156. package/modules/chart-bump.esm.min.js +1 -1
  157. package/modules/chart-bump.min.cjs +1 -1
  158. package/modules/chart-bump.min.js +1 -1
  159. package/modules/chart-calendar.d.ts +1 -1
  160. package/modules/chart-calendar.esm.min.js +1 -1
  161. package/modules/chart-calendar.min.cjs +1 -1
  162. package/modules/chart-calendar.min.js +1 -1
  163. package/modules/chart-choropleth.d.ts +1 -1
  164. package/modules/chart-choropleth.esm.min.js +1 -1
  165. package/modules/chart-choropleth.min.cjs +1 -1
  166. package/modules/chart-choropleth.min.js +1 -1
  167. package/modules/chart-decomposition.d.ts +1 -1
  168. package/modules/chart-decomposition.esm.min.js +1 -1
  169. package/modules/chart-decomposition.min.cjs +1 -1
  170. package/modules/chart-decomposition.min.js +1 -1
  171. package/modules/chart-diverging.d.ts +1 -1
  172. package/modules/chart-diverging.esm.min.js +1 -1
  173. package/modules/chart-diverging.min.cjs +1 -1
  174. package/modules/chart-diverging.min.js +1 -1
  175. package/modules/chart-dumbbell.d.ts +1 -1
  176. package/modules/chart-dumbbell.esm.min.js +1 -1
  177. package/modules/chart-dumbbell.min.cjs +1 -1
  178. package/modules/chart-dumbbell.min.js +1 -1
  179. package/modules/chart-fan.d.ts +1 -1
  180. package/modules/chart-fan.esm.min.js +1 -1
  181. package/modules/chart-fan.min.cjs +1 -1
  182. package/modules/chart-fan.min.js +1 -1
  183. package/modules/chart-forcetree.d.ts +1 -1
  184. package/modules/chart-forcetree.esm.min.js +1 -1
  185. package/modules/chart-forcetree.min.cjs +1 -1
  186. package/modules/chart-forcetree.min.js +1 -1
  187. package/modules/chart-hexbin.d.ts +1 -1
  188. package/modules/chart-hexbin.esm.min.js +1 -1
  189. package/modules/chart-hexbin.min.cjs +1 -1
  190. package/modules/chart-hexbin.min.js +1 -1
  191. package/modules/chart-hexmap.d.ts +1 -1
  192. package/modules/chart-hexmap.esm.min.js +1 -1
  193. package/modules/chart-hexmap.min.cjs +1 -1
  194. package/modules/chart-hexmap.min.js +1 -1
  195. package/modules/chart-icicle.d.ts +1 -1
  196. package/modules/chart-icicle.esm.min.js +1 -1
  197. package/modules/chart-icicle.min.cjs +1 -1
  198. package/modules/chart-icicle.min.js +1 -1
  199. package/modules/chart-markermap.d.ts +1 -1
  200. package/modules/chart-markermap.esm.min.js +1 -1
  201. package/modules/chart-markermap.min.cjs +1 -1
  202. package/modules/chart-markermap.min.js +1 -1
  203. package/modules/chart-motion.d.ts +1 -1
  204. package/modules/chart-motion.esm.min.js +1 -1
  205. package/modules/chart-motion.min.cjs +1 -1
  206. package/modules/chart-motion.min.js +1 -1
  207. package/modules/chart-pack.d.ts +1 -1
  208. package/modules/chart-pack.esm.min.js +1 -1
  209. package/modules/chart-pack.min.cjs +1 -1
  210. package/modules/chart-pack.min.js +1 -1
  211. package/modules/chart-parallel.d.ts +1 -1
  212. package/modules/chart-parallel.esm.min.js +1 -1
  213. package/modules/chart-parallel.min.cjs +1 -1
  214. package/modules/chart-parallel.min.js +1 -1
  215. package/modules/chart-pictorial.d.ts +1 -1
  216. package/modules/chart-pictorial.esm.min.js +1 -1
  217. package/modules/chart-pictorial.min.cjs +1 -1
  218. package/modules/chart-pictorial.min.js +1 -1
  219. package/modules/chart-polararea.d.ts +1 -1
  220. package/modules/chart-polararea.esm.min.js +1 -1
  221. package/modules/chart-polararea.min.cjs +1 -1
  222. package/modules/chart-polararea.min.js +1 -1
  223. package/modules/chart-polarscatter.d.ts +1 -1
  224. package/modules/chart-polarscatter.esm.min.js +1 -1
  225. package/modules/chart-polarscatter.min.cjs +1 -1
  226. package/modules/chart-polarscatter.min.js +1 -1
  227. package/modules/chart-pyramid.d.ts +1 -1
  228. package/modules/chart-pyramid.esm.min.js +1 -1
  229. package/modules/chart-pyramid.min.cjs +1 -1
  230. package/modules/chart-pyramid.min.js +1 -1
  231. package/modules/chart-radialbar.d.ts +1 -1
  232. package/modules/chart-radialbar.esm.min.js +1 -1
  233. package/modules/chart-radialbar.min.cjs +1 -1
  234. package/modules/chart-radialbar.min.js +1 -1
  235. package/modules/chart-ridgeline.d.ts +1 -1
  236. package/modules/chart-ridgeline.esm.min.js +1 -1
  237. package/modules/chart-ridgeline.min.cjs +1 -1
  238. package/modules/chart-ridgeline.min.js +1 -1
  239. package/modules/chart-roc.d.ts +1 -1
  240. package/modules/chart-roc.esm.min.js +1 -1
  241. package/modules/chart-roc.min.cjs +1 -1
  242. package/modules/chart-roc.min.js +1 -1
  243. package/modules/chart-scatter3d.d.ts +1 -1
  244. package/modules/chart-scatter3d.esm.min.js +1 -1
  245. package/modules/chart-scatter3d.min.cjs +1 -1
  246. package/modules/chart-scatter3d.min.js +1 -1
  247. package/modules/chart-serpentine.d.ts +1 -1
  248. package/modules/chart-serpentine.esm.min.js +1 -1
  249. package/modules/chart-serpentine.min.cjs +1 -1
  250. package/modules/chart-serpentine.min.js +1 -1
  251. package/modules/chart-slope.d.ts +1 -1
  252. package/modules/chart-slope.esm.min.js +1 -1
  253. package/modules/chart-slope.min.cjs +1 -1
  254. package/modules/chart-slope.min.js +1 -1
  255. package/modules/chart-spiral.d.ts +1 -1
  256. package/modules/chart-spiral.esm.min.js +1 -1
  257. package/modules/chart-spiral.min.cjs +1 -1
  258. package/modules/chart-spiral.min.js +1 -1
  259. package/modules/chart-splom.d.ts +1 -1
  260. package/modules/chart-splom.esm.min.js +1 -1
  261. package/modules/chart-splom.min.cjs +1 -1
  262. package/modules/chart-splom.min.js +1 -1
  263. package/modules/chart-tree.d.ts +1 -1
  264. package/modules/chart-tree.esm.min.js +1 -1
  265. package/modules/chart-tree.min.cjs +1 -1
  266. package/modules/chart-tree.min.js +1 -1
  267. package/modules/chart-venn.d.ts +1 -1
  268. package/modules/chart-venn.esm.min.js +1 -1
  269. package/modules/chart-venn.min.cjs +1 -1
  270. package/modules/chart-venn.min.js +1 -1
  271. package/modules/chart-voronoi.d.ts +1 -1
  272. package/modules/chart-voronoi.esm.min.js +1 -1
  273. package/modules/chart-voronoi.min.cjs +1 -1
  274. package/modules/chart-voronoi.min.js +1 -1
  275. package/modules/chart-waffle.d.ts +1 -1
  276. package/modules/chart-waffle.esm.min.js +1 -1
  277. package/modules/chart-waffle.min.cjs +1 -1
  278. package/modules/chart-waffle.min.js +1 -1
  279. package/modules/chart-wordcloud.d.ts +1 -1
  280. package/modules/chart-wordcloud.esm.min.js +1 -1
  281. package/modules/chart-wordcloud.min.cjs +1 -1
  282. package/modules/chart-wordcloud.min.js +1 -1
  283. package/modules/charts.d.ts +1 -1
  284. package/modules/charts.esm.min.js +1 -1
  285. package/modules/charts.min.cjs +1 -1
  286. package/modules/charts.min.js +1 -1
  287. package/modules/dashboard.d.ts +1 -1
  288. package/modules/dashboard.esm.min.js +1 -1
  289. package/modules/dashboard.min.cjs +1 -1
  290. package/modules/dashboard.min.js +1 -1
  291. package/modules/data-router.d.ts +1 -1
  292. package/modules/data-router.esm.min.js +1 -1
  293. package/modules/data-router.min.cjs +1 -1
  294. package/modules/data-router.min.js +1 -1
  295. package/modules/deckgl.d.ts +1 -1
  296. package/modules/deckgl.esm.min.js +1 -1
  297. package/modules/deckgl.min.cjs +1 -1
  298. package/modules/deckgl.min.js +1 -1
  299. package/modules/designer.d.ts +1 -1
  300. package/modules/designer.esm.min.js +1 -1
  301. package/modules/designer.min.cjs +1 -1
  302. package/modules/designer.min.js +1 -1
  303. package/modules/devtools.d.ts +1 -1
  304. package/modules/devtools.esm.min.js +1 -1
  305. package/modules/devtools.min.cjs +1 -1
  306. package/modules/devtools.min.js +1 -1
  307. package/modules/dhtmlx-compat.d.ts +1 -1
  308. package/modules/dhtmlx-compat.esm.min.js +1 -1
  309. package/modules/dhtmlx-compat.min.cjs +1 -1
  310. package/modules/dhtmlx-compat.min.js +1 -1
  311. package/modules/form.d.ts +39 -8
  312. package/modules/form.esm.min.js +409 -308
  313. package/modules/form.esm.min.js.map +2 -2
  314. package/modules/form.min.cjs +409 -308
  315. package/modules/form.min.js +409 -308
  316. package/modules/form.min.js.map +2 -2
  317. package/modules/gantt.d.ts +1 -1
  318. package/modules/gantt.esm.min.js +1 -1
  319. package/modules/gantt.min.cjs +1 -1
  320. package/modules/gantt.min.js +1 -1
  321. package/modules/geo-europe-nuts.d.ts +1 -1
  322. package/modules/geo-europe-nuts.esm.min.js +1 -1
  323. package/modules/geo-europe-nuts.min.cjs +1 -1
  324. package/modules/geo-europe-nuts.min.js +1 -1
  325. package/modules/geo-uk.d.ts +1 -1
  326. package/modules/geo-uk.esm.min.js +1 -1
  327. package/modules/geo-uk.min.cjs +1 -1
  328. package/modules/geo-uk.min.js +1 -1
  329. package/modules/geo-us-states.d.ts +1 -1
  330. package/modules/geo-us-states.esm.min.js +1 -1
  331. package/modules/geo-us-states.min.cjs +1 -1
  332. package/modules/geo-us-states.min.js +1 -1
  333. package/modules/geo-world-110m.d.ts +1 -1
  334. package/modules/geo-world-110m.esm.min.js +1 -1
  335. package/modules/geo-world-110m.min.cjs +1 -1
  336. package/modules/geo-world-110m.min.js +1 -1
  337. package/modules/geo-world-50m.d.ts +1 -1
  338. package/modules/geo-world-50m.esm.min.js +1 -1
  339. package/modules/geo-world-50m.min.cjs +1 -1
  340. package/modules/geo-world-50m.min.js +1 -1
  341. package/modules/geometry.d.ts +1 -1
  342. package/modules/geometry.esm.min.js +1 -1
  343. package/modules/geometry.min.cjs +1 -1
  344. package/modules/geometry.min.js +1 -1
  345. package/modules/htmx.d.ts +1 -1
  346. package/modules/htmx.esm.min.js +2 -2
  347. package/modules/htmx.min.cjs +2 -2
  348. package/modules/htmx.min.js +2 -2
  349. package/modules/kanban.d.ts +1 -1
  350. package/modules/kanban.esm.min.js +1 -1
  351. package/modules/kanban.min.cjs +1 -1
  352. package/modules/kanban.min.js +1 -1
  353. package/modules/kpi.d.ts +1 -1
  354. package/modules/kpi.esm.min.js +1 -1
  355. package/modules/kpi.min.cjs +1 -1
  356. package/modules/kpi.min.js +1 -1
  357. package/modules/layout.d.ts +1 -1
  358. package/modules/layout.esm.min.js +1 -1
  359. package/modules/layout.min.cjs +1 -1
  360. package/modules/layout.min.js +1 -1
  361. package/modules/leaflet.d.ts +1 -1
  362. package/modules/leaflet.esm.min.js +1 -1
  363. package/modules/leaflet.min.cjs +1 -1
  364. package/modules/leaflet.min.js +1 -1
  365. package/modules/list.d.ts +1 -1
  366. package/modules/list.esm.min.js +1 -1
  367. package/modules/list.min.cjs +1 -1
  368. package/modules/list.min.js +1 -1
  369. package/modules/mapview.d.ts +1 -1
  370. package/modules/mapview.esm.min.js +1 -1
  371. package/modules/mapview.min.cjs +1 -1
  372. package/modules/mapview.min.js +1 -1
  373. package/modules/mock-socket.d.ts +1 -1
  374. package/modules/mock-socket.esm.min.js +1 -1
  375. package/modules/mock-socket.min.cjs +1 -1
  376. package/modules/mock-socket.min.js +1 -1
  377. package/modules/presets.d.ts +1 -1
  378. package/modules/presets.esm.min.js +1 -1
  379. package/modules/presets.min.cjs +1 -1
  380. package/modules/presets.min.js +1 -1
  381. package/modules/react.d.ts +1 -1
  382. package/modules/react.esm.min.js +2 -2
  383. package/modules/react.esm.min.js.map +1 -1
  384. package/modules/react.min.cjs +2 -2
  385. package/modules/react.min.js +2 -2
  386. package/modules/react.min.js.map +1 -1
  387. package/modules/scheduler.d.ts +1 -1
  388. package/modules/scheduler.esm.min.js +1 -1
  389. package/modules/scheduler.min.cjs +1 -1
  390. package/modules/scheduler.min.js +1 -1
  391. package/modules/shell.d.ts +1 -1
  392. package/modules/shell.esm.min.js +1 -1
  393. package/modules/shell.min.cjs +1 -1
  394. package/modules/shell.min.js +1 -1
  395. package/modules/svelte.d.ts +1 -1
  396. package/modules/svelte.esm.min.js +3 -3
  397. package/modules/svelte.esm.min.js.map +1 -1
  398. package/modules/svelte.min.cjs +2 -2
  399. package/modules/svelte.min.js +2 -2
  400. package/modules/svelte.min.js.map +1 -1
  401. package/modules/tabs.d.ts +1 -1
  402. package/modules/tabs.esm.min.js +1 -1
  403. package/modules/tabs.min.cjs +1 -1
  404. package/modules/tabs.min.js +1 -1
  405. package/modules/vue.d.ts +1 -1
  406. package/modules/vue.esm.min.js +3 -3
  407. package/modules/vue.esm.min.js.map +1 -1
  408. package/modules/vue.min.cjs +2 -2
  409. package/modules/vue.min.js +2 -2
  410. package/modules/vue.min.js.map +1 -1
  411. package/modules/webcomponent.d.ts +1 -1
  412. package/modules/webcomponent.esm.min.js +3 -3
  413. package/modules/webcomponent.esm.min.js.map +1 -1
  414. package/modules/webcomponent.min.cjs +3 -3
  415. package/modules/webcomponent.min.js +3 -3
  416. package/modules/webcomponent.min.js.map +1 -1
  417. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Lattice Grid 1.100.0, form module
2
+ * Lattice Grid 1.100.1, form module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
6
- (function(Tt){"use strict";var cr=!0,At=Object.create(null),$t=Object.create(null);function ge(R,Y){At[R]=Y}function St(R){var Y=$t[R];if(Y)return Y;var n=Object.create(null);$t[R]=n;var P=At[R];if(!P)throw new Error("[lattice] missing module: "+R);return P(n,St),n}ge("packages/modules/form/styles.js",function(R,Y){"use strict";Object.defineProperty(R,"NS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(R,"css",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"injectStyles",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"injectColsBreakpoint",{enumerable:!0,get:function(){return s}});const n="lat-form",P="data-lattice-form-styles";function v(){return`
7
- .${n}{
6
+ (function(Dt){"use strict";var cr=!0,At=Object.create(null),$t=Object.create(null);function _e(F,X){At[F]=X}function Et(F){var X=$t[F];if(X)return X;var e=Object.create(null);$t[F]=e;var T=At[F];if(!T)throw new Error("[lattice] missing module: "+F);return T(e,Et),e}_e("packages/modules/form/styles.js",function(F,X){"use strict";Object.defineProperty(F,"NS",{enumerable:!0,get:function(){return e}}),Object.defineProperty(F,"css",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"injectStyles",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"injectColsBreakpoint",{enumerable:!0,get:function(){return u}});const e="lat-form",T="data-lattice-form-styles";function v(){return`
7
+ .${e}{
8
8
  --lattice-density-scale:1;
9
9
  --lattice-presentation-scale:1;
10
10
  --lattice-scale:calc(var(--lattice-density-scale) * var(--lattice-presentation-scale));
@@ -36,19 +36,19 @@
36
36
  font-size:var(--lattice-font-size); line-height:1.4; color:var(--lattice-foreground);
37
37
  color-scheme:light;
38
38
  }
39
- .${n}[data-density='compact']{ --lattice-density-scale:0.85; }
40
- .${n}[data-density='standard']{ --lattice-density-scale:1; }
41
- .${n}[data-density='comfortable']{ --lattice-density-scale:1.5; }
42
- .${n}__fieldset{
39
+ .${e}[data-density='compact']{ --lattice-density-scale:0.85; }
40
+ .${e}[data-density='standard']{ --lattice-density-scale:1; }
41
+ .${e}[data-density='comfortable']{ --lattice-density-scale:1.5; }
42
+ .${e}__fieldset{
43
43
  box-sizing:border-box; margin:0; padding:var(--lattice-space);
44
44
  border:var(--lattice-border-width) solid var(--lattice-border-color);
45
45
  border-radius:var(--lattice-radius);
46
46
  min-width:0; min-height:0;
47
47
  }
48
- .${n}__legend{
48
+ .${e}__legend{
49
49
  padding:0 var(--lattice-space); font-weight:600;
50
50
  }
51
- .${n}__fieldset-body{
51
+ .${e}__fieldset-body{
52
52
  display:flex; flex-direction:column; box-sizing:border-box; gap:var(--lattice-form-item-gap);
53
53
  min-width:0; min-height:0;
54
54
  }
@@ -57,20 +57,20 @@
57
57
  the same class). __cols shares the width among its children by default and
58
58
  stacks them into one column once its own width drops below the breakpoint
59
59
  (BACKLOG-0002196). */
60
- .${n}__rows{
60
+ .${e}__rows{
61
61
  display:flex; flex-direction:column; box-sizing:border-box; min-width:0; min-height:0;
62
62
  gap:var(--lattice-form-item-gap); align-items:stretch;
63
63
  }
64
- .${n}__cols{
64
+ .${e}__cols{
65
65
  display:flex; flex-direction:row; flex-wrap:wrap; box-sizing:border-box; min-width:0; min-height:0;
66
66
  gap:var(--lattice-space); align-items:stretch;
67
67
  container-type:inline-size; container-name:var(--lattice-cols-container, lat-cols);
68
68
  }
69
- .${n}__cols > *{ flex:var(--lattice-item-flex, 1 1 0); min-width:0; }
69
+ .${e}__cols > *{ flex:var(--lattice-item-flex, 1 1 0); min-width:0; }
70
70
  @container lat-cols (max-width:480px){
71
- .${n}__cols > *{ flex:1 1 100%; }
71
+ .${e}__cols > *{ flex:1 1 100%; }
72
72
  }
73
- .${n}__items{
73
+ .${e}__items{
74
74
  display:flex; flex-direction:row; box-sizing:border-box; min-width:0; min-height:0;
75
75
  gap:var(--lattice-space); align-items:flex-start; flex-wrap:wrap;
76
76
  }
@@ -78,63 +78,63 @@
78
78
  line, so its children lay out exactly as they would in a rows stack. A
79
79
  cols block otherwise collapses: container-type: inline-size gives it no
80
80
  intrinsic width for the run to size (BACKLOG-0002203). */
81
- .${n}__items > .${n}__rows,
82
- .${n}__items > .${n}__cols,
83
- .${n}__items > .${n}__fieldset,
84
- .${n}__items > .${n}__panel{
81
+ .${e}__items > .${e}__rows,
82
+ .${e}__items > .${e}__cols,
83
+ .${e}__items > .${e}__fieldset,
84
+ .${e}__items > .${e}__panel{
85
85
  flex:1 1 100%;
86
86
  }
87
- .${n}__separator{
87
+ .${e}__separator{
88
88
  border:0; border-top:var(--lattice-border-width) solid var(--lattice-border-color);
89
89
  margin:var(--lattice-space) 0; width:100%;
90
90
  }
91
- .${n}__spacer{ flex:1 1 auto; min-width:0; min-height:0; }
92
- .${n}__item{
91
+ .${e}__spacer{ flex:1 1 auto; min-width:0; min-height:0; }
92
+ .${e}__item{
93
93
  display:flex; box-sizing:border-box; min-width:0; min-height:0;
94
94
  }
95
- .${n}__item[data-label-position='top']{ flex-direction:column; align-items:stretch; }
96
- .${n}__item[data-label-position='left']{ flex-direction:row; align-items:center; gap:var(--lattice-space); }
97
- .${n}__item[data-label-position='hidden']{ flex-direction:column; align-items:stretch; }
98
- .${n}__item[hidden]{ display:none; }
99
- .${n}__label{
95
+ .${e}__item[data-label-position='top']{ flex-direction:column; align-items:stretch; }
96
+ .${e}__item[data-label-position='left']{ flex-direction:row; align-items:center; gap:var(--lattice-space); }
97
+ .${e}__item[data-label-position='hidden']{ flex-direction:column; align-items:stretch; }
98
+ .${e}__item[hidden]{ display:none; }
99
+ .${e}__label{
100
100
  display:block; box-sizing:border-box; color:var(--lattice-foreground);
101
101
  padding:0; user-select:none;
102
102
  }
103
- .${n}__item[data-label-position='top'] .${n}__label{ margin-bottom:var(--lattice-form-label-gap); }
103
+ .${e}__item[data-label-position='top'] .${e}__label{ margin-bottom:var(--lattice-form-label-gap); }
104
104
  /* A hidden label stays the control's accessible name but takes no space and
105
105
  draws no asterisk: clipped rather than display:none, so a screen reader
106
106
  still reads it (BACKLOG-0002193). */
107
- .${n}__label--hidden{
107
+ .${e}__label--hidden{
108
108
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
109
109
  overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%);
110
110
  white-space:nowrap; border:0;
111
111
  }
112
- .${n}__help{
112
+ .${e}__help{
113
113
  display:block; box-sizing:border-box; color:var(--lattice-foreground-muted);
114
114
  font-size:calc(var(--lattice-font-size) - 2px); margin-top:calc(var(--lattice-space) / 2);
115
115
  }
116
- .${n}__pre{
116
+ .${e}__pre{
117
117
  display:block; box-sizing:border-box; color:var(--lattice-foreground-muted);
118
118
  font-size:calc(var(--lattice-font-size) - 2px); margin-top:calc(var(--lattice-space) / 2);
119
119
  }
120
- .${n}__pre[hidden]{ display:none; }
121
- .${n}__validation{
120
+ .${e}__pre[hidden]{ display:none; }
121
+ .${e}__validation{
122
122
  display:block; box-sizing:border-box; font-size:calc(var(--lattice-font-size) - 2px);
123
123
  margin-top:calc(var(--lattice-space) / 2);
124
124
  }
125
- .${n}__validation[hidden]{ display:none; }
126
- .${n}__validation--error{ color:var(--lattice-danger); }
127
- .${n}__validation--success{ color:var(--lattice-success); }
128
- .${n}__control input[aria-invalid='true'],
129
- .${n}__control textarea[aria-invalid='true'],
130
- .${n}__control select[aria-invalid='true']{
125
+ .${e}__validation[hidden]{ display:none; }
126
+ .${e}__validation--error{ color:var(--lattice-danger); }
127
+ .${e}__validation--success{ color:var(--lattice-success); }
128
+ .${e}__control input[aria-invalid='true'],
129
+ .${e}__control textarea[aria-invalid='true'],
130
+ .${e}__control select[aria-invalid='true']{
131
131
  border-color:var(--lattice-danger);
132
132
  }
133
- .${n}__control{ display:flex; flex-direction:column; min-width:0; flex:1 1 auto; }
134
- .${n}__control input,
135
- .${n}__control textarea,
136
- .${n}__control select,
137
- .${n}__control button{
133
+ .${e}__control{ display:flex; flex-direction:column; min-width:0; flex:1 1 auto; }
134
+ .${e}__control input,
135
+ .${e}__control textarea,
136
+ .${e}__control select,
137
+ .${e}__control button{
138
138
  box-sizing:border-box; width:100%; height:var(--lattice-row-height); min-height:0;
139
139
  padding:calc(var(--lattice-space) / 2) calc(var(--lattice-space) * 1.5);
140
140
  border:var(--lattice-border-width) solid var(--lattice-border-color);
@@ -142,42 +142,42 @@
142
142
  background:var(--lattice-background); color:var(--lattice-foreground);
143
143
  font:inherit; line-height:inherit;
144
144
  }
145
- .${n}__control textarea{ height:auto; min-height:var(--lattice-row-height); resize:vertical; }
146
- .${n}__control input:focus-visible,
147
- .${n}__control textarea:focus-visible,
148
- .${n}__control select:focus-visible,
149
- .${n}__control button:focus-visible{
145
+ .${e}__control textarea{ height:auto; min-height:var(--lattice-row-height); resize:vertical; }
146
+ .${e}__control input:focus-visible,
147
+ .${e}__control textarea:focus-visible,
148
+ .${e}__control select:focus-visible,
149
+ .${e}__control button:focus-visible{
150
150
  outline:2px solid var(--lattice-focus-ring); outline-offset:-1px;
151
151
  }
152
- .${n}__control input:disabled,
153
- .${n}__control textarea:disabled,
154
- .${n}__control select:disabled{
152
+ .${e}__control input:disabled,
153
+ .${e}__control textarea:disabled,
154
+ .${e}__control select:disabled{
155
155
  color:var(--lattice-disabled-foreground);
156
156
  background:var(--lattice-disabled-background);
157
157
  border-color:var(--lattice-disabled-border);
158
158
  cursor:not-allowed;
159
159
  }
160
- .${n}__control button:disabled{
160
+ .${e}__control button:disabled{
161
161
  color:var(--lattice-disabled-foreground); cursor:not-allowed;
162
162
  }
163
- .${n}__control input[readonly],
164
- .${n}__control textarea[readonly]{
163
+ .${e}__control input[readonly],
164
+ .${e}__control textarea[readonly]{
165
165
  color:var(--lattice-readonly-foreground);
166
166
  background:var(--lattice-readonly-background);
167
167
  border-color:var(--lattice-readonly-border);
168
168
  cursor:default;
169
169
  }
170
- .${n}__control input[aria-readonly='true']{ cursor:default; }
171
- .${n}__control input[type='checkbox'],
172
- .${n}__control input[type='radio']{
170
+ .${e}__control input[aria-readonly='true']{ cursor:default; }
171
+ .${e}__control input[type='checkbox'],
172
+ .${e}__control input[type='radio']{
173
173
  width:var(--lattice-control-size); height:var(--lattice-control-size);
174
174
  padding:0; border:0; accent-color:var(--lattice-accent); background:transparent;
175
175
  }
176
- .${n}__button{
176
+ .${e}__button{
177
177
  cursor:pointer;
178
178
  }
179
- .${n}__button:disabled{ cursor:not-allowed; }
180
- .${n}__text{
179
+ .${e}__button:disabled{ cursor:not-allowed; }
180
+ .${e}__text{
181
181
  display:inline-block; box-sizing:border-box; min-height:var(--lattice-row-height);
182
182
  padding:calc(var(--lattice-space) / 2) 0; color:var(--lattice-foreground);
183
183
  }
@@ -367,42 +367,42 @@
367
367
  .lat-combo__option.lat-select__option--active{
368
368
  background:color-mix(in srgb, var(--lattice-accent) 18%, var(--lattice-background));
369
369
  }
370
- @scope ([data-theme="dark"]){:scope.${n},.${n},:scope.lat-combo,.lat-combo{color-scheme:dark}}
371
- @scope ([data-theme="light"],[data-theme="auto"]){:scope.${n},.${n},:scope.lat-combo,.lat-combo{color-scheme:light}}
372
- @media (prefers-color-scheme:dark){@scope ([data-theme="auto"]){:scope.${n},.${n},:scope.lat-combo,.lat-combo{color-scheme:dark}}}
373
- .${n}__rating{
370
+ @scope ([data-theme="dark"]){:scope.${e},.${e},:scope.lat-combo,.lat-combo{color-scheme:dark}}
371
+ @scope ([data-theme="light"],[data-theme="auto"]){:scope.${e},.${e},:scope.lat-combo,.lat-combo{color-scheme:light}}
372
+ @media (prefers-color-scheme:dark){@scope ([data-theme="auto"]){:scope.${e},.${e},:scope.lat-combo,.lat-combo{color-scheme:dark}}}
373
+ .${e}__rating{
374
374
  display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2);
375
375
  min-height:var(--lattice-row-height); width:max-content; cursor:pointer;
376
376
  user-select:none; border-radius:var(--lattice-radius);
377
377
  }
378
- .${n}__rating-track{ display:inline-flex; gap:2px; }
379
- .${n}__rating-item{
378
+ .${e}__rating-track{ display:inline-flex; gap:2px; }
379
+ .${e}__rating-item{
380
380
  position:relative; display:inline-flex; color:var(--lattice-foreground-muted);
381
381
  width:calc(var(--lattice-font-size) * 1.4); height:calc(var(--lattice-font-size) * 1.4);
382
382
  }
383
- .${n}__rating-item svg{ width:100%; height:100%; display:block; }
384
- .${n}__rating-fill{
383
+ .${e}__rating-item svg{ width:100%; height:100%; display:block; }
384
+ .${e}__rating-fill{
385
385
  position:absolute; top:0; bottom:0; left:0; width:0; overflow:hidden;
386
386
  color:var(--lattice-accent);
387
387
  }
388
- .${n}__rating-fill svg{
388
+ .${e}__rating-fill svg{
389
389
  width:calc(var(--lattice-font-size) * 1.4); height:calc(var(--lattice-font-size) * 1.4);
390
390
  }
391
- .${n}__rating-value{
391
+ .${e}__rating-value{
392
392
  color:var(--lattice-foreground-muted); font-variant-numeric:tabular-nums;
393
393
  }
394
- .${n}__rating:focus-visible{
394
+ .${e}__rating:focus-visible{
395
395
  outline:2px solid var(--lattice-focus-ring); outline-offset:2px;
396
396
  }
397
- .${n}__rating[aria-disabled='true']{ cursor:not-allowed; }
398
- .${n}__rating[aria-disabled='true'] .${n}__rating-fill{ color:var(--lattice-disabled-foreground); }
399
- .${n}__rating[aria-readonly='true']{ cursor:default; }
400
- .${n}__stage{
397
+ .${e}__rating[aria-disabled='true']{ cursor:not-allowed; }
398
+ .${e}__rating[aria-disabled='true'] .${e}__rating-fill{ color:var(--lattice-disabled-foreground); }
399
+ .${e}__rating[aria-readonly='true']{ cursor:default; }
400
+ .${e}__stage{
401
401
  display:inline-flex; align-items:stretch; flex-wrap:wrap; width:max-content;
402
402
  max-width:100%;
403
403
  }
404
- .${n}__control .${n}__stage-step{ width:auto; }
405
- .${n}__stage-step{
404
+ .${e}__control .${e}__stage-step{ width:auto; }
405
+ .${e}__stage-step{
406
406
  position:relative; display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2);
407
407
  box-sizing:border-box; height:var(--lattice-row-height); min-height:0;
408
408
  padding:calc(var(--lattice-space) / 2) calc(var(--lattice-space) * 1.25);
@@ -410,40 +410,40 @@
410
410
  border-radius:0; background:var(--lattice-background); color:var(--lattice-foreground-muted);
411
411
  font:inherit; line-height:inherit; cursor:pointer; white-space:nowrap;
412
412
  }
413
- .${n}__stage-step:first-child{ border-radius:var(--lattice-radius) 0 0 var(--lattice-radius); }
414
- .${n}__stage-step:last-child{ border-radius:0 var(--lattice-radius) var(--lattice-radius) 0; }
415
- .${n}__stage-step + .${n}__stage-step{ margin-left:calc(var(--lattice-border-width) * -1); }
416
- .${n}__stage-step:not(:last-child)::after{
413
+ .${e}__stage-step:first-child{ border-radius:var(--lattice-radius) 0 0 var(--lattice-radius); }
414
+ .${e}__stage-step:last-child{ border-radius:0 var(--lattice-radius) var(--lattice-radius) 0; }
415
+ .${e}__stage-step + .${e}__stage-step{ margin-left:calc(var(--lattice-border-width) * -1); }
416
+ .${e}__stage-step:not(:last-child)::after{
417
417
  content:''; display:inline-block; flex:0 0 auto;
418
418
  width:6px; height:6px; margin-left:calc(var(--lattice-space) * 0.75);
419
419
  border-top:2px solid currentColor; border-right:2px solid currentColor;
420
420
  transform:rotate(45deg); opacity:.7;
421
421
  }
422
- .${n}__stage-check{
422
+ .${e}__stage-check{
423
423
  width:var(--lattice-control-size); height:var(--lattice-control-size);
424
424
  flex:0 0 auto; opacity:0;
425
425
  }
426
- .${n}__stage-step[data-state='done']{ color:var(--lattice-accent); }
427
- .${n}__stage-step[data-state='done'] .${n}__stage-check{ opacity:1; }
428
- .${n}__stage-step[data-state='current']{
426
+ .${e}__stage-step[data-state='done']{ color:var(--lattice-accent); }
427
+ .${e}__stage-step[data-state='done'] .${e}__stage-check{ opacity:1; }
428
+ .${e}__stage-step[data-state='current']{
429
429
  color:var(--lattice-accent); border-color:var(--lattice-accent); z-index:1;
430
430
  background:color-mix(in srgb, var(--lattice-accent) 12%, var(--lattice-background));
431
431
  }
432
- .${n}__stage-step:focus-visible{
432
+ .${e}__stage-step:focus-visible{
433
433
  outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; z-index:2;
434
434
  }
435
- .${n}__stage[aria-disabled='true']{ cursor:not-allowed; }
436
- .${n}__stage[aria-disabled='true'] .${n}__stage-step{
435
+ .${e}__stage[aria-disabled='true']{ cursor:not-allowed; }
436
+ .${e}__stage[aria-disabled='true'] .${e}__stage-step{
437
437
  color:var(--lattice-disabled-foreground); background:var(--lattice-disabled-background);
438
438
  border-color:var(--lattice-disabled-border);
439
439
  }
440
- .${n}__stage[aria-readonly='true']{ cursor:default; }
441
- .${n}__chips{
440
+ .${e}__stage[aria-readonly='true']{ cursor:default; }
441
+ .${e}__chips{
442
442
  display:inline-flex; align-items:center; flex-wrap:wrap;
443
443
  gap:calc(var(--lattice-space) / 2); width:max-content; max-width:100%;
444
444
  }
445
- .${n}__chips--scroll{ flex-wrap:nowrap; overflow-x:auto; }
446
- .${n}__control .${n}__chip{
445
+ .${e}__chips--scroll{ flex-wrap:nowrap; overflow-x:auto; }
446
+ .${e}__control .${e}__chip{
447
447
  display:inline-flex; align-items:center;
448
448
  box-sizing:border-box; width:auto; height:var(--lattice-row-height); min-height:0;
449
449
  padding:0 calc(var(--lattice-space) * 1.25);
@@ -452,76 +452,76 @@
452
452
  background:var(--lattice-background); color:var(--lattice-foreground);
453
453
  font:inherit; line-height:inherit; cursor:pointer; white-space:nowrap;
454
454
  }
455
- .${n}__chip-icon{
455
+ .${e}__chip-icon{
456
456
  width:var(--lattice-control-size); height:var(--lattice-control-size); flex:0 0 auto;
457
457
  margin-right:calc(var(--lattice-space) / 2);
458
458
  }
459
459
  /* The check collapses to no width when unselected so the label keeps the same
460
460
  side padding on both sides (BACKLOG-0002206); its space animates in with the
461
461
  glyph when the chip is selected. */
462
- .${n}__chip-check{
462
+ .${e}__chip-check{
463
463
  width:0; height:var(--lattice-control-size); flex:0 0 auto; margin-left:0;
464
464
  opacity:0; transform:scale(.6);
465
465
  transition:width .08s ease, margin-left .08s ease, opacity .08s ease, transform .08s ease;
466
466
  }
467
- .${n}__chip[aria-pressed='true'] .${n}__chip-check,
468
- .${n}__chip[aria-checked='true'] .${n}__chip-check{
467
+ .${e}__chip[aria-pressed='true'] .${e}__chip-check,
468
+ .${e}__chip[aria-checked='true'] .${e}__chip-check{
469
469
  width:var(--lattice-control-size); margin-left:calc(var(--lattice-space) / 2);
470
470
  opacity:1; transform:scale(1);
471
471
  }
472
472
  @media (prefers-reduced-motion: reduce){
473
- .${n}__chip-check{ transition:none; }
473
+ .${e}__chip-check{ transition:none; }
474
474
  }
475
- .${n}__chip:hover:not(:disabled){
475
+ .${e}__chip:hover:not(:disabled){
476
476
  background:color-mix(in srgb, var(--lattice-foreground) 8%, var(--lattice-background));
477
477
  }
478
- .${n}__chip[aria-pressed='true'], .${n}__chip[aria-checked='true']{
478
+ .${e}__chip[aria-pressed='true'], .${e}__chip[aria-checked='true']{
479
479
  background:color-mix(in srgb, var(--lattice-accent) 14%, var(--lattice-background));
480
480
  border-color:var(--lattice-accent); color:var(--lattice-accent);
481
481
  }
482
- .${n}__control .${n}__chip:focus-visible{
482
+ .${e}__control .${e}__chip:focus-visible{
483
483
  outline:2px solid var(--lattice-focus-ring); outline-offset:1px;
484
484
  }
485
- .${n}__control .${n}__chip:disabled{
485
+ .${e}__control .${e}__chip:disabled{
486
486
  color:var(--lattice-disabled-foreground); background:var(--lattice-disabled-background);
487
487
  border-color:var(--lattice-disabled-border); cursor:not-allowed;
488
488
  }
489
- .${n}__chips[aria-disabled='true']{ cursor:not-allowed; }
490
- .${n}__chips[aria-readonly='true']{ cursor:default; }
491
- .${n}__chips[aria-readonly='true'] .${n}__chip:hover:not([aria-pressed='true']):not([aria-checked='true']){
489
+ .${e}__chips[aria-disabled='true']{ cursor:not-allowed; }
490
+ .${e}__chips[aria-readonly='true']{ cursor:default; }
491
+ .${e}__chips[aria-readonly='true'] .${e}__chip:hover:not([aria-pressed='true']):not([aria-checked='true']){
492
492
  background:var(--lattice-background);
493
493
  }
494
- .${n}__error{
494
+ .${e}__error{
495
495
  display:block; box-sizing:border-box; color:var(--lattice-danger);
496
496
  font-size:calc(var(--lattice-font-size) - 2px); margin-top:calc(var(--lattice-space) / 2);
497
497
  min-width:0; max-width:100%;
498
498
  }
499
- .${n}__item[data-required='true'] .${n}__label::after{
499
+ .${e}__item[data-required='true'] .${e}__label::after{
500
500
  content:' *'; color:var(--lattice-danger);
501
501
  }
502
502
  /* A required item with a hidden (or no) label never draws an orphaned
503
503
  asterisk: the marker lives on the placeholder via requiredHint instead
504
504
  (BACKLOG-0002193). */
505
- .${n}__item[data-label-position='hidden'] .${n}__label::after{ content:none; }
506
- .${n}__custom{ display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 2); min-width:0; }
507
- .${n}__radiogroup,
508
- .${n}__checkboxgroup{
505
+ .${e}__item[data-label-position='hidden'] .${e}__label::after{ content:none; }
506
+ .${e}__custom{ display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 2); min-width:0; }
507
+ .${e}__radiogroup,
508
+ .${e}__checkboxgroup{
509
509
  display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 2); min-width:0;
510
510
  }
511
- .${n}__choice{
511
+ .${e}__choice{
512
512
  display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2);
513
513
  min-height:var(--lattice-row-height); cursor:pointer; user-select:none;
514
514
  }
515
- .${n}__choice input{ flex:0 0 auto; }
516
- .${n}__choice input:disabled + span{ opacity:.6; }
517
- .${n}__control input.${n}__toggle{
515
+ .${e}__choice input{ flex:0 0 auto; }
516
+ .${e}__choice input:disabled + span{ opacity:.6; }
517
+ .${e}__control input.${e}__toggle{
518
518
  appearance:none; -webkit-appearance:none; position:relative;
519
519
  width:calc(var(--lattice-control-size) * 2.2); height:var(--lattice-control-size);
520
520
  padding:0; border:var(--lattice-border-width) solid var(--lattice-border-color);
521
521
  border-radius:calc(var(--lattice-control-size) / 2); background:var(--lattice-border-color);
522
522
  cursor:pointer; transition:background-color .15s ease, border-color .15s ease;
523
523
  }
524
- .${n}__control input.${n}__toggle::before{
524
+ .${e}__control input.${e}__toggle::before{
525
525
  content:''; position:absolute; top:calc(var(--lattice-border-width) * -1);
526
526
  left:calc(var(--lattice-border-width) * -1);
527
527
  width:var(--lattice-control-size); height:var(--lattice-control-size);
@@ -529,34 +529,34 @@
529
529
  border:var(--lattice-border-width) solid var(--lattice-border-color);
530
530
  box-sizing:border-box; transition:transform .15s ease, border-color .15s ease;
531
531
  }
532
- .${n}__control input.${n}__toggle:checked{
532
+ .${e}__control input.${e}__toggle:checked{
533
533
  background:var(--lattice-accent); border-color:var(--lattice-accent);
534
534
  }
535
- .${n}__control input.${n}__toggle:checked::before{
535
+ .${e}__control input.${e}__toggle:checked::before{
536
536
  transform:translateX(calc(var(--lattice-control-size) * 1.2));
537
537
  border-color:var(--lattice-accent);
538
538
  }
539
- .${n}__control input.${n}__toggle:disabled{
539
+ .${e}__control input.${e}__toggle:disabled{
540
540
  background:var(--lattice-disabled-background); border-color:var(--lattice-disabled-border); cursor:not-allowed;
541
541
  }
542
- .${n}__control input.${n}__toggle:disabled::before{
542
+ .${e}__control input.${e}__toggle:disabled::before{
543
543
  background:var(--lattice-disabled-background); border-color:var(--lattice-disabled-border);
544
544
  }
545
- .${n}__control input.${n}__toggle:checked:disabled{
545
+ .${e}__control input.${e}__toggle:checked:disabled{
546
546
  background:var(--lattice-disabled-foreground); border-color:var(--lattice-disabled-foreground);
547
547
  }
548
- .${n}__control input.${n}__toggle:checked:disabled::before{
548
+ .${e}__control input.${e}__toggle:checked:disabled::before{
549
549
  border-color:var(--lattice-disabled-foreground);
550
550
  }
551
- .${n}__datepicker{ position:relative; display:block; }
552
- .${n}__datepicker .${n}__datepicker-input{
551
+ .${e}__datepicker{ position:relative; display:block; }
552
+ .${e}__datepicker .${e}__datepicker-input{
553
553
  width:100%;
554
554
  padding-right:calc(var(--lattice-space) * 1.5 + (var(--lattice-control-size) * var(--lattice-scale)) + calc(var(--lattice-space) / 2));
555
555
  }
556
556
  /* The open trigger is an icon inside the input's right edge, not a separate
557
557
  box beside it (BACKLOG-0002174): the same size, colour and inset as the
558
558
  select's and combo's drop-down arrows. */
559
- .${n}__datepicker .${n}__datepicker-toggle{
559
+ .${e}__datepicker .${e}__datepicker-toggle{
560
560
  position:absolute; top:50%; right:calc(var(--lattice-space) * 1.5 + var(--lattice-border-width));
561
561
  transform:translateY(-50%);
562
562
  display:inline-flex; align-items:center; justify-content:center;
@@ -565,15 +565,15 @@
565
565
  min-height:0; padding:0; margin:0; border:0; background:transparent;
566
566
  color:var(--lattice-foreground-muted); cursor:pointer;
567
567
  }
568
- .${n}__datepicker .${n}__datepicker-toggle:hover,
569
- .${n}__datepicker .${n}__datepicker-toggle:focus-visible{ color:var(--lattice-foreground); }
570
- .${n}__datepicker .${n}__datepicker-toggle:focus-visible{
568
+ .${e}__datepicker .${e}__datepicker-toggle:hover,
569
+ .${e}__datepicker .${e}__datepicker-toggle:focus-visible{ color:var(--lattice-foreground); }
570
+ .${e}__datepicker .${e}__datepicker-toggle:focus-visible{
571
571
  outline:2px solid var(--lattice-focus-ring); outline-offset:2px;
572
572
  }
573
- .${n}__datepicker .${n}__datepicker-toggle:disabled{
573
+ .${e}__datepicker .${e}__datepicker-toggle:disabled{
574
574
  color:var(--lattice-disabled-foreground); cursor:not-allowed;
575
575
  }
576
- .${n}__datepicker-popup{
576
+ .${e}__datepicker-popup{
577
577
  position:absolute; top:calc(100% + var(--lattice-space) / 2); left:0; z-index:10;
578
578
  box-sizing:border-box; width:max-content; min-width:100%; padding:var(--lattice-space);
579
579
  display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 2);
@@ -581,78 +581,78 @@
581
581
  border-radius:var(--lattice-radius); background:var(--lattice-background);
582
582
  box-shadow:0 4px 12px color-mix(in srgb, var(--lattice-foreground) 20%, transparent);
583
583
  }
584
- .${n}__datepicker-popup[hidden]{ display:none; }
585
- .${n}__datepicker-head{ display:flex; flex-direction:row; align-items:center; gap:calc(var(--lattice-space) / 2); }
586
- .${n}__datepicker .${n}__datepicker-nav{ flex:0 0 auto; width:var(--lattice-row-height); cursor:pointer; padding:0; }
587
- .${n}__datepicker-title{ flex:1 1 auto; text-align:center; font-weight:600; }
588
- .${n}__datepicker-weekdays{
584
+ .${e}__datepicker-popup[hidden]{ display:none; }
585
+ .${e}__datepicker-head{ display:flex; flex-direction:row; align-items:center; gap:calc(var(--lattice-space) / 2); }
586
+ .${e}__datepicker .${e}__datepicker-nav{ flex:0 0 auto; width:var(--lattice-row-height); cursor:pointer; padding:0; }
587
+ .${e}__datepicker-title{ flex:1 1 auto; text-align:center; font-weight:600; }
588
+ .${e}__datepicker-weekdays{
589
589
  display:grid; grid-template-columns:repeat(7, 1fr); text-align:center;
590
590
  color:var(--lattice-foreground-muted); font-size:calc(var(--lattice-font-size) - 2px);
591
591
  }
592
- .${n}__datepicker-grid{ display:grid; grid-template-columns:repeat(7, 1fr); gap:2px; }
593
- .${n}__datepicker-blank{ min-height:var(--lattice-row-height); }
594
- .${n}__datepicker .${n}__datepicker-day{
592
+ .${e}__datepicker-grid{ display:grid; grid-template-columns:repeat(7, 1fr); gap:2px; }
593
+ .${e}__datepicker-blank{ min-height:var(--lattice-row-height); }
594
+ .${e}__datepicker .${e}__datepicker-day{
595
595
  height:var(--lattice-row-height); padding:0; border:var(--lattice-border-width) solid transparent;
596
596
  background:none; color:var(--lattice-foreground); cursor:pointer; border-radius:var(--lattice-radius);
597
597
  }
598
- .${n}__datepicker .${n}__datepicker-day:hover:not(:disabled){ background:color-mix(in srgb, var(--lattice-accent) 12%, transparent); }
599
- .${n}__datepicker .${n}__datepicker-day:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
600
- .${n}__datepicker .${n}__datepicker-day:disabled{ opacity:.35; cursor:not-allowed; }
601
- .${n}__datepicker .${n}__datepicker-day.is-selected{ background:var(--lattice-accent); color:#ffffff; border-color:var(--lattice-accent); }
602
- .${n}__datepicker .${n}__datepicker-day.is-focus:not(.is-selected){ border-color:var(--lattice-accent); }
603
- .${n}__datepicker-time{ display:flex; flex-direction:row; align-items:center; gap:calc(var(--lattice-space) / 2); }
604
- .${n}__datepicker .${n}__datepicker-hour,
605
- .${n}__datepicker .${n}__datepicker-minute{ width:4em; flex:0 0 auto; }
606
- .${n}__datepicker .${n}__datepicker-ampm{ flex:0 0 auto; cursor:pointer; width:auto; }
607
- .${n}__datepicker .${n}__datepicker-done{ margin-left:auto; cursor:pointer; width:auto; }
608
- .${n}__file{ display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 2); min-width:0; }
609
- .${n}__file-input{ position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
610
- .${n}__file-zone{
598
+ .${e}__datepicker .${e}__datepicker-day:hover:not(:disabled){ background:color-mix(in srgb, var(--lattice-accent) 12%, transparent); }
599
+ .${e}__datepicker .${e}__datepicker-day:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
600
+ .${e}__datepicker .${e}__datepicker-day:disabled{ opacity:.35; cursor:not-allowed; }
601
+ .${e}__datepicker .${e}__datepicker-day.is-selected{ background:var(--lattice-accent); color:#ffffff; border-color:var(--lattice-accent); }
602
+ .${e}__datepicker .${e}__datepicker-day.is-focus:not(.is-selected){ border-color:var(--lattice-accent); }
603
+ .${e}__datepicker-time{ display:flex; flex-direction:row; align-items:center; gap:calc(var(--lattice-space) / 2); }
604
+ .${e}__datepicker .${e}__datepicker-hour,
605
+ .${e}__datepicker .${e}__datepicker-minute{ width:4em; flex:0 0 auto; }
606
+ .${e}__datepicker .${e}__datepicker-ampm{ flex:0 0 auto; cursor:pointer; width:auto; }
607
+ .${e}__datepicker .${e}__datepicker-done{ margin-left:auto; cursor:pointer; width:auto; }
608
+ .${e}__file{ display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 2); min-width:0; }
609
+ .${e}__file-input{ position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
610
+ .${e}__file-zone{
611
611
  display:flex; flex-direction:column; align-items:center; gap:calc(var(--lattice-space) / 2);
612
612
  box-sizing:border-box; padding:var(--lattice-space); border:var(--lattice-border-width) dashed var(--lattice-border-color);
613
613
  border-radius:var(--lattice-radius); background:var(--lattice-background); text-align:center;
614
614
  }
615
- .${n}__file-zone.is-dragover{ border-color:var(--lattice-accent); background:color-mix(in srgb, var(--lattice-accent) 8%, var(--lattice-background)); }
616
- .${n}__file-drop{ color:var(--lattice-foreground-muted); }
617
- .${n}__file-button{
615
+ .${e}__file-zone.is-dragover{ border-color:var(--lattice-accent); background:color-mix(in srgb, var(--lattice-accent) 8%, var(--lattice-background)); }
616
+ .${e}__file-drop{ color:var(--lattice-foreground-muted); }
617
+ .${e}__file-button{
618
618
  display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2); box-sizing:border-box;
619
619
  height:var(--lattice-row-height); padding:calc(var(--lattice-space) / 2) calc(var(--lattice-space) * 1.5);
620
620
  border:var(--lattice-border-width) solid var(--lattice-border-color); border-radius:var(--lattice-radius);
621
621
  background:var(--lattice-background); color:var(--lattice-foreground); font:inherit; line-height:inherit; cursor:pointer; width:auto;
622
622
  }
623
- .${n}__file-button svg{ width:var(--lattice-control-size); height:var(--lattice-control-size); }
624
- .${n}__file-button:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
625
- .${n}__file-hint{ color:var(--lattice-foreground-muted); font-size:calc(var(--lattice-font-size) - 2px); }
626
- .${n}__file-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 2); }
627
- .${n}__file-item{
623
+ .${e}__file-button svg{ width:var(--lattice-control-size); height:var(--lattice-control-size); }
624
+ .${e}__file-button:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
625
+ .${e}__file-hint{ color:var(--lattice-foreground-muted); font-size:calc(var(--lattice-font-size) - 2px); }
626
+ .${e}__file-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 2); }
627
+ .${e}__file-item{
628
628
  display:flex; align-items:center; gap:calc(var(--lattice-space) / 2); box-sizing:border-box; min-height:var(--lattice-row-height);
629
629
  padding:calc(var(--lattice-space) / 2) calc(var(--lattice-space)); border:var(--lattice-border-width) solid var(--lattice-border-color);
630
630
  border-radius:var(--lattice-radius); background:var(--lattice-background);
631
631
  }
632
- .${n}__file-item svg{ width:var(--lattice-control-size); height:var(--lattice-control-size); flex:0 0 auto; color:var(--lattice-foreground-muted); }
633
- .${n}__file-name{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
634
- .${n}__file-size{ color:var(--lattice-foreground-muted); font-size:calc(var(--lattice-font-size) - 2px); flex:0 0 auto; }
635
- .${n}__file-bar{ flex:0 0 96px; height:4px; border-radius:2px; background:color-mix(in srgb, var(--lattice-border-color) 60%, transparent); overflow:hidden; }
636
- .${n}__file-fill{ display:block; height:100%; background:var(--lattice-accent); }
637
- .${n}__file-item.is-done > svg:last-of-type, .${n}__file-item.is-done svg{ color:var(--lattice-success); }
638
- .${n}__file-item.is-error > svg, .${n}__file-item.is-rejected > svg{ color:var(--lattice-danger); }
639
- .${n}__file-message{ flex-basis:100%; color:var(--lattice-danger); font-size:calc(var(--lattice-font-size) - 2px); }
640
- .${n}__file-item{ flex-wrap:wrap; }
641
- .${n}__file-actions{ display:inline-flex; gap:calc(var(--lattice-space) / 2); flex:0 0 auto; }
642
- .${n}__file-remove, .${n}__file-retry{
632
+ .${e}__file-item svg{ width:var(--lattice-control-size); height:var(--lattice-control-size); flex:0 0 auto; color:var(--lattice-foreground-muted); }
633
+ .${e}__file-name{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
634
+ .${e}__file-size{ color:var(--lattice-foreground-muted); font-size:calc(var(--lattice-font-size) - 2px); flex:0 0 auto; }
635
+ .${e}__file-bar{ flex:0 0 96px; height:4px; border-radius:2px; background:color-mix(in srgb, var(--lattice-border-color) 60%, transparent); overflow:hidden; }
636
+ .${e}__file-fill{ display:block; height:100%; background:var(--lattice-accent); }
637
+ .${e}__file-item.is-done > svg:last-of-type, .${e}__file-item.is-done svg{ color:var(--lattice-success); }
638
+ .${e}__file-item.is-error > svg, .${e}__file-item.is-rejected > svg{ color:var(--lattice-danger); }
639
+ .${e}__file-message{ flex-basis:100%; color:var(--lattice-danger); font-size:calc(var(--lattice-font-size) - 2px); }
640
+ .${e}__file-item{ flex-wrap:wrap; }
641
+ .${e}__file-actions{ display:inline-flex; gap:calc(var(--lattice-space) / 2); flex:0 0 auto; }
642
+ .${e}__file-remove, .${e}__file-retry{
643
643
  display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box; width:calc(var(--lattice-row-height) - 8px); height:calc(var(--lattice-row-height) - 8px);
644
644
  border:0; background:none; color:var(--lattice-foreground-muted); cursor:pointer; border-radius:var(--lattice-radius); padding:0;
645
645
  }
646
- .${n}__file-remove svg, .${n}__file-retry svg{ width:var(--lattice-control-size); height:var(--lattice-control-size); }
647
- .${n}__file-remove:hover, .${n}__file-retry:hover{ background:color-mix(in srgb, var(--lattice-foreground) 8%, transparent); color:var(--lattice-foreground); }
648
- .${n}__file[aria-disabled='true'], .${n}__file[aria-readonly='true']{ opacity:.6; }
649
- .${n}__file[aria-disabled='true'] .${n}__file-button, .${n}__file[aria-readonly='true'] .${n}__file-button{ cursor:not-allowed; }
650
- .${n}__richtext{
646
+ .${e}__file-remove svg, .${e}__file-retry svg{ width:var(--lattice-control-size); height:var(--lattice-control-size); }
647
+ .${e}__file-remove:hover, .${e}__file-retry:hover{ background:color-mix(in srgb, var(--lattice-foreground) 8%, transparent); color:var(--lattice-foreground); }
648
+ .${e}__file[aria-disabled='true'], .${e}__file[aria-readonly='true']{ opacity:.6; }
649
+ .${e}__file[aria-disabled='true'] .${e}__file-button, .${e}__file[aria-readonly='true'] .${e}__file-button{ cursor:not-allowed; }
650
+ .${e}__richtext{
651
651
  display:flex; flex-direction:column; box-sizing:border-box; min-width:0; position:relative;
652
652
  border:var(--lattice-border-width) solid var(--lattice-border-color); border-radius:var(--lattice-radius);
653
653
  background:var(--lattice-background); color:var(--lattice-foreground);
654
654
  }
655
- .${n}__richtext-toolbar{
655
+ .${e}__richtext-toolbar{
656
656
  display:flex; flex-wrap:wrap; align-items:center; gap:2px; padding:calc(var(--lattice-space) / 2);
657
657
  border-bottom:var(--lattice-border-width) solid var(--lattice-border-color);
658
658
  }
@@ -660,108 +660,106 @@
660
660
  so they win over the form's generic control rule (.lat-form__control
661
661
  button / select), which would otherwise make every toolbar button a
662
662
  full-width control-height row stacked one per line (BACKLOG-0002173). */
663
- .${n}__richtext .${n}__richtext-btn{
663
+ .${e}__richtext .${e}__richtext-btn{
664
664
  display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box;
665
665
  width:calc(var(--lattice-row-height) - 4px); height:calc(var(--lattice-row-height) - 4px);
666
666
  min-height:0; border:0; background:none; color:var(--lattice-foreground);
667
667
  font:inherit; line-height:1; cursor:pointer; border-radius:var(--lattice-radius); padding:0;
668
668
  }
669
- .${n}__richtext .${n}__richtext-btn svg{ width:calc(var(--lattice-control-size) + 2px); height:calc(var(--lattice-control-size) + 2px); }
670
- .${n}__richtext .${n}__richtext-btn:hover, .${n}__richtext .${n}__richtext-btn.is-active{ background:color-mix(in srgb, var(--lattice-accent) 14%, var(--lattice-background)); color:var(--lattice-accent); }
671
- .${n}__richtext .${n}__richtext-btn:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
672
- .${n}__richtext .${n}__richtext-btn:disabled{ color:var(--lattice-disabled-foreground); cursor:not-allowed; }
673
- .${n}__richtext .${n}__richtext-btntext{ font-weight:600; font-size:calc(var(--lattice-font-size) - 1px); }
674
- .${n}__richtext .${n}__richtext-sep{ width:1px; height:calc(var(--lattice-row-height) - 12px); background:var(--lattice-border-color); margin:0 2px; }
675
- .${n}__richtext .${n}__richtext-select{
669
+ .${e}__richtext .${e}__richtext-btn svg{ width:calc(var(--lattice-control-size) + 2px); height:calc(var(--lattice-control-size) + 2px); }
670
+ .${e}__richtext .${e}__richtext-btn:hover, .${e}__richtext .${e}__richtext-btn.is-active{ background:color-mix(in srgb, var(--lattice-accent) 14%, var(--lattice-background)); color:var(--lattice-accent); }
671
+ .${e}__richtext .${e}__richtext-btn:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
672
+ .${e}__richtext .${e}__richtext-btn:disabled{ color:var(--lattice-disabled-foreground); cursor:not-allowed; }
673
+ .${e}__richtext .${e}__richtext-btntext{ font-weight:600; font-size:calc(var(--lattice-font-size) - 1px); }
674
+ .${e}__richtext .${e}__richtext-sep{ width:1px; height:calc(var(--lattice-row-height) - 12px); background:var(--lattice-border-color); margin:0 2px; }
675
+ .${e}__richtext .${e}__richtext-select{
676
676
  box-sizing:border-box; width:auto; max-width:200px; height:calc(var(--lattice-row-height) - 4px); min-height:0;
677
677
  border:var(--lattice-border-width) solid var(--lattice-border-color);
678
678
  border-radius:var(--lattice-radius); background:var(--lattice-background); color:var(--lattice-foreground);
679
679
  font:inherit; line-height:1; padding:0 calc(var(--lattice-space) / 2);
680
680
  }
681
- .${n}__richtext-editor{
681
+ .${e}__richtext-editor{
682
682
  box-sizing:border-box; padding:var(--lattice-space); overflow:auto; outline:none; min-height:160px;
683
683
  }
684
- .${n}__richtext-editor:focus{ outline:2px solid var(--lattice-focus-ring); outline-offset:-2px; }
685
- .${n}__richtext-editor[data-placeholder]:empty::before{ content:attr(data-placeholder); color:var(--lattice-foreground-muted); }
686
- .${n}__richtext-source{
684
+ .${e}__richtext-editor:focus{ outline:2px solid var(--lattice-focus-ring); outline-offset:-2px; }
685
+ .${e}__richtext-editor[data-placeholder]:empty::before{ content:attr(data-placeholder); color:var(--lattice-foreground-muted); }
686
+ .${e}__richtext-source{
687
687
  box-sizing:border-box; width:100%; min-height:160px; border:0; padding:var(--lattice-space);
688
688
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:calc(var(--lattice-font-size) - 1px);
689
689
  background:var(--lattice-background); color:var(--lattice-foreground); resize:vertical;
690
690
  }
691
- .${n}__richtext-file{ position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
692
- .${n}__richtext-popover{
691
+ .${e}__richtext-file{ position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
692
+ .${e}__richtext-popover{
693
693
  position:absolute; z-index:2; box-sizing:border-box; padding:calc(var(--lattice-space) / 2);
694
694
  border:var(--lattice-border-width) solid var(--lattice-border-color); border-radius:var(--lattice-radius);
695
695
  background:var(--lattice-background); box-shadow:0 4px 16px color-mix(in srgb, #000 18%, transparent);
696
696
  }
697
- .${n}__richtext-swatches{ display:flex; flex-wrap:wrap; gap:2px; max-width:180px; }
698
- .${n}__richtext-swatch{ width:22px; height:22px; border:1px solid var(--lattice-border-color); border-radius:3px; cursor:pointer; padding:0; }
699
- .${n}__richtext-poprow{ display:flex; align-items:center; gap:calc(var(--lattice-space) / 2); margin-top:calc(var(--lattice-space) / 2); }
700
- .${n}__richtext-linkinput, .${n}__richtext-colorinput{
697
+ .${e}__richtext-poprow{ display:flex; align-items:center; gap:calc(var(--lattice-space) / 2); margin-top:calc(var(--lattice-space) / 2); }
698
+ .${e}__richtext-linkinput, .${e}__richtext-colorinput{
701
699
  box-sizing:border-box; height:var(--lattice-row-height); min-width:0; flex:1 1 auto;
702
700
  border:var(--lattice-border-width) solid var(--lattice-border-color); border-radius:var(--lattice-radius);
703
701
  background:var(--lattice-background); color:var(--lattice-foreground); font:inherit; padding:calc(var(--lattice-space) / 2);
704
702
  }
705
- .${n}__richtext-linkinput.is-invalid{ border-color:var(--lattice-danger); }
706
- .${n}__richtext-popbtn{
703
+ .${e}__richtext-linkinput.is-invalid{ border-color:var(--lattice-danger); }
704
+ .${e}__richtext-popbtn{
707
705
  box-sizing:border-box; height:var(--lattice-row-height); border:var(--lattice-border-width) solid var(--lattice-border-color);
708
706
  border-radius:var(--lattice-radius); background:var(--lattice-background); color:var(--lattice-foreground); font:inherit; cursor:pointer;
709
707
  padding:0 calc(var(--lattice-space) * 1.25); white-space:nowrap;
710
708
  }
711
- .${n}__richtext[aria-disabled='true']{ color:var(--lattice-disabled-foreground); border-color:var(--lattice-disabled-border); cursor:not-allowed; }
712
- .${n}__richtext[aria-disabled='true'] .${n}__richtext-toolbar{ color:var(--lattice-disabled-foreground); }
713
- .${n}__richtext[aria-readonly='true']{ cursor:default; }
714
- .${n}__richtext[aria-readonly='true'] .${n}__richtext-editor{ background:var(--lattice-readonly-background); }
715
- .${n}__richtext .${n}__richtext-editor p{ margin:0 0 calc(var(--lattice-space) / 2); }
716
- .${n}__stepper{
709
+ .${e}__richtext[aria-disabled='true']{ color:var(--lattice-disabled-foreground); border-color:var(--lattice-disabled-border); cursor:not-allowed; }
710
+ .${e}__richtext[aria-disabled='true'] .${e}__richtext-toolbar{ color:var(--lattice-disabled-foreground); }
711
+ .${e}__richtext[aria-readonly='true']{ cursor:default; }
712
+ .${e}__richtext[aria-readonly='true'] .${e}__richtext-editor{ background:var(--lattice-readonly-background); }
713
+ .${e}__richtext .${e}__richtext-editor p{ margin:0 0 calc(var(--lattice-space) / 2); }
714
+ .${e}__stepper{
717
715
  box-sizing:border-box; margin-bottom:var(--lattice-space);
718
716
  }
719
- .${n}__stepper-list{
717
+ .${e}__stepper-list{
720
718
  display:flex; list-style:none; margin:0; padding:0; gap:calc(var(--lattice-space) * 1.5);
721
719
  }
722
- .${n}__stepper--vertical .${n}__stepper-list{ flex-direction:column; gap:var(--lattice-space); }
723
- .${n}__stepper-item{ display:flex; align-items:center; margin:0; padding:0; }
724
- .${n}__stepper-step{
720
+ .${e}__stepper--vertical .${e}__stepper-list{ flex-direction:column; gap:var(--lattice-space); }
721
+ .${e}__stepper-item{ display:flex; align-items:center; margin:0; padding:0; }
722
+ .${e}__stepper-step{
725
723
  display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2);
726
724
  box-sizing:border-box; border:0; background:none; padding:calc(var(--lattice-space) / 2) 0;
727
725
  color:var(--lattice-foreground-muted); font:inherit; line-height:inherit; cursor:pointer;
728
726
  }
729
- .${n}__stepper-step:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
730
- .${n}__stepper-marker{
727
+ .${e}__stepper-step:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
728
+ .${e}__stepper-marker{
731
729
  display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box;
732
730
  width:calc(var(--lattice-row-height) - 4px); height:calc(var(--lattice-row-height) - 4px);
733
731
  border:var(--lattice-border-width) solid var(--lattice-border-color);
734
732
  border-radius:50%; font-size:calc(var(--lattice-font-size) - 1px); line-height:1;
735
733
  background:var(--lattice-background); color:var(--lattice-foreground-muted);
736
734
  }
737
- .${n}__stepper-item.is-active .${n}__stepper-marker{
735
+ .${e}__stepper-item.is-active .${e}__stepper-marker{
738
736
  border-color:var(--lattice-accent); color:var(--lattice-accent); font-weight:700;
739
737
  }
740
- .${n}__stepper-item.is-active .${n}__stepper-label{ color:var(--lattice-foreground); font-weight:600; }
741
- .${n}__stepper-item.is-complete .${n}__stepper-marker{
738
+ .${e}__stepper-item.is-active .${e}__stepper-label{ color:var(--lattice-foreground); font-weight:600; }
739
+ .${e}__stepper-item.is-complete .${e}__stepper-marker{
742
740
  background:var(--lattice-accent); border-color:var(--lattice-accent); color:#ffffff;
743
741
  }
744
- .${n}__stepper-item.is-error .${n}__stepper-marker{
742
+ .${e}__stepper-item.is-error .${e}__stepper-marker{
745
743
  background:var(--lattice-danger); border-color:var(--lattice-danger); color:#ffffff;
746
744
  }
747
- .${n}__stepper-item.is-locked .${n}__stepper-step{ cursor:not-allowed; opacity:.5; }
748
- .${n}__step{ display:flex; flex-direction:column; gap:var(--lattice-space); min-width:0; min-height:0; }
749
- .${n}__step[hidden]{ display:none; }
750
- .${n}__step-nav{ display:flex; flex-direction:row; gap:var(--lattice-space); margin-top:var(--lattice-space); }
751
- .${n}__step-nav button{
745
+ .${e}__stepper-item.is-locked .${e}__stepper-step{ cursor:not-allowed; opacity:.5; }
746
+ .${e}__step{ display:flex; flex-direction:column; gap:var(--lattice-space); min-width:0; min-height:0; }
747
+ .${e}__step[hidden]{ display:none; }
748
+ .${e}__step-nav{ display:flex; flex-direction:row; gap:var(--lattice-space); margin-top:var(--lattice-space); }
749
+ .${e}__step-nav button{
752
750
  box-sizing:border-box; min-height:var(--lattice-row-height);
753
751
  padding:calc(var(--lattice-space) / 2) calc(var(--lattice-space) * 1.5);
754
752
  border:var(--lattice-border-width) solid var(--lattice-border-color);
755
753
  border-radius:var(--lattice-radius); background:var(--lattice-background);
756
754
  color:var(--lattice-foreground); font:inherit; line-height:inherit; cursor:pointer;
757
755
  }
758
- .${n}__step-nav button:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
759
- .${n}__step-nav button:disabled{
756
+ .${e}__step-nav button:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
757
+ .${e}__step-nav button:disabled{
760
758
  color:var(--lattice-disabled-foreground); background:var(--lattice-disabled-background);
761
759
  border-color:var(--lattice-disabled-border); cursor:not-allowed;
762
760
  }
763
- .${n}__step-next{ background:var(--lattice-accent); border-color:var(--lattice-accent); color:#ffffff; }
764
- @scope ([data-theme="dark"]){:scope.${n},.${n}{
761
+ .${e}__step-next{ background:var(--lattice-accent); border-color:var(--lattice-accent); color:#ffffff; }
762
+ @scope ([data-theme="dark"]){:scope.${e},.${e}{
765
763
  color-scheme:dark;
766
764
  --lattice-background:#14181c;
767
765
  --lattice-foreground:#e4e9ee;
@@ -770,8 +768,8 @@
770
768
  --lattice-accent:#4e9bea;
771
769
  --lattice-focus-ring:#6cb0f2;
772
770
  }}
773
- @scope ([data-theme="light"],[data-theme="auto"]){:scope.${n},.${n}{color-scheme:light}}
774
- @media (prefers-color-scheme:dark){@scope ([data-theme="auto"]){:scope.${n},.${n}{
771
+ @scope ([data-theme="light"],[data-theme="auto"]){:scope.${e},.${e}{color-scheme:light}}
772
+ @media (prefers-color-scheme:dark){@scope ([data-theme="auto"]){:scope.${e},.${e}{
775
773
  color-scheme:dark;
776
774
  --lattice-background:#14181c;
777
775
  --lattice-foreground:#e4e9ee;
@@ -780,44 +778,147 @@
780
778
  --lattice-accent:#4e9bea;
781
779
  --lattice-focus-ring:#6cb0f2;
782
780
  }}}
783
- .${n}__password{ position:relative; display:flex; flex:1 1 auto; min-width:0; }
784
- .${n}__password input{ padding-right:calc(var(--lattice-row-height) * 0.9); }
785
- .${n}__password .${n}__password-btn{
781
+ .${e}__password{ position:relative; display:flex; flex:1 1 auto; min-width:0; }
782
+ .${e}__password input{ padding-right:calc(var(--lattice-row-height) * 0.9); }
783
+ .${e}__password .${e}__password-btn{
786
784
  position:absolute; top:0; right:0; height:100%; width:calc(var(--lattice-row-height) * 0.9);
787
785
  min-height:0; box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center;
788
786
  padding:0; border:0; border-radius:0; background:none; color:var(--lattice-foreground-muted);
789
787
  font:inherit; line-height:inherit; cursor:pointer;
790
788
  }
791
- .${n}__password .${n}__password-btn svg{ width:var(--lattice-control-size); height:var(--lattice-control-size); }
792
- .${n}__password .${n}__password-btn:hover{ color:var(--lattice-foreground); }
793
- .${n}__password .${n}__password-btn:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-2px; }
794
- .${n}__password .${n}__password-btn:disabled{
789
+ .${e}__password .${e}__password-btn svg{ width:var(--lattice-control-size); height:var(--lattice-control-size); }
790
+ .${e}__password .${e}__password-btn:hover{ color:var(--lattice-foreground); }
791
+ .${e}__password .${e}__password-btn:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-2px; }
792
+ .${e}__password .${e}__password-btn:disabled{
795
793
  color:var(--lattice-disabled-foreground); cursor:not-allowed;
796
794
  }
797
- .${n}__otp{ display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2); min-width:0; }
798
- .${n}__otp .${n}__otp-input{
795
+ .${e}__otp{ display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2); min-width:0; }
796
+ .${e}__otp .${e}__otp-input{
799
797
  box-sizing:border-box; width:calc(var(--lattice-row-height) * 1.1); height:var(--lattice-row-height); min-height:0;
800
798
  padding:0; text-align:center; border:var(--lattice-border-width) solid var(--lattice-border-color);
801
799
  border-radius:var(--lattice-radius); background:var(--lattice-background); color:var(--lattice-foreground);
802
800
  font:inherit; line-height:inherit; font-variant-numeric:tabular-nums;
803
801
  }
804
- .${n}__otp .${n}__otp-input--masked{ -webkit-text-security:disc; text-security:disc; }
805
- .${n}__otp .${n}__otp-input:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
806
- .${n}__otp .${n}__otp-input:disabled{
802
+ .${e}__otp .${e}__otp-input--masked{ -webkit-text-security:disc; text-security:disc; }
803
+ .${e}__otp .${e}__otp-input:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:-1px; }
804
+ .${e}__otp .${e}__otp-input:disabled{
807
805
  color:var(--lattice-disabled-foreground); background:var(--lattice-disabled-background);
808
806
  border-color:var(--lattice-disabled-border); cursor:not-allowed;
809
807
  }
810
- .${n}__otp .${n}__otp-input[readonly]{
808
+ .${e}__otp .${e}__otp-input[readonly]{
811
809
  background:var(--lattice-readonly-background); border-color:var(--lattice-readonly-border);
812
810
  }
813
- .${n}__otp[aria-invalid='true'] .${n}__otp-input{ border-color:var(--lattice-danger); }
814
- `.trim()}function ee(z){const E=z&&z.documentElement;if(!E||E.getAttribute(P))return;E.setAttribute(P,"1");const _=z.createElement("style");_.textContent=v(),(z.head||z.body||E).appendChild(_)}function s(z,E){const _=`lat-cols-bp-${String(E).replace(/[^0-9]/g,"")}`,T=`data-lattice-cols-breakpoint-${_}`,k=z&&z.documentElement;if(k&&!k.querySelector(`style[${T}]`)){const f=z.createElement("style");f.setAttribute(T,"1"),f.textContent=`@container ${_} (max-width:${E}px){.${n}__cols > *{flex:1 1 100%}}`,(z.head||z.body||k).appendChild(f)}return _}}),ge("packages/modules/form/controls/registry.js",function(R,Y){"use strict";Object.defineProperty(R,"registerControl",{enumerable:!0,get:function(){return P}}),Object.defineProperty(R,"resolveControl",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"controlTypes",{enumerable:!0,get:function(){return ee}});const n=new Map;function P(s,z){n.set(s,z)}function v(s){return n.get(s)||null}function ee(){return[...n.keys()]}}),ge("packages/modules/form/validation.js",function(R,Y){"use strict";Object.defineProperty(R,"VALIDATION_MODES",{enumerable:!0,get:function(){return n}}),Object.defineProperty(R,"BUILTIN_RULES",{enumerable:!0,get:function(){return P}}),Object.defineProperty(R,"isEmpty",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"resolveValidationMode",{enumerable:!0,get:function(){return s}}),Object.defineProperty(R,"validateValue",{enumerable:!0,get:function(){return k}}),Object.defineProperty(R,"normalizeHookResult",{enumerable:!0,get:function(){return f}});const n=Object.freeze(["change","blur","submit"]),P=Object.freeze(["email","number","integer","url"]),v=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function ee(p){return p==null||p===""||p===!1||Array.isArray(p)&&p.length===0}function s(p){return n.includes(p)?p:"submit"}function z(p){return Object.prototype.toString.call(p)==="[object RegExp]"}function E(p,l){if(p==="email")return typeof l=="string"&&v.test(l);if(p==="number")return Number.isFinite(Number(l));if(p==="integer")return typeof l=="number"?Number.isInteger(l):typeof l=="string"&&/^-?\d+$/.test(l);if(p==="url"){if(typeof l!="string")return!1;try{const j=new URL(l);return j.protocol==="http:"||j.protocol==="https:"}catch{return!1}}return!0}function _(p,l){return typeof p.errorMessage=="string"&&p.errorMessage!==""?p.errorMessage:l}function T(p,l,j,$){let t;try{t=p(l,j)}catch{return{code:"custom",message:_(j,$("form.validation.custom"))}}return t===!0||t===void 0||t===null?null:t===!1?{code:"custom",message:_(j,$("form.validation.custom"))}:{code:"custom",message:String(t)}}function k(p,l,j,$){if((p.required===!0||$===!0)&&ee(l))return{code:"required",message:_(p,j("form.validation.required"))};const t=p.validation;return t==null?null:typeof t=="function"?T(t,l,p,j):z(t)?ee(l)||t.test(String(l))?null:{code:"pattern",message:_(p,j("form.validation.pattern"))}:typeof t=="string"&&P.includes(t)?ee(l)||E(t,l)?null:{code:t,message:_(p,j(`form.validation.${t}`))}:null}function f(p,l,j){return p==null||p===!0?null:p===!1?{code:"custom",message:_(l,j("form.validation.custom"))}:typeof p=="string"?{code:"custom",message:p}:typeof p=="object"?{code:p.code||"custom",message:p.message!=null?String(p.message):_(l,j("form.validation.custom"))}:null}}),ge("packages/modules/form/model.js",function(R,Y){"use strict";Object.defineProperty(R,"isEmpty",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"DENSITIES",{enumerable:!0,get:function(){return s}}),Object.defineProperty(R,"CONTROL_TYPES",{enumerable:!0,get:function(){return z}}),Object.defineProperty(R,"cssSize",{enumerable:!0,get:function(){return E}}),Object.defineProperty(R,"resolveLabelPosition",{enumerable:!0,get:function(){return _}}),Object.defineProperty(R,"resolveDensity",{enumerable:!0,get:function(){return T}}),Object.defineProperty(R,"resolveColsBreakpoint",{enumerable:!0,get:function(){return k}}),Object.defineProperty(R,"axisOf",{enumerable:!0,get:function(){return f}}),Object.defineProperty(R,"normalizeItem",{enumerable:!0,get:function(){return p}}),Object.defineProperty(R,"normalizeBlock",{enumerable:!0,get:function(){return l}}),Object.defineProperty(R,"resolveConfig",{enumerable:!0,get:function(){return j}});const P=Y("packages/modules/form/validation.js").resolveValidationMode;function v(t){return t!==null&&typeof t=="object"}function ee(t){return!!(t==null||t===""||t===!1||Array.isArray(t)&&t.length===0)}const s=Object.freeze(["compact","standard","comfortable"]),z=Object.freeze(["input","number","textarea","checkbox","button","text","combo","select","radiogroup","checkboxgroup","toggle","datepicker","file","richtext","rating","stage","chips","otp"]);function E(t){return typeof t=="number"?`${t}px`:String(t)}function _(t){return t==="left"||t==="hidden"?t:"top"}function T(t){return s.includes(t)?t:"standard"}function k(t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:480}function f(t){return Array.isArray(t.items)&&t.items.length?"items":Array.isArray(t.rows)&&t.rows.length?"rows":Array.isArray(t.cols)&&t.cols.length?"cols":null}function p(t,u){const m=t.text!=null&&t.type===void 0,N=m?"text":t.type!=null&&t.type!==""?String(t.type):"input",L=m?t.text:t.value,g={kind:"item",name:t.name!=null&&t.name!==""?String(t.name):null,type:N,label:t.label,labelPosition:t.labelPosition==null?null:_(t.labelPosition),labelWidth:t.labelWidth,requiredHint:t.requiredHint,width:t.width,placeholder:t.placeholder,helpMessage:t.helpMessage,hidden:t.hidden===!0,disabled:t.disabled===!0,readOnly:t.readOnly===!0,tooltip:t.tooltip,lockIcon:t.lockIcon,addons:t.addons,value:L,subtype:t.subtype,step:t.step,min:t.min,max:t.max,rows:t.rows,options:t.options,mode:t.mode,locale:t.locale,timeZone:t.timeZone,css:t.css,visibleWhen:t.visibleWhen,readOnlyWhen:t.readOnlyWhen,requiredWhen:t.requiredWhen,required:t.required===!0,validation:t.validation,errorMessage:t.errorMessage,successMessage:t.successMessage,preMessage:t.preMessage,validationMode:P(t.validationMode),props:{},path:u};for(const r of Object.keys(t))!(r in g)&&r!=="text"&&r!=="value"&&r!=="type"&&(g.props[r]=t[r]);return g}function l(t,u){if(!v(t))return null;if(t.fieldset!=null){const N=v(t.fieldset)?t.fieldset:t,L=v(t.fieldset)?t.fieldset.legend:t.fieldset,g=f(N),r=g==="items"?N.items:g==="rows"?N.rows:g==="cols"?N.cols:[];return{kind:"fieldset",legend:L==null?null:String(L),axis:g,spacing:N.spacing==null?null:E(N.spacing),labelPosition:N.labelPosition==null?null:_(N.labelPosition),labelWidth:N.labelWidth,blocks:r.filter(v).map((x,i)=>l(x,`${u}/${i}`)).filter(Boolean),css:N.css,hidden:N.hidden===!0}}if(t.container!=null){const N=v(t.container)?t.container:t,L=f(N),g=L==="items"?N.items:L==="rows"?N.rows:L==="cols"?N.cols:[];return{kind:"container",axis:L,spacing:N.spacing==null?null:E(N.spacing),labelPosition:N.labelPosition==null?null:_(N.labelPosition),labelWidth:N.labelWidth,blocks:g.filter(v).map((r,x)=>l(r,`${u}/${x}`)).filter(Boolean),css:N.css,hidden:N.hidden===!0}}if(t.panel!=null){const N=v(t.panel)?t.panel:{},L=v(t.panel)&&f(t.panel)?t.panel:t,g=f(L),r=g==="items"?L.items:g==="rows"?L.rows:g==="cols"?L.cols:[],x=Array.isArray(N.actions)?N.actions.filter(v).map(i=>({icon:i.icon,ariaLabel:i.ariaLabel!=null&&i.ariaLabel!==""?String(i.ariaLabel):null,onClick:typeof i.onClick=="function"?i.onClick:null})):[];return{kind:"panel",title:N.title!=null&&N.title!==""?String(N.title):null,subtitle:N.subtitle!=null&&N.subtitle!==""?String(N.subtitle):null,actions:x,collapsible:N.collapsible===!0,axis:g,spacing:L.spacing==null?null:E(L.spacing),labelPosition:L.labelPosition==null?null:_(L.labelPosition),labelWidth:L.labelWidth,blocks:r.filter(v).map((i,o)=>l(i,`${u}/${o}`)).filter(Boolean),css:L.css,hidden:L.hidden===!0}}const m=f(t);if(m){const N=m==="items"?t.items:m==="rows"?t.rows:t.cols;return{kind:"container",axis:m,spacing:t.spacing==null?null:E(t.spacing),labelPosition:t.labelPosition==null?null:_(t.labelPosition),labelWidth:t.labelWidth,blocks:N.filter(v).map((L,g)=>l(L,`${u}/${g}`)).filter(Boolean),css:t.css,hidden:t.hidden===!0}}return t.spacer===!0||t.type==="spacer"?{kind:"spacer",css:t.css,hidden:t.hidden===!0}:t.separator===!0||t.type==="separator"?{kind:"separator",label:t.label!=null&&t.label!==""?String(t.label):null,css:t.css,hidden:t.hidden===!0}:p(t,u)}function j(t={}){const u=v(t)?t:{},m=Array.isArray(u.steps)?u.steps.filter(v).map((i,o)=>$(i,o)).filter(Boolean):[],N=m.length>0,L=!N&&Array.isArray(u.rows)&&u.rows.length,g=!N&&!L&&Array.isArray(u.cols)&&u.cols.length,r=L||N?"rows":"cols",x=N?[]:L?u.rows:g?u.cols:[];return{axis:r,density:T(u.density),css:u.css,messages:u.messages,colsBreakpoint:k(u.colsBreakpoint),spacing:u.spacing==null?null:E(u.spacing),labelGap:u.labelGap==null?null:E(u.labelGap),labelPosition:u.labelPosition==null?null:_(u.labelPosition),labelWidth:u.labelWidth,requiredHint:u.requiredHint,blocks:x.filter(v).map((i,o)=>l(i,String(o))).filter(Boolean),steps:m,stepOrientation:u.stepOrientation==="vertical"?"vertical":"horizontal"}}function $(t,u){const N=(Array.isArray(t.rows)?t.rows:[]).filter(v).map((L,g)=>l(L,`step${u}/${g}`)).filter(Boolean);return N.length===0?null:{id:t.id!=null&&t.id!==""?String(t.id):`step-${u}`,label:t.label!=null?String(t.label):null,axis:"rows",blocks:N,css:t.css}}}),ge("packages/modules/form/state.js",function(R,Y){"use strict";Object.defineProperty(R,"applyBooleanInputState",{enumerable:!0,get:function(){return n}}),Object.defineProperty(R,"guardBooleanInput",{enumerable:!0,get:function(){return P}}),Object.defineProperty(R,"syncRootAria",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"syncRecordState",{enumerable:!0,get:function(){return ee}});function n(s,z,E){s.disabled=z===!0,s.__latReadOnly=E===!0,E===!0?s.setAttribute("aria-readonly","true"):s.removeAttribute("aria-readonly")}function P(s){const z=()=>s.__latReadOnly===!0,E=f=>{z()&&f.preventDefault()},_=f=>{z()&&(f.preventDefault(),f.stopPropagation())},T=f=>{z()&&(f.key===" "||f.key==="Enter")&&f.preventDefault()},k=f=>{z()&&f.key===" "&&f.preventDefault()};s.addEventListener("pointerdown",E),s.addEventListener("click",_),s.addEventListener("keydown",T),s.addEventListener("keyup",k)}function v(s,z,E){z?s.setAttribute("aria-disabled","true"):s.removeAttribute("aria-disabled"),E?s.setAttribute("aria-readonly","true"):s.removeAttribute("aria-readonly")}function ee(s){const z=s.item,E=z.disabled===!0,_=z.readOnly===!0||s.ruleReadOnly===!0;s.controlWrap&&(s.controlWrap.setAttribute("data-disabled",E?"true":"false"),s.controlWrap.setAttribute("data-readonly",_?"true":"false")),s.def.state(s.control,{...z,readOnly:_}),typeof s.syncLock=="function"&&s.syncLock(),typeof s.syncAddons=="function"&&s.syncAddons()}}),ge("packages/modules/form/group-rules.js",function(R,Y){"use strict";Object.defineProperty(R,"attachRuleResolver",{enumerable:!0,get:function(){return P}}),Object.defineProperty(R,"detachRuleResolver",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"ruleResolverFor",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"makeRuleResolver",{enumerable:!0,get:function(){return s}}),Object.defineProperty(R,"reapplyMembers",{enumerable:!0,get:function(){return z}});const n=new WeakMap;function P(E,_){n.set(E,_)}function v(E){n.delete(E)}function ee(E){return n.get(E)}function s(E){const{owners:_,byId:T,warnOnce:k}=E;return function(p,l){if(p==null||typeof p!="object")return;const j=p.name;if(p.form!=null){const t=T.get(p.form);if(!t){k(`form.group.unknown-member:${String(p.form)}`,`form group: a rule pins the member "${p.form}", but no member has that id; the rule reads an empty value.`);return}return j!=null?t.form.getValue()[j]:void 0}if(j==null)return;if(Object.prototype.hasOwnProperty.call(l,j))return l[j];const $=_.get(String(j));if($)return $.form.getValue()[j]}}function z(E){for(const _ of E)_.form&&typeof _.form.__reapplyRules=="function"&&_.form.__reapplyRules()}}),ge("packages/modules/form/rules.js",function(R,Y){"use strict";Object.defineProperty(R,"evalRule",{enumerable:!0,get:function(){return E}}),Object.defineProperty(R,"applyRules",{enumerable:!0,get:function(){return _}});const P=Y("packages/modules/form/model.js").isEmpty,ee=Y("packages/modules/form/state.js").syncRecordState,z=Y("packages/modules/form/group-rules.js").ruleResolverFor;function E(k,f,p){if(k==null)return null;if(typeof k=="function")return!!k(f);if(typeof k=="boolean")return k;if(typeof k=="object"){const l=p?p(k,f):k.name!=null?f[k.name]:void 0;if(typeof k.fn=="function")return!!k.fn(l,f);let j=!0,$=!1;return Object.prototype.hasOwnProperty.call(k,"equals")&&($=!0,j=j&&l===k.equals),Object.prototype.hasOwnProperty.call(k,"in")&&($=!0,j=j&&Array.isArray(k.in)&&k.in.includes(l)),Object.prototype.hasOwnProperty.call(k,"empty")&&($=!0,j=j&&P(l)===!!k.empty),$?j:!1}return!1}function _(k){const f={};for(const l of k.order)l.item.name!=null&&(f[l.item.name]=l.value);const p=k.form?z(k.form):void 0;for(const l of k.order){const j=l.item;l.ruleHidden=E(j.visibleWhen,f,p)===!1,l.ruleReadOnly=E(j.readOnlyWhen,f,p)===!0,l.ruleRequired=E(j.requiredWhen,f,p)===!0,l.el.hidden=l.hidden||l.ruleHidden,ee(l);const $=j.required===!0||l.ruleRequired,t=l.labelEl!=null&&l.labelPosition!=="hidden",u=l.placeholderEl||l.control;$?u.setAttribute("aria-required","true"):u.removeAttribute("aria-required"),$&&t?l.el.setAttribute("data-required","true"):l.el.removeAttribute("data-required"),T(l,$,t,m=>k.t(m))}}function T(k,f,p,l){const j=k.placeholderEl;if(!j)return;const $=k.placeholderBase;if(f&&!p&&$!==""){const t=k.requiredHint,u=t===!1?"":typeof t=="string"?l(t):" *";j.placeholder=$+u}else j.placeholder=$}}),ge("packages/modules/form/stepper.js",function(R,Y){"use strict";Object.defineProperty(R,"createStepper",{enumerable:!0,get:function(){return ee}});const P=Y("packages/modules/form/styles.js").NS;function v(s,z,E){return Math.min(E,Math.max(z,s))}function ee(s,z){const E=z.doc,_=z.steps||[],T=z.t||(g=>g),k=z.orientation==="vertical"?"vertical":"horizontal";let f=v(Number(z.active)||0,0,Math.max(0,_.length-1));const p=[];s.className=`${P}__stepper ${P}__stepper--${k}`,s.setAttribute("data-orientation",k),s.setAttribute("role","navigation"),s.setAttribute("aria-label",T("form.steps"));const l=E.createElement("ol");l.className=`${P}__stepper-list`,l.setAttribute("role","tablist"),l.setAttribute("aria-orientation",k),s.appendChild(l);let j=[];const $=g=>p[g]?p[g]:g<f?"complete":g===f?"active":"pending",t=g=>g<=f+1,u=()=>{l.textContent="",j=_.map((g,r)=>{const x=$(r),i=E.createElement("li");i.className=`${P}__stepper-item is-${x}`+(r===f?" is-active":"")+(t(r)?"":" is-locked");const o=E.createElement("button");o.type="button",o.className=`${P}__stepper-step`,o.setAttribute("role","tab"),o.setAttribute("aria-selected",r===f?"true":"false"),r===f&&o.setAttribute("aria-current","step"),o.tabIndex=r===f?0:-1,o.setAttribute("aria-disabled",t(r)?"false":"true");const e=E.createElement("span");e.className=`${P}__stepper-marker`,e.setAttribute("aria-hidden","true"),e.textContent=x==="complete"?"✓":x==="error"?"!":String(r+1),o.appendChild(e);const y=E.createElement("span");return y.className=`${P}__stepper-label`,y.textContent=g.label!=null&&g.label!==""?g.label:`${T("form.step")} ${r+1}`,o.appendChild(y),i.appendChild(o),l.appendChild(i),o})},m=g=>{typeof z.onGoTo=="function"&&t(g)&&z.onGoTo(g)},N=g=>{const r=g.target&&g.target.closest?g.target.closest(`.${P}__stepper-step`):null;if(!r||!l.contains(r))return;const x=j.indexOf(r);x>=0&&m(x)},L=g=>{const r=g.target&&g.target.closest?g.target.closest(`.${P}__stepper-step`):null;if(!r||!l.contains(r))return;const x=_.length;let i=j.indexOf(r);if(i<0)return;if(g.key==="ArrowRight"||g.key==="ArrowDown")i=(i+1)%x;else if(g.key==="ArrowLeft"||g.key==="ArrowUp")i=(i-1+x)%x;else if(g.key==="Home")i=0;else if(g.key==="End")i=x-1;else if(g.key==="Enter"||g.key===" "){g.preventDefault(),m(i);return}else return;g.preventDefault();const o=j[i];o&&o.focus()};return l.addEventListener("click",N),l.addEventListener("keydown",L),u(),{el:s,setActive(g){f=v(Number(g)||0,0,Math.max(0,_.length-1)),u()},setStatus(g,r){p[g]=r,u()},statusOf:$}}}),ge("packages/core/src/internal/icon-builtins.js",function(R,Y){"use strict";Object.defineProperty(R,"BUILT_IN_ICONS",{enumerable:!0,get:function(){return n}}),Object.defineProperty(R,"normaliseIcon",{enumerable:!0,get:function(){return P}});const n={chevronRight:{viewBox:"0 0 16 16",paths:["M6 3.5 10.5 8 6 12.5"],paint:"stroke"},chevronDown:{viewBox:"0 0 16 16",paths:["M3.5 6 8 10.5 12.5 6"],paint:"stroke"},chevronUp:{viewBox:"0 0 16 16",paths:["M3.5 10 8 5.5 12.5 10"],paint:"stroke"},chevronLeft:{viewBox:"0 0 16 16",paths:["M10 3.5 5.5 8 10 12.5"],paint:"stroke"},check:{viewBox:"0 0 16 16",paths:["M3.5 8.5 6.5 11.5 12.5 4.5"],paint:"stroke"},dash:{viewBox:"0 0 16 16",paths:["M4 8h8"],paint:"stroke"},close:{viewBox:"0 0 16 16",paths:["M4 4l8 8M12 4l-8 8"],paint:"stroke"},plus:{viewBox:"0 0 16 16",paths:["M8 3.5v9M3.5 8h9"],paint:"stroke"},minus:{viewBox:"0 0 16 16",paths:["M3.5 8h9"],paint:"stroke"},info:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm.75 4a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM7.25 7h1.5v4.5h-1.5Z"]},success:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm3.2 4.4-4 4.6-2.4-2.3 1-1.1 1.3 1.2 3-3.4Z"]},warning:{viewBox:"0 0 16 16",paths:["M8 1.5 15 14H1Zm-.75 4v4h1.5v-4Zm0 5v1.5h1.5V10.5Z"]},danger:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3h1.5v5h-1.5Zm0 6h1.5V12h-1.5Z"]},clock:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3h1.5v3.7l2.5 1.5-.75 1.3-3.25-2Z"]},calendar:{viewBox:"0 0 16 16",paths:["M3 2.5h10v11H3z","M3 5.5h10","M5.5 1.5v2","M10.5 1.5v2"],paint:"stroke"},lock:{viewBox:"0 0 16 16",paths:["M4.5 7V5a3.5 3.5 0 1 1 7 0v2H13v7H3V7Zm1.5 0h4V5a2 2 0 1 0-4 0Z"]},link:{viewBox:"0 0 16 16",paths:["M6.5 9.5a3 3 0 0 1 0-4l2-2a3 3 0 0 1 4 4l-1 1M9.5 6.5a3 3 0 0 1 0 4l-2 2a3 3 0 0 1-4-4l1-1"],paint:"stroke"},external:{viewBox:"0 0 16 16",paths:["M6.5 3.5h-3v9h9v-3M9.5 3.5h3v3M12.5 3.5 7 9"],paint:"stroke"},filter:{viewBox:"0 0 16 16",paths:["M2 3h12l-4.5 5.2V13L6.5 11.5V8.2Z"]},pause:{viewBox:"0 0 16 16",paths:["M4.5 3h2.5v10H4.5zM9 3h2.5v10H9z"]},play:{viewBox:"0 0 16 16",paths:["M4.5 3l8 5-8 5z"]},chart:{viewBox:"0 0 16 16",paths:["M2.5 13.5h11","M4.5 13.5v-4","M8 13.5v-8","M11.5 13.5v-6"],paint:"stroke"},palette:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 0 0 0 13c.7 0 1.2-.5 1.2-1.1 0-.3-.1-.6-.3-.8a1.1 1.1 0 0 1 .8-1.9h1.4A3.4 3.4 0 0 0 14.5 7c0-3-2.9-5.5-6.5-5.5Z","M4.6 7.6a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM6.7 4.6a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM9.9 4.7a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM11.9 6.9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"]},undo:{viewBox:"0 0 16 16",paths:["M3 8h6.5a3.25 3.25 0 0 1 0 6.5H6M3 8l3-3M3 8l3 3"],paint:"stroke"},redo:{viewBox:"0 0 16 16",paths:["M13 8H6.5a3.25 3.25 0 0 0 0 6.5H10M13 8l-3-3M13 8l-3 3"],paint:"stroke"},columns:{viewBox:"0 0 16 16",paths:["M2.5 2.5h11v11h-11zM6.5 2.5v11M10 2.5v11"],paint:"stroke"},download:{viewBox:"0 0 16 16",paths:["M8 2.5v7.5M8 10 5 7M8 10l3-3M2.5 12.5h11"],paint:"stroke"},restore:{viewBox:"0 0 16 16",paths:["M3 8a5 5 0 1 0 1.6-3.7M3 3v2.8h2.8"],paint:"stroke"},spreadsheet:{viewBox:"0 0 16 16",paths:["M3 2.5h10v11H3zM3 6h10M3 9.5h10M6.5 6v7.5"],paint:"stroke"},print:{viewBox:"0 0 16 16",paths:["M4.5 6V2.5h7V6M4.5 11.5h-2V6h11v5.5h-2M4.5 9.5h7v4h-7z"],paint:"stroke"},maximise:{viewBox:"0 0 16 16",paths:["M2.5 6V2.5H6M10 2.5h3.5V6M13.5 10v3.5H10M6 13.5H2.5V10"],paint:"stroke"},minimise:{viewBox:"0 0 16 16",paths:["M6 2.5V6H2.5M13.5 6H10V2.5M10 13.5V10h3.5M2.5 10H6v3.5"],paint:"stroke"},views:{viewBox:"0 0 16 16",paths:["M4 2.5h8v11L8 11l-4 2.5z"],paint:"stroke"},search:{viewBox:"0 0 16 16",paths:["M7 2.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9M10.4 10.4 13.5 13.5"],paint:"stroke"},pencil:{viewBox:"0 0 16 16",paths:["M2.5 11.2 11 2.7l2.3 2.3-8.5 8.5-3 .7z"],paint:"stroke"},trash:{viewBox:"0 0 16 16",paths:["M3 4.5h10M6.5 4.5V3h3v1.5M4.5 4.5l.7 8.5h5.6l.7-8.5M6.8 7v3.7M9.2 7v3.7"],paint:"stroke"},share:{viewBox:"0 0 16 16",paths:["M11.5 5.5a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6M4.5 9.8a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6M11.5 14.1a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6M6.1 7.1l3.8-1.9M6.1 8.9l3.8 1.9"],paint:"stroke"},pin:{viewBox:"0 0 16 16",paths:["M8 2v6M5 8h6l1 2.5H4zM8 10.5V14"],paint:"stroke"},sortAsc:{viewBox:"0 0 16 16",paths:["M8 3.5 12 8H4Z"]},sortDesc:{viewBox:"0 0 16 16",paths:["M8 12.5 4 8h8Z"]},menu:{viewBox:"0 0 16 16",paths:["M2.5 4.5h11M2.5 8h11M2.5 11.5h11"],paint:"stroke"},drag:{viewBox:"0 0 16 16",paths:["M6 3.5h1.5V5H6Zm3 0h1.5V5H9ZM6 7.25h1.5v1.5H6Zm3 0h1.5v1.5H9ZM6 11h1.5v1.5H6Zm3 0h1.5v1.5H9Z"]},star:{viewBox:"0 0 16 16",paths:["M8 1.6l1.96 3.97 4.38.64-3.17 3.09.75 4.36L8 11.6l-3.92 2.06.75-4.36L1.66 6.21l4.38-.64Z"]},heart:{viewBox:"0 0 16 16",paths:["M8 14.2 2.4 8.6a3.3 3.3 0 0 1 4.67-4.67L8 4.86l.93-.93A3.3 3.3 0 0 1 13.6 8.6Z"]},circleFilled:{viewBox:"0 0 16 16",paths:["M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2Z"]},square:{viewBox:"0 0 16 16",paths:["M3 3h10v10H3Z"]},bolt:{viewBox:"0 0 16 16",paths:["M9.5 1.5 3.5 9h3.2l-.7 5.5L12.5 7H9.3Z"]},flag:{viewBox:"0 0 16 16",paths:["M4 1.5h1.5v13H4Zm1.5 1h7.5l-1.6 2.6L13 7.7H5.5Z"]},arrow:{viewBox:"0 0 16 16",paths:["M3 13 12.5 3.5","M7.5 3.5H12.5V8.5"],paint:"stroke"},highlight:{viewBox:"0 0 16 16",paths:["M4 11 10 5l2 2-6 6H4z","M3 14.5h10"],paint:"stroke"},eraser:{viewBox:"0 0 16 16",paths:["M3 11 9 5 13 9 7 15Z","M5 13 9 9"],paint:"stroke"},thumbUp:{viewBox:"0 0 16 16",paths:["M5.5 6.8 8.6 1.5a1.6 1.6 0 0 1 1.5 2.1L9.4 6h3.4a1.4 1.4 0 0 1 1.35 1.78l-1.3 4.6A1.9 1.9 0 0 1 11 13.8H5.5ZM4 6.5H1.5v7.3H4Z"]},eye:{viewBox:"0 0 16 16",paths:["M8 3.2c3.3 0 6 3 6.6 4.5C14 9.3 11.3 12.3 8 12.3S2 9.3 1.4 7.7C2 6.2 4.7 3.2 8 3.2Zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z"]},eyeOff:{viewBox:"0 0 16 16",paths:["M2.2 2.9 13.1 13.8M8 3.2c3.3 0 6 3 6.6 4.5a9.4 9.4 0 0 1-1.9 2.4M5 4.2A9 9 0 0 0 1.4 7.7C2 9.3 4.7 12.3 8 12.3c.9 0 1.7-.2 2.5-.5M6.3 6a2.5 2.5 0 0 0 3.4 3.5"],paint:"stroke"},copy:{viewBox:"0 0 16 16",paths:["M5.5 2.5h8v8M2.5 5.5h8v8h-8Z"],paint:"stroke"},present:{viewBox:"0 0 16 16",paths:["M2 2.5h12v8H2Z","M8 10.5v3","M6 13.5h4"],paint:"stroke"},cabinet:{viewBox:"0 0 16 16",paths:["M3 2h10v12H3ZM5 4v4h2.5V4ZM8.5 4v4H11V4ZM5 9.5V11h6V9.5Z"]},splice:{viewBox:"0 0 16 16",paths:["M8 4.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7ZM8 6.8a1.2 1.2 0 1 1 0 2.4 1.2 1.2 0 0 1 0-2.4ZM1.5 7.2h3v1.6h-3ZM11.5 7.2h3v1.6h-3Z"]},exchange:{viewBox:"0 0 16 16",paths:["M8 1.5 14.5 6v1H1.5V6ZM3 8h2v5H3ZM7 8h2v5H7ZM11 8h2v5h-2ZM1.5 13.5h13V15h-13Z"]},pole:{viewBox:"0 0 16 16",paths:["M7.2 1.5h1.6V15H7.2ZM3 3.5h10V5H3ZM4.5 7h7v1.4h-7Z"]},chamber:{viewBox:"0 0 16 16",paths:["M2.5 3.5h11v9h-11ZM4.5 5.5v5h7v-5ZM6 7h4v1.5H6Z"]},premises:{viewBox:"0 0 16 16",paths:["M8 1.8 14.5 7.5h-2V14h-9V7.5h-2ZM6.8 10.4V14h2.4v-3.6Z"]},fault:{viewBox:"0 0 16 16",paths:["M5.2 1.5h5.6L14.5 5.2v5.6L10.8 14.5H5.2L1.5 10.8V5.2ZM5.4 9.4 6.6 10.6 8 9.2 9.4 10.6 10.6 9.4 9.2 8 10.6 6.6 9.4 5.4 8 6.8 6.6 5.4 5.4 6.6 6.8 8Z"]},user:{viewBox:"0 0 16 16",paths:["M8 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z","M8 9c3 0 5.5 1.5 5.5 3.5V14h-11v-1.5C2.5 10.5 5 9 8 9Z"]},blank:{viewBox:"0 0 16 16",paths:[""]}};function P(v){return typeof v=="string"?{viewBox:"0 0 16 16",paths:[v],paint:"fill"}:Array.isArray(v)?{viewBox:"0 0 16 16",paths:v.slice(),paint:"fill"}:{viewBox:v&&v.viewBox||"0 0 16 16",paths:v&&Array.isArray(v.paths)?v.paths.slice():v&&v.path?[v.path]:[],paint:v&&v.paint==="stroke"?"stroke":"fill"}}}),ge("packages/modules/form/controls/field-icon.js",function(R,Y){"use strict";Object.defineProperty(R,"fieldIconStylesheet",{enumerable:!0,get:function(){return s}}),Object.defineProperty(R,"injectFieldIconStyles",{enumerable:!0,get:function(){return z}}),Object.defineProperty(R,"makeFieldIcon",{enumerable:!0,get:function(){return E}});const P=Y("packages/core/src/internal/icon-builtins.js").BUILT_IN_ICONS,v="http://www.w3.org/2000/svg",ee="data-lattice-form-field-icon-styles";function s(){return`
811
+ .${e}__otp[aria-invalid='true'] .${e}__otp-input{ border-color:var(--lattice-danger); }
812
+ .${e}__color{ position:relative; display:block; min-width:0; }
813
+ .${e}__color-field{
814
+ display:flex; align-items:center; box-sizing:border-box; width:100%; height:var(--lattice-row-height);
815
+ gap:calc(var(--lattice-space) / 2); padding:0 calc(var(--lattice-space) / 2);
816
+ border:var(--lattice-border-width) solid var(--lattice-border-color); border-radius:var(--lattice-radius);
817
+ background:var(--lattice-background);
818
+ }
819
+ .${e}__color .${e}__color-input{
820
+ flex:1 1 auto; min-width:0; width:auto; height:auto; border:0; border-radius:0; padding:0;
821
+ background:transparent; color:var(--lattice-foreground); font:inherit; line-height:inherit;
822
+ }
823
+ .${e}__color .${e}__color-input:focus{ outline:none; }
824
+ .${e}__color .${e}__color-input:disabled{ color:var(--lattice-disabled-foreground); cursor:not-allowed; }
825
+ .${e}__color .${e}__color-input[readonly]{ color:var(--lattice-foreground-muted); }
826
+ .${e}__color-swatch{
827
+ flex:0 0 auto; box-sizing:border-box; padding:0; cursor:pointer;
828
+ width:calc(var(--lattice-control-size) * var(--lattice-scale));
829
+ height:calc(var(--lattice-control-size) * var(--lattice-scale));
830
+ border:var(--lattice-border-width) solid var(--lattice-border-color); border-radius:calc(var(--lattice-radius) / 1.5);
831
+ background:transparent;
832
+ }
833
+ .${e}__color-swatch--empty{
834
+ background-image:linear-gradient(135deg, transparent 46%, var(--lattice-border-color) 48%, var(--lattice-border-color) 52%, transparent 54%);
835
+ }
836
+ .${e}__color-swatch:focus-visible, .${e}__color-toggle:focus-visible, .${e}__color-clear:focus-visible{
837
+ outline:2px solid var(--lattice-focus-ring); outline-offset:1px;
838
+ }
839
+ .${e}__color-toggle, .${e}__color-clear{
840
+ flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box;
841
+ width:calc(var(--lattice-control-size) * var(--lattice-scale)); height:calc(var(--lattice-control-size) * var(--lattice-scale));
842
+ padding:0; margin:0; border:0; background:transparent; color:var(--lattice-foreground-muted); cursor:pointer;
843
+ }
844
+ .${e}__color-toggle:hover, .${e}__color-clear:hover{ color:var(--lattice-foreground); }
845
+ .${e}__color-toggle:disabled, .${e}__color-clear:disabled, .${e}__color-swatch:disabled{ opacity:.5; cursor:not-allowed; }
846
+ .${e}__color-popover{
847
+ position:absolute; top:100%; left:0; z-index:10; margin-top:2px; box-sizing:border-box;
848
+ padding:calc(var(--lattice-space) * 1.25); min-width:220px;
849
+ border:var(--lattice-border-width) solid var(--lattice-border-color); border-radius:var(--lattice-radius);
850
+ background:var(--lattice-background); color:var(--lattice-foreground);
851
+ box-shadow:0 6px 20px rgba(0,0,0,.16);
852
+ }
853
+ .${e}__color-popover[hidden]{ display:none; }
854
+ .${e}__color-popover--above{ top:auto; bottom:100%; margin-top:0; margin-bottom:2px; }
855
+ .${e}__swatch-grid{ display:flex; flex-direction:column; gap:3px; }
856
+ .${e}__swatch-row{ display:flex; gap:3px; }
857
+ .${e}__swatch{
858
+ position:relative; box-sizing:border-box; padding:0; cursor:pointer;
859
+ width:calc(var(--lattice-control-size) * var(--lattice-scale) * 1.375);
860
+ height:calc(var(--lattice-control-size) * var(--lattice-scale) * 1.375);
861
+ border:var(--lattice-border-width) solid var(--lattice-border-color); border-radius:3px;
862
+ }
863
+ .${e}__swatch:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
864
+ .${e}__color-check{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
865
+ .${e}__color-custombtn{
866
+ display:block; width:100%; margin-top:calc(var(--lattice-space) * 1.25); box-sizing:border-box;
867
+ height:var(--lattice-row-height); border:var(--lattice-border-width) solid var(--lattice-border-color);
868
+ border-radius:var(--lattice-radius); background:var(--lattice-background); color:var(--lattice-foreground);
869
+ font:inherit; cursor:pointer;
870
+ }
871
+ .${e}__color-picker{ display:flex; flex-direction:column; gap:calc(var(--lattice-space) * 1.25); width:220px; }
872
+ .${e}__color-plane{
873
+ position:relative; width:100%; height:140px; border-radius:var(--lattice-radius); cursor:crosshair;
874
+ border:var(--lattice-border-width) solid var(--lattice-border-color);
875
+ background:
876
+ linear-gradient(to top, #000, transparent),
877
+ linear-gradient(to right, #fff, hsl(var(--lat-color-hue, 0) 100% 50%));
878
+ }
879
+ .${e}__color-plane:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:2px; }
880
+ .${e}__color-plane-thumb{
881
+ position:absolute; width:12px; height:12px; border-radius:50%; border:2px solid #fff;
882
+ box-shadow:0 0 0 1px rgba(0,0,0,.4); transform:translate(-50%, -50%); pointer-events:none;
883
+ }
884
+ .${e}__color-hue{
885
+ position:relative; width:100%; height:12px; border-radius:6px; cursor:pointer;
886
+ background:linear-gradient(to right, red, yellow, lime, cyan, blue, magenta, red);
887
+ }
888
+ .${e}__color-hue:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:2px; }
889
+ .${e}__color-hue-thumb{
890
+ position:absolute; top:50%; width:14px; height:14px; border-radius:50%; border:2px solid #fff;
891
+ box-shadow:0 0 0 1px rgba(0,0,0,.4); transform:translate(-50%, -50%); pointer-events:none;
892
+ }
893
+ .${e}__color-fields{ display:flex; gap:calc(var(--lattice-space) / 2); }
894
+ .${e}__color-hexfield{ flex:1 1 auto; min-width:0; }
895
+ .${e}__color-rgbfield{ width:3.4em; flex:0 0 auto; }
896
+ .${e}__color-fields input{
897
+ box-sizing:border-box; height:var(--lattice-row-height);
898
+ border:var(--lattice-border-width) solid var(--lattice-border-color);
899
+ border-radius:var(--lattice-radius); background:var(--lattice-background); color:var(--lattice-foreground);
900
+ font:inherit; padding:0 calc(var(--lattice-space) / 2);
901
+ }
902
+ .${e}__color-previewrow{ display:flex; }
903
+ .${e}__color-preview{
904
+ width:100%; height:var(--lattice-row-height); border-radius:var(--lattice-radius);
905
+ border:var(--lattice-border-width) solid var(--lattice-border-color);
906
+ }
907
+ .${e}__color-actions{ display:flex; justify-content:space-between; gap:calc(var(--lattice-space) / 2); }
908
+ .${e}__color-back, .${e}__color-select{
909
+ box-sizing:border-box; height:var(--lattice-row-height);
910
+ border:var(--lattice-border-width) solid var(--lattice-border-color);
911
+ border-radius:var(--lattice-radius); background:var(--lattice-background); color:var(--lattice-foreground);
912
+ font:inherit; cursor:pointer; padding:0 calc(var(--lattice-space) * 1.25);
913
+ }
914
+ .${e}__color-select{ margin-left:auto; background:var(--lattice-accent); border-color:var(--lattice-accent); color:#fff; }
915
+ `.trim()}function te(L){const O=L&&L.documentElement;if(!O||O.getAttribute(T))return;O.setAttribute(T,"1");const k=L.createElement("style");k.textContent=v(),(L.head||L.body||O).appendChild(k)}function u(L,O){const k=`lat-cols-bp-${String(O).replace(/[^0-9]/g,"")}`,I=`data-lattice-cols-breakpoint-${k}`,N=L&&L.documentElement;if(N&&!N.querySelector(`style[${I}]`)){const g=L.createElement("style");g.setAttribute(I,"1"),g.textContent=`@container ${k} (max-width:${O}px){.${e}__cols > *{flex:1 1 100%}}`,(L.head||L.body||N).appendChild(g)}return k}}),_e("packages/modules/form/controls/registry.js",function(F,X){"use strict";Object.defineProperty(F,"registerControl",{enumerable:!0,get:function(){return T}}),Object.defineProperty(F,"resolveControl",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"controlTypes",{enumerable:!0,get:function(){return te}});const e=new Map;function T(u,L){e.set(u,L)}function v(u){return e.get(u)||null}function te(){return[...e.keys()]}}),_e("packages/modules/form/validation.js",function(F,X){"use strict";Object.defineProperty(F,"VALIDATION_MODES",{enumerable:!0,get:function(){return e}}),Object.defineProperty(F,"BUILTIN_RULES",{enumerable:!0,get:function(){return T}}),Object.defineProperty(F,"isEmpty",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"resolveValidationMode",{enumerable:!0,get:function(){return u}}),Object.defineProperty(F,"validateValue",{enumerable:!0,get:function(){return N}}),Object.defineProperty(F,"normalizeHookResult",{enumerable:!0,get:function(){return g}});const e=Object.freeze(["change","blur","submit"]),T=Object.freeze(["email","number","integer","url"]),v=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function te(p){return p==null||p===""||p===!1||Array.isArray(p)&&p.length===0}function u(p){return e.includes(p)?p:"submit"}function L(p){return Object.prototype.toString.call(p)==="[object RegExp]"}function O(p,a){if(p==="email")return typeof a=="string"&&v.test(a);if(p==="number")return Number.isFinite(Number(a));if(p==="integer")return typeof a=="number"?Number.isInteger(a):typeof a=="string"&&/^-?\d+$/.test(a);if(p==="url"){if(typeof a!="string")return!1;try{const $=new URL(a);return $.protocol==="http:"||$.protocol==="https:"}catch{return!1}}return!0}function k(p,a){return typeof p.errorMessage=="string"&&p.errorMessage!==""?p.errorMessage:a}function I(p,a,$,y){let n;try{n=p(a,$)}catch{return{code:"custom",message:k($,y("form.validation.custom"))}}return n===!0||n===void 0||n===null?null:n===!1?{code:"custom",message:k($,y("form.validation.custom"))}:{code:"custom",message:String(n)}}function N(p,a,$,y){if((p.required===!0||y===!0)&&te(a))return{code:"required",message:k(p,$("form.validation.required"))};const n=p.validation;return n==null?null:typeof n=="function"?I(n,a,p,$):L(n)?te(a)||n.test(String(a))?null:{code:"pattern",message:k(p,$("form.validation.pattern"))}:typeof n=="string"&&T.includes(n)?te(a)||O(n,a)?null:{code:n,message:k(p,$(`form.validation.${n}`))}:null}function g(p,a,$){return p==null||p===!0?null:p===!1?{code:"custom",message:k(a,$("form.validation.custom"))}:typeof p=="string"?{code:"custom",message:p}:typeof p=="object"?{code:p.code||"custom",message:p.message!=null?String(p.message):k(a,$("form.validation.custom"))}:null}}),_e("packages/modules/form/model.js",function(F,X){"use strict";Object.defineProperty(F,"isEmpty",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"DENSITIES",{enumerable:!0,get:function(){return u}}),Object.defineProperty(F,"CONTROL_TYPES",{enumerable:!0,get:function(){return L}}),Object.defineProperty(F,"cssSize",{enumerable:!0,get:function(){return O}}),Object.defineProperty(F,"resolveLabelPosition",{enumerable:!0,get:function(){return k}}),Object.defineProperty(F,"resolveDensity",{enumerable:!0,get:function(){return I}}),Object.defineProperty(F,"resolveColsBreakpoint",{enumerable:!0,get:function(){return N}}),Object.defineProperty(F,"axisOf",{enumerable:!0,get:function(){return g}}),Object.defineProperty(F,"normalizeItem",{enumerable:!0,get:function(){return p}}),Object.defineProperty(F,"normalizeBlock",{enumerable:!0,get:function(){return a}}),Object.defineProperty(F,"resolveConfig",{enumerable:!0,get:function(){return $}});const T=X("packages/modules/form/validation.js").resolveValidationMode;function v(n){return n!==null&&typeof n=="object"}function te(n){return!!(n==null||n===""||n===!1||Array.isArray(n)&&n.length===0)}const u=Object.freeze(["compact","standard","comfortable"]),L=Object.freeze(["input","number","textarea","checkbox","button","text","combo","select","radiogroup","checkboxgroup","toggle","datepicker","file","richtext","rating","stage","chips","otp","color"]);function O(n){return typeof n=="number"?`${n}px`:String(n)}function k(n){return n==="left"||n==="hidden"?n:"top"}function I(n){return u.includes(n)?n:"standard"}function N(n){return typeof n=="number"&&Number.isFinite(n)&&n>0?n:480}function g(n){return Array.isArray(n.items)&&n.items.length?"items":Array.isArray(n.rows)&&n.rows.length?"rows":Array.isArray(n.cols)&&n.cols.length?"cols":null}function p(n,d){const h=n.text!=null&&n.type===void 0,z=h?"text":n.type!=null&&n.type!==""?String(n.type):"input",W=h?n.text:n.value,S={kind:"item",name:n.name!=null&&n.name!==""?String(n.name):null,type:z,label:n.label,labelPosition:n.labelPosition==null?null:k(n.labelPosition),labelWidth:n.labelWidth,requiredHint:n.requiredHint,width:n.width,placeholder:n.placeholder,helpMessage:n.helpMessage,hidden:n.hidden===!0,disabled:n.disabled===!0,readOnly:n.readOnly===!0,tooltip:n.tooltip,lockIcon:n.lockIcon,addons:n.addons,value:W,subtype:n.subtype,step:n.step,min:n.min,max:n.max,rows:n.rows,options:n.options,mode:n.mode,locale:n.locale,timeZone:n.timeZone,css:n.css,visibleWhen:n.visibleWhen,readOnlyWhen:n.readOnlyWhen,requiredWhen:n.requiredWhen,required:n.required===!0,validation:n.validation,errorMessage:n.errorMessage,successMessage:n.successMessage,preMessage:n.preMessage,validationMode:T(n.validationMode),props:v(n.props)?Object.assign({},n.props):{},path:d};for(const c of Object.keys(n))!(c in S)&&c!=="text"&&c!=="value"&&c!=="type"&&(S.props[c]=n[c]);return S}function a(n,d){if(!v(n))return null;if(n.fieldset!=null){const z=v(n.fieldset)?n.fieldset:n,W=v(n.fieldset)?n.fieldset.legend:n.fieldset,S=g(z),c=S==="items"?z.items:S==="rows"?z.rows:S==="cols"?z.cols:[];return{kind:"fieldset",legend:W==null?null:String(W),axis:S,spacing:z.spacing==null?null:O(z.spacing),labelPosition:z.labelPosition==null?null:k(z.labelPosition),labelWidth:z.labelWidth,blocks:c.filter(v).map((x,t)=>a(x,`${d}/${t}`)).filter(Boolean),css:z.css,hidden:z.hidden===!0}}if(n.container!=null){const z=v(n.container)?n.container:n,W=g(z),S=W==="items"?z.items:W==="rows"?z.rows:W==="cols"?z.cols:[];return{kind:"container",axis:W,spacing:z.spacing==null?null:O(z.spacing),labelPosition:z.labelPosition==null?null:k(z.labelPosition),labelWidth:z.labelWidth,blocks:S.filter(v).map((c,x)=>a(c,`${d}/${x}`)).filter(Boolean),css:z.css,hidden:z.hidden===!0}}if(n.panel!=null){const z=v(n.panel)?n.panel:{},W=v(n.panel)&&g(n.panel)?n.panel:n,S=g(W),c=S==="items"?W.items:S==="rows"?W.rows:S==="cols"?W.cols:[],x=Array.isArray(z.actions)?z.actions.filter(v).map(t=>({icon:t.icon,ariaLabel:t.ariaLabel!=null&&t.ariaLabel!==""?String(t.ariaLabel):null,onClick:typeof t.onClick=="function"?t.onClick:null})):[];return{kind:"panel",title:z.title!=null&&z.title!==""?String(z.title):null,subtitle:z.subtitle!=null&&z.subtitle!==""?String(z.subtitle):null,actions:x,collapsible:z.collapsible===!0,axis:S,spacing:W.spacing==null?null:O(W.spacing),labelPosition:W.labelPosition==null?null:k(W.labelPosition),labelWidth:W.labelWidth,blocks:c.filter(v).map((t,i)=>a(t,`${d}/${i}`)).filter(Boolean),css:W.css,hidden:W.hidden===!0}}const h=g(n);if(h){const z=h==="items"?n.items:h==="rows"?n.rows:n.cols;return{kind:"container",axis:h,spacing:n.spacing==null?null:O(n.spacing),labelPosition:n.labelPosition==null?null:k(n.labelPosition),labelWidth:n.labelWidth,blocks:z.filter(v).map((W,S)=>a(W,`${d}/${S}`)).filter(Boolean),css:n.css,hidden:n.hidden===!0}}return n.spacer===!0||n.type==="spacer"?{kind:"spacer",css:n.css,hidden:n.hidden===!0}:n.separator===!0||n.type==="separator"?{kind:"separator",label:n.label!=null&&n.label!==""?String(n.label):null,css:n.css,hidden:n.hidden===!0}:p(n,d)}function $(n={}){const d=v(n)?n:{},h=Array.isArray(d.steps)?d.steps.filter(v).map((t,i)=>y(t,i)).filter(Boolean):[],z=h.length>0,W=!z&&Array.isArray(d.rows)&&d.rows.length,S=!z&&!W&&Array.isArray(d.cols)&&d.cols.length,c=W||z?"rows":"cols",x=z?[]:W?d.rows:S?d.cols:[];return{axis:c,density:I(d.density),css:d.css,messages:d.messages,colsBreakpoint:N(d.colsBreakpoint),spacing:d.spacing==null?null:O(d.spacing),labelGap:d.labelGap==null?null:O(d.labelGap),labelPosition:d.labelPosition==null?null:k(d.labelPosition),labelWidth:d.labelWidth,requiredHint:d.requiredHint,blocks:x.filter(v).map((t,i)=>a(t,String(i))).filter(Boolean),steps:h,stepOrientation:d.stepOrientation==="vertical"?"vertical":"horizontal"}}function y(n,d){const z=(Array.isArray(n.rows)?n.rows:[]).filter(v).map((W,S)=>a(W,`step${d}/${S}`)).filter(Boolean);return z.length===0?null:{id:n.id!=null&&n.id!==""?String(n.id):`step-${d}`,label:n.label!=null?String(n.label):null,axis:"rows",blocks:z,css:n.css}}}),_e("packages/modules/form/state.js",function(F,X){"use strict";Object.defineProperty(F,"applyBooleanInputState",{enumerable:!0,get:function(){return e}}),Object.defineProperty(F,"guardBooleanInput",{enumerable:!0,get:function(){return T}}),Object.defineProperty(F,"syncRootAria",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"syncRecordState",{enumerable:!0,get:function(){return te}});function e(u,L,O){u.disabled=L===!0,u.__latReadOnly=O===!0,O===!0?u.setAttribute("aria-readonly","true"):u.removeAttribute("aria-readonly")}function T(u){const L=()=>u.__latReadOnly===!0,O=g=>{L()&&g.preventDefault()},k=g=>{L()&&(g.preventDefault(),g.stopPropagation())},I=g=>{L()&&(g.key===" "||g.key==="Enter")&&g.preventDefault()},N=g=>{L()&&g.key===" "&&g.preventDefault()};u.addEventListener("pointerdown",O),u.addEventListener("click",k),u.addEventListener("keydown",I),u.addEventListener("keyup",N)}function v(u,L,O){L?u.setAttribute("aria-disabled","true"):u.removeAttribute("aria-disabled"),O?u.setAttribute("aria-readonly","true"):u.removeAttribute("aria-readonly")}function te(u){const L=u.item,O=L.disabled===!0,k=L.readOnly===!0||u.ruleReadOnly===!0;u.controlWrap&&(u.controlWrap.setAttribute("data-disabled",O?"true":"false"),u.controlWrap.setAttribute("data-readonly",k?"true":"false")),u.def.state(u.control,{...L,readOnly:k}),typeof u.syncLock=="function"&&u.syncLock(),typeof u.syncAddons=="function"&&u.syncAddons()}}),_e("packages/modules/form/group-rules.js",function(F,X){"use strict";Object.defineProperty(F,"attachRuleResolver",{enumerable:!0,get:function(){return T}}),Object.defineProperty(F,"detachRuleResolver",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"ruleResolverFor",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"makeRuleResolver",{enumerable:!0,get:function(){return u}}),Object.defineProperty(F,"reapplyMembers",{enumerable:!0,get:function(){return L}});const e=new WeakMap;function T(O,k){e.set(O,k)}function v(O){e.delete(O)}function te(O){return e.get(O)}function u(O){const{owners:k,byId:I,warnOnce:N}=O;return function(p,a){if(p==null||typeof p!="object")return;const $=p.name;if(p.form!=null){const n=I.get(p.form);if(!n){N(`form.group.unknown-member:${String(p.form)}`,`form group: a rule pins the member "${p.form}", but no member has that id; the rule reads an empty value.`);return}return $!=null?n.form.getValue()[$]:void 0}if($==null)return;if(Object.prototype.hasOwnProperty.call(a,$))return a[$];const y=k.get(String($));if(y)return y.form.getValue()[$]}}function L(O){for(const k of O)k.form&&typeof k.form.__reapplyRules=="function"&&k.form.__reapplyRules()}}),_e("packages/modules/form/rules.js",function(F,X){"use strict";Object.defineProperty(F,"evalRule",{enumerable:!0,get:function(){return O}}),Object.defineProperty(F,"applyRules",{enumerable:!0,get:function(){return k}});const T=X("packages/modules/form/model.js").isEmpty,te=X("packages/modules/form/state.js").syncRecordState,L=X("packages/modules/form/group-rules.js").ruleResolverFor;function O(N,g,p){if(N==null)return null;if(typeof N=="function")return!!N(g);if(typeof N=="boolean")return N;if(typeof N=="object"){const a=p?p(N,g):N.name!=null?g[N.name]:void 0;if(typeof N.fn=="function")return!!N.fn(a,g);let $=!0,y=!1;return Object.prototype.hasOwnProperty.call(N,"equals")&&(y=!0,$=$&&a===N.equals),Object.prototype.hasOwnProperty.call(N,"in")&&(y=!0,$=$&&Array.isArray(N.in)&&N.in.includes(a)),Object.prototype.hasOwnProperty.call(N,"empty")&&(y=!0,$=$&&T(a)===!!N.empty),y?$:!1}return!1}function k(N){const g={};for(const a of N.order)a.item.name!=null&&(g[a.item.name]=a.value);const p=N.form?L(N.form):void 0;for(const a of N.order){const $=a.item;a.ruleHidden=O($.visibleWhen,g,p)===!1,a.ruleReadOnly=O($.readOnlyWhen,g,p)===!0,a.ruleRequired=O($.requiredWhen,g,p)===!0,a.el.hidden=a.hidden||a.ruleHidden,te(a);const y=$.required===!0||a.ruleRequired,n=a.labelEl!=null&&a.labelPosition!=="hidden",d=a.placeholderEl||a.control;y?d.setAttribute("aria-required","true"):d.removeAttribute("aria-required"),y&&n?a.el.setAttribute("data-required","true"):a.el.removeAttribute("data-required"),I(a,y,n,h=>N.t(h))}}function I(N,g,p,a){const $=N.placeholderEl;if(!$)return;const y=N.placeholderBase;if(g&&!p&&y!==""){const n=N.requiredHint,d=n===!1?"":typeof n=="string"?a(n):" *";$.placeholder=y+d}else $.placeholder=y}}),_e("packages/modules/form/stepper.js",function(F,X){"use strict";Object.defineProperty(F,"createStepper",{enumerable:!0,get:function(){return te}});const T=X("packages/modules/form/styles.js").NS;function v(u,L,O){return Math.min(O,Math.max(L,u))}function te(u,L){const O=L.doc,k=L.steps||[],I=L.t||(S=>S),N=L.orientation==="vertical"?"vertical":"horizontal";let g=v(Number(L.active)||0,0,Math.max(0,k.length-1));const p=[];u.className=`${T}__stepper ${T}__stepper--${N}`,u.setAttribute("data-orientation",N),u.setAttribute("role","navigation"),u.setAttribute("aria-label",I("form.steps"));const a=O.createElement("ol");a.className=`${T}__stepper-list`,a.setAttribute("role","tablist"),a.setAttribute("aria-orientation",N),u.appendChild(a);let $=[];const y=S=>p[S]?p[S]:S<g?"complete":S===g?"active":"pending",n=S=>S<=g+1,d=()=>{a.textContent="",$=k.map((S,c)=>{const x=y(c),t=O.createElement("li");t.className=`${T}__stepper-item is-${x}`+(c===g?" is-active":"")+(n(c)?"":" is-locked");const i=O.createElement("button");i.type="button",i.className=`${T}__stepper-step`,i.setAttribute("role","tab"),i.setAttribute("aria-selected",c===g?"true":"false"),c===g&&i.setAttribute("aria-current","step"),i.tabIndex=c===g?0:-1,i.setAttribute("aria-disabled",n(c)?"false":"true");const r=O.createElement("span");r.className=`${T}__stepper-marker`,r.setAttribute("aria-hidden","true"),r.textContent=x==="complete"?"✓":x==="error"?"!":String(c+1),i.appendChild(r);const C=O.createElement("span");return C.className=`${T}__stepper-label`,C.textContent=S.label!=null&&S.label!==""?S.label:`${I("form.step")} ${c+1}`,i.appendChild(C),t.appendChild(i),a.appendChild(t),i})},h=S=>{typeof L.onGoTo=="function"&&n(S)&&L.onGoTo(S)},z=S=>{const c=S.target&&S.target.closest?S.target.closest(`.${T}__stepper-step`):null;if(!c||!a.contains(c))return;const x=$.indexOf(c);x>=0&&h(x)},W=S=>{const c=S.target&&S.target.closest?S.target.closest(`.${T}__stepper-step`):null;if(!c||!a.contains(c))return;const x=k.length;let t=$.indexOf(c);if(t<0)return;if(S.key==="ArrowRight"||S.key==="ArrowDown")t=(t+1)%x;else if(S.key==="ArrowLeft"||S.key==="ArrowUp")t=(t-1+x)%x;else if(S.key==="Home")t=0;else if(S.key==="End")t=x-1;else if(S.key==="Enter"||S.key===" "){S.preventDefault(),h(t);return}else return;S.preventDefault();const i=$[t];i&&i.focus()};return a.addEventListener("click",z),a.addEventListener("keydown",W),d(),{el:u,setActive(S){g=v(Number(S)||0,0,Math.max(0,k.length-1)),d()},setStatus(S,c){p[S]=c,d()},statusOf:y}}}),_e("packages/core/src/internal/icon-builtins.js",function(F,X){"use strict";Object.defineProperty(F,"BUILT_IN_ICONS",{enumerable:!0,get:function(){return e}}),Object.defineProperty(F,"normaliseIcon",{enumerable:!0,get:function(){return T}});const e={chevronRight:{viewBox:"0 0 16 16",paths:["M6 3.5 10.5 8 6 12.5"],paint:"stroke"},chevronDown:{viewBox:"0 0 16 16",paths:["M3.5 6 8 10.5 12.5 6"],paint:"stroke"},chevronUp:{viewBox:"0 0 16 16",paths:["M3.5 10 8 5.5 12.5 10"],paint:"stroke"},chevronLeft:{viewBox:"0 0 16 16",paths:["M10 3.5 5.5 8 10 12.5"],paint:"stroke"},check:{viewBox:"0 0 16 16",paths:["M3.5 8.5 6.5 11.5 12.5 4.5"],paint:"stroke"},dash:{viewBox:"0 0 16 16",paths:["M4 8h8"],paint:"stroke"},close:{viewBox:"0 0 16 16",paths:["M4 4l8 8M12 4l-8 8"],paint:"stroke"},plus:{viewBox:"0 0 16 16",paths:["M8 3.5v9M3.5 8h9"],paint:"stroke"},minus:{viewBox:"0 0 16 16",paths:["M3.5 8h9"],paint:"stroke"},info:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm.75 4a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM7.25 7h1.5v4.5h-1.5Z"]},success:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm3.2 4.4-4 4.6-2.4-2.3 1-1.1 1.3 1.2 3-3.4Z"]},warning:{viewBox:"0 0 16 16",paths:["M8 1.5 15 14H1Zm-.75 4v4h1.5v-4Zm0 5v1.5h1.5V10.5Z"]},danger:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3h1.5v5h-1.5Zm0 6h1.5V12h-1.5Z"]},clock:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3h1.5v3.7l2.5 1.5-.75 1.3-3.25-2Z"]},calendar:{viewBox:"0 0 16 16",paths:["M3 2.5h10v11H3z","M3 5.5h10","M5.5 1.5v2","M10.5 1.5v2"],paint:"stroke"},lock:{viewBox:"0 0 16 16",paths:["M4.5 7V5a3.5 3.5 0 1 1 7 0v2H13v7H3V7Zm1.5 0h4V5a2 2 0 1 0-4 0Z"]},link:{viewBox:"0 0 16 16",paths:["M6.5 9.5a3 3 0 0 1 0-4l2-2a3 3 0 0 1 4 4l-1 1M9.5 6.5a3 3 0 0 1 0 4l-2 2a3 3 0 0 1-4-4l1-1"],paint:"stroke"},external:{viewBox:"0 0 16 16",paths:["M6.5 3.5h-3v9h9v-3M9.5 3.5h3v3M12.5 3.5 7 9"],paint:"stroke"},filter:{viewBox:"0 0 16 16",paths:["M2 3h12l-4.5 5.2V13L6.5 11.5V8.2Z"]},pause:{viewBox:"0 0 16 16",paths:["M4.5 3h2.5v10H4.5zM9 3h2.5v10H9z"]},play:{viewBox:"0 0 16 16",paths:["M4.5 3l8 5-8 5z"]},chart:{viewBox:"0 0 16 16",paths:["M2.5 13.5h11","M4.5 13.5v-4","M8 13.5v-8","M11.5 13.5v-6"],paint:"stroke"},palette:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 0 0 0 13c.7 0 1.2-.5 1.2-1.1 0-.3-.1-.6-.3-.8a1.1 1.1 0 0 1 .8-1.9h1.4A3.4 3.4 0 0 0 14.5 7c0-3-2.9-5.5-6.5-5.5Z","M4.6 7.6a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM6.7 4.6a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM9.9 4.7a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM11.9 6.9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"]},undo:{viewBox:"0 0 16 16",paths:["M3 8h6.5a3.25 3.25 0 0 1 0 6.5H6M3 8l3-3M3 8l3 3"],paint:"stroke"},redo:{viewBox:"0 0 16 16",paths:["M13 8H6.5a3.25 3.25 0 0 0 0 6.5H10M13 8l-3-3M13 8l-3 3"],paint:"stroke"},columns:{viewBox:"0 0 16 16",paths:["M2.5 2.5h11v11h-11zM6.5 2.5v11M10 2.5v11"],paint:"stroke"},download:{viewBox:"0 0 16 16",paths:["M8 2.5v7.5M8 10 5 7M8 10l3-3M2.5 12.5h11"],paint:"stroke"},restore:{viewBox:"0 0 16 16",paths:["M3 8a5 5 0 1 0 1.6-3.7M3 3v2.8h2.8"],paint:"stroke"},spreadsheet:{viewBox:"0 0 16 16",paths:["M3 2.5h10v11H3zM3 6h10M3 9.5h10M6.5 6v7.5"],paint:"stroke"},print:{viewBox:"0 0 16 16",paths:["M4.5 6V2.5h7V6M4.5 11.5h-2V6h11v5.5h-2M4.5 9.5h7v4h-7z"],paint:"stroke"},maximise:{viewBox:"0 0 16 16",paths:["M2.5 6V2.5H6M10 2.5h3.5V6M13.5 10v3.5H10M6 13.5H2.5V10"],paint:"stroke"},minimise:{viewBox:"0 0 16 16",paths:["M6 2.5V6H2.5M13.5 6H10V2.5M10 13.5V10h3.5M2.5 10H6v3.5"],paint:"stroke"},views:{viewBox:"0 0 16 16",paths:["M4 2.5h8v11L8 11l-4 2.5z"],paint:"stroke"},search:{viewBox:"0 0 16 16",paths:["M7 2.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9M10.4 10.4 13.5 13.5"],paint:"stroke"},pencil:{viewBox:"0 0 16 16",paths:["M2.5 11.2 11 2.7l2.3 2.3-8.5 8.5-3 .7z"],paint:"stroke"},trash:{viewBox:"0 0 16 16",paths:["M3 4.5h10M6.5 4.5V3h3v1.5M4.5 4.5l.7 8.5h5.6l.7-8.5M6.8 7v3.7M9.2 7v3.7"],paint:"stroke"},share:{viewBox:"0 0 16 16",paths:["M11.5 5.5a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6M4.5 9.8a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6M11.5 14.1a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6M6.1 7.1l3.8-1.9M6.1 8.9l3.8 1.9"],paint:"stroke"},pin:{viewBox:"0 0 16 16",paths:["M8 2v6M5 8h6l1 2.5H4zM8 10.5V14"],paint:"stroke"},sortAsc:{viewBox:"0 0 16 16",paths:["M8 3.5 12 8H4Z"]},sortDesc:{viewBox:"0 0 16 16",paths:["M8 12.5 4 8h8Z"]},menu:{viewBox:"0 0 16 16",paths:["M2.5 4.5h11M2.5 8h11M2.5 11.5h11"],paint:"stroke"},drag:{viewBox:"0 0 16 16",paths:["M6 3.5h1.5V5H6Zm3 0h1.5V5H9ZM6 7.25h1.5v1.5H6Zm3 0h1.5v1.5H9ZM6 11h1.5v1.5H6Zm3 0h1.5v1.5H9Z"]},star:{viewBox:"0 0 16 16",paths:["M8 1.6l1.96 3.97 4.38.64-3.17 3.09.75 4.36L8 11.6l-3.92 2.06.75-4.36L1.66 6.21l4.38-.64Z"]},heart:{viewBox:"0 0 16 16",paths:["M8 14.2 2.4 8.6a3.3 3.3 0 0 1 4.67-4.67L8 4.86l.93-.93A3.3 3.3 0 0 1 13.6 8.6Z"]},circleFilled:{viewBox:"0 0 16 16",paths:["M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2Z"]},square:{viewBox:"0 0 16 16",paths:["M3 3h10v10H3Z"]},bolt:{viewBox:"0 0 16 16",paths:["M9.5 1.5 3.5 9h3.2l-.7 5.5L12.5 7H9.3Z"]},flag:{viewBox:"0 0 16 16",paths:["M4 1.5h1.5v13H4Zm1.5 1h7.5l-1.6 2.6L13 7.7H5.5Z"]},arrow:{viewBox:"0 0 16 16",paths:["M3 13 12.5 3.5","M7.5 3.5H12.5V8.5"],paint:"stroke"},highlight:{viewBox:"0 0 16 16",paths:["M4 11 10 5l2 2-6 6H4z","M3 14.5h10"],paint:"stroke"},eraser:{viewBox:"0 0 16 16",paths:["M3 11 9 5 13 9 7 15Z","M5 13 9 9"],paint:"stroke"},thumbUp:{viewBox:"0 0 16 16",paths:["M5.5 6.8 8.6 1.5a1.6 1.6 0 0 1 1.5 2.1L9.4 6h3.4a1.4 1.4 0 0 1 1.35 1.78l-1.3 4.6A1.9 1.9 0 0 1 11 13.8H5.5ZM4 6.5H1.5v7.3H4Z"]},eye:{viewBox:"0 0 16 16",paths:["M8 3.2c3.3 0 6 3 6.6 4.5C14 9.3 11.3 12.3 8 12.3S2 9.3 1.4 7.7C2 6.2 4.7 3.2 8 3.2Zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z"]},eyeOff:{viewBox:"0 0 16 16",paths:["M2.2 2.9 13.1 13.8M8 3.2c3.3 0 6 3 6.6 4.5a9.4 9.4 0 0 1-1.9 2.4M5 4.2A9 9 0 0 0 1.4 7.7C2 9.3 4.7 12.3 8 12.3c.9 0 1.7-.2 2.5-.5M6.3 6a2.5 2.5 0 0 0 3.4 3.5"],paint:"stroke"},copy:{viewBox:"0 0 16 16",paths:["M5.5 2.5h8v8M2.5 5.5h8v8h-8Z"],paint:"stroke"},present:{viewBox:"0 0 16 16",paths:["M2 2.5h12v8H2Z","M8 10.5v3","M6 13.5h4"],paint:"stroke"},cabinet:{viewBox:"0 0 16 16",paths:["M3 2h10v12H3ZM5 4v4h2.5V4ZM8.5 4v4H11V4ZM5 9.5V11h6V9.5Z"]},splice:{viewBox:"0 0 16 16",paths:["M8 4.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7ZM8 6.8a1.2 1.2 0 1 1 0 2.4 1.2 1.2 0 0 1 0-2.4ZM1.5 7.2h3v1.6h-3ZM11.5 7.2h3v1.6h-3Z"]},exchange:{viewBox:"0 0 16 16",paths:["M8 1.5 14.5 6v1H1.5V6ZM3 8h2v5H3ZM7 8h2v5H7ZM11 8h2v5h-2ZM1.5 13.5h13V15h-13Z"]},pole:{viewBox:"0 0 16 16",paths:["M7.2 1.5h1.6V15H7.2ZM3 3.5h10V5H3ZM4.5 7h7v1.4h-7Z"]},chamber:{viewBox:"0 0 16 16",paths:["M2.5 3.5h11v9h-11ZM4.5 5.5v5h7v-5ZM6 7h4v1.5H6Z"]},premises:{viewBox:"0 0 16 16",paths:["M8 1.8 14.5 7.5h-2V14h-9V7.5h-2ZM6.8 10.4V14h2.4v-3.6Z"]},fault:{viewBox:"0 0 16 16",paths:["M5.2 1.5h5.6L14.5 5.2v5.6L10.8 14.5H5.2L1.5 10.8V5.2ZM5.4 9.4 6.6 10.6 8 9.2 9.4 10.6 10.6 9.4 9.2 8 10.6 6.6 9.4 5.4 8 6.8 6.6 5.4 5.4 6.6 6.8 8Z"]},user:{viewBox:"0 0 16 16",paths:["M8 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z","M8 9c3 0 5.5 1.5 5.5 3.5V14h-11v-1.5C2.5 10.5 5 9 8 9Z"]},blank:{viewBox:"0 0 16 16",paths:[""]}};function T(v){return typeof v=="string"?{viewBox:"0 0 16 16",paths:[v],paint:"fill"}:Array.isArray(v)?{viewBox:"0 0 16 16",paths:v.slice(),paint:"fill"}:{viewBox:v&&v.viewBox||"0 0 16 16",paths:v&&Array.isArray(v.paths)?v.paths.slice():v&&v.path?[v.path]:[],paint:v&&v.paint==="stroke"?"stroke":"fill"}}}),_e("packages/modules/form/controls/field-icon.js",function(F,X){"use strict";Object.defineProperty(F,"fieldIconStylesheet",{enumerable:!0,get:function(){return u}}),Object.defineProperty(F,"injectFieldIconStyles",{enumerable:!0,get:function(){return L}}),Object.defineProperty(F,"makeFieldIcon",{enumerable:!0,get:function(){return O}});const T=X("packages/core/src/internal/icon-builtins.js").BUILT_IN_ICONS,v="http://www.w3.org/2000/svg",te="data-lattice-form-field-icon-styles";function u(){return`
815
916
  .lat-form__field-icon{
816
917
  display:block; flex:0 0 auto;
817
918
  width:calc(var(--lattice-control-size) * var(--lattice-scale));
818
919
  height:calc(var(--lattice-control-size) * var(--lattice-scale));
819
920
  }
820
- `.trim()}function z(_){const T=_&&_.documentElement;if(!T||T.getAttribute(ee))return;T.setAttribute(ee,"1");const k=_.createElement("style");k.textContent=s(),(_.head||_.body||T).appendChild(k)}function E(_,T){const k=P[T];if(!k)return null;const f=_.createElementNS(v,"svg");f.setAttribute("class","lat-form__field-icon"),f.setAttribute("viewBox",k.viewBox||"0 0 16 16"),f.setAttribute("aria-hidden","true"),f.setAttribute("focusable","false");const p=k.paint==="stroke";for(const l of k.paths||[]){const j=_.createElementNS(v,"path");j.setAttribute("d",l),p?(j.setAttribute("fill","none"),j.setAttribute("stroke","currentColor"),j.setAttribute("stroke-width","1.5"),j.setAttribute("stroke-linecap","round"),j.setAttribute("stroke-linejoin","round")):j.setAttribute("fill","currentColor"),f.appendChild(j)}return f}}),ge("packages/modules/form/messages.js",function(R,Y){"use strict";Object.defineProperty(R,"FALLBACK_EN",{enumerable:!0,get:function(){return P}}),Object.defineProperty(R,"t",{enumerable:!0,get:function(){return s}}),Object.defineProperty(R,"createTranslator",{enumerable:!0,get:function(){return z}});const n=Object.freeze({"form.separator":"Separator","form.select.toggle":"Show options","form.combo.toggle":"Show options","form.combo.loading":"Loading…","form.combo.empty":"No results","form.combo.error":"Could not load options","form.combo.retry":"Retry","form.combo.selectAll":"Select all","form.combo.remove":"Remove {label}","form.combo.results":"{count} results","form.combo.more":"+{count}","form.combo.create":"Create “{query}”","form.rating":"Rating","form.stage":"Stage","form.chips":"Options","form.chips.min":"Select at least {min}.","form.chips.max":"Select at most {max}.","form.password.show":"Show password","form.password.hide":"Hide password","form.otp.label":"One-time code","form.otp.digit":"Digit {n} of {total}","form.invalid":"Invalid value","form.required":"Required","form.step":"Step","form.steps":"Steps","form.next":"Next","form.back":"Back","form.finish":"Finish","form.number.unitPicker":"Display unit","form.validation.required":"This field is required.","form.validation.email":"Enter a valid email address.","form.validation.number":"Enter a valid number.","form.validation.unit":"Enter a value such as 10 {unit}.","form.validation.min":"Must be {min} or more.","form.validation.max":"Must be {max} or less.","form.validation.step":"Must be in steps of {step}.","form.validation.integer":"Enter a whole number.","form.validation.url":"Enter a valid URL.","form.validation.pattern":"The value does not match the required format.","form.validation.custom":"Validation failed.","form.datepicker.open":"Open calendar","form.datepicker.openTime":"Open time picker","form.datepicker.prev":"Previous month","form.datepicker.next":"Next month","form.datepicker.hour":"Hour","form.datepicker.minute":"Minute","form.datepicker.done":"Done","form.tooltip.help":"Help","form.readonly":"Read-only","form.panel.collapse":"Collapse section","form.panel.expand":"Expand section","form.file.add":"Add files","form.file.dropText":"Drag files here or","form.file.browse":"browse","form.file.dropToUpload":"Drop to upload","form.file.addMore":"Add more or drop here","form.file.typeNotAccepted":"This file type is not accepted","form.file.hint.size":"up to {size} each","form.file.hint.file":"max {max} file","form.file.hint.files":"max {max} files","form.file.addedOne":"1 file added","form.file.added":"{count} files added","form.file.uploaded":"{name} uploaded","form.file.failed":"{name} failed","form.file.remove":"Remove","form.file.retry":"Retry","form.file.rejected.size":"File is larger than {size}","form.file.rejected.type":"File type not allowed","form.file.rejected.count":"Too many files (max {max})","form.file.uploadFailed":"Upload failed","form.richtext.bold":"Bold (Ctrl+B)","form.richtext.italic":"Italic (Ctrl+I)","form.richtext.underline":"Underline (Ctrl+U)","form.richtext.strike":"Strikethrough","form.richtext.color":"Text colour","form.richtext.heading":"Paragraph style","form.richtext.alignLeft":"Align left","form.richtext.alignCenter":"Align centre","form.richtext.alignRight":"Align right","form.richtext.ul":"Bulleted list","form.richtext.ol":"Numbered list","form.richtext.outdent":"Decrease indent","form.richtext.indent":"Increase indent","form.richtext.link":"Link (Ctrl+K)","form.richtext.image":"Insert image","form.richtext.clear":"Clear formatting","form.richtext.source":"HTML source","form.richtext.undo":"Undo (Ctrl+Z)","form.richtext.redo":"Redo (Ctrl+Y)","form.richtext.lowercase":"lower case","form.richtext.uppercase":"UPPER CASE","form.richtext.lowercaseText":"ab","form.richtext.uppercaseText":"AB","form.richtext.placeholder":"Start writing…","form.richtext.formatting":"Formatting","form.richtext.richText":"Rich text","form.richtext.linkLabel":"Link address","form.richtext.linkPlaceholder":"https://","form.richtext.linkAdd":"Add link","form.richtext.linkUpdate":"Update","form.richtext.linkRemove":"Remove","form.richtext.colorCustom":"Custom colour","form.richtext.colorRemove":"Remove colour"}),P=Object.freeze({...n});function v(E,_={}){const T=n[E];return T===void 0?E:T.replace(/\{(\w+)\}/g,(k,f)=>_[f]===void 0?k:String(_[f]))}const ee={t(E,_={}){return v(E,_)}};function s(E,_={}){return ee.t(E,_)}function z(E){return{t(_,T={}){const k=E&&typeof E.t=="function"?E.t(_,T):_;return k===_?v(_,T):k}}}}),ge("packages/dom/src/editors/sanitize-richtext.js",function(R,Y){"use strict";Object.defineProperty(R,"ALLOWED",{enumerable:!0,get:function(){return n}}),Object.defineProperty(R,"escapeHtml",{enumerable:!0,get:function(){return E}}),Object.defineProperty(R,"sanitizeRichText",{enumerable:!0,get:function(){return k}});const n={p:["style","class"],br:[],h1:["style"],h2:["style"],h3:["style"],h4:["style"],blockquote:["style"],pre:[],code:[],b:[],strong:[],i:[],em:[],u:[],s:[],strike:[],sub:[],sup:[],span:["style","class"],font:["color"],ins:["class"],del:["class"],ul:[],ol:["start"],li:["style","class"],a:["href","target","rel","title"],img:["src","alt","width","height","style"],hr:[],div:["style"],table:[],thead:[],tbody:[],tr:[],th:["style"],td:["style"]},P={color:/^(#[0-9a-f]{3,8}|rgb\(|rgba\(|[a-z]+$)/i,"background-color":/^(#[0-9a-f]{3,8}|rgb\(|rgba\(|[a-z]+$)/i,"text-align":/^(left|center|right|justify)$/,"max-width":/^\d+(px|%)$/,width:/^\d+(px|%)$/,height:/^\d+(px|%)$/,"text-decoration":/^(underline|line-through)$/,"font-weight":/^(bold|\d{3})$/,"font-style":/^italic$/},v=new Set(["script","style","iframe","object","embed","meta","link","title","head","svg","math","form","input","button","textarea","select","noscript","template"]),ee=["section","article","header","footer","main","aside","nav","center","figure","figcaption","dl","dt","dd","address","html","body"],s=/^(data:image\/|https?:\/\/|\/)/i,z={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function E(f){const p=f==null?"":String(f);return/[&<>"']/.test(p)?p.replace(/[&<>"']/g,l=>z[l]):p}function _(f,p){const l=String(f).replace(/[\s\u0000-\u001f\u007f]/g,"").toLowerCase();return l.startsWith("javascript:")||l.startsWith("vbscript:")?!0:l.startsWith("data:")?!(p&&l.startsWith("data:image/")):!1}function T(f){if(f.__latRtCanParse!==void 0)return f.__latRtCanParse;try{const p=f.createElement("template");p.innerHTML="<p>x</p>";const l=!!(p.content&&p.content.childNodes&&p.content.childNodes.length);return f.__latRtCanParse=l,l}catch{return f.__latRtCanParse=!1,!1}}function k(f,p,l=n,j={}){const $=l||n,t=String(p??"");if(!T(f))return E(t.replace(/<[^>]*>/g,""));const u=j.imageSrcPattern||s,m=f.createElement("template");m.innerHTML=t;const N=L=>{[...L.childNodes].forEach(g=>{if(g.nodeType===8){g.remove();return}if(g.nodeType!==1)return;const r=g.tagName.toLowerCase();if(v.has(r)){g.remove();return}if(N(g),!$[r]){const x=ee.includes(r)?f.createElement("p"):null;if(x){for(;g.firstChild;)x.appendChild(g.firstChild);g.replaceWith(x)}else{for(;g.firstChild;)g.parentNode.insertBefore(g.firstChild,g);g.remove()}return}if([...g.attributes].forEach(x=>{const i=x.name.toLowerCase();if(/^on/i.test(i)||i==="srcdoc"||i==="id"||i==="name"){g.removeAttribute(x.name);return}if(!$[r].includes(i)){g.removeAttribute(x.name);return}if(i==="href"){const o=x.value.trim();(!/^(https?:\/\/|mailto:|tel:|\/|#)/i.test(o)||_(o))&&g.removeAttribute("href")}else if(i==="src"){const o=x.value.trim();(!u.test(o)||_(o,!0))&&g.removeAttribute("src")}else if(i==="style"){if(j.stripStyles&&r!=="img"){g.removeAttribute("style");return}const o=x.value.split(";").map(e=>e.trim()).filter(Boolean).map(e=>{const y=e.indexOf(":");return[e.slice(0,y).trim().toLowerCase(),e.slice(y+1).trim()]}).filter(([e,y])=>P[e]&&P[e].test(y)).map(([e,y])=>`${e}: ${y}`).join("; ");o?g.setAttribute("style",o):g.removeAttribute("style")}else if(i==="target"&&x.value!=="_blank")g.removeAttribute("target");else if(i==="class"){const o=x.value.split(/\s+/).filter(e=>/^lat-/.test(e)||/^dfc-/.test(e)).join(" ");o?g.setAttribute("class",o):g.removeAttribute("class")}}),r==="div"){const x=f.createElement("p");for([...g.attributes].forEach(i=>x.setAttribute(i.name,i.value));g.firstChild;)x.appendChild(g.firstChild);g.replaceWith(x)}if(r==="img"&&!g.getAttribute("src")&&g.remove(),r==="a")if(g.getAttribute("href"))g.getAttribute("target")==="_blank"&&g.setAttribute("rel","noopener noreferrer");else{for(;g.firstChild;)g.parentNode.insertBefore(g.firstChild,g);g.remove()}})};return N(m.content),m.innerHTML}}),ge("packages/modules/form/controls/combo.js",function(R,Y){"use strict";Object.defineProperty(R,"adornmentStylesheet",{enumerable:!0,get:function(){return r}}),Object.defineProperty(R,"injectAdornmentStyles",{enumerable:!0,get:function(){return x}}),Object.defineProperty(R,"isImageUrl",{enumerable:!0,get:function(){return i}}),Object.defineProperty(R,"initialsFor",{enumerable:!0,get:function(){return o}}),Object.defineProperty(R,"stableHash",{enumerable:!0,get:function(){return e}}),Object.defineProperty(R,"avatarColor",{enumerable:!0,get:function(){return y}}),Object.defineProperty(R,"applyAvatarTint",{enumerable:!0,get:function(){return d}}),Object.defineProperty(R,"makeIcon",{enumerable:!0,get:function(){return V}}),Object.defineProperty(R,"renderIcon",{enumerable:!0,get:function(){return te}}),Object.defineProperty(R,"renderAvatar",{enumerable:!0,get:function(){return I}}),Object.defineProperty(R,"renderDot",{enumerable:!0,get:function(){return le}}),Object.defineProperty(R,"renderAdornment",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(R,"renderTemplateContent",{enumerable:!0,get:function(){return G}}),Object.defineProperty(R,"createCombo",{enumerable:!0,get:function(){return C}});const P=Y("packages/modules/form/controls/registry.js").registerControl,ee=Y("packages/modules/form/messages.js").t,z=Y("packages/modules/form/styles.js").injectStyles,_=Y("packages/core/src/internal/icon-builtins.js").BUILT_IN_ICONS,k=Y("packages/dom/src/editors/sanitize-richtext.js").sanitizeRichText,f=Y("packages/modules/form/controls/field-icon.js"),p=f.makeFieldIcon,l=f.injectFieldIconStyles,j=250,$=20,t=48,u="data-lattice-combo-chip-row-styles";function m(){return`
921
+ `.trim()}function L(k){const I=k&&k.documentElement;if(!I||I.getAttribute(te))return;I.setAttribute(te,"1");const N=k.createElement("style");N.textContent=u(),(k.head||k.body||I).appendChild(N)}function O(k,I){const N=T[I];if(!N)return null;const g=k.createElementNS(v,"svg");g.setAttribute("class","lat-form__field-icon"),g.setAttribute("viewBox",N.viewBox||"0 0 16 16"),g.setAttribute("aria-hidden","true"),g.setAttribute("focusable","false");const p=N.paint==="stroke";for(const a of N.paths||[]){const $=k.createElementNS(v,"path");$.setAttribute("d",a),p?($.setAttribute("fill","none"),$.setAttribute("stroke","currentColor"),$.setAttribute("stroke-width","1.5"),$.setAttribute("stroke-linecap","round"),$.setAttribute("stroke-linejoin","round")):$.setAttribute("fill","currentColor"),g.appendChild($)}return g}}),_e("packages/modules/form/messages.js",function(F,X){"use strict";Object.defineProperty(F,"FALLBACK_EN",{enumerable:!0,get:function(){return T}}),Object.defineProperty(F,"t",{enumerable:!0,get:function(){return u}}),Object.defineProperty(F,"createTranslator",{enumerable:!0,get:function(){return L}});const e=Object.freeze({"form.separator":"Separator","form.select.toggle":"Show options","form.combo.toggle":"Show options","form.combo.loading":"Loading…","form.combo.empty":"No results","form.combo.error":"Could not load options","form.combo.retry":"Retry","form.combo.selectAll":"Select all","form.combo.remove":"Remove {label}","form.combo.results":"{count} results","form.combo.more":"+{count}","form.combo.create":"Create “{query}”","form.rating":"Rating","form.stage":"Stage","form.chips":"Options","form.chips.min":"Select at least {min}.","form.chips.max":"Select at most {max}.","form.password.show":"Show password","form.password.hide":"Hide password","form.otp.label":"One-time code","form.otp.digit":"Digit {n} of {total}","form.invalid":"Invalid value","form.required":"Required","form.step":"Step","form.steps":"Steps","form.next":"Next","form.back":"Back","form.finish":"Finish","form.number.unitPicker":"Display unit","form.validation.required":"This field is required.","form.validation.email":"Enter a valid email address.","form.validation.number":"Enter a valid number.","form.validation.unit":"Enter a value such as 10 {unit}.","form.validation.min":"Must be {min} or more.","form.validation.max":"Must be {max} or less.","form.validation.step":"Must be in steps of {step}.","form.validation.integer":"Enter a whole number.","form.validation.url":"Enter a valid URL.","form.validation.pattern":"The value does not match the required format.","form.validation.custom":"Validation failed.","form.datepicker.open":"Open calendar","form.datepicker.openTime":"Open time picker","form.datepicker.prev":"Previous month","form.datepicker.next":"Next month","form.datepicker.hour":"Hour","form.datepicker.minute":"Minute","form.datepicker.done":"Done","form.tooltip.help":"Help","form.readonly":"Read-only","form.panel.collapse":"Collapse section","form.panel.expand":"Expand section","form.file.add":"Add files","form.file.dropText":"Drag files here or","form.file.browse":"browse","form.file.dropToUpload":"Drop to upload","form.file.addMore":"Add more or drop here","form.file.typeNotAccepted":"This file type is not accepted","form.file.hint.size":"up to {size} each","form.file.hint.file":"max {max} file","form.file.hint.files":"max {max} files","form.file.addedOne":"1 file added","form.file.added":"{count} files added","form.file.uploaded":"{name} uploaded","form.file.failed":"{name} failed","form.file.remove":"Remove","form.file.retry":"Retry","form.file.rejected.size":"File is larger than {size}","form.file.rejected.type":"File type not allowed","form.file.rejected.count":"Too many files (max {max})","form.file.uploadFailed":"Upload failed","form.richtext.bold":"Bold (Ctrl+B)","form.richtext.italic":"Italic (Ctrl+I)","form.richtext.underline":"Underline (Ctrl+U)","form.richtext.strike":"Strikethrough","form.richtext.color":"Text colour","form.richtext.heading":"Paragraph style","form.richtext.alignLeft":"Align left","form.richtext.alignCenter":"Align centre","form.richtext.alignRight":"Align right","form.richtext.ul":"Bulleted list","form.richtext.ol":"Numbered list","form.richtext.outdent":"Decrease indent","form.richtext.indent":"Increase indent","form.richtext.link":"Link (Ctrl+K)","form.richtext.image":"Insert image","form.richtext.clear":"Clear formatting","form.richtext.source":"HTML source","form.richtext.undo":"Undo (Ctrl+Z)","form.richtext.redo":"Redo (Ctrl+Y)","form.richtext.lowercase":"lower case","form.richtext.uppercase":"UPPER CASE","form.richtext.lowercaseText":"ab","form.richtext.uppercaseText":"AB","form.richtext.placeholder":"Start writing…","form.richtext.formatting":"Formatting","form.richtext.richText":"Rich text","form.richtext.linkLabel":"Link address","form.richtext.linkPlaceholder":"https://","form.richtext.linkAdd":"Add link","form.richtext.linkUpdate":"Update","form.richtext.linkRemove":"Remove","form.richtext.colorCustom":"Custom colour","form.richtext.colorRemove":"Remove colour","form.color.open":"Open colour picker","form.color.clear":"Clear colour","form.color.customColor":"Custom colour","form.color.select":"Select","form.color.hexLabel":"Hex","form.color.redLabel":"Red","form.color.greenLabel":"Green","form.color.blueLabel":"Blue","form.color.saturationLightness":"Saturation and lightness","form.color.hue":"Hue","form.color.invalidHex":"Enter a colour such as #1a2b3c"}),T=Object.freeze({...e});function v(O,k={}){const I=e[O];return I===void 0?O:I.replace(/\{(\w+)\}/g,(N,g)=>k[g]===void 0?N:String(k[g]))}const te={t(O,k={}){return v(O,k)}};function u(O,k={}){return te.t(O,k)}function L(O){return{t(k,I={}){const N=O&&typeof O.t=="function"?O.t(k,I):k;return N===k?v(k,I):N}}}}),_e("packages/dom/src/editors/sanitize-richtext.js",function(F,X){"use strict";Object.defineProperty(F,"ALLOWED",{enumerable:!0,get:function(){return e}}),Object.defineProperty(F,"escapeHtml",{enumerable:!0,get:function(){return O}}),Object.defineProperty(F,"sanitizeRichText",{enumerable:!0,get:function(){return N}});const e={p:["style","class"],br:[],h1:["style"],h2:["style"],h3:["style"],h4:["style"],blockquote:["style"],pre:[],code:[],b:[],strong:[],i:[],em:[],u:[],s:[],strike:[],sub:[],sup:[],span:["style","class"],font:["color"],ins:["class"],del:["class"],ul:[],ol:["start"],li:["style","class"],a:["href","target","rel","title"],img:["src","alt","width","height","style"],hr:[],div:["style"],table:[],thead:[],tbody:[],tr:[],th:["style"],td:["style"]},T={color:/^(#[0-9a-f]{3,8}|rgb\(|rgba\(|[a-z]+$)/i,"background-color":/^(#[0-9a-f]{3,8}|rgb\(|rgba\(|[a-z]+$)/i,"text-align":/^(left|center|right|justify)$/,"max-width":/^\d+(px|%)$/,width:/^\d+(px|%)$/,height:/^\d+(px|%)$/,"text-decoration":/^(underline|line-through)$/,"font-weight":/^(bold|\d{3})$/,"font-style":/^italic$/},v=new Set(["script","style","iframe","object","embed","meta","link","title","head","svg","math","form","input","button","textarea","select","noscript","template"]),te=["section","article","header","footer","main","aside","nav","center","figure","figcaption","dl","dt","dd","address","html","body"],u=/^(data:image\/|https?:\/\/|\/)/i,L={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function O(g){const p=g==null?"":String(g);return/[&<>"']/.test(p)?p.replace(/[&<>"']/g,a=>L[a]):p}function k(g,p){const a=String(g).replace(/[\s\u0000-\u001f\u007f]/g,"").toLowerCase();return a.startsWith("javascript:")||a.startsWith("vbscript:")?!0:a.startsWith("data:")?!(p&&a.startsWith("data:image/")):!1}function I(g){if(g.__latRtCanParse!==void 0)return g.__latRtCanParse;try{const p=g.createElement("template");p.innerHTML="<p>x</p>";const a=!!(p.content&&p.content.childNodes&&p.content.childNodes.length);return g.__latRtCanParse=a,a}catch{return g.__latRtCanParse=!1,!1}}function N(g,p,a=e,$={}){const y=a||e,n=String(p??"");if(!I(g))return O(n.replace(/<[^>]*>/g,""));const d=$.imageSrcPattern||u,h=g.createElement("template");h.innerHTML=n;const z=W=>{[...W.childNodes].forEach(S=>{if(S.nodeType===8){S.remove();return}if(S.nodeType!==1)return;const c=S.tagName.toLowerCase();if(v.has(c)){S.remove();return}if(z(S),!y[c]){const x=te.includes(c)?g.createElement("p"):null;if(x){for(;S.firstChild;)x.appendChild(S.firstChild);S.replaceWith(x)}else{for(;S.firstChild;)S.parentNode.insertBefore(S.firstChild,S);S.remove()}return}if([...S.attributes].forEach(x=>{const t=x.name.toLowerCase();if(/^on/i.test(t)||t==="srcdoc"||t==="id"||t==="name"){S.removeAttribute(x.name);return}if(!y[c].includes(t)){S.removeAttribute(x.name);return}if(t==="href"){const i=x.value.trim();(!/^(https?:\/\/|mailto:|tel:|\/|#)/i.test(i)||k(i))&&S.removeAttribute("href")}else if(t==="src"){const i=x.value.trim();(!d.test(i)||k(i,!0))&&S.removeAttribute("src")}else if(t==="style"){if($.stripStyles&&c!=="img"){S.removeAttribute("style");return}const i=x.value.split(";").map(r=>r.trim()).filter(Boolean).map(r=>{const C=r.indexOf(":");return[r.slice(0,C).trim().toLowerCase(),r.slice(C+1).trim()]}).filter(([r,C])=>T[r]&&T[r].test(C)).map(([r,C])=>`${r}: ${C}`).join("; ");i?S.setAttribute("style",i):S.removeAttribute("style")}else if(t==="target"&&x.value!=="_blank")S.removeAttribute("target");else if(t==="class"){const i=x.value.split(/\s+/).filter(r=>/^lat-/.test(r)||/^dfc-/.test(r)).join(" ");i?S.setAttribute("class",i):S.removeAttribute("class")}}),c==="div"){const x=g.createElement("p");for([...S.attributes].forEach(t=>x.setAttribute(t.name,t.value));S.firstChild;)x.appendChild(S.firstChild);S.replaceWith(x)}if(c==="img"&&!S.getAttribute("src")&&S.remove(),c==="a")if(S.getAttribute("href"))S.getAttribute("target")==="_blank"&&S.setAttribute("rel","noopener noreferrer");else{for(;S.firstChild;)S.parentNode.insertBefore(S.firstChild,S);S.remove()}})};return z(h.content),h.innerHTML}}),_e("packages/modules/form/controls/combo.js",function(F,X){"use strict";Object.defineProperty(F,"adornmentStylesheet",{enumerable:!0,get:function(){return c}}),Object.defineProperty(F,"injectAdornmentStyles",{enumerable:!0,get:function(){return x}}),Object.defineProperty(F,"isImageUrl",{enumerable:!0,get:function(){return t}}),Object.defineProperty(F,"initialsFor",{enumerable:!0,get:function(){return i}}),Object.defineProperty(F,"stableHash",{enumerable:!0,get:function(){return r}}),Object.defineProperty(F,"avatarColor",{enumerable:!0,get:function(){return C}}),Object.defineProperty(F,"applyAvatarTint",{enumerable:!0,get:function(){return b}}),Object.defineProperty(F,"makeIcon",{enumerable:!0,get:function(){return G}}),Object.defineProperty(F,"renderIcon",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(F,"renderAvatar",{enumerable:!0,get:function(){return U}}),Object.defineProperty(F,"renderDot",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(F,"renderAdornment",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(F,"renderTemplateContent",{enumerable:!0,get:function(){return f}}),Object.defineProperty(F,"createCombo",{enumerable:!0,get:function(){return _}});const T=X("packages/modules/form/controls/registry.js").registerControl,te=X("packages/modules/form/messages.js").t,L=X("packages/modules/form/styles.js").injectStyles,k=X("packages/core/src/internal/icon-builtins.js").BUILT_IN_ICONS,N=X("packages/dom/src/editors/sanitize-richtext.js").sanitizeRichText,g=X("packages/modules/form/controls/field-icon.js"),p=g.makeFieldIcon,a=g.injectFieldIconStyles,$=250,y=20,n=48,d="data-lattice-combo-chip-row-styles";function h(){return`
821
922
  .lat-combo__control{ position:relative; }
822
923
  .lat-combo__chip-row{
823
924
  display:flex;flex-wrap:wrap;align-items:flex-start;
@@ -832,7 +933,7 @@
832
933
  .lat-combo[data-chip-placement] .lat-combo__summary{
833
934
  flex:0 0 auto;margin-top:calc(var(--lattice-space)/4);
834
935
  }
835
- `.trim()}function N(c){const A=c&&c.documentElement;if(!A||A.getAttribute(u))return;A.setAttribute(u,"1");const h=c.createElement("style");h.textContent=m(),(c.head||c.body||A).appendChild(h)}const L="data-lattice-form-adornment-styles",g="http://www.w3.org/2000/svg";function r(){return`
936
+ `.trim()}function z(s){const w=s&&s.documentElement;if(!w||w.getAttribute(d))return;w.setAttribute(d,"1");const m=s.createElement("style");m.textContent=h(),(s.head||s.body||w).appendChild(m)}const W="data-lattice-form-adornment-styles",S="http://www.w3.org/2000/svg";function c(){return`
836
937
  .lat-combo__value{
837
938
  flex:0 0 auto; display:inline-flex; align-items:center; min-width:0;
838
939
  gap:calc(var(--lattice-space) / 2);
@@ -871,17 +972,17 @@
871
972
  .lat-select__value{ display:flex; align-items:center; gap:calc(var(--lattice-space) / 2); }
872
973
  .lat-select__value[data-placeholder='true']{ display:block; }
873
974
  .lat-select__label{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
874
- `.trim()}function x(c){const A=c&&c.documentElement;if(!A||A.getAttribute(L))return;A.setAttribute(L,"1");const h=c.createElement("style");h.textContent=r(),(c.head||c.body||A).appendChild(h)}function i(c){return/^(https?:|data:image\/|\/)/i.test(c)}function o(c){const A=String(c??"").trim();if(!A)return"";const h=A.split(/\s+/);return h.length>=2?(h[0][0]+h[1][0]).toUpperCase():A.slice(0,2).toUpperCase()}function e(c){let A=5381;const h=String(c??"");for(let F=0;F<h.length;F++)A=(A<<5)+A+h.charCodeAt(F)>>>0;return A}function y(c){if(c&&c.color!=null&&String(c.color)!=="")return String(c.color);const A=c&&c.label!=null?String(c.label):c&&c.value!=null?String(c.value):"";return`hsl(${e(A)%360}, 62%, 45%)`}function d(c,A){c.style.background=y(A),c.style.color="#fff"}function V(c,A){const h=_[A];if(!h)return null;const F=c.createElementNS(g,"svg");F.setAttribute("class","lat-combo__icon"),F.setAttribute("viewBox",h.viewBox||"0 0 16 16"),F.setAttribute("aria-hidden","true"),F.setAttribute("focusable","false");const J=h.paint==="stroke";for(const ie of h.paths||[]){const oe=c.createElementNS(g,"path");oe.setAttribute("d",ie),J?(oe.setAttribute("fill","none"),oe.setAttribute("stroke","currentColor"),oe.setAttribute("stroke-width","1.5"),oe.setAttribute("stroke-linecap","round"),oe.setAttribute("stroke-linejoin","round")):oe.setAttribute("fill","currentColor"),F.appendChild(oe)}return F}function te(c,A,h){if(A==null||A==="")return null;let F;if(A.nodeType)F=A.cloneNode(!0),F.setAttribute&&F.setAttribute("aria-hidden","true");else{const J=String(A),ie=V(c,J);ie?F=ie:(F=c.createElement("span"),F.className="lat-combo__icon lat-combo__icon--glyph",F.setAttribute("aria-hidden","true"),F.textContent=J.slice(0,2))}return h!=null&&String(h)!==""&&F&&F.style&&(F.style.color=String(h)),F}function I(c,A){const h=c.createElement("span");h.className="lat-combo__avatar",h.setAttribute("aria-hidden","true");const F=String(A.avatar);if(i(F)){const J=c.createElement("img");return J.className="lat-combo__avatar-img",J.alt="",J.src=F,J.addEventListener("error",()=>{for(;h.firstChild;)h.removeChild(h.firstChild);h.classList.add("lat-combo__avatar--initials"),h.textContent=o(A.label),d(h,A)}),h.appendChild(J),h}return h.classList.add("lat-combo__avatar--initials"),h.textContent=F.slice(0,2),d(h,A),h}const W={r:255,g:255,b:255},a={r:20,g:24,b:28},B=3;function O(c){const A=c.split(/[,/\s]+/).filter(Boolean).map(Number);return A.length<3||A.some(h=>Number.isNaN(h))?null:{r:A[0],g:A[1],b:A[2]}}function D(c,A){const h=String(A).trim();if(!h)return null;if(c&&c.createElement)try{const J=c.defaultView;if(J&&J.getComputedStyle){const ie=c.createElement("span");ie.style.color=h;const oe=/rgba?\(([^)]+)\)/.exec(J.getComputedStyle(ie).color||"");if(oe)return O(oe[1])}}catch{}if(/^#([0-9a-f]{3,8})$/i.test(h)){let J=h.slice(1);return(J.length===3||J.length===4)&&(J=J.split("").map(ie=>ie+ie).join("")),{r:parseInt(J.slice(0,2),16),g:parseInt(J.slice(2,4),16),b:parseInt(J.slice(4,6),16)}}const F=/rgba?\(([^)]+)\)/.exec(h);return F?O(F[1]):null}function re(c){const A=h=>{const F=h/255;return F<=.03928?F/12.92:((F+.055)/1.055)**2.4};return .2126*A(c.r)+.7152*A(c.g)+.0722*A(c.b)}function H(c,A){const h=re(c),F=re(A),J=Math.max(h,F),ie=Math.min(h,F);return(J+.05)/(ie+.05)}function ce(c,A){const h=D(c,A);return h?H(h,W)<B||H(h,a)<B:!0}function le(c,A){const h=c.createElement("span");h.className="lat-combo__dot",h.setAttribute("aria-hidden","true");const F=String(A.dot);return h.style.background=F,ce(c,F)&&h.setAttribute("data-ring","true"),h}function ne(c,A){const h=A&&A.dot;if(h!=null&&h!=="")return le(c,A);const F=A&&A.icon;if(F!=null&&F!=="")return te(c,F,A.color);const J=A&&A.avatar;return J!=null&&J!==""?I(c,A):null}function G(c,A,h){if(typeof h!="function")return null;const F=h(A);if(F==null||F===!1)return null;if(F.nodeType)return F.cloneNode(!0);const J=c.createElement("span");J.className="lat-combo__template";const ie=String(F);return ie.includes("<")?J.innerHTML=k(c,ie):J.textContent=ie,J}function b(c){return c!=null&&typeof c=="object"?c.value:c}function w(c){return c==null?"":typeof c!="object"?String(c):c.label!=null?String(c.label):c.title!=null?String(c.title):c.value==null?"":String(c.value)}function M(c){return c==null||typeof c!="object"?null:c.description!=null?String(c.description):c.subtitle!=null?String(c.subtitle):null}function U(c){return M(c)!=null||c!=null&&typeof c=="object"&&(c.avatar!=null||c.icon!=null)}function X(c){const A=c!=null&&typeof c=="object"?c:{};return{value:b(c),label:w(c),description:M(c),avatar:A.avatar,icon:A.icon,color:A.color,dot:A.dot,disabled:A.disabled===!0}}function Z(c){if(Array.isArray(c))return{items:c,total:c.length,hasMore:!1};if(c&&typeof c=="object"){const A=Array.isArray(c.items)?c.items:[];return{items:A,total:typeof c.total=="number"?c.total:A.length,hasMore:c.hasMore===!0}}return{items:[],total:0,hasMore:!1}}function q(c,A){return c===A?!0:c!=null&&A!=null&&String(c)===String(A)}function S(c,A,h={}){const F=c&&c.defaultView;return F&&F.Event?new F.Event(A,h):{type:A,bubbles:h.bubbles!==!1,cancelable:h.cancelable!==!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function C(c,A={}){const h=A.doc||c&&c.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;h&&(z(h),x(h),l(h));const F=typeof A.t=="function"?A.t:ee,J=A.multiple===!0,ie=J&&["above","below"].includes(A.chipPlacement)?A.chipPlacement:"inside";h&&ie!=="inside"&&N(h);const oe=typeof A.debounce=="number"&&A.debounce>=0?A.debounce:j,pe=typeof A.pageSize=="number"&&A.pageSize>0?A.pageSize:$,be=A.selectAll===!0,je=J?Array.isArray(A.value)?A.value:A.value==null?[]:[A.value]:A.value==null?null:A.value,ke=h.createElement("div");ke.className="lat-combo",J&&ke.setAttribute("data-multiple","true"),ie!=="inside"&&ke.setAttribute("data-chip-placement",ie),A.inForm||(ke.setAttribute("data-lattice-standalone","true"),ke.setAttribute("data-density",["compact","standard","comfortable"].includes(A.density)?A.density:"standard"));const Se=h.createElement("div");Se.className="lat-combo__control";const Ae=h.createElement("div");Ae.className="lat-combo__chips";const Ne=h.createElement("span");Ne.className="lat-combo__summary",Ne.hidden=!0;const de=h.createElement("div");de.className="lat-combo__chip-row",de.setAttribute("role","group"),de.hidden=!0;const Ce=ie==="inside"?Ae:de;typeof A.maxHeight=="number"&&(Ce.style.maxHeight=`${A.maxHeight}px`);const Ee=h.createElement("span");Ee.className="lat-combo__value",Ee.setAttribute("aria-hidden","true"),Ee.hidden=!0;const he=h.createElement("input");he.className="lat-combo__input",he.type="text",he.setAttribute("role","combobox"),he.setAttribute("aria-autocomplete","list"),he.setAttribute("aria-haspopup","listbox"),J&&he.setAttribute("aria-multiselectable","true"),A.placeholder!=null&&(he.placeholder=String(A.placeholder)),A.inForm&&A.ariaLabel!=null&&he.setAttribute("aria-label",String(A.ariaLabel));const Pe=h.createElement("button");Pe.type="button",Pe.className="lat-combo__toggle",Pe.setAttribute("aria-label",F("form.combo.toggle")),Pe.setAttribute("aria-haspopup","listbox");const $e=p(h,"chevronDown");$e&&Pe.appendChild($e);const ye=h.createElement("div");ye.className="lat-combo__popup",ye.hidden=!0;const Q=h.createElement("div");Q.className="lat-combo__list",Q.setAttribute("role","listbox");const fe=h.createElement("div");fe.className="lat-combo__spacer",Q.appendChild(fe);const se=h.createElement("div");se.className="lat-combo__status",se.setAttribute("role","status"),se.setAttribute("aria-live","polite");const _e=h.createElement("div");_e.className="lat-combo__option lat-combo__option--create",_e.setAttribute("role","option"),_e.hidden=!0,Q.insertBefore(_e,fe),ye.appendChild(Q),ye.appendChild(se),Se.appendChild(ye),ie!=="inside"?(Se.appendChild(he),Se.appendChild(Pe),de.appendChild(Ae),de.appendChild(Ne),ie==="above"&&ke.appendChild(de),ke.appendChild(Se),ie==="below"&&ke.appendChild(de)):(Se.appendChild(Ae),Se.appendChild(Ne),Se.appendChild(Ee),Se.appendChild(he),Se.appendChild(Pe),ke.appendChild(Se));const Re=`lat-combo-lb-${ft()}`;Q.id=Re,he.setAttribute("aria-controls",Re);let me=[],we=[];const et=new Map;let He=0,at=0,tt=!1,Ie=!1,Ye=!1,Fe="",Le=!1,Te=-1,Ue=null,ot=0,We=null;const _t=new Map,vt=Array.isArray(A.options)?A.options:[],Ve=[],De=[];let Ze=0,dt=0;const ur=ft(),Et=[];let qe=!1;function ft(){return ft.n=(ft.n||0)+1,ft.n}function Be(K,ae,ue){K.addEventListener(ae,ue),Et.push(()=>K.removeEventListener(ae,ue))}function pt(K){const ae=et.get(String(K));if(ae)return ae;if(K!=null){for(const ue of et.values())if(q(ue.value,K))return ue}return null}function yt(K){const ae=pt(K);return ae?ae.label:K==null?"":String(K)}function rt(K){K.value!=null&&et.set(String(K.value),K)}function Dt(K){if(typeof A.resolveLabels!="function")return;const ae=K.filter(Oe=>Oe!=null&&!pt(Oe));if(ae.length===0)return;const ue=A.resolveLabels(ae),ve=Oe=>{if(!(qe||!Array.isArray(Oe))){for(const Me of Oe){const xe=X(Me);xe.value!=null&&rt(xe)}Je()}};ue&&typeof ue.then=="function"?ue.then(ve):ve(ue)}function mt(){c.dispatchEvent(S(h,"change",{bubbles:!0}))}function Rt(){return J?we.map(K=>K.value):we.length?we[0].value:null}function jt(K){let ae;if(J)ae=Array.isArray(K)?K:K==null?[]:[K];else{const ve=Array.isArray(K)?K.length?K[0]:null:K;ae=ve==null?[]:[ve]}const ue=ae.filter(ve=>ve!=null&&(ve!==""||pt(ve)!=null));we=ue.map(ve=>pt(ve)||{value:ve,label:ve==null?"":String(ve),description:null,avatar:null,icon:null,color:null,dot:null,disabled:!1}),Dt(ue),Je(),lt(),ct()}function Xe(){return A.readOnly===!0}function Bt(){we.length!==0&&(we=[],Je(),lt(),ct(),mt())}function It(K){const ae=h.createElement("span");ae.className="lat-combo__chip",ae.dataset.value=String(K.value);const ue=G(h,K,A.selectedTemplate);if(ue){const ve=h.createElement("span");ve.className="lat-combo__chip-label",ve.appendChild(ue),ae.appendChild(ve)}else{const ve=ne(h,K);ve&&ae.appendChild(ve);const Oe=h.createElement("span");Oe.className="lat-combo__chip-label",Oe.textContent=yt(K.value),ae.appendChild(Oe)}if(!K.disabled&&!Xe()){const ve=h.createElement("button");ve.type="button",ve.className="lat-combo__chip-remove",ve.setAttribute("aria-label",F("form.combo.remove",{label:yt(K.value)})),ve.textContent="×",Be(ve,"click",Me=>{Me.stopPropagation(),xt(K.value)}),ae.appendChild(ve)}return ae}function Ft(){J||(he.value=we.length?yt(we[0].value):"")}function Vt(){if(J){Ee.hidden=!0;return}for(;Ee.firstChild;)Ee.removeChild(Ee.firstChild);if(we.length===0){Ee.hidden=!0;return}const K=we[0],ue=G(h,K,A.selectedTemplate)||ne(h,K);ue?(Ee.appendChild(ue),Ee.hidden=!1):Ee.hidden=!0}function Ht(K){const ae=F("form.combo.selected",{count:K});return ae==="form.combo.selected"?`Selected: ${K}`:ae}function Je(){for(;Ae.firstChild;)Ae.removeChild(Ae.firstChild);if(J){for(const K of we)Ae.appendChild(It(K));Ae.hidden=we.length===0}else Ae.hidden=!0;ie!=="inside"&&(de.hidden=!J||we.length===0,de.setAttribute("aria-label",Ht(we.length))),Ft(),Vt(),Ut()}function Ut(){if(!J||we.length===0){Ne.hidden=!0;return}const K=Ce.getBoundingClientRect().bottom;let ae=0;const ue=[...Ae.children];for(const ve of ue)ve.getBoundingClientRect().top>=K-1&&(ae+=1);ae>0?(Ne.hidden=!1,Ne.textContent=F("form.combo.more",{count:ae})):Ne.hidden=!0}function xt(K){if(Xe())return;const ae=we.length;we=we.filter(ue=>!q(ue.value,K)),we.length!==ae&&(Je(),lt(),ct(),mt())}function wt(K){if(Xe())return;const ae=pt(K)||{value:K,label:K==null?"":String(K),description:null,avatar:null,icon:null,color:null,dot:null,disabled:!1};if(rt(ae),J){if(we.some(ue=>q(ue.value,K)))return;we=[...we,ae]}else{if(we.length&&q(we[0].value,K))return;we=[ae]}Je(),lt(),ct(),mt()}function Wt(){if(Xe())return;const K=me.filter(ae=>!ae.disabled).map(ae=>({...ae}));if(!(K.length===0&&we.length===0)){for(const ae of K)rt(ae);we=K,Je(),lt(),ct(),mt()}}function Ot(){return me.length>0&&me.every(K=>we.some(ae=>q(ae.value,K.value)))}function lt(){const K=ke.querySelector(".lat-combo__select-all");if(!K)return;const ae=Ot();K.setAttribute("aria-selected",ae?"true":"false"),K.textContent=F("form.combo.selectAll")}function nt(){Le||qe||A.disabled||(Le=!0,ye.hidden=!1,he.setAttribute("aria-expanded","true"),Pe.setAttribute("aria-expanded","true"),qt(),me.length===0&&A.load&&!Ie&&!Ye?ut(0):st())}function Qe(){Le&&(Le=!1,ye.hidden=!0,he.setAttribute("aria-expanded","false"),Pe.setAttribute("aria-expanded","false"),he.removeAttribute("aria-activedescendant"))}function Zt(){qe||(he.focus(),nt())}function Gt(){he.blur()}function it(K){if(Te=K,!Le)return;const ae=K===-1?`${_e.id}`:`${Re}-opt-${K}`;he.setAttribute("aria-activedescendant",ae)}function gt(K){const ae=_e.hidden===!1,ue=ae?-1:0,ve=Math.max(ue,me.length-1);if(me.length===0&&!ae){it(-1);return}it(Math.max(ue,Math.min(ve,Te+K))),kt()}function kt(){if(Te<0)return;const K=De[Te]||0,ae=K+(Ve[Te]||Nt(me[Te]));K<dt?Q.scrollTop=K:ae>dt+Ze&&(Q.scrollTop=ae-Ze)}function Nt(K){return U(K)?52:30}function Mt(K){return`${Re}-opt-${K}`}function Kt(K,ae){const ue=h.createElement("div");ue.className="lat-combo__option",ue.setAttribute("role","option"),ue.id=Mt(ae);const ve=we.some(xe=>q(xe.value,K.value));ue.setAttribute("aria-selected",ve?"true":"false"),K.disabled&&ue.setAttribute("aria-disabled","true");const Oe=G(h,K,A.optionTemplate);if(Oe)ue.appendChild(Oe);else{const xe=ne(h,K);xe&&ue.appendChild(xe);const ze=h.createElement("span");ze.className="lat-combo__text";const Ke=h.createElement("span");if(Ke.className="lat-combo__title",Ke.textContent=K.label,ze.appendChild(Ke),K.description!=null){const Ct=h.createElement("span");Ct.className="lat-combo__subtitle",Ct.textContent=K.description,ze.appendChild(Ct)}ue.appendChild(ze)}return Be(ue,"click",xe=>{xe.stopPropagation(),Lt(ae)}),ue}function Yt(){const K=A.newOptions&&!Xe()&&Fe.trim()!=="",ae=me.some(ue=>q(ue.value,Fe)||ue.label===Fe);if(!K||ae){_e.hidden=!0;return}_e.hidden=!1,_e.id=`${Re}-create`,_e.textContent=F("form.combo.create",{query:Fe}),Te===-1&&it(-1)}function st(){if(Yt(),Le&&(Ze=Q.clientHeight||Ze),me.length===0){fe.style.height="0px",bt();return}let K=!1;for(let xe=0;xe<me.length;xe++)Ve[xe]==null&&(Ve[xe]=Nt(me[xe]));De.length=0,De[0]=0;for(let xe=1;xe<=me.length;xe++)De[xe]=De[xe-1]+Ve[xe-1];const ae=De[me.length];fe.style.height=`${ae}px`;const ue=dt,ve=dt+Ze;let Oe=0;for(;Oe<me.length-1&&De[Oe+1]<ue;)Oe+=1;let Me=Oe;for(;Me<me.length&&De[Me]<ve;)Me+=1;for(Me=Math.min(me.length,Me+2);fe.firstChild;)fe.removeChild(fe.firstChild);for(let xe=Oe;xe<Me;xe++){const ze=Kt(me[xe],xe);ze.style.position="absolute",ze.style.left="0",ze.style.right="0",ze.style.top="0",ze.style.transform=`translateY(${De[xe]}px)`,fe.appendChild(ze)}for(let xe=Oe;xe<Me;xe++){const ze=h.getElementById(Mt(xe));if(!ze)continue;const Ke=ze.getBoundingClientRect().height;Ke>0&&Math.abs(Ke-Ve[xe])>.5&&(Ve[xe]=Ke,K=!0)}K?st():bt()}function bt(){for(;se.firstChild;)se.removeChild(se.firstChild);if(Ie)se.textContent=F("form.combo.loading"),se.dataset.state="loading";else if(Ye){se.textContent=F("form.combo.error"),se.dataset.state="error";const K=h.createElement("button");K.type="button",K.className="lat-combo__retry",K.textContent=F("form.combo.retry"),Be(K,"click",ue=>{ue.stopPropagation(),Pt()}),se.appendChild(K)}else me.length===0&&!A.load&&vt.length===0?se.textContent="":me.length===0?(se.textContent=F("form.combo.empty"),se.dataset.state="empty"):(se.textContent=F("form.combo.results",{count:at}),se.dataset.state="results")}function ct(){const K=`${Re}-opt-`;for(const ae of Q.querySelectorAll('.lat-combo__option[role="option"]')){const ue=ae.id||"";if(!ue.startsWith(K))continue;const ve=Number(ue.slice(K.length));if(Number.isNaN(ve))continue;const Oe=me[ve];Oe&&ae.setAttribute("aria-selected",we.some(Me=>q(Me.value,Oe.value))?"true":"false")}lt()}function qt(){Ze=Q.clientHeight||240}function Xt(){if(be&&J){const K=h.createElement("div");K.className="lat-combo__select-all",K.setAttribute("role","option"),Be(K,"click",ue=>{ue.stopPropagation(),!Xe()&&(Ot()?(we=[],Je(),ct(),mt()):Wt())}),ye.insertBefore(K,Q)}}function ut(K){if(qe)return;if(typeof A.load!="function"){const Me=Fe.trim().toLowerCase(),xe=vt.map(X).filter(ze=>Me===""||ze.label.toLowerCase().includes(Me));me=xe,at=xe.length,tt=!1,He=1,Ve.length=0,De.length=0;for(const ze of me)rt(ze);st();return}if(Ie)return;Ie=!0,Ye=!1,ot+=1;const ae=ot;Ue&&Ue.abort(),Ue=new AbortController;const ue=Ue.signal;bt();let ve;try{ve=A.load({search:Fe,page:K,signal:ue,pageSize:pe})}catch{Ie=!1,Ye=!0,bt();return}const Oe=Me=>{if(qe||ae!==ot)return;Ie=!1;const xe=Z(Me),ze=xe.items.map(X);K===0?(me=ze,Ve.length=0,De.length=0,_t.set(Fe,{items:ze,total:xe.total,hasMore:xe.hasMore,nextPage:1})):me=me.concat(ze),at=typeof xe.total=="number"?xe.total:me.length,tt=xe.hasMore,He=K+1;for(const Ke of ze)rt(Ke);Ve.length=me.length,st(),zt()};ve&&typeof ve.then=="function"?ve.then(Oe).catch(Me=>{qe||ae!==ot||Me&&Me.name==="AbortError"||(Ie=!1,Ye=!0,bt())}):Oe(ve)}function zt(){if(!tt||Ie||!Le)return;(De[me.length]||0)<Ze+t&&ut(He)}function Pt(){qe||(We&&(clearTimeout(We),We=null),Ue&&Ue.abort(),ot+=1,_t.delete(Fe),me=[],at=0,tt=!1,Ie=!1,Ye=!1,He=0,Ve.length=0,De.length=0,Te=-1,ut(0))}function Jt(){Fe=he.value,Ue&&Ue.abort(),ot+=1;const K=_t.get(Fe);if(K&&typeof A.load=="function"){me=K.items.map(X),at=K.total,tt=K.hasMore,He=K.nextPage,Ie=!1,Ye=!1,Ve.length=0,De.length=0,Te=-1;for(const ae of me)rt(ae);st(),zt();return}me=[],at=0,tt=!1,Ie=!1,Ye=!1,He=0,Ve.length=0,De.length=0,Te=-1,ut(0)}function Qt(){We&&clearTimeout(We),We=setTimeout(()=>{We=null,Jt()},oe)}function er(K){const ae=_e.hidden===!1,ue=me.length+(ae?1:0);if(K.key==="ArrowDown"){if(K.preventDefault(),nt(),ue===0)return;Te===-1?it(me.length?0:-1):gt(1)}else if(K.key==="ArrowUp"){if(K.preventDefault(),!Le){nt();return}if(Te===-1){me.length&&it(0);return}gt(-1)}else if(K.key==="Home"){if(!Le)return;K.preventDefault(),it(ae?-1:0),kt()}else if(K.key==="End"){if(!Le)return;K.preventDefault(),it(me.length-1),kt()}else if(K.key==="PageDown"){if(!Le)return;K.preventDefault(),gt(Math.max(1,Math.floor(Math.max(Ze,60)/30)))}else if(K.key==="PageUp"){if(!Le)return;K.preventDefault(),gt(-Math.max(1,Math.floor(Math.max(Ze,60)/30)))}else if(K.key==="Enter"){if(!Le){nt();return}Te===-1&&ae?(K.preventDefault(),tr()):Te>=0&&me[Te]&&(K.preventDefault(),Lt(Te))}else K.key==="Escape"?Le&&(K.preventDefault(),Qe()):K.key==="Backspace"&&J&&he.value===""&&we.length?(K.preventDefault(),xt(we[we.length-1].value)):K.key==="Tab"&&Qe()}function tr(){if(!A.newOptions||Xe())return;const K=Fe.trim();if(K==="")return;let ae;typeof A.newOptions=="object"&&typeof A.newOptions.create=="function"?ae=A.newOptions.create(K):ae={value:K,label:K};const ue=X(ae);rt(ue),wt(ue.value),Qe()}function Lt(K){if(Xe())return;const ae=me[K];!ae||ae.disabled||(J?(we.some(ue=>q(ue.value,ae.value))?xt(ae.value):wt(ae.value),he.focus()):(wt(ae.value),Qe(),he.value=ae.label))}const rr=()=>{Le||(he.focus(),nt())},nr=K=>{K.stopPropagation(),Le?Qe():(he.focus(),nt())},ir=()=>{Qt()},ar=K=>{K.stopPropagation()},or=()=>{dt=Q.scrollTop,st(),tt&&!Ie&&Q.scrollTop+Q.clientHeight>=Q.scrollHeight-t&&ut(He)},lr=()=>{c.dispatchEvent(S(h,"focus"))},sr=()=>{c.dispatchEvent(S(h,"blur")),Qe()};Be(Se,"click",rr),Be(Pe,"click",nr),Be(he,"input",ir),Be(he,"change",ar),Be(he,"keydown",er),Be(he,"focus",lr),Be(he,"blur",sr),Be(Q,"scroll",or),Be(Q,"mousedown",K=>K.preventDefault()),Xt(),vt.length&&typeof A.load!="function"&&(Fe="",ut(0)),jt(je);const Ge={el:c,root:ke,input:he,getValue:Rt,setValue(K){return jt(K),Ge},reload(){return Pt(),Ge},clear(){return Bt(),Ge},open(){return nt(),Ge},close(){return Qe(),Ge},focus(){return Zt(),Ge},blur(){return Gt(),Ge},setDisabled(K){A.disabled=K,he.disabled=K,Pe.disabled=K,K&&Qe()},setReadOnly(K){A.readOnly=K,he.readOnly=K,K?he.setAttribute("aria-readonly","true"):he.removeAttribute("aria-readonly"),Je()},destroy(){qe=!0,We&&clearTimeout(We),Ue&&Ue.abort();for(const K of Et.splice(0))K();for(;ke.firstChild;)ke.removeChild(ke.firstChild)}};return c.appendChild(ke),c.__combo=Ge,Ge}P("combo",{kind:"field",build(c,A){const h=A.doc.createElement("div"),F=c.props||{},J=C(h,{load:F.load,options:c.options,multiple:F.multiple,value:c.value,resolveLabels:F.resolveLabels,newOptions:F.newOptions,optionTemplate:F.optionTemplate,selectedTemplate:F.selectedTemplate,selectAll:F.selectAll,debounce:F.debounce,pageSize:F.pageSize,maxHeight:F.maxHeight,chipPlacement:F.chipPlacement,placeholder:c.placeholder,ariaLabel:c.label,t:A.t,doc:A.doc,inForm:!0});if(A.disposers.push(()=>J.destroy()),Array.isArray(F.dependsOn))for(const ie of F.dependsOn){const oe=be=>{be.name===ie&&(J.clear(),J.reload())},pe=A.emitter.on("change",oe);A.disposers.push(pe)}return h.focus=()=>J.focus(),h.blur=()=>J.blur(),h},read(c){return c.__combo?c.__combo.getValue():null},write(c,A){c.__combo&&c.__combo.setValue(A)},state(c,A){c.__combo&&(c.__combo.setDisabled(A.disabled===!0),c.__combo.setReadOnly(A.readOnly===!0))}})}),ge("packages/modules/form/extras.js",function(R,Y){"use strict";Object.defineProperty(R,"injectChromeStyles",{enumerable:!0,get:function(){return p}}),Object.defineProperty(R,"buildTooltip",{enumerable:!0,get:function(){return $}}),Object.defineProperty(R,"buildLock",{enumerable:!0,get:function(){return t}}),Object.defineProperty(R,"renderAvatarAddon",{enumerable:!0,get:function(){return N}}),Object.defineProperty(R,"buildAddons",{enumerable:!0,get:function(){return L}}),Object.defineProperty(R,"buildPanel",{enumerable:!0,get:function(){return g}});const P=Y("packages/modules/form/styles.js").NS,v=Y("packages/modules/form/controls/field-icon.js"),ee=v.makeFieldIcon,s=v.injectFieldIconStyles,z=Y("packages/modules/form/controls/combo.js"),E=z.initialsFor,_=z.renderAvatar,T="data-lattice-form-chrome-styles";function k(r){return r==="cols"?`${P}__cols`:r==="items"?`${P}__items`:`${P}__rows`}function f(){return`
875
- .${P}__label-group{
975
+ `.trim()}function x(s){const w=s&&s.documentElement;if(!w||w.getAttribute(W))return;w.setAttribute(W,"1");const m=s.createElement("style");m.textContent=c(),(s.head||s.body||w).appendChild(m)}function t(s){return/^(https?:|data:image\/|\/)/i.test(s)}function i(s){const w=String(s??"").trim();if(!w)return"";const m=w.split(/\s+/);return m.length>=2?(m[0][0]+m[1][0]).toUpperCase():w.slice(0,2).toUpperCase()}function r(s){let w=5381;const m=String(s??"");for(let R=0;R<m.length;R++)w=(w<<5)+w+m.charCodeAt(R)>>>0;return w}function C(s){if(s&&s.color!=null&&String(s.color)!=="")return String(s.color);const w=s&&s.label!=null?String(s.label):s&&s.value!=null?String(s.value):"";return`hsl(${r(w)%360}, 62%, 45%)`}function b(s,w){s.style.background=C(w),s.style.color="#fff"}function G(s,w){const m=k[w];if(!m)return null;const R=s.createElementNS(S,"svg");R.setAttribute("class","lat-combo__icon"),R.setAttribute("viewBox",m.viewBox||"0 0 16 16"),R.setAttribute("aria-hidden","true"),R.setAttribute("focusable","false");const q=m.paint==="stroke";for(const re of m.paths||[]){const ie=s.createElementNS(S,"path");ie.setAttribute("d",re),q?(ie.setAttribute("fill","none"),ie.setAttribute("stroke","currentColor"),ie.setAttribute("stroke-width","1.5"),ie.setAttribute("stroke-linecap","round"),ie.setAttribute("stroke-linejoin","round")):ie.setAttribute("fill","currentColor"),R.appendChild(ie)}return R}function oe(s,w,m){if(w==null||w==="")return null;let R;if(w.nodeType)R=w.cloneNode(!0),R.setAttribute&&R.setAttribute("aria-hidden","true");else{const q=String(w),re=G(s,q);re?R=re:(R=s.createElement("span"),R.className="lat-combo__icon lat-combo__icon--glyph",R.setAttribute("aria-hidden","true"),R.textContent=q.slice(0,2))}return m!=null&&String(m)!==""&&R&&R.style&&(R.style.color=String(m)),R}function U(s,w){const m=s.createElement("span");m.className="lat-combo__avatar",m.setAttribute("aria-hidden","true");const R=String(w.avatar);if(t(R)){const q=s.createElement("img");return q.className="lat-combo__avatar-img",q.alt="",q.src=R,q.addEventListener("error",()=>{for(;m.firstChild;)m.removeChild(m.firstChild);m.classList.add("lat-combo__avatar--initials"),m.textContent=i(w.label),b(m,w)}),m.appendChild(q),m}return m.classList.add("lat-combo__avatar--initials"),m.textContent=R.slice(0,2),b(m,w),m}const K={r:255,g:255,b:255},l={r:20,g:24,b:28},H=3;function J(s){const w=s.split(/[,/\s]+/).filter(Boolean).map(Number);return w.length<3||w.some(m=>Number.isNaN(m))?null:{r:w[0],g:w[1],b:w[2]}}function Y(s,w){const m=String(w).trim();if(!m)return null;if(s&&s.createElement)try{const q=s.defaultView;if(q&&q.getComputedStyle){const re=s.createElement("span");re.style.color=m;const ie=/rgba?\(([^)]+)\)/.exec(q.getComputedStyle(re).color||"");if(ie)return J(ie[1])}}catch{}if(/^#([0-9a-f]{3,8})$/i.test(m)){let q=m.slice(1);return(q.length===3||q.length===4)&&(q=q.split("").map(re=>re+re).join("")),{r:parseInt(q.slice(0,2),16),g:parseInt(q.slice(2,4),16),b:parseInt(q.slice(4,6),16)}}const R=/rgba?\(([^)]+)\)/.exec(m);return R?J(R[1]):null}function B(s){const w=m=>{const R=m/255;return R<=.03928?R/12.92:((R+.055)/1.055)**2.4};return .2126*w(s.r)+.7152*w(s.g)+.0722*w(s.b)}function V(s,w){const m=B(s),R=B(w),q=Math.max(m,R),re=Math.min(m,R);return(q+.05)/(re+.05)}function ce(s,w){const m=Y(s,w);return m?V(m,K)<H||V(m,l)<H:!0}function ue(s,w){const m=s.createElement("span");m.className="lat-combo__dot",m.setAttribute("aria-hidden","true");const R=String(w.dot);return m.style.background=R,ce(s,R)&&m.setAttribute("data-ring","true"),m}function ne(s,w){const m=w&&w.dot;if(m!=null&&m!=="")return ue(s,w);const R=w&&w.icon;if(R!=null&&R!=="")return oe(s,R,w.color);const q=w&&w.avatar;return q!=null&&q!==""?U(s,w):null}function f(s,w,m){if(typeof m!="function")return null;const R=m(w);if(R==null||R===!1)return null;if(R.nodeType)return R.cloneNode(!0);const q=s.createElement("span");q.className="lat-combo__template";const re=String(R);return re.includes("<")?q.innerHTML=N(s,re):q.textContent=re,q}function j(s){return s!=null&&typeof s=="object"?s.value:s}function M(s){return s==null?"":typeof s!="object"?String(s):s.label!=null?String(s.label):s.title!=null?String(s.title):s.value==null?"":String(s.value)}function o(s){return s==null||typeof s!="object"?null:s.description!=null?String(s.description):s.subtitle!=null?String(s.subtitle):null}function E(s){return o(s)!=null||s!=null&&typeof s=="object"&&(s.avatar!=null||s.icon!=null)}function D(s){const w=s!=null&&typeof s=="object"?s:{};return{value:j(s),label:M(s),description:o(s),avatar:w.avatar,icon:w.icon,color:w.color,dot:w.dot,disabled:w.disabled===!0}}function P(s){if(Array.isArray(s))return{items:s,total:s.length,hasMore:!1};if(s&&typeof s=="object"){const w=Array.isArray(s.items)?s.items:[];return{items:w,total:typeof s.total=="number"?s.total:w.length,hasMore:s.hasMore===!0}}return{items:[],total:0,hasMore:!1}}function Z(s,w){return s===w?!0:s!=null&&w!=null&&String(s)===String(w)}function A(s,w,m={}){const R=s&&s.defaultView;return R&&R.Event?new R.Event(w,m):{type:w,bubbles:m.bubbles!==!1,cancelable:m.cancelable!==!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function _(s,w={}){const m=w.doc||s&&s.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;m&&(L(m),x(m),a(m));const R=typeof w.t=="function"?w.t:te,q=w.multiple===!0,re=q&&["above","below"].includes(w.chipPlacement)?w.chipPlacement:"inside";m&&re!=="inside"&&z(m);const ie=typeof w.debounce=="number"&&w.debounce>=0?w.debounce:$,ge=typeof w.pageSize=="number"&&w.pageSize>0?w.pageSize:y,pe=w.selectAll===!0,Se=q?Array.isArray(w.value)?w.value:w.value==null?[]:[w.value]:w.value==null?null:w.value,xe=m.createElement("div");xe.className="lat-combo",q&&xe.setAttribute("data-multiple","true"),re!=="inside"&&xe.setAttribute("data-chip-placement",re),w.inForm||(xe.setAttribute("data-lattice-standalone","true"),xe.setAttribute("data-density",["compact","standard","comfortable"].includes(w.density)?w.density:"standard"));const Ee=m.createElement("div");Ee.className="lat-combo__control";const je=m.createElement("div");je.className="lat-combo__chips";const Ne=m.createElement("span");Ne.className="lat-combo__summary",Ne.hidden=!0;const de=m.createElement("div");de.className="lat-combo__chip-row",de.setAttribute("role","group"),de.hidden=!0;const $e=re==="inside"?je:de;typeof w.maxHeight=="number"&&($e.style.maxHeight=`${w.maxHeight}px`);const Oe=m.createElement("span");Oe.className="lat-combo__value",Oe.setAttribute("aria-hidden","true"),Oe.hidden=!0;const ve=m.createElement("input");ve.className="lat-combo__input",ve.type="text",ve.setAttribute("role","combobox"),ve.setAttribute("aria-autocomplete","list"),ve.setAttribute("aria-haspopup","listbox"),q&&ve.setAttribute("aria-multiselectable","true"),w.placeholder!=null&&(ve.placeholder=String(w.placeholder)),w.inForm&&w.ariaLabel!=null&&ve.setAttribute("aria-label",String(w.ariaLabel));const se=m.createElement("button");se.type="button",se.className="lat-combo__toggle",se.setAttribute("aria-label",R("form.combo.toggle")),se.setAttribute("aria-haspopup","listbox");const fe=p(m,"chevronDown");fe&&se.appendChild(fe);const ye=m.createElement("div");ye.className="lat-combo__popup",ye.hidden=!0;const ee=m.createElement("div");ee.className="lat-combo__list",ee.setAttribute("role","listbox");const be=m.createElement("div");be.className="lat-combo__spacer",ee.appendChild(be);const le=m.createElement("div");le.className="lat-combo__status",le.setAttribute("role","status"),le.setAttribute("aria-live","polite");const we=m.createElement("div");we.className="lat-combo__option lat-combo__option--create",we.setAttribute("role","option"),we.hidden=!0,ee.insertBefore(we,be),ye.appendChild(ee),ye.appendChild(le),Ee.appendChild(ye),re!=="inside"?(Ee.appendChild(ve),Ee.appendChild(se),de.appendChild(je),de.appendChild(Ne),re==="above"&&xe.appendChild(de),xe.appendChild(Ee),re==="below"&&xe.appendChild(de)):(Ee.appendChild(je),Ee.appendChild(Ne),Ee.appendChild(Oe),Ee.appendChild(ve),Ee.appendChild(se),xe.appendChild(Ee));const Re=`lat-combo-lb-${pt()}`;ee.id=Re,ve.setAttribute("aria-controls",Re);let he=[],Ce=[];const et=new Map;let Ve=0,it=0,tt=!1,Ie=!1,Ye=!1,Fe="",Le=!1,Te=-1,Ue=null,at=0,We=null;const _t=new Map,vt=Array.isArray(w.options)?w.options:[],He=[],De=[];let Ze=0,ft=0;const ur=pt(),St=[];let qe=!1;function pt(){return pt.n=(pt.n||0)+1,pt.n}function Be(Q,ae,me){Q.addEventListener(ae,me),St.push(()=>Q.removeEventListener(ae,me))}function lt(Q){const ae=et.get(String(Q));if(ae)return ae;if(Q!=null){for(const me of et.values())if(Z(me.value,Q))return me}return null}function yt(Q){const ae=lt(Q);return ae?ae.label:Q==null?"":String(Q)}function rt(Q){Q.value!=null&&et.set(String(Q.value),Q)}function Rt(Q){if(typeof w.resolveLabels!="function")return;const ae=Q.filter(Me=>Me!=null&&!lt(Me));if(ae.length===0)return;const me=w.resolveLabels(ae),ke=Me=>{if(!(qe||!Array.isArray(Me))){for(const ze of Me){const Ae=D(ze);Ae.value!=null&&rt(Ae)}Ce=Ce.map(ze=>lt(ze.value)||ze),Je(),Ot()}};me&&typeof me.then=="function"?me.then(ke):ke(me)}function mt(){s.dispatchEvent(A(m,"change",{bubbles:!0}))}function Bt(){return q?Ce.map(Q=>Q.value):Ce.length?Ce[0].value:null}function jt(Q){let ae;if(q)ae=Array.isArray(Q)?Q:Q==null?[]:[Q];else{const ke=Array.isArray(Q)?Q.length?Q[0]:null:Q;ae=ke==null?[]:[ke]}const me=ae.filter(ke=>ke!=null&&(ke!==""||lt(ke)!=null));Ce=me.map(ke=>lt(ke)||{value:ke,label:ke==null?"":String(ke),description:null,avatar:null,icon:null,color:null,dot:null,disabled:!1}),Rt(me),Je(),st(),ut()}function Xe(){return w.readOnly===!0}function It(){Ce.length!==0&&(Ce=[],Je(),st(),ut(),mt())}function Ft(Q){const ae=m.createElement("span");ae.className="lat-combo__chip",ae.dataset.value=String(Q.value);const me=f(m,Q,w.selectedTemplate);if(me){const ke=m.createElement("span");ke.className="lat-combo__chip-label",ke.appendChild(me),ae.appendChild(ke)}else{const ke=ne(m,Q);ke&&ae.appendChild(ke);const Me=m.createElement("span");Me.className="lat-combo__chip-label",Me.textContent=yt(Q.value),ae.appendChild(Me)}if(!Q.disabled&&!Xe()){const ke=m.createElement("button");ke.type="button",ke.className="lat-combo__chip-remove",ke.setAttribute("aria-label",R("form.combo.remove",{label:yt(Q.value)})),ke.textContent="×",Be(ke,"click",ze=>{ze.stopPropagation(),xt(Q.value)}),ae.appendChild(ke)}return ae}function Ht(){q||(ve.value=Ce.length?yt(Ce[0].value):"")}function Ot(){if(q){Oe.hidden=!0;return}for(;Oe.firstChild;)Oe.removeChild(Oe.firstChild);if(Ce.length===0){Oe.hidden=!0;return}const Q=Ce[0],me=f(m,Q,w.selectedTemplate)||ne(m,Q);me?(Oe.appendChild(me),Oe.hidden=!1):Oe.hidden=!0}function Vt(Q){const ae=R("form.combo.selected",{count:Q});return ae==="form.combo.selected"?`Selected: ${Q}`:ae}function Je(){for(;je.firstChild;)je.removeChild(je.firstChild);if(q){for(const Q of Ce)je.appendChild(Ft(Q));je.hidden=Ce.length===0}else je.hidden=!0;re!=="inside"&&(de.hidden=!q||Ce.length===0,de.setAttribute("aria-label",Vt(Ce.length))),Ht(),Ot(),Ut()}function Ut(){if(!q||Ce.length===0){Ne.hidden=!0;return}const Q=$e.getBoundingClientRect().bottom;let ae=0;const me=[...je.children];for(const ke of me)ke.getBoundingClientRect().top>=Q-1&&(ae+=1);ae>0?(Ne.hidden=!1,Ne.textContent=R("form.combo.more",{count:ae})):Ne.hidden=!0}function xt(Q){if(Xe())return;const ae=Ce.length;Ce=Ce.filter(me=>!Z(me.value,Q)),Ce.length!==ae&&(Je(),st(),ut(),mt())}function wt(Q){if(Xe())return;const ae=lt(Q)||{value:Q,label:Q==null?"":String(Q),description:null,avatar:null,icon:null,color:null,dot:null,disabled:!1};if(rt(ae),q){if(Ce.some(me=>Z(me.value,Q)))return;Ce=[...Ce,ae]}else{if(Ce.length&&Z(Ce[0].value,Q))return;Ce=[ae]}Je(),st(),ut(),mt()}function Wt(){if(Xe())return;const Q=he.filter(ae=>!ae.disabled).map(ae=>({...ae}));if(!(Q.length===0&&Ce.length===0)){for(const ae of Q)rt(ae);Ce=Q,Je(),st(),ut(),mt()}}function Nt(){return he.length>0&&he.every(Q=>Ce.some(ae=>Z(ae.value,Q.value)))}function st(){const Q=xe.querySelector(".lat-combo__select-all");if(!Q)return;const ae=Nt();Q.setAttribute("aria-selected",ae?"true":"false"),Q.textContent=R("form.combo.selectAll")}function nt(){Le||qe||w.disabled||(Le=!0,ye.hidden=!1,ve.setAttribute("aria-expanded","true"),se.setAttribute("aria-expanded","true"),qt(),he.length===0&&w.load&&!Ie&&!Ye?dt(0):ct())}function Qe(){Le&&(Le=!1,ye.hidden=!0,ve.setAttribute("aria-expanded","false"),se.setAttribute("aria-expanded","false"),ve.removeAttribute("aria-activedescendant"))}function Zt(){qe||(ve.focus(),nt())}function Gt(){ve.blur()}function ot(Q){if(Te=Q,!Le)return;const ae=Q===-1?`${we.id}`:`${Re}-opt-${Q}`;ve.setAttribute("aria-activedescendant",ae)}function gt(Q){const ae=we.hidden===!1,me=ae?-1:0,ke=Math.max(me,he.length-1);if(he.length===0&&!ae){ot(-1);return}ot(Math.max(me,Math.min(ke,Te+Q))),kt()}function kt(){if(Te<0)return;const Q=De[Te]||0,ae=Q+(He[Te]||Mt(he[Te]));Q<ft?ee.scrollTop=Q:ae>ft+Ze&&(ee.scrollTop=ae-Ze)}function Mt(Q){return E(Q)?52:30}function zt(Q){return`${Re}-opt-${Q}`}function Kt(Q,ae){const me=m.createElement("div");me.className="lat-combo__option",me.setAttribute("role","option"),me.id=zt(ae);const ke=Ce.some(Ae=>Z(Ae.value,Q.value));me.setAttribute("aria-selected",ke?"true":"false"),Q.disabled&&me.setAttribute("aria-disabled","true");const Me=f(m,Q,w.optionTemplate);if(Me)me.appendChild(Me);else{const Ae=ne(m,Q);Ae&&me.appendChild(Ae);const Pe=m.createElement("span");Pe.className="lat-combo__text";const Ke=m.createElement("span");if(Ke.className="lat-combo__title",Ke.textContent=Q.label,Pe.appendChild(Ke),Q.description!=null){const Ct=m.createElement("span");Ct.className="lat-combo__subtitle",Ct.textContent=Q.description,Pe.appendChild(Ct)}me.appendChild(Pe)}return Be(me,"click",Ae=>{Ae.stopPropagation(),Tt(ae)}),me}function Yt(){const Q=w.newOptions&&!Xe()&&Fe.trim()!=="",ae=he.some(me=>Z(me.value,Fe)||me.label===Fe);if(!Q||ae){we.hidden=!0;return}we.hidden=!1,we.id=`${Re}-create`,we.textContent=R("form.combo.create",{query:Fe}),Te===-1&&ot(-1)}function ct(){if(Yt(),Le&&(Ze=ee.clientHeight||Ze),he.length===0){be.style.height="0px",bt();return}let Q=!1;for(let Ae=0;Ae<he.length;Ae++)He[Ae]==null&&(He[Ae]=Mt(he[Ae]));De.length=0,De[0]=0;for(let Ae=1;Ae<=he.length;Ae++)De[Ae]=De[Ae-1]+He[Ae-1];const ae=De[he.length];be.style.height=`${ae}px`;const me=ft,ke=ft+Ze;let Me=0;for(;Me<he.length-1&&De[Me+1]<me;)Me+=1;let ze=Me;for(;ze<he.length&&De[ze]<ke;)ze+=1;for(ze=Math.min(he.length,ze+2);be.firstChild;)be.removeChild(be.firstChild);for(let Ae=Me;Ae<ze;Ae++){const Pe=Kt(he[Ae],Ae);Pe.style.position="absolute",Pe.style.left="0",Pe.style.right="0",Pe.style.top="0",Pe.style.transform=`translateY(${De[Ae]}px)`,be.appendChild(Pe)}for(let Ae=Me;Ae<ze;Ae++){const Pe=m.getElementById(zt(Ae));if(!Pe)continue;const Ke=Pe.getBoundingClientRect().height;Ke>0&&Math.abs(Ke-He[Ae])>.5&&(He[Ae]=Ke,Q=!0)}Q?ct():bt()}function bt(){for(;le.firstChild;)le.removeChild(le.firstChild);if(Ie)le.textContent=R("form.combo.loading"),le.dataset.state="loading";else if(Ye){le.textContent=R("form.combo.error"),le.dataset.state="error";const Q=m.createElement("button");Q.type="button",Q.className="lat-combo__retry",Q.textContent=R("form.combo.retry"),Be(Q,"click",me=>{me.stopPropagation(),Lt()}),le.appendChild(Q)}else he.length===0&&!w.load&&vt.length===0?le.textContent="":he.length===0?(le.textContent=R("form.combo.empty"),le.dataset.state="empty"):(le.textContent=R("form.combo.results",{count:it}),le.dataset.state="results")}function ut(){const Q=`${Re}-opt-`;for(const ae of ee.querySelectorAll('.lat-combo__option[role="option"]')){const me=ae.id||"";if(!me.startsWith(Q))continue;const ke=Number(me.slice(Q.length));if(Number.isNaN(ke))continue;const Me=he[ke];Me&&ae.setAttribute("aria-selected",Ce.some(ze=>Z(ze.value,Me.value))?"true":"false")}st()}function qt(){Ze=ee.clientHeight||240}function Xt(){if(pe&&q){const Q=m.createElement("div");Q.className="lat-combo__select-all",Q.setAttribute("role","option"),Be(Q,"click",me=>{me.stopPropagation(),!Xe()&&(Nt()?(Ce=[],Je(),ut(),mt()):Wt())}),ye.insertBefore(Q,ee)}}function dt(Q){if(qe)return;if(typeof w.load!="function"){const ze=Fe.trim().toLowerCase(),Ae=vt.map(D).filter(Pe=>ze===""||Pe.label.toLowerCase().includes(ze));he=Ae,it=Ae.length,tt=!1,Ve=1,He.length=0,De.length=0;for(const Pe of he)rt(Pe);ct();return}if(Ie)return;Ie=!0,Ye=!1,at+=1;const ae=at;Ue&&Ue.abort(),Ue=new AbortController;const me=Ue.signal;bt();let ke;try{ke=w.load({search:Fe,page:Q,signal:me,pageSize:ge})}catch{Ie=!1,Ye=!0,bt();return}const Me=ze=>{if(qe||ae!==at)return;Ie=!1;const Ae=P(ze),Pe=Ae.items.map(D);Q===0?(he=Pe,He.length=0,De.length=0,_t.set(Fe,{items:Pe,total:Ae.total,hasMore:Ae.hasMore,nextPage:1})):he=he.concat(Pe),it=typeof Ae.total=="number"?Ae.total:he.length,tt=Ae.hasMore,Ve=Q+1;for(const Ke of Pe)rt(Ke);He.length=he.length,ct(),Pt()};ke&&typeof ke.then=="function"?ke.then(Me).catch(ze=>{qe||ae!==at||ze&&ze.name==="AbortError"||(Ie=!1,Ye=!0,bt())}):Me(ke)}function Pt(){if(!tt||Ie||!Le)return;(De[he.length]||0)<Ze+n&&dt(Ve)}function Lt(){qe||(We&&(clearTimeout(We),We=null),Ue&&Ue.abort(),at+=1,_t.delete(Fe),he=[],it=0,tt=!1,Ie=!1,Ye=!1,Ve=0,He.length=0,De.length=0,Te=-1,dt(0))}function Jt(){Fe=ve.value,Ue&&Ue.abort(),at+=1;const Q=_t.get(Fe);if(Q&&typeof w.load=="function"){he=Q.items.map(D),it=Q.total,tt=Q.hasMore,Ve=Q.nextPage,Ie=!1,Ye=!1,He.length=0,De.length=0,Te=-1;for(const ae of he)rt(ae);ct(),Pt();return}he=[],it=0,tt=!1,Ie=!1,Ye=!1,Ve=0,He.length=0,De.length=0,Te=-1,dt(0)}function Qt(){We&&clearTimeout(We),We=setTimeout(()=>{We=null,Jt()},ie)}function er(Q){const ae=we.hidden===!1,me=he.length+(ae?1:0);if(Q.key==="ArrowDown"){if(Q.preventDefault(),nt(),me===0)return;Te===-1?ot(he.length?0:-1):gt(1)}else if(Q.key==="ArrowUp"){if(Q.preventDefault(),!Le){nt();return}if(Te===-1){he.length&&ot(0);return}gt(-1)}else if(Q.key==="Home"){if(!Le)return;Q.preventDefault(),ot(ae?-1:0),kt()}else if(Q.key==="End"){if(!Le)return;Q.preventDefault(),ot(he.length-1),kt()}else if(Q.key==="PageDown"){if(!Le)return;Q.preventDefault(),gt(Math.max(1,Math.floor(Math.max(Ze,60)/30)))}else if(Q.key==="PageUp"){if(!Le)return;Q.preventDefault(),gt(-Math.max(1,Math.floor(Math.max(Ze,60)/30)))}else if(Q.key==="Enter"){if(!Le){nt();return}Te===-1&&ae?(Q.preventDefault(),tr()):Te>=0&&he[Te]&&(Q.preventDefault(),Tt(Te))}else Q.key==="Escape"?Le&&(Q.preventDefault(),Qe()):Q.key==="Backspace"&&q&&ve.value===""&&Ce.length?(Q.preventDefault(),xt(Ce[Ce.length-1].value)):Q.key==="Tab"&&Qe()}function tr(){if(!w.newOptions||Xe())return;const Q=Fe.trim();if(Q==="")return;let ae;typeof w.newOptions=="object"&&typeof w.newOptions.create=="function"?ae=w.newOptions.create(Q):ae={value:Q,label:Q};const me=D(ae);rt(me),wt(me.value),Qe()}function Tt(Q){if(Xe())return;const ae=he[Q];!ae||ae.disabled||(q?(Ce.some(me=>Z(me.value,ae.value))?xt(ae.value):wt(ae.value),ve.focus()):(wt(ae.value),Qe(),ve.value=ae.label))}const rr=()=>{Le||(ve.focus(),nt())},nr=Q=>{Q.stopPropagation(),Le?Qe():(ve.focus(),nt())},or=()=>{Qt()},ir=Q=>{Q.stopPropagation()},ar=()=>{ft=ee.scrollTop,ct(),tt&&!Ie&&ee.scrollTop+ee.clientHeight>=ee.scrollHeight-n&&dt(Ve)},lr=()=>{s.dispatchEvent(A(m,"focus"))},sr=()=>{s.dispatchEvent(A(m,"blur")),Qe()};Be(Ee,"click",rr),Be(se,"click",nr),Be(ve,"input",or),Be(ve,"change",ir),Be(ve,"keydown",er),Be(ve,"focus",lr),Be(ve,"blur",sr),Be(ee,"scroll",ar),Be(ee,"mousedown",Q=>Q.preventDefault()),Xt(),vt.length&&typeof w.load!="function"&&(Fe="",dt(0)),jt(Se);const Ge={el:s,root:xe,input:ve,getValue:Bt,setValue(Q){return jt(Q),Ge},reload(){return Lt(),Ge},clear(){return It(),Ge},open(){return nt(),Ge},close(){return Qe(),Ge},focus(){return Zt(),Ge},blur(){return Gt(),Ge},setDisabled(Q){w.disabled=Q,ve.disabled=Q,se.disabled=Q,Q&&Qe()},setReadOnly(Q){w.readOnly=Q,ve.readOnly=Q,Q?ve.setAttribute("aria-readonly","true"):ve.removeAttribute("aria-readonly"),Je()},destroy(){qe=!0,We&&clearTimeout(We),Ue&&Ue.abort();for(const Q of St.splice(0))Q();for(;xe.firstChild;)xe.removeChild(xe.firstChild)}};return s.appendChild(xe),s.__combo=Ge,Ge}T("combo",{kind:"field",build(s,w){const m=w.doc.createElement("div"),R=s.props||{},q=_(m,{load:R.load,options:s.options,multiple:R.multiple,value:s.value,resolveLabels:R.resolveLabels,newOptions:R.newOptions,optionTemplate:R.optionTemplate,selectedTemplate:R.selectedTemplate,selectAll:R.selectAll,debounce:R.debounce,pageSize:R.pageSize,maxHeight:R.maxHeight,chipPlacement:R.chipPlacement,placeholder:s.placeholder,ariaLabel:s.label,t:w.t,doc:w.doc,inForm:!0});if(w.disposers.push(()=>q.destroy()),Array.isArray(R.dependsOn))for(const re of R.dependsOn){const ie=pe=>{pe.name===re&&(q.clear(),q.reload())},ge=w.emitter.on("change",ie);w.disposers.push(ge)}return m.focus=()=>q.focus(),m.blur=()=>q.blur(),m},read(s){return s.__combo?s.__combo.getValue():null},write(s,w){s.__combo&&s.__combo.setValue(w)},state(s,w){s.__combo&&(s.__combo.setDisabled(w.disabled===!0),s.__combo.setReadOnly(w.readOnly===!0))}})}),_e("packages/modules/form/extras.js",function(F,X){"use strict";Object.defineProperty(F,"injectChromeStyles",{enumerable:!0,get:function(){return p}}),Object.defineProperty(F,"buildTooltip",{enumerable:!0,get:function(){return y}}),Object.defineProperty(F,"buildLock",{enumerable:!0,get:function(){return n}}),Object.defineProperty(F,"renderAvatarAddon",{enumerable:!0,get:function(){return z}}),Object.defineProperty(F,"buildAddons",{enumerable:!0,get:function(){return W}}),Object.defineProperty(F,"buildPanel",{enumerable:!0,get:function(){return S}});const T=X("packages/modules/form/styles.js").NS,v=X("packages/modules/form/controls/field-icon.js"),te=v.makeFieldIcon,u=v.injectFieldIconStyles,L=X("packages/modules/form/controls/combo.js"),O=L.initialsFor,k=L.renderAvatar,I="data-lattice-form-chrome-styles";function N(c){return c==="cols"?`${T}__cols`:c==="items"?`${T}__items`:`${T}__rows`}function g(){return`
976
+ .${T}__label-group{
876
977
  display:flex; align-items:center; gap:calc(var(--lattice-space) / 2);
877
978
  min-width:0; box-sizing:border-box;
878
979
  }
879
- .${P}__item[data-label-position='top'] .${P}__label-group{
980
+ .${T}__item[data-label-position='top'] .${T}__label-group{
880
981
  margin-bottom:var(--lattice-form-label-gap);
881
982
  }
882
- .${P}__item[data-label-position='top'] .${P}__label-group .${P}__label{ margin-bottom:0; }
883
- .${P}__tooltip-wrap{ position:relative; display:inline-flex; flex:0 0 auto; }
884
- .${P}__tooltip-trigger{
983
+ .${T}__item[data-label-position='top'] .${T}__label-group .${T}__label{ margin-bottom:0; }
984
+ .${T}__tooltip-wrap{ position:relative; display:inline-flex; flex:0 0 auto; }
985
+ .${T}__tooltip-trigger{
885
986
  display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto;
886
987
  box-sizing:border-box; width:calc(var(--lattice-font-size) * 1.35);
887
988
  height:calc(var(--lattice-font-size) * 1.35); min-height:0;
@@ -890,13 +991,13 @@
890
991
  color:var(--lattice-foreground-muted); font:inherit; line-height:1;
891
992
  font-weight:600; cursor:pointer;
892
993
  }
893
- .${P}__tooltip-trigger:hover,
894
- .${P}__tooltip-trigger:focus-visible{
994
+ .${T}__tooltip-trigger:hover,
995
+ .${T}__tooltip-trigger:focus-visible{
895
996
  color:var(--lattice-foreground);
896
997
  background:color-mix(in srgb, var(--lattice-foreground-muted) 28%, transparent);
897
998
  }
898
- .${P}__tooltip-trigger:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
899
- .${P}__tooltip{
999
+ .${T}__tooltip-trigger:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
1000
+ .${T}__tooltip{
900
1001
  position:absolute; z-index:20; bottom:calc(100% + var(--lattice-space) / 2); left:50%;
901
1002
  transform:translateX(-50%); box-sizing:border-box; width:max-content; max-width:280px;
902
1003
  padding:calc(var(--lattice-space) / 2) calc(var(--lattice-space) * 1.25);
@@ -906,11 +1007,11 @@
906
1007
  font-size:calc(var(--lattice-font-size) - 1px); line-height:1.35; white-space:normal;
907
1008
  opacity:0; pointer-events:none;
908
1009
  }
909
- .${P}__tooltip--open{ opacity:1; }
1010
+ .${T}__tooltip--open{ opacity:1; }
910
1011
  /* A read-only field's lock sits inside the control's right edge (the control
911
1012
  wrapper is the input's box, so the inset matches the field's own padding). */
912
- .${P}__control{ position:relative; }
913
- .${P}__lock{
1013
+ .${T}__control{ position:relative; }
1014
+ .${T}__lock{
914
1015
  position:absolute; top:50%; right:calc(var(--lattice-space) * 1.5);
915
1016
  transform:translateY(-50%); z-index:1; pointer-events:none;
916
1017
  display:inline-flex; align-items:center; justify-content:center;
@@ -918,59 +1019,59 @@
918
1019
  height:calc(var(--lattice-control-size) * var(--lattice-scale));
919
1020
  color:var(--lattice-foreground-muted);
920
1021
  }
921
- .${P}__lock[hidden]{ display:none; }
922
- .${P}__control--lock input,
923
- .${P}__control--lock textarea{
1022
+ .${T}__lock[hidden]{ display:none; }
1023
+ .${T}__control--lock input,
1024
+ .${T}__control--lock textarea{
924
1025
  padding-right:calc(var(--lattice-space) * 1.5 + (var(--lattice-control-size) * var(--lattice-scale)) + calc(var(--lattice-space) / 2));
925
1026
  }
926
- .${P}__field{
1027
+ .${T}__field{
927
1028
  display:flex; align-items:center; gap:calc(var(--lattice-space) / 2);
928
1029
  min-width:0; flex:1 1 auto;
929
1030
  }
930
- .${P}__addons{ display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2); flex:0 0 auto; }
931
- .${P}__addon{
1031
+ .${T}__addons{ display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2); flex:0 0 auto; }
1032
+ .${T}__addon{
932
1033
  display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box;
933
1034
  flex:0 0 auto; width:var(--lattice-row-height); height:var(--lattice-row-height); min-height:0;
934
1035
  padding:0; margin:0; border:var(--lattice-border-width) solid var(--lattice-border-color);
935
1036
  border-radius:50%; background:var(--lattice-background); color:var(--lattice-foreground);
936
1037
  font:inherit; line-height:1; cursor:pointer; text-decoration:none;
937
1038
  }
938
- .${P}__addon:hover, .${P}__addon:focus-visible{ border-color:var(--lattice-accent); color:var(--lattice-accent); }
939
- .${P}__addon:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
940
- .${P}__addon:disabled, .${P}__addon[aria-disabled='true']{ opacity:.5; cursor:not-allowed; }
941
- .${P}__icon-glyph{ font-size:calc(var(--lattice-font-size) - 1px); line-height:1; }
942
- .${P}__addon-avatar{
1039
+ .${T}__addon:hover, .${T}__addon:focus-visible{ border-color:var(--lattice-accent); color:var(--lattice-accent); }
1040
+ .${T}__addon:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
1041
+ .${T}__addon:disabled, .${T}__addon[aria-disabled='true']{ opacity:.5; cursor:not-allowed; }
1042
+ .${T}__icon-glyph{ font-size:calc(var(--lattice-font-size) - 1px); line-height:1; }
1043
+ .${T}__addon-avatar{
943
1044
  display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto;
944
1045
  width:var(--lattice-row-height); height:var(--lattice-row-height);
945
1046
  }
946
- .${P}__addon-avatar .lat-combo__avatar{
1047
+ .${T}__addon-avatar .lat-combo__avatar{
947
1048
  width:var(--lattice-row-height); height:var(--lattice-row-height);
948
1049
  font-size:calc(var(--lattice-font-size) - 1px);
949
1050
  }
950
- .${P}__panel{
1051
+ .${T}__panel{
951
1052
  display:flex; flex-direction:column; box-sizing:border-box; min-width:0; min-height:0;
952
1053
  border:var(--lattice-border-width) solid var(--lattice-border-color);
953
1054
  border-radius:var(--lattice-radius); background:var(--lattice-background);
954
1055
  padding:calc(var(--lattice-space) * 1.5);
955
1056
  }
956
- .${P}__panel[hidden]{ display:none; }
957
- .${P}__panel-header{
1057
+ .${T}__panel[hidden]{ display:none; }
1058
+ .${T}__panel-header{
958
1059
  display:flex; align-items:flex-start; justify-content:space-between; gap:var(--lattice-space);
959
1060
  box-sizing:border-box; padding-bottom:calc(var(--lattice-space) * 1.25);
960
1061
  border-bottom:var(--lattice-border-width) solid var(--lattice-border-color);
961
1062
  margin-bottom:calc(var(--lattice-space) * 1.25);
962
1063
  }
963
- .${P}__panel-heading{ display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 4); min-width:0; }
964
- .${P}__panel-title{
1064
+ .${T}__panel-heading{ display:flex; flex-direction:column; gap:calc(var(--lattice-space) / 4); min-width:0; }
1065
+ .${T}__panel-title{
965
1066
  margin:0; font-size:calc(var(--lattice-font-size) + 1px); font-weight:600; line-height:1.3;
966
1067
  color:var(--lattice-foreground);
967
1068
  }
968
- .${P}__panel-subtitle{
1069
+ .${T}__panel-subtitle{
969
1070
  margin:0; color:var(--lattice-foreground-muted);
970
1071
  font-size:calc(var(--lattice-font-size) - 1px); line-height:1.4;
971
1072
  }
972
- .${P}__panel-actions{ display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2); flex:0 0 auto; }
973
- .${P}__panel-action{
1073
+ .${T}__panel-actions{ display:inline-flex; align-items:center; gap:calc(var(--lattice-space) / 2); flex:0 0 auto; }
1074
+ .${T}__panel-action{
974
1075
  display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box;
975
1076
  flex:0 0 auto; width:calc(var(--lattice-row-height) - var(--lattice-space) / 2);
976
1077
  height:calc(var(--lattice-row-height) - var(--lattice-space) / 2); min-height:0;
@@ -978,27 +1079,27 @@
978
1079
  background:transparent; color:var(--lattice-foreground-muted);
979
1080
  font:inherit; line-height:1; cursor:pointer;
980
1081
  }
981
- .${P}__panel-action:hover, .${P}__panel-action:focus-visible{
1082
+ .${T}__panel-action:hover, .${T}__panel-action:focus-visible{
982
1083
  color:var(--lattice-foreground);
983
1084
  background:color-mix(in srgb, var(--lattice-foreground-muted) 16%, transparent);
984
1085
  }
985
- .${P}__panel-action:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
986
- .${P}__panel-body{ min-width:0; min-height:0; }
987
- .${P}__panel-body[hidden]{ display:none; }
988
- `.trim()}function p(r){const x=r&&r.documentElement;if(!x||(s(r),x.getAttribute(T)))return;x.setAttribute(T,"1");const i=r.createElement("style");i.textContent=f(),(r.head||r.body||x).appendChild(i)}function l(r,x,i,o){x.addEventListener(i,o),r.disposers.push(()=>x.removeEventListener(i,o))}function j(r,x){if(x==null||x==="")return null;if(x.nodeType){const e=x.cloneNode(!0);return e.setAttribute&&e.setAttribute("aria-hidden","true"),e}const i=ee(r,String(x));if(i)return i;const o=r.createElement("span");return o.className=`${P}__icon-glyph`,o.setAttribute("aria-hidden","true"),o.textContent=String(x).slice(0,2),o}function $(r,x){const{labelEl:i,item:o,labelPosition:e,labelWidth:y}=x,d=o.tooltip;if(typeof d!="string"||d===""||e==="hidden")return null;p(r.doc);const V=r.doc,te=V.createElement("div");te.className=`${P}__label-group`,e==="left"&&y!=null&&(te.style.flex=`0 0 ${typeof y=="number"?`${y}px`:String(y)}`),te.appendChild(i);const I=`lat-form-tip-${$.seq=($.seq||0)+1}`,W=V.createElement("span");W.className=`${P}__tooltip-wrap`;const a=V.createElement("button");a.type="button",a.className=`${P}__tooltip-trigger`,a.setAttribute("aria-label",r.t("form.tooltip.help")),a.setAttribute("aria-expanded","false"),a.setAttribute("aria-controls",I),a.textContent="?";const B=V.createElement("span");B.className=`${P}__tooltip`,B.setAttribute("id",I),B.setAttribute("role","tooltip"),B.textContent=d,W.appendChild(a),W.appendChild(B),te.appendChild(W);let O=!1;const D=()=>{a.setAttribute("aria-expanded","true"),B.classList.add(`${P}__tooltip--open`)},re=()=>{O||(a.setAttribute("aria-expanded","false"),B.classList.remove(`${P}__tooltip--open`))};return l(r,a,"mouseenter",D),l(r,a,"mouseleave",re),l(r,a,"focus",D),l(r,a,"blur",re),l(r,a,"click",H=>{H.stopPropagation(),O=!O,O?D():re()}),{group:te,tooltipId:I}}function t(r,x,i,o){const e=o&&o.tagName;if(!(i.lockIcon!==!1&&(e==="INPUT"||e==="TEXTAREA")&&(i.readOnly===!0||i.readOnlyWhen!=null)))return null;p(r.doc);const d=r.doc.createElement("span");d.className=`${P}__lock`,d.setAttribute("aria-hidden","true"),d.title=r.t("form.readonly");const V=ee(r.doc,"lock");return V&&d.appendChild(V),x.appendChild(d),{el:d}}function u(r,x){if(!Array.isArray(r))return null;const i=x==null?"":String(x);for(const o of r){if(o!=null&&typeof o=="object"&&Array.isArray(o.options)){const e=u(o.options,x);if(e)return e;continue}if(o!=null&&typeof o=="object"){const e=o.value==null?"":String(o.value);if(e===i)return{label:o.label!=null?String(o.label):e,avatar:o.avatar,color:o.color}}else{const e=String(o);if(e===i)return{label:e,avatar:void 0,color:void 0}}}return null}function m(r,x,i){let o=null,e=x==null?"":String(x),y;if(typeof r=="function")o=r(x,i);else if(r===!0){const d=u(i.options,x);d&&(e=d.label,y=d.color,d.avatar!=null&&d.avatar!==""&&(o=String(d.avatar)))}else o=String(r);if(o==null||o===""){if(e==null||e==="")return null;o=E(e)}return{avatar:o,label:e,color:y}}function N(r,x,i,o,e){for(;x.firstChild;)x.removeChild(x.firstChild);const y=m(i.avatar,o,e);y&&x.appendChild(_(r,y))}function L(r,x){const i=x.addons;if(!Array.isArray(i)||i.length===0)return null;p(r.doc);const o=r.doc,e=o.createElement("div");e.className=`${P}__addons`;const y=[];for(const d of i){if(d==null||typeof d!="object")continue;if(d.avatar!==void 0&&d.avatar!==null&&d.avatar!==!1){const a=o.createElement("span");a.className=`${P}__addon-avatar`,a.setAttribute("aria-hidden","true"),e.appendChild(a),y.push({el:a,spec:d,avatar:!0});continue}const te=d.href,I=o.createElement(te!=null?"a":"button");I.className=`${P}__addon`,te==null?I.type="button":I.href=String(te),d.ariaLabel!=null&&d.ariaLabel!==""&&(I.setAttribute("aria-label",String(d.ariaLabel)),I.title=d.tooltip!=null&&d.tooltip!==""?String(d.tooltip):String(d.ariaLabel));const W=j(o,d.icon);W&&I.appendChild(W),e.appendChild(I),y.push({el:I,spec:d,avatar:!1})}return{bar:e,entries:y}}function g(r,x,i,o,e){p(r.doc);const y=r.doc,d=y.createElement("section");d.className=`${P}__panel`;const V=y.createElement("div");V.className=`${P}__panel-header`;const te=y.createElement("div");if(te.className=`${P}__panel-heading`,x.title!=null){const a=y.createElement("h3");a.className=`${P}__panel-title`,a.textContent=x.title,te.appendChild(a)}if(x.subtitle!=null){const a=y.createElement("p");a.className=`${P}__panel-subtitle`,a.textContent=x.subtitle,te.appendChild(a)}V.appendChild(te);const I=y.createElement("div");I.className=`${P}__panel-actions`,V.appendChild(I),d.appendChild(V);const W=y.createElement("div");W.className=`${P}__panel-body`,x.axis&&(W.classList.add(k(x.axis)),e.buildChildren(r,W,x.blocks,x.axis,o)),d.appendChild(W);for(const a of x.actions){const B=y.createElement("button");B.type="button",B.className=`${P}__panel-action`,a.ariaLabel!=null&&a.ariaLabel!==""&&(B.setAttribute("aria-label",String(a.ariaLabel)),B.title=String(a.ariaLabel));const O=j(y,a.icon);O&&B.appendChild(O),typeof a.onClick=="function"&&l(r,B,"click",()=>{a.onClick()}),I.appendChild(B)}if(x.collapsible){const a=y.createElement("button");a.type="button",a.className=`${P}__panel-action ${P}__panel-collapse`,a.setAttribute("aria-expanded","true");const B=r.t("form.panel.collapse");a.setAttribute("aria-label",B),a.title=B;const O=ee(y,"chevronUp");O&&a.appendChild(O);let D=!1;l(r,a,"click",()=>{D=!D,W.hidden=D,a.setAttribute("aria-expanded",D?"false":"true");const re=r.t(D?"form.panel.expand":"form.panel.collapse");for(a.setAttribute("aria-label",re),a.title=re;a.firstChild;)a.removeChild(a.firstChild);const H=ee(y,D?"chevronDown":"chevronUp");H&&a.appendChild(H)}),I.appendChild(a)}return e.applyCss(d,x.css),x.spacing!=null&&d.style.setProperty("--lattice-form-item-gap",x.spacing),x.hidden&&(d.hidden=!0),i.appendChild(d),d}}),ge("packages/modules/form/view.js",function(R,Y){"use strict";Object.defineProperty(R,"injectSeparatorLabelStyles",{enumerable:!0,get:function(){return e}}),Object.defineProperty(R,"applyCss",{enumerable:!0,get:function(){return y}}),Object.defineProperty(R,"runValidation",{enumerable:!0,get:function(){return re}}),Object.defineProperty(R,"markValidation",{enumerable:!0,get:function(){return H}}),Object.defineProperty(R,"validateItem",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(R,"buildItem",{enumerable:!0,get:function(){return G}}),Object.defineProperty(R,"buildBlock",{enumerable:!0,get:function(){return b}}),Object.defineProperty(R,"buildChildren",{enumerable:!0,get:function(){return w}}),Object.defineProperty(R,"mount",{enumerable:!0,get:function(){return M}}),Object.defineProperty(R,"wizardGoTo",{enumerable:!0,get:function(){return X}}),Object.defineProperty(R,"wizardNext",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(R,"wizardBack",{enumerable:!0,get:function(){return q}});const n=Y("packages/modules/form/styles.js"),P=n.NS,v=n.injectColsBreakpoint,ee=Y("packages/modules/form/model.js"),s=ee.cssSize,z=ee.isEmpty,_=Y("packages/modules/form/controls/registry.js").resolveControl,k=Y("packages/modules/form/rules.js").applyRules,p=Y("packages/modules/form/state.js").syncRecordState,j=Y("packages/modules/form/stepper.js").createStepper,$=Y("packages/modules/form/validation.js"),t=$.normalizeHookResult,u=$.validateValue,m=Y("packages/modules/form/extras.js"),N=m.buildTooltip,L=m.buildLock,g=m.buildAddons,r=m.renderAvatarAddon,x=m.buildPanel,i="data-lattice-separator-label-styles";function o(){return`
989
- .${P}__separator--labelled{
1086
+ .${T}__panel-action:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:1px; }
1087
+ .${T}__panel-body{ min-width:0; min-height:0; }
1088
+ .${T}__panel-body[hidden]{ display:none; }
1089
+ `.trim()}function p(c){const x=c&&c.documentElement;if(!x||(u(c),x.getAttribute(I)))return;x.setAttribute(I,"1");const t=c.createElement("style");t.textContent=g(),(c.head||c.body||x).appendChild(t)}function a(c,x,t,i){x.addEventListener(t,i),c.disposers.push(()=>x.removeEventListener(t,i))}function $(c,x){if(x==null||x==="")return null;if(x.nodeType){const r=x.cloneNode(!0);return r.setAttribute&&r.setAttribute("aria-hidden","true"),r}const t=te(c,String(x));if(t)return t;const i=c.createElement("span");return i.className=`${T}__icon-glyph`,i.setAttribute("aria-hidden","true"),i.textContent=String(x).slice(0,2),i}function y(c,x){const{labelEl:t,item:i,labelPosition:r,labelWidth:C}=x,b=i.tooltip;if(typeof b!="string"||b===""||r==="hidden")return null;p(c.doc);const G=c.doc,oe=G.createElement("div");oe.className=`${T}__label-group`,r==="left"&&C!=null&&(oe.style.flex=`0 0 ${typeof C=="number"?`${C}px`:String(C)}`),oe.appendChild(t);const U=`lat-form-tip-${y.seq=(y.seq||0)+1}`,K=G.createElement("span");K.className=`${T}__tooltip-wrap`;const l=G.createElement("button");l.type="button",l.className=`${T}__tooltip-trigger`,l.setAttribute("aria-label",c.t("form.tooltip.help")),l.setAttribute("aria-expanded","false"),l.setAttribute("aria-controls",U),l.textContent="?";const H=G.createElement("span");H.className=`${T}__tooltip`,H.setAttribute("id",U),H.setAttribute("role","tooltip"),H.textContent=b,K.appendChild(l),K.appendChild(H),oe.appendChild(K);let J=!1;const Y=()=>{l.setAttribute("aria-expanded","true"),H.classList.add(`${T}__tooltip--open`)},B=()=>{J||(l.setAttribute("aria-expanded","false"),H.classList.remove(`${T}__tooltip--open`))};return a(c,l,"mouseenter",Y),a(c,l,"mouseleave",B),a(c,l,"focus",Y),a(c,l,"blur",B),a(c,l,"click",V=>{V.stopPropagation(),J=!J,J?Y():B()}),{group:oe,tooltipId:U}}function n(c,x,t,i){const r=i&&i.tagName;if(!(t.lockIcon!==!1&&(r==="INPUT"||r==="TEXTAREA")&&(t.readOnly===!0||t.readOnlyWhen!=null)))return null;p(c.doc);const b=c.doc.createElement("span");b.className=`${T}__lock`,b.setAttribute("aria-hidden","true"),b.title=c.t("form.readonly");const G=te(c.doc,"lock");return G&&b.appendChild(G),x.appendChild(b),{el:b}}function d(c,x){if(!Array.isArray(c))return null;const t=x==null?"":String(x);for(const i of c){if(i!=null&&typeof i=="object"&&Array.isArray(i.options)){const r=d(i.options,x);if(r)return r;continue}if(i!=null&&typeof i=="object"){const r=i.value==null?"":String(i.value);if(r===t)return{label:i.label!=null?String(i.label):r,avatar:i.avatar,color:i.color}}else{const r=String(i);if(r===t)return{label:r,avatar:void 0,color:void 0}}}return null}function h(c,x,t){let i=null,r=x==null?"":String(x),C;if(typeof c=="function")i=c(x,t);else if(c===!0){const b=d(t.options,x);b&&(r=b.label,C=b.color,b.avatar!=null&&b.avatar!==""&&(i=String(b.avatar)))}else i=String(c);if(i==null||i===""){if(r==null||r==="")return null;i=O(r)}return{avatar:i,label:r,color:C}}function z(c,x,t,i,r){for(;x.firstChild;)x.removeChild(x.firstChild);const C=h(t.avatar,i,r);C&&x.appendChild(k(c,C))}function W(c,x){const t=x.addons;if(!Array.isArray(t)||t.length===0)return null;p(c.doc);const i=c.doc,r=i.createElement("div");r.className=`${T}__addons`;const C=[];for(const b of t){if(b==null||typeof b!="object")continue;if(b.avatar!==void 0&&b.avatar!==null&&b.avatar!==!1){const l=i.createElement("span");l.className=`${T}__addon-avatar`,l.setAttribute("aria-hidden","true"),r.appendChild(l),C.push({el:l,spec:b,avatar:!0});continue}const oe=b.href,U=i.createElement(oe!=null?"a":"button");U.className=`${T}__addon`,oe==null?U.type="button":U.href=String(oe),b.ariaLabel!=null&&b.ariaLabel!==""&&(U.setAttribute("aria-label",String(b.ariaLabel)),U.title=b.tooltip!=null&&b.tooltip!==""?String(b.tooltip):String(b.ariaLabel));const K=$(i,b.icon);K&&U.appendChild(K),r.appendChild(U),C.push({el:U,spec:b,avatar:!1})}return{bar:r,entries:C}}function S(c,x,t,i,r){p(c.doc);const C=c.doc,b=C.createElement("section");b.className=`${T}__panel`;const G=C.createElement("div");G.className=`${T}__panel-header`;const oe=C.createElement("div");if(oe.className=`${T}__panel-heading`,x.title!=null){const l=C.createElement("h3");l.className=`${T}__panel-title`,l.textContent=x.title,oe.appendChild(l)}if(x.subtitle!=null){const l=C.createElement("p");l.className=`${T}__panel-subtitle`,l.textContent=x.subtitle,oe.appendChild(l)}G.appendChild(oe);const U=C.createElement("div");U.className=`${T}__panel-actions`,G.appendChild(U),b.appendChild(G);const K=C.createElement("div");K.className=`${T}__panel-body`,x.axis&&(K.classList.add(N(x.axis)),r.buildChildren(c,K,x.blocks,x.axis,i)),b.appendChild(K);for(const l of x.actions){const H=C.createElement("button");H.type="button",H.className=`${T}__panel-action`,l.ariaLabel!=null&&l.ariaLabel!==""&&(H.setAttribute("aria-label",String(l.ariaLabel)),H.title=String(l.ariaLabel));const J=$(C,l.icon);J&&H.appendChild(J),typeof l.onClick=="function"&&a(c,H,"click",()=>{l.onClick()}),U.appendChild(H)}if(x.collapsible){const l=C.createElement("button");l.type="button",l.className=`${T}__panel-action ${T}__panel-collapse`,l.setAttribute("aria-expanded","true");const H=c.t("form.panel.collapse");l.setAttribute("aria-label",H),l.title=H;const J=te(C,"chevronUp");J&&l.appendChild(J);let Y=!1;a(c,l,"click",()=>{Y=!Y,K.hidden=Y,l.setAttribute("aria-expanded",Y?"false":"true");const B=c.t(Y?"form.panel.expand":"form.panel.collapse");for(l.setAttribute("aria-label",B),l.title=B;l.firstChild;)l.removeChild(l.firstChild);const V=te(C,Y?"chevronDown":"chevronUp");V&&l.appendChild(V)}),U.appendChild(l)}return r.applyCss(b,x.css),x.spacing!=null&&b.style.setProperty("--lattice-form-item-gap",x.spacing),x.hidden&&(b.hidden=!0),t.appendChild(b),b}}),_e("packages/modules/form/view.js",function(F,X){"use strict";Object.defineProperty(F,"injectSeparatorLabelStyles",{enumerable:!0,get:function(){return r}}),Object.defineProperty(F,"applyCss",{enumerable:!0,get:function(){return C}}),Object.defineProperty(F,"runValidation",{enumerable:!0,get:function(){return B}}),Object.defineProperty(F,"markValidation",{enumerable:!0,get:function(){return V}}),Object.defineProperty(F,"validateItem",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(F,"buildItem",{enumerable:!0,get:function(){return f}}),Object.defineProperty(F,"buildBlock",{enumerable:!0,get:function(){return j}}),Object.defineProperty(F,"buildChildren",{enumerable:!0,get:function(){return M}}),Object.defineProperty(F,"mount",{enumerable:!0,get:function(){return o}}),Object.defineProperty(F,"wizardGoTo",{enumerable:!0,get:function(){return D}}),Object.defineProperty(F,"wizardNext",{enumerable:!0,get:function(){return P}}),Object.defineProperty(F,"wizardBack",{enumerable:!0,get:function(){return Z}});const e=X("packages/modules/form/styles.js"),T=e.NS,v=e.injectColsBreakpoint,te=X("packages/modules/form/model.js"),u=te.cssSize,L=te.isEmpty,k=X("packages/modules/form/controls/registry.js").resolveControl,N=X("packages/modules/form/rules.js").applyRules,p=X("packages/modules/form/state.js").syncRecordState,$=X("packages/modules/form/stepper.js").createStepper,y=X("packages/modules/form/validation.js"),n=y.normalizeHookResult,d=y.validateValue,h=X("packages/modules/form/extras.js"),z=h.buildTooltip,W=h.buildLock,S=h.buildAddons,c=h.renderAvatarAddon,x=h.buildPanel,t="data-lattice-separator-label-styles";function i(){return`
1090
+ .${T}__separator--labelled{
990
1091
  display:flex; align-items:center; gap:var(--lattice-space);
991
1092
  border-top:0; margin:var(--lattice-space) 0; width:100%;
992
1093
  }
993
- .${P}__separator--labelled .${P}__separator-rule{
1094
+ .${T}__separator--labelled .${T}__separator-rule{
994
1095
  flex:1 1 auto; min-width:0; height:0;
995
1096
  border-top:var(--lattice-border-width) solid var(--lattice-border-color);
996
1097
  }
997
- .${P}__separator--labelled .${P}__separator-label{
1098
+ .${T}__separator--labelled .${T}__separator-label{
998
1099
  color:var(--lattice-foreground-muted);
999
1100
  font-size:calc(var(--lattice-font-size) - 1px); line-height:1.2;
1000
1101
  }
1001
- `.trim()}function e(S){const C=S&&S.documentElement;if(!C||C.getAttribute(i))return;C.setAttribute(i,"1");const c=S.createElement("style");c.textContent=o(),(S.head||S.body||C).appendChild(c)}function y(S,C){if(C!=null){if(typeof C=="string"){if(C.trim()){const c=typeof S.style.cssText=="string"?S.style.cssText:"";S.style.cssText=c?`${c};${C}`:C}return}for(const c of Object.keys(C))S.style[c]=C[c]}}function d(S){return S==="cols"?`${P}__cols`:S==="items"?`${P}__items`:`${P}__rows`}function V(S,C,c,A){C.addEventListener(c,A),S.disposers.push(()=>C.removeEventListener(c,A))}function te(S){return S.uidSeq+=1,`lat-form-${S.uidSeq}`}function I(S){if(S==null)return null;const C=S.tagName;return C==="INPUT"||C==="TEXTAREA"||C==="SELECT"?S:typeof S.querySelector=="function"?S.querySelector("input, textarea, select"):null}function W(S,C,c){const A={name:C.item.name,value:c,previousValue:C.value,item:C.item},h=S.emitter.emitBefore("beforeChange",A,"user"),F=()=>{C.value=c,C.item.value=c,D(C),S.emitter.emit("change",{name:C.item.name,value:c,previousValue:A.previousValue,item:C.item}),k(S),C.item.validationMode==="change"&&ce(S,C)},J=oe=>{C.def.write(C.control,C.value),O(S,C,oe)},ie=oe=>{if(!oe){C.def.write(C.control,C.value);return}const pe=a(S,C,c);pe&&typeof pe.then=="function"?pe.then(be=>{be.ok?F():J(be.message)}):pe.ok?F():J(pe.message)};h&&typeof h.then=="function"?h.then(ie):ie(h)}function a(S,C,c){if(C.ruleRequired&&z(c))return{ok:!1,message:S.t("form.required")};const A=C.def;if(typeof A.validate!="function")return{ok:!0,message:null};const h=A.validate(C.control,C.item,c);return h&&typeof h.then=="function"?h.then(F=>B(S,F)):B(S,h)}function B(S,C){return C===!1?{ok:!1,message:S.t("form.invalid")}:typeof C=="string"?{ok:!1,message:C}:{ok:!0,message:null}}function O(S,C,c){let A=C.errorEl;A||(A=S.doc.createElement("div"),A.className=`${P}__error`,A.id=te(S),C.controlWrap.appendChild(A),C.errorEl=A);const h=c==null||c===""?S.t("form.invalid"):String(c);A.textContent=h,C.el.setAttribute("data-invalid","true"),C.control.setAttribute("aria-invalid","true");const F=(C.control.getAttribute("aria-describedby")||"").split(/\s+/).filter(Boolean);!(!C.validationEl.hidden&&C.validationEl.textContent===h&&F.includes(C.validationEl.id))&&!F.includes(A.id)&&(F.push(A.id),C.control.setAttribute("aria-describedby",F.join(" ")))}function D(S){S.errorEl&&(S.errorEl.remove(),S.errorEl=null),S.el.removeAttribute("data-invalid"),S.control.removeAttribute("aria-invalid")}function re(S,C){const c=C.value,A=C.item;if(typeof C.def.validate=="function"){const h=t(C.def.validate(C.control,A,c),A,S.t);if(h)return h}return u(A,c,S.t,C.ruleRequired===!0)}function H(S,C,c){const A=C.item,h=C.validationEl;if(C.validation.pristine=!1,C.preEl&&(C.preEl.hidden=!0),c){C.validation.valid=!1,C.validation.code=c.code,C.validation.message=c.message,C.control.setAttribute("aria-invalid","true");const F=C.tooltipId?`${C.tooltipId} ${h.id}`:h.id;C.control.setAttribute("aria-describedby",F),h.textContent=c.message,h.className=`${P}__validation ${P}__validation--error`,h.hidden=!1;return}C.validation.valid=!0,C.validation.code=null,C.validation.message=null,C.control.removeAttribute("aria-invalid"),C.tooltipId?C.control.setAttribute("aria-describedby",C.tooltipId):C.control.removeAttribute("aria-describedby"),typeof A.successMessage=="string"&&A.successMessage!==""?(h.textContent=A.successMessage,h.className=`${P}__validation ${P}__validation--success`,h.hidden=!1):(h.textContent="",h.className=`${P}__validation`,h.hidden=!0)}function ce(S,C){typeof C.def.reset=="function"&&C.def.reset(C.control,C.item);const c=re(S,C);H(S,C,c);const A=c==null;return S.emitter.emit("validated",{name:C.item.name,item:C.item,value:C.value,valid:A,failures:c?[{name:C.item.name,rule:c.code,message:c.message}]:[]}),A}function le(S,C){const c=C.control,A=C.item,h=C.def,F=J=>()=>{S.emitter.emit(J,{name:A.name,item:A}),J==="blur"&&A.validationMode==="blur"&&ce(S,C)};if(h.kind==="field"){const J=()=>{S.emitter.emit("input",{name:A.name,value:h.read(c,A),item:A})},ie=()=>{W(S,C,h.read(c,A))};V(S,c,"input",J),V(S,c,"change",ie);for(const oe of h.domEvents||[])V(S,c,oe,()=>{S.emitter.emit(oe,{name:A.name,value:h.read(c,A),item:A})})}else h.kind==="toggle"?V(S,c,"change",()=>{W(S,C,h.read(c,A))}):h.kind==="button"&&V(S,c,"click",()=>{c.disabled||c.getAttribute("aria-disabled")==="true"||S.emitter.emit("click",{name:A.name,item:A,value:null})});h.kind!=="display"&&(V(S,c,"focus",F("focus")),V(S,c,"blur",F("blur")))}function ne(S,C){if(typeof S=="string"&&/%$/.test(S.trim())){const c=parseFloat(S);if(Number.isFinite(c)){const A=Math.round(c*C/100*1e6)/1e6;return`0 0 calc(${c}% - ${A} * var(--lattice-space))`}}return`0 0 ${s(S)}`}function G(S,C,c,A={}){const h=_(C.type)||_("text"),F=C.labelPosition!=null?C.labelPosition:A.labelPosition!=null?A.labelPosition:"top",J=C.labelWidth!=null?C.labelWidth:A.labelWidth,ie=C.requiredHint!==void 0?C.requiredHint:A.requiredHint,oe=S.doc.createElement("div");oe.className=`${P}__item`,oe.setAttribute("data-label-position",F);const pe=h.build(C,S),be=h.action===!0,je=!be&&C.label!=null&&C.label!=="";let ke=null,Se=null;if(je){ke=S.doc.createElement("label"),ke.className=`${P}__label`,ke.textContent=String(C.label);const ye=te(S);ke.setAttribute("for",ye),(I(pe)||pe).id=ye,F==="hidden"&&ke.classList.add(`${P}__label--hidden`);const Q=N(S,{labelEl:ke,item:C,labelPosition:F,labelWidth:J});Q?(Se=Q.tooltipId,oe.appendChild(Q.group)):(F==="left"&&J!=null&&(ke.style.flex=`0 0 ${s(J)}`),oe.appendChild(ke))}else if(F==="hidden"&&!be){const ye=I(pe);ye&&C.placeholder!=null&&C.placeholder!==""&&ye.setAttribute("aria-label",String(C.placeholder))}const Ae=S.doc.createElement("div");Ae.className=`${P}__control`,Ae.appendChild(pe);const Ne=L(S,Ae,C,pe),de=g(S,C);let Ce=Ae;if(de&&(Ce=S.doc.createElement("div"),Ce.className=`${P}__field`,Ce.appendChild(Ae),Ce.appendChild(de.bar)),oe.appendChild(Ce),!be&&C.helpMessage!=null&&C.helpMessage!==""){const ye=S.doc.createElement("div");ye.className=`${P}__help`,ye.textContent=String(C.helpMessage),Ae.appendChild(ye)}let Ee=null;!be&&C.preMessage!=null&&C.preMessage!==""&&(Ee=S.doc.createElement("div"),Ee.className=`${P}__pre`,Ee.textContent=String(C.preMessage),Ae.appendChild(Ee));const he=S.doc.createElement("div");he.className=`${P}__validation`,he.id=te(S),he.hidden=!0,Ae.appendChild(he),C.width!=null&&(A.colsGapCount!=null?oe.style.setProperty("--lattice-item-flex",ne(C.width,A.colsGapCount)):oe.style.flex=`0 0 ${s(C.width)}`),F==="left"&&(Ce.style.flex="1 1 auto"),be&&F==="left"&&J!=null&&!(C.props&&C.props.fullWidth===!0)&&(Ce.style.paddingLeft=`calc(${s(J)} + var(--lattice-space))`),y(oe,C.css);const Pe=h.read(pe,C),$e={item:C,el:oe,control:pe,controlWrap:Ae,def:h,value:Pe,hidden:C.hidden===!0,ruleHidden:!1,ruleReadOnly:!1,ruleRequired:!1,errorEl:null,validationEl:he,preEl:Ee,labelEl:ke,labelPosition:F,requiredHint:ie,placeholderEl:I(pe),placeholderBase:C.placeholder!=null?String(C.placeholder):"",validation:{pristine:!0,valid:null,code:null,message:null},tooltipId:Se,lockEl:Ne?Ne.el:null};if(C.value=Pe,Se&&$e.control.setAttribute("aria-describedby",Se),de)for(const ye of de.entries){if(ye.avatar){r(S.doc,ye.el,ye.spec,$e.value,$e.item);continue}typeof ye.spec.onClick=="function"&&V(S,ye.el,"click",()=>{ye.spec.onClick($e.value,$e.item)})}if($e.syncLock=()=>{if(!$e.lockEl)return;const ye=$e.item.readOnly===!0||$e.ruleReadOnly;$e.lockEl.hidden=!ye,$e.lockEl.parentElement.classList.toggle(`${P}__control--lock`,ye)},$e.syncAddons=()=>{if(!de)return;const ye=$e.item.disabled===!0;for(const Q of de.entries){if(Q.avatar){r(S.doc,Q.el,Q.spec,$e.value,$e.item);continue}Q.el.tagName==="A"?Q.el.setAttribute("aria-disabled",ye?"true":"false"):Q.el.disabled=ye}},p($e),$e.hidden&&(oe.hidden=!0),h.custom&&pe.__latticeFormApi){const ye=pe.__latticeFormApi;ye._read=()=>$e.value,ye._write=Q=>{$e.value=Q,$e.item.value=Q,h.write(pe,Q),k(S)},ye._commit=Q=>{W(S,$e,Q)},ye._input=Q=>{S.emitter.emit("input",{name:$e.item.name,value:Q,item:$e.item})}}return typeof h.destroy=="function"&&S.disposers.push(()=>h.destroy(pe)),le(S,$e),S.order.push($e),C.name!=null&&S.items.set(C.name,$e),c.appendChild(oe),$e}function b(S,C,c,A={}){const h={labelPosition:C.labelPosition!=null?C.labelPosition:A.labelPosition,labelWidth:C.labelWidth!=null?C.labelWidth:A.labelWidth,requiredHint:A.requiredHint};if(C.kind==="panel")return x(S,C,c,h,{buildChildren:w,applyCss:y});if(C.kind==="spacer"){const J=S.doc.createElement("div");return J.className=`${P}__spacer`,y(J,C.css),C.hidden&&(J.hidden=!0),c.appendChild(J),J}if(C.kind==="separator"){const J=S.doc.createElement("div");J.className=`${P}__separator`,J.setAttribute("role","separator");const ie=C.label;if(ie!=null){e(S.doc),J.classList.add(`${P}__separator--labelled`);const oe=S.t(ie);J.setAttribute("aria-label",oe);const pe=S.doc.createElement("span");pe.className=`${P}__separator-rule`,pe.setAttribute("aria-hidden","true");const be=S.doc.createElement("span");be.className=`${P}__separator-label`,be.textContent=oe;const je=S.doc.createElement("span");je.className=`${P}__separator-rule`,je.setAttribute("aria-hidden","true"),J.appendChild(pe),J.appendChild(be),J.appendChild(je)}else J.setAttribute("aria-label",S.t("form.separator"));return y(J,C.css),C.hidden&&(J.hidden=!0),c.appendChild(J),J}if(C.kind==="fieldset"){const J=S.doc.createElement("fieldset");if(J.className=`${P}__fieldset`,C.legend!=null){const oe=S.doc.createElement("legend");oe.className=`${P}__legend`,oe.textContent=C.legend,J.appendChild(oe)}const ie=S.doc.createElement("div");return ie.className=`${P}__fieldset-body`,C.axis&&ie.classList.add(d(C.axis)),C.axis&&w(S,ie,C.blocks,C.axis,h),J.appendChild(ie),y(J,C.css),C.spacing!=null&&J.style.setProperty("--lattice-form-item-gap",C.spacing),C.hidden&&(J.hidden=!0),c.appendChild(J),J}const F=S.doc.createElement("div");return F.className=d(C.axis),C.axis&&w(S,F,C.blocks,C.axis,h),y(F,C.css),C.spacing!=null&&F.style.setProperty("--lattice-form-item-gap",C.spacing),C.hidden&&(F.hidden=!0),c.appendChild(F),F}function w(S,C,c,A,h={}){const F=A==="cols"?{...h,colsGapCount:c.length-1}:h;for(const J of c)J.kind==="item"?G(S,J,C,F):b(S,J,C,h)}function M(S){const C=S.el;for(;C.firstChild;)C.removeChild(C.firstChild);S.items.clear(),S.order.length=0;const c=S.model;C.classList.add(P,d(c.axis)),C.setAttribute("data-density",c.density),c.colsBreakpoint!==480&&C.style.setProperty("--lattice-cols-container",v(S.doc,c.colsBreakpoint)),S.disposers.push(()=>{C.classList.remove(`${P}__rows`,`${P}__cols`,`${P}__items`)}),y(C,c.css),c.spacing!=null&&C.style.setProperty("--lattice-form-item-gap",c.spacing),c.labelGap!=null&&C.style.setProperty("--lattice-form-label-gap",c.labelGap);const A={labelPosition:c.labelPosition,labelWidth:c.labelWidth,requiredHint:c.requiredHint};c.steps&&c.steps.length?U(S,A):w(S,C,c.blocks,c.axis==="cols"?"cols":"rows",A),k(S)}function U(S,C={}){const c=S.model,A=c.steps,h=S.doc,F=S.el,J=h.createElement("div");F.appendChild(J);const ie=j(J,{doc:h,t:S.t,steps:A.map(de=>({id:de.id,label:de.label})),active:0,orientation:c.stepOrientation,onGoTo:de=>{X(S,de)}}),oe=[];let pe=S.order.length;for(const de of A){const Ce=h.createElement("div");Ce.className=`${P}__step`,Ce.hidden=!0,w(S,Ce,de.blocks,de.axis,C),de.css&&y(Ce,de.css),F.appendChild(Ce);const Ee=S.order.length;Ce.__records=S.order.slice(pe,Ee),pe=Ee,oe.push(Ce)}const be=h.createElement("div");be.className=`${P}__step-nav`;const je=h.createElement("button");je.type="button",je.className=`${P}__step-back`,je.textContent=S.t("form.back");const ke=h.createElement("button");ke.type="button",ke.className=`${P}__step-next`,ke.textContent=S.t("form.next"),be.appendChild(je),be.appendChild(ke),F.appendChild(be);const Se={steps:A,bodies:oe,stepper:ie,back:je,next:ke,active:0};S.wizard=Se;const Ae=()=>{ie.setActive(Se.active),oe.forEach((de,Ce)=>{de.hidden=Ce!==Se.active}),je.disabled=Se.active===0,ke.textContent=Se.active===A.length-1?S.t("form.finish"):S.t("form.next")},Ne=async de=>{const Ce=oe[de].__records||[];for(const Ee of Ce){if(Ee.item.name==null||Ee.def.kind==="button")continue;const he=await Promise.resolve(a(S,Ee,Ee.value));if(!he.ok)return O(S,Ee,he.message),!1;D(Ee)}return!0};Se._stepValid=Ne,Se._render=Ae,je.addEventListener("click",()=>{q(S)}),ke.addEventListener("click",()=>{Z(S)}),Ae()}async function X(S,C){const c=S.wizard;if(!c)return!1;const A=c.steps.length,h=Number(C);if(!Number.isFinite(h)||h<0||h>=A)return!1;const F=c.active;if(h===F)return!1;if(h>F)for(let J=F;J<h;J+=1){if(!await c._stepValid(J))return c.stepper.setStatus(J,"error"),!1;c.stepper.setStatus(J,"complete")}return c.active=h,c._render(),!0}function Z(S){const C=S.wizard;return C?C.active>=C.steps.length-1?C._stepValid(C.active).then(c=>(C.stepper.setStatus(C.active,c?"complete":"error"),c)):X(S,C.active+1):Promise.resolve(!1)}function q(S){const C=S.wizard;return C?X(S,C.active-1):Promise.resolve(!1)}}),ge("packages/modules/form/emitter.js",function(R,Y){"use strict";Object.defineProperty(R,"FORM_EVENTS",{enumerable:!0,get:function(){return P}}),Object.defineProperty(R,"Emitter",{enumerable:!0,get:function(){return v}});const n=new Set(["api","user"]),P=Object.freeze(["beforeChange","change","input","click","focus","blur","validated","complete"]);class v{#e=new Map;on(s,z){if(typeof z!="function")return()=>{};let E=this.#e.get(s);return E||(E=new Set,this.#e.set(s,E)),E.add(z),()=>this.off(s,z)}off(s,z){const E=this.#e.get(s);E&&E.delete(z)}emit(s,z){const E=this.#e.get(s),_=this.#e.get("*");if((!E||E.size===0)&&(!_||_.size===0))return;const T={...z||null,type:s},k=(f,p)=>{for(const l of[...f])try{l(T)}catch(j){console.warn(`lattice-form: a '${p}' handler threw; other handlers were unaffected.`,j)}};E&&E.size&&k(E,s),_&&_.size&&k(_,"*")}emitBefore(s,z,E){const _=this.#e.get(s);if(!_||_.size===0)return!0;let T=!1,k=null;const f=u=>{T=!0,u!=null&&k===null&&(k=String(u))},p=E||z&&z.origin,l={...z||null,type:s,origin:n.has(p)?p:"user",get defaultPrevented(){return T},get reason(){return k},preventDefault(u){f(u)}},j=[..._],$=()=>(T&&k===null&&(k="prevented"),T&&z&&typeof z=="object"&&(z.reason=k),!T),t=[];for(let u=0;u<j.length;u++){const m=j[u];try{const N=m(l);N&&typeof N.then=="function"?t.push(N):N===!1&&f("prevented")}catch(N){f("error"),console.warn(`lattice-form: a '${s}' before-handler threw; the commit was cancelled.`,N)}}return t.length===0?$():Promise.allSettled(t).then(u=>{for(const m of u)m.status==="rejected"?(f("error"),console.warn(`lattice-form: a '${s}' before-handler rejected; the commit was cancelled.`,m.reason)):m.value===!1&&f("prevented");return $()})}clear(){this.#e.clear()}}}),ge("packages/modules/form/bind-router.js",function(R,Y){"use strict";Object.defineProperty(R,"routerBinding",{enumerable:!0,get:function(){return P}}),Object.defineProperty(R,"writeRouterRecord",{enumerable:!0,get:function(){return v}});function n(ee){return ee!==null&&typeof ee=="object"&&!Array.isArray(ee)}function P(ee){const{router:s,route:z,key:E}=ee,_=p=>p!=null&&String(p.rowKey??p.id)===String(E);return{kind:"router",record:()=>s&&typeof s.get=="function"?s.get(z,E):void 0,items:()=>[],density:()=>{},subscribe:p=>{if(!s||typeof s.subscribe!="function")return()=>{};const l=$=>{if($){for(const t of $.add||[])_(t)&&p(null,null,t);for(const t of $.update||[])_(t)&&p(null,null,t)}},j=s.subscribe(z,l);return typeof j=="function"?j:()=>{}},save:p=>v(ee,p)}}function v(ee,s){const{router:z,route:E,key:_,onSave:T}=ee;if(!Object.keys(s||{}).length)return!0;const f=()=>z&&typeof z.get=="function"?z.get(E,_):void 0,p=u=>{!z||typeof z.apply!="function"||z.apply([{op:"upsert",row:u}])},l=()=>{!z||typeof z.apply!="function"||(n(j)?z.apply([{op:"upsert",row:j}]):z.apply([{op:"delete",row:$}]))},j=f(),$={...n(j)?j:{},...s};if(p($),typeof T!="function")return!0;let t;try{t=T(s,$)}catch{return l(),!1}return t&&typeof t.then=="function"?t.then(()=>!0,()=>(l(),!1)):!0}}),ge("packages/modules/form/bind.js",function(R,Y){"use strict";Object.defineProperty(R,"resolveBind",{enumerable:!0,get:function(){return j}}),Object.defineProperty(R,"isBound",{enumerable:!0,get:function(){return $}}),Object.defineProperty(R,"applyBinding",{enumerable:!0,get:function(){return t}});const P=Y("packages/modules/form/model.js").DENSITIES,ee=Y("packages/modules/form/bind-router.js").routerBinding,s=new Set(["number","currency","percent","integer","decimal","duration"]);function z(u){const m=u&&u.dataType;if(m&&(m.unitConfig||m.temperatureConfig))return!0;const N=u&&u.edit?u.edit.editor:null;return N==="unit"||N==="temperature"}function E(u){return u!==null&&typeof u=="object"&&!Array.isArray(u)}function _(u){const m=u&&u.edit?u.edit.editor:null,N=u&&u.type;return m==="checkbox"||N==="boolean"?"checkbox":m==="number"||N!=null&&s.has(N)||z(u)?"number":"input"}function T(u){const m=u&&u.columns&&typeof u.columns.all=="function"?u.columns.all():[],N=[];for(const L of m){if(!L||!L.field||L.generated||L.computed)continue;const g={type:_(L),name:L.field,label:L.title,format:L.format},r=L.dataType,x=r&&r.unitConfig,i=r&&r.temperatureConfig;x?Object.assign(g,{system:x.system,unit:x.unit,binary:x.binary,decimals:x.decimals,minDecimals:x.minDecimals,maxDecimals:x.maxDecimals,display:x.display,group:x.group,space:x.space,placement:x.placement,significantFigures:x.significantFigures,compound:x.compound,nullDisplay:x.nullDisplay}):i&&Object.assign(g,{scale:i.scale,display:i.display,decimals:i.decimals,minDecimals:i.minDecimals,maxDecimals:i.maxDecimals,space:i.space,nullDisplay:i.nullDisplay}),N.push(g)}return N}function k(u,m){const N=u&&u.columns&&typeof u.columns.all=="function"?u.columns.all():[];for(const L of N)if(L&&L.field===m)return L;return null}function f(u){const m=u&&typeof u.get=="function"?u.get("density"):void 0;return P.includes(m)?m:void 0}function p(u){const{grid:m,rowKey:N}=u,L=()=>{const i=m&&m.rows&&typeof m.rows.byKey=="function"?m.rows.byKey(N):null;return i&&E(i.data)?{...i.data}:{}},g=i=>{const o=k(m,i);return o?o.id:i};return{kind:"grid",record:L,items:()=>T(m),density:()=>f(m),subscribe:i=>{if(!m||typeof m.on!="function")return()=>{};const o=e=>{if(!e||e.key!==N)return;const y=m.columns&&typeof m.columns.get=="function"?m.columns.get(e.colId):null,d=y?y.field:e.colId;d&&i(d,e.value)};return m.on("cell:changed",o)},save:i=>{const o=Object.keys(i);if(!o.length)return!0;if(!m||!m.edit||typeof m.edit.setCells!="function")return!1;const e=o.map(d=>({key:N,colId:g(d),value:i[d]})),y=m.edit.setCells(e,"cell",{origin:"form"});return y&&typeof y.then=="function"?y.then(d=>d>0):y>0}}}function l(u){return{kind:"values",record:()=>({...u}),items:()=>[],density:()=>{},subscribe:()=>()=>{},save:L=>{for(const g of Object.keys(L))u[g]=L[g];return!0}}}function j(u){const m=u&&u.bind;return m==null||typeof m!="object"?null:m.grid!=null&&E(m.grid)?p(m):m.router!=null?ee(m):l(m)}function $(u){return!!(u&&u.bind!=null&&typeof u.bind=="object")}function t(u,m,N){u.bound=N;const L=(x,i)=>{const o=m.getItem(x);o&&o.setValue(i)},g=(x,i,o)=>{if(o!=null){for(const e of Object.keys(o))if(u.items.has(e)){if(u.dirty.has(e)){u.conflicts.add(e);continue}u.baseline[e]=o[e],L(e,o[e])}return}if(u.items.has(x)){if(u.dirty.has(x)){u.conflicts.add(x);return}u.baseline[x]=i,L(x,i)}},r=N.record();if(r!=null&&typeof r=="object")for(const x of Object.keys(r))u.items.has(x)&&(u.baseline[x]=r[x],L(x,r[x]));u.disposers.push(m.on("change",x=>{u.dirty.add(x.name),u.conflicts.delete(x.name)})),u.disposers.push(N.subscribe(g))}}),ge("packages/modules/form/controls/input.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v=Object.freeze(["text","email","password","url"]),ee=Object.freeze({viewBox:"0 0 16 16",paths:["M8 3.2c3.3 0 6 3 6.6 4.5C14 9.3 11.3 12.3 8 12.3S2 9.3 1.4 7.7C2 6.2 4.7 3.2 8 3.2Zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z"],paint:"fill"}),s=Object.freeze({viewBox:"0 0 16 16",paths:["M2.2 2.9 13.1 13.8M8 3.2c3.3 0 6 3 6.6 4.5a9.4 9.4 0 0 1-1.9 2.4M5 4.2A9 9 0 0 0 1.4 7.7C2 9.3 4.7 12.3 8 12.3c.9 0 1.7-.2 2.5-.5M6.3 6a2.5 2.5 0 0 0 3.4 3.5"],paint:"stroke"});function z(f){return v.includes(f)?f:"text"}function E(f){return!(f.props&&f.props.reveal===!1)}function _(f,p){const l=p?s:ee,j=f.createElementNS("http://www.w3.org/2000/svg","svg");j.setAttribute("viewBox",l.viewBox),j.setAttribute("focusable","false"),j.setAttribute("aria-hidden","true"),l.paint==="stroke"?(j.setAttribute("fill","none"),j.setAttribute("stroke","currentColor"),j.setAttribute("stroke-width","1.5"),j.setAttribute("stroke-linecap","round"),j.setAttribute("stroke-linejoin","round")):j.setAttribute("fill","currentColor");for(const $ of l.paths){const t=f.createElementNS("http://www.w3.org/2000/svg","path");t.setAttribute("d",$),j.appendChild(t)}return j}function T(f){return f.__latPassword?f.__latPassword.input:f}function k(f,p,l){const j=p&&p.defaultView,$=j&&j.Event,t=$?new $(l,{bubbles:!0}):{type:l,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};f.dispatchEvent(t)}P("input",{kind:"field",build(f,p){const l=p.doc,j=z(f.subtype);if(j!=="password"||!E(f)){const r=l.createElement("input");return r.type=j,f.name&&(r.name=f.name),f.placeholder!=null&&(r.placeholder=String(f.placeholder)),r.value=f.value==null?"":String(f.value),r}const $=l.createElement("div");$.className="lat-form__password";const t=l.createElement("input");t.type="password",f.name&&(t.name=f.name),f.placeholder!=null&&(t.placeholder=String(f.placeholder)),t.value=f.value==null?"":String(f.value),$.appendChild(t);const u=l.createElement("button");u.type="button",u.className="lat-form__password-btn",u.setAttribute("aria-pressed","false");const m=p.t("form.password.show");u.setAttribute("aria-label",m),u.title=m,u.appendChild(_(l,!1)),$.appendChild(u);const N={revealed:!1,disabled:!1,input:t,btn:u};$.__latPassword=N;const L=r=>{N.revealed=r===!0,t.type=N.revealed?"text":"password",u.setAttribute("aria-pressed",N.revealed?"true":"false");const x=p.t(N.revealed?"form.password.hide":"form.password.show");u.setAttribute("aria-label",x),u.title=x,u.replaceChild(_(l,N.revealed),u.firstChild)};N.setRevealed=L,u.addEventListener("click",()=>{N.disabled||L(!N.revealed)});let g=!1;return $.addEventListener("focusin",()=>{g||(g=!0,k($,l,"focus"))}),$.addEventListener("focusout",r=>{$.contains(r.relatedTarget)||(g=!1,L(!1),k($,l,"blur"))}),$},read(f){return T(f).value},write(f,p){T(f).value=p==null?"":String(p)},state(f,p){const l=T(f);l.disabled=p.disabled===!0,l.readOnly=p.readOnly===!0;const j=f.__latPassword;j&&(j.disabled=p.disabled===!0,j.btn&&(j.btn.disabled=j.disabled))},reset(f){const p=f.__latPassword;p&&typeof p.setRevealed=="function"&&p.setRevealed(!1)}})}),ge("packages/core/src/internal/predicates.js",function(R,Y){"use strict";Object.defineProperty(R,"isObject",{enumerable:!0,get:function(){return n}}),Object.defineProperty(R,"isFunction",{enumerable:!0,get:function(){return P}}),Object.defineProperty(R,"isNil",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"isBlank",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"isCtor",{enumerable:!0,get:function(){return s}});function n(z){return z!==null&&typeof z=="object"&&!Array.isArray(z)}function P(z){return typeof z=="function"}function v(z){return z==null}function ee(z){return z==null||z===""}function s(z){return typeof z!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(z))?!0:!!(z.prototype&&Object.getOwnPropertyNames(z.prototype).length>1)}}),ge("packages/core/src/internal/warn.js",function(R,Y){"use strict";Object.defineProperty(R,"reportedWarnings",{enumerable:!0,get:function(){return _}}),Object.defineProperty(R,"warnOnce",{enumerable:!0,get:function(){return k}}),Object.defineProperty(R,"infoOnce",{enumerable:!0,get:function(){return f}}),Object.defineProperty(R,"resetWarnings",{enumerable:!0,get:function(){return p}}),Object.defineProperty(R,"fail",{enumerable:!0,get:function(){return l}}),Object.defineProperty(R,"invariant",{enumerable:!0,get:function(){return j}}),Object.defineProperty(R,"DEV",{enumerable:!0,get:function(){return $}});const n=new Set,P=2e3;function v(t){if(n.add(t),n.size>P){const u=n.values().next().value;u!==void 0&&n.delete(u)}}const ee=[],s=500;function z(t,u,m){ee.push({key:t,level:u,message:m.map(N=>typeof N=="string"?N:E(N)).join(" "),at:Date.now()}),ee.length>s&&ee.shift()}function E(t){if(t instanceof Error)return t.message;try{return JSON.stringify(t)}catch{return String(t)}}function _(){return ee.map(t=>({...t}))}function T(t){if(t.length===0||typeof t[0]!="string")return t;const u=t[0].replace(/^\[lattice\]\s*/,"");return u===t[0]?t:[u,...t.slice(1)]}function k(t,...u){if(n.has(t))return;v(t);const m=T(u);z(t,"warn",m),console.warn("[lattice]",...m)}function f(t,...u){if(n.has(t))return;v(t);const m=T(u);z(t,"info",m),console.info("[lattice]",...m)}function p(){n.clear(),ee.length=0}function l(t,u){const m=new Error(`[lattice] ${t}`);throw u!==void 0&&(m.cause=u),m}function j(t,u){t||l(u)}const $=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})()}),ge("packages/core/src/format/mask.js",function(R,Y){"use strict";Object.defineProperty(R,"splitSections",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"parseSection",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"compileMask",{enumerable:!0,get:function(){return z}});const n=new Set(["0","#","?",",","."]),P="\0";function v(_){const T=[];let k="",f=!1;for(let p=0;p<_.length;p++){const l=_[p];if(l==="\\"){k+=l+(_[p+1]??""),p+=1;continue}if(l==='"'){f=!f,k+=l;continue}if(l===";"&&!f){T.push(k),k="";continue}k+=l}return T.push(k),T}function ee(_){let T="",k="",f="",p=1,l=!1,j=!1;const $=i=>{j?k+=i:T+=i};for(let i=0;i<_.length;i++){const o=_[i];if(o==="\\"){$(_[i+1]??""),i+=1;continue}if(o==='"'){const e=_.indexOf('"',i+1);$(e===-1?_.slice(i+1):_.slice(i+1,e)),i=e===-1?_.length:e;continue}if(o==="%"){p*=100,$("%");continue}if(o==="@"){l=!0,$("\0");continue}if(n.has(o)){f+=o,j=!0;continue}$(o)}let t=-1;for(let i=f.length-1;i>=0;i--){const o=f[i];if(o==="0"||o==="#"||o==="?"){t=i;break}}let u=!1,m="";for(let i=0;i<f.length;i++){const o=f[i];if(o===","){i>t?p/=1e3:u=!0;continue}m+=o}const N=m.indexOf("."),L=N===-1?m:m.slice(0,N),g=N===-1?"":m.slice(N+1);let r=0;for(const i of L)i==="0"&&(r+=1);let x=0;for(const i of g)i==="0"&&(x+=1);return{prefix:T,suffix:k,minInt:r,minDec:x,maxDec:g.length,grouping:u,scale:p,hasNumber:t!==-1,isText:l}}function s(_,T){const k=new Intl.NumberFormat(T,{minimumIntegerDigits:Math.max(_.minInt,1),minimumFractionDigits:_.minDec,maximumFractionDigits:Math.max(_.maxDec,_.minDec),useGrouping:_.grouping}),{prefix:f,suffix:p,scale:l,hasNumber:j}=_;return $=>{if(!j)return f+p;const t=l===1?$:$*l;return f+k.format(t)+p}}function z(_,T){const f=v(String(_)).map(ee),p=f.map(m=>s(m,T)),l=0,j=f.length>1?1:-1,$=f.length>2?2:-1,t=f.length>3?3:-1,u=m=>{if(m==null||m==="")return"";if(typeof m!="number"||Number.isNaN(m)){const N=Number(m);if(Number.isNaN(N))return t===-1?String(m):(f[t].prefix+f[t].suffix).split("\0").join(String(m));m=N}return m===0&&$!==-1?p[$](0):m<0&&j!==-1?p[j](-m):p[l](m)};return u.spec={mask:_},{format:u,ooxml:E(String(_))}}function E(_){return _.trim()}}),ge("packages/core/src/format/pattern.js",function(R,Y){"use strict";Object.defineProperty(R,"parseNumberPattern",{enumerable:!0,get:function(){return s}});const P=Y("packages/core/src/format/mask.js").splitSections;function v(z){let E="",_="",T="",k="",f=!1,p=!1,l=!1,j=!1;const $=u=>{l?_+=u:E+=u};for(let u=0;u<z.length;u++){const m=z[u];if(m==="\\"){$(z[u+1]??""),u+=1;continue}if(m==='"'){const N=z.indexOf('"',u+1);$(N===-1?z.slice(u+1):z.slice(u+1,N)),u=N===-1?z.length:N;continue}if(m==="%"){p=!0;continue}if(m==="0"||m==="#"){l=!0,j?k+=m:T+=m;continue}if(m===","){j||(f=!0);continue}if(m==="."&&!j){j=!0;continue}$(m)}if(!l)return{hasDigit:!1,prefix:E,suffix:_,minDec:0,maxDec:0,grouping:!1,percent:p};let t=0;for(const u of k)u==="0"&&(t+=1);return{hasDigit:!0,prefix:E,suffix:_,minDec:t,maxDec:k.length,grouping:f,percent:p}}function ee(z,E){const _=E.trim(),T=z.trim();return _.startsWith("(")&&_.endsWith(")")&&_.slice(1,-1).trim()===T?"parentheses":_.endsWith("-")?"suffix":"minus"}function s(z){if(typeof z!="string")return null;const E=P(z);if(E.length===0)return null;const _=v(E[0]);if(!_.hasDigit)return null;const T={style:_.percent?"percent":"decimal",prefix:_.prefix,suffix:_.suffix,minDecimals:_.minDec,maxDecimals:Math.max(_.maxDec,_.minDec),thousandsSeparator:_.grouping?void 0:!1};if(E.length>1&&(T.negative=ee(E[0],E[1])),E.length>2){const k=v(E[2]);k.hasDigit||(T.zeroDisplay=k.prefix+k.suffix)}return T}}),ge("packages/core/src/format/number.js",function(R,Y){"use strict";Object.defineProperty(R,"compileNumber",{enumerable:!0,get:function(){return E}});const P=Y("packages/core/src/internal/predicates.js").isNil,ee=Y("packages/core/src/internal/warn.js").warnOnce,z=Y("packages/core/src/format/pattern.js").parseNumberPattern;function E(_,T){const k=typeof _=="string"?{pattern:_}:_||{};let f=k;if(typeof k.pattern=="string"){const W=z(k.pattern);if(W){const{pattern:a,...B}=k;f={...W,...B}}else ee(`format:pattern:${k.pattern}`,`invalid number format pattern "${k.pattern}"; the value will use the default number format`)}const p=f.locale||T||void 0,l=f.style||"decimal",j=typeof f.scale=="number"?f.scale:1,$=f.nullDisplay??"",t=f.zeroDisplay,u=f.prefix||"",m=f.suffix||"",N=f.negative||"minus",L=f.signed===!0,g={style:l,notation:f.notation||"standard"};l==="currency"&&(g.currency=f.currency||"USD",f.currencyDisplay&&(g.currencyDisplay=f.currencyDisplay)),typeof f.decimals=="number"?(g.minimumFractionDigits=f.decimals,g.maximumFractionDigits=f.decimals):(typeof f.minDecimals=="number"&&(g.minimumFractionDigits=f.minDecimals),typeof f.maxDecimals=="number"&&(g.maximumFractionDigits=f.maxDecimals),g.minimumFractionDigits>(g.maximumFractionDigits??20)&&(g.maximumFractionDigits=g.minimumFractionDigits)),f.thousandsSeparator===!1&&(g.useGrouping=!1),g.notation==="compact"&&(g.compactDisplay=f.compactDisplay||"short");const r=new Intl.NumberFormat(p,g),x=typeof f.thousandsSeparator=="string"?f.thousandsSeparator:null,i=typeof f.decimalSeparator=="string"?f.decimalSeparator:null;let o=",",e=".";if(x||i)for(const W of r.formatToParts(12345.6))W.type==="group"?o=W.value:W.type==="decimal"&&(e=W.value);const y=W=>{let a=W;return x&&(a=a.split(o).join("")),i&&(a=a.split(e).join("")),x&&(a=a.split("").join(x)),i&&(a=a.split("").join(i)),a},d=!!(x||i),V=u!==""&&l==="currency",te=W=>{let a;if(V){const B=r.formatToParts(W);let O=!1;a="";for(const D of B)a+=D.value,!O&&D.type==="currency"&&(a+=u,O=!0);O||(a=u+a)}else a=u+r.format(W);return d&&(a=y(a)),a+m},I=W=>{if(P(W)||W==="")return $;const a=typeof W=="number"?W:Number(W);if(Number.isNaN(a))return $;const B=j===1?a:a*j;return B===0&&t!==void 0?t:B<0?N==="parentheses"?`(${te(-B)})`:N==="suffix"?`${te(-B)}-`:te(B):L&&B>0?`+${te(B)}`:te(B)};return I.negativeClass=f.negativeClass||null,I.spec=f,I}}),ge("packages/core/src/columns/types/unit.js",function(R,Y){"use strict";Object.defineProperty(R,"defineUnit",{enumerable:!0,get:function(){return z}}),Object.defineProperty(R,"UNIT_SYSTEMS",{enumerable:!0,get:function(){return E}}),Object.defineProperty(R,"registerUnitSystem",{enumerable:!0,get:function(){return f}}),Object.defineProperty(R,"unitSystemNames",{enumerable:!0,get:function(){return p}}),Object.defineProperty(R,"unitsOf",{enumerable:!0,get:function(){return l}}),Object.defineProperty(R,"findUnit",{enumerable:!0,get:function(){return t}}),Object.defineProperty(R,"localeSeparators",{enumerable:!0,get:function(){return x}}),Object.defineProperty(R,"parseUnit",{enumerable:!0,get:function(){return I}}),Object.defineProperty(R,"formatUnit",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(R,"createUnitType",{enumerable:!0,get:function(){return G}}),Object.defineProperty(R,"default",{enumerable:!0,get:function(){return b}});const P=Y("packages/core/src/internal/predicates.js").isNil,ee=Y("packages/core/src/internal/warn.js").warnOnce;function s(w,M,U,X){return Object.freeze({symbol:w,factor:M,aliases:Object.freeze(U||[]),binary:!!(X&&X.binary),prefix:X&&X.prefix||null,auto:!(X&&X.auto===!1)})}function z(w,M,U,X){return s(w,M,U,X)}const E=Object.freeze({data:Object.freeze([s("B",1,["byte","bytes"]),s("kB",1e3,["kilobyte","kilobytes"],{prefix:"k"}),s("KiB",1024,["kibibyte","kibibytes"],{binary:!0,prefix:"k"}),s("MB",1e6,["megabyte","megabytes"],{prefix:"m"}),s("MiB",1024**2,["mebibyte","mebibytes"],{binary:!0,prefix:"m"}),s("GB",1e9,["gigabyte","gigabytes"],{prefix:"g"}),s("GiB",1024**3,["gibibyte","gibibytes"],{binary:!0,prefix:"g"}),s("TB",1e12,["terabyte","terabytes"],{prefix:"t"}),s("TiB",1024**4,["tebibyte","tebibytes"],{binary:!0,prefix:"t"}),s("PB",1e15,["petabyte","petabytes"],{prefix:"p"})]),bitrate:Object.freeze([s("bps",1,["bit","bits","bit/s","b/s"]),s("kbps",1e3,["kbit","kbits","kbit/s","kb/s","kilobit","kilobits"],{prefix:"k"}),s("Mbps",1e6,["mbit","mbits","mbit/s","mb/s","megabit","megabits"],{prefix:"m"}),s("Gbps",1e9,["gbit","gbits","gbit/s","gb/s","gigabit","gigabits"],{prefix:"g"}),s("Tbps",1e12,["tbit","tbits","tbit/s","tb/s","terabit","terabits"],{prefix:"t"})]),length:Object.freeze([s("nm",1e-9,["nanometre","nanometres","nanometer","nanometers"]),s("µm",1e-6,["um","micrometre","micrometres","micrometer","micrometers","micron","microns"]),s("mm",.001,["millimetre","millimetres","millimeter","millimeters"]),s("cm",.01,["centimetre","centimetres","centimeter","centimeters"]),s("in",.0254,["inch","inches"],{auto:!1}),s("ft",.3048,["foot","feet"],{auto:!1}),s("yd",.9144,["yard","yards"],{auto:!1}),s("m",1,["metre","metres","meter","meters"]),s("km",1e3,["kilometre","kilometres","kilometer","kilometers"]),s("mi",1609.344,["mile","miles"],{auto:!1}),s("nmi",1852,["nauticalmile","nauticalmiles"],{auto:!1})]),mass:Object.freeze([s("mg",.001,["milligram","milligrams"]),s("g",1,["gram","grams"]),s("oz",28.349523125,["ounce","ounces"],{auto:!1}),s("lb",453.59237,["pound","pounds","lbs"],{auto:!1}),s("kg",1e3,["kilogram","kilograms"]),s("st",6350.29318,["stone"],{auto:!1}),s("t",1e6,["tonne","tonnes","ton"],{auto:!1}),s("ton (US)",907184.74,["ton","shortton"],{auto:!1}),s("ton (UK)",10160469088e-4,["ton","longton"],{auto:!1})]),duration:Object.freeze([s("ns",1e-9,["nsec","nsecs","nanosecond","nanoseconds"]),s("µs",1e-6,["us","usec","usecs","microsecond","microseconds"]),s("ms",.001,["msec","msecs","millisecond","milliseconds"]),s("s",1,["sec","secs","second","seconds"]),s("m",60,["min","mins","minute","minutes"]),s("h",3600,["hr","hrs","hour","hours"]),s("d",86400,["day","days"])]),speed:Object.freeze([s("mm/s",.001,["millimetre/s","millimeter/s"]),s("ft/s",.3048,["fps","foot/s","feet/s"],{auto:!1}),s("km/h",1/3.6,["kph","kmh","kilometre/h","kilometer/h"],{auto:!1}),s("mph",.44704,["mile/h","miles/h"],{auto:!1}),s("kn",1852/3600,["knot","knots"],{auto:!1}),s("m/s",1,["metre/s","meter/s","mps"]),s("km/s",1e3,["kilometre/s","kilometer/s"])]),acceleration:Object.freeze([s("mm/s²",.001,["mm/s2"]),s("ft/s²",.3048,["ft/s2"],{auto:!1}),s("m/s²",1,["m/s2","metre/s2","meter/s2"]),s("g",9.80665,["gee","gravity"],{auto:!1})]),area:Object.freeze([s("mm²",1e-6,["mm2"]),s("cm²",1e-4,["cm2"]),s("in²",64516e-8,["in2","sqin"],{auto:!1}),s("ft²",.09290304,["ft2","sqft"],{auto:!1}),s("yd²",.83612736,["yd2","sqyd"],{auto:!1}),s("m²",1,["m2","sqm"]),s("ha",1e4,["hectare","hectares"],{auto:!1}),s("ac",4046.8564224,["acre","acres"],{auto:!1}),s("km²",1e6,["km2","sqkm"])]),volume:Object.freeze([s("µL",1e-6,["ul","microlitre","microliter"]),s("mL",.001,["millilitre","milliliter"]),s("fl oz (US)",.0295735295625,["fl oz","usfloz"],{auto:!1}),s("fl oz (imp)",.0284130625,["fl oz","impfloz"],{auto:!1}),s("L",1,["litre","litres","liter","liters"]),s("gal (US)",3.785411784,["gal","usgal","usgallon"],{auto:!1}),s("gal (imp)",4.54609,["gal","impgal","impgallon"],{auto:!1}),s("m³",1e3,["m3","cubicmetre","cubicmeter","kl"],{auto:!1}),s("bbl",158.987294928,["barrel","barrels"],{auto:!1})]),energy:Object.freeze([s("eV",1602176634e-28,["electronvolt","electronvolts"],{auto:!1}),s("J",1,["joule","joules"]),s("cal",4.184,["calorie","calories"],{auto:!1}),s("kJ",1e3,["kilojoule","kilojoules"]),s("BTU",1055.05585262,["btu"],{auto:!1}),s("kcal",4184,["kilocalorie","kilocalories","Cal"],{auto:!1}),s("MJ",1e6,["megajoule","megajoules"]),s("kWh",36e5,["kilowatthour","kilowatthours"],{auto:!1}),s("GJ",1e9,["gigajoule","gigajoules"]),s("MWh",36e8,["megawatthour","megawatthours"],{auto:!1})]),power:Object.freeze([s("mW",.001,["milliwatt","milliwatts"]),s("W",1,["watt","watts"]),s("BTU/h",1055.05585262/3600,["btuh","btu/h"],{auto:!1}),s("kW",1e3,["kilowatt","kilowatts"]),s("hp",745.6998715822702,["horsepower"],{auto:!1}),s("MW",1e6,["megawatt","megawatts"]),s("GW",1e9,["gigawatt","gigawatts"])]),force:Object.freeze([s("mN",.001,["millinewton","millinewtons"]),s("N",1,["newton","newtons"]),s("lbf",4.4482216152605,["poundforce"],{auto:!1}),s("kgf",9.80665,["kilogramforce"],{auto:!1}),s("kN",1e3,["kilonewton","kilonewtons"]),s("MN",1e6,["meganewton","meganewtons"])]),pressure:Object.freeze([s("Pa",1,["pascal","pascals"]),s("mbar",100,["millibar"],{auto:!1}),s("inH₂O",249.0889,["inh2o"],{auto:!1}),s("mmHg",133.322387415,["torr"],{auto:!1}),s("kPa",1e3,["kilopascal","kilopascals"]),s("inHg",3386.388640341,["inhg"],{auto:!1}),s("psi",6894.757293168361,["lbf/in2"],{auto:!1}),s("bar",1e5,[],{auto:!1}),s("atm",101325,["atmosphere","atmospheres"],{auto:!1}),s("MPa",1e6,["megapascal","megapascals"]),s("GPa",1e9,["gigapascal","gigapascals"])]),torque:Object.freeze([s("N·m",1,["nm","n.m","newtonmetre","newtonmeter"]),s("lbf·ft",1.3558179483314003,["lbfft","lbf.ft","ftlb","ft-lb"],{auto:!1}),s("kN·m",1e3,["knm","kn.m"],{auto:!1}),s("MN·m",1e6,["mnm","mn.m"],{auto:!1})]),density:Object.freeze([s("kg/m³",1,["kg/m3"]),s("lb/ft³",16.01846337396014,["lb/ft3","pcf"],{auto:!1}),s("g/cm³",1e3,["g/cm3","g/ml","kg/l"],{auto:!1}),s("t/m³",1e3,["t/m3"],{auto:!1})]),flow:Object.freeze([s("L/min",1/6e4,["lpm","l/min"],{auto:!1}),s("m³/h",1/3600,["m3/h","cmh"],{auto:!1}),s("gpm (US)",.003785411784/60,["gpm","usgpm"],{auto:!1}),s("gpm (imp)",.00454609/60,["gpm","impgpm"],{auto:!1}),s("cfm",.0004719474432,["ft3/min"],{auto:!1}),s("L/s",.001,["lps","l/s"],{auto:!1}),s("m³/s",1,["m3/s","cms"])]),angle:Object.freeze([s("″",Math.PI/648e3,["arcsec","arcsecond","arcseconds"],{auto:!1}),s("′",Math.PI/10800,["arcmin","arcminute","arcminutes"],{auto:!1}),s("mrad",.001,["milliradian","milliradians"],{auto:!1}),s("mil",Math.PI/3200,["nato-mil"],{auto:!1}),s("°",Math.PI/180,["deg","degree","degrees"],{auto:!1}),s("gon",Math.PI/200,["grad","gradian","gradians"],{auto:!1}),s("rad",1,["radian","radians"]),s("turn",2*Math.PI,["rev","revolution","revolutions"],{auto:!1})]),angularVelocity:Object.freeze([s("°/s",Math.PI/180,["degps","deg/s","degrees/s"],{auto:!1}),s("rad/s",1,["radps","radians/s"]),s("rpm",2*Math.PI/60,["rev/min","r/min","revolutions/min"],{auto:!1}),s("rps",2*Math.PI,["rev/s","r/s","revolutions/s"],{auto:!1})]),fraction:Object.freeze([s("ppt",1e-12,["partspertrillion"],{auto:!1}),s("ppb",1e-9,["partsperbillion"]),s("ppm",1e-6,["partspermillion"]),s("bp",1e-4,["bps-finance","basispoint","basispoints","bips"],{auto:!1}),s("‰",.001,["permille","permil"],{auto:!1}),s("%",.01,["pct","percent"]),s("×",1,["x","ratio","times"])]),molarity:Object.freeze([s("pM",1e-12,["picomolar","picomolarity"]),s("nM",1e-9,["nanomolar","nanomolarity"]),s("µM",1e-6,["um-molar","micromolar","micromolarity"]),s("mM",.001,["millimolar","millimolarity"]),s("M",1,["molar","mol/l","mol/L","molarity"]),s("mol/m³",.001,["mol/m3"],{auto:!1})]),massFlow:Object.freeze([s("mg/s",1e-6,["milligrams/s"]),s("g/s",.001,["grams/s"]),s("kg/h",1/3600,["kilograms/h","kgph"],{auto:!1}),s("kg/s",1,["kilograms/s","kgps"]),s("t/h",1e3/3600,["tonnes/h","tph"],{auto:!1}),s("lb/h",.45359237/3600,["pounds/h","pph"],{auto:!1}),s("t/s",1e3,["tonnes/s"],{auto:!1})]),viscosity:Object.freeze([s("µPa·s",1e-6,["upas","micropascalsecond"]),s("cP",.001,["centipoise"],{auto:!1}),s("mPa·s",.001,["mpas","millipascalsecond"]),s("P",.1,["poise"],{auto:!1}),s("Pa·s",1,["pas","pascalsecond"])]),kinematicViscosity:Object.freeze([s("cSt",1e-6,["centistokes","centistoke"]),s("mm²/s",1e-6,["mm2/s"],{auto:!1}),s("St",1e-4,["stokes","stoke"],{auto:!1}),s("m²/s",1,["m2/s"])]),thermalConductivity:Object.freeze([s("mW/(m·K)",.001,["mw/mk"]),s("W/(m·K)",1,["w/mk","wmk"]),s("kW/(m·K)",1e3,["kw/mk"],{auto:!1}),s("BTU/(hr·ft·°F)",1.730734666,["btu/hrftf"],{auto:!1})]),specificHeat:Object.freeze([s("J/(kg·K)",1,["j/kgk","jkgk"]),s("kJ/(kg·K)",1e3,["kj/kgk"]),s("cal/(g·°C)",4184,["cal/gc"],{auto:!1})]),doseRate:Object.freeze([s("nSv/h",1e-9,["nsvh"]),s("µSv/h",1e-6,["usv/h","usvh"]),s("mSv/h",.001,["msvh"]),s("Sv/h",1,["svh"]),s("mSv/a",.001/8766,["msv/year","msvpa"],{auto:!1})])}),_=Symbol("ambiguous"),T=new Map,k=new Map;function f(w,M){const U=String(w||"").trim();if(!U)throw new Error("[lattice] a unit system needs a name");if(E[U]||k.has(U))throw new Error(`[lattice] unit system "${U}" already exists`);const X=[...M||[]];if(!X.length)throw new Error(`[lattice] unit system "${U}" has no units`);if(!X.some(q=>q.factor===1))throw new Error(`[lattice] unit system "${U}" has no base unit (none with factor 1)`);const Z=new Set;for(const q of X){if(Z.has(q.symbol))throw new Error(`[lattice] unit system "${U}" declares "${q.symbol}" twice`);Z.add(q.symbol)}return k.set(U,Object.freeze(X)),T.delete(U),U}function p(){return[...Object.keys(E),...k.keys()]}function l(w){const M=j(w);return M?M.units:[]}function j(w){const M=String(w||""),U=T.get(M);if(U!==void 0)return U;const X=E[M]||k.get(M);if(!X)return T.set(M,null),null;const Z=Object.freeze([...X].sort((A,h)=>A.factor-h.factor)),q=new Map,S=new Map,C=(A,h)=>{const F=q.get(A);F===void 0?q.set(A,h):F!==h&&q.set(A,_)};for(const A of Z){C(A.symbol.toLowerCase(),A);for(const h of A.aliases)C(h.toLowerCase(),A);if(A.prefix){const h=S.get(A.prefix)||[];h.push(A),S.set(A.prefix,h)}}const c={units:Z,byToken:q,byPrefix:S,decimal:Z.filter(A=>!A.binary&&A.auto),binary:Z.some(A=>A.binary)?Z.filter(A=>(A.binary||A.factor===1)&&A.auto):null};return T.set(M,c),c}function $(w,M){return M&&w.binary||w.decimal}function t(w,M){const U=j(w);if(!U||P(M))return null;const X=U.units.find(q=>q.symbol===String(M));if(X)return X;const Z=U.byToken.get(String(M).trim().toLowerCase());return Z&&Z!==_?Z:null}const u=new WeakMap;function m(w){const M=w||{};if(typeof M=="object"&&M!==null){const q=u.get(M);if(q!==void 0)return q}const U=M.system||"data",X=j(U);let Z=null;if(!X)ee(`unit:system:${U}`,`unknown unit system "${U}"; known systems are ${p().join(", ")}`);else{let q=M.unit?t(U,M.unit):null;q||(M.unit&&ee(`unit:unit:${U}:${M.unit}`,`unknown unit "${M.unit}" in system "${U}"; falling back to ${X.units[0].symbol}`),q=X.units.find(S=>S.factor===1)||X.units[0]),Z={index:X,base:q,binary:M.binary===!0}}return typeof M=="object"&&M!==null&&u.set(M,Z),Z}const N=new WeakMap;function L(w,M){if(!w||!M||!Array.isArray(w.compound)||w.compound.length===0)return null;const U=N.get(w);if(U!==void 0)return U;const X=new Set,Z=[];for(const S of w.compound){const C=t(w.system||"data",S);if(!C){ee(`unit:compound:${w.system}:${S}`,`unknown compound unit "${S}" in system "${w.system||"data"}"; ignoring it`);continue}X.has(C.symbol)||(X.add(C.symbol),Z.push(C))}Z.sort((S,C)=>C.factor-S.factor);const q=Z.length>=2?Z:null;return N.set(w,q),q}function g(w,M,U){return M===U||M.factor===U.factor?w:w*M.factor/U.factor}const r=new Map;function x(w){const M=w||"",U=r.get(M);if(U)return U;const X={group:",",decimal:"."};try{for(const Z of new Intl.NumberFormat(w||void 0).formatToParts(12345.6))Z.type==="group"?X.group=Z.value:Z.type==="decimal"&&(X.decimal=Z.value)}catch{}return r.set(M,X),X}const i=/[\s   ]/g,o=/^[+-]?[\d   '’ .,]*(?:[eE][+-]?\d+)?/,e=/^[^\d+\-(.,\s]+\s*/,y=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/;function d(w,M){const{group:U,decimal:X}=x(M);let Z=String(w).replace(i,"");if(Z==="")return null;const q=X?Z.indexOf(X):-1;if(U&&U!==X){if(q>=0&&Z.indexOf(U,q+X.length)>=0)return null;Z=Z.split(U).join("")}if(X&&X!=="."&&(Z=Z.split(X).join(".")),!y.test(Z))return null;const S=Number(Z);return Number.isFinite(S)?S:null}function V(w,M,U){const X=String(w).trim().replace(/\.$/,"");if(X==="")return null;const Z=M.units.find(h=>h.symbol===X);if(Z)return Z;const q=X.toLowerCase(),S=M.byToken.get(q);if(S===_)return null;if(S)return S;const C=M.byPrefix.get(q);if(!C||!C.length)return null;const c=$(M,U),A=C.filter(h=>c.includes(h));return A.length===1?A[0]:null}function te(w,M,U,X){let Z=w,q=0,S=!1,C=!1;for(;Z!=="";){const c=o.exec(Z)[0];if(c==="")return null;const A=d(c,X&&X.locale);if(A===null)return null;Z=Z.slice(c.length).trim();const h=Z.search(/[+-]?[\d]/),F=(h>=0?Z.slice(0,h):Z).trim();if(Z=h>=0?Z.slice(h).trim():"",F===""){if(S)return null;C=!0,q+=g(A,U[0],M.base)}else{const J=V(F,M.index,M.binary);if(!J)return null;q+=g(A,J,M.base)}if(S=!0,C&&Z!=="")return null}return S?q:null}function I(w,M){if(P(w))return null;if(typeof w=="number")return Number.isFinite(w)?w:null;const U=m(M);if(!U)return null;let X=String(w).trim();if(X==="")return null;let Z=!1;X.startsWith("(")&&X.endsWith(")")&&(Z=!0,X=X.slice(1,-1).trim());const q=L(M,U);if(q){X.startsWith("-")&&(Z=!0,X=X.slice(1).trim());const ie=te(X,U,q,M);return ie===null?null:Z?-ie:ie}let S=null;const C=e.exec(X);if(C&&C[0]){const ie=V(C[0].trim(),U.index,U.binary);ie&&(S=ie,X=X.slice(C[0].length).trim())}const c=o.exec(X)[0],A=d(c,M&&M.locale);if(A===null)return null;const h=X.slice(c.length).trim();if(S&&h!=="")return null;const F=S||(h===""?U.base:V(h,U.index,U.binary));if(!F)return null;const J=g(A,F,U.base);return Z?-J:J}const W=new Map;function a(w,M,U,X){const Z=`${w||""}|${M}|${U}|${X?1:0}`;let q=W.get(Z);return q||(q=new Intl.NumberFormat(w||void 0,{minimumFractionDigits:M,maximumFractionDigits:U,useGrouping:X}),W.set(Z,q)),q}function B(w,M){if(!Number.isFinite(w)||w===0)return Math.max(0,M-1);const U=Math.floor(Math.log10(Math.abs(w)));return Math.min(20,Math.max(0,M-1-U))}function O(w,M){if(!Number.isFinite(w)||w===0)return w;const U=Math.ceil(Math.log10(Math.abs(w))),X=10**(M-U);return Math.round(w*X)/X}function D(w,M,U){if(!U||U===M.base.symbol)return M.base;if(U!=="auto")return re(M,U);if(w===0||!Number.isFinite(w))return M.base;const X=Math.abs(w)*M.base.factor,Z=$(M.index,M.binary);let q=Z[0];for(const c of Z)X>=c.factor&&(q=c);if(X>=q.factor)return q;let S=q;for(const c of M.index.units)c.binary!==M.binary&&c.factor!==1||c.factor<=X&&c.factor>(S===q?0:S.factor)&&(S=c);if(S!==q)return S;let C=q;for(const c of M.index.units)c.binary!==M.binary&&c.factor!==1||c.factor<C.factor&&(C=c);return C.factor<M.base.factor?C:M.base}function re(w,M){const U=w.index.units.find(Z=>Z.symbol===M);if(U)return U;const X=w.index.byToken.get(String(M).toLowerCase());return X&&X!==_?X:(ee(`unit:display:${M}`,`unknown display unit "${M}"; rendering in ${w.base.symbol}`),w.base)}function H(w,M,U,X){const Z=w<0;let q=Math.abs(w)*M.base.factor;const S=typeof X.decimals=="number"?X.decimals:X.minDecimals??0,C=typeof X.decimals=="number"?X.decimals:X.maxDecimals??Math.max(S,2),c=X.space??" ",A=[];for(let F=0;F<U.length;F++){const J=U[F],ie=F===U.length-1;let oe=ie?q/J.factor:Math.floor(q/J.factor);if(q-=oe*J.factor,ie){const be=10**C;oe=Math.round(oe*be)/be+0}const pe=ie?a(X.locale,S,C,X.group!==!1):a(X.locale,0,0,X.group!==!1);A.push(`${pe.format(oe)}${c}${J.symbol}`)}const h=A.join(" ");return Z?`-${h}`:h}function ce(w,M){const U=M||{},X=U.nullDisplay??"";if(P(w)||w==="")return X;const Z=typeof w=="number"?w:Number(w);if(!Number.isFinite(Z))return X;const q=m(U);if(!q)return String(Z);const S=L(U,q);if(S)return H(Z,q,S,U);const C=typeof U.significantFigures=="number"&&U.significantFigures>0?U.significantFigures:0,c=C?O(Z,C):Z,A=D(c,q,U.display),h=g(c,q.base,A);let F=typeof U.decimals=="number"?U.decimals:U.minDecimals??0,J=typeof U.decimals=="number"?U.decimals:U.maxDecimals??Math.max(F,2);C&&(F=B(h,C),J=F);const ie=a(U.locale,F,J,U.group!==!1).format(h),oe=U.space??" ";return U.placement==="prefix"?`${A.symbol}${U.space??""}${ie}`:`${ie}${oe}${A.symbol}`}function le(w,M){const U=P(w)||Number.isNaN(w)?null:Number(w),X=P(M)||Number.isNaN(M)?null:Number(M);return U===null||Number.isNaN(U)?X===null||Number.isNaN(X)?0:1:X===null||Number.isNaN(X)||U<X?-1:U>X?1:0}function ne(w){const M=typeof w.decimals=="number"&&w.decimals>0?`.${"0".repeat(w.decimals)}`:"";return`${typeof w.decimals=="number"?`#,##0${M}`:"#,##0.##"}" ${w.symbol}"`}function G(w){const M={system:"data",...w||{}},U=m(M),X=U?U.base.symbol:String(M.unit||""),Z=Object.freeze({...M,unit:X}),q=Object.freeze({...Z,display:X,decimals:void 0,minDecimals:0,maxDecimals:20,group:!1}),S=new Map([[Z.locale||"",Z]]),C=c=>{const A=c||"";let h=S.get(A);return h||(h=Object.freeze({...Z,locale:c||void 0}),S.set(A,h)),h};return{base:"number",extends:"number",storage:"float64",unitConfig:Z,format:c=>ce(c.value,c.locale?C(c.locale):Z),parse:c=>I(c.text,c.locale?C(c.locale):Z),compare:le,defaults:{filter:"number",editor:"unit",align:"end",total:M.total||"sum"},...M.totals?{totals:M.totals}:{},excel:M.excel||ne({decimals:M.decimals,symbol:X}),toStorage:c=>typeof c=="number"?Number.isFinite(c)?c:null:typeof c=="string"?I(c,Z):P(c)?null:I(String(c),Z),toClipboard:c=>ce(c,q),fromClipboard:c=>I(c,Z)}}const b=G}),ge("packages/core/src/columns/types/temperature.js",function(R,Y){"use strict";Object.defineProperty(R,"TEMPERATURE_SCALES",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"findScale",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"convertTemperature",{enumerable:!0,get:function(){return s}}),Object.defineProperty(R,"formatTemperature",{enumerable:!0,get:function(){return _}}),Object.defineProperty(R,"parseTemperature",{enumerable:!0,get:function(){return f}}),Object.defineProperty(R,"createTemperatureType",{enumerable:!0,get:function(){return p}}),Object.defineProperty(R,"TEMPERATURE_TYPES",{enumerable:!0,get:function(){return l}}),Object.defineProperty(R,"default",{enumerable:!0,get:function(){return j}});const P=Y("packages/core/src/internal/predicates.js").isNil,v=Object.freeze({C:Object.freeze({symbol:"°C",aliases:["c","°c","celsius","centigrade"],toKelvin:$=>$+273.15,fromKelvin:$=>$-273.15}),F:Object.freeze({symbol:"°F",aliases:["f","°f","fahrenheit"],toKelvin:$=>($+459.67)*(5/9),fromKelvin:$=>$*(9/5)-459.67}),K:Object.freeze({symbol:"K",aliases:["k","kelvin"],toKelvin:$=>$,fromKelvin:$=>$}),R:Object.freeze({symbol:"°R",aliases:["r","°r","rankine"],toKelvin:$=>$*(5/9),fromKelvin:$=>$*(9/5)})});function ee($){if(P($))return null;const t=String($).trim();if(t==="")return null;for(const[m,N]of Object.entries(v))if(t===m||t===N.symbol)return{key:m,scale:N};const u=t.toLowerCase();for(const[m,N]of Object.entries(v))if(N.aliases.includes(u))return{key:m,scale:N};return null}function s($,t,u){const m=ee(t),N=ee(u);return!m||!N||!Number.isFinite(Number($))?null:m.key===N.key?Number($):N.scale.fromKelvin(m.scale.toKelvin(Number($)))}const z=new Map;function E($,t,u){const m=`${$||""}|${t}|${u}`;let N=z.get(m);return N||(N=new Intl.NumberFormat($||void 0,{minimumFractionDigits:t,maximumFractionDigits:u}),z.set(m,N)),N}function _($,t){const u=t||{},m=u.nullDisplay??"";if(P($)||$==="")return m;const N=Number($);if(!Number.isFinite(N))return m;const L=ee(u.scale||"C");if(!L)return String(N);const g=ee(u.display||u.scale||"C")||L,r=g.key===L.key?N:g.scale.fromKelvin(L.scale.toKelvin(N)),x=typeof u.decimals=="number"?u.decimals:null,i=x??u.minDecimals??0,o=x??u.maxDecimals??1;return`${E(u.locale,i,o).format(r)}${u.space??" "}${g.scale.symbol}`}const T=/^[+-]?[\d\s.,  ]*\d/;function k($,t){const u=String($).trim();if(u==="")return null;const m=new Intl.NumberFormat(t||void 0).formatToParts(1.1).find(r=>r.type==="decimal")?.value||".",N=m===","?".":",",L=u.split(N).join("").split(/[\s  ]/).join("").replace(m,"."),g=Number(L);return Number.isFinite(g)?g:null}function f($,t){if(P($))return null;const u=t||{},m=ee(u.scale||"C");if(!m)return null;if(typeof $=="number")return Number.isFinite($)?$:null;let N=String($).trim();if(N==="")return null;let L=!1;N.startsWith("(")&&N.endsWith(")")&&(L=!0,N=N.slice(1,-1).trim());const g=T.exec(N);if(!g)return null;const r=k(g[0],u.locale);if(r===null)return null;const x=N.slice(g[0].length).trim();if(x==="")return L?-r:r;const i=ee(x);if(!i)return null;const o=i.key===m.key?r:m.scale.fromKelvin(i.scale.toKelvin(r));return L?-o:o}function p($){const t=Object.freeze({scale:"C",...$||{}}),m=(ee(t.scale)||ee("C")).scale.symbol,N=Object.freeze({...t,display:t.scale,decimals:void 0,minDecimals:0,maxDecimals:20}),L=new Map([[t.locale||"",t]]),g=r=>{const x=r||"";let i=L.get(x);return i||(i=Object.freeze({...t,locale:r||void 0}),L.set(x,i)),i};return{base:"number",extends:"number",storage:"float64",temperatureConfig:t,format:r=>_(r.value,r.locale?g(r.locale):t),parse:r=>f(r.text,r.locale?g(r.locale):t),defaults:{filter:"number",editor:"temperature",align:"end",total:"avg"},totals:{supported:["avg","min","max","count","countValues"]},excel:t.excel||`#,##0${typeof t.decimals=="number"&&t.decimals>0?`.${"0".repeat(t.decimals)}`:".#"}" ${m}"`,toStorage:r=>typeof r=="number"?Number.isFinite(r)?r:null:typeof r=="string"?f(r,t):P(r)?null:f(String(r),t),toClipboard:r=>_(r,N),fromClipboard:r=>f(r,t)}}const l=Object.freeze({celsius:p({scale:"C"}),fahrenheit:p({scale:"F"}),kelvin:p({scale:"K"})}),j=p}),ge("packages/modules/form/controls/number.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,ee=Y("packages/modules/form/messages.js").t,z=Y("packages/core/src/format/number.js").compileNumber,E=Y("packages/core/src/columns/types/unit.js"),_=E.parseUnit,T=E.formatUnit,k=E.findUnit,f=E.unitsOf,p=Y("packages/core/src/columns/types/temperature.js"),l=p.parseTemperature,j=p.formatTemperature,$=p.findScale,t="data-lattice-form-number-styles";function u(){return`
1102
+ `.trim()}function r(A){const _=A&&A.documentElement;if(!_||_.getAttribute(t))return;_.setAttribute(t,"1");const s=A.createElement("style");s.textContent=i(),(A.head||A.body||_).appendChild(s)}function C(A,_){if(_!=null){if(typeof _=="string"){if(_.trim()){const s=typeof A.style.cssText=="string"?A.style.cssText:"";A.style.cssText=s?`${s};${_}`:_}return}for(const s of Object.keys(_))A.style[s]=_[s]}}function b(A){return A==="cols"?`${T}__cols`:A==="items"?`${T}__items`:`${T}__rows`}function G(A,_,s,w){_.addEventListener(s,w),A.disposers.push(()=>_.removeEventListener(s,w))}function oe(A){return A.uidSeq+=1,`lat-form-${A.uidSeq}`}function U(A){if(A==null)return null;const _=A.tagName;return _==="INPUT"||_==="TEXTAREA"||_==="SELECT"?A:typeof A.querySelector=="function"?A.querySelector("input, textarea, select"):null}function K(A,_,s){const w={name:_.item.name,value:s,previousValue:_.value,item:_.item},m=A.emitter.emitBefore("beforeChange",w,"user"),R=()=>{_.value=s,_.item.value=s,Y(_),A.emitter.emit("change",{name:_.item.name,value:s,previousValue:w.previousValue,item:_.item}),N(A),_.item.validationMode==="change"&&ce(A,_)},q=ie=>{_.def.write(_.control,_.value),J(A,_,ie)},re=ie=>{if(!ie){_.def.write(_.control,_.value);return}const ge=l(A,_,s);ge&&typeof ge.then=="function"?ge.then(pe=>{pe.ok?R():q(pe.message)}):ge.ok?R():q(ge.message)};m&&typeof m.then=="function"?m.then(re):re(m)}function l(A,_,s){if(_.ruleRequired&&L(s))return{ok:!1,message:A.t("form.required")};const w=_.def;if(typeof w.validate!="function")return{ok:!0,message:null};const m=w.validate(_.control,_.item,s);return m&&typeof m.then=="function"?m.then(R=>H(A,R)):H(A,m)}function H(A,_){return _===!1?{ok:!1,message:A.t("form.invalid")}:typeof _=="string"?{ok:!1,message:_}:{ok:!0,message:null}}function J(A,_,s){let w=_.errorEl;w||(w=A.doc.createElement("div"),w.className=`${T}__error`,w.id=oe(A),_.controlWrap.appendChild(w),_.errorEl=w);const m=s==null||s===""?A.t("form.invalid"):String(s);w.textContent=m,_.el.setAttribute("data-invalid","true"),_.control.setAttribute("aria-invalid","true");const R=(_.control.getAttribute("aria-describedby")||"").split(/\s+/).filter(Boolean);!(!_.validationEl.hidden&&_.validationEl.textContent===m&&R.includes(_.validationEl.id))&&!R.includes(w.id)&&(R.push(w.id),_.control.setAttribute("aria-describedby",R.join(" ")))}function Y(A){A.errorEl&&(A.errorEl.remove(),A.errorEl=null),A.el.removeAttribute("data-invalid"),A.control.removeAttribute("aria-invalid")}function B(A,_){const s=_.value,w=_.item;if(typeof _.def.validate=="function"){const m=n(_.def.validate(_.control,w,s),w,A.t);if(m)return m}return d(w,s,A.t,_.ruleRequired===!0)}function V(A,_,s){const w=_.item,m=_.validationEl;if(_.validation.pristine=!1,_.preEl&&(_.preEl.hidden=!0),s){_.validation.valid=!1,_.validation.code=s.code,_.validation.message=s.message,_.control.setAttribute("aria-invalid","true");const R=_.tooltipId?`${_.tooltipId} ${m.id}`:m.id;_.control.setAttribute("aria-describedby",R),m.textContent=s.message,m.className=`${T}__validation ${T}__validation--error`,m.hidden=!1;return}_.validation.valid=!0,_.validation.code=null,_.validation.message=null,_.control.removeAttribute("aria-invalid"),_.tooltipId?_.control.setAttribute("aria-describedby",_.tooltipId):_.control.removeAttribute("aria-describedby"),typeof w.successMessage=="string"&&w.successMessage!==""?(m.textContent=w.successMessage,m.className=`${T}__validation ${T}__validation--success`,m.hidden=!1):(m.textContent="",m.className=`${T}__validation`,m.hidden=!0)}function ce(A,_){typeof _.def.reset=="function"&&_.def.reset(_.control,_.item);const s=B(A,_);V(A,_,s);const w=s==null;return A.emitter.emit("validated",{name:_.item.name,item:_.item,value:_.value,valid:w,failures:s?[{name:_.item.name,rule:s.code,message:s.message}]:[]}),w}function ue(A,_){const s=_.control,w=_.item,m=_.def,R=q=>()=>{A.emitter.emit(q,{name:w.name,item:w}),q==="blur"&&w.validationMode==="blur"&&ce(A,_)};if(m.kind==="field"){const q=()=>{A.emitter.emit("input",{name:w.name,value:m.read(s,w),item:w})},re=()=>{K(A,_,m.read(s,w))};G(A,s,"input",q),G(A,s,"change",re);for(const ie of m.domEvents||[])G(A,s,ie,pe=>{const Se=pe&&typeof pe=="object"&&pe.detail&&typeof pe.detail=="object"?pe.detail:null;A.emitter.emit(ie,Se?{name:w.name,item:w,...Se}:{name:w.name,value:m.read(s,w),item:w})})}else m.kind==="toggle"?G(A,s,"change",()=>{K(A,_,m.read(s,w))}):m.kind==="button"&&G(A,s,"click",()=>{s.disabled||s.getAttribute("aria-disabled")==="true"||A.emitter.emit("click",{name:w.name,item:w,value:null})});m.kind!=="display"&&(G(A,s,"focus",R("focus")),G(A,s,"blur",R("blur")))}function ne(A,_){if(typeof A=="string"&&/%$/.test(A.trim())){const s=parseFloat(A);if(Number.isFinite(s)){const w=Math.round(s*_/100*1e6)/1e6;return`0 0 calc(${s}% - ${w} * var(--lattice-space))`}}return`0 0 ${u(A)}`}function f(A,_,s,w={}){const m=k(_.type)||k("text"),R=_.labelPosition!=null?_.labelPosition:w.labelPosition!=null?w.labelPosition:"top",q=_.labelWidth!=null?_.labelWidth:w.labelWidth,re=_.requiredHint!==void 0?_.requiredHint:w.requiredHint,ie=A.doc.createElement("div");ie.className=`${T}__item`,ie.setAttribute("data-label-position",R);const ge=m.build(_,A),pe=m.action===!0,Se=!pe&&_.label!=null&&_.label!=="";let xe=null,Ee=null;if(Se){xe=A.doc.createElement("label"),xe.className=`${T}__label`,xe.textContent=String(_.label);const ye=oe(A);xe.setAttribute("for",ye),(U(ge)||ge).id=ye,R==="hidden"&&xe.classList.add(`${T}__label--hidden`);const ee=z(A,{labelEl:xe,item:_,labelPosition:R,labelWidth:q});ee?(Ee=ee.tooltipId,ie.appendChild(ee.group)):(R==="left"&&q!=null&&(xe.style.flex=`0 0 ${u(q)}`),ie.appendChild(xe))}else if(R==="hidden"&&!pe){const ye=U(ge);ye&&_.placeholder!=null&&_.placeholder!==""&&ye.setAttribute("aria-label",String(_.placeholder))}const je=A.doc.createElement("div");je.className=`${T}__control`,je.appendChild(ge);const Ne=W(A,je,_,ge),de=S(A,_);let $e=je;if(de&&($e=A.doc.createElement("div"),$e.className=`${T}__field`,$e.appendChild(je),$e.appendChild(de.bar)),ie.appendChild($e),!pe&&_.helpMessage!=null&&_.helpMessage!==""){const ye=A.doc.createElement("div");ye.className=`${T}__help`,ye.textContent=String(_.helpMessage),je.appendChild(ye)}let Oe=null;!pe&&_.preMessage!=null&&_.preMessage!==""&&(Oe=A.doc.createElement("div"),Oe.className=`${T}__pre`,Oe.textContent=String(_.preMessage),je.appendChild(Oe));const ve=A.doc.createElement("div");ve.className=`${T}__validation`,ve.id=oe(A),ve.hidden=!0,je.appendChild(ve),_.width!=null&&(w.colsGapCount!=null?ie.style.setProperty("--lattice-item-flex",ne(_.width,w.colsGapCount)):ie.style.flex=`0 0 ${u(_.width)}`),R==="left"&&($e.style.flex="1 1 auto"),pe&&R==="left"&&q!=null&&!(_.props&&_.props.fullWidth===!0)&&($e.style.paddingLeft=`calc(${u(q)} + var(--lattice-space))`),C(ie,_.css);const se=m.read(ge,_),fe={item:_,el:ie,control:ge,controlWrap:je,def:m,value:se,hidden:_.hidden===!0,ruleHidden:!1,ruleReadOnly:!1,ruleRequired:!1,errorEl:null,validationEl:ve,preEl:Oe,labelEl:xe,labelPosition:R,requiredHint:re,placeholderEl:U(ge),placeholderBase:_.placeholder!=null?String(_.placeholder):"",validation:{pristine:!0,valid:null,code:null,message:null},tooltipId:Ee,lockEl:Ne?Ne.el:null};if(_.value=se,Ee&&fe.control.setAttribute("aria-describedby",Ee),de)for(const ye of de.entries){if(ye.avatar){c(A.doc,ye.el,ye.spec,fe.value,fe.item);continue}typeof ye.spec.onClick=="function"&&G(A,ye.el,"click",()=>{ye.spec.onClick(fe.value,fe.item)})}if(fe.syncLock=()=>{if(!fe.lockEl)return;const ye=fe.item.readOnly===!0||fe.ruleReadOnly;fe.lockEl.hidden=!ye,fe.lockEl.parentElement.classList.toggle(`${T}__control--lock`,ye)},fe.syncAddons=()=>{if(!de)return;const ye=fe.item.disabled===!0;for(const ee of de.entries){if(ee.avatar){c(A.doc,ee.el,ee.spec,fe.value,fe.item);continue}ee.el.tagName==="A"?ee.el.setAttribute("aria-disabled",ye?"true":"false"):ee.el.disabled=ye}},p(fe),fe.hidden&&(ie.hidden=!0),m.custom&&ge.__latticeFormApi){const ye=ge.__latticeFormApi;ye._read=()=>fe.value,ye._write=ee=>{fe.value=ee,fe.item.value=ee,m.write(ge,ee),N(A)},ye._commit=ee=>{K(A,fe,ee)},ye._input=ee=>{A.emitter.emit("input",{name:fe.item.name,value:ee,item:fe.item})}}return typeof m.destroy=="function"&&A.disposers.push(()=>m.destroy(ge)),ue(A,fe),A.order.push(fe),_.name!=null&&A.items.set(_.name,fe),s.appendChild(ie),fe}function j(A,_,s,w={}){const m={labelPosition:_.labelPosition!=null?_.labelPosition:w.labelPosition,labelWidth:_.labelWidth!=null?_.labelWidth:w.labelWidth,requiredHint:w.requiredHint};if(_.kind==="panel")return x(A,_,s,m,{buildChildren:M,applyCss:C});if(_.kind==="spacer"){const q=A.doc.createElement("div");return q.className=`${T}__spacer`,C(q,_.css),_.hidden&&(q.hidden=!0),s.appendChild(q),q}if(_.kind==="separator"){const q=A.doc.createElement("div");q.className=`${T}__separator`,q.setAttribute("role","separator");const re=_.label;if(re!=null){r(A.doc),q.classList.add(`${T}__separator--labelled`);const ie=A.t(re);q.setAttribute("aria-label",ie);const ge=A.doc.createElement("span");ge.className=`${T}__separator-rule`,ge.setAttribute("aria-hidden","true");const pe=A.doc.createElement("span");pe.className=`${T}__separator-label`,pe.textContent=ie;const Se=A.doc.createElement("span");Se.className=`${T}__separator-rule`,Se.setAttribute("aria-hidden","true"),q.appendChild(ge),q.appendChild(pe),q.appendChild(Se)}else q.setAttribute("aria-label",A.t("form.separator"));return C(q,_.css),_.hidden&&(q.hidden=!0),s.appendChild(q),q}if(_.kind==="fieldset"){const q=A.doc.createElement("fieldset");if(q.className=`${T}__fieldset`,_.legend!=null){const ie=A.doc.createElement("legend");ie.className=`${T}__legend`,ie.textContent=_.legend,q.appendChild(ie)}const re=A.doc.createElement("div");return re.className=`${T}__fieldset-body`,_.axis&&re.classList.add(b(_.axis)),_.axis&&M(A,re,_.blocks,_.axis,m),q.appendChild(re),C(q,_.css),_.spacing!=null&&q.style.setProperty("--lattice-form-item-gap",_.spacing),_.hidden&&(q.hidden=!0),s.appendChild(q),q}const R=A.doc.createElement("div");return R.className=b(_.axis),_.axis&&M(A,R,_.blocks,_.axis,m),C(R,_.css),_.spacing!=null&&R.style.setProperty("--lattice-form-item-gap",_.spacing),_.hidden&&(R.hidden=!0),s.appendChild(R),R}function M(A,_,s,w,m={}){const R=w==="cols"?{...m,colsGapCount:s.length-1}:m;for(const q of s)q.kind==="item"?f(A,q,_,R):j(A,q,_,m)}function o(A){const _=A.el;for(;_.firstChild;)_.removeChild(_.firstChild);A.items.clear(),A.order.length=0;const s=A.model;_.classList.add(T,b(s.axis)),_.setAttribute("data-density",s.density),s.colsBreakpoint!==480&&_.style.setProperty("--lattice-cols-container",v(A.doc,s.colsBreakpoint)),A.disposers.push(()=>{_.classList.remove(`${T}__rows`,`${T}__cols`,`${T}__items`)}),C(_,s.css),s.spacing!=null&&_.style.setProperty("--lattice-form-item-gap",s.spacing),s.labelGap!=null&&_.style.setProperty("--lattice-form-label-gap",s.labelGap);const w={labelPosition:s.labelPosition,labelWidth:s.labelWidth,requiredHint:s.requiredHint};s.steps&&s.steps.length?E(A,w):M(A,_,s.blocks,s.axis==="cols"?"cols":"rows",w),N(A)}function E(A,_={}){const s=A.model,w=s.steps,m=A.doc,R=A.el,q=m.createElement("div");R.appendChild(q);const re=$(q,{doc:m,t:A.t,steps:w.map(de=>({id:de.id,label:de.label})),active:0,orientation:s.stepOrientation,onGoTo:de=>{D(A,de)}}),ie=[];let ge=A.order.length;for(const de of w){const $e=m.createElement("div");$e.className=`${T}__step`,$e.hidden=!0,M(A,$e,de.blocks,de.axis,_),de.css&&C($e,de.css),R.appendChild($e);const Oe=A.order.length;$e.__records=A.order.slice(ge,Oe),ge=Oe,ie.push($e)}const pe=m.createElement("div");pe.className=`${T}__step-nav`;const Se=m.createElement("button");Se.type="button",Se.className=`${T}__step-back`,Se.textContent=A.t("form.back");const xe=m.createElement("button");xe.type="button",xe.className=`${T}__step-next`,xe.textContent=A.t("form.next"),pe.appendChild(Se),pe.appendChild(xe),R.appendChild(pe);const Ee={steps:w,bodies:ie,stepper:re,back:Se,next:xe,active:0};A.wizard=Ee;const je=()=>{re.setActive(Ee.active),ie.forEach((de,$e)=>{de.hidden=$e!==Ee.active}),Se.disabled=Ee.active===0,xe.textContent=Ee.active===w.length-1?A.t("form.finish"):A.t("form.next")},Ne=async de=>{const $e=ie[de].__records||[];for(const Oe of $e){if(Oe.item.name==null||Oe.def.kind==="button")continue;const ve=await Promise.resolve(l(A,Oe,Oe.value));if(!ve.ok)return J(A,Oe,ve.message),!1;Y(Oe)}return!0};Ee._stepValid=Ne,Ee._render=je,Se.addEventListener("click",()=>{Z(A)}),xe.addEventListener("click",()=>{P(A)}),je()}async function D(A,_){const s=A.wizard;if(!s)return!1;const w=s.steps.length,m=Number(_);if(!Number.isFinite(m)||m<0||m>=w)return!1;const R=s.active;if(m===R)return!1;if(m>R)for(let q=R;q<m;q+=1){if(!await s._stepValid(q))return s.stepper.setStatus(q,"error"),!1;s.stepper.setStatus(q,"complete")}return s.active=m,s._render(),!0}function P(A){const _=A.wizard;return _?_.active>=_.steps.length-1?_._stepValid(_.active).then(s=>(_.stepper.setStatus(_.active,s?"complete":"error"),s)):D(A,_.active+1):Promise.resolve(!1)}function Z(A){const _=A.wizard;return _?D(A,_.active-1):Promise.resolve(!1)}}),_e("packages/modules/form/emitter.js",function(F,X){"use strict";Object.defineProperty(F,"FORM_EVENTS",{enumerable:!0,get:function(){return T}}),Object.defineProperty(F,"Emitter",{enumerable:!0,get:function(){return v}});const e=new Set(["api","user"]),T=Object.freeze(["beforeChange","change","input","click","focus","blur","validated","complete","customColorsChange"]);class v{#e=new Map;on(u,L){if(typeof L!="function")return()=>{};let O=this.#e.get(u);return O||(O=new Set,this.#e.set(u,O)),O.add(L),()=>this.off(u,L)}off(u,L){const O=this.#e.get(u);O&&O.delete(L)}emit(u,L){const O=this.#e.get(u),k=this.#e.get("*");if((!O||O.size===0)&&(!k||k.size===0))return;const I={...L||null,type:u},N=(g,p)=>{for(const a of[...g])try{a(I)}catch($){console.warn(`lattice-form: a '${p}' handler threw; other handlers were unaffected.`,$)}};O&&O.size&&N(O,u),k&&k.size&&N(k,"*")}emitBefore(u,L,O){const k=this.#e.get(u);if(!k||k.size===0)return!0;let I=!1,N=null;const g=d=>{I=!0,d!=null&&N===null&&(N=String(d))},p=O||L&&L.origin,a={...L||null,type:u,origin:e.has(p)?p:"user",get defaultPrevented(){return I},get reason(){return N},preventDefault(d){g(d)}},$=[...k],y=()=>(I&&N===null&&(N="prevented"),I&&L&&typeof L=="object"&&(L.reason=N),!I),n=[];for(let d=0;d<$.length;d++){const h=$[d];try{const z=h(a);z&&typeof z.then=="function"?n.push(z):z===!1&&g("prevented")}catch(z){g("error"),console.warn(`lattice-form: a '${u}' before-handler threw; the commit was cancelled.`,z)}}return n.length===0?y():Promise.allSettled(n).then(d=>{for(const h of d)h.status==="rejected"?(g("error"),console.warn(`lattice-form: a '${u}' before-handler rejected; the commit was cancelled.`,h.reason)):h.value===!1&&g("prevented");return y()})}clear(){this.#e.clear()}}}),_e("packages/modules/form/bind-router.js",function(F,X){"use strict";Object.defineProperty(F,"routerBinding",{enumerable:!0,get:function(){return T}}),Object.defineProperty(F,"writeRouterRecord",{enumerable:!0,get:function(){return v}});function e(te){return te!==null&&typeof te=="object"&&!Array.isArray(te)}function T(te){const{router:u,route:L,key:O}=te,k=p=>p!=null&&String(p.rowKey??p.id)===String(O);return{kind:"router",record:()=>u&&typeof u.get=="function"?u.get(L,O):void 0,items:()=>[],density:()=>{},subscribe:p=>{if(!u||typeof u.subscribe!="function")return()=>{};const a=y=>{if(y){for(const n of y.add||[])k(n)&&p(null,null,n);for(const n of y.update||[])k(n)&&p(null,null,n)}},$=u.subscribe(L,a);return typeof $=="function"?$:()=>{}},save:p=>v(te,p)}}function v(te,u){const{router:L,route:O,key:k,onSave:I}=te;if(!Object.keys(u||{}).length)return!0;const g=()=>L&&typeof L.get=="function"?L.get(O,k):void 0,p=d=>{!L||typeof L.apply!="function"||L.apply([{op:"upsert",row:d}])},a=()=>{!L||typeof L.apply!="function"||(e($)?L.apply([{op:"upsert",row:$}]):L.apply([{op:"delete",row:y}]))},$=g(),y={...e($)?$:{},...u};if(p(y),typeof I!="function")return!0;let n;try{n=I(u,y)}catch{return a(),!1}return n&&typeof n.then=="function"?n.then(()=>!0,()=>(a(),!1)):!0}}),_e("packages/modules/form/bind.js",function(F,X){"use strict";Object.defineProperty(F,"resolveBind",{enumerable:!0,get:function(){return $}}),Object.defineProperty(F,"isBound",{enumerable:!0,get:function(){return y}}),Object.defineProperty(F,"applyBinding",{enumerable:!0,get:function(){return n}});const T=X("packages/modules/form/model.js").DENSITIES,te=X("packages/modules/form/bind-router.js").routerBinding,u=new Set(["number","currency","percent","integer","decimal","duration"]);function L(d){const h=d&&d.dataType;if(h&&(h.unitConfig||h.temperatureConfig))return!0;const z=d&&d.edit?d.edit.editor:null;return z==="unit"||z==="temperature"}function O(d){return d!==null&&typeof d=="object"&&!Array.isArray(d)}function k(d){const h=d&&d.edit?d.edit.editor:null,z=d&&d.type;return h==="checkbox"||z==="boolean"?"checkbox":h==="number"||z!=null&&u.has(z)||L(d)?"number":"input"}function I(d){const h=d&&d.columns&&typeof d.columns.all=="function"?d.columns.all():[],z=[];for(const W of h){if(!W||!W.field||W.generated||W.computed)continue;const S={type:k(W),name:W.field,label:W.title,format:W.format},c=W.dataType,x=c&&c.unitConfig,t=c&&c.temperatureConfig;x?Object.assign(S,{system:x.system,unit:x.unit,binary:x.binary,decimals:x.decimals,minDecimals:x.minDecimals,maxDecimals:x.maxDecimals,display:x.display,group:x.group,space:x.space,placement:x.placement,significantFigures:x.significantFigures,compound:x.compound,nullDisplay:x.nullDisplay}):t&&Object.assign(S,{scale:t.scale,display:t.display,decimals:t.decimals,minDecimals:t.minDecimals,maxDecimals:t.maxDecimals,space:t.space,nullDisplay:t.nullDisplay}),z.push(S)}return z}function N(d,h){const z=d&&d.columns&&typeof d.columns.all=="function"?d.columns.all():[];for(const W of z)if(W&&W.field===h)return W;return null}function g(d){const h=d&&typeof d.get=="function"?d.get("density"):void 0;return T.includes(h)?h:void 0}function p(d){const{grid:h,rowKey:z}=d,W=()=>{const t=h&&h.rows&&typeof h.rows.byKey=="function"?h.rows.byKey(z):null;return t&&O(t.data)?{...t.data}:{}},S=t=>{const i=N(h,t);return i?i.id:t};return{kind:"grid",record:W,items:()=>I(h),density:()=>g(h),subscribe:t=>{if(!h||typeof h.on!="function")return()=>{};const i=r=>{if(!r||r.key!==z)return;const C=h.columns&&typeof h.columns.get=="function"?h.columns.get(r.colId):null,b=C?C.field:r.colId;b&&t(b,r.value)};return h.on("cell:changed",i)},save:t=>{const i=Object.keys(t);if(!i.length)return!0;if(!h||!h.edit||typeof h.edit.setCells!="function")return!1;const r=i.map(b=>({key:z,colId:S(b),value:t[b]})),C=h.edit.setCells(r,"cell",{origin:"form"});return C&&typeof C.then=="function"?C.then(b=>b>0):C>0}}}function a(d){return{kind:"values",record:()=>({...d}),items:()=>[],density:()=>{},subscribe:()=>()=>{},save:W=>{for(const S of Object.keys(W))d[S]=W[S];return!0}}}function $(d){const h=d&&d.bind;return h==null||typeof h!="object"?null:h.grid!=null&&O(h.grid)?p(h):h.router!=null?te(h):a(h)}function y(d){return!!(d&&d.bind!=null&&typeof d.bind=="object")}function n(d,h,z){d.bound=z;const W=(x,t)=>{const i=h.getItem(x);i&&i.setValue(t)},S=(x,t,i)=>{if(i!=null){for(const r of Object.keys(i))if(d.items.has(r)){if(d.dirty.has(r)){d.conflicts.add(r);continue}d.baseline[r]=i[r],W(r,i[r])}return}if(d.items.has(x)){if(d.dirty.has(x)){d.conflicts.add(x);return}d.baseline[x]=t,W(x,t)}},c=z.record();if(c!=null&&typeof c=="object")for(const x of Object.keys(c))d.items.has(x)&&(d.baseline[x]=c[x],W(x,c[x]));d.disposers.push(h.on("change",x=>{d.dirty.add(x.name),d.conflicts.delete(x.name)})),d.disposers.push(z.subscribe(S))}}),_e("packages/modules/form/controls/input.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=Object.freeze(["text","email","password","url"]),te=Object.freeze({viewBox:"0 0 16 16",paths:["M8 3.2c3.3 0 6 3 6.6 4.5C14 9.3 11.3 12.3 8 12.3S2 9.3 1.4 7.7C2 6.2 4.7 3.2 8 3.2Zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z"],paint:"fill"}),u=Object.freeze({viewBox:"0 0 16 16",paths:["M2.2 2.9 13.1 13.8M8 3.2c3.3 0 6 3 6.6 4.5a9.4 9.4 0 0 1-1.9 2.4M5 4.2A9 9 0 0 0 1.4 7.7C2 9.3 4.7 12.3 8 12.3c.9 0 1.7-.2 2.5-.5M6.3 6a2.5 2.5 0 0 0 3.4 3.5"],paint:"stroke"});function L(g){return v.includes(g)?g:"text"}function O(g){return!(g.props&&g.props.reveal===!1)}function k(g,p){const a=p?u:te,$=g.createElementNS("http://www.w3.org/2000/svg","svg");$.setAttribute("viewBox",a.viewBox),$.setAttribute("focusable","false"),$.setAttribute("aria-hidden","true"),a.paint==="stroke"?($.setAttribute("fill","none"),$.setAttribute("stroke","currentColor"),$.setAttribute("stroke-width","1.5"),$.setAttribute("stroke-linecap","round"),$.setAttribute("stroke-linejoin","round")):$.setAttribute("fill","currentColor");for(const y of a.paths){const n=g.createElementNS("http://www.w3.org/2000/svg","path");n.setAttribute("d",y),$.appendChild(n)}return $}function I(g){return g.__latPassword?g.__latPassword.input:g}function N(g,p,a){const $=p&&p.defaultView,y=$&&$.Event,n=y?new y(a,{bubbles:!0}):{type:a,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};g.dispatchEvent(n)}T("input",{kind:"field",build(g,p){const a=p.doc,$=L(g.subtype);if($!=="password"||!O(g)){const c=a.createElement("input");return c.type=$,g.name&&(c.name=g.name),g.placeholder!=null&&(c.placeholder=String(g.placeholder)),c.value=g.value==null?"":String(g.value),c}const y=a.createElement("div");y.className="lat-form__password";const n=a.createElement("input");n.type="password",g.name&&(n.name=g.name),g.placeholder!=null&&(n.placeholder=String(g.placeholder)),n.value=g.value==null?"":String(g.value),y.appendChild(n);const d=a.createElement("button");d.type="button",d.className="lat-form__password-btn",d.setAttribute("aria-pressed","false");const h=p.t("form.password.show");d.setAttribute("aria-label",h),d.title=h,d.appendChild(k(a,!1)),y.appendChild(d);const z={revealed:!1,disabled:!1,input:n,btn:d};y.__latPassword=z;const W=c=>{z.revealed=c===!0,n.type=z.revealed?"text":"password",d.setAttribute("aria-pressed",z.revealed?"true":"false");const x=p.t(z.revealed?"form.password.hide":"form.password.show");d.setAttribute("aria-label",x),d.title=x,d.replaceChild(k(a,z.revealed),d.firstChild)};z.setRevealed=W,d.addEventListener("click",()=>{z.disabled||W(!z.revealed)});let S=!1;return y.addEventListener("focusin",()=>{S||(S=!0,N(y,a,"focus"))}),y.addEventListener("focusout",c=>{y.contains(c.relatedTarget)||(S=!1,W(!1),N(y,a,"blur"))}),y},read(g){return I(g).value},write(g,p){I(g).value=p==null?"":String(p)},state(g,p){const a=I(g);a.disabled=p.disabled===!0,a.readOnly=p.readOnly===!0;const $=g.__latPassword;$&&($.disabled=p.disabled===!0,$.btn&&($.btn.disabled=$.disabled))},reset(g){const p=g.__latPassword;p&&typeof p.setRevealed=="function"&&p.setRevealed(!1)}})}),_e("packages/core/src/internal/predicates.js",function(F,X){"use strict";Object.defineProperty(F,"isObject",{enumerable:!0,get:function(){return e}}),Object.defineProperty(F,"isFunction",{enumerable:!0,get:function(){return T}}),Object.defineProperty(F,"isNil",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"isBlank",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"isCtor",{enumerable:!0,get:function(){return u}});function e(L){return L!==null&&typeof L=="object"&&!Array.isArray(L)}function T(L){return typeof L=="function"}function v(L){return L==null}function te(L){return L==null||L===""}function u(L){return typeof L!="function"?!1:/^class[\s{]/.test(Function.prototype.toString.call(L))?!0:!!(L.prototype&&Object.getOwnPropertyNames(L.prototype).length>1)}}),_e("packages/core/src/internal/warn.js",function(F,X){"use strict";Object.defineProperty(F,"reportedWarnings",{enumerable:!0,get:function(){return k}}),Object.defineProperty(F,"warnOnce",{enumerable:!0,get:function(){return N}}),Object.defineProperty(F,"infoOnce",{enumerable:!0,get:function(){return g}}),Object.defineProperty(F,"resetWarnings",{enumerable:!0,get:function(){return p}}),Object.defineProperty(F,"fail",{enumerable:!0,get:function(){return a}}),Object.defineProperty(F,"invariant",{enumerable:!0,get:function(){return $}}),Object.defineProperty(F,"DEV",{enumerable:!0,get:function(){return y}});const e=new Set,T=2e3;function v(n){if(e.add(n),e.size>T){const d=e.values().next().value;d!==void 0&&e.delete(d)}}const te=[],u=500;function L(n,d,h){te.push({key:n,level:d,message:h.map(z=>typeof z=="string"?z:O(z)).join(" "),at:Date.now()}),te.length>u&&te.shift()}function O(n){if(n instanceof Error)return n.message;try{return JSON.stringify(n)}catch{return String(n)}}function k(){return te.map(n=>({...n}))}function I(n){if(n.length===0||typeof n[0]!="string")return n;const d=n[0].replace(/^\[lattice\]\s*/,"");return d===n[0]?n:[d,...n.slice(1)]}function N(n,...d){if(e.has(n))return;v(n);const h=I(d);L(n,"warn",h),console.warn("[lattice]",...h)}function g(n,...d){if(e.has(n))return;v(n);const h=I(d);L(n,"info",h),console.info("[lattice]",...h)}function p(){e.clear(),te.length=0}function a(n,d){const h=new Error(`[lattice] ${n}`);throw d!==void 0&&(h.cause=d),h}function $(n,d){n||a(d)}const y=(()=>{try{return!(typeof process<"u"&&process.env&&process.env.NODE_ENV==="production")}catch{return!0}})()}),_e("packages/core/src/format/mask.js",function(F,X){"use strict";Object.defineProperty(F,"splitSections",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"parseSection",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"compileMask",{enumerable:!0,get:function(){return L}});const e=new Set(["0","#","?",",","."]),T="\0";function v(k){const I=[];let N="",g=!1;for(let p=0;p<k.length;p++){const a=k[p];if(a==="\\"){N+=a+(k[p+1]??""),p+=1;continue}if(a==='"'){g=!g,N+=a;continue}if(a===";"&&!g){I.push(N),N="";continue}N+=a}return I.push(N),I}function te(k){let I="",N="",g="",p=1,a=!1,$=!1;const y=t=>{$?N+=t:I+=t};for(let t=0;t<k.length;t++){const i=k[t];if(i==="\\"){y(k[t+1]??""),t+=1;continue}if(i==='"'){const r=k.indexOf('"',t+1);y(r===-1?k.slice(t+1):k.slice(t+1,r)),t=r===-1?k.length:r;continue}if(i==="%"){p*=100,y("%");continue}if(i==="@"){a=!0,y("\0");continue}if(e.has(i)){g+=i,$=!0;continue}y(i)}let n=-1;for(let t=g.length-1;t>=0;t--){const i=g[t];if(i==="0"||i==="#"||i==="?"){n=t;break}}let d=!1,h="";for(let t=0;t<g.length;t++){const i=g[t];if(i===","){t>n?p/=1e3:d=!0;continue}h+=i}const z=h.indexOf("."),W=z===-1?h:h.slice(0,z),S=z===-1?"":h.slice(z+1);let c=0;for(const t of W)t==="0"&&(c+=1);let x=0;for(const t of S)t==="0"&&(x+=1);return{prefix:I,suffix:N,minInt:c,minDec:x,maxDec:S.length,grouping:d,scale:p,hasNumber:n!==-1,isText:a}}function u(k,I){const N=new Intl.NumberFormat(I,{minimumIntegerDigits:Math.max(k.minInt,1),minimumFractionDigits:k.minDec,maximumFractionDigits:Math.max(k.maxDec,k.minDec),useGrouping:k.grouping}),{prefix:g,suffix:p,scale:a,hasNumber:$}=k;return y=>{if(!$)return g+p;const n=a===1?y:y*a;return g+N.format(n)+p}}function L(k,I){const g=v(String(k)).map(te),p=g.map(h=>u(h,I)),a=0,$=g.length>1?1:-1,y=g.length>2?2:-1,n=g.length>3?3:-1,d=h=>{if(h==null||h==="")return"";if(typeof h!="number"||Number.isNaN(h)){const z=Number(h);if(Number.isNaN(z))return n===-1?String(h):(g[n].prefix+g[n].suffix).split("\0").join(String(h));h=z}return h===0&&y!==-1?p[y](0):h<0&&$!==-1?p[$](-h):p[a](h)};return d.spec={mask:k},{format:d,ooxml:O(String(k))}}function O(k){return k.trim()}}),_e("packages/core/src/format/pattern.js",function(F,X){"use strict";Object.defineProperty(F,"parseNumberPattern",{enumerable:!0,get:function(){return u}});const T=X("packages/core/src/format/mask.js").splitSections;function v(L){let O="",k="",I="",N="",g=!1,p=!1,a=!1,$=!1;const y=d=>{a?k+=d:O+=d};for(let d=0;d<L.length;d++){const h=L[d];if(h==="\\"){y(L[d+1]??""),d+=1;continue}if(h==='"'){const z=L.indexOf('"',d+1);y(z===-1?L.slice(d+1):L.slice(d+1,z)),d=z===-1?L.length:z;continue}if(h==="%"){p=!0;continue}if(h==="0"||h==="#"){a=!0,$?N+=h:I+=h;continue}if(h===","){$||(g=!0);continue}if(h==="."&&!$){$=!0;continue}y(h)}if(!a)return{hasDigit:!1,prefix:O,suffix:k,minDec:0,maxDec:0,grouping:!1,percent:p};let n=0;for(const d of N)d==="0"&&(n+=1);return{hasDigit:!0,prefix:O,suffix:k,minDec:n,maxDec:N.length,grouping:g,percent:p}}function te(L,O){const k=O.trim(),I=L.trim();return k.startsWith("(")&&k.endsWith(")")&&k.slice(1,-1).trim()===I?"parentheses":k.endsWith("-")?"suffix":"minus"}function u(L){if(typeof L!="string")return null;const O=T(L);if(O.length===0)return null;const k=v(O[0]);if(!k.hasDigit)return null;const I={style:k.percent?"percent":"decimal",prefix:k.prefix,suffix:k.suffix,minDecimals:k.minDec,maxDecimals:Math.max(k.maxDec,k.minDec),thousandsSeparator:k.grouping?void 0:!1};if(O.length>1&&(I.negative=te(O[0],O[1])),O.length>2){const N=v(O[2]);N.hasDigit||(I.zeroDisplay=N.prefix+N.suffix)}return I}}),_e("packages/core/src/format/number.js",function(F,X){"use strict";Object.defineProperty(F,"compileNumber",{enumerable:!0,get:function(){return O}});const T=X("packages/core/src/internal/predicates.js").isNil,te=X("packages/core/src/internal/warn.js").warnOnce,L=X("packages/core/src/format/pattern.js").parseNumberPattern;function O(k,I){const N=typeof k=="string"?{pattern:k}:k||{};let g=N;if(typeof N.pattern=="string"){const K=L(N.pattern);if(K){const{pattern:l,...H}=N;g={...K,...H}}else te(`format:pattern:${N.pattern}`,`invalid number format pattern "${N.pattern}"; the value will use the default number format`)}const p=g.locale||I||void 0,a=g.style||"decimal",$=typeof g.scale=="number"?g.scale:1,y=g.nullDisplay??"",n=g.zeroDisplay,d=g.prefix||"",h=g.suffix||"",z=g.negative||"minus",W=g.signed===!0,S={style:a,notation:g.notation||"standard"};a==="currency"&&(S.currency=g.currency||"USD",g.currencyDisplay&&(S.currencyDisplay=g.currencyDisplay)),typeof g.decimals=="number"?(S.minimumFractionDigits=g.decimals,S.maximumFractionDigits=g.decimals):(typeof g.minDecimals=="number"&&(S.minimumFractionDigits=g.minDecimals),typeof g.maxDecimals=="number"&&(S.maximumFractionDigits=g.maxDecimals),S.minimumFractionDigits>(S.maximumFractionDigits??20)&&(S.maximumFractionDigits=S.minimumFractionDigits)),g.thousandsSeparator===!1&&(S.useGrouping=!1),S.notation==="compact"&&(S.compactDisplay=g.compactDisplay||"short");const c=new Intl.NumberFormat(p,S),x=typeof g.thousandsSeparator=="string"?g.thousandsSeparator:null,t=typeof g.decimalSeparator=="string"?g.decimalSeparator:null;let i=",",r=".";if(x||t)for(const K of c.formatToParts(12345.6))K.type==="group"?i=K.value:K.type==="decimal"&&(r=K.value);const C=K=>{let l=K;return x&&(l=l.split(i).join("")),t&&(l=l.split(r).join("")),x&&(l=l.split("").join(x)),t&&(l=l.split("").join(t)),l},b=!!(x||t),G=d!==""&&a==="currency",oe=K=>{let l;if(G){const H=c.formatToParts(K);let J=!1;l="";for(const Y of H)l+=Y.value,!J&&Y.type==="currency"&&(l+=d,J=!0);J||(l=d+l)}else l=d+c.format(K);return b&&(l=C(l)),l+h},U=K=>{if(T(K)||K==="")return y;const l=typeof K=="number"?K:Number(K);if(Number.isNaN(l))return y;const H=$===1?l:l*$;return H===0&&n!==void 0?n:H<0?z==="parentheses"?`(${oe(-H)})`:z==="suffix"?`${oe(-H)}-`:oe(H):W&&H>0?`+${oe(H)}`:oe(H)};return U.negativeClass=g.negativeClass||null,U.spec=g,U}}),_e("packages/core/src/columns/types/unit.js",function(F,X){"use strict";Object.defineProperty(F,"defineUnit",{enumerable:!0,get:function(){return L}}),Object.defineProperty(F,"UNIT_SYSTEMS",{enumerable:!0,get:function(){return O}}),Object.defineProperty(F,"registerUnitSystem",{enumerable:!0,get:function(){return g}}),Object.defineProperty(F,"unitSystemNames",{enumerable:!0,get:function(){return p}}),Object.defineProperty(F,"unitsOf",{enumerable:!0,get:function(){return a}}),Object.defineProperty(F,"findUnit",{enumerable:!0,get:function(){return n}}),Object.defineProperty(F,"localeSeparators",{enumerable:!0,get:function(){return x}}),Object.defineProperty(F,"parseUnit",{enumerable:!0,get:function(){return U}}),Object.defineProperty(F,"formatUnit",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(F,"createUnitType",{enumerable:!0,get:function(){return f}}),Object.defineProperty(F,"default",{enumerable:!0,get:function(){return j}});const T=X("packages/core/src/internal/predicates.js").isNil,te=X("packages/core/src/internal/warn.js").warnOnce;function u(M,o,E,D){return Object.freeze({symbol:M,factor:o,aliases:Object.freeze(E||[]),binary:!!(D&&D.binary),prefix:D&&D.prefix||null,auto:!(D&&D.auto===!1)})}function L(M,o,E,D){return u(M,o,E,D)}const O=Object.freeze({data:Object.freeze([u("B",1,["byte","bytes"]),u("kB",1e3,["kilobyte","kilobytes"],{prefix:"k"}),u("KiB",1024,["kibibyte","kibibytes"],{binary:!0,prefix:"k"}),u("MB",1e6,["megabyte","megabytes"],{prefix:"m"}),u("MiB",1024**2,["mebibyte","mebibytes"],{binary:!0,prefix:"m"}),u("GB",1e9,["gigabyte","gigabytes"],{prefix:"g"}),u("GiB",1024**3,["gibibyte","gibibytes"],{binary:!0,prefix:"g"}),u("TB",1e12,["terabyte","terabytes"],{prefix:"t"}),u("TiB",1024**4,["tebibyte","tebibytes"],{binary:!0,prefix:"t"}),u("PB",1e15,["petabyte","petabytes"],{prefix:"p"})]),bitrate:Object.freeze([u("bps",1,["bit","bits","bit/s","b/s"]),u("kbps",1e3,["kbit","kbits","kbit/s","kb/s","kilobit","kilobits"],{prefix:"k"}),u("Mbps",1e6,["mbit","mbits","mbit/s","mb/s","megabit","megabits"],{prefix:"m"}),u("Gbps",1e9,["gbit","gbits","gbit/s","gb/s","gigabit","gigabits"],{prefix:"g"}),u("Tbps",1e12,["tbit","tbits","tbit/s","tb/s","terabit","terabits"],{prefix:"t"})]),length:Object.freeze([u("nm",1e-9,["nanometre","nanometres","nanometer","nanometers"]),u("µm",1e-6,["um","micrometre","micrometres","micrometer","micrometers","micron","microns"]),u("mm",.001,["millimetre","millimetres","millimeter","millimeters"]),u("cm",.01,["centimetre","centimetres","centimeter","centimeters"]),u("in",.0254,["inch","inches"],{auto:!1}),u("ft",.3048,["foot","feet"],{auto:!1}),u("yd",.9144,["yard","yards"],{auto:!1}),u("m",1,["metre","metres","meter","meters"]),u("km",1e3,["kilometre","kilometres","kilometer","kilometers"]),u("mi",1609.344,["mile","miles"],{auto:!1}),u("nmi",1852,["nauticalmile","nauticalmiles"],{auto:!1})]),mass:Object.freeze([u("mg",.001,["milligram","milligrams"]),u("g",1,["gram","grams"]),u("oz",28.349523125,["ounce","ounces"],{auto:!1}),u("lb",453.59237,["pound","pounds","lbs"],{auto:!1}),u("kg",1e3,["kilogram","kilograms"]),u("st",6350.29318,["stone"],{auto:!1}),u("t",1e6,["tonne","tonnes","ton"],{auto:!1}),u("ton (US)",907184.74,["ton","shortton"],{auto:!1}),u("ton (UK)",10160469088e-4,["ton","longton"],{auto:!1})]),duration:Object.freeze([u("ns",1e-9,["nsec","nsecs","nanosecond","nanoseconds"]),u("µs",1e-6,["us","usec","usecs","microsecond","microseconds"]),u("ms",.001,["msec","msecs","millisecond","milliseconds"]),u("s",1,["sec","secs","second","seconds"]),u("m",60,["min","mins","minute","minutes"]),u("h",3600,["hr","hrs","hour","hours"]),u("d",86400,["day","days"])]),speed:Object.freeze([u("mm/s",.001,["millimetre/s","millimeter/s"]),u("ft/s",.3048,["fps","foot/s","feet/s"],{auto:!1}),u("km/h",1/3.6,["kph","kmh","kilometre/h","kilometer/h"],{auto:!1}),u("mph",.44704,["mile/h","miles/h"],{auto:!1}),u("kn",1852/3600,["knot","knots"],{auto:!1}),u("m/s",1,["metre/s","meter/s","mps"]),u("km/s",1e3,["kilometre/s","kilometer/s"])]),acceleration:Object.freeze([u("mm/s²",.001,["mm/s2"]),u("ft/s²",.3048,["ft/s2"],{auto:!1}),u("m/s²",1,["m/s2","metre/s2","meter/s2"]),u("g",9.80665,["gee","gravity"],{auto:!1})]),area:Object.freeze([u("mm²",1e-6,["mm2"]),u("cm²",1e-4,["cm2"]),u("in²",64516e-8,["in2","sqin"],{auto:!1}),u("ft²",.09290304,["ft2","sqft"],{auto:!1}),u("yd²",.83612736,["yd2","sqyd"],{auto:!1}),u("m²",1,["m2","sqm"]),u("ha",1e4,["hectare","hectares"],{auto:!1}),u("ac",4046.8564224,["acre","acres"],{auto:!1}),u("km²",1e6,["km2","sqkm"])]),volume:Object.freeze([u("µL",1e-6,["ul","microlitre","microliter"]),u("mL",.001,["millilitre","milliliter"]),u("fl oz (US)",.0295735295625,["fl oz","usfloz"],{auto:!1}),u("fl oz (imp)",.0284130625,["fl oz","impfloz"],{auto:!1}),u("L",1,["litre","litres","liter","liters"]),u("gal (US)",3.785411784,["gal","usgal","usgallon"],{auto:!1}),u("gal (imp)",4.54609,["gal","impgal","impgallon"],{auto:!1}),u("m³",1e3,["m3","cubicmetre","cubicmeter","kl"],{auto:!1}),u("bbl",158.987294928,["barrel","barrels"],{auto:!1})]),energy:Object.freeze([u("eV",1602176634e-28,["electronvolt","electronvolts"],{auto:!1}),u("J",1,["joule","joules"]),u("cal",4.184,["calorie","calories"],{auto:!1}),u("kJ",1e3,["kilojoule","kilojoules"]),u("BTU",1055.05585262,["btu"],{auto:!1}),u("kcal",4184,["kilocalorie","kilocalories","Cal"],{auto:!1}),u("MJ",1e6,["megajoule","megajoules"]),u("kWh",36e5,["kilowatthour","kilowatthours"],{auto:!1}),u("GJ",1e9,["gigajoule","gigajoules"]),u("MWh",36e8,["megawatthour","megawatthours"],{auto:!1})]),power:Object.freeze([u("mW",.001,["milliwatt","milliwatts"]),u("W",1,["watt","watts"]),u("BTU/h",1055.05585262/3600,["btuh","btu/h"],{auto:!1}),u("kW",1e3,["kilowatt","kilowatts"]),u("hp",745.6998715822702,["horsepower"],{auto:!1}),u("MW",1e6,["megawatt","megawatts"]),u("GW",1e9,["gigawatt","gigawatts"])]),force:Object.freeze([u("mN",.001,["millinewton","millinewtons"]),u("N",1,["newton","newtons"]),u("lbf",4.4482216152605,["poundforce"],{auto:!1}),u("kgf",9.80665,["kilogramforce"],{auto:!1}),u("kN",1e3,["kilonewton","kilonewtons"]),u("MN",1e6,["meganewton","meganewtons"])]),pressure:Object.freeze([u("Pa",1,["pascal","pascals"]),u("mbar",100,["millibar"],{auto:!1}),u("inH₂O",249.0889,["inh2o"],{auto:!1}),u("mmHg",133.322387415,["torr"],{auto:!1}),u("kPa",1e3,["kilopascal","kilopascals"]),u("inHg",3386.388640341,["inhg"],{auto:!1}),u("psi",6894.757293168361,["lbf/in2"],{auto:!1}),u("bar",1e5,[],{auto:!1}),u("atm",101325,["atmosphere","atmospheres"],{auto:!1}),u("MPa",1e6,["megapascal","megapascals"]),u("GPa",1e9,["gigapascal","gigapascals"])]),torque:Object.freeze([u("N·m",1,["nm","n.m","newtonmetre","newtonmeter"]),u("lbf·ft",1.3558179483314003,["lbfft","lbf.ft","ftlb","ft-lb"],{auto:!1}),u("kN·m",1e3,["knm","kn.m"],{auto:!1}),u("MN·m",1e6,["mnm","mn.m"],{auto:!1})]),density:Object.freeze([u("kg/m³",1,["kg/m3"]),u("lb/ft³",16.01846337396014,["lb/ft3","pcf"],{auto:!1}),u("g/cm³",1e3,["g/cm3","g/ml","kg/l"],{auto:!1}),u("t/m³",1e3,["t/m3"],{auto:!1})]),flow:Object.freeze([u("L/min",1/6e4,["lpm","l/min"],{auto:!1}),u("m³/h",1/3600,["m3/h","cmh"],{auto:!1}),u("gpm (US)",.003785411784/60,["gpm","usgpm"],{auto:!1}),u("gpm (imp)",.00454609/60,["gpm","impgpm"],{auto:!1}),u("cfm",.0004719474432,["ft3/min"],{auto:!1}),u("L/s",.001,["lps","l/s"],{auto:!1}),u("m³/s",1,["m3/s","cms"])]),angle:Object.freeze([u("″",Math.PI/648e3,["arcsec","arcsecond","arcseconds"],{auto:!1}),u("′",Math.PI/10800,["arcmin","arcminute","arcminutes"],{auto:!1}),u("mrad",.001,["milliradian","milliradians"],{auto:!1}),u("mil",Math.PI/3200,["nato-mil"],{auto:!1}),u("°",Math.PI/180,["deg","degree","degrees"],{auto:!1}),u("gon",Math.PI/200,["grad","gradian","gradians"],{auto:!1}),u("rad",1,["radian","radians"]),u("turn",2*Math.PI,["rev","revolution","revolutions"],{auto:!1})]),angularVelocity:Object.freeze([u("°/s",Math.PI/180,["degps","deg/s","degrees/s"],{auto:!1}),u("rad/s",1,["radps","radians/s"]),u("rpm",2*Math.PI/60,["rev/min","r/min","revolutions/min"],{auto:!1}),u("rps",2*Math.PI,["rev/s","r/s","revolutions/s"],{auto:!1})]),fraction:Object.freeze([u("ppt",1e-12,["partspertrillion"],{auto:!1}),u("ppb",1e-9,["partsperbillion"]),u("ppm",1e-6,["partspermillion"]),u("bp",1e-4,["bps-finance","basispoint","basispoints","bips"],{auto:!1}),u("‰",.001,["permille","permil"],{auto:!1}),u("%",.01,["pct","percent"]),u("×",1,["x","ratio","times"])]),molarity:Object.freeze([u("pM",1e-12,["picomolar","picomolarity"]),u("nM",1e-9,["nanomolar","nanomolarity"]),u("µM",1e-6,["um-molar","micromolar","micromolarity"]),u("mM",.001,["millimolar","millimolarity"]),u("M",1,["molar","mol/l","mol/L","molarity"]),u("mol/m³",.001,["mol/m3"],{auto:!1})]),massFlow:Object.freeze([u("mg/s",1e-6,["milligrams/s"]),u("g/s",.001,["grams/s"]),u("kg/h",1/3600,["kilograms/h","kgph"],{auto:!1}),u("kg/s",1,["kilograms/s","kgps"]),u("t/h",1e3/3600,["tonnes/h","tph"],{auto:!1}),u("lb/h",.45359237/3600,["pounds/h","pph"],{auto:!1}),u("t/s",1e3,["tonnes/s"],{auto:!1})]),viscosity:Object.freeze([u("µPa·s",1e-6,["upas","micropascalsecond"]),u("cP",.001,["centipoise"],{auto:!1}),u("mPa·s",.001,["mpas","millipascalsecond"]),u("P",.1,["poise"],{auto:!1}),u("Pa·s",1,["pas","pascalsecond"])]),kinematicViscosity:Object.freeze([u("cSt",1e-6,["centistokes","centistoke"]),u("mm²/s",1e-6,["mm2/s"],{auto:!1}),u("St",1e-4,["stokes","stoke"],{auto:!1}),u("m²/s",1,["m2/s"])]),thermalConductivity:Object.freeze([u("mW/(m·K)",.001,["mw/mk"]),u("W/(m·K)",1,["w/mk","wmk"]),u("kW/(m·K)",1e3,["kw/mk"],{auto:!1}),u("BTU/(hr·ft·°F)",1.730734666,["btu/hrftf"],{auto:!1})]),specificHeat:Object.freeze([u("J/(kg·K)",1,["j/kgk","jkgk"]),u("kJ/(kg·K)",1e3,["kj/kgk"]),u("cal/(g·°C)",4184,["cal/gc"],{auto:!1})]),doseRate:Object.freeze([u("nSv/h",1e-9,["nsvh"]),u("µSv/h",1e-6,["usv/h","usvh"]),u("mSv/h",.001,["msvh"]),u("Sv/h",1,["svh"]),u("mSv/a",.001/8766,["msv/year","msvpa"],{auto:!1})])}),k=Symbol("ambiguous"),I=new Map,N=new Map;function g(M,o){const E=String(M||"").trim();if(!E)throw new Error("[lattice] a unit system needs a name");if(O[E]||N.has(E))throw new Error(`[lattice] unit system "${E}" already exists`);const D=[...o||[]];if(!D.length)throw new Error(`[lattice] unit system "${E}" has no units`);if(!D.some(Z=>Z.factor===1))throw new Error(`[lattice] unit system "${E}" has no base unit (none with factor 1)`);const P=new Set;for(const Z of D){if(P.has(Z.symbol))throw new Error(`[lattice] unit system "${E}" declares "${Z.symbol}" twice`);P.add(Z.symbol)}return N.set(E,Object.freeze(D)),I.delete(E),E}function p(){return[...Object.keys(O),...N.keys()]}function a(M){const o=$(M);return o?o.units:[]}function $(M){const o=String(M||""),E=I.get(o);if(E!==void 0)return E;const D=O[o]||N.get(o);if(!D)return I.set(o,null),null;const P=Object.freeze([...D].sort((w,m)=>w.factor-m.factor)),Z=new Map,A=new Map,_=(w,m)=>{const R=Z.get(w);R===void 0?Z.set(w,m):R!==m&&Z.set(w,k)};for(const w of P){_(w.symbol.toLowerCase(),w);for(const m of w.aliases)_(m.toLowerCase(),w);if(w.prefix){const m=A.get(w.prefix)||[];m.push(w),A.set(w.prefix,m)}}const s={units:P,byToken:Z,byPrefix:A,decimal:P.filter(w=>!w.binary&&w.auto),binary:P.some(w=>w.binary)?P.filter(w=>(w.binary||w.factor===1)&&w.auto):null};return I.set(o,s),s}function y(M,o){return o&&M.binary||M.decimal}function n(M,o){const E=$(M);if(!E||T(o))return null;const D=E.units.find(Z=>Z.symbol===String(o));if(D)return D;const P=E.byToken.get(String(o).trim().toLowerCase());return P&&P!==k?P:null}const d=new WeakMap;function h(M){const o=M||{};if(typeof o=="object"&&o!==null){const Z=d.get(o);if(Z!==void 0)return Z}const E=o.system||"data",D=$(E);let P=null;if(!D)te(`unit:system:${E}`,`unknown unit system "${E}"; known systems are ${p().join(", ")}`);else{let Z=o.unit?n(E,o.unit):null;Z||(o.unit&&te(`unit:unit:${E}:${o.unit}`,`unknown unit "${o.unit}" in system "${E}"; falling back to ${D.units[0].symbol}`),Z=D.units.find(A=>A.factor===1)||D.units[0]),P={index:D,base:Z,binary:o.binary===!0}}return typeof o=="object"&&o!==null&&d.set(o,P),P}const z=new WeakMap;function W(M,o){if(!M||!o||!Array.isArray(M.compound)||M.compound.length===0)return null;const E=z.get(M);if(E!==void 0)return E;const D=new Set,P=[];for(const A of M.compound){const _=n(M.system||"data",A);if(!_){te(`unit:compound:${M.system}:${A}`,`unknown compound unit "${A}" in system "${M.system||"data"}"; ignoring it`);continue}D.has(_.symbol)||(D.add(_.symbol),P.push(_))}P.sort((A,_)=>_.factor-A.factor);const Z=P.length>=2?P:null;return z.set(M,Z),Z}function S(M,o,E){return o===E||o.factor===E.factor?M:M*o.factor/E.factor}const c=new Map;function x(M){const o=M||"",E=c.get(o);if(E)return E;const D={group:",",decimal:"."};try{for(const P of new Intl.NumberFormat(M||void 0).formatToParts(12345.6))P.type==="group"?D.group=P.value:P.type==="decimal"&&(D.decimal=P.value)}catch{}return c.set(o,D),D}const t=/[\s   ]/g,i=/^[+-]?[\d   '’ .,]*(?:[eE][+-]?\d+)?/,r=/^[^\d+\-(.,\s]+\s*/,C=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/;function b(M,o){const{group:E,decimal:D}=x(o);let P=String(M).replace(t,"");if(P==="")return null;const Z=D?P.indexOf(D):-1;if(E&&E!==D){if(Z>=0&&P.indexOf(E,Z+D.length)>=0)return null;P=P.split(E).join("")}if(D&&D!=="."&&(P=P.split(D).join(".")),!C.test(P))return null;const A=Number(P);return Number.isFinite(A)?A:null}function G(M,o,E){const D=String(M).trim().replace(/\.$/,"");if(D==="")return null;const P=o.units.find(m=>m.symbol===D);if(P)return P;const Z=D.toLowerCase(),A=o.byToken.get(Z);if(A===k)return null;if(A)return A;const _=o.byPrefix.get(Z);if(!_||!_.length)return null;const s=y(o,E),w=_.filter(m=>s.includes(m));return w.length===1?w[0]:null}function oe(M,o,E,D){let P=M,Z=0,A=!1,_=!1;for(;P!=="";){const s=i.exec(P)[0];if(s==="")return null;const w=b(s,D&&D.locale);if(w===null)return null;P=P.slice(s.length).trim();const m=P.search(/[+-]?[\d]/),R=(m>=0?P.slice(0,m):P).trim();if(P=m>=0?P.slice(m).trim():"",R===""){if(A)return null;_=!0,Z+=S(w,E[0],o.base)}else{const q=G(R,o.index,o.binary);if(!q)return null;Z+=S(w,q,o.base)}if(A=!0,_&&P!=="")return null}return A?Z:null}function U(M,o){if(T(M))return null;if(typeof M=="number")return Number.isFinite(M)?M:null;const E=h(o);if(!E)return null;let D=String(M).trim();if(D==="")return null;let P=!1;D.startsWith("(")&&D.endsWith(")")&&(P=!0,D=D.slice(1,-1).trim());const Z=W(o,E);if(Z){D.startsWith("-")&&(P=!0,D=D.slice(1).trim());const re=oe(D,E,Z,o);return re===null?null:P?-re:re}let A=null;const _=r.exec(D);if(_&&_[0]){const re=G(_[0].trim(),E.index,E.binary);re&&(A=re,D=D.slice(_[0].length).trim())}const s=i.exec(D)[0],w=b(s,o&&o.locale);if(w===null)return null;const m=D.slice(s.length).trim();if(A&&m!=="")return null;const R=A||(m===""?E.base:G(m,E.index,E.binary));if(!R)return null;const q=S(w,R,E.base);return P?-q:q}const K=new Map;function l(M,o,E,D){const P=`${M||""}|${o}|${E}|${D?1:0}`;let Z=K.get(P);return Z||(Z=new Intl.NumberFormat(M||void 0,{minimumFractionDigits:o,maximumFractionDigits:E,useGrouping:D}),K.set(P,Z)),Z}function H(M,o){if(!Number.isFinite(M)||M===0)return Math.max(0,o-1);const E=Math.floor(Math.log10(Math.abs(M)));return Math.min(20,Math.max(0,o-1-E))}function J(M,o){if(!Number.isFinite(M)||M===0)return M;const E=Math.ceil(Math.log10(Math.abs(M))),D=10**(o-E);return Math.round(M*D)/D}function Y(M,o,E){if(!E||E===o.base.symbol)return o.base;if(E!=="auto")return B(o,E);if(M===0||!Number.isFinite(M))return o.base;const D=Math.abs(M)*o.base.factor,P=y(o.index,o.binary);let Z=P[0];for(const s of P)D>=s.factor&&(Z=s);if(D>=Z.factor)return Z;let A=Z;for(const s of o.index.units)s.binary!==o.binary&&s.factor!==1||s.factor<=D&&s.factor>(A===Z?0:A.factor)&&(A=s);if(A!==Z)return A;let _=Z;for(const s of o.index.units)s.binary!==o.binary&&s.factor!==1||s.factor<_.factor&&(_=s);return _.factor<o.base.factor?_:o.base}function B(M,o){const E=M.index.units.find(P=>P.symbol===o);if(E)return E;const D=M.index.byToken.get(String(o).toLowerCase());return D&&D!==k?D:(te(`unit:display:${o}`,`unknown display unit "${o}"; rendering in ${M.base.symbol}`),M.base)}function V(M,o,E,D){const P=M<0;let Z=Math.abs(M)*o.base.factor;const A=typeof D.decimals=="number"?D.decimals:D.minDecimals??0,_=typeof D.decimals=="number"?D.decimals:D.maxDecimals??Math.max(A,2),s=D.space??" ",w=[];for(let R=0;R<E.length;R++){const q=E[R],re=R===E.length-1;let ie=re?Z/q.factor:Math.floor(Z/q.factor);if(Z-=ie*q.factor,re){const pe=10**_;ie=Math.round(ie*pe)/pe+0}const ge=re?l(D.locale,A,_,D.group!==!1):l(D.locale,0,0,D.group!==!1);w.push(`${ge.format(ie)}${s}${q.symbol}`)}const m=w.join(" ");return P?`-${m}`:m}function ce(M,o){const E=o||{},D=E.nullDisplay??"";if(T(M)||M==="")return D;const P=typeof M=="number"?M:Number(M);if(!Number.isFinite(P))return D;const Z=h(E);if(!Z)return String(P);const A=W(E,Z);if(A)return V(P,Z,A,E);const _=typeof E.significantFigures=="number"&&E.significantFigures>0?E.significantFigures:0,s=_?J(P,_):P,w=Y(s,Z,E.display),m=S(s,Z.base,w);let R=typeof E.decimals=="number"?E.decimals:E.minDecimals??0,q=typeof E.decimals=="number"?E.decimals:E.maxDecimals??Math.max(R,2);_&&(R=H(m,_),q=R);const re=l(E.locale,R,q,E.group!==!1).format(m),ie=E.space??" ";return E.placement==="prefix"?`${w.symbol}${E.space??""}${re}`:`${re}${ie}${w.symbol}`}function ue(M,o){const E=T(M)||Number.isNaN(M)?null:Number(M),D=T(o)||Number.isNaN(o)?null:Number(o);return E===null||Number.isNaN(E)?D===null||Number.isNaN(D)?0:1:D===null||Number.isNaN(D)||E<D?-1:E>D?1:0}function ne(M){const o=typeof M.decimals=="number"&&M.decimals>0?`.${"0".repeat(M.decimals)}`:"";return`${typeof M.decimals=="number"?`#,##0${o}`:"#,##0.##"}" ${M.symbol}"`}function f(M){const o={system:"data",...M||{}},E=h(o),D=E?E.base.symbol:String(o.unit||""),P=Object.freeze({...o,unit:D}),Z=Object.freeze({...P,display:D,decimals:void 0,minDecimals:0,maxDecimals:20,group:!1}),A=new Map([[P.locale||"",P]]),_=s=>{const w=s||"";let m=A.get(w);return m||(m=Object.freeze({...P,locale:s||void 0}),A.set(w,m)),m};return{base:"number",extends:"number",storage:"float64",unitConfig:P,format:s=>ce(s.value,s.locale?_(s.locale):P),parse:s=>U(s.text,s.locale?_(s.locale):P),compare:ue,defaults:{filter:"number",editor:"unit",align:"end",total:o.total||"sum"},...o.totals?{totals:o.totals}:{},excel:o.excel||ne({decimals:o.decimals,symbol:D}),toStorage:s=>typeof s=="number"?Number.isFinite(s)?s:null:typeof s=="string"?U(s,P):T(s)?null:U(String(s),P),toClipboard:s=>ce(s,Z),fromClipboard:s=>U(s,P)}}const j=f}),_e("packages/core/src/columns/types/temperature.js",function(F,X){"use strict";Object.defineProperty(F,"TEMPERATURE_SCALES",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"findScale",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"convertTemperature",{enumerable:!0,get:function(){return u}}),Object.defineProperty(F,"formatTemperature",{enumerable:!0,get:function(){return k}}),Object.defineProperty(F,"parseTemperature",{enumerable:!0,get:function(){return g}}),Object.defineProperty(F,"createTemperatureType",{enumerable:!0,get:function(){return p}}),Object.defineProperty(F,"TEMPERATURE_TYPES",{enumerable:!0,get:function(){return a}}),Object.defineProperty(F,"default",{enumerable:!0,get:function(){return $}});const T=X("packages/core/src/internal/predicates.js").isNil,v=Object.freeze({C:Object.freeze({symbol:"°C",aliases:["c","°c","celsius","centigrade"],toKelvin:y=>y+273.15,fromKelvin:y=>y-273.15}),F:Object.freeze({symbol:"°F",aliases:["f","°f","fahrenheit"],toKelvin:y=>(y+459.67)*(5/9),fromKelvin:y=>y*(9/5)-459.67}),K:Object.freeze({symbol:"K",aliases:["k","kelvin"],toKelvin:y=>y,fromKelvin:y=>y}),R:Object.freeze({symbol:"°R",aliases:["r","°r","rankine"],toKelvin:y=>y*(5/9),fromKelvin:y=>y*(9/5)})});function te(y){if(T(y))return null;const n=String(y).trim();if(n==="")return null;for(const[h,z]of Object.entries(v))if(n===h||n===z.symbol)return{key:h,scale:z};const d=n.toLowerCase();for(const[h,z]of Object.entries(v))if(z.aliases.includes(d))return{key:h,scale:z};return null}function u(y,n,d){const h=te(n),z=te(d);return!h||!z||!Number.isFinite(Number(y))?null:h.key===z.key?Number(y):z.scale.fromKelvin(h.scale.toKelvin(Number(y)))}const L=new Map;function O(y,n,d){const h=`${y||""}|${n}|${d}`;let z=L.get(h);return z||(z=new Intl.NumberFormat(y||void 0,{minimumFractionDigits:n,maximumFractionDigits:d}),L.set(h,z)),z}function k(y,n){const d=n||{},h=d.nullDisplay??"";if(T(y)||y==="")return h;const z=Number(y);if(!Number.isFinite(z))return h;const W=te(d.scale||"C");if(!W)return String(z);const S=te(d.display||d.scale||"C")||W,c=S.key===W.key?z:S.scale.fromKelvin(W.scale.toKelvin(z)),x=typeof d.decimals=="number"?d.decimals:null,t=x??d.minDecimals??0,i=x??d.maxDecimals??1;return`${O(d.locale,t,i).format(c)}${d.space??" "}${S.scale.symbol}`}const I=/^[+-]?[\d\s.,  ]*\d/;function N(y,n){const d=String(y).trim();if(d==="")return null;const h=new Intl.NumberFormat(n||void 0).formatToParts(1.1).find(c=>c.type==="decimal")?.value||".",z=h===","?".":",",W=d.split(z).join("").split(/[\s  ]/).join("").replace(h,"."),S=Number(W);return Number.isFinite(S)?S:null}function g(y,n){if(T(y))return null;const d=n||{},h=te(d.scale||"C");if(!h)return null;if(typeof y=="number")return Number.isFinite(y)?y:null;let z=String(y).trim();if(z==="")return null;let W=!1;z.startsWith("(")&&z.endsWith(")")&&(W=!0,z=z.slice(1,-1).trim());const S=I.exec(z);if(!S)return null;const c=N(S[0],d.locale);if(c===null)return null;const x=z.slice(S[0].length).trim();if(x==="")return W?-c:c;const t=te(x);if(!t)return null;const i=t.key===h.key?c:h.scale.fromKelvin(t.scale.toKelvin(c));return W?-i:i}function p(y){const n=Object.freeze({scale:"C",...y||{}}),h=(te(n.scale)||te("C")).scale.symbol,z=Object.freeze({...n,display:n.scale,decimals:void 0,minDecimals:0,maxDecimals:20}),W=new Map([[n.locale||"",n]]),S=c=>{const x=c||"";let t=W.get(x);return t||(t=Object.freeze({...n,locale:c||void 0}),W.set(x,t)),t};return{base:"number",extends:"number",storage:"float64",temperatureConfig:n,format:c=>k(c.value,c.locale?S(c.locale):n),parse:c=>g(c.text,c.locale?S(c.locale):n),defaults:{filter:"number",editor:"temperature",align:"end",total:"avg"},totals:{supported:["avg","min","max","count","countValues"]},excel:n.excel||`#,##0${typeof n.decimals=="number"&&n.decimals>0?`.${"0".repeat(n.decimals)}`:".#"}" ${h}"`,toStorage:c=>typeof c=="number"?Number.isFinite(c)?c:null:typeof c=="string"?g(c,n):T(c)?null:g(String(c),n),toClipboard:c=>k(c,z),fromClipboard:c=>g(c,n)}}const a=Object.freeze({celsius:p({scale:"C"}),fahrenheit:p({scale:"F"}),kelvin:p({scale:"K"})}),$=p}),_e("packages/modules/form/controls/number.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,te=X("packages/modules/form/messages.js").t,L=X("packages/core/src/format/number.js").compileNumber,O=X("packages/core/src/columns/types/unit.js"),k=O.parseUnit,I=O.formatUnit,N=O.findUnit,g=O.unitsOf,p=X("packages/core/src/columns/types/temperature.js"),a=p.parseTemperature,$=p.formatTemperature,y=p.findScale,n="data-lattice-form-number-styles";function d(){return`
1002
1103
  .lat-form__control .lat-form__number{
1003
1104
  text-align:right; font-variant-numeric:tabular-nums;
1004
1105
  }
@@ -1039,7 +1140,7 @@
1039
1140
  font:inherit; line-height:inherit; cursor:pointer;
1040
1141
  }
1041
1142
  .lat-form__control .lat-form__number-unitpick:disabled{ opacity:.6; cursor:not-allowed; }
1042
- `.trim()}function m(o){const e=o&&o.documentElement;if(!e||e.getAttribute(t))return;e.setAttribute(t,"1");const y=o.createElement("style");y.textContent=u(),(o.head||o.body||e).appendChild(y)}function N(o){let e="",y=".";try{for(const d of new Intl.NumberFormat(o||void 0).formatToParts(12345.6))d.type==="group"?e=d.value:d.type==="decimal"&&(y=d.value)}catch{}return{group:e,decimal:y}}function L(o,e){if(o==null)return null;let y=String(o).trim();if(y==="")return null;const{group:d,decimal:V}=N(e);let te=!1;if(/^\(.*\)$/.test(y)&&(te=!0,y=y.slice(1,-1)),y=y.replace(/[\s   ]/g,""),d&&d!=="."&&(y=y.split(d).join("")),y=y.replace(/[^0-9eE+\-.,]/g,""),V===","?(y=y.split(".").join(""),y=y.replace(",",".")):y=y.split(",").join(""),y===""||y==="-"||y==="+")return NaN;y.startsWith("-")&&(te=!te,y=y.slice(1));const I=Number(y);return Number.isFinite(I)?te?-I:I:NaN}function g(o){if(o==null||o==="")return"";const e=typeof o=="number"?o:Number(o);return Number.isFinite(e)?String(e):""}function r(o){return o&&o.__latNumber?o.__latNumber.input:o}function x(o){if(typeof o=="number")return Number.isFinite(o)?o:null;if(o==null||o==="")return null;const e=Number(o);return Number.isFinite(e)?e:null}function i(o){const e=o&&o.props||{};return typeof e.system=="string"&&e.system!==""?{kind:"unit",opts:{system:e.system,unit:e.unit,binary:e.binary===!0,decimals:e.decimals,minDecimals:e.minDecimals,maxDecimals:e.maxDecimals,display:e.display,locale:o.locale||e.locale,group:e.group,space:e.space,placement:e.placement,compound:e.compound,significantFigures:e.significantFigures,nullDisplay:e.nullDisplay}}:typeof e.scale=="string"&&e.scale!==""?{kind:"temperature",opts:{scale:e.scale,display:e.display,decimals:e.decimals,minDecimals:e.minDecimals,maxDecimals:e.maxDecimals,space:e.space,locale:o.locale||e.locale,nullDisplay:e.nullDisplay}}:null}P("number",{kind:"field",build(o,e){const y=e.doc;m(y);const d=o.props&&o.props.format&&(typeof o.props.format=="object"||typeof o.props.format=="string")?o.props.format:null,V=o.locale||void 0,te=d?z(d,V):null,I=typeof e.t=="function"?e.t:ee,W=i(o),a=x(o.step),B=x(o.min),O=x(o.max);let D="";if(W&&W.kind==="unit"){const q=k(W.opts.system,W.opts.unit);D=q?q.symbol:String(W.opts.unit||"")}else if(W&&W.kind==="temperature"){const q=$(W.opts.scale);D=q?q.scale.symbol:""}const re=y.createElement("input");re.type="text",re.inputMode="decimal",re.className="lat-form__number",o.name&&(re.name=o.name),o.placeholder!=null&&(re.placeholder=String(o.placeholder));const H={input:re,format:te,t:I,locale:V,step:a,min:B,max:O,unit:W,unitSymbol:D,displayUnit:null,picker:null,invalid:!1,value:null,focused:!1,buttons:[],disposers:[]},ce=()=>H.displayUnit!=null?{...W.opts,display:H.displayUnit}:W.opts,le=q=>H.unit&&H.unit.kind==="unit"?T(q,ce()):H.unit&&H.unit.kind==="temperature"?j(q,H.unit.opts):H.format&&Number.isFinite(q)?H.format(q):g(q),ne=q=>{if(!H.unit)return L(q,H.locale);const S=q==null?"":String(q);if(S.trim()==="")return null;const C=H.unit.kind==="temperature"?l(S,H.unit.opts):_(S,H.unit.opts);return C===null?Number.NaN:C},G=()=>H.unit&&typeof H.unit.opts.nullDisplay=="string"?H.unit.opts.nullDisplay:"",b=q=>{if(q==null||q===""){H.value=null,H.invalid=!1,re.value=G();return}const S=typeof q=="number"?q:Number(q);if(!Number.isFinite(S)){H.value=null,H.invalid=!1,re.value=G();return}H.value=S,H.invalid=!1,re.value=H.focused?g(S):le(S)},w=()=>{const q=re.value;q===""?re.removeAttribute("aria-valuetext"):re.setAttribute("aria-valuetext",q)},M=q=>{const S=ne(re.value);let c=(S==null||Number.isNaN(S)?0:S)+q;typeof B=="number"&&c<B&&(c=B),typeof O=="number"&&c>O&&(c=O),re.value=H.unit&&!H.focused?le(c):g(c)},U=()=>{H.focused=!0,H.value!=null&&(re.value=g(H.value)),w()},X=()=>{H.focused=!1;const q=ne(re.value);q==null?(H.value=null,H.invalid=!1,re.value=G()):Number.isNaN(q)?(H.invalid=!0,H.value!=null?re.value=le(H.value):re.value=""):(H.invalid=!1,H.value=q,re.value=le(q)),w()},Z=q=>{if(q.key!=="ArrowUp"&&q.key!=="ArrowDown")return;typeof q.preventDefault=="function"&&q.preventDefault();const S=typeof a=="number"&&a>0?a:1;M(q.key==="ArrowUp"?S:-S)};if(re.addEventListener("focus",U),re.addEventListener("blur",X),re.addEventListener("keydown",Z),H.disposers.push(()=>re.removeEventListener("focus",U),()=>re.removeEventListener("blur",X),()=>re.removeEventListener("keydown",Z)),b(o.value),typeof B=="number"&&re.setAttribute("aria-valuemin",String(B)),typeof O=="number"&&re.setAttribute("aria-valuemax",String(O)),w(),re.__latNumber=H,W&&W.kind==="unit"&&o.props&&o.props.unitPicker===!0){const q=y.createElement("div");q.className="lat-form__number-unit";const S=y.createElement("select");S.className="lat-form__number-unitpick",S.setAttribute("aria-label",I("form.number.unitPicker"));const C=f(W.opts.system);for(const F of C){const J=y.createElement("option");J.value=F.symbol,J.textContent=F.symbol,S.appendChild(J)}const c=W.opts.display&&W.opts.display!=="auto"?W.opts.display:D,A=C.some(F=>F.symbol===c)?c:D;S.value=A,H.displayUnit=A;const h=()=>{H.displayUnit=S.value,!H.focused&&H.value!=null&&(re.value=le(H.value)),w()};return S.addEventListener("change",h),H.disposers.push(()=>S.removeEventListener("change",h)),H.picker=S,q.appendChild(re),q.appendChild(S),q.__latNumber=H,q}if(o.props&&o.props.spinner===!0){const q=y.createElement("div");q.className="lat-form__number-spinner";const S=(A,h)=>{const F=y.createElement("button");return F.type="button",F.tabIndex=-1,F.className="lat-form__number-step",F.textContent=A,F.addEventListener("mousedown",J=>{typeof J.preventDefault=="function"&&J.preventDefault();const ie=typeof a=="number"&&a>0?a:1;M(h*ie)}),F},C=S("−",-1),c=S("+",1);return H.buttons=[C,c],q.appendChild(C),q.appendChild(re),q.appendChild(c),q.__latNumber=H,q}return re},read(o){const e=o&&o.__latNumber,y=e?e.input:o;if(e&&!e.focused)return e.unit&&e.invalid?Number.NaN:e.value;if(e&&e.unit){const d=y.value;if(String(d).trim()==="")return null;const V=e.unit.kind==="temperature"?l(d,e.unit.opts):_(d,e.unit.opts);return V===null?Number.NaN:V}return L(y.value,e?e.locale:void 0)},write(o,e){const y=o&&o.__latNumber,d=y?y.input:o,V=y&&y.unit&&typeof y.unit.opts.nullDisplay=="string"?y.unit.opts.nullDisplay:"";if(e==null||e===""){y&&(y.value=null,y.invalid=!1),d.value=V;return}const te=typeof e=="number"?e:Number(e);if(!Number.isFinite(te)){y&&(y.value=null,y.invalid=!1),d.value=V;return}y&&(y.value=te,y.invalid=!1),y&&y.focused?d.value=g(te):y&&y.unit?d.value=y.unit.kind==="unit"?T(te,y.displayUnit!=null?{...y.unit.opts,display:y.displayUnit}:y.unit.opts):j(te,y.unit.opts):y&&y.format?d.value=y.format(te):d.value=g(te),d.value===""?d.removeAttribute("aria-valuetext"):d.setAttribute("aria-valuetext",d.value)},state(o,e){const y=o&&o.__latNumber,d=y?y.input:o;d.disabled=e.disabled===!0,d.readOnly=e.readOnly===!0;const V=e.disabled===!0||e.readOnly===!0;for(const te of y?y.buttons:[])te.disabled=V;y&&y.picker&&(y.picker.disabled=V)},validate(o,e,y){const d=o&&o.__latNumber,V=d&&d.t?d.t:ee;if(y==null||y==="")return null;if(typeof y!="number"||Number.isNaN(y))return d&&d.unit?V("form.validation.unit",{unit:d.unitSymbol}):V("form.validation.number");const te=I=>d&&d.unit&&d.unit.kind==="unit"?T(I,{...d.unit.opts,display:d.unit.opts.unit,group:!0}):d&&d.unit&&d.unit.kind==="temperature"?j(I,d.unit.opts):String(I);if(d&&typeof d.min=="number"&&y<d.min)return V("form.validation.min",{min:te(d.min)});if(d&&typeof d.max=="number"&&y>d.max)return V("form.validation.max",{max:te(d.max)});if(d&&typeof d.step=="number"&&d.step>0){const I=typeof d.min=="number"?d.min:0,W=(y-I)/d.step;if(Math.abs(W-Math.round(W))>1e-9)return V("form.validation.step",{step:String(d.step)})}return null},focus(o){const e=r(o);typeof e.focus=="function"&&e.focus()},blur(o){const e=r(o);typeof e.blur=="function"&&e.blur()},destroy(o){const e=o&&o.__latNumber;if(e)for(const y of e.disposers.splice(0))y()}})}),ge("packages/modules/form/controls/textarea.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl;P("textarea",{kind:"field",build(v,ee){const s=ee.doc.createElement("textarea");return v.name&&(s.name=v.name),v.placeholder!=null&&(s.placeholder=String(v.placeholder)),v.rows!=null&&(s.rows=Number(v.rows)||2),s.value=v.value==null?"":String(v.value),s},read(v){return v.value},write(v,ee){v.value=ee==null?"":String(ee)},state(v,ee){v.disabled=ee.disabled===!0,v.readOnly=ee.readOnly===!0}})}),ge("packages/modules/form/controls/checkbox.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v=Y("packages/modules/form/state.js"),ee=v.applyBooleanInputState,s=v.guardBooleanInput;P("checkbox",{kind:"toggle",build(z,E){const _=E.doc.createElement("input");return _.type="checkbox",z.name&&(_.name=z.name),_.checked=z.value===!0,s(_),_},read(z){return z.checked},write(z,E){z.checked=E===!0},state(z,E){ee(z,E.disabled===!0,E.readOnly===!0)}})}),ge("packages/modules/form/controls/button.js",function(R,Y){"use strict";Object.defineProperty(R,"injectButtonStyles",{enumerable:!0,get:function(){return f}}),Object.defineProperty(R,"buttonItemFrom",{enumerable:!0,get:function(){return i}}),Object.defineProperty(R,"buildButton",{enumerable:!0,get:function(){return o}});const P=Y("packages/modules/form/controls/registry.js").registerControl,v="lat-button",ee="data-lattice-button-styles",s="http://www.w3.org/2000/svg",z=Object.freeze({chevronDown:{viewBox:"0 0 16 16",paths:["M3.5 6 8 10.5 12.5 6"],paint:"stroke"},chevronUp:{viewBox:"0 0 16 16",paths:["M3.5 10 8 5.5 12.5 10"],paint:"stroke"},chevronLeft:{viewBox:"0 0 16 16",paths:["M10 3.5 5.5 8 10 12.5"],paint:"stroke"},chevronRight:{viewBox:"0 0 16 16",paths:["M6 3.5 10.5 8 6 12.5"],paint:"stroke"},check:{viewBox:"0 0 16 16",paths:["M3.5 8.5 6.5 11.5 12.5 4.5"],paint:"stroke"},close:{viewBox:"0 0 16 16",paths:["M4 4l8 8M12 4l-8 8"],paint:"stroke"},plus:{viewBox:"0 0 16 16",paths:["M8 3.5v9M3.5 8h9"],paint:"stroke"},search:{viewBox:"0 0 16 16",paths:["M7 2.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9M10.4 10.4 13.5 13.5"],paint:"stroke"},info:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm.75 4a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM7.25 7h1.5v4.5h-1.5Z"]},warning:{viewBox:"0 0 16 16",paths:["M8 1.5 15 14H1Zm-.75 4v4h1.5v-4Zm0 5v1.5h1.5V10.5Z"]},danger:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3h1.5v5h-1.5Zm0 6h1.5V12h-1.5Z"]},success:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm3.2 4.4-4 4.6-2.4-2.3 1-1.1 1.3 1.2 3-3.4Z"]},clock:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3h1.5v3.7l2.5 1.5-.75 1.3-3.25-2Z"]},lock:{viewBox:"0 0 16 16",paths:["M4.5 7V5a3.5 3.5 0 1 1 7 0v2H13v7H3V7Zm1.5 0h4V5a2 2 0 1 0-4 0Z"]},link:{viewBox:"0 0 16 16",paths:["M6.5 9.5a3 3 0 0 1 0-4l2-2a3 3 0 0 1 4 4l-1 1M9.5 6.5a3 3 0 0 1 0 4l-2 2a3 3 0 0 1-4-4l1-1"],paint:"stroke"},external:{viewBox:"0 0 16 16",paths:["M6.5 3.5h-3v9h9v-3M9.5 3.5h3v3M12.5 3.5 7 9"],paint:"stroke"},download:{viewBox:"0 0 16 16",paths:["M8 2.5v7.5M8 10 5 7M8 10l3-3M2.5 12.5h11"],paint:"stroke"},trash:{viewBox:"0 0 16 16",paths:["M3 4.5h10M6.5 4.5V3h3v1.5M4.5 4.5l.7 8.5h5.6l.7-8.5M6.8 7v3.7M9.2 7v3.7"],paint:"stroke"},pencil:{viewBox:"0 0 16 16",paths:["M2.5 11.2 11 2.7l2.3 2.3-8.5 8.5-3 .7z"],paint:"stroke"},eye:{viewBox:"0 0 16 16",paths:["M8 3.2c3.3 0 6 3 6.6 4.5C14 9.3 11.3 12.3 8 12.3S2 9.3 1.4 7.7C2 6.2 4.7 3.2 8 3.2Zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z"]},eyeOff:{viewBox:"0 0 16 16",paths:["M2.2 2.9 13.1 13.8M8 3.2c3.3 0 6 3 6.6 4.5a9.4 9.4 0 0 1-1.9 2.4M5 4.2A9 9 0 0 0 1.4 7.7C2 9.3 4.7 12.3 8 12.3c.9 0 1.7-.2 2.5-.5M6.3 6a2.5 2.5 0 0 0 3.4 3.5"],paint:"stroke"},star:{viewBox:"0 0 16 16",paths:["M8 1.6l1.96 3.97 4.38.64-3.17 3.09.75 4.36L8 11.6l-3.92 2.06.75-4.36L1.66 6.21l4.38-.64Z"]},heart:{viewBox:"0 0 16 16",paths:["M8 14.2 2.4 8.6a3.3 3.3 0 0 1 4.67-4.67L8 4.86l.93-.93A3.3 3.3 0 0 1 13.6 8.6Z"]},arrow:{viewBox:"0 0 16 16",paths:["M3 13 12.5 3.5","M7.5 3.5H12.5V8.5"],paint:"stroke"},menu:{viewBox:"0 0 16 16",paths:["M2.5 4.5h11M2.5 8h11M2.5 11.5h11"],paint:"stroke"}}),E=Object.freeze(["primary","secondary","tonal","outline","text","danger"]),_=Object.freeze(["sm","md","lg"]),T=Object.freeze(["button","submit","reset"]);function k(){const e=`
1143
+ `.trim()}function h(i){const r=i&&i.documentElement;if(!r||r.getAttribute(n))return;r.setAttribute(n,"1");const C=i.createElement("style");C.textContent=d(),(i.head||i.body||r).appendChild(C)}function z(i){let r="",C=".";try{for(const b of new Intl.NumberFormat(i||void 0).formatToParts(12345.6))b.type==="group"?r=b.value:b.type==="decimal"&&(C=b.value)}catch{}return{group:r,decimal:C}}function W(i,r){if(i==null)return null;let C=String(i).trim();if(C==="")return null;const{group:b,decimal:G}=z(r);let oe=!1;if(/^\(.*\)$/.test(C)&&(oe=!0,C=C.slice(1,-1)),C=C.replace(/[\s   ]/g,""),b&&b!=="."&&(C=C.split(b).join("")),C=C.replace(/[^0-9eE+\-.,]/g,""),G===","?(C=C.split(".").join(""),C=C.replace(",",".")):C=C.split(",").join(""),C===""||C==="-"||C==="+")return NaN;C.startsWith("-")&&(oe=!oe,C=C.slice(1));const U=Number(C);return Number.isFinite(U)?oe?-U:U:NaN}function S(i){if(i==null||i==="")return"";const r=typeof i=="number"?i:Number(i);return Number.isFinite(r)?String(r):""}function c(i){return i&&i.__latNumber?i.__latNumber.input:i}function x(i){if(typeof i=="number")return Number.isFinite(i)?i:null;if(i==null||i==="")return null;const r=Number(i);return Number.isFinite(r)?r:null}function t(i){const r=i&&i.props||{};return typeof r.system=="string"&&r.system!==""?{kind:"unit",opts:{system:r.system,unit:r.unit,binary:r.binary===!0,decimals:r.decimals,minDecimals:r.minDecimals,maxDecimals:r.maxDecimals,display:r.display,locale:i.locale||r.locale,group:r.group,space:r.space,placement:r.placement,compound:r.compound,significantFigures:r.significantFigures,nullDisplay:r.nullDisplay}}:typeof r.scale=="string"&&r.scale!==""?{kind:"temperature",opts:{scale:r.scale,display:r.display,decimals:r.decimals,minDecimals:r.minDecimals,maxDecimals:r.maxDecimals,space:r.space,locale:i.locale||r.locale,nullDisplay:r.nullDisplay}}:null}T("number",{kind:"field",build(i,r){const C=r.doc;h(C);const b=i.props&&i.props.format&&(typeof i.props.format=="object"||typeof i.props.format=="string")?i.props.format:null,G=i.locale||void 0,oe=b?L(b,G):null,U=typeof r.t=="function"?r.t:te,K=t(i),l=x(i.step),H=x(i.min),J=x(i.max);let Y="";if(K&&K.kind==="unit"){const Z=N(K.opts.system,K.opts.unit);Y=Z?Z.symbol:String(K.opts.unit||"")}else if(K&&K.kind==="temperature"){const Z=y(K.opts.scale);Y=Z?Z.scale.symbol:""}const B=C.createElement("input");B.type="text",B.inputMode="decimal",B.className="lat-form__number",i.name&&(B.name=i.name),i.placeholder!=null&&(B.placeholder=String(i.placeholder));const V={input:B,format:oe,t:U,locale:G,step:l,min:H,max:J,unit:K,unitSymbol:Y,displayUnit:null,picker:null,invalid:!1,value:null,focused:!1,buttons:[],disposers:[]},ce=()=>V.displayUnit!=null?{...K.opts,display:V.displayUnit}:K.opts,ue=Z=>V.unit&&V.unit.kind==="unit"?I(Z,ce()):V.unit&&V.unit.kind==="temperature"?$(Z,V.unit.opts):V.format&&Number.isFinite(Z)?V.format(Z):S(Z),ne=Z=>{if(!V.unit)return W(Z,V.locale);const A=Z==null?"":String(Z);if(A.trim()==="")return null;const _=V.unit.kind==="temperature"?a(A,V.unit.opts):k(A,V.unit.opts);return _===null?Number.NaN:_},f=()=>V.unit&&typeof V.unit.opts.nullDisplay=="string"?V.unit.opts.nullDisplay:"",j=Z=>{if(Z==null||Z===""){V.value=null,V.invalid=!1,B.value=f();return}const A=typeof Z=="number"?Z:Number(Z);if(!Number.isFinite(A)){V.value=null,V.invalid=!1,B.value=f();return}V.value=A,V.invalid=!1,B.value=V.focused?S(A):ue(A)},M=()=>{const Z=B.value;Z===""?B.removeAttribute("aria-valuetext"):B.setAttribute("aria-valuetext",Z)},o=Z=>{const A=ne(B.value);let s=(A==null||Number.isNaN(A)?0:A)+Z;typeof H=="number"&&s<H&&(s=H),typeof J=="number"&&s>J&&(s=J),B.value=V.unit&&!V.focused?ue(s):S(s)},E=()=>{V.focused=!0,V.value!=null&&(B.value=S(V.value)),M()},D=()=>{V.focused=!1;const Z=ne(B.value);Z==null?(V.value=null,V.invalid=!1,B.value=f()):Number.isNaN(Z)?(V.invalid=!0,V.value!=null?B.value=ue(V.value):B.value=""):(V.invalid=!1,V.value=Z,B.value=ue(Z)),M()},P=Z=>{if(Z.key!=="ArrowUp"&&Z.key!=="ArrowDown")return;typeof Z.preventDefault=="function"&&Z.preventDefault();const A=typeof l=="number"&&l>0?l:1;o(Z.key==="ArrowUp"?A:-A)};if(B.addEventListener("focus",E),B.addEventListener("blur",D),B.addEventListener("keydown",P),V.disposers.push(()=>B.removeEventListener("focus",E),()=>B.removeEventListener("blur",D),()=>B.removeEventListener("keydown",P)),j(i.value),typeof H=="number"&&B.setAttribute("aria-valuemin",String(H)),typeof J=="number"&&B.setAttribute("aria-valuemax",String(J)),M(),B.__latNumber=V,K&&K.kind==="unit"&&i.props&&i.props.unitPicker===!0){const Z=C.createElement("div");Z.className="lat-form__number-unit";const A=C.createElement("select");A.className="lat-form__number-unitpick",A.setAttribute("aria-label",U("form.number.unitPicker"));const _=g(K.opts.system);for(const R of _){const q=C.createElement("option");q.value=R.symbol,q.textContent=R.symbol,A.appendChild(q)}const s=K.opts.display&&K.opts.display!=="auto"?K.opts.display:Y,w=_.some(R=>R.symbol===s)?s:Y;A.value=w,V.displayUnit=w;const m=()=>{V.displayUnit=A.value,!V.focused&&V.value!=null&&(B.value=ue(V.value)),M()};return A.addEventListener("change",m),V.disposers.push(()=>A.removeEventListener("change",m)),V.picker=A,Z.appendChild(B),Z.appendChild(A),Z.__latNumber=V,Z}if(i.props&&i.props.spinner===!0){const Z=C.createElement("div");Z.className="lat-form__number-spinner";const A=(w,m)=>{const R=C.createElement("button");return R.type="button",R.tabIndex=-1,R.className="lat-form__number-step",R.textContent=w,R.addEventListener("mousedown",q=>{typeof q.preventDefault=="function"&&q.preventDefault();const re=typeof l=="number"&&l>0?l:1;o(m*re)}),R},_=A("−",-1),s=A("+",1);return V.buttons=[_,s],Z.appendChild(_),Z.appendChild(B),Z.appendChild(s),Z.__latNumber=V,Z}return B},read(i){const r=i&&i.__latNumber,C=r?r.input:i;if(r&&!r.focused)return r.unit&&r.invalid?Number.NaN:r.value;if(r&&r.unit){const b=C.value;if(String(b).trim()==="")return null;const G=r.unit.kind==="temperature"?a(b,r.unit.opts):k(b,r.unit.opts);return G===null?Number.NaN:G}return W(C.value,r?r.locale:void 0)},write(i,r){const C=i&&i.__latNumber,b=C?C.input:i,G=C&&C.unit&&typeof C.unit.opts.nullDisplay=="string"?C.unit.opts.nullDisplay:"";if(r==null||r===""){C&&(C.value=null,C.invalid=!1),b.value=G;return}const oe=typeof r=="number"?r:Number(r);if(!Number.isFinite(oe)){C&&(C.value=null,C.invalid=!1),b.value=G;return}C&&(C.value=oe,C.invalid=!1),C&&C.focused?b.value=S(oe):C&&C.unit?b.value=C.unit.kind==="unit"?I(oe,C.displayUnit!=null?{...C.unit.opts,display:C.displayUnit}:C.unit.opts):$(oe,C.unit.opts):C&&C.format?b.value=C.format(oe):b.value=S(oe),b.value===""?b.removeAttribute("aria-valuetext"):b.setAttribute("aria-valuetext",b.value)},state(i,r){const C=i&&i.__latNumber,b=C?C.input:i;b.disabled=r.disabled===!0,b.readOnly=r.readOnly===!0;const G=r.disabled===!0||r.readOnly===!0;for(const oe of C?C.buttons:[])oe.disabled=G;C&&C.picker&&(C.picker.disabled=G)},validate(i,r,C){const b=i&&i.__latNumber,G=b&&b.t?b.t:te;if(C==null||C==="")return null;if(typeof C!="number"||Number.isNaN(C))return b&&b.unit?G("form.validation.unit",{unit:b.unitSymbol}):G("form.validation.number");const oe=U=>b&&b.unit&&b.unit.kind==="unit"?I(U,{...b.unit.opts,display:b.unit.opts.unit,group:!0}):b&&b.unit&&b.unit.kind==="temperature"?$(U,b.unit.opts):String(U);if(b&&typeof b.min=="number"&&C<b.min)return G("form.validation.min",{min:oe(b.min)});if(b&&typeof b.max=="number"&&C>b.max)return G("form.validation.max",{max:oe(b.max)});if(b&&typeof b.step=="number"&&b.step>0){const U=typeof b.min=="number"?b.min:0,K=(C-U)/b.step;if(Math.abs(K-Math.round(K))>1e-9)return G("form.validation.step",{step:String(b.step)})}return null},focus(i){const r=c(i);typeof r.focus=="function"&&r.focus()},blur(i){const r=c(i);typeof r.blur=="function"&&r.blur()},destroy(i){const r=i&&i.__latNumber;if(r)for(const C of r.disposers.splice(0))C()}})}),_e("packages/modules/form/controls/textarea.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl;T("textarea",{kind:"field",build(v,te){const u=te.doc.createElement("textarea");return v.name&&(u.name=v.name),v.placeholder!=null&&(u.placeholder=String(v.placeholder)),v.rows!=null&&(u.rows=Number(v.rows)||2),u.value=v.value==null?"":String(v.value),u},read(v){return v.value},write(v,te){v.value=te==null?"":String(te)},state(v,te){v.disabled=te.disabled===!0,v.readOnly=te.readOnly===!0}})}),_e("packages/modules/form/controls/checkbox.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=X("packages/modules/form/state.js"),te=v.applyBooleanInputState,u=v.guardBooleanInput;T("checkbox",{kind:"toggle",build(L,O){const k=O.doc.createElement("input");return k.type="checkbox",L.name&&(k.name=L.name),k.checked=L.value===!0,u(k),k},read(L){return L.checked},write(L,O){L.checked=O===!0},state(L,O){te(L,O.disabled===!0,O.readOnly===!0)}})}),_e("packages/modules/form/controls/button.js",function(F,X){"use strict";Object.defineProperty(F,"injectButtonStyles",{enumerable:!0,get:function(){return g}}),Object.defineProperty(F,"buttonItemFrom",{enumerable:!0,get:function(){return t}}),Object.defineProperty(F,"buildButton",{enumerable:!0,get:function(){return i}});const T=X("packages/modules/form/controls/registry.js").registerControl,v="lat-button",te="data-lattice-button-styles",u="http://www.w3.org/2000/svg",L=Object.freeze({chevronDown:{viewBox:"0 0 16 16",paths:["M3.5 6 8 10.5 12.5 6"],paint:"stroke"},chevronUp:{viewBox:"0 0 16 16",paths:["M3.5 10 8 5.5 12.5 10"],paint:"stroke"},chevronLeft:{viewBox:"0 0 16 16",paths:["M10 3.5 5.5 8 10 12.5"],paint:"stroke"},chevronRight:{viewBox:"0 0 16 16",paths:["M6 3.5 10.5 8 6 12.5"],paint:"stroke"},check:{viewBox:"0 0 16 16",paths:["M3.5 8.5 6.5 11.5 12.5 4.5"],paint:"stroke"},close:{viewBox:"0 0 16 16",paths:["M4 4l8 8M12 4l-8 8"],paint:"stroke"},plus:{viewBox:"0 0 16 16",paths:["M8 3.5v9M3.5 8h9"],paint:"stroke"},search:{viewBox:"0 0 16 16",paths:["M7 2.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9M10.4 10.4 13.5 13.5"],paint:"stroke"},info:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm.75 4a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM7.25 7h1.5v4.5h-1.5Z"]},warning:{viewBox:"0 0 16 16",paths:["M8 1.5 15 14H1Zm-.75 4v4h1.5v-4Zm0 5v1.5h1.5V10.5Z"]},danger:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3h1.5v5h-1.5Zm0 6h1.5V12h-1.5Z"]},success:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm3.2 4.4-4 4.6-2.4-2.3 1-1.1 1.3 1.2 3-3.4Z"]},clock:{viewBox:"0 0 16 16",paths:["M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3h1.5v3.7l2.5 1.5-.75 1.3-3.25-2Z"]},lock:{viewBox:"0 0 16 16",paths:["M4.5 7V5a3.5 3.5 0 1 1 7 0v2H13v7H3V7Zm1.5 0h4V5a2 2 0 1 0-4 0Z"]},link:{viewBox:"0 0 16 16",paths:["M6.5 9.5a3 3 0 0 1 0-4l2-2a3 3 0 0 1 4 4l-1 1M9.5 6.5a3 3 0 0 1 0 4l-2 2a3 3 0 0 1-4-4l1-1"],paint:"stroke"},external:{viewBox:"0 0 16 16",paths:["M6.5 3.5h-3v9h9v-3M9.5 3.5h3v3M12.5 3.5 7 9"],paint:"stroke"},download:{viewBox:"0 0 16 16",paths:["M8 2.5v7.5M8 10 5 7M8 10l3-3M2.5 12.5h11"],paint:"stroke"},trash:{viewBox:"0 0 16 16",paths:["M3 4.5h10M6.5 4.5V3h3v1.5M4.5 4.5l.7 8.5h5.6l.7-8.5M6.8 7v3.7M9.2 7v3.7"],paint:"stroke"},pencil:{viewBox:"0 0 16 16",paths:["M2.5 11.2 11 2.7l2.3 2.3-8.5 8.5-3 .7z"],paint:"stroke"},eye:{viewBox:"0 0 16 16",paths:["M8 3.2c3.3 0 6 3 6.6 4.5C14 9.3 11.3 12.3 8 12.3S2 9.3 1.4 7.7C2 6.2 4.7 3.2 8 3.2Zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z"]},eyeOff:{viewBox:"0 0 16 16",paths:["M2.2 2.9 13.1 13.8M8 3.2c3.3 0 6 3 6.6 4.5a9.4 9.4 0 0 1-1.9 2.4M5 4.2A9 9 0 0 0 1.4 7.7C2 9.3 4.7 12.3 8 12.3c.9 0 1.7-.2 2.5-.5M6.3 6a2.5 2.5 0 0 0 3.4 3.5"],paint:"stroke"},star:{viewBox:"0 0 16 16",paths:["M8 1.6l1.96 3.97 4.38.64-3.17 3.09.75 4.36L8 11.6l-3.92 2.06.75-4.36L1.66 6.21l4.38-.64Z"]},heart:{viewBox:"0 0 16 16",paths:["M8 14.2 2.4 8.6a3.3 3.3 0 0 1 4.67-4.67L8 4.86l.93-.93A3.3 3.3 0 0 1 13.6 8.6Z"]},arrow:{viewBox:"0 0 16 16",paths:["M3 13 12.5 3.5","M7.5 3.5H12.5V8.5"],paint:"stroke"},menu:{viewBox:"0 0 16 16",paths:["M2.5 4.5h11M2.5 8h11M2.5 11.5h11"],paint:"stroke"}}),O=Object.freeze(["primary","secondary","tonal","outline","text","danger"]),k=Object.freeze(["sm","md","lg"]),I=Object.freeze(["button","submit","reset"]);function N(){const r=`
1043
1144
  .lat-form{
1044
1145
  --lattice-button-primary-bg:var(--lattice-accent);
1045
1146
  --lattice-button-primary-bg-hover:color-mix(in srgb, var(--lattice-accent) 88%, var(--lattice-foreground));
@@ -1100,14 +1201,14 @@
1100
1201
  --lattice-button-danger-border-disabled:var(--lattice-button-danger-bg-disabled);
1101
1202
  --lattice-button-danger-text:var(--lattice-background);
1102
1203
  --lattice-button-danger-text-disabled:var(--lattice-foreground-muted);
1103
- }`,y=E.map(d=>`
1104
- .lat-form__control .${v}[data-variant='${d}']{ background:var(--lattice-button-${d}-bg); border-color:var(--lattice-button-${d}-border); color:var(--lattice-button-${d}-text); }
1105
- .lat-form__control .${v}[data-variant='${d}']:hover:not(:disabled):not([aria-disabled='true']):not([aria-busy='true']){ background:var(--lattice-button-${d}-bg-hover); }
1106
- .lat-form__control .${v}[data-variant='${d}']:active:not(:disabled):not([aria-disabled='true']):not([aria-busy='true']){ background:var(--lattice-button-${d}-bg-active); }
1107
- .lat-form__control .${v}[data-variant='${d}'][aria-pressed='true']{ background:var(--lattice-button-${d}-bg-toggled); }
1108
- .lat-form__control .${v}[data-variant='${d}']:disabled:not([aria-busy='true']),
1109
- .lat-form__control .${v}[data-variant='${d}'][aria-disabled='true']:not([aria-busy='true']){
1110
- background:var(--lattice-button-${d}-bg-disabled); border-color:var(--lattice-button-${d}-border-disabled); color:var(--lattice-button-${d}-text-disabled); cursor:not-allowed; opacity:1;
1204
+ }`,C=O.map(b=>`
1205
+ .lat-form__control .${v}[data-variant='${b}']{ background:var(--lattice-button-${b}-bg); border-color:var(--lattice-button-${b}-border); color:var(--lattice-button-${b}-text); }
1206
+ .lat-form__control .${v}[data-variant='${b}']:hover:not(:disabled):not([aria-disabled='true']):not([aria-busy='true']){ background:var(--lattice-button-${b}-bg-hover); }
1207
+ .lat-form__control .${v}[data-variant='${b}']:active:not(:disabled):not([aria-disabled='true']):not([aria-busy='true']){ background:var(--lattice-button-${b}-bg-active); }
1208
+ .lat-form__control .${v}[data-variant='${b}'][aria-pressed='true']{ background:var(--lattice-button-${b}-bg-toggled); }
1209
+ .lat-form__control .${v}[data-variant='${b}']:disabled:not([aria-busy='true']),
1210
+ .lat-form__control .${v}[data-variant='${b}'][aria-disabled='true']:not([aria-busy='true']){
1211
+ background:var(--lattice-button-${b}-bg-disabled); border-color:var(--lattice-button-${b}-border-disabled); color:var(--lattice-button-${b}-text-disabled); cursor:not-allowed; opacity:1;
1111
1212
  }`).join(`
1112
1213
  `);return`
1113
1214
  .lat-form__control .${v},
@@ -1139,31 +1240,31 @@
1139
1240
  @keyframes ${v}-spin{ to{ transform:rotate(360deg); } }
1140
1241
  @media (prefers-reduced-motion: reduce){ .lat-form__control .${v} .${v}__spinner{ animation:none; } }
1141
1242
 
1142
- ${e}
1143
- ${y}
1243
+ ${r}
1244
+ ${C}
1144
1245
 
1145
1246
  .lat-form__control .${v}:focus-visible{ outline:2px solid var(--lattice-focus-ring); outline-offset:2px; }
1146
1247
  .lat-form__control .${v}[aria-busy='true']{ cursor:default; pointer-events:none; }
1147
- `.trim()}function f(e){const y=e&&e.documentElement;if(!y||y.getAttribute(ee))return;y.setAttribute(ee,"1");const d=e.createElement("style");d.textContent=k(),(e.head||e.body||y).appendChild(d)}function p(e){return E.includes(e)?e:"secondary"}function l(e){return _.includes(e)?e:"md"}function j(e){return T.includes(e)?e:"button"}function $(e){return e==="end"?"end":"start"}function t(e){return e==="uppercase"?"uppercase":"none"}function u(e){const y=e.props&&e.props.href;return typeof y=="string"&&y!==""}function m(e,y){const d=e.createElementNS(s,"svg");d.setAttribute("viewBox",y.viewBox),d.setAttribute("focusable","false"),d.setAttribute("aria-hidden","true"),y.paint==="stroke"?(d.setAttribute("fill","none"),d.setAttribute("stroke","currentColor"),d.setAttribute("stroke-width","1.5"),d.setAttribute("stroke-linecap","round"),d.setAttribute("stroke-linejoin","round")):d.setAttribute("fill","currentColor");for(const V of y.paths){const te=e.createElementNS(s,"path");te.setAttribute("d",V),d.appendChild(te)}return d}function N(e,y){if(e==null)return null;if(typeof e=="object"&&e.nodeType)return e;if(typeof e!="string"||e==="")return null;const d=e;if(/^(https?:)?\/\//i.test(d)||/^data:/i.test(d)){const te=y.createElement("img");return te.src=d,te.alt="",te}const V=z[d];return V?m(y,V):null}function L(e){const y=e.createElementNS(s,"svg");y.setAttribute("viewBox","0 0 16 16"),y.setAttribute("focusable","false"),y.setAttribute("aria-hidden","true"),y.setAttribute("class",`${v}__spinner`);const d=e.createElementNS(s,"circle");return d.setAttribute("cx","8"),d.setAttribute("cy","8"),d.setAttribute("r","6"),d.setAttribute("fill","none"),d.setAttribute("stroke","currentColor"),d.setAttribute("stroke-width","2"),d.setAttribute("stroke-linecap","round"),d.setAttribute("stroke-dasharray","28"),d.setAttribute("stroke-dashoffset","10"),y.appendChild(d),y}function g(e,y,d){const V=y&&y.defaultView,te=V&&V.CustomEvent,I=te?new te("submit",{bubbles:!0,detail:{values:d}}):{type:"submit",bubbles:!0,cancelable:!1,defaultPrevented:!1,detail:{values:d},preventDefault(){this.defaultPrevented=!0}};e.dispatchEvent(I)}function r(e){const y=e.loading===!0,d=e.disabled===!0&&e.focusableWhenDisabled!==!0||y;e.el.disabled=d,e.el.setAttribute("aria-disabled",e.disabled===!0||y?"true":"false")}function x(e,y){e.loading=y===!0,e.el.setAttribute("aria-busy",e.loading?"true":"false"),r(e);const d=e.iconSlot;if(!d)return;for(;d.firstChild;)d.removeChild(d.firstChild);const V=e.loading?L(e.doc):e.iconEl;V?(d.appendChild(V),d.parentNode||(e.position==="end"?e.el.appendChild(d):e.el.insertBefore(d,e.el.firstChild))):d.parentNode&&d.parentNode.removeChild(d)}function i(e){return{kind:"item",type:"button",name:e.name!=null&&e.name!==""?String(e.name):null,label:e.label,disabled:e.disabled===!0,props:{icon:e.icon,iconPosition:e.iconPosition,variant:e.variant,fullWidth:e.fullWidth,size:e.size,textTransform:e.textTransform,buttonType:e.buttonType,loading:e.loading,href:e.href,ariaLabel:e.ariaLabel,toggle:e.toggle,focusableWhenDisabled:e.focusableWhenDisabled}}}function o(e,y){const d=y.doc,V=e.props||{},te=e.label!=null?String(e.label):"",I=N(V.icon,d),W=I!=null&&te==="",a=u(e)?d.createElement("a"):d.createElement("button");a.className=v,a.setAttribute("data-variant",p(V.variant)),a.setAttribute("data-size",l(V.size)),a.setAttribute("data-text-transform",t(V.textTransform)),V.fullWidth===!0&&a.setAttribute("data-full","true"),W&&a.setAttribute("data-icon-only","true"),e.name&&!u(e)&&(a.name=e.name),u(e)?a.setAttribute("href",V.href):a.type="button";const B=V.ariaLabel!=null?String(V.ariaLabel):W?String(e.name||""):"";B&&a.setAttribute("aria-label",B);const O=d.createElement("span");O.className=`${v}__icon`,O.setAttribute("aria-hidden","true"),I&&O.appendChild(I);let D=null;W||(D=d.createElement("span"),D.className=`${v}__label`,D.textContent=te!==""?te:String(e.name||""));const re=$(V.iconPosition);re==="end"?(D&&a.appendChild(D),O.firstChild&&a.appendChild(O)):(O.firstChild&&a.appendChild(O),D&&a.appendChild(D));const H={el:a,doc:d,iconSlot:O,iconEl:I,label:D,position:re,loading:!1,disabled:e.disabled===!0,toggle:V.toggle===!0,pressed:V.toggle===!0&&e.value===!0,focusableWhenDisabled:V.focusableWhenDisabled===!0};a.__latButton=H,H.toggle&&a.setAttribute("aria-pressed",H.pressed?"true":"false");const ce=()=>{if(H.loading||H.disabled)return;if(H.toggle){const ne=H.pressed;H.pressed=!H.pressed,a.setAttribute("aria-pressed",H.pressed?"true":"false"),y.emitter.emit("change",{name:e.name,value:H.pressed,previousValue:ne,item:e})}const le=j(V.buttonType);le==="submit"?(typeof y.form.validate!="function"||y.form.validate())&&g(y.el,d,typeof y.form.getValue=="function"?y.form.getValue():{}):le==="reset"&&typeof y.form.clear=="function"&&y.form.clear()};return a.addEventListener("click",ce),y.disposers.push(()=>a.removeEventListener("click",ce)),x(H,V.loading===!0),a}P("button",{kind:"button",action:!0,build(e,y){return f(y.doc),o(e,y)},read(e){const y=e&&e.__latButton;return y&&y.toggle?y.pressed:null},write(){},state(e,y){const d=e.__latButton;d&&(d.disabled=y.disabled===!0,r(d))},setLoading(e,y){const d=e.__latButton;d&&x(d,y)}})}),ge("packages/modules/form/controls/buttons.js",function(R,Y){"use strict";Object.defineProperty(R,"injectButtonsStyles",{enumerable:!0,get:function(){return f}});const P=Y("packages/modules/form/controls/registry.js").registerControl,v=Y("packages/modules/form/controls/button.js"),ee=v.buildButton,s=v.buttonItemFrom,z=v.injectButtonStyles,E="lat-button-row",_="data-lattice-button-row-styles",T=Object.freeze(["start","end","center","stretch","space-between"]);function k(){return`
1148
- .lat-form__control .${E}{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--lattice-space); }
1149
- .lat-form__control .${E}[data-align='start']{ justify-content:flex-start; }
1150
- .lat-form__control .${E}[data-align='end']{ justify-content:flex-end; }
1151
- .lat-form__control .${E}[data-align='center']{ justify-content:center; }
1152
- .lat-form__control .${E}[data-align='space-between']{ justify-content:space-between; }
1153
- .lat-form__control .${E}[data-align='stretch']{ justify-content:flex-start; }
1154
- .lat-form__control .${E}[data-align='stretch'] > .lat-button{ flex:1 1 auto; }
1155
- `.trim()}function f(l){const j=l&&l.documentElement;if(!j||j.getAttribute(_))return;j.setAttribute(_,"1");const $=l.createElement("style");$.textContent=k(),(l.head||l.body||j).appendChild($)}function p(l){return T.includes(l)?l:"start"}P("buttons",{kind:"display",action:!0,build(l,j){z(j.doc),f(j.doc);const $=l.props||{},t=Array.isArray($.buttons)?$.buttons:Array.isArray($.items)?$.items:[],u=j.doc.createElement("div");u.className=E,u.setAttribute("data-align",p($.align));const m=[];return t.forEach((N,L)=>{if(N==null||typeof N!="object")return;const g=s(N),r=ee(g,j),x=()=>{r.disabled||r.getAttribute("aria-disabled")==="true"||j.emitter.emit("click",{name:g.name,item:g,value:null})};r.addEventListener("click",x),m.push(()=>r.removeEventListener("click",x)),u.appendChild(r)}),j.disposers.push(()=>{for(const N of m)N()}),u},read(){return null},write(){},state(){}})}),ge("packages/modules/form/controls/text.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl;P("text",{kind:"display",build(v,ee){const s=ee.doc.createElement("span");return s.className="lat-form__text",s.textContent=v.value==null?"":String(v.value),s},read(v){return v.textContent},write(v,ee){v.textContent=ee==null?"":String(ee)},state(){}})}),ge("packages/modules/form/controls/select.js",function(R,Y){"use strict";Object.defineProperty(R,"createSelect",{enumerable:!0,get:function(){return L}});const P=Y("packages/modules/form/controls/registry.js").registerControl,ee=Y("packages/modules/form/messages.js").t,s=Y("packages/modules/form/controls/combo.js"),z=s.renderAdornment,E=s.renderTemplateContent,_=s.injectAdornmentStyles,T=Y("packages/modules/form/controls/field-icon.js"),k=T.makeFieldIcon,f=T.injectFieldIconStyles,p=700;function l(r,x){const i=r&&r.defaultView;return i&&i.Event?new i.Event(x,{bubbles:!0}):{type:x,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function j(r){return r!=null&&typeof r=="object"?r.value==null?"":String(r.value):r==null?"":String(r)}function $(r){return r==null?"":typeof r!="object"?String(r):r.label!=null?String(r.label):r.text!=null?String(r.text):r.value==null?"":String(r.value)}function t(r){return r!=null&&typeof r=="object"&&Array.isArray(r.options)}function u(r){const x=[];if(!Array.isArray(r))return x;for(const i of r)if(t(i)){const o=$(i);x.push({group:!0,label:o});for(const e of i.options)if(t(e)){x.push({group:!0,label:$(e)});for(const y of e.options)x.push(m(y))}else x.push(m(e))}else x.push(m(i));return x}function m(r){const x=r!=null&&typeof r=="object"?r:{},i=x.description!=null?String(x.description):x.subtitle!=null?String(x.subtitle):null;return{group:!1,value:j(r),label:$(r),icon:x.icon,avatar:x.avatar,color:x.color,dot:x.dot,description:i,disabled:x.disabled===!0}}function N(r,x){return r===x?!0:r!=null&&x!=null&&String(r)===String(x)}function L(r,x={}){const i=x.doc||r&&r.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;i&&(_(i),f(i));const o=typeof x.t=="function"?x.t:ee,e=x.multiple===!0,y=u(x.options),d=y.filter(Q=>!Q.group);let V=[];const te=i.createElement("div");te.className="lat-combo lat-select",e&&te.setAttribute("data-multiple","true");const I=i.createElement("button");I.type="button",I.className="lat-select__trigger",I.setAttribute("role","combobox"),I.setAttribute("aria-haspopup","listbox"),I.setAttribute("aria-expanded","false"),e&&I.setAttribute("aria-multiselectable","true"),I.setAttribute("aria-label",x.ariaLabel||o("form.select.toggle"));const W=i.createElement("span");W.className="lat-select__value";const a=i.createElement("span");a.className="lat-select__arrow",a.setAttribute("aria-hidden","true");const B=k(i,"chevronDown");B&&a.appendChild(B),I.appendChild(W),I.appendChild(a);const O=i.createElement("div");O.className="lat-combo__popup lat-select__popup",O.hidden=!0;const D=i.createElement("div");D.className="lat-combo__list lat-select__list",D.setAttribute("role","listbox"),O.appendChild(D),te.appendChild(I),te.appendChild(O);const re=`lat-select-lb-${M()}`;D.id=re,I.setAttribute("aria-controls",re);const H=[];let ce=-1,le=!1,ne="",G=null;const b=[];let w=!1;function M(){return M.n=(M.n||0)+1,M.n}function U(Q,fe,se){Q.addEventListener(fe,se),b.push(()=>Q.removeEventListener(fe,se))}function X(Q){return d.find(fe=>N(fe.value,Q))||null}function Z(){r.dispatchEvent(l(i,"change"))}function q(){return e?V.slice():V.length?V[0]:""}function S(){if(!e){for(;W.firstChild;)W.removeChild(W.firstChild);if(V.length){const Q=X(V[0]),fe=E(i,Q,x.selectedTemplate);if(fe)W.appendChild(fe);else{const se=z(i,Q);se&&W.appendChild(se);const _e=i.createElement("span");_e.className="lat-select__label",_e.textContent=Q?Q.label:V[0],W.appendChild(_e)}W.removeAttribute("data-placeholder")}else W.textContent=x.placeholder!=null?String(x.placeholder):"",W.setAttribute("data-placeholder","true");return}V.length===0?(W.textContent=x.placeholder!=null?String(x.placeholder):"",W.setAttribute("data-placeholder","true")):(W.textContent=V.map(Q=>{const fe=X(Q);return fe?fe.label:Q}).join(", "),W.removeAttribute("data-placeholder"))}function C(Q){let fe;if(e)fe=Array.isArray(Q)?Q.map(String):Q==null||Q===""?[]:[String(Q)];else{const se=Array.isArray(Q)?Q.length?Q[0]:null:Q;fe=se==null||se===""?[]:[String(se)]}V=fe.filter(se=>d.some(_e=>_e.value===se)),S(),c()}function c(){for(const Q of H){const fe=Q.dataset.value||"",se=V.some(Re=>Re===fe);Q.setAttribute("aria-selected",se?"true":"false");const _e=Q.querySelector(".lat-select__check");_e&&(_e.textContent=se?"✓":"")}}function A(Q){for(let fe=Math.max(0,Q);fe<d.length;fe++)if(!d[fe].disabled)return fe;return-1}function h(Q){for(let fe=Math.min(d.length-1,Q);fe>=0;fe--)if(!d[fe].disabled)return fe;return-1}function F(Q){ce=Q;for(const fe of H)fe.classList.remove("lat-select__option--active");Q>=0&&Q<H.length?(H[Q].classList.add("lat-select__option--active"),I.setAttribute("aria-activedescendant",H[Q].id)):I.removeAttribute("aria-activedescendant")}function J(){if(ce<0||ce>=H.length)return;const Q=H[ce];Q.offsetTop<D.scrollTop?D.scrollTop=Q.offsetTop:Q.offsetTop+Q.offsetHeight>D.scrollTop+D.clientHeight&&(D.scrollTop=Q.offsetTop+Q.offsetHeight-D.clientHeight)}function ie(Q){const fe=ce<0?Q>0?-1:d.length:ce,se=Q>0?A(fe+1):h(fe-1);se!==-1&&F(se),J()}function oe(){if(le||w||x.disabled)return;le=!0,O.hidden=!1,I.setAttribute("aria-expanded","true");const Q=i&&i.defaultView,fe=I.getBoundingClientRect(),se=Q?Q.innerHeight:0,_e=O.offsetHeight||D.offsetHeight||0;if(se-fe.bottom<_e+4&&fe.top>_e+4?O.classList.add("lat-select__popup--above"):O.classList.remove("lat-select__popup--above"),ce<0&&d.length){const me=e?-1:V.length?d.findIndex(we=>N(we.value,V[0])):-1;F(A(me>=0?me:0))}}function pe(){le&&(le=!1,O.hidden=!0,O.classList.remove("lat-select__popup--above"),I.setAttribute("aria-expanded","false"),F(-1),ne="")}function be(){le?pe():oe()}function je(Q){if(x.readOnly)return;if(!e){const se=V.length===0||V[0]!==Q;V=[Q],S(),c(),pe(),se&&Z();return}V=V.some(se=>se===Q)?V.filter(se=>se!==Q):[...V,Q],S(),c(),I.focus(),Z()}function ke(){ce<0||ce>=d.length||d[ce].disabled||je(d[ce].value)}function Se(Q){G&&clearTimeout(G),ne+=Q.toLowerCase(),G=setTimeout(()=>{ne="",G=null},p),le||oe();const fe=ce>-1?ce+1:0;let se=-1;for(let _e=fe;_e<d.length;_e++)if(!d[_e].disabled&&d[_e].label.toLowerCase().startsWith(ne)){se=_e;break}if(se===-1){for(let _e=0;_e<fe;_e++)if(!d[_e].disabled&&d[_e].label.toLowerCase().startsWith(ne)){se=_e;break}}se!==-1&&(F(se),J())}function Ae(Q){const fe=Q.altKey===!0;if(Q.key==="ArrowDown"||fe&&Q.key==="ArrowDown")Q.preventDefault(),le?ie(1):(oe(),ce===-1&&d.length&&F(A(0)));else if(Q.key==="ArrowUp")Q.preventDefault(),le?ie(-1):(oe(),d.length&&F(h(d.length-1)));else if(Q.key==="Home"){if(!le)return;Q.preventDefault();const se=A(0);se!==-1&&F(se),J()}else if(Q.key==="End"){if(!le)return;Q.preventDefault();const se=h(d.length-1);se!==-1&&F(se),J()}else Q.key==="Enter"||Q.key===" "?(Q.preventDefault(),le?ke():oe()):Q.key==="Escape"?le&&(Q.preventDefault(),pe()):Q.key==="Tab"?le&&ke():Q.key.length===1&&!Q.ctrlKey&&!Q.metaKey&&!fe&&(Q.preventDefault(),Se(Q.key))}function Ne(Q){Q<0||Q>=d.length||d[Q].disabled||je(d[Q].value)}function de(Q,fe){const se=i.createElement("div");if(se.className="lat-combo__option",se.setAttribute("role","option"),se.id=`${re}-opt-${fe}`,se.setAttribute("data-value",Q.value),se.setAttribute("aria-selected","false"),Q.disabled&&(se.setAttribute("aria-disabled","true"),se.classList.add("lat-select__option--disabled")),e){const me=i.createElement("span");me.className="lat-select__check",me.setAttribute("aria-hidden","true"),se.appendChild(me)}const _e=E(i,Q,x.optionTemplate);if(_e)se.appendChild(_e);else{const me=z(i,Q);me&&se.appendChild(me);const we=i.createElement("span");we.className="lat-combo__text";const et=i.createElement("span");if(et.className="lat-combo__title",et.textContent=Q.label,we.appendChild(et),Q.description!=null){const He=i.createElement("span");He.className="lat-combo__subtitle",He.textContent=Q.description,we.appendChild(He)}se.appendChild(we)}return U(se,"click",me=>{me.stopPropagation(),Ne(fe)}),H.push(se),se}function Ce(){let Q=0,fe=0,se=null,_e=null;for(const Re of y)if(Re.group)se=i.createElement("div"),se.setAttribute("role","group"),_e=i.createElement("div"),_e.id=`${re}-grp-${fe}`,_e.className="lat-select__group",_e.textContent=Re.label||"",se.setAttribute("aria-labelledby",_e.id),se.appendChild(_e),D.appendChild(se),fe+=1;else{const me=de(Re,Q);Q+=1,se?se.appendChild(me):D.appendChild(me)}}const Ee=()=>{x.disabled||be()},he=()=>{r.dispatchEvent(l(i,"focus"))},Pe=()=>{r.dispatchEvent(l(i,"blur")),pe()},$e=Q=>{te.contains(Q.target)||pe()};U(I,"click",Ee),U(I,"keydown",Ae),U(I,"focus",he),U(I,"blur",Pe),U(D,"mousedown",Q=>Q.preventDefault()),i&&U(i,"mousedown",$e),Ce(),C(x.value);const ye={el:r,root:te,trigger:I,getValue:q,setValue(Q){return C(Q),ye},open(){return oe(),ye},close(){return pe(),ye},focus(){return I.focus(),ye},blur(){return I.blur(),ye},setDisabled(Q){x.disabled=Q,I.disabled=Q,Q&&pe()},setReadOnly(Q){x.readOnly=Q,Q?I.setAttribute("aria-readonly","true"):I.removeAttribute("aria-readonly")},destroy(){w=!0,G&&clearTimeout(G);for(const Q of b.splice(0))Q();for(;te.firstChild;)te.removeChild(te.firstChild)}};return r.appendChild(te),r.__select=ye,ye}function g(r,x){const i=x.doc.createElement("select");r.name&&(i.name=r.name);const o=r.props&&r.props.multiple===!0;o&&(i.multiple=!0),i.__multiple=o;const e=u(r.options),y=e.filter(I=>!I.group),d=x.doc.createElement("option");d.value="",d.textContent=r.placeholder!=null?String(r.placeholder):"",o||i.appendChild(d);let V=null;for(const I of e)if(I.group)V=x.doc.createElement("optgroup"),V.label=I.label||"",i.appendChild(V);else{const W=x.doc.createElement("option");W.value=I.value,W.textContent=I.label,I.disabled&&(W.disabled=!0),(V||i).appendChild(W)}const te=r.value==null?"":String(r.value);if(!o)i.value=y.some(I=>I.value===te)?te:"";else{const I=Array.isArray(r.value)?r.value.map(String):[];for(const W of i.options)W.selected=I.includes(W.value)}return i.__select={getValue(){return o?[...i.selectedOptions].map(I=>I.value):i.value},setValue(I){if(!o){const a=I==null?"":String(I);i.value=y.some(B=>B.value===a)?a:"";return}const W=Array.isArray(I)?I.map(String):[];for(const a of i.options)a.selected=W.includes(a.value)},setDisabled(I){i.disabled=I},setReadOnly(I){I&&(i.disabled=!0)},focus(){i.focus()},blur(){i.blur()},destroy(){}},i}P("select",{kind:"field",build(r,x){const i=r.props||{};if(i.native===!0)return g(r,x);const o=x.doc.createElement("div");return L(o,{options:r.options,multiple:i.multiple===!0,value:r.value,placeholder:r.placeholder,ariaLabel:r.label,optionTemplate:i.optionTemplate,selectedTemplate:i.selectedTemplate,t:x.t,doc:x.doc}),x.disposers.push(()=>{o.__select&&o.__select.destroy()}),o},read(r){return r.__select?r.__select.getValue():""},write(r,x){r.__select&&r.__select.setValue(x)},state(r,x){r.__select&&(r.__select.setDisabled(x.disabled===!0),r.__select.setReadOnly(x.readOnly===!0))},focus(r){r.__select&&r.__select.focus()},blur(r){r.__select&&r.__select.blur()}})}),ge("packages/modules/form/controls/options.js",function(R,Y){"use strict";Object.defineProperty(R,"normalizeOptions",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"resolveChoiceLayout",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"choiceLayoutCss",{enumerable:!0,get:function(){return s}}),Object.defineProperty(R,"injectChoiceLayoutStyles",{enumerable:!0,get:function(){return E}});const P=Y("packages/modules/form/styles.js").NS;function v(_){return Array.isArray(_)?_.map(T=>{if(typeof T=="string")return{value:T,label:T};if(T&&typeof T=="object"){const k=T.value==null?"":String(T.value),f=T.label!=null?String(T.label):T.text!=null?String(T.text):k;return{value:k,label:f}}return{value:"",label:""}}):[]}function ee(_){const T=_&&_.props?_.props:{},k=_&&_.orientation!=null?_.orientation:T.orientation;let f=_&&_.columns!=null?_.columns:T.columns;return f=typeof f=="number"&&Number.isFinite(f)&&f>=1?Math.floor(f):0,f>0?{orientation:"vertical",columns:f}:{orientation:k==="horizontal"?"horizontal":"vertical",columns:0}}function s(){return`
1156
- .${P}__radiogroup--horizontal,
1157
- .${P}__checkboxgroup--horizontal{
1248
+ `.trim()}function g(r){const C=r&&r.documentElement;if(!C||C.getAttribute(te))return;C.setAttribute(te,"1");const b=r.createElement("style");b.textContent=N(),(r.head||r.body||C).appendChild(b)}function p(r){return O.includes(r)?r:"secondary"}function a(r){return k.includes(r)?r:"md"}function $(r){return I.includes(r)?r:"button"}function y(r){return r==="end"?"end":"start"}function n(r){return r==="uppercase"?"uppercase":"none"}function d(r){const C=r.props&&r.props.href;return typeof C=="string"&&C!==""}function h(r,C){const b=r.createElementNS(u,"svg");b.setAttribute("viewBox",C.viewBox),b.setAttribute("focusable","false"),b.setAttribute("aria-hidden","true"),C.paint==="stroke"?(b.setAttribute("fill","none"),b.setAttribute("stroke","currentColor"),b.setAttribute("stroke-width","1.5"),b.setAttribute("stroke-linecap","round"),b.setAttribute("stroke-linejoin","round")):b.setAttribute("fill","currentColor");for(const G of C.paths){const oe=r.createElementNS(u,"path");oe.setAttribute("d",G),b.appendChild(oe)}return b}function z(r,C){if(r==null)return null;if(typeof r=="object"&&r.nodeType)return r;if(typeof r!="string"||r==="")return null;const b=r;if(/^(https?:)?\/\//i.test(b)||/^data:/i.test(b)){const oe=C.createElement("img");return oe.src=b,oe.alt="",oe}const G=L[b];return G?h(C,G):null}function W(r){const C=r.createElementNS(u,"svg");C.setAttribute("viewBox","0 0 16 16"),C.setAttribute("focusable","false"),C.setAttribute("aria-hidden","true"),C.setAttribute("class",`${v}__spinner`);const b=r.createElementNS(u,"circle");return b.setAttribute("cx","8"),b.setAttribute("cy","8"),b.setAttribute("r","6"),b.setAttribute("fill","none"),b.setAttribute("stroke","currentColor"),b.setAttribute("stroke-width","2"),b.setAttribute("stroke-linecap","round"),b.setAttribute("stroke-dasharray","28"),b.setAttribute("stroke-dashoffset","10"),C.appendChild(b),C}function S(r,C,b){const G=C&&C.defaultView,oe=G&&G.CustomEvent,U=oe?new oe("submit",{bubbles:!0,detail:{values:b}}):{type:"submit",bubbles:!0,cancelable:!1,defaultPrevented:!1,detail:{values:b},preventDefault(){this.defaultPrevented=!0}};r.dispatchEvent(U)}function c(r){const C=r.loading===!0,b=r.disabled===!0&&r.focusableWhenDisabled!==!0||C;r.el.disabled=b,r.el.setAttribute("aria-disabled",r.disabled===!0||C?"true":"false")}function x(r,C){r.loading=C===!0,r.el.setAttribute("aria-busy",r.loading?"true":"false"),c(r);const b=r.iconSlot;if(!b)return;for(;b.firstChild;)b.removeChild(b.firstChild);const G=r.loading?W(r.doc):r.iconEl;G?(b.appendChild(G),b.parentNode||(r.position==="end"?r.el.appendChild(b):r.el.insertBefore(b,r.el.firstChild))):b.parentNode&&b.parentNode.removeChild(b)}function t(r){return{kind:"item",type:"button",name:r.name!=null&&r.name!==""?String(r.name):null,label:r.label,disabled:r.disabled===!0,props:{icon:r.icon,iconPosition:r.iconPosition,variant:r.variant,fullWidth:r.fullWidth,size:r.size,textTransform:r.textTransform,buttonType:r.buttonType,loading:r.loading,href:r.href,ariaLabel:r.ariaLabel,toggle:r.toggle,focusableWhenDisabled:r.focusableWhenDisabled}}}function i(r,C){const b=C.doc,G=r.props||{},oe=r.label!=null?String(r.label):"",U=z(G.icon,b),K=U!=null&&oe==="",l=d(r)?b.createElement("a"):b.createElement("button");l.className=v,l.setAttribute("data-variant",p(G.variant)),l.setAttribute("data-size",a(G.size)),l.setAttribute("data-text-transform",n(G.textTransform)),G.fullWidth===!0&&l.setAttribute("data-full","true"),K&&l.setAttribute("data-icon-only","true"),r.name&&!d(r)&&(l.name=r.name),d(r)?l.setAttribute("href",G.href):l.type="button";const H=G.ariaLabel!=null?String(G.ariaLabel):K?String(r.name||""):"";H&&l.setAttribute("aria-label",H);const J=b.createElement("span");J.className=`${v}__icon`,J.setAttribute("aria-hidden","true"),U&&J.appendChild(U);let Y=null;K||(Y=b.createElement("span"),Y.className=`${v}__label`,Y.textContent=oe!==""?oe:String(r.name||""));const B=y(G.iconPosition);B==="end"?(Y&&l.appendChild(Y),J.firstChild&&l.appendChild(J)):(J.firstChild&&l.appendChild(J),Y&&l.appendChild(Y));const V={el:l,doc:b,iconSlot:J,iconEl:U,label:Y,position:B,loading:!1,disabled:r.disabled===!0,toggle:G.toggle===!0,pressed:G.toggle===!0&&r.value===!0,focusableWhenDisabled:G.focusableWhenDisabled===!0};l.__latButton=V,V.toggle&&l.setAttribute("aria-pressed",V.pressed?"true":"false");const ce=()=>{if(V.loading||V.disabled)return;if(V.toggle){const ne=V.pressed;V.pressed=!V.pressed,l.setAttribute("aria-pressed",V.pressed?"true":"false"),C.emitter.emit("change",{name:r.name,value:V.pressed,previousValue:ne,item:r})}const ue=$(G.buttonType);ue==="submit"?(typeof C.form.validate!="function"||C.form.validate())&&S(C.el,b,typeof C.form.getValue=="function"?C.form.getValue():{}):ue==="reset"&&typeof C.form.clear=="function"&&C.form.clear()};return l.addEventListener("click",ce),C.disposers.push(()=>l.removeEventListener("click",ce)),x(V,G.loading===!0),l}T("button",{kind:"button",action:!0,build(r,C){return g(C.doc),i(r,C)},read(r){const C=r&&r.__latButton;return C&&C.toggle?C.pressed:null},write(){},state(r,C){const b=r.__latButton;b&&(b.disabled=C.disabled===!0,c(b))},setLoading(r,C){const b=r.__latButton;b&&x(b,C)}})}),_e("packages/modules/form/controls/buttons.js",function(F,X){"use strict";Object.defineProperty(F,"injectButtonsStyles",{enumerable:!0,get:function(){return g}});const T=X("packages/modules/form/controls/registry.js").registerControl,v=X("packages/modules/form/controls/button.js"),te=v.buildButton,u=v.buttonItemFrom,L=v.injectButtonStyles,O="lat-button-row",k="data-lattice-button-row-styles",I=Object.freeze(["start","end","center","stretch","space-between"]);function N(){return`
1249
+ .lat-form__control .${O}{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--lattice-space); }
1250
+ .lat-form__control .${O}[data-align='start']{ justify-content:flex-start; }
1251
+ .lat-form__control .${O}[data-align='end']{ justify-content:flex-end; }
1252
+ .lat-form__control .${O}[data-align='center']{ justify-content:center; }
1253
+ .lat-form__control .${O}[data-align='space-between']{ justify-content:space-between; }
1254
+ .lat-form__control .${O}[data-align='stretch']{ justify-content:flex-start; }
1255
+ .lat-form__control .${O}[data-align='stretch'] > .lat-button{ flex:1 1 auto; }
1256
+ `.trim()}function g(a){const $=a&&a.documentElement;if(!$||$.getAttribute(k))return;$.setAttribute(k,"1");const y=a.createElement("style");y.textContent=N(),(a.head||a.body||$).appendChild(y)}function p(a){return I.includes(a)?a:"start"}T("buttons",{kind:"display",action:!0,build(a,$){L($.doc),g($.doc);const y=a.props||{},n=Array.isArray(y.buttons)?y.buttons:Array.isArray(y.items)?y.items:[],d=$.doc.createElement("div");d.className=O,d.setAttribute("data-align",p(y.align));const h=[];return n.forEach((z,W)=>{if(z==null||typeof z!="object")return;const S=u(z),c=te(S,$),x=()=>{c.disabled||c.getAttribute("aria-disabled")==="true"||$.emitter.emit("click",{name:S.name,item:S,value:null})};c.addEventListener("click",x),h.push(()=>c.removeEventListener("click",x)),d.appendChild(c)}),$.disposers.push(()=>{for(const z of h)z()}),d},read(){return null},write(){},state(){}})}),_e("packages/modules/form/controls/text.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl;T("text",{kind:"display",build(v,te){const u=te.doc.createElement("span");return u.className="lat-form__text",u.textContent=v.value==null?"":String(v.value),u},read(v){return v.textContent},write(v,te){v.textContent=te==null?"":String(te)},state(){}})}),_e("packages/modules/form/controls/select.js",function(F,X){"use strict";Object.defineProperty(F,"createSelect",{enumerable:!0,get:function(){return W}});const T=X("packages/modules/form/controls/registry.js").registerControl,te=X("packages/modules/form/messages.js").t,u=X("packages/modules/form/controls/combo.js"),L=u.renderAdornment,O=u.renderTemplateContent,k=u.injectAdornmentStyles,I=X("packages/modules/form/controls/field-icon.js"),N=I.makeFieldIcon,g=I.injectFieldIconStyles,p=700;function a(c,x){const t=c&&c.defaultView;return t&&t.Event?new t.Event(x,{bubbles:!0}):{type:x,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,currentTarget:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}}}function $(c){return c!=null&&typeof c=="object"?c.value==null?"":String(c.value):c==null?"":String(c)}function y(c){return c==null?"":typeof c!="object"?String(c):c.label!=null?String(c.label):c.text!=null?String(c.text):c.value==null?"":String(c.value)}function n(c){return c!=null&&typeof c=="object"&&Array.isArray(c.options)}function d(c){const x=[];if(!Array.isArray(c))return x;for(const t of c)if(n(t)){const i=y(t);x.push({group:!0,label:i});for(const r of t.options)if(n(r)){x.push({group:!0,label:y(r)});for(const C of r.options)x.push(h(C))}else x.push(h(r))}else x.push(h(t));return x}function h(c){const x=c!=null&&typeof c=="object"?c:{},t=x.description!=null?String(x.description):x.subtitle!=null?String(x.subtitle):null;return{group:!1,value:$(c),label:y(c),icon:x.icon,avatar:x.avatar,color:x.color,dot:x.dot,description:t,disabled:x.disabled===!0}}function z(c,x){return c===x?!0:c!=null&&x!=null&&String(c)===String(x)}function W(c,x={}){const t=x.doc||c&&c.ownerDocument||typeof globalThis<"u"&&globalThis.document||null;t&&(k(t),g(t));const i=typeof x.t=="function"?x.t:te,r=x.multiple===!0,C=d(x.options),b=C.filter(ee=>!ee.group);let G=[];const oe=t.createElement("div");oe.className="lat-combo lat-select",r&&oe.setAttribute("data-multiple","true");const U=t.createElement("button");U.type="button",U.className="lat-select__trigger",U.setAttribute("role","combobox"),U.setAttribute("aria-haspopup","listbox"),U.setAttribute("aria-expanded","false"),r&&U.setAttribute("aria-multiselectable","true"),U.setAttribute("aria-label",x.ariaLabel||i("form.select.toggle"));const K=t.createElement("span");K.className="lat-select__value";const l=t.createElement("span");l.className="lat-select__arrow",l.setAttribute("aria-hidden","true");const H=N(t,"chevronDown");H&&l.appendChild(H),U.appendChild(K),U.appendChild(l);const J=t.createElement("div");J.className="lat-combo__popup lat-select__popup",J.hidden=!0;const Y=t.createElement("div");Y.className="lat-combo__list lat-select__list",Y.setAttribute("role","listbox"),J.appendChild(Y),oe.appendChild(U),oe.appendChild(J);const B=`lat-select-lb-${o()}`;Y.id=B,U.setAttribute("aria-controls",B);const V=[];let ce=-1,ue=!1,ne="",f=null;const j=[];let M=!1;function o(){return o.n=(o.n||0)+1,o.n}function E(ee,be,le){ee.addEventListener(be,le),j.push(()=>ee.removeEventListener(be,le))}function D(ee){return b.find(be=>z(be.value,ee))||null}function P(){c.dispatchEvent(a(t,"change"))}function Z(){return r?G.slice():G.length?G[0]:""}function A(){if(!r){for(;K.firstChild;)K.removeChild(K.firstChild);if(G.length){const ee=D(G[0]),be=O(t,ee,x.selectedTemplate);if(be)K.appendChild(be);else{const le=L(t,ee);le&&K.appendChild(le);const we=t.createElement("span");we.className="lat-select__label",we.textContent=ee?ee.label:G[0],K.appendChild(we)}K.removeAttribute("data-placeholder")}else K.textContent=x.placeholder!=null?String(x.placeholder):"",K.setAttribute("data-placeholder","true");return}G.length===0?(K.textContent=x.placeholder!=null?String(x.placeholder):"",K.setAttribute("data-placeholder","true")):(K.textContent=G.map(ee=>{const be=D(ee);return be?be.label:ee}).join(", "),K.removeAttribute("data-placeholder"))}function _(ee){let be;if(r)be=Array.isArray(ee)?ee.map(String):ee==null||ee===""?[]:[String(ee)];else{const le=Array.isArray(ee)?ee.length?ee[0]:null:ee;be=le==null||le===""?[]:[String(le)]}G=be.filter(le=>b.some(we=>we.value===le)),A(),s()}function s(){for(const ee of V){const be=ee.dataset.value||"",le=G.some(Re=>Re===be);ee.setAttribute("aria-selected",le?"true":"false");const we=ee.querySelector(".lat-select__check");we&&(we.textContent=le?"✓":"")}}function w(ee){for(let be=Math.max(0,ee);be<b.length;be++)if(!b[be].disabled)return be;return-1}function m(ee){for(let be=Math.min(b.length-1,ee);be>=0;be--)if(!b[be].disabled)return be;return-1}function R(ee){ce=ee;for(const be of V)be.classList.remove("lat-select__option--active");ee>=0&&ee<V.length?(V[ee].classList.add("lat-select__option--active"),U.setAttribute("aria-activedescendant",V[ee].id)):U.removeAttribute("aria-activedescendant")}function q(){if(ce<0||ce>=V.length)return;const ee=V[ce];ee.offsetTop<Y.scrollTop?Y.scrollTop=ee.offsetTop:ee.offsetTop+ee.offsetHeight>Y.scrollTop+Y.clientHeight&&(Y.scrollTop=ee.offsetTop+ee.offsetHeight-Y.clientHeight)}function re(ee){const be=ce<0?ee>0?-1:b.length:ce,le=ee>0?w(be+1):m(be-1);le!==-1&&R(le),q()}function ie(){if(ue||M||x.disabled)return;ue=!0,J.hidden=!1,U.setAttribute("aria-expanded","true");const ee=t&&t.defaultView,be=U.getBoundingClientRect(),le=ee?ee.innerHeight:0,we=J.offsetHeight||Y.offsetHeight||0;if(le-be.bottom<we+4&&be.top>we+4?J.classList.add("lat-select__popup--above"):J.classList.remove("lat-select__popup--above"),ce<0&&b.length){const he=r?-1:G.length?b.findIndex(Ce=>z(Ce.value,G[0])):-1;R(w(he>=0?he:0))}}function ge(){ue&&(ue=!1,J.hidden=!0,J.classList.remove("lat-select__popup--above"),U.setAttribute("aria-expanded","false"),R(-1),ne="")}function pe(){ue?ge():ie()}function Se(ee){if(x.readOnly)return;if(!r){const le=G.length===0||G[0]!==ee;G=[ee],A(),s(),ge(),le&&P();return}G=G.some(le=>le===ee)?G.filter(le=>le!==ee):[...G,ee],A(),s(),U.focus(),P()}function xe(){ce<0||ce>=b.length||b[ce].disabled||Se(b[ce].value)}function Ee(ee){f&&clearTimeout(f),ne+=ee.toLowerCase(),f=setTimeout(()=>{ne="",f=null},p),ue||ie();const be=ce>-1?ce+1:0;let le=-1;for(let we=be;we<b.length;we++)if(!b[we].disabled&&b[we].label.toLowerCase().startsWith(ne)){le=we;break}if(le===-1){for(let we=0;we<be;we++)if(!b[we].disabled&&b[we].label.toLowerCase().startsWith(ne)){le=we;break}}le!==-1&&(R(le),q())}function je(ee){const be=ee.altKey===!0;if(ee.key==="ArrowDown"||be&&ee.key==="ArrowDown")ee.preventDefault(),ue?re(1):(ie(),ce===-1&&b.length&&R(w(0)));else if(ee.key==="ArrowUp")ee.preventDefault(),ue?re(-1):(ie(),b.length&&R(m(b.length-1)));else if(ee.key==="Home"){if(!ue)return;ee.preventDefault();const le=w(0);le!==-1&&R(le),q()}else if(ee.key==="End"){if(!ue)return;ee.preventDefault();const le=m(b.length-1);le!==-1&&R(le),q()}else ee.key==="Enter"||ee.key===" "?(ee.preventDefault(),ue?xe():ie()):ee.key==="Escape"?ue&&(ee.preventDefault(),ge()):ee.key==="Tab"?ue&&xe():ee.key.length===1&&!ee.ctrlKey&&!ee.metaKey&&!be&&(ee.preventDefault(),Ee(ee.key))}function Ne(ee){ee<0||ee>=b.length||b[ee].disabled||Se(b[ee].value)}function de(ee,be){const le=t.createElement("div");if(le.className="lat-combo__option",le.setAttribute("role","option"),le.id=`${B}-opt-${be}`,le.setAttribute("data-value",ee.value),le.setAttribute("aria-selected","false"),ee.disabled&&(le.setAttribute("aria-disabled","true"),le.classList.add("lat-select__option--disabled")),r){const he=t.createElement("span");he.className="lat-select__check",he.setAttribute("aria-hidden","true"),le.appendChild(he)}const we=O(t,ee,x.optionTemplate);if(we)le.appendChild(we);else{const he=L(t,ee);he&&le.appendChild(he);const Ce=t.createElement("span");Ce.className="lat-combo__text";const et=t.createElement("span");if(et.className="lat-combo__title",et.textContent=ee.label,Ce.appendChild(et),ee.description!=null){const Ve=t.createElement("span");Ve.className="lat-combo__subtitle",Ve.textContent=ee.description,Ce.appendChild(Ve)}le.appendChild(Ce)}return E(le,"click",he=>{he.stopPropagation(),Ne(be)}),V.push(le),le}function $e(){let ee=0,be=0,le=null,we=null;for(const Re of C)if(Re.group)le=t.createElement("div"),le.setAttribute("role","group"),we=t.createElement("div"),we.id=`${B}-grp-${be}`,we.className="lat-select__group",we.textContent=Re.label||"",le.setAttribute("aria-labelledby",we.id),le.appendChild(we),Y.appendChild(le),be+=1;else{const he=de(Re,ee);ee+=1,le?le.appendChild(he):Y.appendChild(he)}}const Oe=()=>{x.disabled||pe()},ve=()=>{c.dispatchEvent(a(t,"focus"))},se=()=>{c.dispatchEvent(a(t,"blur")),ge()},fe=ee=>{oe.contains(ee.target)||ge()};E(U,"click",Oe),E(U,"keydown",je),E(U,"focus",ve),E(U,"blur",se),E(Y,"mousedown",ee=>ee.preventDefault()),t&&E(t,"mousedown",fe),$e(),_(x.value);const ye={el:c,root:oe,trigger:U,getValue:Z,setValue(ee){return _(ee),ye},open(){return ie(),ye},close(){return ge(),ye},focus(){return U.focus(),ye},blur(){return U.blur(),ye},setDisabled(ee){x.disabled=ee,U.disabled=ee,ee&&ge()},setReadOnly(ee){x.readOnly=ee,ee?U.setAttribute("aria-readonly","true"):U.removeAttribute("aria-readonly")},destroy(){M=!0,f&&clearTimeout(f);for(const ee of j.splice(0))ee();for(;oe.firstChild;)oe.removeChild(oe.firstChild)}};return c.appendChild(oe),c.__select=ye,ye}function S(c,x){const t=x.doc.createElement("select");c.name&&(t.name=c.name);const i=c.props&&c.props.multiple===!0;i&&(t.multiple=!0),t.__multiple=i;const r=d(c.options),C=r.filter(U=>!U.group),b=x.doc.createElement("option");b.value="",b.textContent=c.placeholder!=null?String(c.placeholder):"",i||t.appendChild(b);let G=null;for(const U of r)if(U.group)G=x.doc.createElement("optgroup"),G.label=U.label||"",t.appendChild(G);else{const K=x.doc.createElement("option");K.value=U.value,K.textContent=U.label,U.disabled&&(K.disabled=!0),(G||t).appendChild(K)}const oe=c.value==null?"":String(c.value);if(!i)t.value=C.some(U=>U.value===oe)?oe:"";else{const U=Array.isArray(c.value)?c.value.map(String):[];for(const K of t.options)K.selected=U.includes(K.value)}return t.__select={getValue(){return i?[...t.selectedOptions].map(U=>U.value):t.value},setValue(U){if(!i){const l=U==null?"":String(U);t.value=C.some(H=>H.value===l)?l:"";return}const K=Array.isArray(U)?U.map(String):[];for(const l of t.options)l.selected=K.includes(l.value)},setDisabled(U){t.disabled=U},setReadOnly(U){U&&(t.disabled=!0)},focus(){t.focus()},blur(){t.blur()},destroy(){}},t}T("select",{kind:"field",build(c,x){const t=c.props||{};if(t.native===!0)return S(c,x);const i=x.doc.createElement("div");return W(i,{options:c.options,multiple:t.multiple===!0,value:c.value,placeholder:c.placeholder,ariaLabel:c.label,optionTemplate:t.optionTemplate,selectedTemplate:t.selectedTemplate,t:x.t,doc:x.doc}),x.disposers.push(()=>{i.__select&&i.__select.destroy()}),i},read(c){return c.__select?c.__select.getValue():""},write(c,x){c.__select&&c.__select.setValue(x)},state(c,x){c.__select&&(c.__select.setDisabled(x.disabled===!0),c.__select.setReadOnly(x.readOnly===!0))},focus(c){c.__select&&c.__select.focus()},blur(c){c.__select&&c.__select.blur()}})}),_e("packages/modules/form/controls/options.js",function(F,X){"use strict";Object.defineProperty(F,"normalizeOptions",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"resolveChoiceLayout",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"choiceLayoutCss",{enumerable:!0,get:function(){return u}}),Object.defineProperty(F,"injectChoiceLayoutStyles",{enumerable:!0,get:function(){return O}});const T=X("packages/modules/form/styles.js").NS;function v(k){return Array.isArray(k)?k.map(I=>{if(typeof I=="string")return{value:I,label:I};if(I&&typeof I=="object"){const N=I.value==null?"":String(I.value),g=I.label!=null?String(I.label):I.text!=null?String(I.text):N;return{value:N,label:g}}return{value:"",label:""}}):[]}function te(k){const I=k&&k.props?k.props:{},N=k&&k.orientation!=null?k.orientation:I.orientation;let g=k&&k.columns!=null?k.columns:I.columns;return g=typeof g=="number"&&Number.isFinite(g)&&g>=1?Math.floor(g):0,g>0?{orientation:"vertical",columns:g}:{orientation:N==="horizontal"?"horizontal":"vertical",columns:0}}function u(){return`
1257
+ .${T}__radiogroup--horizontal,
1258
+ .${T}__checkboxgroup--horizontal{
1158
1259
  flex-direction:row; flex-wrap:wrap; align-items:center;
1159
1260
  gap:calc(var(--lattice-space) * 1.5);
1160
1261
  }
1161
- .${P}__radiogroup--columns,
1162
- .${P}__checkboxgroup--columns{
1262
+ .${T}__radiogroup--columns,
1263
+ .${T}__checkboxgroup--columns{
1163
1264
  display:grid; grid-template-columns:repeat(var(--lat-form-columns, 1), minmax(0, 1fr));
1164
1265
  gap:var(--lattice-space);
1165
1266
  }
1166
- `.trim()}const z="data-lattice-form-choice-styles";function E(_){const T=_&&_.documentElement;if(!T||T.getAttribute(z))return;T.setAttribute(z,"1");const k=_.createElement("style");k.textContent=s(),(_.head||_.body||T).appendChild(k)}}),ge("packages/modules/form/controls/radiogroup.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v=Y("packages/modules/form/controls/options.js"),ee=v.normalizeOptions,s=v.resolveChoiceLayout,z=v.injectChoiceLayoutStyles,E=Y("packages/modules/form/state.js"),_=E.applyBooleanInputState,T=E.guardBooleanInput;P("radiogroup",{kind:"field",build(k,f){const p=f.doc.createElement("div");p.className="lat-form__radiogroup",p.setAttribute("role","radiogroup"),k.label!=null&&k.label!==""&&p.setAttribute("aria-label",String(k.label));const l=s(k);l.columns>0?(z(f.doc),p.classList.add("lat-form__radiogroup--columns"),p.style.setProperty("--lat-form-columns",String(l.columns))):l.orientation==="horizontal"&&(z(f.doc),p.classList.add("lat-form__radiogroup--horizontal")),p.setAttribute("aria-orientation",l.orientation);const j=[];for(const $ of ee(k.options)){const t=f.doc.createElement("label");t.className="lat-form__choice";const u=f.doc.createElement("input");u.type="radio",k.name&&(u.name=k.name),u.value=$.value,u.checked=k.value!=null&&String(k.value)===$.value,T(u),t.appendChild(u);const m=f.doc.createElement("span");m.textContent=$.label,t.appendChild(m),p.appendChild(t),j.push(u)}return p.__radios=j,p},read(k){const f=k.__radios.find(p=>p.checked);return f?f.value:null},write(k,f){const p=f==null?null:String(f);for(const l of k.__radios)l.checked=p!==null&&l.value===p},state(k,f){const p=f.readOnly===!0;for(const l of k.__radios)_(l,f.disabled===!0,p);p?k.setAttribute("aria-readonly","true"):k.removeAttribute("aria-readonly")},focus(k){const f=k.__radios.find(p=>!p.disabled);f&&f.focus()}})}),ge("packages/modules/form/controls/checkboxgroup.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v=Y("packages/modules/form/controls/options.js"),ee=v.normalizeOptions,s=v.resolveChoiceLayout,z=v.injectChoiceLayoutStyles,E=Y("packages/modules/form/state.js"),_=E.applyBooleanInputState,T=E.guardBooleanInput;P("checkboxgroup",{kind:"field",build(k,f){const p=f.doc.createElement("div");p.className="lat-form__checkboxgroup",p.setAttribute("role","group"),k.label!=null&&k.label!==""&&p.setAttribute("aria-label",String(k.label));const l=s(k);l.columns>0?(z(f.doc),p.classList.add("lat-form__checkboxgroup--columns"),p.style.setProperty("--lat-form-columns",String(l.columns))):l.orientation==="horizontal"&&(z(f.doc),p.classList.add("lat-form__checkboxgroup--horizontal"));const j=[],$=Array.isArray(k.value)?k.value.map(String):[];for(const t of ee(k.options)){const u=f.doc.createElement("label");u.className="lat-form__choice";const m=f.doc.createElement("input");m.type="checkbox",k.name&&(m.name=k.name),m.value=t.value,m.checked=$.includes(t.value),T(m),u.appendChild(m);const N=f.doc.createElement("span");N.textContent=t.label,u.appendChild(N),p.appendChild(u),j.push(m)}return p.__boxes=j,p},read(k){return k.__boxes.filter(f=>f.checked).map(f=>f.value)},write(k,f){const p=Array.isArray(f)?f.map(String):[];for(const l of k.__boxes)l.checked=p.includes(l.value)},state(k,f){const p=f.readOnly===!0;for(const l of k.__boxes)_(l,f.disabled===!0,p);p?k.setAttribute("aria-readonly","true"):k.removeAttribute("aria-readonly")},focus(k){const f=k.__boxes.find(p=>!p.disabled);f&&f.focus()}})}),ge("packages/modules/form/controls/toggle.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v=Y("packages/modules/form/state.js"),ee=v.applyBooleanInputState,s=v.guardBooleanInput;P("toggle",{kind:"toggle",build(z,E){const _=E.doc.createElement("input");return _.type="checkbox",_.className="lat-form__toggle",_.setAttribute("role","switch"),z.name&&(_.name=z.name),_.checked=z.value===!0,s(_),_},read(z){return z.checked},write(z,E){z.checked=E===!0},state(z,E){ee(z,E.disabled===!0,E.readOnly===!0)}})}),ge("packages/modules/form/controls/datepicker.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v=Y("packages/modules/form/controls/field-icon.js"),ee=v.makeFieldIcon,s=v.injectFieldIconStyles,z=Object.freeze(["date","date-time","time"]);function E(a){return String(a).padStart(2,"0")}function _(a){return a}function T(a){return a.mode==="date-time"||a.mode==="time"?a.mode:"date"}function k(a,B){return new Date(a,B,0).getDate()}function f(a,B){if(!(B instanceof Date)||Number.isNaN(B.getTime()))return null;const O={y:B.getFullYear(),mo:B.getMonth()+1,d:B.getDate(),h:B.getHours(),mi:B.getMinutes()},D=a.timeZone;if(!D)return O;try{const re=new Intl.DateTimeFormat("en-US",{timeZone:D,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(B),H={y:0,mo:1,d:1,h:0,mi:0};for(const ce of re)ce.type==="year"?H.y=Number(ce.value):ce.type==="month"?H.mo=Number(ce.value):ce.type==="day"?H.d=Number(ce.value):ce.type==="hour"?H.h=Number(ce.value)%24:ce.type==="minute"&&(H.mi=Number(ce.value));return H}catch{return O}}function p(a,B){if(B==null||B==="")return null;if(typeof B=="number")return f(a,new Date(B));if(B instanceof Date)return f(a,B);if(typeof B=="string"){const O=B.trim();if(T(a)==="time"){const re=/^(\d{1,2}):(\d{2})/.exec(O);return re?{y:null,mo:null,d:null,h:Number(re[1]),mi:Number(re[2])}:null}const D=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{1,2}):(\d{2})(?::(\d{2}))?)?/.exec(O);return D?{y:Number(D[1]),mo:Number(D[2]),d:Number(D[3]),h:D[4]!=null?Number(D[4]):0,mi:D[5]!=null?Number(D[5]):0}:null}return null}function l(a,B){if(!B)return null;if(T(a)==="time")return`${E(B.h)}:${E(B.mi)}`;const O=`${E(B.y)}-${E(B.mo)}-${E(B.d)}`;return T(a)==="date"?O:`${O}T${E(B.h)}:${E(B.mi)}`}function j(a,B){if(!B)return"";const O=T(a);if(O==="time")return`${E(B.h)}:${E(B.mi)}`;const D=a.locale||void 0,re={dateStyle:"medium"};return O==="date-time"&&(re.timeStyle="short"),new Intl.DateTimeFormat(D,re).format(new Date(B.y,B.mo-1,B.d,B.h,B.mi))}function $(a,B){return B==null?!0:!(a.min!=null&&B<String(a.min)||a.max!=null&&B>String(a.max))}function t(a,B){return new Intl.DateTimeFormat(a.locale||void 0,{weekday:"narrow"}).format(new Date(2021,0,3+B))}function u(a,B){return new Intl.DateTimeFormat(a.locale||void 0,{month:"long",year:"numeric"}).format(new Date(B.y,B.mo-1,1))}function m(a){const B=a.ownerDocument&&a.ownerDocument.defaultView,O=B&&typeof B.Event=="function"?B.Event:null;a.dispatchEvent(O?new O("change",{bubbles:!0}):{type:"change",bubbles:!0})}function N(a,B){a.__fields=B,a.__input.value=j(a.__item,B),m(a)}function L(a,B){let{y:O,mo:D}=a.__view,re=a.__cursor+B;for(;re<1;)D-=1,D<1&&(D=12,O-=1),re+=k(O,D);let H=k(O,D);for(;re>H;)re-=H,D+=1,D>12&&(D=1,O+=1),H=k(O,D);a.__view={y:O,mo:D},a.__cursor=re,o(a)}function g(a){try{const B=new Intl.DateTimeFormat(a.locale||void 0,{hour:"numeric"}).resolvedOptions().hourCycle;return B==="h11"||B==="h12"}catch{return!1}}function r(a){try{const B=new Intl.DateTimeFormat(a.locale||void 0,{hour:"numeric",hour12:!0}),O=B.formatToParts(new Date(2021,0,1,9)).find(re=>re.type==="dayPeriod"),D=B.formatToParts(new Date(2021,0,1,15)).find(re=>re.type==="dayPeriod");if(O&&D)return{am:O.value,pm:D.value}}catch{}return null}function x(a){const B=a%12;return B===0?12:B}function i(a,B){return B?a===12?12:a+12:a===12?0:a}function o(a){const B=a.__item,O=a.ownerDocument,D=a.__popup,re=a.__view,H=T(B),ce=a.__fields;for(;D.firstChild;)D.removeChild(D.firstChild);if(H!=="time"){const le=O.createElement("div");le.className="lat-form__datepicker-head";const ne=O.createElement("button");ne.type="button",ne.className="lat-form__datepicker-nav",ne.setAttribute("aria-label",a.__t("form.datepicker.prev")),ne.textContent="‹",ne.addEventListener("click",()=>{e(a,-1)});const G=O.createElement("span");G.className="lat-form__datepicker-title",G.textContent=u(B,re);const b=O.createElement("button");b.type="button",b.className="lat-form__datepicker-nav",b.setAttribute("aria-label",a.__t("form.datepicker.next")),b.textContent="›",b.addEventListener("click",()=>{e(a,1)}),le.appendChild(ne),le.appendChild(G),le.appendChild(b),D.appendChild(le);const w=O.createElement("div");w.className="lat-form__datepicker-weekdays";for(let Z=0;Z<7;Z+=1){const q=O.createElement("span");q.textContent=t(B,Z),w.appendChild(q)}D.appendChild(w);const M=O.createElement("div");M.className="lat-form__datepicker-grid",M.setAttribute("role","grid"),M.tabIndex=0,a.__grid=M;const U=new Date(re.y,re.mo-1,1).getDay();for(let Z=0;Z<U;Z+=1){const q=O.createElement("span");q.className="lat-form__datepicker-blank",M.appendChild(q)}const X=k(re.y,re.mo);for(let Z=1;Z<=X;Z+=1){const q=O.createElement("button");q.type="button",q.className="lat-form__datepicker-day",q.setAttribute("role","gridcell"),q.textContent=String(Z);const S=l(B,{y:re.y,mo:re.mo,d:Z,h:0,mi:0});$(B,S)||(q.disabled=!0),ce&&ce.y===re.y&&ce.mo===re.mo&&ce.d===Z&&q.classList.add("is-selected"),a.__cursor===Z&&q.classList.add("is-focus"),q.addEventListener("click",()=>{const C={y:re.y,mo:re.mo,d:Z,h:ce?ce.h:0,mi:ce?ce.mi:0};H==="date"?(a.__cursor=Z,N(a,C),W(a)):(a.__cursor=Z,a.__fields=C,o(a))}),M.appendChild(q)}D.appendChild(M),M.addEventListener("keydown",Z=>{Z.key==="ArrowLeft"?(Z.preventDefault(),L(a,-1)):Z.key==="ArrowRight"?(Z.preventDefault(),L(a,1)):Z.key==="ArrowUp"?(Z.preventDefault(),L(a,-7)):Z.key==="ArrowDown"?(Z.preventDefault(),L(a,7)):Z.key==="Home"?(Z.preventDefault(),a.__cursor=1,o(a)):Z.key==="End"?(Z.preventDefault(),a.__cursor=k(re.y,re.mo),o(a)):(Z.key==="Enter"||Z.key===" ")&&(Z.preventDefault(),te(a))})}if(H!=="date"){const le=g(B)?r(B):null,ne=!!le,G=O.createElement("div");G.className="lat-form__datepicker-time";const b=O.createElement("input");b.type="number",b.className="lat-form__datepicker-hour",b.min=ne?"1":"0",b.max=ne?"12":"23",b.step="1",b.setAttribute("aria-label",a.__t("form.datepicker.hour"));const w=O.createElement("span");w.textContent=":";const M=O.createElement("input");if(M.type="number",M.className="lat-form__datepicker-minute",M.min="0",M.max="59",M.step="1",M.setAttribute("aria-label",a.__t("form.datepicker.minute")),G.appendChild(b),G.appendChild(w),G.appendChild(M),D.appendChild(G),a.__hour=b,a.__minute=M,b.addEventListener("change",()=>{y(a)}),M.addEventListener("change",()=>{y(a)}),a.__periods=le,a.__ampm=null,ne){const X=O.createElement("button");X.type="button",X.className="lat-form__datepicker-ampm",a.__ampm=X;const Z=()=>{a.__pm=!a.__pm,X.textContent=a.__pm?a.__periods.pm:a.__periods.am,y(a)};X.addEventListener("click",Z),G.appendChild(X)}const U=O.createElement("button");U.type="button",U.className="lat-form__datepicker-done",U.textContent=a.__t("form.datepicker.done"),U.addEventListener("click",()=>{d(a)}),G.appendChild(U)}V(a)}function e(a,B){let{y:O,mo:D}=a.__view;D+=B,D<1&&(D=12,O-=1),D>12&&(D=1,O+=1),a.__view={y:O,mo:D},a.__cursor=Math.min(a.__cursor,k(O,D)),o(a)}function y(a){const B=a.__fields;let O=a.__hour&&Number(a.__hour.value)||0;const D=a.__minute&&Number(a.__minute.value)||0;a.__ampm&&(O=i(O,a.__pm===!0));const re=T(a.__item)==="time"?{y:null,mo:null,d:null,h:O,mi:D}:{y:B?B.y:a.__view.y,mo:B?B.mo:a.__view.mo,d:B?B.d:a.__cursor,h:O,mi:D};a.__cursor=B?B.d:a.__cursor,N(a,re)}function d(a){a.__popup.hidden||(T(a.__item)!=="date"&&y(a),W(a))}function V(a){const B=a.__fields,O=a.__ampm&&a.__periods;if(a.__hour){const D=B?B.h:0;a.__hour.value=String(O?x(D):D)}a.__minute&&(a.__minute.value=B?String(B.mi):"0"),a.__ampm&&a.__periods&&(a.__pm=B?B.h>=12:!1,a.__ampm.textContent=a.__pm?a.__periods.pm:a.__periods.am)}function te(a){const B=a.__view,O=a.__fields,D={y:B.y,mo:B.mo,d:a.__cursor,h:O?O.h:0,mi:O?O.mi:0};N(a,D),W(a)}function I(a){if(a.__popup.hidden===!1||a.__item.disabled===!0||a.__item.readOnly===!0)return;const B=a.__fields,O=new Date;a.__view=B&&B.y!=null?{y:B.y,mo:B.mo}:{y:O.getFullYear(),mo:O.getMonth()+1},a.__cursor=B&&B.d!=null?B.d:O.getDate(),a.__popup.hidden=!1,o(a)}function W(a){a.__popup.hidden=!0}P("datepicker",{kind:"field",build(a,B){const O=B.doc;s(O);const D=O.createElement("div");D.className="lat-form__datepicker",D.__item=a,D.__t=B.t||_,D.__mode=T(a),D.__fields=p(a,a.value),D.__cursor=D.__fields&&D.__fields.d!=null?D.__fields.d:new Date().getDate(),D.__view=D.__fields&&D.__fields.y!=null?{y:D.__fields.y,mo:D.__fields.mo}:{y:new Date().getFullYear(),mo:new Date().getMonth()+1};const re=O.createElement("input");re.type="text",re.className="lat-form__datepicker-input",a.name&&(re.name=a.name),a.placeholder!=null&&(re.placeholder=String(a.placeholder)),a.label!=null&&a.label!==""&&re.setAttribute("aria-label",String(a.label)),re.setAttribute("autocomplete","off"),re.value=j(a,D.__fields),D.__input=re;const H=O.createElement("button");H.type="button",H.className="lat-form__datepicker-toggle";const ce=T(a)==="date";H.setAttribute("aria-label",D.__t(ce?"form.datepicker.open":"form.datepicker.openTime"));const le=ee(O,ce?"calendar":"clock");le&&H.appendChild(le),D.__toggle=H;const ne=O.createElement("div");ne.className="lat-form__datepicker-popup",ne.hidden=!0,D.__popup=ne,D.appendChild(re),D.appendChild(H),D.appendChild(ne),re.addEventListener("focus",()=>{I(D)}),H.addEventListener("click",()=>{I(D)}),re.addEventListener("change",()=>{const M=p(a,re.value);M?D.__fields=M:re.value=j(a,D.__fields)}),re.addEventListener("keydown",M=>{M.key==="Escape"&&W(D)}),D.__ampm=null,D.__periods=null,D.__pm=!1;const G=M=>{D.contains(M.target)||d(D)},b=M=>{M.relatedTarget&&D.contains(M.relatedTarget)||d(D)},w=M=>{M.key==="Escape"&&(M.preventDefault(),d(D),D.__toggle.focus())};return O.addEventListener("pointerdown",G),D.addEventListener("focusout",b),ne.addEventListener("keydown",w),Array.isArray(B.disposers)&&B.disposers.push(()=>{O.removeEventListener("pointerdown",G),D.removeEventListener("focusout",b),ne.removeEventListener("keydown",w)}),D},read(a){return l(a.__item,a.__fields)},write(a,B){a.__fields=p(a.__item,B),a.__input.value=j(a.__item,a.__fields),a.__fields&&a.__fields.y!=null&&(a.__view={y:a.__fields.y,mo:a.__fields.mo},a.__cursor=a.__fields.d)},state(a,B){a.__input.disabled=B.disabled===!0,a.__input.readOnly=B.readOnly===!0,a.__toggle.disabled=B.disabled===!0||B.readOnly===!0},validate(a,B,O){return $(B,O)?!0:typeof B.errorMessage=="string"&&B.errorMessage!==""?B.errorMessage:!1},focus(a){a.__input.focus()}})}),ge("packages/modules/form/controls/file.js",function(R,Y){"use strict";Object.defineProperty(R,"formatSize",{enumerable:!0,get:function(){return k}}),Object.defineProperty(R,"accepts",{enumerable:!0,get:function(){return f}});const P=Y("packages/modules/form/controls/registry.js").registerControl,v="lat-uploader",ee="http://www.w3.org/2000/svg",s="data-lattice-uploader-styles";function z(){return`
1267
+ `.trim()}const L="data-lattice-form-choice-styles";function O(k){const I=k&&k.documentElement;if(!I||I.getAttribute(L))return;I.setAttribute(L,"1");const N=k.createElement("style");N.textContent=u(),(k.head||k.body||I).appendChild(N)}}),_e("packages/modules/form/controls/radiogroup.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=X("packages/modules/form/controls/options.js"),te=v.normalizeOptions,u=v.resolveChoiceLayout,L=v.injectChoiceLayoutStyles,O=X("packages/modules/form/state.js"),k=O.applyBooleanInputState,I=O.guardBooleanInput;T("radiogroup",{kind:"field",build(N,g){const p=g.doc.createElement("div");p.className="lat-form__radiogroup",p.setAttribute("role","radiogroup"),N.label!=null&&N.label!==""&&p.setAttribute("aria-label",String(N.label));const a=u(N);a.columns>0?(L(g.doc),p.classList.add("lat-form__radiogroup--columns"),p.style.setProperty("--lat-form-columns",String(a.columns))):a.orientation==="horizontal"&&(L(g.doc),p.classList.add("lat-form__radiogroup--horizontal")),p.setAttribute("aria-orientation",a.orientation);const $=[];for(const y of te(N.options)){const n=g.doc.createElement("label");n.className="lat-form__choice";const d=g.doc.createElement("input");d.type="radio",N.name&&(d.name=N.name),d.value=y.value,d.checked=N.value!=null&&String(N.value)===y.value,I(d),n.appendChild(d);const h=g.doc.createElement("span");h.textContent=y.label,n.appendChild(h),p.appendChild(n),$.push(d)}return p.__radios=$,p},read(N){const g=N.__radios.find(p=>p.checked);return g?g.value:null},write(N,g){const p=g==null?null:String(g);for(const a of N.__radios)a.checked=p!==null&&a.value===p},state(N,g){const p=g.readOnly===!0;for(const a of N.__radios)k(a,g.disabled===!0,p);p?N.setAttribute("aria-readonly","true"):N.removeAttribute("aria-readonly")},focus(N){const g=N.__radios.find(p=>!p.disabled);g&&g.focus()}})}),_e("packages/modules/form/controls/checkboxgroup.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=X("packages/modules/form/controls/options.js"),te=v.normalizeOptions,u=v.resolveChoiceLayout,L=v.injectChoiceLayoutStyles,O=X("packages/modules/form/state.js"),k=O.applyBooleanInputState,I=O.guardBooleanInput;T("checkboxgroup",{kind:"field",build(N,g){const p=g.doc.createElement("div");p.className="lat-form__checkboxgroup",p.setAttribute("role","group"),N.label!=null&&N.label!==""&&p.setAttribute("aria-label",String(N.label));const a=u(N);a.columns>0?(L(g.doc),p.classList.add("lat-form__checkboxgroup--columns"),p.style.setProperty("--lat-form-columns",String(a.columns))):a.orientation==="horizontal"&&(L(g.doc),p.classList.add("lat-form__checkboxgroup--horizontal"));const $=[],y=Array.isArray(N.value)?N.value.map(String):[];for(const n of te(N.options)){const d=g.doc.createElement("label");d.className="lat-form__choice";const h=g.doc.createElement("input");h.type="checkbox",N.name&&(h.name=N.name),h.value=n.value,h.checked=y.includes(n.value),I(h),d.appendChild(h);const z=g.doc.createElement("span");z.textContent=n.label,d.appendChild(z),p.appendChild(d),$.push(h)}return p.__boxes=$,p},read(N){return N.__boxes.filter(g=>g.checked).map(g=>g.value)},write(N,g){const p=Array.isArray(g)?g.map(String):[];for(const a of N.__boxes)a.checked=p.includes(a.value)},state(N,g){const p=g.readOnly===!0;for(const a of N.__boxes)k(a,g.disabled===!0,p);p?N.setAttribute("aria-readonly","true"):N.removeAttribute("aria-readonly")},focus(N){const g=N.__boxes.find(p=>!p.disabled);g&&g.focus()}})}),_e("packages/modules/form/controls/toggle.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=X("packages/modules/form/state.js"),te=v.applyBooleanInputState,u=v.guardBooleanInput;T("toggle",{kind:"toggle",build(L,O){const k=O.doc.createElement("input");return k.type="checkbox",k.className="lat-form__toggle",k.setAttribute("role","switch"),L.name&&(k.name=L.name),k.checked=L.value===!0,u(k),k},read(L){return L.checked},write(L,O){L.checked=O===!0},state(L,O){te(L,O.disabled===!0,O.readOnly===!0)}})}),_e("packages/modules/form/controls/datepicker.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=X("packages/modules/form/controls/field-icon.js"),te=v.makeFieldIcon,u=v.injectFieldIconStyles,L=Object.freeze(["date","date-time","time"]);function O(l){return String(l).padStart(2,"0")}function k(l){return l}function I(l){return l.mode==="date-time"||l.mode==="time"?l.mode:"date"}function N(l,H){return new Date(l,H,0).getDate()}function g(l,H){if(!(H instanceof Date)||Number.isNaN(H.getTime()))return null;const J={y:H.getFullYear(),mo:H.getMonth()+1,d:H.getDate(),h:H.getHours(),mi:H.getMinutes()},Y=l.timeZone;if(!Y)return J;try{const B=new Intl.DateTimeFormat("en-US",{timeZone:Y,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(H),V={y:0,mo:1,d:1,h:0,mi:0};for(const ce of B)ce.type==="year"?V.y=Number(ce.value):ce.type==="month"?V.mo=Number(ce.value):ce.type==="day"?V.d=Number(ce.value):ce.type==="hour"?V.h=Number(ce.value)%24:ce.type==="minute"&&(V.mi=Number(ce.value));return V}catch{return J}}function p(l,H){if(H==null||H==="")return null;if(typeof H=="number")return g(l,new Date(H));if(H instanceof Date)return g(l,H);if(typeof H=="string"){const J=H.trim();if(I(l)==="time"){const B=/^(\d{1,2}):(\d{2})/.exec(J);return B?{y:null,mo:null,d:null,h:Number(B[1]),mi:Number(B[2])}:null}const Y=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{1,2}):(\d{2})(?::(\d{2}))?)?/.exec(J);return Y?{y:Number(Y[1]),mo:Number(Y[2]),d:Number(Y[3]),h:Y[4]!=null?Number(Y[4]):0,mi:Y[5]!=null?Number(Y[5]):0}:null}return null}function a(l,H){if(!H)return null;if(I(l)==="time")return`${O(H.h)}:${O(H.mi)}`;const J=`${O(H.y)}-${O(H.mo)}-${O(H.d)}`;return I(l)==="date"?J:`${J}T${O(H.h)}:${O(H.mi)}`}function $(l,H){if(!H)return"";const J=I(l);if(J==="time")return`${O(H.h)}:${O(H.mi)}`;const Y=l.locale||void 0,B={dateStyle:"medium"};return J==="date-time"&&(B.timeStyle="short"),new Intl.DateTimeFormat(Y,B).format(new Date(H.y,H.mo-1,H.d,H.h,H.mi))}function y(l,H){return H==null?!0:!(l.min!=null&&H<String(l.min)||l.max!=null&&H>String(l.max))}function n(l,H){return new Intl.DateTimeFormat(l.locale||void 0,{weekday:"narrow"}).format(new Date(2021,0,3+H))}function d(l,H){return new Intl.DateTimeFormat(l.locale||void 0,{month:"long",year:"numeric"}).format(new Date(H.y,H.mo-1,1))}function h(l){const H=l.ownerDocument&&l.ownerDocument.defaultView,J=H&&typeof H.Event=="function"?H.Event:null;l.dispatchEvent(J?new J("change",{bubbles:!0}):{type:"change",bubbles:!0})}function z(l,H){l.__fields=H,l.__input.value=$(l.__item,H),h(l)}function W(l,H){let{y:J,mo:Y}=l.__view,B=l.__cursor+H;for(;B<1;)Y-=1,Y<1&&(Y=12,J-=1),B+=N(J,Y);let V=N(J,Y);for(;B>V;)B-=V,Y+=1,Y>12&&(Y=1,J+=1),V=N(J,Y);l.__view={y:J,mo:Y},l.__cursor=B,i(l)}function S(l){try{const H=new Intl.DateTimeFormat(l.locale||void 0,{hour:"numeric"}).resolvedOptions().hourCycle;return H==="h11"||H==="h12"}catch{return!1}}function c(l){try{const H=new Intl.DateTimeFormat(l.locale||void 0,{hour:"numeric",hour12:!0}),J=H.formatToParts(new Date(2021,0,1,9)).find(B=>B.type==="dayPeriod"),Y=H.formatToParts(new Date(2021,0,1,15)).find(B=>B.type==="dayPeriod");if(J&&Y)return{am:J.value,pm:Y.value}}catch{}return null}function x(l){const H=l%12;return H===0?12:H}function t(l,H){return H?l===12?12:l+12:l===12?0:l}function i(l){const H=l.__item,J=l.ownerDocument,Y=l.__popup,B=l.__view,V=I(H),ce=l.__fields;for(;Y.firstChild;)Y.removeChild(Y.firstChild);if(V!=="time"){const ue=J.createElement("div");ue.className="lat-form__datepicker-head";const ne=J.createElement("button");ne.type="button",ne.className="lat-form__datepicker-nav",ne.setAttribute("aria-label",l.__t("form.datepicker.prev")),ne.textContent="‹",ne.addEventListener("click",()=>{r(l,-1)});const f=J.createElement("span");f.className="lat-form__datepicker-title",f.textContent=d(H,B);const j=J.createElement("button");j.type="button",j.className="lat-form__datepicker-nav",j.setAttribute("aria-label",l.__t("form.datepicker.next")),j.textContent="›",j.addEventListener("click",()=>{r(l,1)}),ue.appendChild(ne),ue.appendChild(f),ue.appendChild(j),Y.appendChild(ue);const M=J.createElement("div");M.className="lat-form__datepicker-weekdays";for(let P=0;P<7;P+=1){const Z=J.createElement("span");Z.textContent=n(H,P),M.appendChild(Z)}Y.appendChild(M);const o=J.createElement("div");o.className="lat-form__datepicker-grid",o.setAttribute("role","grid"),o.tabIndex=0,l.__grid=o;const E=new Date(B.y,B.mo-1,1).getDay();for(let P=0;P<E;P+=1){const Z=J.createElement("span");Z.className="lat-form__datepicker-blank",o.appendChild(Z)}const D=N(B.y,B.mo);for(let P=1;P<=D;P+=1){const Z=J.createElement("button");Z.type="button",Z.className="lat-form__datepicker-day",Z.setAttribute("role","gridcell"),Z.textContent=String(P);const A=a(H,{y:B.y,mo:B.mo,d:P,h:0,mi:0});y(H,A)||(Z.disabled=!0),ce&&ce.y===B.y&&ce.mo===B.mo&&ce.d===P&&Z.classList.add("is-selected"),l.__cursor===P&&Z.classList.add("is-focus"),Z.addEventListener("click",()=>{const _={y:B.y,mo:B.mo,d:P,h:ce?ce.h:0,mi:ce?ce.mi:0};V==="date"?(l.__cursor=P,z(l,_),K(l)):(l.__cursor=P,l.__fields=_,i(l))}),o.appendChild(Z)}Y.appendChild(o),o.addEventListener("keydown",P=>{P.key==="ArrowLeft"?(P.preventDefault(),W(l,-1)):P.key==="ArrowRight"?(P.preventDefault(),W(l,1)):P.key==="ArrowUp"?(P.preventDefault(),W(l,-7)):P.key==="ArrowDown"?(P.preventDefault(),W(l,7)):P.key==="Home"?(P.preventDefault(),l.__cursor=1,i(l)):P.key==="End"?(P.preventDefault(),l.__cursor=N(B.y,B.mo),i(l)):(P.key==="Enter"||P.key===" ")&&(P.preventDefault(),oe(l))})}if(V!=="date"){const ue=S(H)?c(H):null,ne=!!ue,f=J.createElement("div");f.className="lat-form__datepicker-time";const j=J.createElement("input");j.type="number",j.className="lat-form__datepicker-hour",j.min=ne?"1":"0",j.max=ne?"12":"23",j.step="1",j.setAttribute("aria-label",l.__t("form.datepicker.hour"));const M=J.createElement("span");M.textContent=":";const o=J.createElement("input");if(o.type="number",o.className="lat-form__datepicker-minute",o.min="0",o.max="59",o.step="1",o.setAttribute("aria-label",l.__t("form.datepicker.minute")),f.appendChild(j),f.appendChild(M),f.appendChild(o),Y.appendChild(f),l.__hour=j,l.__minute=o,j.addEventListener("change",()=>{C(l)}),o.addEventListener("change",()=>{C(l)}),l.__periods=ue,l.__ampm=null,ne){const D=J.createElement("button");D.type="button",D.className="lat-form__datepicker-ampm",l.__ampm=D;const P=()=>{l.__pm=!l.__pm,D.textContent=l.__pm?l.__periods.pm:l.__periods.am,C(l)};D.addEventListener("click",P),f.appendChild(D)}const E=J.createElement("button");E.type="button",E.className="lat-form__datepicker-done",E.textContent=l.__t("form.datepicker.done"),E.addEventListener("click",()=>{b(l)}),f.appendChild(E)}G(l)}function r(l,H){let{y:J,mo:Y}=l.__view;Y+=H,Y<1&&(Y=12,J-=1),Y>12&&(Y=1,J+=1),l.__view={y:J,mo:Y},l.__cursor=Math.min(l.__cursor,N(J,Y)),i(l)}function C(l){const H=l.__fields;let J=l.__hour&&Number(l.__hour.value)||0;const Y=l.__minute&&Number(l.__minute.value)||0;l.__ampm&&(J=t(J,l.__pm===!0));const B=I(l.__item)==="time"?{y:null,mo:null,d:null,h:J,mi:Y}:{y:H?H.y:l.__view.y,mo:H?H.mo:l.__view.mo,d:H?H.d:l.__cursor,h:J,mi:Y};l.__cursor=H?H.d:l.__cursor,z(l,B)}function b(l){l.__popup.hidden||(I(l.__item)!=="date"&&C(l),K(l))}function G(l){const H=l.__fields,J=l.__ampm&&l.__periods;if(l.__hour){const Y=H?H.h:0;l.__hour.value=String(J?x(Y):Y)}l.__minute&&(l.__minute.value=H?String(H.mi):"0"),l.__ampm&&l.__periods&&(l.__pm=H?H.h>=12:!1,l.__ampm.textContent=l.__pm?l.__periods.pm:l.__periods.am)}function oe(l){const H=l.__view,J=l.__fields,Y={y:H.y,mo:H.mo,d:l.__cursor,h:J?J.h:0,mi:J?J.mi:0};z(l,Y),K(l)}function U(l){if(l.__popup.hidden===!1||l.__item.disabled===!0||l.__item.readOnly===!0)return;const H=l.__fields,J=new Date;l.__view=H&&H.y!=null?{y:H.y,mo:H.mo}:{y:J.getFullYear(),mo:J.getMonth()+1},l.__cursor=H&&H.d!=null?H.d:J.getDate(),l.__popup.hidden=!1,i(l)}function K(l){l.__popup.hidden=!0}T("datepicker",{kind:"field",build(l,H){const J=H.doc;u(J);const Y=J.createElement("div");Y.className="lat-form__datepicker",Y.__item=l,Y.__t=H.t||k,Y.__mode=I(l),Y.__fields=p(l,l.value),Y.__cursor=Y.__fields&&Y.__fields.d!=null?Y.__fields.d:new Date().getDate(),Y.__view=Y.__fields&&Y.__fields.y!=null?{y:Y.__fields.y,mo:Y.__fields.mo}:{y:new Date().getFullYear(),mo:new Date().getMonth()+1};const B=J.createElement("input");B.type="text",B.className="lat-form__datepicker-input",l.name&&(B.name=l.name),l.placeholder!=null&&(B.placeholder=String(l.placeholder)),l.label!=null&&l.label!==""&&B.setAttribute("aria-label",String(l.label)),B.setAttribute("autocomplete","off"),B.value=$(l,Y.__fields),Y.__input=B;const V=J.createElement("button");V.type="button",V.className="lat-form__datepicker-toggle";const ce=I(l)==="date";V.setAttribute("aria-label",Y.__t(ce?"form.datepicker.open":"form.datepicker.openTime"));const ue=te(J,ce?"calendar":"clock");ue&&V.appendChild(ue),Y.__toggle=V;const ne=J.createElement("div");ne.className="lat-form__datepicker-popup",ne.hidden=!0,Y.__popup=ne,Y.appendChild(B),Y.appendChild(V),Y.appendChild(ne),B.addEventListener("focus",()=>{U(Y)}),V.addEventListener("click",()=>{U(Y)}),B.addEventListener("change",()=>{const o=p(l,B.value);o?Y.__fields=o:B.value=$(l,Y.__fields)}),B.addEventListener("keydown",o=>{o.key==="Escape"&&K(Y)}),Y.__ampm=null,Y.__periods=null,Y.__pm=!1;const f=o=>{Y.contains(o.target)||b(Y)},j=o=>{o.relatedTarget&&Y.contains(o.relatedTarget)||b(Y)},M=o=>{o.key==="Escape"&&(o.preventDefault(),b(Y),Y.__toggle.focus())};return J.addEventListener("pointerdown",f),Y.addEventListener("focusout",j),ne.addEventListener("keydown",M),Array.isArray(H.disposers)&&H.disposers.push(()=>{J.removeEventListener("pointerdown",f),Y.removeEventListener("focusout",j),ne.removeEventListener("keydown",M)}),Y},read(l){return a(l.__item,l.__fields)},write(l,H){l.__fields=p(l.__item,H),l.__input.value=$(l.__item,l.__fields),l.__fields&&l.__fields.y!=null&&(l.__view={y:l.__fields.y,mo:l.__fields.mo},l.__cursor=l.__fields.d)},state(l,H){l.__input.disabled=H.disabled===!0,l.__input.readOnly=H.readOnly===!0,l.__toggle.disabled=H.disabled===!0||H.readOnly===!0},validate(l,H,J){return y(H,J)?!0:typeof H.errorMessage=="string"&&H.errorMessage!==""?H.errorMessage:!1},focus(l){l.__input.focus()}})}),_e("packages/modules/form/controls/file.js",function(F,X){"use strict";Object.defineProperty(F,"formatSize",{enumerable:!0,get:function(){return N}}),Object.defineProperty(F,"accepts",{enumerable:!0,get:function(){return g}});const T=X("packages/modules/form/controls/registry.js").registerControl,v="lat-uploader",te="http://www.w3.org/2000/svg",u="data-lattice-uploader-styles";function L(){return`
1167
1268
  .${v}{
1168
1269
  --lat-up-surface:var(--lattice-surface, color-mix(in srgb, var(--lattice-foreground-muted) 5%, var(--lattice-background)));
1169
1270
  --lat-up-accent-soft:color-mix(in srgb, var(--lattice-accent) 12%, var(--lattice-background));
@@ -1290,7 +1391,7 @@ ${y}
1290
1391
  .${v}__zone.is-dragover, .${v}__zone.is-invalid{ box-shadow:none; }
1291
1392
  .${v}__item-fill{ transition:none; }
1292
1393
  }
1293
- `.trim()}function E(i){const o=i&&i.documentElement;if(!o||o.getAttribute(s))return;o.setAttribute(s,"1");const e=i.createElement("style");e.textContent=z(),(i.head||i.body||o).appendChild(e)}function _(i,o){const e=o&&o.defaultView,y=e&&e.Event,d=y?new y("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};i.dispatchEvent(d)}function T(){return`f${Date.now().toString(36)}${Math.random().toString(36).slice(2,7)}`}function k(i){const o=Number(i)||0;return o<1024?`${o} B`:o<1048576?`${(o/1024).toFixed(o<10240?1:0)} KB`:o<1073741824?`${(o/1048576).toFixed(1)} MB`:`${(o/1073741824).toFixed(2)} GB`}function f(i,o){if(!o||!o.length)return!0;const e=(i.name||"").toLowerCase(),y=(i.type||"").toLowerCase();return o.some(d=>{const V=String(d).trim().toLowerCase();return V.startsWith(".")?e.endsWith(V):V.endsWith("/*")?y.startsWith(V.slice(0,-1)):y===V})}function p(i){return i.length?i.length===1?i[0]:i.length===2?`${i[0]} or ${i[1]}`:`${i.slice(0,-1).join(", ")} or ${i[i.length-1]}`:""}function l(i){const o={".pdf":"PDF",".doc":"DOC",".docx":"DOCX",".xls":"XLS",".xlsx":"XLSX",".csv":"CSV",".txt":"TXT",".png":"PNG",".jpg":"JPG",".jpeg":"JPEG",".gif":"GIF",".svg":"SVG",".webp":"WEBP",".zip":"ZIP","image/*":"images","video/*":"videos","audio/*":"audio","text/*":"text","application/pdf":"PDF"},e=String(i).trim(),y=o[e.toLowerCase()];if(y)return y;if(e.startsWith("."))return e.slice(1).toUpperCase();if(e.endsWith("/*"))return`${e.slice(0,-2)}s`;const d=e.split("/")[1];return d?d.toUpperCase():e}function j(i,o,e,y){const d=[];return o&&o.length&&d.push(p(o.map(l))),e&&d.push(i("form.file.hint.size",{size:k(e)})),y&&d.push(i(y===1?"form.file.hint.file":"form.file.hint.files",{max:String(y)})),d.join(" · ")}function $(i){return{id:i.id,name:i.name,size:i.size,type:i.type,status:i.status,progress:i.progress,message:i.message||""}}function t(i,o){const e=i.createElementNS(ee,"svg");e.setAttribute("viewBox","0 0 16 16"),e.setAttribute("focusable","false"),e.setAttribute("aria-hidden","true"),e.setAttribute("fill","none"),e.setAttribute("stroke","currentColor"),e.setAttribute("stroke-width","1.5"),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round");const y=i.createElementNS("http://www.w3.org/2000/svg","path");return y.setAttribute("d",o),e.appendChild(y),e}const u=Object.freeze({upload:"M8 11V3m0 0L4.5 6.5M8 3l3.5 3.5M3 13h10",file:"M4 2h5l3 3v9H4zM9 2v3h3",image:"M2 3h12v10H2zM5 11l3-3 2 2 1.5-1.5L14 11M5.5 6a.8.8 0 1 0 0 1.6.8.8 0 0 0 0-1.6z",document:"M4 2h5l3 3v9H4zM9 2v3h3M6 9h4M6 12h4",check:"M3 8.5l3 3 7-7",xmark:"M4 4l8 8M12 4l-8 8",warn:"M8 3l6 11H2zM8 7v3M8 12.2v.1",retry:"M13.5 8A5.5 5.5 0 1 1 8 2.5M8 2.5V5m0-2.5L5.5 2.5"});function m(i,o){const e=/([:\w-]+)\s*=\s*("([^"]*)"|'([^']*)')/g;let y;for(;y=e.exec(o);)i.setAttribute(y[1],y[3]===void 0?y[4]:y[3])}function N(i,o){const e=/<svg\b([^>]*)>/i.exec(o);if(!e)return null;const y=i.createElementNS(ee,"svg");m(y,e[1]);const d=o.lastIndexOf("</svg"),V=d===-1?"":o.slice(e.index+e[0].length,d),te=/<(\w+)\b([^>]*?)(\/?)>/g;let I;for(;I=te.exec(V);){const W=i.createElementNS(ee,I[1]);m(W,I[2]),y.appendChild(W)}return y.setAttribute("aria-hidden","true"),y.setAttribute("focusable","false"),y}function L(i,o){if(i===!1)return null;if(i!=null&&typeof i=="object"&&i.nodeType){const y=i;return y.classList.add(`${v}__icon`),y.setAttribute("aria-hidden","true"),y}if(typeof i!="string"||i==="")return null;const e=u[i]?t(o,u[i]):N(o,i);return e?(e.setAttribute("class",`${v}__icon`),e):null}function g(i){const o=i.type||"";return o.startsWith("image/")?"image":o==="application/pdf"||/\.pdf$/i.test(i.name)?"document":"file"}function r(i){if(i.thumb)return i.thumb;if(!i.file||!/^image\//.test(i.type||"")||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{i.thumb=URL.createObjectURL(i.file)}catch{i.thumb=null}return i.thumb}function x(i){if(i.thumb&&typeof URL<"u"&&typeof URL.revokeObjectURL=="function")try{URL.revokeObjectURL(i.thumb)}catch{}i.thumb=null}P("file",{kind:"field",build(i,o){const e=o.doc,y=o.t,d=i.props||{},V=Array.isArray(d.accept)?d.accept.map(h=>String(h)):[],te=Number(d.maxSize)||0,I=Number(d.maxFiles)||0,W=d.multiple!==!1,a=typeof d.upload=="function"?d.upload:null,B=d.dropzone!==!1,O=d.dropText!=null?String(d.dropText):y("form.file.dropText"),D=d.browseText!=null?String(d.browseText):y("form.file.browse"),re=y("form.file.dropToUpload"),H=y("form.file.addMore"),ce=y("form.file.typeNotAccepted"),le=d.hint!=null&&d.hint!==""?String(d.hint):j(y,V,te,I);E(e);const ne=e.createElement("div");ne.className=v;const G={accept:V,maxSize:te,maxFiles:I,multiple:W,upload:a,dropText:O,browse:D,dropToUpload:re,addMore:H,typeNotAccepted:ce,entries:[],controllers:new Map,disabled:!1,readOnly:!1,dropzone:B,input:null,zone:null,list:null,live:null,titleRest:null,browseEl:null,compactText:null};ne.__latFile=G;const b=e.createElement("input");b.type="file",b.className=`${v}__input`,b.tabIndex=-1,b.setAttribute("aria-hidden","true"),W&&(b.multiple=!0),V.length&&(b.accept=V.join(",")),ne.appendChild(b),G.input=b;const w=e.createElement("div");w.className=`${v}__zone`,w.setAttribute("role","button"),w.tabIndex=0,w.setAttribute("aria-label",`${O} ${D}`);const M=d.icon==null?t(e,u.upload):L(d.icon,e);M&&(d.icon==null&&M.setAttribute("class",`${v}__icon`),w.appendChild(M));const U=e.createElement("span");U.className=`${v}__title`;const X=e.createElement("span");X.className=`${v}__title-rest`,X.textContent=O,U.appendChild(X);const Z=e.createElement("button");Z.type="button",Z.className=`${v}__browse`,Z.tabIndex=-1,Z.textContent=D,U.appendChild(Z),w.appendChild(U),G.titleRest=X,G.browseEl=Z;const q=e.createElement("span");if(q.className=`${v}__drop`,q.textContent=re,w.appendChild(q),le){const h=e.createElement("span");h.className=`${v}__hint`,h.textContent=le,w.appendChild(h)}const S=e.createElement("span");S.className=`${v}__compact`,S.appendChild(t(e,u.upload));const C=e.createElement("span");C.className=`${v}__compact-text`,C.textContent=H,S.appendChild(C),w.appendChild(S),G.compactText=C,ne.appendChild(w),G.zone=w;const c=e.createElement("ul");c.className=`${v}__list`,c.setAttribute("role","list"),c.hidden=!0,ne.appendChild(c),G.list=c;const A=e.createElement("div");return A.className=`${v}__live`,A.setAttribute("role","status"),A.setAttribute("aria-live","polite"),ne.appendChild(A),G.live=A,ne.__latAnnounce=h=>{G.live&&(G.live.textContent="",G.live.textContent=h)},ne.__latDragState=h=>{G.zone.classList.toggle("is-dragover",h==="over"),G.zone.classList.toggle("is-invalid",h==="invalid"),h==="none"?(G.titleRest.textContent=G.dropText,G.browseEl.hidden=!1,G.compactText.textContent=G.addMore):h==="over"?(G.titleRest.textContent=G.dropToUpload,G.browseEl.hidden=!0,G.compactText.textContent=G.dropToUpload):(G.titleRest.textContent=G.typeNotAccepted,G.browseEl.hidden=!0,G.compactText.textContent=G.typeNotAccepted)},ne.__latPaint=()=>{const h=G.disabled||G.readOnly||!G.dropzone;G.zone.hidden=h,G.zone.tabIndex=h?-1:0,h?G.zone.setAttribute("aria-disabled","true"):G.zone.removeAttribute("aria-disabled"),G.input.disabled=h;const F=G.entries.length>0;G.zone.classList.toggle("is-compact",F),G.zone.setAttribute("aria-label",F?G.addMore:`${G.dropText} ${G.browse}`),c.hidden=!G.entries.length,c.tabIndex=G.readOnly&&!G.disabled?0:-1,G.entries.some(ie=>ie.status==="rejected")?ne.setAttribute("aria-invalid","true"):ne.removeAttribute("aria-invalid"),c.textContent="";for(const ie of G.entries){const oe=e.createElement("li");oe.className=`${v}__item is-${ie.status}`,oe.setAttribute("data-id",ie.id),oe.setAttribute("role","listitem");const pe=r(ie);if(pe){const de=e.createElement("img");de.className=`${v}__item-thumb`,de.src=pe,de.alt="",oe.appendChild(de)}else{const de=t(e,u[g(ie)]);de.setAttribute("class",`${v}__item-icon`),oe.appendChild(de)}const be=e.createElement("div");be.className=`${v}__item-main`,oe.appendChild(be);const je=e.createElement("div");je.className=`${v}__item-row`,be.appendChild(je);const ke=e.createElement("span");ke.className=`${v}__item-name`,ke.textContent=ie.name,ke.title=ie.name,je.appendChild(ke);const Se=e.createElement("span");Se.className=`${v}__item-size`,Se.textContent=k(ie.size),je.appendChild(Se);const Ae=e.createElement("span");if(Ae.className=`${v}__item-state`,ie.status==="uploading"){const de=e.createElement("span");de.className=`${v}__item-pct`,de.textContent=`${ie.progress}%`,Ae.appendChild(de)}else ie.status==="done"?Ae.appendChild(t(e,u.check)):(ie.status==="error"||ie.status==="rejected")&&Ae.appendChild(t(e,u.warn));je.appendChild(Ae);const Ne=e.createElement("button");if(Ne.type="button",Ne.className=`${v}__remove`,Ne.setAttribute("aria-label",`${y("form.file.remove")} ${ie.name}`),Ne.title=y("form.file.remove"),Ne.appendChild(t(e,u.xmark)),Ne.setAttribute("data-remove",ie.id),Ne.disabled=G.disabled||G.readOnly,je.appendChild(Ne),ie.status==="uploading"){const de=e.createElement("span");de.className=`${v}__item-bar`,de.setAttribute("role","progressbar"),de.setAttribute("aria-valuemin","0"),de.setAttribute("aria-valuemax","100"),de.setAttribute("aria-valuenow",String(ie.progress));const Ce=e.createElement("span");Ce.className=`${v}__item-fill`,Ce.style.width=`${ie.progress}%`,de.appendChild(Ce),be.appendChild(de)}if(ie.message){const de=e.createElement("span");if(de.className=`${v}__item-message`,de.appendChild(e.createTextNode(ie.message)),ie.status==="error"){de.appendChild(e.createTextNode(" "));const Ce=e.createElement("button");Ce.type="button",Ce.className=`${v}__retry`,Ce.textContent=y("form.file.retry"),Ce.setAttribute("data-retry",ie.id),Ce.disabled=G.disabled||G.readOnly,de.appendChild(Ce)}be.appendChild(de)}c.appendChild(oe)}},ne.__latUpload=h=>{if(!G.upload){h.status="done",h.progress=100,ne.__latPaint();return}h.status="uploading",h.progress=0,h.message="";let F=null;typeof AbortController<"u"&&(F=new AbortController,G.controllers.set(h.id,F));const J=F?F.signal:void 0,ie=pe=>{h.progress=Math.max(0,Math.min(100,Number(pe)||0)),h.status="uploading",ne.__latPaint()};let oe;try{oe=G.upload(h.file,{onProgress:ie,signal:J})}catch(pe){oe=Promise.reject(pe)}oe&&typeof oe.then=="function"&&oe.then(()=>{G.controllers.delete(h.id),h.status="done",h.progress=100,ne.__latPaint(),ne.__latAnnounce(y("form.file.uploaded",{name:h.name})),_(ne,o.doc)},pe=>{G.controllers.delete(h.id),h.status="error",h.message=pe&&pe.message?String(pe.message):y("form.file.uploadFailed"),ne.__latPaint(),ne.__latAnnounce(y("form.file.failed",{name:h.name})),_(ne,o.doc)})},ne.__latTake=h=>{const F=[...h||[]];if(!F.length||G.disabled||G.readOnly)return;const J=G.multiple?F:F.slice(0,1),ie=[],oe=[];let pe=G.maxFiles?Math.max(0,G.maxFiles-G.entries.length):1/0;for(const be of J){if(pe<=0){oe.push({file:be,reason:"count"});continue}if(G.maxSize&&be.size>G.maxSize){oe.push({file:be,reason:"size"});continue}if(!f(be,G.accept)){oe.push({file:be,reason:"type"});continue}ie.push({id:T(),file:be,name:be.name,size:be.size,type:be.type,status:"selected",progress:0,message:""}),pe-=1}if(ie.length){G.multiple||(G.entries=[]),G.entries.push(...ie),ne.__latPaint(),_(ne,o.doc),ne.__latAnnounce(ie.length===1?y("form.file.addedOne"):y("form.file.added",{count:String(ie.length)}));for(const be of ie)ne.__latUpload(be)}for(const be of oe){const je=be.reason==="size"?y("form.file.rejected.size",{size:k(G.maxSize)}):be.reason==="type"?y("form.file.rejected.type"):y("form.file.rejected.count",{max:String(G.maxFiles)});G.entries.push({id:T(),file:be.file,name:be.file.name,size:be.file.size,type:be.file.type,status:"rejected",progress:0,message:je}),ne.__latAnnounce(je)}ne.__latPaint()},ne.__latRemove=h=>{const F=G.controllers.get(h);F&&(F.abort(),G.controllers.delete(h));const J=G.entries.find(ie=>ie.id===h);J&&x(J),G.entries=G.entries.filter(ie=>ie.id!==h),ne.__latPaint(),_(ne,o.doc)},ne.__latRetry=h=>{if(G.disabled||G.readOnly)return;const F=G.entries.find(J=>J.id===h);!F||!F.file||F.status==="rejected"||(ne.__latUpload(F),_(ne,o.doc))},ne.__latClick=h=>{if(G.disabled||G.readOnly)return;const F=h.target&&h.target.closest?h.target:null,J=F&&F.closest?F.closest("[data-remove]"):null;if(J&&ne.contains(J)){ne.__latRemove(J.getAttribute("data-remove"));return}const ie=F&&F.closest?F.closest("[data-retry]"):null;if(ie&&ne.contains(ie)){ne.__latRetry(ie.getAttribute("data-retry"));return}F&&F.closest&&F.closest(`.${v}__zone`)&&G.input.click()},ne.__latKeydown=h=>{G.disabled||G.readOnly||(h.key==="Enter"||h.key===" "||h.key==="Spacebar")&&h.target===G.zone&&(h.preventDefault(),G.input.click())},ne.__latChange=()=>{ne.__latTake(G.input.files),G.input.value=""},ne.__latDragKind=h=>{if(!G.accept.length)return"over";const F=h.dataTransfer;if(!F||!F.types||!F.types.length)return"over";const J=Array.from(F.types);return J.includes("Files")?"over":J.every(ie=>!f({name:"",type:ie},G.accept))?"invalid":"over"},ne.__latDrag=h=>{if(!(G.disabled||G.readOnly)){if(h.type==="dragenter"||h.type==="dragover"){h.preventDefault(),ne.__latDragState(ne.__latDragKind(h));return}if(h.type==="dragleave"){if(h.relatedTarget&&G.zone.contains(h.relatedTarget))return;ne.__latDragState("none");return}h.type==="drop"&&(h.preventDefault(),ne.__latDragState("none"),ne.__latTake(h.dataTransfer&&h.dataTransfer.files))}},ne.__latPaste=h=>{if(G.disabled||G.readOnly||!h.clipboardData)return;const F=[...h.clipboardData.files||[]];F.length&&(h.preventDefault(),ne.__latTake(F))},b.addEventListener("change",ne.__latChange),ne.addEventListener("click",ne.__latClick),ne.addEventListener("keydown",ne.__latKeydown),ne.addEventListener("paste",ne.__latPaste),B&&["dragenter","dragover","dragleave","drop"].forEach(h=>ne.addEventListener(h,ne.__latDrag)),ne.__latPaint(),ne},read(i){const o=i.__latFile;return o?o.entries.filter(e=>e.status!=="rejected").map($):[]},write(i,o){const e=i.__latFile;if(!e)return;const y=Array.isArray(o)?o:[],d=e.entries.filter(V=>V.status==="rejected");for(const V of e.entries)d.includes(V)||x(V);e.entries=d;for(const V of y)e.entries.push({id:V&&V.id?String(V.id):T(),file:V&&V.file?V.file:null,name:V&&V.name!=null?String(V.name):"",size:V&&V.size!=null?Number(V.size):0,type:V&&V.type!=null?String(V.type):"",status:V&&V.status?String(V.status):"done",progress:V&&V.progress!=null?Number(V.progress):100,message:V&&V.message?String(V.message):""});i.__latPaint&&i.__latPaint()},state(i,o){const e=i.__latFile;e&&(e.disabled=o.disabled===!0,e.readOnly=o.readOnly===!0,e.disabled?i.setAttribute("aria-disabled","true"):i.removeAttribute("aria-disabled"),e.readOnly?i.setAttribute("aria-readonly","true"):i.removeAttribute("aria-readonly"),i.__latPaint&&i.__latPaint())},validate(i,o,e){const y=i.__latFile;if(!y)return null;const d=y.entries.find(V=>V.status==="rejected");return d&&d.message&&(!Array.isArray(e)||e.length===0)?d.message:y.maxFiles&&Array.isArray(e)&&e.length>y.maxFiles?`Too many files (max ${y.maxFiles})`:null}})}),ge("packages/dom/src/editors/richtext-icons.js",function(R,Y){"use strict";Object.defineProperty(R,"TOOL_GLYPHS",{enumerable:!0,get:function(){return v}}),Object.defineProperty(R,"letterGlyph",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(R,"toolGlyph",{enumerable:!0,get:function(){return s}});const n="http://www.w3.org/2000/svg",P=Object.freeze({bold:{char:"B",weight:"700"},italic:{char:"I",style:"italic"},underline:{char:"U",decoration:"underline"},strike:{char:"S",decoration:"line-through"}}),v=Object.freeze({color:"M8 2.5l4 5.5a4 4 0 0 1-8 0zM4.5 12.5h7",alignLeft:"M3 4h10M3 8h6M3 12h10",alignCenter:"M3 4h10M5 8h6M3 12h10",alignRight:"M3 4h10M7 8h6M3 12h10",ul:"M3 5.5h.01M3 9.5h.01M3 13.5h.01M6 5.5h7M6 9.5h7M6 13.5h7",ol:"M2.5 4.5h.01M2.5 8.5h.01M2.5 12.5h.01M5 4.5h8M5 8.5h8M5 12.5h8",outdent:"M3 4h8M3 8h5M3 12h8M8 3v2M8 11v2",indent:"M5 4h8M5 8h5M5 12h8M10 3v2M10 11v2",link:"M6.5 9.5a3 3 0 0 0 3 3l2-2a3 3 0 0 0-3-3M9.5 6.5a3 3 0 0 0-3-3l-2 2a3 3 0 0 0 3 3",image:"M2 3h12v10H2zM5.5 11l2.5-3 2 2 1.5-1.5 2 2.5M5.5 6a.8.8 0 1 0 0 1.6.8.8 0 0 0 0-1.6z",clear:"M5 4h9M6 4l-.5 8a2 2 0 0 1-2 1.8A2 2 0 0 1 1.5 12L1 4M4 4V2.5h8V4M6 7v3M9.5 7v3",source:"M6 4L2.5 8 6 12M10 4l3.5 4L10 12",undo:"M3 7h6a3.5 3.5 0 0 1 0 7H5M3 7l2-2M3 7l2 2",redo:"M13 7H7a3.5 3.5 0 0 0 0 7h4M13 7l-2-2M13 7l-2 2"});function ee(z,E){const _=P[E],T=z.createElementNS(n,"svg");T.setAttribute("viewBox","0 0 16 16"),T.setAttribute("width","16"),T.setAttribute("height","16"),T.setAttribute("focusable","false"),T.setAttribute("aria-hidden","true");const k=z.createElementNS(n,"text");return k.setAttribute("x","8"),k.setAttribute("y","12"),k.setAttribute("text-anchor","middle"),k.style.fontSize="12px",k.style.fill="currentColor",k.style.fontFamily='system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif',_.weight&&(k.style.fontWeight=_.weight),_.style&&(k.style.fontStyle=_.style),_.decoration&&(k.style.textDecoration=_.decoration),k.textContent=_.char,T.appendChild(k),T}function s(z,E){const _=z.createElementNS(n,"svg");_.setAttribute("viewBox","0 0 16 16"),_.setAttribute("focusable","false"),_.setAttribute("aria-hidden","true"),_.setAttribute("fill","none"),_.setAttribute("stroke","currentColor"),_.setAttribute("stroke-width","1.5"),_.setAttribute("stroke-linecap","round"),_.setAttribute("stroke-linejoin","round");const T=z.createElementNS(n,"path");return T.setAttribute("d",v[E]),_.appendChild(T),_}}),ge("packages/modules/form/controls/richtext.js",function(R,Y){"use strict";Object.defineProperty(R,"sanitize",{enumerable:!0,get:function(){return k}}),Object.defineProperty(R,"escapeHtml",{enumerable:!0,get:function(){return s}});const P=Y("packages/modules/form/controls/registry.js").registerControl,v=Y("packages/dom/src/editors/sanitize-richtext.js"),ee=v.sanitizeRichText,s=v.escapeHtml,z=Y("packages/dom/src/editors/richtext-icons.js"),E=z.letterGlyph,_=z.toolGlyph,T=z.TOOL_GLYPHS,k=ee,f=Object.freeze({basic:["bold","italic","underline","color","lowercase","uppercase","|","alignLeft","alignCenter","alignRight","ul","ol","outdent","indent","|","undo","redo"],html:["bold","italic","underline","strike","color","lowercase","uppercase","|","heading","alignLeft","alignCenter","alignRight","ul","ol","outdent","indent","|","link","clear","source","|","undo","redo"],rich:["bold","italic","underline","strike","color","lowercase","uppercase","|","heading","alignLeft","alignCenter","alignRight","ul","ol","outdent","indent","|","link","image","clear","source","|","undo","redo"]}),p=Object.freeze(["bold","italic","underline","strike"]),l=Object.freeze({bold:"form.richtext.bold",italic:"form.richtext.italic",underline:"form.richtext.underline",strike:"form.richtext.strike",color:"form.richtext.color",heading:"form.richtext.heading",alignLeft:"form.richtext.alignLeft",alignCenter:"form.richtext.alignCenter",alignRight:"form.richtext.alignRight",ul:"form.richtext.ul",ol:"form.richtext.ol",outdent:"form.richtext.outdent",indent:"form.richtext.indent",link:"form.richtext.link",image:"form.richtext.image",clear:"form.richtext.clear",source:"form.richtext.source",undo:"form.richtext.undo",redo:"form.richtext.redo",lowercase:"form.richtext.lowercase",uppercase:"form.richtext.uppercase"});function j(L){return{bold:{cmd:"bold",state:"bold"},italic:{cmd:"italic",state:"italic"},underline:{cmd:"underline",state:"underline"},strike:{cmd:"strikeThrough",state:"strikeThrough"},alignLeft:{cmd:"justifyLeft",state:"justifyLeft"},alignCenter:{cmd:"justifyCenter",state:"justifyCenter"},alignRight:{cmd:"justifyRight",state:"justifyRight"},ul:{cmd:"insertUnorderedList",state:"insertUnorderedList"},ol:{cmd:"insertOrderedList",state:"insertOrderedList"},outdent:{cmd:"outdent"},indent:{cmd:"indent"},clear:{cmd:"removeFormat"}}[L]||null}const $=Object.freeze(["#1f2937","#6b7280","#dc2626","#f59e0b","#16a34a","#2563eb","#7c3aed","#db2777","#0f766e","#ffffff"]),t=Object.freeze([["p","Paragraph"],["h1","Heading 1"],["h2","Heading 2"],["h3","Heading 3"],["blockquote","Quote"]]);function u(L){return Array.isArray(L)?L.map(g=>String(g)):f[L]||f.basic}function m(L){return new Promise((g,r)=>{const x=new FileReader;x.onload=()=>g(x.result),x.onerror=()=>r(x.error||new Error("read failed")),x.readAsDataURL(L)})}P("richtext",{kind:"field",build(L,g){const r=g.doc,x=L.props||{},i=u(x.toolbar),o=Array.isArray(x.headings)?x.headings:t,e=Array.isArray(x.colors)?x.colors:$,y=x.linkTarget!=null?String(x.linkTarget):"_blank",d=Number(x.minHeight)||160,V=Number(x.maxHeight)||0,te=Number(x.maxImageSize)||0,I=typeof x.onImage=="function"?x.onImage:null,W=x.sanitizePaste!==!1,a=x.allowedTags,B=x.placeholder!=null?String(x.placeholder):g.t("form.richtext.placeholder"),O=r.createElement("div");O.className="lat-form__richtext";const D={toolbar:i,headings:o,colors:e,linkTarget:y,minHeight:d,maxHeight:V,maxImageSize:te,onImage:I,sanitizePaste:W,allowedTags:a,placeholder:B,disabled:!1,readOnly:!1,toolbarEl:null,buttons:{},editor:null,source:null,popover:null,fileInput:null,range:null,sourceMode:!1,sourceDirty:!1,history:{stack:[],index:0},lastValue:null};O.__latRt=D;const re=k(r,L.value==null?"":String(L.value),a,{});D.history={stack:[re],index:0},D.lastValue=re;const H=r.createElement("div");H.className="lat-form__richtext-toolbar",H.setAttribute("role","toolbar"),H.setAttribute("aria-label",g.t("form.richtext.formatting")),D.toolbarEl=H;for(const b of i){if(b==="|"){const M=r.createElement("span");M.className="lat-form__richtext-sep",M.setAttribute("role","separator"),H.appendChild(M);continue}if(b==="heading"){const M=r.createElement("select");M.className="lat-form__richtext-select",M.title=g.t(l.heading),M.setAttribute("aria-label",g.t(l.heading)),M.setAttribute("data-item","heading");for(const[U,X]of o){const Z=r.createElement("option");Z.value=U,Z.textContent=String(X),M.appendChild(Z)}D.buttons.heading=M,H.appendChild(M);continue}const w=r.createElement("button");w.type="button",w.className="lat-form__richtext-btn",w.setAttribute("data-item",b),w.title=g.t(l[b]||b),w.setAttribute("aria-label",g.t(l[b]||b)),b==="lowercase"||b==="uppercase"?(w.className+=" lat-form__richtext-btntext",w.textContent=g.t(b==="lowercase"?"form.richtext.lowercaseText":"form.richtext.uppercaseText")):p.includes(b)?w.appendChild(E(r,b)):T[b]?w.appendChild(_(r,b)):w.textContent=b,D.buttons[b]=w,H.appendChild(w)}O.appendChild(H);const ce=r.createElement("div");ce.className="lat-form__richtext-popover",ce.hidden=!0,O.appendChild(ce),D.popover=ce;const le=r.createElement("div");le.className="lat-form__richtext-editor",le.contentEditable=L.readOnly||L.disabled?"false":"true",le.setAttribute("role","textbox"),le.setAttribute("aria-multiline","true"),le.setAttribute("aria-label",L.label!=null?String(L.label):g.t("form.richtext.richText")),le.setAttribute("data-placeholder",B),le.style.minHeight=`${d}px`,V&&(le.style.maxHeight=`${V}px`),le.innerHTML=re,O.appendChild(le),D.editor=le;const ne=r.createElement("textarea");ne.className="lat-form__richtext-source",ne.setAttribute("aria-label",g.t("form.richtext.source")),ne.spellcheck=!1,ne.hidden=!0,O.appendChild(ne),D.source=ne;const G=r.createElement("input");return G.type="file",G.accept="image/*",G.className="lat-form__richtext-file",G.tabIndex=-1,G.setAttribute("aria-hidden","true"),O.appendChild(G),D.fileInput=G,O.__latSave=()=>{const b=r.defaultView&&r.defaultView.getSelection?r.defaultView.getSelection():null;b&&b.rangeCount&&le.contains(b.anchorNode)&&(D.range=b.getRangeAt(0).cloneRange())},O.__latRestore=()=>{if(!D.range)return;const b=r.defaultView&&r.defaultView.getSelection?r.defaultView.getSelection():null;if(b)try{b.removeAllRanges(),b.addRange(D.range)}catch{}},O.__latRefresh=()=>{Object.entries(D.buttons).forEach(([b,w])=>{const M=j(b);if(M&&M.state&&w.tagName==="BUTTON"){let U=!1;try{U=r.queryCommandState(M.state)}catch{U=!1}w.setAttribute("aria-pressed",U?"true":"false"),w.classList.toggle("is-active",U)}if(b==="heading"&&w.tagName==="SELECT"){let U="";try{U=String(r.queryCommandValue("formatBlock")||"").toLowerCase()}catch{U=""}const X=[...w.options].some(Z=>Z.value===U);w.value=X?U:"p"}})},O.__latExec=(b,w)=>{le.focus(),O.__latRestore();try{r.execCommand("styleWithCSS",!1,b==="foreColor")}catch{}try{r.execCommand(b,!1,w===void 0?null:w)}catch{}O.__latAfterEdit()},O.__latAfterEdit=()=>{const b=le.innerHTML,w=D.history;w.stack[w.index]!==b&&(w.stack=w.stack.slice(0,w.index+1),w.stack.push(b),w.stack.length>200&&w.stack.shift(),w.index=w.stack.length-1),O.__latRefresh();const M=k(r,b,a,{}),U=D.lastValue==null?k(r,w.stack[0]||"",a,{}):D.lastValue;D.lastValue=M,N(O,r,U,M)},O.__latCaretEnd=()=>{const b=r.createRange();b.selectNodeContents(le),b.collapse(!1);const w=r.defaultView&&r.defaultView.getSelection?r.defaultView.getSelection():null;w&&(w.removeAllRanges(),w.addRange(b)),D.range=b.cloneRange()},O.__latUndo=()=>{const b=D.history;if(b.index<=0)return;b.index-=1,le.innerHTML=b.stack[b.index],O.__latCaretEnd(),O.__latRefresh();const w=k(r,le.innerHTML,a,{});D.lastValue=w,N(O,r,D.lastValue,w)},O.__latRedo=()=>{const b=D.history;if(b.index>=b.stack.length-1)return;b.index+=1,le.innerHTML=b.stack[b.index],O.__latCaretEnd(),O.__latRefresh();const w=k(r,le.innerHTML,a,{});D.lastValue=w,N(O,r,D.lastValue,w)},O.__latClosePopover=()=>{ce.hidden=!0,ce.textContent=""},O.__latOpenPopover=(b,w)=>{if(ce.textContent="",ce.hidden=!1,ce.style.left=`${Math.max(0,w.offsetLeft)}px`,b==="color"){const M=r.createElement("div");M.className="lat-form__richtext-swatches";for(const q of e){const S=r.createElement("button");S.type="button",S.className="lat-form__richtext-swatch",S.title=String(q),S.style.background=String(q),S.setAttribute("data-color",String(q)),M.appendChild(S)}ce.appendChild(M);const U=r.createElement("div");U.className="lat-form__richtext-poprow";const X=r.createElement("input");X.type="color",X.className="lat-form__richtext-colorinput",X.setAttribute("aria-label",g.t("form.richtext.colorCustom")),X.addEventListener("input",()=>{O.__latRestore(),O.__latExec("foreColor",X.value)});const Z=r.createElement("button");Z.type="button",Z.className="lat-form__richtext-popbtn",Z.textContent=g.t("form.richtext.colorRemove"),Z.addEventListener("click",()=>{O.__latRestore(),O.__latExec("foreColor","inherit"),O.__latClosePopover()}),U.appendChild(X),U.appendChild(Z),ce.appendChild(U),M.addEventListener("click",q=>{const S=q.target&&q.target.closest?q.target.closest("[data-color]"):null;S&&(O.__latRestore(),O.__latExec("foreColor",S.getAttribute("data-color")),O.__latClosePopover())})}else{const M=O.__latClosestLink(),U=r.createElement("input");U.type="url",U.className="lat-form__richtext-linkinput",U.placeholder=g.t("form.richtext.linkPlaceholder"),U.value=M&&M.getAttribute("href")||"",U.setAttribute("aria-label",g.t("form.richtext.linkLabel"));const X=()=>{const S=U.value.trim();if(O.__latRestore(),!S){O.__latExec("unlink"),O.__latClosePopover();return}if(!/^(https?:\/\/|mailto:|tel:|\/)/i.test(S)){U.classList.add("is-invalid");return}if(M)M.setAttribute("href",S),O.__latAfterEdit();else{const C=r.defaultView&&r.defaultView.getSelection?r.defaultView.getSelection():null;if(C&&C.isCollapsed){const c=y?` target="${s(y)}" rel="noopener noreferrer"`:"";O.__latExec("insertHTML",k(r,`<a href="${s(S)}"${c}>${s(S)}</a>`,a,{}))}else{O.__latExec("createLink",S);const c=O.__latClosestLink();c&&y&&(c.setAttribute("target",y),c.setAttribute("rel","noopener noreferrer"))}}O.__latClosePopover()};U.addEventListener("keydown",S=>{S.key==="Enter"&&(S.preventDefault(),X()),S.key==="Escape"&&O.__latClosePopover()});const Z=r.createElement("div");Z.className="lat-form__richtext-poprow",Z.appendChild(U);const q=r.createElement("button");if(q.type="button",q.className="lat-form__richtext-popbtn",q.textContent=M?g.t("form.richtext.linkUpdate"):g.t("form.richtext.linkAdd"),q.addEventListener("click",X),Z.appendChild(q),M){const S=r.createElement("button");S.type="button",S.className="lat-form__richtext-popbtn",S.textContent=g.t("form.richtext.linkRemove"),S.addEventListener("click",()=>{O.__latRestore(),O.__latExec("unlink"),O.__latClosePopover()}),Z.appendChild(S)}ce.appendChild(Z),setTimeout(()=>U.focus(),0)}},O.__latClosestLink=()=>{const b=r.defaultView&&r.defaultView.getSelection?r.defaultView.getSelection():null;if(!b||b.rangeCount===0)return null;let w=b.getRangeAt(0).commonAncestorContainer;w.nodeType===3&&(w=w.parentNode);const M=w.closest?w.closest("a"):null;return M&&le.contains(M)?M:null},O.__latRun=b=>{if(D.disabled||D.readOnly)return;b!=="source"&&D.sourceMode&&O.__latToggleSource(!1),O.__latRestore();const w=j(b);if(b==="color"||b==="link"){O.__latOpenPopover(b,D.buttons[b]);return}if(b==="undo"){O.__latUndo();return}if(b==="redo"){O.__latRedo();return}if(b==="source"){O.__latToggleSource();return}if(b==="image"){D.fileInput.click();return}if(b==="lowercase"||b==="uppercase"){O.__latCase(b==="uppercase");return}if(w){O.__latExec(w.cmd);return}},O.__latCase=b=>{const w=r.defaultView&&r.defaultView.getSelection?r.defaultView.getSelection():null;if(!w||w.rangeCount===0||w.isCollapsed)return;const M=w.toString();O.__latExec("insertText",b?M.toUpperCase():M.toLowerCase())},O.__latToggleSource=b=>{const w=b===void 0?!D.sourceMode:!!b;if(w===D.sourceMode)return;w?(D.source.value=k(r,le.innerHTML,a,{}).replace(/></g,`>
1294
- <`),le.hidden=!0,ne.hidden=!1,ne.focus()):(D.sourceDirty&&(le.innerHTML=k(r,ne.value,a,{}),D.sourceDirty=!1),ne.hidden=!0,le.hidden=!1,le.focus()),D.sourceMode=w;const M=D.buttons.source;M&&(M.classList.toggle("is-active",w),M.setAttribute("aria-pressed",w?"true":"false")),Object.entries(D.buttons).forEach(([U,X])=>{U!=="source"&&(X.disabled=w)}),w||O.__latAfterEdit()},O.__latInsertImage=async b=>{if(!/^image\//.test(b.type)||te&&b.size>te)return;let w;try{w=I?await I(b):await m(b)}catch{return}w&&O.__latExec("insertHTML",k(r,`<img src="${s(w)}" alt="${s(b.name)}" style="max-width:100%">`,a,{}))},O.__latToolbarClick=b=>{const w=b.target&&b.target.closest?b.target.closest("[data-item]"):null;!w||!H.contains(w)||w.tagName==="SELECT"||(b.preventDefault(),O.__latRun(w.getAttribute("data-item")))},O.__latToolbarDown=b=>{b.target&&b.target.closest&&b.target.closest(".lat-form__richtext-btn")&&b.preventDefault()},O.__latSelect=b=>{b.target&&b.target.getAttribute&&b.target.getAttribute("data-item")==="heading"&&(O.__latRestore(),O.__latExec("formatBlock",b.target.value))},O.__latInput=()=>{O.__latAfterEdit()},O.__latKey=b=>{if(!(b.ctrlKey||b.metaKey))return;const w=b.key.toLowerCase();w==="z"&&!b.shiftKey?(b.preventDefault(),O.__latUndo()):w==="y"||w==="z"&&b.shiftKey?(b.preventDefault(),O.__latRedo()):w==="k"&&D.buttons.link&&(b.preventDefault(),O.__latRun("link"))},O.__latPaste=b=>{if(!W||!b.clipboardData)return;const w=b.clipboardData.getData("text/html"),M=b.clipboardData.getData("text/plain");if(!w&&!M)return;b.preventDefault();const U=w?k(r,w,a,{stripStyles:!0}):s(M).replace(/\r?\n/g,"<br>");O.__latExec("insertHTML",U)},O.__latDrop=b=>{if(!W||!b.dataTransfer)return;const w=b.dataTransfer.files;if(w&&w.length){b.preventDefault();const Z=w[0];Z&&O.__latInsertImage(Z);return}const M=b.dataTransfer.getData("text/html"),U=b.dataTransfer.getData("text/plain");if(!M&&!U)return;b.preventDefault();const X=M?k(r,M,a,{stripStyles:!0}):s(U).replace(/\r?\n/g,"<br>");O.__latExec("insertHTML",X)},O.__latBeforeInput=b=>{W&&(b.inputType==="insertFromDrop"||b.inputType==="insertFromPaste")&&b.preventDefault()},O.__latSelChange=()=>{r.activeElement===le&&(O.__latSave(),O.__latRefresh())},O.__latFile=()=>{const b=G.files&&G.files[0];G.value="",b&&O.__latInsertImage(b)},O.__latSourceInput=()=>{D.sourceDirty=!0},O.__latDocClick=b=>{ce&&!ce.hidden&&!ce.contains(b.target)&&!H.contains(b.target)&&O.__latClosePopover()},H.addEventListener("click",O.__latToolbarClick),H.addEventListener("mousedown",O.__latToolbarDown),H.addEventListener("change",O.__latSelect),le.addEventListener("input",O.__latInput),le.addEventListener("keydown",O.__latKey),le.addEventListener("paste",O.__latPaste),le.addEventListener("drop",O.__latDrop),le.addEventListener("beforeinput",O.__latBeforeInput),G.addEventListener("change",O.__latFile),ne.addEventListener("input",O.__latSourceInput),r.addEventListener&&(r.addEventListener("selectionchange",O.__latSelChange),r.addEventListener("mousedown",O.__latDocClick,!0)),O},read(L){const g=L.__latRt;return g?g.sourceMode?k(L.ownerDocument,g.source.value,g.allowedTags,{}):k(L.ownerDocument,g.editor.innerHTML,g.allowedTags,{}):""},write(L,g){const r=L.__latRt;if(!r)return;const x=L.ownerDocument,i=k(x,g==null?"":String(g),r.allowedTags,{});r.sourceMode&&(r.source.value=i),r.editor.innerHTML=i,r.history={stack:[i],index:0},r.lastValue=i},state(L,g){const r=L.__latRt;r&&(r.disabled=g.disabled===!0,r.readOnly=g.readOnly===!0,r.editor.contentEditable=r.disabled||r.readOnly?"false":"true",r.editor.tabIndex=r.readOnly?0:-1,r.readOnly?r.editor.setAttribute("aria-readonly","true"):r.editor.removeAttribute("aria-readonly"),r.disabled?L.setAttribute("aria-disabled","true"):L.removeAttribute("aria-disabled"),r.readOnly?L.setAttribute("aria-readonly","true"):L.removeAttribute("aria-readonly"),Object.values(r.buttons).forEach(x=>{x.disabled=r.disabled||r.readOnly}))}});function N(L,g,r,x){const i=g&&g.defaultView,o=i&&i.Event,e=o?new o("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};L.dispatchEvent(e)}}),ge("packages/modules/form/controls/rating.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v=5,ee=Object.freeze({star:"M8 1.5l1.9 3.9 4.3.6-3.1 3 .7 4.3L8 11.2l-3.8 2 .7-4.3-3.1-3 4.3-.6z",heart:"M8 14s-5-3.2-5-6.3A2.9 2.9 0 0 1 8 5.7 2.9 2.9 0 0 1 13 7.7C13 10.8 8 14 8 14z"});function s(l){const j=String(l??"");return Object.hasOwn(ee,j)?j:"star"}function z(l,j,$){return Math.min(Math.max(l,j),$)}function E(l,j){const $=j&&j.defaultView,t=$&&$.Event,u=t?new t("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};l.dispatchEvent(u)}function _(l,j,$){const t=l.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("viewBox","0 0 16 16"),t.setAttribute("focusable","false"),t.setAttribute("aria-hidden","true"),$?t.setAttribute("fill","currentColor"):(t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","1.5"),t.setAttribute("stroke-linejoin","round"));const u=l.createElementNS("http://www.w3.org/2000/svg","path");return u.setAttribute("d",ee[j]),t.appendChild(u),t}function T(l,j,$){const t=Number(l),u=Number.isFinite(t)?t:0,m=$?Math.round(u*2)/2:Math.round(u);return z(m,0,j)}function k(l,j){return Math.min(1,Math.max(0,l-(j-1)))}P("rating",{kind:"field",build(l,j){const $=j.doc,t=l.props||{},u=Math.max(1,Math.floor(Number(l.max!=null?l.max:t.max)||v)),m=t.allowHalf===!0,N=t.allowClear!==!1,L=t.showValue===!0,g=Array.isArray(t.labels)?t.labels:null,r=s(t.icons&&t.icons.filled?t.icons.filled:t.icon),x=s(t.icons&&t.icons.empty?t.icons.empty:`${r}-outline`),i=t.size==="lg"||t.size==="sm"?t.size:"md",o=$.createElement("div");o.className=`lat-form__rating lat-form__rating--${i}`,o.setAttribute("role","slider"),o.setAttribute("aria-valuemin","0"),o.setAttribute("aria-valuemax",String(u)),o.setAttribute("aria-label",l.label!=null?String(l.label):j.t("form.rating"));const e={value:T(l.value,u,m),max:u,allowHalf:m,allowClear:N,labels:g,showValue:L,filledName:r,emptyName:x,items:[],fills:[],valueEl:null};o.__latRating=e;const y=$.createElement("span");y.className="lat-form__rating-track",y.setAttribute("aria-hidden","true");for(let d=0;d<u;d++){const V=$.createElement("span");V.className="lat-form__rating-item",V.setAttribute("data-index",String(d)),g&&g[d]!=null&&g[d]!==""&&(V.title=String(g[d])),V.appendChild(_($,x,!1));const te=$.createElement("span");te.className="lat-form__rating-fill",te.setAttribute("aria-hidden","true"),te.appendChild(_($,r,!0)),V.appendChild(te),y.appendChild(V),e.items.push(V),e.fills.push(te)}if(o.appendChild(y),L){const d=$.createElement("span");d.className="lat-form__rating-value",d.setAttribute("aria-hidden","true"),o.appendChild(d),e.valueEl=d}return o.__latPaint=()=>{for(let d=0;d<e.items.length;d++){const V=k(e.value,d+1);e.items[d].setAttribute("data-fill",V>=1?"full":V>0?"half":"empty"),e.fills[d].style.width=`${(V*100).toFixed(2)}%`}o.setAttribute("aria-valuenow",String(e.value)),o.setAttribute("aria-valuetext",f(e)),e.valueEl&&(e.valueEl.textContent=p(e))},o.__latSet=d=>{e.value=T(d,u,m),o.__latPaint()},o.__latClear=()=>{e.value=0,o.__latPaint()},o.__latPick=(d,V)=>{let te=d+1;if(m&&V&&Number.isFinite(V.clientX)){const I=e.items[d].getBoundingClientRect();I&&I.width>0&&(te=V.clientX-I.left<I.width/2?d+.5:d+1)}N&&te===e.value&&(te=0),o.__latSet(te),E(o,j.doc)},o.addEventListener("click",d=>{if(e.disabled||e.readOnly)return;const V=d.target&&d.target.closest?d.target.closest(".lat-form__rating-item"):null;!V||!o.contains(V)||o.__latPick(Number(V.getAttribute("data-index")),d)}),o.__latKey=d=>{if(e.disabled||e.readOnly)return;const V=m?.5:1;let te=e.value;if(d.key==="ArrowRight"||d.key==="ArrowUp")te+=V;else if(d.key==="ArrowLeft"||d.key==="ArrowDown")te-=V;else if(d.key==="Home")te=0;else if(d.key==="End")te=u;else if(d.key==="Backspace"||d.key==="Delete")te=0;else return;d.preventDefault(),o.__latSet(te),E(o,j.doc)},o.addEventListener("keydown",o.__latKey),o.__latPaint(),o},read(l){return l.__latRating?l.__latRating.value:0},write(l,j){l.__latRating&&(l.__latRating.value=T(j,l.__latRating.max,l.__latRating.allowHalf),l.__latPaint())},state(l,j){const $=l.__latRating;$&&($.disabled=j.disabled===!0,$.readOnly=j.readOnly===!0,l.tabIndex=$.disabled?-1:0,$.readOnly?l.setAttribute("aria-readonly","true"):l.removeAttribute("aria-readonly"),$.disabled?l.setAttribute("aria-disabled","true"):l.removeAttribute("aria-disabled"))}});function f(l){const j=Math.round(l.value);return l.labels&&l.labels[j-1]&&l.value===j?l.labels[j-1]:`${l.value} of ${l.max}`}function p(l){return String(l.value)}}),ge("packages/modules/form/controls/stage.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl;function v(z,E){const _=E&&E.defaultView,T=_&&_.Event,k=T?new T("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};z.dispatchEvent(k)}function ee(z,E){return typeof E=="number"&&Number.isFinite(E)?Math.min(Math.max(Math.round(E),0),z.length-1):typeof E=="string"?z.indexOf(E):-1}function s(z,E,_){return`${z}, ${E+1} of ${_}`}P("stage",{kind:"field",build(z,E){const _=E.doc,T=z.props||{},k=Array.isArray(T.stages)?T.stages.map(m=>String(m)):[],f=T.clickable!==!1,p=T.showIcons!==!1,l=ee(k,z.value!=null?z.value:T.current),j=ee(k,T.completed),$=_.createElement("div");$.className="lat-form__stage",$.setAttribute("role","radiogroup"),$.setAttribute("aria-label",z.label!=null?String(z.label):E.t("form.stage"));const t=[],u={stages:k,value:l>=0?k[l]:null,index:l,completed:j,clickable:f,showIcons:p,disabled:!1,readOnly:!1,focus:l>=0?l:0};$.__latStage=u;for(let m=0;m<k.length;m++){const N=_.createElement(f?"button":"span");if(N.type=f?"button":void 0,N.className="lat-form__stage-step",N.setAttribute("data-index",String(m)),f&&(N.setAttribute("role","radio"),N.setAttribute("aria-label",s(k[m],m,k.length))),p){const g=_.createElementNS("http://www.w3.org/2000/svg","svg");g.setAttribute("viewBox","0 0 16 16"),g.setAttribute("aria-hidden","true"),g.setAttribute("class","lat-form__stage-check");const r=_.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d","M3 8.5l3 3 7-7"),r.setAttribute("fill","none"),r.setAttribute("stroke","currentColor"),r.setAttribute("stroke-width","2"),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round"),g.appendChild(r),N.appendChild(g)}const L=_.createElement("span");L.className="lat-form__stage-label",L.textContent=k[m],N.appendChild(L),$.appendChild(N),t.push(N)}return $.__latPaint=()=>{for(let m=0;m<t.length;m++){const N=m===u.index,L=!N&&u.completed>=0&&m<=u.completed;t[m].setAttribute("data-state",N?"current":L?"done":"todo"),u.clickable&&(t[m].setAttribute("aria-checked",N?"true":"false"),t[m].tabIndex=u.disabled?-1:m===u.focus?0:-1)}},$.__latSelect=m=>{const N=m>=0&&m<k.length?k[m]:null;N!==u.value&&(u.index=m>=0&&m<k.length?m:-1,u.value=N,u.focus=u.index>=0?u.index:0,$.__latPaint(),v($,E.doc))},$.__latKey=m=>{if(u.disabled||u.readOnly||!u.clickable||!k.length)return;let N=u.focus;if(m.key==="ArrowRight"||m.key==="ArrowDown")N+=1;else if(m.key==="ArrowLeft"||m.key==="ArrowUp")N-=1;else if(m.key==="Home")N=0;else if(m.key==="End")N=k.length-1;else return;m.preventDefault();const L=Math.min(Math.max(N,0),k.length-1);u.focus=L,t[L].focus(),$.__latSelect(L)},f&&($.addEventListener("click",m=>{if(u.disabled||u.readOnly)return;const N=m.target&&m.target.closest?m.target.closest(".lat-form__stage-step"):null;if(!N||!$.contains(N))return;const L=Number(N.getAttribute("data-index"));u.focus=L,$.__latSelect(L)}),$.addEventListener("keydown",$.__latKey)),$.__latPaint(),$},read(z){return z.__latStage?z.__latStage.value:null},write(z,E){const _=z.__latStage;if(!_)return;const T=E==null?-1:ee(_.stages,E);_.index=T,_.value=T>=0?_.stages[T]:null,_.focus=T>=0?T:0,z.__latPaint()},state(z,E){const _=z.__latStage;_&&(_.disabled=E.disabled===!0,_.readOnly=E.readOnly===!0,_.readOnly?z.setAttribute("aria-readonly","true"):z.removeAttribute("aria-readonly"),_.disabled?z.setAttribute("aria-disabled","true"):z.removeAttribute("aria-disabled"),z.__latPaint())}})}),ge("packages/modules/form/controls/chips.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v="M3 8.5l3 3 7-7";function ee(E,_){const T=_&&_.defaultView,k=T&&T.Event,f=k?new k("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};E.dispatchEvent(f)}function s(E){if(typeof E=="string")return{value:E,label:E,icon:null,disabled:!1};if(E!==null&&typeof E=="object"){const _=E.value===void 0?String(E.label):E.value;return{value:_,label:E.label==null?String(_):String(E.label),icon:typeof E.icon=="string"&&E.icon!==""?E.icon:null,disabled:E.disabled===!0}}return{value:E,label:String(E),icon:null,disabled:!1}}function z(E,_,T){const k=E.createElementNS("http://www.w3.org/2000/svg","svg");k.setAttribute("viewBox","0 0 16 16"),k.setAttribute("focusable","false"),k.setAttribute("aria-hidden","true");const f=E.createElementNS("http://www.w3.org/2000/svg","path");return f.setAttribute("d",_),T?f.setAttribute("fill","currentColor"):(f.setAttribute("fill","none"),f.setAttribute("stroke","currentColor"),f.setAttribute("stroke-width","2"),f.setAttribute("stroke-linecap","round"),f.setAttribute("stroke-linejoin","round")),k.appendChild(f),k}P("chips",{kind:"field",build(E,_){const T=_.doc,k=E.props||{},f=(Array.isArray(E.options)?E.options:[]).map(s),p=k.multiple===!0,l=k.allowEmpty===!0,j=k.wrap!==!1,$=E.max!=null&&Number.isFinite(Number(E.max))?Number(E.max):null,t=T.createElement("div");t.className=`lat-form__chips${j?"":" lat-form__chips--scroll"}`,t.setAttribute("role",p?"group":"radiogroup"),t.setAttribute("aria-label",E.label!=null?String(E.label):_.t("form.chips"));const u=[],m=new Set,N={options:f,multiple:p,allowEmpty:l,wrap:j,max:$,selected:m,disabled:!1,readOnly:!1,t:_.t};t.__latChips=N;for(let g=0;g<f.length;g++){const r=f[g],x=T.createElement("button");if(x.type="button",x.className="lat-form__chip",x.setAttribute("data-index",String(g)),x.disabled=r.disabled,p||x.setAttribute("role","radio"),r.icon){const o=z(T,r.icon,!0);o.setAttribute("class","lat-form__chip-icon"),x.appendChild(o)}const i=T.createElement("span");if(i.className="lat-form__chip-label",i.textContent=r.label,x.appendChild(i),p){const o=z(T,v,!1);o.setAttribute("class","lat-form__chip-check"),x.appendChild(o)}t.appendChild(x),u.push(x)}N.buttons=u,t.__latPaint=()=>{for(let g=0;g<u.length;g++){const r=f[g],x=m.has(r.value),i=u[g];i.disabled=r.disabled||N.disabled,p?(i.setAttribute("aria-pressed",x?"true":"false"),i.tabIndex=N.disabled?-1:0):(i.setAttribute("aria-checked",x?"true":"false"),i.tabIndex=N.disabled?-1:x?0:-1)}},t.__latValue=()=>{if(p)return f.filter(g=>m.has(g.value)).map(g=>g.value);for(const g of f)if(m.has(g.value))return g.value;return null},t.__latToggle=g=>{const r=f[g];if(!(!r||r.disabled||N.disabled||N.readOnly)){if(p)if(m.has(r.value))m.delete(r.value);else{if($!=null&&m.size>=$)return;m.add(r.value)}else if(m.has(r.value))if(N.allowEmpty)m.clear();else return;else m.clear(),m.add(r.value);t.__latPaint(),ee(t,_.doc)}},t.addEventListener("click",g=>{const r=g.target&&g.target.closest?g.target.closest(".lat-form__chip"):null;!r||!t.contains(r)||t.__latToggle(Number(r.getAttribute("data-index")))}),t.__latKey=g=>{if(N.multiple||N.disabled||N.readOnly||!u.length)return;let r=-1;for(let e=0;e<u.length;e++)if(m.has(f[e].value)){r=e;break}let x=r;if(g.key==="ArrowRight"||g.key==="ArrowDown")x=r+1;else if(g.key==="ArrowLeft"||g.key==="ArrowUp")x=r-1;else if(g.key==="Home")x=0;else if(g.key==="End")x=f.length-1;else return;g.preventDefault();const i=g.key==="ArrowLeft"||g.key==="ArrowUp"?-1:1;let o=x;for(;o>=0&&o<f.length&&f[o].disabled;)o+=i;o<0||o>=f.length||(m.clear(),m.add(f[o].value),t.__latPaint(),u[o].focus(),ee(t,_.doc))},t.addEventListener("keydown",t.__latKey);const L=E.value;if(p){const g=Array.isArray(L)?L:[];for(const r of g)f.some(x=>x.value===r)&&m.add(r)}else if(L!=null&&f.some(g=>g.value===L))m.add(L);else if(!l){const g=f.find(r=>!r.disabled)||f[0];g&&m.add(g.value)}return t.__latPaint(),t},read(E){return E.__latChips?E.__latValue():null},write(E,_){const T=E.__latChips;if(T){if(T.selected.clear(),T.multiple){const k=Array.isArray(_)?_:[];for(const f of k)T.options.some(p=>p.value===f)&&T.selected.add(f)}else if(_!=null&&T.options.some(k=>k.value===_))T.selected.add(_);else if(!T.allowEmpty){const k=T.options.find(f=>!f.disabled)||T.options[0];k&&T.selected.add(k.value)}E.__latPaint()}},validate(E,_,T){const k=E.__latChips;if(!k||!k.multiple)return null;const f=Array.isArray(T)?T.length:0,p=_.min!=null&&Number.isFinite(Number(_.min))?Number(_.min):null,l=_.max!=null&&Number.isFinite(Number(_.max))?Number(_.max):null;return p!=null&&f<p?{code:"min",message:k.t("form.chips.min",{min:String(p)})}:l!=null&&f>l?{code:"max",message:k.t("form.chips.max",{max:String(l)})}:null},state(E,_){const T=E.__latChips;T&&(T.disabled=_.disabled===!0,T.readOnly=_.readOnly===!0,T.readOnly?E.setAttribute("aria-readonly","true"):E.removeAttribute("aria-readonly"),T.disabled?E.setAttribute("aria-disabled","true"):E.removeAttribute("aria-disabled"),E.__latPaint())}})}),ge("packages/modules/form/controls/otp.js",function(R,Y){"use strict";const P=Y("packages/modules/form/controls/registry.js").registerControl,v=6;function ee(l){const j=Math.floor(Number(l));return Number.isFinite(j)&&j>=1?j:v}function s(l){return l==="alphanumeric"?"alphanumeric":"numeric"}function z(l,j){return j==="numeric"?/^[0-9]$/.test(l):/^[A-Za-z0-9]$/.test(l)}function E(l,j){for(let $=l.length-1;$>=0;$-=1)if(z(l[$],j))return l[$];return""}function _(l,j,$){return(l==null?"":String(l)).replace(/[\s-]/g,"").split("").filter(u=>z(u,j)).slice(0,$)}function T(l,j,$){const t=j&&j.defaultView,u=t&&t.Event,m=u?new u($,{bubbles:!0}):{type:$,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};l.dispatchEvent(m)}function k(l,j){const $=_(j,l.mode,l.length);for(let t=0;t<l.length;t+=1)l.boxes[t].value=$[t]||""}function f(l){l.complete=l.boxes.every(j=>j.value!=="")}function p(l){return l.boxes.map(j=>j.value).join("")}P("otp",{kind:"field",domEvents:["complete"],build(l,j){const $=j.doc,t=l.props||{},u=ee(t.length),m=s(l.mode!=null?l.mode:t.mode),N=t.mask===!0,L=$.createElement("div");L.className="lat-form__otp",L.setAttribute("role","group"),L.setAttribute("aria-label",l.label!=null&&l.label!==""?String(l.label):j.t("form.otp.label"));const g=[],r={length:u,mode:m,mask:N,boxes:g,complete:!1,disabled:!1,readOnly:!1};L.__latOtp=r;for(let i=0;i<u;i+=1){const o=$.createElement("input");o.type="text",o.className=`lat-form__otp-input${N?" lat-form__otp-input--masked":""}`,o.setAttribute("inputmode",m==="numeric"?"numeric":"text"),o.setAttribute("pattern",m==="numeric"?"[0-9]":"[A-Za-z0-9]"),o.setAttribute("maxlength","1"),o.setAttribute("aria-label",j.t("form.otp.digit",{n:i+1,total:u})),o.autocomplete=i===0?"one-time-code":"off",g.push(o),L.appendChild(o)}const x=()=>{if(L.__latPublishing)return;L.__latPublishing=!0;try{T(L,$,"input"),T(L,$,"change")}finally{L.__latPublishing=!1}const i=g.every(o=>o.value!=="");i&&!r.complete?(r.complete=!0,T(L,$,"complete")):!i&&r.complete&&(r.complete=!1)};return L.addEventListener("input",i=>{if(L.__latPublishing)return;i.stopImmediatePropagation();const o=i.target;if(!g.includes(o))return;o.value=E(o.value,m);const e=g.indexOf(o);o.value!==""&&e<u-1&&g[e+1].focus(),x()}),L.addEventListener("change",i=>{L.__latPublishing||i.stopImmediatePropagation()}),L.addEventListener("keydown",i=>{if(r.disabled||r.readOnly)return;const o=i.target;if(!g.includes(o))return;const e=g.indexOf(o);i.key==="Backspace"?(i.preventDefault(),o.value!==""?o.value="":e>0&&(g[e-1].value="",g[e-1].focus()),x()):i.key==="ArrowLeft"&&e>0?(i.preventDefault(),g[e-1].focus()):i.key==="ArrowRight"&&e<u-1?(i.preventDefault(),g[e+1].focus()):i.key.length===1&&!z(i.key,m)&&!i.ctrlKey&&!i.metaKey&&!i.altKey&&i.preventDefault()}),L.addEventListener("paste",i=>{if(r.disabled||r.readOnly)return;i.preventDefault();const o=i.clipboardData&&typeof i.clipboardData.getData=="function"?i.clipboardData.getData("text"):"";k(r,o),(g.find(y=>y.value==="")||g[u-1]).focus(),x()}),L.focus=()=>{const i=g.find(o=>!o.disabled&&!o.readOnly&&o.value==="")||g[0];i&&i.focus()},L.blur=()=>{for(const i of g)i.blur()},k(r,l.value),f(r),L},read(l){return l.__latOtp?p(l.__latOtp):""},write(l,j){l.__latOtp&&(k(l.__latOtp,j),f(l.__latOtp))},state(l,j){const $=l.__latOtp;if($){$.disabled=j.disabled===!0,$.readOnly=j.readOnly===!0;for(const t of $.boxes)t.disabled=$.disabled,t.readOnly=$.readOnly;$.disabled?l.setAttribute("aria-disabled","true"):l.removeAttribute("aria-disabled"),$.readOnly?l.setAttribute("aria-readonly","true"):l.removeAttribute("aria-readonly")}}})}),ge("packages/modules/form/controls/index.js",function(R,Y){"use strict";const n=Y("packages/modules/form/controls/input.js"),P=Y("packages/modules/form/controls/number.js"),v=Y("packages/modules/form/controls/textarea.js"),ee=Y("packages/modules/form/controls/checkbox.js"),s=Y("packages/modules/form/controls/button.js"),z=Y("packages/modules/form/controls/buttons.js"),E=Y("packages/modules/form/controls/text.js"),_=Y("packages/modules/form/controls/combo.js"),T=Y("packages/modules/form/controls/select.js"),k=Y("packages/modules/form/controls/radiogroup.js"),f=Y("packages/modules/form/controls/checkboxgroup.js"),p=Y("packages/modules/form/controls/toggle.js"),l=Y("packages/modules/form/controls/datepicker.js"),j=Y("packages/modules/form/controls/file.js"),$=Y("packages/modules/form/controls/richtext.js"),t=Y("packages/modules/form/controls/rating.js"),u=Y("packages/modules/form/controls/stage.js"),m=Y("packages/modules/form/controls/chips.js"),N=Y("packages/modules/form/controls/otp.js")}),ge("packages/modules/form/create.js",function(R,Y){"use strict";Object.defineProperty(R,"createForm",{enumerable:!0,get:function(){return te}}),Object.defineProperty(R,"default",{enumerable:!0,get:function(){return I}});const n=Y("packages/modules/form/styles.js"),P=n.NS,v=n.injectStyles,ee=Y("packages/modules/form/model.js"),s=ee.resolveConfig,z=ee.DENSITIES,E=ee.cssSize,_=Y("packages/modules/form/view.js"),T=_.markValidation,k=_.mount,f=_.runValidation,p=_.validateItem,l=_.wizardBack,j=_.wizardGoTo,$=_.wizardNext,t=Y("packages/modules/form/emitter.js"),u=t.Emitter,m=t.FORM_EVENTS,L=Y("packages/modules/form/messages.js").createTranslator,g=Y("packages/modules/form/bind.js"),r=g.resolveBind,x=g.applyBinding,o=Y("packages/modules/form/rules.js").applyRules,y=Y("packages/modules/form/state.js").syncRecordState,d=Y("packages/modules/form/controls/index.js");function V(W){if(Array.isArray(W))return W.map(V);if(W==null||typeof W!="object"||typeof W.nodeType=="number"||Object.getPrototypeOf(W)!==Object.prototype)return W;const a=W.type==="buttons"&&Array.isArray(W.items),B={};for(const O of Object.keys(W))a&&O==="items"||(B[O]=V(W[O]));return a&&(B.buttons=W.items.map(V)),B}function te(W,a={}){const B=W&&W.ownerDocument||typeof globalThis<"u"&&globalThis.document||null,O=r(a);let D=a;if(O){if(D={...a},D.density===void 0){const w=O.density();w!=null&&(D.density=w)}if(!(Array.isArray(D.rows)&&D.rows.length||Array.isArray(D.cols)&&D.cols.length)){const w=O.items();w.length&&(D.rows=[{items:w}])}}const re=s(V(D)),H={el:W||null,doc:B,model:re,config:re,items:new Map,order:[],emitter:new u,t:L(re.messages).t,uidSeq:0,disposers:[],dirty:new Set,conflicts:new Set,baseline:{},bound:null},ce=b=>(b.facade||(b.facade={el:b.el,item:b.item,name:b.item.name,getValue(){return b.value},setValue(w){return b.def.write(b.control,w),b.value=b.def.read(b.control),b.item.value=b.value,o(H),b.facade},show(){return b.hidden=!1,b.el.hidden=!1,b.facade},hide(){return b.hidden=!0,b.el.hidden=!0,b.facade},isVisible(){return!(b.hidden||b.ruleHidden)},disable(){return b.item.disabled=!0,y(b),b.facade},enable(){return b.item.disabled=!1,y(b),b.facade},focus(){return typeof b.def.focus=="function"?b.def.focus(b.control):typeof b.control.focus=="function"&&b.control.focus(),b.facade},blur(){return typeof b.def.blur=="function"?b.def.blur(b.control):typeof b.control.blur=="function"&&b.control.blur(),b.facade},validate(){return p(H,b)},setLoading(w){return typeof b.def.setLoading=="function"&&b.def.setLoading(b.control,w===!0),b.facade}}),b.facade);W&&B&&v(B);const le=W&&typeof W.style.cssText=="string"?W.style.cssText:"",ne=new Set(["field","toggle","display"]),G={el:W||null,config:re,getItem(b){const w=H.items.get(String(b));return w?ce(w):void 0},getValue(){const b={};for(const w of H.order)w.item.name!=null&&ne.has(w.def.kind)&&(b[w.item.name]=w.value);return b},setValue(b){if(b==null||typeof b!="object")return G;for(const w of Object.keys(b)){const M=H.items.get(w);M&&ce(M).setValue(b[w])}return G},clear(){for(const b of H.order)if(b.item.name!=null)if(b.def.kind==="field"){const w=b.item.props&&b.item.props.multiple===!0,M=b.item.type==="chips"?w?[]:null:b.item.type==="number"||b.item.type==="radiogroup"||b.item.type==="datepicker"||b.item.type==="stage"||b.item.type==="combo"&&!w?null:b.item.type==="rating"?0:b.item.type==="file"||b.item.type==="checkboxgroup"||(b.item.type==="select"||b.item.type==="combo")&&w?[]:"";b.value=M,b.item.value=M,b.def.write(b.control,M)}else b.def.kind==="toggle"&&(b.value=!1,b.item.value=!1,b.def.write(b.control,!1));return o(H),G},validate(){const b=[];let w=!0;for(const M of H.order){if(M.item.name==null||M.def.kind!=="field"&&M.def.kind!=="toggle"||M.item.disabled===!0||M.ruleHidden===!0||M.hidden===!0||(typeof M.def.reset=="function"&&M.def.reset(M.control,M.item),M.item.required!==!0&&M.item.validation==null&&typeof M.def.validate!="function"&&M.ruleRequired!==!0))continue;const U=f(H,M);T(H,M,U),U&&(w=!1,b.push({name:M.item.name,rule:U.code,message:U.message}))}return H.emitter.emit("validated",{name:null,item:null,value:void 0,valid:w,failures:b}),w},forEach(b){for(const w of H.order)b(ce(w))},on(b,w){return b!=="*"&&!m.includes(b)?(console.warn(`lattice-form: "${b}" is not a form event and will never fire.`),()=>{}):H.emitter.on(b,w)},off(b,w){H.emitter.off(b,w)},setDensity(b){return z.includes(b)&&(re.density=b,W&&W.setAttribute("data-density",b)),G},setReadOnly(b){for(const w of H.order)w.item.readOnly=b===!0,y(w);return G},setDisabled(b){for(const w of H.order)w.item.disabled=b===!0,y(w);return G},setSpacing(b){const w=b==null?null:E(b);return re.spacing=w,W&&(w==null?W.style.removeProperty("--lattice-form-item-gap"):W.style.setProperty("--lattice-form-item-gap",w)),G},isDirty(b){return b==null?H.dirty.size>0:H.dirty.has(String(b))},isConflicted(b){return b==null?H.conflicts.size>0:H.conflicts.has(String(b))},save(){const b=H.bound;if(!b)return!1;if(H.dirty.size===0)return!0;const w={};for(const X of H.dirty){const Z=G.getItem(X);Z&&(w[X]=Z.getValue())}const M=b.save(w),U=X=>{if(!X)return!1;for(const Z of Object.keys(w))H.baseline[Z]=w[Z],H.dirty.delete(Z),H.conflicts.delete(Z);return!0};return M&&typeof M.then=="function"?M.then(U):U(M)},revert(){for(const b of H.dirty){if(!Object.hasOwn(H.baseline,b))continue;const w=H.items.get(b);w&&ce(w).setValue(H.baseline[b])}return H.dirty.clear(),H.conflicts.clear(),G},_bind(b){return x(H,G,b),G},_commit(b){for(const w of Object.keys(b||{}))H.baseline[w]=b[w],H.dirty.delete(w),H.conflicts.delete(w)},get steps(){return H.model.steps||[]},get activeStep(){return H.wizard?H.wizard.active:0},next(){return $(H)},back(){return l(H)},goToStep(b){return j(H,b)},__reapplyRules(){return o(H),G},destroy(){for(const w of H.disposers.splice(0))w();H.emitter.clear();const b=H.el;if(b){for(;b.firstChild;)b.removeChild(b.firstChild);b.classList.remove(P),b.removeAttribute("data-density"),b.style.cssText=le,b.__latticeForm===G&&(b.__latticeForm=null)}H.items.clear(),H.order.length=0,H.dirty.clear(),H.conflicts.clear(),H.baseline={},H.bound=null}};return W&&(W.__latticeForm=G),H.form=G,W&&B&&k(H),O&&x(H,G,O),G}const I=te}),ge("packages/modules/form/group.js",function(R,Y){"use strict";Object.defineProperty(R,"GROUP_EVENTS",{enumerable:!0,get:function(){return k}}),Object.defineProperty(R,"createFormGroup",{enumerable:!0,get:function(){return t}}),Object.defineProperty(R,"default",{enumerable:!0,get:function(){return u}});const P=Y("packages/modules/form/emitter.js").Emitter,ee=Y("packages/modules/form/bind-router.js").routerBinding,s=Y("packages/modules/form/group-rules.js"),z=s.attachRuleResolver,E=s.detachRuleResolver,_=s.makeRuleResolver,T=s.reapplyMembers,k=Object.freeze(["change","validated"]),f=new Set;function p(m){const N={},L=m.getValue();for(const g of Object.keys(L))m.isDirty(g)===!0&&(N[g]=L[g]);return N}function l(m,N){f.has(m)||(f.add(m),console.warn("[lattice]",N))}const j=new WeakMap;function $(m,N){let L=j.get(m);if(!L){const g=m.destroy;L={original:g,watchers:new Set},j.set(m,L),m.destroy=function(){const x=j.get(m)||L;for(const i of[...x.watchers])i.detach(m);return g.call(m)}}L.watchers.add(N)}function t(m,N={}){const L=[],g=new Map,r=new Map,x=new P,i=N&&typeof N.bind=="object"&&N.bind.router!=null?N.bind:null,o=i?ee(i):null,e=()=>{g.clear(),r.clear();for(const I of L){const W=Object.keys(I.form.getValue());for(const a of W)g.has(a)?l(`form.group.duplicate-field:${a}`,`form group: the field "${a}" is owned by more than one form; the first one added wins.`):g.set(a,I);I.id!=null&&!r.has(I.id)&&r.set(I.id,I)}},y=_({owners:g,byId:r,warnOnce:l}),d=I=>{const W=L.findIndex(O=>O.form===I);if(W===-1)return!1;const[a]=L.splice(W,1);for(const O of a.unsubs)O();e();const B=j.get(I);return B&&(B.watchers.delete(V),B.watchers.size===0&&(j.delete(I),I.destroy=B.original)),E(I),typeof I.__reapplyRules=="function"&&I.__reapplyRules(),T(L),!0},V={detach:d},te={get forms(){return L.map(I=>I.form)},add(I,W){if(!I||typeof I!="object"||typeof I.getValue!="function"||L.some(D=>D.form===I))return te;const a={form:I,id:W&&W.id,unsubs:[],lastFailures:[]};L.push(a),o&&typeof I._bind=="function"&&I._bind(o);const B=D=>{x.emit("change",{form:I,name:D.name,value:D.value}),T(L)},O=D=>{a.lastFailures=D.failures||[],x.emit("validated",{form:I,valid:D.valid})};return a.unsubs.push(I.on("change",B)),a.unsubs.push(I.on("validated",O)),$(I,V),e(),z(I,y),T(L),te},remove(I){return d(I),te},getValue(){const I={};for(const W of L)Object.assign(I,W.form.getValue());return N.transform&&typeof N.transform.get=="function"?N.transform.get(I):I},setValue(I){if(N.transform&&typeof N.transform.set=="function")N.transform.set(I);else if(I!=null&&typeof I=="object")for(const W of Object.keys(I)){const a=g.get(W);a&&a.form.setValue({[W]:I[W]})}return T(L),te},getItem(I){const W=g.get(String(I));return W?W.form.getItem(I):void 0},validate(){let I=!0;const W=[];for(const a of L){a.form.validate()===!1&&(I=!1);for(const O of a.lastFailures||[])W.push({form:a.form,name:O.name})}if(!I){const a=W.find(B=>B.name!=null);if(a){const B=a.form.getItem(a.name);B&&(B.focus(),B.el&&typeof B.el.scrollIntoView=="function"&&B.el.scrollIntoView({block:"nearest"}))}}return I},setReadOnly(I){for(const W of L)W.form.setReadOnly(I===!0);return te},setDisabled(I){for(const W of L)W.form.setDisabled(I===!0);return te},clear(){for(const I of L)I.form.clear();return te},reset(){for(const I of L)typeof I.form.revert=="function"&&I.form.revert();return te},save(){if(!o)return!1;const I=L.map(O=>({member:O,changes:p(O.form)})),W={};for(const O of I)Object.assign(W,O.changes);if(!Object.keys(W).length)return!0;const a=o.save(W),B=O=>{if(!O)return!1;for(const D of I)D.member.form&&typeof D.member.form._commit=="function"&&D.member.form._commit(D.changes);return!0};return a&&typeof a.then=="function"?a.then(B):B(a)},isDirty(){return L.some(I=>I.form.isDirty()===!0)},on(I,W){return I!=="*"&&!k.includes(I)?(console.warn(`lattice-form: "${I}" is not a form group event and will never fire.`),()=>{}):x.on(I,W)},off(I,W){x.off(I,W)},destroy(){for(;L.length;){const I=L[L.length-1].form;d(I)}x.clear()}};if(Array.isArray(m))for(const I of m)te.add(I);else m&&typeof m=="object"&&typeof m.getValue=="function"&&te.add(m);return te}const u=t}),ge("packages/modules/form/enhance.js",function(R,Y){"use strict";Object.defineProperty(R,"itemForField",{enumerable:!0,get:function(){return _}}),Object.defineProperty(R,"configForForm",{enumerable:!0,get:function(){return T}}),Object.defineProperty(R,"enhanceForm",{enumerable:!0,get:function(){return k}}),Object.defineProperty(R,"default",{enumerable:!0,get:function(){return f}});const P=Y("packages/modules/form/create.js").createForm,v=Object.freeze(["text","email","password","url"]);function ee(p){const l=p&&p.type?String(p.type).toLowerCase():"";return l==="submit"||l==="image"||p&&p.tagName==="BUTTON"&&l!=="button"}function s(p){if(!p||!p.name)return!1;const l=p&&p.type?String(p.type).toLowerCase():"";return!(l==="submit"||l==="button"||l==="reset"||l==="image"||l==="hidden"||l==="file"||p.tagName==="BUTTON")}function z(p,l){if(typeof p.getAttribute=="function"){const j=p.getAttribute("data-label");if(j!=null&&j!=="")return j;const $=p.getAttribute("aria-label");if($!=null&&$!=="")return $}if(p.id&&typeof l.querySelector=="function"){const j=l.querySelector(`label[for="${p.id}"]`);if(j&&j.textContent!=null){const $=String(j.textContent).trim();if($)return $}}return String(p.name||"")}function E(p){return p.type==="checkbox"?p.checked===!0:p.value==null?"":p.value}function _(p,l){if(ee(p)||!s(p))return null;const j=p.type?String(p.type).toLowerCase():"text",$={type:"input",name:p.name,label:z(p,l),value:E(p)};if(j==="number")$.type="number",p.min!=null&&p.min!==""&&($.min=Number(p.min)),p.max!=null&&p.max!==""&&($.max=Number(p.max)),p.step!=null&&p.step!==""&&($.step=Number(p.step));else if(j==="checkbox")$.type="checkbox";else if(p.tagName==="TEXTAREA")$.type="textarea";else if(v.includes(j))$.subtype=j,(j==="email"||j==="url")&&($.validation=j);else return null;if(p.placeholder!=null&&p.placeholder!==""&&($.placeholder=p.placeholder),p.required===!0&&($.required=!0),p.disabled===!0&&($.disabled=!0),p.readOnly===!0&&($.readOnly=!0),typeof p.getAttribute=="function"){const t=p.getAttribute("data-validation")||p.getAttribute("data-rule");t&&($.validation=t);const u=p.getAttribute("data-error-message");u&&($.errorMessage=u);const m=p.getAttribute("data-help");m&&($.helpMessage=m)}return $}function T(p,l){const j=p&&p.ownerDocument||(typeof document<"u"?document:null),$=[],t=p&&p.elements?p.elements:[];for(const u of t){const m=_(u,j);m&&$.push(m)}return{...l||{},rows:$}}function k(p,l){if(!p)return null;if(p.__latticeForm)return p.__latticeForm;const j=p.ownerDocument||(typeof document<"u"?document:null),$=[],t=p.elements?p.elements:[];for(const m of t)ee(m)&&$.push(m);const u=P(p,T(p,l));p.__latticeForm=u;for(const m of $)m.parentNode!==p&&p.appendChild(m);return typeof p.addEventListener=="function"&&j&&p.addEventListener("submit",m=>{u.validate()||(m.preventDefault(),m.stopImmediatePropagation())},!0),u}const f=k}),ge("packages/modules/form/index.js",function(R,Y){"use strict";Object.defineProperty(R,"registerControl",{enumerable:!0,get:function(){return k}}),Object.defineProperty(R,"createForm",{enumerable:!0,get:function(){return z}}),Object.defineProperty(R,"default",{enumerable:!0,get:function(){return f}});const P=Y("packages/modules/form/styles.js").NS,ee=Y("packages/modules/form/controls/registry.js").registerControl,z=Y("packages/modules/form/create.js").createForm,E=Y("packages/modules/form/controls/combo.js");Object.defineProperty(R,"createCombo",{enumerable:!0,get:function(){return E.createCombo}});const _=Y("packages/modules/form/group.js");Object.defineProperty(R,"createFormGroup",{enumerable:!0,get:function(){return _.createFormGroup}});const T=Y("packages/modules/form/enhance.js");Object.defineProperty(R,"enhanceForm",{enumerable:!0,get:function(){return T.enhanceForm}});function k(p,l){if(l===null||typeof l!="object"||typeof l.create!="function"){console.warn("lattice-form: registerControl needs a definition with a create(el, item, api) function.");return}const j=typeof l.getValue=="function"?l.getValue:()=>null,$=typeof l.setValue=="function"?l.setValue:()=>{};ee(String(p),{kind:"field",custom:!0,validate:typeof l.validate=="function"?(t,u,m)=>l.validate(m,u,t):void 0,destroy:typeof l.destroy=="function"?t=>l.destroy(t):void 0,build(t,u){const m=u.doc.createElement("div");m.className=`${P}__custom`;const N={name:t.name,item:t,getValue(){return N._read?N._read():void 0},setValue(L){N._write&&N._write(L)},onChange(L){N._commit&&N._commit(L===void 0?j():L)},onInput(L){N._input&&N._input(L===void 0?j():L)}};return m.__latticeFormApi=N,l.create(m,t,N),$(m,t.value),m},read(t){return j(t)},write(t,u){$(t,u)},state(t,u){t.setAttribute("data-disabled",u.disabled===!0?"true":"false"),t.setAttribute("data-readonly",u.readOnly===!0?"true":"false")}})}const f=z});var ht=St("packages/modules/form/index.js");typeof module=="object"&&module.exports?module.exports=ht:typeof define=="function"&&define.amd?define(function(){return ht}):Tt.LatticeGridForm=ht})(typeof globalThis<"u"?globalThis:this);
1394
+ `.trim()}function O(t){const i=t&&t.documentElement;if(!i||i.getAttribute(u))return;i.setAttribute(u,"1");const r=t.createElement("style");r.textContent=L(),(t.head||t.body||i).appendChild(r)}function k(t,i){const r=i&&i.defaultView,C=r&&r.Event,b=C?new C("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};t.dispatchEvent(b)}function I(){return`f${Date.now().toString(36)}${Math.random().toString(36).slice(2,7)}`}function N(t){const i=Number(t)||0;return i<1024?`${i} B`:i<1048576?`${(i/1024).toFixed(i<10240?1:0)} KB`:i<1073741824?`${(i/1048576).toFixed(1)} MB`:`${(i/1073741824).toFixed(2)} GB`}function g(t,i){if(!i||!i.length)return!0;const r=(t.name||"").toLowerCase(),C=(t.type||"").toLowerCase();return i.some(b=>{const G=String(b).trim().toLowerCase();return G.startsWith(".")?r.endsWith(G):G.endsWith("/*")?C.startsWith(G.slice(0,-1)):C===G})}function p(t){return t.length?t.length===1?t[0]:t.length===2?`${t[0]} or ${t[1]}`:`${t.slice(0,-1).join(", ")} or ${t[t.length-1]}`:""}function a(t){const i={".pdf":"PDF",".doc":"DOC",".docx":"DOCX",".xls":"XLS",".xlsx":"XLSX",".csv":"CSV",".txt":"TXT",".png":"PNG",".jpg":"JPG",".jpeg":"JPEG",".gif":"GIF",".svg":"SVG",".webp":"WEBP",".zip":"ZIP","image/*":"images","video/*":"videos","audio/*":"audio","text/*":"text","application/pdf":"PDF"},r=String(t).trim(),C=i[r.toLowerCase()];if(C)return C;if(r.startsWith("."))return r.slice(1).toUpperCase();if(r.endsWith("/*"))return`${r.slice(0,-2)}s`;const b=r.split("/")[1];return b?b.toUpperCase():r}function $(t,i,r,C){const b=[];return i&&i.length&&b.push(p(i.map(a))),r&&b.push(t("form.file.hint.size",{size:N(r)})),C&&b.push(t(C===1?"form.file.hint.file":"form.file.hint.files",{max:String(C)})),b.join(" · ")}function y(t){return{id:t.id,name:t.name,size:t.size,type:t.type,status:t.status,progress:t.progress,message:t.message||""}}function n(t,i){const r=t.createElementNS(te,"svg");r.setAttribute("viewBox","0 0 16 16"),r.setAttribute("focusable","false"),r.setAttribute("aria-hidden","true"),r.setAttribute("fill","none"),r.setAttribute("stroke","currentColor"),r.setAttribute("stroke-width","1.5"),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round");const C=t.createElementNS("http://www.w3.org/2000/svg","path");return C.setAttribute("d",i),r.appendChild(C),r}const d=Object.freeze({upload:"M8 11V3m0 0L4.5 6.5M8 3l3.5 3.5M3 13h10",file:"M4 2h5l3 3v9H4zM9 2v3h3",image:"M2 3h12v10H2zM5 11l3-3 2 2 1.5-1.5L14 11M5.5 6a.8.8 0 1 0 0 1.6.8.8 0 0 0 0-1.6z",document:"M4 2h5l3 3v9H4zM9 2v3h3M6 9h4M6 12h4",check:"M3 8.5l3 3 7-7",xmark:"M4 4l8 8M12 4l-8 8",warn:"M8 3l6 11H2zM8 7v3M8 12.2v.1",retry:"M13.5 8A5.5 5.5 0 1 1 8 2.5M8 2.5V5m0-2.5L5.5 2.5"});function h(t,i){const r=/([:\w-]+)\s*=\s*("([^"]*)"|'([^']*)')/g;let C;for(;C=r.exec(i);)t.setAttribute(C[1],C[3]===void 0?C[4]:C[3])}function z(t,i){const r=/<svg\b([^>]*)>/i.exec(i);if(!r)return null;const C=t.createElementNS(te,"svg");h(C,r[1]);const b=i.lastIndexOf("</svg"),G=b===-1?"":i.slice(r.index+r[0].length,b),oe=/<(\w+)\b([^>]*?)(\/?)>/g;let U;for(;U=oe.exec(G);){const K=t.createElementNS(te,U[1]);h(K,U[2]),C.appendChild(K)}return C.setAttribute("aria-hidden","true"),C.setAttribute("focusable","false"),C}function W(t,i){if(t===!1)return null;if(t!=null&&typeof t=="object"&&t.nodeType){const C=t;return C.classList.add(`${v}__icon`),C.setAttribute("aria-hidden","true"),C}if(typeof t!="string"||t==="")return null;const r=d[t]?n(i,d[t]):z(i,t);return r?(r.setAttribute("class",`${v}__icon`),r):null}function S(t){const i=t.type||"";return i.startsWith("image/")?"image":i==="application/pdf"||/\.pdf$/i.test(t.name)?"document":"file"}function c(t){if(t.thumb)return t.thumb;if(!t.file||!/^image\//.test(t.type||"")||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{t.thumb=URL.createObjectURL(t.file)}catch{t.thumb=null}return t.thumb}function x(t){if(t.thumb&&typeof URL<"u"&&typeof URL.revokeObjectURL=="function")try{URL.revokeObjectURL(t.thumb)}catch{}t.thumb=null}T("file",{kind:"field",build(t,i){const r=i.doc,C=i.t,b=t.props||{},G=Array.isArray(b.accept)?b.accept.map(m=>String(m)):[],oe=Number(b.maxSize)||0,U=Number(b.maxFiles)||0,K=b.multiple!==!1,l=typeof b.upload=="function"?b.upload:null,H=b.dropzone!==!1,J=b.dropText!=null?String(b.dropText):C("form.file.dropText"),Y=b.browseText!=null?String(b.browseText):C("form.file.browse"),B=C("form.file.dropToUpload"),V=C("form.file.addMore"),ce=C("form.file.typeNotAccepted"),ue=b.hint!=null&&b.hint!==""?String(b.hint):$(C,G,oe,U);O(r);const ne=r.createElement("div");ne.className=v;const f={accept:G,maxSize:oe,maxFiles:U,multiple:K,upload:l,dropText:J,browse:Y,dropToUpload:B,addMore:V,typeNotAccepted:ce,entries:[],controllers:new Map,disabled:!1,readOnly:!1,dropzone:H,input:null,zone:null,list:null,live:null,titleRest:null,browseEl:null,compactText:null};ne.__latFile=f;const j=r.createElement("input");j.type="file",j.className=`${v}__input`,j.tabIndex=-1,j.setAttribute("aria-hidden","true"),K&&(j.multiple=!0),G.length&&(j.accept=G.join(",")),ne.appendChild(j),f.input=j;const M=r.createElement("div");M.className=`${v}__zone`,M.setAttribute("role","button"),M.tabIndex=0,M.setAttribute("aria-label",`${J} ${Y}`);const o=b.icon==null?n(r,d.upload):W(b.icon,r);o&&(b.icon==null&&o.setAttribute("class",`${v}__icon`),M.appendChild(o));const E=r.createElement("span");E.className=`${v}__title`;const D=r.createElement("span");D.className=`${v}__title-rest`,D.textContent=J,E.appendChild(D);const P=r.createElement("button");P.type="button",P.className=`${v}__browse`,P.tabIndex=-1,P.textContent=Y,E.appendChild(P),M.appendChild(E),f.titleRest=D,f.browseEl=P;const Z=r.createElement("span");if(Z.className=`${v}__drop`,Z.textContent=B,M.appendChild(Z),ue){const m=r.createElement("span");m.className=`${v}__hint`,m.textContent=ue,M.appendChild(m)}const A=r.createElement("span");A.className=`${v}__compact`,A.appendChild(n(r,d.upload));const _=r.createElement("span");_.className=`${v}__compact-text`,_.textContent=V,A.appendChild(_),M.appendChild(A),f.compactText=_,ne.appendChild(M),f.zone=M;const s=r.createElement("ul");s.className=`${v}__list`,s.setAttribute("role","list"),s.hidden=!0,ne.appendChild(s),f.list=s;const w=r.createElement("div");return w.className=`${v}__live`,w.setAttribute("role","status"),w.setAttribute("aria-live","polite"),ne.appendChild(w),f.live=w,ne.__latAnnounce=m=>{f.live&&(f.live.textContent="",f.live.textContent=m)},ne.__latDragState=m=>{f.zone.classList.toggle("is-dragover",m==="over"),f.zone.classList.toggle("is-invalid",m==="invalid"),m==="none"?(f.titleRest.textContent=f.dropText,f.browseEl.hidden=!1,f.compactText.textContent=f.addMore):m==="over"?(f.titleRest.textContent=f.dropToUpload,f.browseEl.hidden=!0,f.compactText.textContent=f.dropToUpload):(f.titleRest.textContent=f.typeNotAccepted,f.browseEl.hidden=!0,f.compactText.textContent=f.typeNotAccepted)},ne.__latPaint=()=>{const m=f.disabled||f.readOnly||!f.dropzone;f.zone.hidden=m,f.zone.tabIndex=m?-1:0,m?f.zone.setAttribute("aria-disabled","true"):f.zone.removeAttribute("aria-disabled"),f.input.disabled=m;const R=f.entries.length>0;f.zone.classList.toggle("is-compact",R),f.zone.setAttribute("aria-label",R?f.addMore:`${f.dropText} ${f.browse}`),s.hidden=!f.entries.length,s.tabIndex=f.readOnly&&!f.disabled?0:-1,f.entries.some(re=>re.status==="rejected")?ne.setAttribute("aria-invalid","true"):ne.removeAttribute("aria-invalid"),s.textContent="";for(const re of f.entries){const ie=r.createElement("li");ie.className=`${v}__item is-${re.status}`,ie.setAttribute("data-id",re.id),ie.setAttribute("role","listitem");const ge=c(re);if(ge){const de=r.createElement("img");de.className=`${v}__item-thumb`,de.src=ge,de.alt="",ie.appendChild(de)}else{const de=n(r,d[S(re)]);de.setAttribute("class",`${v}__item-icon`),ie.appendChild(de)}const pe=r.createElement("div");pe.className=`${v}__item-main`,ie.appendChild(pe);const Se=r.createElement("div");Se.className=`${v}__item-row`,pe.appendChild(Se);const xe=r.createElement("span");xe.className=`${v}__item-name`,xe.textContent=re.name,xe.title=re.name,Se.appendChild(xe);const Ee=r.createElement("span");Ee.className=`${v}__item-size`,Ee.textContent=N(re.size),Se.appendChild(Ee);const je=r.createElement("span");if(je.className=`${v}__item-state`,re.status==="uploading"){const de=r.createElement("span");de.className=`${v}__item-pct`,de.textContent=`${re.progress}%`,je.appendChild(de)}else re.status==="done"?je.appendChild(n(r,d.check)):(re.status==="error"||re.status==="rejected")&&je.appendChild(n(r,d.warn));Se.appendChild(je);const Ne=r.createElement("button");if(Ne.type="button",Ne.className=`${v}__remove`,Ne.setAttribute("aria-label",`${C("form.file.remove")} ${re.name}`),Ne.title=C("form.file.remove"),Ne.appendChild(n(r,d.xmark)),Ne.setAttribute("data-remove",re.id),Ne.disabled=f.disabled||f.readOnly,Se.appendChild(Ne),re.status==="uploading"){const de=r.createElement("span");de.className=`${v}__item-bar`,de.setAttribute("role","progressbar"),de.setAttribute("aria-valuemin","0"),de.setAttribute("aria-valuemax","100"),de.setAttribute("aria-valuenow",String(re.progress));const $e=r.createElement("span");$e.className=`${v}__item-fill`,$e.style.width=`${re.progress}%`,de.appendChild($e),pe.appendChild(de)}if(re.message){const de=r.createElement("span");if(de.className=`${v}__item-message`,de.appendChild(r.createTextNode(re.message)),re.status==="error"){de.appendChild(r.createTextNode(" "));const $e=r.createElement("button");$e.type="button",$e.className=`${v}__retry`,$e.textContent=C("form.file.retry"),$e.setAttribute("data-retry",re.id),$e.disabled=f.disabled||f.readOnly,de.appendChild($e)}pe.appendChild(de)}s.appendChild(ie)}},ne.__latUpload=m=>{if(!f.upload){m.status="done",m.progress=100,ne.__latPaint();return}m.status="uploading",m.progress=0,m.message="";let R=null;typeof AbortController<"u"&&(R=new AbortController,f.controllers.set(m.id,R));const q=R?R.signal:void 0,re=ge=>{m.progress=Math.max(0,Math.min(100,Number(ge)||0)),m.status="uploading",ne.__latPaint()};let ie;try{ie=f.upload(m.file,{onProgress:re,signal:q})}catch(ge){ie=Promise.reject(ge)}ie&&typeof ie.then=="function"&&ie.then(()=>{f.controllers.delete(m.id),m.status="done",m.progress=100,ne.__latPaint(),ne.__latAnnounce(C("form.file.uploaded",{name:m.name})),k(ne,i.doc)},ge=>{f.controllers.delete(m.id),m.status="error",m.message=ge&&ge.message?String(ge.message):C("form.file.uploadFailed"),ne.__latPaint(),ne.__latAnnounce(C("form.file.failed",{name:m.name})),k(ne,i.doc)})},ne.__latTake=m=>{const R=[...m||[]];if(!R.length||f.disabled||f.readOnly)return;const q=f.multiple?R:R.slice(0,1),re=[],ie=[];let ge=f.maxFiles?Math.max(0,f.maxFiles-f.entries.length):1/0;for(const pe of q){if(ge<=0){ie.push({file:pe,reason:"count"});continue}if(f.maxSize&&pe.size>f.maxSize){ie.push({file:pe,reason:"size"});continue}if(!g(pe,f.accept)){ie.push({file:pe,reason:"type"});continue}re.push({id:I(),file:pe,name:pe.name,size:pe.size,type:pe.type,status:"selected",progress:0,message:""}),ge-=1}if(re.length){f.multiple||(f.entries=[]),f.entries.push(...re),ne.__latPaint(),k(ne,i.doc),ne.__latAnnounce(re.length===1?C("form.file.addedOne"):C("form.file.added",{count:String(re.length)}));for(const pe of re)ne.__latUpload(pe)}for(const pe of ie){const Se=pe.reason==="size"?C("form.file.rejected.size",{size:N(f.maxSize)}):pe.reason==="type"?C("form.file.rejected.type"):C("form.file.rejected.count",{max:String(f.maxFiles)});f.entries.push({id:I(),file:pe.file,name:pe.file.name,size:pe.file.size,type:pe.file.type,status:"rejected",progress:0,message:Se}),ne.__latAnnounce(Se)}ne.__latPaint()},ne.__latRemove=m=>{const R=f.controllers.get(m);R&&(R.abort(),f.controllers.delete(m));const q=f.entries.find(re=>re.id===m);q&&x(q),f.entries=f.entries.filter(re=>re.id!==m),ne.__latPaint(),k(ne,i.doc)},ne.__latRetry=m=>{if(f.disabled||f.readOnly)return;const R=f.entries.find(q=>q.id===m);!R||!R.file||R.status==="rejected"||(ne.__latUpload(R),k(ne,i.doc))},ne.__latClick=m=>{if(f.disabled||f.readOnly)return;const R=m.target&&m.target.closest?m.target:null,q=R&&R.closest?R.closest("[data-remove]"):null;if(q&&ne.contains(q)){ne.__latRemove(q.getAttribute("data-remove"));return}const re=R&&R.closest?R.closest("[data-retry]"):null;if(re&&ne.contains(re)){ne.__latRetry(re.getAttribute("data-retry"));return}R&&R.closest&&R.closest(`.${v}__zone`)&&f.input.click()},ne.__latKeydown=m=>{f.disabled||f.readOnly||(m.key==="Enter"||m.key===" "||m.key==="Spacebar")&&m.target===f.zone&&(m.preventDefault(),f.input.click())},ne.__latChange=()=>{ne.__latTake(f.input.files),f.input.value=""},ne.__latDragKind=m=>{if(!f.accept.length)return"over";const R=m.dataTransfer;if(!R||!R.types||!R.types.length)return"over";const q=Array.from(R.types);return q.includes("Files")?"over":q.every(re=>!g({name:"",type:re},f.accept))?"invalid":"over"},ne.__latDrag=m=>{if(!(f.disabled||f.readOnly)){if(m.type==="dragenter"||m.type==="dragover"){m.preventDefault(),ne.__latDragState(ne.__latDragKind(m));return}if(m.type==="dragleave"){if(m.relatedTarget&&f.zone.contains(m.relatedTarget))return;ne.__latDragState("none");return}m.type==="drop"&&(m.preventDefault(),ne.__latDragState("none"),ne.__latTake(m.dataTransfer&&m.dataTransfer.files))}},ne.__latPaste=m=>{if(f.disabled||f.readOnly||!m.clipboardData)return;const R=[...m.clipboardData.files||[]];R.length&&(m.preventDefault(),ne.__latTake(R))},j.addEventListener("change",ne.__latChange),ne.addEventListener("click",ne.__latClick),ne.addEventListener("keydown",ne.__latKeydown),ne.addEventListener("paste",ne.__latPaste),H&&["dragenter","dragover","dragleave","drop"].forEach(m=>ne.addEventListener(m,ne.__latDrag)),ne.__latPaint(),ne},read(t){const i=t.__latFile;return i?i.entries.filter(r=>r.status!=="rejected").map(y):[]},write(t,i){const r=t.__latFile;if(!r)return;const C=Array.isArray(i)?i:[],b=r.entries.filter(G=>G.status==="rejected");for(const G of r.entries)b.includes(G)||x(G);r.entries=b;for(const G of C)r.entries.push({id:G&&G.id?String(G.id):I(),file:G&&G.file?G.file:null,name:G&&G.name!=null?String(G.name):"",size:G&&G.size!=null?Number(G.size):0,type:G&&G.type!=null?String(G.type):"",status:G&&G.status?String(G.status):"done",progress:G&&G.progress!=null?Number(G.progress):100,message:G&&G.message?String(G.message):""});t.__latPaint&&t.__latPaint()},state(t,i){const r=t.__latFile;r&&(r.disabled=i.disabled===!0,r.readOnly=i.readOnly===!0,r.disabled?t.setAttribute("aria-disabled","true"):t.removeAttribute("aria-disabled"),r.readOnly?t.setAttribute("aria-readonly","true"):t.removeAttribute("aria-readonly"),t.__latPaint&&t.__latPaint())},validate(t,i,r){const C=t.__latFile;if(!C)return null;const b=C.entries.find(G=>G.status==="rejected");return b&&b.message&&(!Array.isArray(r)||r.length===0)?b.message:C.maxFiles&&Array.isArray(r)&&r.length>C.maxFiles?`Too many files (max ${C.maxFiles})`:null}})}),_e("packages/dom/src/editors/richtext-icons.js",function(F,X){"use strict";Object.defineProperty(F,"TOOL_GLYPHS",{enumerable:!0,get:function(){return v}}),Object.defineProperty(F,"letterGlyph",{enumerable:!0,get:function(){return te}}),Object.defineProperty(F,"toolGlyph",{enumerable:!0,get:function(){return u}});const e="http://www.w3.org/2000/svg",T=Object.freeze({bold:{char:"B",weight:"700"},italic:{char:"I",style:"italic"},underline:{char:"U",decoration:"underline"},strike:{char:"S",decoration:"line-through"}}),v=Object.freeze({color:"M8 2.5l4 5.5a4 4 0 0 1-8 0zM4.5 12.5h7",alignLeft:"M3 4h10M3 8h6M3 12h10",alignCenter:"M3 4h10M5 8h6M3 12h10",alignRight:"M3 4h10M7 8h6M3 12h10",ul:"M3 5.5h.01M3 9.5h.01M3 13.5h.01M6 5.5h7M6 9.5h7M6 13.5h7",ol:"M2.5 4.5h.01M2.5 8.5h.01M2.5 12.5h.01M5 4.5h8M5 8.5h8M5 12.5h8",outdent:"M3 4h8M3 8h5M3 12h8M8 3v2M8 11v2",indent:"M5 4h8M5 8h5M5 12h8M10 3v2M10 11v2",link:"M6.5 9.5a3 3 0 0 0 3 3l2-2a3 3 0 0 0-3-3M9.5 6.5a3 3 0 0 0-3-3l-2 2a3 3 0 0 0 3 3",image:"M2 3h12v10H2zM5.5 11l2.5-3 2 2 1.5-1.5 2 2.5M5.5 6a.8.8 0 1 0 0 1.6.8.8 0 0 0 0-1.6z",clear:"M5 4h9M6 4l-.5 8a2 2 0 0 1-2 1.8A2 2 0 0 1 1.5 12L1 4M4 4V2.5h8V4M6 7v3M9.5 7v3",source:"M6 4L2.5 8 6 12M10 4l3.5 4L10 12",undo:"M3 7h6a3.5 3.5 0 0 1 0 7H5M3 7l2-2M3 7l2 2",redo:"M13 7H7a3.5 3.5 0 0 0 0 7h4M13 7l-2-2M13 7l-2 2"});function te(L,O){const k=T[O],I=L.createElementNS(e,"svg");I.setAttribute("viewBox","0 0 16 16"),I.setAttribute("width","16"),I.setAttribute("height","16"),I.setAttribute("focusable","false"),I.setAttribute("aria-hidden","true");const N=L.createElementNS(e,"text");return N.setAttribute("x","8"),N.setAttribute("y","12"),N.setAttribute("text-anchor","middle"),N.style.fontSize="12px",N.style.fill="currentColor",N.style.fontFamily='system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif',k.weight&&(N.style.fontWeight=k.weight),k.style&&(N.style.fontStyle=k.style),k.decoration&&(N.style.textDecoration=k.decoration),N.textContent=k.char,I.appendChild(N),I}function u(L,O){const k=L.createElementNS(e,"svg");k.setAttribute("viewBox","0 0 16 16"),k.setAttribute("focusable","false"),k.setAttribute("aria-hidden","true"),k.setAttribute("fill","none"),k.setAttribute("stroke","currentColor"),k.setAttribute("stroke-width","1.5"),k.setAttribute("stroke-linecap","round"),k.setAttribute("stroke-linejoin","round");const I=L.createElementNS(e,"path");return I.setAttribute("d",v[O]),k.appendChild(I),k}}),_e("packages/modules/form/controls/swatches.js",function(F,X){"use strict";Object.defineProperty(F,"DEFAULT_COLORS",{enumerable:!0,get:function(){return e}}),Object.defineProperty(F,"hslToHex",{enumerable:!0,get:function(){return O}}),Object.defineProperty(F,"DEFAULT_PALETTE",{enumerable:!0,get:function(){return k}}),Object.defineProperty(F,"DEFAULT_GRAY_SHADES",{enumerable:!0,get:function(){return I}}),Object.defineProperty(F,"buildSwatchButton",{enumerable:!0,get:function(){return N}}),Object.defineProperty(F,"buildSwatchGrid",{enumerable:!0,get:function(){return g}});const e=Object.freeze(["#1f2937","#6b7280","#dc2626","#f59e0b","#16a34a","#2563eb","#7c3aed","#db2777","#0f766e","#ffffff"]),T=Object.freeze([0,24,48,84,140,168,196,224,268,320]),v=Object.freeze([.82,.66,.5,.36,.22]),te=.62,u=Object.freeze([.92,.76,.56,.36,.18]);function L(p,a,$){let y=$;return y<0&&(y+=1),y>1&&(y-=1),y<1/6?p+(a-p)*6*y:y<1/2?a:y<2/3?p+(a-p)*(2/3-y)*6:p}function O(p,a,$){const y=(p%360+360)%360/360;let n,d,h;if(a===0)n=$,d=$,h=$;else{const W=$<.5?$*(1+a):$+a-$*a,S=2*$-W;n=L(S,W,y+1/3),d=L(S,W,y),h=L(S,W,y-1/3)}const z=W=>Math.round(W*255).toString(16).padStart(2,"0");return`#${z(n)}${z(d)}${z(h)}`}const k=Object.freeze(T.map(p=>Object.freeze(v.map(a=>O(p,te,a))))),I=Object.freeze(u.map(p=>O(0,0,p)));function N(p,a,$={}){const y=p.createElement("button");return y.type="button",y.className="lat-form__swatch",y.style.background=a,y.setAttribute("role","option"),y.setAttribute("data-color",a),y.setAttribute("aria-selected",$.selected?"true":"false"),$.selected&&y.classList.add("is-selected"),y.title=$.title!=null?$.title:a,y.tabIndex=-1,y}function g(p,a,$={}){const y=p.createElement("div");y.className="lat-form__swatch-grid",y.setAttribute("role","listbox");const n=[];for(const d of a){const h=p.createElement("div");h.className=$.rowClass?`lat-form__swatch-row ${$.rowClass}`:"lat-form__swatch-row";const z=[];for(const W of d){const S=N(p,W,{selected:typeof $.isSelected=="function"&&$.isSelected(W),title:typeof $.title=="function"?$.title(W):void 0});h.appendChild(S),z.push(S)}y.appendChild(h),n.push(z)}return typeof $.onPick=="function"&&y.addEventListener("click",d=>{const h=d.target&&d.target.closest?d.target.closest(".lat-form__swatch"):null;h&&y.contains(h)&&$.onPick(h.getAttribute("data-color"),h)}),{el:y,rows:n}}}),_e("packages/modules/form/controls/richtext.js",function(F,X){"use strict";Object.defineProperty(F,"sanitize",{enumerable:!0,get:function(){return a}}),Object.defineProperty(F,"escapeHtml",{enumerable:!0,get:function(){return u}});const T=X("packages/modules/form/controls/registry.js").registerControl,v=X("packages/dom/src/editors/sanitize-richtext.js"),te=v.sanitizeRichText,u=v.escapeHtml,L=X("packages/dom/src/editors/richtext-icons.js"),O=L.letterGlyph,k=L.toolGlyph,I=L.TOOL_GLYPHS,N=X("packages/modules/form/controls/swatches.js"),g=N.DEFAULT_COLORS,p=N.buildSwatchGrid,a=te,$=Object.freeze({basic:["bold","italic","underline","color","lowercase","uppercase","|","alignLeft","alignCenter","alignRight","ul","ol","outdent","indent","|","undo","redo"],html:["bold","italic","underline","strike","color","lowercase","uppercase","|","heading","alignLeft","alignCenter","alignRight","ul","ol","outdent","indent","|","link","clear","source","|","undo","redo"],rich:["bold","italic","underline","strike","color","lowercase","uppercase","|","heading","alignLeft","alignCenter","alignRight","ul","ol","outdent","indent","|","link","image","clear","source","|","undo","redo"]}),y=Object.freeze(["bold","italic","underline","strike"]),n=Object.freeze({bold:"form.richtext.bold",italic:"form.richtext.italic",underline:"form.richtext.underline",strike:"form.richtext.strike",color:"form.richtext.color",heading:"form.richtext.heading",alignLeft:"form.richtext.alignLeft",alignCenter:"form.richtext.alignCenter",alignRight:"form.richtext.alignRight",ul:"form.richtext.ul",ol:"form.richtext.ol",outdent:"form.richtext.outdent",indent:"form.richtext.indent",link:"form.richtext.link",image:"form.richtext.image",clear:"form.richtext.clear",source:"form.richtext.source",undo:"form.richtext.undo",redo:"form.richtext.redo",lowercase:"form.richtext.lowercase",uppercase:"form.richtext.uppercase"});function d(c){return{bold:{cmd:"bold",state:"bold"},italic:{cmd:"italic",state:"italic"},underline:{cmd:"underline",state:"underline"},strike:{cmd:"strikeThrough",state:"strikeThrough"},alignLeft:{cmd:"justifyLeft",state:"justifyLeft"},alignCenter:{cmd:"justifyCenter",state:"justifyCenter"},alignRight:{cmd:"justifyRight",state:"justifyRight"},ul:{cmd:"insertUnorderedList",state:"insertUnorderedList"},ol:{cmd:"insertOrderedList",state:"insertOrderedList"},outdent:{cmd:"outdent"},indent:{cmd:"indent"},clear:{cmd:"removeFormat"}}[c]||null}const h=Object.freeze([["p","Paragraph"],["h1","Heading 1"],["h2","Heading 2"],["h3","Heading 3"],["blockquote","Quote"]]);function z(c){return Array.isArray(c)?c.map(x=>String(x)):$[c]||$.basic}function W(c){return new Promise((x,t)=>{const i=new FileReader;i.onload=()=>x(i.result),i.onerror=()=>t(i.error||new Error("read failed")),i.readAsDataURL(c)})}T("richtext",{kind:"field",build(c,x){const t=x.doc,i=c.props||{},r=z(i.toolbar),C=Array.isArray(i.headings)?i.headings:h,b=Array.isArray(i.colors)?i.colors:g,G=i.linkTarget!=null?String(i.linkTarget):"_blank",oe=Number(i.minHeight)||160,U=Number(i.maxHeight)||0,K=Number(i.maxImageSize)||0,l=typeof i.onImage=="function"?i.onImage:null,H=i.sanitizePaste!==!1,J=i.allowedTags,Y=i.placeholder!=null?String(i.placeholder):x.t("form.richtext.placeholder"),B=t.createElement("div");B.className="lat-form__richtext";const V={toolbar:r,headings:C,colors:b,linkTarget:G,minHeight:oe,maxHeight:U,maxImageSize:K,onImage:l,sanitizePaste:H,allowedTags:J,placeholder:Y,disabled:!1,readOnly:!1,toolbarEl:null,buttons:{},editor:null,source:null,popover:null,fileInput:null,range:null,sourceMode:!1,sourceDirty:!1,history:{stack:[],index:0},lastValue:null};B.__latRt=V;const ce=a(t,c.value==null?"":String(c.value),J,{});V.history={stack:[ce],index:0},V.lastValue=ce;const ue=t.createElement("div");ue.className="lat-form__richtext-toolbar",ue.setAttribute("role","toolbar"),ue.setAttribute("aria-label",x.t("form.richtext.formatting")),V.toolbarEl=ue;for(const o of r){if(o==="|"){const D=t.createElement("span");D.className="lat-form__richtext-sep",D.setAttribute("role","separator"),ue.appendChild(D);continue}if(o==="heading"){const D=t.createElement("select");D.className="lat-form__richtext-select",D.title=x.t(n.heading),D.setAttribute("aria-label",x.t(n.heading)),D.setAttribute("data-item","heading");for(const[P,Z]of C){const A=t.createElement("option");A.value=P,A.textContent=String(Z),D.appendChild(A)}V.buttons.heading=D,ue.appendChild(D);continue}const E=t.createElement("button");E.type="button",E.className="lat-form__richtext-btn",E.setAttribute("data-item",o),E.title=x.t(n[o]||o),E.setAttribute("aria-label",x.t(n[o]||o)),o==="lowercase"||o==="uppercase"?(E.className+=" lat-form__richtext-btntext",E.textContent=x.t(o==="lowercase"?"form.richtext.lowercaseText":"form.richtext.uppercaseText")):y.includes(o)?E.appendChild(O(t,o)):I[o]?E.appendChild(k(t,o)):E.textContent=o,V.buttons[o]=E,ue.appendChild(E)}B.appendChild(ue);const ne=t.createElement("div");ne.className="lat-form__richtext-popover",ne.hidden=!0,B.appendChild(ne),V.popover=ne;const f=t.createElement("div");f.className="lat-form__richtext-editor",f.contentEditable=c.readOnly||c.disabled?"false":"true",f.setAttribute("role","textbox"),f.setAttribute("aria-multiline","true"),f.setAttribute("aria-label",c.label!=null?String(c.label):x.t("form.richtext.richText")),f.setAttribute("data-placeholder",Y),f.style.minHeight=`${oe}px`,U&&(f.style.maxHeight=`${U}px`),f.innerHTML=ce,B.appendChild(f),V.editor=f;const j=t.createElement("textarea");j.className="lat-form__richtext-source",j.setAttribute("aria-label",x.t("form.richtext.source")),j.spellcheck=!1,j.hidden=!0,B.appendChild(j),V.source=j;const M=t.createElement("input");return M.type="file",M.accept="image/*",M.className="lat-form__richtext-file",M.tabIndex=-1,M.setAttribute("aria-hidden","true"),B.appendChild(M),V.fileInput=M,B.__latSave=()=>{const o=t.defaultView&&t.defaultView.getSelection?t.defaultView.getSelection():null;o&&o.rangeCount&&f.contains(o.anchorNode)&&(V.range=o.getRangeAt(0).cloneRange())},B.__latRestore=()=>{if(!V.range)return;const o=t.defaultView&&t.defaultView.getSelection?t.defaultView.getSelection():null;if(o)try{o.removeAllRanges(),o.addRange(V.range)}catch{}},B.__latRefresh=()=>{Object.entries(V.buttons).forEach(([o,E])=>{const D=d(o);if(D&&D.state&&E.tagName==="BUTTON"){let P=!1;try{P=t.queryCommandState(D.state)}catch{P=!1}E.setAttribute("aria-pressed",P?"true":"false"),E.classList.toggle("is-active",P)}if(o==="heading"&&E.tagName==="SELECT"){let P="";try{P=String(t.queryCommandValue("formatBlock")||"").toLowerCase()}catch{P=""}const Z=[...E.options].some(A=>A.value===P);E.value=Z?P:"p"}})},B.__latExec=(o,E)=>{f.focus(),B.__latRestore();try{t.execCommand("styleWithCSS",!1,o==="foreColor")}catch{}try{t.execCommand(o,!1,E===void 0?null:E)}catch{}B.__latAfterEdit()},B.__latAfterEdit=()=>{const o=f.innerHTML,E=V.history;E.stack[E.index]!==o&&(E.stack=E.stack.slice(0,E.index+1),E.stack.push(o),E.stack.length>200&&E.stack.shift(),E.index=E.stack.length-1),B.__latRefresh();const D=a(t,o,J,{}),P=V.lastValue==null?a(t,E.stack[0]||"",J,{}):V.lastValue;V.lastValue=D,S(B,t,P,D)},B.__latCaretEnd=()=>{const o=t.createRange();o.selectNodeContents(f),o.collapse(!1);const E=t.defaultView&&t.defaultView.getSelection?t.defaultView.getSelection():null;E&&(E.removeAllRanges(),E.addRange(o)),V.range=o.cloneRange()},B.__latUndo=()=>{const o=V.history;if(o.index<=0)return;o.index-=1,f.innerHTML=o.stack[o.index],B.__latCaretEnd(),B.__latRefresh();const E=a(t,f.innerHTML,J,{});V.lastValue=E,S(B,t,V.lastValue,E)},B.__latRedo=()=>{const o=V.history;if(o.index>=o.stack.length-1)return;o.index+=1,f.innerHTML=o.stack[o.index],B.__latCaretEnd(),B.__latRefresh();const E=a(t,f.innerHTML,J,{});V.lastValue=E,S(B,t,V.lastValue,E)},B.__latClosePopover=()=>{ne.hidden=!0,ne.textContent=""},B.__latOpenPopover=(o,E)=>{if(ne.textContent="",ne.hidden=!1,ne.style.left=`${Math.max(0,E.offsetLeft)}px`,o==="color"){const{el:D}=p(t,[b],{onPick:_=>{B.__latRestore(),B.__latExec("foreColor",_),B.__latClosePopover()}});ne.appendChild(D);const P=t.createElement("div");P.className="lat-form__richtext-poprow";const Z=t.createElement("input");Z.type="color",Z.className="lat-form__richtext-colorinput",Z.setAttribute("aria-label",x.t("form.richtext.colorCustom")),Z.addEventListener("input",()=>{B.__latRestore(),B.__latExec("foreColor",Z.value)});const A=t.createElement("button");A.type="button",A.className="lat-form__richtext-popbtn",A.textContent=x.t("form.richtext.colorRemove"),A.addEventListener("click",()=>{B.__latRestore(),B.__latExec("foreColor","inherit"),B.__latClosePopover()}),P.appendChild(Z),P.appendChild(A),ne.appendChild(P)}else{const D=B.__latClosestLink(),P=t.createElement("input");P.type="url",P.className="lat-form__richtext-linkinput",P.placeholder=x.t("form.richtext.linkPlaceholder"),P.value=D&&D.getAttribute("href")||"",P.setAttribute("aria-label",x.t("form.richtext.linkLabel"));const Z=()=>{const s=P.value.trim();if(B.__latRestore(),!s){B.__latExec("unlink"),B.__latClosePopover();return}if(!/^(https?:\/\/|mailto:|tel:|\/)/i.test(s)){P.classList.add("is-invalid");return}if(D)D.setAttribute("href",s),B.__latAfterEdit();else{const w=t.defaultView&&t.defaultView.getSelection?t.defaultView.getSelection():null;if(w&&w.isCollapsed){const m=G?` target="${u(G)}" rel="noopener noreferrer"`:"";B.__latExec("insertHTML",a(t,`<a href="${u(s)}"${m}>${u(s)}</a>`,J,{}))}else{B.__latExec("createLink",s);const m=B.__latClosestLink();m&&G&&(m.setAttribute("target",G),m.setAttribute("rel","noopener noreferrer"))}}B.__latClosePopover()};P.addEventListener("keydown",s=>{s.key==="Enter"&&(s.preventDefault(),Z()),s.key==="Escape"&&B.__latClosePopover()});const A=t.createElement("div");A.className="lat-form__richtext-poprow",A.appendChild(P);const _=t.createElement("button");if(_.type="button",_.className="lat-form__richtext-popbtn",_.textContent=D?x.t("form.richtext.linkUpdate"):x.t("form.richtext.linkAdd"),_.addEventListener("click",Z),A.appendChild(_),D){const s=t.createElement("button");s.type="button",s.className="lat-form__richtext-popbtn",s.textContent=x.t("form.richtext.linkRemove"),s.addEventListener("click",()=>{B.__latRestore(),B.__latExec("unlink"),B.__latClosePopover()}),A.appendChild(s)}ne.appendChild(A),setTimeout(()=>P.focus(),0)}},B.__latClosestLink=()=>{const o=t.defaultView&&t.defaultView.getSelection?t.defaultView.getSelection():null;if(!o||o.rangeCount===0)return null;let E=o.getRangeAt(0).commonAncestorContainer;E.nodeType===3&&(E=E.parentNode);const D=E.closest?E.closest("a"):null;return D&&f.contains(D)?D:null},B.__latRun=o=>{if(V.disabled||V.readOnly)return;o!=="source"&&V.sourceMode&&B.__latToggleSource(!1),B.__latRestore();const E=d(o);if(o==="color"||o==="link"){B.__latOpenPopover(o,V.buttons[o]);return}if(o==="undo"){B.__latUndo();return}if(o==="redo"){B.__latRedo();return}if(o==="source"){B.__latToggleSource();return}if(o==="image"){V.fileInput.click();return}if(o==="lowercase"||o==="uppercase"){B.__latCase(o==="uppercase");return}if(E){B.__latExec(E.cmd);return}},B.__latCase=o=>{const E=t.defaultView&&t.defaultView.getSelection?t.defaultView.getSelection():null;if(!E||E.rangeCount===0||E.isCollapsed)return;const D=E.toString();B.__latExec("insertText",o?D.toUpperCase():D.toLowerCase())},B.__latToggleSource=o=>{const E=o===void 0?!V.sourceMode:!!o;if(E===V.sourceMode)return;E?(V.source.value=a(t,f.innerHTML,J,{}).replace(/></g,`>
1395
+ <`),f.hidden=!0,j.hidden=!1,j.focus()):(V.sourceDirty&&(f.innerHTML=a(t,j.value,J,{}),V.sourceDirty=!1),j.hidden=!0,f.hidden=!1,f.focus()),V.sourceMode=E;const D=V.buttons.source;D&&(D.classList.toggle("is-active",E),D.setAttribute("aria-pressed",E?"true":"false")),Object.entries(V.buttons).forEach(([P,Z])=>{P!=="source"&&(Z.disabled=E)}),E||B.__latAfterEdit()},B.__latInsertImage=async o=>{if(!/^image\//.test(o.type)||K&&o.size>K)return;let E;try{E=l?await l(o):await W(o)}catch{return}E&&B.__latExec("insertHTML",a(t,`<img src="${u(E)}" alt="${u(o.name)}" style="max-width:100%">`,J,{}))},B.__latToolbarClick=o=>{const E=o.target&&o.target.closest?o.target.closest("[data-item]"):null;!E||!ue.contains(E)||E.tagName==="SELECT"||(o.preventDefault(),B.__latRun(E.getAttribute("data-item")))},B.__latToolbarDown=o=>{o.target&&o.target.closest&&o.target.closest(".lat-form__richtext-btn")&&o.preventDefault()},B.__latSelect=o=>{o.target&&o.target.getAttribute&&o.target.getAttribute("data-item")==="heading"&&(B.__latRestore(),B.__latExec("formatBlock",o.target.value))},B.__latInput=()=>{B.__latAfterEdit()},B.__latKey=o=>{if(!(o.ctrlKey||o.metaKey))return;const E=o.key.toLowerCase();E==="z"&&!o.shiftKey?(o.preventDefault(),B.__latUndo()):E==="y"||E==="z"&&o.shiftKey?(o.preventDefault(),B.__latRedo()):E==="k"&&V.buttons.link&&(o.preventDefault(),B.__latRun("link"))},B.__latPaste=o=>{if(!H||!o.clipboardData)return;const E=o.clipboardData.getData("text/html"),D=o.clipboardData.getData("text/plain");if(!E&&!D)return;o.preventDefault();const P=E?a(t,E,J,{stripStyles:!0}):u(D).replace(/\r?\n/g,"<br>");B.__latExec("insertHTML",P)},B.__latDrop=o=>{if(!H||!o.dataTransfer)return;const E=o.dataTransfer.files;if(E&&E.length){o.preventDefault();const A=E[0];A&&B.__latInsertImage(A);return}const D=o.dataTransfer.getData("text/html"),P=o.dataTransfer.getData("text/plain");if(!D&&!P)return;o.preventDefault();const Z=D?a(t,D,J,{stripStyles:!0}):u(P).replace(/\r?\n/g,"<br>");B.__latExec("insertHTML",Z)},B.__latBeforeInput=o=>{H&&(o.inputType==="insertFromDrop"||o.inputType==="insertFromPaste")&&o.preventDefault()},B.__latSelChange=()=>{t.activeElement===f&&(B.__latSave(),B.__latRefresh())},B.__latFile=()=>{const o=M.files&&M.files[0];M.value="",o&&B.__latInsertImage(o)},B.__latSourceInput=()=>{V.sourceDirty=!0},B.__latDocClick=o=>{ne&&!ne.hidden&&!ne.contains(o.target)&&!ue.contains(o.target)&&B.__latClosePopover()},ue.addEventListener("click",B.__latToolbarClick),ue.addEventListener("mousedown",B.__latToolbarDown),ue.addEventListener("change",B.__latSelect),f.addEventListener("input",B.__latInput),f.addEventListener("keydown",B.__latKey),f.addEventListener("paste",B.__latPaste),f.addEventListener("drop",B.__latDrop),f.addEventListener("beforeinput",B.__latBeforeInput),M.addEventListener("change",B.__latFile),j.addEventListener("input",B.__latSourceInput),t.addEventListener&&(t.addEventListener("selectionchange",B.__latSelChange),t.addEventListener("mousedown",B.__latDocClick,!0)),B},read(c){const x=c.__latRt;return x?x.sourceMode?a(c.ownerDocument,x.source.value,x.allowedTags,{}):a(c.ownerDocument,x.editor.innerHTML,x.allowedTags,{}):""},write(c,x){const t=c.__latRt;if(!t)return;const i=c.ownerDocument,r=a(i,x==null?"":String(x),t.allowedTags,{});t.sourceMode&&(t.source.value=r),t.editor.innerHTML=r,t.history={stack:[r],index:0},t.lastValue=r},state(c,x){const t=c.__latRt;t&&(t.disabled=x.disabled===!0,t.readOnly=x.readOnly===!0,t.editor.contentEditable=t.disabled||t.readOnly?"false":"true",t.editor.tabIndex=t.readOnly?0:-1,t.readOnly?t.editor.setAttribute("aria-readonly","true"):t.editor.removeAttribute("aria-readonly"),t.disabled?c.setAttribute("aria-disabled","true"):c.removeAttribute("aria-disabled"),t.readOnly?c.setAttribute("aria-readonly","true"):c.removeAttribute("aria-readonly"),Object.values(t.buttons).forEach(i=>{i.disabled=t.disabled||t.readOnly}))}});function S(c,x,t,i){const r=x&&x.defaultView,C=r&&r.Event,b=C?new C("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};c.dispatchEvent(b)}}),_e("packages/modules/form/controls/rating.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=5,te=Object.freeze({star:"M8 1.5l1.9 3.9 4.3.6-3.1 3 .7 4.3L8 11.2l-3.8 2 .7-4.3-3.1-3 4.3-.6z",heart:"M8 14s-5-3.2-5-6.3A2.9 2.9 0 0 1 8 5.7 2.9 2.9 0 0 1 13 7.7C13 10.8 8 14 8 14z"});function u(a){const $=String(a??"");return Object.hasOwn(te,$)?$:"star"}function L(a,$,y){return Math.min(Math.max(a,$),y)}function O(a,$){const y=$&&$.defaultView,n=y&&y.Event,d=n?new n("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};a.dispatchEvent(d)}function k(a,$,y){const n=a.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("viewBox","0 0 16 16"),n.setAttribute("focusable","false"),n.setAttribute("aria-hidden","true"),y?n.setAttribute("fill","currentColor"):(n.setAttribute("fill","none"),n.setAttribute("stroke","currentColor"),n.setAttribute("stroke-width","1.5"),n.setAttribute("stroke-linejoin","round"));const d=a.createElementNS("http://www.w3.org/2000/svg","path");return d.setAttribute("d",te[$]),n.appendChild(d),n}function I(a,$,y){const n=Number(a),d=Number.isFinite(n)?n:0,h=y?Math.round(d*2)/2:Math.round(d);return L(h,0,$)}function N(a,$){return Math.min(1,Math.max(0,a-($-1)))}T("rating",{kind:"field",build(a,$){const y=$.doc,n=a.props||{},d=Math.max(1,Math.floor(Number(a.max!=null?a.max:n.max)||v)),h=n.allowHalf===!0,z=n.allowClear!==!1,W=n.showValue===!0,S=Array.isArray(n.labels)?n.labels:null,c=u(n.icons&&n.icons.filled?n.icons.filled:n.icon),x=u(n.icons&&n.icons.empty?n.icons.empty:`${c}-outline`),t=n.size==="lg"||n.size==="sm"?n.size:"md",i=y.createElement("div");i.className=`lat-form__rating lat-form__rating--${t}`,i.setAttribute("role","slider"),i.setAttribute("aria-valuemin","0"),i.setAttribute("aria-valuemax",String(d)),i.setAttribute("aria-label",a.label!=null?String(a.label):$.t("form.rating"));const r={value:I(a.value,d,h),max:d,allowHalf:h,allowClear:z,labels:S,showValue:W,filledName:c,emptyName:x,items:[],fills:[],valueEl:null};i.__latRating=r;const C=y.createElement("span");C.className="lat-form__rating-track",C.setAttribute("aria-hidden","true");for(let b=0;b<d;b++){const G=y.createElement("span");G.className="lat-form__rating-item",G.setAttribute("data-index",String(b)),S&&S[b]!=null&&S[b]!==""&&(G.title=String(S[b])),G.appendChild(k(y,x,!1));const oe=y.createElement("span");oe.className="lat-form__rating-fill",oe.setAttribute("aria-hidden","true"),oe.appendChild(k(y,c,!0)),G.appendChild(oe),C.appendChild(G),r.items.push(G),r.fills.push(oe)}if(i.appendChild(C),W){const b=y.createElement("span");b.className="lat-form__rating-value",b.setAttribute("aria-hidden","true"),i.appendChild(b),r.valueEl=b}return i.__latPaint=()=>{for(let b=0;b<r.items.length;b++){const G=N(r.value,b+1);r.items[b].setAttribute("data-fill",G>=1?"full":G>0?"half":"empty"),r.fills[b].style.width=`${(G*100).toFixed(2)}%`}i.setAttribute("aria-valuenow",String(r.value)),i.setAttribute("aria-valuetext",g(r)),r.valueEl&&(r.valueEl.textContent=p(r))},i.__latSet=b=>{r.value=I(b,d,h),i.__latPaint()},i.__latClear=()=>{r.value=0,i.__latPaint()},i.__latPick=(b,G)=>{let oe=b+1;if(h&&G&&Number.isFinite(G.clientX)){const U=r.items[b].getBoundingClientRect();U&&U.width>0&&(oe=G.clientX-U.left<U.width/2?b+.5:b+1)}z&&oe===r.value&&(oe=0),i.__latSet(oe),O(i,$.doc)},i.addEventListener("click",b=>{if(r.disabled||r.readOnly)return;const G=b.target&&b.target.closest?b.target.closest(".lat-form__rating-item"):null;!G||!i.contains(G)||i.__latPick(Number(G.getAttribute("data-index")),b)}),i.__latKey=b=>{if(r.disabled||r.readOnly)return;const G=h?.5:1;let oe=r.value;if(b.key==="ArrowRight"||b.key==="ArrowUp")oe+=G;else if(b.key==="ArrowLeft"||b.key==="ArrowDown")oe-=G;else if(b.key==="Home")oe=0;else if(b.key==="End")oe=d;else if(b.key==="Backspace"||b.key==="Delete")oe=0;else return;b.preventDefault(),i.__latSet(oe),O(i,$.doc)},i.addEventListener("keydown",i.__latKey),i.__latPaint(),i},read(a){return a.__latRating?a.__latRating.value:0},write(a,$){a.__latRating&&(a.__latRating.value=I($,a.__latRating.max,a.__latRating.allowHalf),a.__latPaint())},state(a,$){const y=a.__latRating;y&&(y.disabled=$.disabled===!0,y.readOnly=$.readOnly===!0,a.tabIndex=y.disabled?-1:0,y.readOnly?a.setAttribute("aria-readonly","true"):a.removeAttribute("aria-readonly"),y.disabled?a.setAttribute("aria-disabled","true"):a.removeAttribute("aria-disabled"))}});function g(a){const $=Math.round(a.value);return a.labels&&a.labels[$-1]&&a.value===$?a.labels[$-1]:`${a.value} of ${a.max}`}function p(a){return String(a.value)}}),_e("packages/modules/form/controls/stage.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl;function v(L,O){const k=O&&O.defaultView,I=k&&k.Event,N=I?new I("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};L.dispatchEvent(N)}function te(L,O){return typeof O=="number"&&Number.isFinite(O)?Math.min(Math.max(Math.round(O),0),L.length-1):typeof O=="string"?L.indexOf(O):-1}function u(L,O,k){return`${L}, ${O+1} of ${k}`}T("stage",{kind:"field",build(L,O){const k=O.doc,I=L.props||{},N=Array.isArray(I.stages)?I.stages.map(h=>String(h)):[],g=I.clickable!==!1,p=I.showIcons!==!1,a=te(N,L.value!=null?L.value:I.current),$=te(N,I.completed),y=k.createElement("div");y.className="lat-form__stage",y.setAttribute("role","radiogroup"),y.setAttribute("aria-label",L.label!=null?String(L.label):O.t("form.stage"));const n=[],d={stages:N,value:a>=0?N[a]:null,index:a,completed:$,clickable:g,showIcons:p,disabled:!1,readOnly:!1,focus:a>=0?a:0};y.__latStage=d;for(let h=0;h<N.length;h++){const z=k.createElement(g?"button":"span");if(z.type=g?"button":void 0,z.className="lat-form__stage-step",z.setAttribute("data-index",String(h)),g&&(z.setAttribute("role","radio"),z.setAttribute("aria-label",u(N[h],h,N.length))),p){const S=k.createElementNS("http://www.w3.org/2000/svg","svg");S.setAttribute("viewBox","0 0 16 16"),S.setAttribute("aria-hidden","true"),S.setAttribute("class","lat-form__stage-check");const c=k.createElementNS("http://www.w3.org/2000/svg","path");c.setAttribute("d","M3 8.5l3 3 7-7"),c.setAttribute("fill","none"),c.setAttribute("stroke","currentColor"),c.setAttribute("stroke-width","2"),c.setAttribute("stroke-linecap","round"),c.setAttribute("stroke-linejoin","round"),S.appendChild(c),z.appendChild(S)}const W=k.createElement("span");W.className="lat-form__stage-label",W.textContent=N[h],z.appendChild(W),y.appendChild(z),n.push(z)}return y.__latPaint=()=>{for(let h=0;h<n.length;h++){const z=h===d.index,W=!z&&d.completed>=0&&h<=d.completed;n[h].setAttribute("data-state",z?"current":W?"done":"todo"),d.clickable&&(n[h].setAttribute("aria-checked",z?"true":"false"),n[h].tabIndex=d.disabled?-1:h===d.focus?0:-1)}},y.__latSelect=h=>{const z=h>=0&&h<N.length?N[h]:null;z!==d.value&&(d.index=h>=0&&h<N.length?h:-1,d.value=z,d.focus=d.index>=0?d.index:0,y.__latPaint(),v(y,O.doc))},y.__latKey=h=>{if(d.disabled||d.readOnly||!d.clickable||!N.length)return;let z=d.focus;if(h.key==="ArrowRight"||h.key==="ArrowDown")z+=1;else if(h.key==="ArrowLeft"||h.key==="ArrowUp")z-=1;else if(h.key==="Home")z=0;else if(h.key==="End")z=N.length-1;else return;h.preventDefault();const W=Math.min(Math.max(z,0),N.length-1);d.focus=W,n[W].focus(),y.__latSelect(W)},g&&(y.addEventListener("click",h=>{if(d.disabled||d.readOnly)return;const z=h.target&&h.target.closest?h.target.closest(".lat-form__stage-step"):null;if(!z||!y.contains(z))return;const W=Number(z.getAttribute("data-index"));d.focus=W,y.__latSelect(W)}),y.addEventListener("keydown",y.__latKey)),y.__latPaint(),y},read(L){return L.__latStage?L.__latStage.value:null},write(L,O){const k=L.__latStage;if(!k)return;const I=O==null?-1:te(k.stages,O);k.index=I,k.value=I>=0?k.stages[I]:null,k.focus=I>=0?I:0,L.__latPaint()},state(L,O){const k=L.__latStage;k&&(k.disabled=O.disabled===!0,k.readOnly=O.readOnly===!0,k.readOnly?L.setAttribute("aria-readonly","true"):L.removeAttribute("aria-readonly"),k.disabled?L.setAttribute("aria-disabled","true"):L.removeAttribute("aria-disabled"),L.__latPaint())}})}),_e("packages/modules/form/controls/chips.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v="M3 8.5l3 3 7-7";function te(O,k){const I=k&&k.defaultView,N=I&&I.Event,g=N?new N("change",{bubbles:!0}):{type:"change",bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};O.dispatchEvent(g)}function u(O){if(typeof O=="string")return{value:O,label:O,icon:null,disabled:!1};if(O!==null&&typeof O=="object"){const k=O.value===void 0?String(O.label):O.value;return{value:k,label:O.label==null?String(k):String(O.label),icon:typeof O.icon=="string"&&O.icon!==""?O.icon:null,disabled:O.disabled===!0}}return{value:O,label:String(O),icon:null,disabled:!1}}function L(O,k,I){const N=O.createElementNS("http://www.w3.org/2000/svg","svg");N.setAttribute("viewBox","0 0 16 16"),N.setAttribute("focusable","false"),N.setAttribute("aria-hidden","true");const g=O.createElementNS("http://www.w3.org/2000/svg","path");return g.setAttribute("d",k),I?g.setAttribute("fill","currentColor"):(g.setAttribute("fill","none"),g.setAttribute("stroke","currentColor"),g.setAttribute("stroke-width","2"),g.setAttribute("stroke-linecap","round"),g.setAttribute("stroke-linejoin","round")),N.appendChild(g),N}T("chips",{kind:"field",build(O,k){const I=k.doc,N=O.props||{},g=(Array.isArray(O.options)?O.options:[]).map(u),p=N.multiple===!0,a=N.allowEmpty===!0,$=N.wrap!==!1,y=O.max!=null&&Number.isFinite(Number(O.max))?Number(O.max):null,n=I.createElement("div");n.className=`lat-form__chips${$?"":" lat-form__chips--scroll"}`,n.setAttribute("role",p?"group":"radiogroup"),n.setAttribute("aria-label",O.label!=null?String(O.label):k.t("form.chips"));const d=[],h=new Set,z={options:g,multiple:p,allowEmpty:a,wrap:$,max:y,selected:h,disabled:!1,readOnly:!1,t:k.t};n.__latChips=z;for(let S=0;S<g.length;S++){const c=g[S],x=I.createElement("button");if(x.type="button",x.className="lat-form__chip",x.setAttribute("data-index",String(S)),x.disabled=c.disabled,p||x.setAttribute("role","radio"),c.icon){const i=L(I,c.icon,!0);i.setAttribute("class","lat-form__chip-icon"),x.appendChild(i)}const t=I.createElement("span");if(t.className="lat-form__chip-label",t.textContent=c.label,x.appendChild(t),p){const i=L(I,v,!1);i.setAttribute("class","lat-form__chip-check"),x.appendChild(i)}n.appendChild(x),d.push(x)}z.buttons=d,n.__latPaint=()=>{for(let S=0;S<d.length;S++){const c=g[S],x=h.has(c.value),t=d[S];t.disabled=c.disabled||z.disabled,p?(t.setAttribute("aria-pressed",x?"true":"false"),t.tabIndex=z.disabled?-1:0):(t.setAttribute("aria-checked",x?"true":"false"),t.tabIndex=z.disabled?-1:x?0:-1)}},n.__latValue=()=>{if(p)return g.filter(S=>h.has(S.value)).map(S=>S.value);for(const S of g)if(h.has(S.value))return S.value;return null},n.__latToggle=S=>{const c=g[S];if(!(!c||c.disabled||z.disabled||z.readOnly)){if(p)if(h.has(c.value))h.delete(c.value);else{if(y!=null&&h.size>=y)return;h.add(c.value)}else if(h.has(c.value))if(z.allowEmpty)h.clear();else return;else h.clear(),h.add(c.value);n.__latPaint(),te(n,k.doc)}},n.addEventListener("click",S=>{const c=S.target&&S.target.closest?S.target.closest(".lat-form__chip"):null;!c||!n.contains(c)||n.__latToggle(Number(c.getAttribute("data-index")))}),n.__latKey=S=>{if(z.multiple||z.disabled||z.readOnly||!d.length)return;let c=-1;for(let r=0;r<d.length;r++)if(h.has(g[r].value)){c=r;break}let x=c;if(S.key==="ArrowRight"||S.key==="ArrowDown")x=c+1;else if(S.key==="ArrowLeft"||S.key==="ArrowUp")x=c-1;else if(S.key==="Home")x=0;else if(S.key==="End")x=g.length-1;else return;S.preventDefault();const t=S.key==="ArrowLeft"||S.key==="ArrowUp"?-1:1;let i=x;for(;i>=0&&i<g.length&&g[i].disabled;)i+=t;i<0||i>=g.length||(h.clear(),h.add(g[i].value),n.__latPaint(),d[i].focus(),te(n,k.doc))},n.addEventListener("keydown",n.__latKey);const W=O.value;if(p){const S=Array.isArray(W)?W:[];for(const c of S)g.some(x=>x.value===c)&&h.add(c)}else if(W!=null&&g.some(S=>S.value===W))h.add(W);else if(!a){const S=g.find(c=>!c.disabled)||g[0];S&&h.add(S.value)}return n.__latPaint(),n},read(O){return O.__latChips?O.__latValue():null},write(O,k){const I=O.__latChips;if(I){if(I.selected.clear(),I.multiple){const N=Array.isArray(k)?k:[];for(const g of N)I.options.some(p=>p.value===g)&&I.selected.add(g)}else if(k!=null&&I.options.some(N=>N.value===k))I.selected.add(k);else if(!I.allowEmpty){const N=I.options.find(g=>!g.disabled)||I.options[0];N&&I.selected.add(N.value)}O.__latPaint()}},validate(O,k,I){const N=O.__latChips;if(!N||!N.multiple)return null;const g=Array.isArray(I)?I.length:0,p=k.min!=null&&Number.isFinite(Number(k.min))?Number(k.min):null,a=k.max!=null&&Number.isFinite(Number(k.max))?Number(k.max):null;return p!=null&&g<p?{code:"min",message:N.t("form.chips.min",{min:String(p)})}:a!=null&&g>a?{code:"max",message:N.t("form.chips.max",{max:String(a)})}:null},state(O,k){const I=O.__latChips;I&&(I.disabled=k.disabled===!0,I.readOnly=k.readOnly===!0,I.readOnly?O.setAttribute("aria-readonly","true"):O.removeAttribute("aria-readonly"),I.disabled?O.setAttribute("aria-disabled","true"):O.removeAttribute("aria-disabled"),O.__latPaint())}})}),_e("packages/modules/form/controls/otp.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=6;function te(a){const $=Math.floor(Number(a));return Number.isFinite($)&&$>=1?$:v}function u(a){return a==="alphanumeric"?"alphanumeric":"numeric"}function L(a,$){return $==="numeric"?/^[0-9]$/.test(a):/^[A-Za-z0-9]$/.test(a)}function O(a,$){for(let y=a.length-1;y>=0;y-=1)if(L(a[y],$))return a[y];return""}function k(a,$,y){return(a==null?"":String(a)).replace(/[\s-]/g,"").split("").filter(d=>L(d,$)).slice(0,y)}function I(a,$,y){const n=$&&$.defaultView,d=n&&n.Event,h=d?new d(y,{bubbles:!0}):{type:y,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};a.dispatchEvent(h)}function N(a,$){const y=k($,a.mode,a.length);for(let n=0;n<a.length;n+=1)a.boxes[n].value=y[n]||""}function g(a){a.complete=a.boxes.every($=>$.value!=="")}function p(a){return a.boxes.map($=>$.value).join("")}T("otp",{kind:"field",domEvents:["complete"],build(a,$){const y=$.doc,n=a.props||{},d=te(n.length),h=u(a.mode!=null?a.mode:n.mode),z=n.mask===!0,W=y.createElement("div");W.className="lat-form__otp",W.setAttribute("role","group"),W.setAttribute("aria-label",a.label!=null&&a.label!==""?String(a.label):$.t("form.otp.label"));const S=[],c={length:d,mode:h,mask:z,boxes:S,complete:!1,disabled:!1,readOnly:!1};W.__latOtp=c;for(let t=0;t<d;t+=1){const i=y.createElement("input");i.type="text",i.className=`lat-form__otp-input${z?" lat-form__otp-input--masked":""}`,i.setAttribute("inputmode",h==="numeric"?"numeric":"text"),i.setAttribute("pattern",h==="numeric"?"[0-9]":"[A-Za-z0-9]"),i.setAttribute("maxlength","1"),i.setAttribute("aria-label",$.t("form.otp.digit",{n:t+1,total:d})),i.autocomplete=t===0?"one-time-code":"off",S.push(i),W.appendChild(i)}const x=()=>{if(W.__latPublishing)return;W.__latPublishing=!0;try{I(W,y,"input"),I(W,y,"change")}finally{W.__latPublishing=!1}const t=S.every(i=>i.value!=="");t&&!c.complete?(c.complete=!0,I(W,y,"complete")):!t&&c.complete&&(c.complete=!1)};return W.addEventListener("input",t=>{if(W.__latPublishing)return;t.stopImmediatePropagation();const i=t.target;if(!S.includes(i))return;i.value=O(i.value,h);const r=S.indexOf(i);i.value!==""&&r<d-1&&S[r+1].focus(),x()}),W.addEventListener("change",t=>{W.__latPublishing||t.stopImmediatePropagation()}),W.addEventListener("keydown",t=>{if(c.disabled||c.readOnly)return;const i=t.target;if(!S.includes(i))return;const r=S.indexOf(i);t.key==="Backspace"?(t.preventDefault(),i.value!==""?i.value="":r>0&&(S[r-1].value="",S[r-1].focus()),x()):t.key==="ArrowLeft"&&r>0?(t.preventDefault(),S[r-1].focus()):t.key==="ArrowRight"&&r<d-1?(t.preventDefault(),S[r+1].focus()):t.key.length===1&&!L(t.key,h)&&!t.ctrlKey&&!t.metaKey&&!t.altKey&&t.preventDefault()}),W.addEventListener("paste",t=>{if(c.disabled||c.readOnly)return;t.preventDefault();const i=t.clipboardData&&typeof t.clipboardData.getData=="function"?t.clipboardData.getData("text"):"";N(c,i),(S.find(C=>C.value==="")||S[d-1]).focus(),x()}),W.focus=()=>{const t=S.find(i=>!i.disabled&&!i.readOnly&&i.value==="")||S[0];t&&t.focus()},W.blur=()=>{for(const t of S)t.blur()},N(c,a.value),g(c),W},read(a){return a.__latOtp?p(a.__latOtp):""},write(a,$){a.__latOtp&&(N(a.__latOtp,$),g(a.__latOtp))},state(a,$){const y=a.__latOtp;if(y){y.disabled=$.disabled===!0,y.readOnly=$.readOnly===!0;for(const n of y.boxes)n.disabled=y.disabled,n.readOnly=y.readOnly;y.disabled?a.setAttribute("aria-disabled","true"):a.removeAttribute("aria-disabled"),y.readOnly?a.setAttribute("aria-readonly","true"):a.removeAttribute("aria-readonly")}}})}),_e("packages/modules/form/controls/color.js",function(F,X){"use strict";const T=X("packages/modules/form/controls/registry.js").registerControl,v=X("packages/modules/form/controls/field-icon.js"),te=v.makeFieldIcon,u=v.injectFieldIconStyles,L=X("packages/modules/form/controls/swatches.js"),O=L.DEFAULT_PALETTE,k=L.DEFAULT_GRAY_SHADES,I=L.buildSwatchGrid,N=L.hslToHex,g=10,p=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i,a=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i;function $(f){return f}const y=new Set;function n(f,j){y.has(f)||(y.add(f),console.warn("[lattice]",j))}function d(f){if(typeof f!="string")return null;const j=f.trim();if(!p.test(j))return null;const M=j.replace(/^#/,"").toLowerCase();return`#${M.length===3?M.split("").map(E=>E+E).join(""):M}`}function h(f){if(typeof f!="string")return null;const j=d(f);if(j)return j;const M=a.exec(f.trim());if(!M)return null;const o=D=>Math.max(0,Math.min(255,Number(D))),E=D=>o(D).toString(16).padStart(2,"0");return`#${E(M[1])}${E(M[2])}${E(M[3])}`}function z(f){const j=d(f);return j?{r:parseInt(j.slice(1,3),16),g:parseInt(j.slice(3,5),16),b:parseInt(j.slice(5,7),16)}:null}function W(f,j,M){const o=E=>Math.max(0,Math.min(255,Math.round(E))).toString(16).padStart(2,"0");return`#${o(f)}${o(j)}${o(M)}`}function S(f,j,M){const o=f/255,E=j/255,D=M/255,P=Math.max(o,E,D),Z=Math.min(o,E,D),A=(P+Z)/2,_=P-Z;if(_===0)return{h:0,s:0,l:A};const s=A>.5?_/(2-P-Z):_/(P+Z);let w;return P===o?w=(E-D)/_%6:P===E?w=(D-o)/_+2:w=(o-E)/_+4,w*=60,w<0&&(w+=360),{h:w,s,l:A}}function c(f){return N(f.h,f.s,f.l)}function x(f,j,M){const o=f.ownerDocument,E=o&&o.defaultView,D=E&&typeof E.CustomEvent=="function"?E.CustomEvent:null,P=D?new D(j,{bubbles:!0,detail:M}):{type:j,bubbles:!0,cancelable:!1,defaultPrevented:!1,propagationStopped:!1,target:null,detail:M,preventDefault(){this.defaultPrevented=!0},stopPropagation(){this.propagationStopped=!0}};f.dispatchEvent(P)}function t(f){const j=f.props&&f.props.palette;return Array.isArray(j)&&j.length?j:O}function i(f){return!(f.props&&f.props.editable===!1)}function r(f){return!!(f.props&&f.props.clearable===!0)}function C(f){return!!(f.props&&f.props.pickerOnly===!0)}function b(f){return!(f.props&&f.props.grayShades===!1)}function G(f){const j=f.props&&f.props.icon;return typeof j=="string"&&j!==""?j:null}function oe(f){const j=f.props&&f.props.customColors;return Array.isArray(j)?[...new Set(j.map(h).filter(Boolean))].slice(0,g):[]}function U(f){const j=d(f.__input.value);f.__swatchBtn.style.background=j||"transparent",f.__swatchBtn.classList.toggle("lat-form__color-swatch--empty",!j),f.__clearBtn&&(f.__clearBtn.hidden=f.__input.value.trim()==="")}function K(f,j){f.__value=j||null,f.__input.value=j||"",f.__lastCommittedText=j||"",U(f)}function l(f){if(i(f.__item)===!1)return;const j=f.__input.value.trim();if(j===f.__lastCommittedText)return;const M=d(j);(M||j==="")&&(f.__value=M,f.__lastCommittedText=j),x(f,"change")}function H(f,j){K(f,j),x(f,"change")}function J(f,j){const M=f.__customColors,o=M.filter(D=>D!==j),E=[j,...o].slice(0,g);E.length===M.length&&E.every((D,P)=>D===M[P])||(f.__customColors=E,x(f,"customColorsChange",{colors:E}))}function Y(f){const j=f.__popover,M=f.ownerDocument,o=M&&M.defaultView,E=f.__field.getBoundingClientRect(),D=o?o.innerHeight:0,P=j.offsetHeight||0;D-E.bottom<P+4&&E.top>P+4?j.classList.add("lat-form__color-popover--above"):j.classList.remove("lat-form__color-popover--above")}function B(f,j,M,o){let E=Math.max(0,Math.min(f.length-1,j.row+M)),D=j.col+o;if(o!==0){const P=f[E].length;D=Math.max(0,Math.min(P-1,D))}else D=Math.max(0,Math.min(f[E].length-1,D));return{row:E,col:D}}function V(f){const j=f.__item,M=f.ownerDocument,o=f.__popover;for(;o.firstChild;)o.removeChild(o.firstChild);const E=[...t(j)];b(j)&&E.push([...k]),f.__customColors.length&&E.push([...f.__customColors]);const D=f.__value,{el:P,rows:Z}=I(M,E,{isSelected:_=>_===D,onPick:_=>{H(f,_),ne(f,{restoreFocus:!0})}});P.classList.add("lat-form__color-grid"),o.appendChild(P);for(const _ of Z)for(const s of _){if(s.getAttribute("aria-selected")!=="true")continue;const w=M.createElementNS("http://www.w3.org/2000/svg","svg");w.setAttribute("viewBox","0 0 16 16"),w.setAttribute("class","lat-form__color-check"),w.setAttribute("aria-hidden","true");const m=M.createElementNS("http://www.w3.org/2000/svg","path");m.setAttribute("d","M3.5 8.5 6.5 11.5 12.5 4.5"),m.setAttribute("fill","none"),m.setAttribute("stroke","#fff"),m.setAttribute("stroke-width","2.6"),m.setAttribute("stroke-linecap","round"),m.setAttribute("stroke-linejoin","round"),m.setAttribute("paint-order","stroke"),w.appendChild(m);const R=M.createElementNS("http://www.w3.org/2000/svg","path");R.setAttribute("d","M3.5 8.5 6.5 11.5 12.5 4.5"),R.setAttribute("fill","none"),R.setAttribute("stroke","#000"),R.setAttribute("stroke-width","4.2"),R.setAttribute("stroke-linecap","round"),R.setAttribute("stroke-linejoin","round"),R.setAttribute("opacity","0.35"),w.insertBefore(R,m),s.appendChild(w)}let A={row:0,col:0};e:for(let _=0;_<Z.length;_++)for(let s=0;s<Z[_].length;s++)if(Z[_][s].getAttribute("aria-selected")==="true"){A={row:_,col:s};break e}for(const _ of Z)for(const s of _)s.tabIndex=-1;if(Z[A.row]&&Z[A.row][A.col]&&(Z[A.row][A.col].tabIndex=0),P.addEventListener("keydown",_=>{if(_.key==="Enter"||_.key===" "){_.preventDefault(),_.stopPropagation(),Z[A.row][A.col].click();return}const w={ArrowLeft:[0,-1],ArrowRight:[0,1],ArrowUp:[-1,0],ArrowDown:[1,0]}[_.key];if(!w)return;_.preventDefault();for(const R of Z)for(const q of R)q.tabIndex=-1;A=B(Z,A,w[0],w[1]);const m=Z[A.row][A.col];m.tabIndex=0,m.focus()}),!C(j)){const _=M.createElement("button");_.type="button",_.className="lat-form__color-custombtn",_.textContent=f.__t("form.color.customColor"),_.addEventListener("click",()=>{ce(f,D)}),o.appendChild(_)}Y(f)}function ce(f,j){const M=f.__item,o=f.ownerDocument,E=f.__popover;for(;E.firstChild;)E.removeChild(E.firstChild);const D=z(j)||{r:0,g:0,b:0},P=S(D.r,D.g,D.b),Z=o.createElement("div");Z.className="lat-form__color-picker",E.appendChild(Z);const A=o.createElement("div");A.className="lat-form__color-plane",A.setAttribute("role","slider"),A.setAttribute("aria-label",f.__t("form.color.saturationLightness")),A.tabIndex=0;const _=o.createElement("div");_.className="lat-form__color-plane-thumb",A.appendChild(_),Z.appendChild(A);const s=o.createElement("div");s.className="lat-form__color-hue",s.setAttribute("role","slider"),s.setAttribute("aria-label",f.__t("form.color.hue")),s.tabIndex=0;const w=o.createElement("div");w.className="lat-form__color-hue-thumb",s.appendChild(w),Z.appendChild(s);const m=o.createElement("div");m.className="lat-form__color-fields";const R=o.createElement("input");R.type="text",R.className="lat-form__color-hexfield",R.setAttribute("aria-label",f.__t("form.color.hexLabel"));const q=o.createElement("input");q.type="number",q.min="0",q.max="255",q.className="lat-form__color-rgbfield",q.setAttribute("aria-label",f.__t("form.color.redLabel"));const re=o.createElement("input");re.type="number",re.min="0",re.max="255",re.className="lat-form__color-rgbfield",re.setAttribute("aria-label",f.__t("form.color.greenLabel"));const ie=o.createElement("input");ie.type="number",ie.min="0",ie.max="255",ie.className="lat-form__color-rgbfield",ie.setAttribute("aria-label",f.__t("form.color.blueLabel")),m.appendChild(R),m.appendChild(q),m.appendChild(re),m.appendChild(ie),Z.appendChild(m);const ge=o.createElement("div");ge.className="lat-form__color-previewrow";const pe=o.createElement("span");pe.className="lat-form__color-preview",ge.appendChild(pe),Z.appendChild(ge);const Se=o.createElement("div");if(Se.className="lat-form__color-actions",!C(M)){const se=o.createElement("button");se.type="button",se.className="lat-form__color-back",se.textContent=f.__t("form.back"),se.addEventListener("click",()=>{V(f)}),Se.appendChild(se)}const xe=o.createElement("button");xe.type="button",xe.className="lat-form__color-select",xe.textContent=f.__t("form.color.select"),Se.appendChild(xe),Z.appendChild(Se);const Ee=()=>{const se=c(P),fe=z(se);A.style.setProperty("--lat-color-hue",String(P.h)),_.style.left=`${P.s*100}%`,_.style.top=`${(1-P.l)*100}%`,w.style.left=`${P.h/360*100}%`,R.value=se,q.value=String(fe.r),re.value=String(fe.g),ie.value=String(fe.b),pe.style.background=se,A.setAttribute("aria-valuetext",se),s.setAttribute("aria-valuenow",String(Math.round(P.h)))};Ee();const je=(se,fe,ye)=>{const ee=se.getBoundingClientRect();if(!ee.width||!ee.height)return;const be=Math.max(0,Math.min(1,(fe.clientX-ee.left)/ee.width)),le=Math.max(0,Math.min(1,(fe.clientY-ee.top)/ee.height));ye(be,le)},Ne=(se,fe)=>{let ye=!1;se.addEventListener("pointerdown",ee=>{ye=!0,je(se,ee,fe)}),o.addEventListener("pointermove",ee=>{ye&&je(se,ee,fe)}),o.addEventListener("pointerup",()=>{ye=!1})};Ne(A,(se,fe)=>{P.s=se,P.l=1-fe,Ee()}),Ne(s,se=>{P.h=se*360,Ee()}),A.addEventListener("keydown",se=>{if(se.key==="Enter"){se.preventDefault(),se.stopPropagation(),Oe();return}const fe=se.shiftKey?.1:.02;if(se.key==="ArrowLeft")P.s=Math.max(0,P.s-fe);else if(se.key==="ArrowRight")P.s=Math.min(1,P.s+fe);else if(se.key==="ArrowUp")P.l=Math.min(1,P.l+fe);else if(se.key==="ArrowDown")P.l=Math.max(0,P.l-fe);else return;se.preventDefault(),Ee()}),s.addEventListener("keydown",se=>{if(se.key==="Enter"){se.preventDefault(),se.stopPropagation(),Oe();return}const fe=se.shiftKey?10:2;if(se.key==="ArrowLeft"||se.key==="ArrowDown")P.h=(P.h-fe+360)%360;else if(se.key==="ArrowRight"||se.key==="ArrowUp")P.h=(P.h+fe)%360;else return;se.preventDefault(),Ee()});const de=()=>{const se=d(R.value);if(!se){R.value=c(P);return}const fe=z(se);Object.assign(P,S(fe.r,fe.g,fe.b)),Ee()};R.addEventListener("change",de);const $e=()=>{const se=fe=>Math.max(0,Math.min(255,Number(fe)||0));Object.assign(P,S(se(q.value),se(re.value),se(ie.value))),Ee()};q.addEventListener("change",$e),re.addEventListener("change",$e),ie.addEventListener("change",$e);const Oe=()=>{const se=c(P);H(f,se),J(f,se),ne(f,{restoreFocus:!0})};xe.addEventListener("click",Oe);const ve=se=>fe=>{fe.key==="Enter"&&(fe.preventDefault(),fe.stopPropagation(),se(),Oe())};R.addEventListener("keydown",ve(de)),q.addEventListener("keydown",ve($e)),re.addEventListener("keydown",ve($e)),ie.addEventListener("keydown",ve($e)),Y(f)}function ue(f){f.__open||f.__item.disabled===!0||f.__item.readOnly===!0||(f.__open=!0,f.__popover.hidden=!1,C(f.__item)||f.__item.mode==="picker"?ce(f,f.__value):V(f))}function ne(f,j={}){if(f.__open){for(f.__open=!1,f.__popover.hidden=!0,f.__popover.classList.remove("lat-form__color-popover--above");f.__popover.firstChild;)f.__popover.removeChild(f.__popover.firstChild);j.restoreFocus&&f.__input.focus()}}T("color",{kind:"field",domEvents:["customColorsChange"],build(f,j){const M=j.doc;u(M);const o=M.createElement("div");o.className="lat-form__color",o.__item=f,o.__t=j.t||$,o.__open=!1,o.__value=h(f.value),o.__customColors=oe(f);const E=M.createElement("div");E.className="lat-form__color-field",o.__field=E;const D=M.createElement("button");D.type="button",D.className="lat-form__color-swatch",D.setAttribute("aria-label",o.__t("form.color.open")),o.__swatchBtn=D;const P=M.createElement("input");P.type="text",P.className="lat-form__color-input",f.name&&(P.name=f.name),f.placeholder!=null&&(P.placeholder=String(f.placeholder)),f.label!=null&&f.label!==""&&P.setAttribute("aria-label",String(f.label)),P.setAttribute("autocomplete","off"),P.readOnly=!i(f),o.__input=P,E.appendChild(D),E.appendChild(P);let Z=null;if(r(f)){Z=M.createElement("button"),Z.type="button",Z.className="lat-form__color-clear",Z.setAttribute("aria-label",o.__t("form.color.clear"));const re=te(M,"close");re&&Z.appendChild(re),Z.addEventListener("click",()=>{H(o,null),P.focus()}),E.appendChild(Z)}o.__clearBtn=Z;const A=M.createElement("button");A.type="button",A.className="lat-form__color-toggle",A.setAttribute("aria-label",o.__t("form.color.open"));const _=G(f),s=_?te(M,_):te(M,"chevronDown");s&&A.appendChild(s),o.__toggleBtn=A,E.appendChild(A),o.appendChild(E);const w=M.createElement("div");w.className="lat-form__color-popover",w.hidden=!0,o.__popover=w,o.appendChild(w),K(o,o.__value);const m=()=>{o.__open?ne(o):ue(o)};D.addEventListener("click",m),A.addEventListener("click",m),P.addEventListener("input",()=>{U(o)}),P.addEventListener("change",re=>{re.stopPropagation(),l(o)}),P.addEventListener("keydown",re=>{re.key==="Enter"?(re.preventDefault(),l(o)):re.key==="Escape"&&o.__open?ne(o):re.altKey&&re.key==="ArrowDown"&&(re.preventDefault(),ue(o))}),o.addEventListener("keydown",re=>{re.target!==P&&(re.key==="Enter"&&!o.__open||re.altKey&&re.key==="ArrowDown"?(re.preventDefault(),ue(o)):re.key==="Escape"&&o.__open&&(re.preventDefault(),ne(o,{restoreFocus:!0})))});const R=re=>{!o.__open||o.contains(re.target)||ne(o)},q=re=>{o.__open&&(re.relatedTarget&&o.contains(re.relatedTarget)||ne(o))};return M.addEventListener("pointerdown",R),o.addEventListener("focusout",q),Array.isArray(j.disposers)&&j.disposers.push(()=>{M.removeEventListener("pointerdown",R),o.removeEventListener("focusout",q)}),o},read(f){const j=f.__input.value.trim();return j===""?null:d(j)||j},write(f,j){if(j==null||j===""){f.__value=null,K(f,null);return}const M=h(j);if(!M){n("form.color.setValue",`form.color: "${String(j)}" is not a colour (#rgb, #rrggbb or rgb(r, g, b)); the value is unchanged.`);return}f.__value=M,K(f,M)},state(f,j){const M=j.disabled===!0||j.readOnly===!0;f.__input.disabled=j.disabled===!0,f.__input.readOnly=j.readOnly===!0||!i(j),f.__swatchBtn.disabled=M,f.__toggleBtn.disabled=M,f.__clearBtn&&(f.__clearBtn.disabled=M),M&&ne(f)},validate(f,j,M){return M==null||typeof M=="string"&&/^#[0-9a-f]{6}$/.test(M)?!0:typeof j.errorMessage=="string"&&j.errorMessage!==""?j.errorMessage:f.__t("form.color.invalidHex")},focus(f){f.__input.focus()}})}),_e("packages/modules/form/controls/index.js",function(F,X){"use strict";const e=X("packages/modules/form/controls/input.js"),T=X("packages/modules/form/controls/number.js"),v=X("packages/modules/form/controls/textarea.js"),te=X("packages/modules/form/controls/checkbox.js"),u=X("packages/modules/form/controls/button.js"),L=X("packages/modules/form/controls/buttons.js"),O=X("packages/modules/form/controls/text.js"),k=X("packages/modules/form/controls/combo.js"),I=X("packages/modules/form/controls/select.js"),N=X("packages/modules/form/controls/radiogroup.js"),g=X("packages/modules/form/controls/checkboxgroup.js"),p=X("packages/modules/form/controls/toggle.js"),a=X("packages/modules/form/controls/datepicker.js"),$=X("packages/modules/form/controls/file.js"),y=X("packages/modules/form/controls/richtext.js"),n=X("packages/modules/form/controls/rating.js"),d=X("packages/modules/form/controls/stage.js"),h=X("packages/modules/form/controls/chips.js"),z=X("packages/modules/form/controls/otp.js"),W=X("packages/modules/form/controls/color.js")}),_e("packages/modules/form/create.js",function(F,X){"use strict";Object.defineProperty(F,"createForm",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(F,"default",{enumerable:!0,get:function(){return U}});const e=X("packages/modules/form/styles.js"),T=e.NS,v=e.injectStyles,te=X("packages/modules/form/model.js"),u=te.resolveConfig,L=te.DENSITIES,O=te.cssSize,k=X("packages/modules/form/view.js"),I=k.markValidation,N=k.mount,g=k.runValidation,p=k.validateItem,a=k.wizardBack,$=k.wizardGoTo,y=k.wizardNext,n=X("packages/modules/form/emitter.js"),d=n.Emitter,h=n.FORM_EVENTS,W=X("packages/modules/form/messages.js").createTranslator,S=X("packages/modules/form/bind.js"),c=S.resolveBind,x=S.applyBinding,i=X("packages/modules/form/rules.js").applyRules,C=X("packages/modules/form/state.js").syncRecordState,b=X("packages/modules/form/controls/index.js");function G(K){if(Array.isArray(K))return K.map(G);if(K==null||typeof K!="object"||typeof K.nodeType=="number"||Object.getPrototypeOf(K)!==Object.prototype)return K;const l=K.type==="buttons"&&Array.isArray(K.items),H={};for(const J of Object.keys(K))l&&J==="items"||(H[J]=G(K[J]));return l&&(H.buttons=K.items.map(G)),H}function oe(K,l={}){const H=K&&K.ownerDocument||typeof globalThis<"u"&&globalThis.document||null,J=c(l);let Y=l;if(J){if(Y={...l},Y.density===void 0){const M=J.density();M!=null&&(Y.density=M)}if(!(Array.isArray(Y.rows)&&Y.rows.length||Array.isArray(Y.cols)&&Y.cols.length)){const M=J.items();M.length&&(Y.rows=[{items:M}])}}const B=u(G(Y)),V={el:K||null,doc:H,model:B,config:B,items:new Map,order:[],emitter:new d,t:W(B.messages).t,uidSeq:0,disposers:[],dirty:new Set,conflicts:new Set,baseline:{},bound:null},ce=j=>(j.facade||(j.facade={el:j.el,item:j.item,name:j.item.name,getValue(){return j.value},setValue(M){return j.def.write(j.control,M),j.value=j.def.read(j.control),j.item.value=j.value,i(V),j.facade},show(){return j.hidden=!1,j.el.hidden=!1,j.facade},hide(){return j.hidden=!0,j.el.hidden=!0,j.facade},isVisible(){return!(j.hidden||j.ruleHidden)},disable(){return j.item.disabled=!0,C(j),j.facade},enable(){return j.item.disabled=!1,C(j),j.facade},focus(){return typeof j.def.focus=="function"?j.def.focus(j.control):typeof j.control.focus=="function"&&j.control.focus(),j.facade},blur(){return typeof j.def.blur=="function"?j.def.blur(j.control):typeof j.control.blur=="function"&&j.control.blur(),j.facade},validate(){return p(V,j)},setLoading(M){return typeof j.def.setLoading=="function"&&j.def.setLoading(j.control,M===!0),j.facade}}),j.facade);K&&H&&v(H);const ue=K&&typeof K.style.cssText=="string"?K.style.cssText:"",ne=new Set(["field","toggle","display"]),f={el:K||null,config:B,getItem(j){const M=V.items.get(String(j));return M?ce(M):void 0},getValue(){const j={};for(const M of V.order)M.item.name!=null&&ne.has(M.def.kind)&&(j[M.item.name]=M.value);return j},setValue(j){if(j==null||typeof j!="object")return f;for(const M of Object.keys(j)){const o=V.items.get(M);o&&ce(o).setValue(j[M])}return f},clear(){for(const j of V.order)if(j.item.name!=null)if(j.def.kind==="field"){const M=j.item.props&&j.item.props.multiple===!0,o=j.item.type==="chips"?M?[]:null:j.item.type==="number"||j.item.type==="radiogroup"||j.item.type==="datepicker"||j.item.type==="stage"||j.item.type==="combo"&&!M?null:j.item.type==="rating"?0:j.item.type==="file"||j.item.type==="checkboxgroup"||(j.item.type==="select"||j.item.type==="combo")&&M?[]:"";j.value=o,j.item.value=o,j.def.write(j.control,o)}else j.def.kind==="toggle"&&(j.value=!1,j.item.value=!1,j.def.write(j.control,!1));return i(V),f},validate(){const j=[];let M=!0;for(const o of V.order){if(o.item.name==null||o.def.kind!=="field"&&o.def.kind!=="toggle"||o.item.disabled===!0||o.ruleHidden===!0||o.hidden===!0||(typeof o.def.reset=="function"&&o.def.reset(o.control,o.item),o.item.required!==!0&&o.item.validation==null&&typeof o.def.validate!="function"&&o.ruleRequired!==!0))continue;const E=g(V,o);I(V,o,E),E&&(M=!1,j.push({name:o.item.name,rule:E.code,message:E.message}))}return V.emitter.emit("validated",{name:null,item:null,value:void 0,valid:M,failures:j}),M},forEach(j){for(const M of V.order)j(ce(M))},on(j,M){return j!=="*"&&!h.includes(j)?(console.warn(`lattice-form: "${j}" is not a form event and will never fire.`),()=>{}):V.emitter.on(j,M)},off(j,M){V.emitter.off(j,M)},setDensity(j){return L.includes(j)&&(B.density=j,K&&K.setAttribute("data-density",j)),f},setReadOnly(j){for(const M of V.order)M.item.readOnly=j===!0,C(M);return f},setDisabled(j){for(const M of V.order)M.item.disabled=j===!0,C(M);return f},setSpacing(j){const M=j==null?null:O(j);return B.spacing=M,K&&(M==null?K.style.removeProperty("--lattice-form-item-gap"):K.style.setProperty("--lattice-form-item-gap",M)),f},isDirty(j){return j==null?V.dirty.size>0:V.dirty.has(String(j))},isConflicted(j){return j==null?V.conflicts.size>0:V.conflicts.has(String(j))},save(){const j=V.bound;if(!j)return!1;if(V.dirty.size===0)return!0;const M={};for(const D of V.dirty){const P=f.getItem(D);P&&(M[D]=P.getValue())}const o=j.save(M),E=D=>{if(!D)return!1;for(const P of Object.keys(M))V.baseline[P]=M[P],V.dirty.delete(P),V.conflicts.delete(P);return!0};return o&&typeof o.then=="function"?o.then(E):E(o)},revert(){for(const j of V.dirty){if(!Object.hasOwn(V.baseline,j))continue;const M=V.items.get(j);M&&ce(M).setValue(V.baseline[j])}return V.dirty.clear(),V.conflicts.clear(),f},_bind(j){return x(V,f,j),f},_commit(j){for(const M of Object.keys(j||{}))V.baseline[M]=j[M],V.dirty.delete(M),V.conflicts.delete(M)},get steps(){return V.model.steps||[]},get activeStep(){return V.wizard?V.wizard.active:0},next(){return y(V)},back(){return a(V)},goToStep(j){return $(V,j)},__reapplyRules(){return i(V),f},destroy(){for(const M of V.disposers.splice(0))M();V.emitter.clear();const j=V.el;if(j){for(;j.firstChild;)j.removeChild(j.firstChild);j.classList.remove(T),j.removeAttribute("data-density"),j.style.cssText=ue,j.__latticeForm===f&&(j.__latticeForm=null)}V.items.clear(),V.order.length=0,V.dirty.clear(),V.conflicts.clear(),V.baseline={},V.bound=null}};return K&&(K.__latticeForm=f),V.form=f,K&&H&&N(V),J&&x(V,f,J),f}const U=oe}),_e("packages/modules/form/group.js",function(F,X){"use strict";Object.defineProperty(F,"GROUP_EVENTS",{enumerable:!0,get:function(){return N}}),Object.defineProperty(F,"createFormGroup",{enumerable:!0,get:function(){return n}}),Object.defineProperty(F,"default",{enumerable:!0,get:function(){return d}});const T=X("packages/modules/form/emitter.js").Emitter,te=X("packages/modules/form/bind-router.js").routerBinding,u=X("packages/modules/form/group-rules.js"),L=u.attachRuleResolver,O=u.detachRuleResolver,k=u.makeRuleResolver,I=u.reapplyMembers,N=Object.freeze(["change","validated"]),g=new Set;function p(h){const z={},W=h.getValue();for(const S of Object.keys(W))h.isDirty(S)===!0&&(z[S]=W[S]);return z}function a(h,z){g.has(h)||(g.add(h),console.warn("[lattice]",z))}const $=new WeakMap;function y(h,z){let W=$.get(h);if(!W){const S=h.destroy;W={original:S,watchers:new Set},$.set(h,W),h.destroy=function(){const x=$.get(h)||W;for(const t of[...x.watchers])t.detach(h);return S.call(h)}}W.watchers.add(z)}function n(h,z={}){const W=[],S=new Map,c=new Map,x=new T,t=z&&typeof z.bind=="object"&&z.bind.router!=null?z.bind:null,i=t?te(t):null,r=()=>{S.clear(),c.clear();for(const U of W){const K=Object.keys(U.form.getValue());for(const l of K)S.has(l)?a(`form.group.duplicate-field:${l}`,`form group: the field "${l}" is owned by more than one form; the first one added wins.`):S.set(l,U);U.id!=null&&!c.has(U.id)&&c.set(U.id,U)}},C=k({owners:S,byId:c,warnOnce:a}),b=U=>{const K=W.findIndex(J=>J.form===U);if(K===-1)return!1;const[l]=W.splice(K,1);for(const J of l.unsubs)J();r();const H=$.get(U);return H&&(H.watchers.delete(G),H.watchers.size===0&&($.delete(U),U.destroy=H.original)),O(U),typeof U.__reapplyRules=="function"&&U.__reapplyRules(),I(W),!0},G={detach:b},oe={get forms(){return W.map(U=>U.form)},add(U,K){if(!U||typeof U!="object"||typeof U.getValue!="function"||W.some(Y=>Y.form===U))return oe;const l={form:U,id:K&&K.id,unsubs:[],lastFailures:[]};W.push(l),i&&typeof U._bind=="function"&&U._bind(i);const H=Y=>{x.emit("change",{form:U,name:Y.name,value:Y.value}),I(W)},J=Y=>{l.lastFailures=Y.failures||[],x.emit("validated",{form:U,valid:Y.valid})};return l.unsubs.push(U.on("change",H)),l.unsubs.push(U.on("validated",J)),y(U,G),r(),L(U,C),I(W),oe},remove(U){return b(U),oe},getValue(){const U={};for(const K of W)Object.assign(U,K.form.getValue());return z.transform&&typeof z.transform.get=="function"?z.transform.get(U):U},setValue(U){if(z.transform&&typeof z.transform.set=="function")z.transform.set(U);else if(U!=null&&typeof U=="object")for(const K of Object.keys(U)){const l=S.get(K);l&&l.form.setValue({[K]:U[K]})}return I(W),oe},getItem(U){const K=S.get(String(U));return K?K.form.getItem(U):void 0},validate(){let U=!0;const K=[];for(const l of W){l.form.validate()===!1&&(U=!1);for(const J of l.lastFailures||[])K.push({form:l.form,name:J.name})}if(!U){const l=K.find(H=>H.name!=null);if(l){const H=l.form.getItem(l.name);H&&(H.focus(),H.el&&typeof H.el.scrollIntoView=="function"&&H.el.scrollIntoView({block:"nearest"}))}}return U},setReadOnly(U){for(const K of W)K.form.setReadOnly(U===!0);return oe},setDisabled(U){for(const K of W)K.form.setDisabled(U===!0);return oe},clear(){for(const U of W)U.form.clear();return oe},reset(){for(const U of W)typeof U.form.revert=="function"&&U.form.revert();return oe},save(){if(!i)return!1;const U=W.map(J=>({member:J,changes:p(J.form)})),K={};for(const J of U)Object.assign(K,J.changes);if(!Object.keys(K).length)return!0;const l=i.save(K),H=J=>{if(!J)return!1;for(const Y of U)Y.member.form&&typeof Y.member.form._commit=="function"&&Y.member.form._commit(Y.changes);return!0};return l&&typeof l.then=="function"?l.then(H):H(l)},isDirty(){return W.some(U=>U.form.isDirty()===!0)},on(U,K){return U!=="*"&&!N.includes(U)?(console.warn(`lattice-form: "${U}" is not a form group event and will never fire.`),()=>{}):x.on(U,K)},off(U,K){x.off(U,K)},destroy(){for(;W.length;){const U=W[W.length-1].form;b(U)}x.clear()}};if(Array.isArray(h))for(const U of h)oe.add(U);else h&&typeof h=="object"&&typeof h.getValue=="function"&&oe.add(h);return oe}const d=n}),_e("packages/modules/form/enhance.js",function(F,X){"use strict";Object.defineProperty(F,"itemForField",{enumerable:!0,get:function(){return k}}),Object.defineProperty(F,"configForForm",{enumerable:!0,get:function(){return I}}),Object.defineProperty(F,"enhanceForm",{enumerable:!0,get:function(){return N}}),Object.defineProperty(F,"default",{enumerable:!0,get:function(){return g}});const T=X("packages/modules/form/create.js").createForm,v=Object.freeze(["text","email","password","url"]);function te(p){const a=p&&p.type?String(p.type).toLowerCase():"";return a==="submit"||a==="image"||p&&p.tagName==="BUTTON"&&a!=="button"}function u(p){if(!p||!p.name)return!1;const a=p&&p.type?String(p.type).toLowerCase():"";return!(a==="submit"||a==="button"||a==="reset"||a==="image"||a==="hidden"||a==="file"||p.tagName==="BUTTON")}function L(p,a){if(typeof p.getAttribute=="function"){const $=p.getAttribute("data-label");if($!=null&&$!=="")return $;const y=p.getAttribute("aria-label");if(y!=null&&y!=="")return y}if(p.id&&typeof a.querySelector=="function"){const $=a.querySelector(`label[for="${p.id}"]`);if($&&$.textContent!=null){const y=String($.textContent).trim();if(y)return y}}return String(p.name||"")}function O(p){return p.type==="checkbox"?p.checked===!0:p.value==null?"":p.value}function k(p,a){if(te(p)||!u(p))return null;const $=p.type?String(p.type).toLowerCase():"text",y={type:"input",name:p.name,label:L(p,a),value:O(p)};if($==="number")y.type="number",p.min!=null&&p.min!==""&&(y.min=Number(p.min)),p.max!=null&&p.max!==""&&(y.max=Number(p.max)),p.step!=null&&p.step!==""&&(y.step=Number(p.step));else if($==="checkbox")y.type="checkbox";else if(p.tagName==="TEXTAREA")y.type="textarea";else if(v.includes($))y.subtype=$,($==="email"||$==="url")&&(y.validation=$);else return null;if(p.placeholder!=null&&p.placeholder!==""&&(y.placeholder=p.placeholder),p.required===!0&&(y.required=!0),p.disabled===!0&&(y.disabled=!0),p.readOnly===!0&&(y.readOnly=!0),typeof p.getAttribute=="function"){const n=p.getAttribute("data-validation")||p.getAttribute("data-rule");n&&(y.validation=n);const d=p.getAttribute("data-error-message");d&&(y.errorMessage=d);const h=p.getAttribute("data-help");h&&(y.helpMessage=h)}return y}function I(p,a){const $=p&&p.ownerDocument||(typeof document<"u"?document:null),y=[],n=p&&p.elements?p.elements:[];for(const d of n){const h=k(d,$);h&&y.push(h)}return{...a||{},rows:y}}function N(p,a){if(!p)return null;if(p.__latticeForm)return p.__latticeForm;const $=p.ownerDocument||(typeof document<"u"?document:null),y=[],n=p.elements?p.elements:[];for(const h of n)te(h)&&y.push(h);const d=T(p,I(p,a));p.__latticeForm=d;for(const h of y)h.parentNode!==p&&p.appendChild(h);return typeof p.addEventListener=="function"&&$&&p.addEventListener("submit",h=>{d.validate()||(h.preventDefault(),h.stopImmediatePropagation())},!0),d}const g=N}),_e("packages/modules/form/index.js",function(F,X){"use strict";Object.defineProperty(F,"registerControl",{enumerable:!0,get:function(){return N}}),Object.defineProperty(F,"createForm",{enumerable:!0,get:function(){return L}}),Object.defineProperty(F,"default",{enumerable:!0,get:function(){return g}});const T=X("packages/modules/form/styles.js").NS,te=X("packages/modules/form/controls/registry.js").registerControl,L=X("packages/modules/form/create.js").createForm,O=X("packages/modules/form/controls/combo.js");Object.defineProperty(F,"createCombo",{enumerable:!0,get:function(){return O.createCombo}});const k=X("packages/modules/form/group.js");Object.defineProperty(F,"createFormGroup",{enumerable:!0,get:function(){return k.createFormGroup}});const I=X("packages/modules/form/enhance.js");Object.defineProperty(F,"enhanceForm",{enumerable:!0,get:function(){return I.enhanceForm}});function N(p,a){if(a===null||typeof a!="object"||typeof a.create!="function"){console.warn("lattice-form: registerControl needs a definition with a create(el, item, api) function.");return}const $=typeof a.getValue=="function"?a.getValue:()=>null,y=typeof a.setValue=="function"?a.setValue:()=>{};te(String(p),{kind:"field",custom:!0,validate:typeof a.validate=="function"?(n,d,h)=>a.validate(h,d,n):void 0,destroy:typeof a.destroy=="function"?n=>a.destroy(n):void 0,build(n,d){const h=d.doc.createElement("div");h.className=`${T}__custom`;const z={name:n.name,item:n,getValue(){return z._read?z._read():void 0},setValue(W){z._write&&z._write(W)},onChange(W){z._commit&&z._commit(W===void 0?$():W)},onInput(W){z._input&&z._input(W===void 0?$():W)}};return h.__latticeFormApi=z,a.create(h,n,z),y(h,n.value),h},read(n){return $(n)},write(n,d){y(n,d)},state(n,d){n.setAttribute("data-disabled",d.disabled===!0?"true":"false"),n.setAttribute("data-readonly",d.readOnly===!0?"true":"false")}})}const g=L});var ht=Et("packages/modules/form/index.js");typeof module=="object"&&module.exports?module.exports=ht:typeof define=="function"&&define.amd?define(function(){return ht}):Dt.LatticeGridForm=ht})(typeof globalThis<"u"?globalThis:this);
1295
1396
 
1296
1397
  //# sourceMappingURL=form.min.js.map