@corensystem/coren-ui 1.0.0-next.20260924.75108.887a9c2

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 (1671) hide show
  1. package/bin/intent.js +20 -0
  2. package/dist/accordion.d.mts +11 -0
  3. package/dist/accordion.d.mts.map +1 -0
  4. package/dist/accordion.mjs +42 -0
  5. package/dist/accordion.mjs.map +1 -0
  6. package/dist/activity-log.d.mts +29 -0
  7. package/dist/activity-log.d.mts.map +1 -0
  8. package/dist/activity-log.mjs +60 -0
  9. package/dist/activity-log.mjs.map +1 -0
  10. package/dist/activity-sheet.d.mts +18 -0
  11. package/dist/activity-sheet.d.mts.map +1 -0
  12. package/dist/activity-sheet.mjs +167 -0
  13. package/dist/activity-sheet.mjs.map +1 -0
  14. package/dist/add-clinic-location-dialog.d.mts +21 -0
  15. package/dist/add-clinic-location-dialog.d.mts.map +1 -0
  16. package/dist/add-clinic-location-dialog.mjs +96 -0
  17. package/dist/add-clinic-location-dialog.mjs.map +1 -0
  18. package/dist/add-clinic-visit-dialog.d.mts +51 -0
  19. package/dist/add-clinic-visit-dialog.d.mts.map +1 -0
  20. package/dist/add-clinic-visit-dialog.mjs +307 -0
  21. package/dist/add-clinic-visit-dialog.mjs.map +1 -0
  22. package/dist/add-observation-dialog.d.mts +36 -0
  23. package/dist/add-observation-dialog.d.mts.map +1 -0
  24. package/dist/add-observation-dialog.mjs +269 -0
  25. package/dist/add-observation-dialog.mjs.map +1 -0
  26. package/dist/alert-dialog.d.mts +24 -0
  27. package/dist/alert-dialog.d.mts.map +1 -0
  28. package/dist/alert-dialog.mjs +62 -0
  29. package/dist/alert-dialog.mjs.map +1 -0
  30. package/dist/alert.d.mts +12 -0
  31. package/dist/alert.d.mts.map +1 -0
  32. package/dist/alert.mjs +36 -0
  33. package/dist/alert.mjs.map +1 -0
  34. package/dist/app-card.d.mts +21 -0
  35. package/dist/app-card.d.mts.map +1 -0
  36. package/dist/app-card.mjs +49 -0
  37. package/dist/app-card.mjs.map +1 -0
  38. package/dist/app-shell.d.mts +39 -0
  39. package/dist/app-shell.d.mts.map +1 -0
  40. package/dist/app-shell.mjs +79 -0
  41. package/dist/app-shell.mjs.map +1 -0
  42. package/dist/aspect-ratio.d.mts +8 -0
  43. package/dist/aspect-ratio.d.mts.map +1 -0
  44. package/dist/aspect-ratio.mjs +14 -0
  45. package/dist/aspect-ratio.mjs.map +1 -0
  46. package/dist/asset-list-item.d.mts +36 -0
  47. package/dist/asset-list-item.d.mts.map +1 -0
  48. package/dist/asset-list-item.mjs +51 -0
  49. package/dist/asset-list-item.mjs.map +1 -0
  50. package/dist/assign-doctor-dialog.d.mts +28 -0
  51. package/dist/assign-doctor-dialog.d.mts.map +1 -0
  52. package/dist/assign-doctor-dialog.mjs +194 -0
  53. package/dist/assign-doctor-dialog.mjs.map +1 -0
  54. package/dist/attention-list.d.mts +29 -0
  55. package/dist/attention-list.d.mts.map +1 -0
  56. package/dist/attention-list.mjs +82 -0
  57. package/dist/attention-list.mjs.map +1 -0
  58. package/dist/avatar-status-dot.d.mts +22 -0
  59. package/dist/avatar-status-dot.d.mts.map +1 -0
  60. package/dist/avatar-status-dot.mjs +72 -0
  61. package/dist/avatar-status-dot.mjs.map +1 -0
  62. package/dist/avatar.d.mts +34 -0
  63. package/dist/avatar.d.mts.map +1 -0
  64. package/dist/avatar.mjs +103 -0
  65. package/dist/avatar.mjs.map +1 -0
  66. package/dist/badge.d.mts +18 -0
  67. package/dist/badge.d.mts.map +1 -0
  68. package/dist/badge.mjs +39 -0
  69. package/dist/badge.mjs.map +1 -0
  70. package/dist/banner.d.mts +18 -0
  71. package/dist/banner.d.mts.map +1 -0
  72. package/dist/banner.mjs +74 -0
  73. package/dist/banner.mjs.map +1 -0
  74. package/dist/blockquote.d.mts +13 -0
  75. package/dist/blockquote.d.mts.map +1 -0
  76. package/dist/blockquote.mjs +22 -0
  77. package/dist/blockquote.mjs.map +1 -0
  78. package/dist/blueprint-segment.d.mts +33 -0
  79. package/dist/blueprint-segment.d.mts.map +1 -0
  80. package/dist/blueprint-segment.mjs +59 -0
  81. package/dist/blueprint-segment.mjs.map +1 -0
  82. package/dist/bottom-sheet-switcher.d.mts +32 -0
  83. package/dist/bottom-sheet-switcher.d.mts.map +1 -0
  84. package/dist/bottom-sheet-switcher.mjs +40 -0
  85. package/dist/bottom-sheet-switcher.mjs.map +1 -0
  86. package/dist/bottom-sheet.d.mts +23 -0
  87. package/dist/bottom-sheet.d.mts.map +1 -0
  88. package/dist/bottom-sheet.mjs +91 -0
  89. package/dist/bottom-sheet.mjs.map +1 -0
  90. package/dist/breadcrumb.d.mts +39 -0
  91. package/dist/breadcrumb.d.mts.map +1 -0
  92. package/dist/breadcrumb.mjs +95 -0
  93. package/dist/breadcrumb.mjs.map +1 -0
  94. package/dist/breadcrumbs.d.mts +2 -0
  95. package/dist/breadcrumbs.mjs +2 -0
  96. package/dist/browser-tabs.d.mts +40 -0
  97. package/dist/browser-tabs.d.mts.map +1 -0
  98. package/dist/browser-tabs.mjs +127 -0
  99. package/dist/browser-tabs.mjs.map +1 -0
  100. package/dist/building-model-placeholder.d.mts +46 -0
  101. package/dist/building-model-placeholder.d.mts.map +1 -0
  102. package/dist/building-model-placeholder.mjs +175 -0
  103. package/dist/building-model-placeholder.mjs.map +1 -0
  104. package/dist/building-progress.d.mts +32 -0
  105. package/dist/building-progress.d.mts.map +1 -0
  106. package/dist/building-progress.mjs +74 -0
  107. package/dist/building-progress.mjs.map +1 -0
  108. package/dist/building-viewer.d.mts +91 -0
  109. package/dist/building-viewer.d.mts.map +1 -0
  110. package/dist/building-viewer.mjs +567 -0
  111. package/dist/building-viewer.mjs.map +1 -0
  112. package/dist/button-group.d.mts +8 -0
  113. package/dist/button-group.d.mts.map +1 -0
  114. package/dist/button-group.mjs +21 -0
  115. package/dist/button-group.mjs.map +1 -0
  116. package/dist/button.d.mts +21 -0
  117. package/dist/button.d.mts.map +1 -0
  118. package/dist/button.mjs +79 -0
  119. package/dist/button.mjs.map +1 -0
  120. package/dist/calendar-view.d.mts +47 -0
  121. package/dist/calendar-view.d.mts.map +1 -0
  122. package/dist/calendar-view.mjs +165 -0
  123. package/dist/calendar-view.mjs.map +1 -0
  124. package/dist/calendar.d.mts +15 -0
  125. package/dist/calendar.d.mts.map +1 -0
  126. package/dist/calendar.mjs +94 -0
  127. package/dist/calendar.mjs.map +1 -0
  128. package/dist/camera-detail-panel.d.mts +44 -0
  129. package/dist/camera-detail-panel.d.mts.map +1 -0
  130. package/dist/camera-detail-panel.mjs +105 -0
  131. package/dist/camera-detail-panel.mjs.map +1 -0
  132. package/dist/canvas-file-picker.d.mts +28 -0
  133. package/dist/canvas-file-picker.d.mts.map +1 -0
  134. package/dist/canvas-file-picker.mjs +90 -0
  135. package/dist/canvas-file-picker.mjs.map +1 -0
  136. package/dist/canvas-header.d.mts +28 -0
  137. package/dist/canvas-header.d.mts.map +1 -0
  138. package/dist/canvas-header.mjs +42 -0
  139. package/dist/canvas-header.mjs.map +1 -0
  140. package/dist/canvas-navigator.d.mts +87 -0
  141. package/dist/canvas-navigator.d.mts.map +1 -0
  142. package/dist/canvas-navigator.mjs +426 -0
  143. package/dist/canvas-navigator.mjs.map +1 -0
  144. package/dist/canvas-toolbar.d.mts +37 -0
  145. package/dist/canvas-toolbar.d.mts.map +1 -0
  146. package/dist/canvas-toolbar.mjs +65 -0
  147. package/dist/canvas-toolbar.mjs.map +1 -0
  148. package/dist/capture-route-minimap.d.mts +40 -0
  149. package/dist/capture-route-minimap.d.mts.map +1 -0
  150. package/dist/capture-route-minimap.mjs +438 -0
  151. package/dist/capture-route-minimap.mjs.map +1 -0
  152. package/dist/card.d.mts +17 -0
  153. package/dist/card.d.mts.map +1 -0
  154. package/dist/card.mjs +63 -0
  155. package/dist/card.mjs.map +1 -0
  156. package/dist/carousel.d.mts +23 -0
  157. package/dist/carousel.d.mts.map +1 -0
  158. package/dist/carousel.mjs +141 -0
  159. package/dist/carousel.mjs.map +1 -0
  160. package/dist/catalogue-view-toggle.d.mts +53 -0
  161. package/dist/catalogue-view-toggle.d.mts.map +1 -0
  162. package/dist/catalogue-view-toggle.mjs +54 -0
  163. package/dist/catalogue-view-toggle.mjs.map +1 -0
  164. package/dist/chart.d.mts +91 -0
  165. package/dist/chart.d.mts.map +1 -0
  166. package/dist/chart.mjs +254 -0
  167. package/dist/chart.mjs.map +1 -0
  168. package/dist/chat/core-ai-chat-header.d.mts +95 -0
  169. package/dist/chat/core-ai-chat-header.d.mts.map +1 -0
  170. package/dist/chat/core-ai-chat-header.mjs +237 -0
  171. package/dist/chat/core-ai-chat-header.mjs.map +1 -0
  172. package/dist/chat/core-ai-chat-message.d.mts +18 -0
  173. package/dist/chat/core-ai-chat-message.d.mts.map +1 -0
  174. package/dist/chat/core-ai-chat-message.mjs +82 -0
  175. package/dist/chat/core-ai-chat-message.mjs.map +1 -0
  176. package/dist/chat/core-ai-chat.d.mts +116 -0
  177. package/dist/chat/core-ai-chat.d.mts.map +1 -0
  178. package/dist/chat/core-ai-chat.mjs +325 -0
  179. package/dist/chat/core-ai-chat.mjs.map +1 -0
  180. package/dist/chat/core-chart-renderer.d.mts +10 -0
  181. package/dist/chat/core-chart-renderer.d.mts.map +1 -0
  182. package/dist/chat/core-chart-renderer.mjs +177 -0
  183. package/dist/chat/core-chart-renderer.mjs.map +1 -0
  184. package/dist/chat/core-chat-input.d.mts +9 -0
  185. package/dist/chat/core-chat-input.d.mts.map +1 -0
  186. package/dist/chat/core-chat-input.mjs +66 -0
  187. package/dist/chat/core-chat-input.mjs.map +1 -0
  188. package/dist/chat/core-chat-message.d.mts +11 -0
  189. package/dist/chat/core-chat-message.d.mts.map +1 -0
  190. package/dist/chat/core-chat-message.mjs +101 -0
  191. package/dist/chat/core-chat-message.mjs.map +1 -0
  192. package/dist/chat/core-chat-panel.d.mts +16 -0
  193. package/dist/chat/core-chat-panel.d.mts.map +1 -0
  194. package/dist/chat/core-chat-panel.mjs +139 -0
  195. package/dist/chat/core-chat-panel.mjs.map +1 -0
  196. package/dist/chat/core-chat-widget.d.mts +12 -0
  197. package/dist/chat/core-chat-widget.d.mts.map +1 -0
  198. package/dist/chat/core-chat-widget.mjs +116 -0
  199. package/dist/chat/core-chat-widget.mjs.map +1 -0
  200. package/dist/chat-layout.d.mts +38 -0
  201. package/dist/chat-layout.d.mts.map +1 -0
  202. package/dist/chat-layout.mjs +94 -0
  203. package/dist/chat-layout.mjs.map +1 -0
  204. package/dist/chat-message.d.mts +40 -0
  205. package/dist/chat-message.d.mts.map +1 -0
  206. package/dist/chat-message.mjs +84 -0
  207. package/dist/chat-message.mjs.map +1 -0
  208. package/dist/checkbox.d.mts +8 -0
  209. package/dist/checkbox.d.mts.map +1 -0
  210. package/dist/checkbox.mjs +22 -0
  211. package/dist/checkbox.mjs.map +1 -0
  212. package/dist/chip.d.mts +54 -0
  213. package/dist/chip.d.mts.map +1 -0
  214. package/dist/chip.mjs +142 -0
  215. package/dist/chip.mjs.map +1 -0
  216. package/dist/citation.d.mts +22 -0
  217. package/dist/citation.d.mts.map +1 -0
  218. package/dist/citation.mjs +70 -0
  219. package/dist/citation.mjs.map +1 -0
  220. package/dist/clickable-card.d.mts +28 -0
  221. package/dist/clickable-card.d.mts.map +1 -0
  222. package/dist/clickable-card.mjs +87 -0
  223. package/dist/clickable-card.mjs.map +1 -0
  224. package/dist/code.d.mts +21 -0
  225. package/dist/code.d.mts.map +1 -0
  226. package/dist/code.mjs +48 -0
  227. package/dist/code.mjs.map +1 -0
  228. package/dist/collapsible.d.mts +10 -0
  229. package/dist/collapsible.d.mts.map +1 -0
  230. package/dist/collapsible.mjs +16 -0
  231. package/dist/collapsible.mjs.map +1 -0
  232. package/dist/combobox.d.mts +116 -0
  233. package/dist/combobox.d.mts.map +1 -0
  234. package/dist/combobox.mjs +149 -0
  235. package/dist/combobox.mjs.map +1 -0
  236. package/dist/command-palette.d.mts +43 -0
  237. package/dist/command-palette.d.mts.map +1 -0
  238. package/dist/command-palette.mjs +70 -0
  239. package/dist/command-palette.mjs.map +1 -0
  240. package/dist/command.d.mts +91 -0
  241. package/dist/command.d.mts.map +1 -0
  242. package/dist/command.mjs +82 -0
  243. package/dist/command.mjs.map +1 -0
  244. package/dist/comment-composer.d.mts +29 -0
  245. package/dist/comment-composer.d.mts.map +1 -0
  246. package/dist/comment-composer.mjs +253 -0
  247. package/dist/comment-composer.mjs.map +1 -0
  248. package/dist/comment-thread.d.mts +66 -0
  249. package/dist/comment-thread.d.mts.map +1 -0
  250. package/dist/comment-thread.mjs +180 -0
  251. package/dist/comment-thread.mjs.map +1 -0
  252. package/dist/compare-bars.d.mts +29 -0
  253. package/dist/compare-bars.d.mts.map +1 -0
  254. package/dist/compare-bars.mjs +118 -0
  255. package/dist/compare-bars.mjs.map +1 -0
  256. package/dist/compare-view.d.mts +75 -0
  257. package/dist/compare-view.d.mts.map +1 -0
  258. package/dist/compare-view.mjs +383 -0
  259. package/dist/compare-view.mjs.map +1 -0
  260. package/dist/confirm-dialog.d.mts +37 -0
  261. package/dist/confirm-dialog.d.mts.map +1 -0
  262. package/dist/confirm-dialog.mjs +40 -0
  263. package/dist/confirm-dialog.mjs.map +1 -0
  264. package/dist/context-menu.d.mts +31 -0
  265. package/dist/context-menu.d.mts.map +1 -0
  266. package/dist/context-menu.mjs +84 -0
  267. package/dist/context-menu.mjs.map +1 -0
  268. package/dist/context-toolbar.d.mts +22 -0
  269. package/dist/context-toolbar.d.mts.map +1 -0
  270. package/dist/context-toolbar.mjs +81 -0
  271. package/dist/context-toolbar.mjs.map +1 -0
  272. package/dist/copy-button.d.mts +15 -0
  273. package/dist/copy-button.d.mts.map +1 -0
  274. package/dist/copy-button.mjs +33 -0
  275. package/dist/copy-button.mjs.map +1 -0
  276. package/dist/core-mark.d.mts +25 -0
  277. package/dist/core-mark.d.mts.map +1 -0
  278. package/dist/core-mark.mjs +74 -0
  279. package/dist/core-mark.mjs.map +1 -0
  280. package/dist/data/mock-data.d.mts +9 -0
  281. package/dist/data/mock-data.d.mts.map +1 -0
  282. package/dist/data/mock-data.mjs +159 -0
  283. package/dist/data/mock-data.mjs.map +1 -0
  284. package/dist/data/rnglf-zones.d.mts +17 -0
  285. package/dist/data/rnglf-zones.d.mts.map +1 -0
  286. package/dist/data/rnglf-zones.mjs +1400 -0
  287. package/dist/data/rnglf-zones.mjs.map +1 -0
  288. package/dist/data-table.d.mts +202 -0
  289. package/dist/data-table.d.mts.map +1 -0
  290. package/dist/data-table.mjs +520 -0
  291. package/dist/data-table.mjs.map +1 -0
  292. package/dist/date-picker.d.mts +111 -0
  293. package/dist/date-picker.d.mts.map +1 -0
  294. package/dist/date-picker.mjs +546 -0
  295. package/dist/date-picker.mjs.map +1 -0
  296. package/dist/date-range-input.d.mts +26 -0
  297. package/dist/date-range-input.d.mts.map +1 -0
  298. package/dist/date-range-input.mjs +60 -0
  299. package/dist/date-range-input.mjs.map +1 -0
  300. package/dist/date-time-input.d.mts +27 -0
  301. package/dist/date-time-input.d.mts.map +1 -0
  302. package/dist/date-time-input.mjs +110 -0
  303. package/dist/date-time-input.mjs.map +1 -0
  304. package/dist/detail-panel-shell.d.mts +37 -0
  305. package/dist/detail-panel-shell.d.mts.map +1 -0
  306. package/dist/detail-panel-shell.mjs +86 -0
  307. package/dist/detail-panel-shell.mjs.map +1 -0
  308. package/dist/dialog.d.mts +105 -0
  309. package/dist/dialog.d.mts.map +1 -0
  310. package/dist/dialog.mjs +137 -0
  311. package/dist/dialog.mjs.map +1 -0
  312. package/dist/divider.d.mts +8 -0
  313. package/dist/divider.d.mts.map +1 -0
  314. package/dist/divider.mjs +18 -0
  315. package/dist/divider.mjs.map +1 -0
  316. package/dist/drawer.d.mts +26 -0
  317. package/dist/drawer.d.mts.map +1 -0
  318. package/dist/drawer.mjs +53 -0
  319. package/dist/drawer.mjs.map +1 -0
  320. package/dist/drawing-actions.d.mts +29 -0
  321. package/dist/drawing-actions.d.mts.map +1 -0
  322. package/dist/drawing-actions.mjs +124 -0
  323. package/dist/drawing-actions.mjs.map +1 -0
  324. package/dist/dropdown-menu.d.mts +31 -0
  325. package/dist/dropdown-menu.d.mts.map +1 -0
  326. package/dist/dropdown-menu.mjs +84 -0
  327. package/dist/dropdown-menu.mjs.map +1 -0
  328. package/dist/empty.d.mts +34 -0
  329. package/dist/empty.d.mts.map +1 -0
  330. package/dist/empty.mjs +119 -0
  331. package/dist/empty.mjs.map +1 -0
  332. package/dist/error-page.d.mts +20 -0
  333. package/dist/error-page.d.mts.map +1 -0
  334. package/dist/error-page.mjs +96 -0
  335. package/dist/error-page.mjs.map +1 -0
  336. package/dist/export-dialog.d.mts +58 -0
  337. package/dist/export-dialog.d.mts.map +1 -0
  338. package/dist/export-dialog.mjs +248 -0
  339. package/dist/export-dialog.mjs.map +1 -0
  340. package/dist/field.d.mts +11 -0
  341. package/dist/field.d.mts.map +1 -0
  342. package/dist/field.mjs +34 -0
  343. package/dist/field.mjs.map +1 -0
  344. package/dist/file-input.d.mts +17 -0
  345. package/dist/file-input.d.mts.map +1 -0
  346. package/dist/file-input.mjs +114 -0
  347. package/dist/file-input.mjs.map +1 -0
  348. package/dist/file-system/context.d.mts +28 -0
  349. package/dist/file-system/context.d.mts.map +1 -0
  350. package/dist/file-system/context.mjs +42 -0
  351. package/dist/file-system/context.mjs.map +1 -0
  352. package/dist/file-system/file-system-details.d.mts +12 -0
  353. package/dist/file-system/file-system-details.d.mts.map +1 -0
  354. package/dist/file-system/file-system-details.mjs +166 -0
  355. package/dist/file-system/file-system-details.mjs.map +1 -0
  356. package/dist/file-system/file-system-filters.d.mts +16 -0
  357. package/dist/file-system/file-system-filters.d.mts.map +1 -0
  358. package/dist/file-system/file-system-filters.mjs +205 -0
  359. package/dist/file-system/file-system-filters.mjs.map +1 -0
  360. package/dist/file-system/file-system-new.d.mts +16 -0
  361. package/dist/file-system/file-system-new.d.mts.map +1 -0
  362. package/dist/file-system/file-system-new.mjs +204 -0
  363. package/dist/file-system/file-system-new.mjs.map +1 -0
  364. package/dist/file-system/file-system-path.d.mts +7 -0
  365. package/dist/file-system/file-system-path.d.mts.map +1 -0
  366. package/dist/file-system/file-system-path.mjs +22 -0
  367. package/dist/file-system/file-system-path.mjs.map +1 -0
  368. package/dist/file-system/file-system-project.d.mts +16 -0
  369. package/dist/file-system/file-system-project.d.mts.map +1 -0
  370. package/dist/file-system/file-system-project.mjs +253 -0
  371. package/dist/file-system/file-system-project.mjs.map +1 -0
  372. package/dist/file-system/file-system-table.d.mts +17 -0
  373. package/dist/file-system/file-system-table.d.mts.map +1 -0
  374. package/dist/file-system/file-system-table.mjs +95 -0
  375. package/dist/file-system/file-system-table.mjs.map +1 -0
  376. package/dist/file-system/file-system.d.mts +35 -0
  377. package/dist/file-system/file-system.d.mts.map +1 -0
  378. package/dist/file-system/file-system.mjs +179 -0
  379. package/dist/file-system/file-system.mjs.map +1 -0
  380. package/dist/file-system/index.d.mts +9 -0
  381. package/dist/file-system/index.mjs +9 -0
  382. package/dist/file-system/model.d.mts +156 -0
  383. package/dist/file-system/model.d.mts.map +1 -0
  384. package/dist/file-system/model.mjs +200 -0
  385. package/dist/file-system/model.mjs.map +1 -0
  386. package/dist/filter.d.mts +92 -0
  387. package/dist/filter.d.mts.map +1 -0
  388. package/dist/filter.mjs +267 -0
  389. package/dist/filter.mjs.map +1 -0
  390. package/dist/float-shadow.d.mts +10 -0
  391. package/dist/float-shadow.d.mts.map +1 -0
  392. package/dist/float-shadow.mjs +11 -0
  393. package/dist/float-shadow.mjs.map +1 -0
  394. package/dist/floating-assistant.d.mts +75 -0
  395. package/dist/floating-assistant.d.mts.map +1 -0
  396. package/dist/floating-assistant.mjs +114 -0
  397. package/dist/floating-assistant.mjs.map +1 -0
  398. package/dist/floor-progress-bar.d.mts +17 -0
  399. package/dist/floor-progress-bar.d.mts.map +1 -0
  400. package/dist/floor-progress-bar.mjs +38 -0
  401. package/dist/floor-progress-bar.mjs.map +1 -0
  402. package/dist/fonts/LICENSE.md +41 -0
  403. package/dist/fonts/figtree-italic-300-900-latin-ext.woff2 +0 -0
  404. package/dist/fonts/figtree-italic-300-900-latin.woff2 +0 -0
  405. package/dist/fonts/figtree-normal-300-900-latin-ext.woff2 +0 -0
  406. package/dist/fonts/figtree-normal-300-900-latin.woff2 +0 -0
  407. package/dist/fonts/ibm-plex-mono-italic-400-latin-ext.woff2 +0 -0
  408. package/dist/fonts/ibm-plex-mono-italic-400-latin.woff2 +0 -0
  409. package/dist/fonts/ibm-plex-mono-normal-400-latin-ext.woff2 +0 -0
  410. package/dist/fonts/ibm-plex-mono-normal-400-latin.woff2 +0 -0
  411. package/dist/fonts/ibm-plex-mono-normal-500-latin-ext.woff2 +0 -0
  412. package/dist/fonts/ibm-plex-mono-normal-500-latin.woff2 +0 -0
  413. package/dist/fonts/ibm-plex-mono-normal-600-latin-ext.woff2 +0 -0
  414. package/dist/fonts/ibm-plex-mono-normal-600-latin.woff2 +0 -0
  415. package/dist/fonts/lora-italic-400-700-latin-ext.woff2 +0 -0
  416. package/dist/fonts/lora-italic-400-700-latin.woff2 +0 -0
  417. package/dist/fonts/lora-normal-400-700-latin-ext.woff2 +0 -0
  418. package/dist/fonts/lora-normal-400-700-latin.woff2 +0 -0
  419. package/dist/footprint-viewer.d.mts +88 -0
  420. package/dist/footprint-viewer.d.mts.map +1 -0
  421. package/dist/footprint-viewer.mjs +657 -0
  422. package/dist/footprint-viewer.mjs.map +1 -0
  423. package/dist/form-action-bar.d.mts +32 -0
  424. package/dist/form-action-bar.d.mts.map +1 -0
  425. package/dist/form-action-bar.mjs +42 -0
  426. package/dist/form-action-bar.mjs.map +1 -0
  427. package/dist/form-dialog.d.mts +116 -0
  428. package/dist/form-dialog.d.mts.map +1 -0
  429. package/dist/form-dialog.mjs +149 -0
  430. package/dist/form-dialog.mjs.map +1 -0
  431. package/dist/form-layout.d.mts +33 -0
  432. package/dist/form-layout.d.mts.map +1 -0
  433. package/dist/form-layout.mjs +90 -0
  434. package/dist/form-layout.mjs.map +1 -0
  435. package/dist/form.d.mts +29 -0
  436. package/dist/form.d.mts.map +1 -0
  437. package/dist/form.mjs +93 -0
  438. package/dist/form.mjs.map +1 -0
  439. package/dist/fragment-viewer/cinematic.d.mts +76 -0
  440. package/dist/fragment-viewer/cinematic.d.mts.map +1 -0
  441. package/dist/fragment-viewer/cinematic.mjs +382 -0
  442. package/dist/fragment-viewer/cinematic.mjs.map +1 -0
  443. package/dist/fragment-viewer/context.d.mts +106 -0
  444. package/dist/fragment-viewer/context.d.mts.map +1 -0
  445. package/dist/fragment-viewer/context.mjs +168 -0
  446. package/dist/fragment-viewer/context.mjs.map +1 -0
  447. package/dist/fragment-viewer/runtime.d.mts +288 -0
  448. package/dist/fragment-viewer/runtime.d.mts.map +1 -0
  449. package/dist/fragment-viewer/runtime.mjs +782 -0
  450. package/dist/fragment-viewer/runtime.mjs.map +1 -0
  451. package/dist/fragment-viewer.d.mts +62 -0
  452. package/dist/fragment-viewer.d.mts.map +1 -0
  453. package/dist/fragment-viewer.mjs +144 -0
  454. package/dist/fragment-viewer.mjs.map +1 -0
  455. package/dist/gantt.d.mts +72 -0
  456. package/dist/gantt.d.mts.map +1 -0
  457. package/dist/gantt.mjs +281 -0
  458. package/dist/gantt.mjs.map +1 -0
  459. package/dist/graph-canvas.d.mts +60 -0
  460. package/dist/graph-canvas.d.mts.map +1 -0
  461. package/dist/graph-canvas.mjs +105 -0
  462. package/dist/graph-canvas.mjs.map +1 -0
  463. package/dist/grid.d.mts +16 -0
  464. package/dist/grid.d.mts.map +1 -0
  465. package/dist/grid.mjs +47 -0
  466. package/dist/grid.mjs.map +1 -0
  467. package/dist/heading.d.mts +16 -0
  468. package/dist/heading.d.mts.map +1 -0
  469. package/dist/heading.mjs +43 -0
  470. package/dist/heading.mjs.map +1 -0
  471. package/dist/house-shape.d.mts +22 -0
  472. package/dist/house-shape.d.mts.map +1 -0
  473. package/dist/house-shape.mjs +103 -0
  474. package/dist/house-shape.mjs.map +1 -0
  475. package/dist/hover-card.d.mts +10 -0
  476. package/dist/hover-card.d.mts.map +1 -0
  477. package/dist/hover-card.mjs +22 -0
  478. package/dist/hover-card.mjs.map +1 -0
  479. package/dist/icon-button.d.mts +20 -0
  480. package/dist/icon-button.d.mts.map +1 -0
  481. package/dist/icon-button.mjs +52 -0
  482. package/dist/icon-button.mjs.map +1 -0
  483. package/dist/icon.d.mts +16 -0
  484. package/dist/icon.d.mts.map +1 -0
  485. package/dist/icon.mjs +32 -0
  486. package/dist/icon.mjs.map +1 -0
  487. package/dist/image-zoom.d.mts +23 -0
  488. package/dist/image-zoom.d.mts.map +1 -0
  489. package/dist/image-zoom.mjs +51 -0
  490. package/dist/image-zoom.mjs.map +1 -0
  491. package/dist/index.d.mts +3 -0
  492. package/dist/index.mjs +2 -0
  493. package/dist/inline-comment-composer.d.mts +40 -0
  494. package/dist/inline-comment-composer.d.mts.map +1 -0
  495. package/dist/inline-comment-composer.mjs +174 -0
  496. package/dist/inline-comment-composer.mjs.map +1 -0
  497. package/dist/input-group.d.mts +8 -0
  498. package/dist/input-group.d.mts.map +1 -0
  499. package/dist/input-group.mjs +21 -0
  500. package/dist/input-group.mjs.map +1 -0
  501. package/dist/input-otp.d.mts +40 -0
  502. package/dist/input-otp.d.mts.map +1 -0
  503. package/dist/input-otp.mjs +44 -0
  504. package/dist/input-otp.mjs.map +1 -0
  505. package/dist/input.d.mts +7 -0
  506. package/dist/input.d.mts.map +1 -0
  507. package/dist/input.mjs +18 -0
  508. package/dist/input.mjs.map +1 -0
  509. package/dist/item.d.mts +10 -0
  510. package/dist/item.d.mts.map +1 -0
  511. package/dist/item.mjs +33 -0
  512. package/dist/item.mjs.map +1 -0
  513. package/dist/kbd.d.mts +8 -0
  514. package/dist/kbd.d.mts.map +1 -0
  515. package/dist/kbd.mjs +15 -0
  516. package/dist/kbd.mjs.map +1 -0
  517. package/dist/kiosk-body.d.mts +13 -0
  518. package/dist/kiosk-body.d.mts.map +1 -0
  519. package/dist/kiosk-body.mjs +352 -0
  520. package/dist/kiosk-body.mjs.map +1 -0
  521. package/dist/kpi-bar.d.mts +29 -0
  522. package/dist/kpi-bar.d.mts.map +1 -0
  523. package/dist/kpi-bar.mjs +46 -0
  524. package/dist/kpi-bar.mjs.map +1 -0
  525. package/dist/kpi-summary.d.mts +24 -0
  526. package/dist/kpi-summary.d.mts.map +1 -0
  527. package/dist/kpi-summary.mjs +22 -0
  528. package/dist/kpi-summary.mjs.map +1 -0
  529. package/dist/label.d.mts +19 -0
  530. package/dist/label.d.mts.map +1 -0
  531. package/dist/label.mjs +27 -0
  532. package/dist/label.mjs.map +1 -0
  533. package/dist/legend.d.mts +87 -0
  534. package/dist/legend.d.mts.map +1 -0
  535. package/dist/legend.mjs +210 -0
  536. package/dist/legend.mjs.map +1 -0
  537. package/dist/lightbox.d.mts +28 -0
  538. package/dist/lightbox.d.mts.map +1 -0
  539. package/dist/lightbox.mjs +142 -0
  540. package/dist/lightbox.mjs.map +1 -0
  541. package/dist/link-type-detail.d.mts +73 -0
  542. package/dist/link-type-detail.d.mts.map +1 -0
  543. package/dist/link-type-detail.mjs +628 -0
  544. package/dist/link-type-detail.mjs.map +1 -0
  545. package/dist/link-type-wizard.d.mts +35 -0
  546. package/dist/link-type-wizard.d.mts.map +1 -0
  547. package/dist/link-type-wizard.mjs +303 -0
  548. package/dist/link-type-wizard.mjs.map +1 -0
  549. package/dist/link.d.mts +14 -0
  550. package/dist/link.d.mts.map +1 -0
  551. package/dist/link.mjs +30 -0
  552. package/dist/link.mjs.map +1 -0
  553. package/dist/list.d.mts +19 -0
  554. package/dist/list.d.mts.map +1 -0
  555. package/dist/list.mjs +27 -0
  556. package/dist/list.mjs.map +1 -0
  557. package/dist/map-compare-layout.d.mts +53 -0
  558. package/dist/map-compare-layout.d.mts.map +1 -0
  559. package/dist/map-compare-layout.mjs +164 -0
  560. package/dist/map-compare-layout.mjs.map +1 -0
  561. package/dist/map-compass.d.mts +22 -0
  562. package/dist/map-compass.d.mts.map +1 -0
  563. package/dist/map-compass.mjs +56 -0
  564. package/dist/map-compass.mjs.map +1 -0
  565. package/dist/map-control-panel.d.mts +92 -0
  566. package/dist/map-control-panel.d.mts.map +1 -0
  567. package/dist/map-control-panel.mjs +153 -0
  568. package/dist/map-control-panel.mjs.map +1 -0
  569. package/dist/map-controls.d.mts +24 -0
  570. package/dist/map-controls.d.mts.map +1 -0
  571. package/dist/map-controls.mjs +322 -0
  572. package/dist/map-controls.mjs.map +1 -0
  573. package/dist/map-hover-card.d.mts +28 -0
  574. package/dist/map-hover-card.d.mts.map +1 -0
  575. package/dist/map-hover-card.mjs +56 -0
  576. package/dist/map-hover-card.mjs.map +1 -0
  577. package/dist/map-legend.d.mts +41 -0
  578. package/dist/map-legend.d.mts.map +1 -0
  579. package/dist/map-legend.mjs +97 -0
  580. package/dist/map-legend.mjs.map +1 -0
  581. package/dist/map-minimap.d.mts +44 -0
  582. package/dist/map-minimap.d.mts.map +1 -0
  583. package/dist/map-minimap.mjs +108 -0
  584. package/dist/map-minimap.mjs.map +1 -0
  585. package/dist/map-toolbar.d.mts +60 -0
  586. package/dist/map-toolbar.d.mts.map +1 -0
  587. package/dist/map-toolbar.mjs +195 -0
  588. package/dist/map-toolbar.mjs.map +1 -0
  589. package/dist/map-transition.d.mts +51 -0
  590. package/dist/map-transition.d.mts.map +1 -0
  591. package/dist/map-transition.mjs +59 -0
  592. package/dist/map-transition.mjs.map +1 -0
  593. package/dist/map.d.mts +14 -0
  594. package/dist/map.d.mts.map +1 -0
  595. package/dist/map.mjs +47 -0
  596. package/dist/map.mjs.map +1 -0
  597. package/dist/mapbox-token.d.mts +12 -0
  598. package/dist/mapbox-token.d.mts.map +1 -0
  599. package/dist/mapbox-token.mjs +15 -0
  600. package/dist/mapbox-token.mjs.map +1 -0
  601. package/dist/markdown.d.mts +18 -0
  602. package/dist/markdown.d.mts.map +1 -0
  603. package/dist/markdown.mjs +41 -0
  604. package/dist/markdown.mjs.map +1 -0
  605. package/dist/mega-menu.d.mts +36 -0
  606. package/dist/mega-menu.d.mts.map +1 -0
  607. package/dist/mega-menu.mjs +89 -0
  608. package/dist/mega-menu.mjs.map +1 -0
  609. package/dist/menubar.d.mts +32 -0
  610. package/dist/menubar.d.mts.map +1 -0
  611. package/dist/menubar.mjs +96 -0
  612. package/dist/menubar.mjs.map +1 -0
  613. package/dist/metadata-list.d.mts +2 -0
  614. package/dist/metadata-list.mjs +2 -0
  615. package/dist/metric-card.d.mts +28 -0
  616. package/dist/metric-card.d.mts.map +1 -0
  617. package/dist/metric-card.mjs +55 -0
  618. package/dist/metric-card.mjs.map +1 -0
  619. package/dist/milestone-table.d.mts +35 -0
  620. package/dist/milestone-table.d.mts.map +1 -0
  621. package/dist/milestone-table.mjs +84 -0
  622. package/dist/milestone-table.mjs.map +1 -0
  623. package/dist/minimap.d.mts +23 -0
  624. package/dist/minimap.d.mts.map +1 -0
  625. package/dist/minimap.mjs +64 -0
  626. package/dist/minimap.mjs.map +1 -0
  627. package/dist/more-menu.d.mts +27 -0
  628. package/dist/more-menu.d.mts.map +1 -0
  629. package/dist/more-menu.mjs +34 -0
  630. package/dist/more-menu.mjs.map +1 -0
  631. package/dist/multi-select.d.mts +38 -0
  632. package/dist/multi-select.d.mts.map +1 -0
  633. package/dist/multi-select.mjs +106 -0
  634. package/dist/multi-select.mjs.map +1 -0
  635. package/dist/navigation/core-app-sidebar.d.mts +461 -0
  636. package/dist/navigation/core-app-sidebar.d.mts.map +1 -0
  637. package/dist/navigation/core-app-sidebar.mjs +1288 -0
  638. package/dist/navigation/core-app-sidebar.mjs.map +1 -0
  639. package/dist/navigation/core-app-top-bar.d.mts +116 -0
  640. package/dist/navigation/core-app-top-bar.d.mts.map +1 -0
  641. package/dist/navigation/core-app-top-bar.mjs +224 -0
  642. package/dist/navigation/core-app-top-bar.mjs.map +1 -0
  643. package/dist/navigation/core-context-tabs.d.mts +12 -0
  644. package/dist/navigation/core-context-tabs.d.mts.map +1 -0
  645. package/dist/navigation/core-context-tabs.mjs +32 -0
  646. package/dist/navigation/core-context-tabs.mjs.map +1 -0
  647. package/dist/navigation/core-dashboard-header.d.mts +20 -0
  648. package/dist/navigation/core-dashboard-header.d.mts.map +1 -0
  649. package/dist/navigation/core-dashboard-header.mjs +227 -0
  650. package/dist/navigation/core-dashboard-header.mjs.map +1 -0
  651. package/dist/navigation/core-filter-strip.d.mts +12 -0
  652. package/dist/navigation/core-filter-strip.d.mts.map +1 -0
  653. package/dist/navigation/core-filter-strip.mjs +289 -0
  654. package/dist/navigation/core-filter-strip.mjs.map +1 -0
  655. package/dist/navigation/core-org-project-switcher.d.mts +12 -0
  656. package/dist/navigation/core-org-project-switcher.d.mts.map +1 -0
  657. package/dist/navigation/core-org-project-switcher.mjs +201 -0
  658. package/dist/navigation/core-org-project-switcher.mjs.map +1 -0
  659. package/dist/navigation/switcher.d.mts +38 -0
  660. package/dist/navigation/switcher.d.mts.map +1 -0
  661. package/dist/navigation/switcher.mjs +144 -0
  662. package/dist/navigation/switcher.mjs.map +1 -0
  663. package/dist/navigation-menu.d.mts +16 -0
  664. package/dist/navigation-menu.d.mts.map +1 -0
  665. package/dist/navigation-menu.mjs +64 -0
  666. package/dist/navigation-menu.mjs.map +1 -0
  667. package/dist/neighborhood-scene.d.mts +21 -0
  668. package/dist/neighborhood-scene.d.mts.map +1 -0
  669. package/dist/neighborhood-scene.mjs +285 -0
  670. package/dist/neighborhood-scene.mjs.map +1 -0
  671. package/dist/node-graph.d.mts +154 -0
  672. package/dist/node-graph.d.mts.map +1 -0
  673. package/dist/node-graph.mjs +349 -0
  674. package/dist/node-graph.mjs.map +1 -0
  675. package/dist/notification-center.d.mts +40 -0
  676. package/dist/notification-center.d.mts.map +1 -0
  677. package/dist/notification-center.mjs +224 -0
  678. package/dist/notification-center.mjs.map +1 -0
  679. package/dist/number-input.d.mts +23 -0
  680. package/dist/number-input.d.mts.map +1 -0
  681. package/dist/number-input.mjs +79 -0
  682. package/dist/number-input.mjs.map +1 -0
  683. package/dist/object-drawing-toolbar.d.mts +38 -0
  684. package/dist/object-drawing-toolbar.d.mts.map +1 -0
  685. package/dist/object-drawing-toolbar.mjs +172 -0
  686. package/dist/object-drawing-toolbar.mjs.map +1 -0
  687. package/dist/object-type-detail.d.mts +27 -0
  688. package/dist/object-type-detail.d.mts.map +1 -0
  689. package/dist/object-type-detail.mjs +1389 -0
  690. package/dist/object-type-detail.mjs.map +1 -0
  691. package/dist/object-type-wizard.d.mts +78 -0
  692. package/dist/object-type-wizard.d.mts.map +1 -0
  693. package/dist/object-type-wizard.mjs +885 -0
  694. package/dist/object-type-wizard.mjs.map +1 -0
  695. package/dist/observation-detail-panel.d.mts +89 -0
  696. package/dist/observation-detail-panel.d.mts.map +1 -0
  697. package/dist/observation-detail-panel.mjs +168 -0
  698. package/dist/observation-detail-panel.mjs.map +1 -0
  699. package/dist/observations-map.d.mts +288 -0
  700. package/dist/observations-map.d.mts.map +1 -0
  701. package/dist/observations-map.mjs +1087 -0
  702. package/dist/observations-map.mjs.map +1 -0
  703. package/dist/operations-drawer.d.mts +51 -0
  704. package/dist/operations-drawer.d.mts.map +1 -0
  705. package/dist/operations-drawer.mjs +193 -0
  706. package/dist/operations-drawer.mjs.map +1 -0
  707. package/dist/outline.d.mts +27 -0
  708. package/dist/outline.d.mts.map +1 -0
  709. package/dist/outline.mjs +47 -0
  710. package/dist/outline.mjs.map +1 -0
  711. package/dist/overflow-list.d.mts +23 -0
  712. package/dist/overflow-list.d.mts.map +1 -0
  713. package/dist/overflow-list.mjs +38 -0
  714. package/dist/overflow-list.mjs.map +1 -0
  715. package/dist/overlay.d.mts +17 -0
  716. package/dist/overlay.d.mts.map +1 -0
  717. package/dist/overlay.mjs +32 -0
  718. package/dist/overlay.mjs.map +1 -0
  719. package/dist/page-content-header.d.mts +43 -0
  720. package/dist/page-content-header.d.mts.map +1 -0
  721. package/dist/page-content-header.mjs +224 -0
  722. package/dist/page-content-header.mjs.map +1 -0
  723. package/dist/pages/almanar-blocks-data.d.mts +4 -0
  724. package/dist/pages/almanar-blocks-data.d.mts.map +1 -0
  725. package/dist/pages/almanar-blocks-data.mjs +691 -0
  726. package/dist/pages/almanar-blocks-data.mjs.map +1 -0
  727. package/dist/pages/almanar-hierarchy-data.d.mts +9 -0
  728. package/dist/pages/almanar-hierarchy-data.d.mts.map +1 -0
  729. package/dist/pages/almanar-hierarchy-data.mjs +816 -0
  730. package/dist/pages/almanar-hierarchy-data.mjs.map +1 -0
  731. package/dist/pages/almanar-villa-taxonomy.d.mts +9 -0
  732. package/dist/pages/almanar-villa-taxonomy.d.mts.map +1 -0
  733. package/dist/pages/almanar-villa-taxonomy.mjs +1569 -0
  734. package/dist/pages/almanar-villa-taxonomy.mjs.map +1 -0
  735. package/dist/pages/app-marketplace-shared.d.mts +146 -0
  736. package/dist/pages/app-marketplace-shared.d.mts.map +1 -0
  737. package/dist/pages/app-marketplace-shared.mjs +739 -0
  738. package/dist/pages/app-marketplace-shared.mjs.map +1 -0
  739. package/dist/pages/capture-ui-enhanced.d.mts +125 -0
  740. package/dist/pages/capture-ui-enhanced.d.mts.map +1 -0
  741. package/dist/pages/capture-ui-enhanced.mjs +915 -0
  742. package/dist/pages/capture-ui-enhanced.mjs.map +1 -0
  743. package/dist/pages/core-admin-panel.d.mts +10 -0
  744. package/dist/pages/core-admin-panel.d.mts.map +1 -0
  745. package/dist/pages/core-admin-panel.mjs +3076 -0
  746. package/dist/pages/core-admin-panel.mjs.map +1 -0
  747. package/dist/pages/core-analytics-overview.d.mts +10 -0
  748. package/dist/pages/core-analytics-overview.d.mts.map +1 -0
  749. package/dist/pages/core-analytics-overview.mjs +904 -0
  750. package/dist/pages/core-analytics-overview.mjs.map +1 -0
  751. package/dist/pages/core-app-installer.d.mts +17 -0
  752. package/dist/pages/core-app-installer.d.mts.map +1 -0
  753. package/dist/pages/core-app-installer.mjs +94 -0
  754. package/dist/pages/core-app-installer.mjs.map +1 -0
  755. package/dist/pages/core-blueprint-viewer-3.d.mts +25 -0
  756. package/dist/pages/core-blueprint-viewer-3.d.mts.map +1 -0
  757. package/dist/pages/core-blueprint-viewer-3.mjs +688 -0
  758. package/dist/pages/core-blueprint-viewer-3.mjs.map +1 -0
  759. package/dist/pages/core-blueprint-viewer.d.mts +14 -0
  760. package/dist/pages/core-blueprint-viewer.d.mts.map +1 -0
  761. package/dist/pages/core-blueprint-viewer.mjs +665 -0
  762. package/dist/pages/core-blueprint-viewer.mjs.map +1 -0
  763. package/dist/pages/core-building-viewer-capture.d.mts +18 -0
  764. package/dist/pages/core-building-viewer-capture.d.mts.map +1 -0
  765. package/dist/pages/core-building-viewer-capture.mjs +268 -0
  766. package/dist/pages/core-building-viewer-capture.mjs.map +1 -0
  767. package/dist/pages/core-building-viewer.d.mts +20 -0
  768. package/dist/pages/core-building-viewer.d.mts.map +1 -0
  769. package/dist/pages/core-building-viewer.mjs +299 -0
  770. package/dist/pages/core-building-viewer.mjs.map +1 -0
  771. package/dist/pages/core-clinic.d.mts +14 -0
  772. package/dist/pages/core-clinic.d.mts.map +1 -0
  773. package/dist/pages/core-clinic.mjs +2175 -0
  774. package/dist/pages/core-clinic.mjs.map +1 -0
  775. package/dist/pages/core-content-area.d.mts +15 -0
  776. package/dist/pages/core-content-area.d.mts.map +1 -0
  777. package/dist/pages/core-content-area.mjs +192 -0
  778. package/dist/pages/core-content-area.mjs.map +1 -0
  779. package/dist/pages/core-core-connect-v3.d.mts +16 -0
  780. package/dist/pages/core-core-connect-v3.d.mts.map +1 -0
  781. package/dist/pages/core-core-connect-v3.mjs +30 -0
  782. package/dist/pages/core-core-connect-v3.mjs.map +1 -0
  783. package/dist/pages/core-core-connect.d.mts +15 -0
  784. package/dist/pages/core-core-connect.d.mts.map +1 -0
  785. package/dist/pages/core-core-connect.mjs +21 -0
  786. package/dist/pages/core-core-connect.mjs.map +1 -0
  787. package/dist/pages/core-design-canvas.d.mts +10 -0
  788. package/dist/pages/core-design-canvas.d.mts.map +1 -0
  789. package/dist/pages/core-design-canvas.mjs +322 -0
  790. package/dist/pages/core-design-canvas.mjs.map +1 -0
  791. package/dist/pages/core-login-page.d.mts +8 -0
  792. package/dist/pages/core-login-page.d.mts.map +1 -0
  793. package/dist/pages/core-login-page.mjs +141 -0
  794. package/dist/pages/core-login-page.mjs.map +1 -0
  795. package/dist/pages/core-map-compare-layout.d.mts +20 -0
  796. package/dist/pages/core-map-compare-layout.d.mts.map +1 -0
  797. package/dist/pages/core-map-compare-layout.mjs +187 -0
  798. package/dist/pages/core-map-compare-layout.mjs.map +1 -0
  799. package/dist/pages/core-observations-map-view.d.mts +19 -0
  800. package/dist/pages/core-observations-map-view.d.mts.map +1 -0
  801. package/dist/pages/core-observations-map-view.mjs +1273 -0
  802. package/dist/pages/core-observations-map-view.mjs.map +1 -0
  803. package/dist/pages/core-org-ai-report.d.mts +9 -0
  804. package/dist/pages/core-org-ai-report.d.mts.map +1 -0
  805. package/dist/pages/core-org-ai-report.mjs +474 -0
  806. package/dist/pages/core-org-ai-report.mjs.map +1 -0
  807. package/dist/pages/core-org-overview.d.mts +11 -0
  808. package/dist/pages/core-org-overview.d.mts.map +1 -0
  809. package/dist/pages/core-org-overview.mjs +718 -0
  810. package/dist/pages/core-org-overview.mjs.map +1 -0
  811. package/dist/pages/core-org-performance.d.mts +11 -0
  812. package/dist/pages/core-org-performance.d.mts.map +1 -0
  813. package/dist/pages/core-org-performance.mjs +1398 -0
  814. package/dist/pages/core-org-performance.mjs.map +1 -0
  815. package/dist/pages/core-org-reality-capture.d.mts +10 -0
  816. package/dist/pages/core-org-reality-capture.d.mts.map +1 -0
  817. package/dist/pages/core-org-reality-capture.mjs +1962 -0
  818. package/dist/pages/core-org-reality-capture.mjs.map +1 -0
  819. package/dist/pages/core-org-workforce-intelligence.d.mts +12 -0
  820. package/dist/pages/core-org-workforce-intelligence.d.mts.map +1 -0
  821. package/dist/pages/core-org-workforce-intelligence.mjs +1215 -0
  822. package/dist/pages/core-org-workforce-intelligence.mjs.map +1 -0
  823. package/dist/pages/core-progress-details.d.mts +10 -0
  824. package/dist/pages/core-progress-details.d.mts.map +1 -0
  825. package/dist/pages/core-progress-details.mjs +758 -0
  826. package/dist/pages/core-progress-details.mjs.map +1 -0
  827. package/dist/pages/core-project-overview.d.mts +9 -0
  828. package/dist/pages/core-project-overview.d.mts.map +1 -0
  829. package/dist/pages/core-project-overview.mjs +246 -0
  830. package/dist/pages/core-project-overview.mjs.map +1 -0
  831. package/dist/pages/core-project-quality-issues.d.mts +9 -0
  832. package/dist/pages/core-project-quality-issues.d.mts.map +1 -0
  833. package/dist/pages/core-project-quality-issues.mjs +508 -0
  834. package/dist/pages/core-project-quality-issues.mjs.map +1 -0
  835. package/dist/pages/core-project-reality-capture.d.mts +9 -0
  836. package/dist/pages/core-project-reality-capture.d.mts.map +1 -0
  837. package/dist/pages/core-project-reality-capture.mjs +496 -0
  838. package/dist/pages/core-project-reality-capture.mjs.map +1 -0
  839. package/dist/pages/core-project-schedule-cost.d.mts +9 -0
  840. package/dist/pages/core-project-schedule-cost.d.mts.map +1 -0
  841. package/dist/pages/core-project-schedule-cost.mjs +548 -0
  842. package/dist/pages/core-project-schedule-cost.mjs.map +1 -0
  843. package/dist/pages/core-project-setup.d.mts +10 -0
  844. package/dist/pages/core-project-setup.d.mts.map +1 -0
  845. package/dist/pages/core-project-setup.mjs +283 -0
  846. package/dist/pages/core-project-setup.mjs.map +1 -0
  847. package/dist/pages/core-project-workforce-safety.d.mts +9 -0
  848. package/dist/pages/core-project-workforce-safety.d.mts.map +1 -0
  849. package/dist/pages/core-project-workforce-safety.mjs +465 -0
  850. package/dist/pages/core-project-workforce-safety.mjs.map +1 -0
  851. package/dist/pages/core-safety-manager.d.mts +14 -0
  852. package/dist/pages/core-safety-manager.d.mts.map +1 -0
  853. package/dist/pages/core-safety-manager.mjs +3081 -0
  854. package/dist/pages/core-safety-manager.mjs.map +1 -0
  855. package/dist/pages/core-site-reality.d.mts +25 -0
  856. package/dist/pages/core-site-reality.d.mts.map +1 -0
  857. package/dist/pages/core-site-reality.mjs +505 -0
  858. package/dist/pages/core-site-reality.mjs.map +1 -0
  859. package/dist/pages/core-task-monitor.d.mts +4 -0
  860. package/dist/pages/core-task-monitor.d.mts.map +1 -0
  861. package/dist/pages/core-task-monitor.mjs +587 -0
  862. package/dist/pages/core-task-monitor.mjs.map +1 -0
  863. package/dist/pages/core-timesheet.d.mts +2 -0
  864. package/dist/pages/core-timesheet.mjs +2 -0
  865. package/dist/pages/core-verifytime-command-center.d.mts +4 -0
  866. package/dist/pages/core-verifytime-command-center.d.mts.map +1 -0
  867. package/dist/pages/core-verifytime-command-center.mjs +1089 -0
  868. package/dist/pages/core-verifytime-command-center.mjs.map +1 -0
  869. package/dist/pages/core-wc3-workspace.d.mts +71 -0
  870. package/dist/pages/core-wc3-workspace.d.mts.map +1 -0
  871. package/dist/pages/core-wc3-workspace.mjs +1015 -0
  872. package/dist/pages/core-wc3-workspace.mjs.map +1 -0
  873. package/dist/pages/core-work-permit.d.mts +14 -0
  874. package/dist/pages/core-work-permit.d.mts.map +1 -0
  875. package/dist/pages/core-work-permit.mjs +281 -0
  876. package/dist/pages/core-work-permit.mjs.map +1 -0
  877. package/dist/pages/core-workforce.d.mts +24 -0
  878. package/dist/pages/core-workforce.d.mts.map +1 -0
  879. package/dist/pages/core-workforce.mjs +1253 -0
  880. package/dist/pages/core-workforce.mjs.map +1 -0
  881. package/dist/pages/org-logos.d.mts +9 -0
  882. package/dist/pages/org-logos.d.mts.map +1 -0
  883. package/dist/pages/org-logos.mjs +11 -0
  884. package/dist/pages/org-logos.mjs.map +1 -0
  885. package/dist/pages/state-machine-fixtures.d.mts +34 -0
  886. package/dist/pages/state-machine-fixtures.d.mts.map +1 -0
  887. package/dist/pages/state-machine-fixtures.mjs +73 -0
  888. package/dist/pages/state-machine-fixtures.mjs.map +1 -0
  889. package/dist/pages/state-machine.d.mts +407 -0
  890. package/dist/pages/state-machine.d.mts.map +1 -0
  891. package/dist/pages/state-machine.mjs +2254 -0
  892. package/dist/pages/state-machine.mjs.map +1 -0
  893. package/dist/pages/typeform/AttachmentInput.d.mts +11 -0
  894. package/dist/pages/typeform/AttachmentInput.d.mts.map +1 -0
  895. package/dist/pages/typeform/AttachmentInput.mjs +59 -0
  896. package/dist/pages/typeform/AttachmentInput.mjs.map +1 -0
  897. package/dist/pages/typeform/BuildMethodScreen.d.mts +10 -0
  898. package/dist/pages/typeform/BuildMethodScreen.d.mts.map +1 -0
  899. package/dist/pages/typeform/BuildMethodScreen.mjs +176 -0
  900. package/dist/pages/typeform/BuildMethodScreen.mjs.map +1 -0
  901. package/dist/pages/typeform/BuilderFlow.d.mts +29 -0
  902. package/dist/pages/typeform/BuilderFlow.d.mts.map +1 -0
  903. package/dist/pages/typeform/BuilderFlow.mjs +111 -0
  904. package/dist/pages/typeform/BuilderFlow.mjs.map +1 -0
  905. package/dist/pages/typeform/BuilderScreen.d.mts +14 -0
  906. package/dist/pages/typeform/BuilderScreen.d.mts.map +1 -0
  907. package/dist/pages/typeform/BuilderScreen.mjs +668 -0
  908. package/dist/pages/typeform/BuilderScreen.mjs.map +1 -0
  909. package/dist/pages/typeform/DataSourceSelect.d.mts +13 -0
  910. package/dist/pages/typeform/DataSourceSelect.d.mts.map +1 -0
  911. package/dist/pages/typeform/DataSourceSelect.mjs +36 -0
  912. package/dist/pages/typeform/DataSourceSelect.mjs.map +1 -0
  913. package/dist/pages/typeform/DerivedCountDisplay.d.mts +10 -0
  914. package/dist/pages/typeform/DerivedCountDisplay.d.mts.map +1 -0
  915. package/dist/pages/typeform/DerivedCountDisplay.mjs +20 -0
  916. package/dist/pages/typeform/DerivedCountDisplay.mjs.map +1 -0
  917. package/dist/pages/typeform/FillerRJSF.d.mts +10 -0
  918. package/dist/pages/typeform/FillerRJSF.d.mts.map +1 -0
  919. package/dist/pages/typeform/FillerRJSF.mjs +314 -0
  920. package/dist/pages/typeform/FillerRJSF.mjs.map +1 -0
  921. package/dist/pages/typeform/FormBuilderWidgetRJSF.d.mts +9 -0
  922. package/dist/pages/typeform/FormBuilderWidgetRJSF.d.mts.map +1 -0
  923. package/dist/pages/typeform/FormBuilderWidgetRJSF.mjs +22 -0
  924. package/dist/pages/typeform/FormBuilderWidgetRJSF.mjs.map +1 -0
  925. package/dist/pages/typeform/PublishScreen.d.mts +18 -0
  926. package/dist/pages/typeform/PublishScreen.d.mts.map +1 -0
  927. package/dist/pages/typeform/PublishScreen.mjs +163 -0
  928. package/dist/pages/typeform/PublishScreen.mjs.map +1 -0
  929. package/dist/pages/typeform/QuestionInspector.d.mts +7 -0
  930. package/dist/pages/typeform/QuestionInspector.d.mts.map +1 -0
  931. package/dist/pages/typeform/QuestionInspector.mjs +749 -0
  932. package/dist/pages/typeform/QuestionInspector.mjs.map +1 -0
  933. package/dist/pages/typeform/QuestionRenderer.d.mts +23 -0
  934. package/dist/pages/typeform/QuestionRenderer.d.mts.map +1 -0
  935. package/dist/pages/typeform/QuestionRenderer.mjs +170 -0
  936. package/dist/pages/typeform/QuestionRenderer.mjs.map +1 -0
  937. package/dist/pages/typeform/RatingInput.d.mts +14 -0
  938. package/dist/pages/typeform/RatingInput.d.mts.map +1 -0
  939. package/dist/pages/typeform/RatingInput.mjs +58 -0
  940. package/dist/pages/typeform/RatingInput.mjs.map +1 -0
  941. package/dist/pages/typeform/RuleGroupEditor.d.mts +9 -0
  942. package/dist/pages/typeform/RuleGroupEditor.d.mts.map +1 -0
  943. package/dist/pages/typeform/RuleGroupEditor.mjs +183 -0
  944. package/dist/pages/typeform/RuleGroupEditor.mjs.map +1 -0
  945. package/dist/pages/typeform/SignaturePad.d.mts +11 -0
  946. package/dist/pages/typeform/SignaturePad.d.mts.map +1 -0
  947. package/dist/pages/typeform/SignaturePad.mjs +111 -0
  948. package/dist/pages/typeform/SignaturePad.mjs.map +1 -0
  949. package/dist/pages/typeform/TableInput.d.mts +15 -0
  950. package/dist/pages/typeform/TableInput.d.mts.map +1 -0
  951. package/dist/pages/typeform/TableInput.mjs +73 -0
  952. package/dist/pages/typeform/TableInput.mjs.map +1 -0
  953. package/dist/pages/typeform/WorkspaceScreen.d.mts +20 -0
  954. package/dist/pages/typeform/WorkspaceScreen.d.mts.map +1 -0
  955. package/dist/pages/typeform/WorkspaceScreen.mjs +158 -0
  956. package/dist/pages/typeform/WorkspaceScreen.mjs.map +1 -0
  957. package/dist/pages/typeform/coreRjsfTheme.d.mts +4 -0
  958. package/dist/pages/typeform/coreRjsfTheme.d.mts.map +1 -0
  959. package/dist/pages/typeform/coreRjsfTheme.mjs +142 -0
  960. package/dist/pages/typeform/coreRjsfTheme.mjs.map +1 -0
  961. package/dist/pages/typeform/dataSources.d.mts +35 -0
  962. package/dist/pages/typeform/dataSources.d.mts.map +1 -0
  963. package/dist/pages/typeform/dataSources.mjs +210 -0
  964. package/dist/pages/typeform/dataSources.mjs.map +1 -0
  965. package/dist/pages/typeform/fillerShared.d.mts +21 -0
  966. package/dist/pages/typeform/fillerShared.d.mts.map +1 -0
  967. package/dist/pages/typeform/fillerShared.mjs +112 -0
  968. package/dist/pages/typeform/fillerShared.mjs.map +1 -0
  969. package/dist/pages/typeform/logic.d.mts +46 -0
  970. package/dist/pages/typeform/logic.d.mts.map +1 -0
  971. package/dist/pages/typeform/logic.mjs +193 -0
  972. package/dist/pages/typeform/logic.mjs.map +1 -0
  973. package/dist/pages/typeform/model.d.mts +144 -0
  974. package/dist/pages/typeform/model.d.mts.map +1 -0
  975. package/dist/pages/typeform/model.mjs +328 -0
  976. package/dist/pages/typeform/model.mjs.map +1 -0
  977. package/dist/pages/typeform/schemaToJsonSchema.d.mts +9 -0
  978. package/dist/pages/typeform/schemaToJsonSchema.d.mts.map +1 -0
  979. package/dist/pages/typeform/schemaToJsonSchema.mjs +119 -0
  980. package/dist/pages/typeform/schemaToJsonSchema.mjs.map +1 -0
  981. package/dist/pages/typeform/useFormBuilder.d.mts +34 -0
  982. package/dist/pages/typeform/useFormBuilder.d.mts.map +1 -0
  983. package/dist/pages/typeform/useFormBuilder.mjs +389 -0
  984. package/dist/pages/typeform/useFormBuilder.mjs.map +1 -0
  985. package/dist/pages/view-mode-thumbs.d.mts +6 -0
  986. package/dist/pages/view-mode-thumbs.d.mts.map +1 -0
  987. package/dist/pages/view-mode-thumbs.mjs +8 -0
  988. package/dist/pages/view-mode-thumbs.mjs.map +1 -0
  989. package/dist/pages/wc3-action-type-detail.d.mts +166 -0
  990. package/dist/pages/wc3-action-type-detail.d.mts.map +1 -0
  991. package/dist/pages/wc3-action-type-detail.mjs +2182 -0
  992. package/dist/pages/wc3-action-type-detail.mjs.map +1 -0
  993. package/dist/pages/wc3-action-type-run-dialog.d.mts +23 -0
  994. package/dist/pages/wc3-action-type-run-dialog.d.mts.map +1 -0
  995. package/dist/pages/wc3-action-type-run-dialog.mjs +383 -0
  996. package/dist/pages/wc3-action-type-run-dialog.mjs.map +1 -0
  997. package/dist/pages/wc3-action-type-wizard.d.mts +75 -0
  998. package/dist/pages/wc3-action-type-wizard.d.mts.map +1 -0
  999. package/dist/pages/wc3-action-type-wizard.mjs +702 -0
  1000. package/dist/pages/wc3-action-type-wizard.mjs.map +1 -0
  1001. package/dist/pages/wc3-analysis-data-view.d.mts +15 -0
  1002. package/dist/pages/wc3-analysis-data-view.d.mts.map +1 -0
  1003. package/dist/pages/wc3-analysis-data-view.mjs +129 -0
  1004. package/dist/pages/wc3-analysis-data-view.mjs.map +1 -0
  1005. package/dist/pages/wc3-analysis-data.d.mts +181 -0
  1006. package/dist/pages/wc3-analysis-data.d.mts.map +1 -0
  1007. package/dist/pages/wc3-analysis-data.mjs +4074 -0
  1008. package/dist/pages/wc3-analysis-data.mjs.map +1 -0
  1009. package/dist/pages/wc3-analysis-object-view.d.mts +12 -0
  1010. package/dist/pages/wc3-analysis-object-view.d.mts.map +1 -0
  1011. package/dist/pages/wc3-analysis-object-view.mjs +196 -0
  1012. package/dist/pages/wc3-analysis-object-view.mjs.map +1 -0
  1013. package/dist/pages/wc3-analysis-saved-view.d.mts +6 -0
  1014. package/dist/pages/wc3-analysis-saved-view.d.mts.map +1 -0
  1015. package/dist/pages/wc3-analysis-saved-view.mjs +540 -0
  1016. package/dist/pages/wc3-analysis-saved-view.mjs.map +1 -0
  1017. package/dist/pages/wc3-analysis-shared.d.mts +346 -0
  1018. package/dist/pages/wc3-analysis-shared.d.mts.map +1 -0
  1019. package/dist/pages/wc3-analysis-shared.mjs +1119 -0
  1020. package/dist/pages/wc3-analysis-shared.mjs.map +1 -0
  1021. package/dist/pages/wc3-analysis-views.d.mts +25 -0
  1022. package/dist/pages/wc3-analysis-views.d.mts.map +1 -0
  1023. package/dist/pages/wc3-analysis-views.mjs +48 -0
  1024. package/dist/pages/wc3-analysis-views.mjs.map +1 -0
  1025. package/dist/pages/wc3-fs-data.d.mts +12 -0
  1026. package/dist/pages/wc3-fs-data.d.mts.map +1 -0
  1027. package/dist/pages/wc3-fs-data.mjs +745 -0
  1028. package/dist/pages/wc3-fs-data.mjs.map +1 -0
  1029. package/dist/pages/wc3-fs-location-field.d.mts +13 -0
  1030. package/dist/pages/wc3-fs-location-field.d.mts.map +1 -0
  1031. package/dist/pages/wc3-fs-location-field.mjs +56 -0
  1032. package/dist/pages/wc3-fs-location-field.mjs.map +1 -0
  1033. package/dist/pages/wc3-fs-path-label.d.mts +12 -0
  1034. package/dist/pages/wc3-fs-path-label.d.mts.map +1 -0
  1035. package/dist/pages/wc3-fs-path-label.mjs +36 -0
  1036. package/dist/pages/wc3-fs-path-label.mjs.map +1 -0
  1037. package/dist/pages/wc3-fs-records.d.mts +17 -0
  1038. package/dist/pages/wc3-fs-records.d.mts.map +1 -0
  1039. package/dist/pages/wc3-fs-records.mjs +107 -0
  1040. package/dist/pages/wc3-fs-records.mjs.map +1 -0
  1041. package/dist/pages/wc3-fs-store.d.mts +43 -0
  1042. package/dist/pages/wc3-fs-store.d.mts.map +1 -0
  1043. package/dist/pages/wc3-fs-store.mjs +81 -0
  1044. package/dist/pages/wc3-fs-store.mjs.map +1 -0
  1045. package/dist/pages/wc3-fs-types.d.mts +19 -0
  1046. package/dist/pages/wc3-fs-types.d.mts.map +1 -0
  1047. package/dist/pages/wc3-fs-types.mjs +66 -0
  1048. package/dist/pages/wc3-fs-types.mjs.map +1 -0
  1049. package/dist/pages/wc3-graph-explorer-flow.d.mts +14 -0
  1050. package/dist/pages/wc3-graph-explorer-flow.d.mts.map +1 -0
  1051. package/dist/pages/wc3-graph-explorer-flow.mjs +275 -0
  1052. package/dist/pages/wc3-graph-explorer-flow.mjs.map +1 -0
  1053. package/dist/pages/wc3-group-detail.d.mts +26 -0
  1054. package/dist/pages/wc3-group-detail.d.mts.map +1 -0
  1055. package/dist/pages/wc3-group-detail.mjs +358 -0
  1056. package/dist/pages/wc3-group-detail.mjs.map +1 -0
  1057. package/dist/pages/wc3-group-wizard.d.mts +28 -0
  1058. package/dist/pages/wc3-group-wizard.d.mts.map +1 -0
  1059. package/dist/pages/wc3-group-wizard.mjs +120 -0
  1060. package/dist/pages/wc3-group-wizard.mjs.map +1 -0
  1061. package/dist/pages/wc3-health-view.d.mts +34 -0
  1062. package/dist/pages/wc3-health-view.d.mts.map +1 -0
  1063. package/dist/pages/wc3-health-view.mjs +413 -0
  1064. package/dist/pages/wc3-health-view.mjs.map +1 -0
  1065. package/dist/pages/wc3-home-view.d.mts +24 -0
  1066. package/dist/pages/wc3-home-view.d.mts.map +1 -0
  1067. package/dist/pages/wc3-home-view.mjs +59 -0
  1068. package/dist/pages/wc3-home-view.mjs.map +1 -0
  1069. package/dist/pages/wc3-interface-detail.d.mts +66 -0
  1070. package/dist/pages/wc3-interface-detail.d.mts.map +1 -0
  1071. package/dist/pages/wc3-interface-detail.mjs +1060 -0
  1072. package/dist/pages/wc3-interface-detail.mjs.map +1 -0
  1073. package/dist/pages/wc3-interface-wizard.d.mts +39 -0
  1074. package/dist/pages/wc3-interface-wizard.d.mts.map +1 -0
  1075. package/dist/pages/wc3-interface-wizard.mjs +226 -0
  1076. package/dist/pages/wc3-interface-wizard.mjs.map +1 -0
  1077. package/dist/pages/wc3-lineage-data-view.d.mts +6 -0
  1078. package/dist/pages/wc3-lineage-data-view.d.mts.map +1 -0
  1079. package/dist/pages/wc3-lineage-data-view.mjs +481 -0
  1080. package/dist/pages/wc3-lineage-data-view.mjs.map +1 -0
  1081. package/dist/pages/wc3-lineage-data.d.mts +191 -0
  1082. package/dist/pages/wc3-lineage-data.d.mts.map +1 -0
  1083. package/dist/pages/wc3-lineage-data.mjs +1061 -0
  1084. package/dist/pages/wc3-lineage-data.mjs.map +1 -0
  1085. package/dist/pages/wc3-lineage-impact-view.d.mts +13 -0
  1086. package/dist/pages/wc3-lineage-impact-view.d.mts.map +1 -0
  1087. package/dist/pages/wc3-lineage-impact-view.mjs +247 -0
  1088. package/dist/pages/wc3-lineage-impact-view.mjs.map +1 -0
  1089. package/dist/pages/wc3-lineage-shared.d.mts +137 -0
  1090. package/dist/pages/wc3-lineage-shared.d.mts.map +1 -0
  1091. package/dist/pages/wc3-lineage-shared.mjs +150 -0
  1092. package/dist/pages/wc3-lineage-shared.mjs.map +1 -0
  1093. package/dist/pages/wc3-lineage-views.d.mts +7 -0
  1094. package/dist/pages/wc3-lineage-views.d.mts.map +1 -0
  1095. package/dist/pages/wc3-lineage-views.mjs +13 -0
  1096. package/dist/pages/wc3-lineage-views.mjs.map +1 -0
  1097. package/dist/pages/wc3-lineage-workflow-view.d.mts +12 -0
  1098. package/dist/pages/wc3-lineage-workflow-view.d.mts.map +1 -0
  1099. package/dist/pages/wc3-lineage-workflow-view.mjs +326 -0
  1100. package/dist/pages/wc3-lineage-workflow-view.mjs.map +1 -0
  1101. package/dist/pages/wc3-object-type-detail.d.mts +18 -0
  1102. package/dist/pages/wc3-object-type-detail.d.mts.map +1 -0
  1103. package/dist/pages/wc3-object-type-detail.mjs +977 -0
  1104. package/dist/pages/wc3-object-type-detail.mjs.map +1 -0
  1105. package/dist/pages/wc3-ontology-data.d.mts +246 -0
  1106. package/dist/pages/wc3-ontology-data.d.mts.map +1 -0
  1107. package/dist/pages/wc3-ontology-data.mjs +8542 -0
  1108. package/dist/pages/wc3-ontology-data.mjs.map +1 -0
  1109. package/dist/pages/wc3-ontology-glyphs.d.mts +14 -0
  1110. package/dist/pages/wc3-ontology-glyphs.d.mts.map +1 -0
  1111. package/dist/pages/wc3-ontology-glyphs.mjs +53 -0
  1112. package/dist/pages/wc3-ontology-glyphs.mjs.map +1 -0
  1113. package/dist/pages/wc3-ontology-scope.d.mts +62 -0
  1114. package/dist/pages/wc3-ontology-scope.d.mts.map +1 -0
  1115. package/dist/pages/wc3-ontology-scope.mjs +109 -0
  1116. package/dist/pages/wc3-ontology-scope.mjs.map +1 -0
  1117. package/dist/pages/wc3-ontology-views.d.mts +34 -0
  1118. package/dist/pages/wc3-ontology-views.d.mts.map +1 -0
  1119. package/dist/pages/wc3-ontology-views.mjs +1253 -0
  1120. package/dist/pages/wc3-ontology-views.mjs.map +1 -0
  1121. package/dist/pages/wc3-permit-policy.d.mts +56 -0
  1122. package/dist/pages/wc3-permit-policy.d.mts.map +1 -0
  1123. package/dist/pages/wc3-permit-policy.mjs +478 -0
  1124. package/dist/pages/wc3-permit-policy.mjs.map +1 -0
  1125. package/dist/pages/wc3-pipeline-detail.d.mts +13 -0
  1126. package/dist/pages/wc3-pipeline-detail.d.mts.map +1 -0
  1127. package/dist/pages/wc3-pipeline-detail.mjs +818 -0
  1128. package/dist/pages/wc3-pipeline-detail.mjs.map +1 -0
  1129. package/dist/pages/wc3-pipeline-list-view.d.mts +5 -0
  1130. package/dist/pages/wc3-pipeline-list-view.d.mts.map +1 -0
  1131. package/dist/pages/wc3-pipeline-list-view.mjs +692 -0
  1132. package/dist/pages/wc3-pipeline-list-view.mjs.map +1 -0
  1133. package/dist/pages/wc3-pipeline-shared.d.mts +301 -0
  1134. package/dist/pages/wc3-pipeline-shared.d.mts.map +1 -0
  1135. package/dist/pages/wc3-pipeline-shared.mjs +703 -0
  1136. package/dist/pages/wc3-pipeline-shared.mjs.map +1 -0
  1137. package/dist/pages/wc3-pipeline-side-views.d.mts +7 -0
  1138. package/dist/pages/wc3-pipeline-side-views.d.mts.map +1 -0
  1139. package/dist/pages/wc3-pipeline-side-views.mjs +998 -0
  1140. package/dist/pages/wc3-pipeline-side-views.mjs.map +1 -0
  1141. package/dist/pages/wc3-pipeline-views.d.mts +15 -0
  1142. package/dist/pages/wc3-pipeline-views.d.mts.map +1 -0
  1143. package/dist/pages/wc3-pipeline-views.mjs +23 -0
  1144. package/dist/pages/wc3-pipeline-views.mjs.map +1 -0
  1145. package/dist/pages/wc3-process-bottlenecks.d.mts +22 -0
  1146. package/dist/pages/wc3-process-bottlenecks.d.mts.map +1 -0
  1147. package/dist/pages/wc3-process-bottlenecks.mjs +352 -0
  1148. package/dist/pages/wc3-process-bottlenecks.mjs.map +1 -0
  1149. package/dist/pages/wc3-process-create.d.mts +24 -0
  1150. package/dist/pages/wc3-process-create.d.mts.map +1 -0
  1151. package/dist/pages/wc3-process-create.mjs +230 -0
  1152. package/dist/pages/wc3-process-create.mjs.map +1 -0
  1153. package/dist/pages/wc3-process-data.d.mts +238 -0
  1154. package/dist/pages/wc3-process-data.d.mts.map +1 -0
  1155. package/dist/pages/wc3-process-data.mjs +2251 -0
  1156. package/dist/pages/wc3-process-data.mjs.map +1 -0
  1157. package/dist/pages/wc3-process-detail.d.mts +21 -0
  1158. package/dist/pages/wc3-process-detail.d.mts.map +1 -0
  1159. package/dist/pages/wc3-process-detail.mjs +21 -0
  1160. package/dist/pages/wc3-process-detail.mjs.map +1 -0
  1161. package/dist/pages/wc3-process-list-view.d.mts +5 -0
  1162. package/dist/pages/wc3-process-list-view.d.mts.map +1 -0
  1163. package/dist/pages/wc3-process-list-view.mjs +602 -0
  1164. package/dist/pages/wc3-process-list-view.mjs.map +1 -0
  1165. package/dist/pages/wc3-process-shared.d.mts +443 -0
  1166. package/dist/pages/wc3-process-shared.d.mts.map +1 -0
  1167. package/dist/pages/wc3-process-shared.mjs +980 -0
  1168. package/dist/pages/wc3-process-shared.mjs.map +1 -0
  1169. package/dist/pages/wc3-process-views.d.mts +19 -0
  1170. package/dist/pages/wc3-process-views.d.mts.map +1 -0
  1171. package/dist/pages/wc3-process-views.mjs +23 -0
  1172. package/dist/pages/wc3-process-views.mjs.map +1 -0
  1173. package/dist/pages/wc3-product-catalogue-view.d.mts +5 -0
  1174. package/dist/pages/wc3-product-catalogue-view.d.mts.map +1 -0
  1175. package/dist/pages/wc3-product-catalogue-view.mjs +587 -0
  1176. package/dist/pages/wc3-product-catalogue-view.mjs.map +1 -0
  1177. package/dist/pages/wc3-product-data.d.mts +206 -0
  1178. package/dist/pages/wc3-product-data.d.mts.map +1 -0
  1179. package/dist/pages/wc3-product-data.mjs +2669 -0
  1180. package/dist/pages/wc3-product-data.mjs.map +1 -0
  1181. package/dist/pages/wc3-product-detail.d.mts +31 -0
  1182. package/dist/pages/wc3-product-detail.d.mts.map +1 -0
  1183. package/dist/pages/wc3-product-detail.mjs +1137 -0
  1184. package/dist/pages/wc3-product-detail.mjs.map +1 -0
  1185. package/dist/pages/wc3-product-install-dialog.d.mts +99 -0
  1186. package/dist/pages/wc3-product-install-dialog.d.mts.map +1 -0
  1187. package/dist/pages/wc3-product-install-dialog.mjs +808 -0
  1188. package/dist/pages/wc3-product-install-dialog.mjs.map +1 -0
  1189. package/dist/pages/wc3-product-shared.d.mts +152 -0
  1190. package/dist/pages/wc3-product-shared.d.mts.map +1 -0
  1191. package/dist/pages/wc3-product-shared.mjs +268 -0
  1192. package/dist/pages/wc3-product-shared.mjs.map +1 -0
  1193. package/dist/pages/wc3-product-views.d.mts +7 -0
  1194. package/dist/pages/wc3-product-views.d.mts.map +1 -0
  1195. package/dist/pages/wc3-product-views.mjs +7 -0
  1196. package/dist/pages/wc3-product-views.mjs.map +1 -0
  1197. package/dist/pages/wc3-shared-property-detail.d.mts +95 -0
  1198. package/dist/pages/wc3-shared-property-detail.d.mts.map +1 -0
  1199. package/dist/pages/wc3-shared-property-detail.mjs +546 -0
  1200. package/dist/pages/wc3-shared-property-detail.mjs.map +1 -0
  1201. package/dist/pages/wc3-shared-property-view.d.mts +10 -0
  1202. package/dist/pages/wc3-shared-property-view.d.mts.map +1 -0
  1203. package/dist/pages/wc3-shared-property-view.mjs +455 -0
  1204. package/dist/pages/wc3-shared-property-view.mjs.map +1 -0
  1205. package/dist/pages/wc3-shared-property-wizard.d.mts +31 -0
  1206. package/dist/pages/wc3-shared-property-wizard.d.mts.map +1 -0
  1207. package/dist/pages/wc3-shared-property-wizard.mjs +181 -0
  1208. package/dist/pages/wc3-shared-property-wizard.mjs.map +1 -0
  1209. package/dist/pages/work-permit-templates.d.mts +30 -0
  1210. package/dist/pages/work-permit-templates.d.mts.map +1 -0
  1211. package/dist/pages/work-permit-templates.mjs +793 -0
  1212. package/dist/pages/work-permit-templates.mjs.map +1 -0
  1213. package/dist/pages/workforce-analytics.d.mts +11 -0
  1214. package/dist/pages/workforce-analytics.d.mts.map +1 -0
  1215. package/dist/pages/workforce-analytics.mjs +561 -0
  1216. package/dist/pages/workforce-analytics.mjs.map +1 -0
  1217. package/dist/pages/workforce-compliance-settings.d.mts +9 -0
  1218. package/dist/pages/workforce-compliance-settings.d.mts.map +1 -0
  1219. package/dist/pages/workforce-compliance-settings.mjs +375 -0
  1220. package/dist/pages/workforce-compliance-settings.mjs.map +1 -0
  1221. package/dist/pages/workforce-compliance.d.mts +81 -0
  1222. package/dist/pages/workforce-compliance.d.mts.map +1 -0
  1223. package/dist/pages/workforce-compliance.mjs +805 -0
  1224. package/dist/pages/workforce-compliance.mjs.map +1 -0
  1225. package/dist/pages/workforce-crews.d.mts +5 -0
  1226. package/dist/pages/workforce-crews.d.mts.map +1 -0
  1227. package/dist/pages/workforce-crews.mjs +1091 -0
  1228. package/dist/pages/workforce-crews.mjs.map +1 -0
  1229. package/dist/pages/workforce-map-view.d.mts +8 -0
  1230. package/dist/pages/workforce-map-view.d.mts.map +1 -0
  1231. package/dist/pages/workforce-map-view.mjs +953 -0
  1232. package/dist/pages/workforce-map-view.mjs.map +1 -0
  1233. package/dist/pages/workforce-obs.d.mts +5 -0
  1234. package/dist/pages/workforce-obs.d.mts.map +1 -0
  1235. package/dist/pages/workforce-obs.mjs +649 -0
  1236. package/dist/pages/workforce-obs.mjs.map +1 -0
  1237. package/dist/pagination.d.mts +32 -0
  1238. package/dist/pagination.d.mts.map +1 -0
  1239. package/dist/pagination.mjs +67 -0
  1240. package/dist/pagination.mjs.map +1 -0
  1241. package/dist/permission-matrix.d.mts +43 -0
  1242. package/dist/permission-matrix.d.mts.map +1 -0
  1243. package/dist/permission-matrix.mjs +146 -0
  1244. package/dist/permission-matrix.mjs.map +1 -0
  1245. package/dist/popover.d.mts +19 -0
  1246. package/dist/popover.d.mts.map +1 -0
  1247. package/dist/popover.mjs +31 -0
  1248. package/dist/popover.mjs.map +1 -0
  1249. package/dist/product-package-detail.d.mts +173 -0
  1250. package/dist/product-package-detail.d.mts.map +1 -0
  1251. package/dist/product-package-detail.mjs +521 -0
  1252. package/dist/product-package-detail.mjs.map +1 -0
  1253. package/dist/progress-comparison.d.mts +93 -0
  1254. package/dist/progress-comparison.d.mts.map +1 -0
  1255. package/dist/progress-comparison.mjs +253 -0
  1256. package/dist/progress-comparison.mjs.map +1 -0
  1257. package/dist/progress-list-item.d.mts +46 -0
  1258. package/dist/progress-list-item.d.mts.map +1 -0
  1259. package/dist/progress-list-item.mjs +79 -0
  1260. package/dist/progress-list-item.mjs.map +1 -0
  1261. package/dist/progress-sheet.d.mts +39 -0
  1262. package/dist/progress-sheet.d.mts.map +1 -0
  1263. package/dist/progress-sheet.mjs +760 -0
  1264. package/dist/progress-sheet.mjs.map +1 -0
  1265. package/dist/progress-stat.d.mts +26 -0
  1266. package/dist/progress-stat.d.mts.map +1 -0
  1267. package/dist/progress-stat.mjs +54 -0
  1268. package/dist/progress-stat.mjs.map +1 -0
  1269. package/dist/progress.d.mts +13 -0
  1270. package/dist/progress.d.mts.map +1 -0
  1271. package/dist/progress.mjs +32 -0
  1272. package/dist/progress.mjs.map +1 -0
  1273. package/dist/prompt-input.d.mts +108 -0
  1274. package/dist/prompt-input.d.mts.map +1 -0
  1275. package/dist/prompt-input.mjs +400 -0
  1276. package/dist/prompt-input.mjs.map +1 -0
  1277. package/dist/property-list.d.mts +37 -0
  1278. package/dist/property-list.d.mts.map +1 -0
  1279. package/dist/property-list.mjs +60 -0
  1280. package/dist/property-list.mjs.map +1 -0
  1281. package/dist/push-panel.d.mts +75 -0
  1282. package/dist/push-panel.d.mts.map +1 -0
  1283. package/dist/push-panel.mjs +182 -0
  1284. package/dist/push-panel.mjs.map +1 -0
  1285. package/dist/radio-group.d.mts +9 -0
  1286. package/dist/radio-group.d.mts.map +1 -0
  1287. package/dist/radio-group.mjs +27 -0
  1288. package/dist/radio-group.mjs.map +1 -0
  1289. package/dist/record-detail-shell.d.mts +46 -0
  1290. package/dist/record-detail-shell.d.mts.map +1 -0
  1291. package/dist/record-detail-shell.mjs +29 -0
  1292. package/dist/record-detail-shell.mjs.map +1 -0
  1293. package/dist/resizable.d.mts +11 -0
  1294. package/dist/resizable.d.mts.map +1 -0
  1295. package/dist/resizable.mjs +23 -0
  1296. package/dist/resizable.mjs.map +1 -0
  1297. package/dist/resize-handle.d.mts +19 -0
  1298. package/dist/resize-handle.d.mts.map +1 -0
  1299. package/dist/resize-handle.mjs +45 -0
  1300. package/dist/resize-handle.mjs.map +1 -0
  1301. package/dist/responder-detail-panel.d.mts +72 -0
  1302. package/dist/responder-detail-panel.d.mts.map +1 -0
  1303. package/dist/responder-detail-panel.mjs +232 -0
  1304. package/dist/responder-detail-panel.mjs.map +1 -0
  1305. package/dist/rule-row.d.mts +63 -0
  1306. package/dist/rule-row.d.mts.map +1 -0
  1307. package/dist/rule-row.mjs +97 -0
  1308. package/dist/rule-row.mjs.map +1 -0
  1309. package/dist/schedule-week-bar.d.mts +24 -0
  1310. package/dist/schedule-week-bar.d.mts.map +1 -0
  1311. package/dist/schedule-week-bar.mjs +99 -0
  1312. package/dist/schedule-week-bar.mjs.map +1 -0
  1313. package/dist/score-gauge.d.mts +24 -0
  1314. package/dist/score-gauge.d.mts.map +1 -0
  1315. package/dist/score-gauge.mjs +73 -0
  1316. package/dist/score-gauge.mjs.map +1 -0
  1317. package/dist/scroll-area.d.mts +27 -0
  1318. package/dist/scroll-area.d.mts.map +1 -0
  1319. package/dist/scroll-area.mjs +35 -0
  1320. package/dist/scroll-area.mjs.map +1 -0
  1321. package/dist/search-filter-bar.d.mts +22 -0
  1322. package/dist/search-filter-bar.d.mts.map +1 -0
  1323. package/dist/search-filter-bar.mjs +56 -0
  1324. package/dist/search-filter-bar.mjs.map +1 -0
  1325. package/dist/section-header.d.mts +22 -0
  1326. package/dist/section-header.d.mts.map +1 -0
  1327. package/dist/section-header.mjs +32 -0
  1328. package/dist/section-header.mjs.map +1 -0
  1329. package/dist/section-panel.d.mts +47 -0
  1330. package/dist/section-panel.d.mts.map +1 -0
  1331. package/dist/section-panel.mjs +78 -0
  1332. package/dist/section-panel.mjs.map +1 -0
  1333. package/dist/section.d.mts +15 -0
  1334. package/dist/section.d.mts.map +1 -0
  1335. package/dist/section.mjs +34 -0
  1336. package/dist/section.mjs.map +1 -0
  1337. package/dist/segmented-control.d.mts +26 -0
  1338. package/dist/segmented-control.d.mts.map +1 -0
  1339. package/dist/segmented-control.mjs +70 -0
  1340. package/dist/segmented-control.mjs.map +1 -0
  1341. package/dist/select.d.mts +87 -0
  1342. package/dist/select.d.mts.map +1 -0
  1343. package/dist/select.mjs +280 -0
  1344. package/dist/select.mjs.map +1 -0
  1345. package/dist/selectable-card.d.mts +39 -0
  1346. package/dist/selectable-card.d.mts.map +1 -0
  1347. package/dist/selectable-card.mjs +102 -0
  1348. package/dist/selectable-card.mjs.map +1 -0
  1349. package/dist/separator.d.mts +8 -0
  1350. package/dist/separator.d.mts.map +1 -0
  1351. package/dist/separator.mjs +18 -0
  1352. package/dist/separator.mjs.map +1 -0
  1353. package/dist/services/chatService.d.mts +11 -0
  1354. package/dist/services/chatService.d.mts.map +1 -0
  1355. package/dist/services/chatService.mjs +44 -0
  1356. package/dist/services/chatService.mjs.map +1 -0
  1357. package/dist/setup-steps-checklist.d.mts +50 -0
  1358. package/dist/setup-steps-checklist.d.mts.map +1 -0
  1359. package/dist/setup-steps-checklist.mjs +183 -0
  1360. package/dist/setup-steps-checklist.mjs.map +1 -0
  1361. package/dist/sheet.d.mts +41 -0
  1362. package/dist/sheet.d.mts.map +1 -0
  1363. package/dist/sheet.mjs +71 -0
  1364. package/dist/sheet.mjs.map +1 -0
  1365. package/dist/side-menu.d.mts +61 -0
  1366. package/dist/side-menu.d.mts.map +1 -0
  1367. package/dist/side-menu.mjs +160 -0
  1368. package/dist/side-menu.mjs.map +1 -0
  1369. package/dist/sidebar.d.mts +36 -0
  1370. package/dist/sidebar.d.mts.map +1 -0
  1371. package/dist/sidebar.mjs +159 -0
  1372. package/dist/sidebar.mjs.map +1 -0
  1373. package/dist/single-house-view.d.mts +13 -0
  1374. package/dist/single-house-view.d.mts.map +1 -0
  1375. package/dist/single-house-view.mjs +506 -0
  1376. package/dist/single-house-view.mjs.map +1 -0
  1377. package/dist/site-image-viewer/batches.mjs +362 -0
  1378. package/dist/site-image-viewer/batches.mjs.map +1 -0
  1379. package/dist/site-image-viewer/blocks-zone-1a.mjs +1815 -0
  1380. package/dist/site-image-viewer/blocks-zone-1a.mjs.map +1 -0
  1381. package/dist/site-image-viewer/blocks-zone-1b.mjs +2623 -0
  1382. package/dist/site-image-viewer/blocks-zone-1b.mjs.map +1 -0
  1383. package/dist/site-image-viewer/legend-items.d.mts +6 -0
  1384. package/dist/site-image-viewer/legend-items.d.mts.map +1 -0
  1385. package/dist/site-image-viewer/legend-items.mjs +104 -0
  1386. package/dist/site-image-viewer/legend-items.mjs.map +1 -0
  1387. package/dist/site-image-viewer/milestone-ramp.d.mts +81 -0
  1388. package/dist/site-image-viewer/milestone-ramp.d.mts.map +1 -0
  1389. package/dist/site-image-viewer/milestone-ramp.mjs +112 -0
  1390. package/dist/site-image-viewer/milestone-ramp.mjs.map +1 -0
  1391. package/dist/site-image-viewer/phases.mjs +60 -0
  1392. package/dist/site-image-viewer/phases.mjs.map +1 -0
  1393. package/dist/site-image-viewer/site-legend.d.mts +20 -0
  1394. package/dist/site-image-viewer/site-legend.d.mts.map +1 -0
  1395. package/dist/site-image-viewer/site-legend.mjs +113 -0
  1396. package/dist/site-image-viewer/site-legend.mjs.map +1 -0
  1397. package/dist/site-image-viewer/types.d.mts +32 -0
  1398. package/dist/site-image-viewer/types.d.mts.map +1 -0
  1399. package/dist/site-image-viewer/types.mjs +1 -0
  1400. package/dist/site-image-viewer/villa-hover-card.d.mts +15 -0
  1401. package/dist/site-image-viewer/villa-hover-card.d.mts.map +1 -0
  1402. package/dist/site-image-viewer/villa-hover-card.mjs +48 -0
  1403. package/dist/site-image-viewer/villa-hover-card.mjs.map +1 -0
  1404. package/dist/site-image-viewer/villas.mjs +34494 -0
  1405. package/dist/site-image-viewer/villas.mjs.map +1 -0
  1406. package/dist/site-image-viewer/zone1b-villas.mjs +36211 -0
  1407. package/dist/site-image-viewer/zone1b-villas.mjs.map +1 -0
  1408. package/dist/site-image-viewer/zones-marketing.mjs +114 -0
  1409. package/dist/site-image-viewer/zones-marketing.mjs.map +1 -0
  1410. package/dist/site-image-viewer/zones.mjs +114 -0
  1411. package/dist/site-image-viewer/zones.mjs.map +1 -0
  1412. package/dist/site-image-viewer-fixtures.d.mts +44 -0
  1413. package/dist/site-image-viewer-fixtures.d.mts.map +1 -0
  1414. package/dist/site-image-viewer-fixtures.mjs +112 -0
  1415. package/dist/site-image-viewer-fixtures.mjs.map +1 -0
  1416. package/dist/site-image-viewer.d.mts +98 -0
  1417. package/dist/site-image-viewer.d.mts.map +1 -0
  1418. package/dist/site-image-viewer.mjs +501 -0
  1419. package/dist/site-image-viewer.mjs.map +1 -0
  1420. package/dist/site-panel.d.mts +123 -0
  1421. package/dist/site-panel.d.mts.map +1 -0
  1422. package/dist/site-panel.mjs +1413 -0
  1423. package/dist/site-panel.mjs.map +1 -0
  1424. package/dist/site-reality-viewer.d.mts +46 -0
  1425. package/dist/site-reality-viewer.d.mts.map +1 -0
  1426. package/dist/site-reality-viewer.mjs +436 -0
  1427. package/dist/site-reality-viewer.mjs.map +1 -0
  1428. package/dist/site-toolbar.d.mts +54 -0
  1429. package/dist/site-toolbar.d.mts.map +1 -0
  1430. package/dist/site-toolbar.mjs +110 -0
  1431. package/dist/site-toolbar.mjs.map +1 -0
  1432. package/dist/skeleton.d.mts +6 -0
  1433. package/dist/skeleton.d.mts.map +1 -0
  1434. package/dist/skeleton.mjs +14 -0
  1435. package/dist/skeleton.mjs.map +1 -0
  1436. package/dist/slider.d.mts +8 -0
  1437. package/dist/slider.d.mts.map +1 -0
  1438. package/dist/slider.mjs +20 -0
  1439. package/dist/slider.mjs.map +1 -0
  1440. package/dist/sonner.d.mts +8 -0
  1441. package/dist/sonner.d.mts.map +1 -0
  1442. package/dist/sonner.mjs +20 -0
  1443. package/dist/sonner.mjs.map +1 -0
  1444. package/dist/spinner.d.mts +12 -0
  1445. package/dist/spinner.d.mts.map +1 -0
  1446. package/dist/spinner.mjs +38 -0
  1447. package/dist/spinner.mjs.map +1 -0
  1448. package/dist/stack.d.mts +18 -0
  1449. package/dist/stack.d.mts.map +1 -0
  1450. package/dist/stack.mjs +61 -0
  1451. package/dist/stack.mjs.map +1 -0
  1452. package/dist/stage-content.d.mts +13 -0
  1453. package/dist/stage-content.d.mts.map +1 -0
  1454. package/dist/stage-content.mjs +664 -0
  1455. package/dist/stage-content.mjs.map +1 -0
  1456. package/dist/status-dot.d.mts +18 -0
  1457. package/dist/status-dot.d.mts.map +1 -0
  1458. package/dist/status-dot.mjs +89 -0
  1459. package/dist/status-dot.mjs.map +1 -0
  1460. package/dist/stepper.d.mts +19 -0
  1461. package/dist/stepper.d.mts.map +1 -0
  1462. package/dist/stepper.mjs +113 -0
  1463. package/dist/stepper.mjs.map +1 -0
  1464. package/dist/styles.css +1 -0
  1465. package/dist/styles.tw4.css +1 -0
  1466. package/dist/switch.d.mts +12 -0
  1467. package/dist/switch.d.mts.map +1 -0
  1468. package/dist/switch.mjs +17 -0
  1469. package/dist/switch.mjs.map +1 -0
  1470. package/dist/tab-list.d.mts +33 -0
  1471. package/dist/tab-list.d.mts.map +1 -0
  1472. package/dist/tab-list.mjs +90 -0
  1473. package/dist/tab-list.mjs.map +1 -0
  1474. package/dist/table.d.mts +14 -0
  1475. package/dist/table.d.mts.map +1 -0
  1476. package/dist/table.mjs +60 -0
  1477. package/dist/table.mjs.map +1 -0
  1478. package/dist/tabs.d.mts +42 -0
  1479. package/dist/tabs.d.mts.map +1 -0
  1480. package/dist/tabs.mjs +258 -0
  1481. package/dist/tabs.mjs.map +1 -0
  1482. package/dist/task-monitor.d.mts +70 -0
  1483. package/dist/task-monitor.d.mts.map +1 -0
  1484. package/dist/task-monitor.mjs +319 -0
  1485. package/dist/task-monitor.mjs.map +1 -0
  1486. package/dist/text.d.mts +18 -0
  1487. package/dist/text.d.mts.map +1 -0
  1488. package/dist/text.mjs +60 -0
  1489. package/dist/text.mjs.map +1 -0
  1490. package/dist/textarea.d.mts +7 -0
  1491. package/dist/textarea.d.mts.map +1 -0
  1492. package/dist/textarea.mjs +15 -0
  1493. package/dist/textarea.mjs.map +1 -0
  1494. package/dist/thinking-pill.d.mts +15 -0
  1495. package/dist/thinking-pill.d.mts.map +1 -0
  1496. package/dist/thinking-pill.mjs +28 -0
  1497. package/dist/thinking-pill.mjs.map +1 -0
  1498. package/dist/thumbnail.d.mts +20 -0
  1499. package/dist/thumbnail.d.mts.map +1 -0
  1500. package/dist/thumbnail.mjs +81 -0
  1501. package/dist/thumbnail.mjs.map +1 -0
  1502. package/dist/time-input.d.mts +15 -0
  1503. package/dist/time-input.d.mts.map +1 -0
  1504. package/dist/time-input.mjs +21 -0
  1505. package/dist/time-input.mjs.map +1 -0
  1506. package/dist/time-scrubber.d.mts +93 -0
  1507. package/dist/time-scrubber.d.mts.map +1 -0
  1508. package/dist/time-scrubber.mjs +420 -0
  1509. package/dist/time-scrubber.mjs.map +1 -0
  1510. package/dist/timeline-range-selector.d.mts +30 -0
  1511. package/dist/timeline-range-selector.d.mts.map +1 -0
  1512. package/dist/timeline-range-selector.mjs +232 -0
  1513. package/dist/timeline-range-selector.mjs.map +1 -0
  1514. package/dist/timestamp-picker.d.mts +32 -0
  1515. package/dist/timestamp-picker.d.mts.map +1 -0
  1516. package/dist/timestamp-picker.mjs +143 -0
  1517. package/dist/timestamp-picker.mjs.map +1 -0
  1518. package/dist/timestamp.d.mts +15 -0
  1519. package/dist/timestamp.d.mts.map +1 -0
  1520. package/dist/timestamp.mjs +61 -0
  1521. package/dist/timestamp.mjs.map +1 -0
  1522. package/dist/toast.d.mts +18 -0
  1523. package/dist/toast.d.mts.map +1 -0
  1524. package/dist/toast.mjs +59 -0
  1525. package/dist/toast.mjs.map +1 -0
  1526. package/dist/toaster.d.mts +5 -0
  1527. package/dist/toaster.d.mts.map +1 -0
  1528. package/dist/toaster.mjs +23 -0
  1529. package/dist/toaster.mjs.map +1 -0
  1530. package/dist/toggle-group.d.mts +16 -0
  1531. package/dist/toggle-group.d.mts.map +1 -0
  1532. package/dist/toggle-group.mjs +41 -0
  1533. package/dist/toggle-group.mjs.map +1 -0
  1534. package/dist/toggle.d.mts +16 -0
  1535. package/dist/toggle.d.mts.map +1 -0
  1536. package/dist/toggle.mjs +38 -0
  1537. package/dist/toggle.mjs.map +1 -0
  1538. package/dist/tokenizer.d.mts +23 -0
  1539. package/dist/tokenizer.d.mts.map +1 -0
  1540. package/dist/tokenizer.mjs +87 -0
  1541. package/dist/tokenizer.mjs.map +1 -0
  1542. package/dist/tones.d.mts +59 -0
  1543. package/dist/tones.d.mts.map +1 -0
  1544. package/dist/tones.mjs +177 -0
  1545. package/dist/tones.mjs.map +1 -0
  1546. package/dist/tool-call.d.mts +29 -0
  1547. package/dist/tool-call.d.mts.map +1 -0
  1548. package/dist/tool-call.mjs +89 -0
  1549. package/dist/tool-call.mjs.map +1 -0
  1550. package/dist/toolbar-color-picker.d.mts +50 -0
  1551. package/dist/toolbar-color-picker.d.mts.map +1 -0
  1552. package/dist/toolbar-color-picker.mjs +238 -0
  1553. package/dist/toolbar-color-picker.mjs.map +1 -0
  1554. package/dist/toolbar-pager.d.mts +17 -0
  1555. package/dist/toolbar-pager.d.mts.map +1 -0
  1556. package/dist/toolbar-pager.mjs +40 -0
  1557. package/dist/toolbar-pager.mjs.map +1 -0
  1558. package/dist/toolbar-stats.d.mts +34 -0
  1559. package/dist/toolbar-stats.d.mts.map +1 -0
  1560. package/dist/toolbar-stats.mjs +53 -0
  1561. package/dist/toolbar-stats.mjs.map +1 -0
  1562. package/dist/toolbar.d.mts +98 -0
  1563. package/dist/toolbar.d.mts.map +1 -0
  1564. package/dist/toolbar.mjs +86 -0
  1565. package/dist/toolbar.mjs.map +1 -0
  1566. package/dist/tooltip.d.mts +30 -0
  1567. package/dist/tooltip.d.mts.map +1 -0
  1568. package/dist/tooltip.mjs +83 -0
  1569. package/dist/tooltip.mjs.map +1 -0
  1570. package/dist/tree-list.d.mts +38 -0
  1571. package/dist/tree-list.d.mts.map +1 -0
  1572. package/dist/tree-list.mjs +95 -0
  1573. package/dist/tree-list.mjs.map +1 -0
  1574. package/dist/tree-row.d.mts +84 -0
  1575. package/dist/tree-row.d.mts.map +1 -0
  1576. package/dist/tree-row.mjs +150 -0
  1577. package/dist/tree-row.mjs.map +1 -0
  1578. package/dist/trend-chart.d.mts +28 -0
  1579. package/dist/trend-chart.d.mts.map +1 -0
  1580. package/dist/trend-chart.mjs +33 -0
  1581. package/dist/trend-chart.mjs.map +1 -0
  1582. package/dist/turn-timer.d.mts +23 -0
  1583. package/dist/turn-timer.d.mts.map +1 -0
  1584. package/dist/turn-timer.mjs +51 -0
  1585. package/dist/turn-timer.mjs.map +1 -0
  1586. package/dist/typeahead-item.d.mts +34 -0
  1587. package/dist/typeahead-item.d.mts.map +1 -0
  1588. package/dist/typeahead-item.mjs +74 -0
  1589. package/dist/typeahead-item.mjs.map +1 -0
  1590. package/dist/types/chat.d.mts +66 -0
  1591. package/dist/types/chat.d.mts.map +1 -0
  1592. package/dist/types/chat.mjs +1 -0
  1593. package/dist/types.d.mts +44 -0
  1594. package/dist/types.d.mts.map +1 -0
  1595. package/dist/types.mjs +49 -0
  1596. package/dist/types.mjs.map +1 -0
  1597. package/dist/typography.d.mts +17 -0
  1598. package/dist/typography.d.mts.map +1 -0
  1599. package/dist/typography.mjs +75 -0
  1600. package/dist/typography.mjs.map +1 -0
  1601. package/dist/use-debounced-value.d.mts +11 -0
  1602. package/dist/use-debounced-value.d.mts.map +1 -0
  1603. package/dist/use-debounced-value.mjs +25 -0
  1604. package/dist/use-debounced-value.mjs.map +1 -0
  1605. package/dist/use-document-dir.d.mts +15 -0
  1606. package/dist/use-document-dir.d.mts.map +1 -0
  1607. package/dist/use-document-dir.mjs +33 -0
  1608. package/dist/use-document-dir.mjs.map +1 -0
  1609. package/dist/use-persistent-state.d.mts +9 -0
  1610. package/dist/use-persistent-state.d.mts.map +1 -0
  1611. package/dist/use-persistent-state.mjs +29 -0
  1612. package/dist/use-persistent-state.mjs.map +1 -0
  1613. package/dist/use-toast.d.mts +47 -0
  1614. package/dist/use-toast.d.mts.map +1 -0
  1615. package/dist/use-toast.mjs +119 -0
  1616. package/dist/use-toast.mjs.map +1 -0
  1617. package/dist/vertical-zoom-tools.d.mts +27 -0
  1618. package/dist/vertical-zoom-tools.d.mts.map +1 -0
  1619. package/dist/vertical-zoom-tools.mjs +66 -0
  1620. package/dist/vertical-zoom-tools.mjs.map +1 -0
  1621. package/dist/view-tab-bar.d.mts +75 -0
  1622. package/dist/view-tab-bar.d.mts.map +1 -0
  1623. package/dist/view-tab-bar.mjs +80 -0
  1624. package/dist/view-tab-bar.mjs.map +1 -0
  1625. package/dist/viewer-toolbar.d.mts +41 -0
  1626. package/dist/viewer-toolbar.d.mts.map +1 -0
  1627. package/dist/viewer-toolbar.mjs +271 -0
  1628. package/dist/viewer-toolbar.mjs.map +1 -0
  1629. package/dist/violation-list.d.mts +26 -0
  1630. package/dist/violation-list.d.mts.map +1 -0
  1631. package/dist/violation-list.mjs +53 -0
  1632. package/dist/violation-list.mjs.map +1 -0
  1633. package/dist/walkthrough-modal.d.mts +12 -0
  1634. package/dist/walkthrough-modal.d.mts.map +1 -0
  1635. package/dist/walkthrough-modal.mjs +28 -0
  1636. package/dist/walkthrough-modal.mjs.map +1 -0
  1637. package/dist/walkthrough-tile.d.mts +17 -0
  1638. package/dist/walkthrough-tile.d.mts.map +1 -0
  1639. package/dist/walkthrough-tile.mjs +75 -0
  1640. package/dist/walkthrough-tile.mjs.map +1 -0
  1641. package/dist/week-selector.d.mts +45 -0
  1642. package/dist/week-selector.d.mts.map +1 -0
  1643. package/dist/week-selector.mjs +101 -0
  1644. package/dist/week-selector.mjs.map +1 -0
  1645. package/dist/widget-card.d.mts +18 -0
  1646. package/dist/widget-card.d.mts.map +1 -0
  1647. package/dist/widget-card.mjs +46 -0
  1648. package/dist/widget-card.mjs.map +1 -0
  1649. package/dist/wizard-dialog.d.mts +68 -0
  1650. package/dist/wizard-dialog.d.mts.map +1 -0
  1651. package/dist/wizard-dialog.mjs +108 -0
  1652. package/dist/wizard-dialog.mjs.map +1 -0
  1653. package/dist/work-item-card.d.mts +38 -0
  1654. package/dist/work-item-card.d.mts.map +1 -0
  1655. package/dist/work-item-card.mjs +231 -0
  1656. package/dist/work-item-card.mjs.map +1 -0
  1657. package/dist/worker-profile.d.mts +244 -0
  1658. package/dist/worker-profile.d.mts.map +1 -0
  1659. package/dist/worker-profile.mjs +621 -0
  1660. package/dist/worker-profile.mjs.map +1 -0
  1661. package/dist/zoom-tools.d.mts +29 -0
  1662. package/dist/zoom-tools.d.mts.map +1 -0
  1663. package/dist/zoom-tools.mjs +94 -0
  1664. package/dist/zoom-tools.mjs.map +1 -0
  1665. package/package.json +1792 -0
  1666. package/skills/core-ui-charts/SKILL.md +243 -0
  1667. package/skills/core-ui-chat/SKILL.md +260 -0
  1668. package/skills/core-ui-components/SKILL.md +299 -0
  1669. package/skills/core-ui-composition/SKILL.md +186 -0
  1670. package/skills/core-ui-data-table/SKILL.md +243 -0
  1671. package/skills/core-ui-forms/SKILL.md +289 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footprint-viewer.mjs","names":[],"sources":["../src/footprint-viewer.ts"],"sourcesContent":["// Headless projected-footprints-on-reality-mesh viewer (no built-in UI). Streams the DroneDeploy reality\n// mesh (Cesium 3D Tiles) and paints every villa's ground footprint straight DOWN onto the mesh surface,\n// coloured by construction progress — a \"progress light from above\". There is NO IFC fragment: 684 villa\n// outline polygons (~180 KB `footprints.json`) are rasterised into one canvas texture and projected onto the\n// tiles in world space via an onBeforeCompile shader; recolouring is a single texture redraw.\n//\n// Identity is the villa code `${model}-${roshnPlotNumber}` (e.g. \"VL6-1901\"); every hover/select callback\n// returns it, and `getVillaRecord(code)` returns its zone/batch/progress. Adapted from the\n// embed-projected-footprints handoff reference; the DOM panel/tooltip are removed and hover/select are routed\n// through callbacks. A few parity helpers (setMeshVisible / setModelVisible / setModelOpacity /\n// setColourMode / setLabelsVisible / fitVilla) are added so the existing host UI can drive it unchanged.\nimport {TilesRenderer} from \"3d-tiles-renderer\";\nimport * as OBC from \"@thatopen/components\";\nimport * as THREE from \"three\";\nimport {DRACOLoader} from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport {GLTFLoader} from \"three/examples/jsm/loaders/GLTFLoader.js\";\n\nexport type ColorMode = \"progress\" | \"off\";\n\nexport interface VillaRecord {\n\tcode: string;\n\tzone?: string; // \"1A\" | \"1B\" — from progress JSON (neighbourhood)\n\tbatch?: string; // \"10\" — from progress JSON (batchNumber)\n\tblock?: string;\n\tactual?: number;\n\tplanned?: number;\n\tvariance?: number;\n\tcolor: string; // milestone hex, or the grey UNASSIGNED fallback\n\tcontractor?: string;\n\tmodel?: string;\n\tplot?: string;\n\tunitType?: string;\n\ttypology?: string;\n}\n\nexport interface FootprintViewerOptions {\n\ttilesetUrl?: string; // default \"/reality-mesh/capture2/mesh_3d/tileset.json\"\n\tdracoPath?: string; // default \"/reality-mesh/draco/gltf/\"\n\tworkerUrl?: string; // default \"/worker.mjs\"\n\tfootprintsUrl?: string; // default \"/footprints.json\"\n\tprogressUrls?: string[]; // default [\"/house-progress.json\", \"/house-progress-IMA.json\"]\n\tmeshOpacity?: number; // default 0.85\n\tprojectionStrength?: number; // default 0.85\n\tcolorMode?: ColorMode; // default \"progress\"\n\ttransparent?: boolean; // clear with alpha 0 so the host can place its own image/backdrop behind the canvas\n\tonReady?: (v: FootprintViewer) => void;\n\tonHover?: (code: string | null) => void; // villa code under the cursor\n\tonSelect?: (code: string | null) => void; // villa code clicked / selected\n\t// Called each frame with how the host's backdrop image should render for the current camera: opacity 1→0\n\t// and blur growing as you zoom in (and fading on tilt/rotate), scale tracking the zoom.\n\tonBackdrop?: (s: {opacity: number; blurPx: number; scale: number}) => void;\n}\n\nexport interface FootprintViewer {\n\tsetMeshOpacity(op: number): void; // 0..1\n\tsetProjectionStrength(s: number): void; // 0..1 — footprint colour blend on the mesh\n\tsetColorMode(mode: ColorMode): void; // \"progress\" paints footprints, \"off\" hides them\n\tsetVillaColours(map: Record<string, string>): void; // villa code -> hex; live recolour\n\tsetVisibleVillas(codes: string[] | null): void; // only these codes paint their footprint; null = all (no filter)\n\tgetVillaCodes(): string[];\n\tgetVillaRecord(code: string): VillaRecord | null; // zone/batch/actual/… by code\n\tselectVilla(code: string | null): void; // programmatic select\n\tgetSelectedVilla(): string | null;\n\tfitAll(): Promise<void>;\n\tfitVilla(code: string): Promise<void>; // frame a single villa (6× its footprint box)\n\tresetView(animate?: boolean): Promise<void>; // return to the canonical open pose (call on opening Reality)\n\tsetView(\n\t\tpose: {elevationDeg?: number; azimuthDeg?: number; zoom?: number; panX?: number; panZ?: number},\n\t\tanimate?: boolean,\n\t): Promise<void>;\n\tgetZoomFactor(): number; // 1 ≈ whole-site fit; higher = more zoomed in (a single villa framing is ≈8–10)\n\tisZoomedIn(): boolean; // true once the camera is meaningfully closer than the default open distance\n\tzoomIn(): void; // dolly the camera closer (toolbar +)\n\tzoomOut(): void; // dolly the camera further (toolbar −)\n\tsetInteractionMode(mode: \"orbit\" | \"pan\"): void; // left-drag = rotate vs pan\n\ttopDownView(): Promise<void>; // straight-down satellite view, fitted to the site\n\tgetCameraPose(): {\n\t\tposition: [number, number, number];\n\t\ttarget: [number, number, number];\n\t\televationDeg: number; // above the horizontal (90 = straight down)\n\t\tazimuthDeg: number;\n\t\tdistance: number;\n\t};\n\t// Parity helpers so a host UI written against the old reality-mesh viewer drives this one unchanged:\n\tsetMeshVisible(v: boolean): void;\n\tsetModelVisible(v: boolean): void; // maps to colour mode (the footprint projection is the \"model\")\n\tsetModelOpacity(op: number): void; // maps to projection strength\n\tsetColourMode(mode: ColorMode | \"material\"): void; // \"material\" is treated as \"off\"\n\tsetLabelsVisible(v: boolean): void; // master toggle for all LOD labels (Zone → Block → Villa by zoom)\n\tonHover?: (code: string | null) => void;\n\tonSelect?: (code: string | null) => void;\n\tdispose(): void;\n}\n\n// --- Fixed alignment (see handoff; do not change unless re-fitting the mesh) ---\nconst SEED = {offX: 512, offY: -560, scale: 3.29, rot: -170, zoff: 26.9};\nconst CENTER = {x: -452.29, z: 1069.75};\nconst FLOOR_Y = 0;\nconst UNASSIGNED = \"#9ca3af\";\n\n// Canonical \"open\" camera pose — the 3/4 oblique the Reality view lands on every time it's opened.\n// elevationDeg = degrees above the horizontal (90 = straight down), azimuthDeg = rotation around +Y,\n// zoom = distance multiplier (1 ≈ frame the whole site). Tune with the dev sliders, then bake final values here.\nexport const OPEN_POSE = {elevationDeg: 42, azimuthDeg: 78, zoom: 0.95, panX: 0.14, panZ: 0.66};\n// Level-of-detail labels keyed on `frac` = camera distance ÷ full-site fit distance (1 ≈ fully zoomed out to\n// the site fit; smaller = more zoomed in). As you zoom IN the labels get finer: Zone → Block → Villa numbers.\n// Zoom% ≈ 100×(1 − frac), so the bands below map to the requested ~20/50/80% hand-offs:\n// • BLOCK..ZONE (0.50 < frac ≤ 0.80) → Zone labels (~20–50% zoom) — one per zone, centred on its villas\n// • VILLA..BLOCK (0.20 < frac ≤ 0.50) → Block labels (~50–80% zoom) — one per block, centred on its villas\n// • frac ≤ LABEL_ZOOM_FRAC (0.20) → per-villa number chips (~80%+ zoom)\n// Lower a threshold to require MORE zoom before that tier appears.\nconst LABEL_ZOOM_FRAC = 0.2;\nconst BLOCK_LABEL_FRAC = 0.5;\nconst ZONE_LABEL_FRAC = 0.8;\n// Plan-image backdrop behaviour as the camera moves (the host applies these to the <img>):\nconst BACKDROP_ZOOM_FADE = 0.3; // fully faded once zoomed in 30% closer than the open distance\nconst BACKDROP_ZOOMOUT_FADE = 0.1; // fully faded once zoomed out 10% further than the open distance\nconst BACKDROP_BASE_BLUR = 4; // px blur at the open pose\nconst BACKDROP_MAX_BLUR = 22; // px blur as the fade completes\nconst BACKDROP_TILT_FADE = 0.05; // fade to 0 once tilt/rotation deviates >5% of its range from the open pose\n\ntype Footprint = {z: string; p: [number, number][]};\ntype ProgressRec = {\n\tcolor?: string;\n\tactual?: number;\n\tplanned?: number;\n\tvariance?: number;\n\tlabel?: string;\n\tzone?: string;\n\tbatch?: string;\n\tblock?: string;\n\tcontractor?: string;\n\tmodel?: string;\n\tplot?: string;\n\tunitType?: string;\n\ttypology?: string;\n};\n\nexport async function createFootprintViewer(\n\tcontainer: HTMLElement,\n\toptions: FootprintViewerOptions = {},\n): Promise<FootprintViewer> {\n\tconst o = {\n\t\ttilesetUrl: \"/reality-mesh/capture2/mesh_3d/tileset.json\",\n\t\tdracoPath: \"/reality-mesh/draco/gltf/\",\n\t\tworkerUrl: \"/worker.mjs\",\n\t\tfootprintsUrl: \"/footprints.json\",\n\t\tprogressUrls: [\"/house-progress.json\", \"/house-progress-IMA.json\"],\n\t\tmeshOpacity: 0.85,\n\t\tprojectionStrength: 0.85,\n\t\tcolorMode: \"progress\" as ColorMode,\n\t\t...options,\n\t};\n\n\tlet meshOp = o.meshOpacity;\n\tlet strength = o.projectionStrength;\n\tlet colorMode: ColorMode = o.colorMode;\n\n\t// --- World (ThatOpen scene/camera/renderer; drives the render loop) --------\n\tconst components = new OBC.Components();\n\tconst world = components.get(OBC.Worlds).create<OBC.SimpleScene, OBC.OrthoPerspectiveCamera, OBC.SimpleRenderer>();\n\tworld.scene = new OBC.SimpleScene(components);\n\tworld.scene.setup();\n\t// Transparent clear lets the host place an image (e.g. the plan backdrop) behind the canvas so it renders\n\t// exactly like the 2D plan image; otherwise a flat dark grey.\n\tworld.scene.three.background = o.transparent ? null : new THREE.Color(\"#1a1d21\");\n\tworld.renderer = new OBC.SimpleRenderer(components, container);\n\t// Hide the ThatOpen logo the renderer injects into the container (a `data-thatopen-*` overlay div).\n\tworld.renderer.showLogo = false;\n\tworld.camera = new OBC.OrthoPerspectiveCamera(components);\n\tawait world.camera.controls.setLookAt(12, 10, 12, 0, 0, 0);\n\tcomponents.init();\n\n\tconst gl = (world.renderer as OBC.SimpleRenderer).three;\n\tgl.setPixelRatio(Math.min(window.devicePixelRatio, 1.5));\n\tif (o.transparent) gl.setClearColor(0x000000, 0); // see-through where nothing renders (host draws the backdrop)\n\n\t// Zoom out over the ~1.8 km site without clipping.\n\tconst FAR = 5_000_000;\n\tconst MAX_DOLLY = 2_000_000;\n\tconst raiseClip = () => {\n\t\tconst cam = world.camera.three as THREE.PerspectiveCamera;\n\t\tif (cam.far !== FAR) {\n\t\t\tcam.far = FAR;\n\t\t\tcam.updateProjectionMatrix();\n\t\t}\n\t\tif (world.camera.controls.maxDistance !== MAX_DOLLY) world.camera.controls.maxDistance = MAX_DOLLY;\n\t};\n\traiseClip();\n\tworld.camera.controls.addEventListener(\"update\", raiseClip);\n\n\t// Fragments worker only drives the render loop (no model is loaded).\n\tconst workerResponse = await fetch(o.workerUrl);\n\tif (!workerResponse.ok) throw new Error(\"Fragments worker (/worker.mjs) not found.\");\n\tconst workerBlob = await workerResponse.blob();\n\tconst workerUrl = URL.createObjectURL(new File([workerBlob], \"worker.mjs\", {type: \"text/javascript\"}));\n\tconst fragments = components.get(OBC.FragmentsManager);\n\tfragments.init(workerUrl);\n\tworld.camera.controls.addEventListener(\"update\", () => fragments.core.update());\n\n\t// --- Footprints + progress (merge Zone A + Zone B into one code->record) ---\n\tconst footRes = await fetch(o.footprintsUrl);\n\tif (!footRes.ok) throw new Error(\"Could not load footprints.json\");\n\tconst footprints = (await footRes.json()) as Record<string, Footprint>;\n\tconst entries = Object.entries(footprints);\n\n\tconst progress = new Map<string, ProgressRec>();\n\tawait Promise.all(\n\t\to.progressUrls.map(async (url) => {\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(url);\n\t\t\t\tif (!res.ok) return;\n\t\t\t\tconst doc = (await res.json()) as {houses: Record<string, ProgressRec>};\n\t\t\t\tfor (const [code, rec] of Object.entries(doc.houses)) progress.set(code, rec);\n\t\t\t} catch {\n\t\t\t\t/* those villas fall back to UNASSIGNED grey */\n\t\t\t}\n\t\t}),\n\t);\n\n\tconst overrideColours = new Map<string, string>();\n\tconst colourFor = (code: string) => overrideColours.get(code) ?? progress.get(code)?.color ?? UNASSIGNED;\n\n\t// --- World XZ bbox of ALL footprints (+ margin) ----------------------------\n\tconst MARGIN = 40;\n\tlet minX = Infinity;\n\tlet minZ = Infinity;\n\tlet maxX = -Infinity;\n\tlet maxZ = -Infinity;\n\tfor (const [, fp] of entries)\n\t\tfor (const [x, z] of fp.p) {\n\t\t\tif (x < minX) minX = x;\n\t\t\tif (x > maxX) maxX = x;\n\t\t\tif (z < minZ) minZ = z;\n\t\t\tif (z > maxZ) maxZ = z;\n\t\t}\n\tminX -= MARGIN;\n\tminZ -= MARGIN;\n\tmaxX += MARGIN;\n\tmaxZ += MARGIN;\n\tconst bw = maxX - minX;\n\tconst bh = maxZ - minZ;\n\n\t// --- Rasterise footprints into an offscreen canvas texture -----------------\n\t// world XZ -> UV: u = (x-minX)/bw, v = (z-minZ)/bh; flipY=false so v=0 is the top canvas row (z=minZ),\n\t// matching the shader's uv.y = (worldZ-minZ)/bh.\n\tconst MAXPX = 2048;\n\tconst cw = bw >= bh ? MAXPX : Math.max(1, Math.round((MAXPX * bw) / bh));\n\tconst ch = bw >= bh ? Math.max(1, Math.round((MAXPX * bh) / bw)) : MAXPX;\n\tconst canvas = document.createElement(\"canvas\");\n\tcanvas.width = cw;\n\tcanvas.height = ch;\n\tconst ctx2d = canvas.getContext(\"2d\");\n\tif (!ctx2d) throw new Error(\"Could not create 2D canvas context.\");\n\n\tconst brighten = (hex: string, amount = 0.45) =>\n\t\t`#${new THREE.Color(hex).lerp(new THREE.Color(1, 1, 1), amount).getHexString()}`;\n\n\tlet hoverCode: string | null = null;\n\tlet selectedCode: string | null = null;\n\t// Search/filter whitelist: when set, only these codes paint their footprint (the rest show bare mesh), so the\n\t// 3D view narrows to the same subset the 2D map + rail show. `null` = no filter (every footprint paints).\n\tlet visibleCodes: Set<string> | null = null;\n\tfunction drawTexture() {\n\t\tctx2d!.clearRect(0, 0, cw, ch);\n\t\tfor (const [code, fp] of entries) {\n\t\t\tif (fp.p.length < 3) continue;\n\t\t\tif (visibleCodes && !visibleCodes.has(code)) continue;\n\t\t\tctx2d!.beginPath();\n\t\t\tfor (let i = 0; i < fp.p.length; i++) {\n\t\t\t\tconst [x, z] = fp.p[i];\n\t\t\t\tconst px = ((x - minX) / bw) * cw;\n\t\t\t\tconst py = ((z - minZ) / bh) * ch;\n\t\t\t\tif (i === 0) ctx2d!.moveTo(px, py);\n\t\t\t\telse ctx2d!.lineTo(px, py);\n\t\t\t}\n\t\t\tctx2d!.closePath();\n\t\t\tconst base = colourFor(code);\n\t\t\tctx2d!.fillStyle = code === hoverCode || code === selectedCode ? brighten(base) : base;\n\t\t\tctx2d!.fill();\n\t\t}\n\t}\n\tdrawTexture();\n\n\tconst texture = new THREE.CanvasTexture(canvas);\n\ttexture.colorSpace = THREE.SRGBColorSpace;\n\ttexture.flipY = false;\n\ttexture.needsUpdate = true;\n\n\tconst projUniforms = {\n\t\tuMin: {value: new THREE.Vector2(minX, minZ)},\n\t\tuSize: {value: new THREE.Vector2(bw, bh)},\n\t\tuTex: {value: texture},\n\t\tuStrength: {value: colorMode === \"off\" ? 0 : strength},\n\t};\n\tconst effectiveStrength = () => (colorMode === \"off\" ? 0 : strength);\n\n\t// Patch a streamed tile material to sample the projection texture from above.\n\tfunction patchMaterial(m: THREE.Material) {\n\t\tconst mm = m as THREE.Material & {userData: {__fpPatched?: boolean}};\n\t\tif (mm.userData.__fpPatched) return;\n\t\tmm.userData.__fpPatched = true;\n\t\tm.onBeforeCompile = (shader) => {\n\t\t\tshader.uniforms.uMin = projUniforms.uMin;\n\t\t\tshader.uniforms.uSize = projUniforms.uSize;\n\t\t\tshader.uniforms.uTex = projUniforms.uTex;\n\t\t\tshader.uniforms.uStrength = projUniforms.uStrength;\n\t\t\tshader.vertexShader = \"varying vec3 vWorldPos;\\n\" + shader.vertexShader;\n\t\t\tshader.vertexShader = shader.vertexShader.replace(\n\t\t\t\t\"#include <begin_vertex>\",\n\t\t\t\t\"#include <begin_vertex>\\n\\tvWorldPos = (modelMatrix * vec4(transformed, 1.0)).xyz;\",\n\t\t\t);\n\t\t\tshader.fragmentShader =\n\t\t\t\t\"uniform vec2 uMin;\\nuniform vec2 uSize;\\nuniform sampler2D uTex;\\nuniform float uStrength;\\nvarying vec3 vWorldPos;\\n\" +\n\t\t\t\tshader.fragmentShader;\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t\"#include <dithering_fragment>\",\n\t\t\t\t\"#include <dithering_fragment>\\n\" +\n\t\t\t\t\t\"\\tvec2 fpUv = (vWorldPos.xz - uMin) / uSize;\\n\" +\n\t\t\t\t\t\"\\tif (fpUv.x >= 0.0 && fpUv.x <= 1.0 && fpUv.y >= 0.0 && fpUv.y <= 1.0) {\\n\" +\n\t\t\t\t\t\"\\t\\tvec4 fpCol = texture2D(uTex, fpUv);\\n\" +\n\t\t\t\t\t\"\\t\\tgl_FragColor.rgb = mix(gl_FragColor.rgb, fpCol.rgb, fpCol.a * uStrength);\\n\" +\n\t\t\t\t\t\"\\t}\",\n\t\t\t);\n\t\t};\n\t\tm.needsUpdate = true;\n\t}\n\n\t// --- Point-in-polygon index for hover/click picking ------------------------\n\ttype Indexed = {code: string; poly: [number, number][]; minx: number; maxx: number; minz: number; maxz: number};\n\tconst index: Indexed[] = [];\n\tfor (const [code, fp] of entries) {\n\t\tif (fp.p.length < 3) continue;\n\t\tlet ix = Infinity;\n\t\tlet ax = -Infinity;\n\t\tlet iz = Infinity;\n\t\tlet az = -Infinity;\n\t\tfor (const [x, z] of fp.p) {\n\t\t\tif (x < ix) ix = x;\n\t\t\tif (x > ax) ax = x;\n\t\t\tif (z < iz) iz = z;\n\t\t\tif (z > az) az = z;\n\t\t}\n\t\tindex.push({code, poly: fp.p, minx: ix, maxx: ax, minz: iz, maxz: az});\n\t}\n\tfunction pointInPoly(x: number, z: number, poly: [number, number][]): boolean {\n\t\tlet inside = false;\n\t\tfor (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {\n\t\t\tconst xi = poly[i][0];\n\t\t\tconst zi = poly[i][1];\n\t\t\tconst xj = poly[j][0];\n\t\t\tconst zj = poly[j][1];\n\t\t\tconst hit = zi > z !== zj > z && x < ((xj - xi) * (z - zi)) / (zj - zi) + xi;\n\t\t\tif (hit) inside = !inside;\n\t\t}\n\t\treturn inside;\n\t}\n\tfunction villaAt(x: number, z: number): string | null {\n\t\tfor (const it of index) {\n\t\t\tif (x < it.minx || x > it.maxx || z < it.minz || z > it.maxz) continue;\n\t\t\tif (pointInPoly(x, z, it.poly)) return it.code;\n\t\t}\n\t\treturn null;\n\t}\n\n\t// --- Camera frame on the footprint bbox ------------------------------------\n\tconst fpBox = new THREE.Box3(new THREE.Vector3(minX, FLOOR_Y - 5, minZ), new THREE.Vector3(maxX, FLOOR_Y + 40, maxZ));\n\tasync function fitAll() {\n\t\tawait resetView(true);\n\t}\n\t// Distance that frames the whole site at a given zoom (1 ≈ fit). Derived from the footprint radius + fov;\n\t// NOT from fitToBox — fitToBox reorients a flat, wide box to straight-down, which is the top-down bug.\n\tfunction poseDistance(zoom: number) {\n\t\tconst size = fpBox.getSize(new THREE.Vector3());\n\t\tconst radius = Math.hypot(size.x, size.z) / 2 || 100;\n\t\tconst vfov = (((world.camera.three as THREE.PerspectiveCamera).fov ?? 60) * Math.PI) / 180;\n\t\treturn (radius / Math.tan(vfov / 2)) * zoom;\n\t}\n\t// Place the camera at (elevation, azimuth, distance) around a target and look at it — a pure setLookAt, so\n\t// the angle is exactly what we ask for and stays put (no fitToBox reorientation).\n\tasync function applyPose(target: THREE.Vector3, elevDeg: number, azimDeg: number, dist: number, animate: boolean) {\n\t\tconst elev = (elevDeg * Math.PI) / 180;\n\t\tconst azim = (azimDeg * Math.PI) / 180;\n\t\tconst dir = new THREE.Vector3(Math.cos(elev) * Math.sin(azim), Math.sin(elev), Math.cos(elev) * Math.cos(azim));\n\t\tawait world.camera.controls.setLookAt(\n\t\t\ttarget.x + dir.x * dist,\n\t\t\ttarget.y + dir.y * dist,\n\t\t\ttarget.z + dir.z * dist,\n\t\t\ttarget.x,\n\t\t\ttarget.y,\n\t\t\ttarget.z,\n\t\t\tanimate,\n\t\t);\n\t}\n\t// Current open pose (dev sliders drive this live via setView; resetView returns it to OPEN_POSE).\n\tlet curElev = OPEN_POSE.elevationDeg;\n\tlet curAzim = OPEN_POSE.azimuthDeg;\n\tlet curZoom = OPEN_POSE.zoom;\n\tlet curPanX = OPEN_POSE.panX ?? 0; // -1..1 fraction of the site half-width the target is offset by (X axis)\n\tlet curPanZ = OPEN_POSE.panZ ?? 0; // -1..1 fraction of the site half-depth the target is offset by (Z axis)\n\t// The look-at target = site centre + the pan offset (so the sliders slide the framed point across the site).\n\tfunction poseTarget() {\n\t\tconst c = fpBox.getCenter(new THREE.Vector3());\n\t\tconst s = fpBox.getSize(new THREE.Vector3());\n\t\tc.x += curPanX * (s.x / 2);\n\t\tc.z += curPanZ * (s.z / 2);\n\t\treturn c;\n\t}\n\tasync function resetView(animate = true) {\n\t\tcurElev = OPEN_POSE.elevationDeg;\n\t\tcurAzim = OPEN_POSE.azimuthDeg;\n\t\tcurZoom = OPEN_POSE.zoom;\n\t\tcurPanX = OPEN_POSE.panX ?? 0;\n\t\tcurPanZ = OPEN_POSE.panZ ?? 0;\n\t\tawait applyPose(poseTarget(), curElev, curAzim, poseDistance(curZoom), animate);\n\t}\n\tasync function setView(\n\t\tpose: {elevationDeg?: number; azimuthDeg?: number; zoom?: number; panX?: number; panZ?: number},\n\t\tanimate = false,\n\t) {\n\t\tif (pose.elevationDeg != null) curElev = pose.elevationDeg;\n\t\tif (pose.azimuthDeg != null) curAzim = pose.azimuthDeg;\n\t\tif (pose.zoom != null) curZoom = pose.zoom;\n\t\tif (pose.panX != null) curPanX = pose.panX;\n\t\tif (pose.panZ != null) curPanZ = pose.panZ;\n\t\tawait applyPose(poseTarget(), curElev, curAzim, poseDistance(curZoom), animate);\n\t}\n\tawait resetView(false);\n\n\t// --- Reality mesh (DroneDeploy 3D Tiles, ECEF) -----------------------------\n\tconst satGroup = new THREE.Group();\n\tconst enuGroup = new THREE.Group();\n\tsatGroup.add(enuGroup);\n\tworld.scene.three.add(satGroup);\n\n\tconst tiles = new TilesRenderer(o.tilesetUrl);\n\ttiles.errorTarget = 16;\n\ttiles.maxDepth = 7;\n\ttiles.lruCache.maxSize = 200;\n\ttiles.lruCache.minSize = 100;\n\ttiles.lruCache.maxBytesSize = 0.2 * 2 ** 30;\n\ttiles.lruCache.unloadPercent = 0.25;\n\tconst draco = new DRACOLoader(tiles.manager);\n\tdraco.setDecoderPath(o.dracoPath);\n\tconst gltfLoader = new GLTFLoader(tiles.manager);\n\tgltfLoader.setDRACOLoader(draco);\n\ttiles.manager.addHandler(/\\.(gltf|glb)$/i, gltfLoader);\n\ttiles.setCamera(world.camera.three);\n\ttiles.setResolutionFromRenderer(world.camera.three, gl);\n\tenuGroup.add(tiles.group);\n\n\tfunction styleTile(root: THREE.Object3D) {\n\t\troot.traverse((n) => {\n\t\t\tconst mesh = n as THREE.Mesh;\n\t\t\tif (!mesh.isMesh) return;\n\t\t\tconst mats = Array.isArray(mesh.material) ? mesh.material : [mesh.material];\n\t\t\tfor (const m of mats) {\n\t\t\t\tif (!m) continue;\n\t\t\t\tm.transparent = meshOp < 1;\n\t\t\t\t(m as THREE.Material & {opacity: number}).opacity = meshOp;\n\t\t\t\tm.depthWrite = meshOp >= 1;\n\t\t\t\tpatchMaterial(m);\n\t\t\t\tm.needsUpdate = true;\n\t\t\t}\n\t\t});\n\t}\n\ttiles.addEventListener(\"load-model\", (e: {scene?: THREE.Object3D}) => {\n\t\tif (e.scene) styleTile(e.scene);\n\t\tfragments.core.update();\n\t});\n\n\tfunction applyMeshPlacement() {\n\t\tsatGroup.position.set(CENTER.x + SEED.offX, FLOOR_Y - 0.05 + SEED.zoff, CENTER.z - SEED.offY);\n\t\tsatGroup.scale.setScalar(SEED.scale);\n\t\tsatGroup.rotation.y = (SEED.rot * Math.PI) / 180;\n\t\ttiles.group.traverse((n) => styleTile(n));\n\t\tprojUniforms.uStrength.value = effectiveStrength();\n\t\tfragments.core.update();\n\t}\n\n\tlet framed = false;\n\ttiles.addEventListener(\"load-tile-set\", () => {\n\t\tconst sphere = new THREE.Sphere();\n\t\tif (framed || !tiles.getBoundingSphere(sphere)) return;\n\t\tframed = true;\n\t\ttiles.group.position.copy(sphere.center).multiplyScalar(-1); // ECEF -> origin\n\t\tenuGroup.quaternion.setFromUnitVectors(sphere.center.clone().normalize(), new THREE.Vector3(0, 1, 0));\n\t\tapplyMeshPlacement();\n\t\t// Frame the selected villa if one was carried in (e.g. Plan → Reality); otherwise the canonical open pose.\n\t\t// (Without this, a villa selected before the mesh finished streaming would get yanked back to the overview.)\n\t\tif (selectedCode) void api.fitVilla(selectedCode);\n\t\telse void resetView();\n\t\tapi.onReady_?.();\n\t});\n\tworld.renderer.onBeforeUpdate.add(() => {\n\t\ttiles.setResolutionFromRenderer(world.camera.three, gl);\n\t\ttiles.update();\n\t});\n\n\t// --- Pointer: raycast the mesh -> point-in-polygon -> villa code -----------\n\tconst raycaster = new THREE.Raycaster();\n\traycaster.far = FAR;\n\tconst ndc = new THREE.Vector2();\n\n\tfunction codeAtClient(clientX: number, clientY: number): string | null {\n\t\tconst rect = gl.domElement.getBoundingClientRect();\n\t\tndc.x = ((clientX - rect.left) / rect.width) * 2 - 1;\n\t\tndc.y = -((clientY - rect.top) / rect.height) * 2 + 1;\n\t\traycaster.setFromCamera(ndc, world.camera.three);\n\t\tconst hits = raycaster.intersectObject(tiles.group, true);\n\t\tconst pt = hits.length ? hits[0].point : null;\n\t\treturn pt ? villaAt(pt.x, pt.z) : null;\n\t}\n\n\tfunction setHover(code: string | null) {\n\t\tif (code === hoverCode) return;\n\t\thoverCode = code;\n\t\tdrawTexture();\n\t\ttexture.needsUpdate = true;\n\t\tfragments.core.update();\n\t\tapi.onHover?.(code);\n\t}\n\n\tlet hoverClient: {x: number; y: number} | null = null;\n\tlet hoverRAF = 0;\n\tconst onMove = (ev: MouseEvent) => {\n\t\thoverClient = {x: ev.clientX, y: ev.clientY};\n\t\tif (!hoverRAF)\n\t\t\thoverRAF = requestAnimationFrame(() => {\n\t\t\t\thoverRAF = 0;\n\t\t\t\tif (!hoverClient) return;\n\t\t\t\tsetHover(codeAtClient(hoverClient.x, hoverClient.y));\n\t\t\t});\n\t};\n\tconst onLeave = () => {\n\t\thoverClient = null;\n\t\tsetHover(null);\n\t};\n\tconst onClick = (ev: MouseEvent) => {\n\t\tapi.selectVilla(codeAtClient(ev.clientX, ev.clientY));\n\t};\n\tcontainer.addEventListener(\"mousemove\", onMove);\n\tcontainer.addEventListener(\"mouseleave\", onLeave);\n\tcontainer.addEventListener(\"click\", onClick);\n\n\t// --- Villa-number labels (HTML chips over each footprint, matching the 2D chips) -----------------------\n\t// pointer-events:none so they never block orbit/hover/click. Each chip sits over its footprint centroid,\n\t// black by default and white when its villa is selected. These are the FINEST LOD tier — shown only once\n\t// zoomed in past LABEL_ZOOM_FRAC (coarser Zone/Block group labels take over further out; see below).\n\tlet labelsVisible = true;\n\tconst LABEL_Y = FLOOR_Y - 0.05 + SEED.zoff; // ≈ the mesh surface level, so chips sit on the villas\n\tconst styleLabel = (el: HTMLDivElement, light: boolean) => {\n\t\tel.style.background = light ? \"#ffffff\" : \"#000000\";\n\t\tel.style.color = light ? \"#111827\" : \"#ffffff\";\n\t};\n\t// The one chip look — reused by villa numbers AND the Zone/Block group labels so every tier is identical.\n\tconst CHIP_CSS =\n\t\t\"padding:2px 6px;border-radius:5px;font:600 12px/1 ui-sans-serif,system-ui,-apple-system,sans-serif;\" +\n\t\t\"white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.35)\";\n\tconst makeChip = (text: string) => {\n\t\tconst el = document.createElement(\"div\");\n\t\tel.style.cssText = \"position:absolute;left:0;top:0;visibility:hidden;pointer-events:none;will-change:transform\";\n\t\tconst inner = document.createElement(\"div\");\n\t\tinner.textContent = text;\n\t\tinner.style.cssText = CHIP_CSS;\n\t\tstyleLabel(inner, false);\n\t\tel.appendChild(inner);\n\t\treturn {el, inner};\n\t};\n\tconst labelEls = index.map((it) => {\n\t\tconst {el, inner} = makeChip(it.code.split(\"-\").pop() ?? it.code); // plot number only, like the 2D chips\n\t\treturn {\n\t\t\tcode: it.code,\n\t\t\tel,\n\t\t\tinner,\n\t\t\tcenter: new THREE.Vector3((it.minx + it.maxx) / 2, LABEL_Y, (it.minz + it.maxz) / 2),\n\t\t};\n\t});\n\tconst labelLayer = document.createElement(\"div\");\n\tlabelLayer.style.cssText = \"position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2\";\n\tfor (const L of labelEls) labelLayer.appendChild(L.el);\n\tcontainer.appendChild(labelLayer);\n\tconst restyleLabels = () => {\n\t\tfor (const L of labelEls) styleLabel(L.inner, L.code === selectedCode);\n\t};\n\n\t// --- Grouping labels (Zone / Block) — one centred chip per group, shown at coarser zooms (see LABEL_FRACs).\n\t// Each chip sits at the centroid (mean footprint centre) of every villa in that group, resolved from the\n\t// progress records' zone/block fields (block numbering is global: Zone 1-A 01–28, Zone 1-B 29–68).\n\ttype GroupLabel = {el: HTMLDivElement; center: THREE.Vector3};\n\tconst makeGroupLabels = (keyOf: (rec: ProgressRec) => {key: string; text: string} | null): GroupLabel[] => {\n\t\tconst groups = new Map<string, {text: string; sx: number; sz: number; n: number}>();\n\t\tfor (const it of index) {\n\t\t\tconst rec = progress.get(it.code);\n\t\t\tconst info = rec ? keyOf(rec) : null;\n\t\t\tif (!info) continue;\n\t\t\tconst cx = (it.minx + it.maxx) / 2;\n\t\t\tconst cz = (it.minz + it.maxz) / 2;\n\t\t\tconst g = groups.get(info.key) ?? {text: info.text, sx: 0, sz: 0, n: 0};\n\t\t\tg.sx += cx;\n\t\t\tg.sz += cz;\n\t\t\tg.n += 1;\n\t\t\tgroups.set(info.key, g);\n\t\t}\n\t\treturn [...groups.values()].map((g) => {\n\t\t\tconst {el} = makeChip(g.text); // identical style to the villa number chips\n\t\t\tlabelLayer.appendChild(el);\n\t\t\treturn {el, center: new THREE.Vector3(g.sx / g.n, LABEL_Y, g.sz / g.n)};\n\t\t});\n\t};\n\tconst zoneLabels = makeGroupLabels((rec) =>\n\t\trec.zone ? {key: rec.zone, text: `Zone 1 - ${rec.zone.slice(1)}`} : null,\n\t);\n\tconst blockLabels = makeGroupLabels((rec) =>\n\t\trec.block ? {key: `${rec.zone}-${rec.block}`, text: `Block-${String(rec.block).padStart(2, \"0\")}`} : null,\n\t);\n\n\tconst _labelTarget = new THREE.Vector3();\n\tconst _proj = new THREE.Vector3();\n\tconst placeLabel = (L: GroupLabel, show: boolean, cam: THREE.Camera, wpx: number, hpx: number) => {\n\t\tif (show) {\n\t\t\t_proj.copy(L.center).project(cam);\n\t\t\tshow = _proj.z > -1 && _proj.z < 1 && Math.abs(_proj.x) < 1.15 && Math.abs(_proj.y) < 1.15;\n\t\t}\n\t\tif (!show) {\n\t\t\tif (L.el.style.visibility !== \"hidden\") L.el.style.visibility = \"hidden\";\n\t\t\treturn;\n\t\t}\n\t\tL.el.style.visibility = \"visible\";\n\t\tL.el.style.transform = `translate(-50%,-50%) translate(${(_proj.x * 0.5 + 0.5) * wpx}px,${(-_proj.y * 0.5 + 0.5) * hpx}px)`;\n\t};\n\tfunction updateLabels() {\n\t\tconst wpx = container.clientWidth;\n\t\tconst hpx = container.clientHeight;\n\t\tconst cam = world.camera.three;\n\t\tconst target = (world.camera.controls as unknown as {getTarget(v: THREE.Vector3): THREE.Vector3}).getTarget(\n\t\t\t_labelTarget,\n\t\t);\n\t\t// frac = camera distance as a fraction of the full-site fit distance → picks the LOD tier.\n\t\tconst frac = cam.position.distanceTo(target) / poseDistance(1);\n\t\tconst showVilla = labelsVisible && frac <= LABEL_ZOOM_FRAC;\n\t\tconst showBlock = labelsVisible && frac > LABEL_ZOOM_FRAC && frac <= BLOCK_LABEL_FRAC;\n\t\tconst showZone = labelsVisible && frac > BLOCK_LABEL_FRAC && frac <= ZONE_LABEL_FRAC;\n\t\tfor (const L of labelEls) placeLabel(L, showVilla, cam, wpx, hpx);\n\t\tfor (const L of blockLabels) placeLabel(L, showBlock, cam, wpx, hpx);\n\t\tfor (const L of zoneLabels) placeLabel(L, showZone, cam, wpx, hpx);\n\t}\n\tworld.renderer.onBeforeUpdate.add(updateLabels);\n\n\t// --- Plan-image backdrop reaction (opacity / blur / scale from the camera each frame) ------------------\n\t// 0% zoom (the open distance) → opacity 1, base blur; by BACKDROP_ZOOM_FADE (30%) closer → opacity 0, max\n\t// blur; scale tracks the zoom (grows as you dolly in) so the backdrop moves with the model. Tilting or\n\t// rotating away from the open pose past BACKDROP_TILT_FADE (5% of range) fades it to 0 (a flat image only\n\t// reads right from the open angle). The host applies {opacity, blurPx, scale} to its <img>.\n\tconst D0 = poseDistance(OPEN_POSE.zoom); // the \"0% zoom\" reference distance (open pose)\n\tconst _bdTarget = new THREE.Vector3();\n\tfunction updateBackdrop() {\n\t\tif (!options.onBackdrop) return;\n\t\tconst target = (world.camera.controls as unknown as {getTarget(v: THREE.Vector3): THREE.Vector3}).getTarget(\n\t\t\t_bdTarget,\n\t\t);\n\t\tconst cam = world.camera.three;\n\t\tconst dx = cam.position.x - target.x;\n\t\tconst dy = cam.position.y - target.y;\n\t\tconst dz = cam.position.z - target.z;\n\t\tconst dist = Math.hypot(dx, dy, dz) || D0;\n\t\t// Fade progress (0 at the open distance → 1 fully faded): zoom IN over 30% closer, or zoom OUT over 10%\n\t\t// further. Blur grows and the backdrop scales with the zoom in both directions.\n\t\tconst zoomInFrac = (D0 - dist) / D0; // + = zoomed in, − = zoomed out\n\t\tconst p =\n\t\t\tzoomInFrac >= 0 ? Math.min(1, zoomInFrac / BACKDROP_ZOOM_FADE) : Math.min(1, -zoomInFrac / BACKDROP_ZOOMOUT_FADE);\n\t\t// orientation deviation from the open pose (as a fraction of each control's range)\n\t\tconst elevationDeg = (Math.atan2(dy, Math.hypot(dx, dz)) * 180) / Math.PI;\n\t\tconst azimuthDeg = (Math.atan2(dx, dz) * 180) / Math.PI;\n\t\tlet azDev = Math.abs(azimuthDeg - OPEN_POSE.azimuthDeg) % 360;\n\t\tif (azDev > 180) azDev = 360 - azDev;\n\t\tconst dev = Math.max(azDev / 360, Math.abs(elevationDeg - OPEN_POSE.elevationDeg) / 84);\n\t\tconst orientOpacity = 1 - Math.min(1, Math.max(0, (dev - BACKDROP_TILT_FADE) / BACKDROP_TILT_FADE));\n\t\toptions.onBackdrop({\n\t\t\topacity: (1 - p) * orientOpacity,\n\t\t\tblurPx: BACKDROP_BASE_BLUR + p * (BACKDROP_MAX_BLUR - BACKDROP_BASE_BLUR),\n\t\t\tscale: Math.min(3, Math.max(0.3, D0 / dist)), // zoom the backdrop with the model (in AND out)\n\t\t});\n\t}\n\tworld.renderer.onBeforeUpdate.add(updateBackdrop);\n\n\t// --- Public API ------------------------------------------------------------\n\tconst api: FootprintViewer & {onReady_?: () => void} = {\n\t\tsetMeshOpacity(op) {\n\t\t\tmeshOp = op;\n\t\t\ttiles.group.traverse((n) => styleTile(n));\n\t\t\tfragments.core.update();\n\t\t},\n\t\tsetProjectionStrength(s) {\n\t\t\tstrength = s;\n\t\t\tprojUniforms.uStrength.value = effectiveStrength();\n\t\t\tfragments.core.update();\n\t\t},\n\t\tsetColorMode(mode) {\n\t\t\tcolorMode = mode;\n\t\t\tprojUniforms.uStrength.value = effectiveStrength();\n\t\t\tfragments.core.update();\n\t\t},\n\t\tsetVillaColours(map) {\n\t\t\tfor (const [code, hex] of Object.entries(map)) overrideColours.set(code, hex);\n\t\t\tdrawTexture();\n\t\t\ttexture.needsUpdate = true;\n\t\t\tfragments.core.update();\n\t\t},\n\t\tsetVisibleVillas(codes) {\n\t\t\tvisibleCodes = codes ? new Set(codes) : null;\n\t\t\tdrawTexture();\n\t\t\ttexture.needsUpdate = true;\n\t\t\tfragments.core.update();\n\t\t},\n\t\tgetVillaCodes() {\n\t\t\treturn entries.map(([code]) => code);\n\t\t},\n\t\tgetVillaRecord(code) {\n\t\t\tif (!footprints[code]) return null;\n\t\t\tconst rec = progress.get(code);\n\t\t\treturn {\n\t\t\t\tcode,\n\t\t\t\tzone: rec?.zone,\n\t\t\t\tbatch: rec?.batch,\n\t\t\t\tblock: rec?.block,\n\t\t\t\tactual: rec?.actual,\n\t\t\t\tplanned: rec?.planned,\n\t\t\t\tvariance: rec?.variance,\n\t\t\t\tcolor: colourFor(code),\n\t\t\t\tcontractor: rec?.contractor,\n\t\t\t\tmodel: rec?.model,\n\t\t\t\tplot: rec?.plot,\n\t\t\t\tunitType: rec?.unitType,\n\t\t\t\ttypology: rec?.typology,\n\t\t\t};\n\t\t},\n\t\tselectVilla(code) {\n\t\t\tselectedCode = code;\n\t\t\tdrawTexture();\n\t\t\ttexture.needsUpdate = true;\n\t\t\trestyleLabels(); // selected villa's chip turns white\n\t\t\tfragments.core.update();\n\t\t\tapi.onSelect?.(code);\n\t\t},\n\t\tgetSelectedVilla() {\n\t\t\treturn selectedCode;\n\t\t},\n\t\tfitAll,\n\t\tresetView,\n\t\tsetView,\n\t\tgetZoomFactor() {\n\t\t\tconst t = (world.camera.controls as unknown as {getTarget(v: THREE.Vector3): THREE.Vector3}).getTarget(\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t);\n\t\t\tconst dist = world.camera.three.position.distanceTo(t);\n\t\t\tconst siteFit = poseDistance(1); // distance that frames the whole site\n\t\t\treturn dist > 1e-3 ? siteFit / dist : 1;\n\t\t},\n\t\tisZoomedIn() {\n\t\t\tconst t = (world.camera.controls as unknown as {getTarget(v: THREE.Vector3): THREE.Vector3}).getTarget(\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t);\n\t\t\t// >2% closer than the default open distance counts as zoomed in (small margin avoids rest-jitter).\n\t\t\treturn world.camera.three.position.distanceTo(t) < poseDistance(OPEN_POSE.zoom) * 0.98;\n\t\t},\n\t\tzoomIn() {\n\t\t\tconst t = (world.camera.controls as unknown as {getTarget(v: THREE.Vector3): THREE.Vector3}).getTarget(\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t);\n\t\t\tvoid world.camera.controls.dolly(world.camera.three.position.distanceTo(t) * 0.3, true);\n\t\t},\n\t\tzoomOut() {\n\t\t\tconst t = (world.camera.controls as unknown as {getTarget(v: THREE.Vector3): THREE.Vector3}).getTarget(\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t);\n\t\t\tvoid world.camera.controls.dolly(-world.camera.three.position.distanceTo(t) * 0.3, true);\n\t\t},\n\t\tsetInteractionMode(mode) {\n\t\t\tconst controls = world.camera.controls as unknown as {\n\t\t\t\tmouseButtons: {left: number};\n\t\t\t\tconstructor: {ACTION?: Record<string, number>};\n\t\t\t};\n\t\t\tconst ACTION = controls.constructor.ACTION ?? {ROTATE: 1, TRUCK: 2};\n\t\t\tcontrols.mouseButtons.left = mode === \"pan\" ? ACTION.TRUCK : ACTION.ROTATE;\n\t\t},\n\t\tasync topDownView() {\n\t\t\t// Straight-down (satellite) view, then fitToBox tightens it to the site — fitToBox naturally frames a\n\t\t\t// flat, wide footprint box from directly above, which is exactly the fitted top-down we want.\n\t\t\tconst c = fpBox.getCenter(new THREE.Vector3());\n\t\t\tconst up = poseDistance(1);\n\t\t\tawait world.camera.controls.setLookAt(c.x, c.y + up, c.z + up * 0.001, c.x, c.y, c.z, false);\n\t\t\tawait world.camera.controls.fitToBox(fpBox, true);\n\t\t},\n\t\tgetCameraPose() {\n\t\t\tconst p = world.camera.three.position;\n\t\t\tconst t = (world.camera.controls as unknown as {getTarget(v: THREE.Vector3): THREE.Vector3}).getTarget(\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t);\n\t\t\tconst dx = p.x - t.x;\n\t\t\tconst dy = p.y - t.y;\n\t\t\tconst dz = p.z - t.z;\n\t\t\tconst horiz = Math.hypot(dx, dz);\n\t\t\treturn {\n\t\t\t\tposition: [p.x, p.y, p.z],\n\t\t\t\ttarget: [t.x, t.y, t.z],\n\t\t\t\televationDeg: (Math.atan2(dy, horiz) * 180) / Math.PI,\n\t\t\t\tazimuthDeg: (Math.atan2(dx, dz) * 180) / Math.PI,\n\t\t\t\tdistance: Math.hypot(dx, dy, dz),\n\t\t\t};\n\t\t},\n\t\tasync fitVilla(code) {\n\t\t\tconst it = index.find((i) => i.code === code);\n\t\t\tif (!it) return;\n\t\t\tconst cx = (it.minx + it.maxx) / 2;\n\t\t\tconst cz = (it.minz + it.maxz) / 2;\n\t\t\t// Fly to the villa keeping the CURRENT oblique angle (a direct pose, not fitToBox which would snap\n\t\t\t// top-down). Distance frames ~6× the villa footprint so it settles with surrounding context.\n\t\t\tconst radius = (Math.max(it.maxx - it.minx, it.maxz - it.minz) * 6) / 2 || 20;\n\t\t\tconst vfov = (((world.camera.three as THREE.PerspectiveCamera).fov ?? 60) * Math.PI) / 180;\n\t\t\tawait applyPose(new THREE.Vector3(cx, FLOOR_Y, cz), curElev, curAzim, radius / Math.tan(vfov / 2), true);\n\t\t},\n\t\t// --- Parity helpers (host UI written against the old viewer) --------------\n\t\tsetMeshVisible(v) {\n\t\t\tsatGroup.visible = v;\n\t\t\tfragments.core.update();\n\t\t},\n\t\tsetModelVisible(v) {\n\t\t\tcolorMode = v ? \"progress\" : \"off\";\n\t\t\tprojUniforms.uStrength.value = effectiveStrength();\n\t\t\tfragments.core.update();\n\t\t},\n\t\tsetModelOpacity(op) {\n\t\t\tstrength = op;\n\t\t\tprojUniforms.uStrength.value = effectiveStrength();\n\t\t\tfragments.core.update();\n\t\t},\n\t\tsetColourMode(mode) {\n\t\t\tcolorMode = mode === \"off\" || mode === \"material\" ? \"off\" : \"progress\";\n\t\t\tprojUniforms.uStrength.value = effectiveStrength();\n\t\t\tfragments.core.update();\n\t\t},\n\t\tsetLabelsVisible(v) {\n\t\t\tlabelsVisible = v;\n\t\t\tupdateLabels();\n\t\t},\n\t\tonHover: options.onHover,\n\t\tonSelect: options.onSelect,\n\t\tdispose() {\n\t\t\tcontainer.removeEventListener(\"mousemove\", onMove);\n\t\t\tcontainer.removeEventListener(\"mouseleave\", onLeave);\n\t\t\tcontainer.removeEventListener(\"click\", onClick);\n\t\t\ttry {\n\t\t\t\ttiles.dispose();\n\t\t\t} catch {\n\t\t\t\t/* ignore */\n\t\t\t}\n\t\t\tcomponents.dispose();\n\t\t\tcontainer.replaceChildren();\n\t\t},\n\t};\n\tapi.onReady_ = () => options.onReady?.(api);\n\n\treturn api;\n}\n"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import * as React from "react";
