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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1671) hide show
  1. package/bin/intent.js +20 -0
  2. package/dist/accordion.d.mts +11 -0
  3. package/dist/accordion.d.mts.map +1 -0
  4. package/dist/accordion.mjs +42 -0
  5. package/dist/accordion.mjs.map +1 -0
  6. package/dist/activity-log.d.mts +29 -0
  7. package/dist/activity-log.d.mts.map +1 -0
  8. package/dist/activity-log.mjs +60 -0
  9. package/dist/activity-log.mjs.map +1 -0
  10. package/dist/activity-sheet.d.mts +18 -0
  11. package/dist/activity-sheet.d.mts.map +1 -0
  12. package/dist/activity-sheet.mjs +167 -0
  13. package/dist/activity-sheet.mjs.map +1 -0
  14. package/dist/add-clinic-location-dialog.d.mts +21 -0
  15. package/dist/add-clinic-location-dialog.d.mts.map +1 -0
  16. package/dist/add-clinic-location-dialog.mjs +96 -0
  17. package/dist/add-clinic-location-dialog.mjs.map +1 -0
  18. package/dist/add-clinic-visit-dialog.d.mts +51 -0
  19. package/dist/add-clinic-visit-dialog.d.mts.map +1 -0
  20. package/dist/add-clinic-visit-dialog.mjs +307 -0
  21. package/dist/add-clinic-visit-dialog.mjs.map +1 -0
  22. package/dist/add-observation-dialog.d.mts +36 -0
  23. package/dist/add-observation-dialog.d.mts.map +1 -0
  24. package/dist/add-observation-dialog.mjs +269 -0
  25. package/dist/add-observation-dialog.mjs.map +1 -0
  26. package/dist/alert-dialog.d.mts +24 -0
  27. package/dist/alert-dialog.d.mts.map +1 -0
  28. package/dist/alert-dialog.mjs +62 -0
  29. package/dist/alert-dialog.mjs.map +1 -0
  30. package/dist/alert.d.mts +12 -0
  31. package/dist/alert.d.mts.map +1 -0
  32. package/dist/alert.mjs +36 -0
  33. package/dist/alert.mjs.map +1 -0
  34. package/dist/app-card.d.mts +21 -0
  35. package/dist/app-card.d.mts.map +1 -0
  36. package/dist/app-card.mjs +49 -0
  37. package/dist/app-card.mjs.map +1 -0
  38. package/dist/app-shell.d.mts +39 -0
  39. package/dist/app-shell.d.mts.map +1 -0
  40. package/dist/app-shell.mjs +79 -0
  41. package/dist/app-shell.mjs.map +1 -0
  42. package/dist/aspect-ratio.d.mts +8 -0
  43. package/dist/aspect-ratio.d.mts.map +1 -0
  44. package/dist/aspect-ratio.mjs +14 -0
  45. package/dist/aspect-ratio.mjs.map +1 -0
  46. package/dist/asset-list-item.d.mts +36 -0
  47. package/dist/asset-list-item.d.mts.map +1 -0
  48. package/dist/asset-list-item.mjs +51 -0
  49. package/dist/asset-list-item.mjs.map +1 -0
  50. package/dist/assign-doctor-dialog.d.mts +28 -0
  51. package/dist/assign-doctor-dialog.d.mts.map +1 -0
  52. package/dist/assign-doctor-dialog.mjs +194 -0
  53. package/dist/assign-doctor-dialog.mjs.map +1 -0
  54. package/dist/attention-list.d.mts +29 -0
  55. package/dist/attention-list.d.mts.map +1 -0
  56. package/dist/attention-list.mjs +82 -0
  57. package/dist/attention-list.mjs.map +1 -0
  58. package/dist/avatar-status-dot.d.mts +22 -0
  59. package/dist/avatar-status-dot.d.mts.map +1 -0
  60. package/dist/avatar-status-dot.mjs +72 -0
  61. package/dist/avatar-status-dot.mjs.map +1 -0
  62. package/dist/avatar.d.mts +34 -0
  63. package/dist/avatar.d.mts.map +1 -0
  64. package/dist/avatar.mjs +103 -0
  65. package/dist/avatar.mjs.map +1 -0
  66. package/dist/badge.d.mts +18 -0
  67. package/dist/badge.d.mts.map +1 -0
  68. package/dist/badge.mjs +39 -0
  69. package/dist/badge.mjs.map +1 -0
  70. package/dist/banner.d.mts +18 -0
  71. package/dist/banner.d.mts.map +1 -0
  72. package/dist/banner.mjs +74 -0
  73. package/dist/banner.mjs.map +1 -0
  74. package/dist/blockquote.d.mts +13 -0
  75. package/dist/blockquote.d.mts.map +1 -0
  76. package/dist/blockquote.mjs +22 -0
  77. package/dist/blockquote.mjs.map +1 -0
  78. package/dist/blueprint-segment.d.mts +33 -0
  79. package/dist/blueprint-segment.d.mts.map +1 -0
  80. package/dist/blueprint-segment.mjs +59 -0
  81. package/dist/blueprint-segment.mjs.map +1 -0
  82. package/dist/bottom-sheet-switcher.d.mts +32 -0
  83. package/dist/bottom-sheet-switcher.d.mts.map +1 -0
  84. package/dist/bottom-sheet-switcher.mjs +40 -0
  85. package/dist/bottom-sheet-switcher.mjs.map +1 -0
  86. package/dist/bottom-sheet.d.mts +23 -0
  87. package/dist/bottom-sheet.d.mts.map +1 -0
  88. package/dist/bottom-sheet.mjs +91 -0
  89. package/dist/bottom-sheet.mjs.map +1 -0
  90. package/dist/breadcrumb.d.mts +39 -0
  91. package/dist/breadcrumb.d.mts.map +1 -0
  92. package/dist/breadcrumb.mjs +95 -0
  93. package/dist/breadcrumb.mjs.map +1 -0
  94. package/dist/breadcrumbs.d.mts +2 -0
  95. package/dist/breadcrumbs.mjs +2 -0
  96. package/dist/browser-tabs.d.mts +40 -0
  97. package/dist/browser-tabs.d.mts.map +1 -0
  98. package/dist/browser-tabs.mjs +127 -0
  99. package/dist/browser-tabs.mjs.map +1 -0
  100. package/dist/building-model-placeholder.d.mts +46 -0
  101. package/dist/building-model-placeholder.d.mts.map +1 -0
  102. package/dist/building-model-placeholder.mjs +175 -0
  103. package/dist/building-model-placeholder.mjs.map +1 -0
  104. package/dist/building-progress.d.mts +32 -0
  105. package/dist/building-progress.d.mts.map +1 -0
  106. package/dist/building-progress.mjs +74 -0
  107. package/dist/building-progress.mjs.map +1 -0
  108. package/dist/building-viewer.d.mts +91 -0
  109. package/dist/building-viewer.d.mts.map +1 -0
  110. package/dist/building-viewer.mjs +567 -0
  111. package/dist/building-viewer.mjs.map +1 -0
  112. package/dist/button-group.d.mts +8 -0
  113. package/dist/button-group.d.mts.map +1 -0
  114. package/dist/button-group.mjs +21 -0
  115. package/dist/button-group.mjs.map +1 -0
  116. package/dist/button.d.mts +21 -0
  117. package/dist/button.d.mts.map +1 -0
  118. package/dist/button.mjs +79 -0
  119. package/dist/button.mjs.map +1 -0
  120. package/dist/calendar-view.d.mts +47 -0
  121. package/dist/calendar-view.d.mts.map +1 -0
  122. package/dist/calendar-view.mjs +165 -0
  123. package/dist/calendar-view.mjs.map +1 -0
  124. package/dist/calendar.d.mts +15 -0
  125. package/dist/calendar.d.mts.map +1 -0
  126. package/dist/calendar.mjs +94 -0
  127. package/dist/calendar.mjs.map +1 -0
  128. package/dist/camera-detail-panel.d.mts +44 -0
  129. package/dist/camera-detail-panel.d.mts.map +1 -0
  130. package/dist/camera-detail-panel.mjs +105 -0
  131. package/dist/camera-detail-panel.mjs.map +1 -0
  132. package/dist/canvas-file-picker.d.mts +28 -0
  133. package/dist/canvas-file-picker.d.mts.map +1 -0
  134. package/dist/canvas-file-picker.mjs +90 -0
  135. package/dist/canvas-file-picker.mjs.map +1 -0
  136. package/dist/canvas-header.d.mts +28 -0
  137. package/dist/canvas-header.d.mts.map +1 -0
  138. package/dist/canvas-header.mjs +42 -0
  139. package/dist/canvas-header.mjs.map +1 -0
  140. package/dist/canvas-navigator.d.mts +87 -0
  141. package/dist/canvas-navigator.d.mts.map +1 -0
  142. package/dist/canvas-navigator.mjs +426 -0
  143. package/dist/canvas-navigator.mjs.map +1 -0
  144. package/dist/canvas-toolbar.d.mts +37 -0
  145. package/dist/canvas-toolbar.d.mts.map +1 -0
  146. package/dist/canvas-toolbar.mjs +65 -0
  147. package/dist/canvas-toolbar.mjs.map +1 -0
  148. package/dist/capture-route-minimap.d.mts +40 -0
  149. package/dist/capture-route-minimap.d.mts.map +1 -0
  150. package/dist/capture-route-minimap.mjs +438 -0
  151. package/dist/capture-route-minimap.mjs.map +1 -0
  152. package/dist/card.d.mts +17 -0
  153. package/dist/card.d.mts.map +1 -0
  154. package/dist/card.mjs +63 -0
  155. package/dist/card.mjs.map +1 -0
  156. package/dist/carousel.d.mts +23 -0
  157. package/dist/carousel.d.mts.map +1 -0
  158. package/dist/carousel.mjs +141 -0
  159. package/dist/carousel.mjs.map +1 -0
  160. package/dist/catalogue-view-toggle.d.mts +53 -0
  161. package/dist/catalogue-view-toggle.d.mts.map +1 -0
  162. package/dist/catalogue-view-toggle.mjs +54 -0
  163. package/dist/catalogue-view-toggle.mjs.map +1 -0
  164. package/dist/chart.d.mts +91 -0
  165. package/dist/chart.d.mts.map +1 -0
  166. package/dist/chart.mjs +254 -0
  167. package/dist/chart.mjs.map +1 -0
  168. package/dist/chat/core-ai-chat-header.d.mts +95 -0
  169. package/dist/chat/core-ai-chat-header.d.mts.map +1 -0
  170. package/dist/chat/core-ai-chat-header.mjs +237 -0
  171. package/dist/chat/core-ai-chat-header.mjs.map +1 -0
  172. package/dist/chat/core-ai-chat-message.d.mts +18 -0
  173. package/dist/chat/core-ai-chat-message.d.mts.map +1 -0
  174. package/dist/chat/core-ai-chat-message.mjs +82 -0
  175. package/dist/chat/core-ai-chat-message.mjs.map +1 -0
  176. package/dist/chat/core-ai-chat.d.mts +116 -0
  177. package/dist/chat/core-ai-chat.d.mts.map +1 -0
  178. package/dist/chat/core-ai-chat.mjs +325 -0
  179. package/dist/chat/core-ai-chat.mjs.map +1 -0
  180. package/dist/chat/core-chart-renderer.d.mts +10 -0
  181. package/dist/chat/core-chart-renderer.d.mts.map +1 -0
  182. package/dist/chat/core-chart-renderer.mjs +177 -0
  183. package/dist/chat/core-chart-renderer.mjs.map +1 -0
  184. package/dist/chat/core-chat-input.d.mts +9 -0
  185. package/dist/chat/core-chat-input.d.mts.map +1 -0
  186. package/dist/chat/core-chat-input.mjs +66 -0
  187. package/dist/chat/core-chat-input.mjs.map +1 -0
  188. package/dist/chat/core-chat-message.d.mts +11 -0
  189. package/dist/chat/core-chat-message.d.mts.map +1 -0
  190. package/dist/chat/core-chat-message.mjs +101 -0
  191. package/dist/chat/core-chat-message.mjs.map +1 -0
  192. package/dist/chat/core-chat-panel.d.mts +16 -0
  193. package/dist/chat/core-chat-panel.d.mts.map +1 -0
  194. package/dist/chat/core-chat-panel.mjs +139 -0
  195. package/dist/chat/core-chat-panel.mjs.map +1 -0
  196. package/dist/chat/core-chat-widget.d.mts +12 -0
  197. package/dist/chat/core-chat-widget.d.mts.map +1 -0
  198. package/dist/chat/core-chat-widget.mjs +116 -0
  199. package/dist/chat/core-chat-widget.mjs.map +1 -0
  200. package/dist/chat-layout.d.mts +38 -0
  201. package/dist/chat-layout.d.mts.map +1 -0
  202. package/dist/chat-layout.mjs +94 -0
  203. package/dist/chat-layout.mjs.map +1 -0
  204. package/dist/chat-message.d.mts +40 -0
  205. package/dist/chat-message.d.mts.map +1 -0
  206. package/dist/chat-message.mjs +84 -0
  207. package/dist/chat-message.mjs.map +1 -0
  208. package/dist/checkbox.d.mts +8 -0
  209. package/dist/checkbox.d.mts.map +1 -0
  210. package/dist/checkbox.mjs +22 -0
  211. package/dist/checkbox.mjs.map +1 -0
  212. package/dist/chip.d.mts +54 -0
  213. package/dist/chip.d.mts.map +1 -0
  214. package/dist/chip.mjs +142 -0
  215. package/dist/chip.mjs.map +1 -0
  216. package/dist/citation.d.mts +22 -0
  217. package/dist/citation.d.mts.map +1 -0
  218. package/dist/citation.mjs +70 -0
  219. package/dist/citation.mjs.map +1 -0
  220. package/dist/clickable-card.d.mts +28 -0
  221. package/dist/clickable-card.d.mts.map +1 -0
  222. package/dist/clickable-card.mjs +87 -0
  223. package/dist/clickable-card.mjs.map +1 -0
  224. package/dist/code.d.mts +21 -0
  225. package/dist/code.d.mts.map +1 -0
  226. package/dist/code.mjs +48 -0
  227. package/dist/code.mjs.map +1 -0
  228. package/dist/collapsible.d.mts +10 -0
  229. package/dist/collapsible.d.mts.map +1 -0
  230. package/dist/collapsible.mjs +16 -0
  231. package/dist/collapsible.mjs.map +1 -0
  232. package/dist/combobox.d.mts +116 -0
  233. package/dist/combobox.d.mts.map +1 -0
  234. package/dist/combobox.mjs +149 -0
  235. package/dist/combobox.mjs.map +1 -0
  236. package/dist/command-palette.d.mts +43 -0
  237. package/dist/command-palette.d.mts.map +1 -0
  238. package/dist/command-palette.mjs +70 -0
  239. package/dist/command-palette.mjs.map +1 -0
  240. package/dist/command.d.mts +91 -0
  241. package/dist/command.d.mts.map +1 -0
  242. package/dist/command.mjs +82 -0
  243. package/dist/command.mjs.map +1 -0
  244. package/dist/comment-composer.d.mts +29 -0
  245. package/dist/comment-composer.d.mts.map +1 -0
  246. package/dist/comment-composer.mjs +253 -0
  247. package/dist/comment-composer.mjs.map +1 -0
  248. package/dist/comment-thread.d.mts +66 -0
  249. package/dist/comment-thread.d.mts.map +1 -0
  250. package/dist/comment-thread.mjs +180 -0
  251. package/dist/comment-thread.mjs.map +1 -0
  252. package/dist/compare-bars.d.mts +29 -0
  253. package/dist/compare-bars.d.mts.map +1 -0
  254. package/dist/compare-bars.mjs +118 -0
  255. package/dist/compare-bars.mjs.map +1 -0
  256. package/dist/compare-view.d.mts +75 -0
  257. package/dist/compare-view.d.mts.map +1 -0
  258. package/dist/compare-view.mjs +383 -0
  259. package/dist/compare-view.mjs.map +1 -0
  260. package/dist/confirm-dialog.d.mts +37 -0
  261. package/dist/confirm-dialog.d.mts.map +1 -0
  262. package/dist/confirm-dialog.mjs +40 -0
  263. package/dist/confirm-dialog.mjs.map +1 -0
  264. package/dist/context-menu.d.mts +31 -0
  265. package/dist/context-menu.d.mts.map +1 -0
  266. package/dist/context-menu.mjs +84 -0
  267. package/dist/context-menu.mjs.map +1 -0
  268. package/dist/context-toolbar.d.mts +22 -0
  269. package/dist/context-toolbar.d.mts.map +1 -0
  270. package/dist/context-toolbar.mjs +81 -0
  271. package/dist/context-toolbar.mjs.map +1 -0
  272. package/dist/copy-button.d.mts +15 -0
  273. package/dist/copy-button.d.mts.map +1 -0
  274. package/dist/copy-button.mjs +33 -0
  275. package/dist/copy-button.mjs.map +1 -0
  276. package/dist/core-mark.d.mts +25 -0
  277. package/dist/core-mark.d.mts.map +1 -0
  278. package/dist/core-mark.mjs +74 -0
  279. package/dist/core-mark.mjs.map +1 -0
  280. package/dist/data/mock-data.d.mts +9 -0
  281. package/dist/data/mock-data.d.mts.map +1 -0
  282. package/dist/data/mock-data.mjs +159 -0
  283. package/dist/data/mock-data.mjs.map +1 -0
  284. package/dist/data/rnglf-zones.d.mts +17 -0
  285. package/dist/data/rnglf-zones.d.mts.map +1 -0
  286. package/dist/data/rnglf-zones.mjs +1400 -0
  287. package/dist/data/rnglf-zones.mjs.map +1 -0
  288. package/dist/data-table.d.mts +202 -0
  289. package/dist/data-table.d.mts.map +1 -0
  290. package/dist/data-table.mjs +520 -0
  291. package/dist/data-table.mjs.map +1 -0
  292. package/dist/date-picker.d.mts +111 -0
  293. package/dist/date-picker.d.mts.map +1 -0
  294. package/dist/date-picker.mjs +546 -0
  295. package/dist/date-picker.mjs.map +1 -0
  296. package/dist/date-range-input.d.mts +26 -0
  297. package/dist/date-range-input.d.mts.map +1 -0
  298. package/dist/date-range-input.mjs +60 -0
  299. package/dist/date-range-input.mjs.map +1 -0
  300. package/dist/date-time-input.d.mts +27 -0
  301. package/dist/date-time-input.d.mts.map +1 -0
  302. package/dist/date-time-input.mjs +110 -0
  303. package/dist/date-time-input.mjs.map +1 -0
  304. package/dist/detail-panel-shell.d.mts +37 -0
  305. package/dist/detail-panel-shell.d.mts.map +1 -0
  306. package/dist/detail-panel-shell.mjs +86 -0
  307. package/dist/detail-panel-shell.mjs.map +1 -0
  308. package/dist/dialog.d.mts +105 -0
  309. package/dist/dialog.d.mts.map +1 -0
  310. package/dist/dialog.mjs +137 -0
  311. package/dist/dialog.mjs.map +1 -0
  312. package/dist/divider.d.mts +8 -0
  313. package/dist/divider.d.mts.map +1 -0
  314. package/dist/divider.mjs +18 -0
  315. package/dist/divider.mjs.map +1 -0
  316. package/dist/drawer.d.mts +26 -0
  317. package/dist/drawer.d.mts.map +1 -0
  318. package/dist/drawer.mjs +53 -0
  319. package/dist/drawer.mjs.map +1 -0
  320. package/dist/drawing-actions.d.mts +29 -0
  321. package/dist/drawing-actions.d.mts.map +1 -0
  322. package/dist/drawing-actions.mjs +124 -0
  323. package/dist/drawing-actions.mjs.map +1 -0
  324. package/dist/dropdown-menu.d.mts +31 -0
  325. package/dist/dropdown-menu.d.mts.map +1 -0
  326. package/dist/dropdown-menu.mjs +84 -0
  327. package/dist/dropdown-menu.mjs.map +1 -0
  328. package/dist/empty.d.mts +34 -0
  329. package/dist/empty.d.mts.map +1 -0
  330. package/dist/empty.mjs +119 -0
  331. package/dist/empty.mjs.map +1 -0
  332. package/dist/error-page.d.mts +20 -0
  333. package/dist/error-page.d.mts.map +1 -0
  334. package/dist/error-page.mjs +96 -0
  335. package/dist/error-page.mjs.map +1 -0
  336. package/dist/export-dialog.d.mts +58 -0
  337. package/dist/export-dialog.d.mts.map +1 -0
  338. package/dist/export-dialog.mjs +248 -0
  339. package/dist/export-dialog.mjs.map +1 -0
  340. package/dist/field.d.mts +11 -0
  341. package/dist/field.d.mts.map +1 -0
  342. package/dist/field.mjs +34 -0
  343. package/dist/field.mjs.map +1 -0
  344. package/dist/file-input.d.mts +17 -0
  345. package/dist/file-input.d.mts.map +1 -0
  346. package/dist/file-input.mjs +114 -0
  347. package/dist/file-input.mjs.map +1 -0
  348. package/dist/file-system/context.d.mts +28 -0
  349. package/dist/file-system/context.d.mts.map +1 -0
  350. package/dist/file-system/context.mjs +42 -0
  351. package/dist/file-system/context.mjs.map +1 -0
  352. package/dist/file-system/file-system-details.d.mts +12 -0
  353. package/dist/file-system/file-system-details.d.mts.map +1 -0
  354. package/dist/file-system/file-system-details.mjs +166 -0
  355. package/dist/file-system/file-system-details.mjs.map +1 -0
  356. package/dist/file-system/file-system-filters.d.mts +16 -0
  357. package/dist/file-system/file-system-filters.d.mts.map +1 -0
  358. package/dist/file-system/file-system-filters.mjs +205 -0
  359. package/dist/file-system/file-system-filters.mjs.map +1 -0
  360. package/dist/file-system/file-system-new.d.mts +16 -0
  361. package/dist/file-system/file-system-new.d.mts.map +1 -0
  362. package/dist/file-system/file-system-new.mjs +204 -0
  363. package/dist/file-system/file-system-new.mjs.map +1 -0
  364. package/dist/file-system/file-system-path.d.mts +7 -0
  365. package/dist/file-system/file-system-path.d.mts.map +1 -0
  366. package/dist/file-system/file-system-path.mjs +22 -0
  367. package/dist/file-system/file-system-path.mjs.map +1 -0
  368. package/dist/file-system/file-system-project.d.mts +16 -0
  369. package/dist/file-system/file-system-project.d.mts.map +1 -0
  370. package/dist/file-system/file-system-project.mjs +253 -0
  371. package/dist/file-system/file-system-project.mjs.map +1 -0
  372. package/dist/file-system/file-system-table.d.mts +17 -0
  373. package/dist/file-system/file-system-table.d.mts.map +1 -0
  374. package/dist/file-system/file-system-table.mjs +95 -0
  375. package/dist/file-system/file-system-table.mjs.map +1 -0
  376. package/dist/file-system/file-system.d.mts +35 -0
  377. package/dist/file-system/file-system.d.mts.map +1 -0
  378. package/dist/file-system/file-system.mjs +179 -0
  379. package/dist/file-system/file-system.mjs.map +1 -0
  380. package/dist/file-system/index.d.mts +9 -0
  381. package/dist/file-system/index.mjs +9 -0
  382. package/dist/file-system/model.d.mts +156 -0
  383. package/dist/file-system/model.d.mts.map +1 -0
  384. package/dist/file-system/model.mjs +200 -0
  385. package/dist/file-system/model.mjs.map +1 -0
  386. package/dist/filter.d.mts +92 -0
  387. package/dist/filter.d.mts.map +1 -0
  388. package/dist/filter.mjs +267 -0
  389. package/dist/filter.mjs.map +1 -0
  390. package/dist/float-shadow.d.mts +10 -0
  391. package/dist/float-shadow.d.mts.map +1 -0
  392. package/dist/float-shadow.mjs +11 -0
  393. package/dist/float-shadow.mjs.map +1 -0
  394. package/dist/floating-assistant.d.mts +75 -0
  395. package/dist/floating-assistant.d.mts.map +1 -0
  396. package/dist/floating-assistant.mjs +114 -0
  397. package/dist/floating-assistant.mjs.map +1 -0
  398. package/dist/floor-progress-bar.d.mts +17 -0
  399. package/dist/floor-progress-bar.d.mts.map +1 -0
  400. package/dist/floor-progress-bar.mjs +38 -0
  401. package/dist/floor-progress-bar.mjs.map +1 -0
  402. package/dist/fonts/LICENSE.md +41 -0
  403. package/dist/fonts/figtree-italic-300-900-latin-ext.woff2 +0 -0
  404. package/dist/fonts/figtree-italic-300-900-latin.woff2 +0 -0
  405. package/dist/fonts/figtree-normal-300-900-latin-ext.woff2 +0 -0
  406. package/dist/fonts/figtree-normal-300-900-latin.woff2 +0 -0
  407. package/dist/fonts/ibm-plex-mono-italic-400-latin-ext.woff2 +0 -0
  408. package/dist/fonts/ibm-plex-mono-italic-400-latin.woff2 +0 -0
  409. package/dist/fonts/ibm-plex-mono-normal-400-latin-ext.woff2 +0 -0
  410. package/dist/fonts/ibm-plex-mono-normal-400-latin.woff2 +0 -0
  411. package/dist/fonts/ibm-plex-mono-normal-500-latin-ext.woff2 +0 -0
  412. package/dist/fonts/ibm-plex-mono-normal-500-latin.woff2 +0 -0
  413. package/dist/fonts/ibm-plex-mono-normal-600-latin-ext.woff2 +0 -0
  414. package/dist/fonts/ibm-plex-mono-normal-600-latin.woff2 +0 -0
  415. package/dist/fonts/lora-italic-400-700-latin-ext.woff2 +0 -0
  416. package/dist/fonts/lora-italic-400-700-latin.woff2 +0 -0
  417. package/dist/fonts/lora-normal-400-700-latin-ext.woff2 +0 -0
  418. package/dist/fonts/lora-normal-400-700-latin.woff2 +0 -0
  419. package/dist/footprint-viewer.d.mts +88 -0
  420. package/dist/footprint-viewer.d.mts.map +1 -0
  421. package/dist/footprint-viewer.mjs +657 -0
  422. package/dist/footprint-viewer.mjs.map +1 -0
  423. package/dist/form-action-bar.d.mts +32 -0
  424. package/dist/form-action-bar.d.mts.map +1 -0
  425. package/dist/form-action-bar.mjs +42 -0
  426. package/dist/form-action-bar.mjs.map +1 -0
  427. package/dist/form-dialog.d.mts +116 -0
  428. package/dist/form-dialog.d.mts.map +1 -0
  429. package/dist/form-dialog.mjs +149 -0
  430. package/dist/form-dialog.mjs.map +1 -0
  431. package/dist/form-layout.d.mts +33 -0
  432. package/dist/form-layout.d.mts.map +1 -0
  433. package/dist/form-layout.mjs +90 -0
  434. package/dist/form-layout.mjs.map +1 -0
  435. package/dist/form.d.mts +29 -0
  436. package/dist/form.d.mts.map +1 -0
  437. package/dist/form.mjs +93 -0
  438. package/dist/form.mjs.map +1 -0
  439. package/dist/fragment-viewer/cinematic.d.mts +76 -0
  440. package/dist/fragment-viewer/cinematic.d.mts.map +1 -0
  441. package/dist/fragment-viewer/cinematic.mjs +382 -0
  442. package/dist/fragment-viewer/cinematic.mjs.map +1 -0
  443. package/dist/fragment-viewer/context.d.mts +106 -0
  444. package/dist/fragment-viewer/context.d.mts.map +1 -0
  445. package/dist/fragment-viewer/context.mjs +168 -0
  446. package/dist/fragment-viewer/context.mjs.map +1 -0
  447. package/dist/fragment-viewer/runtime.d.mts +288 -0
  448. package/dist/fragment-viewer/runtime.d.mts.map +1 -0
  449. package/dist/fragment-viewer/runtime.mjs +782 -0
  450. package/dist/fragment-viewer/runtime.mjs.map +1 -0
  451. package/dist/fragment-viewer.d.mts +62 -0
  452. package/dist/fragment-viewer.d.mts.map +1 -0
  453. package/dist/fragment-viewer.mjs +144 -0
  454. package/dist/fragment-viewer.mjs.map +1 -0
  455. package/dist/gantt.d.mts +72 -0
  456. package/dist/gantt.d.mts.map +1 -0
  457. package/dist/gantt.mjs +281 -0
  458. package/dist/gantt.mjs.map +1 -0
  459. package/dist/graph-canvas.d.mts +60 -0
  460. package/dist/graph-canvas.d.mts.map +1 -0
  461. package/dist/graph-canvas.mjs +105 -0
  462. package/dist/graph-canvas.mjs.map +1 -0
  463. package/dist/grid.d.mts +16 -0
  464. package/dist/grid.d.mts.map +1 -0
  465. package/dist/grid.mjs +47 -0
  466. package/dist/grid.mjs.map +1 -0
  467. package/dist/heading.d.mts +16 -0
  468. package/dist/heading.d.mts.map +1 -0
  469. package/dist/heading.mjs +43 -0
  470. package/dist/heading.mjs.map +1 -0
  471. package/dist/house-shape.d.mts +22 -0
  472. package/dist/house-shape.d.mts.map +1 -0
  473. package/dist/house-shape.mjs +103 -0
  474. package/dist/house-shape.mjs.map +1 -0
  475. package/dist/hover-card.d.mts +10 -0
  476. package/dist/hover-card.d.mts.map +1 -0
  477. package/dist/hover-card.mjs +22 -0
  478. package/dist/hover-card.mjs.map +1 -0
  479. package/dist/icon-button.d.mts +20 -0
  480. package/dist/icon-button.d.mts.map +1 -0
  481. package/dist/icon-button.mjs +52 -0
  482. package/dist/icon-button.mjs.map +1 -0
  483. package/dist/icon.d.mts +16 -0
  484. package/dist/icon.d.mts.map +1 -0
  485. package/dist/icon.mjs +32 -0
  486. package/dist/icon.mjs.map +1 -0
  487. package/dist/image-zoom.d.mts +23 -0
  488. package/dist/image-zoom.d.mts.map +1 -0
  489. package/dist/image-zoom.mjs +51 -0
  490. package/dist/image-zoom.mjs.map +1 -0
  491. package/dist/index.d.mts +3 -0
  492. package/dist/index.mjs +2 -0
  493. package/dist/inline-comment-composer.d.mts +40 -0
  494. package/dist/inline-comment-composer.d.mts.map +1 -0
  495. package/dist/inline-comment-composer.mjs +174 -0
  496. package/dist/inline-comment-composer.mjs.map +1 -0
  497. package/dist/input-group.d.mts +8 -0
  498. package/dist/input-group.d.mts.map +1 -0
  499. package/dist/input-group.mjs +21 -0
  500. package/dist/input-group.mjs.map +1 -0
  501. package/dist/input-otp.d.mts +40 -0
  502. package/dist/input-otp.d.mts.map +1 -0
  503. package/dist/input-otp.mjs +44 -0
  504. package/dist/input-otp.mjs.map +1 -0
  505. package/dist/input.d.mts +7 -0
  506. package/dist/input.d.mts.map +1 -0
  507. package/dist/input.mjs +18 -0
  508. package/dist/input.mjs.map +1 -0
  509. package/dist/item.d.mts +10 -0
  510. package/dist/item.d.mts.map +1 -0
  511. package/dist/item.mjs +33 -0
  512. package/dist/item.mjs.map +1 -0
  513. package/dist/kbd.d.mts +8 -0
  514. package/dist/kbd.d.mts.map +1 -0
  515. package/dist/kbd.mjs +15 -0
  516. package/dist/kbd.mjs.map +1 -0
  517. package/dist/kiosk-body.d.mts +13 -0
  518. package/dist/kiosk-body.d.mts.map +1 -0
  519. package/dist/kiosk-body.mjs +352 -0
  520. package/dist/kiosk-body.mjs.map +1 -0
  521. package/dist/kpi-bar.d.mts +29 -0
  522. package/dist/kpi-bar.d.mts.map +1 -0
  523. package/dist/kpi-bar.mjs +46 -0
  524. package/dist/kpi-bar.mjs.map +1 -0
  525. package/dist/kpi-summary.d.mts +24 -0
  526. package/dist/kpi-summary.d.mts.map +1 -0
  527. package/dist/kpi-summary.mjs +22 -0
  528. package/dist/kpi-summary.mjs.map +1 -0
  529. package/dist/label.d.mts +19 -0
  530. package/dist/label.d.mts.map +1 -0
  531. package/dist/label.mjs +27 -0
  532. package/dist/label.mjs.map +1 -0
  533. package/dist/legend.d.mts +87 -0
  534. package/dist/legend.d.mts.map +1 -0
  535. package/dist/legend.mjs +210 -0
  536. package/dist/legend.mjs.map +1 -0
  537. package/dist/lightbox.d.mts +28 -0
  538. package/dist/lightbox.d.mts.map +1 -0
  539. package/dist/lightbox.mjs +142 -0
  540. package/dist/lightbox.mjs.map +1 -0
  541. package/dist/link-type-detail.d.mts +73 -0
  542. package/dist/link-type-detail.d.mts.map +1 -0
  543. package/dist/link-type-detail.mjs +628 -0
  544. package/dist/link-type-detail.mjs.map +1 -0
  545. package/dist/link-type-wizard.d.mts +35 -0
  546. package/dist/link-type-wizard.d.mts.map +1 -0
  547. package/dist/link-type-wizard.mjs +303 -0
  548. package/dist/link-type-wizard.mjs.map +1 -0
  549. package/dist/link.d.mts +14 -0
  550. package/dist/link.d.mts.map +1 -0
  551. package/dist/link.mjs +30 -0
  552. package/dist/link.mjs.map +1 -0
  553. package/dist/list.d.mts +19 -0
  554. package/dist/list.d.mts.map +1 -0
  555. package/dist/list.mjs +27 -0
  556. package/dist/list.mjs.map +1 -0
  557. package/dist/map-compare-layout.d.mts +53 -0
  558. package/dist/map-compare-layout.d.mts.map +1 -0
  559. package/dist/map-compare-layout.mjs +164 -0
  560. package/dist/map-compare-layout.mjs.map +1 -0
  561. package/dist/map-compass.d.mts +22 -0
  562. package/dist/map-compass.d.mts.map +1 -0
  563. package/dist/map-compass.mjs +56 -0
  564. package/dist/map-compass.mjs.map +1 -0
  565. package/dist/map-control-panel.d.mts +92 -0
  566. package/dist/map-control-panel.d.mts.map +1 -0
  567. package/dist/map-control-panel.mjs +153 -0
  568. package/dist/map-control-panel.mjs.map +1 -0
  569. package/dist/map-controls.d.mts +24 -0
  570. package/dist/map-controls.d.mts.map +1 -0
  571. package/dist/map-controls.mjs +322 -0
  572. package/dist/map-controls.mjs.map +1 -0
  573. package/dist/map-hover-card.d.mts +28 -0
  574. package/dist/map-hover-card.d.mts.map +1 -0
  575. package/dist/map-hover-card.mjs +56 -0
  576. package/dist/map-hover-card.mjs.map +1 -0
  577. package/dist/map-legend.d.mts +41 -0
  578. package/dist/map-legend.d.mts.map +1 -0
  579. package/dist/map-legend.mjs +97 -0
  580. package/dist/map-legend.mjs.map +1 -0
  581. package/dist/map-minimap.d.mts +44 -0
  582. package/dist/map-minimap.d.mts.map +1 -0
  583. package/dist/map-minimap.mjs +108 -0
  584. package/dist/map-minimap.mjs.map +1 -0
  585. package/dist/map-toolbar.d.mts +60 -0
  586. package/dist/map-toolbar.d.mts.map +1 -0
  587. package/dist/map-toolbar.mjs +195 -0
  588. package/dist/map-toolbar.mjs.map +1 -0
  589. package/dist/map-transition.d.mts +51 -0
  590. package/dist/map-transition.d.mts.map +1 -0
  591. package/dist/map-transition.mjs +59 -0
  592. package/dist/map-transition.mjs.map +1 -0
  593. package/dist/map.d.mts +14 -0
  594. package/dist/map.d.mts.map +1 -0
  595. package/dist/map.mjs +47 -0
  596. package/dist/map.mjs.map +1 -0
  597. package/dist/mapbox-token.d.mts +12 -0
  598. package/dist/mapbox-token.d.mts.map +1 -0
  599. package/dist/mapbox-token.mjs +15 -0
  600. package/dist/mapbox-token.mjs.map +1 -0
  601. package/dist/markdown.d.mts +18 -0
  602. package/dist/markdown.d.mts.map +1 -0
  603. package/dist/markdown.mjs +41 -0
  604. package/dist/markdown.mjs.map +1 -0
  605. package/dist/mega-menu.d.mts +36 -0
  606. package/dist/mega-menu.d.mts.map +1 -0
  607. package/dist/mega-menu.mjs +89 -0
  608. package/dist/mega-menu.mjs.map +1 -0
  609. package/dist/menubar.d.mts +32 -0
  610. package/dist/menubar.d.mts.map +1 -0
  611. package/dist/menubar.mjs +96 -0
  612. package/dist/menubar.mjs.map +1 -0
  613. package/dist/metadata-list.d.mts +2 -0
  614. package/dist/metadata-list.mjs +2 -0
  615. package/dist/metric-card.d.mts +28 -0
  616. package/dist/metric-card.d.mts.map +1 -0
  617. package/dist/metric-card.mjs +55 -0
  618. package/dist/metric-card.mjs.map +1 -0
  619. package/dist/milestone-table.d.mts +35 -0
  620. package/dist/milestone-table.d.mts.map +1 -0
  621. package/dist/milestone-table.mjs +84 -0
  622. package/dist/milestone-table.mjs.map +1 -0
  623. package/dist/minimap.d.mts +23 -0
  624. package/dist/minimap.d.mts.map +1 -0
  625. package/dist/minimap.mjs +64 -0
  626. package/dist/minimap.mjs.map +1 -0
  627. package/dist/more-menu.d.mts +27 -0
  628. package/dist/more-menu.d.mts.map +1 -0
  629. package/dist/more-menu.mjs +34 -0
  630. package/dist/more-menu.mjs.map +1 -0
  631. package/dist/multi-select.d.mts +38 -0
  632. package/dist/multi-select.d.mts.map +1 -0
  633. package/dist/multi-select.mjs +106 -0
  634. package/dist/multi-select.mjs.map +1 -0
  635. package/dist/navigation/core-app-sidebar.d.mts +461 -0
  636. package/dist/navigation/core-app-sidebar.d.mts.map +1 -0
  637. package/dist/navigation/core-app-sidebar.mjs +1288 -0
  638. package/dist/navigation/core-app-sidebar.mjs.map +1 -0
  639. package/dist/navigation/core-app-top-bar.d.mts +116 -0
  640. package/dist/navigation/core-app-top-bar.d.mts.map +1 -0
  641. package/dist/navigation/core-app-top-bar.mjs +224 -0
  642. package/dist/navigation/core-app-top-bar.mjs.map +1 -0
  643. package/dist/navigation/core-context-tabs.d.mts +12 -0
  644. package/dist/navigation/core-context-tabs.d.mts.map +1 -0
  645. package/dist/navigation/core-context-tabs.mjs +32 -0
  646. package/dist/navigation/core-context-tabs.mjs.map +1 -0
  647. package/dist/navigation/core-dashboard-header.d.mts +20 -0
  648. package/dist/navigation/core-dashboard-header.d.mts.map +1 -0
  649. package/dist/navigation/core-dashboard-header.mjs +227 -0
  650. package/dist/navigation/core-dashboard-header.mjs.map +1 -0
  651. package/dist/navigation/core-filter-strip.d.mts +12 -0
  652. package/dist/navigation/core-filter-strip.d.mts.map +1 -0
  653. package/dist/navigation/core-filter-strip.mjs +289 -0
  654. package/dist/navigation/core-filter-strip.mjs.map +1 -0
  655. package/dist/navigation/core-org-project-switcher.d.mts +12 -0
  656. package/dist/navigation/core-org-project-switcher.d.mts.map +1 -0
  657. package/dist/navigation/core-org-project-switcher.mjs +201 -0
  658. package/dist/navigation/core-org-project-switcher.mjs.map +1 -0
  659. package/dist/navigation/switcher.d.mts +38 -0
  660. package/dist/navigation/switcher.d.mts.map +1 -0
  661. package/dist/navigation/switcher.mjs +144 -0
  662. package/dist/navigation/switcher.mjs.map +1 -0
  663. package/dist/navigation-menu.d.mts +16 -0
  664. package/dist/navigation-menu.d.mts.map +1 -0
  665. package/dist/navigation-menu.mjs +64 -0
  666. package/dist/navigation-menu.mjs.map +1 -0
  667. package/dist/neighborhood-scene.d.mts +21 -0
  668. package/dist/neighborhood-scene.d.mts.map +1 -0
  669. package/dist/neighborhood-scene.mjs +285 -0
  670. package/dist/neighborhood-scene.mjs.map +1 -0
  671. package/dist/node-graph.d.mts +154 -0
  672. package/dist/node-graph.d.mts.map +1 -0
  673. package/dist/node-graph.mjs +349 -0
  674. package/dist/node-graph.mjs.map +1 -0
  675. package/dist/notification-center.d.mts +40 -0
  676. package/dist/notification-center.d.mts.map +1 -0
  677. package/dist/notification-center.mjs +224 -0
  678. package/dist/notification-center.mjs.map +1 -0
  679. package/dist/number-input.d.mts +23 -0
  680. package/dist/number-input.d.mts.map +1 -0
  681. package/dist/number-input.mjs +79 -0
  682. package/dist/number-input.mjs.map +1 -0
  683. package/dist/object-drawing-toolbar.d.mts +38 -0
  684. package/dist/object-drawing-toolbar.d.mts.map +1 -0
  685. package/dist/object-drawing-toolbar.mjs +172 -0
  686. package/dist/object-drawing-toolbar.mjs.map +1 -0
  687. package/dist/object-type-detail.d.mts +27 -0
  688. package/dist/object-type-detail.d.mts.map +1 -0
  689. package/dist/object-type-detail.mjs +1389 -0
  690. package/dist/object-type-detail.mjs.map +1 -0
  691. package/dist/object-type-wizard.d.mts +78 -0
  692. package/dist/object-type-wizard.d.mts.map +1 -0
  693. package/dist/object-type-wizard.mjs +885 -0
  694. package/dist/object-type-wizard.mjs.map +1 -0
  695. package/dist/observation-detail-panel.d.mts +89 -0
  696. package/dist/observation-detail-panel.d.mts.map +1 -0
  697. package/dist/observation-detail-panel.mjs +168 -0
  698. package/dist/observation-detail-panel.mjs.map +1 -0
  699. package/dist/observations-map.d.mts +288 -0
  700. package/dist/observations-map.d.mts.map +1 -0
  701. package/dist/observations-map.mjs +1087 -0
  702. package/dist/observations-map.mjs.map +1 -0
  703. package/dist/operations-drawer.d.mts +51 -0
  704. package/dist/operations-drawer.d.mts.map +1 -0
  705. package/dist/operations-drawer.mjs +193 -0
  706. package/dist/operations-drawer.mjs.map +1 -0
  707. package/dist/outline.d.mts +27 -0
  708. package/dist/outline.d.mts.map +1 -0
  709. package/dist/outline.mjs +47 -0
  710. package/dist/outline.mjs.map +1 -0
  711. package/dist/overflow-list.d.mts +23 -0
  712. package/dist/overflow-list.d.mts.map +1 -0
  713. package/dist/overflow-list.mjs +38 -0
  714. package/dist/overflow-list.mjs.map +1 -0
  715. package/dist/overlay.d.mts +17 -0
  716. package/dist/overlay.d.mts.map +1 -0
  717. package/dist/overlay.mjs +32 -0
  718. package/dist/overlay.mjs.map +1 -0
  719. package/dist/page-content-header.d.mts +43 -0
  720. package/dist/page-content-header.d.mts.map +1 -0
  721. package/dist/page-content-header.mjs +224 -0
  722. package/dist/page-content-header.mjs.map +1 -0
  723. package/dist/pages/almanar-blocks-data.d.mts +4 -0
  724. package/dist/pages/almanar-blocks-data.d.mts.map +1 -0
  725. package/dist/pages/almanar-blocks-data.mjs +691 -0
  726. package/dist/pages/almanar-blocks-data.mjs.map +1 -0
  727. package/dist/pages/almanar-hierarchy-data.d.mts +9 -0
  728. package/dist/pages/almanar-hierarchy-data.d.mts.map +1 -0
  729. package/dist/pages/almanar-hierarchy-data.mjs +816 -0
  730. package/dist/pages/almanar-hierarchy-data.mjs.map +1 -0
  731. package/dist/pages/almanar-villa-taxonomy.d.mts +9 -0
  732. package/dist/pages/almanar-villa-taxonomy.d.mts.map +1 -0
  733. package/dist/pages/almanar-villa-taxonomy.mjs +1569 -0
  734. package/dist/pages/almanar-villa-taxonomy.mjs.map +1 -0
  735. package/dist/pages/app-marketplace-shared.d.mts +146 -0
  736. package/dist/pages/app-marketplace-shared.d.mts.map +1 -0
  737. package/dist/pages/app-marketplace-shared.mjs +739 -0
  738. package/dist/pages/app-marketplace-shared.mjs.map +1 -0
  739. package/dist/pages/capture-ui-enhanced.d.mts +125 -0
  740. package/dist/pages/capture-ui-enhanced.d.mts.map +1 -0
  741. package/dist/pages/capture-ui-enhanced.mjs +915 -0
  742. package/dist/pages/capture-ui-enhanced.mjs.map +1 -0
  743. package/dist/pages/core-admin-panel.d.mts +10 -0
  744. package/dist/pages/core-admin-panel.d.mts.map +1 -0
  745. package/dist/pages/core-admin-panel.mjs +3076 -0
  746. package/dist/pages/core-admin-panel.mjs.map +1 -0
  747. package/dist/pages/core-analytics-overview.d.mts +10 -0
  748. package/dist/pages/core-analytics-overview.d.mts.map +1 -0
  749. package/dist/pages/core-analytics-overview.mjs +904 -0
  750. package/dist/pages/core-analytics-overview.mjs.map +1 -0
  751. package/dist/pages/core-app-installer.d.mts +17 -0
  752. package/dist/pages/core-app-installer.d.mts.map +1 -0
  753. package/dist/pages/core-app-installer.mjs +94 -0
  754. package/dist/pages/core-app-installer.mjs.map +1 -0
  755. package/dist/pages/core-blueprint-viewer-3.d.mts +25 -0
  756. package/dist/pages/core-blueprint-viewer-3.d.mts.map +1 -0
  757. package/dist/pages/core-blueprint-viewer-3.mjs +688 -0
  758. package/dist/pages/core-blueprint-viewer-3.mjs.map +1 -0
  759. package/dist/pages/core-blueprint-viewer.d.mts +14 -0
  760. package/dist/pages/core-blueprint-viewer.d.mts.map +1 -0
  761. package/dist/pages/core-blueprint-viewer.mjs +665 -0
  762. package/dist/pages/core-blueprint-viewer.mjs.map +1 -0
  763. package/dist/pages/core-building-viewer-capture.d.mts +18 -0
  764. package/dist/pages/core-building-viewer-capture.d.mts.map +1 -0
  765. package/dist/pages/core-building-viewer-capture.mjs +268 -0
  766. package/dist/pages/core-building-viewer-capture.mjs.map +1 -0
  767. package/dist/pages/core-building-viewer.d.mts +20 -0
  768. package/dist/pages/core-building-viewer.d.mts.map +1 -0
  769. package/dist/pages/core-building-viewer.mjs +299 -0
  770. package/dist/pages/core-building-viewer.mjs.map +1 -0
  771. package/dist/pages/core-clinic.d.mts +14 -0
  772. package/dist/pages/core-clinic.d.mts.map +1 -0
  773. package/dist/pages/core-clinic.mjs +2175 -0
  774. package/dist/pages/core-clinic.mjs.map +1 -0
  775. package/dist/pages/core-content-area.d.mts +15 -0
  776. package/dist/pages/core-content-area.d.mts.map +1 -0
  777. package/dist/pages/core-content-area.mjs +192 -0
  778. package/dist/pages/core-content-area.mjs.map +1 -0
  779. package/dist/pages/core-core-connect-v3.d.mts +16 -0
  780. package/dist/pages/core-core-connect-v3.d.mts.map +1 -0
  781. package/dist/pages/core-core-connect-v3.mjs +30 -0
  782. package/dist/pages/core-core-connect-v3.mjs.map +1 -0
  783. package/dist/pages/core-core-connect.d.mts +15 -0
  784. package/dist/pages/core-core-connect.d.mts.map +1 -0
  785. package/dist/pages/core-core-connect.mjs +21 -0
  786. package/dist/pages/core-core-connect.mjs.map +1 -0
  787. package/dist/pages/core-design-canvas.d.mts +10 -0
  788. package/dist/pages/core-design-canvas.d.mts.map +1 -0
  789. package/dist/pages/core-design-canvas.mjs +322 -0
  790. package/dist/pages/core-design-canvas.mjs.map +1 -0
  791. package/dist/pages/core-login-page.d.mts +8 -0
  792. package/dist/pages/core-login-page.d.mts.map +1 -0
  793. package/dist/pages/core-login-page.mjs +141 -0
  794. package/dist/pages/core-login-page.mjs.map +1 -0
  795. package/dist/pages/core-map-compare-layout.d.mts +20 -0
  796. package/dist/pages/core-map-compare-layout.d.mts.map +1 -0
  797. package/dist/pages/core-map-compare-layout.mjs +187 -0
  798. package/dist/pages/core-map-compare-layout.mjs.map +1 -0
  799. package/dist/pages/core-observations-map-view.d.mts +19 -0
  800. package/dist/pages/core-observations-map-view.d.mts.map +1 -0
  801. package/dist/pages/core-observations-map-view.mjs +1273 -0
  802. package/dist/pages/core-observations-map-view.mjs.map +1 -0
  803. package/dist/pages/core-org-ai-report.d.mts +9 -0
  804. package/dist/pages/core-org-ai-report.d.mts.map +1 -0
  805. package/dist/pages/core-org-ai-report.mjs +474 -0
  806. package/dist/pages/core-org-ai-report.mjs.map +1 -0
  807. package/dist/pages/core-org-overview.d.mts +11 -0
  808. package/dist/pages/core-org-overview.d.mts.map +1 -0
  809. package/dist/pages/core-org-overview.mjs +718 -0
  810. package/dist/pages/core-org-overview.mjs.map +1 -0
  811. package/dist/pages/core-org-performance.d.mts +11 -0
  812. package/dist/pages/core-org-performance.d.mts.map +1 -0
  813. package/dist/pages/core-org-performance.mjs +1398 -0
  814. package/dist/pages/core-org-performance.mjs.map +1 -0
  815. package/dist/pages/core-org-reality-capture.d.mts +10 -0
  816. package/dist/pages/core-org-reality-capture.d.mts.map +1 -0
  817. package/dist/pages/core-org-reality-capture.mjs +1962 -0
  818. package/dist/pages/core-org-reality-capture.mjs.map +1 -0
  819. package/dist/pages/core-org-workforce-intelligence.d.mts +12 -0
  820. package/dist/pages/core-org-workforce-intelligence.d.mts.map +1 -0
  821. package/dist/pages/core-org-workforce-intelligence.mjs +1215 -0
  822. package/dist/pages/core-org-workforce-intelligence.mjs.map +1 -0
  823. package/dist/pages/core-progress-details.d.mts +10 -0
  824. package/dist/pages/core-progress-details.d.mts.map +1 -0
  825. package/dist/pages/core-progress-details.mjs +758 -0
  826. package/dist/pages/core-progress-details.mjs.map +1 -0
  827. package/dist/pages/core-project-overview.d.mts +9 -0
  828. package/dist/pages/core-project-overview.d.mts.map +1 -0
  829. package/dist/pages/core-project-overview.mjs +246 -0
  830. package/dist/pages/core-project-overview.mjs.map +1 -0
  831. package/dist/pages/core-project-quality-issues.d.mts +9 -0
  832. package/dist/pages/core-project-quality-issues.d.mts.map +1 -0
  833. package/dist/pages/core-project-quality-issues.mjs +508 -0
  834. package/dist/pages/core-project-quality-issues.mjs.map +1 -0
  835. package/dist/pages/core-project-reality-capture.d.mts +9 -0
  836. package/dist/pages/core-project-reality-capture.d.mts.map +1 -0
  837. package/dist/pages/core-project-reality-capture.mjs +496 -0
  838. package/dist/pages/core-project-reality-capture.mjs.map +1 -0
  839. package/dist/pages/core-project-schedule-cost.d.mts +9 -0
  840. package/dist/pages/core-project-schedule-cost.d.mts.map +1 -0
  841. package/dist/pages/core-project-schedule-cost.mjs +548 -0
  842. package/dist/pages/core-project-schedule-cost.mjs.map +1 -0
  843. package/dist/pages/core-project-setup.d.mts +10 -0
  844. package/dist/pages/core-project-setup.d.mts.map +1 -0
  845. package/dist/pages/core-project-setup.mjs +283 -0
  846. package/dist/pages/core-project-setup.mjs.map +1 -0
  847. package/dist/pages/core-project-workforce-safety.d.mts +9 -0
  848. package/dist/pages/core-project-workforce-safety.d.mts.map +1 -0
  849. package/dist/pages/core-project-workforce-safety.mjs +465 -0
  850. package/dist/pages/core-project-workforce-safety.mjs.map +1 -0
  851. package/dist/pages/core-safety-manager.d.mts +14 -0
  852. package/dist/pages/core-safety-manager.d.mts.map +1 -0
  853. package/dist/pages/core-safety-manager.mjs +3081 -0
  854. package/dist/pages/core-safety-manager.mjs.map +1 -0
  855. package/dist/pages/core-site-reality.d.mts +25 -0
  856. package/dist/pages/core-site-reality.d.mts.map +1 -0
  857. package/dist/pages/core-site-reality.mjs +505 -0
  858. package/dist/pages/core-site-reality.mjs.map +1 -0
  859. package/dist/pages/core-task-monitor.d.mts +4 -0
  860. package/dist/pages/core-task-monitor.d.mts.map +1 -0
  861. package/dist/pages/core-task-monitor.mjs +587 -0
  862. package/dist/pages/core-task-monitor.mjs.map +1 -0
  863. package/dist/pages/core-timesheet.d.mts +2 -0
  864. package/dist/pages/core-timesheet.mjs +2 -0
  865. package/dist/pages/core-verifytime-command-center.d.mts +4 -0
  866. package/dist/pages/core-verifytime-command-center.d.mts.map +1 -0
  867. package/dist/pages/core-verifytime-command-center.mjs +1089 -0
  868. package/dist/pages/core-verifytime-command-center.mjs.map +1 -0
  869. package/dist/pages/core-wc3-workspace.d.mts +71 -0
  870. package/dist/pages/core-wc3-workspace.d.mts.map +1 -0
  871. package/dist/pages/core-wc3-workspace.mjs +1015 -0
  872. package/dist/pages/core-wc3-workspace.mjs.map +1 -0
  873. package/dist/pages/core-work-permit.d.mts +14 -0
  874. package/dist/pages/core-work-permit.d.mts.map +1 -0
  875. package/dist/pages/core-work-permit.mjs +281 -0
  876. package/dist/pages/core-work-permit.mjs.map +1 -0
  877. package/dist/pages/core-workforce.d.mts +24 -0
  878. package/dist/pages/core-workforce.d.mts.map +1 -0
  879. package/dist/pages/core-workforce.mjs +1253 -0
  880. package/dist/pages/core-workforce.mjs.map +1 -0
  881. package/dist/pages/org-logos.d.mts +9 -0
  882. package/dist/pages/org-logos.d.mts.map +1 -0
  883. package/dist/pages/org-logos.mjs +11 -0
  884. package/dist/pages/org-logos.mjs.map +1 -0
  885. package/dist/pages/state-machine-fixtures.d.mts +34 -0
  886. package/dist/pages/state-machine-fixtures.d.mts.map +1 -0
  887. package/dist/pages/state-machine-fixtures.mjs +73 -0
  888. package/dist/pages/state-machine-fixtures.mjs.map +1 -0
  889. package/dist/pages/state-machine.d.mts +407 -0
  890. package/dist/pages/state-machine.d.mts.map +1 -0
  891. package/dist/pages/state-machine.mjs +2254 -0
  892. package/dist/pages/state-machine.mjs.map +1 -0
  893. package/dist/pages/typeform/AttachmentInput.d.mts +11 -0
  894. package/dist/pages/typeform/AttachmentInput.d.mts.map +1 -0
  895. package/dist/pages/typeform/AttachmentInput.mjs +59 -0
  896. package/dist/pages/typeform/AttachmentInput.mjs.map +1 -0
  897. package/dist/pages/typeform/BuildMethodScreen.d.mts +10 -0
  898. package/dist/pages/typeform/BuildMethodScreen.d.mts.map +1 -0
  899. package/dist/pages/typeform/BuildMethodScreen.mjs +176 -0
  900. package/dist/pages/typeform/BuildMethodScreen.mjs.map +1 -0
  901. package/dist/pages/typeform/BuilderFlow.d.mts +29 -0
  902. package/dist/pages/typeform/BuilderFlow.d.mts.map +1 -0
  903. package/dist/pages/typeform/BuilderFlow.mjs +111 -0
  904. package/dist/pages/typeform/BuilderFlow.mjs.map +1 -0
  905. package/dist/pages/typeform/BuilderScreen.d.mts +14 -0
  906. package/dist/pages/typeform/BuilderScreen.d.mts.map +1 -0
  907. package/dist/pages/typeform/BuilderScreen.mjs +668 -0
  908. package/dist/pages/typeform/BuilderScreen.mjs.map +1 -0
  909. package/dist/pages/typeform/DataSourceSelect.d.mts +13 -0
  910. package/dist/pages/typeform/DataSourceSelect.d.mts.map +1 -0
  911. package/dist/pages/typeform/DataSourceSelect.mjs +36 -0
  912. package/dist/pages/typeform/DataSourceSelect.mjs.map +1 -0
  913. package/dist/pages/typeform/DerivedCountDisplay.d.mts +10 -0
  914. package/dist/pages/typeform/DerivedCountDisplay.d.mts.map +1 -0
  915. package/dist/pages/typeform/DerivedCountDisplay.mjs +20 -0
  916. package/dist/pages/typeform/DerivedCountDisplay.mjs.map +1 -0
  917. package/dist/pages/typeform/FillerRJSF.d.mts +10 -0
  918. package/dist/pages/typeform/FillerRJSF.d.mts.map +1 -0
  919. package/dist/pages/typeform/FillerRJSF.mjs +314 -0
  920. package/dist/pages/typeform/FillerRJSF.mjs.map +1 -0
  921. package/dist/pages/typeform/FormBuilderWidgetRJSF.d.mts +9 -0
  922. package/dist/pages/typeform/FormBuilderWidgetRJSF.d.mts.map +1 -0
  923. package/dist/pages/typeform/FormBuilderWidgetRJSF.mjs +22 -0
  924. package/dist/pages/typeform/FormBuilderWidgetRJSF.mjs.map +1 -0
  925. package/dist/pages/typeform/PublishScreen.d.mts +18 -0
  926. package/dist/pages/typeform/PublishScreen.d.mts.map +1 -0
  927. package/dist/pages/typeform/PublishScreen.mjs +163 -0
  928. package/dist/pages/typeform/PublishScreen.mjs.map +1 -0
  929. package/dist/pages/typeform/QuestionInspector.d.mts +7 -0
  930. package/dist/pages/typeform/QuestionInspector.d.mts.map +1 -0
  931. package/dist/pages/typeform/QuestionInspector.mjs +749 -0
  932. package/dist/pages/typeform/QuestionInspector.mjs.map +1 -0
  933. package/dist/pages/typeform/QuestionRenderer.d.mts +23 -0
  934. package/dist/pages/typeform/QuestionRenderer.d.mts.map +1 -0
  935. package/dist/pages/typeform/QuestionRenderer.mjs +170 -0
  936. package/dist/pages/typeform/QuestionRenderer.mjs.map +1 -0
  937. package/dist/pages/typeform/RatingInput.d.mts +14 -0
  938. package/dist/pages/typeform/RatingInput.d.mts.map +1 -0
  939. package/dist/pages/typeform/RatingInput.mjs +58 -0
  940. package/dist/pages/typeform/RatingInput.mjs.map +1 -0
  941. package/dist/pages/typeform/RuleGroupEditor.d.mts +9 -0
  942. package/dist/pages/typeform/RuleGroupEditor.d.mts.map +1 -0
  943. package/dist/pages/typeform/RuleGroupEditor.mjs +183 -0
  944. package/dist/pages/typeform/RuleGroupEditor.mjs.map +1 -0
  945. package/dist/pages/typeform/SignaturePad.d.mts +11 -0
  946. package/dist/pages/typeform/SignaturePad.d.mts.map +1 -0
  947. package/dist/pages/typeform/SignaturePad.mjs +111 -0
  948. package/dist/pages/typeform/SignaturePad.mjs.map +1 -0
  949. package/dist/pages/typeform/TableInput.d.mts +15 -0
  950. package/dist/pages/typeform/TableInput.d.mts.map +1 -0
  951. package/dist/pages/typeform/TableInput.mjs +73 -0
  952. package/dist/pages/typeform/TableInput.mjs.map +1 -0
  953. package/dist/pages/typeform/WorkspaceScreen.d.mts +20 -0
  954. package/dist/pages/typeform/WorkspaceScreen.d.mts.map +1 -0
  955. package/dist/pages/typeform/WorkspaceScreen.mjs +158 -0
  956. package/dist/pages/typeform/WorkspaceScreen.mjs.map +1 -0
  957. package/dist/pages/typeform/coreRjsfTheme.d.mts +4 -0
  958. package/dist/pages/typeform/coreRjsfTheme.d.mts.map +1 -0
  959. package/dist/pages/typeform/coreRjsfTheme.mjs +142 -0
  960. package/dist/pages/typeform/coreRjsfTheme.mjs.map +1 -0
  961. package/dist/pages/typeform/dataSources.d.mts +35 -0
  962. package/dist/pages/typeform/dataSources.d.mts.map +1 -0
  963. package/dist/pages/typeform/dataSources.mjs +210 -0
  964. package/dist/pages/typeform/dataSources.mjs.map +1 -0
  965. package/dist/pages/typeform/fillerShared.d.mts +21 -0
  966. package/dist/pages/typeform/fillerShared.d.mts.map +1 -0
  967. package/dist/pages/typeform/fillerShared.mjs +112 -0
  968. package/dist/pages/typeform/fillerShared.mjs.map +1 -0
  969. package/dist/pages/typeform/logic.d.mts +46 -0
  970. package/dist/pages/typeform/logic.d.mts.map +1 -0
  971. package/dist/pages/typeform/logic.mjs +193 -0
  972. package/dist/pages/typeform/logic.mjs.map +1 -0
  973. package/dist/pages/typeform/model.d.mts +144 -0
  974. package/dist/pages/typeform/model.d.mts.map +1 -0
  975. package/dist/pages/typeform/model.mjs +328 -0
  976. package/dist/pages/typeform/model.mjs.map +1 -0
  977. package/dist/pages/typeform/schemaToJsonSchema.d.mts +9 -0
  978. package/dist/pages/typeform/schemaToJsonSchema.d.mts.map +1 -0
  979. package/dist/pages/typeform/schemaToJsonSchema.mjs +119 -0
  980. package/dist/pages/typeform/schemaToJsonSchema.mjs.map +1 -0
  981. package/dist/pages/typeform/useFormBuilder.d.mts +34 -0
  982. package/dist/pages/typeform/useFormBuilder.d.mts.map +1 -0
  983. package/dist/pages/typeform/useFormBuilder.mjs +389 -0
  984. package/dist/pages/typeform/useFormBuilder.mjs.map +1 -0
  985. package/dist/pages/view-mode-thumbs.d.mts +6 -0
  986. package/dist/pages/view-mode-thumbs.d.mts.map +1 -0
  987. package/dist/pages/view-mode-thumbs.mjs +8 -0
  988. package/dist/pages/view-mode-thumbs.mjs.map +1 -0
  989. package/dist/pages/wc3-action-type-detail.d.mts +166 -0
  990. package/dist/pages/wc3-action-type-detail.d.mts.map +1 -0
  991. package/dist/pages/wc3-action-type-detail.mjs +2182 -0
  992. package/dist/pages/wc3-action-type-detail.mjs.map +1 -0
  993. package/dist/pages/wc3-action-type-run-dialog.d.mts +23 -0
  994. package/dist/pages/wc3-action-type-run-dialog.d.mts.map +1 -0
  995. package/dist/pages/wc3-action-type-run-dialog.mjs +383 -0
  996. package/dist/pages/wc3-action-type-run-dialog.mjs.map +1 -0
  997. package/dist/pages/wc3-action-type-wizard.d.mts +75 -0
  998. package/dist/pages/wc3-action-type-wizard.d.mts.map +1 -0
  999. package/dist/pages/wc3-action-type-wizard.mjs +702 -0
  1000. package/dist/pages/wc3-action-type-wizard.mjs.map +1 -0
  1001. package/dist/pages/wc3-analysis-data-view.d.mts +15 -0
  1002. package/dist/pages/wc3-analysis-data-view.d.mts.map +1 -0
  1003. package/dist/pages/wc3-analysis-data-view.mjs +129 -0
  1004. package/dist/pages/wc3-analysis-data-view.mjs.map +1 -0
  1005. package/dist/pages/wc3-analysis-data.d.mts +181 -0
  1006. package/dist/pages/wc3-analysis-data.d.mts.map +1 -0
  1007. package/dist/pages/wc3-analysis-data.mjs +4074 -0
  1008. package/dist/pages/wc3-analysis-data.mjs.map +1 -0
  1009. package/dist/pages/wc3-analysis-object-view.d.mts +12 -0
  1010. package/dist/pages/wc3-analysis-object-view.d.mts.map +1 -0
  1011. package/dist/pages/wc3-analysis-object-view.mjs +196 -0
  1012. package/dist/pages/wc3-analysis-object-view.mjs.map +1 -0
  1013. package/dist/pages/wc3-analysis-saved-view.d.mts +6 -0
  1014. package/dist/pages/wc3-analysis-saved-view.d.mts.map +1 -0
  1015. package/dist/pages/wc3-analysis-saved-view.mjs +540 -0
  1016. package/dist/pages/wc3-analysis-saved-view.mjs.map +1 -0
  1017. package/dist/pages/wc3-analysis-shared.d.mts +346 -0
  1018. package/dist/pages/wc3-analysis-shared.d.mts.map +1 -0
  1019. package/dist/pages/wc3-analysis-shared.mjs +1119 -0
  1020. package/dist/pages/wc3-analysis-shared.mjs.map +1 -0
  1021. package/dist/pages/wc3-analysis-views.d.mts +25 -0
  1022. package/dist/pages/wc3-analysis-views.d.mts.map +1 -0
  1023. package/dist/pages/wc3-analysis-views.mjs +48 -0
  1024. package/dist/pages/wc3-analysis-views.mjs.map +1 -0
  1025. package/dist/pages/wc3-fs-data.d.mts +12 -0
  1026. package/dist/pages/wc3-fs-data.d.mts.map +1 -0
  1027. package/dist/pages/wc3-fs-data.mjs +745 -0
  1028. package/dist/pages/wc3-fs-data.mjs.map +1 -0
  1029. package/dist/pages/wc3-fs-location-field.d.mts +13 -0
  1030. package/dist/pages/wc3-fs-location-field.d.mts.map +1 -0
  1031. package/dist/pages/wc3-fs-location-field.mjs +56 -0
  1032. package/dist/pages/wc3-fs-location-field.mjs.map +1 -0
  1033. package/dist/pages/wc3-fs-path-label.d.mts +12 -0
  1034. package/dist/pages/wc3-fs-path-label.d.mts.map +1 -0
  1035. package/dist/pages/wc3-fs-path-label.mjs +36 -0
  1036. package/dist/pages/wc3-fs-path-label.mjs.map +1 -0
  1037. package/dist/pages/wc3-fs-records.d.mts +17 -0
  1038. package/dist/pages/wc3-fs-records.d.mts.map +1 -0
  1039. package/dist/pages/wc3-fs-records.mjs +107 -0
  1040. package/dist/pages/wc3-fs-records.mjs.map +1 -0
  1041. package/dist/pages/wc3-fs-store.d.mts +43 -0
  1042. package/dist/pages/wc3-fs-store.d.mts.map +1 -0
  1043. package/dist/pages/wc3-fs-store.mjs +81 -0
  1044. package/dist/pages/wc3-fs-store.mjs.map +1 -0
  1045. package/dist/pages/wc3-fs-types.d.mts +19 -0
  1046. package/dist/pages/wc3-fs-types.d.mts.map +1 -0
  1047. package/dist/pages/wc3-fs-types.mjs +66 -0
  1048. package/dist/pages/wc3-fs-types.mjs.map +1 -0
  1049. package/dist/pages/wc3-graph-explorer-flow.d.mts +14 -0
  1050. package/dist/pages/wc3-graph-explorer-flow.d.mts.map +1 -0
  1051. package/dist/pages/wc3-graph-explorer-flow.mjs +275 -0
  1052. package/dist/pages/wc3-graph-explorer-flow.mjs.map +1 -0
  1053. package/dist/pages/wc3-group-detail.d.mts +26 -0
  1054. package/dist/pages/wc3-group-detail.d.mts.map +1 -0
  1055. package/dist/pages/wc3-group-detail.mjs +358 -0
  1056. package/dist/pages/wc3-group-detail.mjs.map +1 -0
  1057. package/dist/pages/wc3-group-wizard.d.mts +28 -0
  1058. package/dist/pages/wc3-group-wizard.d.mts.map +1 -0
  1059. package/dist/pages/wc3-group-wizard.mjs +120 -0
  1060. package/dist/pages/wc3-group-wizard.mjs.map +1 -0
  1061. package/dist/pages/wc3-health-view.d.mts +34 -0
  1062. package/dist/pages/wc3-health-view.d.mts.map +1 -0
  1063. package/dist/pages/wc3-health-view.mjs +413 -0
  1064. package/dist/pages/wc3-health-view.mjs.map +1 -0
  1065. package/dist/pages/wc3-home-view.d.mts +24 -0
  1066. package/dist/pages/wc3-home-view.d.mts.map +1 -0
  1067. package/dist/pages/wc3-home-view.mjs +59 -0
  1068. package/dist/pages/wc3-home-view.mjs.map +1 -0
  1069. package/dist/pages/wc3-interface-detail.d.mts +66 -0
  1070. package/dist/pages/wc3-interface-detail.d.mts.map +1 -0
  1071. package/dist/pages/wc3-interface-detail.mjs +1060 -0
  1072. package/dist/pages/wc3-interface-detail.mjs.map +1 -0
  1073. package/dist/pages/wc3-interface-wizard.d.mts +39 -0
  1074. package/dist/pages/wc3-interface-wizard.d.mts.map +1 -0
  1075. package/dist/pages/wc3-interface-wizard.mjs +226 -0
  1076. package/dist/pages/wc3-interface-wizard.mjs.map +1 -0
  1077. package/dist/pages/wc3-lineage-data-view.d.mts +6 -0
  1078. package/dist/pages/wc3-lineage-data-view.d.mts.map +1 -0
  1079. package/dist/pages/wc3-lineage-data-view.mjs +481 -0
  1080. package/dist/pages/wc3-lineage-data-view.mjs.map +1 -0
  1081. package/dist/pages/wc3-lineage-data.d.mts +191 -0
  1082. package/dist/pages/wc3-lineage-data.d.mts.map +1 -0
  1083. package/dist/pages/wc3-lineage-data.mjs +1061 -0
  1084. package/dist/pages/wc3-lineage-data.mjs.map +1 -0
  1085. package/dist/pages/wc3-lineage-impact-view.d.mts +13 -0
  1086. package/dist/pages/wc3-lineage-impact-view.d.mts.map +1 -0
  1087. package/dist/pages/wc3-lineage-impact-view.mjs +247 -0
  1088. package/dist/pages/wc3-lineage-impact-view.mjs.map +1 -0
  1089. package/dist/pages/wc3-lineage-shared.d.mts +137 -0
  1090. package/dist/pages/wc3-lineage-shared.d.mts.map +1 -0
  1091. package/dist/pages/wc3-lineage-shared.mjs +150 -0
  1092. package/dist/pages/wc3-lineage-shared.mjs.map +1 -0
  1093. package/dist/pages/wc3-lineage-views.d.mts +7 -0
  1094. package/dist/pages/wc3-lineage-views.d.mts.map +1 -0
  1095. package/dist/pages/wc3-lineage-views.mjs +13 -0
  1096. package/dist/pages/wc3-lineage-views.mjs.map +1 -0
  1097. package/dist/pages/wc3-lineage-workflow-view.d.mts +12 -0
  1098. package/dist/pages/wc3-lineage-workflow-view.d.mts.map +1 -0
  1099. package/dist/pages/wc3-lineage-workflow-view.mjs +326 -0
  1100. package/dist/pages/wc3-lineage-workflow-view.mjs.map +1 -0
  1101. package/dist/pages/wc3-object-type-detail.d.mts +18 -0
  1102. package/dist/pages/wc3-object-type-detail.d.mts.map +1 -0
  1103. package/dist/pages/wc3-object-type-detail.mjs +977 -0
  1104. package/dist/pages/wc3-object-type-detail.mjs.map +1 -0
  1105. package/dist/pages/wc3-ontology-data.d.mts +246 -0
  1106. package/dist/pages/wc3-ontology-data.d.mts.map +1 -0
  1107. package/dist/pages/wc3-ontology-data.mjs +8542 -0
  1108. package/dist/pages/wc3-ontology-data.mjs.map +1 -0
  1109. package/dist/pages/wc3-ontology-glyphs.d.mts +14 -0
  1110. package/dist/pages/wc3-ontology-glyphs.d.mts.map +1 -0
  1111. package/dist/pages/wc3-ontology-glyphs.mjs +53 -0
  1112. package/dist/pages/wc3-ontology-glyphs.mjs.map +1 -0
  1113. package/dist/pages/wc3-ontology-scope.d.mts +62 -0
  1114. package/dist/pages/wc3-ontology-scope.d.mts.map +1 -0
  1115. package/dist/pages/wc3-ontology-scope.mjs +109 -0
  1116. package/dist/pages/wc3-ontology-scope.mjs.map +1 -0
  1117. package/dist/pages/wc3-ontology-views.d.mts +34 -0
  1118. package/dist/pages/wc3-ontology-views.d.mts.map +1 -0
  1119. package/dist/pages/wc3-ontology-views.mjs +1253 -0
  1120. package/dist/pages/wc3-ontology-views.mjs.map +1 -0
  1121. package/dist/pages/wc3-permit-policy.d.mts +56 -0
  1122. package/dist/pages/wc3-permit-policy.d.mts.map +1 -0
  1123. package/dist/pages/wc3-permit-policy.mjs +478 -0
  1124. package/dist/pages/wc3-permit-policy.mjs.map +1 -0
  1125. package/dist/pages/wc3-pipeline-detail.d.mts +13 -0
  1126. package/dist/pages/wc3-pipeline-detail.d.mts.map +1 -0
  1127. package/dist/pages/wc3-pipeline-detail.mjs +818 -0
  1128. package/dist/pages/wc3-pipeline-detail.mjs.map +1 -0
  1129. package/dist/pages/wc3-pipeline-list-view.d.mts +5 -0
  1130. package/dist/pages/wc3-pipeline-list-view.d.mts.map +1 -0
  1131. package/dist/pages/wc3-pipeline-list-view.mjs +692 -0
  1132. package/dist/pages/wc3-pipeline-list-view.mjs.map +1 -0
  1133. package/dist/pages/wc3-pipeline-shared.d.mts +301 -0
  1134. package/dist/pages/wc3-pipeline-shared.d.mts.map +1 -0
  1135. package/dist/pages/wc3-pipeline-shared.mjs +703 -0
  1136. package/dist/pages/wc3-pipeline-shared.mjs.map +1 -0
  1137. package/dist/pages/wc3-pipeline-side-views.d.mts +7 -0
  1138. package/dist/pages/wc3-pipeline-side-views.d.mts.map +1 -0
  1139. package/dist/pages/wc3-pipeline-side-views.mjs +998 -0
  1140. package/dist/pages/wc3-pipeline-side-views.mjs.map +1 -0
  1141. package/dist/pages/wc3-pipeline-views.d.mts +15 -0
  1142. package/dist/pages/wc3-pipeline-views.d.mts.map +1 -0
  1143. package/dist/pages/wc3-pipeline-views.mjs +23 -0
  1144. package/dist/pages/wc3-pipeline-views.mjs.map +1 -0
  1145. package/dist/pages/wc3-process-bottlenecks.d.mts +22 -0
  1146. package/dist/pages/wc3-process-bottlenecks.d.mts.map +1 -0
  1147. package/dist/pages/wc3-process-bottlenecks.mjs +352 -0
  1148. package/dist/pages/wc3-process-bottlenecks.mjs.map +1 -0
  1149. package/dist/pages/wc3-process-create.d.mts +24 -0
  1150. package/dist/pages/wc3-process-create.d.mts.map +1 -0
  1151. package/dist/pages/wc3-process-create.mjs +230 -0
  1152. package/dist/pages/wc3-process-create.mjs.map +1 -0
  1153. package/dist/pages/wc3-process-data.d.mts +238 -0
  1154. package/dist/pages/wc3-process-data.d.mts.map +1 -0
  1155. package/dist/pages/wc3-process-data.mjs +2251 -0
  1156. package/dist/pages/wc3-process-data.mjs.map +1 -0
  1157. package/dist/pages/wc3-process-detail.d.mts +21 -0
  1158. package/dist/pages/wc3-process-detail.d.mts.map +1 -0
  1159. package/dist/pages/wc3-process-detail.mjs +21 -0
  1160. package/dist/pages/wc3-process-detail.mjs.map +1 -0
  1161. package/dist/pages/wc3-process-list-view.d.mts +5 -0
  1162. package/dist/pages/wc3-process-list-view.d.mts.map +1 -0
  1163. package/dist/pages/wc3-process-list-view.mjs +602 -0
  1164. package/dist/pages/wc3-process-list-view.mjs.map +1 -0
  1165. package/dist/pages/wc3-process-shared.d.mts +443 -0
  1166. package/dist/pages/wc3-process-shared.d.mts.map +1 -0
  1167. package/dist/pages/wc3-process-shared.mjs +980 -0
  1168. package/dist/pages/wc3-process-shared.mjs.map +1 -0
  1169. package/dist/pages/wc3-process-views.d.mts +19 -0
  1170. package/dist/pages/wc3-process-views.d.mts.map +1 -0
  1171. package/dist/pages/wc3-process-views.mjs +23 -0
  1172. package/dist/pages/wc3-process-views.mjs.map +1 -0
  1173. package/dist/pages/wc3-product-catalogue-view.d.mts +5 -0
  1174. package/dist/pages/wc3-product-catalogue-view.d.mts.map +1 -0
  1175. package/dist/pages/wc3-product-catalogue-view.mjs +587 -0
  1176. package/dist/pages/wc3-product-catalogue-view.mjs.map +1 -0
  1177. package/dist/pages/wc3-product-data.d.mts +206 -0
  1178. package/dist/pages/wc3-product-data.d.mts.map +1 -0
  1179. package/dist/pages/wc3-product-data.mjs +2669 -0
  1180. package/dist/pages/wc3-product-data.mjs.map +1 -0
  1181. package/dist/pages/wc3-product-detail.d.mts +31 -0
  1182. package/dist/pages/wc3-product-detail.d.mts.map +1 -0
  1183. package/dist/pages/wc3-product-detail.mjs +1137 -0
  1184. package/dist/pages/wc3-product-detail.mjs.map +1 -0
  1185. package/dist/pages/wc3-product-install-dialog.d.mts +99 -0
  1186. package/dist/pages/wc3-product-install-dialog.d.mts.map +1 -0
  1187. package/dist/pages/wc3-product-install-dialog.mjs +808 -0
  1188. package/dist/pages/wc3-product-install-dialog.mjs.map +1 -0
  1189. package/dist/pages/wc3-product-shared.d.mts +152 -0
  1190. package/dist/pages/wc3-product-shared.d.mts.map +1 -0
  1191. package/dist/pages/wc3-product-shared.mjs +268 -0
  1192. package/dist/pages/wc3-product-shared.mjs.map +1 -0
  1193. package/dist/pages/wc3-product-views.d.mts +7 -0
  1194. package/dist/pages/wc3-product-views.d.mts.map +1 -0
  1195. package/dist/pages/wc3-product-views.mjs +7 -0
  1196. package/dist/pages/wc3-product-views.mjs.map +1 -0
  1197. package/dist/pages/wc3-shared-property-detail.d.mts +95 -0
  1198. package/dist/pages/wc3-shared-property-detail.d.mts.map +1 -0
  1199. package/dist/pages/wc3-shared-property-detail.mjs +546 -0
  1200. package/dist/pages/wc3-shared-property-detail.mjs.map +1 -0
  1201. package/dist/pages/wc3-shared-property-view.d.mts +10 -0
  1202. package/dist/pages/wc3-shared-property-view.d.mts.map +1 -0
  1203. package/dist/pages/wc3-shared-property-view.mjs +455 -0
  1204. package/dist/pages/wc3-shared-property-view.mjs.map +1 -0
  1205. package/dist/pages/wc3-shared-property-wizard.d.mts +31 -0
  1206. package/dist/pages/wc3-shared-property-wizard.d.mts.map +1 -0
  1207. package/dist/pages/wc3-shared-property-wizard.mjs +181 -0
  1208. package/dist/pages/wc3-shared-property-wizard.mjs.map +1 -0
  1209. package/dist/pages/work-permit-templates.d.mts +30 -0
  1210. package/dist/pages/work-permit-templates.d.mts.map +1 -0
  1211. package/dist/pages/work-permit-templates.mjs +793 -0
  1212. package/dist/pages/work-permit-templates.mjs.map +1 -0
  1213. package/dist/pages/workforce-analytics.d.mts +11 -0
  1214. package/dist/pages/workforce-analytics.d.mts.map +1 -0
  1215. package/dist/pages/workforce-analytics.mjs +561 -0
  1216. package/dist/pages/workforce-analytics.mjs.map +1 -0
  1217. package/dist/pages/workforce-compliance-settings.d.mts +9 -0
  1218. package/dist/pages/workforce-compliance-settings.d.mts.map +1 -0
  1219. package/dist/pages/workforce-compliance-settings.mjs +375 -0
  1220. package/dist/pages/workforce-compliance-settings.mjs.map +1 -0
  1221. package/dist/pages/workforce-compliance.d.mts +81 -0
  1222. package/dist/pages/workforce-compliance.d.mts.map +1 -0
  1223. package/dist/pages/workforce-compliance.mjs +805 -0
  1224. package/dist/pages/workforce-compliance.mjs.map +1 -0
  1225. package/dist/pages/workforce-crews.d.mts +5 -0
  1226. package/dist/pages/workforce-crews.d.mts.map +1 -0
  1227. package/dist/pages/workforce-crews.mjs +1091 -0
  1228. package/dist/pages/workforce-crews.mjs.map +1 -0
  1229. package/dist/pages/workforce-map-view.d.mts +8 -0
  1230. package/dist/pages/workforce-map-view.d.mts.map +1 -0
  1231. package/dist/pages/workforce-map-view.mjs +953 -0
  1232. package/dist/pages/workforce-map-view.mjs.map +1 -0
  1233. package/dist/pages/workforce-obs.d.mts +5 -0
  1234. package/dist/pages/workforce-obs.d.mts.map +1 -0
  1235. package/dist/pages/workforce-obs.mjs +649 -0
  1236. package/dist/pages/workforce-obs.mjs.map +1 -0
  1237. package/dist/pagination.d.mts +32 -0
  1238. package/dist/pagination.d.mts.map +1 -0
  1239. package/dist/pagination.mjs +67 -0
  1240. package/dist/pagination.mjs.map +1 -0
  1241. package/dist/permission-matrix.d.mts +43 -0
  1242. package/dist/permission-matrix.d.mts.map +1 -0
  1243. package/dist/permission-matrix.mjs +146 -0
  1244. package/dist/permission-matrix.mjs.map +1 -0
  1245. package/dist/popover.d.mts +19 -0
  1246. package/dist/popover.d.mts.map +1 -0
  1247. package/dist/popover.mjs +31 -0
  1248. package/dist/popover.mjs.map +1 -0
  1249. package/dist/product-package-detail.d.mts +173 -0
  1250. package/dist/product-package-detail.d.mts.map +1 -0
  1251. package/dist/product-package-detail.mjs +521 -0
  1252. package/dist/product-package-detail.mjs.map +1 -0
  1253. package/dist/progress-comparison.d.mts +93 -0
  1254. package/dist/progress-comparison.d.mts.map +1 -0
  1255. package/dist/progress-comparison.mjs +253 -0
  1256. package/dist/progress-comparison.mjs.map +1 -0
  1257. package/dist/progress-list-item.d.mts +46 -0
  1258. package/dist/progress-list-item.d.mts.map +1 -0
  1259. package/dist/progress-list-item.mjs +79 -0
  1260. package/dist/progress-list-item.mjs.map +1 -0
  1261. package/dist/progress-sheet.d.mts +39 -0
  1262. package/dist/progress-sheet.d.mts.map +1 -0
  1263. package/dist/progress-sheet.mjs +760 -0
  1264. package/dist/progress-sheet.mjs.map +1 -0
  1265. package/dist/progress-stat.d.mts +26 -0
  1266. package/dist/progress-stat.d.mts.map +1 -0
  1267. package/dist/progress-stat.mjs +54 -0
  1268. package/dist/progress-stat.mjs.map +1 -0
  1269. package/dist/progress.d.mts +13 -0
  1270. package/dist/progress.d.mts.map +1 -0
  1271. package/dist/progress.mjs +32 -0
  1272. package/dist/progress.mjs.map +1 -0
  1273. package/dist/prompt-input.d.mts +108 -0
  1274. package/dist/prompt-input.d.mts.map +1 -0
  1275. package/dist/prompt-input.mjs +400 -0
  1276. package/dist/prompt-input.mjs.map +1 -0
  1277. package/dist/property-list.d.mts +37 -0
  1278. package/dist/property-list.d.mts.map +1 -0
  1279. package/dist/property-list.mjs +60 -0
  1280. package/dist/property-list.mjs.map +1 -0
  1281. package/dist/push-panel.d.mts +75 -0
  1282. package/dist/push-panel.d.mts.map +1 -0
  1283. package/dist/push-panel.mjs +182 -0
  1284. package/dist/push-panel.mjs.map +1 -0
  1285. package/dist/radio-group.d.mts +9 -0
  1286. package/dist/radio-group.d.mts.map +1 -0
  1287. package/dist/radio-group.mjs +27 -0
  1288. package/dist/radio-group.mjs.map +1 -0
  1289. package/dist/record-detail-shell.d.mts +46 -0
  1290. package/dist/record-detail-shell.d.mts.map +1 -0
  1291. package/dist/record-detail-shell.mjs +29 -0
  1292. package/dist/record-detail-shell.mjs.map +1 -0
  1293. package/dist/resizable.d.mts +11 -0
  1294. package/dist/resizable.d.mts.map +1 -0
  1295. package/dist/resizable.mjs +23 -0
  1296. package/dist/resizable.mjs.map +1 -0
  1297. package/dist/resize-handle.d.mts +19 -0
  1298. package/dist/resize-handle.d.mts.map +1 -0
  1299. package/dist/resize-handle.mjs +45 -0
  1300. package/dist/resize-handle.mjs.map +1 -0
  1301. package/dist/responder-detail-panel.d.mts +72 -0
  1302. package/dist/responder-detail-panel.d.mts.map +1 -0
  1303. package/dist/responder-detail-panel.mjs +232 -0
  1304. package/dist/responder-detail-panel.mjs.map +1 -0
  1305. package/dist/rule-row.d.mts +63 -0
  1306. package/dist/rule-row.d.mts.map +1 -0
  1307. package/dist/rule-row.mjs +97 -0
  1308. package/dist/rule-row.mjs.map +1 -0
  1309. package/dist/schedule-week-bar.d.mts +24 -0
  1310. package/dist/schedule-week-bar.d.mts.map +1 -0
  1311. package/dist/schedule-week-bar.mjs +99 -0
  1312. package/dist/schedule-week-bar.mjs.map +1 -0
  1313. package/dist/score-gauge.d.mts +24 -0
  1314. package/dist/score-gauge.d.mts.map +1 -0
  1315. package/dist/score-gauge.mjs +73 -0
  1316. package/dist/score-gauge.mjs.map +1 -0
  1317. package/dist/scroll-area.d.mts +27 -0
  1318. package/dist/scroll-area.d.mts.map +1 -0
  1319. package/dist/scroll-area.mjs +35 -0
  1320. package/dist/scroll-area.mjs.map +1 -0
  1321. package/dist/search-filter-bar.d.mts +22 -0
  1322. package/dist/search-filter-bar.d.mts.map +1 -0
  1323. package/dist/search-filter-bar.mjs +56 -0
  1324. package/dist/search-filter-bar.mjs.map +1 -0
  1325. package/dist/section-header.d.mts +22 -0
  1326. package/dist/section-header.d.mts.map +1 -0
  1327. package/dist/section-header.mjs +32 -0
  1328. package/dist/section-header.mjs.map +1 -0
  1329. package/dist/section-panel.d.mts +47 -0
  1330. package/dist/section-panel.d.mts.map +1 -0
  1331. package/dist/section-panel.mjs +78 -0
  1332. package/dist/section-panel.mjs.map +1 -0
  1333. package/dist/section.d.mts +15 -0
  1334. package/dist/section.d.mts.map +1 -0
  1335. package/dist/section.mjs +34 -0
  1336. package/dist/section.mjs.map +1 -0
  1337. package/dist/segmented-control.d.mts +26 -0
  1338. package/dist/segmented-control.d.mts.map +1 -0
  1339. package/dist/segmented-control.mjs +70 -0
  1340. package/dist/segmented-control.mjs.map +1 -0
  1341. package/dist/select.d.mts +87 -0
  1342. package/dist/select.d.mts.map +1 -0
  1343. package/dist/select.mjs +280 -0
  1344. package/dist/select.mjs.map +1 -0
  1345. package/dist/selectable-card.d.mts +39 -0
  1346. package/dist/selectable-card.d.mts.map +1 -0
  1347. package/dist/selectable-card.mjs +102 -0
  1348. package/dist/selectable-card.mjs.map +1 -0
  1349. package/dist/separator.d.mts +8 -0
  1350. package/dist/separator.d.mts.map +1 -0
  1351. package/dist/separator.mjs +18 -0
  1352. package/dist/separator.mjs.map +1 -0
  1353. package/dist/services/chatService.d.mts +11 -0
  1354. package/dist/services/chatService.d.mts.map +1 -0
  1355. package/dist/services/chatService.mjs +44 -0
  1356. package/dist/services/chatService.mjs.map +1 -0
  1357. package/dist/setup-steps-checklist.d.mts +50 -0
  1358. package/dist/setup-steps-checklist.d.mts.map +1 -0
  1359. package/dist/setup-steps-checklist.mjs +183 -0
  1360. package/dist/setup-steps-checklist.mjs.map +1 -0
  1361. package/dist/sheet.d.mts +41 -0
  1362. package/dist/sheet.d.mts.map +1 -0
  1363. package/dist/sheet.mjs +71 -0
  1364. package/dist/sheet.mjs.map +1 -0
  1365. package/dist/side-menu.d.mts +61 -0
  1366. package/dist/side-menu.d.mts.map +1 -0
  1367. package/dist/side-menu.mjs +160 -0
  1368. package/dist/side-menu.mjs.map +1 -0
  1369. package/dist/sidebar.d.mts +36 -0
  1370. package/dist/sidebar.d.mts.map +1 -0
  1371. package/dist/sidebar.mjs +159 -0
  1372. package/dist/sidebar.mjs.map +1 -0
  1373. package/dist/single-house-view.d.mts +13 -0
  1374. package/dist/single-house-view.d.mts.map +1 -0
  1375. package/dist/single-house-view.mjs +506 -0
  1376. package/dist/single-house-view.mjs.map +1 -0
  1377. package/dist/site-image-viewer/batches.mjs +362 -0
  1378. package/dist/site-image-viewer/batches.mjs.map +1 -0
  1379. package/dist/site-image-viewer/blocks-zone-1a.mjs +1815 -0
  1380. package/dist/site-image-viewer/blocks-zone-1a.mjs.map +1 -0
  1381. package/dist/site-image-viewer/blocks-zone-1b.mjs +2623 -0
  1382. package/dist/site-image-viewer/blocks-zone-1b.mjs.map +1 -0
  1383. package/dist/site-image-viewer/legend-items.d.mts +6 -0
  1384. package/dist/site-image-viewer/legend-items.d.mts.map +1 -0
  1385. package/dist/site-image-viewer/legend-items.mjs +104 -0
  1386. package/dist/site-image-viewer/legend-items.mjs.map +1 -0
  1387. package/dist/site-image-viewer/milestone-ramp.d.mts +81 -0
  1388. package/dist/site-image-viewer/milestone-ramp.d.mts.map +1 -0
  1389. package/dist/site-image-viewer/milestone-ramp.mjs +112 -0
  1390. package/dist/site-image-viewer/milestone-ramp.mjs.map +1 -0
  1391. package/dist/site-image-viewer/phases.mjs +60 -0
  1392. package/dist/site-image-viewer/phases.mjs.map +1 -0
  1393. package/dist/site-image-viewer/site-legend.d.mts +20 -0
  1394. package/dist/site-image-viewer/site-legend.d.mts.map +1 -0
  1395. package/dist/site-image-viewer/site-legend.mjs +113 -0
  1396. package/dist/site-image-viewer/site-legend.mjs.map +1 -0
  1397. package/dist/site-image-viewer/types.d.mts +32 -0
  1398. package/dist/site-image-viewer/types.d.mts.map +1 -0
  1399. package/dist/site-image-viewer/types.mjs +1 -0
  1400. package/dist/site-image-viewer/villa-hover-card.d.mts +15 -0
  1401. package/dist/site-image-viewer/villa-hover-card.d.mts.map +1 -0
  1402. package/dist/site-image-viewer/villa-hover-card.mjs +48 -0
  1403. package/dist/site-image-viewer/villa-hover-card.mjs.map +1 -0
  1404. package/dist/site-image-viewer/villas.mjs +34494 -0
  1405. package/dist/site-image-viewer/villas.mjs.map +1 -0
  1406. package/dist/site-image-viewer/zone1b-villas.mjs +36211 -0
  1407. package/dist/site-image-viewer/zone1b-villas.mjs.map +1 -0
  1408. package/dist/site-image-viewer/zones-marketing.mjs +114 -0
  1409. package/dist/site-image-viewer/zones-marketing.mjs.map +1 -0
  1410. package/dist/site-image-viewer/zones.mjs +114 -0
  1411. package/dist/site-image-viewer/zones.mjs.map +1 -0
  1412. package/dist/site-image-viewer-fixtures.d.mts +44 -0
  1413. package/dist/site-image-viewer-fixtures.d.mts.map +1 -0
  1414. package/dist/site-image-viewer-fixtures.mjs +112 -0
  1415. package/dist/site-image-viewer-fixtures.mjs.map +1 -0
  1416. package/dist/site-image-viewer.d.mts +98 -0
  1417. package/dist/site-image-viewer.d.mts.map +1 -0
  1418. package/dist/site-image-viewer.mjs +501 -0
  1419. package/dist/site-image-viewer.mjs.map +1 -0
  1420. package/dist/site-panel.d.mts +123 -0
  1421. package/dist/site-panel.d.mts.map +1 -0
  1422. package/dist/site-panel.mjs +1413 -0
  1423. package/dist/site-panel.mjs.map +1 -0
  1424. package/dist/site-reality-viewer.d.mts +46 -0
  1425. package/dist/site-reality-viewer.d.mts.map +1 -0
  1426. package/dist/site-reality-viewer.mjs +436 -0
  1427. package/dist/site-reality-viewer.mjs.map +1 -0
  1428. package/dist/site-toolbar.d.mts +54 -0
  1429. package/dist/site-toolbar.d.mts.map +1 -0
  1430. package/dist/site-toolbar.mjs +110 -0
  1431. package/dist/site-toolbar.mjs.map +1 -0
  1432. package/dist/skeleton.d.mts +6 -0
  1433. package/dist/skeleton.d.mts.map +1 -0
  1434. package/dist/skeleton.mjs +14 -0
  1435. package/dist/skeleton.mjs.map +1 -0
  1436. package/dist/slider.d.mts +8 -0
  1437. package/dist/slider.d.mts.map +1 -0
  1438. package/dist/slider.mjs +20 -0
  1439. package/dist/slider.mjs.map +1 -0
  1440. package/dist/sonner.d.mts +8 -0
  1441. package/dist/sonner.d.mts.map +1 -0
  1442. package/dist/sonner.mjs +20 -0
  1443. package/dist/sonner.mjs.map +1 -0
  1444. package/dist/spinner.d.mts +12 -0
  1445. package/dist/spinner.d.mts.map +1 -0
  1446. package/dist/spinner.mjs +38 -0
  1447. package/dist/spinner.mjs.map +1 -0
  1448. package/dist/stack.d.mts +18 -0
  1449. package/dist/stack.d.mts.map +1 -0
  1450. package/dist/stack.mjs +61 -0
  1451. package/dist/stack.mjs.map +1 -0
  1452. package/dist/stage-content.d.mts +13 -0
  1453. package/dist/stage-content.d.mts.map +1 -0
  1454. package/dist/stage-content.mjs +664 -0
  1455. package/dist/stage-content.mjs.map +1 -0
  1456. package/dist/status-dot.d.mts +18 -0
  1457. package/dist/status-dot.d.mts.map +1 -0
  1458. package/dist/status-dot.mjs +89 -0
  1459. package/dist/status-dot.mjs.map +1 -0
  1460. package/dist/stepper.d.mts +19 -0
  1461. package/dist/stepper.d.mts.map +1 -0
  1462. package/dist/stepper.mjs +113 -0
  1463. package/dist/stepper.mjs.map +1 -0
  1464. package/dist/styles.css +1 -0
  1465. package/dist/styles.tw4.css +1 -0
  1466. package/dist/switch.d.mts +12 -0
  1467. package/dist/switch.d.mts.map +1 -0
  1468. package/dist/switch.mjs +17 -0
  1469. package/dist/switch.mjs.map +1 -0
  1470. package/dist/tab-list.d.mts +33 -0
  1471. package/dist/tab-list.d.mts.map +1 -0
  1472. package/dist/tab-list.mjs +90 -0
  1473. package/dist/tab-list.mjs.map +1 -0
  1474. package/dist/table.d.mts +14 -0
  1475. package/dist/table.d.mts.map +1 -0
  1476. package/dist/table.mjs +60 -0
  1477. package/dist/table.mjs.map +1 -0
  1478. package/dist/tabs.d.mts +42 -0
  1479. package/dist/tabs.d.mts.map +1 -0
  1480. package/dist/tabs.mjs +258 -0
  1481. package/dist/tabs.mjs.map +1 -0
  1482. package/dist/task-monitor.d.mts +70 -0
  1483. package/dist/task-monitor.d.mts.map +1 -0
  1484. package/dist/task-monitor.mjs +319 -0
  1485. package/dist/task-monitor.mjs.map +1 -0
  1486. package/dist/text.d.mts +18 -0
  1487. package/dist/text.d.mts.map +1 -0
  1488. package/dist/text.mjs +60 -0
  1489. package/dist/text.mjs.map +1 -0
  1490. package/dist/textarea.d.mts +7 -0
  1491. package/dist/textarea.d.mts.map +1 -0
  1492. package/dist/textarea.mjs +15 -0
  1493. package/dist/textarea.mjs.map +1 -0
  1494. package/dist/thinking-pill.d.mts +15 -0
  1495. package/dist/thinking-pill.d.mts.map +1 -0
  1496. package/dist/thinking-pill.mjs +28 -0
  1497. package/dist/thinking-pill.mjs.map +1 -0
  1498. package/dist/thumbnail.d.mts +20 -0
  1499. package/dist/thumbnail.d.mts.map +1 -0
  1500. package/dist/thumbnail.mjs +81 -0
  1501. package/dist/thumbnail.mjs.map +1 -0
  1502. package/dist/time-input.d.mts +15 -0
  1503. package/dist/time-input.d.mts.map +1 -0
  1504. package/dist/time-input.mjs +21 -0
  1505. package/dist/time-input.mjs.map +1 -0
  1506. package/dist/time-scrubber.d.mts +93 -0
  1507. package/dist/time-scrubber.d.mts.map +1 -0
  1508. package/dist/time-scrubber.mjs +420 -0
  1509. package/dist/time-scrubber.mjs.map +1 -0
  1510. package/dist/timeline-range-selector.d.mts +30 -0
  1511. package/dist/timeline-range-selector.d.mts.map +1 -0
  1512. package/dist/timeline-range-selector.mjs +232 -0
  1513. package/dist/timeline-range-selector.mjs.map +1 -0
  1514. package/dist/timestamp-picker.d.mts +32 -0
  1515. package/dist/timestamp-picker.d.mts.map +1 -0
  1516. package/dist/timestamp-picker.mjs +143 -0
  1517. package/dist/timestamp-picker.mjs.map +1 -0
  1518. package/dist/timestamp.d.mts +15 -0
  1519. package/dist/timestamp.d.mts.map +1 -0
  1520. package/dist/timestamp.mjs +61 -0
  1521. package/dist/timestamp.mjs.map +1 -0
  1522. package/dist/toast.d.mts +18 -0
  1523. package/dist/toast.d.mts.map +1 -0
  1524. package/dist/toast.mjs +59 -0
  1525. package/dist/toast.mjs.map +1 -0
  1526. package/dist/toaster.d.mts +5 -0
  1527. package/dist/toaster.d.mts.map +1 -0
  1528. package/dist/toaster.mjs +23 -0
  1529. package/dist/toaster.mjs.map +1 -0
  1530. package/dist/toggle-group.d.mts +16 -0
  1531. package/dist/toggle-group.d.mts.map +1 -0
  1532. package/dist/toggle-group.mjs +41 -0
  1533. package/dist/toggle-group.mjs.map +1 -0
  1534. package/dist/toggle.d.mts +16 -0
  1535. package/dist/toggle.d.mts.map +1 -0
  1536. package/dist/toggle.mjs +38 -0
  1537. package/dist/toggle.mjs.map +1 -0
  1538. package/dist/tokenizer.d.mts +23 -0
  1539. package/dist/tokenizer.d.mts.map +1 -0
  1540. package/dist/tokenizer.mjs +87 -0
  1541. package/dist/tokenizer.mjs.map +1 -0
  1542. package/dist/tones.d.mts +59 -0
  1543. package/dist/tones.d.mts.map +1 -0
  1544. package/dist/tones.mjs +177 -0
  1545. package/dist/tones.mjs.map +1 -0
  1546. package/dist/tool-call.d.mts +29 -0
  1547. package/dist/tool-call.d.mts.map +1 -0
  1548. package/dist/tool-call.mjs +89 -0
  1549. package/dist/tool-call.mjs.map +1 -0
  1550. package/dist/toolbar-color-picker.d.mts +50 -0
  1551. package/dist/toolbar-color-picker.d.mts.map +1 -0
  1552. package/dist/toolbar-color-picker.mjs +238 -0
  1553. package/dist/toolbar-color-picker.mjs.map +1 -0
  1554. package/dist/toolbar-pager.d.mts +17 -0
  1555. package/dist/toolbar-pager.d.mts.map +1 -0
  1556. package/dist/toolbar-pager.mjs +40 -0
  1557. package/dist/toolbar-pager.mjs.map +1 -0
  1558. package/dist/toolbar-stats.d.mts +34 -0
  1559. package/dist/toolbar-stats.d.mts.map +1 -0
  1560. package/dist/toolbar-stats.mjs +53 -0
  1561. package/dist/toolbar-stats.mjs.map +1 -0
  1562. package/dist/toolbar.d.mts +98 -0
  1563. package/dist/toolbar.d.mts.map +1 -0
  1564. package/dist/toolbar.mjs +86 -0
  1565. package/dist/toolbar.mjs.map +1 -0
  1566. package/dist/tooltip.d.mts +30 -0
  1567. package/dist/tooltip.d.mts.map +1 -0
  1568. package/dist/tooltip.mjs +83 -0
  1569. package/dist/tooltip.mjs.map +1 -0
  1570. package/dist/tree-list.d.mts +38 -0
  1571. package/dist/tree-list.d.mts.map +1 -0
  1572. package/dist/tree-list.mjs +95 -0
  1573. package/dist/tree-list.mjs.map +1 -0
  1574. package/dist/tree-row.d.mts +84 -0
  1575. package/dist/tree-row.d.mts.map +1 -0
  1576. package/dist/tree-row.mjs +150 -0
  1577. package/dist/tree-row.mjs.map +1 -0
  1578. package/dist/trend-chart.d.mts +28 -0
  1579. package/dist/trend-chart.d.mts.map +1 -0
  1580. package/dist/trend-chart.mjs +33 -0
  1581. package/dist/trend-chart.mjs.map +1 -0
  1582. package/dist/turn-timer.d.mts +23 -0
  1583. package/dist/turn-timer.d.mts.map +1 -0
  1584. package/dist/turn-timer.mjs +51 -0
  1585. package/dist/turn-timer.mjs.map +1 -0
  1586. package/dist/typeahead-item.d.mts +34 -0
  1587. package/dist/typeahead-item.d.mts.map +1 -0
  1588. package/dist/typeahead-item.mjs +74 -0
  1589. package/dist/typeahead-item.mjs.map +1 -0
  1590. package/dist/types/chat.d.mts +66 -0
  1591. package/dist/types/chat.d.mts.map +1 -0
  1592. package/dist/types/chat.mjs +1 -0
  1593. package/dist/types.d.mts +44 -0
  1594. package/dist/types.d.mts.map +1 -0
  1595. package/dist/types.mjs +49 -0
  1596. package/dist/types.mjs.map +1 -0
  1597. package/dist/typography.d.mts +17 -0
  1598. package/dist/typography.d.mts.map +1 -0
  1599. package/dist/typography.mjs +75 -0
  1600. package/dist/typography.mjs.map +1 -0
  1601. package/dist/use-debounced-value.d.mts +11 -0
  1602. package/dist/use-debounced-value.d.mts.map +1 -0
  1603. package/dist/use-debounced-value.mjs +25 -0
  1604. package/dist/use-debounced-value.mjs.map +1 -0
  1605. package/dist/use-document-dir.d.mts +15 -0
  1606. package/dist/use-document-dir.d.mts.map +1 -0
  1607. package/dist/use-document-dir.mjs +33 -0
  1608. package/dist/use-document-dir.mjs.map +1 -0
  1609. package/dist/use-persistent-state.d.mts +9 -0
  1610. package/dist/use-persistent-state.d.mts.map +1 -0
  1611. package/dist/use-persistent-state.mjs +29 -0
  1612. package/dist/use-persistent-state.mjs.map +1 -0
  1613. package/dist/use-toast.d.mts +47 -0
  1614. package/dist/use-toast.d.mts.map +1 -0
  1615. package/dist/use-toast.mjs +119 -0
  1616. package/dist/use-toast.mjs.map +1 -0
  1617. package/dist/vertical-zoom-tools.d.mts +27 -0
  1618. package/dist/vertical-zoom-tools.d.mts.map +1 -0
  1619. package/dist/vertical-zoom-tools.mjs +66 -0
  1620. package/dist/vertical-zoom-tools.mjs.map +1 -0
  1621. package/dist/view-tab-bar.d.mts +75 -0
  1622. package/dist/view-tab-bar.d.mts.map +1 -0
  1623. package/dist/view-tab-bar.mjs +80 -0
  1624. package/dist/view-tab-bar.mjs.map +1 -0
  1625. package/dist/viewer-toolbar.d.mts +41 -0
  1626. package/dist/viewer-toolbar.d.mts.map +1 -0
  1627. package/dist/viewer-toolbar.mjs +271 -0
  1628. package/dist/viewer-toolbar.mjs.map +1 -0
  1629. package/dist/violation-list.d.mts +26 -0
  1630. package/dist/violation-list.d.mts.map +1 -0
  1631. package/dist/violation-list.mjs +53 -0
  1632. package/dist/violation-list.mjs.map +1 -0
  1633. package/dist/walkthrough-modal.d.mts +12 -0
  1634. package/dist/walkthrough-modal.d.mts.map +1 -0
  1635. package/dist/walkthrough-modal.mjs +28 -0
  1636. package/dist/walkthrough-modal.mjs.map +1 -0
  1637. package/dist/walkthrough-tile.d.mts +17 -0
  1638. package/dist/walkthrough-tile.d.mts.map +1 -0
  1639. package/dist/walkthrough-tile.mjs +75 -0
  1640. package/dist/walkthrough-tile.mjs.map +1 -0
  1641. package/dist/week-selector.d.mts +45 -0
  1642. package/dist/week-selector.d.mts.map +1 -0
  1643. package/dist/week-selector.mjs +101 -0
  1644. package/dist/week-selector.mjs.map +1 -0
  1645. package/dist/widget-card.d.mts +18 -0
  1646. package/dist/widget-card.d.mts.map +1 -0
  1647. package/dist/widget-card.mjs +46 -0
  1648. package/dist/widget-card.mjs.map +1 -0
  1649. package/dist/wizard-dialog.d.mts +68 -0
  1650. package/dist/wizard-dialog.d.mts.map +1 -0
  1651. package/dist/wizard-dialog.mjs +108 -0
  1652. package/dist/wizard-dialog.mjs.map +1 -0
  1653. package/dist/work-item-card.d.mts +38 -0
  1654. package/dist/work-item-card.d.mts.map +1 -0
  1655. package/dist/work-item-card.mjs +231 -0
  1656. package/dist/work-item-card.mjs.map +1 -0
  1657. package/dist/worker-profile.d.mts +244 -0
  1658. package/dist/worker-profile.d.mts.map +1 -0
  1659. package/dist/worker-profile.mjs +621 -0
  1660. package/dist/worker-profile.mjs.map +1 -0
  1661. package/dist/zoom-tools.d.mts +29 -0
  1662. package/dist/zoom-tools.d.mts.map +1 -0
  1663. package/dist/zoom-tools.mjs +94 -0
  1664. package/dist/zoom-tools.mjs.map +1 -0
  1665. package/package.json +1792 -0
  1666. package/skills/core-ui-charts/SKILL.md +243 -0
  1667. package/skills/core-ui-chat/SKILL.md +260 -0
  1668. package/skills/core-ui-components/SKILL.md +299 -0
  1669. package/skills/core-ui-composition/SKILL.md +186 -0
  1670. package/skills/core-ui-data-table/SKILL.md +243 -0
  1671. package/skills/core-ui-forms/SKILL.md +289 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-app-sidebar.mjs","names":[],"sources":["../../src/navigation/core-app-sidebar.tsx"],"sourcesContent":["import {\n\tAlertTriangle,\n\tBarChart3,\n\tBell,\n\tBuilding2,\n\tCamera,\n\tCheck,\n\tChevronDown,\n\tChevronLeft,\n\tChevronRight,\n\tClipboardCheck,\n\tClock,\n\tCloud,\n\tEye,\n\tGlobe,\n\tHome,\n\tLayoutGrid,\n\tLifeBuoy,\n\tLogOut,\n\tMoon,\n\tMoreHorizontal,\n\tPackage,\n\tPanelLeftOpen,\n\tPanelRightOpen,\n\tPlus,\n\tSearch,\n\tSettings,\n\tSparkles,\n\tSun,\n\tTrendingUp,\n\tUsers,\n\tVideo,\n} from \"lucide-react\";\nimport {Fragment, forwardRef, useState, useEffect, useRef} from \"react\";\n\nimport {Avatar, AvatarFallback, AvatarImage} from \"../avatar\";\nimport {Badge} from \"../badge\";\nimport {Button} from \"../button\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from \"../dropdown-menu\";\nimport {FLOAT_SHADOW} from \"../float-shadow\";\nimport {Popover, PopoverContent, PopoverTrigger} from \"../popover\";\nimport {ScrollArea} from \"../scroll-area\";\nimport {Separator} from \"../separator\";\nimport {Sheet, SheetContent} from \"../sheet\";\nimport {HoverTooltip, TooltipProvider} from \"../tooltip\";\nimport {useDocumentDir} from \"../use-document-dir\";\nimport {Switcher} from \"./switcher\";\n\n// ─── Types ──────────────────────────────────────────────────────────────────\n\nexport type SidebarSubItem = {\n\tid: string;\n\tlabel: string;\n\ticon: React.ComponentType<{className?: string}>;\n\tbadge?: string;\n};\n\nexport type SidebarSubMenuGroup = {\n\tlabel?: string;\n\titems: SidebarSubItem[];\n};\n\nexport type SidebarSubMenu = {\n\ttitle: string;\n\tgroups: SidebarSubMenuGroup[];\n};\n\nexport type SidebarNavItem = {\n\tid: string;\n\tlabel: string;\n\ticon: React.ComponentType<{className?: string}>;\n\t/** Optional route used for semantic navigation links and runtime route continuity checks. */\n\thref?: string;\n\tbadge?: string;\n\t/** Small status dot on the icon — pass one of your app's bg-* classes (e.g. `\"bg-green-500\"`). */\n\tdot?: string;\n\t/**\n\t * A soft tint behind the item's icon, as a class string — the library's `bg-{hue}-500/10\n\t * text-{hue}-700 dark:text-{hue}-400` formula, the same one the file system's file types and\n\t * Badge's `*Soft` variants use, so a hue means the same thing wherever the reader meets it. Use it\n\t * where the items in a group are KINDS of thing worth telling apart at a glance (the apps under a\n\t * lifecycle stage, say); omit it and the icon keeps the muted treatment every nav row has, which is\n\t * every existing consumer. Tint a whole group or none of it — one tinted row among plain ones reads\n\t * as a status, not a kind.\n\t */\n\ttone?: string;\n\texpandable?: boolean;\n\tsubMenu?: SidebarSubMenu;\n};\n\n/** One row of the built-in notifications panel. */\nexport type SidebarNotification = {\n\tid: string;\n\ttitle: string;\n\t/** Optional supporting line under the title — a title-only notification renders without it. */\n\tbody?: string;\n\t/** Already-formatted, because only the caller knows the reader's locale and timezone. */\n\ttime: string;\n\tunread?: boolean;\n};\n\nexport type SidebarNavGroup = {\n\tlabel?: string;\n\t/**\n\t * Icon standing for the group as a whole. Shown beside the label in the expanded sidebar — where it\n\t * also marks the group as a TREE (parent-sized header, a spine down to the last item, an elbow into\n\t * each) — and, in the collapsed rail, it REPLACES the group's individual icons with a single button\n\t * whose flyout lists the items, exactly as an `expandable` item with a `subMenu` behaves. One\n\t * drill-in mechanism for both, so a group and an item never behave differently in the rail. The icon\n\t * is what the rail has to show once the labels are gone, so a tree group needs one.\n\t *\n\t * Requires `label` (the flyout is titled by it). Groups without an icon keep the default rail\n\t * behaviour: every item rendered as its own icon.\n\t */\n\ticon?: React.ComponentType<{className?: string}>;\n\t/**\n\t * Give the group header a chevron on its far right that collapses and expands the items beneath it.\n\t * Expanded sidebar only — the collapsed rail has no headers, and a group with an `icon` already\n\t * folds into a single flyout there. Groups start expanded. Requires `label`.\n\t */\n\tcollapsible?: boolean;\n\t/**\n\t * Force a divider above this group — in the expanded nav AND the collapsed rail — for a group that\n\t * starts a genuinely different section rather than continuing the run above it. Independent of\n\t * `showGroupDividers`: it stands when the automatic rules between groups are switched off, which is\n\t * how a break survives `variant=\"tree\"`. In the rail it also overrides the rule that consecutive\n\t * icon-groups run together (each already being a single icon, so rules between them are noise).\n\t */\n\tdividerBefore?: boolean;\n\t/**\n\t * Identifies the group. `activeGroupId` marks it (and its rail icon) as the active section, and the\n\t * collapsed rail's flyout title fires `onGroupSelect` with it. The EXPANDED header does not\n\t * navigate: name, icon and chevron all fold the group, so nothing there is a link. Requires\n\t * `label`.\n\t */\n\tid?: string;\n\titems: SidebarNavItem[];\n};\n\ntype ThemeMode = \"light\" | \"dark\";\n\n/**\n * Overridable copy for `CoreAppSidebar`'s own built-in controls — search, empty state, collapse/expand,\n * the profile menu, notifications, and the org switcher — plus their aria-labels. Every key has an\n * English default, so a consumer supplies only the strings it wants to translate. Nav-item labels, the\n * org/user names, and other consumer-provided data are not part of this (they arrive already-localized\n * via their own props); `homeLabel`, `marketplaceLabel`, and `brandName` keep their dedicated props.\n */\nexport type CoreAppSidebarLabels = {\n\t/** Search input placeholder and the collapsed rail's search tooltip. */\n\tfind: string;\n\t/** Aria label for the search field's clear button. */\n\tclearSearch: string;\n\t/** Heading of the \"no matches\" empty state. */\n\tnoResults: string;\n\t/** Sub-heading of the empty state, given the current query. */\n\tnoResultsHint: (query: string) => string;\n\t/** Tooltip on the fold-all control while at least one group is open. */\n\tcollapseAll: string;\n\t/** Tooltip on the fold-all control while every group is folded. */\n\texpandAll: string;\n\t/** Aria label for the fold-all control while at least one group is open. */\n\tcollapseAllGroups: string;\n\t/** Aria label for the fold-all control while every group is folded. */\n\texpandAllGroups: string;\n\t/** Aria label for a group header's chevron while the group is open, given its name. */\n\tcollapseGroup: (group: string) => string;\n\t/** Shown when there are no notifications at all. */\n\tnotificationsEmpty: string;\n\t/** The action at the foot of the notifications panel. */\n\tviewAllNotifications: string;\n\t/** Screen-reader text for the unread count, given the number. */\n\tunreadCount: (count: number) => string;\n\t/** Aria label for a group header's chevron while the group is folded, given its name. */\n\texpandGroup: (group: string) => string;\n\t/** Aria label for the collapsed rail's expand button. */\n\texpandSidebar: string;\n\t/** Aria label for the expanded sidebar's collapse button. */\n\tcollapseSidebar: string;\n\t/** Aria label for the pin button. */\n\tpinSidebar: string;\n\t/** Label beside the light/dark toggle in the profile menu. */\n\ttheme: string;\n\t/** Aria label for each theme toggle button, given the mode it selects. */\n\tthemeToggle: (mode: ThemeMode) => string;\n\t/** The profile menu's log-out item. */\n\tlogOut: string;\n\t/** Heading of the build/version \"Source\" section in the profile menu. */\n\tsource: string;\n\t/** Aria label for the footer notifications button. */\n\topenNotifications: string;\n\t/** Tooltip for the collapsed rail's notifications icon. */\n\tnotifications: string;\n\t/** The notifications panel's \"all\" tab. */\n\tnotificationsAll: string;\n\t/** The notifications panel's \"projects\" tab. */\n\tnotificationsProjects: string;\n\t/** The notifications panel's \"system\" tab. */\n\tnotificationsSystem: string;\n\t/** Aria label for the profile trigger, given the signed-in name. */\n\tprofileMenu: (name: string) => string;\n\t/** Placeholder for the org switcher's search field. */\n\torgSearchPlaceholder: string;\n\t/** Empty state for the org switcher. */\n\torgEmpty: string;\n\t/** The org switcher's \"view all organizations\" action. */\n\torgViewAll: string;\n};\n\nconst DEFAULT_SIDEBAR_LABELS: CoreAppSidebarLabels = {\n\tfind: \"Find...\",\n\tclearSearch: \"Clear search\",\n\tnoResults: \"No results\",\n\tnoResultsHint: (query) => `No nav items match \"${query}\"`,\n\tcollapseAll: \"Collapse all\",\n\texpandAll: \"Expand all\",\n\tcollapseAllGroups: \"Collapse all groups\",\n\texpandAllGroups: \"Expand all groups\",\n\tnotificationsEmpty: \"You're all caught up\",\n\tviewAllNotifications: \"View all notifications\",\n\tunreadCount: (count) => `${count} unread`,\n\tcollapseGroup: (group) => `Collapse ${group}`,\n\texpandGroup: (group) => `Expand ${group}`,\n\texpandSidebar: \"Expand sidebar\",\n\tcollapseSidebar: \"Collapse sidebar\",\n\tpinSidebar: \"Pin sidebar\",\n\ttheme: \"Theme\",\n\tthemeToggle: (mode) => `Use ${mode} theme`,\n\tlogOut: \"Log Out\",\n\tsource: \"Source\",\n\topenNotifications: \"Open notifications\",\n\tnotifications: \"Notifications\",\n\tnotificationsAll: \"All\",\n\tnotificationsProjects: \"Projects\",\n\tnotificationsSystem: \"System\",\n\tprofileMenu: (name) => `Open ${name} profile menu`,\n\torgSearchPlaceholder: \"Find organization…\",\n\torgEmpty: \"No organizations\",\n\torgViewAll: \"View all organizations\",\n};\n\n// localStorage keys — theme and sidebar collapse persist across reloads for every app on this shell.\nconst THEME_KEY = \"wc3.theme\";\nconst COLLAPSE_KEY = \"wc3.sidebar.collapsed\";\ntype View = \"main\" | \"sub\";\n\n// ─── Data ────────────────────────────────────────────────────────────────────\n\nexport const DEFAULT_PROJECT_GROUPS: SidebarNavGroup[] = [\n\t{\n\t\titems: [{id: \"proj-dashboard\", label: \"Dashboard\", icon: LayoutGrid}],\n\t},\n\t{\n\t\tlabel: \"Workforce\",\n\t\titems: [\n\t\t\t{id: \"proj-verify-time\", label: \"Verify Time\", icon: Clock},\n\t\t\t{id: \"proj-site-workforce\", label: \"Site Workforce\", icon: Users},\n\t\t\t{id: \"proj-reports\", label: \"Reports\", icon: ClipboardCheck},\n\t\t],\n\t},\n\t{\n\t\tlabel: \"Site Operations\",\n\t\titems: [\n\t\t\t{id: \"proj-network-admin\", label: \"Network Administrator\", icon: Globe},\n\t\t\t{id: \"proj-map\", label: \"Map\", icon: Globe},\n\t\t\t{id: \"proj-vision-ai\", label: \"Vision AI\", icon: Eye},\n\t\t\t{id: \"proj-observation-mgr\", label: \"Observation Manager\", icon: AlertTriangle},\n\t\t],\n\t},\n\t{\n\t\tlabel: \"Tools\",\n\t\titems: [\n\t\t\t{id: \"proj-verify-response\", label: \"Verify Response\", icon: Check},\n\t\t\t{id: \"proj-weather\", label: \"Weather Station\", icon: Cloud},\n\t\t\t{id: \"proj-equipment\", label: \"Equipments\", icon: Settings},\n\t\t\t{id: \"proj-wecare\", label: \"Wecare\", icon: LifeBuoy},\n\t\t\t{id: \"proj-capture\", label: \"Capture\", icon: Camera},\n\t\t],\n\t},\n];\n\n// ─── Org-level nav ────────────────────────────────────────────────────────────\n\nexport const DEFAULT_ORG_GROUPS: SidebarNavGroup[] = [\n\t{\n\t\titems: [\n\t\t\t{id: \"org-overview\", label: \"Overview\", icon: LayoutGrid},\n\t\t\t{id: \"org-projects\", label: \"Projects\", icon: Package},\n\t\t],\n\t},\n\t{\n\t\tlabel: \"Monitoring\",\n\t\titems: [\n\t\t\t{id: \"org-compliance\", label: \"Compliance Forms\", icon: ClipboardCheck},\n\t\t\t{id: \"org-observations\", label: \"Observations\", icon: Eye},\n\t\t\t{id: \"org-cctv\", label: \"CCTV\", icon: Video},\n\t\t\t{id: \"org-progress\", label: \"Progress\", icon: TrendingUp},\n\t\t],\n\t},\n\t{\n\t\tlabel: \"Intelligence\",\n\t\titems: [\n\t\t\t{id: \"org-reality-capture\", label: \"Reality Capture\", icon: Camera},\n\t\t\t{id: \"org-ai-reports\", label: \"AI Reports\", icon: Sparkles},\n\t\t\t{id: \"org-workforce\", label: \"Workforce Intelligence\", icon: Users},\n\t\t\t{id: \"org-performance\", label: \"Performance\", icon: BarChart3},\n\t\t],\n\t},\n\t{\n\t\titems: [\n\t\t\t{\n\t\t\t\tid: \"org-settings\",\n\t\t\t\tlabel: \"Settings\",\n\t\t\t\ticon: Settings,\n\t\t\t\texpandable: true,\n\t\t\t\tsubMenu: {\n\t\t\t\t\ttitle: \"Settings\",\n\t\t\t\t\tgroups: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\t{id: \"os-general\", label: \"General\", icon: Settings},\n\t\t\t\t\t\t\t\t{id: \"os-members\", label: \"Members\", icon: Users},\n\t\t\t\t\t\t\t\t{id: \"os-billing\", label: \"Billing\", icon: Clock},\n\t\t\t\t\t\t\t\t{id: \"os-integrations\", label: \"Integrations\", icon: Building2},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n];\n\n/** Demo data for prototypes. Real callers pass `notifications`. */\nconst SAMPLE_NOTIFICATIONS: SidebarNotification[] = [\n\t{\n\t\tid: \"n1\",\n\t\ttitle: \"Deployment succeeded\",\n\t\tbody: \"owner-dashboard deployed to production\",\n\t\ttime: \"2m ago\",\n\t\tunread: true,\n\t},\n\t{id: \"n2\", title: \"Build failed\", body: \"modon-prototype build #42 failed\", time: \"1h ago\", unread: true},\n\t{id: \"n3\", title: \"New team member\", body: \"ali@core.com joined Organization Name\", time: \"3h ago\", unread: false},\n\t{id: \"n4\", title: \"Usage alert\", body: \"You've reached 80% of your monthly limit\", time: \"1d ago\", unread: false},\n\t{id: \"n5\", title: \"Pipeline finished\", body: \"BIM intake processed 1,204 records\", time: \"1d ago\", unread: false},\n\t{id: \"n6\", title: \"Permit approved\", body: \"Hot work permit HW-2291 was approved\", time: \"2d ago\", unread: false},\n\t{id: \"n7\", title: \"Report ready\", body: \"Weekly workforce summary is ready to read\", time: \"2d ago\", unread: false},\n\t{id: \"n8\", title: \"Device offline\", body: \"Gateway GW-17 stopped reporting\", time: \"3d ago\", unread: false},\n\t{id: \"n9\", title: \"Process published\", body: \"Inspection routing v4 is live\", time: \"4d ago\", unread: false},\n];\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\nfunction CoreWLogo({className}: {className?: string}) {\n\treturn (\n\t\t<svg\n\t\t\tviewBox=\"0 0 278.78 176.15\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\taria-hidden=\"true\"\n\t\t\tfill=\"currentColor\"\n\t\t\tclassName={className}\n\t\t>\n\t\t\t<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\" />\n\t\t</svg>\n\t);\n}\n\n// ─── Main Component ───────────────────────────────────────────────────────────\n\nexport type CoreAppSidebarDensity = \"comfortable\" | \"compact\";\n\n/**\n * The overall shape of the nav.\n *\n * `\"list\"` (default) is the flat shape every existing consumer gets: groups are headings over a\n * run of rows, separated by rules, all open on first paint.\n *\n * `\"tree\"` is the grouped-sections shape — groups carrying an `icon` render as a tree (parent-sized\n * header, a spine down to the last item, an elbow into each), the rules between them drop away\n * because the headers and spines already mark every boundary, and the sidebar opens as a short list\n * of section headers that expand on demand. Use it when the nav is long enough that a flat list\n * buries things, and its sections are destinations in their own right.\n *\n * The variant only supplies DEFAULTS for `showGroupDividers` and `groupsCollapsedByDefault`; pass\n * either explicitly to override it. Search is orthogonal — set `showSearch` yourself in both shapes.\n */\nexport type CoreAppSidebarVariant = \"list\" | \"tree\";\n\nexport interface CoreAppSidebarProps {\n\tonNavigate?: (label: string, keepOpen?: boolean, parentLabel?: string) => void;\n\t/**\n\t * Fires with the selected item itself (and, for a sub-menu row, its parent), so a consumer can track\n\t * selection by the stable `id` — `onNavigateItem={(item) => setActiveItemId(item.id)}` — instead of\n\t * reverse-mapping the `label` string that `onNavigate` reports. Fires alongside `onNavigate` for every\n\t * selection: top-level items, sub-menu rows, and the auto-selected first item on a view-level switch.\n\t */\n\tonNavigateItem?: (item: SidebarNavItem | SidebarSubItem, parent?: SidebarNavItem) => void;\n\t/**\n\t * Overrides for the sidebar's own built-in copy — search, empty state, collapse/expand controls, the\n\t * profile menu, notifications, and the org switcher, plus their aria-labels. English defaults fill in\n\t * any key left unset. See {@link CoreAppSidebarLabels}.\n\t */\n\tlabels?: Partial<CoreAppSidebarLabels>;\n\tseamless?: boolean;\n\tonPin?: () => void;\n\t/**\n\t * Mobile behavior: below `md` the inline sidebar is hidden and instead opens as a left sheet driven\n\t * by these. Pair with `CoreAppTopBar`'s `onMenuClick` (the hamburger) to open it. Omit on surfaces\n\t * that don't need a mobile drawer.\n\t */\n\tmobileOpen?: boolean;\n\tonMobileOpenChange?: (open: boolean) => void;\n\tviewLevel?: \"org\" | \"project\";\n\t/** Custom org-level navigation groups. Defaults to DEFAULT_ORG_GROUPS. */\n\torgGroups?: SidebarNavGroup[];\n\t/** Custom project-level navigation groups. Defaults to DEFAULT_PROJECT_GROUPS. */\n\tprojectGroups?: SidebarNavGroup[];\n\t/**\n\t * Density of nav items, group labels, and sub-nav rows.\n\t * `\"comfortable\"` (default) keeps the current sizing; `\"compact\"` shrinks\n\t * padding, text, and icons so a long list of menu items fits more vertical\n\t * space.\n\t */\n\tdensity?: CoreAppSidebarDensity;\n\t/**\n\t * The shape of the nav: `\"list\"` (default) for the flat, ruled, all-open list, `\"tree\"` for\n\t * grouped sections that fold to their icon. See {@link CoreAppSidebarVariant}. Sets the defaults\n\t * for `showGroupDividers` and `groupsCollapsedByDefault`, both of which still override it.\n\t */\n\tvariant?: CoreAppSidebarVariant;\n\t/**\n\t * When `true`, the sidebar renders as a narrow icon-only rail: labels, the\n\t * org name, search field, and notification/profile text are hidden, leaving\n\t * just the icons with hover tooltips. Works for both densities. Defaults to\n\t * `false` (full-width sidebar).\n\t */\n\tcollapsed?: boolean;\n\t/**\n\t * Called whenever the user toggles collapse from inside the sidebar (the\n\t * header collapse button or the rail's expand button). Lets a parent react —\n\t * e.g. animate the sidebar container's width to match the rail. The\n\t * component still owns its `isCollapsed` state; treat this as a notification.\n\t */\n\tonCollapsedChange?: (collapsed: boolean) => void;\n\t/**\n\t * Controlled active item. Pass the id of the active top-level item OR a\n\t * sub-menu item; the sidebar highlights it and (for a sub-item) opens its\n\t * owning sub-menu. Keeps selection in sync with a host app's route in BOTH\n\t * densities — the expanded sub-view and the collapsed icon rail / flyout.\n\t * Omit to keep the current uncontrolled behavior.\n\t */\n\tactiveItemId?: string;\n\t/**\n\t * Build/version metadata shown in the footer dropdowns under a \"Source\"\n\t * section. Pass `commit` and/or `branch` to surface the deployed version.\n\t * Consumers typically wire these from build-time env vars (e.g. Vite's\n\t * `import.meta.env.VITE_COMMIT_SHA`). The section is omitted when both\n\t * fields are empty.\n\t */\n\tplatformStatus?: {\n\t\tcommit?: string;\n\t\tbranch?: string;\n\t};\n\t/**\n\t * Show the find/search input. Defaults to `true`. Set `false` for sidebars\n\t * with only a handful of nav items where search adds no value. Applies to both\n\t * the expanded sidebar and the collapsed icon rail.\n\t */\n\tshowSearch?: boolean;\n\t/**\n\t * Show the notifications control in the footer (comfortable density) and the\n\t * collapsed rail. Defaults to `true`. Set `false` for surfaces that don't have\n\t * notifications.\n\t */\n\tshowNotifications?: boolean;\n\t/**\n\t * Show the footer profile bar (avatar, name, account menu, and notifications).\n\t * Defaults to `true`. Set `false` for embedded/kiosk surfaces that don't need a\n\t * user/account area. Applies to both the expanded sidebar and the collapsed rail.\n\t */\n\tshowFooter?: boolean;\n\t/**\n\t * Current theme for the footer light/dark toggle. When provided, the sidebar is CONTROLLED — it reflects\n\t * this value and calls `onThemeChange` on toggle without touching the DOM (the host owns applying it).\n\t * When omitted, the sidebar is uncontrolled: it seeds from the document's `.dark` class and toggles that\n\t * class on `document.documentElement` itself, so the footer toggle works out of the box.\n\t */\n\ttheme?: ThemeMode;\n\t/** Fires when the footer theme toggle is used. Always called; pair with `theme` for controlled mode. */\n\tonThemeChange?: (theme: ThemeMode) => void;\n\t/**\n\t * Optional custom node pinned to the bottom of the EXPANDED sidebar (below the nav, above the profile\n\t * bar). Not shown in the collapsed rail. Use it for a brand/news/updates card or similar.\n\t */\n\tfooterContent?: React.ReactNode;\n\t/**\n\t * Brand shown in the expanded sidebar header, replacing the default mark + name.\n\t * Pass a sized element (e.g. `<img className=\"h-6 w-auto\" />`); it should\n\t * keep its own aspect ratio and fit the header height.\n\t */\n\tlogo?: React.ReactNode;\n\t/**\n\t * Brand shown at the top of the collapsed icon rail. Hovering it reveals an\n\t * expand affordance, and clicking expands the sidebar.\n\t */\n\tlogoCollapsed?: React.ReactNode;\n\t/**\n\t * Turn the expanded header brand into an ORG SWITCHER. The header renders the Core mark, a `/`\n\t * separator, then a dropdown showing the selected org's logo + name + chevron that opens a searchable\n\t * list of organizations. Pass the org names; `activeOrg` is the current selection and `onOrgChange`\n\t * fires on pick. When omitted, the header shows the static brand. Ignored when a custom `logo` is provided.\n\t */\n\torgs?: string[];\n\t/** The currently selected organization (defaults to the first of `orgs`). */\n\tactiveOrg?: string;\n\t/** Logo node for the selected org, shown in the switcher trigger before its name (e.g. a small `<img>`). */\n\tactiveOrgLogo?: React.ReactNode;\n\t/** Fires when an organization is picked from the switcher. */\n\tonOrgChange?: (org: string) => void;\n\t/** When set, adds a \"View all organizations\" action to the bottom of the org switcher dropdown. */\n\tonOrgViewAll?: () => void;\n\t/**\n\t * The signed-in user shown in the footer profile bar (expanded drawer, collapsed rail, and the\n\t * account menu). When omitted, a placeholder is shown so existing callers are unaffected.\n\t * `avatarUrl` renders via `AvatarImage`, falling back to the name's initials over the gradient.\n\t */\n\tuser?: {name: string; email?: string; avatarUrl?: string};\n\t/**\n\t * Fires when the footer \"Log Out\" item is chosen. Wires the otherwise-inert Log Out control; when\n\t * omitted the item stays inert (unchanged legacy behavior).\n\t */\n\tonLogout?: () => void;\n\t/**\n\t * Show the \"Home\" entry pinned at the very top of the nav (above the app items). Defaults to `true`, so\n\t * every app built on this shell exposes a Home affordance. Wire `onHome` to navigate; `homeActive`\n\t * highlights it.\n\t */\n\tshowHome?: boolean;\n\t/** Label for the Home entry (expanded sidebar and rail tooltip). Defaults to `\"Home\"`. */\n\thomeLabel?: string;\n\t/**\n\t * Draw a divider between the Home entry and the nav groups below it. Defaults to `true`. Set to\n\t * `false` when Home reads as the head of the first group rather than a section of its own — for\n\t * example a Home that lands on the installed apps listed directly beneath it. Only governs Home\n\t * standing ALONE: with a `pinnedTop`, Home joins that pinned block and the block's own divider\n\t * applies instead.\n\t */\n\tshowHomeDivider?: boolean;\n\t/**\n\t * Draw the automatic divider between every pair of consecutive nav groups. Defaults to `true` under\n\t * `variant=\"list\"` and `false` under `variant=\"tree\"`, where the headers and spines already read as\n\t * separate and the extra rules would only add noise. Set it explicitly to override the variant. A\n\t * group's own `dividerBefore` is independent and still stands when this is `false`.\n\t */\n\tshowGroupDividers?: boolean;\n\t/**\n\t * Start every `collapsible` group folded, so the sidebar opens as a short list of section headers\n\t * rather than the full tree. Defaults to `false` under `variant=\"list\"` and `true` under\n\t * `variant=\"tree\"`; set it explicitly to override the variant. Individual groups still remember\n\t * whatever the user does to them afterwards.\n\t */\n\tgroupsCollapsedByDefault?: boolean;\n\t/** Fires when the Home entry is chosen. */\n\tonHome?: () => void;\n\t/** Highlight the Home entry as the active surface. */\n\thomeActive?: boolean;\n\t/**\n\t * Show the \"Marketplace\" action — a plus button pinned directly under the app nav items. In the\n\t * collapsed rail it's just the plus icon; expanded it's plus + label. Defaults to `true`, so every\n\t * app built on this shell exposes the marketplace/app-installer entry.\n\t */\n\tshowMarketplace?: boolean;\n\t/** Label for the marketplace action (expanded sidebar and rail tooltip). Defaults to `\"Marketplace\"`. */\n\tmarketplaceLabel?: string;\n\t/** Fires when the marketplace action is chosen. */\n\tonMarketplace?: () => void;\n\t/** Highlight the marketplace action as the active surface (e.g. the App Installer template). */\n\tmarketplaceActive?: boolean;\n\t/** Label for the Search row. Defaults to `\"Search\"`. */\n\tsearchLabel?: string;\n\t/**\n\t * Fires when the Search row is chosen. The row is a plain nav entry, not an input — wire this to\n\t * whatever surface does the searching (a command palette or modal). Omit and the row is inert.\n\t */\n\tonSearch?: () => void;\n\t/** Highlight the Search row as the active surface. */\n\tsearchActive?: boolean;\n\t/**\n\t * A single key that, with the platform's command modifier, opens search — `\"j\"` binds ⌘J on a Mac\n\t * and Ctrl+J elsewhere. It does two jobs at once: the sidebar listens for the combination while it\n\t * is mounted and calls `onSearch`, and the Search row shows the hint, so the shortcut is\n\t * discoverable rather than folklore. Needs `onSearch`; omit it and there is no binding and no hint.\n\t */\n\tsearchShortcut?: string;\n\t/** Label for the Notifications row. Defaults to `\"Notifications\"`. */\n\tnotificationsLabel?: string;\n\t/**\n\t * Fires when the Notifications row is chosen. Omit and the row opens the built-in notifications\n\t * panel instead, the same one the footer bell used to open.\n\t */\n\tonNotifications?: () => void;\n\t/** Highlight the Notifications row as the active surface. */\n\tnotificationsActive?: boolean;\n\t/**\n\t * The notifications the built-in panel lists. Pass your own and the panel renders them; omit it and\n\t * a small built-in SAMPLE is shown so the shell looks alive in a prototype. Production callers\n\t * should always pass this — the sample is demo data, not a default worth shipping.\n\t *\n\t * `unread` drives the row's emphasis; the count beside the entry comes from `unreadNotifications`\n\t * so a caller whose unread total is bigger than the page it loaded can still say so.\n\t */\n\tnotifications?: SidebarNotification[];\n\t/** Fires when a notification in the panel is chosen, with the notification itself. */\n\tonNotificationSelect?: (notification: SidebarNotification) => void;\n\t/**\n\t * How many notifications are unread. Shown as a count beside the Notifications entry — a number in\n\t * the expanded row, and the same number on the collapsed rail's icon, so the rail never hides what\n\t * the open sidebar would have told you. `0` or omitted shows nothing at all: a zero badge is a\n\t * a claim that something needs attention when nothing does. Counts above 99 render as `99+`.\n\t */\n\tunreadNotifications?: number;\n\t/**\n\t * Fires when \"View all notifications\" at the foot of the notifications panel is chosen. The panel\n\t * only ever shows the most recent few, so this is the way out to the full surface. Omit it and the\n\t * action is not rendered.\n\t */\n\tonViewAllNotifications?: () => void;\n\t/**\n\t * An entry pinned directly under the search field, at the head of the pinned block it shares with\n\t * Home: the two run together and ONE divider falls beneath the pair, so the nav groups below read\n\t * as the separate section. For a surface that sits outside the app hierarchy rather than inside it\n\t * — a file system over every app's records, say, beside the Home that launches those apps. A pinned\n\t * entry always takes that divider, whatever `showHomeDivider` says. Omit and nothing renders, which\n\t * is every existing consumer.\n\t */\n\tpinnedTop?: {\n\t\tid: string;\n\t\tlabel: string;\n\t\ticon: React.ComponentType<{className?: string}>;\n\t\tonSelect?: () => void;\n\t\tactive?: boolean;\n\t};\n\t/**\n\t * Product name shown beside the logo when no org switcher is present. Defaults to `\"WC3\"`.\n\t */\n\tbrandName?: string;\n\t/**\n\t * Fires when a group is chosen from the COLLAPSED rail's flyout title. The expanded header no\n\t * longer navigates — its name folds the group, the same as its chevron — so this is the only\n\t * gesture that reports a group. Only groups carrying an `id` can fire it.\n\t */\n\tonGroupSelect?: (groupId: string) => void;\n\t/**\n\t * Mark a group as the active surface, by its `id` — the header takes full-strength foreground and\n\t * its rail icon lights. A mark, not a link: the header does not navigate.\n\t */\n\tactiveGroupId?: string;\n}\n\n// `inert` as an ATTRIBUTE rather than a boolean prop: React 18 rejects `inert={true}` as a non-boolean\n// attribute, and this component ships to consumers on both 18 and 19.\nconst INERT = {inert: \"\"} as unknown as {inert?: string};\n\nconst SIDEBAR_DENSITY = {\n\tcomfortable: {\n\t\tcontainer: \"wwc:pl-2 wwc:pr-3 wwc:py-2\",\n\t\trow: \"wwc:gap-3 wwc:px-3 wwc:py-[7px] wwc:text-[13px]\",\n\t\ticonSize: \"wwc:h-[15px] wwc:w-[15px]\",\n\t\t// The pinned block (Search / pinned entry / Home / Notifications) is already at row size here —\n\t\t// there is nothing above it to sit between.\n\t\tpinnedRow: \"wwc:gap-3 wwc:px-3 wwc:py-[7px] wwc:text-[13px]\",\n\t\tpinnedIconSize: \"wwc:h-[15px] wwc:w-[15px]\",\n\t\tspacing: \"wwc:space-y-0.5\",\n\t\t// The pinned block's rows are the taller ones, so they carry their own gap.\n\t\tpinnedSpacing: \"wwc:space-y-0.5\",\n\t\t// The Core mark, ONE size for both states. It used to be h-5 expanded and the nav icon size\n\t\t// collapsed, so toggling the sidebar resized the brand — and the collapsed rule set an explicit\n\t\t// width, squashing a mark that is wider than it is tall. This sits between the two and keeps\n\t\t// `w-auto`, so the mark holds its shape and its size whatever the sidebar is doing.\n\t\tbrandMark: \"wwc:h-[18px] wwc:w-auto\",\n\t\t// A tinted item icon sits in a rounded square slightly larger than the bare icon it replaces, the\n\t\t// way the file system's rows carry theirs.\n\t\ttoneChip: \"wwc:h-[22px] wwc:w-[22px]\",\n\t\ttoneIconSize: \"wwc:h-[13px] wwc:w-[13px]\",\n\t\t// Between GROUPS. Folded, a group is one header row, so without this the section headers stack\n\t\t// flush and read as a solid block — the same problem the rows had. A notch wider than the row\n\t\t// gap, since a group is a bigger unit than a row.\n\t\tgroupGap: \"wwc:mt-1\",\n\t\tseparator: \"wwc:my-2\",\n\t\tgroupLabel: \"wwc:px-3 wwc:pt-2 wwc:pb-1 wwc:text-[10px]\",\n\t\t// An icon-group renders as a TREE: the header reads like a parent row (same metrics as `row`),\n\t\t// and its items hang off a vertical guide with a short elbow into each one.\n\t\t// Guide x = the group icon's centre (px-3 = 12px + half of the 15px icon). It starts below the\n\t\t// icon so the two never touch, and stops at the LAST item's elbow rather than running past it —\n\t\t// `bottom` is half a row, measured from the items container's bottom edge.\n\t\tgroupGuide: \"wwc:left-[19px] wwc:top-[26px] wwc:bottom-[16px]\",\n\t\t// Items begin to the RIGHT of the spine — row, hover fill and active fill all start clear of it,\n\t\t// so the line never runs through a tab. 20px is the spine's right edge; 28 leaves the elbow room.\n\t\tgroupGuideIndent: \"wwc:pl-[28px]\",\n\t\t// Elbow from the spine into an item, at the row's vertical middle. Measured from the item row's\n\t\t// own left edge, so it reaches back across the gap the indent just created.\n\t\tgroupElbow: \"wwc:left-[-8px] wwc:w-[8px]\",\n\t\tsubGroupLabel: \"wwc:px-3 wwc:py-1.5 wwc:text-[10px]\",\n\t\tbackButton: \"wwc:px-3 wwc:py-2 wwc:mb-1 wwc:text-[13px]\",\n\t\theader: \"wwc:h-11 wwc:px-3\",\n\t\tfooter: \"wwc:px-3 wwc:py-2 wwc:gap-2\",\n\t},\n\tcompact: {\n\t\tcontainer: \"wwc:pl-1.5 wwc:pr-2.5 wwc:py-1.5\",\n\t\trow: \"wwc:gap-2 wwc:px-2 wwc:py-1 wwc:text-[12px]\",\n\t\ticonSize: \"wwc:h-[14px] wwc:w-[14px]\",\n\t\t// Between the two: 6px of vertical padding against compact's 4 and comfortable's 7, a 12.5px\n\t\t// label against 12 and 13, a 15px icon against 14 and 15. `px` deliberately stays at compact's\n\t\t// 8px — growing it would push these icons out of line with the group rows beneath them, and the\n\t\t// shared icon column is what makes the block read as the same nav.\n\t\tpinnedRow: \"wwc:gap-2.5 wwc:px-2 wwc:py-[6px] wwc:text-[12.5px]\",\n\t\tpinnedIconSize: \"wwc:h-[15px] wwc:w-[15px]\",\n\t\t// Compact used to run its rows flush (space-y-0), which read as a solid block rather than a list.\n\t\t// 2px is enough to separate them without costing the density anything meaningful.\n\t\tspacing: \"wwc:space-y-0.5\",\n\t\t// The pinned rows are bigger than the nav rows here, so they get a proportionally bigger gap —\n\t\t// the block breathes a little more than the groups beneath it, which is what marks it as its own.\n\t\tpinnedSpacing: \"wwc:space-y-1\",\n\t\t// A touch smaller than comfortable's 18px, landing on the same 14px the compact nav icons use —\n\t\t// so the mark sits in the header at the density the rest of the rail is drawn at.\n\t\tbrandMark: \"wwc:h-[14px] wwc:w-auto\",\n\t\ttoneChip: \"wwc:h-5 wwc:w-5\",\n\t\ttoneIconSize: \"wwc:h-3 wwc:w-3\",\n\t\tgroupGap: \"wwc:mt-1\",\n\t\tseparator: \"wwc:my-1\",\n\t\tgroupLabel: \"wwc:px-2 wwc:pt-1.5 wwc:pb-0.5 wwc:text-[9px]\",\n\t\tgroupGuide: \"wwc:left-[15px] wwc:top-[21px] wwc:bottom-[12px]\",\n\t\tgroupGuideIndent: \"wwc:pl-[22px]\",\n\t\tgroupElbow: \"wwc:left-[-6px] wwc:w-[6px]\",\n\t\tsubGroupLabel: \"wwc:px-2 wwc:py-1 wwc:text-[9px]\",\n\t\tbackButton: \"wwc:px-2 wwc:py-1 wwc:mb-0.5 wwc:text-[12px]\",\n\t\theader: \"wwc:h-9 wwc:px-2\",\n\t\tfooter: \"wwc:px-2 wwc:py-1 wwc:gap-1.5\",\n\t},\n} as const;\n\n/** App sidebar with org switcher, search, grouped navigation, profile, and notifications. */\n/** The sidebar body. `CoreAppSidebar` renders this inline on desktop and inside a left sheet on mobile. */\nfunction SidebarShell({\n\tonNavigate,\n\tonNavigateItem,\n\tlabels,\n\tseamless = false,\n\tonPin,\n\tviewLevel = \"project\",\n\torgGroups,\n\tprojectGroups,\n\tdensity = \"comfortable\",\n\tcollapsed = false,\n\tonCollapsedChange,\n\tactiveItemId,\n\tplatformStatus,\n\tshowSearch = true,\n\tshowNotifications = true,\n\tshowFooter = true,\n\ttheme: themeProp,\n\tonThemeChange,\n\tfooterContent,\n\tlogo,\n\tlogoCollapsed,\n\torgs,\n\tactiveOrg,\n\tactiveOrgLogo,\n\tonOrgChange,\n\tonOrgViewAll,\n\tuser,\n\tonLogout,\n\tshowHome = true,\n\thomeLabel = \"Home\",\n\tsearchLabel = \"Search\",\n\tonSearch,\n\tsearchActive = false,\n\tsearchShortcut,\n\tnotificationsLabel = \"Notifications\",\n\tonNotifications,\n\tnotificationsActive = false,\n\tunreadNotifications = 0,\n\tonViewAllNotifications,\n\tnotifications,\n\tonNotificationSelect,\n\tshowHomeDivider = true,\n\tvariant = \"list\",\n\tshowGroupDividers: showGroupDividersProp,\n\tgroupsCollapsedByDefault: groupsCollapsedByDefaultProp,\n\tonHome,\n\thomeActive = false,\n\tshowMarketplace = true,\n\tmarketplaceLabel = \"Marketplace\",\n\tonMarketplace,\n\tmarketplaceActive = false,\n\tpinnedTop,\n\tbrandName = \"WC3\",\n\tonGroupSelect,\n\tactiveGroupId,\n\thideCollapse = false,\n}: CoreAppSidebarProps & {hideCollapse?: boolean} = {}) {\n\t// The variant supplies the DEFAULT for each chrome prop it owns; an explicit prop always wins, so\n\t// a caller can take the tree shape and still keep its rules (or the list shape folded).\n\t// Not `tree`: the group map below binds that name per group (an icon-group renders as a tree), and\n\t// shadowing it there would make two different questions look like one.\n\tconst treeVariant = variant === \"tree\";\n\tconst showGroupDividers = showGroupDividersProp ?? !treeVariant;\n\tconst groupsCollapsedByDefault = groupsCollapsedByDefaultProp ?? treeVariant;\n\t// Is there a pinned block at all, and does it take a rule under it? A pinned entry always earns the\n\t// rule — it is the whole point of pinning something above the nav — so `showHomeDivider` decides\n\t// only the case it is named for: Home standing alone above the groups.\n\t// ⌘ on Apple platforms, Ctrl everywhere else. Read from the UA at render rather than at module\n\t// load, so a server render and the browser that hydrates it agree.\n\tconst isApple =\n\t\ttypeof navigator !== \"undefined\" && /Mac|iPhone|iPad|iPod/.test(navigator.platform || navigator.userAgent);\n\tconst searchHint = searchShortcut ? `${isApple ? \"⌘\" : \"Ctrl+\"}${searchShortcut.toUpperCase()}` : undefined;\n\t// The shortcut lives with the row it opens, so a consumer gets the binding AND the hint from one\n\t// prop instead of wiring a listener itself and hoping the two stay in step. Bound on the document,\n\t// because the point of a command shortcut is that it works wherever focus happens to be.\n\tconst onSearchRef = useRef(onSearch);\n\tonSearchRef.current = onSearch;\n\tuseEffect(() => {\n\t\tif (!searchShortcut) return;\n\t\tconst key = searchShortcut.toLowerCase();\n\t\tconst handle = (event: KeyboardEvent) => {\n\t\t\tif (!(event.metaKey || event.ctrlKey) || event.altKey || event.shiftKey) return;\n\t\t\tif (event.key.toLowerCase() !== key) return;\n\t\t\t// Only claim the combination when there is somewhere for it to go.\n\t\t\tif (!onSearchRef.current) return;\n\t\t\tevent.preventDefault();\n\t\t\tonSearchRef.current();\n\t\t};\n\t\tdocument.addEventListener(\"keydown\", handle);\n\t\treturn () => document.removeEventListener(\"keydown\", handle);\n\t}, [searchShortcut]);\n\n\t// Caller's list when given, the sample only as a prototype convenience.\n\tconst panelNotifications = notifications ?? SAMPLE_NOTIFICATIONS;\n\t// One derivation for both surfaces. Above 99 the exact number stops being useful and starts\n\t// stretching the row, so it caps — the point is \"a lot\", not the arithmetic.\n\tconst unreadBadge = unreadNotifications > 0 ? (unreadNotifications > 99 ? \"99+\" : String(unreadNotifications)) : null;\n\t// Search, the pinned entry, Home and Notifications are all shell surfaces standing outside the app\n\t// hierarchy below, so they render as one block of peer rows — expanded and in the rail — rather than\n\t// four separately-placed affordances. `notifications` has no handler when the consumer wants the\n\t// built-in panel; the renderer wraps that one in its popover.\n\tconst pinnedEntries: {\n\t\tkey: string;\n\t\tlabel: string;\n\t\ticon: React.ComponentType<{className?: string}>;\n\t\tonSelect?: () => void;\n\t\tactive?: boolean;\n\t\t/** A count shown beside the label (expanded) and on the icon (collapsed). */\n\t\tbadge?: string | null;\n\t\t/** A keyboard hint shown at the end of the row. Expanded only — the rail has no room for it. */\n\t\thint?: string;\n\t\tbuiltInNotifications?: boolean;\n\t}[] = [\n\t\t...(showSearch\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"search\",\n\t\t\t\t\t\tlabel: searchLabel,\n\t\t\t\t\t\ticon: Search,\n\t\t\t\t\t\tonSelect: onSearch,\n\t\t\t\t\t\tactive: searchActive,\n\t\t\t\t\t\thint: searchHint,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: []),\n\t\t...(pinnedTop\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"pinned\",\n\t\t\t\t\t\tlabel: pinnedTop.label,\n\t\t\t\t\t\ticon: pinnedTop.icon,\n\t\t\t\t\t\tonSelect: pinnedTop.onSelect,\n\t\t\t\t\t\tactive: pinnedTop.active,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: []),\n\t\t...(showHome ? [{key: \"home\", label: homeLabel, icon: Home, onSelect: onHome, active: homeActive}] : []),\n\t\t...(showNotifications\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"notifications\",\n\t\t\t\t\t\tlabel: notificationsLabel,\n\t\t\t\t\t\ticon: Bell,\n\t\t\t\t\t\tonSelect: onNotifications,\n\t\t\t\t\t\tactive: notificationsActive,\n\t\t\t\t\t\tbadge: unreadBadge,\n\t\t\t\t\t\tbuiltInNotifications: !onNotifications,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: []),\n\t];\n\tconst pinnedBlock = pinnedEntries.length > 0;\n\t// A pinned entry always earns the rule beneath the block — it is the whole point of pinning a\n\t// surface above the nav — so `showHomeDivider` decides only the case it is named for: a block that\n\t// is nothing but Home.\n\tconst pinnedBlockDivider = pinnedEntries.some((e) => e.key !== \"home\") || showHomeDivider;\n\tconst d = SIDEBAR_DENSITY[density];\n\t// Built-in copy, consumer overrides layered over the English defaults (WC-GAP-03).\n\tconst L = {...DEFAULT_SIDEBAR_LABELS, ...labels};\n\t// Ambient direction, threaded into the nav ScrollAreas so they mirror under an RTL host (WC-GAP-01).\n\tconst navDir = useDocumentDir();\n\t// Footer profile — real user when provided, else the legacy placeholder (backward compatible).\n\tconst profileName = user?.name ?? \"Abdullah Alzahrani\";\n\t// Placeholder email only in the no-user legacy case; a real user with no email shows no email line.\n\tconst profileEmail = user ? user.email : \"abdullah@core.com\";\n\tconst profileAvatar = user?.avatarUrl;\n\tconst profileInitials = user\n\t\t? profileName\n\t\t\t\t.split(/\\s+/)\n\t\t\t\t.map((w) => w[0])\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.slice(0, 2)\n\t\t\t\t.join(\"\")\n\t\t\t\t.toUpperCase()\n\t\t: \"\";\n\tconst selectedOrgName = activeOrg ?? orgs?.[0] ?? \"\";\n\tconst statusCommit = platformStatus?.commit;\n\tconst statusBranch = platformStatus?.branch;\n\t// Dropdown-item sizing — shrinks in compact mode to match the sidebar's nav rows.\n\tconst ddItemClass =\n\t\tdensity === \"compact\"\n\t\t\t? \"wwc:flex wwc:items-center wwc:justify-between wwc:py-1.5\"\n\t\t\t: \"wwc:flex wwc:items-center wwc:justify-between wwc:py-2.5\";\n\tconst ddRowClass =\n\t\tdensity === \"compact\"\n\t\t\t? \"wwc:flex wwc:items-center wwc:justify-between wwc:px-2 wwc:py-1.5\"\n\t\t\t: \"wwc:flex wwc:items-center wwc:justify-between wwc:px-2 wwc:py-2.5\";\n\tconst ddTextClass = density === \"compact\" ? \"wwc:text-[12px]\" : \"wwc:text-[13px]\";\n\tconst ddIconClass = density === \"compact\" ? \"wwc:h-3.5 wwc:w-3.5\" : \"wwc:h-4 wwc:w-4\";\n\tconst [view, setView] = useState<View>(\"main\");\n\tconst [activeSubMenuId, setActiveSubMenuId] = useState<string | null>(null);\n\tconst [activeItem, setActiveItem] = useState(\"projects\");\n\tconst [notifOpen, setNotifOpen] = useState(false);\n\t// Footer theme toggle. Uncontrolled by default: restore the last choice from localStorage (falling back\n\t// to the document's `.dark` class), persist it on toggle, and apply it to `document.documentElement` — so\n\t// the theme survives a reload. Controlled when a `theme` prop is passed (host applies it via onThemeChange).\n\tconst [themeState, setThemeState] = useState<ThemeMode>(() => {\n\t\ttry {\n\t\t\tconst saved = typeof window !== \"undefined\" ? window.localStorage.getItem(THEME_KEY) : null;\n\t\t\tif (saved === \"dark\" || saved === \"light\") return saved;\n\t\t} catch {\n\t\t\t// storage unavailable — fall through to the DOM class\n\t\t}\n\t\treturn typeof document !== \"undefined\" && document.documentElement.classList.contains(\"dark\") ? \"dark\" : \"light\";\n\t});\n\t// Apply the restored theme to the DOM once on mount (uncontrolled only), so a reload shows it.\n\tuseEffect(() => {\n\t\tif (themeProp === undefined && typeof document !== \"undefined\")\n\t\t\tdocument.documentElement.classList.toggle(\"dark\", themeState === \"dark\");\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\tconst theme = themeProp ?? themeState;\n\tconst applyTheme = (m: ThemeMode) => {\n\t\tif (themeProp === undefined) {\n\t\t\tsetThemeState(m);\n\t\t\tif (typeof document !== \"undefined\") document.documentElement.classList.toggle(\"dark\", m === \"dark\");\n\t\t\ttry {\n\t\t\t\twindow.localStorage.setItem(THEME_KEY, m);\n\t\t\t} catch {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t}\n\t\tonThemeChange?.(m);\n\t};\n\n\t// The profile menu is rendered by BOTH the expanded footer (from the \"...\" button) and the\n\t// collapsed rail (from the avatar), so it lives here once — two copies would drift apart.\n\tconst renderProfileMenu = (side: \"top\" | \"right\" = \"top\", align: \"start\" | \"end\" = \"start\") => (\n\t\t<DropdownMenuContent side={side} align={align} className=\"wwc:w-[280px] wwc:rounded-xl\">\n\t\t\t<DropdownMenuLabel className=\"wwc:font-normal\">\n\t\t\t\t<div className=\"wwc:min-w-0\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`wwc:font-semibold wwc:text-foreground wwc:truncate ${density === \"compact\" ? \"wwc:text-[12px]\" : \"wwc:text-[13px]\"}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{profileName}\n\t\t\t\t\t</div>\n\t\t\t\t\t{profileEmail && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`wwc:text-muted-foreground wwc:truncate ${density === \"compact\" ? \"wwc:text-[11px]\" : \"wwc:text-[12px]\"}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{profileEmail}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</DropdownMenuLabel>\n\t\t\t<DropdownMenuSeparator />\n\t\t\t<div className={ddRowClass}>\n\t\t\t\t<span className={`${ddTextClass} wwc:text-foreground/80`}>{L.theme}</span>\n\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-0.5 wwc:border wwc:rounded-lg wwc:p-0.5\">\n\t\t\t\t\t{([\"light\", \"dark\"] as ThemeMode[]).map((m) => {\n\t\t\t\t\t\tconst Icon = m === \"light\" ? Sun : Moon;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tkey={m}\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\taria-label={L.themeToggle(m)}\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\tapplyTheme(m);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName={`${density === \"compact\" ? \"wwc:h-6 wwc:w-6\" : \"wwc:h-7 wwc:w-7\"} ${theme === m ? \"wwc:bg-muted wwc:text-foreground\" : \"wwc:text-muted-foreground/70 wwc:hover:text-foreground\"}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon className={density === \"compact\" ? \"wwc:h-3 wwc:w-3\" : \"wwc:h-3.5 wwc:w-3.5\"} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<DropdownMenuSeparator />\n\t\t\t<DropdownMenuItem className={ddItemClass} onClick={onLogout}>\n\t\t\t\t<span className={ddTextClass}>{L.logOut}</span>\n\t\t\t\t<LogOut className={`${ddIconClass} wwc:text-muted-foreground`} />\n\t\t\t</DropdownMenuItem>\n\t\t\t{(statusBranch || statusCommit) && (\n\t\t\t\t<>\n\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t<div className=\"wwc:px-2 wwc:py-3\">\n\t\t\t\t\t\t<div className=\"wwc:text-[11px] wwc:text-muted-foreground/70 wwc:uppercase wwc:tracking-wide wwc:mb-0.5\">\n\t\t\t\t\t\t\t{L.source}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1.5 wwc:text-[12px] wwc:text-muted-foreground wwc:font-mono\">\n\t\t\t\t\t\t\t{statusBranch && <span className=\"wwc:truncate\">{statusBranch}</span>}\n\t\t\t\t\t\t\t{statusBranch && statusCommit && <span aria-hidden>·</span>}\n\t\t\t\t\t\t\t{statusCommit && <span>{statusCommit}</span>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</DropdownMenuContent>\n\t);\n\n\t// Which collapsed-rail nav item currently has its sub-tab flyout open.\n\tconst [railFlyoutId, setRailFlyoutId] = useState<string | null>(null);\n\t// Which collapsible groups the user has folded shut, keyed by label. Absent = expanded, so a group\n\t// only ever needs recording once the user acts on it.\n\tconst [collapsedGroups, setCollapsedGroups] = useState<Record<string, boolean>>({});\n\t// Internal collapse state, restored from localStorage (so it survives a reload), else seeded from the\n\t// `collapsed` prop. Kept in sync with the prop when the parent drives it.\n\tconst [isCollapsed, setIsCollapsed] = useState<boolean>(() => {\n\t\ttry {\n\t\t\tconst saved = typeof window !== \"undefined\" ? window.localStorage.getItem(COLLAPSE_KEY) : null;\n\t\t\tif (saved === \"1\") return true;\n\t\t\tif (saved === \"0\") return false;\n\t\t} catch {\n\t\t\t// storage unavailable\n\t\t}\n\t\treturn collapsed;\n\t});\n\t// Sync from the prop only when the parent actually changes it — keep the restored value on mount.\n\tconst firstCollapseSync = useRef(true);\n\tuseEffect(() => {\n\t\tif (firstCollapseSync.current) {\n\t\t\tfirstCollapseSync.current = false;\n\t\t\treturn;\n\t\t}\n\t\tsetIsCollapsed(collapsed);\n\t}, [collapsed]);\n\t// Toggle collapse from inside the sidebar, persist it, AND notify the parent so it can reflow the layout.\n\tconst setCollapsed = (next: boolean) => {\n\t\tsetIsCollapsed(next);\n\t\ttry {\n\t\t\twindow.localStorage.setItem(COLLAPSE_KEY, next ? \"1\" : \"0\");\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t\tonCollapsedChange?.(next);\n\t};\n\t/** The built-in notifications panel. Opened from the Notifications row in the pinned block, and\n\t * from the rail's notifications icon when collapsed — it used to hang off a bell in the footer. */\n\tfunction renderNotificationsPanel(side: \"top\" | \"right\", align: \"end\" | \"start\") {\n\t\treturn (\n\t\t\t<PopoverContent\n\t\t\t\tside={side}\n\t\t\t\talign={align}\n\t\t\t\tclassName={`wwc:w-[300px] wwc:p-0 wwc:rounded-xl wwc:flex wwc:flex-col wwc:h-[340px] ${FLOAT_SHADOW}`}\n\t\t\t>\n\t\t\t\t<ScrollArea className=\"wwc:flex-1 wwc:min-h-0\" scrollbarClassName=\"wwc:w-1.5\" thumbClassName=\"wwc:bg-border/60\">\n\t\t\t\t\t{panelNotifications.length === 0 && (\n\t\t\t\t\t\t<div className=\"wwc:px-4 wwc:py-8 wwc:text-center wwc:text-[12px] wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t{L.notificationsEmpty}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{panelNotifications.map((n) => {\n\t\t\t\t\t\tconst rowClass = `wwc:w-full wwc:text-start wwc:px-4 wwc:py-3 wwc:border-b wwc:last:border-b-0 wwc:transition-colors ${\n\t\t\t\t\t\t\tonNotificationSelect ? \"wwc:cursor-pointer wwc:hover:bg-muted\" : \"\"\n\t\t\t\t\t\t} ${n.unread ? \"wwc:bg-accent/40\" : \"\"}`;\n\t\t\t\t\t\t// A real <button> when it is selectable, a plain <div> when it is not — rather than a\n\t\t\t\t\t\t// div wearing role=\"button\", which has to reimplement focus and Enter/Space by hand and\n\t\t\t\t\t\t// gets them subtly wrong.\n\t\t\t\t\t\tconst Row = onNotificationSelect ? \"button\" : \"div\";\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Row\n\t\t\t\t\t\t\t\tkey={n.id}\n\t\t\t\t\t\t\t\t{...(onNotificationSelect ? {type: \"button\" as const, onClick: () => onNotificationSelect(n)} : {})}\n\t\t\t\t\t\t\t\tclassName={rowClass}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-start wwc:justify-between wwc:gap-2\">\n\t\t\t\t\t\t\t\t\t<div className=\"wwc:min-w-0\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t\t{n.unread && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"wwc:h-1.5 wwc:w-1.5 wwc:rounded-full wwc:bg-blue-500 wwc:flex-shrink-0 wwc:mt-0.5\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:text-[12px] wwc:font-medium wwc:text-foreground\">{n.title}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{n.body && <div className=\"wwc:text-[11px] wwc:text-muted-foreground wwc:mt-0.5\">{n.body}</div>}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<span className=\"wwc:text-[11px] wwc:text-muted-foreground/70 wwc:flex-shrink-0\">{n.time}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Row>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ScrollArea>\n\t\t\t\t{onViewAllNotifications && (\n\t\t\t\t\t<div className=\"wwc:flex-shrink-0 wwc:border-t wwc:border-border wwc:p-1\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetNotifOpen(false);\n\t\t\t\t\t\t\t\tonViewAllNotifications();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"wwc:w-full wwc:rounded-md wwc:px-3 wwc:py-2 wwc:text-[12px] wwc:font-medium wwc:text-foreground/80 wwc:transition-colors wwc:hover:bg-muted/50 wwc:hover:text-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{L.viewAllNotifications}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</PopoverContent>\n\t\t);\n\t}\n\n\tconst resolvedOrgGroups = orgGroups ?? DEFAULT_ORG_GROUPS;\n\tconst resolvedProjectGroups = projectGroups ?? DEFAULT_PROJECT_GROUPS;\n\tconst baseGroups = viewLevel === \"org\" ? resolvedOrgGroups : resolvedProjectGroups;\n\t// Search is a nav ROW that hands off to a surface of the consumer's choosing, not an inline filter,\n\t// so the nav always renders every group.\n\tconst groups = baseGroups;\n\tconst allNavItems = baseGroups.flatMap((g) => g.items);\n\tconst activeSubMenu = allNavItems.find((n) => n.id === activeSubMenuId)?.subMenu ?? null;\n\n\t// Reset to main view when level switches and navigate to the first tab\n\tconst onNavigateRef = useRef(onNavigate);\n\tonNavigateRef.current = onNavigate;\n\tconst onNavigateItemRef = useRef(onNavigateItem);\n\tonNavigateItemRef.current = onNavigateItem;\n\tconst prevViewLevel = useRef(viewLevel);\n\tuseEffect(() => {\n\t\tsetView(\"main\");\n\t\tsetActiveSubMenuId(null);\n\t\tconst firstItem = viewLevel === \"org\" ? resolvedOrgGroups[0]?.items[0] : resolvedProjectGroups[0]?.items[0];\n\t\tif (firstItem) {\n\t\t\tsetActiveItem(firstItem.id);\n\t\t\t// Only navigate when viewLevel actually changes, not on initial mount\n\t\t\tif (prevViewLevel.current !== viewLevel) {\n\t\t\t\tonNavigateRef.current?.(firstItem.label);\n\t\t\t\tonNavigateItemRef.current?.(firstItem);\n\t\t\t}\n\t\t\tprevViewLevel.current = viewLevel;\n\t\t}\n\t}, [viewLevel, resolvedOrgGroups, resolvedProjectGroups]);\n\n\t// Controlled selection: resolve activeItemId to the matching top-level item\n\t// or sub-menu item and open the right view. Lets a parent drive the\n\t// highlight from its route without synthetic DOM clicks — works in the\n\t// collapsed rail/flyout too, where there are no text labels to match.\n\tuseEffect(() => {\n\t\tif (!activeItemId) return;\n\t\tif (baseGroups.some((g) => g.items.some((i) => i.id === activeItemId))) {\n\t\t\tsetView(\"main\");\n\t\t\tsetActiveSubMenuId(null);\n\t\t\tsetActiveItem(activeItemId);\n\t\t\treturn;\n\t\t}\n\t\tfor (const g of baseGroups) {\n\t\t\tfor (const item of g.items) {\n\t\t\t\tif (item.subMenu?.groups.some((sg) => sg.items.some((s) => s.id === activeItemId))) {\n\t\t\t\t\tsetView(\"sub\");\n\t\t\t\t\tsetActiveSubMenuId(item.id);\n\t\t\t\t\tsetActiveItem(activeItemId);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [activeItemId, baseGroups]);\n\n\t/** Choosing a group — from the expanded header's name or the collapsed rail's flyout title. Opens\n\t * the group's page, and expands it, so the nav never contradicts the surface it just opened. */\n\tfunction selectGroup(group: SidebarNavGroup) {\n\t\tif (!group.id) return;\n\t\tif (group.collapsible && group.label) {\n\t\t\tconst label = group.label;\n\t\t\tsetCollapsedGroups((prev) => ({...prev, [label]: false}));\n\t\t}\n\t\tonGroupSelect?.(group.id);\n\t}\n\n\tfunction openSub(item: SidebarNavItem) {\n\t\tif (item.expandable && item.subMenu) {\n\t\t\tsetActiveSubMenuId(item.id);\n\t\t\tsetView(\"sub\");\n\t\t\tconst firstSubItem = item.subMenu.groups[0]?.items[0];\n\t\t\tif (firstSubItem) {\n\t\t\t\tsetActiveItem(firstSubItem.id);\n\t\t\t\tonNavigate?.(firstSubItem.label, true, item.label);\n\t\t\t\tonNavigateItem?.(firstSubItem, item);\n\t\t\t} else {\n\t\t\t\tonNavigate?.(item.label, true);\n\t\t\t\tonNavigateItem?.(item);\n\t\t\t}\n\t\t} else {\n\t\t\tsetActiveItem(item.id);\n\t\t\tonNavigate?.(item.label);\n\t\t\tonNavigateItem?.(item);\n\t\t}\n\t}\n\n\tfunction closeSub() {\n\t\tsetView(\"main\");\n\t\tsetActiveSubMenuId(null);\n\t}\n\n\t// ── Nav item renderer ──\n\t/** An item inside a group. In a tree it carries the elbow that ties it to the group's spine. */\n\tfunction renderGroupItem(item: SidebarNavItem, tree: boolean) {\n\t\tif (!tree) return <NavRow key={item.id} item={item} />;\n\t\treturn (\n\t\t\t<div key={item.id} className=\"wwc:relative\">\n\t\t\t\t<span\n\t\t\t\t\taria-hidden\n\t\t\t\t\tclassName={`wwc:pointer-events-none wwc:absolute wwc:top-1/2 wwc:h-px wwc:bg-border ${SIDEBAR_DENSITY[density].groupElbow}`}\n\t\t\t\t/>\n\t\t\t\t<NavRow item={item} />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tfunction NavRow({item}: {item: SidebarNavItem}) {\n\t\t// When a PINNED entry (Files, Home, the Marketplace) or a GROUP PAGE owns the selection, no app\n\t\t// nav item reads as active — that entry carries the mark instead, and a stale item highlight\n\t\t// underneath it would claim the surface belongs to two places at once.\n\t\tconst isActive =\n\t\t\t!marketplaceActive &&\n\t\t\t!homeActive &&\n\t\t\t!pinnedTop?.active &&\n\t\t\tactiveGroupId === undefined &&\n\t\t\t(activeItem === item.id || (item.subMenu?.groups.some((g) => g.items.some((i) => i.id === activeItem)) ?? false));\n\t\tconst className = `wwc:w-full wwc:flex wwc:items-center ${d.row} wwc:rounded-lg wwc:transition-colors wwc:group ${\n\t\t\tisActive\n\t\t\t\t? \"wwc:bg-muted wwc:font-medium wwc:text-foreground\"\n\t\t\t\t: \"wwc:text-foreground/80 wwc:hover:bg-muted/50 wwc:hover:text-foreground\"\n\t\t}`;\n\t\tconst content = (\n\t\t\t<>\n\t\t\t\t<span className=\"wwc:relative wwc:flex wwc:flex-shrink-0 wwc:items-center\">\n\t\t\t\t\t{item.tone ? (\n\t\t\t\t\t\t// The tint owns the icon's colour, so it deliberately does NOT take the row's hover or\n\t\t\t\t\t\t// active foreground — that would wash the hue out exactly when the reader points at it.\n\t\t\t\t\t\t<span className={`wwc:flex wwc:items-center wwc:justify-center wwc:rounded-md ${d.toneChip} ${item.tone}`}>\n\t\t\t\t\t\t\t<item.icon className={d.toneIconSize} />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<item.icon className={`${d.iconSize} wwc:text-muted-foreground wwc:group-hover:text-foreground`} />\n\t\t\t\t\t)}\n\t\t\t\t\t{item.dot && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={`wwc:absolute wwc:-right-0.5 wwc:-top-0.5 wwc:h-2 wwc:w-2 wwc:rounded-full wwc:ring-2 wwc:ring-card ${item.dot}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t\t<span className=\"wwc:flex-1 wwc:text-start wwc:truncate wwc:min-w-0\">{item.label}</span>\n\t\t\t\t{item.badge && (\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tclassName=\"wwc:ml-1 wwc:text-[10px] wwc:px-1.5 wwc:py-0.5 wwc:rounded-full wwc:leading-none wwc:h-auto wwc:font-medium\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t</Badge>\n\t\t\t\t)}\n\t\t\t\t{item.expandable && (\n\t\t\t\t\t<ChevronRight className=\"wwc:h-3.5 wwc:w-3.5 wwc:text-muted-foreground wwc:flex-shrink-0\" />\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t\tif (item.href) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\thref={item.href}\n\t\t\t\t\tdata-core-route-link\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\topenSub(item);\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={className}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<button type=\"button\" onClick={() => openSub(item)} className={className}>\n\t\t\t\t{content}\n\t\t\t</button>\n\t\t);\n\t}\n\n\t// ── Collapsed icon-only rail ──\n\tif (isCollapsed) {\n\t\tconst railWidth = density === \"compact\" ? \"wwc:w-[52px]\" : \"wwc:w-16\";\n\t\tconst railHeader = density === \"compact\" ? \"wwc:h-9\" : \"wwc:h-11\";\n\t\tconst iconBtn = density === \"compact\" ? \"wwc:h-8 wwc:w-8\" : \"wwc:h-9 wwc:w-9\";\n\t\t// Empty groups are dropped so a group with nothing in it (installed apps, before the first\n\t\t// install) cannot leave a divider floating with no icons under it.\n\t\tconst railGroups = baseGroups.filter((g) => g.items.length > 0);\n\t\t// forwardRef + a rest spread so this can serve as a Radix `asChild` trigger. Without them the\n\t\t// notifications entry in the rail was inert: Radix hands its handlers and ref to the element it\n\t\t// is given, and a plain function component that declares a fixed prop list silently drops both,\n\t\t// so the icon rendered but nothing opened.\n\t\tconst RailIconButton = forwardRef<\n\t\t\tHTMLButtonElement,\n\t\t\t{\n\t\t\t\tlabel: string;\n\t\t\t\tisActive?: boolean;\n\t\t\t\thasBadge?: boolean;\n\t\t\t\thref?: string;\n\t\t\t\tchildren: React.ReactNode;\n\t\t\t} & Omit<React.ComponentPropsWithoutRef<\"button\">, \"children\">\n\t\t>(({label, isActive, hasBadge, href, onClick, children, ...rest}, ref) => {\n\t\t\tconst className = `wwc:relative wwc:flex wwc:items-center wwc:justify-center wwc:rounded-lg wwc:transition-colors ${iconBtn} ${\n\t\t\t\tisActive\n\t\t\t\t\t? \"wwc:bg-muted wwc:text-foreground\"\n\t\t\t\t\t: \"wwc:text-muted-foreground wwc:hover:bg-muted/50 wwc:hover:text-foreground\"\n\t\t\t}`;\n\t\t\tconst content = (\n\t\t\t\t<>\n\t\t\t\t\t{children}\n\t\t\t\t\t{hasBadge && (\n\t\t\t\t\t\t<span className=\"wwc:absolute wwc:top-1 wwc:right-1 wwc:h-1.5 wwc:w-1.5 wwc:rounded-full wwc:bg-blue-500\" />\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t);\n\t\t\treturn (\n\t\t\t\t<HoverTooltip content={label} side=\"right\">\n\t\t\t\t\t{href ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={href}\n\t\t\t\t\t\t\tdata-core-route-link\n\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t// `onClick` is now a real mouse handler (so Radix can compose onto it); the anchor\n\t\t\t\t\t\t\t\t// branch hands it the same event after suppressing navigation.\n\t\t\t\t\t\t\t\tonClick?.(event as unknown as React.MouseEvent<HTMLButtonElement>);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-label={label}\n\t\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<button type=\"button\" ref={ref} aria-label={label} className={className} onClick={onClick} {...rest}>\n\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t</HoverTooltip>\n\t\t\t);\n\t\t});\n\t\tRailIconButton.displayName = \"RailIconButton\";\n\n\t\t// The rail's drill-in flyout: one icon that opens a titled list. Used by BOTH an `expandable` item\n\t\t// with a `subMenu` and a group carrying an `icon`, so the two can never diverge into different\n\t\t// behaviours for what is, to the user, the same gesture.\n\t\tconst RailFlyout = ({\n\t\t\tflyoutId,\n\t\t\tlabel,\n\t\t\ttitle,\n\t\t\ticon: Icon,\n\t\t\tisActive,\n\t\t\thasBadge,\n\t\t\trows,\n\t\t\tonSelect,\n\t\t\tonTitleSelect,\n\t\t\ttitleActive,\n\t\t}: {\n\t\t\tflyoutId: string;\n\t\t\tlabel: string;\n\t\t\ttitle: string;\n\t\t\ticon: React.ComponentType<{className?: string}>;\n\t\t\tisActive: boolean;\n\t\t\thasBadge?: boolean;\n\t\t\trows: {\n\t\t\t\tid: string;\n\t\t\t\tlabel: string;\n\t\t\t\ticon: React.ComponentType<{className?: string}>;\n\t\t\t\tbadge?: string;\n\t\t\t\ttone?: string;\n\t\t\t}[];\n\t\t\tonSelect: (rowId: string) => void;\n\t\t\t/** Makes the flyout's TITLE a link, the way a group's name is in the expanded sidebar. Omitted\n\t\t\t * for an item's sub-menu, which has no page of its own to open. */\n\t\t\tonTitleSelect?: () => void;\n\t\t\t/** Underlines the title while that group's page is the open surface — the same mark the\n\t\t\t * expanded sidebar puts on the group name. */\n\t\t\ttitleActive?: boolean;\n\t\t}) => {\n\t\t\tconst flyoutOpen = railFlyoutId === flyoutId;\n\t\t\treturn (\n\t\t\t\t<Popover\n\t\t\t\t\topen={railFlyoutId === flyoutId}\n\t\t\t\t\t// Closing only ever clears the slot if THIS flyout still holds it. One shared piece of\n\t\t\t\t\t// state serves every rail flyout, and clicking straight from one group's icon to\n\t\t\t\t\t// another's makes the two overlap: the new flyout claims the slot on click, and the old\n\t\t\t\t\t// one is dismissed a moment later when focus lands outside it. An unconditional\n\t\t\t\t\t// `setRailFlyoutId(null)` on that dismissal wiped the claim the click had just made, so\n\t\t\t\t\t// the click was spent closing rather than switching and the switch took two. Comparing\n\t\t\t\t\t// against the current value makes the late close a no-op instead.\n\t\t\t\t\tonOpenChange={(open) =>\n\t\t\t\t\t\tsetRailFlyoutId((current) => (open ? flyoutId : current === flyoutId ? null : current))\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{/* While the flyout is open the icon drops its hover treatment entirely — no fill, and no\n\t\t\t\t tooltip. The open menu already names the group and sits right beside it, so a hover\n\t\t\t\t fill under it and a tooltip over it are both just noise. A genuinely active surface\n\t\t\t\t still keeps its fill. */}\n\t\t\t\t\t{(() => {\n\t\t\t\t\t\tconst trigger = (\n\t\t\t\t\t\t\t<PopoverTrigger asChild>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\taria-label={label}\n\t\t\t\t\t\t\t\t\tdata-rail-flyout={flyoutId}\n\t\t\t\t\t\t\t\t\t// Decide on POINTERDOWN, not on click. `RailFlyout` is defined inside this render\n\t\t\t\t\t\t\t\t\t// body, so every state change gives it a new component identity and React remounts\n\t\t\t\t\t\t\t\t\t// each flyout — which means a decision made on `click` has to survive both that\n\t\t\t\t\t\t\t\t\t// remount and the old flyout's dismissal. Pressing is the first thing that happens,\n\t\t\t\t\t\t\t\t\t// so the assignment lands before anything can undo it, and the guarded\n\t\t\t\t\t\t\t\t\t// `onOpenChange` below stops the old flyout's later close from clearing it.\n\t\t\t\t\t\t\t\t\tonPointerDown={() => setRailFlyoutId(flyoutOpen ? null : flyoutId)}\n\t\t\t\t\t\t\t\t\t// Keyboard never fires pointerdown, so Enter/Space toggle here instead.\n\t\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\t\tif (event.key !== \"Enter\" && event.key !== \" \") return;\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\tsetRailFlyoutId(flyoutOpen ? null : flyoutId);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t// The pointer path has already decided; this only stops Radix's own toggle from\n\t\t\t\t\t\t\t\t\t// running afterwards and flipping it straight back (it composes handlers and skips\n\t\t\t\t\t\t\t\t\t// its own once the default is prevented).\n\t\t\t\t\t\t\t\t\tonClick={(event) => event.preventDefault()}\n\t\t\t\t\t\t\t\t\tclassName={`wwc:relative wwc:flex wwc:items-center wwc:justify-center wwc:rounded-lg wwc:transition-colors ${iconBtn} ${\n\t\t\t\t\t\t\t\t\t\tisActive\n\t\t\t\t\t\t\t\t\t\t\t? \"wwc:bg-muted wwc:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t: flyoutOpen\n\t\t\t\t\t\t\t\t\t\t\t\t? \"wwc:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t: \"wwc:text-muted-foreground wwc:hover:bg-muted/50 wwc:hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon className={d.iconSize} />\n\t\t\t\t\t\t\t\t\t{hasBadge && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:absolute wwc:top-1 wwc:right-1 wwc:h-1.5 wwc:w-1.5 wwc:rounded-full wwc:bg-blue-500\" />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</PopoverTrigger>\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn flyoutOpen ? (\n\t\t\t\t\t\t\ttrigger\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<HoverTooltip content={label} side=\"right\">\n\t\t\t\t\t\t\t\t{trigger}\n\t\t\t\t\t\t\t</HoverTooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t})()}\n\t\t\t\t\t<PopoverContent\n\t\t\t\t\t\tside=\"right\"\n\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\tclassName={`wwc:w-[220px] wwc:p-1 wwc:rounded-xl ${FLOAT_SHADOW}`}\n\t\t\t\t\t\t// A pointer-down on another rail icon must SWITCH to that flyout, not merely dismiss this\n\t\t\t\t\t\t// one and leave the click spent. Handle it here and let that icon's own click finish the\n\t\t\t\t\t\t// job; everything else dismisses normally.\n\t\t\t\t\t\tonPointerDownOutside={(event) => {\n\t\t\t\t\t\t\tconst target = event.target as HTMLElement | null;\n\t\t\t\t\t\t\tif (target?.closest(\"[data-rail-flyout]\")) event.preventDefault();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{onTitleSelect ? (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tonTitleSelect();\n\t\t\t\t\t\t\t\t\tsetRailFlyoutId(null);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName={`wwc:w-full wwc:rounded-md wwc:px-2 wwc:py-1.5 wwc:text-left wwc:text-[11px] wwc:font-semibold wwc:uppercase wwc:tracking-wide wwc:transition-colors wwc:hover:underline wwc:hover:text-foreground ${\n\t\t\t\t\t\t\t\t\ttitleActive ? \"wwc:text-foreground wwc:underline\" : \"wwc:text-muted-foreground/70\"\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"wwc:px-2 wwc:py-1.5 wwc:text-[11px] wwc:font-semibold wwc:uppercase wwc:tracking-wide wwc:text-muted-foreground/70\">\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{rows.map((row) => {\n\t\t\t\t\t\t\tconst RowIcon = row.icon;\n\t\t\t\t\t\t\tconst rowActive = activeItem === row.id;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tonSelect(row.id);\n\t\t\t\t\t\t\t\t\t\tsetRailFlyoutId(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName={`wwc:w-full wwc:flex wwc:items-center wwc:gap-2.5 wwc:rounded-lg wwc:px-2 wwc:py-1.5 wwc:text-[13px] wwc:transition-colors ${\n\t\t\t\t\t\t\t\t\t\trowActive\n\t\t\t\t\t\t\t\t\t\t\t? \"wwc:bg-muted wwc:font-medium wwc:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t: \"wwc:text-foreground/80 wwc:hover:bg-muted/50 wwc:hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{row.tone ? (\n\t\t\t\t\t\t\t\t\t\t// The same tinted chip the expanded nav gives this item: collapsing the sidebar\n\t\t\t\t\t\t\t\t\t\t// must not change what an app looks like, or the colour stops being an identity.\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName={`wwc:flex wwc:flex-shrink-0 wwc:items-center wwc:justify-center wwc:rounded-md wwc:h-[22px] wwc:w-[22px] ${row.tone}`}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<RowIcon className=\"wwc:h-[13px] wwc:w-[13px]\" />\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<RowIcon className=\"wwc:h-4 wwc:w-4 wwc:flex-shrink-0 wwc:text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex-1 wwc:text-left wwc:truncate\">{row.label}</span>\n\t\t\t\t\t\t\t\t\t{row.badge && (\n\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:text-[10px] wwc:px-1.5 wwc:py-0.5 wwc:rounded-full wwc:leading-none wwc:h-auto\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{row.badge}\n\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t</Popover>\n\t\t\t);\n\t\t};\n\n\t\t// One rail icon. Pulled out of the nav loop so the loop can walk GROUPS rather than a flat item\n\t\t// list — the rail needs the group boundaries to draw dividers, exactly as the expanded sidebar does.\n\t\tconst renderRailItem = (item: SidebarNavItem) => {\n\t\t\tconst isActive =\n\t\t\t\t!marketplaceActive &&\n\t\t\t\t!homeActive &&\n\t\t\t\t!pinnedTop?.active &&\n\t\t\t\tactiveGroupId === undefined &&\n\t\t\t\t(activeItem === item.id ||\n\t\t\t\t\t(item.subMenu?.groups.some((g) => g.items.some((i) => i.id === activeItem)) ?? false));\n\n\t\t\t// Items with a sub-menu open a small flyout to pick a tab; the rest navigate directly.\n\t\t\tif (item.expandable && item.subMenu) {\n\t\t\t\tconst subItems = item.subMenu.groups.flatMap((g) => g.items);\n\t\t\t\treturn (\n\t\t\t\t\t<RailFlyout\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\tflyoutId={item.id}\n\t\t\t\t\t\tlabel={item.label}\n\t\t\t\t\t\ttitle={item.subMenu.title}\n\t\t\t\t\t\ticon={item.icon}\n\t\t\t\t\t\tisActive={isActive}\n\t\t\t\t\t\thasBadge={Boolean(item.badge)}\n\t\t\t\t\t\trows={subItems}\n\t\t\t\t\t\tonSelect={(rowId) => {\n\t\t\t\t\t\t\tconst sub = subItems.find((s) => s.id === rowId);\n\t\t\t\t\t\t\tif (!sub) return;\n\t\t\t\t\t\t\tsetActiveItem(sub.id);\n\t\t\t\t\t\t\tonNavigate?.(sub.label, false, item.label);\n\t\t\t\t\t\t\tonNavigateItem?.(sub, item);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<RailIconButton\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tlabel={item.label}\n\t\t\t\t\tisActive={isActive}\n\t\t\t\t\thasBadge={Boolean(item.badge)}\n\t\t\t\t\thref={item.href}\n\t\t\t\t\tonClick={() => openSub(item)}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"wwc:relative wwc:flex wwc:items-center wwc:justify-center\">\n\t\t\t\t\t\t<item.icon className={d.iconSize} />\n\t\t\t\t\t\t{item.dot && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={`wwc:absolute wwc:-right-1 wwc:-top-1 wwc:h-2 wwc:w-2 wwc:rounded-full wwc:ring-2 wwc:ring-card ${item.dot}`}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t</RailIconButton>\n\t\t\t);\n\t\t};\n\n\t\t// A group carrying an icon collapses to that ONE icon, whose flyout lists its items — the same\n\t\t// gesture and the same flyout an `expandable` item uses. Selecting a row navigates exactly as\n\t\t// clicking that item in the expanded sidebar does.\n\t\tconst renderRailGroup = (group: SidebarNavGroup) => {\n\t\t\tif (!group.icon || !group.label) return group.items.map(renderRailItem);\n\t\t\tconst label = group.label;\n\t\t\treturn (\n\t\t\t\t<RailFlyout\n\t\t\t\t\tkey={`group-${label}`}\n\t\t\t\t\tflyoutId={`group-${label}`}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\ttitle={label}\n\t\t\t\t\ticon={group.icon}\n\t\t\t\t\t// A group page owns the selection outright: exactly that group's icon lights, and no\n\t\t\t\t\t// sibling may borrow the highlight from a stale item. Otherwise fall back to lighting\n\t\t\t\t\t// whichever group holds the active item.\n\t\t\t\t\tisActive={\n\t\t\t\t\t\t!marketplaceActive &&\n\t\t\t\t\t\t!homeActive &&\n\t\t\t\t\t\t!pinnedTop?.active &&\n\t\t\t\t\t\t(activeGroupId !== undefined ? activeGroupId === group.id : group.items.some((i) => i.id === activeItem))\n\t\t\t\t\t}\n\t\t\t\t\ttitleActive={group.id !== undefined && activeGroupId === group.id}\n\t\t\t\t\thasBadge={group.items.some((i) => Boolean(i.dot))}\n\t\t\t\t\trows={group.items}\n\t\t\t\t\tonSelect={(rowId) => {\n\t\t\t\t\t\tconst item = group.items.find((i) => i.id === rowId);\n\t\t\t\t\t\tif (item) openSub(item);\n\t\t\t\t\t}}\n\t\t\t\t\tonTitleSelect={group.id ? () => selectGroup(group) : undefined}\n\t\t\t\t/>\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={`wwc:relative wwc:h-full wwc:select-none wwc:flex-shrink-0 wwc:overflow-hidden wwc:bg-card wwc:text-card-foreground wwc:transition-[width] wwc:duration-200 wwc:ease-linear ${seamless ? \"\" : \"wwc:border-r wwc:shadow-sm\"} ${railWidth}`}\n\t\t\t>\n\t\t\t\t<TooltipProvider delayDuration={0} disableHoverableContent>\n\t\t\t\t\t<div className={`wwc:absolute wwc:inset-y-0 wwc:left-0 ${railWidth} wwc:flex wwc:flex-col wwc:items-center`}>\n\t\t\t\t\t\t{/* Expand toggle — restores the full sidebar */}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`wwc:flex wwc:items-center wwc:justify-center wwc:border-b wwc:w-full wwc:flex-shrink-0 ${railHeader}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{/* Collapsed brand: show the logo (custom `logoCollapsed`, or the Core mark by default),\n\t\t\t\t\t\t\t and reveal the expand affordance on hover. */}\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => setCollapsed(false)}\n\t\t\t\t\t\t\t\taria-label={L.expandSidebar}\n\t\t\t\t\t\t\t\tclassName={`wwc:group wwc:relative wwc:flex wwc:items-center wwc:justify-center wwc:rounded-lg wwc:transition-colors wwc:hover:bg-muted/50 ${iconBtn}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:items-center wwc:transition-opacity wwc:group-hover:opacity-0\">\n\t\t\t\t\t\t\t\t\t{logoCollapsed ?? <CoreWLogo className={`${d.brandMark} wwc:text-primary`} />}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<PanelLeftOpen\n\t\t\t\t\t\t\t\t\tclassName={`${d.iconSize} wwc:absolute wwc:text-foreground wwc:opacity-0 wwc:transition-opacity wwc:group-hover:opacity-100`}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{/* Nav icons */}\n\t\t\t\t\t\t<ScrollArea\n\t\t\t\t\t\t\tdir={navDir}\n\t\t\t\t\t\t\tclassName=\"wwc:flex-1 wwc:w-full\"\n\t\t\t\t\t\t\tscrollbarClassName=\"wwc:w-1.5\"\n\t\t\t\t\t\t\tthumbClassName=\"wwc:bg-border/60\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={`wwc:flex wwc:flex-col wwc:items-center wwc:py-1 ${d.spacing}`}>\n\t\t\t\t\t\t\t\t{/* The same pinned block the expanded nav shows, in the same order, divided from the group\n\t\t\t\t\t\t\t\t icons the way the expanded sidebar divides it from the groups. */}\n\t\t\t\t\t\t\t\t{pinnedEntries.map((entry) => {\n\t\t\t\t\t\t\t\t\tconst railRow = (\n\t\t\t\t\t\t\t\t\t\t<RailIconButton label={entry.label} isActive={entry.active} onClick={entry.onSelect}>\n\t\t\t\t\t\t\t\t\t\t\t<entry.icon className={d.pinnedIconSize} />\n\t\t\t\t\t\t\t\t\t\t\t{entry.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={L.unreadCount(unreadNotifications)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:absolute wwc:right-0.5 wwc:top-0.5 wwc:flex wwc:h-[13px] wwc:min-w-[13px] wwc:items-center wwc:justify-center wwc:rounded-full wwc:bg-muted wwc:px-1 wwc:text-[8px] wwc:font-medium wwc:leading-none wwc:text-foreground wwc:ring-2 wwc:ring-card wwc:tabular-nums\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{entry.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</RailIconButton>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn entry.builtInNotifications ? (\n\t\t\t\t\t\t\t\t\t\t<Popover key={entry.key} open={notifOpen} onOpenChange={setNotifOpen}>\n\t\t\t\t\t\t\t\t\t\t\t<PopoverTrigger asChild>{railRow}</PopoverTrigger>\n\t\t\t\t\t\t\t\t\t\t\t{renderNotificationsPanel(\"right\", \"start\")}\n\t\t\t\t\t\t\t\t\t\t</Popover>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Fragment key={entry.key}>{railRow}</Fragment>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t{pinnedBlock && pinnedBlockDivider && railGroups.length > 0 && (\n\t\t\t\t\t\t\t\t\t<Separator className=\"wwc:my-1 wwc:w-6\" />\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t{/* One block per nav group, divided the way the expanded sidebar divides them. The rail\n\t\t\t\t\t\t\t\t used to flatten every group into a single run of icons, so collapsing the sidebar lost\n\t\t\t\t\t\t\t\t the boundaries (installed apps / workspace / settings) the expanded one shows. */}\n\t\t\t\t\t\t\t\t{railGroups.map((group, gi) => (\n\t\t\t\t\t\t\t\t\t<Fragment key={group.label ?? `rail-group-${gi}`}>\n\t\t\t\t\t\t\t\t\t\t{/* Two icon-groups are already visually distinct — each is one icon standing for a\n\t\t\t\t\t\t\t\t\t\t whole group — so a divider between them would just be noise. A divider still\n\t\t\t\t\t\t\t\t\t\t separates them from any group that spells its items out, and `dividerBefore`\n\t\t\t\t\t\t\t\t\t lets a group starting a different SECTION ask for one regardless. */}\n\t\t\t\t\t\t\t\t\t\t{gi > 0 &&\n\t\t\t\t\t\t\t\t\t\t\t(group.dividerBefore || (showGroupDividers && !(group.icon && railGroups[gi - 1].icon))) && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Separator className=\"wwc:my-1 wwc:w-6\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{renderRailGroup(group)}\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t\t\t{/* Marketplace / app-installer entry — pinned under the app icons. */}\n\t\t\t\t\t\t\t\t{showMarketplace && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{allNavItems.length > 0 && <Separator className=\"wwc:my-1 wwc:w-6\" />}\n\t\t\t\t\t\t\t\t\t\t<RailIconButton label={marketplaceLabel} isActive={marketplaceActive} onClick={onMarketplace}>\n\t\t\t\t\t\t\t\t\t\t\t<Plus className={d.iconSize} />\n\t\t\t\t\t\t\t\t\t\t</RailIconButton>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ScrollArea>\n\n\t\t\t\t\t\t{/* Footer: profile (+ notifications, comfortable only — compact omits notifications like the compact sidebar) */}\n\t\t\t\t\t\t{showFooter && (\n\t\t\t\t\t\t\t<div className=\"wwc:border-t wwc:w-full wwc:flex wwc:flex-col wwc:items-center wwc:gap-1 wwc:py-2 wwc:flex-shrink-0\">\n\t\t\t\t\t\t\t\t{/* Same profile menu as the expanded footer's \"...\" button — on the rail the avatar\n\t\t\t\t\t\t\t\t IS the trigger, since there is no room for a separate action button. */}\n\t\t\t\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t\t\t\t<HoverTooltip content={profileName} side=\"right\">\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={L.profileMenu(profileName)}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`wwc:flex wwc:items-center wwc:justify-center wwc:rounded-full wwc:transition-colors wwc:hover:bg-muted ${iconBtn}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Avatar className=\"wwc:h-6 wwc:w-6\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{profileAvatar && <AvatarImage src={profileAvatar} alt={profileName} />}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<AvatarFallback\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:text-white wwc:text-[9px] wwc:font-bold\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{background: \"radial-gradient(circle at 35% 35%, #a855f7, #6366f1, #1e40af)\"}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{profileInitials}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t\t\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t\t\t\t\t</HoverTooltip>\n\t\t\t\t\t\t\t\t\t{renderProfileMenu(\"right\", \"end\")}\n\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</TooltipProvider>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// ── Render ──\n\treturn (\n\t\t<div\n\t\t\tclassName={`wwc:relative wwc:h-full wwc:select-none wwc:flex-shrink-0 wwc:overflow-hidden wwc:bg-card wwc:text-card-foreground wwc:transition-[width] wwc:duration-200 wwc:ease-linear ${seamless ? \"\" : \"wwc:border-r wwc:shadow-sm\"} wwc:w-[260px]`}\n\t\t>\n\t\t\t{/* ── Inner sidebar ── */}\n\t\t\t<div className=\"wwc:absolute wwc:inset-y-0 wwc:left-0 wwc:w-[260px] wwc:flex wwc:flex-col\">\n\t\t\t\t{/* ── Header: Brand + collapse toggle ── */}\n\t\t\t\t<div className={`wwc:flex wwc:items-center wwc:border-b wwc:flex-shrink-0 ${d.header}`}>\n\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2 wwc:px-2 wwc:w-full wwc:min-w-0\">\n\t\t\t\t\t\t{density === \"compact\" && onPin && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\tonClick={onPin}\n\t\t\t\t\t\t\t\taria-label={L.pinSidebar}\n\t\t\t\t\t\t\t\tclassName=\"wwc:h-6 wwc:w-6 wwc:text-muted-foreground wwc:hover:text-foreground wwc:flex-shrink-0\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PanelRightOpen className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{density !== \"compact\" && onPin && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\tonClick={onPin}\n\t\t\t\t\t\t\t\taria-label={L.pinSidebar}\n\t\t\t\t\t\t\t\tclassName=\"wwc:h-7 wwc:w-7 wwc:text-muted-foreground wwc:hover:text-foreground wwc:flex-shrink-0\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PanelRightOpen className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{/* Brand — a custom `logo`, an org switcher (when `orgs` provided), or the default mark + name. */}\n\t\t\t\t\t\t{logo ? (\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:min-w-0 wwc:items-center wwc:overflow-hidden\">{logo}</div>\n\t\t\t\t\t\t) : orgs && orgs.length > 0 ? (\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:min-w-0 wwc:items-center wwc:gap-1\">\n\t\t\t\t\t\t\t\t{/* Core brand mark, separated from the org selector by a slash */}\n\t\t\t\t\t\t\t\t<CoreWLogo className={`${d.brandMark} wwc:shrink-0 wwc:text-foreground`} />\n\t\t\t\t\t\t\t\t<span className=\"wwc:shrink-0 wwc:text-muted-foreground/50\">/</span>\n\t\t\t\t\t\t\t\t<Switcher\n\t\t\t\t\t\t\t\t\tdensity={density}\n\t\t\t\t\t\t\t\t\titems={orgs}\n\t\t\t\t\t\t\t\t\tselected={selectedOrgName}\n\t\t\t\t\t\t\t\t\tonSelect={(o) => onOrgChange?.(o)}\n\t\t\t\t\t\t\t\t\tplaceholder={L.orgSearchPlaceholder}\n\t\t\t\t\t\t\t\t\temptyLabel={L.orgEmpty}\n\t\t\t\t\t\t\t\t\tonViewAll={onOrgViewAll}\n\t\t\t\t\t\t\t\t\tviewAllLabel={L.orgViewAll}\n\t\t\t\t\t\t\t\t\ttriggerClassName={`wwc:h-8 wwc:min-w-0 wwc:gap-2 wwc:px-1.5 wwc:font-semibold wwc:text-foreground ${density === \"compact\" ? \"wwc:text-[13px]\" : \"wwc:text-[14px]\"}`}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{activeOrgLogo && <span className=\"wwc:flex wwc:shrink-0 wwc:items-center\">{activeOrgLogo}</span>}\n\t\t\t\t\t\t\t\t\t<span className=\"wwc:truncate\">{selectedOrgName}</span>\n\t\t\t\t\t\t\t\t</Switcher>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2 wwc:text-foreground wwc:min-w-0\">\n\t\t\t\t\t\t\t\t<CoreWLogo className={d.brandMark} />\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName={`wwc:font-semibold wwc:truncate ${density === \"compact\" ? \"wwc:text-[13px]\" : \"wwc:text-[14px]\"}`}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{brandName}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className=\"wwc:flex-1\" />\n\t\t\t\t\t\t{/* Collapse toggle — far right, beside the brand. Hidden in the mobile sheet, where the\n\t\t\t\t\t\t sheet's own close button is the single dismiss control. */}\n\t\t\t\t\t\t{!hideCollapse && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\tonClick={() => setCollapsed(true)}\n\t\t\t\t\t\t\t\taria-label={L.collapseSidebar}\n\t\t\t\t\t\t\t\tclassName={`wwc:text-muted-foreground wwc:hover:text-foreground wwc:flex-shrink-0 ${density === \"compact\" ? \"wwc:h-6 wwc:w-6\" : \"wwc:h-7 wwc:w-7\"}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PanelRightOpen className={density === \"compact\" ? \"wwc:h-3.5 wwc:w-3.5\" : \"wwc:h-4 wwc:w-4\"} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* ── Nav ── */}\n\t\t\t\t<ScrollArea\n\t\t\t\t\tdir={navDir}\n\t\t\t\t\tclassName=\"wwc:flex-1\"\n\t\t\t\t\tscrollbarClassName=\"wwc:w-1.5\"\n\t\t\t\t\tthumbClassName=\"wwc:bg-border/60\"\n\t\t\t\t>\n\t\t\t\t\t{view === \"main\" ? (\n\t\t\t\t\t\t<div className={d.container}>\n\t\t\t\t\t\t\t{/* The pinned block: the pinned entry and Home sit TOGETHER above one rule, rather than\n\t\t\t\t\t\t\t being divided from each other. Both are surfaces that stand outside the app hierarchy\n\t\t\t\t\t\t\t below — Files addresses every app's records, Home launches them — so the boundary that\n\t\t\t\t\t\t\t matters is the one under the pair, not between them. Hidden while searching, since a\n\t\t\t\t\t\t\t query is asking about the nav items below. */}\n\t\t\t\t\t\t\t{pinnedBlock && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<div className={d.pinnedSpacing}>\n\t\t\t\t\t\t\t\t\t\t{pinnedEntries.map((entry) => {\n\t\t\t\t\t\t\t\t\t\t\tconst row = (\n\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={entry.onSelect}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={`wwc:w-full wwc:flex wwc:items-center ${d.pinnedRow} wwc:rounded-lg wwc:transition-colors wwc:group ${\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentry.active\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"wwc:bg-muted wwc:font-medium wwc:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"wwc:text-foreground/80 wwc:hover:bg-muted/50 wwc:hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<entry.icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${d.pinnedIconSize} wwc:flex-shrink-0 wwc:text-muted-foreground wwc:group-hover:text-foreground`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex-1 wwc:text-start wwc:truncate wwc:min-w-0\">{entry.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{entry.hint && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<kbd className=\"wwc:ml-1 wwc:flex-shrink-0 wwc:rounded wwc:border wwc:border-border wwc:bg-muted/60 wwc:px-1 wwc:py-px wwc:font-sans wwc:text-[10px] wwc:leading-none wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{entry.hint}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</kbd>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{entry.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={L.unreadCount(unreadNotifications)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:ml-1 wwc:flex-shrink-0 wwc:text-[11px] wwc:font-medium wwc:leading-none wwc:text-muted-foreground wwc:tabular-nums\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{entry.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t// The built-in panel opens off the row itself, so the notifications feature survives\n\t\t\t\t\t\t\t\t\t\t\t// the footer bell it used to hang from.\n\t\t\t\t\t\t\t\t\t\t\treturn entry.builtInNotifications ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<Popover key={entry.key} open={notifOpen} onOpenChange={setNotifOpen}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<PopoverTrigger asChild>{row}</PopoverTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{renderNotificationsPanel(\"right\", \"start\")}\n\t\t\t\t\t\t\t\t\t\t\t\t</Popover>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<Fragment key={entry.key}>{row}</Fragment>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{pinnedBlockDivider && groups.length > 0 && <Separator className={d.separator} />}\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{groups.map((group, gi) => {\n\t\t\t\t\t\t\t\t// A collapsible group folds shut on the chevron; searching forces every group open so a\n\t\t\t\t\t\t\t\t// match can never hide behind a collapsed header.\n\t\t\t\t\t\t\t\t// Absent from `collapsedGroups` = untouched, so the default decides. A live query always\n\t\t\t\t\t\t\t\t// forces every group open, so a match can never hide behind a folded header.\n\t\t\t\t\t\t\t\tconst folded = Boolean(\n\t\t\t\t\t\t\t\t\tgroup.collapsible && group.label && (collapsedGroups[group.label] ?? groupsCollapsedByDefault),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t// An icon-group is a TREE: the header reads as the parent row (same metrics as an item)\n\t\t\t\t\t\t\t\t// and the items hang off a guide beneath it. Everything else keeps the small uppercase\n\t\t\t\t\t\t\t\t// caption this sidebar has always used for group labels — at FULL muted-foreground, since the 10px\n\t\t\t\t\t\t\t\t// caption is \"small text\" and WCAG 1.4.3 wants ≥4.5:1; the old `/40` opacity fell to ~1.69:1. (WC-GAP-02)\n\t\t\t\t\t\t\t\tconst tree = Boolean(group.icon);\n\t\t\t\t\t\t\t\t// Does a rule already stand between this group and the one above it?\n\t\t\t\t\t\t\t\tconst ruled = (showGroupDividers || Boolean(group.dividerBefore)) && gi > 0;\n\t\t\t\t\t\t\t\tconst headerClass = tree\n\t\t\t\t\t\t\t\t\t? `${d.row} wwc:flex wwc:items-center wwc:font-medium wwc:text-foreground/80`\n\t\t\t\t\t\t\t\t\t: `${d.groupLabel} wwc:flex wwc:items-center wwc:gap-1.5 wwc:font-semibold wwc:uppercase wwc:tracking-widest wwc:text-muted-foreground`;\n\t\t\t\t\t\t\t\t// No `flex-1`: the name sizes to its text so the chevron can sit right beside it rather\n\t\t\t\t\t\t\t\t// than being pushed to the far edge. `min-w-0` still lets a long name truncate.\n\t\t\t\t\t\t\t\tconst nameClass = tree\n\t\t\t\t\t\t\t\t\t? \"wwc:min-w-0 wwc:truncate wwc:text-start wwc:transition-colors\"\n\t\t\t\t\t\t\t\t\t: \"wwc:min-w-0 wwc:truncate wwc:text-start wwc:uppercase wwc:tracking-widest wwc:transition-colors\";\n\t\t\t\t\t\t\t\t// The header is ONE control: name, icon and chevron all fold the group, so the whole row\n\t\t\t\t\t\t\t\t// carries the row hover the nav items use rather than the chevron lighting on its own.\n\t\t\t\t\t\t\t\tconst headerFoldClass = `${headerClass} wwc:w-full wwc:rounded-lg wwc:transition-colors wwc:hover:bg-muted/50 wwc:hover:text-foreground`;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Fragment key={group.label ?? gi}>\n\t\t\t\t\t\t\t\t\t\t{/* `showGroupDividers` draws the automatic rule between every pair of groups;\n\t\t\t\t\t\t\t\t\t\t `dividerBefore` is an explicit request from ONE group that starts a genuinely\n\t\t\t\t\t\t\t\t\t\t different section, and it stands whether or not the automatic rules are on. The\n\t\t\t\t\t\t\t\t\t\t tree shape turns the automatic ones off, so this is how a break survives there. */}\n\t\t\t\t\t\t\t\t\t\t{ruled && <Separator className={d.separator} />}\n\t\t\t\t\t\t\t\t\t\t{/* The guide line below is positioned from this element's top, so the wrapper must\n\t\t\t\t\t\t\t\t\t\t start at the HEADER — a separator inside it would push every group but the first\n\t\t\t\t\t\t\t\t\t\t out of alignment. */}\n\t\t\t\t\t\t\t\t\t\t{/* The gap goes on the wrapper, not between every child, so it cannot land inside a\n\t\t\t\t\t\t\t\t\t\t group and push its items away from their own header. Skipped where a rule already\n\t\t\t\t\t\t\t\t\t\t separates the two — the rule carries its own margins, and stacking both would open\n\t\t\t\t\t\t\t\t\t\t a gulf where the tree shape wants a quiet break. */}\n\t\t\t\t\t\t\t\t\t\t<div className={`wwc:relative ${gi > 0 && !ruled ? d.groupGap : \"\"}`}>\n\t\t\t\t\t\t\t\t\t\t\t{group.label &&\n\t\t\t\t\t\t\t\t\t\t\t\t(group.collapsible ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* ONE target, not two: the whole header folds the group — the name does exactly what\n\t\t\t\t\t\t\t\t\t\t\t\t\t the chevron does. The name used to be a second, separate target that opened a page\n\t\t\t\t\t\t\t\t\t\t\t\t\t about the group; it no longer navigates anywhere, so nothing here is a link and\n\t\t\t\t\t\t\t\t\t\t\t\t\t nothing underlines. `activeGroupId` still MARKS the active section, but as weight\n\t\t\t\t\t\t\t\t\t\t\t\t\t and colour rather than a rule under a name that is not clickable-to-navigate. */\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCollapsedGroups((prev) => ({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Negate the EFFECTIVE fold state, not the stored one. A group the user has\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// never touched is absent from this map, so `!prev[label]` read `!undefined`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// = \"fold it\" — which, under `groupsCollapsedByDefault`, wrote back the\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// state it was already in and cost a second click to open every group the\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// first time.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[group.label as string]: !(prev[group.label as string] ?? groupsCollapsedByDefault),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-expanded={!folded}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfolded ? L.expandGroup(group.label as string) : L.collapseGroup(group.label as string)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${headerFoldClass} ${activeGroupId === group.id ? \"wwc:text-foreground\" : \"\"}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{group.icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<group.icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${tree ? d.iconSize : \"wwc:h-3 wwc:w-3\"} wwc:flex-shrink-0 wwc:text-muted-foreground`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* Name and chevron are ONE pair with their own tight gap. Left as siblings they\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t inherited the row's gap — the same space that separates the group icon from the\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t label — which read as the arrow drifting away from the word it belongs to. */}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:min-w-0 wwc:items-center wwc:gap-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={nameClass}>{group.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* Decoration, not a control: the button around it already carries the label and\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t `aria-expanded`, so a second focus stop would announce the same thing twice.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t Right while shut, down while open — the disclosure points at what opening it\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t would reveal, the same way every other tree in the product reads. */}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:flex wwc:h-4 wwc:w-4 wwc:flex-shrink-0 wwc:items-center wwc:justify-center wwc:text-muted-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{folded ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ChevronRight className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ChevronDown className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* Absorbs the rest of the row, so the header still fills its width while the name\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t and chevron stay together on the left. */}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span aria-hidden className=\"wwc:flex-1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* Nothing to fold and nowhere to navigate: a plain caption. */\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className={`${headerClass} ${activeGroupId === group.id ? \"wwc:text-foreground\" : \"\"}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{group.icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<group.icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${tree ? d.iconSize : \"wwc:h-3 wwc:w-3\"} wwc:flex-shrink-0 wwc:text-muted-foreground`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={nameClass}>{group.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t{/* Expanding and folding animate: the row area is a grid whose single track goes\n\t\t\t\t\t\t\t\t\t\t 0fr -> 1fr, which transitions to the items' natural height without measuring it.\n\t\t\t\t\t\t\t\t\t\t The spine is absolutely placed against the group wrapper, so it shrinks with the\n\t\t\t\t\t\t\t\t\t\t wrapper on its own — no second animation to keep in step. */}\n\t\t\t\t\t\t\t\t\t\t\t{tree && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={`wwc:pointer-events-none wwc:absolute wwc:w-px wwc:bg-border ${d.groupGuide}`}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{group.collapsible ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={`wwc:grid wwc:transition-[grid-template-rows] wwc:duration-200 wwc:ease-out ${\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfolded ? \"wwc:grid-rows-[0fr]\" : \"wwc:grid-rows-[1fr]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{/* Folded content stays mounted so the height can animate, so it must be taken out\n\t\t\t\t\t\t\t\t\t\t\t of the tab order and the a11y tree explicitly — otherwise focus lands on rows\n\t\t\t\t\t\t\t\t\t\t\t nobody can see. */}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"wwc:overflow-hidden\" {...(folded ? INERT : undefined)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className={`${d.spacing} ${tree ? d.groupGuideIndent : \"\"}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{group.items.map((item) => renderGroupItem(item, tree))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={`${d.spacing} ${tree ? d.groupGuideIndent : \"\"}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{group.items.map((item) => renderGroupItem(item, tree))}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\n\t\t\t\t\t\t\t{/* Marketplace / app-installer entry — pinned under the apps (hidden while searching). */}\n\t\t\t\t\t\t\t{showMarketplace && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{groups.length > 0 && <Separator className={d.separator} />}\n\t\t\t\t\t\t\t\t\t<div className={d.spacing}>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={onMarketplace}\n\t\t\t\t\t\t\t\t\t\t\tclassName={`wwc:w-full wwc:flex wwc:items-center ${d.row} wwc:rounded-lg wwc:transition-colors wwc:group ${\n\t\t\t\t\t\t\t\t\t\t\t\tmarketplaceActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t? \"wwc:bg-muted wwc:font-medium wwc:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t: \"wwc:text-foreground/80 wwc:hover:bg-muted/50 wwc:hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Plus\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`${d.iconSize} wwc:flex-shrink-0 wwc:text-muted-foreground wwc:group-hover:text-foreground`}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex-1 wwc:text-start wwc:truncate wwc:min-w-0\">{marketplaceLabel}</span>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t/* Sub-nav view */\n\t\t\t\t\t\t<div className={d.container}>\n\t\t\t\t\t\t\t{/* Back + Title */}\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={closeSub}\n\t\t\t\t\t\t\t\tclassName={`wwc:w-full wwc:flex wwc:items-center wwc:gap-2 ${d.backButton} wwc:hover:bg-muted/50 wwc:rounded-lg wwc:transition-colors`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ChevronLeft className=\"wwc:h-4 wwc:w-4 wwc:text-muted-foreground\" />\n\t\t\t\t\t\t\t\t<span className=\"wwc:font-semibold wwc:text-foreground\">{activeSubMenu?.title}</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t{activeSubMenu?.groups.map((group, gi) => (\n\t\t\t\t\t\t\t\t<div key={gi} className=\"wwc:mb-1\">\n\t\t\t\t\t\t\t\t\t{group.label && (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${d.subGroupLabel} wwc:font-semibold wwc:text-muted-foreground/70 wwc:uppercase wwc:tracking-widest`}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{group.items.map((item) => {\n\t\t\t\t\t\t\t\t\t\tconst isActive = activeItem === item.id;\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetActiveItem(item.id);\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst parentItem = allNavItems.find((n) => n.id === activeSubMenuId);\n\t\t\t\t\t\t\t\t\t\t\t\t\tonNavigate?.(item.label, false, parentItem?.label);\n\t\t\t\t\t\t\t\t\t\t\t\t\tonNavigateItem?.(item, parentItem);\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={`wwc:w-full wwc:flex wwc:items-center ${d.row} wwc:rounded-lg wwc:transition-colors ${\n\t\t\t\t\t\t\t\t\t\t\t\t\tisActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"wwc:bg-muted wwc:font-medium wwc:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"wwc:text-foreground/80 wwc:hover:bg-muted/50 wwc:hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<item.icon className={`${d.iconSize} wwc:flex-shrink-0 wwc:text-muted-foreground`} />\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex-1 wwc:text-start wwc:truncate wwc:min-w-0\">{item.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:ml-1 wwc:text-[10px] wwc:px-1.5 wwc:py-0.5 wwc:rounded-full wwc:leading-none wwc:h-auto wwc:font-medium\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</ScrollArea>\n\n\t\t\t\t{/* ── Custom footer content (e.g. a brand / updates card) — expanded only ── */}\n\t\t\t\t{footerContent && <div className={`wwc:border-t ${d.footer}`}>{footerContent}</div>}\n\n\t\t\t\t{/* ── Footer: Profile bar ── */}\n\t\t\t\t{showFooter && (\n\t\t\t\t\t<div className={`wwc:border-t wwc:flex wwc:items-center ${d.footer}`}>\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2 wwc:flex-1 wwc:min-w-0 wwc:px-2 wwc:py-1.5\">\n\t\t\t\t\t\t\t<Avatar className=\"wwc:h-6 wwc:w-6\">\n\t\t\t\t\t\t\t\t{profileAvatar && <AvatarImage src={profileAvatar} alt={profileName} />}\n\t\t\t\t\t\t\t\t<AvatarFallback\n\t\t\t\t\t\t\t\t\tclassName=\"wwc:text-white wwc:text-[9px] wwc:font-bold\"\n\t\t\t\t\t\t\t\t\tstyle={{background: \"radial-gradient(circle at 35% 35%, #a855f7, #6366f1, #1e40af)\"}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{profileInitials}\n\t\t\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t\t<span className=\"wwc:text-[12px] wwc:font-medium wwc:text-foreground/80 wwc:truncate wwc:min-w-0\">\n\t\t\t\t\t\t\t\t{profileName}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\t\taria-label={L.profileMenu(profileName)}\n\t\t\t\t\t\t\t\t\tclassName=\"wwc:h-7 wwc:w-7 wwc:text-muted-foreground\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<MoreHorizontal className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t\t\t{renderProfileMenu()}\n\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{/* end inner sidebar */}\n\t\t</div>\n\t);\n}\n\n/**\n * App shell sidebar. On desktop it renders inline (a rail or expanded column). On mobile (below `md`) the\n * inline column is hidden and the same sidebar opens as a left sheet, driven by `mobileOpen` /\n * `onMobileOpenChange` — wire those to `CoreAppTopBar`'s `onMenuClick` hamburger.\n */\nexport function CoreAppSidebar(props: CoreAppSidebarProps = {}) {\n\tconst {mobileOpen = false, onMobileOpenChange, ...shellProps} = props;\n\n\t// Opt-in: without a mobile handler the sidebar stays inline at every width (unchanged behavior).\n\tif (!onMobileOpenChange) return <SidebarShell {...shellProps} />;\n\n\treturn (\n\t\t<>\n\t\t\t{/* Desktop: inline sidebar. `md:contents` lets the shell's own root participate in the app-shell\n\t\t\t flex row directly; hidden below md, where the sheet takes over. */}\n\t\t\t<div className=\"wwc:hidden wwc:md:contents\">\n\t\t\t\t<SidebarShell {...shellProps} />\n\t\t\t</div>\n\t\t\t{/* Mobile: the same sidebar as a left drawer. */}\n\t\t\t<Sheet open={mobileOpen} onOpenChange={onMobileOpenChange}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tside=\"left\"\n\t\t\t\t\tclassName=\"wwc:w-auto wwc:max-w-[85vw] wwc:border-0 wwc:p-0 wwc:md:hidden [&>button]:wwc:z-10\"\n\t\t\t\t>\n\t\t\t\t\t<SidebarShell {...shellProps} seamless hideCollapse />\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ //#region src/navigation/core-app-top-bar.d.ts
