@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.
- package/bin/intent.js +20 -0
- package/dist/accordion.d.mts +11 -0
- package/dist/accordion.d.mts.map +1 -0
- package/dist/accordion.mjs +42 -0
- package/dist/accordion.mjs.map +1 -0
- package/dist/activity-log.d.mts +29 -0
- package/dist/activity-log.d.mts.map +1 -0
- package/dist/activity-log.mjs +60 -0
- package/dist/activity-log.mjs.map +1 -0
- package/dist/activity-sheet.d.mts +18 -0
- package/dist/activity-sheet.d.mts.map +1 -0
- package/dist/activity-sheet.mjs +167 -0
- package/dist/activity-sheet.mjs.map +1 -0
- package/dist/add-clinic-location-dialog.d.mts +21 -0
- package/dist/add-clinic-location-dialog.d.mts.map +1 -0
- package/dist/add-clinic-location-dialog.mjs +96 -0
- package/dist/add-clinic-location-dialog.mjs.map +1 -0
- package/dist/add-clinic-visit-dialog.d.mts +51 -0
- package/dist/add-clinic-visit-dialog.d.mts.map +1 -0
- package/dist/add-clinic-visit-dialog.mjs +307 -0
- package/dist/add-clinic-visit-dialog.mjs.map +1 -0
- package/dist/add-observation-dialog.d.mts +36 -0
- package/dist/add-observation-dialog.d.mts.map +1 -0
- package/dist/add-observation-dialog.mjs +269 -0
- package/dist/add-observation-dialog.mjs.map +1 -0
- package/dist/alert-dialog.d.mts +24 -0
- package/dist/alert-dialog.d.mts.map +1 -0
- package/dist/alert-dialog.mjs +62 -0
- package/dist/alert-dialog.mjs.map +1 -0
- package/dist/alert.d.mts +12 -0
- package/dist/alert.d.mts.map +1 -0
- package/dist/alert.mjs +36 -0
- package/dist/alert.mjs.map +1 -0
- package/dist/app-card.d.mts +21 -0
- package/dist/app-card.d.mts.map +1 -0
- package/dist/app-card.mjs +49 -0
- package/dist/app-card.mjs.map +1 -0
- package/dist/app-shell.d.mts +39 -0
- package/dist/app-shell.d.mts.map +1 -0
- package/dist/app-shell.mjs +79 -0
- package/dist/app-shell.mjs.map +1 -0
- package/dist/aspect-ratio.d.mts +8 -0
- package/dist/aspect-ratio.d.mts.map +1 -0
- package/dist/aspect-ratio.mjs +14 -0
- package/dist/aspect-ratio.mjs.map +1 -0
- package/dist/asset-list-item.d.mts +36 -0
- package/dist/asset-list-item.d.mts.map +1 -0
- package/dist/asset-list-item.mjs +51 -0
- package/dist/asset-list-item.mjs.map +1 -0
- package/dist/assign-doctor-dialog.d.mts +28 -0
- package/dist/assign-doctor-dialog.d.mts.map +1 -0
- package/dist/assign-doctor-dialog.mjs +194 -0
- package/dist/assign-doctor-dialog.mjs.map +1 -0
- package/dist/attention-list.d.mts +29 -0
- package/dist/attention-list.d.mts.map +1 -0
- package/dist/attention-list.mjs +82 -0
- package/dist/attention-list.mjs.map +1 -0
- package/dist/avatar-status-dot.d.mts +22 -0
- package/dist/avatar-status-dot.d.mts.map +1 -0
- package/dist/avatar-status-dot.mjs +72 -0
- package/dist/avatar-status-dot.mjs.map +1 -0
- package/dist/avatar.d.mts +34 -0
- package/dist/avatar.d.mts.map +1 -0
- package/dist/avatar.mjs +103 -0
- package/dist/avatar.mjs.map +1 -0
- package/dist/badge.d.mts +18 -0
- package/dist/badge.d.mts.map +1 -0
- package/dist/badge.mjs +39 -0
- package/dist/badge.mjs.map +1 -0
- package/dist/banner.d.mts +18 -0
- package/dist/banner.d.mts.map +1 -0
- package/dist/banner.mjs +74 -0
- package/dist/banner.mjs.map +1 -0
- package/dist/blockquote.d.mts +13 -0
- package/dist/blockquote.d.mts.map +1 -0
- package/dist/blockquote.mjs +22 -0
- package/dist/blockquote.mjs.map +1 -0
- package/dist/blueprint-segment.d.mts +33 -0
- package/dist/blueprint-segment.d.mts.map +1 -0
- package/dist/blueprint-segment.mjs +59 -0
- package/dist/blueprint-segment.mjs.map +1 -0
- package/dist/bottom-sheet-switcher.d.mts +32 -0
- package/dist/bottom-sheet-switcher.d.mts.map +1 -0
- package/dist/bottom-sheet-switcher.mjs +40 -0
- package/dist/bottom-sheet-switcher.mjs.map +1 -0
- package/dist/bottom-sheet.d.mts +23 -0
- package/dist/bottom-sheet.d.mts.map +1 -0
- package/dist/bottom-sheet.mjs +91 -0
- package/dist/bottom-sheet.mjs.map +1 -0
- package/dist/breadcrumb.d.mts +39 -0
- package/dist/breadcrumb.d.mts.map +1 -0
- package/dist/breadcrumb.mjs +95 -0
- package/dist/breadcrumb.mjs.map +1 -0
- package/dist/breadcrumbs.d.mts +2 -0
- package/dist/breadcrumbs.mjs +2 -0
- package/dist/browser-tabs.d.mts +40 -0
- package/dist/browser-tabs.d.mts.map +1 -0
- package/dist/browser-tabs.mjs +127 -0
- package/dist/browser-tabs.mjs.map +1 -0
- package/dist/building-model-placeholder.d.mts +46 -0
- package/dist/building-model-placeholder.d.mts.map +1 -0
- package/dist/building-model-placeholder.mjs +175 -0
- package/dist/building-model-placeholder.mjs.map +1 -0
- package/dist/building-progress.d.mts +32 -0
- package/dist/building-progress.d.mts.map +1 -0
- package/dist/building-progress.mjs +74 -0
- package/dist/building-progress.mjs.map +1 -0
- package/dist/building-viewer.d.mts +91 -0
- package/dist/building-viewer.d.mts.map +1 -0
- package/dist/building-viewer.mjs +567 -0
- package/dist/building-viewer.mjs.map +1 -0
- package/dist/button-group.d.mts +8 -0
- package/dist/button-group.d.mts.map +1 -0
- package/dist/button-group.mjs +21 -0
- package/dist/button-group.mjs.map +1 -0
- package/dist/button.d.mts +21 -0
- package/dist/button.d.mts.map +1 -0
- package/dist/button.mjs +79 -0
- package/dist/button.mjs.map +1 -0
- package/dist/calendar-view.d.mts +47 -0
- package/dist/calendar-view.d.mts.map +1 -0
- package/dist/calendar-view.mjs +165 -0
- package/dist/calendar-view.mjs.map +1 -0
- package/dist/calendar.d.mts +15 -0
- package/dist/calendar.d.mts.map +1 -0
- package/dist/calendar.mjs +94 -0
- package/dist/calendar.mjs.map +1 -0
- package/dist/camera-detail-panel.d.mts +44 -0
- package/dist/camera-detail-panel.d.mts.map +1 -0
- package/dist/camera-detail-panel.mjs +105 -0
- package/dist/camera-detail-panel.mjs.map +1 -0
- package/dist/canvas-file-picker.d.mts +28 -0
- package/dist/canvas-file-picker.d.mts.map +1 -0
- package/dist/canvas-file-picker.mjs +90 -0
- package/dist/canvas-file-picker.mjs.map +1 -0
- package/dist/canvas-header.d.mts +28 -0
- package/dist/canvas-header.d.mts.map +1 -0
- package/dist/canvas-header.mjs +42 -0
- package/dist/canvas-header.mjs.map +1 -0
- package/dist/canvas-navigator.d.mts +87 -0
- package/dist/canvas-navigator.d.mts.map +1 -0
- package/dist/canvas-navigator.mjs +426 -0
- package/dist/canvas-navigator.mjs.map +1 -0
- package/dist/canvas-toolbar.d.mts +37 -0
- package/dist/canvas-toolbar.d.mts.map +1 -0
- package/dist/canvas-toolbar.mjs +65 -0
- package/dist/canvas-toolbar.mjs.map +1 -0
- package/dist/capture-route-minimap.d.mts +40 -0
- package/dist/capture-route-minimap.d.mts.map +1 -0
- package/dist/capture-route-minimap.mjs +438 -0
- package/dist/capture-route-minimap.mjs.map +1 -0
- package/dist/card.d.mts +17 -0
- package/dist/card.d.mts.map +1 -0
- package/dist/card.mjs +63 -0
- package/dist/card.mjs.map +1 -0
- package/dist/carousel.d.mts +23 -0
- package/dist/carousel.d.mts.map +1 -0
- package/dist/carousel.mjs +141 -0
- package/dist/carousel.mjs.map +1 -0
- package/dist/catalogue-view-toggle.d.mts +53 -0
- package/dist/catalogue-view-toggle.d.mts.map +1 -0
- package/dist/catalogue-view-toggle.mjs +54 -0
- package/dist/catalogue-view-toggle.mjs.map +1 -0
- package/dist/chart.d.mts +91 -0
- package/dist/chart.d.mts.map +1 -0
- package/dist/chart.mjs +254 -0
- package/dist/chart.mjs.map +1 -0
- package/dist/chat/core-ai-chat-header.d.mts +95 -0
- package/dist/chat/core-ai-chat-header.d.mts.map +1 -0
- package/dist/chat/core-ai-chat-header.mjs +237 -0
- package/dist/chat/core-ai-chat-header.mjs.map +1 -0
- package/dist/chat/core-ai-chat-message.d.mts +18 -0
- package/dist/chat/core-ai-chat-message.d.mts.map +1 -0
- package/dist/chat/core-ai-chat-message.mjs +82 -0
- package/dist/chat/core-ai-chat-message.mjs.map +1 -0
- package/dist/chat/core-ai-chat.d.mts +116 -0
- package/dist/chat/core-ai-chat.d.mts.map +1 -0
- package/dist/chat/core-ai-chat.mjs +325 -0
- package/dist/chat/core-ai-chat.mjs.map +1 -0
- package/dist/chat/core-chart-renderer.d.mts +10 -0
- package/dist/chat/core-chart-renderer.d.mts.map +1 -0
- package/dist/chat/core-chart-renderer.mjs +177 -0
- package/dist/chat/core-chart-renderer.mjs.map +1 -0
- package/dist/chat/core-chat-input.d.mts +9 -0
- package/dist/chat/core-chat-input.d.mts.map +1 -0
- package/dist/chat/core-chat-input.mjs +66 -0
- package/dist/chat/core-chat-input.mjs.map +1 -0
- package/dist/chat/core-chat-message.d.mts +11 -0
- package/dist/chat/core-chat-message.d.mts.map +1 -0
- package/dist/chat/core-chat-message.mjs +101 -0
- package/dist/chat/core-chat-message.mjs.map +1 -0
- package/dist/chat/core-chat-panel.d.mts +16 -0
- package/dist/chat/core-chat-panel.d.mts.map +1 -0
- package/dist/chat/core-chat-panel.mjs +139 -0
- package/dist/chat/core-chat-panel.mjs.map +1 -0
- package/dist/chat/core-chat-widget.d.mts +12 -0
- package/dist/chat/core-chat-widget.d.mts.map +1 -0
- package/dist/chat/core-chat-widget.mjs +116 -0
- package/dist/chat/core-chat-widget.mjs.map +1 -0
- package/dist/chat-layout.d.mts +38 -0
- package/dist/chat-layout.d.mts.map +1 -0
- package/dist/chat-layout.mjs +94 -0
- package/dist/chat-layout.mjs.map +1 -0
- package/dist/chat-message.d.mts +40 -0
- package/dist/chat-message.d.mts.map +1 -0
- package/dist/chat-message.mjs +84 -0
- package/dist/chat-message.mjs.map +1 -0
- package/dist/checkbox.d.mts +8 -0
- package/dist/checkbox.d.mts.map +1 -0
- package/dist/checkbox.mjs +22 -0
- package/dist/checkbox.mjs.map +1 -0
- package/dist/chip.d.mts +54 -0
- package/dist/chip.d.mts.map +1 -0
- package/dist/chip.mjs +142 -0
- package/dist/chip.mjs.map +1 -0
- package/dist/citation.d.mts +22 -0
- package/dist/citation.d.mts.map +1 -0
- package/dist/citation.mjs +70 -0
- package/dist/citation.mjs.map +1 -0
- package/dist/clickable-card.d.mts +28 -0
- package/dist/clickable-card.d.mts.map +1 -0
- package/dist/clickable-card.mjs +87 -0
- package/dist/clickable-card.mjs.map +1 -0
- package/dist/code.d.mts +21 -0
- package/dist/code.d.mts.map +1 -0
- package/dist/code.mjs +48 -0
- package/dist/code.mjs.map +1 -0
- package/dist/collapsible.d.mts +10 -0
- package/dist/collapsible.d.mts.map +1 -0
- package/dist/collapsible.mjs +16 -0
- package/dist/collapsible.mjs.map +1 -0
- package/dist/combobox.d.mts +116 -0
- package/dist/combobox.d.mts.map +1 -0
- package/dist/combobox.mjs +149 -0
- package/dist/combobox.mjs.map +1 -0
- package/dist/command-palette.d.mts +43 -0
- package/dist/command-palette.d.mts.map +1 -0
- package/dist/command-palette.mjs +70 -0
- package/dist/command-palette.mjs.map +1 -0
- package/dist/command.d.mts +91 -0
- package/dist/command.d.mts.map +1 -0
- package/dist/command.mjs +82 -0
- package/dist/command.mjs.map +1 -0
- package/dist/comment-composer.d.mts +29 -0
- package/dist/comment-composer.d.mts.map +1 -0
- package/dist/comment-composer.mjs +253 -0
- package/dist/comment-composer.mjs.map +1 -0
- package/dist/comment-thread.d.mts +66 -0
- package/dist/comment-thread.d.mts.map +1 -0
- package/dist/comment-thread.mjs +180 -0
- package/dist/comment-thread.mjs.map +1 -0
- package/dist/compare-bars.d.mts +29 -0
- package/dist/compare-bars.d.mts.map +1 -0
- package/dist/compare-bars.mjs +118 -0
- package/dist/compare-bars.mjs.map +1 -0
- package/dist/compare-view.d.mts +75 -0
- package/dist/compare-view.d.mts.map +1 -0
- package/dist/compare-view.mjs +383 -0
- package/dist/compare-view.mjs.map +1 -0
- package/dist/confirm-dialog.d.mts +37 -0
- package/dist/confirm-dialog.d.mts.map +1 -0
- package/dist/confirm-dialog.mjs +40 -0
- package/dist/confirm-dialog.mjs.map +1 -0
- package/dist/context-menu.d.mts +31 -0
- package/dist/context-menu.d.mts.map +1 -0
- package/dist/context-menu.mjs +84 -0
- package/dist/context-menu.mjs.map +1 -0
- package/dist/context-toolbar.d.mts +22 -0
- package/dist/context-toolbar.d.mts.map +1 -0
- package/dist/context-toolbar.mjs +81 -0
- package/dist/context-toolbar.mjs.map +1 -0
- package/dist/copy-button.d.mts +15 -0
- package/dist/copy-button.d.mts.map +1 -0
- package/dist/copy-button.mjs +33 -0
- package/dist/copy-button.mjs.map +1 -0
- package/dist/core-mark.d.mts +25 -0
- package/dist/core-mark.d.mts.map +1 -0
- package/dist/core-mark.mjs +74 -0
- package/dist/core-mark.mjs.map +1 -0
- package/dist/data/mock-data.d.mts +9 -0
- package/dist/data/mock-data.d.mts.map +1 -0
- package/dist/data/mock-data.mjs +159 -0
- package/dist/data/mock-data.mjs.map +1 -0
- package/dist/data/rnglf-zones.d.mts +17 -0
- package/dist/data/rnglf-zones.d.mts.map +1 -0
- package/dist/data/rnglf-zones.mjs +1400 -0
- package/dist/data/rnglf-zones.mjs.map +1 -0
- package/dist/data-table.d.mts +202 -0
- package/dist/data-table.d.mts.map +1 -0
- package/dist/data-table.mjs +520 -0
- package/dist/data-table.mjs.map +1 -0
- package/dist/date-picker.d.mts +111 -0
- package/dist/date-picker.d.mts.map +1 -0
- package/dist/date-picker.mjs +546 -0
- package/dist/date-picker.mjs.map +1 -0
- package/dist/date-range-input.d.mts +26 -0
- package/dist/date-range-input.d.mts.map +1 -0
- package/dist/date-range-input.mjs +60 -0
- package/dist/date-range-input.mjs.map +1 -0
- package/dist/date-time-input.d.mts +27 -0
- package/dist/date-time-input.d.mts.map +1 -0
- package/dist/date-time-input.mjs +110 -0
- package/dist/date-time-input.mjs.map +1 -0
- package/dist/detail-panel-shell.d.mts +37 -0
- package/dist/detail-panel-shell.d.mts.map +1 -0
- package/dist/detail-panel-shell.mjs +86 -0
- package/dist/detail-panel-shell.mjs.map +1 -0
- package/dist/dialog.d.mts +105 -0
- package/dist/dialog.d.mts.map +1 -0
- package/dist/dialog.mjs +137 -0
- package/dist/dialog.mjs.map +1 -0
- package/dist/divider.d.mts +8 -0
- package/dist/divider.d.mts.map +1 -0
- package/dist/divider.mjs +18 -0
- package/dist/divider.mjs.map +1 -0
- package/dist/drawer.d.mts +26 -0
- package/dist/drawer.d.mts.map +1 -0
- package/dist/drawer.mjs +53 -0
- package/dist/drawer.mjs.map +1 -0
- package/dist/drawing-actions.d.mts +29 -0
- package/dist/drawing-actions.d.mts.map +1 -0
- package/dist/drawing-actions.mjs +124 -0
- package/dist/drawing-actions.mjs.map +1 -0
- package/dist/dropdown-menu.d.mts +31 -0
- package/dist/dropdown-menu.d.mts.map +1 -0
- package/dist/dropdown-menu.mjs +84 -0
- package/dist/dropdown-menu.mjs.map +1 -0
- package/dist/empty.d.mts +34 -0
- package/dist/empty.d.mts.map +1 -0
- package/dist/empty.mjs +119 -0
- package/dist/empty.mjs.map +1 -0
- package/dist/error-page.d.mts +20 -0
- package/dist/error-page.d.mts.map +1 -0
- package/dist/error-page.mjs +96 -0
- package/dist/error-page.mjs.map +1 -0
- package/dist/export-dialog.d.mts +58 -0
- package/dist/export-dialog.d.mts.map +1 -0
- package/dist/export-dialog.mjs +248 -0
- package/dist/export-dialog.mjs.map +1 -0
- package/dist/field.d.mts +11 -0
- package/dist/field.d.mts.map +1 -0
- package/dist/field.mjs +34 -0
- package/dist/field.mjs.map +1 -0
- package/dist/file-input.d.mts +17 -0
- package/dist/file-input.d.mts.map +1 -0
- package/dist/file-input.mjs +114 -0
- package/dist/file-input.mjs.map +1 -0
- package/dist/file-system/context.d.mts +28 -0
- package/dist/file-system/context.d.mts.map +1 -0
- package/dist/file-system/context.mjs +42 -0
- package/dist/file-system/context.mjs.map +1 -0
- package/dist/file-system/file-system-details.d.mts +12 -0
- package/dist/file-system/file-system-details.d.mts.map +1 -0
- package/dist/file-system/file-system-details.mjs +166 -0
- package/dist/file-system/file-system-details.mjs.map +1 -0
- package/dist/file-system/file-system-filters.d.mts +16 -0
- package/dist/file-system/file-system-filters.d.mts.map +1 -0
- package/dist/file-system/file-system-filters.mjs +205 -0
- package/dist/file-system/file-system-filters.mjs.map +1 -0
- package/dist/file-system/file-system-new.d.mts +16 -0
- package/dist/file-system/file-system-new.d.mts.map +1 -0
- package/dist/file-system/file-system-new.mjs +204 -0
- package/dist/file-system/file-system-new.mjs.map +1 -0
- package/dist/file-system/file-system-path.d.mts +7 -0
- package/dist/file-system/file-system-path.d.mts.map +1 -0
- package/dist/file-system/file-system-path.mjs +22 -0
- package/dist/file-system/file-system-path.mjs.map +1 -0
- package/dist/file-system/file-system-project.d.mts +16 -0
- package/dist/file-system/file-system-project.d.mts.map +1 -0
- package/dist/file-system/file-system-project.mjs +253 -0
- package/dist/file-system/file-system-project.mjs.map +1 -0
- package/dist/file-system/file-system-table.d.mts +17 -0
- package/dist/file-system/file-system-table.d.mts.map +1 -0
- package/dist/file-system/file-system-table.mjs +95 -0
- package/dist/file-system/file-system-table.mjs.map +1 -0
- package/dist/file-system/file-system.d.mts +35 -0
- package/dist/file-system/file-system.d.mts.map +1 -0
- package/dist/file-system/file-system.mjs +179 -0
- package/dist/file-system/file-system.mjs.map +1 -0
- package/dist/file-system/index.d.mts +9 -0
- package/dist/file-system/index.mjs +9 -0
- package/dist/file-system/model.d.mts +156 -0
- package/dist/file-system/model.d.mts.map +1 -0
- package/dist/file-system/model.mjs +200 -0
- package/dist/file-system/model.mjs.map +1 -0
- package/dist/filter.d.mts +92 -0
- package/dist/filter.d.mts.map +1 -0
- package/dist/filter.mjs +267 -0
- package/dist/filter.mjs.map +1 -0
- package/dist/float-shadow.d.mts +10 -0
- package/dist/float-shadow.d.mts.map +1 -0
- package/dist/float-shadow.mjs +11 -0
- package/dist/float-shadow.mjs.map +1 -0
- package/dist/floating-assistant.d.mts +75 -0
- package/dist/floating-assistant.d.mts.map +1 -0
- package/dist/floating-assistant.mjs +114 -0
- package/dist/floating-assistant.mjs.map +1 -0
- package/dist/floor-progress-bar.d.mts +17 -0
- package/dist/floor-progress-bar.d.mts.map +1 -0
- package/dist/floor-progress-bar.mjs +38 -0
- package/dist/floor-progress-bar.mjs.map +1 -0
- package/dist/fonts/LICENSE.md +41 -0
- package/dist/fonts/figtree-italic-300-900-latin-ext.woff2 +0 -0
- package/dist/fonts/figtree-italic-300-900-latin.woff2 +0 -0
- package/dist/fonts/figtree-normal-300-900-latin-ext.woff2 +0 -0
- package/dist/fonts/figtree-normal-300-900-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-italic-400-latin-ext.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-italic-400-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-400-latin-ext.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-400-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-500-latin-ext.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-500-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-600-latin-ext.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-600-latin.woff2 +0 -0
- package/dist/fonts/lora-italic-400-700-latin-ext.woff2 +0 -0
- package/dist/fonts/lora-italic-400-700-latin.woff2 +0 -0
- package/dist/fonts/lora-normal-400-700-latin-ext.woff2 +0 -0
- package/dist/fonts/lora-normal-400-700-latin.woff2 +0 -0
- package/dist/footprint-viewer.d.mts +88 -0
- package/dist/footprint-viewer.d.mts.map +1 -0
- package/dist/footprint-viewer.mjs +657 -0
- package/dist/footprint-viewer.mjs.map +1 -0
- package/dist/form-action-bar.d.mts +32 -0
- package/dist/form-action-bar.d.mts.map +1 -0
- package/dist/form-action-bar.mjs +42 -0
- package/dist/form-action-bar.mjs.map +1 -0
- package/dist/form-dialog.d.mts +116 -0
- package/dist/form-dialog.d.mts.map +1 -0
- package/dist/form-dialog.mjs +149 -0
- package/dist/form-dialog.mjs.map +1 -0
- package/dist/form-layout.d.mts +33 -0
- package/dist/form-layout.d.mts.map +1 -0
- package/dist/form-layout.mjs +90 -0
- package/dist/form-layout.mjs.map +1 -0
- package/dist/form.d.mts +29 -0
- package/dist/form.d.mts.map +1 -0
- package/dist/form.mjs +93 -0
- package/dist/form.mjs.map +1 -0
- package/dist/fragment-viewer/cinematic.d.mts +76 -0
- package/dist/fragment-viewer/cinematic.d.mts.map +1 -0
- package/dist/fragment-viewer/cinematic.mjs +382 -0
- package/dist/fragment-viewer/cinematic.mjs.map +1 -0
- package/dist/fragment-viewer/context.d.mts +106 -0
- package/dist/fragment-viewer/context.d.mts.map +1 -0
- package/dist/fragment-viewer/context.mjs +168 -0
- package/dist/fragment-viewer/context.mjs.map +1 -0
- package/dist/fragment-viewer/runtime.d.mts +288 -0
- package/dist/fragment-viewer/runtime.d.mts.map +1 -0
- package/dist/fragment-viewer/runtime.mjs +782 -0
- package/dist/fragment-viewer/runtime.mjs.map +1 -0
- package/dist/fragment-viewer.d.mts +62 -0
- package/dist/fragment-viewer.d.mts.map +1 -0
- package/dist/fragment-viewer.mjs +144 -0
- package/dist/fragment-viewer.mjs.map +1 -0
- package/dist/gantt.d.mts +72 -0
- package/dist/gantt.d.mts.map +1 -0
- package/dist/gantt.mjs +281 -0
- package/dist/gantt.mjs.map +1 -0
- package/dist/graph-canvas.d.mts +60 -0
- package/dist/graph-canvas.d.mts.map +1 -0
- package/dist/graph-canvas.mjs +105 -0
- package/dist/graph-canvas.mjs.map +1 -0
- package/dist/grid.d.mts +16 -0
- package/dist/grid.d.mts.map +1 -0
- package/dist/grid.mjs +47 -0
- package/dist/grid.mjs.map +1 -0
- package/dist/heading.d.mts +16 -0
- package/dist/heading.d.mts.map +1 -0
- package/dist/heading.mjs +43 -0
- package/dist/heading.mjs.map +1 -0
- package/dist/house-shape.d.mts +22 -0
- package/dist/house-shape.d.mts.map +1 -0
- package/dist/house-shape.mjs +103 -0
- package/dist/house-shape.mjs.map +1 -0
- package/dist/hover-card.d.mts +10 -0
- package/dist/hover-card.d.mts.map +1 -0
- package/dist/hover-card.mjs +22 -0
- package/dist/hover-card.mjs.map +1 -0
- package/dist/icon-button.d.mts +20 -0
- package/dist/icon-button.d.mts.map +1 -0
- package/dist/icon-button.mjs +52 -0
- package/dist/icon-button.mjs.map +1 -0
- package/dist/icon.d.mts +16 -0
- package/dist/icon.d.mts.map +1 -0
- package/dist/icon.mjs +32 -0
- package/dist/icon.mjs.map +1 -0
- package/dist/image-zoom.d.mts +23 -0
- package/dist/image-zoom.d.mts.map +1 -0
- package/dist/image-zoom.mjs +51 -0
- package/dist/image-zoom.mjs.map +1 -0
- package/dist/index.d.mts +3 -0
- package/dist/index.mjs +2 -0
- package/dist/inline-comment-composer.d.mts +40 -0
- package/dist/inline-comment-composer.d.mts.map +1 -0
- package/dist/inline-comment-composer.mjs +174 -0
- package/dist/inline-comment-composer.mjs.map +1 -0
- package/dist/input-group.d.mts +8 -0
- package/dist/input-group.d.mts.map +1 -0
- package/dist/input-group.mjs +21 -0
- package/dist/input-group.mjs.map +1 -0
- package/dist/input-otp.d.mts +40 -0
- package/dist/input-otp.d.mts.map +1 -0
- package/dist/input-otp.mjs +44 -0
- package/dist/input-otp.mjs.map +1 -0
- package/dist/input.d.mts +7 -0
- package/dist/input.d.mts.map +1 -0
- package/dist/input.mjs +18 -0
- package/dist/input.mjs.map +1 -0
- package/dist/item.d.mts +10 -0
- package/dist/item.d.mts.map +1 -0
- package/dist/item.mjs +33 -0
- package/dist/item.mjs.map +1 -0
- package/dist/kbd.d.mts +8 -0
- package/dist/kbd.d.mts.map +1 -0
- package/dist/kbd.mjs +15 -0
- package/dist/kbd.mjs.map +1 -0
- package/dist/kiosk-body.d.mts +13 -0
- package/dist/kiosk-body.d.mts.map +1 -0
- package/dist/kiosk-body.mjs +352 -0
- package/dist/kiosk-body.mjs.map +1 -0
- package/dist/kpi-bar.d.mts +29 -0
- package/dist/kpi-bar.d.mts.map +1 -0
- package/dist/kpi-bar.mjs +46 -0
- package/dist/kpi-bar.mjs.map +1 -0
- package/dist/kpi-summary.d.mts +24 -0
- package/dist/kpi-summary.d.mts.map +1 -0
- package/dist/kpi-summary.mjs +22 -0
- package/dist/kpi-summary.mjs.map +1 -0
- package/dist/label.d.mts +19 -0
- package/dist/label.d.mts.map +1 -0
- package/dist/label.mjs +27 -0
- package/dist/label.mjs.map +1 -0
- package/dist/legend.d.mts +87 -0
- package/dist/legend.d.mts.map +1 -0
- package/dist/legend.mjs +210 -0
- package/dist/legend.mjs.map +1 -0
- package/dist/lightbox.d.mts +28 -0
- package/dist/lightbox.d.mts.map +1 -0
- package/dist/lightbox.mjs +142 -0
- package/dist/lightbox.mjs.map +1 -0
- package/dist/link-type-detail.d.mts +73 -0
- package/dist/link-type-detail.d.mts.map +1 -0
- package/dist/link-type-detail.mjs +628 -0
- package/dist/link-type-detail.mjs.map +1 -0
- package/dist/link-type-wizard.d.mts +35 -0
- package/dist/link-type-wizard.d.mts.map +1 -0
- package/dist/link-type-wizard.mjs +303 -0
- package/dist/link-type-wizard.mjs.map +1 -0
- package/dist/link.d.mts +14 -0
- package/dist/link.d.mts.map +1 -0
- package/dist/link.mjs +30 -0
- package/dist/link.mjs.map +1 -0
- package/dist/list.d.mts +19 -0
- package/dist/list.d.mts.map +1 -0
- package/dist/list.mjs +27 -0
- package/dist/list.mjs.map +1 -0
- package/dist/map-compare-layout.d.mts +53 -0
- package/dist/map-compare-layout.d.mts.map +1 -0
- package/dist/map-compare-layout.mjs +164 -0
- package/dist/map-compare-layout.mjs.map +1 -0
- package/dist/map-compass.d.mts +22 -0
- package/dist/map-compass.d.mts.map +1 -0
- package/dist/map-compass.mjs +56 -0
- package/dist/map-compass.mjs.map +1 -0
- package/dist/map-control-panel.d.mts +92 -0
- package/dist/map-control-panel.d.mts.map +1 -0
- package/dist/map-control-panel.mjs +153 -0
- package/dist/map-control-panel.mjs.map +1 -0
- package/dist/map-controls.d.mts +24 -0
- package/dist/map-controls.d.mts.map +1 -0
- package/dist/map-controls.mjs +322 -0
- package/dist/map-controls.mjs.map +1 -0
- package/dist/map-hover-card.d.mts +28 -0
- package/dist/map-hover-card.d.mts.map +1 -0
- package/dist/map-hover-card.mjs +56 -0
- package/dist/map-hover-card.mjs.map +1 -0
- package/dist/map-legend.d.mts +41 -0
- package/dist/map-legend.d.mts.map +1 -0
- package/dist/map-legend.mjs +97 -0
- package/dist/map-legend.mjs.map +1 -0
- package/dist/map-minimap.d.mts +44 -0
- package/dist/map-minimap.d.mts.map +1 -0
- package/dist/map-minimap.mjs +108 -0
- package/dist/map-minimap.mjs.map +1 -0
- package/dist/map-toolbar.d.mts +60 -0
- package/dist/map-toolbar.d.mts.map +1 -0
- package/dist/map-toolbar.mjs +195 -0
- package/dist/map-toolbar.mjs.map +1 -0
- package/dist/map-transition.d.mts +51 -0
- package/dist/map-transition.d.mts.map +1 -0
- package/dist/map-transition.mjs +59 -0
- package/dist/map-transition.mjs.map +1 -0
- package/dist/map.d.mts +14 -0
- package/dist/map.d.mts.map +1 -0
- package/dist/map.mjs +47 -0
- package/dist/map.mjs.map +1 -0
- package/dist/mapbox-token.d.mts +12 -0
- package/dist/mapbox-token.d.mts.map +1 -0
- package/dist/mapbox-token.mjs +15 -0
- package/dist/mapbox-token.mjs.map +1 -0
- package/dist/markdown.d.mts +18 -0
- package/dist/markdown.d.mts.map +1 -0
- package/dist/markdown.mjs +41 -0
- package/dist/markdown.mjs.map +1 -0
- package/dist/mega-menu.d.mts +36 -0
- package/dist/mega-menu.d.mts.map +1 -0
- package/dist/mega-menu.mjs +89 -0
- package/dist/mega-menu.mjs.map +1 -0
- package/dist/menubar.d.mts +32 -0
- package/dist/menubar.d.mts.map +1 -0
- package/dist/menubar.mjs +96 -0
- package/dist/menubar.mjs.map +1 -0
- package/dist/metadata-list.d.mts +2 -0
- package/dist/metadata-list.mjs +2 -0
- package/dist/metric-card.d.mts +28 -0
- package/dist/metric-card.d.mts.map +1 -0
- package/dist/metric-card.mjs +55 -0
- package/dist/metric-card.mjs.map +1 -0
- package/dist/milestone-table.d.mts +35 -0
- package/dist/milestone-table.d.mts.map +1 -0
- package/dist/milestone-table.mjs +84 -0
- package/dist/milestone-table.mjs.map +1 -0
- package/dist/minimap.d.mts +23 -0
- package/dist/minimap.d.mts.map +1 -0
- package/dist/minimap.mjs +64 -0
- package/dist/minimap.mjs.map +1 -0
- package/dist/more-menu.d.mts +27 -0
- package/dist/more-menu.d.mts.map +1 -0
- package/dist/more-menu.mjs +34 -0
- package/dist/more-menu.mjs.map +1 -0
- package/dist/multi-select.d.mts +38 -0
- package/dist/multi-select.d.mts.map +1 -0
- package/dist/multi-select.mjs +106 -0
- package/dist/multi-select.mjs.map +1 -0
- package/dist/navigation/core-app-sidebar.d.mts +461 -0
- package/dist/navigation/core-app-sidebar.d.mts.map +1 -0
- package/dist/navigation/core-app-sidebar.mjs +1288 -0
- package/dist/navigation/core-app-sidebar.mjs.map +1 -0
- package/dist/navigation/core-app-top-bar.d.mts +116 -0
- package/dist/navigation/core-app-top-bar.d.mts.map +1 -0
- package/dist/navigation/core-app-top-bar.mjs +224 -0
- package/dist/navigation/core-app-top-bar.mjs.map +1 -0
- package/dist/navigation/core-context-tabs.d.mts +12 -0
- package/dist/navigation/core-context-tabs.d.mts.map +1 -0
- package/dist/navigation/core-context-tabs.mjs +32 -0
- package/dist/navigation/core-context-tabs.mjs.map +1 -0
- package/dist/navigation/core-dashboard-header.d.mts +20 -0
- package/dist/navigation/core-dashboard-header.d.mts.map +1 -0
- package/dist/navigation/core-dashboard-header.mjs +227 -0
- package/dist/navigation/core-dashboard-header.mjs.map +1 -0
- package/dist/navigation/core-filter-strip.d.mts +12 -0
- package/dist/navigation/core-filter-strip.d.mts.map +1 -0
- package/dist/navigation/core-filter-strip.mjs +289 -0
- package/dist/navigation/core-filter-strip.mjs.map +1 -0
- package/dist/navigation/core-org-project-switcher.d.mts +12 -0
- package/dist/navigation/core-org-project-switcher.d.mts.map +1 -0
- package/dist/navigation/core-org-project-switcher.mjs +201 -0
- package/dist/navigation/core-org-project-switcher.mjs.map +1 -0
- package/dist/navigation/switcher.d.mts +38 -0
- package/dist/navigation/switcher.d.mts.map +1 -0
- package/dist/navigation/switcher.mjs +144 -0
- package/dist/navigation/switcher.mjs.map +1 -0
- package/dist/navigation-menu.d.mts +16 -0
- package/dist/navigation-menu.d.mts.map +1 -0
- package/dist/navigation-menu.mjs +64 -0
- package/dist/navigation-menu.mjs.map +1 -0
- package/dist/neighborhood-scene.d.mts +21 -0
- package/dist/neighborhood-scene.d.mts.map +1 -0
- package/dist/neighborhood-scene.mjs +285 -0
- package/dist/neighborhood-scene.mjs.map +1 -0
- package/dist/node-graph.d.mts +154 -0
- package/dist/node-graph.d.mts.map +1 -0
- package/dist/node-graph.mjs +349 -0
- package/dist/node-graph.mjs.map +1 -0
- package/dist/notification-center.d.mts +40 -0
- package/dist/notification-center.d.mts.map +1 -0
- package/dist/notification-center.mjs +224 -0
- package/dist/notification-center.mjs.map +1 -0
- package/dist/number-input.d.mts +23 -0
- package/dist/number-input.d.mts.map +1 -0
- package/dist/number-input.mjs +79 -0
- package/dist/number-input.mjs.map +1 -0
- package/dist/object-drawing-toolbar.d.mts +38 -0
- package/dist/object-drawing-toolbar.d.mts.map +1 -0
- package/dist/object-drawing-toolbar.mjs +172 -0
- package/dist/object-drawing-toolbar.mjs.map +1 -0
- package/dist/object-type-detail.d.mts +27 -0
- package/dist/object-type-detail.d.mts.map +1 -0
- package/dist/object-type-detail.mjs +1389 -0
- package/dist/object-type-detail.mjs.map +1 -0
- package/dist/object-type-wizard.d.mts +78 -0
- package/dist/object-type-wizard.d.mts.map +1 -0
- package/dist/object-type-wizard.mjs +885 -0
- package/dist/object-type-wizard.mjs.map +1 -0
- package/dist/observation-detail-panel.d.mts +89 -0
- package/dist/observation-detail-panel.d.mts.map +1 -0
- package/dist/observation-detail-panel.mjs +168 -0
- package/dist/observation-detail-panel.mjs.map +1 -0
- package/dist/observations-map.d.mts +288 -0
- package/dist/observations-map.d.mts.map +1 -0
- package/dist/observations-map.mjs +1087 -0
- package/dist/observations-map.mjs.map +1 -0
- package/dist/operations-drawer.d.mts +51 -0
- package/dist/operations-drawer.d.mts.map +1 -0
- package/dist/operations-drawer.mjs +193 -0
- package/dist/operations-drawer.mjs.map +1 -0
- package/dist/outline.d.mts +27 -0
- package/dist/outline.d.mts.map +1 -0
- package/dist/outline.mjs +47 -0
- package/dist/outline.mjs.map +1 -0
- package/dist/overflow-list.d.mts +23 -0
- package/dist/overflow-list.d.mts.map +1 -0
- package/dist/overflow-list.mjs +38 -0
- package/dist/overflow-list.mjs.map +1 -0
- package/dist/overlay.d.mts +17 -0
- package/dist/overlay.d.mts.map +1 -0
- package/dist/overlay.mjs +32 -0
- package/dist/overlay.mjs.map +1 -0
- package/dist/page-content-header.d.mts +43 -0
- package/dist/page-content-header.d.mts.map +1 -0
- package/dist/page-content-header.mjs +224 -0
- package/dist/page-content-header.mjs.map +1 -0
- package/dist/pages/almanar-blocks-data.d.mts +4 -0
- package/dist/pages/almanar-blocks-data.d.mts.map +1 -0
- package/dist/pages/almanar-blocks-data.mjs +691 -0
- package/dist/pages/almanar-blocks-data.mjs.map +1 -0
- package/dist/pages/almanar-hierarchy-data.d.mts +9 -0
- package/dist/pages/almanar-hierarchy-data.d.mts.map +1 -0
- package/dist/pages/almanar-hierarchy-data.mjs +816 -0
- package/dist/pages/almanar-hierarchy-data.mjs.map +1 -0
- package/dist/pages/almanar-villa-taxonomy.d.mts +9 -0
- package/dist/pages/almanar-villa-taxonomy.d.mts.map +1 -0
- package/dist/pages/almanar-villa-taxonomy.mjs +1569 -0
- package/dist/pages/almanar-villa-taxonomy.mjs.map +1 -0
- package/dist/pages/app-marketplace-shared.d.mts +146 -0
- package/dist/pages/app-marketplace-shared.d.mts.map +1 -0
- package/dist/pages/app-marketplace-shared.mjs +739 -0
- package/dist/pages/app-marketplace-shared.mjs.map +1 -0
- package/dist/pages/capture-ui-enhanced.d.mts +125 -0
- package/dist/pages/capture-ui-enhanced.d.mts.map +1 -0
- package/dist/pages/capture-ui-enhanced.mjs +915 -0
- package/dist/pages/capture-ui-enhanced.mjs.map +1 -0
- package/dist/pages/core-admin-panel.d.mts +10 -0
- package/dist/pages/core-admin-panel.d.mts.map +1 -0
- package/dist/pages/core-admin-panel.mjs +3076 -0
- package/dist/pages/core-admin-panel.mjs.map +1 -0
- package/dist/pages/core-analytics-overview.d.mts +10 -0
- package/dist/pages/core-analytics-overview.d.mts.map +1 -0
- package/dist/pages/core-analytics-overview.mjs +904 -0
- package/dist/pages/core-analytics-overview.mjs.map +1 -0
- package/dist/pages/core-app-installer.d.mts +17 -0
- package/dist/pages/core-app-installer.d.mts.map +1 -0
- package/dist/pages/core-app-installer.mjs +94 -0
- package/dist/pages/core-app-installer.mjs.map +1 -0
- package/dist/pages/core-blueprint-viewer-3.d.mts +25 -0
- package/dist/pages/core-blueprint-viewer-3.d.mts.map +1 -0
- package/dist/pages/core-blueprint-viewer-3.mjs +688 -0
- package/dist/pages/core-blueprint-viewer-3.mjs.map +1 -0
- package/dist/pages/core-blueprint-viewer.d.mts +14 -0
- package/dist/pages/core-blueprint-viewer.d.mts.map +1 -0
- package/dist/pages/core-blueprint-viewer.mjs +665 -0
- package/dist/pages/core-blueprint-viewer.mjs.map +1 -0
- package/dist/pages/core-building-viewer-capture.d.mts +18 -0
- package/dist/pages/core-building-viewer-capture.d.mts.map +1 -0
- package/dist/pages/core-building-viewer-capture.mjs +268 -0
- package/dist/pages/core-building-viewer-capture.mjs.map +1 -0
- package/dist/pages/core-building-viewer.d.mts +20 -0
- package/dist/pages/core-building-viewer.d.mts.map +1 -0
- package/dist/pages/core-building-viewer.mjs +299 -0
- package/dist/pages/core-building-viewer.mjs.map +1 -0
- package/dist/pages/core-clinic.d.mts +14 -0
- package/dist/pages/core-clinic.d.mts.map +1 -0
- package/dist/pages/core-clinic.mjs +2175 -0
- package/dist/pages/core-clinic.mjs.map +1 -0
- package/dist/pages/core-content-area.d.mts +15 -0
- package/dist/pages/core-content-area.d.mts.map +1 -0
- package/dist/pages/core-content-area.mjs +192 -0
- package/dist/pages/core-content-area.mjs.map +1 -0
- package/dist/pages/core-core-connect-v3.d.mts +16 -0
- package/dist/pages/core-core-connect-v3.d.mts.map +1 -0
- package/dist/pages/core-core-connect-v3.mjs +30 -0
- package/dist/pages/core-core-connect-v3.mjs.map +1 -0
- package/dist/pages/core-core-connect.d.mts +15 -0
- package/dist/pages/core-core-connect.d.mts.map +1 -0
- package/dist/pages/core-core-connect.mjs +21 -0
- package/dist/pages/core-core-connect.mjs.map +1 -0
- package/dist/pages/core-design-canvas.d.mts +10 -0
- package/dist/pages/core-design-canvas.d.mts.map +1 -0
- package/dist/pages/core-design-canvas.mjs +322 -0
- package/dist/pages/core-design-canvas.mjs.map +1 -0
- package/dist/pages/core-login-page.d.mts +8 -0
- package/dist/pages/core-login-page.d.mts.map +1 -0
- package/dist/pages/core-login-page.mjs +141 -0
- package/dist/pages/core-login-page.mjs.map +1 -0
- package/dist/pages/core-map-compare-layout.d.mts +20 -0
- package/dist/pages/core-map-compare-layout.d.mts.map +1 -0
- package/dist/pages/core-map-compare-layout.mjs +187 -0
- package/dist/pages/core-map-compare-layout.mjs.map +1 -0
- package/dist/pages/core-observations-map-view.d.mts +19 -0
- package/dist/pages/core-observations-map-view.d.mts.map +1 -0
- package/dist/pages/core-observations-map-view.mjs +1273 -0
- package/dist/pages/core-observations-map-view.mjs.map +1 -0
- package/dist/pages/core-org-ai-report.d.mts +9 -0
- package/dist/pages/core-org-ai-report.d.mts.map +1 -0
- package/dist/pages/core-org-ai-report.mjs +474 -0
- package/dist/pages/core-org-ai-report.mjs.map +1 -0
- package/dist/pages/core-org-overview.d.mts +11 -0
- package/dist/pages/core-org-overview.d.mts.map +1 -0
- package/dist/pages/core-org-overview.mjs +718 -0
- package/dist/pages/core-org-overview.mjs.map +1 -0
- package/dist/pages/core-org-performance.d.mts +11 -0
- package/dist/pages/core-org-performance.d.mts.map +1 -0
- package/dist/pages/core-org-performance.mjs +1398 -0
- package/dist/pages/core-org-performance.mjs.map +1 -0
- package/dist/pages/core-org-reality-capture.d.mts +10 -0
- package/dist/pages/core-org-reality-capture.d.mts.map +1 -0
- package/dist/pages/core-org-reality-capture.mjs +1962 -0
- package/dist/pages/core-org-reality-capture.mjs.map +1 -0
- package/dist/pages/core-org-workforce-intelligence.d.mts +12 -0
- package/dist/pages/core-org-workforce-intelligence.d.mts.map +1 -0
- package/dist/pages/core-org-workforce-intelligence.mjs +1215 -0
- package/dist/pages/core-org-workforce-intelligence.mjs.map +1 -0
- package/dist/pages/core-progress-details.d.mts +10 -0
- package/dist/pages/core-progress-details.d.mts.map +1 -0
- package/dist/pages/core-progress-details.mjs +758 -0
- package/dist/pages/core-progress-details.mjs.map +1 -0
- package/dist/pages/core-project-overview.d.mts +9 -0
- package/dist/pages/core-project-overview.d.mts.map +1 -0
- package/dist/pages/core-project-overview.mjs +246 -0
- package/dist/pages/core-project-overview.mjs.map +1 -0
- package/dist/pages/core-project-quality-issues.d.mts +9 -0
- package/dist/pages/core-project-quality-issues.d.mts.map +1 -0
- package/dist/pages/core-project-quality-issues.mjs +508 -0
- package/dist/pages/core-project-quality-issues.mjs.map +1 -0
- package/dist/pages/core-project-reality-capture.d.mts +9 -0
- package/dist/pages/core-project-reality-capture.d.mts.map +1 -0
- package/dist/pages/core-project-reality-capture.mjs +496 -0
- package/dist/pages/core-project-reality-capture.mjs.map +1 -0
- package/dist/pages/core-project-schedule-cost.d.mts +9 -0
- package/dist/pages/core-project-schedule-cost.d.mts.map +1 -0
- package/dist/pages/core-project-schedule-cost.mjs +548 -0
- package/dist/pages/core-project-schedule-cost.mjs.map +1 -0
- package/dist/pages/core-project-setup.d.mts +10 -0
- package/dist/pages/core-project-setup.d.mts.map +1 -0
- package/dist/pages/core-project-setup.mjs +283 -0
- package/dist/pages/core-project-setup.mjs.map +1 -0
- package/dist/pages/core-project-workforce-safety.d.mts +9 -0
- package/dist/pages/core-project-workforce-safety.d.mts.map +1 -0
- package/dist/pages/core-project-workforce-safety.mjs +465 -0
- package/dist/pages/core-project-workforce-safety.mjs.map +1 -0
- package/dist/pages/core-safety-manager.d.mts +14 -0
- package/dist/pages/core-safety-manager.d.mts.map +1 -0
- package/dist/pages/core-safety-manager.mjs +3081 -0
- package/dist/pages/core-safety-manager.mjs.map +1 -0
- package/dist/pages/core-site-reality.d.mts +25 -0
- package/dist/pages/core-site-reality.d.mts.map +1 -0
- package/dist/pages/core-site-reality.mjs +505 -0
- package/dist/pages/core-site-reality.mjs.map +1 -0
- package/dist/pages/core-task-monitor.d.mts +4 -0
- package/dist/pages/core-task-monitor.d.mts.map +1 -0
- package/dist/pages/core-task-monitor.mjs +587 -0
- package/dist/pages/core-task-monitor.mjs.map +1 -0
- package/dist/pages/core-timesheet.d.mts +2 -0
- package/dist/pages/core-timesheet.mjs +2 -0
- package/dist/pages/core-verifytime-command-center.d.mts +4 -0
- package/dist/pages/core-verifytime-command-center.d.mts.map +1 -0
- package/dist/pages/core-verifytime-command-center.mjs +1089 -0
- package/dist/pages/core-verifytime-command-center.mjs.map +1 -0
- package/dist/pages/core-wc3-workspace.d.mts +71 -0
- package/dist/pages/core-wc3-workspace.d.mts.map +1 -0
- package/dist/pages/core-wc3-workspace.mjs +1015 -0
- package/dist/pages/core-wc3-workspace.mjs.map +1 -0
- package/dist/pages/core-work-permit.d.mts +14 -0
- package/dist/pages/core-work-permit.d.mts.map +1 -0
- package/dist/pages/core-work-permit.mjs +281 -0
- package/dist/pages/core-work-permit.mjs.map +1 -0
- package/dist/pages/core-workforce.d.mts +24 -0
- package/dist/pages/core-workforce.d.mts.map +1 -0
- package/dist/pages/core-workforce.mjs +1253 -0
- package/dist/pages/core-workforce.mjs.map +1 -0
- package/dist/pages/org-logos.d.mts +9 -0
- package/dist/pages/org-logos.d.mts.map +1 -0
- package/dist/pages/org-logos.mjs +11 -0
- package/dist/pages/org-logos.mjs.map +1 -0
- package/dist/pages/state-machine-fixtures.d.mts +34 -0
- package/dist/pages/state-machine-fixtures.d.mts.map +1 -0
- package/dist/pages/state-machine-fixtures.mjs +73 -0
- package/dist/pages/state-machine-fixtures.mjs.map +1 -0
- package/dist/pages/state-machine.d.mts +407 -0
- package/dist/pages/state-machine.d.mts.map +1 -0
- package/dist/pages/state-machine.mjs +2254 -0
- package/dist/pages/state-machine.mjs.map +1 -0
- package/dist/pages/typeform/AttachmentInput.d.mts +11 -0
- package/dist/pages/typeform/AttachmentInput.d.mts.map +1 -0
- package/dist/pages/typeform/AttachmentInput.mjs +59 -0
- package/dist/pages/typeform/AttachmentInput.mjs.map +1 -0
- package/dist/pages/typeform/BuildMethodScreen.d.mts +10 -0
- package/dist/pages/typeform/BuildMethodScreen.d.mts.map +1 -0
- package/dist/pages/typeform/BuildMethodScreen.mjs +176 -0
- package/dist/pages/typeform/BuildMethodScreen.mjs.map +1 -0
- package/dist/pages/typeform/BuilderFlow.d.mts +29 -0
- package/dist/pages/typeform/BuilderFlow.d.mts.map +1 -0
- package/dist/pages/typeform/BuilderFlow.mjs +111 -0
- package/dist/pages/typeform/BuilderFlow.mjs.map +1 -0
- package/dist/pages/typeform/BuilderScreen.d.mts +14 -0
- package/dist/pages/typeform/BuilderScreen.d.mts.map +1 -0
- package/dist/pages/typeform/BuilderScreen.mjs +668 -0
- package/dist/pages/typeform/BuilderScreen.mjs.map +1 -0
- package/dist/pages/typeform/DataSourceSelect.d.mts +13 -0
- package/dist/pages/typeform/DataSourceSelect.d.mts.map +1 -0
- package/dist/pages/typeform/DataSourceSelect.mjs +36 -0
- package/dist/pages/typeform/DataSourceSelect.mjs.map +1 -0
- package/dist/pages/typeform/DerivedCountDisplay.d.mts +10 -0
- package/dist/pages/typeform/DerivedCountDisplay.d.mts.map +1 -0
- package/dist/pages/typeform/DerivedCountDisplay.mjs +20 -0
- package/dist/pages/typeform/DerivedCountDisplay.mjs.map +1 -0
- package/dist/pages/typeform/FillerRJSF.d.mts +10 -0
- package/dist/pages/typeform/FillerRJSF.d.mts.map +1 -0
- package/dist/pages/typeform/FillerRJSF.mjs +314 -0
- package/dist/pages/typeform/FillerRJSF.mjs.map +1 -0
- package/dist/pages/typeform/FormBuilderWidgetRJSF.d.mts +9 -0
- package/dist/pages/typeform/FormBuilderWidgetRJSF.d.mts.map +1 -0
- package/dist/pages/typeform/FormBuilderWidgetRJSF.mjs +22 -0
- package/dist/pages/typeform/FormBuilderWidgetRJSF.mjs.map +1 -0
- package/dist/pages/typeform/PublishScreen.d.mts +18 -0
- package/dist/pages/typeform/PublishScreen.d.mts.map +1 -0
- package/dist/pages/typeform/PublishScreen.mjs +163 -0
- package/dist/pages/typeform/PublishScreen.mjs.map +1 -0
- package/dist/pages/typeform/QuestionInspector.d.mts +7 -0
- package/dist/pages/typeform/QuestionInspector.d.mts.map +1 -0
- package/dist/pages/typeform/QuestionInspector.mjs +749 -0
- package/dist/pages/typeform/QuestionInspector.mjs.map +1 -0
- package/dist/pages/typeform/QuestionRenderer.d.mts +23 -0
- package/dist/pages/typeform/QuestionRenderer.d.mts.map +1 -0
- package/dist/pages/typeform/QuestionRenderer.mjs +170 -0
- package/dist/pages/typeform/QuestionRenderer.mjs.map +1 -0
- package/dist/pages/typeform/RatingInput.d.mts +14 -0
- package/dist/pages/typeform/RatingInput.d.mts.map +1 -0
- package/dist/pages/typeform/RatingInput.mjs +58 -0
- package/dist/pages/typeform/RatingInput.mjs.map +1 -0
- package/dist/pages/typeform/RuleGroupEditor.d.mts +9 -0
- package/dist/pages/typeform/RuleGroupEditor.d.mts.map +1 -0
- package/dist/pages/typeform/RuleGroupEditor.mjs +183 -0
- package/dist/pages/typeform/RuleGroupEditor.mjs.map +1 -0
- package/dist/pages/typeform/SignaturePad.d.mts +11 -0
- package/dist/pages/typeform/SignaturePad.d.mts.map +1 -0
- package/dist/pages/typeform/SignaturePad.mjs +111 -0
- package/dist/pages/typeform/SignaturePad.mjs.map +1 -0
- package/dist/pages/typeform/TableInput.d.mts +15 -0
- package/dist/pages/typeform/TableInput.d.mts.map +1 -0
- package/dist/pages/typeform/TableInput.mjs +73 -0
- package/dist/pages/typeform/TableInput.mjs.map +1 -0
- package/dist/pages/typeform/WorkspaceScreen.d.mts +20 -0
- package/dist/pages/typeform/WorkspaceScreen.d.mts.map +1 -0
- package/dist/pages/typeform/WorkspaceScreen.mjs +158 -0
- package/dist/pages/typeform/WorkspaceScreen.mjs.map +1 -0
- package/dist/pages/typeform/coreRjsfTheme.d.mts +4 -0
- package/dist/pages/typeform/coreRjsfTheme.d.mts.map +1 -0
- package/dist/pages/typeform/coreRjsfTheme.mjs +142 -0
- package/dist/pages/typeform/coreRjsfTheme.mjs.map +1 -0
- package/dist/pages/typeform/dataSources.d.mts +35 -0
- package/dist/pages/typeform/dataSources.d.mts.map +1 -0
- package/dist/pages/typeform/dataSources.mjs +210 -0
- package/dist/pages/typeform/dataSources.mjs.map +1 -0
- package/dist/pages/typeform/fillerShared.d.mts +21 -0
- package/dist/pages/typeform/fillerShared.d.mts.map +1 -0
- package/dist/pages/typeform/fillerShared.mjs +112 -0
- package/dist/pages/typeform/fillerShared.mjs.map +1 -0
- package/dist/pages/typeform/logic.d.mts +46 -0
- package/dist/pages/typeform/logic.d.mts.map +1 -0
- package/dist/pages/typeform/logic.mjs +193 -0
- package/dist/pages/typeform/logic.mjs.map +1 -0
- package/dist/pages/typeform/model.d.mts +144 -0
- package/dist/pages/typeform/model.d.mts.map +1 -0
- package/dist/pages/typeform/model.mjs +328 -0
- package/dist/pages/typeform/model.mjs.map +1 -0
- package/dist/pages/typeform/schemaToJsonSchema.d.mts +9 -0
- package/dist/pages/typeform/schemaToJsonSchema.d.mts.map +1 -0
- package/dist/pages/typeform/schemaToJsonSchema.mjs +119 -0
- package/dist/pages/typeform/schemaToJsonSchema.mjs.map +1 -0
- package/dist/pages/typeform/useFormBuilder.d.mts +34 -0
- package/dist/pages/typeform/useFormBuilder.d.mts.map +1 -0
- package/dist/pages/typeform/useFormBuilder.mjs +389 -0
- package/dist/pages/typeform/useFormBuilder.mjs.map +1 -0
- package/dist/pages/view-mode-thumbs.d.mts +6 -0
- package/dist/pages/view-mode-thumbs.d.mts.map +1 -0
- package/dist/pages/view-mode-thumbs.mjs +8 -0
- package/dist/pages/view-mode-thumbs.mjs.map +1 -0
- package/dist/pages/wc3-action-type-detail.d.mts +166 -0
- package/dist/pages/wc3-action-type-detail.d.mts.map +1 -0
- package/dist/pages/wc3-action-type-detail.mjs +2182 -0
- package/dist/pages/wc3-action-type-detail.mjs.map +1 -0
- package/dist/pages/wc3-action-type-run-dialog.d.mts +23 -0
- package/dist/pages/wc3-action-type-run-dialog.d.mts.map +1 -0
- package/dist/pages/wc3-action-type-run-dialog.mjs +383 -0
- package/dist/pages/wc3-action-type-run-dialog.mjs.map +1 -0
- package/dist/pages/wc3-action-type-wizard.d.mts +75 -0
- package/dist/pages/wc3-action-type-wizard.d.mts.map +1 -0
- package/dist/pages/wc3-action-type-wizard.mjs +702 -0
- package/dist/pages/wc3-action-type-wizard.mjs.map +1 -0
- package/dist/pages/wc3-analysis-data-view.d.mts +15 -0
- package/dist/pages/wc3-analysis-data-view.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-data-view.mjs +129 -0
- package/dist/pages/wc3-analysis-data-view.mjs.map +1 -0
- package/dist/pages/wc3-analysis-data.d.mts +181 -0
- package/dist/pages/wc3-analysis-data.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-data.mjs +4074 -0
- package/dist/pages/wc3-analysis-data.mjs.map +1 -0
- package/dist/pages/wc3-analysis-object-view.d.mts +12 -0
- package/dist/pages/wc3-analysis-object-view.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-object-view.mjs +196 -0
- package/dist/pages/wc3-analysis-object-view.mjs.map +1 -0
- package/dist/pages/wc3-analysis-saved-view.d.mts +6 -0
- package/dist/pages/wc3-analysis-saved-view.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-saved-view.mjs +540 -0
- package/dist/pages/wc3-analysis-saved-view.mjs.map +1 -0
- package/dist/pages/wc3-analysis-shared.d.mts +346 -0
- package/dist/pages/wc3-analysis-shared.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-shared.mjs +1119 -0
- package/dist/pages/wc3-analysis-shared.mjs.map +1 -0
- package/dist/pages/wc3-analysis-views.d.mts +25 -0
- package/dist/pages/wc3-analysis-views.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-views.mjs +48 -0
- package/dist/pages/wc3-analysis-views.mjs.map +1 -0
- package/dist/pages/wc3-fs-data.d.mts +12 -0
- package/dist/pages/wc3-fs-data.d.mts.map +1 -0
- package/dist/pages/wc3-fs-data.mjs +745 -0
- package/dist/pages/wc3-fs-data.mjs.map +1 -0
- package/dist/pages/wc3-fs-location-field.d.mts +13 -0
- package/dist/pages/wc3-fs-location-field.d.mts.map +1 -0
- package/dist/pages/wc3-fs-location-field.mjs +56 -0
- package/dist/pages/wc3-fs-location-field.mjs.map +1 -0
- package/dist/pages/wc3-fs-path-label.d.mts +12 -0
- package/dist/pages/wc3-fs-path-label.d.mts.map +1 -0
- package/dist/pages/wc3-fs-path-label.mjs +36 -0
- package/dist/pages/wc3-fs-path-label.mjs.map +1 -0
- package/dist/pages/wc3-fs-records.d.mts +17 -0
- package/dist/pages/wc3-fs-records.d.mts.map +1 -0
- package/dist/pages/wc3-fs-records.mjs +107 -0
- package/dist/pages/wc3-fs-records.mjs.map +1 -0
- package/dist/pages/wc3-fs-store.d.mts +43 -0
- package/dist/pages/wc3-fs-store.d.mts.map +1 -0
- package/dist/pages/wc3-fs-store.mjs +81 -0
- package/dist/pages/wc3-fs-store.mjs.map +1 -0
- package/dist/pages/wc3-fs-types.d.mts +19 -0
- package/dist/pages/wc3-fs-types.d.mts.map +1 -0
- package/dist/pages/wc3-fs-types.mjs +66 -0
- package/dist/pages/wc3-fs-types.mjs.map +1 -0
- package/dist/pages/wc3-graph-explorer-flow.d.mts +14 -0
- package/dist/pages/wc3-graph-explorer-flow.d.mts.map +1 -0
- package/dist/pages/wc3-graph-explorer-flow.mjs +275 -0
- package/dist/pages/wc3-graph-explorer-flow.mjs.map +1 -0
- package/dist/pages/wc3-group-detail.d.mts +26 -0
- package/dist/pages/wc3-group-detail.d.mts.map +1 -0
- package/dist/pages/wc3-group-detail.mjs +358 -0
- package/dist/pages/wc3-group-detail.mjs.map +1 -0
- package/dist/pages/wc3-group-wizard.d.mts +28 -0
- package/dist/pages/wc3-group-wizard.d.mts.map +1 -0
- package/dist/pages/wc3-group-wizard.mjs +120 -0
- package/dist/pages/wc3-group-wizard.mjs.map +1 -0
- package/dist/pages/wc3-health-view.d.mts +34 -0
- package/dist/pages/wc3-health-view.d.mts.map +1 -0
- package/dist/pages/wc3-health-view.mjs +413 -0
- package/dist/pages/wc3-health-view.mjs.map +1 -0
- package/dist/pages/wc3-home-view.d.mts +24 -0
- package/dist/pages/wc3-home-view.d.mts.map +1 -0
- package/dist/pages/wc3-home-view.mjs +59 -0
- package/dist/pages/wc3-home-view.mjs.map +1 -0
- package/dist/pages/wc3-interface-detail.d.mts +66 -0
- package/dist/pages/wc3-interface-detail.d.mts.map +1 -0
- package/dist/pages/wc3-interface-detail.mjs +1060 -0
- package/dist/pages/wc3-interface-detail.mjs.map +1 -0
- package/dist/pages/wc3-interface-wizard.d.mts +39 -0
- package/dist/pages/wc3-interface-wizard.d.mts.map +1 -0
- package/dist/pages/wc3-interface-wizard.mjs +226 -0
- package/dist/pages/wc3-interface-wizard.mjs.map +1 -0
- package/dist/pages/wc3-lineage-data-view.d.mts +6 -0
- package/dist/pages/wc3-lineage-data-view.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-data-view.mjs +481 -0
- package/dist/pages/wc3-lineage-data-view.mjs.map +1 -0
- package/dist/pages/wc3-lineage-data.d.mts +191 -0
- package/dist/pages/wc3-lineage-data.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-data.mjs +1061 -0
- package/dist/pages/wc3-lineage-data.mjs.map +1 -0
- package/dist/pages/wc3-lineage-impact-view.d.mts +13 -0
- package/dist/pages/wc3-lineage-impact-view.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-impact-view.mjs +247 -0
- package/dist/pages/wc3-lineage-impact-view.mjs.map +1 -0
- package/dist/pages/wc3-lineage-shared.d.mts +137 -0
- package/dist/pages/wc3-lineage-shared.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-shared.mjs +150 -0
- package/dist/pages/wc3-lineage-shared.mjs.map +1 -0
- package/dist/pages/wc3-lineage-views.d.mts +7 -0
- package/dist/pages/wc3-lineage-views.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-views.mjs +13 -0
- package/dist/pages/wc3-lineage-views.mjs.map +1 -0
- package/dist/pages/wc3-lineage-workflow-view.d.mts +12 -0
- package/dist/pages/wc3-lineage-workflow-view.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-workflow-view.mjs +326 -0
- package/dist/pages/wc3-lineage-workflow-view.mjs.map +1 -0
- package/dist/pages/wc3-object-type-detail.d.mts +18 -0
- package/dist/pages/wc3-object-type-detail.d.mts.map +1 -0
- package/dist/pages/wc3-object-type-detail.mjs +977 -0
- package/dist/pages/wc3-object-type-detail.mjs.map +1 -0
- package/dist/pages/wc3-ontology-data.d.mts +246 -0
- package/dist/pages/wc3-ontology-data.d.mts.map +1 -0
- package/dist/pages/wc3-ontology-data.mjs +8542 -0
- package/dist/pages/wc3-ontology-data.mjs.map +1 -0
- package/dist/pages/wc3-ontology-glyphs.d.mts +14 -0
- package/dist/pages/wc3-ontology-glyphs.d.mts.map +1 -0
- package/dist/pages/wc3-ontology-glyphs.mjs +53 -0
- package/dist/pages/wc3-ontology-glyphs.mjs.map +1 -0
- package/dist/pages/wc3-ontology-scope.d.mts +62 -0
- package/dist/pages/wc3-ontology-scope.d.mts.map +1 -0
- package/dist/pages/wc3-ontology-scope.mjs +109 -0
- package/dist/pages/wc3-ontology-scope.mjs.map +1 -0
- package/dist/pages/wc3-ontology-views.d.mts +34 -0
- package/dist/pages/wc3-ontology-views.d.mts.map +1 -0
- package/dist/pages/wc3-ontology-views.mjs +1253 -0
- package/dist/pages/wc3-ontology-views.mjs.map +1 -0
- package/dist/pages/wc3-permit-policy.d.mts +56 -0
- package/dist/pages/wc3-permit-policy.d.mts.map +1 -0
- package/dist/pages/wc3-permit-policy.mjs +478 -0
- package/dist/pages/wc3-permit-policy.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-detail.d.mts +13 -0
- package/dist/pages/wc3-pipeline-detail.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-detail.mjs +818 -0
- package/dist/pages/wc3-pipeline-detail.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-list-view.d.mts +5 -0
- package/dist/pages/wc3-pipeline-list-view.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-list-view.mjs +692 -0
- package/dist/pages/wc3-pipeline-list-view.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-shared.d.mts +301 -0
- package/dist/pages/wc3-pipeline-shared.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-shared.mjs +703 -0
- package/dist/pages/wc3-pipeline-shared.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-side-views.d.mts +7 -0
- package/dist/pages/wc3-pipeline-side-views.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-side-views.mjs +998 -0
- package/dist/pages/wc3-pipeline-side-views.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-views.d.mts +15 -0
- package/dist/pages/wc3-pipeline-views.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-views.mjs +23 -0
- package/dist/pages/wc3-pipeline-views.mjs.map +1 -0
- package/dist/pages/wc3-process-bottlenecks.d.mts +22 -0
- package/dist/pages/wc3-process-bottlenecks.d.mts.map +1 -0
- package/dist/pages/wc3-process-bottlenecks.mjs +352 -0
- package/dist/pages/wc3-process-bottlenecks.mjs.map +1 -0
- package/dist/pages/wc3-process-create.d.mts +24 -0
- package/dist/pages/wc3-process-create.d.mts.map +1 -0
- package/dist/pages/wc3-process-create.mjs +230 -0
- package/dist/pages/wc3-process-create.mjs.map +1 -0
- package/dist/pages/wc3-process-data.d.mts +238 -0
- package/dist/pages/wc3-process-data.d.mts.map +1 -0
- package/dist/pages/wc3-process-data.mjs +2251 -0
- package/dist/pages/wc3-process-data.mjs.map +1 -0
- package/dist/pages/wc3-process-detail.d.mts +21 -0
- package/dist/pages/wc3-process-detail.d.mts.map +1 -0
- package/dist/pages/wc3-process-detail.mjs +21 -0
- package/dist/pages/wc3-process-detail.mjs.map +1 -0
- package/dist/pages/wc3-process-list-view.d.mts +5 -0
- package/dist/pages/wc3-process-list-view.d.mts.map +1 -0
- package/dist/pages/wc3-process-list-view.mjs +602 -0
- package/dist/pages/wc3-process-list-view.mjs.map +1 -0
- package/dist/pages/wc3-process-shared.d.mts +443 -0
- package/dist/pages/wc3-process-shared.d.mts.map +1 -0
- package/dist/pages/wc3-process-shared.mjs +980 -0
- package/dist/pages/wc3-process-shared.mjs.map +1 -0
- package/dist/pages/wc3-process-views.d.mts +19 -0
- package/dist/pages/wc3-process-views.d.mts.map +1 -0
- package/dist/pages/wc3-process-views.mjs +23 -0
- package/dist/pages/wc3-process-views.mjs.map +1 -0
- package/dist/pages/wc3-product-catalogue-view.d.mts +5 -0
- package/dist/pages/wc3-product-catalogue-view.d.mts.map +1 -0
- package/dist/pages/wc3-product-catalogue-view.mjs +587 -0
- package/dist/pages/wc3-product-catalogue-view.mjs.map +1 -0
- package/dist/pages/wc3-product-data.d.mts +206 -0
- package/dist/pages/wc3-product-data.d.mts.map +1 -0
- package/dist/pages/wc3-product-data.mjs +2669 -0
- package/dist/pages/wc3-product-data.mjs.map +1 -0
- package/dist/pages/wc3-product-detail.d.mts +31 -0
- package/dist/pages/wc3-product-detail.d.mts.map +1 -0
- package/dist/pages/wc3-product-detail.mjs +1137 -0
- package/dist/pages/wc3-product-detail.mjs.map +1 -0
- package/dist/pages/wc3-product-install-dialog.d.mts +99 -0
- package/dist/pages/wc3-product-install-dialog.d.mts.map +1 -0
- package/dist/pages/wc3-product-install-dialog.mjs +808 -0
- package/dist/pages/wc3-product-install-dialog.mjs.map +1 -0
- package/dist/pages/wc3-product-shared.d.mts +152 -0
- package/dist/pages/wc3-product-shared.d.mts.map +1 -0
- package/dist/pages/wc3-product-shared.mjs +268 -0
- package/dist/pages/wc3-product-shared.mjs.map +1 -0
- package/dist/pages/wc3-product-views.d.mts +7 -0
- package/dist/pages/wc3-product-views.d.mts.map +1 -0
- package/dist/pages/wc3-product-views.mjs +7 -0
- package/dist/pages/wc3-product-views.mjs.map +1 -0
- package/dist/pages/wc3-shared-property-detail.d.mts +95 -0
- package/dist/pages/wc3-shared-property-detail.d.mts.map +1 -0
- package/dist/pages/wc3-shared-property-detail.mjs +546 -0
- package/dist/pages/wc3-shared-property-detail.mjs.map +1 -0
- package/dist/pages/wc3-shared-property-view.d.mts +10 -0
- package/dist/pages/wc3-shared-property-view.d.mts.map +1 -0
- package/dist/pages/wc3-shared-property-view.mjs +455 -0
- package/dist/pages/wc3-shared-property-view.mjs.map +1 -0
- package/dist/pages/wc3-shared-property-wizard.d.mts +31 -0
- package/dist/pages/wc3-shared-property-wizard.d.mts.map +1 -0
- package/dist/pages/wc3-shared-property-wizard.mjs +181 -0
- package/dist/pages/wc3-shared-property-wizard.mjs.map +1 -0
- package/dist/pages/work-permit-templates.d.mts +30 -0
- package/dist/pages/work-permit-templates.d.mts.map +1 -0
- package/dist/pages/work-permit-templates.mjs +793 -0
- package/dist/pages/work-permit-templates.mjs.map +1 -0
- package/dist/pages/workforce-analytics.d.mts +11 -0
- package/dist/pages/workforce-analytics.d.mts.map +1 -0
- package/dist/pages/workforce-analytics.mjs +561 -0
- package/dist/pages/workforce-analytics.mjs.map +1 -0
- package/dist/pages/workforce-compliance-settings.d.mts +9 -0
- package/dist/pages/workforce-compliance-settings.d.mts.map +1 -0
- package/dist/pages/workforce-compliance-settings.mjs +375 -0
- package/dist/pages/workforce-compliance-settings.mjs.map +1 -0
- package/dist/pages/workforce-compliance.d.mts +81 -0
- package/dist/pages/workforce-compliance.d.mts.map +1 -0
- package/dist/pages/workforce-compliance.mjs +805 -0
- package/dist/pages/workforce-compliance.mjs.map +1 -0
- package/dist/pages/workforce-crews.d.mts +5 -0
- package/dist/pages/workforce-crews.d.mts.map +1 -0
- package/dist/pages/workforce-crews.mjs +1091 -0
- package/dist/pages/workforce-crews.mjs.map +1 -0
- package/dist/pages/workforce-map-view.d.mts +8 -0
- package/dist/pages/workforce-map-view.d.mts.map +1 -0
- package/dist/pages/workforce-map-view.mjs +953 -0
- package/dist/pages/workforce-map-view.mjs.map +1 -0
- package/dist/pages/workforce-obs.d.mts +5 -0
- package/dist/pages/workforce-obs.d.mts.map +1 -0
- package/dist/pages/workforce-obs.mjs +649 -0
- package/dist/pages/workforce-obs.mjs.map +1 -0
- package/dist/pagination.d.mts +32 -0
- package/dist/pagination.d.mts.map +1 -0
- package/dist/pagination.mjs +67 -0
- package/dist/pagination.mjs.map +1 -0
- package/dist/permission-matrix.d.mts +43 -0
- package/dist/permission-matrix.d.mts.map +1 -0
- package/dist/permission-matrix.mjs +146 -0
- package/dist/permission-matrix.mjs.map +1 -0
- package/dist/popover.d.mts +19 -0
- package/dist/popover.d.mts.map +1 -0
- package/dist/popover.mjs +31 -0
- package/dist/popover.mjs.map +1 -0
- package/dist/product-package-detail.d.mts +173 -0
- package/dist/product-package-detail.d.mts.map +1 -0
- package/dist/product-package-detail.mjs +521 -0
- package/dist/product-package-detail.mjs.map +1 -0
- package/dist/progress-comparison.d.mts +93 -0
- package/dist/progress-comparison.d.mts.map +1 -0
- package/dist/progress-comparison.mjs +253 -0
- package/dist/progress-comparison.mjs.map +1 -0
- package/dist/progress-list-item.d.mts +46 -0
- package/dist/progress-list-item.d.mts.map +1 -0
- package/dist/progress-list-item.mjs +79 -0
- package/dist/progress-list-item.mjs.map +1 -0
- package/dist/progress-sheet.d.mts +39 -0
- package/dist/progress-sheet.d.mts.map +1 -0
- package/dist/progress-sheet.mjs +760 -0
- package/dist/progress-sheet.mjs.map +1 -0
- package/dist/progress-stat.d.mts +26 -0
- package/dist/progress-stat.d.mts.map +1 -0
- package/dist/progress-stat.mjs +54 -0
- package/dist/progress-stat.mjs.map +1 -0
- package/dist/progress.d.mts +13 -0
- package/dist/progress.d.mts.map +1 -0
- package/dist/progress.mjs +32 -0
- package/dist/progress.mjs.map +1 -0
- package/dist/prompt-input.d.mts +108 -0
- package/dist/prompt-input.d.mts.map +1 -0
- package/dist/prompt-input.mjs +400 -0
- package/dist/prompt-input.mjs.map +1 -0
- package/dist/property-list.d.mts +37 -0
- package/dist/property-list.d.mts.map +1 -0
- package/dist/property-list.mjs +60 -0
- package/dist/property-list.mjs.map +1 -0
- package/dist/push-panel.d.mts +75 -0
- package/dist/push-panel.d.mts.map +1 -0
- package/dist/push-panel.mjs +182 -0
- package/dist/push-panel.mjs.map +1 -0
- package/dist/radio-group.d.mts +9 -0
- package/dist/radio-group.d.mts.map +1 -0
- package/dist/radio-group.mjs +27 -0
- package/dist/radio-group.mjs.map +1 -0
- package/dist/record-detail-shell.d.mts +46 -0
- package/dist/record-detail-shell.d.mts.map +1 -0
- package/dist/record-detail-shell.mjs +29 -0
- package/dist/record-detail-shell.mjs.map +1 -0
- package/dist/resizable.d.mts +11 -0
- package/dist/resizable.d.mts.map +1 -0
- package/dist/resizable.mjs +23 -0
- package/dist/resizable.mjs.map +1 -0
- package/dist/resize-handle.d.mts +19 -0
- package/dist/resize-handle.d.mts.map +1 -0
- package/dist/resize-handle.mjs +45 -0
- package/dist/resize-handle.mjs.map +1 -0
- package/dist/responder-detail-panel.d.mts +72 -0
- package/dist/responder-detail-panel.d.mts.map +1 -0
- package/dist/responder-detail-panel.mjs +232 -0
- package/dist/responder-detail-panel.mjs.map +1 -0
- package/dist/rule-row.d.mts +63 -0
- package/dist/rule-row.d.mts.map +1 -0
- package/dist/rule-row.mjs +97 -0
- package/dist/rule-row.mjs.map +1 -0
- package/dist/schedule-week-bar.d.mts +24 -0
- package/dist/schedule-week-bar.d.mts.map +1 -0
- package/dist/schedule-week-bar.mjs +99 -0
- package/dist/schedule-week-bar.mjs.map +1 -0
- package/dist/score-gauge.d.mts +24 -0
- package/dist/score-gauge.d.mts.map +1 -0
- package/dist/score-gauge.mjs +73 -0
- package/dist/score-gauge.mjs.map +1 -0
- package/dist/scroll-area.d.mts +27 -0
- package/dist/scroll-area.d.mts.map +1 -0
- package/dist/scroll-area.mjs +35 -0
- package/dist/scroll-area.mjs.map +1 -0
- package/dist/search-filter-bar.d.mts +22 -0
- package/dist/search-filter-bar.d.mts.map +1 -0
- package/dist/search-filter-bar.mjs +56 -0
- package/dist/search-filter-bar.mjs.map +1 -0
- package/dist/section-header.d.mts +22 -0
- package/dist/section-header.d.mts.map +1 -0
- package/dist/section-header.mjs +32 -0
- package/dist/section-header.mjs.map +1 -0
- package/dist/section-panel.d.mts +47 -0
- package/dist/section-panel.d.mts.map +1 -0
- package/dist/section-panel.mjs +78 -0
- package/dist/section-panel.mjs.map +1 -0
- package/dist/section.d.mts +15 -0
- package/dist/section.d.mts.map +1 -0
- package/dist/section.mjs +34 -0
- package/dist/section.mjs.map +1 -0
- package/dist/segmented-control.d.mts +26 -0
- package/dist/segmented-control.d.mts.map +1 -0
- package/dist/segmented-control.mjs +70 -0
- package/dist/segmented-control.mjs.map +1 -0
- package/dist/select.d.mts +87 -0
- package/dist/select.d.mts.map +1 -0
- package/dist/select.mjs +280 -0
- package/dist/select.mjs.map +1 -0
- package/dist/selectable-card.d.mts +39 -0
- package/dist/selectable-card.d.mts.map +1 -0
- package/dist/selectable-card.mjs +102 -0
- package/dist/selectable-card.mjs.map +1 -0
- package/dist/separator.d.mts +8 -0
- package/dist/separator.d.mts.map +1 -0
- package/dist/separator.mjs +18 -0
- package/dist/separator.mjs.map +1 -0
- package/dist/services/chatService.d.mts +11 -0
- package/dist/services/chatService.d.mts.map +1 -0
- package/dist/services/chatService.mjs +44 -0
- package/dist/services/chatService.mjs.map +1 -0
- package/dist/setup-steps-checklist.d.mts +50 -0
- package/dist/setup-steps-checklist.d.mts.map +1 -0
- package/dist/setup-steps-checklist.mjs +183 -0
- package/dist/setup-steps-checklist.mjs.map +1 -0
- package/dist/sheet.d.mts +41 -0
- package/dist/sheet.d.mts.map +1 -0
- package/dist/sheet.mjs +71 -0
- package/dist/sheet.mjs.map +1 -0
- package/dist/side-menu.d.mts +61 -0
- package/dist/side-menu.d.mts.map +1 -0
- package/dist/side-menu.mjs +160 -0
- package/dist/side-menu.mjs.map +1 -0
- package/dist/sidebar.d.mts +36 -0
- package/dist/sidebar.d.mts.map +1 -0
- package/dist/sidebar.mjs +159 -0
- package/dist/sidebar.mjs.map +1 -0
- package/dist/single-house-view.d.mts +13 -0
- package/dist/single-house-view.d.mts.map +1 -0
- package/dist/single-house-view.mjs +506 -0
- package/dist/single-house-view.mjs.map +1 -0
- package/dist/site-image-viewer/batches.mjs +362 -0
- package/dist/site-image-viewer/batches.mjs.map +1 -0
- package/dist/site-image-viewer/blocks-zone-1a.mjs +1815 -0
- package/dist/site-image-viewer/blocks-zone-1a.mjs.map +1 -0
- package/dist/site-image-viewer/blocks-zone-1b.mjs +2623 -0
- package/dist/site-image-viewer/blocks-zone-1b.mjs.map +1 -0
- package/dist/site-image-viewer/legend-items.d.mts +6 -0
- package/dist/site-image-viewer/legend-items.d.mts.map +1 -0
- package/dist/site-image-viewer/legend-items.mjs +104 -0
- package/dist/site-image-viewer/legend-items.mjs.map +1 -0
- package/dist/site-image-viewer/milestone-ramp.d.mts +81 -0
- package/dist/site-image-viewer/milestone-ramp.d.mts.map +1 -0
- package/dist/site-image-viewer/milestone-ramp.mjs +112 -0
- package/dist/site-image-viewer/milestone-ramp.mjs.map +1 -0
- package/dist/site-image-viewer/phases.mjs +60 -0
- package/dist/site-image-viewer/phases.mjs.map +1 -0
- package/dist/site-image-viewer/site-legend.d.mts +20 -0
- package/dist/site-image-viewer/site-legend.d.mts.map +1 -0
- package/dist/site-image-viewer/site-legend.mjs +113 -0
- package/dist/site-image-viewer/site-legend.mjs.map +1 -0
- package/dist/site-image-viewer/types.d.mts +32 -0
- package/dist/site-image-viewer/types.d.mts.map +1 -0
- package/dist/site-image-viewer/types.mjs +1 -0
- package/dist/site-image-viewer/villa-hover-card.d.mts +15 -0
- package/dist/site-image-viewer/villa-hover-card.d.mts.map +1 -0
- package/dist/site-image-viewer/villa-hover-card.mjs +48 -0
- package/dist/site-image-viewer/villa-hover-card.mjs.map +1 -0
- package/dist/site-image-viewer/villas.mjs +34494 -0
- package/dist/site-image-viewer/villas.mjs.map +1 -0
- package/dist/site-image-viewer/zone1b-villas.mjs +36211 -0
- package/dist/site-image-viewer/zone1b-villas.mjs.map +1 -0
- package/dist/site-image-viewer/zones-marketing.mjs +114 -0
- package/dist/site-image-viewer/zones-marketing.mjs.map +1 -0
- package/dist/site-image-viewer/zones.mjs +114 -0
- package/dist/site-image-viewer/zones.mjs.map +1 -0
- package/dist/site-image-viewer-fixtures.d.mts +44 -0
- package/dist/site-image-viewer-fixtures.d.mts.map +1 -0
- package/dist/site-image-viewer-fixtures.mjs +112 -0
- package/dist/site-image-viewer-fixtures.mjs.map +1 -0
- package/dist/site-image-viewer.d.mts +98 -0
- package/dist/site-image-viewer.d.mts.map +1 -0
- package/dist/site-image-viewer.mjs +501 -0
- package/dist/site-image-viewer.mjs.map +1 -0
- package/dist/site-panel.d.mts +123 -0
- package/dist/site-panel.d.mts.map +1 -0
- package/dist/site-panel.mjs +1413 -0
- package/dist/site-panel.mjs.map +1 -0
- package/dist/site-reality-viewer.d.mts +46 -0
- package/dist/site-reality-viewer.d.mts.map +1 -0
- package/dist/site-reality-viewer.mjs +436 -0
- package/dist/site-reality-viewer.mjs.map +1 -0
- package/dist/site-toolbar.d.mts +54 -0
- package/dist/site-toolbar.d.mts.map +1 -0
- package/dist/site-toolbar.mjs +110 -0
- package/dist/site-toolbar.mjs.map +1 -0
- package/dist/skeleton.d.mts +6 -0
- package/dist/skeleton.d.mts.map +1 -0
- package/dist/skeleton.mjs +14 -0
- package/dist/skeleton.mjs.map +1 -0
- package/dist/slider.d.mts +8 -0
- package/dist/slider.d.mts.map +1 -0
- package/dist/slider.mjs +20 -0
- package/dist/slider.mjs.map +1 -0
- package/dist/sonner.d.mts +8 -0
- package/dist/sonner.d.mts.map +1 -0
- package/dist/sonner.mjs +20 -0
- package/dist/sonner.mjs.map +1 -0
- package/dist/spinner.d.mts +12 -0
- package/dist/spinner.d.mts.map +1 -0
- package/dist/spinner.mjs +38 -0
- package/dist/spinner.mjs.map +1 -0
- package/dist/stack.d.mts +18 -0
- package/dist/stack.d.mts.map +1 -0
- package/dist/stack.mjs +61 -0
- package/dist/stack.mjs.map +1 -0
- package/dist/stage-content.d.mts +13 -0
- package/dist/stage-content.d.mts.map +1 -0
- package/dist/stage-content.mjs +664 -0
- package/dist/stage-content.mjs.map +1 -0
- package/dist/status-dot.d.mts +18 -0
- package/dist/status-dot.d.mts.map +1 -0
- package/dist/status-dot.mjs +89 -0
- package/dist/status-dot.mjs.map +1 -0
- package/dist/stepper.d.mts +19 -0
- package/dist/stepper.d.mts.map +1 -0
- package/dist/stepper.mjs +113 -0
- package/dist/stepper.mjs.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/styles.tw4.css +1 -0
- package/dist/switch.d.mts +12 -0
- package/dist/switch.d.mts.map +1 -0
- package/dist/switch.mjs +17 -0
- package/dist/switch.mjs.map +1 -0
- package/dist/tab-list.d.mts +33 -0
- package/dist/tab-list.d.mts.map +1 -0
- package/dist/tab-list.mjs +90 -0
- package/dist/tab-list.mjs.map +1 -0
- package/dist/table.d.mts +14 -0
- package/dist/table.d.mts.map +1 -0
- package/dist/table.mjs +60 -0
- package/dist/table.mjs.map +1 -0
- package/dist/tabs.d.mts +42 -0
- package/dist/tabs.d.mts.map +1 -0
- package/dist/tabs.mjs +258 -0
- package/dist/tabs.mjs.map +1 -0
- package/dist/task-monitor.d.mts +70 -0
- package/dist/task-monitor.d.mts.map +1 -0
- package/dist/task-monitor.mjs +319 -0
- package/dist/task-monitor.mjs.map +1 -0
- package/dist/text.d.mts +18 -0
- package/dist/text.d.mts.map +1 -0
- package/dist/text.mjs +60 -0
- package/dist/text.mjs.map +1 -0
- package/dist/textarea.d.mts +7 -0
- package/dist/textarea.d.mts.map +1 -0
- package/dist/textarea.mjs +15 -0
- package/dist/textarea.mjs.map +1 -0
- package/dist/thinking-pill.d.mts +15 -0
- package/dist/thinking-pill.d.mts.map +1 -0
- package/dist/thinking-pill.mjs +28 -0
- package/dist/thinking-pill.mjs.map +1 -0
- package/dist/thumbnail.d.mts +20 -0
- package/dist/thumbnail.d.mts.map +1 -0
- package/dist/thumbnail.mjs +81 -0
- package/dist/thumbnail.mjs.map +1 -0
- package/dist/time-input.d.mts +15 -0
- package/dist/time-input.d.mts.map +1 -0
- package/dist/time-input.mjs +21 -0
- package/dist/time-input.mjs.map +1 -0
- package/dist/time-scrubber.d.mts +93 -0
- package/dist/time-scrubber.d.mts.map +1 -0
- package/dist/time-scrubber.mjs +420 -0
- package/dist/time-scrubber.mjs.map +1 -0
- package/dist/timeline-range-selector.d.mts +30 -0
- package/dist/timeline-range-selector.d.mts.map +1 -0
- package/dist/timeline-range-selector.mjs +232 -0
- package/dist/timeline-range-selector.mjs.map +1 -0
- package/dist/timestamp-picker.d.mts +32 -0
- package/dist/timestamp-picker.d.mts.map +1 -0
- package/dist/timestamp-picker.mjs +143 -0
- package/dist/timestamp-picker.mjs.map +1 -0
- package/dist/timestamp.d.mts +15 -0
- package/dist/timestamp.d.mts.map +1 -0
- package/dist/timestamp.mjs +61 -0
- package/dist/timestamp.mjs.map +1 -0
- package/dist/toast.d.mts +18 -0
- package/dist/toast.d.mts.map +1 -0
- package/dist/toast.mjs +59 -0
- package/dist/toast.mjs.map +1 -0
- package/dist/toaster.d.mts +5 -0
- package/dist/toaster.d.mts.map +1 -0
- package/dist/toaster.mjs +23 -0
- package/dist/toaster.mjs.map +1 -0
- package/dist/toggle-group.d.mts +16 -0
- package/dist/toggle-group.d.mts.map +1 -0
- package/dist/toggle-group.mjs +41 -0
- package/dist/toggle-group.mjs.map +1 -0
- package/dist/toggle.d.mts +16 -0
- package/dist/toggle.d.mts.map +1 -0
- package/dist/toggle.mjs +38 -0
- package/dist/toggle.mjs.map +1 -0
- package/dist/tokenizer.d.mts +23 -0
- package/dist/tokenizer.d.mts.map +1 -0
- package/dist/tokenizer.mjs +87 -0
- package/dist/tokenizer.mjs.map +1 -0
- package/dist/tones.d.mts +59 -0
- package/dist/tones.d.mts.map +1 -0
- package/dist/tones.mjs +177 -0
- package/dist/tones.mjs.map +1 -0
- package/dist/tool-call.d.mts +29 -0
- package/dist/tool-call.d.mts.map +1 -0
- package/dist/tool-call.mjs +89 -0
- package/dist/tool-call.mjs.map +1 -0
- package/dist/toolbar-color-picker.d.mts +50 -0
- package/dist/toolbar-color-picker.d.mts.map +1 -0
- package/dist/toolbar-color-picker.mjs +238 -0
- package/dist/toolbar-color-picker.mjs.map +1 -0
- package/dist/toolbar-pager.d.mts +17 -0
- package/dist/toolbar-pager.d.mts.map +1 -0
- package/dist/toolbar-pager.mjs +40 -0
- package/dist/toolbar-pager.mjs.map +1 -0
- package/dist/toolbar-stats.d.mts +34 -0
- package/dist/toolbar-stats.d.mts.map +1 -0
- package/dist/toolbar-stats.mjs +53 -0
- package/dist/toolbar-stats.mjs.map +1 -0
- package/dist/toolbar.d.mts +98 -0
- package/dist/toolbar.d.mts.map +1 -0
- package/dist/toolbar.mjs +86 -0
- package/dist/toolbar.mjs.map +1 -0
- package/dist/tooltip.d.mts +30 -0
- package/dist/tooltip.d.mts.map +1 -0
- package/dist/tooltip.mjs +83 -0
- package/dist/tooltip.mjs.map +1 -0
- package/dist/tree-list.d.mts +38 -0
- package/dist/tree-list.d.mts.map +1 -0
- package/dist/tree-list.mjs +95 -0
- package/dist/tree-list.mjs.map +1 -0
- package/dist/tree-row.d.mts +84 -0
- package/dist/tree-row.d.mts.map +1 -0
- package/dist/tree-row.mjs +150 -0
- package/dist/tree-row.mjs.map +1 -0
- package/dist/trend-chart.d.mts +28 -0
- package/dist/trend-chart.d.mts.map +1 -0
- package/dist/trend-chart.mjs +33 -0
- package/dist/trend-chart.mjs.map +1 -0
- package/dist/turn-timer.d.mts +23 -0
- package/dist/turn-timer.d.mts.map +1 -0
- package/dist/turn-timer.mjs +51 -0
- package/dist/turn-timer.mjs.map +1 -0
- package/dist/typeahead-item.d.mts +34 -0
- package/dist/typeahead-item.d.mts.map +1 -0
- package/dist/typeahead-item.mjs +74 -0
- package/dist/typeahead-item.mjs.map +1 -0
- package/dist/types/chat.d.mts +66 -0
- package/dist/types/chat.d.mts.map +1 -0
- package/dist/types/chat.mjs +1 -0
- package/dist/types.d.mts +44 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +49 -0
- package/dist/types.mjs.map +1 -0
- package/dist/typography.d.mts +17 -0
- package/dist/typography.d.mts.map +1 -0
- package/dist/typography.mjs +75 -0
- package/dist/typography.mjs.map +1 -0
- package/dist/use-debounced-value.d.mts +11 -0
- package/dist/use-debounced-value.d.mts.map +1 -0
- package/dist/use-debounced-value.mjs +25 -0
- package/dist/use-debounced-value.mjs.map +1 -0
- package/dist/use-document-dir.d.mts +15 -0
- package/dist/use-document-dir.d.mts.map +1 -0
- package/dist/use-document-dir.mjs +33 -0
- package/dist/use-document-dir.mjs.map +1 -0
- package/dist/use-persistent-state.d.mts +9 -0
- package/dist/use-persistent-state.d.mts.map +1 -0
- package/dist/use-persistent-state.mjs +29 -0
- package/dist/use-persistent-state.mjs.map +1 -0
- package/dist/use-toast.d.mts +47 -0
- package/dist/use-toast.d.mts.map +1 -0
- package/dist/use-toast.mjs +119 -0
- package/dist/use-toast.mjs.map +1 -0
- package/dist/vertical-zoom-tools.d.mts +27 -0
- package/dist/vertical-zoom-tools.d.mts.map +1 -0
- package/dist/vertical-zoom-tools.mjs +66 -0
- package/dist/vertical-zoom-tools.mjs.map +1 -0
- package/dist/view-tab-bar.d.mts +75 -0
- package/dist/view-tab-bar.d.mts.map +1 -0
- package/dist/view-tab-bar.mjs +80 -0
- package/dist/view-tab-bar.mjs.map +1 -0
- package/dist/viewer-toolbar.d.mts +41 -0
- package/dist/viewer-toolbar.d.mts.map +1 -0
- package/dist/viewer-toolbar.mjs +271 -0
- package/dist/viewer-toolbar.mjs.map +1 -0
- package/dist/violation-list.d.mts +26 -0
- package/dist/violation-list.d.mts.map +1 -0
- package/dist/violation-list.mjs +53 -0
- package/dist/violation-list.mjs.map +1 -0
- package/dist/walkthrough-modal.d.mts +12 -0
- package/dist/walkthrough-modal.d.mts.map +1 -0
- package/dist/walkthrough-modal.mjs +28 -0
- package/dist/walkthrough-modal.mjs.map +1 -0
- package/dist/walkthrough-tile.d.mts +17 -0
- package/dist/walkthrough-tile.d.mts.map +1 -0
- package/dist/walkthrough-tile.mjs +75 -0
- package/dist/walkthrough-tile.mjs.map +1 -0
- package/dist/week-selector.d.mts +45 -0
- package/dist/week-selector.d.mts.map +1 -0
- package/dist/week-selector.mjs +101 -0
- package/dist/week-selector.mjs.map +1 -0
- package/dist/widget-card.d.mts +18 -0
- package/dist/widget-card.d.mts.map +1 -0
- package/dist/widget-card.mjs +46 -0
- package/dist/widget-card.mjs.map +1 -0
- package/dist/wizard-dialog.d.mts +68 -0
- package/dist/wizard-dialog.d.mts.map +1 -0
- package/dist/wizard-dialog.mjs +108 -0
- package/dist/wizard-dialog.mjs.map +1 -0
- package/dist/work-item-card.d.mts +38 -0
- package/dist/work-item-card.d.mts.map +1 -0
- package/dist/work-item-card.mjs +231 -0
- package/dist/work-item-card.mjs.map +1 -0
- package/dist/worker-profile.d.mts +244 -0
- package/dist/worker-profile.d.mts.map +1 -0
- package/dist/worker-profile.mjs +621 -0
- package/dist/worker-profile.mjs.map +1 -0
- package/dist/zoom-tools.d.mts +29 -0
- package/dist/zoom-tools.d.mts.map +1 -0
- package/dist/zoom-tools.mjs +94 -0
- package/dist/zoom-tools.mjs.map +1 -0
- package/package.json +1792 -0
- package/skills/core-ui-charts/SKILL.md +243 -0
- package/skills/core-ui-chat/SKILL.md +260 -0
- package/skills/core-ui-components/SKILL.md +299 -0
- package/skills/core-ui-composition/SKILL.md +186 -0
- package/skills/core-ui-data-table/SKILL.md +243 -0
- package/skills/core-ui-forms/SKILL.md +289 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-safety-manager.mjs","names":["MapIcon","SiteMap","Filter","FunnelIcon"],"sources":["../../src/pages/core-safety-manager.tsx"],"sourcesContent":["import type {ColumnDef} from \"@tanstack/react-table\";\n\nimport {cn} from \"@corensystem/coren-utils\";\nimport {format} from \"date-fns\";\nimport {\n\tBarChart3,\n\tCheckCircle2,\n\tChevronDown,\n\tClock,\n\tCopy,\n\tDownload,\n\tFileDown,\n\tFlag,\n\tLayers,\n\tList,\n\tMap as MapIcon,\n\tMapPin,\n\tPlus,\n\tRadio,\n\tSave,\n\tSettings,\n\tShare2,\n\tShieldCheck,\n\tShieldX,\n\tSquarePen,\n\tBox,\n\tDna,\n\tFolder,\n\tLink2,\n\tNetwork,\n\tPuzzle,\n\tSlidersHorizontal,\n\tTags,\n\tTrash2,\n\tUserCheck,\n\tUserPlus,\n\tUsers,\n\tMonitorSmartphone,\n\tPhone,\n\tGauge,\n\tTrendingUp,\n\tMoreHorizontal,\n\tFilter as FunnelIcon,\n\tX,\n\tWorkflow,\n\tZap,\n} from \"lucide-react\";\nimport {useMemo, useState} from \"react\";\n\nimport {AddObservationDialog, type AddObservationOption} from \"../add-observation-dialog\";\nimport {Avatar, AvatarFallback} from \"../avatar\";\nimport {Badge} from \"../badge\";\nimport {Button} from \"../button\";\nimport {Card} from \"../card\";\nimport type {CommentBadgeTone, CommentItem} from \"../comment-thread\";\nimport {DataTable, DataTableColumnHeader, DataTableRowActions} from \"../data-table\";\nimport {DateRangeTimePicker} from \"../date-picker\";\nimport {Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle} from \"../dialog\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from \"../dropdown-menu\";\nimport {Empty} from \"../empty\";\nimport {ExportDialog, type ExportTemplateOption} from \"../export-dialog\";\nimport {Field, FieldError, FieldLabel} from \"../field\";\nimport {\n\tFilter,\n\tFilterCategory,\n\tFilterChips,\n\tFilterContent,\n\tFilterOption,\n\tFilterTrigger,\n\ttype FilterValue,\n} from \"../filter\";\nimport {FormActionBar} from \"../form-action-bar\";\nimport {Input} from \"../input\";\nimport {KPISummary, type KpiMetric} from \"../kpi-summary\";\nimport {Map as SiteMap} from \"../map\";\nimport {MultiSelect, type MultiSelectOption} from \"../multi-select\";\nimport {CoreAppSidebar, type SidebarNavGroup} from \"../navigation/core-app-sidebar\";\nimport {CoreAppTopBar} from \"../navigation/core-app-top-bar\";\nimport {PageContentHeader} from \"../page-content-header\";\nimport {\n\tPushPanel,\n\tPushPanelClose,\n\tPushPanelContainer,\n\tPushPanelHeader,\n\tPushPanelHeaderActions,\n\tPushPanelHeaderTitle,\n\tPushPanelMain,\n\tPushPanelProvider,\n\tPushPanelTitle,\n} from \"../push-panel\";\nimport {RadioGroup, RadioGroupItem} from \"../radio-group\";\nimport {SearchableSelect, Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from \"../select\";\nimport {Separator} from \"../separator\";\nimport {SideMenu, type SideMenuGroup} from \"../side-menu\";\nimport {Toaster} from \"../sonner\";\nimport {Switch} from \"../switch\";\nimport {Tabs, TabsContent, TabsList, TabsTrigger} from \"../tabs\";\nimport {TaskMonitor, type TaskMonitorItem} from \"../task-monitor\";\nimport {Textarea} from \"../textarea\";\nimport {HoverTooltip} from \"../tooltip\";\nimport {type ViewTabItem} from \"../view-tab-bar\";\nimport {ObservationsMapView} from \"./core-observations-map-view\";\nimport {ontologyScopeCounts, type OntologyScope} from \"./wc3-ontology-scope\";\nimport {ONTOLOGY_VIEWS} from \"./wc3-ontology-views\";\n\n// Safety Manager — the observation-manager template scaffold. A full app shell\n// (CoreAppSidebar + CoreAppTopBar) with a single \"Safety Manager\" sidebar entry.\n// The content area toggles between the route header (Analytics / List View / Map View\n// tabs + a Settings action) and a Settings sub-surface (SideMenu + content). The List\n// View embeds the reusable TaskMonitor component with observation data — all task-\n// management behaviour lives in TaskMonitor/BrowserTabs, not in this template. The Map\n// View pins the same observations on ObservationsMap. The top bar breadcrumb tracks the\n// active content.\n\ntype SidebarNavItemLite = {id: string; label: string; icon: React.ComponentType<{className?: string}>};\n\nconst NAV_ITEMS: SidebarNavItemLite[] = [{id: \"safety-manager\", label: \"Safety Manager\", icon: ShieldCheck}];\n\nconst SAFETY_GROUPS: SidebarNavGroup[] = [{items: NAV_ITEMS}];\n\ntype SafetyTabId = \"analytics\" | \"list-view\" | \"map-view\" | \"verify-response\";\n\nconst TABS: ViewTabItem<SafetyTabId>[] = [\n\t{id: \"analytics\", label: \"Analytics\", icon: BarChart3},\n\t{id: \"list-view\", label: \"List View\", icon: List},\n\t{id: \"map-view\", label: \"Map View\", icon: MapIcon},\n\t{id: \"verify-response\", label: \"Responder List\", icon: Users},\n];\n\nconst TAB_PLACEHOLDER: Record<\n\tExclude<SafetyTabId, \"list-view\" | \"map-view\" | \"verify-response\">,\n\t{title: string; description: string; icon: React.ReactNode}\n> = {\n\tanalytics: {\n\t\ttitle: \"Analytics\",\n\t\tdescription: \"Safety analytics and trends will appear here.\",\n\t\ticon: <BarChart3 className=\"wwc:h-6 wwc:w-6\" />,\n\t},\n};\n\ntype SettingId =\n\t| \"general\"\n\t| \"categories\"\n\t| \"workflow\"\n\t| \"object-types\"\n\t| \"link-types\"\n\t| \"action-types\"\n\t| \"interfaces\"\n\t| \"shared-properties\"\n\t| \"type-groups\"\n\t| \"graph\";\n\n// The slice of the WC3 ontology this product owns. Safety Manager is about observations raised\n// against people, crews and places, and the permits that govern them. Only object types are named —\n// every other tab is DERIVED by wc3-ontology-scope.ts. Module-level on purpose: the shared views\n// memoise on this object's identity.\nconst SAFETY_ONTOLOGY_SCOPE: OntologyScope = {\n\tobjectTypeIds: [\n\t\t\"ot_observation\",\n\t\t\"ot_worker\",\n\t\t\"ot_crew\",\n\t\t\"ot_zone\",\n\t\t\"ot_site\",\n\t\t\"ot_project\",\n\t\t\"ot_permit\",\n\t\t\"ot_access_grant\",\n\t\t\"ot_equipment\",\n\t],\n};\n\n// Counts come from the same derivation the tables use, so a badge cannot drift from its table.\nconst ONTOLOGY_COUNTS = ontologyScopeCounts(SAFETY_ONTOLOGY_SCOPE);\n\nconst SETTINGS_GROUPS: SideMenuGroup[] = [\n\t{\n\t\tlabel: \"System\",\n\t\titems: [\n\t\t\t{id: \"general\", label: \"General\", icon: SlidersHorizontal},\n\t\t\t{id: \"categories\", label: \"Categories\", icon: Tags},\n\t\t\t{id: \"workflow\", label: \"Workflow\", icon: Workflow},\n\t\t],\n\t},\n\t{\n\t\tlabel: \"Ontology\",\n\t\titems: [\n\t\t\t{id: \"object-types\", label: \"Object types\", icon: Box, count: ONTOLOGY_COUNTS[\"object-types\"]},\n\t\t\t{id: \"link-types\", label: \"Link types\", icon: Link2, count: ONTOLOGY_COUNTS[\"link-types\"]},\n\t\t\t{id: \"action-types\", label: \"Action types\", icon: Zap, count: ONTOLOGY_COUNTS[\"action-types\"]},\n\t\t\t{id: \"interfaces\", label: \"Interfaces\", icon: Dna, count: ONTOLOGY_COUNTS.interfaces},\n\t\t\t{id: \"shared-properties\", label: \"Shared properties\", icon: Puzzle, count: ONTOLOGY_COUNTS[\"shared-properties\"]},\n\t\t\t{id: \"type-groups\", label: \"Type groups\", icon: Folder, count: ONTOLOGY_COUNTS[\"type-groups\"]},\n\t\t\t{id: \"graph\", label: \"Graph explorer\", icon: Network, count: ONTOLOGY_COUNTS[\"link-types\"]},\n\t\t],\n\t},\n];\n\n// Which shared ontology view backs each Settings item. The admin registry calls the groups tab\n// \"groups\" while Settings calls it \"type-groups\", so the ids cannot simply be reused.\nconst ONTOLOGY_SETTING_VIEW_IDS: Record<string, string> = {\n\t\"object-types\": \"object-types\",\n\t\"link-types\": \"link-types\",\n\t\"action-types\": \"action-types\",\n\tinterfaces: \"interfaces\",\n\t\"shared-properties\": \"shared-properties\",\n\t\"type-groups\": \"groups\",\n\tgraph: \"graph\",\n};\n\n// Descriptions for the ontology settings header band, mirroring the admin's tab placeholders.\nconst ONTOLOGY_DESCRIPTION: Record<string, string> = {\n\t\"object-types\": \"Define the object types this product works with.\",\n\t\"link-types\": \"Define how those object types relate to one another.\",\n\t\"action-types\": \"Configure the actions that can be run against them.\",\n\tinterfaces: \"Manage shared interfaces object types can implement.\",\n\t\"shared-properties\": \"Manage properties reused across object types.\",\n\t\"type-groups\": \"Group related types for navigation and permissions.\",\n\tgraph: \"Explore how this product's object types relate to one another.\",\n};\n\nconst SETTINGS_ITEMS = SETTINGS_GROUPS.flatMap((group) => group.items);\n\n// General and Categories render real content; the rest are still scaffold placeholders.\nconst SETTING_PLACEHOLDER: Record<string, string> = {\n\tworkflow: \"Configure the observation workflow — stages, approvals, and routing.\",\n};\n\nconst settingLabel = (id: string) => SETTINGS_ITEMS.find((item) => item.id === id)?.label ?? \"Settings\";\nconst tabLabel = (id: SafetyTabId) => TABS.find((tab) => tab.id === id)?.label ?? \"\";\n\n// ─── Observations (List View data) ───────────────────────────────────────────\n\ntype ObservationStatus = \"pending\" | \"open\" | \"closed\";\n\nconst STATUS_LABEL: Record<ObservationStatus, string> = {\n\tpending: \"Pending\",\n\topen: \"Open\",\n\tclosed: \"Closed\",\n};\n\nfunction statusVariant(status: ObservationStatus): \"dangerSoft\" | \"warningSoft\" | \"successSoft\" {\n\tif (status === \"closed\") return \"successSoft\";\n\tif (status === \"pending\") return \"dangerSoft\";\n\treturn \"warningSoft\";\n}\n\n// Full severity ladder from the observation manager: \"Not Determined\" is the unset state.\ntype Severity = \"Not Determined\" | \"Low\" | \"Medium\" | \"High\" | \"Emergency\";\n\nconst SEVERITIES: Severity[] = [\"Not Determined\", \"Low\", \"Medium\", \"High\", \"Emergency\"];\n\n// Severities a user can assign (Not Determined is the system's unset placeholder, never chosen).\nconst ASSIGNABLE_SEVERITIES: Severity[] = [\"Low\", \"Medium\", \"High\", \"Emergency\"];\n\nfunction severityVariant(severity: Severity): \"neutralSoft\" | \"successSoft\" | \"warningSoft\" | \"dangerSoft\" {\n\tif (severity === \"Emergency\" || severity === \"High\") return \"dangerSoft\";\n\tif (severity === \"Medium\") return \"warningSoft\";\n\tif (severity === \"Low\") return \"successSoft\";\n\treturn \"neutralSoft\";\n}\n\ntype Observation = {\n\tid: string;\n\t/** Event type — the card heading (e.g. \"Speed Violation\"). */\n\ttitle: string;\n\t/** Full sentence describing what was detected. */\n\tdescription: string;\n\tstatus: ObservationStatus;\n\tseverity: Severity;\n\t/** System that raised the observation (AVL, ConnectedWorker, CCTV, ClinicViolation…). */\n\tsource: string;\n\t/** Observation category/type, used by the Category filter. */\n\tcategory?: string;\n\t/** Contractor the event is attributed to; undefined renders as \"Not Determined\". */\n\tcompany?: string;\n\t/** Number of identical events rolled up into this one, when > 0. */\n\tgroupCount?: number;\n\t/** Good Practice observations hide False Alarm / False Positive and skip the severity step. */\n\tisGoodPractice?: boolean;\n\t/** Set when a CCTV observation was closed as a false positive — drives the header badge. */\n\tfalsePositive?: boolean;\n\t/** False until the detail has been opened; an unviewed row shows a leading dot. */\n\tviewed?: boolean;\n\t/** Responder assigned to work an open observation; undefined = not yet assigned. */\n\tassignedTo?: string;\n\t/** Responder who closed the observation; undefined for desk dismissals (false alarm / false positive). */\n\tclosedBy?: string;\n\tupdatedAt: string;\n};\n\nconst OBSERVATIONS: Observation[] = [\n\t{\n\t\tid: \"o-1\",\n\t\ttitle: \"Speed Violation\",\n\t\tdescription: \"Speed violation detected at MAR Entrance.\",\n\t\tstatus: \"pending\",\n\t\tseverity: \"Medium\",\n\t\tsource: \"AVL\",\n\t\tcategory: \"Vehicle & Traffic Safety\",\n\t\tupdatedAt: \"less than a minute ago\",\n\t},\n\t{\n\t\tid: \"o-2\",\n\t\ttitle: \"Head Impact\",\n\t\tdescription:\n\t\t\t\"A Head Impact was received from worker ID 2607463938 from Company TR-SFEC. Please verify the incident and provide assistance immediately.\",\n\t\tstatus: \"pending\",\n\t\tseverity: \"High\",\n\t\tsource: \"ConnectedWorker\",\n\t\tcategory: \"Fall Protection\",\n\t\tcompany: \"TR-SFEC\",\n\t\tupdatedAt: \"3 minutes ago\",\n\t},\n\t{\n\t\tid: \"o-3\",\n\t\ttitle: \"PPE Non-Compliance\",\n\t\tdescription: \"CCTV flagged a worker without a hard hat at the Gate 4 walkway. Please verify the footage.\",\n\t\tstatus: \"pending\",\n\t\tseverity: \"Medium\",\n\t\tsource: \"CCTV\",\n\t\tcategory: \"PPE Non-Compliance\",\n\t\tcompany: \"TR-SFEC\",\n\t\tupdatedAt: \"6 minutes ago\",\n\t},\n\t{\n\t\tid: \"o-4\",\n\t\ttitle: \"Unfit Worker\",\n\t\tdescription:\n\t\t\t\"Unfit for Work violation: worker ANIL PUN MAGAR (ID PA3623851) is present in Zone TR-PKG2-TCF Camp despite medical restrictions. Immediate action is required.\",\n\t\tstatus: \"pending\",\n\t\tseverity: \"High\",\n\t\tsource: \"ClinicViolation\",\n\t\tcategory: \"Unfit for Work\",\n\t\tcompany: \"TR-SINOPEC5\",\n\t\tgroupCount: 98,\n\t\tupdatedAt: \"18 days ago\",\n\t},\n\t{\n\t\tid: \"o-5\",\n\t\ttitle: \"Good Housekeeping\",\n\t\tdescription: \"Crew proactively cleared and organised the laydown yard ahead of the weekend shift.\",\n\t\tstatus: \"pending\",\n\t\tseverity: \"Not Determined\",\n\t\tsource: \"Manual\",\n\t\tcategory: \"Housekeeping\",\n\t\tcompany: \"TR-SFEC\",\n\t\tisGoodPractice: true,\n\t\tupdatedAt: \"25 minutes ago\",\n\t},\n\t{\n\t\tid: \"o-6\",\n\t\ttitle: \"Unfit Worker\",\n\t\tdescription:\n\t\t\t\"Unfit for Work violation: worker MUHAMED SHIHAB (ID 2267834220) is present in Zone TR-PKG2/887-Storage and Metering Area(34)-1 despite medical restrictions. Immediate action is required.\",\n\t\tstatus: \"open\",\n\t\tseverity: \"Medium\",\n\t\tsource: \"ClinicViolation\",\n\t\tcategory: \"Unfit for Work\",\n\t\tcompany: \"TR\",\n\t\tgroupCount: 122,\n\t\tviewed: true,\n\t\tupdatedAt: \"about 1 month ago\",\n\t},\n\t{\n\t\tid: \"o-7\",\n\t\ttitle: \"Missing Guardrail\",\n\t\tdescription: \"Fall-protection guardrail missing on level 3, Zone B. Area roped off pending repair.\",\n\t\tstatus: \"open\",\n\t\tseverity: \"High\",\n\t\tsource: \"Inspection\",\n\t\tcategory: \"Fall Protection\",\n\t\tcompany: \"TR-SFEC\",\n\t\tviewed: true,\n\t\tassignedTo: \"Muhammad Aqeel\",\n\t\tupdatedAt: \"2 hours ago\",\n\t},\n\t{\n\t\tid: \"o-8\",\n\t\ttitle: \"PPE Compliance\",\n\t\tdescription: \"PPE compliance spot check completed at Site A. All findings corrected on site.\",\n\t\tstatus: \"closed\",\n\t\tseverity: \"Low\",\n\t\tsource: \"Inspection\",\n\t\tcategory: \"PPE Non-Compliance\",\n\t\tcompany: \"TR\",\n\t\tviewed: true,\n\t\tclosedBy: \"Roberto Cruz Tuazon\",\n\t\tupdatedAt: \"3 days ago\",\n\t},\n\t{\n\t\tid: \"o-9\",\n\t\ttitle: \"PPE Non-Compliance\",\n\t\tdescription: \"CCTV alert reviewed and dismissed — the flagged worker was wearing a compliant bump cap.\",\n\t\tstatus: \"closed\",\n\t\tseverity: \"Low\",\n\t\tsource: \"CCTV\",\n\t\tcategory: \"PPE Non-Compliance\",\n\t\tcompany: \"TR-SFEC\",\n\t\tfalsePositive: true,\n\t\tviewed: true,\n\t\tupdatedAt: \"4 days ago\",\n\t},\n];\n\nconst COMPANIES = Array.from(new Set(OBSERVATIONS.map((o) => o.company ?? \"Not Determined\")));\nconst SOURCES = Array.from(new Set(OBSERVATIONS.map((o) => o.source)));\nconst OBSERVATION_CATEGORIES = Array.from(new Set(OBSERVATIONS.map((o) => o.category).filter((c): c is string => !!c)));\n\n// Responders an observation can be assigned to / closed by. Mirrors the names in the Verify Response\n// responder list; kept as a literal here to avoid depending on that block's initialisation order.\nconst RESPONDER_NAMES = [\n\t\"Miguel\",\n\t\"Mohammad Junaid Raza\",\n\t\"Abhilash Sadanandan\",\n\t\"Muhammad Aqeel\",\n\t\"Melandro Dalisay Mapili\",\n\t\"Roberto Cruz Tuazon\",\n\t\"Ahsan Nadeem\",\n];\n\nconst EXPORT_TEMPLATES: ExportTemplateOption[] = [\n\t{\n\t\tid: \"incident-log\",\n\t\tlabel: \"Incident log\",\n\t\tdescription: \"One row per observation with status, severity, and source.\",\n\t\tfileType: \"excel\",\n\t\tincludeFilters: true,\n\t},\n\t{\n\t\tid: \"weekly-summary\",\n\t\tlabel: \"Weekly safety summary\",\n\t\tdescription: \"Counts by status and severity for the period.\",\n\t\tfileType: \"pdf\",\n\t\tincludeFilters: false,\n\t},\n\t{\n\t\tid: \"contractor-breakdown\",\n\t\tlabel: \"Contractor breakdown\",\n\t\tdescription: \"Observations grouped by company.\",\n\t\tfileType: \"excel\",\n\t\tincludeFilters: false,\n\t},\n];\n\n// ─── Add Observation form options ────────────────────────────────────────────\n\nconst ZONE_OPTIONS: AddObservationOption[] = [\n\t{value: \"mar-entrance\", label: \"MAR Entrance\"},\n\t{value: \"tcf-camp\", label: \"TR-PKG2-TCF Camp\"},\n\t{value: \"storage-metering\", label: \"TR-PKG2/887-Storage and Metering Area(34)-1\"},\n\t{value: \"level-3-zone-b\", label: \"Level 3 — Zone B\"},\n\t{value: \"laydown-yard\", label: \"Laydown Yard\"},\n];\n\nconst CATEGORY_OPTIONS: AddObservationOption[] = [\n\t{value: \"ppe\", label: \"PPE Non-Compliance\"},\n\t{value: \"fall-protection\", label: \"Fall Protection\"},\n\t{value: \"vehicle-safety\", label: \"Vehicle & Traffic Safety\"},\n\t{value: \"housekeeping\", label: \"Housekeeping\"},\n\t{value: \"hot-work\", label: \"Hot Work\"},\n\t{value: \"unfit-for-work\", label: \"Unfit for Work\"},\n];\n\nconst WORKER_OPTIONS: AddObservationOption[] = [\n\t{value: \"pa3623851\", label: \"Anil Pun Magar (PA3623851)\"},\n\t{value: \"2267834220\", label: \"Muhamed Shihab (2267834220)\"},\n\t{value: \"2607463938\", label: \"Worker 2607463938\"},\n];\n\n// A system-authored activity entry for the comment log — assignment, closure, severity changes, etc.\n// The comment thread doubles as the observation's audit trail, so every lifecycle action drops one.\nfunction systemActivity(id: string, body: string, timestamp: string, tone: CommentBadgeTone = \"info\"): CommentItem {\n\treturn {\n\t\tid,\n\t\tauthor: {name: \"System\", initials: \"SY\"},\n\t\ttimestamp,\n\t\tbody,\n\t\tbadges: [{id: \"activity\", icon: <Radio className=\"wwc:h-3 wwc:w-3\" />, label: \"Activity\", tone}],\n\t};\n}\n\nconst INITIAL_COMMENTS: Record<string, CommentItem[]> = {\n\t// Seeded on the guardrail observation, whose thread the copy refers to.\n\t\"o-5\": [\n\t\t{\n\t\t\tid: \"c-seed-1\",\n\t\t\tauthor: {name: \"Layla N.\"},\n\t\t\ttimestamp: \"2 hours ago\",\n\t\t\tbody: \"Roped off the area. Maintenance needs to install a permanent guardrail before the next shift.\",\n\t\t\tbadges: [{id: \"flag\", icon: <Flag className=\"wwc:h-3 wwc:w-3\" />, label: \"Flagged\", tone: \"warning\"}],\n\t\t},\n\t],\n\t// Activity history for the already-assigned / already-closed observations, newest first.\n\t\"o-7\": [systemActivity(\"c-o7-act\", \"Opened and assigned to Muhammad Aqeel.\", \"2 hours ago\")],\n\t\"o-8\": [systemActivity(\"c-o8-act\", \"Closed by Roberto Cruz Tuazon.\", \"3 days ago\", \"success\")],\n\t\"o-9\": [\n\t\tsystemActivity(\n\t\t\t\"c-o9-act\",\n\t\t\t\"Marked as false positive and dismissed — no responder response required.\",\n\t\t\t\"4 days ago\",\n\t\t\t\"muted\",\n\t\t),\n\t],\n};\n\nfunction DetailRow({label, value}: {label: string; value: React.ReactNode}) {\n\treturn (\n\t\t<div className=\"wwc:flex wwc:items-center wwc:justify-between wwc:gap-3 wwc:border-b wwc:py-2 wwc:last:border-b-0\">\n\t\t\t<span className=\"wwc:text-xs wwc:text-muted-foreground\">{label}</span>\n\t\t\t<span className=\"wwc:text-right wwc:text-sm wwc:font-medium\">{value}</span>\n\t\t</div>\n\t);\n}\n\n/** List View — the reusable TaskMonitor wired to observation data. */\n// ─── Lifecycle actions ───────────────────────────────────────────────────────\n\n// The project-level \"Require company selection\" setting. Mirrors the Settings › General toggle,\n// which defaults on; a company must be chosen before Open, Close, False Alarm, or False Positive.\nconst COMPANY_REQUIRED = true;\n\ntype LifecycleActionKey =\n\t| \"open\"\n\t| \"false-alarm\"\n\t| \"false-positive\"\n\t| \"change-severity\"\n\t| \"set-company\"\n\t| \"close\"\n\t| \"reopen\"\n\t| \"delete\";\n\ntype LifecycleActionMeta = {\n\t/** Button label in the list/detail, matching the observation manager wording. */\n\tlabel: string;\n\t/** Dialog heading. */\n\ttitle: string;\n\t/** Confirm button label. */\n\tconfirm: string;\n\ticon: React.ReactNode;\n\ttone?: \"default\" | \"destructive\";\n};\n\nconst LIFECYCLE_META: Record<LifecycleActionKey, LifecycleActionMeta> = {\n\topen: {\n\t\tlabel: \"Mark as Opened\",\n\t\ttitle: \"Mark as Opened\",\n\t\tconfirm: \"Mark as Opened\",\n\t\ticon: <CheckCircle2 className=\"wwc:h-4 wwc:w-4\" />,\n\t},\n\t\"false-alarm\": {\n\t\tlabel: \"Mark as False Alarm\",\n\t\ttitle: \"Mark as False Alarm\",\n\t\tconfirm: \"Confirm False Alarm\",\n\t\ticon: <ShieldX className=\"wwc:h-4 wwc:w-4\" />,\n\t},\n\t\"false-positive\": {\n\t\tlabel: \"Mark as False Positive\",\n\t\ttitle: \"Mark as False Positive\",\n\t\tconfirm: \"Confirm False Positive\",\n\t\ticon: <ShieldX className=\"wwc:h-4 wwc:w-4\" />,\n\t},\n\t\"change-severity\": {\n\t\tlabel: \"Change Severity\",\n\t\ttitle: \"Change Severity\",\n\t\tconfirm: \"Save Severity\",\n\t\ticon: <Flag className=\"wwc:h-4 wwc:w-4\" />,\n\t},\n\t\"set-company\": {\n\t\tlabel: \"Set Company\",\n\t\ttitle: \"Set Company\",\n\t\tconfirm: \"Save Company\",\n\t\ticon: <Tags className=\"wwc:h-4 wwc:w-4\" />,\n\t},\n\tclose: {\n\t\tlabel: \"Close Issue\",\n\t\ttitle: \"Close Issue\",\n\t\tconfirm: \"Close Issue\",\n\t\ticon: <CheckCircle2 className=\"wwc:h-4 wwc:w-4\" />,\n\t},\n\treopen: {\n\t\tlabel: \"Reopen\",\n\t\ttitle: \"Reopen Observation\",\n\t\tconfirm: \"Reopen\",\n\t\ticon: <CheckCircle2 className=\"wwc:h-4 wwc:w-4\" />,\n\t},\n\tdelete: {\n\t\tlabel: \"Delete\",\n\t\ttitle: \"Delete Observation\",\n\t\tconfirm: \"Yes, Delete\",\n\t\ticon: <Trash2 className=\"wwc:h-4 wwc:w-4\" />,\n\t\ttone: \"destructive\",\n\t},\n};\n\n/** The status- and source-aware action set for one observation, split into primary + secondaries. */\nfunction lifecycleActionsFor(o: Observation): {primary: LifecycleActionKey; secondary: LifecycleActionKey[]} {\n\tif (o.status === \"pending\") {\n\t\tconst secondary: LifecycleActionKey[] = [];\n\t\t// Good Practice observations are affirmations — there is nothing to dispute.\n\t\tif (!o.isGoodPractice) secondary.push(\"false-alarm\");\n\t\t// False Positive is a CCTV-only escape hatch.\n\t\tif (o.source === \"CCTV\" && !o.isGoodPractice) secondary.push(\"false-positive\");\n\t\tsecondary.push(\"delete\");\n\t\treturn {primary: \"open\", secondary};\n\t}\n\tif (o.status === \"open\") {\n\t\tconst secondary: LifecycleActionKey[] = [];\n\t\tif (!o.isGoodPractice) secondary.push(\"change-severity\");\n\t\tsecondary.push(\"set-company\", \"delete\");\n\t\treturn {primary: \"close\", secondary};\n\t}\n\treturn {primary: \"reopen\", secondary: [\"delete\"]};\n}\n\n/** Which inputs a given action collects. */\nfunction actionNeeds(key: LifecycleActionKey, o: Observation) {\n\treturn {\n\t\tseverity: (key === \"open\" && !o.isGoodPractice) || key === \"change-severity\" || key === \"reopen\",\n\t\tcompany:\n\t\t\t(key === \"open\" && COMPANY_REQUIRED) ||\n\t\t\t(key === \"false-alarm\" && COMPANY_REQUIRED) ||\n\t\t\t(key === \"close\" && COMPANY_REQUIRED) ||\n\t\t\tkey === \"set-company\",\n\t\tnote: key === \"false-alarm\" || key === \"false-positive\" || key === \"close\" || key === \"reopen\",\n\t\t// Opening assigns a responder; closing records who closed it. Both are optional.\n\t\tresponder: key === \"open\" || key === \"close\",\n\t};\n}\n\ntype ActionForm = {severity: Severity | \"\"; company: string; note: string; responder: string};\n\n// Human-readable audit-log line for a confirmed lifecycle action, appended to the comment thread.\nfunction actionActivityMessage(key: LifecycleActionKey, form: ActionForm, o: Observation): string | null {\n\tconst withNote = (base: string) => (form.note.trim() ? `${base} — ${form.note.trim()}` : base);\n\tswitch (key) {\n\t\tcase \"open\":\n\t\t\treturn form.responder ? `Marked as opened and assigned to ${form.responder}.` : \"Marked as opened.\";\n\t\tcase \"close\":\n\t\t\treturn withNote(form.responder ? `Closed by ${form.responder}.` : \"Closed.\");\n\t\tcase \"false-alarm\":\n\t\t\treturn withNote(\"Marked as false alarm.\");\n\t\tcase \"false-positive\":\n\t\t\treturn \"Marked as false positive and dismissed.\";\n\t\tcase \"change-severity\":\n\t\t\treturn `Severity changed to ${form.severity || o.severity}.`;\n\t\tcase \"set-company\":\n\t\t\treturn `Company set to ${form.company || o.company || \"Not Determined\"}.`;\n\t\tcase \"reopen\":\n\t\t\treturn withNote(\"Reopened.\");\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/**\n * Confirmation dialog shared by every lifecycle action. Its fields adapt to the action, and it\n * validates on click (never disables the confirm button) to match the rest of the template.\n */\nfunction ObservationActionDialog({\n\tobservation,\n\tactionKey,\n\tform,\n\tonFormChange,\n\tonConfirm,\n\tonCancel,\n}: {\n\tobservation: Observation | null;\n\tactionKey: LifecycleActionKey | null;\n\tform: ActionForm;\n\tonFormChange: (patch: Partial<ActionForm>) => void;\n\tonConfirm: () => void;\n\tonCancel: () => void;\n}) {\n\tconst [showErrors, setShowErrors] = useState(false);\n\tconst open = observation !== null && actionKey !== null;\n\n\tif (!observation || !actionKey) {\n\t\treturn <Dialog open={false} onOpenChange={onCancel} />;\n\t}\n\n\tconst meta = LIFECYCLE_META[actionKey];\n\tconst needs = actionNeeds(actionKey, observation);\n\n\tconst errors = {\n\t\tseverity: needs.severity && form.severity === \"\" ? \"Select a severity.\" : undefined,\n\t\tcompany: needs.company && form.company === \"\" ? \"Please select a company first.\" : undefined,\n\t};\n\tconst hasErrors = !!errors.severity || !!errors.company;\n\n\tconst noteLabel = actionKey === \"reopen\" ? \"Reopen note\" : actionKey === \"close\" ? \"Closing note\" : \"Note\";\n\tconst responderLabel = actionKey === \"close\" ? \"Closed by\" : \"Assign to responder\";\n\n\tconst handleConfirm = () => {\n\t\tif (hasErrors) {\n\t\t\tsetShowErrors(true);\n\t\t\treturn;\n\t\t}\n\t\tsetShowErrors(false);\n\t\tonConfirm();\n\t};\n\n\treturn (\n\t\t<Dialog\n\t\t\topen={open}\n\t\t\tonOpenChange={(next) => {\n\t\t\t\tif (!next) {\n\t\t\t\t\tsetShowErrors(false);\n\t\t\t\t\tonCancel();\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<DialogContent className=\"wwc:gap-0 wwc:p-0 wwc:sm:max-w-[480px]\">\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>{meta.title}</DialogTitle>\n\t\t\t\t\t<DialogDescription className=\"wwc:sr-only\">\n\t\t\t\t\t\tConfirm the {meta.label.toLowerCase()} action for this observation.\n\t\t\t\t\t</DialogDescription>\n\t\t\t\t</DialogHeader>\n\n\t\t\t\t<div className=\"wwc:flex wwc:flex-col wwc:gap-4 wwc:px-4 wwc:py-4\">\n\t\t\t\t\t<p className=\"wwc:text-sm wwc:text-muted-foreground\">\n\t\t\t\t\t\t<span className=\"wwc:font-medium wwc:text-foreground\">{observation.title}</span>\n\t\t\t\t\t\t{\" — \"}\n\t\t\t\t\t\t{actionKey === \"delete\"\n\t\t\t\t\t\t\t? \"This permanently removes the observation and cannot be undone.\"\n\t\t\t\t\t\t\t: \"Confirm the details below to continue.\"}\n\t\t\t\t\t</p>\n\n\t\t\t\t\t{needs.severity && (\n\t\t\t\t\t\t<Field>\n\t\t\t\t\t\t\t<FieldLabel htmlFor=\"action-severity\">Severity</FieldLabel>\n\t\t\t\t\t\t\t<Select value={form.severity} onValueChange={(v) => onFormChange({severity: v as Severity})}>\n\t\t\t\t\t\t\t\t<SelectTrigger id=\"action-severity\" aria-invalid={showErrors && !!errors.severity}>\n\t\t\t\t\t\t\t\t\t<SelectValue placeholder=\"Select severity\" />\n\t\t\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t\t\t{ASSIGNABLE_SEVERITIES.map((s) => (\n\t\t\t\t\t\t\t\t\t\t<SelectItem key={s} value={s}>\n\t\t\t\t\t\t\t\t\t\t\t{s}\n\t\t\t\t\t\t\t\t\t\t</SelectItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t\t{showErrors && errors.severity && <FieldError>{errors.severity}</FieldError>}\n\t\t\t\t\t\t</Field>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{needs.company && (\n\t\t\t\t\t\t<Field>\n\t\t\t\t\t\t\t<FieldLabel htmlFor=\"action-company\">Company</FieldLabel>\n\t\t\t\t\t\t\t<Select value={form.company} onValueChange={(v) => onFormChange({company: v})}>\n\t\t\t\t\t\t\t\t<SelectTrigger id=\"action-company\" aria-invalid={showErrors && !!errors.company}>\n\t\t\t\t\t\t\t\t\t<SelectValue placeholder=\"Select company\" />\n\t\t\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t\t\t{COMPANIES.map((c) => (\n\t\t\t\t\t\t\t\t\t\t<SelectItem key={c} value={c}>\n\t\t\t\t\t\t\t\t\t\t\t{c}\n\t\t\t\t\t\t\t\t\t\t</SelectItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t\t{showErrors && errors.company && <FieldError>{errors.company}</FieldError>}\n\t\t\t\t\t\t</Field>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{needs.responder && (\n\t\t\t\t\t\t<Field>\n\t\t\t\t\t\t\t<FieldLabel htmlFor=\"action-responder\">{responderLabel}</FieldLabel>\n\t\t\t\t\t\t\t<Select value={form.responder} onValueChange={(v) => onFormChange({responder: v})}>\n\t\t\t\t\t\t\t\t<SelectTrigger id=\"action-responder\">\n\t\t\t\t\t\t\t\t\t<SelectValue placeholder=\"Select responder\" />\n\t\t\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t\t\t{RESPONDER_NAMES.map((name) => (\n\t\t\t\t\t\t\t\t\t\t<SelectItem key={name} value={name}>\n\t\t\t\t\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t\t\t\t\t</SelectItem>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t</Field>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{needs.note && (\n\t\t\t\t\t\t<Field>\n\t\t\t\t\t\t\t<FieldLabel htmlFor=\"action-note\">{noteLabel}</FieldLabel>\n\t\t\t\t\t\t\t<Textarea\n\t\t\t\t\t\t\t\tid=\"action-note\"\n\t\t\t\t\t\t\t\tvalue={form.note}\n\t\t\t\t\t\t\t\tonChange={(e) => onFormChange({note: e.target.value})}\n\t\t\t\t\t\t\t\tplaceholder=\"Add a note…\"\n\t\t\t\t\t\t\t\tclassName=\"wwc:min-h-20 wwc:resize-y\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Field>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t<DialogFooter className=\"wwc:border-t wwc:border-border wwc:px-4 wwc:py-2\">\n\t\t\t\t\t<Button variant=\"outline\" size=\"sm\" onClick={onCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button size=\"sm\" variant={meta.tone === \"destructive\" ? \"destructive\" : \"default\"} onClick={handleConfirm}>\n\t\t\t\t\t\t{meta.icon}\n\t\t\t\t\t\t{meta.confirm}\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogFooter>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n\n// ─── Grouped observations dialog ─────────────────────────────────────────────\n\ntype GroupedRow = {id: string; received: string; generated: string; zone: string; location: string};\n\n// A small synthetic set standing in for the grouped-observations endpoint.\nfunction groupedRowsFor(o: Observation): GroupedRow[] {\n\tconst count = Math.min(o.groupCount ?? 0, 8);\n\treturn Array.from({length: count}, (_, i) => ({\n\t\tid: `${o.id}-g${i + 1}`,\n\t\treceived: `20 Jul 2026, ${String(9 + (i % 8)).padStart(2, \"0\")}:${String((i * 7) % 60).padStart(2, \"0\")}`,\n\t\tgenerated: `20 Jul 2026, ${String(9 + (i % 8)).padStart(2, \"0\")}:${String((i * 7) % 60).padStart(2, \"0\")}`,\n\t\tzone: o.source === \"AVL\" ? \"MAR Entrance\" : \"TR-PKG2-TCF Camp\",\n\t\tlocation: \"24.7136, 46.6753\",\n\t}));\n}\n\nconst GROUPED_COLUMNS: ColumnDef<GroupedRow>[] = [\n\t{accessorKey: \"received\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Received\" />},\n\t{accessorKey: \"generated\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Generated\" />},\n\t{accessorKey: \"zone\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Zone\" />},\n\t{accessorKey: \"location\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Location\" />},\n];\n\nfunction GroupedObservationsDialog({observation, onClose}: {observation: Observation | null; onClose: () => void}) {\n\treturn (\n\t\t<Dialog open={observation !== null} onOpenChange={(next) => !next && onClose()}>\n\t\t\t<DialogContent className=\"wwc:gap-0 wwc:p-0 wwc:sm:max-w-[720px]\">\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>Grouped observations{observation ? ` (${observation.groupCount})` : \"\"}</DialogTitle>\n\t\t\t\t\t<DialogDescription className=\"wwc:sr-only\">\n\t\t\t\t\t\tThe individual events rolled up into this observation.\n\t\t\t\t\t</DialogDescription>\n\t\t\t\t</DialogHeader>\n\t\t\t\t<div className=\"wwc:px-4 wwc:py-4\">\n\t\t\t\t\t{observation && (\n\t\t\t\t\t\t<DataTable columns={GROUPED_COLUMNS} data={groupedRowsFor(observation)} recordLabel=\"event\" pageSize={5} />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n\n// ─── Location dialog ─────────────────────────────────────────────────────────\n\nfunction LocationDialog({observation, onClose}: {observation: Observation | null; onClose: () => void}) {\n\treturn (\n\t\t<Dialog open={observation !== null} onOpenChange={(next) => !next && onClose()}>\n\t\t\t<DialogContent className=\"wwc:gap-0 wwc:p-0 wwc:sm:max-w-[640px]\">\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>Location Details</DialogTitle>\n\t\t\t\t\t<DialogDescription className=\"wwc:sr-only\">\n\t\t\t\t\t\tThe observation and worker location on the site map.\n\t\t\t\t\t</DialogDescription>\n\t\t\t\t</DialogHeader>\n\t\t\t\t<div className=\"wwc:h-[360px]\">\n\t\t\t\t\t<SiteMap className=\"wwc:h-full wwc:w-full wwc:rounded-none\" center={[46.6753, 24.7136]} zoom={15} />\n\t\t\t\t</div>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n\nfunction ObservationsListView() {\n\tconst [items, setItems] = useState<Observation[]>(OBSERVATIONS);\n\tconst [search, setSearch] = useState(\"\");\n\tconst [filterId, setFilterId] = useState<string | undefined>(\"all\");\n\tconst [applied, setApplied] = useState<FilterValue>({});\n\tconst [dateRange, setDateRange] = useState<{from: Date | undefined; to: Date | undefined}>({\n\t\tfrom: undefined,\n\t\tto: undefined,\n\t});\n\tconst [openIds, setOpenIds] = useState<string[]>([\"o-1\"]);\n\tconst [activeId, setActiveId] = useState<string | undefined>(\"o-1\");\n\tconst [comment, setComment] = useState(\"\");\n\tconst [commentFlagged, setCommentFlagged] = useState(false);\n\tconst [commentDate, setCommentDate] = useState<Date | undefined>();\n\tconst [commentsByItem, setCommentsByItem] = useState<Record<string, CommentItem[]>>(INITIAL_COMMENTS);\n\n\t// Lifecycle dialog: which action is confirming, against which observation, and its inputs.\n\tconst [actionKey, setActionKey] = useState<LifecycleActionKey | null>(null);\n\tconst [actionTargetId, setActionTargetId] = useState<string | undefined>();\n\tconst [actionForm, setActionForm] = useState<ActionForm>({severity: \"\", company: \"\", note: \"\", responder: \"\"});\n\tconst [groupedForId, setGroupedForId] = useState<string | undefined>();\n\tconst [locationForId, setLocationForId] = useState<string | undefined>();\n\n\t// Open a lifecycle action against the active observation, seeding the form from its current values.\n\tconst startAction = (key: LifecycleActionKey, target: Observation) => {\n\t\tsetActionTargetId(target.id);\n\t\tsetActionKey(key);\n\t\tsetActionForm({\n\t\t\tseverity: target.severity === \"Not Determined\" ? \"\" : target.severity,\n\t\t\tcompany: target.company ?? \"\",\n\t\t\tnote: \"\",\n\t\t\tresponder: key === \"close\" ? (target.closedBy ?? \"\") : (target.assignedTo ?? \"\"),\n\t\t});\n\t};\n\n\tconst closeAction = () => {\n\t\tsetActionKey(null);\n\t\tsetActionTargetId(undefined);\n\t};\n\n\t// Apply the confirmed action to the observation, mirroring the observation-manager mutations.\n\tconst confirmAction = () => {\n\t\tif (!actionKey || !actionTargetId) return;\n\t\tconst key = actionKey;\n\t\tconst targetId = actionTargetId;\n\t\tif (key === \"delete\") {\n\t\t\tsetItems((prev) => prev.filter((o) => o.id !== targetId));\n\t\t\tsetOpenIds((prev) => prev.filter((x) => x !== targetId));\n\t\t\tif (activeId === targetId) setActiveId(undefined);\n\t\t\tcloseAction();\n\t\t\treturn;\n\t\t}\n\t\tconst target = byId.get(targetId);\n\t\tconst responder = actionForm.responder;\n\t\tsetItems((prev) =>\n\t\t\tprev.map((o) => {\n\t\t\t\tif (o.id !== targetId) return o;\n\t\t\t\tconst company = actionForm.company || o.company;\n\t\t\t\tconst severity = (actionForm.severity || o.severity) as Severity;\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase \"open\":\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...o,\n\t\t\t\t\t\t\tstatus: \"open\",\n\t\t\t\t\t\t\tcompany,\n\t\t\t\t\t\t\tseverity: o.isGoodPractice ? o.severity : severity,\n\t\t\t\t\t\t\tassignedTo: responder || o.assignedTo,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase \"false-alarm\":\n\t\t\t\t\t\treturn {...o, status: \"closed\", company};\n\t\t\t\t\tcase \"false-positive\":\n\t\t\t\t\t\treturn {...o, status: \"closed\", falsePositive: true};\n\t\t\t\t\tcase \"change-severity\":\n\t\t\t\t\t\treturn {...o, severity};\n\t\t\t\t\tcase \"set-company\":\n\t\t\t\t\t\treturn {...o, company};\n\t\t\t\t\tcase \"close\":\n\t\t\t\t\t\treturn {...o, status: \"closed\", company, closedBy: responder || o.closedBy};\n\t\t\t\t\tcase \"reopen\":\n\t\t\t\t\t\t// Back to active work — the prior closure no longer applies.\n\t\t\t\t\t\treturn {...o, status: \"open\", severity, falsePositive: false, closedBy: undefined};\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\n\t\t// Drop a matching entry into the observation's comment log so it doubles as an audit trail.\n\t\tif (target) {\n\t\t\tconst message = actionActivityMessage(key, actionForm, target);\n\t\t\tif (message) {\n\t\t\t\tconst tone: CommentBadgeTone =\n\t\t\t\t\tkey === \"close\" ? \"success\" : key === \"false-alarm\" || key === \"false-positive\" ? \"muted\" : \"info\";\n\t\t\t\tsetCommentsByItem((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t[targetId]: [\n\t\t\t\t\t\tsystemActivity(`c-${targetId}-a${prev[targetId]?.length ?? 0}`, message, \"just now\", tone),\n\t\t\t\t\t\t...(prev[targetId] ?? []),\n\t\t\t\t\t],\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\n\t\tcloseAction();\n\t};\n\n\t// Controlled Filter: Apply commits into `applied`, the chips strip removes from it.\n\tconst removeApplied = (categoryId: string, optionValue: string) =>\n\t\tsetApplied((prev) => {\n\t\t\tconst rest = (prev[categoryId] ?? []).filter((v) => v !== optionValue);\n\t\t\tconst next = {...prev};\n\t\t\tif (rest.length === 0) delete next[categoryId];\n\t\t\telse next[categoryId] = rest;\n\t\t\treturn next;\n\t\t});\n\n\tconst appliedLabel = (categoryId: string, optionValue: string) =>\n\t\tcategoryId === \"status\" ? (STATUS_LABEL[optionValue as ObservationStatus] ?? optionValue) : optionValue;\n\n\t// The date range rides in the same chips strip as a synthetic \"date\" category, so a picked\n\t// range reads and clears exactly like a filter selection.\n\tconst dateChipLabel = dateRange.from\n\t\t? dateRange.to\n\t\t\t? `${format(dateRange.from, \"MMM dd, p\")} — ${format(dateRange.to, \"MMM dd, p\")}`\n\t\t\t: format(dateRange.from, \"MMM dd, p\")\n\t\t: undefined;\n\n\tconst clearDateRange = () => setDateRange({from: undefined, to: undefined});\n\n\tconst chipValue: FilterValue = dateChipLabel ? {...applied, date: [dateChipLabel]} : applied;\n\n\tconst appliedFilterCount = Object.values(chipValue).reduce((sum, values) => sum + values.length, 0);\n\n\tconst byId = useMemo(() => new Map(items.map((observation) => [observation.id, observation])), [items]);\n\n\tconst filters = useMemo(\n\t\t() => [\n\t\t\t{id: \"all\", label: \"All\", count: items.length},\n\t\t\t{id: \"pending\", label: \"Pending\", count: items.filter((o) => o.status === \"pending\").length},\n\t\t\t{id: \"open\", label: \"Open\", count: items.filter((o) => o.status === \"open\").length},\n\t\t\t{id: \"closed\", label: \"Closed\", count: items.filter((o) => o.status === \"closed\").length},\n\t\t],\n\t\t[items],\n\t);\n\n\tconst monitorItems: TaskMonitorItem[] = useMemo(\n\t\t() =>\n\t\t\titems\n\t\t\t\t.filter((o) => {\n\t\t\t\t\tif (filterId !== undefined && filterId !== \"all\" && o.status !== filterId) return false;\n\t\t\t\t\tconst haystack = `${o.title} ${o.description}`.toLowerCase();\n\t\t\t\t\treturn haystack.includes(search.toLowerCase());\n\t\t\t\t})\n\t\t\t\t.map((o) => ({\n\t\t\t\t\tid: o.id,\n\t\t\t\t\ttitle: o.title,\n\t\t\t\t\tsubtitle: o.description,\n\t\t\t\t\t// Grouped observations carry a clickable layers icon into their open tab; it opens the\n\t\t\t\t\t// grouped-violations dialog without switching tab (stopPropagation).\n\t\t\t\t\ticon:\n\t\t\t\t\t\to.groupCount !== undefined ? (\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\taria-label={`View ${o.groupCount} grouped observations`}\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tsetGroupedForId(o.id);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"wwc:flex wwc:items-center wwc:justify-center wwc:text-muted-foreground wwc:transition-colors wwc:hover:text-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Layers 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) : undefined,\n\t\t\t\t})),\n\t\t[items, filterId, search],\n\t);\n\n\tconst active = activeId !== undefined ? byId.get(activeId) : undefined;\n\tconst actionTarget = actionTargetId !== undefined ? (byId.get(actionTargetId) ?? null) : null;\n\tconst groupedTarget = groupedForId !== undefined ? (byId.get(groupedForId) ?? null) : null;\n\tconst locationTarget = locationForId !== undefined ? (byId.get(locationForId) ?? null) : null;\n\n\t// Opening an observation marks it viewed, exactly as the detail auto-mark-viewed mutation does.\n\tconst selectItem = (id: string | undefined) => {\n\t\tsetActiveId(id);\n\t\tif (id !== undefined) setItems((prev) => prev.map((o) => (o.id === id ? {...o, viewed: true} : o)));\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<TaskMonitor\n\t\t\t\tclassName=\"wwc:min-h-0 wwc:flex-1\"\n\t\t\t\titemNoun=\"observation\"\n\t\t\t\tlistTitle=\"Observations\"\n\t\t\t\titems={monitorItems}\n\t\t\t\tsearch={search}\n\t\t\t\tonSearchChange={setSearch}\n\t\t\t\tsearchPlaceholder=\"Search observations...\"\n\t\t\t\tlistFilterStrip={\n\t\t\t\t\t// Undefined when nothing is applied so the strip's border/padding doesn't render empty.\n\t\t\t\t\tObject.keys(chipValue).length > 0 ? (\n\t\t\t\t\t\t<FilterChips\n\t\t\t\t\t\t\tvalue={chipValue}\n\t\t\t\t\t\t\tonRemove={(categoryId, optionValue) => {\n\t\t\t\t\t\t\t\tif (categoryId === \"date\") clearDateRange();\n\t\t\t\t\t\t\t\telse removeApplied(categoryId, optionValue);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClear={() => {\n\t\t\t\t\t\t\t\tsetApplied({});\n\t\t\t\t\t\t\t\tclearDateRange();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\trenderLabel={appliedLabel}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : undefined\n\t\t\t\t}\n\t\t\t\tlistTrailing={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{/* All four share FilterTrigger's outline icon-button shape so the row reads as one control group. */}\n\t\t\t\t\t\t<AddObservationDialog\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<Button variant=\"outline\" icon aria-label=\"Add observation\" tooltip=\"Add observation\">\n\t\t\t\t\t\t\t\t\t<Plus 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}\n\t\t\t\t\t\t\tzones={ZONE_OPTIONS}\n\t\t\t\t\t\t\tcategories={CATEGORY_OPTIONS}\n\t\t\t\t\t\t\tworkers={WORKER_OPTIONS}\n\t\t\t\t\t\t\tonSave={() => undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ExportDialog\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<Button variant=\"outline\" icon aria-label=\"Export\" tooltip=\"Export\">\n\t\t\t\t\t\t\t\t\t<Download 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}\n\t\t\t\t\t\t\ttemplates={EXPORT_TEMPLATES}\n\t\t\t\t\t\t\tactiveFilterCount={appliedFilterCount}\n\t\t\t\t\t\t\tdefaultDateRange={dateRange}\n\t\t\t\t\t\t\tonCreateTemplate={() => undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{/* Short tooltip, descriptive aria-label — the hint is a hover glance, not a screen-reader label. */}\n\t\t\t\t\t\t<DateRangeTimePicker\n\t\t\t\t\t\t\ticonOnly\n\t\t\t\t\t\t\taria-label=\"Filter by date & time range\"\n\t\t\t\t\t\t\ttooltip=\"Date & time\"\n\t\t\t\t\t\t\tdateRange={dateRange}\n\t\t\t\t\t\t\tonDateRangeChange={setDateRange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Filter value={applied} onChange={setApplied}>\n\t\t\t\t\t\t\t<FilterTrigger />\n\t\t\t\t\t\t\t<FilterContent>\n\t\t\t\t\t\t\t\t<FilterCategory value=\"severity\" label=\"Severity\">\n\t\t\t\t\t\t\t\t\t{SEVERITIES.map((severity) => (\n\t\t\t\t\t\t\t\t\t\t<FilterOption key={severity} value={severity}>\n\t\t\t\t\t\t\t\t\t\t\t{severity}\n\t\t\t\t\t\t\t\t\t\t</FilterOption>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</FilterCategory>\n\t\t\t\t\t\t\t\t<FilterCategory value=\"source\" label=\"Source\">\n\t\t\t\t\t\t\t\t\t{SOURCES.map((source) => (\n\t\t\t\t\t\t\t\t\t\t<FilterOption key={source} value={source}>\n\t\t\t\t\t\t\t\t\t\t\t{source}\n\t\t\t\t\t\t\t\t\t\t</FilterOption>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</FilterCategory>\n\t\t\t\t\t\t\t\t<FilterCategory value=\"category\" label=\"Category\">\n\t\t\t\t\t\t\t\t\t{OBSERVATION_CATEGORIES.map((category) => (\n\t\t\t\t\t\t\t\t\t\t<FilterOption key={category} value={category}>\n\t\t\t\t\t\t\t\t\t\t\t{category}\n\t\t\t\t\t\t\t\t\t\t</FilterOption>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</FilterCategory>\n\t\t\t\t\t\t\t\t<FilterCategory value=\"company\" label=\"Company\">\n\t\t\t\t\t\t\t\t\t{COMPANIES.map((company) => (\n\t\t\t\t\t\t\t\t\t\t<FilterOption key={company} value={company}>\n\t\t\t\t\t\t\t\t\t\t\t{company}\n\t\t\t\t\t\t\t\t\t\t</FilterOption>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</FilterCategory>\n\t\t\t\t\t\t\t</FilterContent>\n\t\t\t\t\t\t</Filter>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\trenderListRow={(item, isSelected) => {\n\t\t\t\t\tconst o = byId.get(item.id);\n\t\t\t\t\tif (!o) return null;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Card\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"wwc:cursor-pointer wwc:space-y-2 wwc:p-3 wwc:shadow-none wwc:transition-colors\",\n\t\t\t\t\t\t\t\tisSelected ? \"wwc:border-primary wwc:bg-accent\" : \"wwc:border-border wwc:hover:bg-accent/50\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{/* Heading row: unviewed dot · type · rolled-up count · status — timestamp trails right. */}\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-start wwc:gap-2\">\n\t\t\t\t\t\t\t\t{!o.viewed && (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\taria-label=\"Unviewed\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:mt-1.5 wwc:h-2 wwc:w-2 wwc:shrink-0 wwc:rounded-full wwc:bg-primary\"\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<span className=\"wwc:text-sm wwc:font-semibold wwc:text-foreground\">{o.title}</span>\n\t\t\t\t\t\t\t\t{o.groupCount !== undefined && (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t// Stop the card's own selection so \"+N\" only opens the group dialog.\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tsetGroupedForId(o.id);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:transition-opacity wwc:hover:opacity-80\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Badge variant=\"outline\" className=\"wwc:gap-1 wwc:px-1.5 wwc:py-0 wwc:text-[11px] wwc:font-medium\">\n\t\t\t\t\t\t\t\t\t\t\t<Layers className=\"wwc:h-3 wwc:w-3\" />+{o.groupCount}\n\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{/* One neutral tone for every status — inside the card, color is reserved for severity. */}\n\t\t\t\t\t\t\t\t<Badge variant=\"neutralSoft\" className=\"wwc:px-1.5 wwc:py-0 wwc:text-[11px]\">\n\t\t\t\t\t\t\t\t\t{STATUS_LABEL[o.status]}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t{o.falsePositive && (\n\t\t\t\t\t\t\t\t\t<Badge variant=\"dangerSoft\" className=\"wwc:px-1.5 wwc:py-0 wwc:text-[11px]\">\n\t\t\t\t\t\t\t\t\t\tFalse Positive\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<span className=\"wwc:ml-auto wwc:shrink-0 wwc:text-xs wwc:text-muted-foreground\">{o.updatedAt}</span>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<p className=\"wwc:text-xs wwc:text-muted-foreground\">{o.description}</p>\n\n\t\t\t\t\t\t\t{/* Footer: provenance left, severity badge right — replaces the icon-only severity marker. */}\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-3\">\n\t\t\t\t\t\t\t\t<span className=\"wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\tSource: <span className=\"wwc:text-foreground\">{o.source}</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span className=\"wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\tCompany:{\" \"}\n\t\t\t\t\t\t\t\t\t<span className={o.company ? \"wwc:text-foreground\" : \"wwc:text-muted-foreground/60\"}>\n\t\t\t\t\t\t\t\t\t\t{o.company ?? \"Not Determined\"}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tvariant={severityVariant(o.severity)}\n\t\t\t\t\t\t\t\t\tclassName=\"wwc:ml-auto wwc:px-1.5 wwc:py-0 wwc:text-[11px]\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{o.severity}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{/* Responsibility line: who an open alert is assigned to, or who closed it. Pending has neither. */}\n\t\t\t\t\t\t\t{o.status === \"open\" && (\n\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1.5 wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{o.assignedTo ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<UserCheck className=\"wwc:h-3 wwc:w-3 wwc:shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\tAssigned to <span className=\"wwc:font-medium wwc:text-foreground\">{o.assignedTo}</span>\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\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<UserPlus className=\"wwc:h-3 wwc:w-3 wwc:shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:italic wwc:text-muted-foreground/70\">Not assigned yet</span>\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\t{o.status === \"closed\" && (\n\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1.5 wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t<CheckCircle2 className=\"wwc:h-3 wwc:w-3 wwc:shrink-0\" />\n\t\t\t\t\t\t\t\t\t{o.closedBy ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\tClosed by <span className=\"wwc:font-medium wwc:text-foreground\">{o.closedBy}</span>\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\t\t<span className=\"wwc:italic wwc:text-muted-foreground/70\">Dismissed — no responder</span>\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</Card>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t\tfilters={filters}\n\t\t\t\tactiveFilterId={filterId}\n\t\t\t\tonActiveFilterChange={setFilterId}\n\t\t\t\topenItemIds={openIds}\n\t\t\t\tactiveItemId={activeId}\n\t\t\t\tonActiveItemChange={selectItem}\n\t\t\t\tonItemOpen={(id) => setOpenIds((prev) => (prev.includes(id) ? prev : [...prev, id]))}\n\t\t\t\tonItemClose={(id) => {\n\t\t\t\t\tsetOpenIds((prev) => {\n\t\t\t\t\t\tconst next = prev.filter((x) => x !== id);\n\t\t\t\t\t\t// Closing the open tab activates the first remaining one; empty clears the selection.\n\t\t\t\t\t\tif (activeId === id) setActiveId(next[0]);\n\t\t\t\t\t\treturn next;\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonReorder={setOpenIds}\n\t\t\t\trenderItemBody={(item) => {\n\t\t\t\t\tconst o = byId.get(item.id);\n\t\t\t\t\tif (!o) return null;\n\t\t\t\t\t// Download Summary is Connected Worker-only, matching the observation manager.\n\t\t\t\t\tconst showSummary = o.source === \"ConnectedWorker\";\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div className=\"wwc:space-y-3 wwc:border-b wwc:p-6\">\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t\t\t<h2 className=\"wwc:text-base wwc:font-semibold\">{o.title}</h2>\n\t\t\t\t\t\t\t\t<Badge variant={statusVariant(o.status)}>{STATUS_LABEL[o.status]}</Badge>\n\t\t\t\t\t\t\t\t{o.falsePositive && <Badge variant=\"dangerSoft\">False Positive</Badge>}\n\t\t\t\t\t\t\t\t{/* Header utilities: copy link, share, and (Connected Worker) download summary. */}\n\t\t\t\t\t\t\t\t<div className=\"wwc:ml-auto wwc:flex wwc:items-center wwc:gap-1\">\n\t\t\t\t\t\t\t\t\t<Button variant=\"ghost\" icon aria-label=\"Copy link\" tooltip=\"Copy Link\" className=\"wwc:h-7 wwc:w-7\">\n\t\t\t\t\t\t\t\t\t\t<Copy className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t<Button variant=\"ghost\" icon aria-label=\"Share\" tooltip=\"Share\" className=\"wwc:h-7 wwc:w-7\">\n\t\t\t\t\t\t\t\t\t\t<Share2 className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t{showSummary && (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Download summary\"\n\t\t\t\t\t\t\t\t\t\t\ttooltip=\"Download Summary\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:h-7 wwc:w-7\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<FileDown className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\t\t\t</Button>\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</div>\n\t\t\t\t\t\t\t<p className=\"wwc:text-sm wwc:text-muted-foreground\">{o.description}</p>\n\t\t\t\t\t\t\t{/* Grouped +N and Location open the same dialogs as the list, from inside the detail. */}\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t\t\t{o.groupCount !== undefined && (\n\t\t\t\t\t\t\t\t\t<Button variant=\"outline\" size=\"sm\" onClick={() => setGroupedForId(o.id)}>\n\t\t\t\t\t\t\t\t\t\t<Layers className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\t\t\tGrouped +{o.groupCount}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<Button variant=\"outline\" size=\"sm\" onClick={() => setLocationForId(o.id)}>\n\t\t\t\t\t\t\t\t\t<MapPin className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\t\tLocation Details\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p className=\"wwc:text-sm\">Observation details, photos, location, and corrective actions render here.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t\tcomments={activeId !== undefined ? (commentsByItem[activeId] ?? []) : []}\n\t\t\t\tcommentValue={comment}\n\t\t\t\tonCommentValueChange={setComment}\n\t\t\t\tcommentPlaceholder=\"Add a comment...\"\n\t\t\t\tcommentFlagged={commentFlagged}\n\t\t\t\tonCommentFlaggedChange={setCommentFlagged}\n\t\t\t\tcommentDate={commentDate}\n\t\t\t\tonCommentDateChange={setCommentDate}\n\t\t\t\tonCommentSubmit={(item, submission) => {\n\t\t\t\t\tconst next: CommentItem = {\n\t\t\t\t\t\tid: `c-${item.id}-${commentsByItem[item.id]?.length ?? 0}`,\n\t\t\t\t\t\tauthor: {name: \"You\", initials: \"Y\"},\n\t\t\t\t\t\ttimestamp: \"just now\",\n\t\t\t\t\t\tbody: submission.text,\n\t\t\t\t\t\tbadges: submission.flagged\n\t\t\t\t\t\t\t? [{id: \"flag\", icon: <Flag className=\"wwc:h-3 wwc:w-3\" />, label: \"Flagged\", tone: \"warning\"}]\n\t\t\t\t\t\t\t: [],\n\t\t\t\t\t};\n\t\t\t\t\tsetCommentsByItem((prev) => ({...prev, [item.id]: [next, ...(prev[item.id] ?? [])]}));\n\t\t\t\t\tsetComment(\"\");\n\t\t\t\t\tsetCommentFlagged(false);\n\t\t\t\t\tsetCommentDate(undefined);\n\t\t\t\t}}\n\t\t\t\tactionPanelTitle={active?.title}\n\t\t\t\tactionPanelDescription={active?.description}\n\t\t\t\trenderActionDetails={(item) => {\n\t\t\t\t\tconst o = byId.get(item.id);\n\t\t\t\t\tif (!o) return null;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<DetailRow label=\"Source\" value={o.source} />\n\t\t\t\t\t\t\t<DetailRow label=\"Company\" value={o.company ?? \"Not Determined\"} />\n\t\t\t\t\t\t\t<DetailRow\n\t\t\t\t\t\t\t\tlabel=\"Status\"\n\t\t\t\t\t\t\t\tvalue={<Badge variant={statusVariant(o.status)}>{STATUS_LABEL[o.status]}</Badge>}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<DetailRow label=\"Severity\" value={<Badge variant={severityVariant(o.severity)}>{o.severity}</Badge>} />\n\t\t\t\t\t\t\t{o.status === \"open\" && (\n\t\t\t\t\t\t\t\t<DetailRow\n\t\t\t\t\t\t\t\t\tlabel=\"Assigned to\"\n\t\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t\to.assignedTo ?? (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:italic wwc:font-normal wwc:text-muted-foreground/70\">Not assigned yet</span>\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/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{o.status === \"closed\" && (\n\t\t\t\t\t\t\t\t<DetailRow\n\t\t\t\t\t\t\t\t\tlabel=\"Closed by\"\n\t\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t\to.closedBy ?? (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:italic wwc:font-normal wwc:text-muted-foreground/70\">\n\t\t\t\t\t\t\t\t\t\t\t\tDismissed — no responder\n\t\t\t\t\t\t\t\t\t\t\t</span>\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/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<DetailRow label=\"Updated\" value={o.updatedAt} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t\tprimaryAction={\n\t\t\t\t\tactive\n\t\t\t\t\t\t? (() => {\n\t\t\t\t\t\t\t\tconst key = lifecycleActionsFor(active).primary;\n\t\t\t\t\t\t\t\tconst meta = LIFECYCLE_META[key];\n\t\t\t\t\t\t\t\treturn {id: key, label: meta.label, icon: meta.icon, onSelect: () => startAction(key, active)};\n\t\t\t\t\t\t\t})()\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tsecondaryActions={\n\t\t\t\t\tactive\n\t\t\t\t\t\t? lifecycleActionsFor(active).secondary.map((key) => {\n\t\t\t\t\t\t\t\tconst meta = LIFECYCLE_META[key];\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: key,\n\t\t\t\t\t\t\t\t\tlabel: meta.label,\n\t\t\t\t\t\t\t\t\ticon: meta.icon,\n\t\t\t\t\t\t\t\t\ttone: meta.tone,\n\t\t\t\t\t\t\t\t\tonSelect: () => startAction(key, active),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<ObservationActionDialog\n\t\t\t\tobservation={actionTarget}\n\t\t\t\tactionKey={actionKey}\n\t\t\t\tform={actionForm}\n\t\t\t\tonFormChange={(patch) => setActionForm((prev) => ({...prev, ...patch}))}\n\t\t\t\tonConfirm={confirmAction}\n\t\t\t\tonCancel={closeAction}\n\t\t\t/>\n\t\t\t<GroupedObservationsDialog observation={groupedTarget} onClose={() => setGroupedForId(undefined)} />\n\t\t\t<LocationDialog observation={locationTarget} onClose={() => setLocationForId(undefined)} />\n\t\t</>\n\t);\n}\n\n// ─── Verify Response ─────────────────────────────────────────────────────────\n\n// The platforms an acknowledgment can arrive from, in the fixed column order the panel renders.\ntype ResponderPlatform = \"Web\" | \"Android\" | \"iOS\" | \"Huawei\" | \"Unknown\";\n\nconst RESPONDER_PLATFORMS: ResponderPlatform[] = [\"Web\", \"Android\", \"iOS\", \"Huawei\", \"Unknown\"];\n\n// A responder is a person who receives and acknowledges observation alerts. The list columns cover\n// the first block of fields; the rest back the slide-over detail panel so every row opens a coherent\n// view. Sample data only, like the rest of the template.\ntype Responder = {\n\tid: string;\n\tname: string;\n\tinitials: string;\n\trole: string;\n\t/** Job trade/title shown as its own list column (e.g. \"INDIRECT-HSE SUPERVISOR\"). */\n\ttrade: string;\n\tcreatedAt: string;\n\talertsSent: number;\n\talertsAcked: number;\n\talertsClosed: number;\n\tavgResponse: string;\n\ttimeOnSite: string;\n\tonline: boolean;\n\tenrolledSince: string;\n\t// ── Detail-panel fields ──\n\tacknowledgmentRate: string;\n\tplatformAcks: Record<ResponderPlatform, number>;\n\tchannel: string;\n\tmobileNumber: string;\n\tcompanies: string[];\n\t/** \"+N more\" companies beyond the chips shown inline. */\n\tcompanyOverflow: number;\n\tzones: string;\n\tpackages: string;\n\tobservationSources: string[];\n\ttimeInAssignedZone: string;\n};\n\nconst RESPONDERS: Responder[] = [\n\t{\n\t\tid: \"r-1\",\n\t\tname: \"Miguel\",\n\t\tinitials: \"MI\",\n\t\trole: \"Safety Officer\",\n\t\ttrade: \"INDIRECT-CONSTRUCTION MANAGER\",\n\t\tcreatedAt: \"14 Jul 2026\",\n\t\talertsSent: 78,\n\t\talertsAcked: 0,\n\t\talertsClosed: 0,\n\t\tavgResponse: \"-\",\n\t\ttimeOnSite: \"-\",\n\t\tonline: true,\n\t\tenrolledSince: \"14 Jul 2026\",\n\t\tacknowledgmentRate: \"0%\",\n\t\tplatformAcks: {Web: 0, Android: 0, iOS: 0, Huawei: 0, Unknown: 0},\n\t\tchannel: \"Mobile\",\n\t\tmobileNumber: \"-\",\n\t\tcompanies: [\"TR\", \"TR-ACTAVO\", \"TR-ACTRON\", \"TR-AFIC\"],\n\t\tcompanyOverflow: 12,\n\t\tzones: \"All\",\n\t\tpackages: \"NGL Fractionation Trains & Utilities\",\n\t\tobservationSources: [\"ConnectedWorker\", \"WeatherStation\"],\n\t\ttimeInAssignedZone: \"-\",\n\t},\n\t{\n\t\tid: \"r-2\",\n\t\tname: \"Mohammad Junaid Raza\",\n\t\tinitials: \"MR\",\n\t\trole: \"Field Supervisor\",\n\t\ttrade: \"INDIRECT-HSE SUPERVISOR\",\n\t\tcreatedAt: \"13 May 2026\",\n\t\talertsSent: 4,\n\t\talertsAcked: 0,\n\t\talertsClosed: 0,\n\t\tavgResponse: \"-\",\n\t\ttimeOnSite: \"07:50:00\",\n\t\tonline: true,\n\t\tenrolledSince: \"13 May 2026\",\n\t\tacknowledgmentRate: \"0%\",\n\t\tplatformAcks: {Web: 0, Android: 0, iOS: 0, Huawei: 0, Unknown: 0},\n\t\tchannel: \"Mobile\",\n\t\tmobileNumber: \"-\",\n\t\tcompanies: [\"TR\", \"TR-ACTAVO\"],\n\t\tcompanyOverflow: 6,\n\t\tzones: \"TR-PKG2/886-CCB 001, TR-PKG2/886-CCB 002\",\n\t\tpackages: \"Storage & Export/Facilities\",\n\t\tobservationSources: [\"ConnectedWorker\"],\n\t\ttimeInAssignedZone: \"07:50:00\",\n\t},\n\t{\n\t\tid: \"r-3\",\n\t\tname: \"Abhilash Sadanandan\",\n\t\tinitials: \"AS\",\n\t\trole: \"HSE Engineer\",\n\t\ttrade: \"INDIRECT-HSE OFFICER\",\n\t\tcreatedAt: \"13 May 2026\",\n\t\talertsSent: 0,\n\t\talertsAcked: 0,\n\t\talertsClosed: 0,\n\t\tavgResponse: \"-\",\n\t\ttimeOnSite: \"-\",\n\t\tonline: false,\n\t\tenrolledSince: \"13 May 2026\",\n\t\tacknowledgmentRate: \"0%\",\n\t\tplatformAcks: {Web: 0, Android: 0, iOS: 0, Huawei: 0, Unknown: 0},\n\t\tchannel: \"Mobile\",\n\t\tmobileNumber: \"-\",\n\t\tcompanies: [\"TR\"],\n\t\tcompanyOverflow: 0,\n\t\tzones: \"TR-PKG2/889-Steam System(21)\",\n\t\tpackages: \"NGL Fractionation Trains & Utilities\",\n\t\tobservationSources: [\"ConnectedWorker\"],\n\t\ttimeInAssignedZone: \"-\",\n\t},\n\t{\n\t\tid: \"r-4\",\n\t\tname: \"Muhammad Aqeel\",\n\t\tinitials: \"MA\",\n\t\trole: \"Safety Officer\",\n\t\ttrade: \"INDIRECT-HSE SUPERVISOR\",\n\t\tcreatedAt: \"13 May 2026\",\n\t\talertsSent: 3,\n\t\talertsAcked: 0,\n\t\talertsClosed: 0,\n\t\tavgResponse: \"-\",\n\t\ttimeOnSite: \"07:20:00\",\n\t\tonline: true,\n\t\tenrolledSince: \"13 May 2026\",\n\t\tacknowledgmentRate: \"0%\",\n\t\tplatformAcks: {Web: 0, Android: 0, iOS: 0, Huawei: 0, Unknown: 0},\n\t\tchannel: \"Mobile\",\n\t\tmobileNumber: \"-\",\n\t\tcompanies: [\"TR\", \"TR-ACTAVO\", \"TR-ACTRON\"],\n\t\tcompanyOverflow: 9,\n\t\tzones: \"TR-PKG2/887-OME 005, TR-PKG2/887-OME 006\",\n\t\tpackages: \"NGL Fractionation Trains & Utilities Storage & Export/Facilities\",\n\t\tobservationSources: [\"ConnectedWorker\", \"WeatherStation\"],\n\t\ttimeInAssignedZone: \"07:20:00\",\n\t},\n\t{\n\t\t// The exemplar the reference screenshots show — its detail must match exactly.\n\t\tid: \"r-5\",\n\t\tname: \"Melandro Dalisay Mapili\",\n\t\tinitials: \"MM\",\n\t\trole: \"Indirect-Environmental Coordinator\",\n\t\ttrade: \"Indirect-Environmental Coordinator\",\n\t\tcreatedAt: \"12 May 2026\",\n\t\talertsSent: 19,\n\t\talertsAcked: 0,\n\t\talertsClosed: 0,\n\t\tavgResponse: \"-\",\n\t\ttimeOnSite: \"07:03:00\",\n\t\tonline: true,\n\t\tenrolledSince: \"12 May 2026\",\n\t\tacknowledgmentRate: \"0%\",\n\t\tplatformAcks: {Web: 0, Android: 0, iOS: 0, Huawei: 0, Unknown: 0},\n\t\tchannel: \"Mobile\",\n\t\tmobileNumber: \"-\",\n\t\tcompanies: [\"TR\", \"TR-ACTAVO\", \"TR-ACTRON\", \"TR-AFIC\", \"TR-AIC\"],\n\t\tcompanyOverflow: 28,\n\t\tzones: \"All\",\n\t\tpackages: \"NGL Fractionation Trains & Utilities Storage & Export/Facilities\",\n\t\tobservationSources: [\"ConnectedWorker\", \"WeatherStation\"],\n\t\ttimeInAssignedZone: \"07:03:00\",\n\t},\n\t{\n\t\tid: \"r-6\",\n\t\tname: \"Roberto Cruz Tuazon\",\n\t\tinitials: \"RT\",\n\t\trole: \"Field Supervisor\",\n\t\ttrade: \"INDIRECT-HSE SUPERVISOR\",\n\t\tcreatedAt: \"12 May 2026\",\n\t\talertsSent: 0,\n\t\talertsAcked: 0,\n\t\talertsClosed: 0,\n\t\tavgResponse: \"-\",\n\t\ttimeOnSite: \"-\",\n\t\tonline: false,\n\t\tenrolledSince: \"12 May 2026\",\n\t\tacknowledgmentRate: \"0%\",\n\t\tplatformAcks: {Web: 0, Android: 0, iOS: 0, Huawei: 0, Unknown: 0},\n\t\tchannel: \"Mobile\",\n\t\tmobileNumber: \"-\",\n\t\tcompanies: [\"TR\", \"TR-ACTAVO\"],\n\t\tcompanyOverflow: 4,\n\t\tzones: \"TR-PKG2/895-Spent Caustic(33)\",\n\t\tpackages: \"Storage & Export/Facilities\",\n\t\tobservationSources: [\"ConnectedWorker\"],\n\t\ttimeInAssignedZone: \"-\",\n\t},\n\t{\n\t\tid: \"r-7\",\n\t\tname: \"Ahsan Nadeem\",\n\t\tinitials: \"AN\",\n\t\trole: \"HSE Engineer\",\n\t\ttrade: \"INDIRECT-HSE SUPERVISOR\",\n\t\tcreatedAt: \"12 May 2026\",\n\t\talertsSent: 0,\n\t\talertsAcked: 0,\n\t\talertsClosed: 0,\n\t\tavgResponse: \"-\",\n\t\ttimeOnSite: \"-\",\n\t\tonline: false,\n\t\tenrolledSince: \"12 May 2026\",\n\t\tacknowledgmentRate: \"0%\",\n\t\tplatformAcks: {Web: 0, Android: 0, iOS: 0, Huawei: 0, Unknown: 0},\n\t\tchannel: \"Mobile\",\n\t\tmobileNumber: \"-\",\n\t\tcompanies: [\"TR\"],\n\t\tcompanyOverflow: 0,\n\t\tzones: \"TR-PKG2/895-Spent Caustic(33)\",\n\t\tpackages: \"NGL Fractionation Trains & Utilities\",\n\t\tobservationSources: [\"ConnectedWorker\"],\n\t\ttimeInAssignedZone: \"-\",\n\t},\n];\n\n// The KPI band above the responder table. Five tiles, forced onto one row via a grid-cols-5 override\n// on the KPISummary (it maxes at 4 columns natively).\nconst RESPONDER_KPIS: KpiMetric[] = [\n\t{title: \"No. of Responders\", value: 74, icon: ShieldCheck},\n\t{title: \"Active Responders\", value: 8, icon: ShieldCheck},\n\t{title: \"Workers:Responders\", value: \"43113:74\", icon: Clock},\n\t{title: \"Average Response Time\", value: \"38.43\", unit: \"m\", icon: Clock},\n\t{title: \"Unsupervised Zones\", value: 0, icon: Box},\n];\n\n// The Responder / Controller switcher at the top of the view.\ntype VerifyResponderTab = \"responder\" | \"controller\";\n\n// The detail-panel range toggle — display-only (Trend/Funnel tabs are placeholders).\nconst RESPONDER_RANGES: ViewTabItem<string>[] = [\n\t{id: \"today\", label: \"Today\"},\n\t{id: \"7d\", label: \"7 days\"},\n\t{id: \"30d\", label: \"30 days\"},\n\t{id: \"all\", label: \"All\"},\n];\n\n/** A responder's presence dot — green when online, muted otherwise — overlaid on the avatar. */\nfunction PresenceDot({online}: {online: boolean}) {\n\treturn (\n\t\t<span\n\t\t\taria-hidden\n\t\t\tclassName={cn(\n\t\t\t\t\"wwc:absolute wwc:-bottom-0.5 wwc:-right-0.5 wwc:h-2.5 wwc:w-2.5 wwc:rounded-full wwc:border-2 wwc:border-card\",\n\t\t\t\tonline ? \"wwc:bg-green-500\" : \"wwc:bg-muted-foreground\",\n\t\t\t)}\n\t\t/>\n\t);\n}\n\n/** A plain bordered stat tile — a big value over a small muted label, no icon. The flat look the\n * responder detail panel uses for its performance and platform breakdowns. */\nfunction StatTile({value, label}: {value: React.ReactNode; label: string}) {\n\treturn (\n\t\t<div className=\"wwc:rounded-lg wwc:border wwc:p-3\">\n\t\t\t<div className=\"wwc:text-2xl wwc:font-bold wwc:text-foreground\">{value}</div>\n\t\t\t<p className=\"wwc:mt-1 wwc:text-xs wwc:text-muted-foreground\">{label}</p>\n\t\t</div>\n\t);\n}\n\n/** The performance range toggle. Uses Tabs so the active segment is a true white pill (bg-card +\n * ring + surface shadow) — the look the profile drawer expects, unlike ViewTabBar's segmented variant. */\nfunction ResponderRangeToggle({range, onChange}: {range: string; onChange: (value: string) => void}) {\n\treturn (\n\t\t<Tabs value={range} onValueChange={onChange}>\n\t\t\t<TabsList>\n\t\t\t\t{RESPONDER_RANGES.map((option) => (\n\t\t\t\t\t<TabsTrigger key={option.id} value={option.id}>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t))}\n\t\t\t</TabsList>\n\t\t</Tabs>\n\t);\n}\n\n/** Platform acknowledgments as ONE bordered container with vertical dividers between cells (no gaps). */\nfunction PlatformBreakdown({acks}: {acks: Record<ResponderPlatform, number>}) {\n\treturn (\n\t\t<div className=\"wwc:grid wwc:grid-cols-5 wwc:divide-x wwc:divide-border wwc:overflow-hidden wwc:rounded-lg wwc:border\">\n\t\t\t{RESPONDER_PLATFORMS.map((platform) => (\n\t\t\t\t<div key={platform} className=\"wwc:p-3\">\n\t\t\t\t\t<div className=\"wwc:text-2xl wwc:font-bold wwc:text-foreground\">{acks[platform]}</div>\n\t\t\t\t\t<p className=\"wwc:mt-1 wwc:text-xs wwc:text-muted-foreground\">{platform}</p>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n\n/** A flat label: value row, matching the profile drawer's field-list style. */\nfunction ProfileFieldRow({label, value}: {label: string; value: React.ReactNode}) {\n\treturn (\n\t\t<div className=\"wwc:flex wwc:justify-between wwc:gap-3 wwc:text-sm\">\n\t\t\t<span className=\"wwc:shrink-0 wwc:text-muted-foreground\">{label}:</span>\n\t\t\t<span className=\"wwc:text-right wwc:font-medium\">{value}</span>\n\t\t</div>\n\t);\n}\n\n// A factory (not a module const) because the Name cell and the row action both need the view's\n// open-panel callback, and DataTable exposes no row-click API.\nfunction responderColumns(onOpen: (responder: Responder) => void): ColumnDef<Responder>[] {\n\treturn [\n\t\t{\n\t\t\taccessorKey: \"name\",\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Name\" />,\n\t\t\tcell: ({row}) => {\n\t\t\t\tconst r = row.original;\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={() => onOpen(r)}\n\t\t\t\t\t\tclassName=\"wwc:flex wwc:items-center wwc:gap-2 wwc:text-left wwc:transition-colors wwc:hover:text-primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"wwc:relative wwc:shrink-0\">\n\t\t\t\t\t\t\t<Avatar className=\"wwc:h-8 wwc:w-8\">\n\t\t\t\t\t\t\t\t<AvatarFallback className=\"wwc:text-xs\">{r.initials}</AvatarFallback>\n\t\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t\t<PresenceDot online={r.online} />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className=\"wwc:font-medium\">{r.name}</span>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{accessorKey: \"createdAt\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Created At\" />},\n\t\t{accessorKey: \"alertsSent\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Alerts Sent\" />},\n\t\t{\n\t\t\taccessorKey: \"alertsAcked\",\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Alerts Acknowledged\" />,\n\t\t},\n\t\t{\n\t\t\taccessorKey: \"alertsClosed\",\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Alerts Closed\" />,\n\t\t},\n\t\t{\n\t\t\taccessorKey: \"avgResponse\",\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Average Response Time\" />,\n\t\t},\n\t\t{accessorKey: \"timeOnSite\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Time on Site\" />},\n\t\t{\n\t\t\taccessorKey: \"timeInAssignedZone\",\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Time in Assigned Zone\" />,\n\t\t},\n\t\t{\n\t\t\taccessorKey: \"zones\",\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Zones\" />,\n\t\t\tcell: ({row}) => (\n\t\t\t\t<span className=\"wwc:block wwc:max-w-[200px] wwc:truncate\" title={row.original.zones}>\n\t\t\t\t\t{row.original.zones}\n\t\t\t\t</span>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\taccessorKey: \"packages\",\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Package\" />,\n\t\t\tcell: ({row}) => (\n\t\t\t\t<span className=\"wwc:block wwc:max-w-[220px] wwc:truncate\" title={row.original.packages}>\n\t\t\t\t\t{row.original.packages}\n\t\t\t\t</span>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\taccessorKey: \"companies\",\n\t\t\tenableSorting: false,\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Company\" />,\n\t\t\t// First two companies as chips, then a \"+N\" badge for the overflow — mirrors the detail panel.\n\t\t\tcell: ({row}) => {\n\t\t\t\tconst r = row.original;\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1\">\n\t\t\t\t\t\t{r.companies.slice(0, 2).map((company) => (\n\t\t\t\t\t\t\t<Badge key={company} variant=\"neutralSoft\" className=\"wwc:px-1.5 wwc:py-0 wwc:text-[11px]\">\n\t\t\t\t\t\t\t\t{company}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{r.companyOverflow > 0 && (\n\t\t\t\t\t\t\t<Badge variant=\"outline\" className=\"wwc:px-1.5 wwc:py-0 wwc:text-[11px]\">\n\t\t\t\t\t\t\t\t+{r.companyOverflow}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\taccessorKey: \"trade\",\n\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Trade\" />,\n\t\t\tcell: ({row}) => (\n\t\t\t\t<span className=\"wwc:block wwc:max-w-[200px] wwc:truncate\" title={row.original.trade}>\n\t\t\t\t\t{row.original.trade}\n\t\t\t\t</span>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tid: \"actions\",\n\t\t\tenableSorting: false,\n\t\t\tenableHiding: false,\n\t\t\tmeta: {cellClassName: \"wwc:w-px wwc:whitespace-nowrap wwc:text-right\"},\n\t\t\tcell: ({row}) => (\n\t\t\t\t<DataTableRowActions\n\t\t\t\t\tactions={[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"View\",\n\t\t\t\t\t\t\ticon: <SquarePen className=\"wwc:h-4 wwc:w-4\" />,\n\t\t\t\t\t\t\tonSelect: () => onOpen(row.original),\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// ─── Controllers (Controller sub-tab) ────────────────────────────────────────\n\n// A controller oversees the response operation. The Controller tab is an enrolment roster — scope\n// (zones / package / company) and trade — rather than the responder tab's live-metric table.\ntype Controller = {\n\tid: string;\n\tname: string;\n\tinitials: string;\n\tonline: boolean;\n\tcreatedAt: string;\n\ttype: string;\n\tzones: string;\n\tpackages: string;\n\tcompanies: string[];\n\t/** \"+N\" companies beyond the chips shown inline. */\n\tcompanyOverflow: number;\n\ttrade: string;\n};\n\nconst CONTROLLERS: Controller[] = [\n\t{\n\t\tid: \"ctrl-1\",\n\t\tname: \"Rehan Qadar\",\n\t\tinitials: \"RQ\",\n\t\tonline: true,\n\t\tcreatedAt: \"05 May 2026\",\n\t\ttype: \"Controller\",\n\t\tzones: \"All\",\n\t\tpackages: \"All\",\n\t\tcompanies: [\"All\"],\n\t\tcompanyOverflow: 0,\n\t\ttrade: \"Default resource pool trade\",\n\t},\n\t{\n\t\tid: \"ctrl-2\",\n\t\tname: \"khalid\",\n\t\tinitials: \"KH\",\n\t\tonline: true,\n\t\tcreatedAt: \"16 Jul 2025\",\n\t\ttype: \"Controller\",\n\t\tzones: \"All\",\n\t\tpackages: \"NGL Fractionation Trains & Utilities Storage & Export/Facilities\",\n\t\tcompanies: [\"TR\", \"TR-AFIC\"],\n\t\tcompanyOverflow: 13,\n\t\ttrade: \"-\",\n\t},\n\t{\n\t\tid: \"ctrl-3\",\n\t\tname: \"Hamad\",\n\t\tinitials: \"HA\",\n\t\tonline: true,\n\t\tcreatedAt: \"16 Jul 2025\",\n\t\ttype: \"Controller\",\n\t\tzones: \"All\",\n\t\tpackages: \"NGL Fractionation Trains & Utilities Storage & Export/Facilities\",\n\t\tcompanies: [\"TR\", \"TR-AFIC\"],\n\t\tcompanyOverflow: 13,\n\t\ttrade: \"INDIRECT-HSE ADMIN\",\n\t},\n\t{\n\t\tid: \"ctrl-4\",\n\t\tname: \"Haya abdulaziz\",\n\t\tinitials: \"HA\",\n\t\tonline: false,\n\t\tcreatedAt: \"16 Jul 2025\",\n\t\ttype: \"Controller\",\n\t\tzones: \"All\",\n\t\tpackages: \"All\",\n\t\tcompanies: [\"All\"],\n\t\tcompanyOverflow: 0,\n\t\ttrade: \"Default resource pool trade\",\n\t},\n\t{\n\t\tid: \"ctrl-5\",\n\t\tname: \"Ameerali\",\n\t\tinitials: \"AM\",\n\t\tonline: true,\n\t\tcreatedAt: \"16 Jul 2025\",\n\t\ttype: \"Controller\",\n\t\tzones: \"All\",\n\t\tpackages: \"Industrial Support Facilities\",\n\t\tcompanies: [\"SH-FAC\", \"Sinohydr-Al Quadri\"],\n\t\tcompanyOverflow: 1,\n\t\ttrade: \"SCC OPERATOR\",\n\t},\n\t{\n\t\tid: \"ctrl-6\",\n\t\tname: \"Abdulaziz\",\n\t\tinitials: \"AB\",\n\t\tonline: false,\n\t\tcreatedAt: \"02 Jul 2025\",\n\t\ttype: \"Controller\",\n\t\tzones: \"All\",\n\t\tpackages: \"All\",\n\t\tcompanies: [\"All\"],\n\t\tcompanyOverflow: 0,\n\t\ttrade: \"-\",\n\t},\n];\n\n// Scope-all controllers show a plain \"All\"; scoped ones show company chips + a \"+N\" overflow badge.\nfunction CompanyScopeCell({companies, companyOverflow}: {companies: string[]; companyOverflow: number}) {\n\tif (companyOverflow === 0 && companies.length === 1 && companies[0] === \"All\") {\n\t\treturn <span className=\"wwc:text-muted-foreground\">All</span>;\n\t}\n\treturn (\n\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1\">\n\t\t\t{companies.slice(0, 2).map((company) => (\n\t\t\t\t<Badge key={company} variant=\"neutralSoft\" className=\"wwc:px-1.5 wwc:py-0 wwc:text-[11px]\">\n\t\t\t\t\t{company}\n\t\t\t\t</Badge>\n\t\t\t))}\n\t\t\t{companyOverflow > 0 && (\n\t\t\t\t<Badge variant=\"outline\" className=\"wwc:px-1.5 wwc:py-0 wwc:text-[11px]\">\n\t\t\t\t\t+{companyOverflow}\n\t\t\t\t</Badge>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nconst CONTROLLER_COLUMNS: ColumnDef<Controller>[] = [\n\t{\n\t\taccessorKey: \"name\",\n\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Name\" />,\n\t\tcell: ({row}) => {\n\t\t\tconst c = row.original;\n\t\t\treturn (\n\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2\">\n\t\t\t\t\t<span className=\"wwc:relative wwc:shrink-0\">\n\t\t\t\t\t\t<Avatar className=\"wwc:h-8 wwc:w-8\">\n\t\t\t\t\t\t\t<AvatarFallback className=\"wwc:text-xs\">{c.initials}</AvatarFallback>\n\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t<PresenceDot online={c.online} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"wwc:font-medium\">{c.name}</span>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t{accessorKey: \"createdAt\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Created At\" />},\n\t{accessorKey: \"type\", header: ({column}) => <DataTableColumnHeader column={column} title=\"Type\" />},\n\t{\n\t\taccessorKey: \"zones\",\n\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Zones\" />,\n\t\tcell: ({row}) => (\n\t\t\t<span className=\"wwc:block wwc:max-w-[200px] wwc:truncate\" title={row.original.zones}>\n\t\t\t\t{row.original.zones}\n\t\t\t</span>\n\t\t),\n\t},\n\t{\n\t\taccessorKey: \"packages\",\n\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Package\" />,\n\t\tcell: ({row}) => (\n\t\t\t<span className=\"wwc:block wwc:max-w-[300px] wwc:truncate\" title={row.original.packages}>\n\t\t\t\t{row.original.packages}\n\t\t\t</span>\n\t\t),\n\t},\n\t{\n\t\taccessorKey: \"companies\",\n\t\tenableSorting: false,\n\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Company\" />,\n\t\tcell: ({row}) => (\n\t\t\t<CompanyScopeCell companies={row.original.companies} companyOverflow={row.original.companyOverflow} />\n\t\t),\n\t},\n\t{\n\t\taccessorKey: \"trade\",\n\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Trade\" />,\n\t\tcell: ({row}) => (\n\t\t\t<span className=\"wwc:block wwc:max-w-[220px] wwc:truncate\" title={row.original.trade}>\n\t\t\t\t{row.original.trade}\n\t\t\t</span>\n\t\t),\n\t},\n\t{\n\t\tid: \"actions\",\n\t\tenableSorting: false,\n\t\tenableHiding: false,\n\t\tmeta: {cellClassName: \"wwc:w-px wwc:whitespace-nowrap wwc:text-right\"},\n\t\tcell: () => (\n\t\t\t<DataTableRowActions\n\t\t\t\tactions={[{label: \"Edit\", icon: <SquarePen className=\"wwc:h-4 wwc:w-4\" />, onSelect: () => undefined}]}\n\t\t\t/>\n\t\t),\n\t},\n];\n\n/**\n * The responder detail as a PushPanel body — a ProfileViewPattern drawer: the name lives in the panel\n * header (avatar · title · actions · close), then an icon-tabbed body of field-list sections. Pushes the\n * Verify Response content aside rather than overlaying it.\n */\nfunction ResponderProfilePanel({responder}: {responder: Responder}) {\n\tconst [detailTab, setDetailTab] = useState(\"overview\");\n\tconst [range, setRange] = useState(\"today\");\n\n\treturn (\n\t\t<>\n\t\t\t<PushPanelHeader>\n\t\t\t\t<PushPanelHeaderTitle>\n\t\t\t\t\t<span className=\"wwc:relative wwc:shrink-0\">\n\t\t\t\t\t\t<Avatar className=\"wwc:h-7 wwc:w-7\">\n\t\t\t\t\t\t\t<AvatarFallback className=\"wwc:text-xs\">{responder.initials}</AvatarFallback>\n\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t<PresenceDot online={responder.online} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<PushPanelTitle>{responder.name}</PushPanelTitle>\n\t\t\t\t</PushPanelHeaderTitle>\n\t\t\t\t<PushPanelHeaderActions>\n\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t\t\t<Button variant=\"ghost\" icon className=\"wwc:h-6 wwc:w-6\" aria-label=\"More\">\n\t\t\t\t\t\t\t\t<MoreHorizontal className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t\t<DropdownMenuContent align=\"end\" side=\"bottom\">\n\t\t\t\t\t\t\t<DropdownMenuItem>\n\t\t\t\t\t\t\t\t<SquarePen className=\"wwc:mr-2 wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\tEdit\n\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t<DropdownMenuItem>\n\t\t\t\t\t\t\t\t<Download className=\"wwc:mr-2 wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\tExport\n\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t\t\t<DropdownMenuItem className=\"wwc:text-destructive wwc:focus:text-destructive\">\n\t\t\t\t\t\t\t\t<Trash2 className=\"wwc:mr-2 wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\tDelete\n\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t<PushPanelClose asChild>\n\t\t\t\t\t\t<Button variant=\"ghost\" icon className=\"wwc:h-6 wwc:w-6\" aria-label=\"Close\">\n\t\t\t\t\t\t\t<X className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</PushPanelClose>\n\t\t\t\t</PushPanelHeaderActions>\n\t\t\t</PushPanelHeader>\n\n\t\t\t<Tabs\n\t\t\t\tvalue={detailTab}\n\t\t\t\tonValueChange={setDetailTab}\n\t\t\t\tclassName=\"wwc:flex wwc:min-h-0 wwc:flex-1 wwc:flex-col wwc:overflow-hidden\"\n\t\t\t>\n\t\t\t\t<div className=\"wwc:shrink-0 wwc:px-4 wwc:py-2\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<HoverTooltip content=\"Overview\">\n\t\t\t\t\t\t\t<TabsTrigger value=\"overview\" aria-label=\"Overview\">\n\t\t\t\t\t\t\t\t<Gauge className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t</HoverTooltip>\n\t\t\t\t\t\t<HoverTooltip content=\"Trend\">\n\t\t\t\t\t\t\t<TabsTrigger value=\"trend\" aria-label=\"Trend\">\n\t\t\t\t\t\t\t\t<TrendingUp className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t</HoverTooltip>\n\t\t\t\t\t\t<HoverTooltip content=\"Funnel\">\n\t\t\t\t\t\t\t<TabsTrigger value=\"funnel\" aria-label=\"Funnel\">\n\t\t\t\t\t\t\t\t<FunnelIcon className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t</HoverTooltip>\n\t\t\t\t\t</TabsList>\n\t\t\t\t</div>\n\n\t\t\t\t<TabsContent value=\"overview\" className=\"wwc:m-0 wwc:min-h-0 wwc:flex-1 wwc:overflow-auto wwc:p-4\">\n\t\t\t\t\t<div className=\"wwc:space-y-4\">\n\t\t\t\t\t\t{/* Identity — role, presence and enrolment sit in the body; the header holds only the name. */}\n\t\t\t\t\t\t<div className=\"wwc:space-y-1\">\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:items-center wwc:gap-1.5 wwc:text-sm wwc:font-medium\">\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\"wwc:h-2 wwc:w-2 wwc:rounded-full\",\n\t\t\t\t\t\t\t\t\t\t\tresponder.online ? \"wwc:bg-green-500\" : \"wwc:bg-muted-foreground\",\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\t{responder.online ? \"Online\" : \"Offline\"}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<Badge variant=\"infoSoft\">Responder</Badge>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p className=\"wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t{responder.role} · Enrolled since {responder.enrolledSince}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<Separator />\n\n\t\t\t\t\t\t<section className=\"wwc:space-y-3\">\n\t\t\t\t\t\t\t<h4 className=\"wwc:text-sm wwc:font-medium\">Response performance</h4>\n\t\t\t\t\t\t\t<ResponderRangeToggle range={range} onChange={setRange} />\n\t\t\t\t\t\t\t<div className=\"wwc:grid wwc:grid-cols-2 wwc:gap-3\">\n\t\t\t\t\t\t\t\t<StatTile value={responder.alertsSent} label=\"Alerts sent\" />\n\t\t\t\t\t\t\t\t<StatTile value={responder.alertsAcked} label=\"Alerts acknowledged\" />\n\t\t\t\t\t\t\t\t<StatTile value={responder.acknowledgmentRate} label=\"Acknowledgment rate\" />\n\t\t\t\t\t\t\t\t<StatTile value={responder.avgResponse} label=\"Avg response time\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</section>\n\n\t\t\t\t\t\t<Separator />\n\n\t\t\t\t\t\t<section className=\"wwc:space-y-3\">\n\t\t\t\t\t\t\t<h4 className=\"wwc:text-sm wwc:font-medium\">Acknowledgments by platform</h4>\n\t\t\t\t\t\t\t<PlatformBreakdown acks={responder.platformAcks} />\n\t\t\t\t\t\t</section>\n\n\t\t\t\t\t\t<Separator />\n\n\t\t\t\t\t\t<section className=\"wwc:space-y-2.5\">\n\t\t\t\t\t\t\t<h4 className=\"wwc:text-sm wwc:font-medium\">Channels & delivery</h4>\n\t\t\t\t\t\t\t<ProfileFieldRow label=\"Channels\" value={responder.channel} />\n\t\t\t\t\t\t\t<ProfileFieldRow label=\"Mobile number\" value={responder.mobileNumber} />\n\t\t\t\t\t\t</section>\n\n\t\t\t\t\t\t<Separator />\n\n\t\t\t\t\t\t<section className=\"wwc:space-y-3\">\n\t\t\t\t\t\t\t<h4 className=\"wwc:text-sm wwc:font-medium\">Enrollment filters</h4>\n\t\t\t\t\t\t\t<div className=\"wwc:space-y-3\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<p className=\"wwc:mb-1.5 wwc:text-xs wwc:text-muted-foreground\">Companies</p>\n\t\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t{responder.companies.map((company) => (\n\t\t\t\t\t\t\t\t\t\t\t<Badge key={company} variant=\"neutralSoft\">\n\t\t\t\t\t\t\t\t\t\t\t\t{company}\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t{responder.companyOverflow > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<Button variant=\"link\" size=\"sm\" className=\"wwc:h-auto wwc:p-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t+{responder.companyOverflow} more\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</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<p className=\"wwc:mb-1.5 wwc:text-xs wwc:text-muted-foreground\">Zones</p>\n\t\t\t\t\t\t\t\t\t<Badge variant=\"neutralSoft\">{responder.zones}</Badge>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<p className=\"wwc:mb-1.5 wwc:text-xs wwc:text-muted-foreground\">Packages</p>\n\t\t\t\t\t\t\t\t\t<div className=\"wwc:rounded-md wwc:bg-muted wwc:p-2 wwc:text-sm\">{responder.packages}</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<p className=\"wwc:mb-1.5 wwc:text-xs wwc:text-muted-foreground\">Observation sources</p>\n\t\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t{responder.observationSources.map((source) => (\n\t\t\t\t\t\t\t\t\t\t\t<Badge key={source} variant=\"neutralSoft\">\n\t\t\t\t\t\t\t\t\t\t\t\t{source}\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\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</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</section>\n\n\t\t\t\t\t\t<Separator />\n\n\t\t\t\t\t\t<section className=\"wwc:space-y-2.5\">\n\t\t\t\t\t\t\t<h4 className=\"wwc:text-sm wwc:font-medium\">Presence</h4>\n\t\t\t\t\t\t\t<ProfileFieldRow label=\"Time on site\" value={responder.timeOnSite} />\n\t\t\t\t\t\t\t<ProfileFieldRow label=\"Time in assigned zone\" value={responder.timeInAssignedZone} />\n\t\t\t\t\t\t</section>\n\t\t\t\t\t</div>\n\t\t\t\t</TabsContent>\n\n\t\t\t\t<TabsContent value=\"trend\" className=\"wwc:m-0 wwc:min-h-0 wwc:flex-1 wwc:overflow-auto wwc:p-4\">\n\t\t\t\t\t<div className=\"wwc:flex wwc:min-h-[240px] wwc:items-center wwc:justify-center\">\n\t\t\t\t\t\t<Empty\n\t\t\t\t\t\t\ticon={<BarChart3 className=\"wwc:h-6 wwc:w-6\" />}\n\t\t\t\t\t\t\ttitle=\"Trend\"\n\t\t\t\t\t\t\tdescription=\"This view will appear here.\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</TabsContent>\n\n\t\t\t\t<TabsContent value=\"funnel\" className=\"wwc:m-0 wwc:min-h-0 wwc:flex-1 wwc:overflow-auto wwc:p-4\">\n\t\t\t\t\t<div className=\"wwc:flex wwc:min-h-[240px] wwc:items-center wwc:justify-center\">\n\t\t\t\t\t\t<Empty\n\t\t\t\t\t\t\ticon={<BarChart3 className=\"wwc:h-6 wwc:w-6\" />}\n\t\t\t\t\t\t\ttitle=\"Funnel\"\n\t\t\t\t\t\t\tdescription=\"This view will appear here.\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t</>\n\t);\n}\n\n// ─── New Responder / Controller dialog ───────────────────────────────────────\n\ntype TeamKind = \"responder\" | \"controller\";\n\n// The User dropdown shows a different roster per kind — responders vs controllers.\nconst RESPONDER_USER_OPTIONS: AddObservationOption[] = [\n\t{value: \"abomousa\", label: \"Abdulrahman mohamed abomousa\"},\n\t{value: \"s-qahtani\", label: \"Saud Al-Qahtani\"},\n\t{value: \"b-khan\", label: \"Bilal Ahmed Khan\"},\n\t{value: \"r-kumar\", label: \"Ramesh Kumar\"},\n\t{value: \"j-martinez\", label: \"Joseph Martinez\"},\n];\n\nconst CONTROLLER_USER_OPTIONS: AddObservationOption[] = [\n\t{value: \"f-otaibi\", label: \"Fahad Al-Otaibi\"},\n\t{value: \"m-rossi\", label: \"Marco Rossi\"},\n\t{value: \"c-wei\", label: \"Chen Wei\"},\n\t{value: \"i-sesay\", label: \"Ibrahim Sesay\"},\n\t{value: \"d-obrien\", label: \"Daniel O'Brien\"},\n];\n\nconst SOURCE_FILTER_OPTIONS: MultiSelectOption[] = SOURCES.map((source) => ({value: source, label: source}));\nconst COMPANY_FILTER_OPTIONS: MultiSelectOption[] = COMPANIES.map((company) => ({value: company, label: company}));\nconst ZONE_FILTER_OPTIONS: MultiSelectOption[] = ZONE_OPTIONS.map((zone) => ({value: zone.value, label: zone.label}));\n\ntype ScopeMode = \"all\" | \"filter\";\ntype ScopeState = {mode: ScopeMode; selected: string[]};\ntype CommChannel = {enabled: boolean; phone: string; sources: ScopeState; company: ScopeState; zones: ScopeState};\n\nconst emptyScope = (): ScopeState => ({mode: \"all\", selected: []});\nconst emptyChannel = (): CommChannel => ({\n\tenabled: false,\n\tphone: \"\",\n\tsources: emptyScope(),\n\tcompany: emptyScope(),\n\tzones: emptyScope(),\n});\n\n// One \"Sources / Company / Zones\" scope row: an All/Filter radio plus a multi-select (with removable\n// chips) revealed when Filter is chosen. The whole row is disabled until its channel is switched on.\nfunction ScopeRow({\n\tidPrefix,\n\tlabel,\n\toptions,\n\tstate,\n\tonChange,\n\tdisabled,\n}: {\n\tidPrefix: string;\n\tlabel: string;\n\toptions: MultiSelectOption[];\n\tstate: ScopeState;\n\tonChange: (next: ScopeState) => void;\n\tdisabled: boolean;\n}) {\n\treturn (\n\t\t<div className={cn(\"wwc:border-b wwc:py-3 wwc:last:border-b-0\", disabled && \"wwc:opacity-50\")}>\n\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-6\">\n\t\t\t\t<span className=\"wwc:w-20 wwc:shrink-0 wwc:text-sm wwc:text-muted-foreground\">{label}:</span>\n\t\t\t\t<RadioGroup\n\t\t\t\t\tclassName=\"wwc:flex wwc:flex-row wwc:gap-5\"\n\t\t\t\t\tvalue={state.mode}\n\t\t\t\t\tonValueChange={(mode) => onChange({...state, mode: mode as ScopeMode})}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1.5\">\n\t\t\t\t\t\t<RadioGroupItem value=\"all\" id={`${idPrefix}-all`} />\n\t\t\t\t\t\t<label htmlFor={`${idPrefix}-all`} className=\"wwc:text-sm\">\n\t\t\t\t\t\t\tAll\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1.5\">\n\t\t\t\t\t\t<RadioGroupItem value=\"filter\" id={`${idPrefix}-filter`} />\n\t\t\t\t\t\t<label htmlFor={`${idPrefix}-filter`} className=\"wwc:text-sm\">\n\t\t\t\t\t\t\tFilter\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t</RadioGroup>\n\t\t\t</div>\n\t\t\t{state.mode === \"filter\" && (\n\t\t\t\t<div className=\"wwc:mt-2 wwc:pl-[6.5rem]\">\n\t\t\t\t\t<MultiSelect\n\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\tvalue={state.selected}\n\t\t\t\t\t\tonValueChange={(selected) => onChange({...state, selected})}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tplaceholder={`Select ${label.toLowerCase()}…`}\n\t\t\t\t\t\tsearchPlaceholder={`Search ${label.toLowerCase()}…`}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\n// One communication-channel card: a switch + label on the left (SMS also gets a phone input when on),\n// and the three scope rows on the right — all disabled until the switch is on.\nfunction ChannelCard({\n\tidPrefix,\n\ttitle,\n\tchannel,\n\tonChange,\n\twithPhone,\n}: {\n\tidPrefix: string;\n\ttitle: string;\n\tchannel: CommChannel;\n\tonChange: (next: CommChannel) => void;\n\twithPhone: boolean;\n}) {\n\tconst set = (patch: Partial<CommChannel>) => onChange({...channel, ...patch});\n\treturn (\n\t\t<div className=\"wwc:rounded-lg wwc:border wwc:bg-muted/30 wwc:p-4\">\n\t\t\t<div className=\"wwc:flex wwc:flex-col wwc:gap-4 wwc:md:flex-row wwc:md:items-start wwc:md:justify-between\">\n\t\t\t\t<div className=\"wwc:md:w-1/2\">\n\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-3\">\n\t\t\t\t\t\t<Switch checked={channel.enabled} onCheckedChange={(enabled) => set({enabled})} />\n\t\t\t\t\t\t<MonitorSmartphone className=\"wwc:h-4 wwc:w-4 wwc:text-muted-foreground\" />\n\t\t\t\t\t\t<span className=\"wwc:text-sm wwc:font-semibold\">{title}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t{withPhone && channel.enabled && (\n\t\t\t\t\t\t<div className=\"wwc:mt-3 wwc:flex wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:h-9 wwc:items-center wwc:gap-1 wwc:rounded-md wwc:border wwc:border-border wwc:bg-background wwc:px-2 wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t<Phone className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={channel.phone}\n\t\t\t\t\t\t\t\tonChange={(event) => set({phone: event.target.value})}\n\t\t\t\t\t\t\t\tplaceholder=\"+966\"\n\t\t\t\t\t\t\t\tclassName=\"wwc:max-w-[220px]\"\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</div>\n\t\t\t\t<div className=\"wwc:md:w-[440px]\">\n\t\t\t\t\t<ScopeRow\n\t\t\t\t\t\tidPrefix={`${idPrefix}-sources`}\n\t\t\t\t\t\tlabel=\"Sources\"\n\t\t\t\t\t\toptions={SOURCE_FILTER_OPTIONS}\n\t\t\t\t\t\tstate={channel.sources}\n\t\t\t\t\t\tonChange={(sources) => set({sources})}\n\t\t\t\t\t\tdisabled={!channel.enabled}\n\t\t\t\t\t/>\n\t\t\t\t\t<ScopeRow\n\t\t\t\t\t\tidPrefix={`${idPrefix}-company`}\n\t\t\t\t\t\tlabel=\"Company\"\n\t\t\t\t\t\toptions={COMPANY_FILTER_OPTIONS}\n\t\t\t\t\t\tstate={channel.company}\n\t\t\t\t\t\tonChange={(company) => set({company})}\n\t\t\t\t\t\tdisabled={!channel.enabled}\n\t\t\t\t\t/>\n\t\t\t\t\t<ScopeRow\n\t\t\t\t\t\tidPrefix={`${idPrefix}-zones`}\n\t\t\t\t\t\tlabel=\"Zones\"\n\t\t\t\t\t\toptions={ZONE_FILTER_OPTIONS}\n\t\t\t\t\t\tstate={channel.zones}\n\t\t\t\t\t\tonChange={(zones) => set({zones})}\n\t\t\t\t\t\tdisabled={!channel.enabled}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n/**\n * New Responder / Controller dialog. A kind toggle, a required User select whose roster depends on the\n * kind, and per-channel communication config (In-App / SMS) with All-or-Filter scoping. Mock-only.\n */\nfunction NewResponderDialog({\n\topen,\n\tonOpenChange,\n\tdefaultKind,\n}: {\n\topen: boolean;\n\tonOpenChange: (open: boolean) => void;\n\tdefaultKind: TeamKind;\n}) {\n\tconst [kind, setKind] = useState<TeamKind>(defaultKind);\n\tconst [user, setUser] = useState(\"\");\n\tconst [inApp, setInApp] = useState<CommChannel>(emptyChannel);\n\tconst [sms, setSms] = useState<CommChannel>(emptyChannel);\n\tconst [showError, setShowError] = useState(false);\n\n\t// Reseed on each open so a cancelled entry never bleeds into the next.\n\tconst handleOpenChange = (next: boolean) => {\n\t\tif (next) {\n\t\t\tsetKind(defaultKind);\n\t\t\tsetUser(\"\");\n\t\t\tsetInApp(emptyChannel());\n\t\t\tsetSms(emptyChannel());\n\t\t\tsetShowError(false);\n\t\t}\n\t\tonOpenChange(next);\n\t};\n\n\tconst users = kind === \"controller\" ? CONTROLLER_USER_OPTIONS : RESPONDER_USER_OPTIONS;\n\n\tconst handleSave = () => {\n\t\tif (user === \"\") {\n\t\t\tsetShowError(true);\n\t\t\treturn;\n\t\t}\n\t\tonOpenChange(false);\n\t};\n\n\treturn (\n\t\t<Dialog open={open} onOpenChange={handleOpenChange}>\n\t\t\t<DialogContent className=\"wwc:gap-0 wwc:p-0 wwc:sm:max-w-[880px]\">\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>New {kind === \"controller\" ? \"Controller\" : \"Responder\"}</DialogTitle>\n\t\t\t\t\t<DialogDescription className=\"wwc:sr-only\">\n\t\t\t\t\t\tAdd a {kind} to the response team and configure their communication channels.\n\t\t\t\t\t</DialogDescription>\n\t\t\t\t</DialogHeader>\n\n\t\t\t\t<div className=\"wwc:flex wwc:max-h-[70vh] wwc:flex-col wwc:gap-4 wwc:overflow-y-auto wwc:px-4 wwc:py-4\">\n\t\t\t\t\t{/* Kind toggle — Responder / Controller share the UI; only the User roster differs. */}\n\t\t\t\t\t<RadioGroup\n\t\t\t\t\t\tclassName=\"wwc:flex wwc:flex-row wwc:gap-6\"\n\t\t\t\t\t\tvalue={kind}\n\t\t\t\t\t\tonValueChange={(next) => {\n\t\t\t\t\t\t\tsetKind(next as TeamKind);\n\t\t\t\t\t\t\tsetUser(\"\");\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t\t<RadioGroupItem value=\"responder\" id=\"kind-responder\" />\n\t\t\t\t\t\t\t<label htmlFor=\"kind-responder\" className=\"wwc:text-sm wwc:font-medium\">\n\t\t\t\t\t\t\t\tResponder\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t\t<RadioGroupItem value=\"controller\" id=\"kind-controller\" />\n\t\t\t\t\t\t\t<label htmlFor=\"kind-controller\" className=\"wwc:text-sm wwc:font-medium\">\n\t\t\t\t\t\t\t\tController\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</RadioGroup>\n\n\t\t\t\t\t<div className=\"wwc:border-t wwc:border-border\" />\n\n\t\t\t\t\t<Field>\n\t\t\t\t\t\t<FieldLabel htmlFor=\"new-user\">\n\t\t\t\t\t\t\tUser <span className=\"wwc:text-destructive\">*</span>\n\t\t\t\t\t\t</FieldLabel>\n\t\t\t\t\t\t<SearchableSelect\n\t\t\t\t\t\t\toptions={users}\n\t\t\t\t\t\t\tvalue={user}\n\t\t\t\t\t\t\tonValueChange={setUser}\n\t\t\t\t\t\t\tplaceholder=\"Select user\"\n\t\t\t\t\t\t\tsearchPlaceholder=\"Search users…\"\n\t\t\t\t\t\t\temptyMessage=\"No users found.\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{showError && user === \"\" && <FieldError>Select a user.</FieldError>}\n\t\t\t\t\t</Field>\n\n\t\t\t\t\t<div className=\"wwc:border-t wwc:border-border\" />\n\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p className=\"wwc:mb-3 wwc:text-sm wwc:text-muted-foreground\">Communication Channel:</p>\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-col wwc:gap-3\">\n\t\t\t\t\t\t\t<ChannelCard\n\t\t\t\t\t\t\t\tidPrefix=\"inapp\"\n\t\t\t\t\t\t\t\ttitle=\"In-App Alerts\"\n\t\t\t\t\t\t\t\tchannel={inApp}\n\t\t\t\t\t\t\t\tonChange={setInApp}\n\t\t\t\t\t\t\t\twithPhone={false}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ChannelCard idPrefix=\"sms\" title=\"SMS Alerts\" channel={sms} onChange={setSms} withPhone />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<DialogFooter className=\"wwc:border-t wwc:border-border wwc:px-4 wwc:py-2\">\n\t\t\t\t\t<Button variant=\"outline\" size=\"sm\" onClick={() => handleOpenChange(false)}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button size=\"sm\" onClick={handleSave}>\n\t\t\t\t\t\tSave\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogFooter>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n\n/** Verify Response — Responder / Controller sub-tabs over a KPI band + responder table, with a\n * slide-over detail panel for the selected responder. Mirrors ObservationsListView's structure. */\nfunction VerifyResponseView() {\n\tconst [subTab, setSubTab] = useState<VerifyResponderTab>(\"responder\");\n\tconst [selectedId, setSelectedId] = useState<string | null>(null);\n\tconst [newOpen, setNewOpen] = useState(false);\n\n\tconst columns = useMemo(() => responderColumns((responder) => setSelectedId(responder.id)), []);\n\tconst selected = selectedId !== null ? (RESPONDERS.find((responder) => responder.id === selectedId) ?? null) : null;\n\n\treturn (\n\t\t<PushPanelProvider open={selected !== null} onOpenChange={(open) => !open && setSelectedId(null)} side=\"right\">\n\t\t\t<PushPanelContainer className=\"wwc:min-h-0 wwc:flex-1\">\n\t\t\t\t<PushPanelMain className=\"wwc:h-full wwc:overflow-auto\">\n\t\t\t\t\t{/* Full-width content, matching the workforce template's main pane (w-full p-6, no max-w cap). */}\n\t\t\t\t\t<div className=\"wwc:w-full wwc:space-y-4 wwc:p-6\">\n\t\t\t\t\t\t{/* Header: Responder / Controller tabs with counts on the left — reusing the workforce\n\t\t\t\t compliance Mobilized/Demobilized pattern — with a Live badge and New Responder aligned\n\t\t\t\t on the same row (no separate title). */}\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:justify-between wwc:gap-3\">\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-3\">\n\t\t\t\t\t\t\t\t<Tabs value={subTab} onValueChange={(value) => setSubTab(value as VerifyResponderTab)}>\n\t\t\t\t\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t\t\t\t\t<TabsTrigger value=\"responder\">\n\t\t\t\t\t\t\t\t\t\t\tResponder\n\t\t\t\t\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"wwc:ml-2 wwc:h-5 wwc:px-1.5 wwc:text-[10px]\">\n\t\t\t\t\t\t\t\t\t\t\t\t{RESPONDERS.length}\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t\t\t<TabsTrigger value=\"controller\">\n\t\t\t\t\t\t\t\t\t\t\tController\n\t\t\t\t\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"wwc:ml-2 wwc:h-5 wwc:px-1.5 wwc:text-[10px]\">\n\t\t\t\t\t\t\t\t\t\t\t\t{CONTROLLERS.length}\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t\t\t</TabsList>\n\t\t\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t\t\t\t<Badge variant=\"successSoft\">\n\t\t\t\t\t\t\t\t\t<Zap className=\"wwc:h-3 wwc:w-3\" />\n\t\t\t\t\t\t\t\t\tLive\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Button onClick={() => setNewOpen(true)}>\n\t\t\t\t\t\t\t\t<Plus className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\tNew {subTab === \"controller\" ? \"Controller\" : \"Responder\"}\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{subTab === \"responder\" ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{/* Five metrics forced onto one row — KPISummary maxes at 4 columns natively. */}\n\t\t\t\t\t\t\t\t<KPISummary metrics={RESPONDER_KPIS} className=\"wwc:lg:grid-cols-5\" />\n\t\t\t\t\t\t\t\t<DataTable\n\t\t\t\t\t\t\t\t\tcolumns={columns}\n\t\t\t\t\t\t\t\t\tdata={RESPONDERS}\n\t\t\t\t\t\t\t\t\tsearchKey=\"name\"\n\t\t\t\t\t\t\t\t\tsearchPlaceholder=\"Search responders…\"\n\t\t\t\t\t\t\t\t\trecordLabel=\"responder\"\n\t\t\t\t\t\t\t\t\tpageSize={10}\n\t\t\t\t\t\t\t\t\tonRowActivate={(row) => setSelectedId(row.original.id)}\n\t\t\t\t\t\t\t\t\tgetRowAriaLabel={(row) => `Open ${row.original.name}`}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<DataTable\n\t\t\t\t\t\t\t\tcolumns={CONTROLLER_COLUMNS}\n\t\t\t\t\t\t\t\tdata={CONTROLLERS}\n\t\t\t\t\t\t\t\tsearchKey=\"name\"\n\t\t\t\t\t\t\t\tsearchPlaceholder=\"Search controllers…\"\n\t\t\t\t\t\t\t\trecordLabel=\"controller\"\n\t\t\t\t\t\t\t\tpageSize={10}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</PushPanelMain>\n\t\t\t\t<PushPanel width={400}>{selected ? <ResponderProfilePanel responder={selected} /> : null}</PushPanel>\n\t\t\t</PushPanelContainer>\n\t\t\t<NewResponderDialog\n\t\t\t\topen={newOpen}\n\t\t\t\tonOpenChange={setNewOpen}\n\t\t\t\tdefaultKind={subTab === \"controller\" ? \"controller\" : \"responder\"}\n\t\t\t/>\n\t\t</PushPanelProvider>\n\t);\n}\n\n// ─── Settings › General ──────────────────────────────────────────────────────\n\ntype ToggleSetting = {id: string; label: string; description: string; defaultOn: boolean};\n\nconst GENERAL_TOGGLES: ToggleSetting[] = [\n\t{\n\t\tid: \"sound-notification\",\n\t\tlabel: \"Sound Notification\",\n\t\tdescription: \"Configure how you want to be notified about observations\",\n\t\tdefaultOn: false,\n\t},\n\t{\n\t\tid: \"require-company\",\n\t\tlabel: \"Require company selection\",\n\t\tdescription: \"Toggle to make company selection mandatory\",\n\t\tdefaultOn: true,\n\t},\n];\n\ntype ToggleState = Record<string, boolean>;\n\nconst initialToggleState = (): ToggleState =>\n\tObject.fromEntries(GENERAL_TOGGLES.map((item) => [item.id, item.defaultOn]));\n\n/**\n * Stacked toggle rows plus the shared FormActionBar, shown only while the draft differs from the\n * last saved state. Renders the padded content container and the bar as siblings — FormActionBar\n * owns its own full-bleed background, so it must not sit inside the padded div.\n */\n// Playback modes for the pending-observation audio alert.\nconst SOUND_MODES = [\n\t{value: \"new-only\", label: \"New observations only\"},\n\t{value: \"continuous\", label: \"Continuous for pending\"},\n];\n\nfunction GeneralSettings({title}: {title: string}) {\n\tconst [saved, setSaved] = useState<ToggleState>(initialToggleState);\n\tconst [draft, setDraft] = useState<ToggleState>(initialToggleState);\n\tconst [savedMode, setSavedMode] = useState(\"new-only\");\n\tconst [draftMode, setDraftMode] = useState(\"new-only\");\n\n\tconst toggleChanges = GENERAL_TOGGLES.filter((item) => draft[item.id] !== saved[item.id]).length;\n\t// A changed sound mode only counts while Sound Notification is on.\n\tconst modeChanged = draft[\"sound-notification\"] && draftMode !== savedMode ? 1 : 0;\n\tconst changeCount = toggleChanges + modeChanged;\n\n\tconst commit = () => {\n\t\tsetSaved(draft);\n\t\tsetSavedMode(draftMode);\n\t};\n\tconst discard = () => {\n\t\tsetDraft(saved);\n\t\tsetDraftMode(savedMode);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"wwc:mx-auto wwc:w-full wwc:max-w-[1000px] wwc:p-6\">\n\t\t\t\t<h1 className=\"wwc:text-xl wwc:font-semibold wwc:tracking-tight\">{title}</h1>\n\t\t\t\t<div className=\"wwc:mt-4 wwc:flex wwc:flex-col wwc:gap-3\">\n\t\t\t\t\t{GENERAL_TOGGLES.map((item) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\tclassName=\"wwc:flex wwc:items-start wwc:gap-3 wwc:rounded-lg wwc:border wwc:bg-muted/30 wwc:p-4\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\tid={item.id}\n\t\t\t\t\t\t\t\tchecked={draft[item.id]}\n\t\t\t\t\t\t\t\tonCheckedChange={(checked) => setDraft((prev) => ({...prev, [item.id]: checked}))}\n\t\t\t\t\t\t\t\tclassName=\"wwc:mt-0.5\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"wwc:min-w-0 wwc:flex-1\">\n\t\t\t\t\t\t\t\t<label htmlFor={item.id} className=\"wwc:cursor-pointer wwc:text-sm wwc:font-semibold\">\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<p className=\"wwc:mt-1 wwc:text-sm wwc:text-muted-foreground\">{item.description}</p>\n\t\t\t\t\t\t\t\t{/* Mode select appears only for Sound Notification, and only while it is on. */}\n\t\t\t\t\t\t\t\t{item.id === \"sound-notification\" && draft[\"sound-notification\"] && (\n\t\t\t\t\t\t\t\t\t<div className=\"wwc:mt-3 wwc:max-w-xs\">\n\t\t\t\t\t\t\t\t\t\t<Select value={draftMode} onValueChange={setDraftMode}>\n\t\t\t\t\t\t\t\t\t\t\t<SelectTrigger aria-label=\"Sound alert mode\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SelectValue />\n\t\t\t\t\t\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t\t\t\t\t\t{SOUND_MODES.map((m) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SelectItem key={m.value} value={m.value}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{m.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SelectItem>\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</SelectContent>\n\t\t\t\t\t\t\t\t\t\t</Select>\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</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{changeCount > 0 && (\n\t\t\t\t<FormActionBar\n\t\t\t\t\tmaxWidth=\"1000px\"\n\t\t\t\t\t// mt-auto pins the bar to the bottom of the pane; this page's settings content is short\n\t\t\t\t\t// enough not to overflow, so sticky alone would leave it floating under the last row.\n\t\t\t\t\tclassName=\"wwc:mt-auto\"\n\t\t\t\t\tstatus={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span className=\"wwc:font-medium wwc:text-foreground\">{changeCount}</span> unsaved change\n\t\t\t\t\t\t\t{changeCount === 1 ? \"\" : \"s\"}\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<Button variant=\"ghost\" size=\"sm\" onClick={discard}>\n\t\t\t\t\t\tDiscard\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button size=\"sm\" onClick={commit}>\n\t\t\t\t\t\t<Save className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\tSave changes\n\t\t\t\t\t</Button>\n\t\t\t\t</FormActionBar>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\n// ─── Settings › Categories ───────────────────────────────────────────────────\n\ntype ObservationCategory = {\n\tid: string;\n\tname: string;\n\tdescription: string;\n\t/** \"System\" for seeded categories, otherwise the user who created it. */\n\taddedBy: string;\n};\n\nconst SYSTEM_CATEGORY_NAMES = [\n\t\"Barriers, Guardrails & Warning Lines\",\n\t\"Bus 40\",\n\t\"Bus_40\",\n\t\"Bus_40_a\",\n\t\"Bus_40_b\",\n\t\"Bus 60\",\n\t\"Bus_60\",\n\t\"Entering Restricted Area\",\n\t\"Excavation Safety\",\n\t\"Fall Detection\",\n\t\"Fall Hazard Prevention\",\n\t\"Fire Hazard\",\n\t\"General Safety Hazard\",\n\t\"General Site Safety\",\n\t\"Good Practice\",\n\t\"Heavy 40\",\n\t\"Heavy_40\",\n\t\"Heavy_40_a\",\n\t\"Heavy_40_b\",\n\t\"Heavy_40_c\",\n\t\"Heavy_40_d\",\n\t\"Heavy 60\",\n\t\"Heavy_60\",\n\t\"Housekeeping and Material Storage\",\n\t\"Hot Work\",\n\t\"Lifting Operations\",\n\t\"PPE Non-Compliance\",\n\t\"Unfit for Work\",\n\t\"Vehicle & Traffic Safety\",\n\t\"Working at Height\",\n];\n\n// A couple of descriptions differ from the name (matching the source data), the rest mirror it.\nconst CATEGORY_DESCRIPTION_OVERRIDES: Record<string, string> = {\n\t\"Free Fall\": \"FreeFall\",\n\t\"Head Impact\": \"HeadImpact\",\n};\n\nconst CATEGORIES: ObservationCategory[] = [...SYSTEM_CATEGORY_NAMES, \"Free Fall\", \"Head Impact\"]\n\t.sort((a, b) => a.localeCompare(b))\n\t.map((name, index) => ({\n\t\tid: `cat-${index}`,\n\t\tname,\n\t\tdescription: CATEGORY_DESCRIPTION_OVERRIDES[name] ?? name,\n\t\taddedBy: \"System\",\n\t}));\n\nconst CATEGORY_COLUMNS: ColumnDef<ObservationCategory>[] = [\n\t{\n\t\taccessorKey: \"name\",\n\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Name\" />,\n\t\tcell: ({row}) => <span className=\"wwc:font-medium\">{row.original.name}</span>,\n\t},\n\t{\n\t\taccessorKey: \"description\",\n\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Description\" />,\n\t\tcell: ({row}) => <span className=\"wwc:text-muted-foreground\">{row.original.description}</span>,\n\t},\n\t{\n\t\taccessorKey: \"addedBy\",\n\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Added By\" />,\n\t\tcell: ({row}) => <Badge variant=\"infoSoft\">{row.original.addedBy}</Badge>,\n\t},\n];\n\n/** Categories table with an \"Add Category\" split action in the toolbar. */\nfunction CategoriesSettings() {\n\treturn (\n\t\t<DataTable\n\t\t\tcolumns={CATEGORY_COLUMNS}\n\t\t\tdata={CATEGORIES}\n\t\t\tsearchKey=\"name\"\n\t\t\tsearchPlaceholder=\"Search categories…\"\n\t\t\tshowColumnToggle\n\t\t\trecordLabel=\"category\"\n\t\t\tpageSize={10}\n\t\t\ttoolbarExtra={\n\t\t\t\t<Button>\n\t\t\t\t\t<Plus className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\tAdd Category\n\t\t\t\t\t<ChevronDown className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t</Button>\n\t\t\t}\n\t\t/>\n\t);\n}\n\n/**\n * Safety Manager observation-manager template. Renders its own app shell and a content\n * area that toggles between the route header (tabs + Settings action) and a Settings\n * sub-surface (SideMenu + content); the List View embeds the reusable TaskMonitor.\n *\n * @deprecated Preview/demo prototype — renders built-in sample data and mock handlers. Not a\n * supported production import: compose your page from the widgets this template uses, wired to your\n * own data (see the CoreSafetyManager template docs in Storybook). Slated for removal from the public API in a\n * future major.\n */\nexport function SafetyManager() {\n\tconst [mode, setMode] = useState<\"default\" | \"settings\">(\"default\");\n\tconst [activeTab, setActiveTab] = useState<SafetyTabId>(\"analytics\");\n\tconst [activeSetting, setActiveSetting] = useState<SettingId>(\"general\");\n\n\tconst [detailLabel, setDetailLabel] = useState<string | null>(null);\n\tconst activeSettingLabel = settingLabel(activeSetting);\n\n\t// Ontology settings render the shared admin views; every other setting keeps its own body.\n\tconst ontologyViewId = ONTOLOGY_SETTING_VIEW_IDS[activeSetting];\n\tconst OntologyView = ontologyViewId ? ONTOLOGY_VIEWS[ontologyViewId] : undefined;\n\tconst placeholder =\n\t\tactiveTab === \"list-view\" || activeTab === \"map-view\" || activeTab === \"verify-response\"\n\t\t\t? null\n\t\t\t: TAB_PLACEHOLDER[activeTab];\n\n\tconst breadcrumb =\n\t\tmode === \"settings\"\n\t\t\t? `Safety Manager / Settings / ${activeSettingLabel}${detailLabel ? ` / ${detailLabel}` : \"\"}`\n\t\t\t: `Safety Manager / ${tabLabel(activeTab)}`;\n\n\treturn (\n\t\t<div className=\"wwc:flex wwc:h-full wwc:min-h-0 wwc:bg-background wwc:text-foreground\">\n\t\t\t<CoreAppSidebar\n\t\t\t\tviewLevel=\"org\"\n\t\t\t\torgGroups={SAFETY_GROUPS}\n\t\t\t\tactiveItemId=\"safety-manager\"\n\t\t\t\tshowSearch={false}\n\t\t\t\tshowNotifications={false}\n\t\t\t/>\n\n\t\t\t<div className=\"wwc:relative wwc:flex wwc:min-w-0 wwc:flex-1 wwc:flex-col\">\n\t\t\t\t<CoreAppTopBar activeLabel={breadcrumb} showProjectSwitcher={false} showNotifications notificationCount={3} />\n\n\t\t\t\t<main className=\"wwc:relative wwc:flex wwc:min-h-0 wwc:flex-1 wwc:flex-col wwc:overflow-hidden\">\n\t\t\t\t\t{mode === \"default\" ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<PageContentHeader\n\t\t\t\t\t\t\t\tvariant=\"navigation\"\n\t\t\t\t\t\t\t\ttitle=\"Safety Manager\"\n\t\t\t\t\t\t\t\ttabs={TABS}\n\t\t\t\t\t\t\t\tactiveTab={activeTab}\n\t\t\t\t\t\t\t\tonTabChange={(tab) => setActiveTab(tab as SafetyTabId)}\n\t\t\t\t\t\t\t\tactions={[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"settings\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Settings\",\n\t\t\t\t\t\t\t\t\t\ticon: <Settings className=\"wwc:h-4 wwc:w-4\" />,\n\t\t\t\t\t\t\t\t\t\tpresentation: \"icon\",\n\t\t\t\t\t\t\t\t\t\tonSelect: () => setMode(\"settings\"),\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/>\n\n\t\t\t\t\t\t\t{activeTab === \"list-view\" ? (\n\t\t\t\t\t\t\t\t<ObservationsListView />\n\t\t\t\t\t\t\t) : activeTab === \"verify-response\" ? (\n\t\t\t\t\t\t\t\t<VerifyResponseView />\n\t\t\t\t\t\t\t) : activeTab === \"map-view\" ? (\n\t\t\t\t\t\t\t\t// flex-1 because the view sizes to its parent: here that is what is left of the\n\t\t\t\t\t\t\t\t// column under the route header.\n\t\t\t\t\t\t\t\t<ObservationsMapView className=\"wwc:flex-1\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div className=\"wwc:min-h-0 wwc:flex-1 wwc:overflow-auto\">\n\t\t\t\t\t\t\t\t\t<div className=\"wwc:w-full wwc:p-6\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:min-h-[320px] wwc:items-center wwc:justify-center\">\n\t\t\t\t\t\t\t\t\t\t\t{placeholder && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Empty\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={placeholder.icon}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={placeholder.title}\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescription={placeholder.description}\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</div>\n\t\t\t\t\t\t\t\t\t</div>\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</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:flex-1 wwc:flex-col wwc:md:flex-row\">\n\t\t\t\t\t\t\t<SideMenu\n\t\t\t\t\t\t\t\ttitle=\"Settings\"\n\t\t\t\t\t\t\t\tonBack={() => setMode(\"default\")}\n\t\t\t\t\t\t\t\tbackLabel=\"Back to Safety Manager\"\n\t\t\t\t\t\t\t\tshowSearch={false}\n\t\t\t\t\t\t\t\tgroups={SETTINGS_GROUPS}\n\t\t\t\t\t\t\t\tactiveItemId={activeSetting}\n\t\t\t\t\t\t\t\tonItemSelect={(id) => setActiveSetting(id as SettingId)}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t{/* Ontology views own their scrolling (the table body scrolls, the header band does not), so\n\t\t\t\t\t\t\t this column must not scroll as a whole — hence overflow-hidden on that branch only. */}\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"wwc:flex wwc:min-h-0 wwc:flex-1 wwc:flex-col\",\n\t\t\t\t\t\t\t\t\tOntologyView ? \"wwc:overflow-hidden\" : \"wwc:overflow-auto\",\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{OntologyView ? (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<PageContentHeader\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"title-actions\"\n\t\t\t\t\t\t\t\t\t\t\tdensity=\"compact\"\n\t\t\t\t\t\t\t\t\t\t\ttitle={activeSettingLabel}\n\t\t\t\t\t\t\t\t\t\t\tdescription={ONTOLOGY_DESCRIPTION[activeSetting]}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<OntologyView scope={SAFETY_ONTOLOGY_SCOPE} onDetailChange={setDetailLabel} />\n\t\t\t\t\t\t\t\t\t\t{/* SharedPropertiesView fires undoable toasts and needs a host for them. */}\n\t\t\t\t\t\t\t\t\t\t<Toaster position=\"top-right\" />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) : activeSetting === \"general\" ? (\n\t\t\t\t\t\t\t\t\t<GeneralSettings title={activeSettingLabel} />\n\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\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\"wwc:mx-auto wwc:w-full wwc:p-6\",\n\t\t\t\t\t\t\t\t\t\t\tactiveSetting === \"categories\" ? \"wwc:max-w-[1200px]\" : \"wwc:max-w-[1000px]\",\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\t\t<h1 className=\"wwc:text-xl wwc:font-semibold wwc:tracking-tight\">{activeSettingLabel}</h1>\n\t\t\t\t\t\t\t\t\t\t<div className=\"wwc:mt-4\">\n\t\t\t\t\t\t\t\t\t\t\t{activeSetting === \"categories\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<CategoriesSettings />\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=\"wwc:flex wwc:min-h-[320px] wwc:items-center wwc:justify-center\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Empty\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={<Settings className=\"wwc:h-6 wwc:w-6\" />}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={activeSettingLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescription={SETTING_PLACEHOLDER[activeSetting]}\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</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</div>\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</div>\n\t\t\t\t\t)}\n\t\t\t\t</main>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4HA,MAAM,gBAAmC,CAAC,EAAC,OAAO,CAFT;CAAC,IAAI;CAAkB,OAAO;CAAkB,MAAM;AAAW,CAEhD,EAAC,CAAC;AAI5D,MAAM,OAAmC;CACxC;EAAC,IAAI;EAAa,OAAO;EAAa,MAAM;CAAS;CACrD;EAAC,IAAI;EAAa,OAAO;EAAa,MAAM;CAAI;CAChD;EAAC,IAAI;EAAY,OAAO;EAAY,MAAMA;CAAO;CACjD;EAAC,IAAI;EAAmB,OAAO;EAAkB,MAAM;CAAK;AAC7D;AAEA,MAAM,kBAGF,EACH,WAAW;CACV,OAAO;CACP,aAAa;CACb,MAAM,oBAAC,WAAD,EAAW,WAAU,kBAAmB,CAAA;AAC/C,EACD;AAkBA,MAAM,wBAAuC,EAC5C,eAAe;CACd;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,EACD;AAGA,MAAM,kBAAkB,oBAAoB,qBAAqB;AAEjE,MAAM,kBAAmC,CACxC;CACC,OAAO;CACP,OAAO;EACN;GAAC,IAAI;GAAW,OAAO;GAAW,MAAM;EAAiB;EACzD;GAAC,IAAI;GAAc,OAAO;GAAc,MAAM;EAAI;EAClD;GAAC,IAAI;GAAY,OAAO;GAAY,MAAM;EAAQ;CACnD;AACD,GACA;CACC,OAAO;CACP,OAAO;EACN;GAAC,IAAI;GAAgB,OAAO;GAAgB,MAAM;GAAK,OAAO,gBAAgB;EAAe;EAC7F;GAAC,IAAI;GAAc,OAAO;GAAc,MAAM;GAAO,OAAO,gBAAgB;EAAa;EACzF;GAAC,IAAI;GAAgB,OAAO;GAAgB,MAAM;GAAK,OAAO,gBAAgB;EAAe;EAC7F;GAAC,IAAI;GAAc,OAAO;GAAc,MAAM;GAAK,OAAO,gBAAgB;EAAU;EACpF;GAAC,IAAI;GAAqB,OAAO;GAAqB,MAAM;GAAQ,OAAO,gBAAgB;EAAoB;EAC/G;GAAC,IAAI;GAAe,OAAO;GAAe,MAAM;GAAQ,OAAO,gBAAgB;EAAc;EAC7F;GAAC,IAAI;GAAS,OAAO;GAAkB,MAAM;GAAS,OAAO,gBAAgB;EAAa;CAC3F;AACD,CACD;AAIA,MAAM,4BAAoD;CACzD,gBAAgB;CAChB,cAAc;CACd,gBAAgB;CAChB,YAAY;CACZ,qBAAqB;CACrB,eAAe;CACf,OAAO;AACR;AAGA,MAAM,uBAA+C;CACpD,gBAAgB;CAChB,cAAc;CACd,gBAAgB;CAChB,YAAY;CACZ,qBAAqB;CACrB,eAAe;CACf,OAAO;AACR;AAEA,MAAM,iBAAiB,gBAAgB,SAAS,UAAU,MAAM,KAAK;AAGrE,MAAM,sBAA8C,EACnD,UAAU,uEACX;AAEA,MAAM,gBAAgB,OAAe,eAAe,MAAM,SAAS,KAAK,OAAO,EAAE,CAAC,EAAE,SAAS;AAC7F,MAAM,YAAY,OAAoB,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC,EAAE,SAAS;AAMlF,MAAM,eAAkD;CACvD,SAAS;CACT,MAAM;CACN,QAAQ;AACT;AAEA,SAAS,cAAc,QAAyE;CAC/F,IAAI,WAAW,UAAU,OAAO;CAChC,IAAI,WAAW,WAAW,OAAO;CACjC,OAAO;AACR;AAKA,MAAM,aAAyB;CAAC;CAAkB;CAAO;CAAU;CAAQ;AAAW;AAGtF,MAAM,wBAAoC;CAAC;CAAO;CAAU;CAAQ;AAAW;AAE/E,SAAS,gBAAgB,UAAkF;CAC1G,IAAI,aAAa,eAAe,aAAa,QAAQ,OAAO;CAC5D,IAAI,aAAa,UAAU,OAAO;CAClC,IAAI,aAAa,OAAO,OAAO;CAC/B,OAAO;AACR;AA+BA,MAAM,eAA8B;CACnC;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,WAAW;CACZ;CACA;EACC,IAAI;EACJ,OAAO;EACP,aACC;EACD,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,SAAS;EACT,WAAW;CACZ;CACA;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,SAAS;EACT,WAAW;CACZ;CACA;EACC,IAAI;EACJ,OAAO;EACP,aACC;EACD,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,SAAS;EACT,YAAY;EACZ,WAAW;CACZ;CACA;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,SAAS;EACT,gBAAgB;EAChB,WAAW;CACZ;CACA;EACC,IAAI;EACJ,OAAO;EACP,aACC;EACD,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,SAAS;EACT,YAAY;EACZ,QAAQ;EACR,WAAW;CACZ;CACA;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,SAAS;EACT,QAAQ;EACR,YAAY;EACZ,WAAW;CACZ;CACA;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW;CACZ;CACA;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,QAAQ;EACR,UAAU;EACV,QAAQ;EACR,UAAU;EACV,SAAS;EACT,eAAe;EACf,QAAQ;EACR,WAAW;CACZ;AACD;AAEA,MAAM,YAAY,MAAM,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,EAAE,WAAW,gBAAgB,CAAC,CAAC;AAC5F,MAAM,UAAU,MAAM,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;AACrE,MAAM,yBAAyB,MAAM,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,MAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAItH,MAAM,kBAAkB;CACvB;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AAEA,MAAM,mBAA2C;CAChD;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,UAAU;EACV,gBAAgB;CACjB;CACA;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,UAAU;EACV,gBAAgB;CACjB;CACA;EACC,IAAI;EACJ,OAAO;EACP,aAAa;EACb,UAAU;EACV,gBAAgB;CACjB;AACD;AAIA,MAAM,eAAuC;CAC5C;EAAC,OAAO;EAAgB,OAAO;CAAc;CAC7C;EAAC,OAAO;EAAY,OAAO;CAAkB;CAC7C;EAAC,OAAO;EAAoB,OAAO;CAA6C;CAChF;EAAC,OAAO;EAAkB,OAAO;CAAkB;CACnD;EAAC,OAAO;EAAgB,OAAO;CAAc;AAC9C;AAEA,MAAM,mBAA2C;CAChD;EAAC,OAAO;EAAO,OAAO;CAAoB;CAC1C;EAAC,OAAO;EAAmB,OAAO;CAAiB;CACnD;EAAC,OAAO;EAAkB,OAAO;CAA0B;CAC3D;EAAC,OAAO;EAAgB,OAAO;CAAc;CAC7C;EAAC,OAAO;EAAY,OAAO;CAAU;CACrC;EAAC,OAAO;EAAkB,OAAO;CAAgB;AAClD;AAEA,MAAM,iBAAyC;CAC9C;EAAC,OAAO;EAAa,OAAO;CAA4B;CACxD;EAAC,OAAO;EAAc,OAAO;CAA6B;CAC1D;EAAC,OAAO;EAAc,OAAO;CAAmB;AACjD;AAIA,SAAS,eAAe,IAAY,MAAc,WAAmB,OAAyB,QAAqB;CAClH,OAAO;EACN;EACA,QAAQ;GAAC,MAAM;GAAU,UAAU;EAAI;EACvC;EACA;EACA,QAAQ,CAAC;GAAC,IAAI;GAAY,MAAM,oBAAC,OAAD,EAAO,WAAU,kBAAmB,CAAA;GAAG,OAAO;GAAY;EAAI,CAAC;CAChG;AACD;AAEA,MAAM,mBAAkD;CAEvD,OAAO,CACN;EACC,IAAI;EACJ,QAAQ,EAAC,MAAM,WAAU;EACzB,WAAW;EACX,MAAM;EACN,QAAQ,CAAC;GAAC,IAAI;GAAQ,MAAM,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA;GAAG,OAAO;GAAW,MAAM;EAAS,CAAC;CACrG,CACD;CAEA,OAAO,CAAC,eAAe,YAAY,0CAA0C,aAAa,CAAC;CAC3F,OAAO,CAAC,eAAe,YAAY,kCAAkC,cAAc,SAAS,CAAC;CAC7F,OAAO,CACN,eACC,YACA,4EACA,cACA,OACD,CACD;AACD;AAEA,SAAS,UAAU,EAAC,OAAO,SAAiD;CAC3E,OACC,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACC,oBAAC,QAAD;GAAM,WAAU;GAAyC,UAAA;EAAY,CAAA,GACrE,oBAAC,QAAD;GAAM,WAAU;GAA8C,UAAA;EAAY,CAAA,CACtE;;AAEP;;AAOA,MAAM,mBAAmB;AAuBzB,MAAM,iBAAkE;CACvE,MAAM;EACL,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM,oBAAC,cAAD,EAAc,WAAU,kBAAmB,CAAA;CAClD;CACA,eAAe;EACd,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM,oBAAC,SAAD,EAAS,WAAU,kBAAmB,CAAA;CAC7C;CACA,kBAAkB;EACjB,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM,oBAAC,SAAD,EAAS,WAAU,kBAAmB,CAAA;CAC7C;CACA,mBAAmB;EAClB,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA;CAC1C;CACA,eAAe;EACd,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA;CAC1C;CACA,OAAO;EACN,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM,oBAAC,cAAD,EAAc,WAAU,kBAAmB,CAAA;CAClD;CACA,QAAQ;EACP,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM,oBAAC,cAAD,EAAc,WAAU,kBAAmB,CAAA;CAClD;CACA,QAAQ;EACP,OAAO;EACP,OAAO;EACP,SAAS;EACT,MAAM,oBAAC,QAAD,EAAQ,WAAU,kBAAmB,CAAA;EAC3C,MAAM;CACP;AACD;;AAGA,SAAS,oBAAoB,GAAgF;CAC5G,IAAI,EAAE,WAAW,WAAW;EAC3B,MAAM,YAAkC,CAAC;EAEzC,IAAI,CAAC,EAAE,gBAAgB,UAAU,KAAK,aAAa;EAEnD,IAAI,EAAE,WAAW,UAAU,CAAC,EAAE,gBAAgB,UAAU,KAAK,gBAAgB;EAC7E,UAAU,KAAK,QAAQ;EACvB,OAAO;GAAC,SAAS;GAAQ;EAAS;CACnC;CACA,IAAI,EAAE,WAAW,QAAQ;EACxB,MAAM,YAAkC,CAAC;EACzC,IAAI,CAAC,EAAE,gBAAgB,UAAU,KAAK,iBAAiB;EACvD,UAAU,KAAK,eAAe,QAAQ;EACtC,OAAO;GAAC,SAAS;GAAS;EAAS;CACpC;CACA,OAAO;EAAC,SAAS;EAAU,WAAW,CAAC,QAAQ;CAAC;AACjD;;AAGA,SAAS,YAAY,KAAyB,GAAgB;CAC7D,OAAO;EACN,UAAW,QAAQ,UAAU,CAAC,EAAE,kBAAmB,QAAQ,qBAAqB,QAAQ;EACxF,SACE,QAAQ,UAAU,oBAClB,QAAQ,iBAAiB,oBACzB,QAAQ,WAAW,oBACpB,QAAQ;EACT,MAAM,QAAQ,iBAAiB,QAAQ,oBAAoB,QAAQ,WAAW,QAAQ;EAEtF,WAAW,QAAQ,UAAU,QAAQ;CACtC;AACD;AAKA,SAAS,sBAAsB,KAAyB,MAAkB,GAA+B;CACxG,MAAM,YAAY,SAAkB,KAAK,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM;CACzF,QAAQ,KAAR;EACC,KAAK,QACJ,OAAO,KAAK,YAAY,oCAAoC,KAAK,UAAU,KAAK;EACjF,KAAK,SACJ,OAAO,SAAS,KAAK,YAAY,aAAa,KAAK,UAAU,KAAK,SAAS;EAC5E,KAAK,eACJ,OAAO,SAAS,wBAAwB;EACzC,KAAK,kBACJ,OAAO;EACR,KAAK,mBACJ,OAAO,uBAAuB,KAAK,YAAY,EAAE,SAAS;EAC3D,KAAK,eACJ,OAAO,kBAAkB,KAAK,WAAW,EAAE,WAAW,iBAAiB;EACxE,KAAK,UACJ,OAAO,SAAS,WAAW;EAC5B,SACC,OAAO;CACT;AACD;;;;;AAMA,SAAS,wBAAwB,EAChC,aACA,WACA,MACA,cACA,WACA,YAQE;CACF,MAAM,CAAC,YAAY,iBAAiB,SAAS,KAAK;CAClD,MAAM,OAAO,gBAAgB,QAAQ,cAAc;CAEnD,IAAI,CAAC,eAAe,CAAC,WACpB,OAAO,oBAAC,QAAD;EAAQ,MAAM;EAAO,cAAc;CAAW,CAAA;CAGtD,MAAM,OAAO,eAAe;CAC5B,MAAM,QAAQ,YAAY,WAAW,WAAW;CAEhD,MAAM,SAAS;EACd,UAAU,MAAM,YAAY,KAAK,aAAa,KAAK,uBAAuB,KAAA;EAC1E,SAAS,MAAM,WAAW,KAAK,YAAY,KAAK,mCAAmC,KAAA;CACpF;CACA,MAAM,YAAY,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO;CAEhD,MAAM,YAAY,cAAc,WAAW,gBAAgB,cAAc,UAAU,iBAAiB;CACpG,MAAM,iBAAiB,cAAc,UAAU,cAAc;CAE7D,MAAM,sBAAsB;EAC3B,IAAI,WAAW;GACd,cAAc,IAAI;GAClB;EACD;EACA,cAAc,KAAK;EACnB,UAAU;CACX;CAEA,OACC,oBAAC,QAAD;EACO;EACN,eAAe,SAAS;GACvB,IAAI,CAAC,MAAM;IACV,cAAc,KAAK;IACnB,SAAS;GACV;EACD;EAEA,UAAA,qBAAC,eAAD;GAAe,WAAU;GAAzB,UAAA;IACC,qBAAC,cAAD,EAAA,UAAA,CACC,oBAAC,aAAD,EAAA,UAAc,KAAK,MAAmB,CAAA,GACtC,qBAAC,mBAAD;KAAmB,WAAU;KAA7B,UAAA;MAA2C;MAC7B,KAAK,MAAM,YAAY;MAAE;KACpB;IACN,CAAA,CAAA,EAAA,CAAA;IAEd,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACC,qBAAC,KAAD;OAAG,WAAU;OAAb,UAAA;QACC,oBAAC,QAAD;SAAM,WAAU;SAAuC,UAAA,YAAY;QAAY,CAAA;QAC9E;QACA,cAAc,WACZ,mEACA;OACD;;MAEF,MAAM,YACN,qBAAC,OAAD,EAAA,UAAA;OACC,oBAAC,YAAD;QAAY,SAAQ;QAAkB,UAAA;OAAoB,CAAA;OAC1D,qBAAC,QAAD;QAAQ,OAAO,KAAK;QAAU,gBAAgB,MAAM,aAAa,EAAC,UAAU,EAAa,CAAC;QAA1F,UAAA,CACC,oBAAC,eAAD;SAAe,IAAG;SAAkB,gBAAc,cAAc,CAAC,CAAC,OAAO;SACxE,UAAA,oBAAC,aAAD,EAAa,aAAY,kBAAmB,CAAA;QAC9B,CAAA,GACf,oBAAC,eAAD,EAAA,UACE,sBAAsB,KAAK,MAC3B,oBAAC,YAAD;SAAoB,OAAO;SACzB,UAAA;QACU,GAFK,CAEL,CACZ,EACa,CAAA,CACR;;OACP,cAAc,OAAO,YAAY,oBAAC,YAAD,EAAA,UAAa,OAAO,SAAqB,CAAA;MACrE,EAAA,CAAA;MAGP,MAAM,WACN,qBAAC,OAAD,EAAA,UAAA;OACC,oBAAC,YAAD;QAAY,SAAQ;QAAiB,UAAA;OAAmB,CAAA;OACxD,qBAAC,QAAD;QAAQ,OAAO,KAAK;QAAS,gBAAgB,MAAM,aAAa,EAAC,SAAS,EAAC,CAAC;QAA5E,UAAA,CACC,oBAAC,eAAD;SAAe,IAAG;SAAiB,gBAAc,cAAc,CAAC,CAAC,OAAO;SACvE,UAAA,oBAAC,aAAD,EAAa,aAAY,iBAAkB,CAAA;QAC7B,CAAA,GACf,oBAAC,eAAD,EAAA,UACE,UAAU,KAAK,MACf,oBAAC,YAAD;SAAoB,OAAO;SACzB,UAAA;QACU,GAFK,CAEL,CACZ,EACa,CAAA,CACR;;OACP,cAAc,OAAO,WAAW,oBAAC,YAAD,EAAA,UAAa,OAAO,QAAoB,CAAA;MACnE,EAAA,CAAA;MAGP,MAAM,aACN,qBAAC,OAAD,EAAA,UAAA,CACC,oBAAC,YAAD;OAAY,SAAQ;OAAoB,UAAA;MAA2B,CAAA,GACnE,qBAAC,QAAD;OAAQ,OAAO,KAAK;OAAW,gBAAgB,MAAM,aAAa,EAAC,WAAW,EAAC,CAAC;OAAhF,UAAA,CACC,oBAAC,eAAD;QAAe,IAAG;QACjB,UAAA,oBAAC,aAAD,EAAa,aAAY,mBAAoB,CAAA;OAC/B,CAAA,GACf,oBAAC,eAAD,EAAA,UACE,gBAAgB,KAAK,SACrB,oBAAC,YAAD;QAAuB,OAAO;QAC5B,UAAA;OACU,GAFK,IAEL,CACZ,EACa,CAAA,CACR;MACF,CAAA,CAAA,EAAA,CAAA;MAGP,MAAM,QACN,qBAAC,OAAD,EAAA,UAAA,CACC,oBAAC,YAAD;OAAY,SAAQ;OAAe,UAAA;MAAsB,CAAA,GACzD,oBAAC,UAAD;OACC,IAAG;OACH,OAAO,KAAK;OACZ,WAAW,MAAM,aAAa,EAAC,MAAM,EAAE,OAAO,MAAK,CAAC;OACpD,aAAY;OACZ,WAAU;MACV,CAAA,CACK,EAAA,CAAA;KAEJ;;IAEL,qBAAC,cAAD;KAAc,WAAU;KAAxB,UAAA,CACC,oBAAC,QAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,SAAS;MAAU,UAAA;KAE/C,CAAA,GACR,qBAAC,QAAD;MAAQ,MAAK;MAAK,SAAS,KAAK,SAAS,gBAAgB,gBAAgB;MAAW,SAAS;MAA7F,UAAA,CACE,KAAK,MACL,KAAK,OACC;KACK,CAAA,CAAA;;GACA;;CACR,CAAA;AAEV;AAOA,SAAS,eAAe,GAA8B;CACrD,MAAM,QAAQ,KAAK,IAAI,EAAE,cAAc,GAAG,CAAC;CAC3C,OAAO,MAAM,KAAK,EAAC,QAAQ,MAAK,IAAI,GAAG,OAAO;EAC7C,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI;EACpB,UAAU,gBAAgB,OAAO,IAAK,IAAI,CAAE,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG,OAAQ,IAAI,IAAK,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG;EACtG,WAAW,gBAAgB,OAAO,IAAK,IAAI,CAAE,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG,OAAQ,IAAI,IAAK,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG;EACvG,MAAM,EAAE,WAAW,QAAQ,iBAAiB;EAC5C,UAAU;CACX,EAAE;AACH;AAEA,MAAM,kBAA2C;CAChD;EAAC,aAAa;EAAY,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAY,CAAA;CAAC;CAC1G;EAAC,aAAa;EAAa,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAa,CAAA;CAAC;CAC5G;EAAC,aAAa;EAAQ,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAQ,CAAA;CAAC;CAClG;EAAC,aAAa;EAAY,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAY,CAAA;CAAC;AAC3G;AAEA,SAAS,0BAA0B,EAAC,aAAa,WAAkE;CAClH,OACC,oBAAC,QAAD;EAAQ,MAAM,gBAAgB;EAAM,eAAe,SAAS,CAAC,QAAQ,QAAQ;EAC5E,UAAA,qBAAC,eAAD;GAAe,WAAU;GAAzB,UAAA,CACC,qBAAC,cAAD,EAAA,UAAA,CACC,qBAAC,aAAD,EAAA,UAAA,CAAa,wBAAqB,cAAc,KAAK,YAAY,WAAW,KAAK,EAAgB,EAAA,CAAA,GACjG,oBAAC,mBAAD;IAAmB,WAAU;IAAc,UAAA;GAExB,CAAA,CACN,EAAA,CAAA,GACd,oBAAC,OAAD;IAAK,WAAU;IACb,UAAA,eACA,oBAAC,WAAD;KAAW,SAAS;KAAiB,MAAM,eAAe,WAAW;KAAG,aAAY;KAAQ,UAAU;IAAI,CAAA;GAEvG,CAAA,CACS;;CACR,CAAA;AAEV;AAIA,SAAS,eAAe,EAAC,aAAa,WAAkE;CACvG,OACC,oBAAC,QAAD;EAAQ,MAAM,gBAAgB;EAAM,eAAe,SAAS,CAAC,QAAQ,QAAQ;EAC5E,UAAA,qBAAC,eAAD;GAAe,WAAU;GAAzB,UAAA,CACC,qBAAC,cAAD,EAAA,UAAA,CACC,oBAAC,aAAD,EAAA,UAAa,mBAA6B,CAAA,GAC1C,oBAAC,mBAAD;IAAmB,WAAU;IAAc,UAAA;GAExB,CAAA,CACN,EAAA,CAAA,GACd,oBAAC,OAAD;IAAK,WAAU;IACd,UAAA,oBAACC,OAAD;KAAS,WAAU;KAAyC,QAAQ,CAAC,SAAS,OAAO;KAAG,MAAM;IAAK,CAAA;GAC/F,CAAA,CACS;;CACR,CAAA;AAEV;AAEA,SAAS,uBAAuB;CAC/B,MAAM,CAAC,OAAO,YAAY,SAAwB,YAAY;CAC9D,MAAM,CAAC,QAAQ,aAAa,SAAS,EAAE;CACvC,MAAM,CAAC,UAAU,eAAe,SAA6B,KAAK;CAClE,MAAM,CAAC,SAAS,cAAc,SAAsB,CAAC,CAAC;CACtD,MAAM,CAAC,WAAW,gBAAgB,SAAyD;EAC1F,MAAM,KAAA;EACN,IAAI,KAAA;CACL,CAAC;CACD,MAAM,CAAC,SAAS,cAAc,SAAmB,CAAC,KAAK,CAAC;CACxD,MAAM,CAAC,UAAU,eAAe,SAA6B,KAAK;CAClE,MAAM,CAAC,SAAS,cAAc,SAAS,EAAE;CACzC,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,KAAK;CAC1D,MAAM,CAAC,aAAa,kBAAkB,SAA2B;CACjE,MAAM,CAAC,gBAAgB,qBAAqB,SAAwC,gBAAgB;CAGpG,MAAM,CAAC,WAAW,gBAAgB,SAAoC,IAAI;CAC1E,MAAM,CAAC,gBAAgB,qBAAqB,SAA6B;CACzE,MAAM,CAAC,YAAY,iBAAiB,SAAqB;EAAC,UAAU;EAAI,SAAS;EAAI,MAAM;EAAI,WAAW;CAAE,CAAC;CAC7G,MAAM,CAAC,cAAc,mBAAmB,SAA6B;CACrE,MAAM,CAAC,eAAe,oBAAoB,SAA6B;CAGvE,MAAM,eAAe,KAAyB,WAAwB;EACrE,kBAAkB,OAAO,EAAE;EAC3B,aAAa,GAAG;EAChB,cAAc;GACb,UAAU,OAAO,aAAa,mBAAmB,KAAK,OAAO;GAC7D,SAAS,OAAO,WAAW;GAC3B,MAAM;GACN,WAAW,QAAQ,UAAW,OAAO,YAAY,KAAO,OAAO,cAAc;EAC9E,CAAC;CACF;CAEA,MAAM,oBAAoB;EACzB,aAAa,IAAI;EACjB,kBAAkB,KAAA,CAAS;CAC5B;CAGA,MAAM,sBAAsB;EAC3B,IAAI,CAAC,aAAa,CAAC,gBAAgB;EACnC,MAAM,MAAM;EACZ,MAAM,WAAW;EACjB,IAAI,QAAQ,UAAU;GACrB,UAAU,SAAS,KAAK,QAAQ,MAAM,EAAE,OAAO,QAAQ,CAAC;GACxD,YAAY,SAAS,KAAK,QAAQ,MAAM,MAAM,QAAQ,CAAC;GACvD,IAAI,aAAa,UAAU,YAAY,KAAA,CAAS;GAChD,YAAY;GACZ;EACD;EACA,MAAM,SAAS,KAAK,IAAI,QAAQ;EAChC,MAAM,YAAY,WAAW;EAC7B,UAAU,SACT,KAAK,KAAK,MAAM;GACf,IAAI,EAAE,OAAO,UAAU,OAAO;GAC9B,MAAM,UAAU,WAAW,WAAW,EAAE;GACxC,MAAM,WAAY,WAAW,YAAY,EAAE;GAC3C,QAAQ,KAAR;IACC,KAAK,QACJ,OAAO;KACN,GAAG;KACH,QAAQ;KACR;KACA,UAAU,EAAE,iBAAiB,EAAE,WAAW;KAC1C,YAAY,aAAa,EAAE;IAC5B;IACD,KAAK,eACJ,OAAO;KAAC,GAAG;KAAG,QAAQ;KAAU;IAAO;IACxC,KAAK,kBACJ,OAAO;KAAC,GAAG;KAAG,QAAQ;KAAU,eAAe;IAAI;IACpD,KAAK,mBACJ,OAAO;KAAC,GAAG;KAAG;IAAQ;IACvB,KAAK,eACJ,OAAO;KAAC,GAAG;KAAG;IAAO;IACtB,KAAK,SACJ,OAAO;KAAC,GAAG;KAAG,QAAQ;KAAU;KAAS,UAAU,aAAa,EAAE;IAAQ;IAC3E,KAAK,UAEJ,OAAO;KAAC,GAAG;KAAG,QAAQ;KAAQ;KAAU,eAAe;KAAO,UAAU,KAAA;IAAS;IAClF,SACC,OAAO;GACT;EACD,CAAC,CACF;EAGA,IAAI,QAAQ;GACX,MAAM,UAAU,sBAAsB,KAAK,YAAY,MAAM;GAC7D,IAAI,SAAS;IACZ,MAAM,OACL,QAAQ,UAAU,YAAY,QAAQ,iBAAiB,QAAQ,mBAAmB,UAAU;IAC7F,mBAAmB,UAAU;KAC5B,GAAG;MACF,WAAW,CACX,eAAe,KAAK,SAAS,IAAI,KAAK,SAAS,EAAE,UAAU,KAAK,SAAS,YAAY,IAAI,GACzF,GAAI,KAAK,aAAa,CAAC,CACxB;IACD,EAAE;GACH;EACD;EAEA,YAAY;CACb;CAGA,MAAM,iBAAiB,YAAoB,gBAC1C,YAAY,SAAS;EACpB,MAAM,QAAQ,KAAK,eAAe,CAAC,EAAA,CAAG,QAAQ,MAAM,MAAM,WAAW;EACrE,MAAM,OAAO,EAAC,GAAG,KAAI;EACrB,IAAI,KAAK,WAAW,GAAG,OAAO,KAAK;OAC9B,KAAK,cAAc;EACxB,OAAO;CACR,CAAC;CAEF,MAAM,gBAAgB,YAAoB,gBACzC,eAAe,WAAY,aAAa,gBAAqC,cAAe;CAI7F,MAAM,gBAAgB,UAAU,OAC7B,UAAU,KACT,GAAG,OAAO,UAAU,MAAM,WAAW,EAAE,KAAK,OAAO,UAAU,IAAI,WAAW,MAC5E,OAAO,UAAU,MAAM,WAAW,IACnC,KAAA;CAEH,MAAM,uBAAuB,aAAa;EAAC,MAAM,KAAA;EAAW,IAAI,KAAA;CAAS,CAAC;CAE1E,MAAM,YAAyB,gBAAgB;EAAC,GAAG;EAAS,MAAM,CAAC,aAAa;CAAC,IAAI;CAErF,MAAM,qBAAqB,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,KAAK,WAAW,MAAM,OAAO,QAAQ,CAAC;CAElG,MAAM,OAAO,cAAc,IAAI,IAAI,MAAM,KAAK,gBAAgB,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;CAEtG,MAAM,UAAU,cACT;EACL;GAAC,IAAI;GAAO,OAAO;GAAO,OAAO,MAAM;EAAM;EAC7C;GAAC,IAAI;GAAW,OAAO;GAAW,OAAO,MAAM,QAAQ,MAAM,EAAE,WAAW,SAAS,CAAC,CAAC;EAAM;EAC3F;GAAC,IAAI;GAAQ,OAAO;GAAQ,OAAO,MAAM,QAAQ,MAAM,EAAE,WAAW,MAAM,CAAC,CAAC;EAAM;EAClF;GAAC,IAAI;GAAU,OAAO;GAAU,OAAO,MAAM,QAAQ,MAAM,EAAE,WAAW,QAAQ,CAAC,CAAC;EAAM;CACzF,GACA,CAAC,KAAK,CACP;CAEA,MAAM,eAAkC,cAEtC,MACE,QAAQ,MAAM;EACd,IAAI,aAAa,KAAA,KAAa,aAAa,SAAS,EAAE,WAAW,UAAU,OAAO;EAElF,OADiB,GAAG,EAAE,MAAM,GAAG,EAAE,cAAc,YACjC,CAAC,CAAC,SAAS,OAAO,YAAY,CAAC;CAC9C,CAAC,CAAC,CACD,KAAK,OAAO;EACZ,IAAI,EAAE;EACN,OAAO,EAAE;EACT,UAAU,EAAE;EAGZ,MACC,EAAE,eAAe,KAAA,IAChB,oBAAC,UAAD;GACC,MAAK;GACL,cAAY,QAAQ,EAAE,WAAW;GACjC,UAAU,MAAM;IACf,EAAE,gBAAgB;IAClB,gBAAgB,EAAE,EAAE;GACrB;GACA,WAAU;GAEV,UAAA,oBAAC,QAAD,EAAQ,WAAU,sBAAuB,CAAA;EAClC,CAAA,IACL,KAAA;CACN,EAAE,GACJ;EAAC;EAAO;EAAU;CAAM,CACzB;CAEA,MAAM,SAAS,aAAa,KAAA,IAAY,KAAK,IAAI,QAAQ,IAAI,KAAA;CAC7D,MAAM,eAAe,mBAAmB,KAAA,IAAa,KAAK,IAAI,cAAc,KAAK,OAAQ;CACzF,MAAM,gBAAgB,iBAAiB,KAAA,IAAa,KAAK,IAAI,YAAY,KAAK,OAAQ;CACtF,MAAM,iBAAiB,kBAAkB,KAAA,IAAa,KAAK,IAAI,aAAa,KAAK,OAAQ;CAGzF,MAAM,cAAc,OAA2B;EAC9C,YAAY,EAAE;EACd,IAAI,OAAO,KAAA,GAAW,UAAU,SAAS,KAAK,KAAK,MAAO,EAAE,OAAO,KAAK;GAAC,GAAG;GAAG,QAAQ;EAAI,IAAI,CAAE,CAAC;CACnG;CAEA,OACC,qBAAA,YAAA,EAAA,UAAA;EACC,oBAAC,aAAD;GACC,WAAU;GACV,UAAS;GACT,WAAU;GACV,OAAO;GACC;GACR,gBAAgB;GAChB,mBAAkB;GAClB,iBAEC,OAAO,KAAK,SAAS,CAAC,CAAC,SAAS,IAC/B,oBAAC,aAAD;IACC,OAAO;IACP,WAAW,YAAY,gBAAgB;KACtC,IAAI,eAAe,QAAQ,eAAe;UACrC,cAAc,YAAY,WAAW;IAC3C;IACA,eAAe;KACd,WAAW,CAAC,CAAC;KACb,eAAe;IAChB;IACA,aAAa;GACb,CAAA,IACE,KAAA;GAEL,cACC,qBAAA,YAAA,EAAA,UAAA;IAEC,oBAAC,sBAAD;KACC,SACC,oBAAC,QAAD;MAAQ,SAAQ;MAAU,MAAA;MAAK,cAAW;MAAkB,SAAQ;MACnE,UAAA,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA;KAC5B,CAAA;KAET,OAAO;KACP,YAAY;KACZ,SAAS;KACT,cAAc,KAAA;IACd,CAAA;IACD,oBAAC,cAAD;KACC,SACC,oBAAC,QAAD;MAAQ,SAAQ;MAAU,MAAA;MAAK,cAAW;MAAS,SAAQ;MAC1D,UAAA,oBAAC,UAAD,EAAU,WAAU,kBAAmB,CAAA;KAChC,CAAA;KAET,WAAW;KACX,mBAAmB;KACnB,kBAAkB;KAClB,wBAAwB,KAAA;IACxB,CAAA;IAED,oBAAC,qBAAD;KACC,UAAA;KACA,cAAW;KACX,SAAQ;KACG;KACX,mBAAmB;IACnB,CAAA;IACD,qBAACC,UAAD;KAAQ,OAAO;KAAS,UAAU;KAAlC,UAAA,CACC,oBAAC,eAAD,CAAgB,CAAA,GAChB,qBAAC,eAAD,EAAA,UAAA;MACC,oBAAC,gBAAD;OAAgB,OAAM;OAAW,OAAM;OACrC,UAAA,WAAW,KAAK,aAChB,oBAAC,cAAD;QAA6B,OAAO;QAClC,UAAA;OACY,GAFK,QAEL,CACd;MACc,CAAA;MAChB,oBAAC,gBAAD;OAAgB,OAAM;OAAS,OAAM;OACnC,UAAA,QAAQ,KAAK,WACb,oBAAC,cAAD;QAA2B,OAAO;QAChC,UAAA;OACY,GAFK,MAEL,CACd;MACc,CAAA;MAChB,oBAAC,gBAAD;OAAgB,OAAM;OAAW,OAAM;OACrC,UAAA,uBAAuB,KAAK,aAC5B,oBAAC,cAAD;QAA6B,OAAO;QAClC,UAAA;OACY,GAFK,QAEL,CACd;MACc,CAAA;MAChB,oBAAC,gBAAD;OAAgB,OAAM;OAAU,OAAM;OACpC,UAAA,UAAU,KAAK,YACf,oBAAC,cAAD;QAA4B,OAAO;QACjC,UAAA;OACY,GAFK,OAEL,CACd;MACc,CAAA;KACF,EAAA,CAAA,CACR;;GACP,EAAA,CAAA;GAEH,gBAAgB,MAAM,eAAe;IACpC,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE;IAC1B,IAAI,CAAC,GAAG,OAAO;IACf,OACC,qBAAC,MAAD;KACC,WAAW,GACV,kFACA,aAAa,qCAAqC,0CACnD;KAJD,UAAA;MAOC,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA;QACE,CAAC,EAAE,UACH,oBAAC,QAAD;SACC,cAAW;SACX,WAAU;QACV,CAAA;QAEF,oBAAC,QAAD;SAAM,WAAU;SAAqD,UAAA,EAAE;QAAY,CAAA;QAClF,EAAE,eAAe,KAAA,KACjB,oBAAC,UAAD;SACC,MAAK;SACL,UAAU,MAAM;UAEf,EAAE,gBAAgB;UAClB,gBAAgB,EAAE,EAAE;SACrB;SACA,WAAU;SAEV,UAAA,qBAAC,OAAD;UAAO,SAAQ;UAAU,WAAU;UAAnC,UAAA;WACC,oBAAC,QAAD,EAAQ,WAAU,kBAAmB,CAAA;WAAC;WAAE,EAAE;UACpC;;QACA,CAAA;QAGT,oBAAC,OAAD;SAAO,SAAQ;SAAc,WAAU;SACrC,UAAA,aAAa,EAAE;QACV,CAAA;QACN,EAAE,iBACF,oBAAC,OAAD;SAAO,SAAQ;SAAa,WAAU;SAAsC,UAAA;QAErE,CAAA;QAER,oBAAC,QAAD;SAAM,WAAU;SAAkE,UAAA,EAAE;QAAgB,CAAA;OAChG;;MAEL,oBAAC,KAAD;OAAG,WAAU;OAAyC,UAAA,EAAE;MAAe,CAAA;MAGvE,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA;QACC,qBAAC,QAAD;SAAM,WAAU;SAAhB,UAAA,CAAwD,YAC/C,oBAAC,QAAD;UAAM,WAAU;UAAuB,UAAA,EAAE;SAAa,CAAA,CACzD;;QACN,qBAAC,QAAD;SAAM,WAAU;SAAhB,UAAA;UAAwD;UAC9C;UACT,oBAAC,QAAD;WAAM,WAAW,EAAE,UAAU,wBAAwB;WACnD,UAAA,EAAE,WAAW;UACT,CAAA;SACD;;QACN,oBAAC,OAAD;SACC,SAAS,gBAAgB,EAAE,QAAQ;SACnC,WAAU;SAET,UAAA,EAAE;QACG,CAAA;OACH;;MAGJ,EAAE,WAAW,UACb,oBAAC,OAAD;OAAK,WAAU;OACb,UAAA,EAAE,aACF,qBAAA,YAAA,EAAA,UAAA;QACC,oBAAC,WAAD,EAAW,WAAU,+BAAgC,CAAA;QAAC;QAC1C,oBAAC,QAAD;SAAM,WAAU;SAAuC,UAAA,EAAE;QAAiB,CAAA;OACrF,EAAA,CAAA,IAEF,qBAAA,YAAA,EAAA,UAAA,CACC,oBAAC,UAAD,EAAU,WAAU,+BAAgC,CAAA,GACpD,oBAAC,QAAD;QAAM,WAAU;QAA0C,UAAA;OAAsB,CAAA,CAC/E,EAAA,CAAA;MAEC,CAAA;MAEL,EAAE,WAAW,YACb,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACC,oBAAC,cAAD,EAAc,WAAU,+BAAgC,CAAA,GACvD,EAAE,WACF,qBAAA,YAAA,EAAA,UAAA,CAAE,cACS,oBAAC,QAAD;QAAM,WAAU;QAAuC,UAAA,EAAE;OAAe,CAAA,CACjF,EAAA,CAAA,IAEF,oBAAC,QAAD;QAAM,WAAU;QAA0C,UAAA;OAA8B,CAAA,CAErF;;KAED;;GAER;GACS;GACT,gBAAgB;GAChB,sBAAsB;GACtB,aAAa;GACb,cAAc;GACd,oBAAoB;GACpB,aAAa,OAAO,YAAY,SAAU,KAAK,SAAS,EAAE,IAAI,OAAO,CAAC,GAAG,MAAM,EAAE,CAAE;GACnF,cAAc,OAAO;IACpB,YAAY,SAAS;KACpB,MAAM,OAAO,KAAK,QAAQ,MAAM,MAAM,EAAE;KAExC,IAAI,aAAa,IAAI,YAAY,KAAK,EAAE;KACxC,OAAO;IACR,CAAC;GACF;GACA,WAAW;GACX,iBAAiB,SAAS;IACzB,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE;IAC1B,IAAI,CAAC,GAAG,OAAO;IAEf,MAAM,cAAc,EAAE,WAAW;IACjC,OACC,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACC,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA;QACC,oBAAC,MAAD;SAAI,WAAU;SAAmC,UAAA,EAAE;QAAU,CAAA;QAC7D,oBAAC,OAAD;SAAO,SAAS,cAAc,EAAE,MAAM;SAAI,UAAA,aAAa,EAAE;QAAe,CAAA;QACvE,EAAE,iBAAiB,oBAAC,OAAD;SAAO,SAAQ;SAAa,UAAA;QAAqB,CAAA;QAErE,qBAAC,OAAD;SAAK,WAAU;SAAf,UAAA;UACC,oBAAC,QAAD;WAAQ,SAAQ;WAAQ,MAAA;WAAK,cAAW;WAAY,SAAQ;WAAY,WAAU;WACjF,UAAA,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA;UAC5B,CAAA;UACR,oBAAC,QAAD;WAAQ,SAAQ;WAAQ,MAAA;WAAK,cAAW;WAAQ,SAAQ;WAAQ,WAAU;WACzE,UAAA,oBAAC,QAAD,EAAQ,WAAU,kBAAmB,CAAA;UAC9B,CAAA;UACP,eACA,oBAAC,QAAD;WACC,SAAQ;WACR,MAAA;WACA,cAAW;WACX,SAAQ;WACR,WAAU;WAEV,UAAA,oBAAC,UAAD,EAAU,WAAU,kBAAmB,CAAA;UAChC,CAAA;SAEL;;OACD;;MACL,oBAAC,KAAD;OAAG,WAAU;OAAyC,UAAA,EAAE;MAAe,CAAA;MAEvE,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,EAAE,eAAe,KAAA,KACjB,qBAAC,QAAD;QAAQ,SAAQ;QAAU,MAAK;QAAK,eAAe,gBAAgB,EAAE,EAAE;QAAvE,UAAA;SACC,oBAAC,QAAD,EAAQ,WAAU,kBAAmB,CAAA;SAAC;SAC5B,EAAE;QACL;OAET,CAAA,GAAA,qBAAC,QAAD;QAAQ,SAAQ;QAAU,MAAK;QAAK,eAAe,iBAAiB,EAAE,EAAE;QAAxE,UAAA,CACC,oBAAC,QAAD,EAAQ,WAAU,kBAAmB,CAAA,GAAC,kBAE/B;OACJ,CAAA,CAAA;;MACL,oBAAC,KAAD;OAAG,WAAU;OAAc,UAAA;MAA6E,CAAA;KACpG;;GAEP;GACA,UAAU,aAAa,KAAA,IAAa,eAAe,aAAa,CAAC,IAAK,CAAC;GACvE,cAAc;GACd,sBAAsB;GACtB,oBAAmB;GACH;GAChB,wBAAwB;GACX;GACb,qBAAqB;GACrB,kBAAkB,MAAM,eAAe;IACtC,MAAM,OAAoB;KACzB,IAAI,KAAK,KAAK,GAAG,GAAG,eAAe,KAAK,GAAG,EAAE,UAAU;KACvD,QAAQ;MAAC,MAAM;MAAO,UAAU;KAAG;KACnC,WAAW;KACX,MAAM,WAAW;KACjB,QAAQ,WAAW,UAChB,CAAC;MAAC,IAAI;MAAQ,MAAM,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA;MAAG,OAAO;MAAW,MAAM;KAAS,CAAC,IAC5F,CAAC;IACL;IACA,mBAAmB,UAAU;KAAC,GAAG;MAAO,KAAK,KAAK,CAAC,MAAM,GAAI,KAAK,KAAK,OAAO,CAAC,CAAE;IAAC,EAAE;IACpF,WAAW,EAAE;IACb,kBAAkB,KAAK;IACvB,eAAe,KAAA,CAAS;GACzB;GACA,kBAAkB,QAAQ;GAC1B,wBAAwB,QAAQ;GAChC,sBAAsB,SAAS;IAC9B,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE;IAC1B,IAAI,CAAC,GAAG,OAAO;IACf,OACC,qBAAC,OAAD,EAAA,UAAA;KACC,oBAAC,WAAD;MAAW,OAAM;MAAS,OAAO,EAAE;KAAS,CAAA;KAC5C,oBAAC,WAAD;MAAW,OAAM;MAAU,OAAO,EAAE,WAAW;KAAmB,CAAA;KAClE,oBAAC,WAAD;MACC,OAAM;MACN,OAAO,oBAAC,OAAD;OAAO,SAAS,cAAc,EAAE,MAAM;OAAI,UAAA,aAAa,EAAE;MAAe,CAAA;KAC/E,CAAA;KACD,oBAAC,WAAD;MAAW,OAAM;MAAW,OAAO,oBAAC,OAAD;OAAO,SAAS,gBAAgB,EAAE,QAAQ;OAAI,UAAA,EAAE;MAAgB,CAAA;KAAI,CAAA;KACtG,EAAE,WAAW,UACb,oBAAC,WAAD;MACC,OAAM;MACN,OACC,EAAE,cACD,oBAAC,QAAD;OAAM,WAAU;OAA0D,UAAA;MAAsB,CAAA;KAGlG,CAAA;KAED,EAAE,WAAW,YACb,oBAAC,WAAD;MACC,OAAM;MACN,OACC,EAAE,YACD,oBAAC,QAAD;OAAM,WAAU;OAA0D,UAAA;MAEpE,CAAA;KAGR,CAAA;KAEF,oBAAC,WAAD;MAAW,OAAM;MAAU,OAAO,EAAE;KAAY,CAAA;IAC5C,EAAA,CAAA;GAEP;GACA,eACC,gBACU;IACP,MAAM,MAAM,oBAAoB,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,eAAe;IAC5B,OAAO;KAAC,IAAI;KAAK,OAAO,KAAK;KAAO,MAAM,KAAK;KAAM,gBAAgB,YAAY,KAAK,MAAM;IAAC;GAC9F,EAAA,CAAG,IACF,KAAA;GAEJ,kBACC,SACG,oBAAoB,MAAM,CAAC,CAAC,UAAU,KAAK,QAAQ;IACnD,MAAM,OAAO,eAAe;IAC5B,OAAO;KACN,IAAI;KACJ,OAAO,KAAK;KACZ,MAAM,KAAK;KACX,MAAM,KAAK;KACX,gBAAgB,YAAY,KAAK,MAAM;IACxC;GACD,CAAC,IACA,KAAA;EAEJ,CAAA;EAED,oBAAC,yBAAD;GACC,aAAa;GACF;GACX,MAAM;GACN,eAAe,UAAU,eAAe,UAAU;IAAC,GAAG;IAAM,GAAG;GAAK,EAAE;GACtE,WAAW;GACX,UAAU;EACV,CAAA;EACD,oBAAC,2BAAD;GAA2B,aAAa;GAAe,eAAe,gBAAgB,KAAA,CAAS;EAAI,CAAA;EACnG,oBAAC,gBAAD;GAAgB,aAAa;GAAgB,eAAe,iBAAiB,KAAA,CAAS;EAAI,CAAA;CACzF,EAAA,CAAA;AAEJ;AAOA,MAAM,sBAA2C;CAAC;CAAO;CAAW;CAAO;CAAU;AAAS;AAkC9F,MAAM,aAA0B;CAC/B;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,eAAe;EACf,oBAAoB;EACpB,cAAc;GAAC,KAAK;GAAG,SAAS;GAAG,KAAK;GAAG,QAAQ;GAAG,SAAS;EAAC;EAChE,SAAS;EACT,cAAc;EACd,WAAW;GAAC;GAAM;GAAa;GAAa;EAAS;EACrD,iBAAiB;EACjB,OAAO;EACP,UAAU;EACV,oBAAoB,CAAC,mBAAmB,gBAAgB;EACxD,oBAAoB;CACrB;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,eAAe;EACf,oBAAoB;EACpB,cAAc;GAAC,KAAK;GAAG,SAAS;GAAG,KAAK;GAAG,QAAQ;GAAG,SAAS;EAAC;EAChE,SAAS;EACT,cAAc;EACd,WAAW,CAAC,MAAM,WAAW;EAC7B,iBAAiB;EACjB,OAAO;EACP,UAAU;EACV,oBAAoB,CAAC,iBAAiB;EACtC,oBAAoB;CACrB;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,eAAe;EACf,oBAAoB;EACpB,cAAc;GAAC,KAAK;GAAG,SAAS;GAAG,KAAK;GAAG,QAAQ;GAAG,SAAS;EAAC;EAChE,SAAS;EACT,cAAc;EACd,WAAW,CAAC,IAAI;EAChB,iBAAiB;EACjB,OAAO;EACP,UAAU;EACV,oBAAoB,CAAC,iBAAiB;EACtC,oBAAoB;CACrB;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,eAAe;EACf,oBAAoB;EACpB,cAAc;GAAC,KAAK;GAAG,SAAS;GAAG,KAAK;GAAG,QAAQ;GAAG,SAAS;EAAC;EAChE,SAAS;EACT,cAAc;EACd,WAAW;GAAC;GAAM;GAAa;EAAW;EAC1C,iBAAiB;EACjB,OAAO;EACP,UAAU;EACV,oBAAoB,CAAC,mBAAmB,gBAAgB;EACxD,oBAAoB;CACrB;CACA;EAEC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,eAAe;EACf,oBAAoB;EACpB,cAAc;GAAC,KAAK;GAAG,SAAS;GAAG,KAAK;GAAG,QAAQ;GAAG,SAAS;EAAC;EAChE,SAAS;EACT,cAAc;EACd,WAAW;GAAC;GAAM;GAAa;GAAa;GAAW;EAAQ;EAC/D,iBAAiB;EACjB,OAAO;EACP,UAAU;EACV,oBAAoB,CAAC,mBAAmB,gBAAgB;EACxD,oBAAoB;CACrB;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,eAAe;EACf,oBAAoB;EACpB,cAAc;GAAC,KAAK;GAAG,SAAS;GAAG,KAAK;GAAG,QAAQ;GAAG,SAAS;EAAC;EAChE,SAAS;EACT,cAAc;EACd,WAAW,CAAC,MAAM,WAAW;EAC7B,iBAAiB;EACjB,OAAO;EACP,UAAU;EACV,oBAAoB,CAAC,iBAAiB;EACtC,oBAAoB;CACrB;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,aAAa;EACb,cAAc;EACd,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,eAAe;EACf,oBAAoB;EACpB,cAAc;GAAC,KAAK;GAAG,SAAS;GAAG,KAAK;GAAG,QAAQ;GAAG,SAAS;EAAC;EAChE,SAAS;EACT,cAAc;EACd,WAAW,CAAC,IAAI;EAChB,iBAAiB;EACjB,OAAO;EACP,UAAU;EACV,oBAAoB,CAAC,iBAAiB;EACtC,oBAAoB;CACrB;AACD;AAIA,MAAM,iBAA8B;CACnC;EAAC,OAAO;EAAqB,OAAO;EAAI,MAAM;CAAW;CACzD;EAAC,OAAO;EAAqB,OAAO;EAAG,MAAM;CAAW;CACxD;EAAC,OAAO;EAAsB,OAAO;EAAY,MAAM;CAAK;CAC5D;EAAC,OAAO;EAAyB,OAAO;EAAS,MAAM;EAAK,MAAM;CAAK;CACvE;EAAC,OAAO;EAAsB,OAAO;EAAG,MAAM;CAAG;AAClD;AAMA,MAAM,mBAA0C;CAC/C;EAAC,IAAI;EAAS,OAAO;CAAO;CAC5B;EAAC,IAAI;EAAM,OAAO;CAAQ;CAC1B;EAAC,IAAI;EAAO,OAAO;CAAS;CAC5B;EAAC,IAAI;EAAO,OAAO;CAAK;AACzB;;AAGA,SAAS,YAAY,EAAC,UAA4B;CACjD,OACC,oBAAC,QAAD;EACC,eAAA;EACA,WAAW,GACV,iHACA,SAAS,qBAAqB,yBAC/B;CACA,CAAA;AAEH;;;AAIA,SAAS,SAAS,EAAC,OAAO,SAAiD;CAC1E,OACC,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACC,oBAAC,OAAD;GAAK,WAAU;GAAkD,UAAA;EAAW,CAAA,GAC5E,oBAAC,KAAD;GAAG,WAAU;GAAkD,UAAA;EAAS,CAAA,CACpE;;AAEP;;;AAIA,SAAS,qBAAqB,EAAC,OAAO,YAA+D;CACpG,OACC,oBAAC,MAAD;EAAM,OAAO;EAAO,eAAe;EAClC,UAAA,oBAAC,UAAD,EAAA,UACE,iBAAiB,KAAK,WACtB,oBAAC,aAAD;GAA6B,OAAO,OAAO;GACzC,UAAA,OAAO;EACI,GAFK,OAAO,EAEZ,CACb,EACQ,CAAA;CACL,CAAA;AAER;;AAGA,SAAS,kBAAkB,EAAC,QAAkD;CAC7E,OACC,oBAAC,OAAD;EAAK,WAAU;EACb,UAAA,oBAAoB,KAAK,aACzB,qBAAC,OAAD;GAAoB,WAAU;GAA9B,UAAA,CACC,oBAAC,OAAD;IAAK,WAAU;IAAkD,UAAA,KAAK;GAAe,CAAA,GACrF,oBAAC,KAAD;IAAG,WAAU;IAAkD,UAAA;GAAY,CAAA,CACvE;EAHK,GAAA,QAGL,CACL;CACG,CAAA;AAEP;;AAGA,SAAS,gBAAgB,EAAC,OAAO,SAAiD;CACjF,OACC,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACC,qBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CAA0D,OAAM,GAAO;EACvE,CAAA,GAAA,oBAAC,QAAD;GAAM,WAAU;GAAkC,UAAA;EAAY,CAAA,CAC1D;;AAEP;AAIA,SAAS,iBAAiB,QAAgE;CACzF,OAAO;EACN;GACC,aAAa;GACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAQ,CAAA;GAC3E,OAAO,EAAC,UAAS;IAChB,MAAM,IAAI,IAAI;IACd,OACC,qBAAC,UAAD;KACC,MAAK;KACL,eAAe,OAAO,CAAC;KACvB,WAAU;KAHX,UAAA,CAKC,qBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA,CACC,oBAAC,QAAD;OAAQ,WAAU;OACjB,UAAA,oBAAC,gBAAD;QAAgB,WAAU;QAAe,UAAA,EAAE;OAAyB,CAAA;MAC7D,CAAA,GACR,oBAAC,aAAD,EAAa,QAAQ,EAAE,OAAS,CAAA,CAC3B;KACN,CAAA,GAAA,oBAAC,QAAD;MAAM,WAAU;MAAmB,UAAA,EAAE;KAAW,CAAA,CACzC;;GAEV;EACD;EACA;GAAC,aAAa;GAAa,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAc,CAAA;EAAC;EAC7G;GAAC,aAAa;GAAc,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAe,CAAA;EAAC;EAC/G;GACC,aAAa;GACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAuB,CAAA;EAC3F;EACA;GACC,aAAa;GACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAiB,CAAA;EACrF;EACA;GACC,aAAa;GACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAyB,CAAA;EAC7F;EACA;GAAC,aAAa;GAAc,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAgB,CAAA;EAAC;EAChH;GACC,aAAa;GACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAyB,CAAA;EAC7F;EACA;GACC,aAAa;GACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAS,CAAA;GAC5E,OAAO,EAAC,UACP,oBAAC,QAAD;IAAM,WAAU;IAA2C,OAAO,IAAI,SAAS;IAC7E,UAAA,IAAI,SAAS;GACT,CAAA;EAER;EACA;GACC,aAAa;GACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAW,CAAA;GAC9E,OAAO,EAAC,UACP,oBAAC,QAAD;IAAM,WAAU;IAA2C,OAAO,IAAI,SAAS;IAC7E,UAAA,IAAI,SAAS;GACT,CAAA;EAER;EACA;GACC,aAAa;GACb,eAAe;GACf,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAW,CAAA;GAE9E,OAAO,EAAC,UAAS;IAChB,MAAM,IAAI,IAAI;IACd,OACC,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,EAAE,UAAU,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,YAC7B,oBAAC,OAAD;MAAqB,SAAQ;MAAc,WAAU;MACnD,UAAA;KACK,GAFK,OAEL,CACP,GACA,EAAE,kBAAkB,KACpB,qBAAC,OAAD;MAAO,SAAQ;MAAU,WAAU;MAAnC,UAAA,CAAyE,KACtE,EAAE,eACE;KAEJ,CAAA,CAAA;;GAEP;EACD;EACA;GACC,aAAa;GACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;IAA+B;IAAQ,OAAM;GAAS,CAAA;GAC5E,OAAO,EAAC,UACP,oBAAC,QAAD;IAAM,WAAU;IAA2C,OAAO,IAAI,SAAS;IAC7E,UAAA,IAAI,SAAS;GACT,CAAA;EAER;EACA;GACC,IAAI;GACJ,eAAe;GACf,cAAc;GACd,MAAM,EAAC,eAAe,gDAA+C;GACrE,OAAO,EAAC,UACP,oBAAC,qBAAD,EACC,SAAS,CACR;IACC,OAAO;IACP,MAAM,oBAAC,WAAD,EAAW,WAAU,kBAAmB,CAAA;IAC9C,gBAAgB,OAAO,IAAI,QAAQ;GACpC,CACD,EACA,CAAA;EAEH;CACD;AACD;AAqBA,MAAM,cAA4B;CACjC;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,UAAU;EACV,WAAW,CAAC,KAAK;EACjB,iBAAiB;EACjB,OAAO;CACR;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,UAAU;EACV,WAAW,CAAC,MAAM,SAAS;EAC3B,iBAAiB;EACjB,OAAO;CACR;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,UAAU;EACV,WAAW,CAAC,MAAM,SAAS;EAC3B,iBAAiB;EACjB,OAAO;CACR;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,UAAU;EACV,WAAW,CAAC,KAAK;EACjB,iBAAiB;EACjB,OAAO;CACR;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,UAAU;EACV,WAAW,CAAC,UAAU,oBAAoB;EAC1C,iBAAiB;EACjB,OAAO;CACR;CACA;EACC,IAAI;EACJ,MAAM;EACN,UAAU;EACV,QAAQ;EACR,WAAW;EACX,MAAM;EACN,OAAO;EACP,UAAU;EACV,WAAW,CAAC,KAAK;EACjB,iBAAiB;EACjB,OAAO;CACR;AACD;AAGA,SAAS,iBAAiB,EAAC,WAAW,mBAAkE;CACvG,IAAI,oBAAoB,KAAK,UAAU,WAAW,KAAK,UAAU,OAAO,OACvE,OAAO,oBAAC,QAAD;EAAM,WAAU;EAA4B,UAAA;CAAS,CAAA;CAE7D,OACC,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,UAAU,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,YAC3B,oBAAC,OAAD;GAAqB,SAAQ;GAAc,WAAU;GACnD,UAAA;EACK,GAFK,OAEL,CACP,GACA,kBAAkB,KAClB,qBAAC,OAAD;GAAO,SAAQ;GAAU,WAAU;GAAnC,UAAA,CAAyE,KACtE,eACI;EAEJ,CAAA,CAAA;;AAEP;AAEA,MAAM,qBAA8C;CACnD;EACC,aAAa;EACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAQ,CAAA;EAC3E,OAAO,EAAC,UAAS;GAChB,MAAM,IAAI,IAAI;GACd,OACC,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACC,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACC,oBAAC,QAAD;MAAQ,WAAU;MACjB,UAAA,oBAAC,gBAAD;OAAgB,WAAU;OAAe,UAAA,EAAE;MAAyB,CAAA;KAC7D,CAAA,GACR,oBAAC,aAAD,EAAa,QAAQ,EAAE,OAAS,CAAA,CAC3B;IACN,CAAA,GAAA,oBAAC,QAAD;KAAM,WAAU;KAAmB,UAAA,EAAE;IAAW,CAAA,CAC5C;;EAEP;CACD;CACA;EAAC,aAAa;EAAa,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAc,CAAA;CAAC;CAC7G;EAAC,aAAa;EAAQ,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAQ,CAAA;CAAC;CAClG;EACC,aAAa;EACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAS,CAAA;EAC5E,OAAO,EAAC,UACP,oBAAC,QAAD;GAAM,WAAU;GAA2C,OAAO,IAAI,SAAS;GAC7E,UAAA,IAAI,SAAS;EACT,CAAA;CAER;CACA;EACC,aAAa;EACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAW,CAAA;EAC9E,OAAO,EAAC,UACP,oBAAC,QAAD;GAAM,WAAU;GAA2C,OAAO,IAAI,SAAS;GAC7E,UAAA,IAAI,SAAS;EACT,CAAA;CAER;CACA;EACC,aAAa;EACb,eAAe;EACf,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAW,CAAA;EAC9E,OAAO,EAAC,UACP,oBAAC,kBAAD;GAAkB,WAAW,IAAI,SAAS;GAAW,iBAAiB,IAAI,SAAS;EAAkB,CAAA;CAEvG;CACA;EACC,aAAa;EACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAS,CAAA;EAC5E,OAAO,EAAC,UACP,oBAAC,QAAD;GAAM,WAAU;GAA2C,OAAO,IAAI,SAAS;GAC7E,UAAA,IAAI,SAAS;EACT,CAAA;CAER;CACA;EACC,IAAI;EACJ,eAAe;EACf,cAAc;EACd,MAAM,EAAC,eAAe,gDAA+C;EACrE,YACC,oBAAC,qBAAD,EACC,SAAS,CAAC;GAAC,OAAO;GAAQ,MAAM,oBAAC,WAAD,EAAW,WAAU,kBAAmB,CAAA;GAAG,gBAAgB,KAAA;EAAS,CAAC,EACrG,CAAA;CAEH;AACD;;;;;;AAOA,SAAS,sBAAsB,EAAC,aAAoC;CACnE,MAAM,CAAC,WAAW,gBAAgB,SAAS,UAAU;CACrD,MAAM,CAAC,OAAO,YAAY,SAAS,OAAO;CAE1C,OACC,qBAAA,YAAA,EAAA,UAAA,CACC,qBAAC,iBAAD,EAAA,UAAA,CACC,qBAAC,sBAAD,EAAA,UAAA,CACC,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CACC,oBAAC,QAAD;GAAQ,WAAU;GACjB,UAAA,oBAAC,gBAAD;IAAgB,WAAU;IAAe,UAAA,UAAU;GAAyB,CAAA;EACrE,CAAA,GACR,oBAAC,aAAD,EAAa,QAAQ,UAAU,OAAS,CAAA,CACnC;CACN,CAAA,GAAA,oBAAC,gBAAD,EAAA,UAAiB,UAAU,KAAqB,CAAA,CAC3B,EAAA,CAAA,GACtB,qBAAC,wBAAD,EAAA,UAAA,CACC,qBAAC,cAAD,EAAA,UAAA,CACC,oBAAC,qBAAD;EAAqB,SAAA;EACpB,UAAA,oBAAC,QAAD;GAAQ,SAAQ;GAAQ,MAAA;GAAK,WAAU;GAAkB,cAAW;GACnE,UAAA,oBAAC,gBAAD,EAAgB,WAAU,kBAAmB,CAAA;EACtC,CAAA;CACY,CAAA,GACrB,qBAAC,qBAAD;EAAqB,OAAM;EAAM,MAAK;EAAtC,UAAA;GACC,qBAAC,kBAAD,EAAA,UAAA,CACC,oBAAC,WAAD,EAAW,WAAU,2BAA4B,CAAA,GAAC,MAEjC,EAAA,CAAA;GAClB,qBAAC,kBAAD,EAAA,UAAA,CACC,oBAAC,UAAD,EAAU,WAAU,2BAA4B,CAAA,GAAC,QAEhC,EAAA,CAAA;GAClB,oBAAC,uBAAD,CAAwB,CAAA;GACxB,qBAAC,kBAAD;IAAkB,WAAU;IAA5B,UAAA,CACC,oBAAC,QAAD,EAAQ,WAAU,2BAA4B,CAAA,GAAC,QAE9B;;EACE;CACR,CAAA,CAAA,EAAA,CAAA,GACd,oBAAC,gBAAD;EAAgB,SAAA;EACf,UAAA,oBAAC,QAAD;GAAQ,SAAQ;GAAQ,MAAA;GAAK,WAAU;GAAkB,cAAW;GACnE,UAAA,oBAAC,GAAD,EAAG,WAAU,kBAAmB,CAAA;EACzB,CAAA;CACO,CAAA,CACO,EAAA,CAAA,CACR,EAAA,CAAA,GAEjB,qBAAC,MAAD;EACC,OAAO;EACP,eAAe;EACf,WAAU;EAHX,UAAA;GAKC,oBAAC,OAAD;IAAK,WAAU;IACd,UAAA,qBAAC,UAAD,EAAA,UAAA;KACC,oBAAC,cAAD;MAAc,SAAQ;MACrB,UAAA,oBAAC,aAAD;OAAa,OAAM;OAAW,cAAW;OACxC,UAAA,oBAAC,OAAD,EAAO,WAAU,kBAAmB,CAAA;MACxB,CAAA;KACA,CAAA;KACd,oBAAC,cAAD;MAAc,SAAQ;MACrB,UAAA,oBAAC,aAAD;OAAa,OAAM;OAAQ,cAAW;OACrC,UAAA,oBAAC,YAAD,EAAY,WAAU,kBAAmB,CAAA;MAC7B,CAAA;KACA,CAAA;KACd,oBAAC,cAAD;MAAc,SAAQ;MACrB,UAAA,oBAAC,aAAD;OAAa,OAAM;OAAS,cAAW;OACtC,UAAA,oBAACC,QAAD,EAAY,WAAU,kBAAmB,CAAA;MAC7B,CAAA;KACA,CAAA;IACL,EAAA,CAAA;GACN,CAAA;GAEL,oBAAC,aAAD;IAAa,OAAM;IAAW,WAAU;IACvC,UAAA,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MAEC,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACC,qBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACC,qBAAC,QAAD;SAAM,WAAU;SAAhB,UAAA,CACC,oBAAC,QAAD,EACC,WAAW,GACV,oCACA,UAAU,SAAS,qBAAqB,yBACzC,EACA,CAAA,GACA,UAAU,SAAS,WAAW,SAC1B;QACN,CAAA,GAAA,oBAAC,OAAD;SAAO,SAAQ;SAAW,UAAA;QAAgB,CAAA,CACtC;OACL,CAAA,GAAA,qBAAC,KAAD;QAAG,WAAU;QAAb,UAAA;SACE,UAAU;SAAK;SAAmB,UAAU;QAC3C;OACC,CAAA,CAAA;;MAEL,oBAAC,WAAD,CAAY,CAAA;MAEZ,qBAAC,WAAD;OAAS,WAAU;OAAnB,UAAA;QACC,oBAAC,MAAD;SAAI,WAAU;SAA8B,UAAA;QAAwB,CAAA;QACpE,oBAAC,sBAAD;SAA6B;SAAO,UAAU;QAAW,CAAA;QACzD,qBAAC,OAAD;SAAK,WAAU;SAAf,UAAA;UACC,oBAAC,UAAD;WAAU,OAAO,UAAU;WAAY,OAAM;UAAe,CAAA;UAC5D,oBAAC,UAAD;WAAU,OAAO,UAAU;WAAa,OAAM;UAAuB,CAAA;UACrE,oBAAC,UAAD;WAAU,OAAO,UAAU;WAAoB,OAAM;UAAuB,CAAA;UAC5E,oBAAC,UAAD;WAAU,OAAO,UAAU;WAAa,OAAM;UAAqB,CAAA;SAC/D;;OACG;;MAET,oBAAC,WAAD,CAAY,CAAA;MAEZ,qBAAC,WAAD;OAAS,WAAU;OAAnB,UAAA,CACC,oBAAC,MAAD;QAAI,WAAU;QAA8B,UAAA;OAA+B,CAAA,GAC3E,oBAAC,mBAAD,EAAmB,MAAM,UAAU,aAAe,CAAA,CAC1C;;MAET,oBAAC,WAAD,CAAY,CAAA;MAEZ,qBAAC,WAAD;OAAS,WAAU;OAAnB,UAAA;QACC,oBAAC,MAAD;SAAI,WAAU;SAA8B,UAAA;QAA2B,CAAA;QACvE,oBAAC,iBAAD;SAAiB,OAAM;SAAW,OAAO,UAAU;QAAU,CAAA;QAC7D,oBAAC,iBAAD;SAAiB,OAAM;SAAgB,OAAO,UAAU;QAAe,CAAA;OAC/D;;MAET,oBAAC,WAAD,CAAY,CAAA;MAEZ,qBAAC,WAAD;OAAS,WAAU;OAAnB,UAAA,CACC,oBAAC,MAAD;QAAI,WAAU;QAA8B,UAAA;OAAsB,CAAA,GAClE,qBAAC,OAAD;QAAK,WAAU;QAAf,UAAA;SACC,qBAAC,OAAD,EAAA,UAAA,CACC,oBAAC,KAAD;UAAG,WAAU;UAAmD,UAAA;SAAY,CAAA,GAC5E,qBAAC,OAAD;UAAK,WAAU;UAAf,UAAA,CACE,UAAU,UAAU,KAAK,YACzB,oBAAC,OAAD;WAAqB,SAAQ;WAC3B,UAAA;UACK,GAFK,OAEL,CACP,GACA,UAAU,kBAAkB,KAC5B,qBAAC,QAAD;WAAQ,SAAQ;WAAO,MAAK;WAAK,WAAU;WAA3C,UAAA;YAAgE;YAC7D,UAAU;YAAgB;WACrB;UAEL,CAAA,CAAA;SACD,CAAA,CAAA,EAAA,CAAA;SACL,qBAAC,OAAD,EAAA,UAAA,CACC,oBAAC,KAAD;UAAG,WAAU;UAAmD,UAAA;SAAQ,CAAA,GACxE,oBAAC,OAAD;UAAO,SAAQ;UAAe,UAAA,UAAU;SAAa,CAAA,CACjD,EAAA,CAAA;SACL,qBAAC,OAAD,EAAA,UAAA,CACC,oBAAC,KAAD;UAAG,WAAU;UAAmD,UAAA;SAAW,CAAA,GAC3E,oBAAC,OAAD;UAAK,WAAU;UAAmD,UAAA,UAAU;SAAc,CAAA,CACtF,EAAA,CAAA;SACL,qBAAC,OAAD,EAAA,UAAA,CACC,oBAAC,KAAD;UAAG,WAAU;UAAmD,UAAA;SAAsB,CAAA,GACtF,oBAAC,OAAD;UAAK,WAAU;UACb,UAAA,UAAU,mBAAmB,KAAK,WAClC,oBAAC,OAAD;WAAoB,SAAQ;WAC1B,UAAA;UACK,GAFK,MAEL,CACP;SACG,CAAA,CACD,EAAA,CAAA;QACD;OACG,CAAA,CAAA;;MAET,oBAAC,WAAD,CAAY,CAAA;MAEZ,qBAAC,WAAD;OAAS,WAAU;OAAnB,UAAA;QACC,oBAAC,MAAD;SAAI,WAAU;SAA8B,UAAA;QAAY,CAAA;QACxD,oBAAC,iBAAD;SAAiB,OAAM;SAAe,OAAO,UAAU;QAAa,CAAA;QACpE,oBAAC,iBAAD;SAAiB,OAAM;SAAwB,OAAO,UAAU;QAAqB,CAAA;OAC7E;;KACL;;GACO,CAAA;GAEb,oBAAC,aAAD;IAAa,OAAM;IAAQ,WAAU;IACpC,UAAA,oBAAC,OAAD;KAAK,WAAU;KACd,UAAA,oBAAC,OAAD;MACC,MAAM,oBAAC,WAAD,EAAW,WAAU,kBAAmB,CAAA;MAC9C,OAAM;MACN,aAAY;KACZ,CAAA;IACG,CAAA;GACO,CAAA;GAEb,oBAAC,aAAD;IAAa,OAAM;IAAS,WAAU;IACrC,UAAA,oBAAC,OAAD;KAAK,WAAU;KACd,UAAA,oBAAC,OAAD;MACC,MAAM,oBAAC,WAAD,EAAW,WAAU,kBAAmB,CAAA;MAC9C,OAAM;MACN,aAAY;KACZ,CAAA;IACG,CAAA;GACO,CAAA;EACR;CACL,CAAA,CAAA,EAAA,CAAA;AAEJ;AAOA,MAAM,yBAAiD;CACtD;EAAC,OAAO;EAAY,OAAO;CAA8B;CACzD;EAAC,OAAO;EAAa,OAAO;CAAiB;CAC7C;EAAC,OAAO;EAAU,OAAO;CAAkB;CAC3C;EAAC,OAAO;EAAW,OAAO;CAAc;CACxC;EAAC,OAAO;EAAc,OAAO;CAAiB;AAC/C;AAEA,MAAM,0BAAkD;CACvD;EAAC,OAAO;EAAY,OAAO;CAAiB;CAC5C;EAAC,OAAO;EAAW,OAAO;CAAa;CACvC;EAAC,OAAO;EAAS,OAAO;CAAU;CAClC;EAAC,OAAO;EAAW,OAAO;CAAe;CACzC;EAAC,OAAO;EAAY,OAAO;CAAgB;AAC5C;AAEA,MAAM,wBAA6C,QAAQ,KAAK,YAAY;CAAC,OAAO;CAAQ,OAAO;AAAM,EAAE;AAC3G,MAAM,yBAA8C,UAAU,KAAK,aAAa;CAAC,OAAO;CAAS,OAAO;AAAO,EAAE;AACjH,MAAM,sBAA2C,aAAa,KAAK,UAAU;CAAC,OAAO,KAAK;CAAO,OAAO,KAAK;AAAK,EAAE;AAMpH,MAAM,oBAAgC;CAAC,MAAM;CAAO,UAAU,CAAC;AAAC;AAChE,MAAM,sBAAmC;CACxC,SAAS;CACT,OAAO;CACP,SAAS,WAAW;CACpB,SAAS,WAAW;CACpB,OAAO,WAAW;AACnB;AAIA,SAAS,SAAS,EACjB,UACA,OACA,SACA,OACA,UACA,YAQE;CACF,OACC,qBAAC,OAAD;EAAK,WAAW,GAAG,6CAA6C,YAAY,gBAAgB;EAA5F,UAAA,CACC,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACC,qBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CAA+E,OAAM,GAAO;GAC5F,CAAA,GAAA,qBAAC,YAAD;IACC,WAAU;IACV,OAAO,MAAM;IACb,gBAAgB,SAAS,SAAS;KAAC,GAAG;KAAa;IAAiB,CAAC;IAC3D;IAJX,UAAA,CAMC,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACC,oBAAC,gBAAD;MAAgB,OAAM;MAAM,IAAI,GAAG,SAAS;KAAQ,CAAA,GACpD,oBAAC,SAAD;MAAO,SAAS,GAAG,SAAS;MAAO,WAAU;MAAc,UAAA;KAEpD,CAAA,CACH;IACL,CAAA,GAAA,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACC,oBAAC,gBAAD;MAAgB,OAAM;MAAS,IAAI,GAAG,SAAS;KAAW,CAAA,GAC1D,oBAAC,SAAD;MAAO,SAAS,GAAG,SAAS;MAAU,WAAU;MAAc,UAAA;KAEvD,CAAA,CACH;IACM,CAAA,CAAA;GACR,CAAA,CAAA;EACJ,CAAA,GAAA,MAAM,SAAS,YACf,oBAAC,OAAD;GAAK,WAAU;GACd,UAAA,oBAAC,aAAD;IACU;IACT,OAAO,MAAM;IACb,gBAAgB,aAAa,SAAS;KAAC,GAAG;KAAO;IAAQ,CAAC;IAChD;IACV,aAAa,UAAU,MAAM,YAAY,EAAE;IAC3C,mBAAmB,UAAU,MAAM,YAAY,EAAE;GACjD,CAAA;EACG,CAAA,CAEF;;AAEP;AAIA,SAAS,YAAY,EACpB,UACA,OACA,SACA,UACA,aAOE;CACF,MAAM,OAAO,UAAgC,SAAS;EAAC,GAAG;EAAS,GAAG;CAAK,CAAC;CAC5E,OACC,oBAAC,OAAD;EAAK,WAAU;EACd,UAAA,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACC,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACC,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACC,oBAAC,QAAD;OAAQ,SAAS,QAAQ;OAAS,kBAAkB,YAAY,IAAI,EAAC,QAAO,CAAC;MAAI,CAAA;MACjF,oBAAC,mBAAD,EAAmB,WAAU,4CAA6C,CAAA;MAC1E,oBAAC,QAAD;OAAM,WAAU;OAAiC,UAAA;MAAY,CAAA;KACzD;IACJ,CAAA,GAAA,aAAa,QAAQ,WACrB,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACC,oBAAC,QAAD;MAAM,WAAU;MACf,UAAA,oBAAC,OAAD,EAAO,WAAU,kBAAmB,CAAA;KAC/B,CAAA,GACN,oBAAC,OAAD;MACC,OAAO,QAAQ;MACf,WAAW,UAAU,IAAI,EAAC,OAAO,MAAM,OAAO,MAAK,CAAC;MACpD,aAAY;MACZ,WAAU;KACV,CAAA,CACG;IAEF,CAAA,CAAA;GACL,CAAA,GAAA,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACC,oBAAC,UAAD;MACC,UAAU,GAAG,SAAS;MACtB,OAAM;MACN,SAAS;MACT,OAAO,QAAQ;MACf,WAAW,YAAY,IAAI,EAAC,QAAO,CAAC;MACpC,UAAU,CAAC,QAAQ;KACnB,CAAA;KACD,oBAAC,UAAD;MACC,UAAU,GAAG,SAAS;MACtB,OAAM;MACN,SAAS;MACT,OAAO,QAAQ;MACf,WAAW,YAAY,IAAI,EAAC,QAAO,CAAC;MACpC,UAAU,CAAC,QAAQ;KACnB,CAAA;KACD,oBAAC,UAAD;MACC,UAAU,GAAG,SAAS;MACtB,OAAM;MACN,SAAS;MACT,OAAO,QAAQ;MACf,WAAW,UAAU,IAAI,EAAC,MAAK,CAAC;MAChC,UAAU,CAAC,QAAQ;KACnB,CAAA;IACG;GACD,CAAA,CAAA;;CACD,CAAA;AAEP;;;;;AAMA,SAAS,mBAAmB,EAC3B,MACA,cACA,eAKE;CACF,MAAM,CAAC,MAAM,WAAW,SAAmB,WAAW;CACtD,MAAM,CAAC,MAAM,WAAW,SAAS,EAAE;CACnC,MAAM,CAAC,OAAO,YAAY,SAAsB,YAAY;CAC5D,MAAM,CAAC,KAAK,UAAU,SAAsB,YAAY;CACxD,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAGhD,MAAM,oBAAoB,SAAkB;EAC3C,IAAI,MAAM;GACT,QAAQ,WAAW;GACnB,QAAQ,EAAE;GACV,SAAS,aAAa,CAAC;GACvB,OAAO,aAAa,CAAC;GACrB,aAAa,KAAK;EACnB;EACA,aAAa,IAAI;CAClB;CAEA,MAAM,QAAQ,SAAS,eAAe,0BAA0B;CAEhE,MAAM,mBAAmB;EACxB,IAAI,SAAS,IAAI;GAChB,aAAa,IAAI;GACjB;EACD;EACA,aAAa,KAAK;CACnB;CAEA,OACC,oBAAC,QAAD;EAAc;EAAM,cAAc;EACjC,UAAA,qBAAC,eAAD;GAAe,WAAU;GAAzB,UAAA;IACC,qBAAC,cAAD,EAAA,UAAA,CACC,qBAAC,aAAD,EAAA,UAAA,CAAa,QAAK,SAAS,eAAe,eAAe,WAAyB,EAAA,CAAA,GAClF,qBAAC,mBAAD;KAAmB,WAAU;KAA7B,UAAA;MAA2C;MACnC;MAAK;KACM;IACN,CAAA,CAAA,EAAA,CAAA;IAEd,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MAEC,qBAAC,YAAD;OACC,WAAU;OACV,OAAO;OACP,gBAAgB,SAAS;QACxB,QAAQ,IAAgB;QACxB,QAAQ,EAAE;OACX;OAND,UAAA,CAQC,qBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACC,oBAAC,gBAAD;SAAgB,OAAM;SAAY,IAAG;QAAkB,CAAA,GACvD,oBAAC,SAAD;SAAO,SAAQ;SAAiB,WAAU;SAA8B,UAAA;QAEjE,CAAA,CACH;OACL,CAAA,GAAA,qBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACC,oBAAC,gBAAD;SAAgB,OAAM;SAAa,IAAG;QAAmB,CAAA,GACzD,oBAAC,SAAD;SAAO,SAAQ;SAAkB,WAAU;SAA8B,UAAA;QAElE,CAAA,CACH;OACM,CAAA,CAAA;;MAEZ,oBAAC,OAAD,EAAK,WAAU,iCAAkC,CAAA;MAEjD,qBAAC,OAAD,EAAA,UAAA;OACC,qBAAC,YAAD;QAAY,SAAQ;QAApB,UAAA,CAA+B,SACzB,oBAAC,QAAD;SAAM,WAAU;SAAuB,UAAA;QAAO,CAAA,CACxC;;OACZ,oBAAC,kBAAD;QACC,SAAS;QACT,OAAO;QACP,eAAe;QACf,aAAY;QACZ,mBAAkB;QAClB,cAAa;OACb,CAAA;OACA,aAAa,SAAS,MAAM,oBAAC,YAAD,EAAA,UAAY,iBAA0B,CAAA;MAC7D,EAAA,CAAA;MAEP,oBAAC,OAAD,EAAK,WAAU,iCAAkC,CAAA;MAEjD,qBAAC,OAAD,EAAA,UAAA,CACC,oBAAC,KAAD;OAAG,WAAU;OAAiD,UAAA;MAAyB,CAAA,GACvF,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACC,oBAAC,aAAD;QACC,UAAS;QACT,OAAM;QACN,SAAS;QACT,UAAU;QACV,WAAW;OACX,CAAA,GACD,oBAAC,aAAD;QAAa,UAAS;QAAM,OAAM;QAAa,SAAS;QAAK,UAAU;QAAQ,WAAA;OAAW,CAAA,CACtF;MACD,CAAA,CAAA,EAAA,CAAA;KACD;;IAEL,qBAAC,cAAD;KAAc,WAAU;KAAxB,UAAA,CACC,oBAAC,QAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,eAAe,iBAAiB,KAAK;MAAG,UAAA;KAEpE,CAAA,GACR,oBAAC,QAAD;MAAQ,MAAK;MAAK,SAAS;MAAY,UAAA;KAE/B,CAAA,CACK;;GACA;;CACR,CAAA;AAEV;;;AAIA,SAAS,qBAAqB;CAC7B,MAAM,CAAC,QAAQ,aAAa,SAA6B,WAAW;CACpE,MAAM,CAAC,YAAY,iBAAiB,SAAwB,IAAI;CAChE,MAAM,CAAC,SAAS,cAAc,SAAS,KAAK;CAE5C,MAAM,UAAU,cAAc,kBAAkB,cAAc,cAAc,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;CAC9F,MAAM,WAAW,eAAe,OAAQ,WAAW,MAAM,cAAc,UAAU,OAAO,UAAU,KAAK,OAAQ;CAE/G,OACC,qBAAC,mBAAD;EAAmB,MAAM,aAAa;EAAM,eAAe,SAAS,CAAC,QAAQ,cAAc,IAAI;EAAG,MAAK;EAAvG,UAAA,CACC,qBAAC,oBAAD;GAAoB,WAAU;GAA9B,UAAA,CACC,oBAAC,eAAD;IAAe,WAAU;IAExB,UAAA,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CAIC,qBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACC,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACC,oBAAC,MAAD;QAAM,OAAO;QAAQ,gBAAgB,UAAU,UAAU,KAA2B;QACnF,UAAA,qBAAC,UAAD,EAAA,UAAA,CACC,qBAAC,aAAD;SAAa,OAAM;SAAnB,UAAA,CAA+B,aAE9B,oBAAC,OAAD;UAAO,SAAQ;UAAY,WAAU;UACnC,UAAA,WAAW;SACN,CAAA,CACK;QACb,CAAA,GAAA,qBAAC,aAAD;SAAa,OAAM;SAAnB,UAAA,CAAgC,cAE/B,oBAAC,OAAD;UAAO,SAAQ;UAAY,WAAU;UACnC,UAAA,YAAY;SACP,CAAA,CACK;QACJ,CAAA,CAAA,EAAA,CAAA;OACL,CAAA,GACN,qBAAC,OAAD;QAAO,SAAQ;QAAf,UAAA,CACC,oBAAC,KAAD,EAAK,WAAU,kBAAmB,CAAA,GAAC,MAE7B;OACH,CAAA,CAAA;MACL,CAAA,GAAA,qBAAC,QAAD;OAAQ,eAAe,WAAW,IAAI;OAAtC,UAAA;QACC,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA;QAAC;QAC/B,WAAW,eAAe,eAAe;OACvC;MACJ,CAAA,CAAA;KAEJ,CAAA,GAAA,WAAW,cACX,qBAAA,YAAA,EAAA,UAAA,CAEC,oBAAC,YAAD;MAAY,SAAS;MAAgB,WAAU;KAAsB,CAAA,GACrE,oBAAC,WAAD;MACU;MACT,MAAM;MACN,WAAU;MACV,mBAAkB;MAClB,aAAY;MACZ,UAAU;MACV,gBAAgB,QAAQ,cAAc,IAAI,SAAS,EAAE;MACrD,kBAAkB,QAAQ,QAAQ,IAAI,SAAS;KAC/C,CAAA,CACA,EAAA,CAAA,IAEF,oBAAC,WAAD;MACC,SAAS;MACT,MAAM;MACN,WAAU;MACV,mBAAkB;MAClB,aAAY;MACZ,UAAU;KACV,CAAA,CAEE;;GACS,CAAA,GACf,oBAAC,WAAD;IAAW,OAAO;IAAM,UAAA,WAAW,oBAAC,uBAAD,EAAuB,WAAW,SAAW,CAAA,IAAI;GAAgB,CAAA,CACjF;EACpB,CAAA,GAAA,oBAAC,oBAAD;GACC,MAAM;GACN,cAAc;GACd,aAAa,WAAW,eAAe,eAAe;EACtD,CAAA,CACiB;;AAErB;AAMA,MAAM,kBAAmC,CACxC;CACC,IAAI;CACJ,OAAO;CACP,aAAa;CACb,WAAW;AACZ,GACA;CACC,IAAI;CACJ,OAAO;CACP,aAAa;CACb,WAAW;AACZ,CACD;AAIA,MAAM,2BACL,OAAO,YAAY,gBAAgB,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,CAAC;;;;;;AAQ5E,MAAM,cAAc,CACnB;CAAC,OAAO;CAAY,OAAO;AAAuB,GAClD;CAAC,OAAO;CAAc,OAAO;AAAwB,CACtD;AAEA,SAAS,gBAAgB,EAAC,SAAyB;CAClD,MAAM,CAAC,OAAO,YAAY,SAAsB,kBAAkB;CAClE,MAAM,CAAC,OAAO,YAAY,SAAsB,kBAAkB;CAClE,MAAM,CAAC,WAAW,gBAAgB,SAAS,UAAU;CACrD,MAAM,CAAC,WAAW,gBAAgB,SAAS,UAAU;CAKrD,MAAM,cAHgB,gBAAgB,QAAQ,SAAS,MAAM,KAAK,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC,UAEtE,MAAM,yBAAyB,cAAc,YAAY,IAAI;CAGjF,MAAM,eAAe;EACpB,SAAS,KAAK;EACd,aAAa,SAAS;CACvB;CACA,MAAM,gBAAgB;EACrB,SAAS,KAAK;EACd,aAAa,SAAS;CACvB;CAEA,OACC,qBAAA,YAAA,EAAA,UAAA,CACC,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACC,oBAAC,MAAD;GAAI,WAAU;GAAoD,UAAA;EAAU,CAAA,GAC5E,oBAAC,OAAD;GAAK,WAAU;GACb,UAAA,gBAAgB,KAAK,SACrB,qBAAC,OAAD;IAEC,WAAU;IAFX,UAAA,CAIC,oBAAC,QAAD;KACC,IAAI,KAAK;KACT,SAAS,MAAM,KAAK;KACpB,kBAAkB,YAAY,UAAU,UAAU;MAAC,GAAG;OAAO,KAAK,KAAK;KAAO,EAAE;KAChF,WAAU;IACV,CAAA,GACD,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACC,oBAAC,SAAD;OAAO,SAAS,KAAK;OAAI,WAAU;OACjC,UAAA,KAAK;MACA,CAAA;MACP,oBAAC,KAAD;OAAG,WAAU;OAAkD,UAAA,KAAK;MAAe,CAAA;MAElF,KAAK,OAAO,wBAAwB,MAAM,yBAC1C,oBAAC,OAAD;OAAK,WAAU;OACd,UAAA,qBAAC,QAAD;QAAQ,OAAO;QAAW,eAAe;QAAzC,UAAA,CACC,oBAAC,eAAD;SAAe,cAAW;SACzB,UAAA,oBAAC,aAAD,CAAc,CAAA;QACA,CAAA,GACf,oBAAC,eAAD,EAAA,UACE,YAAY,KAAK,MACjB,oBAAC,YAAD;SAA0B,OAAO,EAAE;SACjC,UAAA,EAAE;QACQ,GAFK,EAAE,KAEP,CACZ,EACa,CAAA,CACR;;MACJ,CAAA;KAEF;IACD,CAAA,CAAA;GAhCC,GAAA,KAAK,EAgCN,CACL;EACG,CAAA,CACD;CAEJ,CAAA,GAAA,cAAc,KACd,qBAAC,eAAD;EACC,UAAS;EAGT,WAAU;EACV,QACC,qBAAA,YAAA,EAAA,UAAA;GACC,oBAAC,QAAD;IAAM,WAAU;IAAuC,UAAA;GAAkB,CAAA;GAAC;GACzE,gBAAgB,IAAI,KAAK;EACzB,EAAA,CAAA;EATJ,UAAA,CAYC,oBAAC,QAAD;GAAQ,SAAQ;GAAQ,MAAK;GAAK,SAAS;GAAS,UAAA;EAE5C,CAAA,GACR,qBAAC,QAAD;GAAQ,MAAK;GAAK,SAAS;GAA3B,UAAA,CACC,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA,GAAC,cAE7B;EACM,CAAA,CAAA;CAEf,CAAA,CAAA,EAAA,CAAA;AAEJ;AAYA,MAAM,wBAAwB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AAGA,MAAM,iCAAyD;CAC9D,aAAa;CACb,eAAe;AAChB;AAEA,MAAM,aAAoC;CAAC,GAAG;CAAuB;CAAa;AAAa,CAAC,CAC9F,MAAM,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAClC,KAAK,MAAM,WAAW;CACtB,IAAI,OAAO;CACX;CACA,aAAa,+BAA+B,SAAS;CACrD,SAAS;AACV,EAAE;AAEH,MAAM,mBAAqD;CAC1D;EACC,aAAa;EACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAQ,CAAA;EAC3E,OAAO,EAAC,UAAS,oBAAC,QAAD;GAAM,WAAU;GAAmB,UAAA,IAAI,SAAS;EAAW,CAAA;CAC7E;CACA;EACC,aAAa;EACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAe,CAAA;EAClF,OAAO,EAAC,UAAS,oBAAC,QAAD;GAAM,WAAU;GAA6B,UAAA,IAAI,SAAS;EAAkB,CAAA;CAC9F;CACA;EACC,aAAa;EACb,SAAS,EAAC,aAAY,oBAAC,uBAAD;GAA+B;GAAQ,OAAM;EAAY,CAAA;EAC/E,OAAO,EAAC,UAAS,oBAAC,OAAD;GAAO,SAAQ;GAAY,UAAA,IAAI,SAAS;EAAe,CAAA;CACzE;AACD;;AAGA,SAAS,qBAAqB;CAC7B,OACC,oBAAC,WAAD;EACC,SAAS;EACT,MAAM;EACN,WAAU;EACV,mBAAkB;EAClB,kBAAA;EACA,aAAY;EACZ,UAAU;EACV,cACC,qBAAC,QAAD,EAAA,UAAA;GACC,oBAAC,MAAD,EAAM,WAAU,kBAAmB,CAAA;GAAC;GAEpC,oBAAC,aAAD,EAAa,WAAU,kBAAmB,CAAA;EACnC,EAAA,CAAA;CAET,CAAA;AAEH;;;;;;;;;;;AAYA,SAAgB,gBAAgB;CAC/B,MAAM,CAAC,MAAM,WAAW,SAAiC,SAAS;CAClE,MAAM,CAAC,WAAW,gBAAgB,SAAsB,WAAW;CACnE,MAAM,CAAC,eAAe,oBAAoB,SAAoB,SAAS;CAEvE,MAAM,CAAC,aAAa,kBAAkB,SAAwB,IAAI;CAClE,MAAM,qBAAqB,aAAa,aAAa;CAGrD,MAAM,iBAAiB,0BAA0B;CACjD,MAAM,eAAe,iBAAiB,eAAe,kBAAkB,KAAA;CACvE,MAAM,cACL,cAAc,eAAe,cAAc,cAAc,cAAc,oBACpE,OACA,gBAAgB;CAEpB,MAAM,aACL,SAAS,aACN,+BAA+B,qBAAqB,cAAc,MAAM,gBAAgB,OACxF,oBAAoB,SAAS,SAAS;CAE1C,OACC,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACC,oBAAC,gBAAD;GACC,WAAU;GACV,WAAW;GACX,cAAa;GACb,YAAY;GACZ,mBAAmB;EACnB,CAAA,GAED,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACC,oBAAC,eAAD;IAAe,aAAa;IAAY,qBAAqB;IAAO,mBAAA;IAAkB,mBAAmB;GAAI,CAAA,GAE7G,oBAAC,QAAD;IAAM,WAAU;IACd,UAAA,SAAS,YACT,qBAAA,YAAA,EAAA,UAAA,CACC,oBAAC,mBAAD;KACC,SAAQ;KACR,OAAM;KACN,MAAM;KACK;KACX,cAAc,QAAQ,aAAa,GAAkB;KACrD,SAAS,CACR;MACC,IAAI;MACJ,OAAO;MACP,MAAM,oBAAC,UAAD,EAAU,WAAU,kBAAmB,CAAA;MAC7C,cAAc;MACd,gBAAgB,QAAQ,UAAU;KACnC,CACD;IACA,CAAA,GAEA,cAAc,cACd,oBAAC,sBAAD,CAAuB,CAAA,IACpB,cAAc,oBACjB,oBAAC,oBAAD,CAAqB,CAAA,IAClB,cAAc,aAGjB,oBAAC,qBAAD,EAAqB,WAAU,aAAc,CAAA,IAE7C,oBAAC,OAAD;KAAK,WAAU;KACd,UAAA,oBAAC,OAAD;MAAK,WAAU;MACd,UAAA,oBAAC,OAAD;OAAK,WAAU;OACb,UAAA,eACA,oBAAC,OAAD;QACC,MAAM,YAAY;QAClB,OAAO,YAAY;QACnB,aAAa,YAAY;OACzB,CAAA;MAEE,CAAA;KACD,CAAA;IACD,CAAA,CAEL,EAAA,CAAA,IAEF,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACC,oBAAC,UAAD;MACC,OAAM;MACN,cAAc,QAAQ,SAAS;MAC/B,WAAU;MACV,YAAY;MACZ,QAAQ;MACR,cAAc;MACd,eAAe,OAAO,iBAAiB,EAAe;KACtD,CAAA,GAID,oBAAC,OAAD;MACC,WAAW,GACV,gDACA,eAAe,wBAAwB,mBACxC;MAEC,UAAA,eACA,qBAAA,YAAA,EAAA,UAAA;OACC,oBAAC,mBAAD;QACC,SAAQ;QACR,SAAQ;QACR,OAAO;QACP,aAAa,qBAAqB;OAClC,CAAA;OACD,oBAAC,cAAD;QAAc,OAAO;QAAuB,gBAAgB;OAAiB,CAAA;OAE7E,oBAAC,SAAD,EAAS,UAAS,YAAa,CAAA;MAC9B,EAAA,CAAA,IACC,kBAAkB,YACrB,oBAAC,iBAAD,EAAiB,OAAO,mBAAqB,CAAA,IAE7C,qBAAC,OAAD;OACC,WAAW,GACV,kCACA,kBAAkB,eAAe,uBAAuB,oBACzD;OAJD,UAAA,CAMC,oBAAC,MAAD;QAAI,WAAU;QAAoD,UAAA;OAAuB,CAAA,GACzF,oBAAC,OAAD;QAAK,WAAU;QACb,UAAA,kBAAkB,eAClB,oBAAC,oBAAD,CAAqB,CAAA,IAErB,oBAAC,OAAD;SAAK,WAAU;SACd,UAAA,oBAAC,OAAD;UACC,MAAM,oBAAC,UAAD,EAAU,WAAU,kBAAmB,CAAA;UAC7C,OAAO;UACP,aAAa,oBAAoB;SACjC,CAAA;QACG,CAAA;OAEF,CAAA,CACD;;KAEF,CAAA,CACD;;GAED,CAAA,CACF;EACD,CAAA,CAAA;;AAEP"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/pages/core-site-reality.d.ts
|
|
3
|
+
export interface SiteRealityProps {
|
|
4
|
+
/**
|
|
5
|
+
* What fills the map stage — a FragmentViewer, Map, or any engine. Left empty when omitted, so
|
|
6
|
+
* the template carries no rendering dependency of its own.
|
|
7
|
+
*/
|
|
8
|
+
stage?: ReactNode;
|
|
9
|
+
/** Rendered at the top of the context column, above Weather Station (e.g. the picked element). */
|
|
10
|
+
contextHeader?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Site Reality template. Renders its own app shell (CoreAppSidebar + CoreAppTopBar) over a
|
|
14
|
+
* KPIBar of headline figures and a three-column body: Insights Map panel, the map stage, and
|
|
15
|
+
* the site context panel. Both flanking panels collapse into the stage — automatically as the row
|
|
16
|
+
* narrows, and manually via the stage toggles when they fit.
|
|
17
|
+
*
|
|
18
|
+
* @deprecated Preview/demo prototype — renders built-in sample data and mock handlers. Not a
|
|
19
|
+
* supported production import: compose your page from the widgets this template uses, wired to your
|
|
20
|
+
* own data (see the CoreSiteReality template docs in Storybook). Slated for removal from the public API in a
|
|
21
|
+
* future major.
|
|
22
|
+
*/
|
|
23
|
+
export declare function SiteReality({ stage, contextHeader }?: SiteRealityProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//#endregion
|
|
25
|
+
//# sourceMappingURL=core-site-reality.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-site-reality.d.mts","names":[],"sources":["../../src/pages/core-site-reality.tsx"],"mappings":";;iBAoTiB;;;;;EAKhB,QAAQ;;EAER,gBAAgB;;;;;;;;;;;;;wBAuBD,cAAa,OAAO,kBAAgB,+CAAqB,IAAA"}
|