2
+ //#region src/form-action-bar.d.ts
3
+ export interface FormActionBarProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** Left-aligned status node, e.g. "3 unsaved changes" or "New role — not saved yet". */
5
+ status?: React.ReactNode;
6
+ /**
7
+ * Pin to the bottom of the scroll region (default). Set `false` to render in normal flow —
8
+ * useful inside a panel that already clips its own content.
9
+ */
10
+ sticky?: boolean;
11
+ /** Clamp for the inner row, matching the form content it sits under. Default `1200px`. */
12
+ maxWidth?: string | number;
13
+ }
14
+ /**
15
+ * Page-level form footer: status on the left, actions (children) on the right.
16
+ *
17
+ * Owns its own full-bleed background, top border, and upward shadow, so it must be rendered as a
18
+ * **sibling of the padded content container, not a child of it** — otherwise it inherits that
19
+ * padding and has to cancel it with negative margins. Put the padding on an inner content div and
20
+ * leave the scroll container itself unpadded:
21
+ *
22
+ * ```tsx
23
+ * <main className="flex min-h-0 flex-1 flex-col overflow-auto">
24
+ * <div className="mx-auto w-full max-w-[1200px] p-6">…form…</div>
25
+ * <FormActionBar status="3 unsaved changes">…</FormActionBar>
26
+ * </main>
27
+ * ```
28
+ */
29
+ declare const FormActionBar: React.ForwardRefExoticComponent<FormActionBarProps & React.RefAttributes<HTMLDivElement>>;
30
+ //#endregion
31
+ export { FormActionBar };
32
+ //# sourceMappingURL=form-action-bar.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-action-bar.d.mts","names":[],"sources":["../src/form-action-bar.tsx"],"mappings":";;iBAGiB,2BAA2B,MAAM,eAAe;;EAEhE,SAAS,MAAM;;;;;EAKf;;EAEA;;;;;;;;;;;;;;;;;cAkBK,eAAa,MAAA,0BAAA,qBAAA,MAAA,cAAA"}
@@ -0,0 +1,42 @@
1
+ import { cn } from "@corensystem/coren-utils";
2
+ import * as React from "react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/form-action-bar.tsx
5
+ /**
6
+ * Page-level form footer: status on the left, actions (children) on the right.
7
+ *
8
+ * Owns its own full-bleed background, top border, and upward shadow, so it must be rendered as a
9
+ * **sibling of the padded content container, not a child of it** — otherwise it inherits that
10
+ * padding and has to cancel it with negative margins. Put the padding on an inner content div and
11
+ * leave the scroll container itself unpadded:
12
+ *
13
+ * ```tsx
14
+ * <main className="flex min-h-0 flex-1 flex-col overflow-auto">
15
+ * <div className="mx-auto w-full max-w-[1200px] p-6">…form…</div>
16
+ * <FormActionBar status="3 unsaved changes">…</FormActionBar>
17
+ * </main>
18
+ * ```
19
+ */
20
+ const FormActionBar = React.forwardRef(({ status, sticky = true, maxWidth = "1200px", className, children, ...props }, ref) => /* @__PURE__ */ jsx("div", {
21
+ ref,
22
+ "data-core-artifact": "form-action-bar",
23
+ "data-core-surface-owner": "artifact",
24
+ className: cn("wwc:flex wwc:h-[53px] wwc:w-full wwc:shrink-0 wwc:items-center wwc:border-t wwc:border-border wwc:bg-card wwc:px-6", "wwc:shadow-[0_-4px_16px_rgba(0,0,0,0.06)]", sticky && "wwc:sticky wwc:bottom-0 wwc:z-30", className),
25
+ ...props,
26
+ children: /* @__PURE__ */ jsxs("div", {
27
+ className: "wwc:mx-auto wwc:flex wwc:w-full wwc:items-center wwc:justify-between wwc:gap-4",
28
+ style: { maxWidth: typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth },
29
+ children: [/* @__PURE__ */ jsx("div", {
30
+ className: "wwc:min-w-0 wwc:truncate wwc:text-sm wwc:text-muted-foreground",
31
+ children: status
32
+ }), /* @__PURE__ */ jsx("div", {
33
+ className: "wwc:flex wwc:shrink-0 wwc:items-center wwc:gap-2",
34
+ children
35
+ })]
36
+ })
37
+ }));
38
+ FormActionBar.displayName = "FormActionBar";
39
+ //#endregion
40
+ export { FormActionBar };
41
+
42
+ //# sourceMappingURL=form-action-bar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-action-bar.mjs","names":[],"sources":["../src/form-action-bar.tsx"],"sourcesContent":["import {cn} from \"@corensystem/coren-utils\";\nimport * as React from \"react\";\n\nexport interface FormActionBarProps extends React.HTMLAttributes<HTMLDivElement> {\n\t/** Left-aligned status node, e.g. \"3 unsaved changes\" or \"New role — not saved yet\". */\n\tstatus?: React.ReactNode;\n\t/**\n\t * Pin to the bottom of the scroll region (default). Set `false` to render in normal flow —\n\t * useful inside a panel that already clips its own content.\n\t */\n\tsticky?: boolean;\n\t/** Clamp for the inner row, matching the form content it sits under. Default `1200px`. */\n\tmaxWidth?: string | number;\n}\n\n/**\n * Page-level form footer: status on the left, actions (children) on the right.\n *\n * Owns its own full-bleed background, top border, and upward shadow, so it must be rendered as a\n * **sibling of the padded content container, not a child of it** — otherwise it inherits that\n * padding and has to cancel it with negative margins. Put the padding on an inner content div and\n * leave the scroll container itself unpadded:\n *\n * ```tsx\n * <main className=\"flex min-h-0 flex-1 flex-col overflow-auto\">\n * <div className=\"mx-auto w-full max-w-[1200px] p-6\">…form…</div>\n * <FormActionBar status=\"3 unsaved changes\">…</FormActionBar>\n * </main>\n * ```\n */\nconst FormActionBar = React.forwardRef<HTMLDivElement, FormActionBarProps>(\n\t({status, sticky = true, maxWidth = \"1200px\", className, children, ...props}, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tdata-core-artifact=\"form-action-bar\"\n\t\t\tdata-core-surface-owner=\"artifact\"\n\t\t\tclassName={cn(\n\t\t\t\t\"wwc:flex wwc:h-[53px] wwc:w-full wwc:shrink-0 wwc:items-center wwc:border-t wwc:border-border wwc:bg-card wwc:px-6\",\n\t\t\t\t\"wwc:shadow-[0_-4px_16px_rgba(0,0,0,0.06)]\",\n\t\t\t\tsticky && \"wwc:sticky wwc:bottom-0 wwc:z-30\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"wwc:mx-auto wwc:flex wwc:w-full wwc:items-center wwc:justify-between wwc:gap-4\"\n\t\t\t\tstyle={{maxWidth: typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth}}\n\t\t\t>\n\t\t\t\t<div className=\"wwc:min-w-0 wwc:truncate wwc:text-sm wwc:text-muted-foreground\">{status}</div>\n\t\t\t\t<div className=\"wwc:flex wwc:shrink-0 wwc:items-center wwc:gap-2\">{children}</div>\n\t\t\t</div>\n\t\t</div>\n\t),\n);\nFormActionBar.displayName = \"FormActionBar\";\n\nexport {FormActionBar};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA8BA,MAAM,gBAAgB,MAAM,YAC1B,EAAC,QAAQ,SAAS,MAAM,WAAW,UAAU,WAAW,UAAU,GAAG,SAAQ,QAC7E,oBAAC,OAAD;CACM;CACL,sBAAmB;CACnB,2BAAwB;CACxB,WAAW,GACV,sHACA,6CACA,UAAU,oCACV,SACD;CACA,GAAI;CAEJ,UAAA,qBAAC,OAAD;EACC,WAAU;EACV,OAAO,EAAC,UAAU,OAAO,aAAa,WAAW,GAAG,SAAS,MAAM,SAAQ;EAF5E,UAAA,CAIC,oBAAC,OAAD;GAAK,WAAU;GAAkE,UAAA;EAAY,CAAA,GAC7F,oBAAC,OAAD;GAAK,WAAU;GAAoD;EAAc,CAAA,CAC7E;;AACD,CAAA,CAEP;AACA,cAAc,cAAc"}
@@ -0,0 +1,116 @@
1
+ import { Button } from "./button.mjs";
2
+ import * as React from "react";
3
+ //#region src/form-dialog.d.ts
4
+ /**
5
+ * Reads whether this dialog has already refused a submit. Rarely needed directly — `FormDialogField`
6
+ * resolves it for you — but available for a call site rendering a field layout of its own.
7
+ */
8
+ export declare function useFormDialogAttempted(): boolean;
9
+ export interface FormDialogProps {
10
+ open: boolean;
11
+ onOpenChange: (open: boolean) => void;
12
+ /** Dialog heading. */
13
+ title: React.ReactNode;
14
+ /** Optional sub-heading under the title band. */
15
+ description?: React.ReactNode;
16
+ /**
17
+ * Max width of the dialog in pixels. Defaults to `520` — the width of the narrowest shipped
18
+ * authoring dialog; widen only when a field row genuinely needs two columns.
19
+ */
20
+ width?: number;
21
+ /**
22
+ * Whether the form may be submitted. The submit button stays enabled either way — this only
23
+ * decides whether a press succeeds or reveals the errors.
24
+ */
25
+ valid: boolean;
26
+ /** Footer guidance shown until a submit is refused, e.g. "Name it, then create." */
27
+ hint?: React.ReactNode;
28
+ /** Replaces `hint` once a submit has been refused. Say what is missing, not that something is. */
29
+ error?: React.ReactNode;
30
+ /** Label of the confirming button, e.g. "Create process". */
31
+ submitLabel: React.ReactNode;
32
+ /** Label of the dismissing button. Defaults to "Cancel". */
33
+ cancelLabel?: React.ReactNode;
34
+ /** Variant of the confirming button. Defaults to the primary `default`. */
35
+ submitVariant?: React.ComponentProps<typeof Button>["variant"];
36
+ /** Extra props for the confirming button — test hooks, `data-*` attributes. */
37
+ submitProps?: Omit<React.ComponentProps<typeof Button>, "onClick" | "variant" | "children">;
38
+ /** Runs only when `valid` is true. Closes the dialog afterwards unless `keepOpenOnSubmit`. */
39
+ onSubmit: () => void;
40
+ /** Clears the form. Runs after a successful submit AND whenever the dialog closes. */
41
+ onReset?: () => void;
42
+ /** Keep the dialog open after a successful submit — for a form that stays up to add another. */
43
+ keepOpenOnSubmit?: boolean;
44
+ /** Applied to `DialogContent`, after the width. */
45
+ className?: string;
46
+ children: React.ReactNode;
47
+ }
48
+ /** Single-step create/edit modal: header band, field body, guidance-and-actions footer. */
49
+ export declare function FormDialog({ open, onOpenChange, title, description, width, valid, hint, error, submitLabel, cancelLabel, submitVariant, submitProps, onSubmit, onReset, keepOpenOnSubmit, className, children }: FormDialogProps): import("react/jsx-runtime").JSX.Element;
50
+ /** What the render-prop form of a field hands its control. */
51
+ export interface FormDialogFieldState {
52
+ /** Whether to paint the field red — validity already resolved against `attempted`. */
53
+ invalid: boolean;
54
+ /** Put this on the control. It is what the field's `<label>` points at. */
55
+ id: string;
56
+ /** Put this on the control as `aria-describedby` — the id of the hint line, when there is one. */
57
+ describedBy?: string;
58
+ /**
59
+ * Id of the caption itself. For a control `htmlFor` cannot name — a toggle group, a radio row —
60
+ * point the group at this with `aria-labelledby` instead.
61
+ */
62
+ labelId: string;
63
+ }
64
+ export interface FormDialogFieldProps {
65
+ /** Field name. Rendered as the house's uppercase muted caption, in a real `<label>`. */
66
+ label: React.ReactNode;
67
+ /**
68
+ * True while the field's value is unacceptable — plain validity, not "should I show red now".
69
+ * The dialog decides the timing: nothing paints until a submit has been refused.
70
+ */
71
+ invalid?: boolean;
72
+ /** Muted helper line under the control, e.g. "Its rows are the tokens of this process." */
73
+ hint?: React.ReactNode;
74
+ /**
75
+ * Id of the control this labels. Only needed for the plain-children form, where the field cannot
76
+ * reach the control to give it one — with the render prop, take `id` from the state instead.
77
+ */
78
+ htmlFor?: string;
79
+ className?: string;
80
+ /**
81
+ * The control. Given as a function to receive `invalid` already resolved against `attempted`, plus
82
+ * the `id` the label points at and the `describedBy` of the hint line — spread them onto your own
83
+ * input as `aria-invalid`, `id` and `aria-describedby`. Fields with nothing to validate can pass
84
+ * plain children instead, naming the control with `htmlFor`.
85
+ */
86
+ children: React.ReactNode | ((state: FormDialogFieldState) => React.ReactNode);
87
+ }
88
+ /**
89
+ * One labelled field inside a {@link FormDialog}.
90
+ *
91
+ * The caption is a real `<label>` bound to the control, not a styled `<span>`: a caption that only
92
+ * looks like a label reads to a screen reader as "edit, blank", and no amount of visual review
93
+ * catches it. The id comes from here because the field is the only thing that sees both sides —
94
+ * take it from the render prop, or name your own control with `htmlFor`.
95
+ */
96
+ export declare function FormDialogField({ label, invalid, hint, htmlFor, className, children }: FormDialogFieldProps): import("react/jsx-runtime").JSX.Element;
97
+ export interface FormDialogRowProps {
98
+ /** Columns from the `sm` breakpoint up. Below it the fields always stack. Defaults to `2`. */
99
+ columns?: 2 | 3;
100
+ className?: string;
101
+ children: React.ReactNode;
102
+ }
103
+ /** Puts sibling {@link FormDialogField}s side by side, stacking them on a narrow viewport. */
104
+ export declare function FormDialogRow({ columns, className, children }: FormDialogRowProps): import("react/jsx-runtime").JSX.Element;
105
+ /** Muted explanatory paragraph between fields — what the form will actually produce. */
106
+ export declare function FormDialogNote({ className, children }: {
107
+ className?: string;
108
+ children: React.ReactNode;
109
+ }): import("react/jsx-runtime").JSX.Element;
110
+ /** Amber caveat between fields — true, non-blocking, and worth reading before submitting. */
111
+ export declare function FormDialogCaveat({ className, children }: {
112
+ className?: string;
113
+ children: React.ReactNode;
114
+ }): import("react/jsx-runtime").JSX.Element;
115
+ //#endregion
116
+ //# sourceMappingURL=form-dialog.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-dialog.d.mts","names":[],"sources":["../src/form-dialog.tsx"],"mappings":";;;;;;;wBAqCgB;iBAIC;EAChB;EACA,eAAe;;EAEf,OAAO,MAAM;;EAEb,cAAc,MAAM;;;;;EAKpB;;;;;EAKA;;EAEA,OAAO,MAAM;;EAEb,QAAQ,MAAM;;EAEd,aAAa,MAAM;;EAEnB,cAAc,MAAM;;EAEpB,gBAAgB,MAAM,sBAAsB;;EAE5C,cAAc,KAAK,MAAM,sBAAsB;;EAE/C;;EAEA;;EAEA;;EAEA;EACA,UAAU,MAAM;;;wBAID,aACf,MACA,cACA,OACA,aACA,OACA,OACA,MACA,OACA,aACA,aACA,eACA,aACA,UACA,SACA,kBACA,WACA,YACE,8CAAe,IAAA;;iBAoED;;EAEhB;;EAEA;;EAEA;;;;;EAKA;;iBAGgB;;EAEhB,OAAO,MAAM;;;;;EAKb;;EAEA,OAAO,MAAM;;;;;EAKb;EACA;;;;;;;EAOA,UAAU,MAAM,cAAc,OAAO,yBAAyB,MAAM;;;;;;;;;;wBAWrD,kBAAiB,OAAO,SAAiB,MAAM,SAAS,WAAW,YAAW,mDAAoB,IAAA;iBAgCjG;;EAEhB;EACA;EACA,UAAU,MAAM;;;wBAID,gBAAe,SAAa,WAAW,YAAW,iDAAkB,IAAA;;wBASpE,iBAAgB,WAAW;EAAY;EAAoB,UAAU,MAAM;gCAAU,IAAA;;wBAKrF,mBAAkB,WAAW;EAAY;EAAoB,UAAU,MAAM;gCAAU,IAAA"}
@@ -0,0 +1,149 @@
1
+ import { Button } from "./button.mjs";
2
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "./dialog.mjs";
3
+ import { Label } from "./label.mjs";
4
+ import { cn } from "@corensystem/coren-utils";
5
+ import * as React from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/form-dialog.tsx
8
+ const FormDialogContext = React.createContext({ attempted: false });
9
+ /**
10
+ * Reads whether this dialog has already refused a submit. Rarely needed directly — `FormDialogField`
11
+ * resolves it for you — but available for a call site rendering a field layout of its own.
12
+ */
13
+ function useFormDialogAttempted() {
14
+ return React.useContext(FormDialogContext).attempted;
15
+ }
16
+ /** Single-step create/edit modal: header band, field body, guidance-and-actions footer. */
17
+ function FormDialog({ open, onOpenChange, title, description, width = 520, valid, hint, error, submitLabel, cancelLabel = "Cancel", submitVariant, submitProps, onSubmit, onReset, keepOpenOnSubmit = false, className, children }) {
18
+ const [attempted, setAttempted] = React.useState(false);
19
+ const clear = React.useCallback(() => {
20
+ setAttempted(false);
21
+ onReset?.();
22
+ }, [onReset]);
23
+ const close = (next) => {
24
+ if (!next) clear();
25
+ onOpenChange(next);
26
+ };
27
+ const submit = () => {
28
+ if (!valid) {
29
+ setAttempted(true);
30
+ return;
31
+ }
32
+ onSubmit();
33
+ if (keepOpenOnSubmit) {
34
+ clear();
35
+ return;
36
+ }
37
+ close(false);
38
+ };
39
+ const context = React.useMemo(() => ({ attempted }), [attempted]);
40
+ return /* @__PURE__ */ jsx(Dialog, {
41
+ open,
42
+ onOpenChange: close,
43
+ children: /* @__PURE__ */ jsxs(DialogContent, {
44
+ "data-core-artifact": "form-dialog",
45
+ className: cn("wwc:w-[calc(100vw-2rem)]", className),
46
+ style: { maxWidth: width },
47
+ children: [
48
+ /* @__PURE__ */ jsxs(DialogHeader, {
49
+ className: "wwc:flex-col wwc:items-start wwc:gap-0.5",
50
+ children: [/* @__PURE__ */ jsx(DialogTitle, { children: title }), description ? /* @__PURE__ */ jsx(DialogDescription, {
51
+ className: "wwc:text-xs",
52
+ children: description
53
+ }) : null]
54
+ }),
55
+ /* @__PURE__ */ jsx(FormDialogContext.Provider, {
56
+ value: context,
57
+ children: /* @__PURE__ */ jsx("div", {
58
+ className: "wwc:grid wwc:gap-4 wwc:p-4",
59
+ children
60
+ })
61
+ }),
62
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx("span", {
63
+ className: "wwc:text-sm",
64
+ children: attempted && !valid ? /* @__PURE__ */ jsx("span", {
65
+ className: "wwc:text-destructive",
66
+ children: error
67
+ }) : /* @__PURE__ */ jsx("span", {
68
+ className: "wwc:text-muted-foreground",
69
+ children: hint
70
+ })
71
+ }), /* @__PURE__ */ jsxs("div", {
72
+ className: "wwc:flex wwc:items-center wwc:gap-2",
73
+ children: [/* @__PURE__ */ jsx(Button, {
74
+ variant: "outline",
75
+ onClick: () => close(false),
76
+ children: cancelLabel
77
+ }), /* @__PURE__ */ jsx(Button, {
78
+ variant: submitVariant,
79
+ onClick: submit,
80
+ ...submitProps,
81
+ children: submitLabel
82
+ })]
83
+ })] })
84
+ ]
85
+ })
86
+ });
87
+ }
88
+ /**
89
+ * One labelled field inside a {@link FormDialog}.
90
+ *
91
+ * The caption is a real `<label>` bound to the control, not a styled `<span>`: a caption that only
92
+ * looks like a label reads to a screen reader as "edit, blank", and no amount of visual review
93
+ * catches it. The id comes from here because the field is the only thing that sees both sides —
94
+ * take it from the render prop, or name your own control with `htmlFor`.
95
+ */
96
+ function FormDialogField({ label, invalid = false, hint, htmlFor, className, children }) {
97
+ const showError = useFormDialogAttempted() && invalid;
98
+ const generatedId = React.useId();
99
+ const fieldId = htmlFor ?? generatedId;
100
+ const hintId = `${generatedId}-hint`;
101
+ const labelId = `${generatedId}-label`;
102
+ return /* @__PURE__ */ jsxs("div", {
103
+ className: cn("wwc:space-y-1.5", className),
104
+ children: [
105
+ /* @__PURE__ */ jsx(Label, {
106
+ id: labelId,
107
+ htmlFor: fieldId,
108
+ className: "wwc:text-xs wwc:leading-4 wwc:font-semibold wwc:tracking-wide wwc:text-muted-foreground wwc:uppercase",
109
+ children: label
110
+ }),
111
+ typeof children === "function" ? children({
112
+ invalid: showError,
113
+ id: fieldId,
114
+ describedBy: hint ? hintId : void 0,
115
+ labelId
116
+ }) : children,
117
+ hint ? /* @__PURE__ */ jsx("p", {
118
+ id: hintId,
119
+ className: "wwc:text-xs wwc:text-muted-foreground",
120
+ children: hint
121
+ }) : null
122
+ ]
123
+ });
124
+ }
125
+ /** Puts sibling {@link FormDialogField}s side by side, stacking them on a narrow viewport. */
126
+ function FormDialogRow({ columns = 2, className, children }) {
127
+ return /* @__PURE__ */ jsx("div", {
128
+ className: cn("wwc:grid wwc:gap-4", columns === 2 ? "wwc:sm:grid-cols-2" : "wwc:sm:grid-cols-3", className),
129
+ children
130
+ });
131
+ }
132
+ /** Muted explanatory paragraph between fields — what the form will actually produce. */
133
+ function FormDialogNote({ className, children }) {
134
+ return /* @__PURE__ */ jsx("p", {
135
+ className: cn("wwc:text-xs wwc:text-muted-foreground", className),
136
+ children
137
+ });
138
+ }
139
+ /** Amber caveat between fields — true, non-blocking, and worth reading before submitting. */
140
+ function FormDialogCaveat({ className, children }) {
141
+ return /* @__PURE__ */ jsx("p", {
142
+ className: cn("wwc:text-xs wwc:text-amber-600", className),
143
+ children
144
+ });
145
+ }
146
+ //#endregion
147
+ export { FormDialog, FormDialogCaveat, FormDialogField, FormDialogNote, FormDialogRow, useFormDialogAttempted };
148
+
149
+ //# sourceMappingURL=form-dialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-dialog.mjs","names":[],"sources":["../src/form-dialog.tsx"],"sourcesContent":["import {cn} from \"@corensystem/coren-utils\";\nimport * as React from \"react\";\n\nimport {Button} from \"./button\";\nimport {Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle} from \"./dialog\";\nimport {Label} from \"./label\";\n\n/**\n * The house contract for a single-step create/edit modal, in one place.\n *\n * Every authoring dialog in the library had grown its own copy of the same three decisions:\n *\n * 1. **Submit is never disabled.** A greyed-out button tells the user nothing about what is\n * missing. Instead the press is swallowed, `attempted` flips true, and the offending fields\n * light up. `FormDialog` owns that flag so a call site never declares it again.\n * 2. **Validity and error display are separate.** Call sites pass each field's *validity*\n * (`invalid`) and this component decides *when* it becomes visible — never before the user has\n * actually tried to submit. That is why `FormDialogField` takes `invalid`, not `showError`.\n * 3. **Reset runs on close as well as on success.** Re-opening a dialog that still holds the last\n * attempt's half-typed values is a bug every copy had to remember not to write.\n *\n * The footer's left slot is guidance, not decoration: it holds `hint` in steady state and swaps to\n * `error` once a submit has been refused, so the explanation appears where the user is already\n * looking when the button does nothing.\n */\n\ninterface FormDialogContextValue {\n\t/** True once a submit has been refused; fields paint their errors only after this. */\n\tattempted: boolean;\n}\n\nconst FormDialogContext = React.createContext<FormDialogContextValue>({attempted: false});\n\n/**\n * Reads whether this dialog has already refused a submit. Rarely needed directly — `FormDialogField`\n * resolves it for you — but available for a call site rendering a field layout of its own.\n */\nexport function useFormDialogAttempted(): boolean {\n\treturn React.useContext(FormDialogContext).attempted;\n}\n\nexport interface FormDialogProps {\n\topen: boolean;\n\tonOpenChange: (open: boolean) => void;\n\t/** Dialog heading. */\n\ttitle: React.ReactNode;\n\t/** Optional sub-heading under the title band. */\n\tdescription?: React.ReactNode;\n\t/**\n\t * Max width of the dialog in pixels. Defaults to `520` — the width of the narrowest shipped\n\t * authoring dialog; widen only when a field row genuinely needs two columns.\n\t */\n\twidth?: number;\n\t/**\n\t * Whether the form may be submitted. The submit button stays enabled either way — this only\n\t * decides whether a press succeeds or reveals the errors.\n\t */\n\tvalid: boolean;\n\t/** Footer guidance shown until a submit is refused, e.g. \"Name it, then create.\" */\n\thint?: React.ReactNode;\n\t/** Replaces `hint` once a submit has been refused. Say what is missing, not that something is. */\n\terror?: React.ReactNode;\n\t/** Label of the confirming button, e.g. \"Create process\". */\n\tsubmitLabel: React.ReactNode;\n\t/** Label of the dismissing button. Defaults to \"Cancel\". */\n\tcancelLabel?: React.ReactNode;\n\t/** Variant of the confirming button. Defaults to the primary `default`. */\n\tsubmitVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n\t/** Extra props for the confirming button — test hooks, `data-*` attributes. */\n\tsubmitProps?: Omit<React.ComponentProps<typeof Button>, \"onClick\" | \"variant\" | \"children\">;\n\t/** Runs only when `valid` is true. Closes the dialog afterwards unless `keepOpenOnSubmit`. */\n\tonSubmit: () => void;\n\t/** Clears the form. Runs after a successful submit AND whenever the dialog closes. */\n\tonReset?: () => void;\n\t/** Keep the dialog open after a successful submit — for a form that stays up to add another. */\n\tkeepOpenOnSubmit?: boolean;\n\t/** Applied to `DialogContent`, after the width. */\n\tclassName?: string;\n\tchildren: React.ReactNode;\n}\n\n/** Single-step create/edit modal: header band, field body, guidance-and-actions footer. */\nexport function FormDialog({\n\topen,\n\tonOpenChange,\n\ttitle,\n\tdescription,\n\twidth = 520,\n\tvalid,\n\thint,\n\terror,\n\tsubmitLabel,\n\tcancelLabel = \"Cancel\",\n\tsubmitVariant,\n\tsubmitProps,\n\tonSubmit,\n\tonReset,\n\tkeepOpenOnSubmit = false,\n\tclassName,\n\tchildren,\n}: FormDialogProps) {\n\tconst [attempted, setAttempted] = React.useState(false);\n\n\t// One place to land after every exit — a dismiss, a successful submit, or an Escape — so no path\n\t// can leave the next open showing the last attempt's values.\n\tconst clear = React.useCallback(() => {\n\t\tsetAttempted(false);\n\t\tonReset?.();\n\t}, [onReset]);\n\n\tconst close = (next: boolean) => {\n\t\tif (!next) clear();\n\t\tonOpenChange(next);\n\t};\n\n\tconst submit = () => {\n\t\tif (!valid) {\n\t\t\tsetAttempted(true);\n\t\t\treturn;\n\t\t}\n\t\tonSubmit();\n\t\tif (keepOpenOnSubmit) {\n\t\t\t// Same clear, minus the close: the form empties and stays up for the next entry.\n\t\t\tclear();\n\t\t\treturn;\n\t\t}\n\t\tclose(false);\n\t};\n\n\tconst context = React.useMemo(() => ({attempted}), [attempted]);\n\n\treturn (\n\t\t<Dialog open={open} onOpenChange={close}>\n\t\t\t<DialogContent\n\t\t\t\tdata-core-artifact=\"form-dialog\"\n\t\t\t\tclassName={cn(\"wwc:w-[calc(100vw-2rem)]\", className)}\n\t\t\t\tstyle={{maxWidth: width}}\n\t\t\t>\n\t\t\t\t<DialogHeader className=\"wwc:flex-col wwc:items-start wwc:gap-0.5\">\n\t\t\t\t\t<DialogTitle>{title}</DialogTitle>\n\t\t\t\t\t{description ? <DialogDescription className=\"wwc:text-xs\">{description}</DialogDescription> : null}\n\t\t\t\t</DialogHeader>\n\t\t\t\t<FormDialogContext.Provider value={context}>\n\t\t\t\t\t<div className=\"wwc:grid wwc:gap-4 wwc:p-4\">{children}</div>\n\t\t\t\t</FormDialogContext.Provider>\n\t\t\t\t<DialogFooter>\n\t\t\t\t\t<span className=\"wwc:text-sm\">\n\t\t\t\t\t\t{attempted && !valid ? (\n\t\t\t\t\t\t\t<span className=\"wwc:text-destructive\">{error}</span>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"wwc:text-muted-foreground\">{hint}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t<Button variant=\"outline\" onClick={() => close(false)}>\n\t\t\t\t\t\t\t{cancelLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button variant={submitVariant} onClick={submit} {...submitProps}>\n\t\t\t\t\t\t\t{submitLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</DialogFooter>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n\n/** What the render-prop form of a field hands its control. */\nexport interface FormDialogFieldState {\n\t/** Whether to paint the field red — validity already resolved against `attempted`. */\n\tinvalid: boolean;\n\t/** Put this on the control. It is what the field's `<label>` points at. */\n\tid: string;\n\t/** Put this on the control as `aria-describedby` — the id of the hint line, when there is one. */\n\tdescribedBy?: string;\n\t/**\n\t * Id of the caption itself. For a control `htmlFor` cannot name — a toggle group, a radio row —\n\t * point the group at this with `aria-labelledby` instead.\n\t */\n\tlabelId: string;\n}\n\nexport interface FormDialogFieldProps {\n\t/** Field name. Rendered as the house's uppercase muted caption, in a real `<label>`. */\n\tlabel: React.ReactNode;\n\t/**\n\t * True while the field's value is unacceptable — plain validity, not \"should I show red now\".\n\t * The dialog decides the timing: nothing paints until a submit has been refused.\n\t */\n\tinvalid?: boolean;\n\t/** Muted helper line under the control, e.g. \"Its rows are the tokens of this process.\" */\n\thint?: React.ReactNode;\n\t/**\n\t * Id of the control this labels. Only needed for the plain-children form, where the field cannot\n\t * reach the control to give it one — with the render prop, take `id` from the state instead.\n\t */\n\thtmlFor?: string;\n\tclassName?: string;\n\t/**\n\t * The control. Given as a function to receive `invalid` already resolved against `attempted`, plus\n\t * the `id` the label points at and the `describedBy` of the hint line — spread them onto your own\n\t * input as `aria-invalid`, `id` and `aria-describedby`. Fields with nothing to validate can pass\n\t * plain children instead, naming the control with `htmlFor`.\n\t */\n\tchildren: React.ReactNode | ((state: FormDialogFieldState) => React.ReactNode);\n}\n\n/**\n * One labelled field inside a {@link FormDialog}.\n *\n * The caption is a real `<label>` bound to the control, not a styled `<span>`: a caption that only\n * looks like a label reads to a screen reader as \"edit, blank\", and no amount of visual review\n * catches it. The id comes from here because the field is the only thing that sees both sides —\n * take it from the render prop, or name your own control with `htmlFor`.\n */\nexport function FormDialogField({label, invalid = false, hint, htmlFor, className, children}: FormDialogFieldProps) {\n\tconst attempted = useFormDialogAttempted();\n\t// The whole point of the split: an untouched form is never red, however invalid it is.\n\tconst showError = attempted && invalid;\n\tconst generatedId = React.useId();\n\tconst fieldId = htmlFor ?? generatedId;\n\tconst hintId = `${generatedId}-hint`;\n\tconst labelId = `${generatedId}-label`;\n\n\treturn (\n\t\t<div className={cn(\"wwc:space-y-1.5\", className)}>\n\t\t\t<Label\n\t\t\t\tid={labelId}\n\t\t\t\thtmlFor={fieldId}\n\t\t\t\t// `leading-4` restores what `text-xs` gave the plain <span> this replaced: `Label`'s own\n\t\t\t\t// `leading-none` would shorten every caption's line box by 4px and move every field.\n\t\t\t\tclassName=\"wwc:text-xs wwc:leading-4 wwc:font-semibold wwc:tracking-wide wwc:text-muted-foreground wwc:uppercase\"\n\t\t\t>\n\t\t\t\t{label}\n\t\t\t</Label>\n\t\t\t{typeof children === \"function\"\n\t\t\t\t? children({invalid: showError, id: fieldId, describedBy: hint ? hintId : undefined, labelId})\n\t\t\t\t: children}\n\t\t\t{hint ? (\n\t\t\t\t<p id={hintId} className=\"wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t{hint}\n\t\t\t\t</p>\n\t\t\t) : null}\n\t\t</div>\n\t);\n}\n\nexport interface FormDialogRowProps {\n\t/** Columns from the `sm` breakpoint up. Below it the fields always stack. Defaults to `2`. */\n\tcolumns?: 2 | 3;\n\tclassName?: string;\n\tchildren: React.ReactNode;\n}\n\n/** Puts sibling {@link FormDialogField}s side by side, stacking them on a narrow viewport. */\nexport function FormDialogRow({columns = 2, className, children}: FormDialogRowProps) {\n\treturn (\n\t\t<div className={cn(\"wwc:grid wwc:gap-4\", columns === 2 ? \"wwc:sm:grid-cols-2\" : \"wwc:sm:grid-cols-3\", className)}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\n/** Muted explanatory paragraph between fields — what the form will actually produce. */\nexport function FormDialogNote({className, children}: {className?: string; children: React.ReactNode}) {\n\treturn <p className={cn(\"wwc:text-xs wwc:text-muted-foreground\", className)}>{children}</p>;\n}\n\n/** Amber caveat between fields — true, non-blocking, and worth reading before submitting. */\nexport function FormDialogCaveat({className, children}: {className?: string; children: React.ReactNode}) {\n\treturn <p className={cn(\"wwc:text-xs wwc:text-amber-600\", className)}>{children}</p>;\n}\n"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import * as React from "react";
2
+ import { VariantProps } from "class-variance-authority";
3
+ //#region src/form-layout.d.ts
4
+ declare const formLayoutVariants: (props?: ({
5
+ layout?: "horizontal" | "vertical" | "inline" | null | undefined;
6
+ size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export interface FormLayoutProps extends React.FormHTMLAttributes<HTMLFormElement>, VariantProps<typeof formLayoutVariants> {}
9
+ /** Layout container for forms with consistent spacing and sizing. */
10
+ declare const FormLayout: React.ForwardRefExoticComponent<FormLayoutProps & React.RefAttributes<HTMLFormElement>>;
11
+ export interface FormSectionProps extends React.HTMLAttributes<HTMLFieldSetElement> {
12
+ /** Section title */
13
+ title?: string;
14
+ /** Section description */
15
+ description?: string;
16
+ }
17
+ /** Grouped section within a form. */
18
+ declare const FormSection: React.ForwardRefExoticComponent<FormSectionProps & React.RefAttributes<HTMLFieldSetElement>>;
19
+ export interface FormRowProps extends React.HTMLAttributes<HTMLDivElement> {
20
+ /** Number of columns (for horizontal layouts) */
21
+ columns?: 1 | 2 | 3 | 4;
22
+ }
23
+ /** Row within a form for grouping fields horizontally. */
24
+ declare const FormRow: React.ForwardRefExoticComponent<FormRowProps & React.RefAttributes<HTMLDivElement>>;
25
+ export interface FormActionsProps extends React.HTMLAttributes<HTMLDivElement> {
26
+ /** Alignment of actions */
27
+ align?: "left" | "center" | "right" | "between";
28
+ }
29
+ /** Container for form action buttons. */
30
+ declare const FormActions: React.ForwardRefExoticComponent<FormActionsProps & React.RefAttributes<HTMLDivElement>>;
31
+ //#endregion
32
+ export { FormActions, FormLayout, FormRow, FormSection, formLayoutVariants };
33
+ //# sourceMappingURL=form-layout.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-layout.d.mts","names":[],"sources":["../src/form-layout.tsx"],"mappings":";;;cAIM,qBAAkB;;;6CAmBtB;iBAEe,wBACR,MAAM,mBAAmB,kBAAkB,oBAAoB;;cAGlE,YAAU,MAAA,0BAAA,kBAAA,MAAA,cAAA;iBASC,yBAAyB,MAAM,eAAe;;EAE9D;;EAEA;;;cAIK,aAAW,MAAA,0BAAA,mBAAA,MAAA,cAAA;iBAeA,qBAAqB,MAAM,eAAe;;EAE1D;;;cAIK,SAAO,MAAA,0BAAA,eAAA,MAAA,cAAA;iBAgBI,yBAAyB,MAAM,eAAe;;EAE9D;;;cAIK,aAAW,MAAA,0BAAA,mBAAA,MAAA,cAAA"}