2
+ export type CoreAppTopBarDensity = "comfortable" | "compact";
3
+ export type CoreAppTopBarProjectGroup = {
4
+ org: string;
5
+ projects: string[];
6
+ };
7
+ export interface CoreAppTopBarProps {
8
+ activeLabel: string;
9
+ /**
10
+ * Structured breadcrumb, taking precedence over `activeLabel`. A segment carrying `onSelect`
11
+ * renders as a link — the way a group name in the breadcrumb should open that group's page.
12
+ */
13
+ breadcrumb?: {
14
+ label: string;
15
+ onSelect?: () => void;
16
+ }[];
17
+ /**
18
+ * Lower-priority actions. They sit inline beside `actions` while the bar is wide enough, and
19
+ * collapse into a single "More actions" menu once it is not — so project and route identity keep
20
+ * the room rather than competing with secondary controls. `label` is both the menu item's text and
21
+ * the inline control's accessible name, so an icon-only action is still named.
22
+ */
23
+ overflowActions?: {
24
+ id: string;
25
+ label: string;
26
+ icon?: React.ComponentType<{
27
+ className?: string;
28
+ }>;
29
+ onSelect?: () => void;
30
+ }[];
31
+ /**
32
+ * When `false`, the project switcher dropdown is hidden entirely — for apps or
33
+ * surfaces that aren't scoped to a project. The centered breadcrumb and
34
+ * `rightContent` still render. Applies to both densities. Defaults to `true`.
35
+ */
36
+ showProjectSwitcher?: boolean;
37
+ /** Current project shown in the switcher. Optional when `showProjectSwitcher` is `false`. */
38
+ selectedProject?: string;
39
+ /**
40
+ * Flat list of projects shown in the switcher popover. Used only when
41
+ * `projectGroups` is not provided. Optional when `showProjectSwitcher` is `false`.
42
+ */
43
+ projects?: readonly string[];
44
+ /**
45
+ * Grouped list of projects organized by organization. When provided, the
46
+ * switcher renders org headers with their projects nested below, and the
47
+ * search input matches both org names and project names.
48
+ */
49
+ projectGroups?: CoreAppTopBarProjectGroup[];
50
+ /** Optional when `showProjectSwitcher` is `false`. */
51
+ onSelectProject?: (project: string) => void;
52
+ /** @deprecated The sidebar collapse toggle was removed from the top bar; this prop is ignored. */
53
+ isPinned?: boolean;
54
+ /** @deprecated The sidebar collapse toggle was removed from the top bar; this prop is ignored. */
55
+ onToggleSidebar?: () => void;
56
+ /** @deprecated The sidebar collapse toggle was removed from the top bar; this prop is ignored. */
57
+ onHoverSidebar?: () => void;
58
+ /**
59
+ * When provided, a hamburger button is shown at the far left of the bar on mobile (`md:hidden`) and
60
+ * calls this on click — pair it with `CoreAppSidebar`'s `mobileOpen`/`onMobileOpenChange` so the sidebar
61
+ * opens as a left sheet. Hidden from `md` up, where the inline sidebar is visible.
62
+ */
63
+ onMenuClick?: () => void;
64
+ rightContent?: React.ReactNode;
65
+ /**
66
+ * Show a notification bell button beside the overflow (three-dots) menu. Defaults to `false`.
67
+ * Ignored when `rightContent` is provided (that fully replaces the default right cluster).
68
+ */
69
+ /** Extra icon buttons placed before the notifications bell, e.g. a changeset button. */
70
+ actions?: React.ReactNode;
71
+ showNotifications?: boolean;
72
+ /** Unread count shown as a badge on the bell. `0`/undefined shows the bell with no badge; capped display at 99+. */
73
+ notificationCount?: number;
74
+ /** Fires when the notification bell is clicked. */
75
+ onNotificationsClick?: () => void;
76
+ /**
77
+ * `"comfortable"` (default) renders the bar at 44px (h-11) to match the
78
+ * default `CoreAppSidebar`. `"compact"` renders at 36px (h-9) with smaller
79
+ * controls and text — pair with `CoreAppSidebar density="compact"` for a
80
+ * matching dense app shell.
81
+ */
82
+ density?: CoreAppTopBarDensity;
83
+ /**
84
+ * Overrides for the bar's own built-in copy — control aria-labels, the project-search placeholder and
85
+ * empty states, and the feedback item. English defaults fill in any key left unset.
86
+ */
87
+ labels?: Partial<CoreAppTopBarLabels>;
88
+ }
89
+ /**
90
+ * Overridable copy for `CoreAppTopBar`'s own built-in controls. Every key has an English default, so a
91
+ * consumer supplies only the strings it wants to translate. Consumer-provided data — `activeLabel`,
92
+ * `breadcrumb`, project names, `overflowActions[].label` — is never part of this.
93
+ */
94
+ export type CoreAppTopBarLabels = {
95
+ /** Aria label for the mobile hamburger button. */
96
+ openNavigation: string;
97
+ /** Project switcher placeholder when a flat `projects` list is used. */
98
+ findProject: string;
99
+ /** Project switcher placeholder when `projectGroups` is used (matches orgs and projects). */
100
+ searchProjectOrOrg: string;
101
+ /** Project switcher empty state for a flat `projects` list. */
102
+ noProjectsFound: string;
103
+ /** Project switcher empty state when `projectGroups` is used. */
104
+ noResults: string;
105
+ /** Aria label for the collapsed overflow-actions trigger. */
106
+ moreActions: string;
107
+ /** Aria label for the notifications bell. */
108
+ notifications: string;
109
+ /** Aria label for the right-hand overflow (three-dots) menu. */
110
+ moreTopBarActions: string;
111
+ /** The feedback menu item's text. */
112
+ giveFeedback: string;
113
+ };
114
+ export declare function CoreAppTopBar({ activeLabel, breadcrumb, showProjectSwitcher, selectedProject, projects, projectGroups, onSelectProject, onMenuClick, rightContent, actions, overflowActions, showNotifications, notificationCount, onNotificationsClick, density, labels }: CoreAppTopBarProps): import("react/jsx-runtime").JSX.Element;
115
+ //#endregion
116
+ //# sourceMappingURL=core-app-top-bar.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-app-top-bar.d.mts","names":[],"sources":["../../src/navigation/core-app-top-bar.tsx"],"mappings":";YAMY;YAEA;EACX;EACA;;iBAGgB;EAChB;;;;;EAKA;IAAc;IAAe;;;;;;;;EAO7B;IACC;IACA;IACA,OAAO,MAAM;MAAe;;IAC5B;;;;;;;EAOD;;EAEA;;;;;EAKA;;;;;;EAMA,gBAAgB;;EAEhB,mBAAmB;;EAEnB;;EAEA;;EAEA;;;;;;EAMA;EACA,eAAe,MAAM;;;;;;EAMrB,UAAU,MAAM;EAChB;;EAEA;;EAEA;;;;;;;EAOA,UAAU;;;;;EAKV,SAAS,QAAQ;;;;;;;YAmCN;;EAEX;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;wBA8Ce,gBACf,aACA,YACA,qBACA,iBACA,UACA,eACA,iBACA,aACA,cACA,SACA,iBACA,mBACA,mBACA,sBACA,SACA,UACE,iDAAkB,IAAA"}