@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,3076 @@
1
+ import { Badge } from "../badge.mjs";
2
+ import { Button } from "../button.mjs";
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../card.mjs";
4
+ import { Empty } from "../empty.mjs";
5
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "../dialog.mjs";
6
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../select.mjs";
7
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../dropdown-menu.mjs";
8
+ import { Tabs, TabsList, TabsTrigger } from "../tabs.mjs";
9
+ import { Label } from "../label.mjs";
10
+ import { Input } from "../input.mjs";
11
+ import { DatePicker } from "../date-picker.mjs";
12
+ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "../alert-dialog.mjs";
13
+ import { Checkbox } from "../checkbox.mjs";
14
+ import { Combobox } from "../combobox.mjs";
15
+ import { Skeleton } from "../skeleton.mjs";
16
+ import { DataTable, DataTableColumnHeader } from "../data-table.mjs";
17
+ import { FormActionBar } from "../form-action-bar.mjs";
18
+ import { MultiSelect } from "../multi-select.mjs";
19
+ import { PropertyList, PropertyRow } from "../property-list.mjs";
20
+ import { Toaster, toast } from "../sonner.mjs";
21
+ import { SectionPanel } from "../section-panel.mjs";
22
+ import { PermissionMatrix } from "../permission-matrix.mjs";
23
+ import { CoreAppSidebar } from "../navigation/core-app-sidebar.mjs";
24
+ import { CoreAppTopBar } from "../navigation/core-app-top-bar.mjs";
25
+ import { ARAMCO_LOGO, DIRIYAH_LOGO, NEOM_LOGO, QIDDIYA_LOGO, RED_SEA_LOGO, ROSHN_LOGO } from "./org-logos.mjs";
26
+ import { cn } from "@corensystem/coren-utils";
27
+ import { Archive, ArchiveRestore, ArrowRight, Ban, Building2, ChevronLeft, Copy, ExternalLink, Eye, FolderKanban, Home, MapPin, MoreHorizontal, Pencil, Plus, Save, Search, ShieldCheck, Upload, UserCheck, Users } from "lucide-react";
28
+ import { useEffect, useMemo, useRef, useState } from "react";
29
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
30
+ //#region src/pages/core-admin-panel.tsx
31
+ const NAV_ITEMS = [
32
+ {
33
+ id: "home",
34
+ label: "Overview",
35
+ icon: Home
36
+ },
37
+ {
38
+ id: "projects",
39
+ label: "Projects",
40
+ icon: FolderKanban
41
+ },
42
+ {
43
+ id: "permissions",
44
+ label: "Roles",
45
+ icon: ShieldCheck
46
+ },
47
+ {
48
+ id: "users",
49
+ label: "Users",
50
+ icon: Users
51
+ }
52
+ ];
53
+ const ADMIN_GROUPS = [{ items: NAV_ITEMS }];
54
+ const ADD_LABEL = {
55
+ home: "",
56
+ projects: "New project",
57
+ permissions: "New role",
58
+ users: "Invite user"
59
+ };
60
+ const RIYADH_TZ = "Asia/Riyadh UTC +03:00";
61
+ const KSA = "Saudi Arabia";
62
+ const PROJECTS = [
63
+ {
64
+ id: "p1",
65
+ status: "Active",
66
+ name: "ISSD_BI-10-13202",
67
+ projectType: "-",
68
+ contractType: "-",
69
+ contractDuration: "-",
70
+ startDate: "-",
71
+ country: KSA,
72
+ timeZone: RIYADH_TZ,
73
+ createdAt: "12 Jan 2023",
74
+ createdBy: "Layla Nasser"
75
+ },
76
+ {
77
+ id: "p2",
78
+ status: "Active",
79
+ name: "Fadhili GIP PKG 1",
80
+ projectType: "-",
81
+ contractType: "-",
82
+ contractDuration: "-",
83
+ startDate: "-",
84
+ country: KSA,
85
+ timeZone: RIYADH_TZ,
86
+ createdAt: "03 Feb 2023",
87
+ createdBy: "Ahmed Raza"
88
+ },
89
+ {
90
+ id: "p3",
91
+ status: "Active",
92
+ name: "Jazan Refinery-Boiler Pkg.",
93
+ projectType: "Refinery",
94
+ contractType: "-",
95
+ contractDuration: "-",
96
+ startDate: "-",
97
+ country: KSA,
98
+ timeZone: RIYADH_TZ,
99
+ createdAt: "21 Feb 2023",
100
+ createdBy: "Maya Khan"
101
+ },
102
+ {
103
+ id: "p4",
104
+ status: "Active",
105
+ name: "Khurais",
106
+ projectType: "-",
107
+ contractType: "-",
108
+ contractDuration: "-",
109
+ startDate: "-",
110
+ country: KSA,
111
+ timeZone: RIYADH_TZ,
112
+ createdAt: "09 Mar 2023",
113
+ createdBy: "Sara Idris"
114
+ },
115
+ {
116
+ id: "p5",
117
+ status: "Active",
118
+ name: "Phase-3, Package-8",
119
+ projectType: "Pipelines",
120
+ contractType: "Remeasurable",
121
+ contractDuration: "-",
122
+ startDate: "-",
123
+ country: KSA,
124
+ timeZone: RIYADH_TZ,
125
+ createdAt: "28 Mar 2023",
126
+ createdBy: "Omar Farouk"
127
+ },
128
+ {
129
+ id: "p6",
130
+ status: "Archived",
131
+ name: "Jafurah-Phase 2",
132
+ projectType: "Infrastructure",
133
+ contractType: "-",
134
+ contractDuration: "-",
135
+ startDate: "-",
136
+ country: KSA,
137
+ timeZone: RIYADH_TZ,
138
+ createdAt: "14 Apr 2023",
139
+ createdBy: "Layla Nasser"
140
+ },
141
+ {
142
+ id: "p7",
143
+ status: "Active",
144
+ name: "SRU_Yanbu_Refinery",
145
+ projectType: "Refinery",
146
+ contractType: "Cost Plus",
147
+ contractDuration: "-",
148
+ startDate: "-",
149
+ country: KSA,
150
+ timeZone: RIYADH_TZ,
151
+ createdAt: "02 May 2023",
152
+ createdBy: "Ahmed Raza"
153
+ },
154
+ {
155
+ id: "p8",
156
+ status: "Active",
157
+ name: "Turaif",
158
+ projectType: "-",
159
+ contractType: "-",
160
+ contractDuration: "-",
161
+ startDate: "-",
162
+ country: KSA,
163
+ timeZone: RIYADH_TZ,
164
+ createdAt: "19 May 2023",
165
+ createdBy: "Rania Salem"
166
+ },
167
+ {
168
+ id: "p9",
169
+ status: "Active",
170
+ name: "Shaybah DPCU",
171
+ projectType: "Airports",
172
+ contractType: "Lump Sum",
173
+ contractDuration: "1000 Days",
174
+ startDate: "06/11/2023",
175
+ country: KSA,
176
+ timeZone: RIYADH_TZ,
177
+ createdAt: "01 Jun 2023",
178
+ createdBy: "Maya Khan"
179
+ },
180
+ {
181
+ id: "p10",
182
+ status: "Active",
183
+ name: "Sinopec",
184
+ projectType: "Airports",
185
+ contractType: "Lump Sum",
186
+ contractDuration: "1000 Days",
187
+ startDate: "06/11/2023",
188
+ country: KSA,
189
+ timeZone: RIYADH_TZ,
190
+ createdAt: "16 Jun 2023",
191
+ createdBy: "Omar Farouk"
192
+ },
193
+ {
194
+ id: "p11",
195
+ status: "Active",
196
+ name: "JC3C4",
197
+ projectType: "Airports",
198
+ contractType: "Lump Sum",
199
+ contractDuration: "1000 Days",
200
+ startDate: "06/11/2023",
201
+ country: KSA,
202
+ timeZone: RIYADH_TZ,
203
+ createdAt: "30 Jun 2023",
204
+ createdBy: "Sara Idris"
205
+ },
206
+ {
207
+ id: "p12",
208
+ status: "Archived",
209
+ name: "JTE-5250-300",
210
+ projectType: "Airports",
211
+ contractType: "Lump Sum",
212
+ contractDuration: "1000 Days",
213
+ startDate: "06/11/2023",
214
+ country: KSA,
215
+ timeZone: RIYADH_TZ,
216
+ createdAt: "12 Jul 2023",
217
+ createdBy: "Layla Nasser"
218
+ },
219
+ {
220
+ id: "p13",
221
+ status: "Archived",
222
+ name: "SITP",
223
+ projectType: "Airports",
224
+ contractType: "Lump Sum",
225
+ contractDuration: "1000 Days",
226
+ startDate: "06/11/2023",
227
+ country: KSA,
228
+ timeZone: RIYADH_TZ,
229
+ createdAt: "25 Jul 2023",
230
+ createdBy: "Rania Salem"
231
+ },
232
+ {
233
+ id: "p14",
234
+ status: "Archived",
235
+ name: "Riyas",
236
+ projectType: "Airports",
237
+ contractType: "Lump Sum",
238
+ contractDuration: "1000 Days",
239
+ startDate: "06/11/2023",
240
+ country: KSA,
241
+ timeZone: RIYADH_TZ,
242
+ createdAt: "08 Aug 2023",
243
+ createdBy: "Ahmed Raza"
244
+ }
245
+ ];
246
+ const MODULES = [
247
+ {
248
+ id: "drone",
249
+ label: "Drone Deploy",
250
+ enabled: false
251
+ },
252
+ {
253
+ id: "pcc",
254
+ label: "PCC",
255
+ enabled: false
256
+ },
257
+ {
258
+ id: "clnc_visit",
259
+ label: "Clinic Visit",
260
+ enabled: true
261
+ },
262
+ {
263
+ id: "clnc_dashboard",
264
+ label: "Clinic Dashboard",
265
+ enabled: true
266
+ },
267
+ {
268
+ id: "clnc_settings",
269
+ label: "Clinic Settings",
270
+ enabled: true
271
+ },
272
+ {
273
+ id: "clnc_worker",
274
+ label: "Clinic Worker",
275
+ enabled: true
276
+ },
277
+ {
278
+ id: "clnc_doctor",
279
+ label: "Clinic Doctor",
280
+ enabled: true
281
+ },
282
+ {
283
+ id: "video_wall",
284
+ label: "Video Wall",
285
+ enabled: true
286
+ },
287
+ {
288
+ id: "playground",
289
+ label: "Playground",
290
+ enabled: false
291
+ },
292
+ {
293
+ id: "progress_capture",
294
+ label: "Progress Capture",
295
+ enabled: false
296
+ },
297
+ {
298
+ id: "siteguard",
299
+ label: "Siteguard",
300
+ enabled: true
301
+ },
302
+ {
303
+ id: "payment",
304
+ label: "Payment",
305
+ enabled: false
306
+ },
307
+ {
308
+ id: "weatherstation",
309
+ label: "Weather Station",
310
+ enabled: false
311
+ },
312
+ {
313
+ id: "equipments_tracker",
314
+ label: "Equipment Tracker",
315
+ enabled: false
316
+ },
317
+ {
318
+ id: "site_support",
319
+ label: "Site Support",
320
+ enabled: false
321
+ },
322
+ {
323
+ id: "equipments",
324
+ label: "Equipments",
325
+ enabled: false
326
+ },
327
+ {
328
+ id: "sitesup_issues",
329
+ label: "Site Issues",
330
+ enabled: true
331
+ },
332
+ {
333
+ id: "sitesup_teams",
334
+ label: "Site Teams",
335
+ enabled: true
336
+ },
337
+ {
338
+ id: "sitesup_reports",
339
+ label: "Site Reports",
340
+ enabled: true
341
+ },
342
+ {
343
+ id: "sitesup_playbooks",
344
+ label: "Site Playbooks",
345
+ enabled: true
346
+ },
347
+ {
348
+ id: "journeys",
349
+ label: "Journeys",
350
+ enabled: false
351
+ },
352
+ {
353
+ id: "sitesup_automation",
354
+ label: "Site Automation",
355
+ enabled: false
356
+ },
357
+ {
358
+ id: "ticket_manager",
359
+ label: "Ticket Manager",
360
+ enabled: false
361
+ },
362
+ {
363
+ id: "anchor_planner",
364
+ label: "Anchor Planner",
365
+ enabled: false
366
+ }
367
+ ];
368
+ const muted = (v) => /* @__PURE__ */ jsx("span", {
369
+ className: v === "-" ? "wwc:text-muted-foreground/50" : "wwc:text-muted-foreground",
370
+ children: v
371
+ });
372
+ function makeProjectColumns(onOpen, onArchive, onRestore) {
373
+ return [
374
+ {
375
+ accessorKey: "name",
376
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
377
+ column,
378
+ title: "Name"
379
+ }),
380
+ cell: ({ row }) => /* @__PURE__ */ jsx("button", {
381
+ type: "button",
382
+ onClick: () => onOpen(row.original),
383
+ className: "wwc:text-left wwc:font-medium wwc:underline wwc:underline-offset-2 wwc:transition-colors wwc:hover:text-primary",
384
+ children: row.original.name
385
+ })
386
+ },
387
+ {
388
+ accessorKey: "projectType",
389
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
390
+ column,
391
+ title: "Project Type"
392
+ }),
393
+ cell: ({ row }) => muted(row.original.projectType)
394
+ },
395
+ {
396
+ accessorKey: "contractType",
397
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
398
+ column,
399
+ title: "Contract Type"
400
+ }),
401
+ cell: ({ row }) => muted(row.original.contractType)
402
+ },
403
+ {
404
+ accessorKey: "contractDuration",
405
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
406
+ column,
407
+ title: "Contract Duration"
408
+ }),
409
+ cell: ({ row }) => muted(row.original.contractDuration)
410
+ },
411
+ {
412
+ accessorKey: "startDate",
413
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
414
+ column,
415
+ title: "Start Date"
416
+ }),
417
+ cell: ({ row }) => muted(row.original.startDate)
418
+ },
419
+ {
420
+ accessorKey: "country",
421
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
422
+ column,
423
+ title: "Country"
424
+ }),
425
+ cell: ({ row }) => /* @__PURE__ */ jsx("span", { children: row.original.country })
426
+ },
427
+ {
428
+ accessorKey: "timeZone",
429
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
430
+ column,
431
+ title: "Time Zone"
432
+ }),
433
+ cell: ({ row }) => muted(row.original.timeZone)
434
+ },
435
+ {
436
+ id: "actions",
437
+ enableSorting: false,
438
+ meta: { cellClassName: "wwc:w-px wwc:max-w-none wwc:overflow-visible wwc:whitespace-nowrap wwc:text-right" },
439
+ cell: ({ row }) => /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
440
+ asChild: true,
441
+ children: /* @__PURE__ */ jsx(Button, {
442
+ variant: "ghost",
443
+ icon: true,
444
+ "aria-label": "Row actions",
445
+ className: "wwc:h-7 wwc:w-7 wwc:text-muted-foreground",
446
+ children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "wwc:h-4 wwc:w-4" })
447
+ })
448
+ }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
449
+ align: "end",
450
+ className: "wwc:w-48",
451
+ children: [
452
+ /* @__PURE__ */ jsxs(DropdownMenuItem, {
453
+ onClick: () => onOpen(row.original),
454
+ children: [/* @__PURE__ */ jsx(Eye, { className: "wwc:h-4 wwc:w-4" }), "View details"]
455
+ }),
456
+ /* @__PURE__ */ jsxs(DropdownMenuItem, {
457
+ onClick: () => window.open("https://core.com", "_blank", "noopener"),
458
+ children: [/* @__PURE__ */ jsx(ExternalLink, { className: "wwc:h-4 wwc:w-4" }), "Open project"]
459
+ }),
460
+ row.original.status === "Archived" ? /* @__PURE__ */ jsxs(DropdownMenuItem, {
461
+ onClick: () => onRestore(row.original),
462
+ children: [/* @__PURE__ */ jsx(ArchiveRestore, { className: "wwc:h-4 wwc:w-4" }), "Restore project"]
463
+ }) : /* @__PURE__ */ jsxs(DropdownMenuItem, {
464
+ onClick: () => onArchive(row.original),
465
+ className: "wwc:text-destructive focus:wwc:text-destructive",
466
+ children: [/* @__PURE__ */ jsx(Archive, { className: "wwc:h-4 wwc:w-4" }), "Archive project"]
467
+ })
468
+ ]
469
+ })] })
470
+ }
471
+ ];
472
+ }
473
+ const moduleDefaults = () => Object.fromEntries(MODULES.map((m) => [m.id, m.enabled]));
474
+ const PROJECT_TYPES = [
475
+ "Buildings",
476
+ "Infrastructure",
477
+ "Refinery",
478
+ "Pipelines",
479
+ "Roads",
480
+ "Airports",
481
+ "Industrial"
482
+ ];
483
+ const CONTRACT_TYPES = [
484
+ "Lump Sum",
485
+ "Cost Plus",
486
+ "Remeasurable",
487
+ "Unit Price",
488
+ "Turnkey (EPC)"
489
+ ];
490
+ const COUNTRIES = [
491
+ "Saudi Arabia",
492
+ "United Arab Emirates",
493
+ "Qatar",
494
+ "Kuwait",
495
+ "Bahrain",
496
+ "Oman",
497
+ "Egypt"
498
+ ];
499
+ const TIMEZONES = [
500
+ "Asia/Riyadh UTC +03:00",
501
+ "Asia/Dubai UTC +04:00",
502
+ "Asia/Qatar UTC +03:00",
503
+ "Asia/Kuwait UTC +03:00",
504
+ "Asia/Bahrain UTC +03:00",
505
+ "Asia/Muscat UTC +04:00",
506
+ "Africa/Cairo UTC +02:00"
507
+ ];
508
+ const COUNTRY_TIMEZONE = {
509
+ "Saudi Arabia": "Asia/Riyadh UTC +03:00",
510
+ "United Arab Emirates": "Asia/Dubai UTC +04:00",
511
+ Qatar: "Asia/Qatar UTC +03:00",
512
+ Kuwait: "Asia/Kuwait UTC +03:00",
513
+ Bahrain: "Asia/Bahrain UTC +03:00",
514
+ Oman: "Asia/Muscat UTC +04:00",
515
+ Egypt: "Africa/Cairo UTC +02:00"
516
+ };
517
+ const EMPTY_FIELDS = {
518
+ name: "",
519
+ projectType: "",
520
+ contractType: "",
521
+ contractDuration: "",
522
+ startDate: "",
523
+ country: "",
524
+ timeZone: ""
525
+ };
526
+ const unDash = (v) => v === "-" ? "" : v;
527
+ const fieldsFromProject = (p) => ({
528
+ name: p.name,
529
+ projectType: unDash(p.projectType),
530
+ contractType: unDash(p.contractType),
531
+ contractDuration: unDash(p.contractDuration).replace(/\s*Days$/i, ""),
532
+ startDate: unDash(p.startDate),
533
+ country: unDash(p.country),
534
+ timeZone: unDash(p.timeZone)
535
+ });
536
+ const pad2 = (n) => String(n).padStart(2, "0");
537
+ const parseDMY = (s) => {
538
+ const m = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(s.trim());
539
+ if (!m) return void 0;
540
+ return new Date(Number(m[3]), Number(m[2]) - 1, Number(m[1]));
541
+ };
542
+ const formatDMY = (d) => `${pad2(d.getDate())}/${pad2(d.getMonth() + 1)}/${d.getFullYear()}`;
543
+ function FieldSelect({ value, onChange, placeholder, options, triggerClassName = "wwc:ml-auto wwc:w-full wwc:max-w-sm" }) {
544
+ return /* @__PURE__ */ jsxs(Select, {
545
+ value: value || void 0,
546
+ onValueChange: onChange,
547
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
548
+ className: triggerClassName,
549
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
550
+ }), /* @__PURE__ */ jsx(SelectContent, { children: options.map((o) => /* @__PURE__ */ jsx(SelectItem, {
551
+ value: o,
552
+ children: o
553
+ }, o)) })]
554
+ });
555
+ }
556
+ function ProjectForm({ mode, project, draft, onField, errors, modules, onToggleModule, onBack }) {
557
+ const enabledCount = MODULES.filter((m) => modules[m.id]).length;
558
+ const [moduleSearch, setModuleSearch] = useState("");
559
+ const filteredModules = MODULES.filter((m) => m.label.toLowerCase().includes(moduleSearch.trim().toLowerCase()));
560
+ return /* @__PURE__ */ jsxs("div", {
561
+ className: "wwc:space-y-6",
562
+ children: [
563
+ /* @__PURE__ */ jsxs(Button, {
564
+ variant: "ghost",
565
+ size: "sm",
566
+ onClick: onBack,
567
+ className: "wwc:-ml-2",
568
+ children: [/* @__PURE__ */ jsx(ChevronLeft, { className: "wwc:h-4 wwc:w-4" }), "Back to projects"]
569
+ }),
570
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h1", {
571
+ className: "wwc:text-2xl wwc:font-bold wwc:tracking-tight",
572
+ children: mode === "create" ? "New project" : project?.name
573
+ }), /* @__PURE__ */ jsx("p", {
574
+ className: "wwc:text-sm wwc:text-muted-foreground",
575
+ children: mode === "create" ? "Fill in the details below to create a project." : `Created ${project?.createdAt} by ${project?.createdBy}`
576
+ })] }),
577
+ /* @__PURE__ */ jsxs(Card, {
578
+ className: "wwc:shadow-none",
579
+ children: [/* @__PURE__ */ jsxs(CardHeader, {
580
+ className: "wwc:pb-2",
581
+ children: [/* @__PURE__ */ jsx(CardTitle, {
582
+ className: "wwc:text-base",
583
+ children: "Project details"
584
+ }), /* @__PURE__ */ jsx(CardDescription, { children: "Profile and metadata for this project." })]
585
+ }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(PropertyList, {
586
+ labelWidth: "12rem",
587
+ children: [
588
+ /* @__PURE__ */ jsx(PropertyRow, {
589
+ label: "Project name",
590
+ required: true,
591
+ align: "start",
592
+ children: /* @__PURE__ */ jsxs("div", {
593
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
594
+ children: [/* @__PURE__ */ jsx(Input, {
595
+ value: draft.name,
596
+ onChange: (e) => onField("name", e.target.value),
597
+ placeholder: "Project name",
598
+ "aria-invalid": !!errors.name || !!errors.nameDup,
599
+ className: cn("wwc:w-full", (errors.name || errors.nameDup) && "wwc:border-destructive wwc:focus-visible:ring-destructive")
600
+ }), errors.name ? /* @__PURE__ */ jsx("p", {
601
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
602
+ children: "Project name is required."
603
+ }) : errors.nameDup ? /* @__PURE__ */ jsx("p", {
604
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
605
+ children: "A project with this name already exists."
606
+ }) : null]
607
+ })
608
+ }),
609
+ /* @__PURE__ */ jsx(PropertyRow, {
610
+ label: "Project type",
611
+ children: /* @__PURE__ */ jsx(FieldSelect, {
612
+ value: draft.projectType,
613
+ onChange: (v) => onField("projectType", v),
614
+ placeholder: "Choose type",
615
+ options: PROJECT_TYPES
616
+ })
617
+ }),
618
+ /* @__PURE__ */ jsx(PropertyRow, {
619
+ label: "Contract type",
620
+ children: /* @__PURE__ */ jsx(FieldSelect, {
621
+ value: draft.contractType,
622
+ onChange: (v) => onField("contractType", v),
623
+ placeholder: "Select contract type",
624
+ options: CONTRACT_TYPES
625
+ })
626
+ }),
627
+ /* @__PURE__ */ jsx(PropertyRow, {
628
+ label: "Contract duration",
629
+ align: "start",
630
+ children: /* @__PURE__ */ jsxs("div", {
631
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
632
+ children: [/* @__PURE__ */ jsxs("div", {
633
+ className: "wwc:flex wwc:items-center wwc:gap-2",
634
+ children: [/* @__PURE__ */ jsx(Input, {
635
+ type: "number",
636
+ min: 1,
637
+ step: 1,
638
+ value: draft.contractDuration,
639
+ onChange: (e) => onField("contractDuration", e.target.value),
640
+ placeholder: "Duration",
641
+ "aria-invalid": errors.duration,
642
+ className: cn(errors.duration && "wwc:border-destructive wwc:focus-visible:ring-destructive")
643
+ }), /* @__PURE__ */ jsx("span", {
644
+ className: "wwc:shrink-0 wwc:text-sm wwc:text-muted-foreground",
645
+ children: "Days"
646
+ })]
647
+ }), errors.duration && /* @__PURE__ */ jsx("p", {
648
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
649
+ children: "Duration must be a positive whole number of days."
650
+ })]
651
+ })
652
+ }),
653
+ /* @__PURE__ */ jsx(PropertyRow, {
654
+ label: "Start date",
655
+ align: "start",
656
+ children: /* @__PURE__ */ jsxs("div", {
657
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
658
+ children: [/* @__PURE__ */ jsx("div", {
659
+ className: cn(errors.startDate && "wwc:rounded-md wwc:ring-1 wwc:ring-destructive"),
660
+ children: /* @__PURE__ */ jsx(DatePicker, {
661
+ date: draft.startDate ? parseDMY(draft.startDate) : void 0,
662
+ onDateChange: (d) => onField("startDate", d ? formatDMY(d) : ""),
663
+ placeholder: "Choose date",
664
+ className: "wwc:w-full"
665
+ })
666
+ }), errors.startDate && /* @__PURE__ */ jsx("p", {
667
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
668
+ children: "Start date can't be in the future."
669
+ })]
670
+ })
671
+ }),
672
+ /* @__PURE__ */ jsx(PropertyRow, {
673
+ label: "Country",
674
+ required: true,
675
+ align: "start",
676
+ children: /* @__PURE__ */ jsxs("div", {
677
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
678
+ children: [/* @__PURE__ */ jsx("div", {
679
+ className: cn(errors.country && "wwc:rounded-md wwc:ring-1 wwc:ring-destructive"),
680
+ children: /* @__PURE__ */ jsx(FieldSelect, {
681
+ value: draft.country,
682
+ onChange: (v) => {
683
+ onField("country", v);
684
+ onField("timeZone", COUNTRY_TIMEZONE[v] ?? "");
685
+ },
686
+ placeholder: "Select country",
687
+ options: COUNTRIES
688
+ })
689
+ }), errors.country && /* @__PURE__ */ jsx("p", {
690
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
691
+ children: "Country is required."
692
+ })]
693
+ })
694
+ }),
695
+ /* @__PURE__ */ jsx(PropertyRow, {
696
+ label: "Time zone",
697
+ required: true,
698
+ align: "start",
699
+ children: /* @__PURE__ */ jsxs("div", {
700
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
701
+ children: [/* @__PURE__ */ jsx("div", {
702
+ className: cn(errors.timeZone && "wwc:rounded-md wwc:ring-1 wwc:ring-destructive"),
703
+ children: /* @__PURE__ */ jsx(FieldSelect, {
704
+ value: draft.timeZone,
705
+ onChange: (v) => onField("timeZone", v),
706
+ placeholder: "Choose time zone",
707
+ options: TIMEZONES
708
+ })
709
+ }), errors.timeZone && /* @__PURE__ */ jsx("p", {
710
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
711
+ children: "Time zone is required."
712
+ })]
713
+ })
714
+ }),
715
+ mode === "edit" && project ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(PropertyRow, {
716
+ label: "Created at",
717
+ children: /* @__PURE__ */ jsx("span", {
718
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
719
+ children: project.createdAt
720
+ })
721
+ }), /* @__PURE__ */ jsx(PropertyRow, {
722
+ label: "Created by",
723
+ children: /* @__PURE__ */ jsx("span", {
724
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
725
+ children: project.createdBy
726
+ })
727
+ })] }) : null
728
+ ]
729
+ }) })]
730
+ }),
731
+ /* @__PURE__ */ jsx(SectionPanel, {
732
+ title: "Project Integrations",
733
+ count: `${enabledCount}/${MODULES.length}`,
734
+ bodyClassName: "wwc:divide-y wwc:divide-border",
735
+ action: /* @__PURE__ */ jsxs("div", {
736
+ className: "wwc:relative wwc:w-56",
737
+ children: [/* @__PURE__ */ jsx(Search, { className: "wwc:absolute wwc:left-2.5 wwc:top-1/2 wwc:h-3.5 wwc:w-3.5 wwc:-translate-y-1/2 wwc:text-muted-foreground" }), /* @__PURE__ */ jsx(Input, {
738
+ value: moduleSearch,
739
+ onChange: (e) => setModuleSearch(e.target.value),
740
+ placeholder: "Search modules…",
741
+ className: "wwc:h-8 wwc:pl-8"
742
+ })]
743
+ }),
744
+ empty: /* @__PURE__ */ jsxs("div", {
745
+ className: "wwc:px-2 wwc:py-10 wwc:text-center wwc:text-sm wwc:text-muted-foreground",
746
+ children: [
747
+ "No modules match “",
748
+ moduleSearch,
749
+ "”."
750
+ ]
751
+ }),
752
+ children: filteredModules.map((m) => /* @__PURE__ */ jsxs("label", {
753
+ className: "wwc:flex wwc:cursor-pointer wwc:items-center wwc:gap-3 wwc:px-2 wwc:py-2.5 wwc:transition-colors wwc:hover:bg-muted/50",
754
+ children: [/* @__PURE__ */ jsx(Checkbox, {
755
+ checked: modules[m.id],
756
+ onCheckedChange: (v) => onToggleModule(m.id, !!v)
757
+ }), /* @__PURE__ */ jsx("span", {
758
+ className: "wwc:text-sm",
759
+ children: m.label
760
+ })]
761
+ }, m.id))
762
+ })
763
+ ]
764
+ });
765
+ }
766
+ const PROJECT_STATUS_TABS = ["Active", "Archived"];
767
+ function ProjectsView({ onOpen }) {
768
+ const [statusTab, setStatusTab] = useState("Active");
769
+ const [pendingArchive, setPendingArchive] = useState(null);
770
+ const restore = (p) => toast.success(`Project “${p.name}” restored`);
771
+ const columns = useMemo(() => makeProjectColumns(onOpen, setPendingArchive, restore), [onOpen]);
772
+ const data = PROJECTS.filter((p) => p.status === statusTab);
773
+ return /* @__PURE__ */ jsxs("div", {
774
+ className: "wwc:space-y-4",
775
+ children: [
776
+ /* @__PURE__ */ jsx(Tabs, {
777
+ value: statusTab,
778
+ onValueChange: (v) => setStatusTab(v),
779
+ children: /* @__PURE__ */ jsx(TabsList, { children: PROJECT_STATUS_TABS.map((t) => /* @__PURE__ */ jsxs(TabsTrigger, {
780
+ value: t,
781
+ children: [t, /* @__PURE__ */ jsx("span", {
782
+ className: "wwc:ml-1.5 wwc:text-muted-foreground",
783
+ children: PROJECTS.filter((p) => p.status === t).length
784
+ })]
785
+ }, t)) })
786
+ }),
787
+ /* @__PURE__ */ jsx(DataTable, {
788
+ columns,
789
+ data,
790
+ searchKey: "name",
791
+ searchPlaceholder: "Search projects…",
792
+ recordLabel: "project",
793
+ pageSize: 10
794
+ }, statusTab),
795
+ /* @__PURE__ */ jsx(ConfirmDialog, {
796
+ open: !!pendingArchive,
797
+ title: "Archive project?",
798
+ description: /* @__PURE__ */ jsxs(Fragment$1, { children: [
799
+ "This will archive ",
800
+ /* @__PURE__ */ jsx("span", {
801
+ className: "wwc:font-medium wwc:text-foreground",
802
+ children: pendingArchive?.name
803
+ }),
804
+ ". You can restore it later from the Archived tab."
805
+ ] }),
806
+ confirmLabel: "Archive",
807
+ destructive: true,
808
+ onOpenChange: (o) => !o && setPendingArchive(null),
809
+ onConfirm: () => {
810
+ if (pendingArchive) toast.success(`Project “${pendingArchive.name}” archived`);
811
+ setPendingArchive(null);
812
+ }
813
+ })
814
+ ]
815
+ });
816
+ }
817
+ const USERS = [
818
+ {
819
+ id: "u1",
820
+ status: "Active",
821
+ name: "NGMSA CLINIC",
822
+ email: "Clinic.RNGL@ngmsa.com",
823
+ role: "DIGITAL CLINIC",
824
+ linkedPeople: [],
825
+ lastLogin: "12 Jul 2026",
826
+ dialCode: "+966",
827
+ mobile: "551234567",
828
+ projects: ["Khurais"]
829
+ },
830
+ {
831
+ id: "u2",
832
+ status: "Deactivated",
833
+ name: "MALATESHA HARIJANA",
834
+ email: "Malatesha.Hari@sinohydro.sa",
835
+ role: "DIGITAL CLINIC",
836
+ linkedPeople: [],
837
+ lastLogin: "13 Jul 2026",
838
+ dialCode: "+966",
839
+ mobile: "551234568",
840
+ projects: ["Riyas"]
841
+ },
842
+ {
843
+ id: "u3",
844
+ status: "Active",
845
+ name: "RIYASCLINIC",
846
+ email: "riyasclinic@tecnicasreunidas.es",
847
+ role: "DIGITAL CLINIC",
848
+ linkedPeople: [],
849
+ lastLogin: "13 Jul 2026",
850
+ dialCode: "+966",
851
+ mobile: "551234569",
852
+ projects: ["Riyas"]
853
+ },
854
+ {
855
+ id: "u4",
856
+ status: "Active",
857
+ name: "Arafzal",
858
+ email: "arafzal@tecnicasreunidas.es",
859
+ role: "Site Viewer",
860
+ linkedPeople: ["Omar Farouk"],
861
+ lastLogin: "12 Jul 2026",
862
+ dialCode: "+966",
863
+ mobile: "551234570",
864
+ projects: ["SITP", "JC3C4"]
865
+ },
866
+ {
867
+ id: "u5",
868
+ status: "Invitation Sent",
869
+ name: "Yves Uy",
870
+ email: "zriyas@twareat.com",
871
+ role: "DIGITAL CLINIC",
872
+ linkedPeople: [],
873
+ lastLogin: "13 Jul 2026",
874
+ dialCode: "+971",
875
+ mobile: "551234571",
876
+ projects: ["Turaif"]
877
+ },
878
+ {
879
+ id: "u6",
880
+ status: "Active",
881
+ name: "Manikandan Lakshmanan",
882
+ email: "mlakshmanan@tecnicasreunidas.es",
883
+ role: "Site Viewer",
884
+ linkedPeople: [],
885
+ lastLogin: "07 Jul 2026",
886
+ dialCode: "+966",
887
+ mobile: "551234572",
888
+ projects: ["JTE-5250-300"]
889
+ },
890
+ {
891
+ id: "u7",
892
+ status: "Deactivated",
893
+ name: "Abdullah Ahmed Aldhafeeri",
894
+ email: "dhafeerirngl@dsco.com.sa",
895
+ role: "Crew Lead",
896
+ linkedPeople: ["John Dawson"],
897
+ lastLogin: "07 Jul 2026",
898
+ dialCode: "+966",
899
+ mobile: "551234573",
900
+ projects: ["Khurais", "Sinopec"]
901
+ },
902
+ {
903
+ id: "u8",
904
+ status: "Invitation Sent",
905
+ name: "Mubashir SCC Operator",
906
+ email: "mubshir.irfan+yanbu-scc@core.com",
907
+ role: "Crew Lead",
908
+ linkedPeople: [],
909
+ lastLogin: "07 Jul 2026",
910
+ dialCode: "+966",
911
+ mobile: "551234574",
912
+ projects: ["SRU_Yanbu_Refinery"]
913
+ },
914
+ {
915
+ id: "u9",
916
+ status: "Active",
917
+ name: "Laura",
918
+ email: "lrivasg@tecnicasreunidas.es",
919
+ role: "Site Viewer",
920
+ linkedPeople: [],
921
+ lastLogin: "02 Jul 2026",
922
+ dialCode: "+34",
923
+ mobile: "612345678",
924
+ projects: ["SITP"]
925
+ },
926
+ {
927
+ id: "u10",
928
+ status: "Active",
929
+ name: "Layla Nasser",
930
+ email: "layla.n@core.com",
931
+ role: "WeCare Admin",
932
+ linkedPeople: ["Layla Nasser"],
933
+ lastLogin: "12 Jul 2026",
934
+ dialCode: "+971",
935
+ mobile: "551234575",
936
+ projects: ["Jafurah-Phase 2"]
937
+ },
938
+ {
939
+ id: "u11",
940
+ status: "Active",
941
+ name: "Omar Farouk",
942
+ email: "omar.f@core.com",
943
+ role: "Compliance Officer",
944
+ linkedPeople: [],
945
+ lastLogin: "10 Jul 2026",
946
+ dialCode: "+966",
947
+ mobile: "551234576",
948
+ projects: ["Phase-3, Package-8"]
949
+ },
950
+ {
951
+ id: "u12",
952
+ status: "Active",
953
+ name: "Sara Idris",
954
+ email: "sara.i@core.com",
955
+ role: "Network Administrator",
956
+ linkedPeople: ["Sara Idris"],
957
+ lastLogin: "09 Jul 2026",
958
+ dialCode: "+966",
959
+ mobile: "551234577",
960
+ projects: ["Khurais"]
961
+ }
962
+ ];
963
+ const DIAL_CODES = [
964
+ "+971",
965
+ "+966",
966
+ "+974",
967
+ "+965",
968
+ "+973",
969
+ "+968",
970
+ "+20",
971
+ "+34"
972
+ ];
973
+ const PROJECT_NAMES = PROJECTS.map((p) => p.name);
974
+ const PEOPLE = [
975
+ "Layla Nasser",
976
+ "Ahmed Raza",
977
+ "Maya Khan",
978
+ "Omar Farouk",
979
+ "Sara Idris",
980
+ "Rania Salem",
981
+ "Yusuf Malik",
982
+ "Nadia Hassan",
983
+ "Karim Adel",
984
+ "John Dawson",
985
+ "Abdullah Alzahrani",
986
+ "Fatima Noor",
987
+ "Hassan Ali",
988
+ "Mona Saleh",
989
+ "Tariq Aziz"
990
+ ];
991
+ function makeUserColumns(onOpen, onDeactivate, onViewRole) {
992
+ return [
993
+ selectColumn(),
994
+ {
995
+ accessorKey: "name",
996
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
997
+ column,
998
+ title: "User Name"
999
+ }),
1000
+ cell: ({ row }) => /* @__PURE__ */ jsx("button", {
1001
+ type: "button",
1002
+ onClick: () => onOpen(row.original),
1003
+ className: "wwc:text-left wwc:font-medium wwc:underline wwc:underline-offset-2 wwc:transition-colors wwc:hover:text-primary",
1004
+ children: row.original.name
1005
+ })
1006
+ },
1007
+ {
1008
+ accessorKey: "email",
1009
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
1010
+ column,
1011
+ title: "Email"
1012
+ }),
1013
+ cell: ({ row }) => /* @__PURE__ */ jsx("span", {
1014
+ className: "wwc:text-muted-foreground",
1015
+ children: row.original.email
1016
+ })
1017
+ },
1018
+ {
1019
+ accessorKey: "role",
1020
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
1021
+ column,
1022
+ title: "Role"
1023
+ }),
1024
+ cell: ({ row }) => /* @__PURE__ */ jsx("button", {
1025
+ type: "button",
1026
+ onClick: () => onViewRole(row.original.role),
1027
+ "aria-label": `View ${row.original.role} permissions`,
1028
+ children: /* @__PURE__ */ jsx(Badge, {
1029
+ variant: "neutralSoft",
1030
+ className: "wwc:cursor-pointer wwc:hover:bg-muted/70",
1031
+ children: row.original.role
1032
+ })
1033
+ })
1034
+ },
1035
+ {
1036
+ accessorKey: "linkedPeople",
1037
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
1038
+ column,
1039
+ title: "Linked Person"
1040
+ }),
1041
+ cell: ({ row }) => muted(row.original.linkedPeople[0] ?? "-")
1042
+ },
1043
+ {
1044
+ accessorKey: "lastLogin",
1045
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
1046
+ column,
1047
+ title: "Last Login"
1048
+ }),
1049
+ cell: ({ row }) => /* @__PURE__ */ jsx("span", { children: row.original.lastLogin })
1050
+ },
1051
+ {
1052
+ id: "actions",
1053
+ enableSorting: false,
1054
+ meta: { cellClassName: "wwc:w-px wwc:max-w-none wwc:overflow-visible wwc:whitespace-nowrap wwc:text-right" },
1055
+ cell: ({ row }) => {
1056
+ const u = row.original;
1057
+ return /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
1058
+ asChild: true,
1059
+ children: /* @__PURE__ */ jsx(Button, {
1060
+ variant: "ghost",
1061
+ icon: true,
1062
+ "aria-label": "Row actions",
1063
+ className: "wwc:h-7 wwc:w-7 wwc:text-muted-foreground",
1064
+ children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "wwc:h-4 wwc:w-4" })
1065
+ })
1066
+ }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
1067
+ align: "end",
1068
+ className: "wwc:w-48",
1069
+ children: [/* @__PURE__ */ jsxs(DropdownMenuItem, {
1070
+ onClick: () => onOpen(u),
1071
+ children: [/* @__PURE__ */ jsx(Eye, { className: "wwc:h-4 wwc:w-4" }), "Edit user"]
1072
+ }), u.status === "Invitation Sent" ? /* @__PURE__ */ jsxs(DropdownMenuItem, {
1073
+ onClick: () => {
1074
+ navigator.clipboard?.writeText(`https://app.core.com/register-user/${u.id}`).catch(() => {});
1075
+ toast.success("Invitation link copied");
1076
+ },
1077
+ children: [/* @__PURE__ */ jsx(Copy, { className: "wwc:mr-2 wwc:h-4 wwc:w-4" }), "Copy invitation link"]
1078
+ }) : u.status === "Deactivated" ? /* @__PURE__ */ jsxs(DropdownMenuItem, {
1079
+ onClick: () => toast.success(`User “${u.name}” activated`),
1080
+ children: [/* @__PURE__ */ jsx(UserCheck, { className: "wwc:h-4 wwc:w-4" }), "Activate"]
1081
+ }) : /* @__PURE__ */ jsxs(DropdownMenuItem, {
1082
+ onClick: () => onDeactivate(u),
1083
+ className: "wwc:text-destructive focus:wwc:text-destructive",
1084
+ children: [/* @__PURE__ */ jsx(Ban, { className: "wwc:h-4 wwc:w-4" }), "Deactivate"]
1085
+ })]
1086
+ })] });
1087
+ }
1088
+ }
1089
+ ];
1090
+ }
1091
+ const EMPTY_USER = {
1092
+ email: "",
1093
+ role: "",
1094
+ projects: [],
1095
+ linkedPeople: [],
1096
+ mobile: "",
1097
+ dialCode: "+971"
1098
+ };
1099
+ const fieldsFromUser = (u) => ({
1100
+ email: u.email,
1101
+ role: u.role,
1102
+ projects: [...u.projects],
1103
+ linkedPeople: [...u.linkedPeople],
1104
+ mobile: u.mobile,
1105
+ dialCode: u.dialCode
1106
+ });
1107
+ function UserForm({ mode, user, draft, onField, errors, onBack }) {
1108
+ return /* @__PURE__ */ jsxs("div", {
1109
+ className: "wwc:space-y-6",
1110
+ children: [
1111
+ /* @__PURE__ */ jsxs(Button, {
1112
+ variant: "ghost",
1113
+ size: "sm",
1114
+ onClick: onBack,
1115
+ className: "wwc:-ml-2",
1116
+ children: [/* @__PURE__ */ jsx(ChevronLeft, { className: "wwc:h-4 wwc:w-4" }), "Back to users"]
1117
+ }),
1118
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h1", {
1119
+ className: "wwc:text-2xl wwc:font-bold wwc:tracking-tight",
1120
+ children: mode === "create" ? "New user" : user?.name
1121
+ }), /* @__PURE__ */ jsx("p", {
1122
+ className: "wwc:text-sm wwc:text-muted-foreground",
1123
+ children: mode === "create" ? "Invite a user and assign their role and projects." : "Edit this user’s access."
1124
+ })] }),
1125
+ /* @__PURE__ */ jsxs(Card, {
1126
+ className: "wwc:shadow-none",
1127
+ children: [/* @__PURE__ */ jsxs(CardHeader, {
1128
+ className: "wwc:pb-2",
1129
+ children: [/* @__PURE__ */ jsx(CardTitle, {
1130
+ className: "wwc:text-base",
1131
+ children: "User details"
1132
+ }), /* @__PURE__ */ jsx(CardDescription, { children: "Contact, role, and project access for this user." })]
1133
+ }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(PropertyList, {
1134
+ labelWidth: "12rem",
1135
+ children: [
1136
+ /* @__PURE__ */ jsx(PropertyRow, {
1137
+ label: "Email",
1138
+ required: true,
1139
+ align: "start",
1140
+ children: /* @__PURE__ */ jsxs("div", {
1141
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
1142
+ children: [/* @__PURE__ */ jsx(Input, {
1143
+ type: "email",
1144
+ value: draft.email,
1145
+ onChange: (e) => onField("email", e.target.value),
1146
+ placeholder: "Email",
1147
+ disabled: mode === "edit",
1148
+ "aria-invalid": !!(errors.email || errors.emailInvalid || errors.emailDup),
1149
+ className: cn("wwc:w-full", (errors.email || errors.emailInvalid || errors.emailDup) && "wwc:border-destructive wwc:focus-visible:ring-destructive")
1150
+ }), errors.email ? /* @__PURE__ */ jsx("p", {
1151
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
1152
+ children: "Email is required."
1153
+ }) : errors.emailInvalid ? /* @__PURE__ */ jsx("p", {
1154
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
1155
+ children: "Enter a valid email address."
1156
+ }) : errors.emailDup ? /* @__PURE__ */ jsx("p", {
1157
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
1158
+ children: "This email is already in use."
1159
+ }) : mode === "edit" ? /* @__PURE__ */ jsx("p", {
1160
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-muted-foreground",
1161
+ children: "Email can't be changed after creation."
1162
+ }) : null]
1163
+ })
1164
+ }),
1165
+ /* @__PURE__ */ jsx(PropertyRow, {
1166
+ label: "Role",
1167
+ required: true,
1168
+ align: "start",
1169
+ children: /* @__PURE__ */ jsxs("div", {
1170
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
1171
+ children: [/* @__PURE__ */ jsx(Combobox, {
1172
+ options: ROLES.map((r) => ({
1173
+ value: r.name,
1174
+ label: r.name
1175
+ })),
1176
+ value: draft.role,
1177
+ onValueChange: (v) => onField("role", v),
1178
+ placeholder: "Select role",
1179
+ searchPlaceholder: "Search roles…",
1180
+ emptyMessage: "No role found.",
1181
+ className: cn("wwc:w-full wwc:font-normal", errors.role && "wwc:border-destructive"),
1182
+ popoverClassName: "wwc:min-w-[240px] wwc:w-[var(--radix-popover-trigger-width)] wwc:p-0"
1183
+ }), errors.role && /* @__PURE__ */ jsx("p", {
1184
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
1185
+ children: "Role is required."
1186
+ })]
1187
+ })
1188
+ }),
1189
+ /* @__PURE__ */ jsx(PropertyRow, {
1190
+ label: "Projects",
1191
+ required: true,
1192
+ align: "start",
1193
+ children: /* @__PURE__ */ jsxs("div", {
1194
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
1195
+ children: [/* @__PURE__ */ jsx(MultiSelect, {
1196
+ options: PROJECT_NAMES.map((p) => ({
1197
+ value: p,
1198
+ label: p
1199
+ })),
1200
+ value: draft.projects,
1201
+ onValueChange: (v) => onField("projects", v),
1202
+ placeholder: "Select project(s)",
1203
+ searchPlaceholder: "Search projects…",
1204
+ emptyMessage: "No projects found.",
1205
+ invalid: errors.projects
1206
+ }), errors.projects && /* @__PURE__ */ jsx("p", {
1207
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
1208
+ children: "Select at least one project."
1209
+ })]
1210
+ })
1211
+ }),
1212
+ /* @__PURE__ */ jsx(PropertyRow, {
1213
+ label: "Linked person",
1214
+ align: "start",
1215
+ children: /* @__PURE__ */ jsx("div", {
1216
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
1217
+ children: /* @__PURE__ */ jsx(Combobox, {
1218
+ options: PEOPLE.map((pp) => ({
1219
+ value: pp,
1220
+ label: pp
1221
+ })),
1222
+ value: draft.linkedPeople[0] ?? "",
1223
+ onValueChange: (v) => onField("linkedPeople", v ? [v] : []),
1224
+ placeholder: "Link a person…",
1225
+ searchPlaceholder: "Search people…",
1226
+ emptyMessage: "No people found.",
1227
+ className: "wwc:w-full wwc:font-normal",
1228
+ popoverClassName: "wwc:min-w-[240px] wwc:w-[var(--radix-popover-trigger-width)] wwc:p-0"
1229
+ })
1230
+ })
1231
+ }),
1232
+ /* @__PURE__ */ jsx(PropertyRow, {
1233
+ label: "Mobile",
1234
+ children: /* @__PURE__ */ jsxs("div", {
1235
+ className: "wwc:ml-auto wwc:flex wwc:w-full wwc:max-w-sm wwc:items-center wwc:gap-2",
1236
+ children: [/* @__PURE__ */ jsx("div", {
1237
+ className: "wwc:w-[110px]",
1238
+ children: /* @__PURE__ */ jsx(FieldSelect, {
1239
+ value: draft.dialCode,
1240
+ onChange: (v) => onField("dialCode", v),
1241
+ placeholder: "+000",
1242
+ options: DIAL_CODES
1243
+ })
1244
+ }), /* @__PURE__ */ jsx(Input, {
1245
+ type: "tel",
1246
+ value: draft.mobile,
1247
+ onChange: (e) => onField("mobile", e.target.value),
1248
+ placeholder: "Phone number",
1249
+ className: "wwc:flex-1"
1250
+ })]
1251
+ })
1252
+ }),
1253
+ mode === "edit" && user ? /* @__PURE__ */ jsx(PropertyRow, {
1254
+ label: "Last login",
1255
+ children: /* @__PURE__ */ jsx("span", {
1256
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
1257
+ children: user.lastLogin
1258
+ })
1259
+ }) : null
1260
+ ]
1261
+ }) })]
1262
+ })
1263
+ ]
1264
+ });
1265
+ }
1266
+ const USER_STATUS_TABS = [
1267
+ "Active",
1268
+ "Deactivated",
1269
+ "Invitation Sent"
1270
+ ];
1271
+ function UsersView({ onOpen }) {
1272
+ const [statusTab, setStatusTab] = useState("Active");
1273
+ const [pendingDeactivate, setPendingDeactivate] = useState(null);
1274
+ const [bulkDeactivate, setBulkDeactivate] = useState(0);
1275
+ const [viewingRole, setViewingRole] = useState(null);
1276
+ const columns = useMemo(() => makeUserColumns(onOpen, setPendingDeactivate, (roleName) => setViewingRole(ROLES.find((r) => r.name === roleName) ?? null)), [onOpen]);
1277
+ const data = USERS.filter((u) => u.status === statusTab);
1278
+ const bulkAction = statusTab === "Deactivated" ? {
1279
+ label: "Activate",
1280
+ verb: "activated"
1281
+ } : statusTab === "Invitation Sent" ? {
1282
+ label: "Copy invitation link",
1283
+ verb: "copied"
1284
+ } : {
1285
+ label: "Deactivate",
1286
+ verb: "deactivated"
1287
+ };
1288
+ const bulkIsDeactivate = statusTab === "Active";
1289
+ const bulkIsCopy = statusTab === "Invitation Sent";
1290
+ return /* @__PURE__ */ jsxs("div", {
1291
+ className: "wwc:space-y-4",
1292
+ children: [
1293
+ /* @__PURE__ */ jsx(Tabs, {
1294
+ value: statusTab,
1295
+ onValueChange: (v) => setStatusTab(v),
1296
+ children: /* @__PURE__ */ jsx(TabsList, { children: USER_STATUS_TABS.map((t) => /* @__PURE__ */ jsxs(TabsTrigger, {
1297
+ value: t,
1298
+ children: [t, /* @__PURE__ */ jsx("span", {
1299
+ className: "wwc:ml-1.5 wwc:text-muted-foreground",
1300
+ children: USERS.filter((u) => u.status === t).length
1301
+ })]
1302
+ }, t)) })
1303
+ }),
1304
+ /* @__PURE__ */ jsx(DataTable, {
1305
+ columns,
1306
+ data,
1307
+ searchKey: "name",
1308
+ searchPlaceholder: "Search users…",
1309
+ recordLabel: "user",
1310
+ pageSize: 10,
1311
+ bulkActions: [{
1312
+ label: bulkAction.label,
1313
+ variant: bulkIsDeactivate ? "destructive" : "outline",
1314
+ onClick: (ids) => bulkIsDeactivate ? setBulkDeactivate(ids.length) : bulkIsCopy ? toast.success(`${ids.length} invitation link${ids.length === 1 ? "" : "s"} copied`) : toast.success(`${ids.length} user${ids.length === 1 ? "" : "s"} ${bulkAction.verb}`)
1315
+ }]
1316
+ }, statusTab),
1317
+ /* @__PURE__ */ jsx(ConfirmDialog, {
1318
+ open: !!pendingDeactivate,
1319
+ title: "Deactivate user?",
1320
+ description: /* @__PURE__ */ jsxs(Fragment$1, { children: [
1321
+ "This will deactivate ",
1322
+ /* @__PURE__ */ jsx("span", {
1323
+ className: "wwc:font-medium wwc:text-foreground",
1324
+ children: pendingDeactivate?.name
1325
+ }),
1326
+ ". They lose access until reactivated."
1327
+ ] }),
1328
+ confirmLabel: "Deactivate",
1329
+ destructive: true,
1330
+ onOpenChange: (o) => !o && setPendingDeactivate(null),
1331
+ onConfirm: () => {
1332
+ toast.success(`User “${pendingDeactivate?.name}” deactivated`);
1333
+ setPendingDeactivate(null);
1334
+ }
1335
+ }),
1336
+ /* @__PURE__ */ jsx(ConfirmDialog, {
1337
+ open: bulkDeactivate > 0,
1338
+ title: `Deactivate ${bulkDeactivate === 1 ? "user" : "users"}?`,
1339
+ description: /* @__PURE__ */ jsxs(Fragment$1, { children: [
1340
+ "This will deactivate",
1341
+ " ",
1342
+ /* @__PURE__ */ jsxs("span", {
1343
+ className: "wwc:font-medium wwc:text-foreground",
1344
+ children: [
1345
+ bulkDeactivate,
1346
+ " ",
1347
+ bulkDeactivate === 1 ? "user" : "users"
1348
+ ]
1349
+ }),
1350
+ ". They lose access until reactivated."
1351
+ ] }),
1352
+ confirmLabel: "Deactivate",
1353
+ destructive: true,
1354
+ onOpenChange: (o) => !o && setBulkDeactivate(0),
1355
+ onConfirm: () => {
1356
+ toast.success(`${bulkDeactivate} user${bulkDeactivate === 1 ? "" : "s"} deactivated`);
1357
+ setBulkDeactivate(0);
1358
+ }
1359
+ }),
1360
+ /* @__PURE__ */ jsx(RolePermissionsDialog, {
1361
+ role: viewingRole,
1362
+ onOpenChange: (o) => !o && setViewingRole(null)
1363
+ })
1364
+ ]
1365
+ });
1366
+ }
1367
+ const crud = (prefix, actions = [
1368
+ "Create",
1369
+ "Export",
1370
+ "Manage",
1371
+ "View"
1372
+ ]) => actions.map((a) => ({
1373
+ id: `${prefix}.${a.toLowerCase()}`,
1374
+ label: a
1375
+ }));
1376
+ const PERMISSION_CATALOG = [
1377
+ {
1378
+ id: "complaints",
1379
+ label: "Complaints",
1380
+ groups: [{
1381
+ id: "complaints.translation",
1382
+ label: "translation.baseline",
1383
+ permissions: [{
1384
+ id: "complaints.translation.import",
1385
+ label: "translation.baseline:import"
1386
+ }, {
1387
+ id: "complaints.translation.view",
1388
+ label: "translation.baseline:view"
1389
+ }]
1390
+ }, {
1391
+ id: "complaints.main",
1392
+ label: "Complaints",
1393
+ permissions: crud("complaints.main")
1394
+ }]
1395
+ },
1396
+ {
1397
+ id: "compliance",
1398
+ label: "Compliance",
1399
+ groups: [{
1400
+ id: "compliance.main",
1401
+ label: "Compliance",
1402
+ permissions: crud("compliance")
1403
+ }]
1404
+ },
1405
+ {
1406
+ id: "crew",
1407
+ label: "Crew Management",
1408
+ groups: [{
1409
+ id: "crew.main",
1410
+ label: "Crew Management",
1411
+ permissions: crud("crew")
1412
+ }]
1413
+ },
1414
+ {
1415
+ id: "devices",
1416
+ label: "Devices",
1417
+ groups: [{
1418
+ id: "devices.main",
1419
+ label: "Devices",
1420
+ permissions: crud("devices")
1421
+ }]
1422
+ },
1423
+ {
1424
+ id: "digital_clinic",
1425
+ label: "Digital Clinic",
1426
+ groups: [{
1427
+ id: "digital_clinic.main",
1428
+ label: "Digital Clinic",
1429
+ permissions: crud("digital_clinic")
1430
+ }]
1431
+ },
1432
+ {
1433
+ id: "equipments",
1434
+ label: "Equipments",
1435
+ groups: [{
1436
+ id: "equipments.main",
1437
+ label: "Equipments",
1438
+ permissions: crud("equipments")
1439
+ }]
1440
+ },
1441
+ {
1442
+ id: "external",
1443
+ label: "External Integrations",
1444
+ groups: [{
1445
+ id: "external.main",
1446
+ label: "External Integrations",
1447
+ permissions: crud("external")
1448
+ }]
1449
+ },
1450
+ {
1451
+ id: "hardware",
1452
+ label: "Hardware Management",
1453
+ groups: [{
1454
+ id: "hardware.main",
1455
+ label: "Hardware Management",
1456
+ permissions: crud("hardware")
1457
+ }]
1458
+ },
1459
+ {
1460
+ id: "management_map",
1461
+ label: "Management Map",
1462
+ groups: [{
1463
+ id: "management_map.main",
1464
+ label: "Management Map",
1465
+ permissions: crud("management_map", ["Manage", "View"])
1466
+ }]
1467
+ },
1468
+ {
1469
+ id: "map",
1470
+ label: "Map",
1471
+ groups: [{
1472
+ id: "map.main",
1473
+ label: "Map",
1474
+ permissions: crud("map", ["Manage", "View"])
1475
+ }]
1476
+ },
1477
+ {
1478
+ id: "network_admin",
1479
+ label: "Network Administration",
1480
+ groups: [{
1481
+ id: "network_admin.main",
1482
+ label: "Network Administration",
1483
+ permissions: crud("network_admin")
1484
+ }]
1485
+ },
1486
+ {
1487
+ id: "network_toolkit",
1488
+ label: "Network Toolkit",
1489
+ groups: [{
1490
+ id: "network_toolkit.main",
1491
+ label: "Network Toolkit",
1492
+ permissions: crud("network_toolkit")
1493
+ }]
1494
+ },
1495
+ {
1496
+ id: "observation",
1497
+ label: "Observation Manager",
1498
+ groups: [{
1499
+ id: "observation.main",
1500
+ label: "Observation Manager",
1501
+ permissions: crud("observation")
1502
+ }]
1503
+ },
1504
+ {
1505
+ id: "project_builder",
1506
+ label: "Project Builder",
1507
+ groups: [{
1508
+ id: "project_builder.main",
1509
+ label: "Project Builder",
1510
+ permissions: crud("project_builder")
1511
+ }]
1512
+ }
1513
+ ];
1514
+ const catPermIds = (c) => c.groups.flatMap((g) => g.permissions.map((p) => p.id));
1515
+ const ALL_PERM_IDS = PERMISSION_CATALOG.flatMap(catPermIds);
1516
+ const permDefaults = () => Object.fromEntries(ALL_PERM_IDS.map((id) => [id, false]));
1517
+ const roleWith = (ids) => {
1518
+ const base = permDefaults();
1519
+ for (const id of ids) if (id in base) base[id] = true;
1520
+ return base;
1521
+ };
1522
+ const ROLES = [
1523
+ {
1524
+ id: "role1",
1525
+ name: "SCC Khurais",
1526
+ permissions: roleWith([
1527
+ "complaints.main.view",
1528
+ "compliance.view",
1529
+ "crew.view",
1530
+ "map.view"
1531
+ ])
1532
+ },
1533
+ {
1534
+ id: "role2",
1535
+ name: "Riyas Technician",
1536
+ permissions: roleWith([
1537
+ "devices.view",
1538
+ "hardware.view",
1539
+ "equipments.view"
1540
+ ])
1541
+ },
1542
+ {
1543
+ id: "role3",
1544
+ name: "DIGITAL CLINIC",
1545
+ permissions: roleWith(catPermIds(PERMISSION_CATALOG[4]))
1546
+ },
1547
+ {
1548
+ id: "role4",
1549
+ name: "doctor clinic 1 test",
1550
+ permissions: roleWith(["digital_clinic.view", "digital_clinic.manage"])
1551
+ },
1552
+ {
1553
+ id: "role5",
1554
+ name: "testing account",
1555
+ permissions: roleWith(["map.view"])
1556
+ },
1557
+ {
1558
+ id: "role6",
1559
+ name: "AVL Permission",
1560
+ permissions: roleWith([
1561
+ "devices.view",
1562
+ "devices.manage",
1563
+ "map.view",
1564
+ "map.manage"
1565
+ ])
1566
+ },
1567
+ {
1568
+ id: "role7",
1569
+ name: "WeCare Admin",
1570
+ permissions: roleWith(ALL_PERM_IDS)
1571
+ },
1572
+ {
1573
+ id: "role8",
1574
+ name: "Aramco Executive",
1575
+ permissions: roleWith([
1576
+ "complaints.main.view",
1577
+ "compliance.view",
1578
+ "observation.view",
1579
+ "map.view"
1580
+ ])
1581
+ },
1582
+ {
1583
+ id: "role9",
1584
+ name: "safety officers",
1585
+ permissions: roleWith([
1586
+ "observation.view",
1587
+ "observation.create",
1588
+ "compliance.view"
1589
+ ])
1590
+ },
1591
+ {
1592
+ id: "role10",
1593
+ name: "FGIP Super Technician",
1594
+ permissions: roleWith([
1595
+ "devices.view",
1596
+ "devices.manage",
1597
+ "hardware.view",
1598
+ "hardware.manage",
1599
+ "network_toolkit.view"
1600
+ ])
1601
+ },
1602
+ {
1603
+ id: "role11",
1604
+ name: "Network Administrator",
1605
+ permissions: roleWith(catPermIds(PERMISSION_CATALOG[10]))
1606
+ },
1607
+ {
1608
+ id: "role12",
1609
+ name: "Crew Lead",
1610
+ permissions: roleWith([
1611
+ "crew.view",
1612
+ "crew.create",
1613
+ "crew.manage"
1614
+ ])
1615
+ },
1616
+ {
1617
+ id: "role13",
1618
+ name: "Compliance Officer",
1619
+ permissions: roleWith([
1620
+ "compliance.view",
1621
+ "compliance.manage",
1622
+ "compliance.export"
1623
+ ])
1624
+ },
1625
+ {
1626
+ id: "role14",
1627
+ name: "Site Viewer",
1628
+ permissions: roleWith([
1629
+ "map.view",
1630
+ "management_map.view",
1631
+ "observation.view"
1632
+ ])
1633
+ }
1634
+ ];
1635
+ function selectColumn() {
1636
+ return {
1637
+ id: "select",
1638
+ enableSorting: false,
1639
+ meta: { cellClassName: "wwc:w-px wwc:pr-0" },
1640
+ header: ({ table }) => /* @__PURE__ */ jsx(Checkbox, {
1641
+ checked: table.getIsAllPageRowsSelected() ? true : table.getIsSomePageRowsSelected() ? "indeterminate" : false,
1642
+ onCheckedChange: (v) => table.toggleAllPageRowsSelected(!!v),
1643
+ "aria-label": "Select all"
1644
+ }),
1645
+ cell: ({ row }) => /* @__PURE__ */ jsx(Checkbox, {
1646
+ checked: row.getIsSelected(),
1647
+ onCheckedChange: (v) => row.toggleSelected(!!v),
1648
+ "aria-label": "Select row"
1649
+ })
1650
+ };
1651
+ }
1652
+ function makeRoleColumns(onOpen) {
1653
+ return [{
1654
+ accessorKey: "name",
1655
+ header: ({ column }) => /* @__PURE__ */ jsx(DataTableColumnHeader, {
1656
+ column,
1657
+ title: "Name"
1658
+ }),
1659
+ cell: ({ row }) => /* @__PURE__ */ jsx("button", {
1660
+ type: "button",
1661
+ onClick: () => onOpen(row.original),
1662
+ className: "wwc:text-left wwc:font-medium wwc:underline wwc:underline-offset-2 wwc:transition-colors wwc:hover:text-primary",
1663
+ children: row.original.name
1664
+ })
1665
+ }, {
1666
+ id: "actions",
1667
+ enableSorting: false,
1668
+ meta: { cellClassName: "wwc:w-px wwc:max-w-none wwc:overflow-visible wwc:whitespace-nowrap wwc:text-right" },
1669
+ cell: ({ row }) => /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
1670
+ asChild: true,
1671
+ children: /* @__PURE__ */ jsx(Button, {
1672
+ variant: "ghost",
1673
+ icon: true,
1674
+ "aria-label": "Row actions",
1675
+ className: "wwc:h-7 wwc:w-7 wwc:text-muted-foreground",
1676
+ children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "wwc:h-4 wwc:w-4" })
1677
+ })
1678
+ }), /* @__PURE__ */ jsx(DropdownMenuContent, {
1679
+ align: "end",
1680
+ className: "wwc:w-48",
1681
+ children: /* @__PURE__ */ jsxs(DropdownMenuItem, {
1682
+ onClick: () => onOpen(row.original),
1683
+ children: [/* @__PURE__ */ jsx(Eye, { className: "wwc:h-4 wwc:w-4" }), "Edit role"]
1684
+ })
1685
+ })] })
1686
+ }];
1687
+ }
1688
+ function RolePermissionsDialog({ role, onOpenChange }) {
1689
+ return /* @__PURE__ */ jsx(Dialog, {
1690
+ open: !!role,
1691
+ onOpenChange,
1692
+ children: /* @__PURE__ */ jsxs(DialogContent, {
1693
+ className: "wwc:max-w-4xl",
1694
+ children: [
1695
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsxs(DialogTitle, { children: [role?.name, " permissions"] }), /* @__PURE__ */ jsx(DialogDescription, { children: "Read-only view of what this role can access." })] }),
1696
+ role && /* @__PURE__ */ jsx("div", {
1697
+ className: "wwc:max-h-[60vh] wwc:overflow-auto wwc:px-4 wwc:py-4",
1698
+ children: /* @__PURE__ */ jsx(PermissionMatrix, {
1699
+ categories: PERMISSION_CATALOG,
1700
+ value: role.permissions,
1701
+ readOnly: true,
1702
+ showHeader: false
1703
+ })
1704
+ }),
1705
+ /* @__PURE__ */ jsx(DialogFooter, { children: /* @__PURE__ */ jsx(Button, {
1706
+ variant: "outline",
1707
+ onClick: () => onOpenChange(false),
1708
+ children: "Close"
1709
+ }) })
1710
+ ]
1711
+ })
1712
+ });
1713
+ }
1714
+ function RoleForm({ mode, role, name, onName, nameError, perms, onPermissionsChange, onBack }) {
1715
+ return /* @__PURE__ */ jsxs("div", {
1716
+ className: "wwc:space-y-6",
1717
+ children: [
1718
+ /* @__PURE__ */ jsxs(Button, {
1719
+ variant: "ghost",
1720
+ size: "sm",
1721
+ onClick: onBack,
1722
+ className: "wwc:-ml-2",
1723
+ children: [/* @__PURE__ */ jsx(ChevronLeft, { className: "wwc:h-4 wwc:w-4" }), "Back to roles"]
1724
+ }),
1725
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h1", {
1726
+ className: "wwc:text-2xl wwc:font-bold wwc:tracking-tight",
1727
+ children: mode === "create" ? "New role" : role?.name
1728
+ }), /* @__PURE__ */ jsx("p", {
1729
+ className: "wwc:text-sm wwc:text-muted-foreground",
1730
+ children: mode === "create" ? "Name the role and choose its permissions." : "Edit this role’s name and permissions."
1731
+ })] }),
1732
+ /* @__PURE__ */ jsxs(Card, {
1733
+ className: "wwc:shadow-none",
1734
+ children: [/* @__PURE__ */ jsxs(CardHeader, {
1735
+ className: "wwc:pb-2",
1736
+ children: [/* @__PURE__ */ jsx(CardTitle, {
1737
+ className: "wwc:text-base",
1738
+ children: "Role details"
1739
+ }), /* @__PURE__ */ jsx(CardDescription, { children: "Name and metadata for this role." })]
1740
+ }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(PropertyList, {
1741
+ labelWidth: "12rem",
1742
+ children: /* @__PURE__ */ jsx(PropertyRow, {
1743
+ label: "Role name",
1744
+ required: true,
1745
+ align: "start",
1746
+ children: /* @__PURE__ */ jsxs("div", {
1747
+ className: "wwc:ml-auto wwc:w-full wwc:max-w-sm",
1748
+ children: [/* @__PURE__ */ jsx(Input, {
1749
+ value: name,
1750
+ onChange: (e) => onName(e.target.value),
1751
+ placeholder: "Role name",
1752
+ "aria-invalid": nameError,
1753
+ className: cn("wwc:w-full", nameError && "wwc:border-destructive wwc:focus-visible:ring-destructive")
1754
+ }), nameError && /* @__PURE__ */ jsx("p", {
1755
+ className: "wwc:mt-1.5 wwc:text-xs wwc:text-destructive",
1756
+ children: "Role name is required."
1757
+ })]
1758
+ })
1759
+ })
1760
+ }) })]
1761
+ }),
1762
+ /* @__PURE__ */ jsx(PermissionMatrix, {
1763
+ categories: PERMISSION_CATALOG,
1764
+ value: perms,
1765
+ onValueChange: onPermissionsChange
1766
+ })
1767
+ ]
1768
+ });
1769
+ }
1770
+ function PermissionsView({ onOpen }) {
1771
+ const columns = useMemo(() => makeRoleColumns(onOpen), [onOpen]);
1772
+ return /* @__PURE__ */ jsx(DataTable, {
1773
+ columns,
1774
+ data: ROLES,
1775
+ searchKey: "name",
1776
+ searchPlaceholder: "Search roles…",
1777
+ recordLabel: "role",
1778
+ pageSize: 10
1779
+ });
1780
+ }
1781
+ const INITIAL_ORGS = [
1782
+ {
1783
+ id: "o1",
1784
+ name: "Saudi Aramco",
1785
+ location: "Dhahran, Saudi Arabia",
1786
+ logo: ARAMCO_LOGO,
1787
+ country: "Saudi Arabia",
1788
+ projects: 14,
1789
+ status: "Active"
1790
+ },
1791
+ {
1792
+ id: "o2",
1793
+ name: "NEOM",
1794
+ location: "Tabuk, Saudi Arabia",
1795
+ logo: NEOM_LOGO,
1796
+ country: "Saudi Arabia",
1797
+ projects: 9,
1798
+ status: "Active"
1799
+ },
1800
+ {
1801
+ id: "o3",
1802
+ name: "Roshn",
1803
+ location: "Riyadh, Saudi Arabia",
1804
+ logo: ROSHN_LOGO,
1805
+ country: "Saudi Arabia",
1806
+ projects: 6,
1807
+ status: "Active"
1808
+ },
1809
+ {
1810
+ id: "o4",
1811
+ name: "Qiddiya",
1812
+ location: "Riyadh, Saudi Arabia",
1813
+ logo: QIDDIYA_LOGO,
1814
+ country: "Saudi Arabia",
1815
+ projects: 4,
1816
+ status: "Active"
1817
+ },
1818
+ {
1819
+ id: "o5",
1820
+ name: "Diriyah Gate",
1821
+ location: "Diriyah, Saudi Arabia",
1822
+ logo: DIRIYAH_LOGO,
1823
+ country: "Saudi Arabia",
1824
+ projects: 7,
1825
+ status: "Archived"
1826
+ },
1827
+ {
1828
+ id: "o6",
1829
+ name: "The Red Sea",
1830
+ location: "Umluj, Saudi Arabia",
1831
+ logo: RED_SEA_LOGO,
1832
+ country: "Saudi Arabia",
1833
+ projects: 5,
1834
+ status: "Archived"
1835
+ }
1836
+ ];
1837
+ const orgInitials = (name) => name.split(/\s+/).filter(Boolean).slice(0, 2).map((w) => w[0]).join("").toUpperCase();
1838
+ function OrgLogo({ org, className }) {
1839
+ if (org.logo) return /* @__PURE__ */ jsx("div", {
1840
+ className: cn("wwc:flex wwc:shrink-0 wwc:items-center wwc:justify-center wwc:overflow-hidden wwc:rounded-xl wwc:border wwc:border-border wwc:bg-white wwc:p-2", className),
1841
+ children: /* @__PURE__ */ jsx("img", {
1842
+ src: org.logo,
1843
+ alt: org.name,
1844
+ className: "wwc:h-full wwc:w-full wwc:object-contain"
1845
+ })
1846
+ });
1847
+ return /* @__PURE__ */ jsx("div", {
1848
+ className: cn("wwc:flex wwc:shrink-0 wwc:items-center wwc:justify-center wwc:rounded-xl wwc:bg-primary/10 wwc:font-semibold wwc:text-primary", className),
1849
+ children: orgInitials(org.name)
1850
+ });
1851
+ }
1852
+ function EditOrgDialog({ org, onSave }) {
1853
+ const [open, setOpen] = useState(false);
1854
+ const [name, setName] = useState(org.name);
1855
+ const [country, setCountry] = useState(org.country);
1856
+ const [logo, setLogo] = useState(org.logo);
1857
+ const [errors, setErrors] = useState({});
1858
+ const fileRef = useRef(null);
1859
+ const onFile = (e) => {
1860
+ const file = e.target.files?.[0];
1861
+ e.target.value = "";
1862
+ if (!file) return;
1863
+ if (!["image/png", "image/jpeg"].includes(file.type)) {
1864
+ setErrors((p) => ({
1865
+ ...p,
1866
+ logo: "Only PNG, JPG and JPEG are allowed."
1867
+ }));
1868
+ return;
1869
+ }
1870
+ if (file.size > 1048576) {
1871
+ setErrors((p) => ({
1872
+ ...p,
1873
+ logo: "Max size allowed is 1MB."
1874
+ }));
1875
+ return;
1876
+ }
1877
+ const reader = new FileReader();
1878
+ reader.onload = () => {
1879
+ setLogo(typeof reader.result === "string" ? reader.result : null);
1880
+ setErrors((p) => ({
1881
+ ...p,
1882
+ logo: void 0
1883
+ }));
1884
+ };
1885
+ reader.readAsDataURL(file);
1886
+ };
1887
+ const submit = () => {
1888
+ const errs = {};
1889
+ if (!name.trim()) errs.name = "Organization name is required.";
1890
+ if (!country) errs.country = "Country is required.";
1891
+ if (errs.name || errs.country) {
1892
+ setErrors((p) => ({
1893
+ ...p,
1894
+ ...errs
1895
+ }));
1896
+ return;
1897
+ }
1898
+ onSave({
1899
+ name: name.trim(),
1900
+ country,
1901
+ logo
1902
+ });
1903
+ setOpen(false);
1904
+ };
1905
+ return /* @__PURE__ */ jsxs(Dialog, {
1906
+ open,
1907
+ onOpenChange: (o) => {
1908
+ if (o) {
1909
+ setName(org.name);
1910
+ setCountry(org.country);
1911
+ setLogo(org.logo);
1912
+ setErrors({});
1913
+ }
1914
+ setOpen(o);
1915
+ },
1916
+ children: [/* @__PURE__ */ jsx(DialogTrigger, {
1917
+ asChild: true,
1918
+ children: /* @__PURE__ */ jsxs(Button, {
1919
+ variant: "outline",
1920
+ size: "sm",
1921
+ children: [/* @__PURE__ */ jsx(Pencil, { className: "wwc:h-4 wwc:w-4" }), "Edit"]
1922
+ })
1923
+ }), /* @__PURE__ */ jsxs(DialogContent, { children: [
1924
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Edit organization" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Update the organization name, country and logo." })] }),
1925
+ /* @__PURE__ */ jsxs("div", {
1926
+ className: "wwc:space-y-5 wwc:px-4 wwc:py-4",
1927
+ children: [
1928
+ /* @__PURE__ */ jsxs("div", {
1929
+ className: "wwc:flex wwc:items-start wwc:gap-4",
1930
+ children: [/* @__PURE__ */ jsx(OrgLogo, {
1931
+ org: {
1932
+ ...org,
1933
+ name: name || org.name,
1934
+ logo
1935
+ },
1936
+ className: "wwc:h-16 wwc:w-16 wwc:text-lg"
1937
+ }), /* @__PURE__ */ jsxs("div", {
1938
+ className: "wwc:space-y-1",
1939
+ children: [/* @__PURE__ */ jsxs("div", {
1940
+ className: "wwc:flex wwc:flex-wrap wwc:gap-2",
1941
+ children: [
1942
+ /* @__PURE__ */ jsx("input", {
1943
+ type: "file",
1944
+ accept: "image/png,image/jpeg",
1945
+ ref: fileRef,
1946
+ onChange: onFile,
1947
+ className: "wwc:hidden"
1948
+ }),
1949
+ /* @__PURE__ */ jsxs(Button, {
1950
+ variant: "outline",
1951
+ size: "sm",
1952
+ onClick: () => fileRef.current?.click(),
1953
+ children: [/* @__PURE__ */ jsx(Upload, { className: "wwc:h-4 wwc:w-4" }), "Upload logo"]
1954
+ }),
1955
+ logo && /* @__PURE__ */ jsx(Button, {
1956
+ variant: "ghost",
1957
+ size: "sm",
1958
+ onClick: () => setLogo(null),
1959
+ children: "Remove"
1960
+ })
1961
+ ]
1962
+ }), errors.logo ? /* @__PURE__ */ jsx("p", {
1963
+ className: "wwc:text-xs wwc:text-destructive",
1964
+ children: errors.logo
1965
+ }) : /* @__PURE__ */ jsx("p", {
1966
+ className: "wwc:text-xs wwc:text-muted-foreground",
1967
+ children: "PNG, JPG or JPEG · max 1MB."
1968
+ })]
1969
+ })]
1970
+ }),
1971
+ /* @__PURE__ */ jsxs("div", {
1972
+ className: "wwc:space-y-1.5",
1973
+ children: [
1974
+ /* @__PURE__ */ jsx(Label, {
1975
+ required: true,
1976
+ children: "Organization name"
1977
+ }),
1978
+ /* @__PURE__ */ jsx(Input, {
1979
+ value: name,
1980
+ onChange: (e) => {
1981
+ setName(e.target.value);
1982
+ if (e.target.value.trim()) setErrors((p) => ({
1983
+ ...p,
1984
+ name: void 0
1985
+ }));
1986
+ },
1987
+ placeholder: "Organization name",
1988
+ "aria-invalid": !!errors.name,
1989
+ className: cn(errors.name && "wwc:border-destructive wwc:focus-visible:ring-destructive")
1990
+ }),
1991
+ errors.name && /* @__PURE__ */ jsx("p", {
1992
+ className: "wwc:text-xs wwc:text-destructive",
1993
+ children: errors.name
1994
+ })
1995
+ ]
1996
+ }),
1997
+ /* @__PURE__ */ jsxs("div", {
1998
+ className: "wwc:space-y-1.5",
1999
+ children: [
2000
+ /* @__PURE__ */ jsx(Label, {
2001
+ required: true,
2002
+ children: "Country"
2003
+ }),
2004
+ /* @__PURE__ */ jsx("div", {
2005
+ className: cn(errors.country && "wwc:rounded-md wwc:ring-1 wwc:ring-destructive"),
2006
+ children: /* @__PURE__ */ jsx(FieldSelect, {
2007
+ value: country,
2008
+ onChange: (v) => {
2009
+ setCountry(v);
2010
+ if (v) setErrors((p) => ({
2011
+ ...p,
2012
+ country: void 0
2013
+ }));
2014
+ },
2015
+ placeholder: "Select country",
2016
+ options: COUNTRIES,
2017
+ triggerClassName: "wwc:w-full"
2018
+ })
2019
+ }),
2020
+ errors.country && /* @__PURE__ */ jsx("p", {
2021
+ className: "wwc:text-xs wwc:text-destructive",
2022
+ children: errors.country
2023
+ })
2024
+ ]
2025
+ })
2026
+ ]
2027
+ }),
2028
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(Button, {
2029
+ variant: "outline",
2030
+ onClick: () => setOpen(false),
2031
+ children: "Cancel"
2032
+ }), /* @__PURE__ */ jsx(Button, {
2033
+ onClick: submit,
2034
+ children: "Save changes"
2035
+ })] })
2036
+ ] })]
2037
+ });
2038
+ }
2039
+ function WakeMark({ className }) {
2040
+ return /* @__PURE__ */ jsx("svg", {
2041
+ viewBox: "0 0 278.78 176.15",
2042
+ xmlns: "http://www.w3.org/2000/svg",
2043
+ "aria-hidden": "true",
2044
+ fill: "currentColor",
2045
+ className,
2046
+ children: /* @__PURE__ */ jsx("path", { d: "M65.58,4.66l21.91,30.92,20.8-31.16,62.09-.03,21.5,31.2s21.05-31.2,21.21-31.2h62.08v62.09s-52.28,105.07-52.28,105.07l-62.09-.05-21.48-30.97-21.05,31.02h-62.09S3.49,66.77,3.49,66.77V4.67h62.09Z" })
2047
+ });
2048
+ }
2049
+ function AddOrgDialog({ onCreate }) {
2050
+ const [open, setOpen] = useState(false);
2051
+ const [name, setName] = useState("");
2052
+ const [country, setCountry] = useState("");
2053
+ const [adminEmail, setAdminEmail] = useState("");
2054
+ const [logo, setLogo] = useState(null);
2055
+ const [errors, setErrors] = useState({});
2056
+ const fileRef = useRef(null);
2057
+ const reset = () => {
2058
+ setName("");
2059
+ setCountry("");
2060
+ setAdminEmail("");
2061
+ setLogo(null);
2062
+ setErrors({});
2063
+ };
2064
+ const onFile = (e) => {
2065
+ const file = e.target.files?.[0];
2066
+ e.target.value = "";
2067
+ if (!file) return;
2068
+ if (!["image/png", "image/jpeg"].includes(file.type)) {
2069
+ setLogo(null);
2070
+ setErrors((p) => ({
2071
+ ...p,
2072
+ logo: "Only PNG, JPG and JPEG are allowed."
2073
+ }));
2074
+ return;
2075
+ }
2076
+ if (file.size > 1048576) {
2077
+ setLogo(null);
2078
+ setErrors((p) => ({
2079
+ ...p,
2080
+ logo: "Max size allowed is 1MB."
2081
+ }));
2082
+ return;
2083
+ }
2084
+ const reader = new FileReader();
2085
+ reader.onload = () => {
2086
+ setLogo(typeof reader.result === "string" ? reader.result : null);
2087
+ setErrors((p) => ({
2088
+ ...p,
2089
+ logo: void 0
2090
+ }));
2091
+ };
2092
+ reader.readAsDataURL(file);
2093
+ };
2094
+ const submit = () => {
2095
+ const emailRe = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
2096
+ const errs = {};
2097
+ if (!name.trim()) errs.name = "Organization name is required.";
2098
+ if (!country) errs.country = "Country is required.";
2099
+ if (!adminEmail.trim()) errs.email = "Admin email is required.";
2100
+ else if (!emailRe.test(adminEmail.trim())) errs.email = "Enter a valid email address.";
2101
+ if (errs.name || errs.country || errs.email) {
2102
+ setErrors((p) => ({
2103
+ ...p,
2104
+ ...errs
2105
+ }));
2106
+ return;
2107
+ }
2108
+ onCreate({
2109
+ name: name.trim(),
2110
+ country,
2111
+ adminEmail: adminEmail.trim(),
2112
+ logo
2113
+ });
2114
+ setOpen(false);
2115
+ };
2116
+ return /* @__PURE__ */ jsxs(Dialog, {
2117
+ open,
2118
+ onOpenChange: (o) => {
2119
+ if (o) reset();
2120
+ setOpen(o);
2121
+ },
2122
+ children: [/* @__PURE__ */ jsx(DialogTrigger, {
2123
+ asChild: true,
2124
+ children: /* @__PURE__ */ jsxs(Button, {
2125
+ size: "sm",
2126
+ children: [/* @__PURE__ */ jsx(Plus, { className: "wwc:h-4 wwc:w-4" }), "Add organization"]
2127
+ })
2128
+ }), /* @__PURE__ */ jsxs(DialogContent, { children: [
2129
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Add organization" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Create a new organization and invite its admin." })] }),
2130
+ /* @__PURE__ */ jsxs("div", {
2131
+ className: "wwc:space-y-5 wwc:px-4 wwc:py-4",
2132
+ children: [
2133
+ /* @__PURE__ */ jsxs("div", {
2134
+ className: "wwc:flex wwc:items-start wwc:gap-4",
2135
+ children: [/* @__PURE__ */ jsx(OrgLogo, {
2136
+ org: {
2137
+ id: "",
2138
+ name: name || "New",
2139
+ location: "",
2140
+ country: "",
2141
+ logo,
2142
+ projects: 0,
2143
+ status: "Active"
2144
+ },
2145
+ className: "wwc:h-16 wwc:w-16 wwc:text-lg"
2146
+ }), /* @__PURE__ */ jsxs("div", {
2147
+ className: "wwc:space-y-1",
2148
+ children: [/* @__PURE__ */ jsxs("div", {
2149
+ className: "wwc:flex wwc:flex-wrap wwc:gap-2",
2150
+ children: [
2151
+ /* @__PURE__ */ jsx("input", {
2152
+ type: "file",
2153
+ accept: "image/png,image/jpeg",
2154
+ ref: fileRef,
2155
+ onChange: onFile,
2156
+ className: "wwc:hidden"
2157
+ }),
2158
+ /* @__PURE__ */ jsxs(Button, {
2159
+ variant: "outline",
2160
+ size: "sm",
2161
+ onClick: () => fileRef.current?.click(),
2162
+ children: [/* @__PURE__ */ jsx(Upload, { className: "wwc:h-4 wwc:w-4" }), "Upload logo"]
2163
+ }),
2164
+ logo && /* @__PURE__ */ jsx(Button, {
2165
+ variant: "ghost",
2166
+ size: "sm",
2167
+ onClick: () => setLogo(null),
2168
+ children: "Remove"
2169
+ })
2170
+ ]
2171
+ }), errors.logo ? /* @__PURE__ */ jsx("p", {
2172
+ className: "wwc:text-xs wwc:text-destructive",
2173
+ children: errors.logo
2174
+ }) : /* @__PURE__ */ jsx("p", {
2175
+ className: "wwc:text-xs wwc:text-muted-foreground",
2176
+ children: "PNG, JPG or JPEG · max 1MB."
2177
+ })]
2178
+ })]
2179
+ }),
2180
+ /* @__PURE__ */ jsxs("div", {
2181
+ className: "wwc:space-y-1.5",
2182
+ children: [
2183
+ /* @__PURE__ */ jsx(Label, {
2184
+ required: true,
2185
+ children: "Organization name"
2186
+ }),
2187
+ /* @__PURE__ */ jsx(Input, {
2188
+ value: name,
2189
+ onChange: (e) => {
2190
+ setName(e.target.value);
2191
+ if (e.target.value.trim()) setErrors((p) => ({
2192
+ ...p,
2193
+ name: void 0
2194
+ }));
2195
+ },
2196
+ placeholder: "Organization name",
2197
+ "aria-invalid": !!errors.name,
2198
+ className: cn(errors.name && "wwc:border-destructive wwc:focus-visible:ring-destructive")
2199
+ }),
2200
+ errors.name && /* @__PURE__ */ jsx("p", {
2201
+ className: "wwc:text-xs wwc:text-destructive",
2202
+ children: errors.name
2203
+ })
2204
+ ]
2205
+ }),
2206
+ /* @__PURE__ */ jsxs("div", {
2207
+ className: "wwc:space-y-1.5",
2208
+ children: [
2209
+ /* @__PURE__ */ jsx(Label, {
2210
+ required: true,
2211
+ children: "Country"
2212
+ }),
2213
+ /* @__PURE__ */ jsx("div", {
2214
+ className: cn(errors.country && "wwc:rounded-md wwc:ring-1 wwc:ring-destructive"),
2215
+ children: /* @__PURE__ */ jsx(FieldSelect, {
2216
+ value: country,
2217
+ onChange: (v) => {
2218
+ setCountry(v);
2219
+ if (v) setErrors((p) => ({
2220
+ ...p,
2221
+ country: void 0
2222
+ }));
2223
+ },
2224
+ placeholder: "Select country",
2225
+ options: COUNTRIES,
2226
+ triggerClassName: "wwc:w-full"
2227
+ })
2228
+ }),
2229
+ errors.country && /* @__PURE__ */ jsx("p", {
2230
+ className: "wwc:text-xs wwc:text-destructive",
2231
+ children: errors.country
2232
+ })
2233
+ ]
2234
+ }),
2235
+ /* @__PURE__ */ jsxs("div", {
2236
+ className: "wwc:space-y-1.5",
2237
+ children: [
2238
+ /* @__PURE__ */ jsx(Label, {
2239
+ required: true,
2240
+ children: "Admin email"
2241
+ }),
2242
+ /* @__PURE__ */ jsx(Input, {
2243
+ type: "email",
2244
+ value: adminEmail,
2245
+ onChange: (e) => {
2246
+ setAdminEmail(e.target.value);
2247
+ if (e.target.value.trim()) setErrors((p) => ({
2248
+ ...p,
2249
+ email: void 0
2250
+ }));
2251
+ },
2252
+ placeholder: "admin@company.com",
2253
+ "aria-invalid": !!errors.email,
2254
+ className: cn(errors.email && "wwc:border-destructive wwc:focus-visible:ring-destructive")
2255
+ }),
2256
+ errors.email && /* @__PURE__ */ jsx("p", {
2257
+ className: "wwc:text-xs wwc:text-destructive",
2258
+ children: errors.email
2259
+ })
2260
+ ]
2261
+ })
2262
+ ]
2263
+ }),
2264
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(Button, {
2265
+ variant: "outline",
2266
+ onClick: () => setOpen(false),
2267
+ children: "Cancel"
2268
+ }), /* @__PURE__ */ jsx(Button, {
2269
+ onClick: submit,
2270
+ children: "Add organization"
2271
+ })] })
2272
+ ] })]
2273
+ });
2274
+ }
2275
+ function OrgCardSkeleton() {
2276
+ return /* @__PURE__ */ jsxs("div", {
2277
+ className: "wwc:flex wwc:flex-col wwc:gap-4 wwc:rounded-lg wwc:border wwc:border-border wwc:bg-card wwc:p-5",
2278
+ children: [
2279
+ /* @__PURE__ */ jsxs("div", {
2280
+ className: "wwc:flex wwc:items-start wwc:justify-between",
2281
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "wwc:h-14 wwc:w-14 wwc:rounded-xl" }), /* @__PURE__ */ jsx(Skeleton, { className: "wwc:h-7 wwc:w-7 wwc:rounded-md" })]
2282
+ }),
2283
+ /* @__PURE__ */ jsxs("div", {
2284
+ className: "wwc:space-y-2",
2285
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "wwc:h-4 wwc:w-32" }), /* @__PURE__ */ jsx(Skeleton, { className: "wwc:h-3 wwc:w-40" })]
2286
+ }),
2287
+ /* @__PURE__ */ jsx(Skeleton, { className: "wwc:h-5 wwc:w-24 wwc:rounded-full" })
2288
+ ]
2289
+ });
2290
+ }
2291
+ function OrgCard({ org, onOpen, onArchive, onRestore }) {
2292
+ const archived = org.status === "Archived";
2293
+ return /* @__PURE__ */ jsxs("div", {
2294
+ role: archived ? void 0 : "button",
2295
+ tabIndex: archived ? void 0 : 0,
2296
+ onClick: archived ? void 0 : onOpen,
2297
+ onKeyDown: (e) => {
2298
+ if (!archived && (e.key === "Enter" || e.key === " ")) {
2299
+ e.preventDefault();
2300
+ onOpen();
2301
+ }
2302
+ },
2303
+ className: cn("wwc:group wwc:relative wwc:flex wwc:flex-col wwc:gap-4 wwc:rounded-lg wwc:border wwc:border-border wwc:bg-card wwc:p-5 wwc:text-left wwc:text-card-foreground wwc:transition-colors", archived ? "wwc:opacity-70" : "wwc:cursor-pointer wwc:hover:border-primary/40 wwc:hover:shadow-sm"),
2304
+ children: [
2305
+ /* @__PURE__ */ jsxs("div", {
2306
+ className: "wwc:flex wwc:items-start wwc:justify-between",
2307
+ children: [/* @__PURE__ */ jsx(OrgLogo, {
2308
+ org,
2309
+ className: "wwc:h-14 wwc:w-14 wwc:text-base"
2310
+ }), /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
2311
+ asChild: true,
2312
+ children: /* @__PURE__ */ jsx(Button, {
2313
+ variant: "ghost",
2314
+ icon: true,
2315
+ "aria-label": "Organization actions",
2316
+ onClick: (e) => e.stopPropagation(),
2317
+ className: "wwc:h-7 wwc:w-7 wwc:text-muted-foreground",
2318
+ children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "wwc:h-4 wwc:w-4" })
2319
+ })
2320
+ }), /* @__PURE__ */ jsx(DropdownMenuContent, {
2321
+ align: "end",
2322
+ className: "wwc:w-44",
2323
+ onClick: (e) => e.stopPropagation(),
2324
+ children: archived ? /* @__PURE__ */ jsxs(DropdownMenuItem, {
2325
+ onClick: onRestore,
2326
+ children: [/* @__PURE__ */ jsx(ArchiveRestore, { className: "wwc:h-4 wwc:w-4" }), "Restore"]
2327
+ }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(DropdownMenuItem, {
2328
+ onClick: onOpen,
2329
+ children: [/* @__PURE__ */ jsx(ArrowRight, { className: "wwc:h-4 wwc:w-4" }), "Open"]
2330
+ }), /* @__PURE__ */ jsxs(DropdownMenuItem, {
2331
+ onClick: onArchive,
2332
+ className: "wwc:text-destructive focus:wwc:text-destructive",
2333
+ children: [/* @__PURE__ */ jsx(Archive, { className: "wwc:h-4 wwc:w-4" }), "Archive"]
2334
+ })] })
2335
+ })] })]
2336
+ }),
2337
+ /* @__PURE__ */ jsxs("div", {
2338
+ className: "wwc:min-w-0",
2339
+ children: [/* @__PURE__ */ jsx("h3", {
2340
+ className: "wwc:truncate wwc:text-base wwc:font-semibold",
2341
+ children: org.name
2342
+ }), /* @__PURE__ */ jsxs("p", {
2343
+ className: "wwc:mt-1 wwc:flex wwc:items-center wwc:gap-1.5 wwc:text-sm wwc:text-muted-foreground",
2344
+ children: [/* @__PURE__ */ jsx(MapPin, { className: "wwc:h-3.5 wwc:w-3.5 wwc:shrink-0" }), /* @__PURE__ */ jsx("span", {
2345
+ className: "wwc:truncate",
2346
+ children: org.location
2347
+ })]
2348
+ })]
2349
+ }),
2350
+ /* @__PURE__ */ jsxs("div", {
2351
+ className: "wwc:flex wwc:items-center wwc:gap-2",
2352
+ children: [/* @__PURE__ */ jsxs(Badge, {
2353
+ variant: "neutralSoft",
2354
+ children: [org.projects, " projects"]
2355
+ }), archived && /* @__PURE__ */ jsx(Badge, {
2356
+ variant: "warningSoft",
2357
+ children: "Archived"
2358
+ })]
2359
+ })
2360
+ ]
2361
+ });
2362
+ }
2363
+ const ORG_STATUS_TABS = ["Active", "Archived"];
2364
+ function AllOrganizationsView({ orgs, onSelectOrg, onBack, onCreateOrg, onArchiveOrg, onRestoreOrg }) {
2365
+ const [statusTab, setStatusTab] = useState("Active");
2366
+ const [query, setQuery] = useState("");
2367
+ const [pendingArchive, setPendingArchive] = useState(null);
2368
+ const [loading, setLoading] = useState(true);
2369
+ useEffect(() => {
2370
+ setLoading(true);
2371
+ const t = setTimeout(() => setLoading(false), 700);
2372
+ return () => clearTimeout(t);
2373
+ }, [statusTab]);
2374
+ const filtered = orgs.filter((o) => o.status === statusTab && o.name.toLowerCase().includes(query.trim().toLowerCase()));
2375
+ return /* @__PURE__ */ jsxs("div", {
2376
+ className: "wwc:flex wwc:h-full wwc:min-h-0 wwc:flex-col wwc:bg-background wwc:text-foreground",
2377
+ children: [
2378
+ /* @__PURE__ */ jsxs("header", {
2379
+ className: "wwc:flex wwc:h-14 wwc:shrink-0 wwc:items-center wwc:gap-3 wwc:border-b wwc:border-border wwc:bg-card wwc:px-4 wwc:text-card-foreground",
2380
+ children: [
2381
+ /* @__PURE__ */ jsxs(Button, {
2382
+ variant: "ghost",
2383
+ size: "sm",
2384
+ onClick: onBack,
2385
+ className: "wwc:-ml-1",
2386
+ children: [/* @__PURE__ */ jsx(ChevronLeft, { className: "wwc:h-4 wwc:w-4" }), "Back"]
2387
+ }),
2388
+ /* @__PURE__ */ jsx("div", { className: "wwc:h-5 wwc:w-px wwc:bg-border" }),
2389
+ /* @__PURE__ */ jsx(WakeMark, { className: "wwc:h-5 wwc:w-auto wwc:text-foreground" }),
2390
+ /* @__PURE__ */ jsx("span", {
2391
+ className: "wwc:text-sm wwc:font-semibold",
2392
+ children: "Core"
2393
+ })
2394
+ ]
2395
+ }),
2396
+ /* @__PURE__ */ jsx("main", {
2397
+ className: "wwc:min-h-0 wwc:flex-1 wwc:overflow-auto wwc:p-6",
2398
+ children: /* @__PURE__ */ jsxs("div", {
2399
+ className: "wwc:mx-auto wwc:max-w-[1200px] wwc:space-y-6",
2400
+ children: [
2401
+ /* @__PURE__ */ jsxs("div", {
2402
+ className: "wwc:flex wwc:items-start wwc:justify-between wwc:gap-4",
2403
+ children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h1", {
2404
+ className: "wwc:text-2xl wwc:font-bold wwc:tracking-tight",
2405
+ children: "Organizations"
2406
+ }), /* @__PURE__ */ jsx("p", {
2407
+ className: "wwc:text-sm wwc:text-muted-foreground",
2408
+ children: "Select an organization to manage, or create a new one."
2409
+ })] }), /* @__PURE__ */ jsx(AddOrgDialog, { onCreate: onCreateOrg })]
2410
+ }),
2411
+ /* @__PURE__ */ jsxs("div", {
2412
+ className: "wwc:flex wwc:flex-wrap wwc:items-center wwc:justify-between wwc:gap-3",
2413
+ children: [/* @__PURE__ */ jsx(Tabs, {
2414
+ value: statusTab,
2415
+ onValueChange: (v) => setStatusTab(v),
2416
+ children: /* @__PURE__ */ jsx(TabsList, { children: ORG_STATUS_TABS.map((t) => /* @__PURE__ */ jsxs(TabsTrigger, {
2417
+ value: t,
2418
+ children: [t, /* @__PURE__ */ jsx("span", {
2419
+ className: "wwc:ml-1.5 wwc:text-muted-foreground",
2420
+ children: orgs.filter((o) => o.status === t).length
2421
+ })]
2422
+ }, t)) })
2423
+ }), /* @__PURE__ */ jsxs("div", {
2424
+ className: "wwc:relative wwc:w-full wwc:max-w-sm",
2425
+ children: [/* @__PURE__ */ jsx(Search, { className: "wwc:absolute wwc:left-2.5 wwc:top-1/2 wwc:h-3.5 wwc:w-3.5 wwc:-translate-y-1/2 wwc:text-muted-foreground" }), /* @__PURE__ */ jsx(Input, {
2426
+ value: query,
2427
+ onChange: (e) => setQuery(e.target.value),
2428
+ placeholder: "Search organizations…",
2429
+ className: "wwc:pl-8"
2430
+ })]
2431
+ })]
2432
+ }),
2433
+ loading ? /* @__PURE__ */ jsx("div", {
2434
+ className: "wwc:grid wwc:gap-4 wwc:sm:grid-cols-2 wwc:lg:grid-cols-3",
2435
+ children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsx(OrgCardSkeleton, {}, i))
2436
+ }) : filtered.length === 0 ? /* @__PURE__ */ jsx(Empty, {
2437
+ icon: /* @__PURE__ */ jsx(Building2, { className: "wwc:h-8 wwc:w-8" }),
2438
+ title: query ? "No matches found" : `No ${statusTab.toLowerCase()} organizations`,
2439
+ description: query ? `No ${statusTab.toLowerCase()} organizations match “${query}”. Try a different search.` : statusTab === "Active" ? "Create your first organization to get started." : "Archived organizations will appear here.",
2440
+ action: !query && statusTab === "Active" ? /* @__PURE__ */ jsx(AddOrgDialog, { onCreate: onCreateOrg }) : void 0
2441
+ }) : /* @__PURE__ */ jsx("div", {
2442
+ className: "wwc:grid wwc:gap-4 wwc:sm:grid-cols-2 wwc:lg:grid-cols-3",
2443
+ children: filtered.map((o) => /* @__PURE__ */ jsx(OrgCard, {
2444
+ org: o,
2445
+ onOpen: () => onSelectOrg(o.id),
2446
+ onArchive: () => setPendingArchive(o),
2447
+ onRestore: () => onRestoreOrg(o.id)
2448
+ }, o.id))
2449
+ })
2450
+ ]
2451
+ })
2452
+ }),
2453
+ /* @__PURE__ */ jsx(ConfirmDialog, {
2454
+ open: !!pendingArchive,
2455
+ title: "Archive organization?",
2456
+ description: /* @__PURE__ */ jsxs(Fragment$1, { children: [
2457
+ "This will archive ",
2458
+ /* @__PURE__ */ jsx("span", {
2459
+ className: "wwc:font-medium wwc:text-foreground",
2460
+ children: pendingArchive?.name
2461
+ }),
2462
+ " and all its projects. You can restore it later from the Archived tab."
2463
+ ] }),
2464
+ confirmLabel: "Archive",
2465
+ destructive: true,
2466
+ onOpenChange: (o) => !o && setPendingArchive(null),
2467
+ onConfirm: () => {
2468
+ if (pendingArchive) onArchiveOrg(pendingArchive.id);
2469
+ setPendingArchive(null);
2470
+ }
2471
+ })
2472
+ ]
2473
+ });
2474
+ }
2475
+ function HomeView({ org, onGoProjects, onGoUsers, onSaveOrg }) {
2476
+ const stats = [{
2477
+ label: "Projects",
2478
+ count: PROJECTS.length,
2479
+ icon: FolderKanban,
2480
+ onClick: onGoProjects,
2481
+ cta: "View projects"
2482
+ }, {
2483
+ label: "Users",
2484
+ count: USERS.length,
2485
+ icon: Users,
2486
+ onClick: onGoUsers,
2487
+ cta: "View users"
2488
+ }];
2489
+ return /* @__PURE__ */ jsxs("div", {
2490
+ className: "wwc:space-y-6",
2491
+ children: [
2492
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("h1", {
2493
+ className: "wwc:text-3xl wwc:font-bold wwc:leading-tight wwc:tracking-tight wwc:md:text-4xl",
2494
+ children: [
2495
+ "Welcome to",
2496
+ /* @__PURE__ */ jsx("br", {}),
2497
+ "Organization Admin"
2498
+ ]
2499
+ }), /* @__PURE__ */ jsx("p", {
2500
+ className: "wwc:mt-2 wwc:text-sm wwc:text-muted-foreground",
2501
+ children: "Overview of the selected organization."
2502
+ })] }),
2503
+ /* @__PURE__ */ jsx(Card, {
2504
+ className: "wwc:shadow-none",
2505
+ children: /* @__PURE__ */ jsxs(CardContent, {
2506
+ className: "wwc:flex wwc:items-center wwc:gap-5 wwc:pt-6",
2507
+ children: [
2508
+ /* @__PURE__ */ jsx(OrgLogo, {
2509
+ org,
2510
+ className: "wwc:h-20 wwc:w-20 wwc:text-2xl"
2511
+ }),
2512
+ /* @__PURE__ */ jsxs("div", {
2513
+ className: "wwc:min-w-0 wwc:flex-1",
2514
+ children: [/* @__PURE__ */ jsx("h2", {
2515
+ className: "wwc:truncate wwc:text-xl wwc:font-semibold",
2516
+ children: org.name
2517
+ }), /* @__PURE__ */ jsxs("p", {
2518
+ className: "wwc:mt-1 wwc:flex wwc:items-center wwc:gap-1.5 wwc:text-sm wwc:text-muted-foreground",
2519
+ children: [/* @__PURE__ */ jsx(MapPin, { className: "wwc:h-4 wwc:w-4 wwc:shrink-0" }), org.location]
2520
+ })]
2521
+ }),
2522
+ /* @__PURE__ */ jsx(EditOrgDialog, {
2523
+ org,
2524
+ onSave: onSaveOrg
2525
+ })
2526
+ ]
2527
+ })
2528
+ }),
2529
+ /* @__PURE__ */ jsx("div", {
2530
+ className: "wwc:grid wwc:gap-4 wwc:sm:grid-cols-2",
2531
+ children: stats.map((s) => /* @__PURE__ */ jsxs("button", {
2532
+ type: "button",
2533
+ onClick: s.onClick,
2534
+ className: "wwc:group wwc:flex wwc:flex-col wwc:gap-4 wwc:rounded-lg wwc:border wwc:border-border wwc:bg-card wwc:p-5 wwc:text-left wwc:text-card-foreground wwc:transition-colors wwc:hover:border-primary/40 wwc:hover:bg-muted/40",
2535
+ children: [
2536
+ /* @__PURE__ */ jsxs("div", {
2537
+ className: "wwc:flex wwc:items-start wwc:justify-between",
2538
+ children: [/* @__PURE__ */ jsx("div", {
2539
+ className: "wwc:flex wwc:h-10 wwc:w-10 wwc:items-center wwc:justify-center wwc:rounded-lg wwc:bg-primary/10 wwc:text-primary",
2540
+ children: /* @__PURE__ */ jsx(s.icon, { className: "wwc:h-5 wwc:w-5" })
2541
+ }), /* @__PURE__ */ jsx(ArrowRight, { className: "wwc:h-4 wwc:w-4 wwc:text-muted-foreground wwc:transition-transform wwc:group-hover:translate-x-0.5" })]
2542
+ }),
2543
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
2544
+ className: "wwc:text-2xl wwc:font-bold wwc:tracking-tight",
2545
+ children: s.count
2546
+ }), /* @__PURE__ */ jsx("p", {
2547
+ className: "wwc:text-sm wwc:text-muted-foreground",
2548
+ children: s.label
2549
+ })] }),
2550
+ /* @__PURE__ */ jsxs("p", {
2551
+ className: "wwc:text-sm wwc:font-medium wwc:text-primary",
2552
+ children: [s.cta, " →"]
2553
+ })
2554
+ ]
2555
+ }, s.label))
2556
+ })
2557
+ ]
2558
+ });
2559
+ }
2560
+ function ConfirmDialog({ open, title, description, confirmLabel, destructive, onOpenChange, onConfirm }) {
2561
+ return /* @__PURE__ */ jsx(AlertDialog, {
2562
+ open,
2563
+ onOpenChange,
2564
+ children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: title }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: description })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
2565
+ onClick: onConfirm,
2566
+ className: destructive ? "wwc:bg-destructive wwc:text-white wwc:hover:bg-destructive/90" : void 0,
2567
+ children: confirmLabel
2568
+ })] })] })
2569
+ });
2570
+ }
2571
+ /**
2572
+ * @deprecated Preview/demo prototype — renders built-in sample data and mock handlers. Not a
2573
+ * supported production import: compose your page from the widgets this template uses, wired to your
2574
+ * own data (see the CoreAdminPanel template docs in Storybook). Slated for removal from the public API in a
2575
+ * future major.
2576
+ */
2577
+ function AdminPanel() {
2578
+ const [active, setActive] = useState("home");
2579
+ const [orgs, setOrgs] = useState(INITIAL_ORGS);
2580
+ const [activeOrgId, setActiveOrgId] = useState(INITIAL_ORGS[0].id);
2581
+ const activeOrg = orgs.find((o) => o.id === activeOrgId) ?? orgs[0];
2582
+ const [showOrgs, setShowOrgs] = useState(false);
2583
+ const [editing, setEditing] = useState(null);
2584
+ const [fields, setFields] = useState(EMPTY_FIELDS);
2585
+ const [fieldsBaseline, setFieldsBaseline] = useState(EMPTY_FIELDS);
2586
+ const [modules, setModules] = useState(moduleDefaults);
2587
+ const [modulesBaseline, setModulesBaseline] = useState(moduleDefaults);
2588
+ const [roleName, setRoleName] = useState("");
2589
+ const [roleNameBaseline, setRoleNameBaseline] = useState("");
2590
+ const [perms, setPerms] = useState(permDefaults);
2591
+ const [permsBaseline, setPermsBaseline] = useState(permDefaults);
2592
+ const [userFields, setUserFields] = useState(EMPTY_USER);
2593
+ const [userFieldsBaseline, setUserFieldsBaseline] = useState(EMPTY_USER);
2594
+ const [errors, setErrors] = useState({});
2595
+ const [roleEditConfirm, setRoleEditConfirm] = useState(false);
2596
+ const [userSaveConfirm, setUserSaveConfirm] = useState(false);
2597
+ const [ownToaster, setOwnToaster] = useState(false);
2598
+ useEffect(() => {
2599
+ const hasHostToaster = document.querySelector("[data-sonner-toaster], section[aria-live][aria-label*=\"Notification\"]");
2600
+ setOwnToaster(!hasHostToaster);
2601
+ }, []);
2602
+ const activeItem = NAV_ITEMS.find((i) => i.id === active) ?? NAV_ITEMS[0];
2603
+ const openEditor = editing && editing.surface === active ? editing : null;
2604
+ const entity = openEditor?.surface === "permissions" ? "role" : openEditor?.surface === "users" ? "user" : "project";
2605
+ const projectChangeCount = Object.keys(fields).filter((k) => fields[k] !== fieldsBaseline[k]).length + MODULES.filter((m) => modules[m.id] !== modulesBaseline[m.id]).length;
2606
+ const roleChangeCount = (roleName !== roleNameBaseline ? 1 : 0) + ALL_PERM_IDS.filter((id) => perms[id] !== permsBaseline[id]).length;
2607
+ const userChangeCount = [
2608
+ "email",
2609
+ "role",
2610
+ "mobile",
2611
+ "dialCode"
2612
+ ].filter((k) => userFields[k] !== userFieldsBaseline[k]).length + (userFields.projects.join("|") !== userFieldsBaseline.projects.join("|") ? 1 : 0) + (userFields.linkedPeople.join("|") !== userFieldsBaseline.linkedPeople.join("|") ? 1 : 0);
2613
+ const changeCount = openEditor?.surface === "permissions" ? roleChangeCount : openEditor?.surface === "users" ? userChangeCount : projectChangeCount;
2614
+ const showSaveBar = !!openEditor && (openEditor.mode === "create" || changeCount > 0);
2615
+ const showTabHeader = !openEditor && active !== "home";
2616
+ const openEditProject = (p) => {
2617
+ const f = fieldsFromProject(p);
2618
+ const mods = moduleDefaults();
2619
+ setFields(f);
2620
+ setFieldsBaseline(f);
2621
+ setModules(mods);
2622
+ setModulesBaseline(mods);
2623
+ setErrors({});
2624
+ setEditing({
2625
+ surface: "projects",
2626
+ mode: "edit",
2627
+ project: p
2628
+ });
2629
+ };
2630
+ const openCreateProject = () => {
2631
+ const mods = moduleDefaults();
2632
+ setFields(EMPTY_FIELDS);
2633
+ setFieldsBaseline(EMPTY_FIELDS);
2634
+ setModules(mods);
2635
+ setModulesBaseline(mods);
2636
+ setErrors({});
2637
+ setEditing({
2638
+ surface: "projects",
2639
+ mode: "create",
2640
+ project: null
2641
+ });
2642
+ };
2643
+ const openEditRole = (r) => {
2644
+ setRoleName(r.name);
2645
+ setRoleNameBaseline(r.name);
2646
+ setPerms({ ...r.permissions });
2647
+ setPermsBaseline({ ...r.permissions });
2648
+ setErrors({});
2649
+ setEditing({
2650
+ surface: "permissions",
2651
+ mode: "edit",
2652
+ role: r
2653
+ });
2654
+ };
2655
+ const openCreateRole = () => {
2656
+ const d = permDefaults();
2657
+ setRoleName("");
2658
+ setRoleNameBaseline("");
2659
+ setPerms(d);
2660
+ setPermsBaseline({ ...d });
2661
+ setErrors({});
2662
+ setEditing({
2663
+ surface: "permissions",
2664
+ mode: "create",
2665
+ role: null
2666
+ });
2667
+ };
2668
+ const openEditUser = (u) => {
2669
+ const f = fieldsFromUser(u);
2670
+ setUserFields(f);
2671
+ setUserFieldsBaseline({
2672
+ ...f,
2673
+ projects: [...f.projects],
2674
+ linkedPeople: [...f.linkedPeople]
2675
+ });
2676
+ setErrors({});
2677
+ setEditing({
2678
+ surface: "users",
2679
+ mode: "edit",
2680
+ user: u
2681
+ });
2682
+ };
2683
+ const openCreateUser = () => {
2684
+ setUserFields(EMPTY_USER);
2685
+ setUserFieldsBaseline(EMPTY_USER);
2686
+ setErrors({});
2687
+ setEditing({
2688
+ surface: "users",
2689
+ mode: "create",
2690
+ user: null
2691
+ });
2692
+ };
2693
+ const closeEditor = () => {
2694
+ setEditing(null);
2695
+ setErrors({});
2696
+ };
2697
+ const clearError = (key) => setErrors((prev) => prev[key] ? {
2698
+ ...prev,
2699
+ [key]: false
2700
+ } : prev);
2701
+ const setField = (key, value) => {
2702
+ setFields((prev) => ({
2703
+ ...prev,
2704
+ [key]: value
2705
+ }));
2706
+ setErrors((prev) => {
2707
+ const next = { ...prev };
2708
+ if (key === "name") {
2709
+ next.name = false;
2710
+ next.nameDup = false;
2711
+ } else if (key === "country") next.country = false;
2712
+ else if (key === "timeZone") next.timeZone = false;
2713
+ else if (key === "contractDuration") next.duration = false;
2714
+ else if (key === "startDate") next.startDate = false;
2715
+ return next;
2716
+ });
2717
+ };
2718
+ const onRoleName = (value) => {
2719
+ setRoleName(value);
2720
+ if (value.trim()) clearError("name");
2721
+ };
2722
+ const setUserField = (key, value) => {
2723
+ setUserFields((prev) => ({
2724
+ ...prev,
2725
+ [key]: value
2726
+ }));
2727
+ if (key === "email") setErrors((prev) => ({
2728
+ ...prev,
2729
+ email: false,
2730
+ emailInvalid: false,
2731
+ emailDup: false
2732
+ }));
2733
+ else if (key === "projects" ? value.length > 0 : String(value).trim() !== "") clearError(key);
2734
+ };
2735
+ const toggleModule = (id, value) => setModules((prev) => ({
2736
+ ...prev,
2737
+ [id]: value
2738
+ }));
2739
+ const updatePermissions = (next) => setPerms(next);
2740
+ const draftName = () => openEditor?.surface === "permissions" ? roleName : openEditor?.surface === "users" ? userFields.email : fields.name;
2741
+ const noun = entity === "role" ? "Role" : entity === "user" ? "User" : "Project";
2742
+ const validate = () => {
2743
+ if (!openEditor) return null;
2744
+ const emailRe = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
2745
+ if (openEditor.surface === "users") {
2746
+ const email = userFields.email.trim();
2747
+ const e = {};
2748
+ if (!email) e.email = true;
2749
+ else if (!emailRe.test(email)) e.emailInvalid = true;
2750
+ else if (openEditor.mode === "create" && USERS.some((u) => u.email.toLowerCase() === email.toLowerCase())) e.emailDup = true;
2751
+ if (!userFields.role) e.role = true;
2752
+ if (userFields.projects.length === 0) e.projects = true;
2753
+ return Object.keys(e).length ? e : null;
2754
+ }
2755
+ if (openEditor.surface === "projects") {
2756
+ const e = {};
2757
+ const nm = fields.name.trim();
2758
+ if (!nm) e.name = true;
2759
+ else if (PROJECTS.some((pr) => pr.name.trim().toLowerCase() === nm.toLowerCase() && (openEditor.mode === "create" || pr.id !== openEditor.project?.id))) e.nameDup = true;
2760
+ if (!fields.country) e.country = true;
2761
+ if (!fields.timeZone) e.timeZone = true;
2762
+ const dur = fields.contractDuration.trim();
2763
+ if (dur && (!/^\d+$/.test(dur) || Number(dur) <= 0)) e.duration = true;
2764
+ if (fields.startDate) {
2765
+ const start = parseDMY(fields.startDate);
2766
+ if (start) {
2767
+ const today = /* @__PURE__ */ new Date();
2768
+ today.setHours(0, 0, 0, 0);
2769
+ start.setHours(0, 0, 0, 0);
2770
+ if (start.getTime() > today.getTime()) e.startDate = true;
2771
+ }
2772
+ }
2773
+ return Object.keys(e).length ? e : null;
2774
+ }
2775
+ return draftName().trim() ? null : { name: true };
2776
+ };
2777
+ const save = () => {
2778
+ if (!openEditor) return;
2779
+ const errs = validate();
2780
+ if (errs) {
2781
+ setErrors(errs);
2782
+ return;
2783
+ }
2784
+ if (openEditor.mode === "create") {
2785
+ const nm = draftName().trim();
2786
+ toast.success(`${noun} “${nm}” created`);
2787
+ setEditing(null);
2788
+ setErrors({});
2789
+ return;
2790
+ }
2791
+ if (openEditor.surface === "permissions") {
2792
+ setRoleEditConfirm(true);
2793
+ return;
2794
+ }
2795
+ if (openEditor.surface === "projects") {
2796
+ setFieldsBaseline(fields);
2797
+ setModulesBaseline(modules);
2798
+ toast.success("Changes saved");
2799
+ setErrors({});
2800
+ return;
2801
+ }
2802
+ const removedProject = userFieldsBaseline.projects.some((pr) => !userFields.projects.includes(pr));
2803
+ if (userFields.linkedPeople.length > 0 && removedProject) {
2804
+ setUserSaveConfirm(true);
2805
+ return;
2806
+ }
2807
+ commitUserEdit();
2808
+ };
2809
+ const commitUserEdit = () => {
2810
+ setUserFieldsBaseline({
2811
+ ...userFields,
2812
+ projects: [...userFields.projects],
2813
+ linkedPeople: [...userFields.linkedPeople]
2814
+ });
2815
+ toast.success("Changes saved");
2816
+ setErrors({});
2817
+ setUserSaveConfirm(false);
2818
+ };
2819
+ const commitRoleEdit = () => {
2820
+ setRoleNameBaseline(roleName);
2821
+ setPermsBaseline({ ...perms });
2822
+ toast.success("Changes saved");
2823
+ setErrors({});
2824
+ setRoleEditConfirm(false);
2825
+ };
2826
+ const saveDraft = () => {
2827
+ const nm = draftName();
2828
+ toast.success(nm ? `Draft “${nm}” saved` : "Draft saved");
2829
+ setEditing(null);
2830
+ };
2831
+ const discard = () => {
2832
+ if (!openEditor) return;
2833
+ if (openEditor.mode === "create") {
2834
+ setEditing(null);
2835
+ return;
2836
+ }
2837
+ if (openEditor.surface === "projects") {
2838
+ setFields(fieldsBaseline);
2839
+ setModules(modulesBaseline);
2840
+ } else if (openEditor.surface === "permissions") {
2841
+ setRoleName(roleNameBaseline);
2842
+ setPerms({ ...permsBaseline });
2843
+ } else setUserFields({
2844
+ ...userFieldsBaseline,
2845
+ projects: [...userFieldsBaseline.projects],
2846
+ linkedPeople: [...userFieldsBaseline.linkedPeople]
2847
+ });
2848
+ setErrors({});
2849
+ };
2850
+ const goToTab = (id) => {
2851
+ setEditing(null);
2852
+ setErrors({});
2853
+ setActive(id);
2854
+ };
2855
+ const addRecord = () => {
2856
+ if (active === "projects") openCreateProject();
2857
+ else if (active === "permissions") openCreateRole();
2858
+ else if (active === "users") openCreateUser();
2859
+ };
2860
+ const saveOrg = (patch) => {
2861
+ setOrgs((prev) => prev.map((o) => o.id === activeOrgId ? {
2862
+ ...o,
2863
+ ...patch,
2864
+ location: patch.country
2865
+ } : o));
2866
+ toast.success("Organization updated");
2867
+ };
2868
+ const createOrg = (data) => {
2869
+ const id = `o${orgs.length + 1}`;
2870
+ const org = {
2871
+ id,
2872
+ name: data.name,
2873
+ location: data.country || "—",
2874
+ country: data.country,
2875
+ logo: data.logo,
2876
+ projects: 0,
2877
+ status: "Active"
2878
+ };
2879
+ setOrgs((prev) => [org, ...prev]);
2880
+ setActiveOrgId(id);
2881
+ setShowOrgs(false);
2882
+ setActive("home");
2883
+ toast.success(`Organization “${data.name}” created`);
2884
+ };
2885
+ const archiveOrg = (id) => {
2886
+ const next = orgs.map((o) => o.id === id ? {
2887
+ ...o,
2888
+ status: "Archived"
2889
+ } : o);
2890
+ setOrgs(next);
2891
+ if (id === activeOrgId) {
2892
+ const firstActive = next.find((o) => o.status === "Active");
2893
+ if (firstActive) setActiveOrgId(firstActive.id);
2894
+ }
2895
+ toast.success("Organization archived");
2896
+ };
2897
+ const restoreOrg = (id) => {
2898
+ setOrgs((prev) => prev.map((o) => o.id === id ? {
2899
+ ...o,
2900
+ status: "Active"
2901
+ } : o));
2902
+ toast.success("Organization restored");
2903
+ };
2904
+ if (showOrgs) return /* @__PURE__ */ jsx(AllOrganizationsView, {
2905
+ orgs,
2906
+ onSelectOrg: (id) => {
2907
+ setActiveOrgId(id);
2908
+ setShowOrgs(false);
2909
+ },
2910
+ onBack: () => setShowOrgs(false),
2911
+ onCreateOrg: createOrg,
2912
+ onArchiveOrg: archiveOrg,
2913
+ onRestoreOrg: restoreOrg
2914
+ });
2915
+ const editorName = openEditor ? openEditor.mode === "create" ? `New ${entity}` : openEditor.surface === "projects" ? openEditor.project?.name : openEditor.surface === "permissions" ? openEditor.role?.name : openEditor.user?.name : null;
2916
+ const topBarLabel = openEditor ? `${activeItem.label} / ${editorName}` : activeItem.label;
2917
+ return /* @__PURE__ */ jsxs("div", {
2918
+ className: "wwc:flex wwc:h-full wwc:min-h-0 wwc:bg-background wwc:text-foreground",
2919
+ children: [
2920
+ /* @__PURE__ */ jsx(CoreAppSidebar, {
2921
+ viewLevel: "org",
2922
+ orgGroups: ADMIN_GROUPS,
2923
+ activeItemId: active,
2924
+ showSearch: false,
2925
+ showNotifications: false,
2926
+ orgs: orgs.filter((o) => o.status === "Active").map((o) => o.name),
2927
+ activeOrg: activeOrg.name,
2928
+ activeOrgLogo: activeOrg.logo ? /* @__PURE__ */ jsx("span", {
2929
+ className: "wwc:flex wwc:h-5 wwc:w-5 wwc:items-center wwc:justify-center wwc:overflow-hidden wwc:rounded wwc:bg-white",
2930
+ children: /* @__PURE__ */ jsx("img", {
2931
+ src: activeOrg.logo,
2932
+ alt: "",
2933
+ className: "wwc:h-full wwc:w-full wwc:object-contain wwc:p-0.5"
2934
+ })
2935
+ }) : /* @__PURE__ */ jsx("span", {
2936
+ className: "wwc:flex wwc:h-5 wwc:w-5 wwc:items-center wwc:justify-center wwc:rounded wwc:bg-primary/10 wwc:text-[9px] wwc:font-semibold wwc:text-primary",
2937
+ children: orgInitials(activeOrg.name)
2938
+ }),
2939
+ onOrgChange: (name) => {
2940
+ const next = orgs.find((o) => o.name === name);
2941
+ if (next) setActiveOrgId(next.id);
2942
+ },
2943
+ onOrgViewAll: () => setShowOrgs(true),
2944
+ onNavigate: (label) => {
2945
+ const item = NAV_ITEMS.find((i) => i.label === label);
2946
+ if (item) goToTab(item.id);
2947
+ }
2948
+ }),
2949
+ /* @__PURE__ */ jsxs("div", {
2950
+ className: "wwc:relative wwc:flex wwc:min-w-0 wwc:flex-1 wwc:flex-col",
2951
+ children: [/* @__PURE__ */ jsx(CoreAppTopBar, {
2952
+ activeLabel: topBarLabel,
2953
+ showProjectSwitcher: false
2954
+ }), /* @__PURE__ */ jsxs("main", {
2955
+ className: "wwc:relative wwc:flex wwc:min-h-0 wwc:flex-1 wwc:flex-col wwc:overflow-auto",
2956
+ children: [/* @__PURE__ */ jsxs("div", {
2957
+ className: "wwc:mx-auto wwc:w-full wwc:max-w-[1200px] wwc:flex-1 wwc:space-y-4 wwc:p-6",
2958
+ children: [
2959
+ showTabHeader && /* @__PURE__ */ jsxs("div", {
2960
+ className: "wwc:flex wwc:items-start wwc:justify-between wwc:gap-4",
2961
+ children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h1", {
2962
+ className: "wwc:text-2xl wwc:font-bold wwc:tracking-tight",
2963
+ children: activeItem.label
2964
+ }), /* @__PURE__ */ jsxs("p", {
2965
+ className: "wwc:text-sm wwc:text-muted-foreground",
2966
+ children: [
2967
+ active === "projects" && "Every project in the organization and its status.",
2968
+ active === "permissions" && "Roles and what each one is allowed to do.",
2969
+ active === "users" && "People with access, their role, and status."
2970
+ ]
2971
+ })] }), /* @__PURE__ */ jsxs(Button, {
2972
+ size: "sm",
2973
+ onClick: addRecord,
2974
+ children: [/* @__PURE__ */ jsx(Plus, { className: "wwc:h-4 wwc:w-4" }), ADD_LABEL[active]]
2975
+ })]
2976
+ }),
2977
+ active === "home" && /* @__PURE__ */ jsx(HomeView, {
2978
+ org: activeOrg,
2979
+ onGoProjects: () => goToTab("projects"),
2980
+ onGoUsers: () => goToTab("users"),
2981
+ onSaveOrg: saveOrg
2982
+ }),
2983
+ active === "projects" && (openEditor?.surface === "projects" ? /* @__PURE__ */ jsx(ProjectForm, {
2984
+ mode: openEditor.mode,
2985
+ project: openEditor.project,
2986
+ draft: fields,
2987
+ onField: setField,
2988
+ errors,
2989
+ modules,
2990
+ onToggleModule: toggleModule,
2991
+ onBack: closeEditor
2992
+ }) : /* @__PURE__ */ jsx(ProjectsView, { onOpen: openEditProject })),
2993
+ active === "permissions" && (openEditor?.surface === "permissions" ? /* @__PURE__ */ jsx(RoleForm, {
2994
+ mode: openEditor.mode,
2995
+ role: openEditor.role,
2996
+ name: roleName,
2997
+ onName: onRoleName,
2998
+ nameError: !!errors.name,
2999
+ perms,
3000
+ onPermissionsChange: updatePermissions,
3001
+ onBack: closeEditor
3002
+ }) : /* @__PURE__ */ jsx(PermissionsView, { onOpen: openEditRole })),
3003
+ active === "users" && (openEditor?.surface === "users" ? /* @__PURE__ */ jsx(UserForm, {
3004
+ mode: openEditor.mode,
3005
+ user: openEditor.user,
3006
+ draft: userFields,
3007
+ onField: setUserField,
3008
+ errors,
3009
+ onBack: closeEditor
3010
+ }) : /* @__PURE__ */ jsx(UsersView, { onOpen: openEditUser }))
3011
+ ]
3012
+ }), showSaveBar && /* @__PURE__ */ jsxs(FormActionBar, {
3013
+ status: openEditor.mode === "create" ? `New ${entity} — not saved yet` : /* @__PURE__ */ jsxs(Fragment$1, { children: [
3014
+ /* @__PURE__ */ jsx("span", {
3015
+ className: "wwc:font-medium wwc:text-foreground",
3016
+ children: changeCount
3017
+ }),
3018
+ " unsaved change",
3019
+ changeCount === 1 ? "" : "s"
3020
+ ] }),
3021
+ children: [
3022
+ /* @__PURE__ */ jsx(Button, {
3023
+ variant: "ghost",
3024
+ size: "sm",
3025
+ onClick: discard,
3026
+ children: "Discard"
3027
+ }),
3028
+ openEditor.mode === "create" && /* @__PURE__ */ jsx(Button, {
3029
+ variant: "outline",
3030
+ size: "sm",
3031
+ onClick: saveDraft,
3032
+ children: "Save as draft"
3033
+ }),
3034
+ /* @__PURE__ */ jsxs(Button, {
3035
+ size: "sm",
3036
+ onClick: save,
3037
+ disabled: openEditor.mode === "edit" && changeCount === 0,
3038
+ children: [/* @__PURE__ */ jsx(Save, { className: "wwc:h-4 wwc:w-4" }), openEditor.mode === "create" ? `Save ${entity}` : "Save changes"]
3039
+ })
3040
+ ]
3041
+ })]
3042
+ })]
3043
+ }),
3044
+ /* @__PURE__ */ jsx(ConfirmDialog, {
3045
+ open: roleEditConfirm,
3046
+ title: "Save role changes?",
3047
+ description: "Updating this role affects all users assigned to it. Do you want to proceed?",
3048
+ confirmLabel: "Save changes",
3049
+ onOpenChange: (o) => !o && setRoleEditConfirm(false),
3050
+ onConfirm: commitRoleEdit
3051
+ }),
3052
+ /* @__PURE__ */ jsx(ConfirmDialog, {
3053
+ open: userSaveConfirm,
3054
+ title: "Save changes?",
3055
+ description: /* @__PURE__ */ jsxs(Fragment$1, { children: [
3056
+ "Removing project access will unlink",
3057
+ " ",
3058
+ /* @__PURE__ */ jsx("span", {
3059
+ className: "wwc:font-medium wwc:text-foreground",
3060
+ children: userFields.linkedPeople[0] ?? "the linked person"
3061
+ }),
3062
+ " ",
3063
+ "from this user. Do you want to proceed?"
3064
+ ] }),
3065
+ confirmLabel: "Save changes",
3066
+ onOpenChange: (o) => !o && setUserSaveConfirm(false),
3067
+ onConfirm: commitUserEdit
3068
+ }),
3069
+ ownToaster && /* @__PURE__ */ jsx(Toaster, { position: "top-right" })
3070
+ ]
3071
+ });
3072
+ }
3073
+ //#endregion
3074
+ export { AdminPanel };
3075
+
3076
+ //# sourceMappingURL=core-admin-panel.mjs.map