@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":"state-machine.mjs","names":[],"sources":["../../src/pages/state-machine.tsx"],"sourcesContent":["import type {ColumnDef} from \"@tanstack/react-table\";\nimport type {CSSProperties, ReactNode} from \"react\";\n\nimport {cn} from \"@corensystem/coren-utils\";\nimport {\n\tArrowLeft,\n\tArrowRight,\n\tChevronDown,\n\tChevronUp,\n\tCircleDot,\n\tClipboardList,\n\tClock,\n\tGitBranch,\n\tLayoutGrid,\n\tPlus,\n\tRows3,\n\tSettings2,\n\tShieldCheck,\n\tTrash2,\n\tTriangleAlert,\n\tWorkflow,\n\tX,\n\tXCircle,\n} from \"lucide-react\";\nimport {createContext, useCallback, useContext, useEffect, useMemo, useState} from \"react\";\n\nimport {Accordion, AccordionContent, AccordionItem, AccordionTrigger} from \"../accordion\";\n// React Flow ships its own positioning styles; without these the canvas does not lay out at all.\nimport {Badge} from \"../badge\";\nimport {Banner} from \"../banner\";\nimport {Button} from \"../button\";\nimport {Card, CardContent, CardHeader, CardTitle} from \"../card\";\nimport {Combobox} from \"../combobox\";\nimport {ConfirmDialog} from \"../confirm-dialog\";\nimport {DataTable, DataTableColumnHeader} from \"../data-table\";\nimport {Empty} from \"../empty\";\n// Everything React Flow comes through GraphCanvas — the Core component that owns the\n// dependency, its stylesheet and its version. This file names no third-party package, which is the\n// point: the canvas is a Core surface, not a React Flow integration that happens to live here.\nimport type {Connection, Edge, FinalConnectionState, Node, NodeProps} from \"../graph-canvas\";\nimport {\n\tGraphCanvas,\n\tHandle,\n\tMarkerType,\n\tPanel,\n\tPosition,\n\tuseEdgesState,\n\tuseNodesState,\n\tuseReactFlow,\n} from \"../graph-canvas\";\nimport {Input} from \"../input\";\nimport {Label} from \"../label\";\nimport {RecordDetailShell} from \"../record-detail-shell\";\nimport {type SideMenuGroup} from \"../side-menu\";\nimport {Switch} from \"../switch\";\nimport {Tabs, TabsContent, TabsList, TabsTrigger} from \"../tabs\";\nimport {Textarea} from \"../textarea\";\nimport {ToggleGroup, ToggleGroupItem} from \"../toggle-group\";\nimport {HoverTooltip} from \"../tooltip\";\nimport {getObjectType} from \"./wc3-ontology-data\";\nimport {PermitPolicySection, WC3_PERMIT_POLICY_INITIAL, type Wc3PermitPolicy} from \"./wc3-permit-policy\";\nimport {ProcessBottlenecksSection} from \"./wc3-process-bottlenecks\";\nimport {\n\tCustomTag,\n\tKindLegend,\n\tMono,\n\tProcessGlyphTile,\n\tProcessProvenanceNote,\n\tProductChip,\n\tProposedTag,\n\tSlaModelBadge,\n\tStateChip,\n\tStateFlagBadges,\n\tTransitionKindBadge,\n\tTypeGlyphLabel,\n\tWC3_PROCESS_EDIT_INITIAL,\n\tWC3_PROCESS_ICONS,\n\tWC3_PROCESS_MESSAGES,\n\tWC3_PROCESS_STATE_COLORS,\n\ttype Wc3LineageNavTarget,\n\ttype Wc3ProcessEditState,\n\ttype Wc3ProcessFacts,\n\ttype Wc3ProcessInstanceRow,\n\ttype StateMachineAction,\n\ttype Wc3ProcessRecord,\n\ttype Wc3ProcessState,\n\ttype Wc3ProcessStateFlag,\n\ttype Wc3ProcessTransition,\n\taddState,\n\taddTransition,\n\tcheckTransition,\n\tdeleteState,\n\tdeleteTransition,\n\tformatHours,\n\tlineageNav,\n\tmoveState,\n\tprocessFacts,\n\tprocessLayout,\n\tprocessRowAgeHours,\n\tprocessRowKeys,\n\tprocessRowOverSla,\n\tprocessRowPk,\n\tprocessRowSlaHours,\n\tprocessRowTitle,\n\tprocessSlaModel,\n\tprocessStateOf,\n\tprocessTokens,\n\trebindTransition,\n\tstateDeleteBlockReason,\n\ttransitionAction,\n\tupdateProcessMeta,\n\tupdateState,\n} from \"./wc3-process-shared\";\n\n// StateMachine — the whole state-machine authoring surface: header band, left section rail, canvas,\n// editing panel and validity footer. ONE widget, and the two products that author a state machine\n// both mount it: Core Connect V3's process page (variant=\"connect\", via ProcessDetail) and the\n// Digital Work Permit template register (variant=\"work-permit\"). Neither owns a copy — the widget is\n// the source and the templates are its callers, which is what keeps a fix to the canvas from having\n// to be made twice.\n//\n// Today the ONLY thing that differs between the two cuts is the left rail: which sections, in what\n// order, under what labels, and whether General carries the permit fields. That is a table\n// (VARIANT_TRAITS), not a branch, so when one product's canvas does need to diverge it becomes a new\n// trait row and the other keeps what it had.\n//\n// Extracted from wc3-process-detail.tsx, which had grown into a page AND an editor in one file. The\n// page furniture — the header band, the SideMenu, the Instances / Bottlenecks / Settings sections —\n// stayed there; everything that draws or mutates the GRAPH lives here and is the widget. It was\n// called ProcessBuilder until the Work Permit cut made \"process\" the wrong half of the name: what it\n// authors is a state machine, whatever the product calls the record.\n//\n// It is the ONLY surface that mutates a process graph. Every edit routes through a pure helper in\n// wc3-process-shared.tsx and is committed with one `onChange(next)`; nothing here writes a state, a\n// transition or a layout entry in place.\n//\n// THREE DOCUMENTED DIVERGENCES FROM THE PROTOTYPE, all deliberate:\n// 1. The prototype hides editing behind a P6.edit toggle. Editing is always available here (a\n// drill-in page IS the editor), so there is no mode a user can be in where an edit is invisible.\n// 2. The prototype's canvas is a static SVG whose positions are recomputed every render. This one is\n// draggable, so positions live in the record's `layout` and a drag commits through moveState().\n// 3. A legal connection drag CREATES the transition on drop, unbound. Everything a transition needs\n// is either derived (key, kind) or came from the drag itself (from, to); the action binding is\n// the single field a drag cannot supply, and it is nullable for exactly this reason. The edge is\n// real, selected, undoable and drawn dashed; lint rule L7 says it is not publishable until it is\n// bound. This used to refuse the drop and pre-fill a form instead — which threw away a gesture\n// the author had already made, for the sake of a field they were about to fill in.\nconst STATE_CATEGORIES: readonly Wc3ProcessState[\"category\"][] = [\"draft\", \"pending\", \"active\", \"terminal\"];\nconst STATE_TYPES: readonly Wc3ProcessState[\"type\"][] = [\"initial\", \"intermediate\", \"terminal\"];\n/**\n * How much of a state's identity colour goes into its node.\n *\n * Enough to tell two states apart at a glance and to match the dot the rail prints beside the same\n * state; not enough to fight the default node's own border or to stop the label reading. It is mixed\n * into React Flow's node background, so one number covers light and dark.\n */\nconst WC3_PROCESS_NODE_TINT = \"14%\";\n\n// ─── The domain the caller supplies ──────────────────────────────────────────\n//\n// The widget used to be parameterised on PRESENTATION and hardcoded on DOMAIN: seven props to\n// change how it looks and none to change what it shows. Every vocabulary below came from a\n// module-level demo fixture compiled into the package, which meant a product with its own action\n// types could not bind a transition — the widget rejected its ids as \"not in the ontology\" — and a\n// product with its own rows saw an empty Instances section and a 0 on every node.\n//\n// They are props now, and they DEFAULT TO EMPTY rather than to the fixture. Empty is the honest\n// default for a library: it means \"the host has not told me\", which is a different thing from \"the\n// host has these seven permit effects\". The demo vocabularies moved to\n// `@corensystem/coren-ui/pages/state-machine-fixtures`, which the stories import and nothing else does —\n// so they stop riding along in every consumer's bundle.\n//\n// Reaching the deep pieces (both inspectors, both add-forms, the entry lists) through context\n// rather than prop-drilling: they are five levels down and every level between them would otherwise\n// grow four pass-through props it does not use.\n\n/** One entry in the vocabulary a transition may bind to. Re-exported so consumers need one import. */\nexport type {StateMachineAction} from \"./wc3-process-shared\";\n\n/** One entry in the vocabulary a state's entry effects are chosen from. */\nexport type StateMachineEffect = {id: string; label: string; note?: string};\n\n/** One behavioural flag offered in the state inspector, with the label to show for it. */\nexport type StateMachineFlagOption = {flag: Wc3ProcessStateFlag; label: string};\n\ntype StateMachineData = {\n\tactions: readonly StateMachineAction[];\n\teffects: readonly StateMachineEffect[];\n\tstateFlags: readonly StateMachineFlagOption[];\n\tinstances: readonly Wc3ProcessInstanceRow[];\n\treadOnly: boolean;\n};\n\n/** Stable identities, so an omitted prop does not change a memo's deps on every render. */\nconst NO_ACTIONS: readonly StateMachineAction[] = [];\nconst NO_EFFECTS: readonly StateMachineEffect[] = [];\nconst NO_ROWS: readonly Wc3ProcessInstanceRow[] = [];\n\n/**\n * The five behavioural flags, in the order the permit editor reads them out.\n *\n * These default to the built-in five rather than to empty, unlike the vocabularies above, and the\n * difference is real: `Wc3ProcessState.flags` is a closed union in the MODEL, so these are labels\n * for something the widget already understands rather than a list only the host can know. Pass\n * `stateFlags` to relabel them, to reorder them, or to offer fewer.\n */\nconst DEFAULT_STATE_FLAGS: readonly StateMachineFlagOption[] = [\n\t{flag: \"monitored\", label: \"Monitored\"},\n\t{flag: \"authorizesWork\", label: \"Authorizes work\"},\n\t{flag: \"editableAnswers\", label: \"Answers editable\"},\n\t{flag: \"mutableReceiver\", label: \"Receiver editable\"},\n\t{flag: \"reopenable\", label: \"Reopenable\"},\n];\n\nconst StateMachineDataContext = createContext<StateMachineData>({\n\tactions: NO_ACTIONS,\n\teffects: NO_EFFECTS,\n\tstateFlags: DEFAULT_STATE_FLAGS,\n\tinstances: NO_ROWS,\n\treadOnly: false,\n});\n\n/** Everything the host supplied, for the pieces too deep to prop-drill to. */\nfunction useStateMachineData(): StateMachineData {\n\treturn useContext(StateMachineDataContext);\n}\n\n/** The bound-action picker's options, in Combobox shape. */\nconst actionOptions = (actions: readonly StateMachineAction[]) => actions.map((a) => ({value: a.id, label: a.label}));\n\n// ─── Canvas node ─────────────────────────────────────────────────────────────\n\ntype ProcFlowNodeData = {\n\tstate: Wc3ProcessState;\n};\n\n/**\n * A state on the canvas, drawn as React Flow's OWN default node.\n *\n * This used to paint a bespoke box: an identity colour strip, the category and graph role, the\n * custom / proposed markers, the behavioural flags, a live token pill and an SLA tint, all inside a\n * fixed 176×66 frame. Next to the graphs on reactflow.dev/examples it read as noise — five type\n * sizes in a box the size of a business card, a different stroke colour per transition kind, and\n * orthogonal wiring fighting the curves. The whole canvas is back on React Flow's defaults: default\n * node chrome, default `#b1b1b7` bezier edges, default handles, default selection. The readouts it\n * dropped are all still on the page — the rail's state inspector and the Instances section.\n *\n * Registered under the `default` KEY, not a name of our own, and that is what buys the default look:\n * React Flow classes every node `react-flow__node-<type>`, so `type: \"default\"` picks up the\n * library's own node CSS — fill, 1px border, radius, 150px width, 12px centred text, hover and\n * selected shadow — while this component still supplies the four handles below.\n *\n * FOUR explicit handles, not two. A self-transition and a backward edge only render when source and\n * target resolve to DIFFERENT handles: with in/out alone the extension loop would draw nothing and\n * every reject_loop / reopen edge would overlay the forward edge it runs beside.\n */\nexport function ProcessFlowNode({data}: NodeProps) {\n\tconst {state} = data as unknown as ProcFlowNodeData;\n\n\treturn (\n\t\t<>\n\t\t\t<Handle id=\"in\" type=\"target\" position={Position.Left} title=\"incoming\" />\n\t\t\t<Handle id=\"back-in\" type=\"target\" position={Position.Top} title=\"incoming (loop / backward)\" />\n\t\t\t{state.name}\n\t\t\t<Handle id=\"out\" type=\"source\" position={Position.Right} title=\"outgoing\" />\n\t\t\t<Handle id=\"back-out\" type=\"source\" position={Position.Bottom} title=\"outgoing (loop / backward)\" />\n\t\t</>\n\t);\n}\n\n// Module-level, never an inline object: a new map identity on every render remounts every node.\n// Keyed `default` on purpose — see ProcessFlowNode.\nexport const PROCESS_NODE_TYPES = {default: ProcessFlowNode};\n\n// ─── Rail ────────────────────────────────────────────────────────────────────\n\nexport function ProcessRailCard({title, count, children}: {title: string; count?: number; children: ReactNode}) {\n\treturn (\n\t\t<Card className=\"wwc:shrink-0\">\n\t\t\t<CardHeader className=\"wwc:p-3\">\n\t\t\t\t<CardTitle className=\"wwc:text-sm\">\n\t\t\t\t\t{title}\n\t\t\t\t\t{count !== undefined ? <span className=\"wwc:font-normal wwc:text-muted-foreground\"> ({count})</span> : null}\n\t\t\t\t</CardTitle>\n\t\t\t</CardHeader>\n\t\t\t<CardContent className=\"wwc:p-3 wwc:pt-0\">{children}</CardContent>\n\t\t</Card>\n\t);\n}\n\n// ─── State inspector ─────────────────────────────────────────────────────────\n\n/**\n * Mounted with `key={state.id}` so its uncontrolled inputs and its inline errors reset when the\n * selection moves — the same reason the pipeline's node inspector keys on its node.\n */\n/**\n * The vocabulary \"Add effect…\" offers.\n *\n * FIXTURE, not a contract. The engine's real effect set is not modelled anywhere in this repo — the\n * permit process's own SLA note mentions `start_sla_timer` in passing and nothing else — so this is\n * a plausible list to author against, kept small and named the way the note names its one example.\n * Replace it with the engine's list when there is one; every consumer reads it from here.\n */\nexport const WC3_PROCESS_EFFECTS: {id: string; label: string; note: string}[] = [\n\t{id: \"start_sla_timer\", label: \"start_sla_timer\", note: \"Begins this state's SLA clock on the permit.\"},\n\t{id: \"stop_sla_timer\", label: \"stop_sla_timer\", note: \"Stops any running SLA clock.\"},\n\t{id: \"notify_receiver\", label: \"notify_receiver\", note: \"Notifies the permit's receiver.\"},\n\t{id: \"notify_issuer\", label: \"notify_issuer\", note: \"Notifies the issuing authority.\"},\n\t{id: \"lock_answers\", label: \"lock_answers\", note: \"Freezes the permit's answers against further edits.\"},\n\t{id: \"unlock_answers\", label: \"unlock_answers\", note: \"Reopens the permit's answers for editing.\"},\n\t{id: \"write_audit_entry\", label: \"write_audit_entry\", note: \"Writes an extra audit line beyond the implicit one.\"},\n];\n\n/**\n * Mounted with `key={state.id}` so its uncontrolled inputs and its inline errors reset when the\n * selection moves — the same reason the pipeline's node inspector keys on its node.\n *\n * Entry requirements and effects are COLLAPSED by default. They are the deep end of a state — most\n * edits here are a rename or a flag — and an always-open pair of pickers would push the next state\n * in the list off the screen for the sake of two lines that usually read \"none\".\n */\nexport function StateInspector({\n\tprocess,\n\tstate,\n\tonChange,\n\tonDelete,\n\tonSelectTransition,\n\tauthoring = false,\n}: {\n\tprocess: Wc3ProcessRecord;\n\tstate: Wc3ProcessState;\n\tonChange: (next: Wc3ProcessRecord) => void;\n\tonDelete: () => void;\n\tonSelectTransition: (transitionId: string) => void;\n\t/**\n\t * Authoring a template: show the fields that DEFINE the state and hide the ones that describe an\n\t * established one. Colour, SLA and the outgoing-transition list stay on the process page, where\n\t * the canvas tint and the token queue actually read them.\n\t */\n\tauthoring?: boolean;\n}) {\n\tconst [nameErr, setNameErr] = useState<string | null>(null);\n\tconst [slaErr, setSlaErr] = useState<string | null>(null);\n\tconst [showEntry, setShowEntry] = useState(false);\n\n\tconst {actions, effects: effectOptions, stateFlags, instances} = useStateMachineData();\n\tconst objectType = getObjectType(process.objectTypeId);\n\tconst tokens = processTokens(process, state.id, [...instances]);\n\tconst outgoing = process.transitions.filter((t) => t.from === state.id);\n\t// slaBySeverity wins for every row, so a per-state SLA on a severity-driven process is committed\n\t// but has no effect. The field is disabled and says so rather than silently accepting the number.\n\tconst severityDriven = processSlaModel(process) === \"severity\";\n\n\tconst requirements = state.entryRequirements ?? [];\n\tconst effects = state.entryEffects ?? [];\n\n\tconst commitName = (value: string) => {\n\t\tconst next = value.trim();\n\t\tif (!next) {\n\t\t\tsetNameErr(WC3_PROCESS_MESSAGES.nameRequired);\n\t\t\treturn;\n\t\t}\n\t\tif (\n\t\t\tprocess.states.some(\n\t\t\t\t(s) =>\n\t\t\t\t\ts.id !== state.id &&\n\t\t\t\t\t(s.name.toLowerCase() === next.toLowerCase() || s.value.toLowerCase() === next.toLowerCase()),\n\t\t\t)\n\t\t) {\n\t\t\tsetNameErr(WC3_PROCESS_MESSAGES.stateNameTaken);\n\t\t\treturn;\n\t\t}\n\t\tsetNameErr(null);\n\t\tonChange(updateState(process, state.id, {name: next}));\n\t};\n\n\tconst commitSla = (raw: string) => {\n\t\tconst trimmed = raw.trim();\n\t\tif (!trimmed) {\n\t\t\tsetSlaErr(null);\n\t\t\tonChange(updateState(process, state.id, {slaHours: null}));\n\t\t\treturn;\n\t\t}\n\t\tconst value = Number(trimmed);\n\t\tif (!Number.isFinite(value) || value <= 0) {\n\t\t\tsetSlaErr(WC3_PROCESS_MESSAGES.slaPositive);\n\t\t\treturn;\n\t\t}\n\t\tsetSlaErr(null);\n\t\tonChange(updateState(process, state.id, {slaHours: value}));\n\t};\n\n\tconst toggleFlag = (flag: Wc3ProcessStateFlag) => {\n\t\tconst next = state.flags.includes(flag) ? state.flags.filter((f) => f !== flag) : [...state.flags, flag];\n\t\tonChange(updateState(process, state.id, {flags: next}));\n\t};\n\n\tconst setRequirements = (next: string[]) => onChange(updateState(process, state.id, {entryRequirements: next}));\n\tconst setEffects = (next: string[]) => onChange(updateState(process, state.id, {entryEffects: next}));\n\n\treturn (\n\t\t<div className=\"wwc:space-y-3\">\n\t\t\t{/*\n\t\t\t * Key / Label / Category / Type, then the flags, then the collapsed entry panel — the order\n\t\t\t * the permit editor reads them. Stacked rather than one row because the rail is 22rem wide;\n\t\t\t * the grid opens up on its own if this is ever mounted somewhere wider.\n\t\t\t */}\n\t\t\t<div className=\"wwc:grid wwc:gap-3 wwc:@md:grid-cols-2\">\n\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t<Label htmlFor={`state-key-${state.id}`}>Key (auto)</Label>\n\t\t\t\t\t{/* Derived from the name by addState and never edited by hand: the key is what lands in the\n\t\t\t\t\t instance row's status property, so a free-text key would let the graph and the data\n\t\t\t\t\t disagree about what \"draft\" means. */}\n\t\t\t\t\t<Input\n\t\t\t\t\t\tid={`state-key-${state.id}`}\n\t\t\t\t\t\tvalue={state.value}\n\t\t\t\t\t\tdisabled\n\t\t\t\t\t\treadOnly\n\t\t\t\t\t\tclassName=\"wwc:font-mono wwc:text-xs\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t<Label htmlFor={`state-label-${state.id}`}>Label</Label>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tid={`state-label-${state.id}`}\n\t\t\t\t\t\tdefaultValue={state.name}\n\t\t\t\t\t\taria-invalid={nameErr !== null}\n\t\t\t\t\t\tclassName={cn(nameErr && \"wwc:border-destructive\")}\n\t\t\t\t\t\tonBlur={(event) => commitName(event.target.value)}\n\t\t\t\t\t/>\n\t\t\t\t\t{nameErr && <p className=\"wwc:text-xs wwc:text-destructive\">{nameErr}</p>}\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t<Label>Category</Label>\n\t\t\t\t\t<Combobox\n\t\t\t\t\t\toptions={STATE_CATEGORIES.map((value) => ({value, label: value}))}\n\t\t\t\t\t\tvalue={state.category}\n\t\t\t\t\t\tonValueChange={(value) =>\n\t\t\t\t\t\t\tonChange(updateState(process, state.id, {category: value as Wc3ProcessState[\"category\"]}))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t<Label>Type</Label>\n\t\t\t\t\t<Combobox\n\t\t\t\t\t\toptions={STATE_TYPES.map((value) => ({value, label: value}))}\n\t\t\t\t\t\tvalue={state.type}\n\t\t\t\t\t\tonValueChange={(value) =>\n\t\t\t\t\t\t\tonChange(updateState(process, state.id, {type: value as Wc3ProcessState[\"type\"]}))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Switches, not the pressed-buttons the port started with: these are five independent\n\t\t\t on/off settings, and a row of toggles says that where a row of chips reads as a\n\t\t\t multi-select. */}\n\t\t\t<div className=\"wwc:grid wwc:gap-2\">\n\t\t\t\t{stateFlags.map(({flag, label}) => (\n\t\t\t\t\t<div key={flag} className=\"wwc:flex wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\tid={`state-${state.id}-${flag}`}\n\t\t\t\t\t\t\tchecked={state.flags.includes(flag)}\n\t\t\t\t\t\t\tonCheckedChange={() => toggleFlag(flag)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Label htmlFor={`state-${state.id}-${flag}`} className=\"wwc:text-xs wwc:font-normal\">\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Label>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t{!authoring && (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t\t<Label htmlFor={`state-sla-${state.id}`}>SLA (hours)</Label>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tid={`state-sla-${state.id}`}\n\t\t\t\t\t\t\tdefaultValue={state.slaHours ?? \"\"}\n\t\t\t\t\t\t\tdisabled={severityDriven}\n\t\t\t\t\t\t\tplaceholder=\"none\"\n\t\t\t\t\t\t\taria-invalid={slaErr !== null}\n\t\t\t\t\t\t\tclassName={cn(slaErr && \"wwc:border-destructive\")}\n\t\t\t\t\t\t\tonBlur={(event) => commitSla(event.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{slaErr && <p className=\"wwc:text-xs wwc:text-destructive\">{slaErr}</p>}\n\t\t\t\t\t\t{severityDriven && (\n\t\t\t\t\t\t\t<p className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">{WC3_PROCESS_MESSAGES.severitySlaOverride}</p>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t\t<Label>Colour</Label>\n\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{WC3_PROCESS_STATE_COLORS.map((color) => (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={color}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\taria-label={color}\n\t\t\t\t\t\t\t\t\taria-pressed={state.color === color}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"wwc:size-5 wwc:rounded-full wwc:border\",\n\t\t\t\t\t\t\t\t\t\tstate.color === color ? \"wwc:border-primary wwc:ring-1 wwc:ring-primary\" : \"wwc:border-border\",\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tstyle={{background: color}}\n\t\t\t\t\t\t\t\t\tonClick={() => onChange(updateState(process, state.id, {color}))}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"wwc:space-y-1 wwc:rounded-md wwc:border wwc:border-border wwc:p-2.5\">\n\t\t\t\t\t\t<div className=\"wwc:text-[10px] wwc:font-semibold wwc:tracking-wider wwc:text-muted-foreground wwc:uppercase\">\n\t\t\t\t\t\t\tOutgoing transitions\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{outgoing.length === 0 ? (\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\tNone. A non-terminal state without an outgoing transition fails rule L5.\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"wwc:space-y-1\">\n\t\t\t\t\t\t\t\t{outgoing.map((t) => (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\tkey={t.id}\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:flex wwc:w-full wwc:items-center wwc:gap-1.5 wwc:text-left wwc:text-xs wwc:hover:underline\"\n\t\t\t\t\t\t\t\t\t\tonClick={() => onSelectTransition(t.id)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Mono>{t.key}</Mono>\n\t\t\t\t\t\t\t\t\t\t<TransitionKindBadge kind={t.kind} />\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</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<p className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">\n\t\t\t\t\t\t{tokens.length} live {objectType?.displayName ?? \"row\"}\n\t\t\t\t\t\t{tokens.length === 1 ? \"\" : \"s\"} in this state.\n\t\t\t\t\t</p>\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{/* Collapsed by default — the deep end of a state, and usually two lines that read \"none\". */}\n\t\t\t<div className=\"wwc:space-y-3 wwc:border-t wwc:border-border wwc:pt-3\">\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\taria-expanded={showEntry}\n\t\t\t\t\tclassName=\"wwc:gap-1.5\"\n\t\t\t\t\tonClick={() => setShowEntry((open) => !open)}\n\t\t\t\t>\n\t\t\t\t\t<ChevronDown className={cn(\"wwc:h-3.5 wwc:w-3.5 wwc:transition-transform\", showEntry && \"wwc:rotate-180\")} />\n\t\t\t\t\tEntry requirements\n\t\t\t\t</Button>\n\n\t\t\t\t{showEntry && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<EntryList\n\t\t\t\t\t\t\ttitle=\"Entry requirements\"\n\t\t\t\t\t\t\tdescription={`Collected before a permit may REACH “${state.name}”, on any incoming transition.`}\n\t\t\t\t\t\t\tempty=\"None required here.\"\n\t\t\t\t\t\t\tplaceholder=\"Add required action…\"\n\t\t\t\t\t\t\toptions={actionOptions(actions)}\n\t\t\t\t\t\t\tvalues={requirements}\n\t\t\t\t\t\t\tlabelOf={(id) => actions.find((a) => a.id === id)?.label ?? id}\n\t\t\t\t\t\t\tonChange={setRequirements}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<EntryList\n\t\t\t\t\t\t\ttitle=\"Entry effects\"\n\t\t\t\t\t\t\tdescription={`Applied in this order whenever a permit ENTERS “${state.name}”, in the commit phase and after the incoming edge’s own effects. Reordering them changes what the permit ends up with.`}\n\t\t\t\t\t\t\tempty=\"No effects beyond the implicit audit entry.\"\n\t\t\t\t\t\t\tplaceholder=\"Add effect…\"\n\t\t\t\t\t\t\toptions={effectOptions.map((effect) => ({value: effect.id, label: effect.label}))}\n\t\t\t\t\t\t\tvalues={effects}\n\t\t\t\t\t\t\tlabelOf={(id) => effectOptions.find((effect) => effect.id === id)?.label ?? id}\n\t\t\t\t\t\t\tordered\n\t\t\t\t\t\t\tonChange={setEffects}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<Button variant=\"outline\" size=\"sm\" className=\"wwc:w-full wwc:gap-1.5 wwc:text-destructive\" onClick={onDelete}>\n\t\t\t\t<Trash2 className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\tDelete state\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n\n/**\n * One entry list — requirements or effects. Same shape both times: a heading, what it means, the\n * current entries, and a picker that only offers what is not already in the list.\n *\n * `ordered` adds move-up / move-down, because for EFFECTS the order is the behaviour — the panel\n * says so in its own description — while a requirement is a set and numbering it would imply a\n * sequence that does not exist.\n */\nfunction EntryList({\n\ttitle,\n\tdescription,\n\tempty,\n\tplaceholder,\n\toptions,\n\tvalues,\n\tlabelOf,\n\tordered = false,\n\tonChange,\n}: {\n\ttitle: string;\n\tdescription: string;\n\tempty: string;\n\tplaceholder: string;\n\toptions: {value: string; label: string}[];\n\tvalues: string[];\n\tlabelOf: (id: string) => string;\n\tordered?: boolean;\n\tonChange: (next: string[]) => void;\n}) {\n\tconst remaining = options.filter((option) => !values.includes(option.value));\n\n\tconst move = (index: number, by: number) => {\n\t\tconst next = [...values];\n\t\tconst target = index + by;\n\t\tif (target < 0 || target >= next.length) return;\n\t\t[next[index], next[target]] = [next[target], next[index]];\n\t\tonChange(next);\n\t};\n\n\treturn (\n\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t<div>\n\t\t\t\t<div className=\"wwc:text-xs wwc:font-semibold\">{title}</div>\n\t\t\t\t<p className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">{description}</p>\n\t\t\t</div>\n\n\t\t\t{values.length === 0 ? (\n\t\t\t\t<p className=\"wwc:text-xs wwc:text-muted-foreground\">{empty}</p>\n\t\t\t) : (\n\t\t\t\t<div className=\"wwc:space-y-1\">\n\t\t\t\t\t{values.map((id, index) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\t\tclassName=\"wwc:flex wwc:items-center wwc:gap-1.5 wwc:rounded-md wwc:border wwc:border-border wwc:px-2 wwc:py-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ordered && (\n\t\t\t\t\t\t\t\t<span className=\"wwc:shrink-0 wwc:text-[10px] wwc:tabular-nums wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{index + 1}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<span className=\"wwc:min-w-0 wwc:flex-1 wwc:truncate wwc:text-xs\">{labelOf(id)}</span>\n\t\t\t\t\t\t\t{ordered && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\t\t\taria-label=\"Move up\"\n\t\t\t\t\t\t\t\t\t\tdisabled={index === 0}\n\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:h-6 wwc:w-6\"\n\t\t\t\t\t\t\t\t\t\tonClick={() => move(index, -1)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<ChevronUp className=\"wwc:h-3 wwc:w-3\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\t\t\taria-label=\"Move down\"\n\t\t\t\t\t\t\t\t\t\tdisabled={index === values.length - 1}\n\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:h-6 wwc:w-6\"\n\t\t\t\t\t\t\t\t\t\tonClick={() => move(index, 1)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<ChevronDown className=\"wwc:h-3 wwc:w-3\" />\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)}\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\t\taria-label={`Remove ${labelOf(id)}`}\n\t\t\t\t\t\t\t\tclassName=\"wwc:h-6 wwc:w-6 wwc:text-muted-foreground\"\n\t\t\t\t\t\t\t\tonClick={() => onChange(values.filter((value) => value !== id))}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"wwc:h-3 wwc:w-3\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Only what is not already listed: offering a duplicate and then refusing it is a worse\n\t\t\t conversation than not offering it. */}\n\t\t\t{remaining.length > 0 && (\n\t\t\t\t<Combobox\n\t\t\t\t\toptions={remaining}\n\t\t\t\t\tvalue=\"\"\n\t\t\t\t\tonValueChange={(value) => {\n\t\t\t\t\t\tif (value) onChange([...values, value]);\n\t\t\t\t\t}}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n}\nexport function TransitionInspector({\n\tprocess,\n\ttransition,\n\tonChange,\n\tonDelete,\n\tonNavigate,\n}: {\n\tprocess: Wc3ProcessRecord;\n\ttransition: Wc3ProcessTransition;\n\tonChange: (next: Wc3ProcessRecord) => void;\n\tonDelete: () => void;\n\tonNavigate?: (target: Wc3LineageNavTarget) => void;\n}) {\n\tconst from = process.states.find((s) => s.id === transition.from);\n\tconst to = process.states.find((s) => s.id === transition.to);\n\tconst {actions} = useStateMachineData();\n\tconst action = transitionAction(transition, actions);\n\tconst unbound = transition.actionTypeId === null;\n\tconst [showDetail, setShowDetail] = useState(false);\n\n\treturn (\n\t\t<div className=\"wwc:space-y-3\">\n\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-1.5\">\n\t\t\t\t<span className=\"wwc:text-sm wwc:font-semibold\">{transition.key}</span>\n\t\t\t\t<TransitionKindBadge kind={transition.kind} />\n\t\t\t\t{transition.proposed && <ProposedTag />}\n\t\t\t</div>\n\n\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-1.5 wwc:text-xs\">\n\t\t\t\t{from ? <StateChip state={from} /> : <span className=\"wwc:text-muted-foreground wwc:italic\">deleted</span>}\n\t\t\t\t<ArrowRight className=\"wwc:h-3.5 wwc:w-3.5 wwc:shrink-0 wwc:text-muted-foreground\" />\n\t\t\t\t{to ? <StateChip state={to} /> : <span className=\"wwc:text-muted-foreground wwc:italic\">deleted</span>}\n\t\t\t</div>\n\n\t\t\t{/*\n\t\t\t * The binding stays ABOVE the fold, alone, because it is the one field a canvas drop cannot\n\t\t\t * fill and therefore the one the author has landed here to fill. Everything below it —\n\t\t\t * actor role, guards, effects — is folded away by default, the same call the state\n\t\t\t * inspector makes about entry requirements: the deep end, and usually a line reading \"none\".\n\t\t\t */}\n\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t<Label>Bound action type</Label>\n\t\t\t\t{/* Rebinding is what makes lint rule L7 reachable: the fixture's bindings all resolve, a\n\t\t\t\t rebound one need not. processGraphLint() adds L7 for exactly this — and for an edge\n\t\t\t\t that has never been bound at all. */}\n\t\t\t\t<Combobox\n\t\t\t\t\toptions={actionOptions(actions)}\n\t\t\t\t\tvalue={transition.actionTypeId ?? \"\"}\n\t\t\t\t\tonValueChange={(value) => onChange(rebindTransition(process, transition.id, value))}\n\t\t\t\t\tplaceholder=\"Select action type…\"\n\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t/>\n\t\t\t\t{action ? (\n\t\t\t\t\t<p className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">\n\t\t\t\t\t\tEnforcement lives on the shared ontology action — parameter validation, submission criteria and guard\n\t\t\t\t\t\tfunctions. Run it from any projection and the same rules apply.\n\t\t\t\t\t</p>\n\t\t\t\t) : unbound ? (\n\t\t\t\t\t// Not an error: the edge was drawn a moment ago and this is the field it is waiting on.\n\t\t\t\t\t// Amber, and it says what happens next rather than what went wrong.\n\t\t\t\t\t<p className=\"wwc:text-xs wwc:text-amber-700 wwc:dark:text-amber-400\">\n\t\t\t\t\t\tDrawn, not bound. The edge is on the canvas and dashed until it binds; rule L7 holds the graph back from\n\t\t\t\t\t\tpublishing until then.\n\t\t\t\t\t</p>\n\t\t\t\t) : (\n\t\t\t\t\t<p className=\"wwc:text-xs wwc:text-destructive\">\n\t\t\t\t\t\tThis binding does not resolve in the ontology — rule L7 flags it until it is rebound.\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<div className=\"wwc:space-y-3 wwc:border-t wwc:border-border wwc:pt-3\">\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\taria-expanded={showDetail}\n\t\t\t\t\tclassName=\"wwc:gap-1.5\"\n\t\t\t\t\tonClick={() => setShowDetail((open) => !open)}\n\t\t\t\t>\n\t\t\t\t\t<ChevronDown className={cn(\"wwc:h-3.5 wwc:w-3.5 wwc:transition-transform\", showDetail && \"wwc:rotate-180\")} />\n\t\t\t\t\tActor, guards and effects\n\t\t\t\t</Button>\n\n\t\t\t\t{showDetail && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">actor role: {transition.actorRole}</div>\n\n\t\t\t\t\t\t<div className=\"wwc:space-y-1\">\n\t\t\t\t\t\t\t<div className=\"wwc:text-[10px] wwc:font-semibold wwc:tracking-wider wwc:text-muted-foreground wwc:uppercase\">\n\t\t\t\t\t\t\t\tGuards\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{transition.guards.length === 0 ? (\n\t\t\t\t\t\t\t\t<p className=\"wwc:text-xs wwc:text-muted-foreground\">None declared on this edge.</p>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:gap-1\">\n\t\t\t\t\t\t\t\t\t{transition.guards.map((guard) => (\n\t\t\t\t\t\t\t\t\t\t<span key={guard} className=\"wwc:rounded wwc:bg-muted wwc:px-1.5 wwc:py-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t<Mono>{guard}</Mono>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className=\"wwc:space-y-1\">\n\t\t\t\t\t\t\t<div className=\"wwc:text-[10px] wwc:font-semibold wwc:tracking-wider wwc:text-muted-foreground wwc:uppercase\">\n\t\t\t\t\t\t\t\tEffects\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p className=\"wwc:text-xs\">\n\t\t\t\t\t\t\t\t{transition.note ?? (\n\t\t\t\t\t\t\t\t\t<span className=\"wwc:text-muted-foreground\">No effects beyond the implicit audit entry.</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<div className=\"wwc:flex wwc:items-center wwc:justify-between wwc:gap-2\">\n\t\t\t\t<Button variant=\"destructive\" size=\"sm\" className=\"wwc:gap-1.5\" onClick={onDelete}>\n\t\t\t\t\t<Trash2 className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\tDelete transition…\n\t\t\t\t</Button>\n\t\t\t\t{action && onNavigate && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName=\"wwc:h-6 wwc:gap-1 wwc:px-1.5 wwc:text-[11px]\"\n\t\t\t\t\t\tonClick={() => onNavigate(lineageNav.actionType(action.id))}\n\t\t\t\t\t>\n\t\t\t\t\t\taction type\n\t\t\t\t\t\t<ArrowRight className=\"wwc:h-3 wwc:w-3\" />\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n// ─── Add-transition form ─────────────────────────────────────────────────────\n\n/**\n * The rail's way to create a transition, for the edge you would rather type than draw. A canvas drag\n * is the other way and it commits on drop; neither needs a binding, which is nullable.\n *\n * The check runs LIVE on the current draft, so its refusal — or its rule-L6 note, which is a hint and\n * not a refusal — is readable before the button is pressed.\n */\n/**\n * The in-place \"add state\" form.\n *\n * Name, category and role rather than name alone: a state added with only a name lands as an\n * intermediate/pending/custom guess that then has to be corrected in the inspector, and the two\n * fields that decide how the graph READS — where it starts and where it ends — are exactly the ones\n * worth asking for up front. Everything else (colour, SLA, flags) has a sensible default and is a\n * refinement, so it stays in the inspector.\n */\nexport function AddStateForm({\n\tonAdd,\n\tonCancel,\n\terror,\n}: {\n\tonAdd: (draft: {name: string; category: Wc3ProcessState[\"category\"]; type: Wc3ProcessState[\"type\"]}) => void;\n\tonCancel: () => void;\n\t/** Refusal from the caller — a blank or duplicate name. Rendered verbatim. */\n\terror: string | null;\n}) {\n\tconst [name, setName] = useState(\"\");\n\tconst [category, setCategory] = useState<Wc3ProcessState[\"category\"]>(\"pending\");\n\tconst [type, setType] = useState<Wc3ProcessState[\"type\"]>(\"intermediate\");\n\n\treturn (\n\t\t<div className=\"wwc:space-y-2 wwc:rounded-md wwc:border wwc:border-border wwc:p-2.5\">\n\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t<Label htmlFor=\"new-state-name\">Name</Label>\n\t\t\t\t<Input\n\t\t\t\t\tid=\"new-state-name\"\n\t\t\t\t\tvalue={name}\n\t\t\t\t\tplaceholder=\"New state name…\"\n\t\t\t\t\taria-invalid={error !== null}\n\t\t\t\t\tclassName={cn(error && \"wwc:border-destructive\")}\n\t\t\t\t\tonChange={(event) => setName(event.target.value)}\n\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\tif (event.key === \"Enter\") onAdd({name, category, type});\n\t\t\t\t\t\tif (event.key === \"Escape\") onCancel();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"wwc:grid wwc:grid-cols-2 wwc:gap-2\">\n\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t<Label>Category</Label>\n\t\t\t\t\t<Combobox\n\t\t\t\t\t\toptions={STATE_CATEGORIES.map((value) => ({value, label: value}))}\n\t\t\t\t\t\tvalue={category}\n\t\t\t\t\t\tonValueChange={(value) => setCategory(value as Wc3ProcessState[\"category\"])}\n\t\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t<Label>Role</Label>\n\t\t\t\t\t<Combobox\n\t\t\t\t\t\toptions={STATE_TYPES.map((value) => ({value, label: value}))}\n\t\t\t\t\t\tvalue={type}\n\t\t\t\t\t\tonValueChange={(value) => setType(value as Wc3ProcessState[\"type\"])}\n\t\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{error && <p className=\"wwc:text-xs wwc:text-destructive\">{error}</p>}\n\n\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2\">\n\t\t\t\t<Button size=\"sm\" className=\"wwc:gap-1.5\" onClick={() => onAdd({name, category, type})}>\n\t\t\t\t\t<Plus className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\tAdd state\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"ghost\" size=\"sm\" onClick={onCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</Button>\n\t\t\t</div>\n\n\t\t\t<p className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">\n\t\t\t\tIt lands custom, with no SLA and no outgoing edge — so rule L5 flags it until a transition is added.\n\t\t\t</p>\n\t\t</div>\n\t);\n}\n\nexport function AddTransitionForm({\n\tprocess,\n\tdraft,\n\tonDraftChange,\n\tonAdd,\n\tonCancel,\n}: {\n\tprocess: Wc3ProcessRecord;\n\tdraft: Wc3ProcessEditState[\"draftTransition\"];\n\tonDraftChange: (next: Wc3ProcessEditState[\"draftTransition\"]) => void;\n\tonAdd: (args: {from: string; to: string; actionTypeId: string | null}) => void;\n\t/** Renders a Cancel beside Add. Omitted, the form has no way out and none is drawn. */\n\tonCancel?: () => void;\n}) {\n\tconst {actions} = useStateMachineData();\n\tconst stateOptions = process.states.map((s) => ({\n\t\tvalue: s.id,\n\t\tlabel: s.name,\n\t}));\n\t// Both endpoints are needed before the guards can say anything useful: without them the first guard\n\t// to fire is \"that state no longer exists\", which is not what an empty picker means.\n\tconst check =\n\t\tdraft.from && draft.to ? checkTransition(process, draft.from, draft.to, draft.actionTypeId, actions) : null;\n\n\treturn (\n\t\t<div className=\"wwc:space-y-2\">\n\t\t\t<div className=\"wwc:grid wwc:gap-2\">\n\t\t\t\t<Combobox\n\t\t\t\t\toptions={stateOptions}\n\t\t\t\t\tvalue={draft.from ?? \"\"}\n\t\t\t\t\tonValueChange={(value) => onDraftChange({...draft, from: value})}\n\t\t\t\t\tplaceholder=\"from state…\"\n\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t/>\n\t\t\t\t<Combobox\n\t\t\t\t\toptions={stateOptions}\n\t\t\t\t\tvalue={draft.to ?? \"\"}\n\t\t\t\t\tonValueChange={(value) => onDraftChange({...draft, to: value})}\n\t\t\t\t\tplaceholder=\"to state…\"\n\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t/>\n\t\t\t\t{/* Optional, and labelled so. An unbound transition is representable — the canvas creates\n\t\t\t\t them on every drop — so the form has no business demanding here what the drop does not. */}\n\t\t\t\t<Combobox\n\t\t\t\t\toptions={actionOptions(actions)}\n\t\t\t\t\tvalue={draft.actionTypeId ?? \"\"}\n\t\t\t\t\tonValueChange={(value) => onDraftChange({...draft, actionTypeId: value})}\n\t\t\t\t\tplaceholder=\"bound action (optional)…\"\n\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{check && !check.ok && <p className=\"wwc:text-xs wwc:text-destructive\">{check.reason}</p>}\n\t\t\t{check?.ok && check.note && <p className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">{check.note}</p>}\n\t\t\t{check?.ok && !check.note && (\n\t\t\t\t<p className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">\n\t\t\t\t\tWill be created as kind <b>{check.kind}</b> — derived from the graph, never asked for.\n\t\t\t\t\t{!draft.actionTypeId && \" Unbound, so rule L7 will hold the graph back from publishing until it binds.\"}\n\t\t\t\t</p>\n\t\t\t)}\n\n\t\t\t<Button\n\t\t\t\tsize=\"sm\"\n\t\t\t\tclassName=\"wwc:gap-1.5\"\n\t\t\t\t// Disabled only until both endpoints are picked: two empty pickers explain themselves, and\n\t\t\t\t// the guards have nothing to say about an edge with no ends. A missing BINDING is left to\n\t\t\t\t// the guards, which is why the button stays live once from/to are set.\n\t\t\t\tdisabled={!draft.from || !draft.to}\n\t\t\t\tonClick={() => {\n\t\t\t\t\tif (!draft.from || !draft.to) return;\n\t\t\t\t\tonAdd({\n\t\t\t\t\t\tfrom: draft.from,\n\t\t\t\t\t\tto: draft.to,\n\t\t\t\t\t\tactionTypeId: draft.actionTypeId,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Plus className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\tAdd transition\n\t\t\t</Button>\n\t\t\t{onCancel && (\n\t\t\t\t<Button variant=\"ghost\" size=\"sm\" className=\"wwc:ml-2\" onClick={onCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\n// ─── Instances section ───────────────────────────────────────────────────────\n\n/** Present in at least one row — an optional column is shipped only when the data actually has it. */\nconst rowsCarry = (rows: Wc3ProcessInstanceRow[], key: string) =>\n\trows.some((row) => row[key] !== undefined && row[key] !== null && row[key] !== \"\");\n\nexport function InstancesSection({\n\tprocess,\n\tselectedStateId,\n\tonSelectState,\n\tloading = false,\n}: {\n\tprocess: Wc3ProcessRecord;\n\tselectedStateId: string | null;\n\tonSelectState: (stateId: string | null) => void;\n\t/** Rows are still on their way. Separates \"no live work\" from \"not fetched yet\". */\n\tloading?: boolean;\n}) {\n\tconst [query, setQuery] = useState(\"\");\n\tconst {instances} = useStateMachineData();\n\tconst objectType = getObjectType(process.objectTypeId);\n\tconst allRows = useMemo(() => [...instances], [instances]);\n\tconst scoped = useMemo(\n\t\t() => (selectedStateId ? processTokens(process, selectedStateId, allRows) : allRows),\n\t\t[process, selectedStateId, allRows],\n\t);\n\tconst selectedState = selectedStateId ? process.states.find((s) => s.id === selectedStateId) : undefined;\n\n\t// Rows whose status value matches no state of this graph. Never zero-suppressed: it is the honest\n\t// reading of \"tokens are keyed by OBJECT TYPE, not by process\".\n\tconst unclaimed = useMemo(\n\t\t() => allRows.filter((row) => processStateOf(process, row) === undefined).length,\n\t\t[process, allRows],\n\t);\n\n\tconst columns: ColumnDef<Wc3ProcessInstanceRow, unknown>[] = useMemo(() => {\n\t\t// The two identity columns are named by the BACKING OBJECT TYPE's primary-key and title\n\t\t// properties, resolved through processRowKeys — never hardcoded, so a process created on any\n\t\t// object type gets the right two columns under their real apiNames.\n\t\tconst keys = processRowKeys(process);\n\t\tconst defs: ColumnDef<Wc3ProcessInstanceRow, unknown>[] = [\n\t\t\t{\n\t\t\t\tid: \"id\",\n\t\t\t\taccessorFn: (row) => processRowPk(process, row),\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title={keys.pk || \"Id\"} />,\n\t\t\t\tenableHiding: false,\n\t\t\t\tcell: ({row}) => <Mono>{processRowPk(process, row.original)}</Mono>,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"title\",\n\t\t\t\taccessorFn: (row) => processRowTitle(process, row),\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title={keys.title || \"Title\"} />,\n\t\t\t\tcell: ({row}) => <span className=\"wwc:text-xs\">{processRowTitle(process, row.original)}</span>,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"state\",\n\t\t\t\taccessorFn: (row) => processStateOf(process, row)?.name ?? \"\",\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"State\" />,\n\t\t\t\tcell: ({row}) => {\n\t\t\t\t\tconst state = processStateOf(process, row.original);\n\t\t\t\t\tif (!state) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<span className=\"wwc:text-xs wwc:text-muted-foreground wwc:italic\">\n\t\t\t\t\t\t\t\tno state matches {String(row.original[process.statusProp] ?? \"—\")}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn <StateChip state={state} />;\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\n\t\tif (rowsCarry(scoped, \"severity_level\")) {\n\t\t\tdefs.push({\n\t\t\t\tid: \"severity\",\n\t\t\t\taccessorFn: (row) => String(row.severity_level ?? \"\"),\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Severity\" />,\n\t\t\t\tcell: ({row}) => <Badge variant=\"neutralSoft\">{String(row.original.severity_level ?? \"—\")}</Badge>,\n\t\t\t});\n\t\t}\n\t\tif (rowsCarry(scoped, \"zone_id\")) {\n\t\t\tdefs.push({\n\t\t\t\tid: \"zone\",\n\t\t\t\taccessorFn: (row) => String(row.zone_id ?? \"\"),\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Zone\" />,\n\t\t\t\tcell: ({row}) => <Mono>{String(row.original.zone_id ?? \"—\")}</Mono>,\n\t\t\t});\n\t\t}\n\t\tif (rowsCarry(scoped, \"assigned_to\")) {\n\t\t\tdefs.push({\n\t\t\t\tid: \"assigned to\",\n\t\t\t\taccessorFn: (row) => String(row.assigned_to ?? \"\"),\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Assigned to\" />,\n\t\t\t\tcell: ({row}) => <Mono>{String(row.original.assigned_to ?? \"unassigned\")}</Mono>,\n\t\t\t});\n\t\t}\n\t\tif (rowsCarry(scoped, \"receiver_worker_id\")) {\n\t\t\tdefs.push({\n\t\t\t\tid: \"receiver\",\n\t\t\t\taccessorFn: (row) => String(row.receiver_worker_id ?? \"\"),\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Receiver\" />,\n\t\t\t\tcell: ({row}) => <Mono>{String(row.original.receiver_worker_id ?? \"—\")}</Mono>,\n\t\t\t});\n\t\t}\n\n\t\tdefs.push(\n\t\t\t{\n\t\t\t\tid: \"age\",\n\t\t\t\taccessorFn: (row) => processRowAgeHours(process, row),\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Age\" />,\n\t\t\t\tmeta: {\n\t\t\t\t\theaderClassName: \"wwc:text-right\",\n\t\t\t\t\tcellClassName: \"wwc:text-right wwc:tabular-nums\",\n\t\t\t\t},\n\t\t\t\t// Against the FROZEN clock (WC3_PROCESS_FIXTURE_NOW), never Date.now().\n\t\t\t\tcell: ({row}) => formatHours(processRowAgeHours(process, row.original)),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"sla\",\n\t\t\t\taccessorFn: (row) => processRowSlaHours(process, row, processStateOf(process, row)) ?? 0,\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"SLA\" />,\n\t\t\t\tmeta: {\n\t\t\t\t\theaderClassName: \"wwc:text-right\",\n\t\t\t\t\tcellClassName: \"wwc:text-right wwc:tabular-nums\",\n\t\t\t\t},\n\t\t\t\tcell: ({row}) => {\n\t\t\t\t\tconst sla = processRowSlaHours(process, row.original, processStateOf(process, row.original));\n\t\t\t\t\treturn sla === null ? <span className=\"wwc:text-muted-foreground\">—</span> : `${sla} h`;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"over sla\",\n\t\t\t\taccessorFn: (row) => (processRowOverSla(process, row) ? 1 : 0),\n\t\t\t\theader: ({column}) => <DataTableColumnHeader column={column} title=\"Over SLA\" />,\n\t\t\t\tcell: ({row}) =>\n\t\t\t\t\tprocessRowOverSla(process, row.original) ? (\n\t\t\t\t\t\t<Badge variant=\"dangerSoft\">\n\t\t\t\t\t\t\t<Clock className=\"wwc:h-3 wwc:w-3\" />\n\t\t\t\t\t\t\tover\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span className=\"wwc:text-muted-foreground\">—</span>\n\t\t\t\t\t),\n\t\t\t},\n\t\t);\n\t\treturn defs;\n\t}, [process, scoped]);\n\n\tconst data = useMemo(() => {\n\t\tconst needle = query.trim().toLowerCase();\n\t\tif (!needle) return scoped;\n\t\treturn scoped.filter((row) =>\n\t\t\tObject.values(row)\n\t\t\t\t.map((value) => (value === null ? \"\" : String(value)))\n\t\t\t\t.join(\" \")\n\t\t\t\t.toLowerCase()\n\t\t\t\t.includes(needle),\n\t\t);\n\t}, [scoped, query]);\n\n\treturn (\n\t\t<div className=\"wwc:space-y-4\">\n\t\t\t<Card>\n\t\t\t\t<CardContent className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-x-3 wwc:gap-y-1.5 wwc:px-3.5 wwc:py-2.5 wwc:text-xs\">\n\t\t\t\t\t<span className=\"wwc:font-semibold\">\n\t\t\t\t\t\t{selectedState ? `Tokens in “${selectedState.name}”` : \"All tokens\"}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"wwc:text-muted-foreground\">\n\t\t\t\t\t\t{scoped.length} of {allRows.length} {objectType?.pluralName ?? \"rows\"}\n\t\t\t\t\t</span>\n\t\t\t\t\t<Combobox\n\t\t\t\t\t\toptions={process.states.map((s) => ({\n\t\t\t\t\t\t\tvalue: s.id,\n\t\t\t\t\t\t\tlabel: s.name,\n\t\t\t\t\t\t}))}\n\t\t\t\t\t\tvalue={selectedStateId ?? \"\"}\n\t\t\t\t\t\tonValueChange={(value) => onSelectState(value || null)}\n\t\t\t\t\t\tplaceholder=\"Scope to a state…\"\n\t\t\t\t\t\tclassName=\"wwc:w-52\"\n\t\t\t\t\t/>\n\t\t\t\t\t{selectedStateId && (\n\t\t\t\t\t\t<Button variant=\"ghost\" size=\"sm\" onClick={() => onSelectState(null)}>\n\t\t\t\t\t\t\tClear scope\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t<span className=\"wwc:flex-1\" />\n\t\t\t\t\t<span className=\"wwc:text-muted-foreground\">\n\t\t\t\t\t\ta row sits in whichever state's <Mono>value</Mono> matches its <Mono>{process.statusProp}</Mono>\n\t\t\t\t\t</span>\n\t\t\t\t</CardContent>\n\t\t\t</Card>\n\n\t\t\t{unclaimed > 0 && (\n\t\t\t\t// TOKENS ARE KEYED BY OBJECT TYPE, NOT BY PROCESS. A second process on the same object type\n\t\t\t\t// sees the same rows, and a state whose `value` matches nothing shows 0 tokens. Stated, not\n\t\t\t\t// discovered.\n\t\t\t\t<Banner\n\t\t\t\t\tvariant=\"info\"\n\t\t\t\t\ttitle={`${unclaimed} of ${allRows.length} rows sit in no state of this process`}\n\t\t\t\t\tdescription={`Tokens are the live ${objectType?.pluralName ?? \"instance\"} rows of ${\n\t\t\t\t\t\tobjectType?.displayName ?? process.objectTypeId\n\t\t\t\t\t}, shared by every process bound to that object type. A row sits in whichever state's value matches its ${\n\t\t\t\t\t\tprocess.statusProp\n\t\t\t\t\t} field — a state whose value matches nothing shows 0 tokens.`}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<DataTable\n\t\t\t\tcolumns={columns}\n\t\t\t\tdata={data}\n\t\t\t\tsearch={query}\n\t\t\t\tonSearchChange={setQuery}\n\t\t\t\tsearchPlaceholder=\"Filter tokens…\"\n\t\t\t\trecordLabel=\"token\"\n\t\t\t\trecordLabelPlural=\"tokens\"\n\t\t\t\tpageSize={25}\n\t\t\t\tflushToolbar\n\t\t\t\tgetRowId={(row) => processRowPk(process, row)}\n\t\t\t\tisLoading={loading}\n\t\t\t\temptyMessage={\n\t\t\t\t\t// Three different sentences for three different situations, because \"nothing here\" is\n\t\t\t\t\t// not one state: still fetching, fetched and genuinely empty, or filtered to nothing.\n\t\t\t\t\tloading\n\t\t\t\t\t\t? \"Loading tokens…\"\n\t\t\t\t\t\t: allRows.length === 0\n\t\t\t\t\t\t\t? `No ${objectType?.pluralName ?? \"instance\"} rows back this process, so it has no tokens.`\n\t\t\t\t\t\t\t: \"No tokens match the current scope and search.\"\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\n// ─── Settings section ────────────────────────────────────────────────────────\n\nexport function SettingsSection({\n\tprocess,\n\tonChange,\n\tonNavigate,\n\tidentityExtra,\n\tauthoring = false,\n}: {\n\tprocess: Wc3ProcessRecord;\n\tonChange: (next: Wc3ProcessRecord) => void;\n\tonNavigate?: (target: Wc3LineageNavTarget) => void;\n\t/** Extra fields for the Identity card, below Icon — the work-permit cut's type and description. */\n\tidentityExtra?: ReactNode;\n\t/**\n\t * Strip the section back to identity alone: no icon, no ontology binding row, and none of the\n\t * cards below it. See {@link StateMachineProps.authoring} for why.\n\t */\n\tauthoring?: boolean;\n}) {\n\tconst [nameErr, setNameErr] = useState(false);\n\tconst facts = useMemo(() => processFacts(process), [process]);\n\tconst objectType = getObjectType(process.objectTypeId);\n\n\treturn (\n\t\t<div className=\"wwc:space-y-4\">\n\t\t\t<Card>\n\t\t\t\t<CardHeader className=\"wwc:p-3\">\n\t\t\t\t\t<CardTitle className=\"wwc:text-sm\">Identity</CardTitle>\n\t\t\t\t</CardHeader>\n\t\t\t\t<CardContent className=\"wwc:space-y-3 wwc:p-3 wwc:pt-0\">\n\t\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t\t<Label htmlFor={`proc-name-${process.id}`}>Name</Label>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tid={`proc-name-${process.id}`}\n\t\t\t\t\t\t\tdefaultValue={process.name}\n\t\t\t\t\t\t\taria-invalid={nameErr}\n\t\t\t\t\t\t\tclassName={cn(nameErr && \"wwc:border-destructive\")}\n\t\t\t\t\t\t\tonBlur={(event) => {\n\t\t\t\t\t\t\t\tconst value = event.target.value.trim();\n\t\t\t\t\t\t\t\t// Empty name → inline error and NO commit. A nameless process is unfindable in the list.\n\t\t\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\t\t\tsetNameErr(true);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsetNameErr(false);\n\t\t\t\t\t\t\t\tonChange(updateProcessMeta(process, {name: value}));\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{nameErr && <p className=\"wwc:text-xs wwc:text-destructive\">{WC3_PROCESS_MESSAGES.nameRequired}</p>}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* A permit template has no icon of its own, so authoring never offers one. */}\n\t\t\t\t\t{!authoring && (\n\t\t\t\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t\t\t\t<Label>Icon</Label>\n\t\t\t\t\t\t\t<Combobox\n\t\t\t\t\t\t\t\toptions={WC3_PROCESS_ICONS.map((icon) => ({\n\t\t\t\t\t\t\t\t\tvalue: icon,\n\t\t\t\t\t\t\t\t\tlabel: icon,\n\t\t\t\t\t\t\t\t}))}\n\t\t\t\t\t\t\t\tvalue={process.icon}\n\t\t\t\t\t\t\t\tonValueChange={(value) => onChange(updateProcessMeta(process, {icon: value}))}\n\t\t\t\t\t\t\t\tclassName=\"wwc:w-full\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{identityExtra}\n\n\t\t\t\t\t{/* The ontology binding and its provenance chips. A template being authored has an id\n\t\t\t\t\t nobody has seen, a binding it did not choose and no product behind it — a row of facts\n\t\t\t\t\t about a record rather than about the permit. */}\n\t\t\t\t\t{!authoring && (\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-x-4 wwc:gap-y-1.5 wwc:text-xs\">\n\t\t\t\t\t\t\t<Mono>{process.id}</Mono>\n\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:items-center wwc:gap-1.5\">\n\t\t\t\t\t\t\t\tbacking type\n\t\t\t\t\t\t\t\t{onNavigate ? (\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\tclassName=\"wwc:underline wwc:underline-offset-2\"\n\t\t\t\t\t\t\t\t\t\tonClick={() => onNavigate(lineageNav.objectType(process.objectTypeId))}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<TypeGlyphLabel type={objectType} />\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\t<TypeGlyphLabel type={objectType} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:items-center wwc:gap-1.5\">\n\t\t\t\t\t\t\t\tstatus property <Mono>{process.statusProp}</Mono>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<ProductChip\n\t\t\t\t\t\t\t\tprocess={process}\n\t\t\t\t\t\t\t\tonOpenProduct={onNavigate ? (key) => onNavigate(lineageNav.product(key)) : undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<SlaModelBadge process={process} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</CardContent>\n\t\t\t</Card>\n\n\t\t\t{/*\n\t\t\t * Everything below Identity reports on an ESTABLISHED process: what else the graph touches,\n\t\t\t * where its lifecycle came from, whether it passes the engine rules, and what it currently\n\t\t\t * holds. On a template being authored they are empty, or say \"created in this session\", or\n\t\t\t * flag a graph whose only fault is being unfinished. The transition legend and the state list\n\t\t\t * are also already on the canvas, so nothing here is lost by dropping them.\n\t\t\t */}\n\t\t\t{!authoring && (\n\t\t\t\t<>\n\t\t\t\t\t<Card>\n\t\t\t\t\t\t<CardHeader className=\"wwc:p-3\">\n\t\t\t\t\t\t\t<CardTitle className=\"wwc:text-sm\">\n\t\t\t\t\t\t\t\tAlso touches\n\t\t\t\t\t\t\t\t<span className=\"wwc:font-normal wwc:text-muted-foreground\"> ({facts.alsoTouches.length})</span>\n\t\t\t\t\t\t\t</CardTitle>\n\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t<CardContent className=\"wwc:p-3 wwc:pt-0\">\n\t\t\t\t\t\t\t{facts.alsoTouches.length === 0 ? (\n\t\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\tThis graph reads and writes only its own object type.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t) : (\n\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{facts.alsoTouches.map((touch) => (\n\t\t\t\t\t\t\t\t\t\t<Badge key={touch.otId} variant=\"neutralSoft\">\n\t\t\t\t\t\t\t\t\t\t\t{touch.displayName}\n\t\t\t\t\t\t\t\t\t\t\t{touch.productKey ? ` · ${touch.productKey}` : \"\"}\n\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t</Card>\n\n\t\t\t\t\t{/* evidenceNote + slaNote, verbatim. Dropping them would make the port claim shipped behaviour\n\t\t\t it does not have. */}\n\t\t\t\t\t<ProcessProvenanceNote process={process} />\n\n\t\t\t\t\t{facts.lint.length > 0 ? (\n\t\t\t\t\t\t<Banner\n\t\t\t\t\t\t\tvariant=\"warning\"\n\t\t\t\t\t\t\ttitle=\"Graph validity (DWP engine rules L1–L7)\"\n\t\t\t\t\t\t\titems={facts.lint.map((error) => `${error.rule} · ${error.msg}`)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Banner\n\t\t\t\t\t\t\tvariant=\"success\"\n\t\t\t\t\t\t\ttitle=\"Graph is publishable\"\n\t\t\t\t\t\t\tdescription=\"Every validity rule L1–L7 passes: one initial state, at least one terminal and one active state, no unreachable state, every non-terminal state has an outgoing edge, terminal states take only reopen edges, and every transition binds to an action type that exists.\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Card>\n\t\t\t\t\t\t<CardHeader className=\"wwc:p-3\">\n\t\t\t\t\t\t\t<CardTitle className=\"wwc:text-sm\">Transition kinds</CardTitle>\n\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t<CardContent className=\"wwc:space-y-2 wwc:p-3 wwc:pt-0\">\n\t\t\t\t\t\t\t<KindLegend />\n\t\t\t\t\t\t\t<p className=\"wwc:text-[10.5px] wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\tA kind is derived from the graph when a transition is added — a self edge is an extension loop, an edge\n\t\t\t\t\t\t\t\tleaving a terminal state is a reopen, an edge going back a column is a reject loop, everything else is\n\t\t\t\t\t\t\t\tforward.\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t</Card>\n\n\t\t\t\t\t<Card>\n\t\t\t\t\t\t<CardHeader className=\"wwc:p-3\">\n\t\t\t\t\t\t\t<CardTitle className=\"wwc:text-sm\">States</CardTitle>\n\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t<CardContent className=\"wwc:space-y-2 wwc:p-3 wwc:pt-0\">\n\t\t\t\t\t\t\t{process.states.map((state) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={state.id}\n\t\t\t\t\t\t\t\t\tclassName=\"wwc:flex wwc:flex-wrap wwc:items-center wwc:gap-2 wwc:border-b wwc:border-border wwc:pb-2 wwc:text-xs wwc:last:border-b-0 wwc:last:pb-0\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<StateChip state={state} />\n\t\t\t\t\t\t\t\t\t<Badge variant=\"neutralSoft\">{state.type}</Badge>\n\t\t\t\t\t\t\t\t\t{state.custom && <CustomTag />}\n\t\t\t\t\t\t\t\t\t{state.proposed && <ProposedTag />}\n\t\t\t\t\t\t\t\t\t<StateFlagBadges state={state} />\n\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex-1\" />\n\t\t\t\t\t\t\t\t\t<Mono>{state.value}</Mono>\n\t\t\t\t\t\t\t\t\t<span className=\"wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{state.slaHours === null ? \"no SLA\" : `${state.slaHours} h`}\n\t\t\t\t\t\t\t\t\t</span>\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</CardContent>\n\t\t\t\t\t</Card>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\n// ─── Permit fields ───────────────────────────────────────────────────────────\n\n/**\n * The permit's type and description, shown inside the General section's Identity card.\n *\n * They sit BESIDE the record's own Name and Icon rather than in a panel of their own: all four\n * answer \"what is this permit\", and splitting them across two surfaces would make the same question\n * take two places to answer.\n */\nexport function PermitFields({\n\tpermit,\n\tonPermitChange,\n\ttypeOptions,\n}: {\n\tpermit: Wc3PermitMeta;\n\tonPermitChange: (next: Wc3PermitMeta) => void;\n\ttypeOptions: PermitTypeOption[];\n}) {\n\treturn (\n\t\t<>\n\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t<Label>Permit type</Label>\n\t\t\t\t{typeOptions.length === 0 ? (\n\t\t\t\t\t// Not a disabled picker: an empty select reads as \"choices are loading\". This says why\n\t\t\t\t\t// there are none — the backing rows carry no permit_type at all.\n\t\t\t\t\t<p className=\"wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t\tThis process's rows carry no <Mono>permit_type</Mono>, so there is no type to choose.\n\t\t\t\t\t</p>\n\t\t\t\t) : (\n\t\t\t\t\t/*\n\t\t\t\t\t * Pills rather than a dropdown: the list is short, closed and stable — every option fits\n\t\t\t\t\t * on screen at once, so a menu would hide a handful of choices behind a click and make\n\t\t\t\t\t * comparing them a matter of memory. Same ToggleGroup the create dialog uses for its icon\n\t\t\t\t\t * picker, so single-select pills behave identically in both places.\n\t\t\t\t\t */\n\t\t\t\t\t<ToggleGroup\n\t\t\t\t\t\ttype=\"single\"\n\t\t\t\t\t\tvalue={permit.type}\n\t\t\t\t\t\t// Radix emits \"\" when the active item is pressed again. Passed straight through, so a\n\t\t\t\t\t\t// second press CLEARS the type — unlike the icon picker, where a process must always\n\t\t\t\t\t\t// have one, a template with no type chosen yet is a real state.\n\t\t\t\t\t\tonValueChange={(next) => onPermitChange({...permit, type: next})}\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName=\"wwc:flex-wrap wwc:justify-start wwc:gap-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{typeOptions.map((option) => {\n\t\t\t\t\t\t\tconst picked = permit.type === option.value;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<ToggleGroupItem\n\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\t\t\taria-label={option.label}\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t * FOUR redundant cues for the selected pill — ring, border, tinted surface and\n\t\t\t\t\t\t\t\t\t * weight — because the base toggle marks `on` with `bg-accent` alone, and a light\n\t\t\t\t\t\t\t\t\t * grey fill beside seven other pills is not a state anyone can find at a glance.\n\t\t\t\t\t\t\t\t\t * Redundancy is the same reason the tab triggers stack their cues.\n\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"wwc:gap-2 wwc:rounded-full wwc:px-3 wwc:capitalize\",\n\t\t\t\t\t\t\t\t\t\t\"wwc:data-[state=on]:border-primary wwc:data-[state=on]:bg-primary/10 wwc:data-[state=on]:font-semibold wwc:data-[state=on]:text-foreground wwc:data-[state=on]:ring-1 wwc:data-[state=on]:ring-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\t{/* The type's identity colour. Full strength when picked, dimmed when not, so the\n\t\t\t\t\t\t\t\t\t row reads as one selected type among seven rather than eight equal dots. */}\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\"wwc:size-2 wwc:shrink-0 wwc:rounded-full\", !picked && \"wwc:opacity-40\")}\n\t\t\t\t\t\t\t\t\t\tstyle={{background: option.dot}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t</ToggleGroupItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</ToggleGroup>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<div className=\"wwc:space-y-1.5\">\n\t\t\t\t<Label htmlFor=\"permit-description\">Description</Label>\n\t\t\t\t<Textarea\n\t\t\t\t\tid=\"permit-description\"\n\t\t\t\t\tvalue={permit.description}\n\t\t\t\t\trows={4}\n\t\t\t\t\tplaceholder=\"What this permit covers, and when it applies…\"\n\t\t\t\t\tonChange={(event) => onPermitChange({...permit, description: event.target.value})}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\n// ─── Canvas tools ────────────────────────────────────────────────────────────\n\n/**\n * Re-runs the auto-layout and re-frames the graph.\n *\n * Positions are owned by the drag once the record is seeded — nothing recomputes them, by design, or\n * every unrelated edit would snap a moved state back. That leaves no way out of a graph the user has\n * pulled apart, or one where three states added in a row have stacked in the last column. This is\n * that way out, and it is explicit, so it can never fight a drag.\n *\n * Mounted as a GraphCanvas CHILD, which puts it inside the ReactFlowProvider — the only place\n * `fitView` can be called from. Re-framing matters here: a tidy that moved every node off screen\n * would read as having deleted the graph.\n */\nfunction TidyLayoutButton({onTidy}: {onTidy: () => void}) {\n\tconst {fitView} = useReactFlow();\n\treturn (\n\t\t<Panel position=\"top-right\">\n\t\t\t<Button\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tclassName=\"wwc:gap-1.5 wwc:bg-card\"\n\t\t\t\tonClick={() => {\n\t\t\t\t\tonTidy();\n\t\t\t\t\t// After the commit lands, so the fit measures the new positions rather than the old.\n\t\t\t\t\trequestAnimationFrame(() => void fitView({padding: 0.12, duration: 250}));\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<LayoutGrid className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\tTidy layout\n\t\t\t</Button>\n\t\t</Panel>\n\t);\n}\n\n// ─── Workflow status ─────────────────────────────────────────────────────────\n\n/**\n * The canvas footer: whether the graph currently passes the engine's rules.\n *\n * It replaced a legend and a how-to-drag hint. Both were static text that said the same thing on\n * every visit; this line changes, and what it changes to is the one question an author actually has\n * open while wiring a graph — is this publishable yet.\n *\n * The check is INSTANT (processGraphLint is pure and local), so the \"Checking…\" state is not\n * hiding latency. It is there because a result that flips silently between two green sentences is\n * indistinguishable from a result that never ran: the brief pause is what makes the recheck visible,\n * and it is what a real server-side validation would occupy anyway.\n */\nfunction WorkflowStatus({lint, graphKey}: {lint: Wc3ProcessFacts[\"lint\"]; graphKey: string}) {\n\tconst [checking, setChecking] = useState(false);\n\n\tuseEffect(() => {\n\t\tsetChecking(true);\n\t\tconst timer = setTimeout(() => setChecking(false), 450);\n\t\treturn () => clearTimeout(timer);\n\t\t// Keyed on the GRAPH, not the record: dragging a state changes the layout and clones the record,\n\t\t// and re-running the check for a move that cannot alter validity would make the line flicker on\n\t\t// every drag.\n\t}, [graphKey]);\n\n\tif (checking) {\n\t\treturn (\n\t\t\t// <output>, not a span with role=\"status\": it carries the role and aria-live=\"polite\"\n\t\t\t// implicitly, so a screen reader hears the line settle from \"Checking\" to its verdict.\n\t\t\t<output\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"wwc:text-xs wwc:text-transparent\",\n\t\t\t\t\t// A highlight sweeping across the glyphs, not a pulsing block: the words are being\n\t\t\t\t\t// recomputed, they are not absent, so a Skeleton would say the wrong thing. The\n\t\t\t\t\t// gradient is painted twice the line's width and clipped to the text; the animation\n\t\t\t\t\t// slides it. Under motion-reduce the slide stops and the frozen gradient runs\n\t\t\t\t\t// muted-foreground → foreground, both of which read normally as text.\n\t\t\t\t\t\"wwc:bg-[linear-gradient(90deg,var(--wwc-color-muted-foreground)_0%,var(--wwc-color-muted-foreground)_35%,var(--wwc-color-foreground)_50%,var(--wwc-color-muted-foreground)_65%,var(--wwc-color-muted-foreground)_100%)]\",\n\t\t\t\t\t\"wwc:bg-[length:200%_100%] wwc:bg-clip-text\",\n\t\t\t\t\t\"wwc:animate-text-shimmer wwc:motion-reduce:animate-none\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\tChecking workflow…\n\t\t\t</output>\n\t\t);\n\t}\n\n\tif (lint.length === 0) {\n\t\treturn (\n\t\t\t<output className=\"wwc:text-xs wwc:text-green-700 wwc:dark:text-green-400\">\n\t\t\t\tWorkflow validated — no blocking issues.\n\t\t\t</output>\n\t\t);\n\t}\n\n\treturn (\n\t\t<output className=\"wwc:text-xs wwc:text-destructive\">\n\t\t\t{lint.length} blocking issue{lint.length === 1 ? \"\" : \"s\"} — {lint.map((error) => error.rule).join(\", \")}.\n\t\t</output>\n\t);\n}\n\n// ─── The widget ──────────────────────────────────────────────────────────────\n\n/**\n * The variant axis: which PRODUCT is authoring the state machine.\n *\n * - `connect` — Core Connect V3's process page: header band, section rail (Canvas / Instances /\n * Bottlenecks / Settings), canvas and editing rail. This is what {@link ProcessDetail} mounts.\n * - `work-permit` — the Digital Work Permit cut. The same widget, re-cut: General (the Settings\n * section, renamed, carrying the permit's type and description beside the record's own name and\n * icon), then Canvas, then Form, then Policy; then a rule, then Instances and Bottlenecks.\n *\n * TODAY THE ONLY DIFFERENCE IS THE LEFT RAIL — the sections, their order, their labels, and whether\n * General carries the permit fields. The canvas, the editing panel, the guards and the footer are\n * one implementation shared by both, and that is the point of the variant axis rather than two\n * components: when one product's canvas does need to differ, it becomes a new TRAIT here and the\n * other product keeps what it had.\n *\n * A new variant belongs HERE, as another member of this union, plus a row in\n * {@link VARIANT_TRAITS}. The pieces a variant is assembled from — {@link ProcessFlowNode},\n * {@link ProcessRailCard}, {@link StateInspector}, {@link TransitionInspector},\n * {@link AddTransitionForm}, {@link InstancesSection}, {@link SettingsSection} and\n * {@link PermitFields} — are all exported for exactly that reason: a variant recomposes them, it\n * does not fork this file.\n *\n * The graph ALONE — no shell, no rail — is not a variant, because it is not a product cut. It is\n * `shell={false}`; see {@link StateMachineProps.shell}.\n */\nexport type StateMachineVariant = \"connect\" | \"work-permit\";\n\n/**\n * What each variant turns on.\n *\n * A record rather than a chain of `variant === \"…\"` tests: every behavioural difference between\n * variants is visible in one table, and a variant that has not opted into a trait cannot silently\n * inherit it from whichever branch happened to run. Add a trait as a new KEY here — never as an\n * inline test in the render.\n *\n * - `rail` — mount the editing rail, and with it the connection gesture. The two go together: a\n * dragged edge takes its action binding in the rail's Add-transition form, so a rail-less variant\n * that still accepted connections would strand every drag.\n */\n/** Which half of the editing rail is open — the subject being inspected and added to. */\ntype RailTab = \"state\" | \"transition\";\n\n/** A section of the widget's shell. `canvas` is the graph; the rest are the panels around it. */\nexport type StateMachineSection = \"canvas\" | \"instances\" | \"bottlenecks\" | \"general\" | \"form\" | \"policy\";\n\n/** One block of the section rail. A `divider` group is ruled off from the one before it. */\nexport type SectionGroup = {items: readonly StateMachineSection[]; divider?: boolean};\n\nexport type VariantTraits = {\n\t/** Mount the editing rail beside the canvas, and with it the connection gesture. */\n\trail: boolean;\n\t/** Mount the page shell — the header band and the left section rail. Overridable per instance. */\n\tshell: boolean;\n\t/** The rail's groups, in order. The first item of the first group is the default section. */\n\tsections: readonly SectionGroup[];\n\t/** Per-variant renames, for a section one cut calls something else. */\n\tsectionLabels?: Partial<Record<StateMachineSection, string>>;\n\t/** Show the permit's type and description in the General section. */\n\tpermitFields: boolean;\n};\n\n/**\n * What each variant turns on.\n *\n * A record rather than a chain of `variant === \"…\"` tests: every behavioural difference between\n * variants is visible in one table, and a variant that has not opted into a trait cannot silently\n * inherit it from whichever branch happened to run. Add a trait as a new KEY here — never as an\n * inline test in the render.\n */\nconst VARIANT_TRAITS: Record<StateMachineVariant, VariantTraits> = {\n\tconnect: {\n\t\trail: true,\n\t\tshell: true,\n\t\tsections: [{items: [\"canvas\", \"instances\", \"bottlenecks\", \"general\"]}],\n\t\t// The Connect process page has always called this section Settings. `connect` is what that page\n\t\t// mounts, so renaming it here would rename it there — a change nobody asked for.\n\t\tsectionLabels: {general: \"Settings\"},\n\t\tpermitFields: false,\n\t},\n\t\"work-permit\": {\n\t\trail: true,\n\t\tshell: true,\n\t\t// General first, then the graph, then the request form; the two read-only views of live work\n\t\t// are ruled off below them.\n\t\tsections: [{items: [\"general\", \"canvas\", \"form\", \"policy\"]}, {items: [\"instances\", \"bottlenecks\"], divider: true}],\n\t\tpermitFields: true,\n\t},\n};\n\nconst SECTION_LABEL: Record<StateMachineSection, string> = {\n\tcanvas: \"Canvas\",\n\tinstances: \"Instances\",\n\tbottlenecks: \"Bottlenecks\",\n\tgeneral: \"General\",\n\tform: \"Form\",\n\tpolicy: \"Policy\",\n};\n\nconst SECTION_ICON: Record<StateMachineSection, typeof Workflow> = {\n\tcanvas: Workflow,\n\tinstances: Rows3,\n\tbottlenecks: Clock,\n\tgeneral: Settings2,\n\tform: ClipboardList,\n\tpolicy: ShieldCheck,\n};\n\n/**\n * Mirrors RecordDetailShell's non-flush content well (unpadded scroll owner outside, padded block\n * inside — see the comment there for why they nest). The shell is mounted `flush` here so the form\n * builder can stay a stable direct child across section switches (hidden, never unmounted); the\n * sections that want the classic padded well get it from this wrapper instead.\n */\nfunction SectionWell({children}: {children: ReactNode}) {\n\treturn (\n\t\t<div className=\"wwc:min-h-0 wwc:flex-1 wwc:overflow-auto\">\n\t\t\t<div className=\"wwc:w-full wwc:space-y-4 wwc:p-6\">{children}</div>\n\t\t</div>\n\t);\n}\n\n/**\n * The permit's identity, as the left panel edits it.\n *\n * `name` has a home on the record and is committed there through `updateProcessMeta`. `type` and\n * `description` do NOT: a permit TYPE is a property of each token row (`Wc3PermitRow.permit_type`),\n * not of the process definition, and `Wc3Process` carries no description field. Rather than invent\n * two fields on a frozen fixture type, they live in this value — controlled-optional, exactly like\n * {@link Wc3ProcessEditState} — so the panel is real UI and the host decides where it persists.\n */\nexport type Wc3PermitMeta = {\n\tname: string;\n\t/** One of the values the backing rows actually carry — see {@link permitTypeOptions}. */\n\ttype: string;\n\tdescription: string;\n\t/** The rules a permit issued from this template inherits — see the Policy section. */\n\tpolicy: Wc3PermitPolicy;\n};\n\n/**\n * The colour each permit type is known by, keyed by its raw `permit_type` value.\n *\n * ONE source for both surfaces that paint a type: the pills in this file and the table chips in\n * work-permit-templates.tsx. Two maps would drift, and a type that is red in a list and orange in\n * its editor is worse than a type with no colour at all.\n *\n * `dot` is a hex applied INLINE — legal here for the same reason WC3_PROCESS_STATE_COLORS is: it is\n * fixture identity, never chrome, and a dot carries no text so it has no contrast to lose. `chip`\n * has to be classes instead, because a chip DOES carry text and a single hex would be one value for\n * both themes.\n */\nexport const PERMIT_TYPE_COLOR: Record<string, {dot: string; chip: string}> = {\n\thot_work: {dot: \"#dc2626\", chip: \"wwc:border-red-600/25 wwc:bg-red-500/10 wwc:text-red-700 wwc:dark:text-red-400\"},\n\tcold_work: {\n\t\tdot: \"#2563eb\",\n\t\tchip: \"wwc:border-blue-600/25 wwc:bg-blue-500/10 wwc:text-blue-700 wwc:dark:text-blue-400\",\n\t},\n\tconfined_space: {\n\t\tdot: \"#7c3aed\",\n\t\tchip: \"wwc:border-violet-600/25 wwc:bg-violet-500/10 wwc:text-violet-700 wwc:dark:text-violet-400\",\n\t},\n\twork_at_height: {\n\t\tdot: \"#ea580c\",\n\t\tchip: \"wwc:border-orange-600/25 wwc:bg-orange-500/10 wwc:text-orange-700 wwc:dark:text-orange-400\",\n\t},\n\telectrical_work: {\n\t\tdot: \"#d97706\",\n\t\tchip: \"wwc:border-amber-600/25 wwc:bg-amber-500/10 wwc:text-amber-700 wwc:dark:text-amber-400\",\n\t},\n\texcavation: {\n\t\tdot: \"#059669\",\n\t\tchip: \"wwc:border-emerald-600/25 wwc:bg-emerald-500/10 wwc:text-emerald-700 wwc:dark:text-emerald-400\",\n\t},\n\tlifting: {\n\t\tdot: \"#0891b2\",\n\t\tchip: \"wwc:border-cyan-600/25 wwc:bg-cyan-500/10 wwc:text-cyan-700 wwc:dark:text-cyan-400\",\n\t},\n\tradiography: {\n\t\tdot: \"#db2777\",\n\t\tchip: \"wwc:border-pink-600/25 wwc:bg-pink-500/10 wwc:text-pink-700 wwc:dark:text-pink-400\",\n\t},\n};\n\n/** Neutral rather than a random colour: an unrecognised type should read as unclassified, not as a\n * type whose colour nobody can look up. */\nconst PERMIT_TYPE_FALLBACK = {\n\tdot: \"var(--wwc-color-muted-foreground)\",\n\tchip: \"wwc:border-border wwc:bg-muted wwc:text-muted-foreground\",\n};\n\nexport const permitTypeColor = (value: string) => PERMIT_TYPE_COLOR[value] ?? PERMIT_TYPE_FALLBACK;\n\nexport type PermitTypeOption = {value: string; label: string; dot: string};\n\n/**\n * The permit types this process's OWN tokens carry, deduped and in first-seen order.\n *\n * Derived rather than declared: a hard-coded list would silently drift from the fixture the moment a\n * row is added. A process whose rows have no `permit_type` yields an empty list, and the field says\n * so instead of offering choices that mean nothing.\n */\nexport function permitTypeOptions(\n\tprocess: Wc3ProcessRecord,\n\tinstances: readonly Wc3ProcessInstanceRow[] = [],\n): PermitTypeOption[] {\n\tconst seen = new Set<string>();\n\tfor (const row of instances) {\n\t\tconst value = row.permit_type;\n\t\tif (typeof value === \"string\" && value !== \"\" && !seen.has(value)) seen.add(value);\n\t}\n\treturn [...seen].map((value) => ({value, label: value.replace(/_/g, \" \"), dot: permitTypeColor(value).dot}));\n}\n\nexport type StateMachineProps = {\n\t/** The process being edited. Every commit arrives back through {@link onChange}. */\n\tprocess: Wc3ProcessRecord;\n\t/** Receives the WHOLE next record. The widget never mutates in place. */\n\tonChange: (next: Wc3ProcessRecord) => void;\n\t/** Which product cut. A PRESET over `sections` / `sectionLabels`. @default \"connect\" */\n\tvariant?: StateMachineVariant;\n\t/**\n\t * The actions a transition may bind to. **Defaults to empty**, and empty means \"the host has not\n\t * declared a vocabulary\" — the binding picker offers nothing, `checkTransition` accepts any id it\n\t * is given, and lint rule L7 does not fire. Supply it and both come back: an id outside the list\n\t * is refused, and an unbound edge holds the graph back from publishing.\n\t *\n\t * It used to be 24 demo actions compiled into the package, which rejected a consumer's real ids\n\t * as \"not in the ontology\" while L7 refused to let the graph publish unbound — a wall with no\n\t * way through.\n\t */\n\tactions?: readonly StateMachineAction[];\n\t/** The effects a state's entry effects are chosen from. Defaults to empty. */\n\teffects?: readonly StateMachineEffect[];\n\t/**\n\t * The behavioural flags the state inspector offers, and their labels.\n\t *\n\t * Unlike {@link actions} and {@link effects} this defaults to the built-in five rather than to\n\t * empty, because `Wc3ProcessState.flags` is a closed union in the MODEL — these are labels for\n\t * something the widget already understands, not a vocabulary only the host can know.\n\t */\n\tstateFlags?: readonly StateMachineFlagOption[];\n\t/**\n\t * The rows this process's tokens are — what Instances lists, what Bottlenecks ranks, and what the\n\t * count on each canvas node reads. **Defaults to empty.**\n\t *\n\t * Token rows are keyed by BACKING OBJECT TYPE, not by process, so the widget cannot fetch them:\n\t * only the host knows where its rows live. It used to read a demo fixture keyed on\n\t * `objectTypeId`, which meant a real process showed an empty Instances section, an empty\n\t * Bottlenecks section, and a 0 on every node.\n\t */\n\tinstances?: readonly Wc3ProcessInstanceRow[];\n\t/** Rows are still loading. Separates \"no live work yet\" from \"not fetched yet\" in the empty state. */\n\tinstancesLoading?: boolean;\n\t/**\n\t * Read-only: the graph can be read, selected and panned, but not changed.\n\t *\n\t * Turns off node drag, the connection gesture, both add forms and every delete. Most people who\n\t * open a workflow are not authoring it, and the closest thing before this was `shell={false}`,\n\t * which stripped the header and the rail and STILL committed a `moveState` on every drag.\n\t */\n\treadOnly?: boolean;\n\t/**\n\t * The rail's groups, in order. Overrides what {@link variant} declares.\n\t *\n\t * This is what stops the library naming its own consumers. `variant` is a preset that resolves to\n\t * a `sections` value; a third product passes its own rail here instead of sending a PR to add a\n\t * key to an enum inside core-ui.\n\t */\n\tsections?: readonly SectionGroup[];\n\t/** Per-section renames, for a section a product calls something else. Overrides {@link variant}. */\n\tsectionLabels?: Partial<Record<StateMachineSection, string>>;\n\t/**\n\t * Mount the page shell — the header band and the left section rail. Defaults to what the variant\n\t * declares, which is `true` for both product cuts.\n\t *\n\t * `false` gives the GRAPH ALONE, for embedding a state machine inside a surface that already has\n\t * its own chrome. It turns the editing rail off with it, and the two go together on purpose: a\n\t * dragged edge takes its action binding in the rail, so a rail-less mount that still accepted\n\t * connections would strand every drag. Selection and layout drag still commit.\n\t */\n\tshell?: boolean;\n\t/**\n\t * Transient edit state — selection, SLA tint, last refusal, the pre-filled transition draft.\n\t *\n\t * Controlled-OPTIONAL: pass it (with {@link onEditChange}) when the host has other surfaces that\n\t * must agree about which state is selected, as the process page's Instances and Bottlenecks\n\t * sections do. Omit both and the builder owns the state itself.\n\t */\n\tedit?: Wc3ProcessEditState;\n\tonEditChange?: (next: Wc3ProcessEditState) => void;\n\t/** Opens an ontology element the inspector links to. Without it those links are plain text. */\n\tonNavigate?: (target: Wc3LineageNavTarget) => void;\n\t/**\n\t * The permit identity shown in the `work-permit` variant's left panel.\n\t *\n\t * Controlled-OPTIONAL, like {@link edit}: omit it (and {@link onPermitChange}) and the builder\n\t * seeds it from the record and owns it. `name` is mirrored back onto the record through\n\t * `updateProcessMeta` either way, because that is the one field with a home there.\n\t *\n\t * Ignored by variants with no permit panel.\n\t */\n\tpermit?: Wc3PermitMeta;\n\tonPermitChange?: (next: Wc3PermitMeta) => void;\n\t/** Which section the rail has open. Controlled-optional; ignored by variants with no shell. */\n\tsection?: StateMachineSection;\n\tonSectionChange?: (next: StateMachineSection) => void;\n\t/** Renders a Back button in the header band. Omitted, there is nothing to go back to and no button. */\n\tonBack?: () => void;\n\t/**\n\t * Authoring mode: this graph is being written, not inspected. Default false.\n\t *\n\t * ONE flag rather than a handful, because every surface it removes fails for the same reason —\n\t * each reports on an ESTABLISHED process, and on a graph created moments ago it is not merely\n\t * empty but WRONG. The lint rules flag a graph whose only fault is being unfinished. The token\n\t * counts are the backing object type's existing rows, which belong to whatever process already\n\t * owns them, not to this draft. The product chip, the evidence note and the SLA model report\n\t * provenance a new record does not have. So they go together:\n\t *\n\t * - Header band — keeps Back and the name; drops the glyph, product chip, SLA badge, lint count,\n\t * the states/transitions/tokens line and the SLA-tint switch.\n\t * - Section rail — General, Canvas and Form only. Instances and Bottlenecks are views of live work\n\t * this graph has never done.\n\t * - General — identity alone: no icon, no ontology binding row, and none of the cards below it.\n\t * The transition legend and the state list are already on the canvas, so nothing is lost.\n\t *\n\t * Ignored when there is no shell.\n\t */\n\tauthoring?: boolean;\n\t/** Rendered in the Form section. Defaults to a scaffold naming what belongs there. */\n\tformSlot?: ReactNode;\n\t/**\n\t * Actions for the far right of the header band — save, discard, publish.\n\t *\n\t * A slot rather than a prop per action: what \"saving\" MEANS belongs to the host. A permit template\n\t * register publishes a version; the process page commits on every edit and has nothing to save.\n\t * The builder knows neither, and guessing would put a Save button on a surface that autosaves.\n\t * Ignored when there is no shell.\n\t */\n\theaderActions?: ReactNode;\n\t/** Extra rail cards, appended below the built-in ones. Ignored by variants with no rail. */\n\trailFooter?: ReactNode;\n\t/** Applied to the widget's outer grid — the host owns the gutters. */\n\tclassName?: string;\n};\n\n/**\n * The state-machine authoring surface: header band, section rail, canvas and editing panel.\n *\n * Pick the cut with {@link StateMachineProps.variant} — `connect` or `work-permit`. Both render the\n * same canvas, the same editing panel and the same guards; they differ in the left rail alone.\n *\n * Height contract: the canvas fills its container, so the container MUST resolve a height. Placed in\n * a box with no resolved height the canvas collapses to a 0px strip — the same failure GraphCanvas\n * documents, inherited here because this widget is one.\n *\n * ```tsx\n * <div className=\"h-[42rem]\">\n * <StateMachine variant=\"connect\" process={process} onChange={setProcess} />\n * </div>\n * ```\n */\nexport function StateMachine({\n\tprocess,\n\tonChange,\n\tvariant = \"connect\",\n\tshell: shellProp,\n\tedit: editProp,\n\tonEditChange,\n\tonNavigate,\n\tpermit: permitProp,\n\tonPermitChange,\n\tsection: sectionProp,\n\tonSectionChange,\n\tonBack,\n\tformSlot,\n\theaderActions,\n\trailFooter,\n\tauthoring = false,\n\tactions = NO_ACTIONS,\n\teffects = NO_EFFECTS,\n\tstateFlags = DEFAULT_STATE_FLAGS,\n\tinstances = NO_ROWS,\n\tinstancesLoading = false,\n\treadOnly = false,\n\tsections: sectionsProp,\n\tsectionLabels: sectionLabelsProp,\n\tclassName,\n}: StateMachineProps) {\n\tconst traits = VARIANT_TRAITS[variant];\n\t// The traits a caller may override. `variant` is a preset: it supplies these, and anything passed\n\t// explicitly wins — which is what lets a third product declare its own rail without a key in an\n\t// enum here.\n\tconst shell = shellProp ?? traits.shell;\n\tconst sectionGroups = sectionsProp ?? traits.sections;\n\tconst sectionLabels = sectionLabelsProp ?? traits.sectionLabels;\n\tconst {permitFields} = traits;\n\t// Read-only takes the rail with it: the rail is where every edit is made.\n\tconst editing = shell && traits.rail && !readOnly;\n\n\t// One object for the whole subtree, memoised so the deep pieces do not re-render on every parent\n\t// render just because a literal changed identity.\n\tconst data = useMemo(\n\t\t() => ({actions, effects, stateFlags, instances, readOnly}),\n\t\t[actions, effects, stateFlags, instances, readOnly],\n\t);\n\t/**\n\t * Which section the rail opens on.\n\t *\n\t * AUTHORING ALWAYS OPENS ON THE CANVAS. A graph that is being written has nothing else worth\n\t * landing on — Instances and Bottlenecks are dropped in that mode, and General is identity fields\n\t * for a record whose whole point is the shape being drawn behind them. The work-permit cut is the\n\t * one this changes: its rail leads with General, which is right for an existing template and\n\t * wrong for a blank one.\n\t */\n\tconst defaultSection = authoring ? \"canvas\" : (sectionGroups[0]?.items[0] ?? \"canvas\");\n\n\t// Controlled-optional. `editProp` is read at call time, so a functional update always sees the\n\t// value the host is currently rendering.\n\tconst [ownEdit, setOwnEdit] = useState<Wc3ProcessEditState>(WC3_PROCESS_EDIT_INITIAL);\n\tconst controlled = editProp !== undefined;\n\tconst edit = editProp ?? ownEdit;\n\tconst setEdit = useCallback(\n\t\t(update: (prev: Wc3ProcessEditState) => Wc3ProcessEditState) => {\n\t\t\tif (controlled) onEditChange?.(update(editProp as Wc3ProcessEditState));\n\t\t\telse setOwnEdit(update);\n\t\t},\n\t\t[controlled, editProp, onEditChange],\n\t);\n\n\t// Same controlled-optional shape as `edit`, for the same reason: the process page may want the\n\t// permit fields in its own header, and a standalone mount should not need a host to work.\n\tconst [ownPermit, setOwnPermit] = useState<Wc3PermitMeta>(() => ({\n\t\tname: process.name,\n\t\ttype: \"\",\n\t\tdescription: \"\",\n\t\tpolicy: WC3_PERMIT_POLICY_INITIAL,\n\t}));\n\tconst permit = permitProp ?? ownPermit;\n\tconst setPermit = (next: Wc3PermitMeta) => {\n\t\tif (permitProp === undefined) setOwnPermit(next);\n\t\tonPermitChange?.(next);\n\t\t// `name` is the one field with a home on the record. Mirroring it here is what keeps the panel\n\t\t// from being a second, divergent copy of the process name.\n\t\tif (next.name !== process.name) onChange(updateProcessMeta(process, {name: next.name}));\n\t};\n\n\tconst [ownSection, setOwnSection] = useState<StateMachineSection>(defaultSection);\n\tconst section = sectionProp ?? ownSection;\n\tconst setSection = (next: StateMachineSection) => {\n\t\tif (sectionProp === undefined) setOwnSection(next);\n\t\tonSectionChange?.(next);\n\t};\n\n\tconst typeOptions = useMemo(() => permitTypeOptions(process, instances), [process, instances]);\n\n\tconst [pending, setPending] = useState<{\n\t\tkind: \"state\" | \"transition\";\n\t\tid: string;\n\t} | null>(null);\n\t// Which half of the rail is open. Held rather than derived from the selection: with nothing\n\t// selected there is no selection to derive from, and the user must still be able to reach the\n\t// add-transition form. Every gesture that changes the subject moves it — see the canvas handlers.\n\tconst [railTab, setRailTab] = useState<RailTab>(\"state\");\n\tconst [newStateErr, setNewStateErr] = useState<string | null>(null);\n\t// Whether the in-place add forms are open. A canvas drag opens the transition one — see onConnect —\n\t// because otherwise the endpoints it fills in would land on a form nobody can see.\n\tconst [addingState, setAddingState] = useState(false);\n\tconst [addingTransition, setAddingTransition] = useState(false);\n\n\t// Cleared whenever the open process changes — including graphErr, which the prototype leaves on\n\t// screen after switching processes. That is a bug we do not port. When `edit` is controlled the\n\t// host resets it; resetting `ownEdit` here is then a no-op on unread state.\n\tuseEffect(() => {\n\t\tsetOwnEdit(WC3_PROCESS_EDIT_INITIAL);\n\t\tsetOwnSection(defaultSection);\n\t\tsetRailTab(\"state\");\n\t\tsetOwnPermit({name: process.name, type: \"\", description: \"\", policy: WC3_PERMIT_POLICY_INITIAL});\n\t\tsetPending(null);\n\t\tsetNewStateErr(null);\n\t\tsetAddingState(false);\n\t\tsetAddingTransition(false);\n\t\t// `process.name` is deliberately NOT a dependency: this reseeds when a DIFFERENT process opens,\n\t\t// and rerunning it on every rename would fight the name field keystroke by keystroke.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [process.id]);\n\n\tconst rows = useMemo(() => [...instances], [instances]);\n\tconst facts = useMemo(() => processFacts(process, rows, actions), [process, rows, actions]);\n\n\t/**\n\t * What the validity check depends on: the SHAPE of the graph, not the record.\n\t *\n\t * Every commit deep-clones the process, so `process` itself changes identity when a state is\n\t * merely dragged. Hashing the fields the rules actually read keeps the footer from re-checking on\n\t * a move that cannot alter the answer.\n\t */\n\tconst graphKey = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\tprocess.states.map((state) => `${state.id}:${state.type}:${state.category}:${state.flags.join(\"+\")}`).join(\"|\"),\n\t\t\t\tprocess.transitions.map((t) => `${t.id}:${t.from}>${t.to}:${t.actionTypeId}`).join(\"|\"),\n\t\t\t].join(\"//\"),\n\t\t[process.states, process.transitions],\n\t);\n\n\t// ── Canvas derivation ─────────────────────────────────────────────────────\n\t// Positions are fed STRAIGHT from the record's `layout`, seeded once by processLayout() at seed\n\t// time and thereafter owned by the drag. No layout pass on render: recomputing would fight every\n\t// drag and snap a moved state back the moment anything else changed.\n\t//\n\t// Both maps stay as close to a bare React Flow node/edge as the graph allows: `type: \"default\"`,\n\t// no `style`, no `markerEnd` colour, no label styling. Selection rides React Flow's own\n\t// `selected` flag rather than a border of ours, so a picked state gets the library's selected\n\t// shadow and a picked transition its `#555` stroke.\n\tconst flowNodes: Node[] = useMemo(\n\t\t() =>\n\t\t\tprocess.states.map((state) => ({\n\t\t\t\tid: state.id,\n\t\t\t\ttype: \"default\",\n\t\t\t\tposition: process.layout[state.id] ?? {x: 36, y: 34},\n\t\t\t\tselected: edit.stateSel === state.id,\n\t\t\t\t// The ONE thing this node says that a bare default node cannot: which state it is. The\n\t\t\t\t// state's identity colour is the same value the rail's State list prints as a dot beside\n\t\t\t\t// every row, so the canvas and the list name a state the same way.\n\t\t\t\t//\n\t\t\t\t// Set as React Flow's own --xy-node-background-color, not a `background` of ours, so\n\t\t\t\t// everything else about the box stays the library's — and mixed INTO\n\t\t\t\t// --xy-node-background-color-default rather than into a literal white, so the tint lands\n\t\t\t\t// on #fff in light mode and #1e1e1e in dark without a second table of colours.\n\t\t\t\tstyle: {\n\t\t\t\t\t[\"--xy-node-background-color\"]: `color-mix(in srgb, ${state.color} ${WC3_PROCESS_NODE_TINT}, var(--xy-node-background-color-default))`,\n\t\t\t\t} as CSSProperties,\n\t\t\t\tdata: {state} satisfies ProcFlowNodeData,\n\t\t\t})),\n\t\t[process.states, process.layout, edit.stateSel],\n\t);\n\n\tconst flowEdges: Edge[] = useMemo(() => {\n\t\tconst known = new Set(process.states.map((s) => s.id));\n\t\treturn process.transitions\n\t\t\t.map((t): Edge | null => {\n\t\t\t\t// Guarded on both endpoints, so a transition left by a half-applied edit draws nothing\n\t\t\t\t// rather than dangling. deleteState cascades, so this should never fire.\n\t\t\t\tif (!known.has(t.from) || !known.has(t.to)) return null;\n\t\t\t\tconst selfLoop = t.from === t.to;\n\t\t\t\tconst backward = !selfLoop && (process.layout[t.to]?.x ?? 0) < (process.layout[t.from]?.x ?? 0);\n\t\t\t\t// A self-loop and a backward edge only RENDER when source and target resolve to different\n\t\t\t\t// handles. With in/out alone the extension loop draws nothing and every reopen /\n\t\t\t\t// reject_loop overlays the forward edge beside it. This is routing, not decoration, so it\n\t\t\t\t// survives the move to default styling; the edge itself is a plain default bezier.\n\t\t\t\t//\n\t\t\t\t// The two cases take DIFFERENT handle pairs, and the difference is the bezier's own\n\t\t\t\t// geometry. A backward edge runs bottom → top and reads as an arc under the row. A\n\t\t\t\t// self-loop cannot: both endpoints sit on one node, so bottom → top puts all four\n\t\t\t\t// control points on the same x and the \"loop\" comes out as a straight vertical line\n\t\t\t\t// drawn THROUGH the node. Leaving from the right and returning into the top gives the\n\t\t\t\t// two ends different axes, and the default curve swings clear over the top-right corner\n\t\t\t\t// on its own.\n\t\t\t\treturn {\n\t\t\t\t\tid: t.id,\n\t\t\t\t\tsource: t.from,\n\t\t\t\t\ttarget: t.to,\n\t\t\t\t\tsourceHandle: backward ? \"back-out\" : \"out\",\n\t\t\t\t\ttargetHandle: selfLoop || backward ? \"back-in\" : \"in\",\n\t\t\t\t\t// NO label. The transition keys are long snake_case identifiers — reject_from_submitted,\n\t\t\t\t\t// reopen_from_rejected — and printing one on every line put more text between the\n\t\t\t\t\t// nodes than inside them, crossing the neighbouring edges to do it. A transition is\n\t\t\t\t\t// named in three places that can hold the whole key: the rail's Transition list, the\n\t\t\t\t\t// state inspector's outgoing rows, and the inspector a click on the edge opens.\n\t\t\t\t\tselected: edit.transSel === t.id,\n\t\t\t\t\t// The ONE edge style that survives the move to React Flow's defaults, and it earns it by\n\t\t\t\t\t// carrying state rather than decoration: a dashed line is an edge that has been drawn\n\t\t\t\t\t// but not bound to an action type yet. It is what makes commit-on-drop honest — the\n\t\t\t\t\t// gesture keeps its line, and the line says it is not finished. Rule L7 says the same\n\t\t\t\t\t// thing in the footer, and the publish gate enforces it.\n\t\t\t\t\t...(t.actionTypeId === null ? {style: {strokeDasharray: \"5 4\"}} : {}),\n\t\t\t\t\t// The one addition to the default edge. Direction is the whole content of a state\n\t\t\t\t\t// machine — an unmarked line does not say which way the transition runs — and leaving\n\t\t\t\t\t// `color` off keeps the head on React Flow's own `#b1b1b7`.\n\t\t\t\t\tmarkerEnd: {type: MarkerType.ArrowClosed},\n\t\t\t\t} satisfies Edge;\n\t\t\t})\n\t\t\t.filter((edge): edge is Edge => edge !== null);\n\t}, [process.states, process.transitions, process.layout, edit.transSel]);\n\n\tconst [nodes, setNodes, onNodesChange] = useNodesState<Node>(flowNodes);\n\tconst [edges, setEdges, onEdgesChange] = useEdgesState<Edge>(flowEdges);\n\n\t// React Flow owns positions DURING a drag; the record owns them between drags. Re-seeding on every\n\t// derivation change is safe because a drag does not touch `process` until onNodeDragStop commits.\n\tuseEffect(() => setNodes(flowNodes), [flowNodes, setNodes]);\n\tuseEffect(() => setEdges(flowEdges), [flowEdges, setEdges]);\n\n\t// ── Editing ───────────────────────────────────────────────────────────────\n\tconst openAddState = () => {\n\t\tsetNewStateErr(null);\n\t\tsetAddingState(true);\n\t};\n\n\tconst addNewState = (draft: {name: string; category: Wc3ProcessState[\"category\"]; type: Wc3ProcessState[\"type\"]}) => {\n\t\tconst name = draft.name.trim();\n\t\tif (!name) {\n\t\t\tsetNewStateErr(WC3_PROCESS_MESSAGES.nameRequired);\n\t\t\treturn;\n\t\t}\n\t\tif (\n\t\t\tprocess.states.some(\n\t\t\t\t(s) => s.name.toLowerCase() === name.toLowerCase() || s.value.toLowerCase() === name.toLowerCase(),\n\t\t\t)\n\t\t) {\n\t\t\tsetNewStateErr(WC3_PROCESS_MESSAGES.stateNameTaken);\n\t\t\treturn;\n\t\t}\n\t\tsetNewStateErr(null);\n\t\t// addState owns id, value, colour and layout; the two fields the form asked for are applied on\n\t\t// top through the same pure helper the inspector uses, so there is one way a state is written.\n\t\tconst {process: added, stateId} = addState(process, name);\n\t\tonChange(updateState(added, stateId, {category: draft.category, type: draft.type}));\n\t\tsetEdit((state) => ({...state, stateSel: stateId, transSel: null, graphErr: null}));\n\t\tsetRailTab(\"state\");\n\t\tsetAddingState(false);\n\t};\n\n\tconst closeAddTransition = () => {\n\t\tsetAddingTransition(false);\n\t\tsetEdit((state) => ({...state, draftTransition: {from: null, to: null, actionTypeId: null}, graphErr: null}));\n\t};\n\n\tconst commitTransition = (args: {from: string; to: string; actionTypeId: string | null}) => {\n\t\tconst check = checkTransition(process, args.from, args.to, args.actionTypeId, actions);\n\t\tif (!check.ok) {\n\t\t\t// Verbatim from checkTransition(). No surface rewords a refusal.\n\t\t\tsetEdit((state) => ({...state, graphErr: check.reason}));\n\t\t\treturn;\n\t\t}\n\t\tconst {process: next, transitionId} = addTransition(process, {\n\t\t\tfrom: args.from,\n\t\t\tto: args.to,\n\t\t\t// checkTransition already refused a null / dangling binding, so this is safe.\n\t\t\tactionTypeId: args.actionTypeId,\n\t\t});\n\t\tonChange(next);\n\t\tsetEdit((state) => ({\n\t\t\t...state,\n\t\t\tgraphErr: null,\n\t\t\ttransSel: transitionId,\n\t\t\tstateSel: null,\n\t\t\tdraftTransition: {from: null, to: null, actionTypeId: null},\n\t\t}));\n\t\tsetRailTab(\"transition\");\n\t\tsetAddingTransition(false);\n\t};\n\n\t/**\n\t * The drag-time guards. Probed with a resolvable binding so guards 1 and 4 — the only two a drag\n\t * can violate — decide the drop; the binding itself is checked when the form commits.\n\t */\n\tconst validateDrag = useCallback(\n\t\t(connection: Connection | Edge) => checkTransition(process, connection.source, connection.target, null, actions),\n\t\t[process, actions],\n\t);\n\n\t/**\n\t * The refusal surface. `isValidConnection` blocks the drop, which means `onConnect` never fires for\n\t * a refused edge and the reason would never be read — so the guards run again here, on the pair the\n\t * drag actually ended on, and their message lands in the warn banner verbatim. Handles are resolved\n\t * by TYPE, not by drag direction, so dragging target→source refuses for the same reason as\n\t * source→target rather than for a spurious one.\n\t */\n\tconst onConnectEnd = useCallback(\n\t\t(_event: MouseEvent | TouchEvent, state: FinalConnectionState) => {\n\t\t\tconst {fromHandle, toHandle} = state;\n\t\t\tif (!fromHandle || !toHandle) return;\n\t\t\tconst source = fromHandle.type === \"source\" ? fromHandle : toHandle;\n\t\t\tconst target = fromHandle.type === \"source\" ? toHandle : fromHandle;\n\t\t\tif (!source.nodeId || !target.nodeId) return;\n\t\t\tconst check = checkTransition(process, source.nodeId, target.nodeId, null, actions);\n\t\t\tsetEdit((edited) => ({\n\t\t\t\t...edited,\n\t\t\t\tgraphErr: check.ok ? null : check.reason,\n\t\t\t}));\n\t\t},\n\t\t[process, actions, setEdit],\n\t);\n\n\t/**\n\t * A LEGAL drop COMMITS, unbound.\n\t *\n\t * The drag supplies both endpoints; addTransition derives the key and the kind; the binding is\n\t * left null and rule L7 carries it from there. Then the new edge is SELECTED and its inspector\n\t * opened, so the field the drop could not fill is the field under the cursor — draw the line,\n\t * finish it in place. One onChange, so undo drops the edge and nothing else.\n\t */\n\tconst onConnect = useCallback(\n\t\t(connection: Connection) => {\n\t\t\tif (!connection.source || !connection.target) return;\n\t\t\tconst {process: next, transitionId} = addTransition(process, {\n\t\t\t\tfrom: connection.source,\n\t\t\t\tto: connection.target,\n\t\t\t\tactionTypeId: null,\n\t\t\t});\n\t\t\tonChange(next);\n\t\t\tsetRailTab(\"transition\");\n\t\t\tsetAddingTransition(false);\n\t\t\tsetEdit((state) => ({\n\t\t\t\t...state,\n\t\t\t\tgraphErr: null,\n\t\t\t\tstateSel: null,\n\t\t\t\ttransSel: transitionId,\n\t\t\t\tdraftTransition: {from: null, to: null, actionTypeId: null},\n\t\t\t}));\n\t\t},\n\t\t[process, onChange, setEdit],\n\t);\n\n\tconst requestDeleteState = (stateId: string) => {\n\t\t// Blocked BEFORE the dialog: a state holding live tokens cannot be deleted at all, so asking\n\t\t// \"are you sure?\" would be asking about something that will not happen.\n\t\tconst reason = stateDeleteBlockReason(process, stateId, rows);\n\t\tif (reason) {\n\t\t\tsetEdit((state) => ({...state, graphErr: reason}));\n\t\t\treturn;\n\t\t}\n\t\tsetPending({kind: \"state\", id: stateId});\n\t};\n\n\tconst confirmPending = () => {\n\t\tif (!pending) return;\n\t\tif (pending.kind === \"state\") {\n\t\t\t// Cascades: deleteState drops every transition touching the state, so the canvas can never\n\t\t\t// keep a stub edge.\n\t\t\tonChange(deleteState(process, pending.id));\n\t\t\tsetEdit((state) => ({...state, stateSel: null, graphErr: null}));\n\t\t} else {\n\t\t\tonChange(deleteTransition(process, pending.id));\n\t\t\tsetEdit((state) => ({...state, transSel: null, graphErr: null}));\n\t\t}\n\t\tsetPending(null);\n\t};\n\n\tconst pendingState = pending?.kind === \"state\" ? process.states.find((s) => s.id === pending.id) : undefined;\n\tconst pendingTransition =\n\t\tpending?.kind === \"transition\" ? process.transitions.find((t) => t.id === pending.id) : undefined;\n\n\t/*\n\t * Height strategy (A): the canvas owns the height, the builder does not scroll, and the right\n\t * panel scrolls inside itself. min-h-0 all the way down — this grid, the canvas column, the\n\t * GraphCanvas wrapper — or the canvas collapses to a 0px strip.\n\t *\n\t * No gap and no Card. The canvas is the work; a rounded, bordered box floating inside a padded\n\t * well made it a picture OF the work, and every rule and gutter around it took width the graph\n\t * wanted. The editing rail is the shell's LEFT panel mirrored — same bg-card, same one-pixel\n\t * border, same full height, its own scroll — so the middle is nothing but canvas.\n\t */\n\tconst workflowStage = (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"wwc:grid wwc:min-h-0 wwc:min-w-0 wwc:flex-1 wwc:overflow-hidden\",\n\t\t\t\tediting && \"wwc:lg:grid-cols-[minmax(0,1fr)_22rem]\",\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:flex-col wwc:overflow-hidden wwc:bg-card\">\n\t\t\t\t{edit.graphErr && (\n\t\t\t\t\t<div className=\"wwc:flex wwc:shrink-0 wwc:items-start wwc:gap-2 wwc:border-b wwc:border-amber-600/30 wwc:bg-amber-500/5 wwc:p-3 wwc:text-sm\">\n\t\t\t\t\t\t<XCircle className=\"wwc:mt-0.5 wwc:h-4 wwc:w-4 wwc:shrink-0 wwc:text-amber-600\" />\n\t\t\t\t\t\t{/* Verbatim from checkTransition() / stateDeleteBlockReason(). No surface rewords a\n\t\t\t\t\t\t refusal. */}\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<b>Edit refused:</b> {edit.graphErr}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"wwc:min-h-0 wwc:flex-1\">\n\t\t\t\t\t{process.states.length === 0 ? (\n\t\t\t\t\t\t// Only reachable by deleting every state: createProcess() seeds two.\n\t\t\t\t\t\t<Empty\n\t\t\t\t\t\t\ttitle=\"No states\"\n\t\t\t\t\t\t\tdescription=\"This process has no states left. Add one in the rail on the right — a graph needs one initial state, one terminal state and at least one active state to pass rules L1–L3.\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<GraphCanvas\n\t\t\t\t\t\t\t// \"free\", not the \"layered\" default, so the canvas keeps React Flow's OWN edge\n\t\t\t\t\t\t\t// type — the default bezier — instead of GraphCanvas's smoothstep wiring. A state\n\t\t\t\t\t\t\t// machine is not the layered DAG that default was written for: it runs backwards\n\t\t\t\t\t\t\t// and loops onto itself, and the orthogonal segments turned every one of those\n\t\t\t\t\t\t\t// into a staircase. The fit padding is passed back explicitly; only the edge\n\t\t\t\t\t\t\t// default was in the way.\n\t\t\t\t\t\t\tlayout=\"free\"\n\t\t\t\t\t\t\tfitViewOptions={{padding: 0.12}}\n\t\t\t\t\t\t\tnodes={nodes}\n\t\t\t\t\t\t\tedges={edges}\n\t\t\t\t\t\t\tonNodesChange={onNodesChange}\n\t\t\t\t\t\t\tonEdgesChange={onEdgesChange}\n\t\t\t\t\t\t\tnodeTypes={PROCESS_NODE_TYPES}\n\t\t\t\t\t\t\t// No rail means nowhere to give a dragged connection its action binding, so the\n\t\t\t\t\t\t\t// `canvas` variant refuses the gesture outright rather than opening a dead end.\n\t\t\t\t\t\t\tnodesConnectable={editing}\n\t\t\t\t\t\t\t// Read-only pins the layout too. A viewer nudging a box would otherwise commit a\n\t\t\t\t\t\t\t// moveState through onChange and write to a record they are not editing.\n\t\t\t\t\t\t\tnodesDraggable={!readOnly}\n\t\t\t\t\t\t\tonConnect={editing ? onConnect : undefined}\n\t\t\t\t\t\t\t// Refuses an illegal edge during the drag itself, so the guards are the connection\n\t\t\t\t\t\t\t// rule rather than an after-the-fact rejection.\n\t\t\t\t\t\t\tisValidConnection={(connection) => editing && validateDrag(connection).ok}\n\t\t\t\t\t\t\tonConnectStart={() => setEdit((state) => ({...state, graphErr: null}))}\n\t\t\t\t\t\t\tonConnectEnd={onConnectEnd}\n\t\t\t\t\t\t\tonNodeClick={(_, node) => {\n\t\t\t\t\t\t\t\tsetRailTab(\"state\");\n\t\t\t\t\t\t\t\tsetEdit((state) => ({\n\t\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\t\tstateSel: state.stateSel === node.id ? null : node.id,\n\t\t\t\t\t\t\t\t\ttransSel: null,\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// React Flow owns the position during the drag; ONE commit lands on drag end.\n\t\t\t\t\t\t\tonNodeDragStop={\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t: (_, node) => onChange(moveState(process, node.id, node.position.x, node.position.y))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonEdgeClick={(_, edge) => {\n\t\t\t\t\t\t\t\tsetRailTab(\"transition\");\n\t\t\t\t\t\t\t\tsetEdit((state) => ({\n\t\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\t\ttransSel: state.transSel === edge.id ? null : edge.id,\n\t\t\t\t\t\t\t\t\tstateSel: null,\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonPaneClick={() =>\n\t\t\t\t\t\t\t\tsetEdit((state) => ({\n\t\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\t\tstateSel: null,\n\t\t\t\t\t\t\t\t\ttransSel: null,\n\t\t\t\t\t\t\t\t\tgraphErr: null,\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{!readOnly && <TidyLayoutButton onTidy={() => onChange({...process, layout: processLayout(process)})} />}\n\t\t\t\t\t\t</GraphCanvas>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{/* Centred, because it is the canvas's own readout rather than a caption for something to\n\t\t\t\t its left — and centred is where the eye already is when the graph is what changed. */}\n\t\t\t\t<div className=\"wwc:flex wwc:shrink-0 wwc:items-center wwc:justify-center wwc:border-t wwc:border-border wwc:px-3 wwc:py-2\">\n\t\t\t\t\t<WorkflowStatus lint={facts.lint} graphKey={graphKey} />\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{editing && (\n\t\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:flex-col wwc:gap-4 wwc:overflow-y-auto wwc:border-t wwc:border-border wwc:bg-card wwc:p-4 wwc:lg:border-t-0 wwc:lg:border-l\">\n\t\t\t\t\t{/*\n\t\t\t\t\t * The rail is split by WHAT IS BEING EDITED, because inspecting and adding are the same\n\t\t\t\t\t * subject twice: the State tab holds the state inspector and the add-state form, the\n\t\t\t\t\t * Transition tab its two counterparts. Before, \"Add transition\" sat below a card headed\n\t\t\t\t\t * \"State\" and the pairing had to be inferred from reading order.\n\t\t\t\t\t *\n\t\t\t\t\t * The tab FOLLOWS the canvas rather than being an independent switch — clicking a state,\n\t\t\t\t\t * clicking an edge, or dropping a legal connection all move it, because otherwise the\n\t\t\t\t\t * surface the gesture just filled in would be the hidden one.\n\t\t\t\t\t */}\n\t\t\t\t\t<Tabs value={railTab} onValueChange={(value) => setRailTab(value as RailTab)}>\n\t\t\t\t\t\t{/* Icons echo the canvas: a state is a node, a transition is the arrow between two. The\n\t\t\t\t\t\t base trigger is inline-flex with no gap, so each supplies its own. */}\n\t\t\t\t\t\t<TabsList className=\"wwc:grid wwc:w-full wwc:grid-cols-2\">\n\t\t\t\t\t\t\t<TabsTrigger value=\"state\" className=\"wwc:gap-1.5\">\n\t\t\t\t\t\t\t\t<CircleDot className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\t\t\t\tState\n\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t\t<TabsTrigger value=\"transition\" className=\"wwc:gap-1.5\">\n\t\t\t\t\t\t\t\t<ArrowRight className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\t\t\t\tTransition\n\t\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t</TabsList>\n\n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t * Each tab is a LIST that expands in place, not a card that shows whatever happens to be\n\t\t\t\t\t\t * selected. The graph is the thing being authored, so every state and every transition\n\t\t\t\t\t\t * should be reachable from the rail without hunting for it on the canvas first — and the\n\t\t\t\t\t\t * open row IS the selection, so expanding one rings its node and clicking a node opens\n\t\t\t\t\t\t * its row. One value, two ways to set it.\n\t\t\t\t\t\t */}\n\t\t\t\t\t\t<TabsContent value=\"state\" className=\"wwc:mt-4 wwc:space-y-4\">\n\t\t\t\t\t\t\t<ProcessRailCard title=\"States\" count={process.states.length}>\n\t\t\t\t\t\t\t\t{process.states.length === 0 ? (\n\t\t\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\t\tNo states yet. Add the first one below — a graph needs an initial state, a terminal state and at\n\t\t\t\t\t\t\t\t\t\tleast one active state to pass rules L1–L3.\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Accordion\n\t\t\t\t\t\t\t\t\t\ttype=\"single\"\n\t\t\t\t\t\t\t\t\t\tcollapsible\n\t\t\t\t\t\t\t\t\t\t// \"\" is Radix's \"nothing open\". Mapping it to a null selection is what keeps the\n\t\t\t\t\t\t\t\t\t\t// accordion and the canvas from disagreeing about what is in scope.\n\t\t\t\t\t\t\t\t\t\tvalue={edit.stateSel ?? \"\"}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) =>\n\t\t\t\t\t\t\t\t\t\t\tsetEdit((state) => ({...state, stateSel: next || null, transSel: null, graphErr: null}))\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{process.states.map((state) => (\n\t\t\t\t\t\t\t\t\t\t\t<AccordionItem key={state.id} value={state.id} className=\"wwc:last:border-b-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t<AccordionTrigger className=\"wwc:py-2.5 wwc:hover:no-underline\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:min-w-0 wwc:items-center wwc:gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* The state's own colour, inline — fixture identity, never chrome. */}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:size-2 wwc:shrink-0 wwc:rounded-full\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{background: state.color}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:truncate\">{state.name}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:shrink-0 wwc:text-[10px] wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{state.category}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{state.type === \"initial\" ? \" · initial\" : state.type === \"terminal\" ? \" · terminal\" : \"\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</AccordionTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t<AccordionContent className=\"wwc:pb-4\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<StateInspector\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocess={process}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate={state}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tauthoring={authoring}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonDelete={() => requestDeleteState(state.id)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectTransition={(id) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEdit((current) => ({...current, transSel: id, stateSel: null, graphErr: null}));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetRailTab(\"transition\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</AccordionContent>\n\t\t\t\t\t\t\t\t\t\t\t</AccordionItem>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</Accordion>\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t<div className=\"wwc:mt-3\">\n\t\t\t\t\t\t\t\t\t{addingState ? (\n\t\t\t\t\t\t\t\t\t\t<AddStateForm onCancel={() => setAddingState(false)} onAdd={addNewState} error={newStateErr} />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"outline\" size=\"sm\" className=\"wwc:w-full wwc:gap-1.5\" onClick={openAddState}>\n\t\t\t\t\t\t\t\t\t\t\t<Plus className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\t\t\t\t\t\t\tAdd state\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</ProcessRailCard>\n\t\t\t\t\t\t</TabsContent>\n\n\t\t\t\t\t\t<TabsContent value=\"transition\" className=\"wwc:mt-4 wwc:space-y-4\">\n\t\t\t\t\t\t\t<ProcessRailCard title=\"Transitions\" count={facts.transitionCount}>\n\t\t\t\t\t\t\t\t{process.transitions.length === 0 ? (\n\t\t\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\t\tNo transitions yet. Add one below, or drag between two states on the canvas to pre-fill the form.\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Accordion\n\t\t\t\t\t\t\t\t\t\ttype=\"single\"\n\t\t\t\t\t\t\t\t\t\tcollapsible\n\t\t\t\t\t\t\t\t\t\tvalue={edit.transSel ?? \"\"}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(next) =>\n\t\t\t\t\t\t\t\t\t\t\tsetEdit((state) => ({...state, transSel: next || null, stateSel: null, graphErr: null}))\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{process.transitions.map((transition) => {\n\t\t\t\t\t\t\t\t\t\t\tconst from = process.states.find((s) => s.id === transition.from);\n\t\t\t\t\t\t\t\t\t\t\tconst to = process.states.find((s) => s.id === transition.to);\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<AccordionItem key={transition.id} value={transition.id} className=\"wwc:last:border-b-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<AccordionTrigger className=\"wwc:py-2.5 wwc:hover:no-underline\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:min-w-0 wwc:flex-col wwc:items-start wwc:gap-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:min-w-0 wwc:items-center wwc:gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:truncate\">{transition.key}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{transition.proposed && <ProposedTag />}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:min-w-0 wwc:items-center wwc:gap-1 wwc:text-[10px] wwc:font-normal wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:truncate\">{from?.name ?? \"deleted\"}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowRight className=\"wwc:h-3 wwc:w-3 wwc:shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:truncate\">{to?.name ?? \"deleted\"}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</AccordionTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<AccordionContent className=\"wwc:pb-4\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TransitionInspector\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocess={process}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonDelete={() => setPending({kind: \"transition\", id: transition.id})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonNavigate={onNavigate}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</AccordionContent>\n\t\t\t\t\t\t\t\t\t\t\t\t</AccordionItem>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</Accordion>\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t<div className=\"wwc:mt-3\">\n\t\t\t\t\t\t\t\t\t{addingTransition ? (\n\t\t\t\t\t\t\t\t\t\t<AddTransitionForm\n\t\t\t\t\t\t\t\t\t\t\tprocess={process}\n\t\t\t\t\t\t\t\t\t\t\tdraft={edit.draftTransition}\n\t\t\t\t\t\t\t\t\t\t\tonDraftChange={(next) => setEdit((state) => ({...state, draftTransition: next}))}\n\t\t\t\t\t\t\t\t\t\t\tonAdd={commitTransition}\n\t\t\t\t\t\t\t\t\t\t\tonCancel={closeAddTransition}\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<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:w-full wwc:gap-1.5\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => setAddingTransition(true)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Plus className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\t\t\t\t\t\t\tAdd transition\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</ProcessRailCard>\n\t\t\t\t\t\t</TabsContent>\n\t\t\t\t\t</Tabs>\n\n\t\t\t\t\t{/* Outside the tabs: graph validity is a fact about the WHOLE graph, and half of it would\n\t\t\t\t\t be unreachable behind whichever tab it was filed under. */}\n\t\t\t\t\t{facts.lint.length > 0 && (\n\t\t\t\t\t\t<ProcessRailCard title=\"Graph validity\" count={facts.lint.length}>\n\t\t\t\t\t\t\t<div className=\"wwc:space-y-1\">\n\t\t\t\t\t\t\t\t{facts.lint.map((error) => (\n\t\t\t\t\t\t\t\t\t<div key={`${error.rule}-${error.msg}`} className=\"wwc:flex wwc:gap-1.5 wwc:text-xs\">\n\t\t\t\t\t\t\t\t\t\t<GitBranch className=\"wwc:mt-0.5 wwc:h-3 wwc:w-3 wwc:shrink-0 wwc:text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t<b>{error.rule}</b> {error.msg}\n\t\t\t\t\t\t\t\t\t\t</span>\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</ProcessRailCard>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{railFooter}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n\n\tconst dialogs = (\n\t\t<>\n\t\t\t<ConfirmDialog\n\t\t\t\topen={pending?.kind === \"state\"}\n\t\t\t\tonOpenChange={(next) => {\n\t\t\t\t\tif (!next) setPending(null);\n\t\t\t\t}}\n\t\t\t\ttitle=\"Delete state\"\n\t\t\t\tdescription={WC3_PROCESS_MESSAGES.deleteState(\n\t\t\t\t\tpendingState?.name ?? \"\",\n\t\t\t\t\tprocess.transitions.filter((t) => t.from === pending?.id || t.to === pending?.id).length,\n\t\t\t\t)}\n\t\t\t\tconfirmLabel=\"Delete\"\n\t\t\t\tdestructive\n\t\t\t\tonConfirm={confirmPending}\n\t\t\t/>\n\t\t\t<ConfirmDialog\n\t\t\t\topen={pending?.kind === \"transition\"}\n\t\t\t\tonOpenChange={(next) => {\n\t\t\t\t\tif (!next) setPending(null);\n\t\t\t\t}}\n\t\t\t\ttitle=\"Delete transition\"\n\t\t\t\tdescription={WC3_PROCESS_MESSAGES.deleteTransition(pendingTransition?.key ?? \"\")}\n\t\t\t\tconfirmLabel=\"Delete transition\"\n\t\t\t\tdestructive\n\t\t\t\tonConfirm={confirmPending}\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif (!shell) {\n\t\treturn (\n\t\t\t<StateMachineDataContext.Provider value={data}>\n\t\t\t\t<div className={cn(\"wwc:flex wwc:min-h-0 wwc:min-w-0 wwc:flex-1 wwc:flex-col\", className)}>\n\t\t\t\t\t{workflowStage}\n\t\t\t\t\t{dialogs}\n\t\t\t\t</div>\n\t\t\t</StateMachineDataContext.Provider>\n\t\t);\n\t}\n\n\t// Authoring drops the two views of live work. Filtered from the SAME trait rows the variant\n\t// declares rather than a second list, so a variant that adds a section gets it here for free — and\n\t// an emptied group is dropped whole, so its divider cannot survive as a rule above nothing.\n\tconst visibleGroups = authoring\n\t\t? sectionGroups\n\t\t\t\t.map((group) => ({...group, items: group.items.filter((id) => id !== \"instances\" && id !== \"bottlenecks\")}))\n\t\t\t\t.filter((group) => group.items.length > 0)\n\t\t: sectionGroups;\n\n\tconst railGroups: SideMenuGroup[] = visibleGroups.map((group) => ({\n\t\tdivider: group.divider,\n\t\titems: group.items.map((id) => ({\n\t\t\tid,\n\t\t\tlabel: sectionLabels?.[id] ?? SECTION_LABEL[id],\n\t\t\ticon: SECTION_ICON[id],\n\t\t\tcount:\n\t\t\t\tid === \"canvas\"\n\t\t\t\t\t? facts.stateCount\n\t\t\t\t\t: id === \"instances\"\n\t\t\t\t\t\t? facts.tokenCount\n\t\t\t\t\t\t: id === \"bottlenecks\"\n\t\t\t\t\t\t\t? facts.openCount\n\t\t\t\t\t\t\t: id === \"general\" && facts.lint.length > 0\n\t\t\t\t\t\t\t\t? facts.lint.length\n\t\t\t\t\t\t\t\t: undefined,\n\t\t})),\n\t}));\n\n\tconst selectState = (stateId: string | null) => setEdit((state) => ({...state, stateSel: stateId, transSel: null}));\n\n\tconst shellBody = (\n\t\t<div className={cn(\"wwc:flex wwc:min-h-0 wwc:flex-1 wwc:flex-col\", className)}>\n\t\t\t{/*\n\t\t\t * Fixed bar, sized to match PageContentHeader above it (compact density -> min-h-12, px-3) so\n\t\t\t * the two stacked headers read as one band. The <h1> is legitimate here — the no-in-content-h1\n\t\t\t * rule is about tab panes, not a drill-in header.\n\t\t\t */}\n\t\t\t<div className=\"wwc:flex wwc:min-h-12 wwc:shrink-0 wwc:items-center wwc:justify-between wwc:gap-3 wwc:border-b wwc:border-border wwc:bg-card wwc:px-3\">\n\t\t\t\t<div className=\"wwc:flex wwc:min-w-0 wwc:items-center wwc:gap-2.5\">\n\t\t\t\t\t{/* No onBack means the builder is mounted standalone — there is nowhere to go back TO, and\n\t\t\t\t\t a button that does nothing is worse than no button. The divider goes with it. */}\n\t\t\t\t\t{onBack && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Button variant=\"ghost\" size=\"sm\" className=\"wwc:gap-1.5\" onClick={onBack}>\n\t\t\t\t\t\t\t\t<ArrowLeft className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t\tBack\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<div className=\"wwc:h-5 wwc:w-px wwc:shrink-0 wwc:bg-border\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* A permit template has no icon, so authoring shows none. */}\n\t\t\t\t\t{!authoring && <ProcessGlyphTile process={process} />}\n\t\t\t\t\t<h1 className=\"wwc:truncate wwc:text-sm wwc:font-semibold\">{process.name}</h1>\n\t\t\t\t\t{/* ProductChip is a plain component; used directly (not as an asChild trigger) it needs no\n\t\t\t\t\t span wrapper. */}\n\t\t\t\t\t{!authoring && (\n\t\t\t\t\t\t<ProductChip\n\t\t\t\t\t\t\tprocess={process}\n\t\t\t\t\t\t\tonOpenProduct={onNavigate ? (key) => onNavigate(lineageNav.product(key)) : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{!authoring && <SlaModelBadge process={process} />}\n\t\t\t\t\t{!authoring && facts.lint.length > 0 && (\n\t\t\t\t\t\t// GUIDANCE, not breakage: a process created from scratch is born failing L5 until its\n\t\t\t\t\t\t// first transition lands, and that must read as the next step.\n\t\t\t\t\t\t<HoverTooltip content={facts.lint.map((error) => `${error.rule}: ${error.msg}`).join(\" \")}>\n\t\t\t\t\t\t\t{/* Badge forwards refs; this span is here because the tooltip's asChild trigger needs one\n\t\t\t\t\t\t\t that does. */}\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<Badge variant=\"warningSoft\" className=\"wwc:gap-1 wwc:font-normal\">\n\t\t\t\t\t\t\t\t\t<TriangleAlert className=\"wwc:h-3 wwc:w-3\" />\n\t\t\t\t\t\t\t\t\t{facts.lint.length} lint\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</HoverTooltip>\n\t\t\t\t\t)}\n\t\t\t\t\t{!authoring && (\n\t\t\t\t\t\t<span className=\"wwc:hidden wwc:truncate wwc:text-[11px] wwc:text-muted-foreground wwc:lg:inline\">\n\t\t\t\t\t\t\t{facts.stateCount} states · {facts.transitionCount} transitions · {facts.openCount} open tokens\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"wwc:flex wwc:shrink-0 wwc:items-center wwc:gap-3\">\n\t\t\t\t\t{/* The SLA / bottleneck tint switch stood here. It coloured the state boxes by their\n\t\t\t\t\t share of over-SLA tokens — a paint job on a node that no longer paints anything,\n\t\t\t\t\t now that the canvas is on React Flow's default node. The same reading is still on\n\t\t\t\t\t the page, unlost: the Bottlenecks section ranks states by exactly this measure and\n\t\t\t\t\t the Instances table flags the over-SLA rows. */}\n\t\t\t\t\t{/* Last, so the commit actions sit hard against the right edge whatever else is shown. */}\n\t\t\t\t\t{headerActions}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<RecordDetailShell\n\t\t\t\ttitle=\"Process\"\n\t\t\t\tsections={railGroups}\n\t\t\t\tactiveSectionId={section}\n\t\t\t\tonSectionChange={(id) => setSection(id as StateMachineSection)}\n\t\t\t\t// Always flush: the shell's padded well is recreated below (SectionWell) for the sections\n\t\t\t\t// that want it. This keeps every child a DIRECT child of the shell row, which is what lets\n\t\t\t\t// the form builder stay MOUNTED (merely display-hidden) when another section is showing —\n\t\t\t\t// if the tree position changed with `flush`, React would remount the slot and wipe its\n\t\t\t\t// in-progress state. Canvas and form still run edge to edge, the way a canvas should.\n\t\t\t\tflush\n\t\t\t>\n\t\t\t\t{/*\n\t\t\t\t * The form builder holds local state (chosen build method, draft questions, selection).\n\t\t\t\t * It must survive a trip to another section and back, so it is never unmounted — only\n\t\t\t\t * hidden. First child, so its position is stable whatever section renders after it.\n\t\t\t\t */}\n\t\t\t\t{formSlot ? (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"wwc:min-h-0 wwc:min-w-0 wwc:flex-1 wwc:flex-col\",\n\t\t\t\t\t\t\tsection === \"form\" ? \"wwc:flex\" : \"wwc:hidden\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{formSlot}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t{section === \"canvas\" ? (\n\t\t\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:min-w-0 wwc:flex-1 wwc:flex-col\">{workflowStage}</div>\n\t\t\t\t) : section === \"general\" ? (\n\t\t\t\t\t<SectionWell>\n\t\t\t\t\t\t<SettingsSection\n\t\t\t\t\t\t\tprocess={process}\n\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\tonNavigate={onNavigate}\n\t\t\t\t\t\t\tauthoring={authoring}\n\t\t\t\t\t\t\tidentityExtra={\n\t\t\t\t\t\t\t\tpermitFields ? (\n\t\t\t\t\t\t\t\t\t<PermitFields permit={permit} onPermitChange={setPermit} typeOptions={typeOptions} />\n\t\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SectionWell>\n\t\t\t\t) : section === \"policy\" ? (\n\t\t\t\t\t<SectionWell>\n\t\t\t\t\t\t<PermitPolicySection policy={permit.policy} onChange={(policy) => setPermit({...permit, policy})} />\n\t\t\t\t\t</SectionWell>\n\t\t\t\t) : section === \"form\" ? (\n\t\t\t\t\tformSlot ? null : (\n\t\t\t\t\t\t<SectionWell>\n\t\t\t\t\t\t\t<Empty\n\t\t\t\t\t\t\t\ttitle=\"Form\"\n\t\t\t\t\t\t\t\tdescription=\"Nothing here yet. This is where the permit's request form goes — the fields an applicant fills in before the workflow has anything to move. Pass `formSlot` to fill it.\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SectionWell>\n\t\t\t\t\t)\n\t\t\t\t) : section === \"instances\" ? (\n\t\t\t\t\t<SectionWell>\n\t\t\t\t\t\t<InstancesSection\n\t\t\t\t\t\t\tprocess={process}\n\t\t\t\t\t\t\tselectedStateId={edit.stateSel}\n\t\t\t\t\t\t\tonSelectState={selectState}\n\t\t\t\t\t\t\tloading={instancesLoading}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SectionWell>\n\t\t\t\t) : (\n\t\t\t\t\t// Imported, never duplicated: the selection lives in `edit`, so the canvas, the token queue\n\t\t\t\t\t// and the bottleneck ranking can never disagree about which state is in scope.\n\t\t\t\t\t<SectionWell>\n\t\t\t\t\t\t<ProcessBottlenecksSection\n\t\t\t\t\t\t\tprocess={process}\n\t\t\t\t\t\t\tinstances={instances}\n\t\t\t\t\t\t\tselectedStateId={edit.stateSel}\n\t\t\t\t\t\t\tonSelectState={selectState}\n\t\t\t\t\t\t\tonOpenInstances={(stateId) => {\n\t\t\t\t\t\t\t\tselectState(stateId);\n\t\t\t\t\t\t\t\tsetSection(\"instances\");\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SectionWell>\n\t\t\t\t)}\n\t\t\t</RecordDetailShell>\n\n\t\t\t{dialogs}\n\t\t</div>\n\t);\n\n\treturn <StateMachineDataContext.Provider value={data}>{shellBody}</StateMachineDataContext.Provider>;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/pages/typeform/AttachmentInput.d.ts
|
|
2
|
+
export interface AttachmentInputProps {
|
|
3
|
+
/** The selected file name, or "" / undefined when nothing is chosen. */
|
|
4
|
+
value?: string;
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
id?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function AttachmentInput({ value, onChange, disabled, id }: AttachmentInputProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//#endregion
|
|
11
|
+
//# sourceMappingURL=AttachmentInput.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttachmentInput.d.mts","names":[],"sources":["../../../src/pages/typeform/AttachmentInput.tsx"],"mappings":";iBAQiB;;EAEhB;EACA,WAAW;EACX;EACA;;wBAGe,kBAAiB,OAAO,UAAU,UAAU,MAAK,mDAAoB,IAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Button } from "../../button.mjs";
|
|
2
|
+
import { Paperclip, X } from "lucide-react";
|
|
3
|
+
import { useRef } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/pages/typeform/AttachmentInput.tsx
|
|
6
|
+
function AttachmentInput({ value, onChange, disabled, id }) {
|
|
7
|
+
const inputRef = useRef(null);
|
|
8
|
+
function handleSelect(e) {
|
|
9
|
+
const file = e.target.files?.[0];
|
|
10
|
+
if (file) onChange(file.name);
|
|
11
|
+
}
|
|
12
|
+
function remove() {
|
|
13
|
+
if (inputRef.current) inputRef.current.value = "";
|
|
14
|
+
onChange("");
|
|
15
|
+
}
|
|
16
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
17
|
+
className: "wwc:flex wwc:items-center wwc:gap-2",
|
|
18
|
+
children: [
|
|
19
|
+
/* @__PURE__ */ jsx("input", {
|
|
20
|
+
ref: inputRef,
|
|
21
|
+
id,
|
|
22
|
+
type: "file",
|
|
23
|
+
className: "wwc:hidden",
|
|
24
|
+
disabled,
|
|
25
|
+
onChange: handleSelect
|
|
26
|
+
}),
|
|
27
|
+
/* @__PURE__ */ jsxs(Button, {
|
|
28
|
+
type: "button",
|
|
29
|
+
variant: "outline",
|
|
30
|
+
disabled,
|
|
31
|
+
onClick: () => inputRef.current?.click(),
|
|
32
|
+
children: [/* @__PURE__ */ jsx(Paperclip, {}), "Choose file"]
|
|
33
|
+
}),
|
|
34
|
+
value ? /* @__PURE__ */ jsxs("div", {
|
|
35
|
+
className: "wwc:flex wwc:items-center wwc:gap-1.5 wwc:rounded-md wwc:border wwc:border-border wwc:bg-muted wwc:px-2.5 wwc:py-1 wwc:text-sm wwc:text-foreground",
|
|
36
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
37
|
+
className: "wwc:max-w-56 wwc:truncate",
|
|
38
|
+
children: value
|
|
39
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
40
|
+
type: "button",
|
|
41
|
+
variant: "ghost",
|
|
42
|
+
size: "sm",
|
|
43
|
+
icon: true,
|
|
44
|
+
disabled,
|
|
45
|
+
"aria-label": "Remove file",
|
|
46
|
+
onClick: remove,
|
|
47
|
+
children: /* @__PURE__ */ jsx(X, {})
|
|
48
|
+
})]
|
|
49
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
50
|
+
className: "wwc:text-sm wwc:text-muted-foreground",
|
|
51
|
+
children: "No file chosen"
|
|
52
|
+
})
|
|
53
|
+
]
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { AttachmentInput };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=AttachmentInput.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttachmentInput.mjs","names":[],"sources":["../../../src/pages/typeform/AttachmentInput.tsx"],"sourcesContent":["// Fill-time file picker (prototype). Stores only the selected file NAME — no upload — behind a\n// styled Button that proxies a hidden native <input type=\"file\">. Standalone + frozen prop contract\n// so the RJSF widget can wrap it.\nimport {Paperclip, X} from \"lucide-react\";\nimport {useRef} from \"react\";\n\nimport {Button} from \"../../button\";\n\nexport interface AttachmentInputProps {\n\t/** The selected file name, or \"\" / undefined when nothing is chosen. */\n\tvalue?: string;\n\tonChange: (value: string) => void;\n\tdisabled?: boolean;\n\tid?: string;\n}\n\nexport function AttachmentInput({value, onChange, disabled, id}: AttachmentInputProps) {\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\n\tfunction handleSelect(e: React.ChangeEvent<HTMLInputElement>) {\n\t\tconst file = e.target.files?.[0];\n\t\tif (file) onChange(file.name);\n\t}\n\n\tfunction remove() {\n\t\tif (inputRef.current) inputRef.current.value = \"\";\n\t\tonChange(\"\");\n\t}\n\n\treturn (\n\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-2\">\n\t\t\t<input ref={inputRef} id={id} type=\"file\" className=\"wwc:hidden\" disabled={disabled} onChange={handleSelect} />\n\t\t\t<Button type=\"button\" variant=\"outline\" disabled={disabled} onClick={() => inputRef.current?.click()}>\n\t\t\t\t<Paperclip />\n\t\t\t\tChoose file\n\t\t\t</Button>\n\t\t\t{value ? (\n\t\t\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1.5 wwc:rounded-md wwc:border wwc:border-border wwc:bg-muted wwc:px-2.5 wwc:py-1 wwc:text-sm wwc:text-foreground\">\n\t\t\t\t\t<span className=\"wwc:max-w-56 wwc:truncate\">{value}</span>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ticon\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-label=\"Remove file\"\n\t\t\t\t\t\tonClick={remove}\n\t\t\t\t\t>\n\t\t\t\t\t\t<X />\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<span className=\"wwc:text-sm wwc:text-muted-foreground\">No file chosen</span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;AAgBA,SAAgB,gBAAgB,EAAC,OAAO,UAAU,UAAU,MAA2B;CACtF,MAAM,WAAW,OAAgC,IAAI;CAErD,SAAS,aAAa,GAAwC;EAC7D,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC9B,IAAI,MAAM,SAAS,KAAK,IAAI;CAC7B;CAEA,SAAS,SAAS;EACjB,IAAI,SAAS,SAAS,SAAS,QAAQ,QAAQ;EAC/C,SAAS,EAAE;CACZ;CAEA,OACC,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACC,oBAAC,SAAD;IAAO,KAAK;IAAc;IAAI,MAAK;IAAO,WAAU;IAAuB;IAAU,UAAU;GAAe,CAAA;GAC9G,qBAAC,QAAD;IAAQ,MAAK;IAAS,SAAQ;IAAoB;IAAU,eAAe,SAAS,SAAS,MAAM;IAAnG,UAAA,CACC,oBAAC,WAAD,CAAY,CAAA,GAAC,aAEN;;GACP,QACA,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACC,oBAAC,QAAD;KAAM,WAAU;KAA6B,UAAA;IAAY,CAAA,GACzD,oBAAC,QAAD;KACC,MAAK;KACL,SAAQ;KACR,MAAK;KACL,MAAA;KACU;KACV,cAAW;KACX,SAAS;KAET,UAAA,oBAAC,GAAD,CAAI,CAAA;IACG,CAAA,CACJ;GAEL,CAAA,IAAA,oBAAC,QAAD;IAAM,WAAU;IAAwC,UAAA;GAAoB,CAAA;EAEzE;;AAEP"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Question } from "./model.mjs";
|
|
2
|
+
//#region src/pages/typeform/BuildMethodScreen.d.ts
|
|
3
|
+
export interface BuildMethodScreenProps {
|
|
4
|
+
onStartFromScratch: () => void;
|
|
5
|
+
onSeed: (questions: Question[]) => void;
|
|
6
|
+
onCancel: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function BuildMethodScreen({ onStartFromScratch, onSeed, onCancel }: BuildMethodScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
//# sourceMappingURL=BuildMethodScreen.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuildMethodScreen.d.mts","names":[],"sources":["../../../src/pages/typeform/BuildMethodScreen.tsx"],"mappings":";;iBAeiB;EAChB;EACA,SAAS,WAAW;EACpB;;wBAgBe,oBAAmB,oBAAoB,QAAQ,YAAW,qDAAsB,IAAA"}
|