@50arms/ui 0.0.0-stage → 35.1.0
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/LICENSE +21 -0
- package/README.md +193 -2
- package/dist/components/Accordion.js +68 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/AgentWorkingSpinner.js +46 -0
- package/dist/components/AgentWorkingSpinner.js.map +1 -0
- package/dist/components/AppShell.js +228 -0
- package/dist/components/AppShell.js.map +1 -0
- package/dist/components/Attention.js +130 -0
- package/dist/components/Attention.js.map +1 -0
- package/dist/components/Avatar.js +99 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.js +143 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Board.js +292 -0
- package/dist/components/Board.js.map +1 -0
- package/dist/components/Button.js +327 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Callout.js +106 -0
- package/dist/components/Callout.js.map +1 -0
- package/dist/components/Card.js +140 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Choice.js +361 -0
- package/dist/components/Choice.js.map +1 -0
- package/dist/components/CodeEditor.js +384 -0
- package/dist/components/CodeEditor.js.map +1 -0
- package/dist/components/ColorPicker.js +174 -0
- package/dist/components/ColorPicker.js.map +1 -0
- package/dist/components/Combobox.js +212 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/CommandPalette.js +163 -0
- package/dist/components/CommandPalette.js.map +1 -0
- package/dist/components/ConcentricRing.js +60 -0
- package/dist/components/ConcentricRing.js.map +1 -0
- package/dist/components/ConnectionCard.js +98 -0
- package/dist/components/ConnectionCard.js.map +1 -0
- package/dist/components/ContextItemRow.js +49 -0
- package/dist/components/ContextItemRow.js.map +1 -0
- package/dist/components/CopyValue.js +57 -0
- package/dist/components/CopyValue.js.map +1 -0
- package/dist/components/CountBadge.js +26 -0
- package/dist/components/CountBadge.js.map +1 -0
- package/dist/components/DateCalendar.js +156 -0
- package/dist/components/DateCalendar.js.map +1 -0
- package/dist/components/DateField.js +166 -0
- package/dist/components/DateField.js.map +1 -0
- package/dist/components/DatePicker.js +56 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/DateTimeText.js +19 -0
- package/dist/components/DateTimeText.js.map +1 -0
- package/dist/components/DescriptionList.js +25 -0
- package/dist/components/DescriptionList.js.map +1 -0
- package/dist/components/Dialog.js +332 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/DragDrop.js +395 -0
- package/dist/components/DragDrop.js.map +1 -0
- package/dist/components/Drawer.js +100 -0
- package/dist/components/Drawer.js.map +1 -0
- package/dist/components/EditGutter.js +110 -0
- package/dist/components/EditGutter.js.map +1 -0
- package/dist/components/EmojiPicker.js +174 -0
- package/dist/components/EmojiPicker.js.map +1 -0
- package/dist/components/ErrorBoundary.js +47 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/Field.js +115 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/FileUpload.js +128 -0
- package/dist/components/FileUpload.js.map +1 -0
- package/dist/components/FilterMenu.js +256 -0
- package/dist/components/FilterMenu.js.map +1 -0
- package/dist/components/GatesSection.js +79 -0
- package/dist/components/GatesSection.js.map +1 -0
- package/dist/components/Icon.js +50 -0
- package/dist/components/Icon.js.map +1 -0
- package/dist/components/IconButton.js +59 -0
- package/dist/components/IconButton.js.map +1 -0
- package/dist/components/IconStack.js +69 -0
- package/dist/components/IconStack.js.map +1 -0
- package/dist/components/ImageUploadField.js +146 -0
- package/dist/components/ImageUploadField.js.map +1 -0
- package/dist/components/InlineEdit.js +432 -0
- package/dist/components/InlineEdit.js.map +1 -0
- package/dist/components/InlineMarkdownEdit.js +184 -0
- package/dist/components/InlineMarkdownEdit.js.map +1 -0
- package/dist/components/Input.js +156 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/LegalDocument.js +155 -0
- package/dist/components/LegalDocument.js.map +1 -0
- package/dist/components/LineDiff.js +95 -0
- package/dist/components/LineDiff.js.map +1 -0
- package/dist/components/ListHeader.js +72 -0
- package/dist/components/ListHeader.js.map +1 -0
- package/dist/components/Loading.js +111 -0
- package/dist/components/Loading.js.map +1 -0
- package/dist/components/Markdown.js +28 -0
- package/dist/components/Markdown.js.map +1 -0
- package/dist/components/MarkdownEditor.js +467 -0
- package/dist/components/MarkdownEditor.js.map +1 -0
- package/dist/components/Menu.js +185 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/Navigation.js +87 -0
- package/dist/components/Navigation.js.map +1 -0
- package/dist/components/NumberInput.js +119 -0
- package/dist/components/NumberInput.js.map +1 -0
- package/dist/components/OTPInput.js +71 -0
- package/dist/components/OTPInput.js.map +1 -0
- package/dist/components/OrderedEntityManager.js +170 -0
- package/dist/components/OrderedEntityManager.js.map +1 -0
- package/dist/components/PagedWindowList.js +74 -0
- package/dist/components/PagedWindowList.js.map +1 -0
- package/dist/components/PaginationBar.js +95 -0
- package/dist/components/PaginationBar.js.map +1 -0
- package/dist/components/Panel.js +396 -0
- package/dist/components/Panel.js.map +1 -0
- package/dist/components/PasswordInput.js +32 -0
- package/dist/components/PasswordInput.js.map +1 -0
- package/dist/components/PasswordRequirements.js +25 -0
- package/dist/components/PasswordRequirements.js.map +1 -0
- package/dist/components/PatchDiff.js +96 -0
- package/dist/components/PatchDiff.js.map +1 -0
- package/dist/components/PendingVeil.js +18 -0
- package/dist/components/PendingVeil.js.map +1 -0
- package/dist/components/Popover.js +214 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Progress.js +419 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/RatingScale.js +89 -0
- package/dist/components/RatingScale.js.map +1 -0
- package/dist/components/ReadMore.js +232 -0
- package/dist/components/ReadMore.js.map +1 -0
- package/dist/components/RecordCard.js +202 -0
- package/dist/components/RecordCard.js.map +1 -0
- package/dist/components/RelativeTime.js +29 -0
- package/dist/components/RelativeTime.js.map +1 -0
- package/dist/components/SandboxedFrame.js +135 -0
- package/dist/components/SandboxedFrame.js.map +1 -0
- package/dist/components/SearchInput.js +38 -0
- package/dist/components/SearchInput.js.map +1 -0
- package/dist/components/SecretField.js +228 -0
- package/dist/components/SecretField.js.map +1 -0
- package/dist/components/SectionNav.js +42 -0
- package/dist/components/SectionNav.js.map +1 -0
- package/dist/components/Select.js +172 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/SequenceDiagram.js +109 -0
- package/dist/components/SequenceDiagram.js.map +1 -0
- package/dist/components/SettingRow.js +124 -0
- package/dist/components/SettingRow.js.map +1 -0
- package/dist/components/SignOffRings.js +36 -0
- package/dist/components/SignOffRings.js.map +1 -0
- package/dist/components/Slider.js +353 -0
- package/dist/components/Slider.js.map +1 -0
- package/dist/components/SolutionChoice.js +89 -0
- package/dist/components/SolutionChoice.js.map +1 -0
- package/dist/components/SortMenu.js +75 -0
- package/dist/components/SortMenu.js.map +1 -0
- package/dist/components/Spinner.js +42 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Stat.js +148 -0
- package/dist/components/Stat.js.map +1 -0
- package/dist/components/StatusSelect.js +119 -0
- package/dist/components/StatusSelect.js.map +1 -0
- package/dist/components/Surface.js +210 -0
- package/dist/components/Surface.js.map +1 -0
- package/dist/components/Table.js +300 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.js +288 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/ThemeMenu.js +198 -0
- package/dist/components/ThemeMenu.js.map +1 -0
- package/dist/components/Toast.js +217 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/components/Toggle.js +147 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/ToggleMatrix.js +157 -0
- package/dist/components/ToggleMatrix.js.map +1 -0
- package/dist/components/Tree.js +125 -0
- package/dist/components/Tree.js.map +1 -0
- package/dist/components/TriStateSwitch.js +111 -0
- package/dist/components/TriStateSwitch.js.map +1 -0
- package/dist/components/VideoPlayer.js +64 -0
- package/dist/components/VideoPlayer.js.map +1 -0
- package/dist/components/auth/AcceptInvitationCard.js +110 -0
- package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
- package/dist/components/auth/AuthLayout.js +18 -0
- package/dist/components/auth/AuthLayout.js.map +1 -0
- package/dist/components/auth/ForgotPasswordForm.js +44 -0
- package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
- package/dist/components/auth/LoginForm.js +76 -0
- package/dist/components/auth/LoginForm.js.map +1 -0
- package/dist/components/auth/ResetPasswordForm.js +69 -0
- package/dist/components/auth/ResetPasswordForm.js.map +1 -0
- package/dist/components/auth/SignInProviders.js +45 -0
- package/dist/components/auth/SignInProviders.js.map +1 -0
- package/dist/components/auth/SignupCard.js +204 -0
- package/dist/components/auth/SignupCard.js.map +1 -0
- package/dist/components/auth/TermsAcceptance.js +43 -0
- package/dist/components/auth/TermsAcceptance.js.map +1 -0
- package/dist/components/board/context.js +32 -0
- package/dist/components/board/context.js.map +1 -0
- package/dist/components/board/recipe.js +94 -0
- package/dist/components/board/recipe.js.map +1 -0
- package/dist/components/calendar/CalendarMonth.js +299 -0
- package/dist/components/calendar/CalendarMonth.js.map +1 -0
- package/dist/components/calendar/CalendarTimeGrid.js +430 -0
- package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
- package/dist/components/calendar/EventActions.js +101 -0
- package/dist/components/calendar/EventActions.js.map +1 -0
- package/dist/components/calendar/format.js +73 -0
- package/dist/components/calendar/format.js.map +1 -0
- package/dist/components/calendar/palette.js +31 -0
- package/dist/components/calendar/palette.js.map +1 -0
- package/dist/components/calendar/use-calendar-drag.js +149 -0
- package/dist/components/calendar/use-calendar-drag.js.map +1 -0
- package/dist/components/calendar/use-event-keyboard.js +87 -0
- package/dist/components/calendar/use-event-keyboard.js.map +1 -0
- package/dist/components/calendar/use-grid-navigation.js +79 -0
- package/dist/components/calendar/use-grid-navigation.js.map +1 -0
- package/dist/components/calendar/use-now.js +27 -0
- package/dist/components/calendar/use-now.js.map +1 -0
- package/dist/components/card-face/AcRingGlyph.js +39 -0
- package/dist/components/card-face/AcRingGlyph.js.map +1 -0
- package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
- package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
- package/dist/components/card-face/CardFace.js +109 -0
- package/dist/components/card-face/CardFace.js.map +1 -0
- package/dist/components/card-face/CardTypeBadge.js +17 -0
- package/dist/components/card-face/CardTypeBadge.js.map +1 -0
- package/dist/components/card-face/EffortBadge.js +11 -0
- package/dist/components/card-face/EffortBadge.js.map +1 -0
- package/dist/components/card-face/GateRingGlyph.js +31 -0
- package/dist/components/card-face/GateRingGlyph.js.map +1 -0
- package/dist/components/card-face/OverflowRow.js +70 -0
- package/dist/components/card-face/OverflowRow.js.map +1 -0
- package/dist/components/card-face/TapTip.js +32 -0
- package/dist/components/card-face/TapTip.js.map +1 -0
- package/dist/components/card-face/hit-area.js +6 -0
- package/dist/components/card-face/hit-area.js.map +1 -0
- package/dist/components/card-face/vocabulary.js +102 -0
- package/dist/components/card-face/vocabulary.js.map +1 -0
- package/dist/components/chart/BarList.js +78 -0
- package/dist/components/chart/BarList.js.map +1 -0
- package/dist/components/chart/LineChart.js +310 -0
- package/dist/components/chart/LineChart.js.map +1 -0
- package/dist/components/chart/ShareBar.js +141 -0
- package/dist/components/chart/ShareBar.js.map +1 -0
- package/dist/components/chart/TimeSeriesChart.js +305 -0
- package/dist/components/chart/TimeSeriesChart.js.map +1 -0
- package/dist/components/chart/label-metrics.js +17 -0
- package/dist/components/chart/label-metrics.js.map +1 -0
- package/dist/components/chart/line-chart-axis.js +38 -0
- package/dist/components/chart/line-chart-axis.js.map +1 -0
- package/dist/components/chart/line-chart-scale.js +132 -0
- package/dist/components/chart/line-chart-scale.js.map +1 -0
- package/dist/components/chart/line-series-style.js +22 -0
- package/dist/components/chart/line-series-style.js.map +1 -0
- package/dist/components/chart/share-bar-labels.js +14 -0
- package/dist/components/chart/share-bar-labels.js.map +1 -0
- package/dist/components/chart/shared.js +157 -0
- package/dist/components/chart/shared.js.map +1 -0
- package/dist/components/chart/time-series-scale.js +51 -0
- package/dist/components/chart/time-series-scale.js.map +1 -0
- package/dist/components/chat/Attachment.js +316 -0
- package/dist/components/chat/Attachment.js.map +1 -0
- package/dist/components/chat/Chat.js +171 -0
- package/dist/components/chat/Chat.js.map +1 -0
- package/dist/components/chat/Composer.js +274 -0
- package/dist/components/chat/Composer.js.map +1 -0
- package/dist/components/chat/ContextMeter.js +202 -0
- package/dist/components/chat/ContextMeter.js.map +1 -0
- package/dist/components/chat/EffortControl.js +116 -0
- package/dist/components/chat/EffortControl.js.map +1 -0
- package/dist/components/chat/FileCover.js +78 -0
- package/dist/components/chat/FileCover.js.map +1 -0
- package/dist/components/chat/Message.js +356 -0
- package/dist/components/chat/Message.js.map +1 -0
- package/dist/components/chat/MessageScroller.js +104 -0
- package/dist/components/chat/MessageScroller.js.map +1 -0
- package/dist/components/chat/ModelSelector.js +156 -0
- package/dist/components/chat/ModelSelector.js.map +1 -0
- package/dist/components/chat/StreamingMarkdown.js +42 -0
- package/dist/components/chat/StreamingMarkdown.js.map +1 -0
- package/dist/components/chat/download-file.js +9 -0
- package/dist/components/chat/download-file.js.map +1 -0
- package/dist/components/chat/file-icon.js +39 -0
- package/dist/components/chat/file-icon.js.map +1 -0
- package/dist/components/checklist/StatusChecklist.js +103 -0
- package/dist/components/checklist/StatusChecklist.js.map +1 -0
- package/dist/components/checklist/tally.js +29 -0
- package/dist/components/checklist/tally.js.map +1 -0
- package/dist/components/code-editor/context.js +13 -0
- package/dist/components/code-editor/context.js.map +1 -0
- package/dist/components/code-editor/editing.js +93 -0
- package/dist/components/code-editor/editing.js.map +1 -0
- package/dist/components/code-editor/highlight.js +27 -0
- package/dist/components/code-editor/highlight.js.map +1 -0
- package/dist/components/code-editor/recipe.js +75 -0
- package/dist/components/code-editor/recipe.js.map +1 -0
- package/dist/components/date-timeline/DateTimeline.js +358 -0
- package/dist/components/date-timeline/DateTimeline.js.map +1 -0
- package/dist/components/date-timeline/TimelineRow.js +100 -0
- package/dist/components/date-timeline/TimelineRow.js.map +1 -0
- package/dist/components/date-timeline/useBarDrag.js +44 -0
- package/dist/components/date-timeline/useBarDrag.js.map +1 -0
- package/dist/components/date-timeline/useMarkerDrag.js +40 -0
- package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
- package/dist/components/date-timeline/useTimelineZoom.js +44 -0
- package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
- package/dist/components/drag-drop/context.js +37 -0
- package/dist/components/drag-drop/context.js.map +1 -0
- package/dist/components/drag-drop/recipe.js +270 -0
- package/dist/components/drag-drop/recipe.js.map +1 -0
- package/dist/components/drag-drop/shift.js +157 -0
- package/dist/components/drag-drop/shift.js.map +1 -0
- package/dist/components/edit/activation.js +10 -0
- package/dist/components/edit/activation.js.map +1 -0
- package/dist/components/edit/outcome.js +47 -0
- package/dist/components/edit/outcome.js.map +1 -0
- package/dist/components/edit/use-edit-session.js +146 -0
- package/dist/components/edit/use-edit-session.js.map +1 -0
- package/dist/components/file-viewer/FileViewer.js +97 -0
- package/dist/components/file-viewer/FileViewer.js.map +1 -0
- package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
- package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
- package/dist/components/file-viewer/ViewerControls.js +122 -0
- package/dist/components/file-viewer/ViewerControls.js.map +1 -0
- package/dist/components/file-viewer/ViewerRail.js +57 -0
- package/dist/components/file-viewer/ViewerRail.js.map +1 -0
- package/dist/components/file-viewer/ViewerStage.js +112 -0
- package/dist/components/file-viewer/ViewerStage.js.map +1 -0
- package/dist/components/file-viewer/frames.js +37 -0
- package/dist/components/file-viewer/frames.js.map +1 -0
- package/dist/components/file-viewer/use-frame-cursor.js +32 -0
- package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
- package/dist/components/file-viewer/use-viewer-keys.js +50 -0
- package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
- package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
- package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
- package/dist/components/focus-web/FocusWeb.js +322 -0
- package/dist/components/focus-web/FocusWeb.js.map +1 -0
- package/dist/components/focus-web/layout.js +34 -0
- package/dist/components/focus-web/layout.js.map +1 -0
- package/dist/components/graph-explorer/GraphExplorer.js +441 -0
- package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
- package/dist/components/graph-explorer/camera-math.js +102 -0
- package/dist/components/graph-explorer/camera-math.js.map +1 -0
- package/dist/components/graph-explorer/tree-layout.js +103 -0
- package/dist/components/graph-explorer/tree-layout.js.map +1 -0
- package/dist/components/graph-explorer/use-camera.js +82 -0
- package/dist/components/graph-explorer/use-camera.js.map +1 -0
- package/dist/components/graph-explorer/viewport-gesture.js +107 -0
- package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
- package/dist/components/kanban/KanbanBoard.js +219 -0
- package/dist/components/kanban/KanbanBoard.js.map +1 -0
- package/dist/components/kanban/recipe.js +144 -0
- package/dist/components/kanban/recipe.js.map +1 -0
- package/dist/components/markdown/Affordances.js +398 -0
- package/dist/components/markdown/Affordances.js.map +1 -0
- package/dist/components/markdown/AttachmentStrip.js +128 -0
- package/dist/components/markdown/AttachmentStrip.js.map +1 -0
- package/dist/components/markdown/ImageUpload.js +45 -0
- package/dist/components/markdown/ImageUpload.js.map +1 -0
- package/dist/components/media-error.js +7 -0
- package/dist/components/media-error.js.map +1 -0
- package/dist/components/nav-sections.js +61 -0
- package/dist/components/nav-sections.js.map +1 -0
- package/dist/components/node-canvas/NodeCanvas.js +384 -0
- package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
- package/dist/components/node-canvas/layout.js +237 -0
- package/dist/components/node-canvas/layout.js.map +1 -0
- package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
- package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
- package/dist/components/openapi/OpenApiViewer.js +137 -0
- package/dist/components/openapi/OpenApiViewer.js.map +1 -0
- package/dist/components/openapi/OperationCard.js +145 -0
- package/dist/components/openapi/OperationCard.js.map +1 -0
- package/dist/components/openapi/SchemaView.js +68 -0
- package/dist/components/openapi/SchemaView.js.map +1 -0
- package/dist/components/openapi/resolve.js +102 -0
- package/dist/components/openapi/resolve.js.map +1 -0
- package/dist/components/openapi/types.js +5 -0
- package/dist/components/openapi/types.js.map +1 -0
- package/dist/components/overlay-shell.js +29 -0
- package/dist/components/overlay-shell.js.map +1 -0
- package/dist/components/overlay-stack.js +27 -0
- package/dist/components/overlay-stack.js.map +1 -0
- package/dist/components/paged-window/PageBlock.js +50 -0
- package/dist/components/paged-window/PageBlock.js.map +1 -0
- package/dist/components/provenance/ConfidenceBar.js +60 -0
- package/dist/components/provenance/ConfidenceBar.js.map +1 -0
- package/dist/components/provenance/ConfidenceMeter.js +36 -0
- package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
- package/dist/components/provenance/ConfidenceReadout.js +31 -0
- package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
- package/dist/components/provenance/ProvenanceBadge.js +44 -0
- package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
- package/dist/components/provenance/ProvenanceDetail.js +114 -0
- package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
- package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
- package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
- package/dist/components/provenance/absence.js +31 -0
- package/dist/components/provenance/absence.js.map +1 -0
- package/dist/components/provenance/types.js +30 -0
- package/dist/components/provenance/types.js.map +1 -0
- package/dist/components/rbac/AccessRequestPanel.js +153 -0
- package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
- package/dist/components/rbac/AccountMenu.js +118 -0
- package/dist/components/rbac/AccountMenu.js.map +1 -0
- package/dist/components/rbac/AgentKeysList.js +20 -0
- package/dist/components/rbac/AgentKeysList.js.map +1 -0
- package/dist/components/rbac/ApiKeysPanel.js +172 -0
- package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
- package/dist/components/rbac/ApiKeysTable.js +167 -0
- package/dist/components/rbac/ApiKeysTable.js.map +1 -0
- package/dist/components/rbac/Brand.js +13 -0
- package/dist/components/rbac/Brand.js.map +1 -0
- package/dist/components/rbac/Can.js +18 -0
- package/dist/components/rbac/Can.js.map +1 -0
- package/dist/components/rbac/ChangePasswordForm.js +73 -0
- package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
- package/dist/components/rbac/DangerZone.js +27 -0
- package/dist/components/rbac/DangerZone.js.map +1 -0
- package/dist/components/rbac/DevToolsPopover.js +140 -0
- package/dist/components/rbac/DevToolsPopover.js.map +1 -0
- package/dist/components/rbac/EndedLine.js +24 -0
- package/dist/components/rbac/EndedLine.js.map +1 -0
- package/dist/components/rbac/InvitationsList.js +148 -0
- package/dist/components/rbac/InvitationsList.js.map +1 -0
- package/dist/components/rbac/InviteMembersDialog.js +97 -0
- package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
- package/dist/components/rbac/MembersPanel.js +138 -0
- package/dist/components/rbac/MembersPanel.js.map +1 -0
- package/dist/components/rbac/PermissionRequestPanel.js +141 -0
- package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
- package/dist/components/rbac/ProfileForm.js +86 -0
- package/dist/components/rbac/ProfileForm.js.map +1 -0
- package/dist/components/rbac/ProfilePage.js +58 -0
- package/dist/components/rbac/ProfilePage.js.map +1 -0
- package/dist/components/rbac/RBACProvider.js +82 -0
- package/dist/components/rbac/RBACProvider.js.map +1 -0
- package/dist/components/rbac/RoleEditorDialog.js +90 -0
- package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
- package/dist/components/rbac/RoleKeyPicker.js +77 -0
- package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
- package/dist/components/rbac/RolePermissionMatrix.js +37 -0
- package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
- package/dist/components/rbac/RolesPermissionsPage.js +142 -0
- package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
- package/dist/components/rbac/SessionsList.js +146 -0
- package/dist/components/rbac/SessionsList.js.map +1 -0
- package/dist/components/rbac/TeamSettingsForm.js +69 -0
- package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
- package/dist/components/rbac/TeamSwitcher.js +66 -0
- package/dist/components/rbac/TeamSwitcher.js.map +1 -0
- package/dist/components/rbac/approvalPanelParts.js +130 -0
- package/dist/components/rbac/approvalPanelParts.js.map +1 -0
- package/dist/components/rbac/permissionSections.js +8 -0
- package/dist/components/rbac/permissionSections.js.map +1 -0
- package/dist/components/rbac/stagedForm.js +42 -0
- package/dist/components/rbac/stagedForm.js.map +1 -0
- package/dist/components/rbac/useStagedImage.js +21 -0
- package/dist/components/rbac/useStagedImage.js.map +1 -0
- package/dist/components/roadmap/PhaseManager.js +48 -0
- package/dist/components/roadmap/PhaseManager.js.map +1 -0
- package/dist/components/roadmap/RoadmapItemCard.js +96 -0
- package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
- package/dist/components/roadmap/RoadmapPage.js +34 -0
- package/dist/components/roadmap/RoadmapPage.js.map +1 -0
- package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
- package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
- package/dist/components/roadmap/TrackManager.js +58 -0
- package/dist/components/roadmap/TrackManager.js.map +1 -0
- package/dist/components/roadmap/UseCaseCard.js +93 -0
- package/dist/components/roadmap/UseCaseCard.js.map +1 -0
- package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
- package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
- package/dist/components/roadmap/chip-tones.js +9 -0
- package/dist/components/roadmap/chip-tones.js.map +1 -0
- package/dist/components/roadmap/derive.js +28 -0
- package/dist/components/roadmap/derive.js.map +1 -0
- package/dist/components/stepper/Stepper.js +276 -0
- package/dist/components/stepper/Stepper.js.map +1 -0
- package/dist/components/stepper/derive.js +53 -0
- package/dist/components/stepper/derive.js.map +1 -0
- package/dist/confidence.css +222 -0
- package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
- package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
- package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
- package/dist/fonts/figtree-0.woff2 +0 -0
- package/dist/fonts/figtree-1.woff2 +0 -0
- package/dist/fonts/figtree-2.woff2 +0 -0
- package/dist/fonts/figtree-3.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
- package/dist/fonts.css +187 -0
- package/dist/icons/data.js +233 -0
- package/dist/icons/data.js.map +1 -0
- package/dist/index.js +942 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/attention.js +75 -0
- package/dist/lib/attention.js.map +1 -0
- package/dist/lib/board/anchor.js +14 -0
- package/dist/lib/board/anchor.js.map +1 -0
- package/dist/lib/board/model.js +41 -0
- package/dist/lib/board/model.js.map +1 -0
- package/dist/lib/board/move.js +161 -0
- package/dist/lib/board/move.js.map +1 -0
- package/dist/lib/board/position.js +11 -0
- package/dist/lib/board/position.js.map +1 -0
- package/dist/lib/board/rejection.js +22 -0
- package/dist/lib/board/rejection.js.map +1 -0
- package/dist/lib/board/use-board.js +43 -0
- package/dist/lib/board/use-board.js.map +1 -0
- package/dist/lib/calendar/band-packer.js +44 -0
- package/dist/lib/calendar/band-packer.js.map +1 -0
- package/dist/lib/calendar/drag.js +74 -0
- package/dist/lib/calendar/drag.js.map +1 -0
- package/dist/lib/calendar/lane-packer.js +67 -0
- package/dist/lib/calendar/lane-packer.js.map +1 -0
- package/dist/lib/calendar/segments.js +82 -0
- package/dist/lib/calendar/segments.js.map +1 -0
- package/dist/lib/calendar/types.js +7 -0
- package/dist/lib/calendar/types.js.map +1 -0
- package/dist/lib/chart-palette.js +27 -0
- package/dist/lib/chart-palette.js.map +1 -0
- package/dist/lib/clipboard.js +30 -0
- package/dist/lib/clipboard.js.map +1 -0
- package/dist/lib/cn.js +9 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/color.js +24 -0
- package/dist/lib/color.js.map +1 -0
- package/dist/lib/component-guidance.js +297 -0
- package/dist/lib/component-guidance.js.map +1 -0
- package/dist/lib/confidence.js +22 -0
- package/dist/lib/confidence.js.map +1 -0
- package/dist/lib/date-timeline/scale.js +197 -0
- package/dist/lib/date-timeline/scale.js.map +1 -0
- package/dist/lib/design-frame/document.js +44 -0
- package/dist/lib/design-frame/document.js.map +1 -0
- package/dist/lib/design-frame/mini-app-script.js +107 -0
- package/dist/lib/design-frame/mini-app-script.js.map +1 -0
- package/dist/lib/design-frame/mini-app.js +12 -0
- package/dist/lib/design-frame/mini-app.js.map +1 -0
- package/dist/lib/design-frame/protocol.js +46 -0
- package/dist/lib/design-frame/protocol.js.map +1 -0
- package/dist/lib/dev-warn.js +17 -0
- package/dist/lib/dev-warn.js.map +1 -0
- package/dist/lib/dnd/announce.js +120 -0
- package/dist/lib/dnd/announce.js.map +1 -0
- package/dist/lib/dnd/autoscroll.js +123 -0
- package/dist/lib/dnd/autoscroll.js.map +1 -0
- package/dist/lib/dnd/cross-drop.js +11 -0
- package/dist/lib/dnd/cross-drop.js.map +1 -0
- package/dist/lib/dnd/geometry.js +99 -0
- package/dist/lib/dnd/geometry.js.map +1 -0
- package/dist/lib/dnd/sensors/gesture.js +86 -0
- package/dist/lib/dnd/sensors/gesture.js.map +1 -0
- package/dist/lib/dnd/sensors/keyboard.js +47 -0
- package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
- package/dist/lib/dnd/sensors/pointer.js +32 -0
- package/dist/lib/dnd/sensors/pointer.js.map +1 -0
- package/dist/lib/dnd/session.js +256 -0
- package/dist/lib/dnd/session.js.map +1 -0
- package/dist/lib/dnd/use-drag.js +90 -0
- package/dist/lib/dnd/use-drag.js.map +1 -0
- package/dist/lib/dom/scroll-ancestor.js +18 -0
- package/dist/lib/dom/scroll-ancestor.js.map +1 -0
- package/dist/lib/format.js +23 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/group-in-order.js +13 -0
- package/dist/lib/group-in-order.js.map +1 -0
- package/dist/lib/header-fold.js +11 -0
- package/dist/lib/header-fold.js.map +1 -0
- package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
- package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
- package/dist/lib/i18n/areas/board.js +35 -0
- package/dist/lib/i18n/areas/board.js.map +1 -0
- package/dist/lib/i18n/areas/card-face.js +10 -0
- package/dist/lib/i18n/areas/card-face.js.map +1 -0
- package/dist/lib/i18n/areas/chat-chart.js +118 -0
- package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
- package/dist/lib/i18n/areas/code-editor.js +24 -0
- package/dist/lib/i18n/areas/code-editor.js.map +1 -0
- package/dist/lib/i18n/areas/date-timeline.js +21 -0
- package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
- package/dist/lib/i18n/areas/dates.js +71 -0
- package/dist/lib/i18n/areas/dates.js.map +1 -0
- package/dist/lib/i18n/areas/docs-views.js +183 -0
- package/dist/lib/i18n/areas/docs-views.js.map +1 -0
- package/dist/lib/i18n/areas/feedback.js +75 -0
- package/dist/lib/i18n/areas/feedback.js.map +1 -0
- package/dist/lib/i18n/areas/formats.js +24 -0
- package/dist/lib/i18n/areas/formats.js.map +1 -0
- package/dist/lib/i18n/areas/forms.js +110 -0
- package/dist/lib/i18n/areas/forms.js.map +1 -0
- package/dist/lib/i18n/areas/keys.js +25 -0
- package/dist/lib/i18n/areas/keys.js.map +1 -0
- package/dist/lib/i18n/areas/markdown.js +136 -0
- package/dist/lib/i18n/areas/markdown.js.map +1 -0
- package/dist/lib/i18n/areas/move-rejected.js +14 -0
- package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
- package/dist/lib/i18n/areas/navigation.js +104 -0
- package/dist/lib/i18n/areas/navigation.js.map +1 -0
- package/dist/lib/i18n/areas/rbac.js +331 -0
- package/dist/lib/i18n/areas/rbac.js.map +1 -0
- package/dist/lib/i18n/emphasis.js +6 -0
- package/dist/lib/i18n/emphasis.js.map +1 -0
- package/dist/lib/i18n/number-format.js +9 -0
- package/dist/lib/i18n/number-format.js.map +1 -0
- package/dist/lib/i18n/plural.js +9 -0
- package/dist/lib/i18n/plural.js.map +1 -0
- package/dist/lib/i18n/provider.js +27 -0
- package/dist/lib/i18n/provider.js.map +1 -0
- package/dist/lib/i18n/strings.js +38 -0
- package/dist/lib/i18n/strings.js.map +1 -0
- package/dist/lib/icons.js +17 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/interactive-target.js +9 -0
- package/dist/lib/interactive-target.js.map +1 -0
- package/dist/lib/intl-cache.js +69 -0
- package/dist/lib/intl-cache.js.map +1 -0
- package/dist/lib/legal-document.js +37 -0
- package/dist/lib/legal-document.js.map +1 -0
- package/dist/lib/line-diff-model.js +51 -0
- package/dist/lib/line-diff-model.js.map +1 -0
- package/dist/lib/markdown/attachments.js +71 -0
- package/dist/lib/markdown/attachments.js.map +1 -0
- package/dist/lib/markdown/caret-map.js +153 -0
- package/dist/lib/markdown/caret-map.js.map +1 -0
- package/dist/lib/markdown/caret.js +35 -0
- package/dist/lib/markdown/caret.js.map +1 -0
- package/dist/lib/markdown/commands.js +443 -0
- package/dist/lib/markdown/commands.js.map +1 -0
- package/dist/lib/markdown/convert.js +153 -0
- package/dist/lib/markdown/convert.js.map +1 -0
- package/dist/lib/markdown/dom.js +89 -0
- package/dist/lib/markdown/dom.js.map +1 -0
- package/dist/lib/markdown/edit.js +92 -0
- package/dist/lib/markdown/edit.js.map +1 -0
- package/dist/lib/markdown/history.js +79 -0
- package/dist/lib/markdown/history.js.map +1 -0
- package/dist/lib/markdown/hotkeys.js +63 -0
- package/dist/lib/markdown/hotkeys.js.map +1 -0
- package/dist/lib/markdown/image-pipeline.js +236 -0
- package/dist/lib/markdown/image-pipeline.js.map +1 -0
- package/dist/lib/markdown/images.js +85 -0
- package/dist/lib/markdown/images.js.map +1 -0
- package/dist/lib/markdown/input.js +210 -0
- package/dist/lib/markdown/input.js.map +1 -0
- package/dist/lib/markdown/keys.js +37 -0
- package/dist/lib/markdown/keys.js.map +1 -0
- package/dist/lib/markdown/paste.js +180 -0
- package/dist/lib/markdown/paste.js.map +1 -0
- package/dist/lib/markdown/position.js +111 -0
- package/dist/lib/markdown/position.js.map +1 -0
- package/dist/lib/markdown/project.js +108 -0
- package/dist/lib/markdown/project.js.map +1 -0
- package/dist/lib/markdown/reconcile.js +127 -0
- package/dist/lib/markdown/reconcile.js.map +1 -0
- package/dist/lib/markdown/surface.js +373 -0
- package/dist/lib/markdown/surface.js.map +1 -0
- package/dist/lib/motion.js +22 -0
- package/dist/lib/motion.js.map +1 -0
- package/dist/lib/pad.js +7 -0
- package/dist/lib/pad.js.map +1 -0
- package/dist/lib/paged-window/layout.js +15 -0
- package/dist/lib/paged-window/layout.js.map +1 -0
- package/dist/lib/paged-window/list-owner.js +21 -0
- package/dist/lib/paged-window/list-owner.js.map +1 -0
- package/dist/lib/paged-window/records-binding.js +239 -0
- package/dist/lib/paged-window/records-binding.js.map +1 -0
- package/dist/lib/paged-window/store.js +562 -0
- package/dist/lib/paged-window/store.js.map +1 -0
- package/dist/lib/paged-window/use-measured-pitch.js +38 -0
- package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
- package/dist/lib/paged-window/use-page-visibility.js +36 -0
- package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
- package/dist/lib/paged-window/use-paged-window.js +43 -0
- package/dist/lib/paged-window/use-paged-window.js.map +1 -0
- package/dist/lib/paged-window/use-scroll-root.js +12 -0
- package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
- package/dist/lib/persist.js +84 -0
- package/dist/lib/persist.js.map +1 -0
- package/dist/lib/preference-values.js +13 -0
- package/dist/lib/preference-values.js.map +1 -0
- package/dist/lib/preferences.js +86 -0
- package/dist/lib/preferences.js.map +1 -0
- package/dist/lib/reads/hooks.js +156 -0
- package/dist/lib/reads/hooks.js.map +1 -0
- package/dist/lib/reads/optimistic.js +169 -0
- package/dist/lib/reads/optimistic.js.map +1 -0
- package/dist/lib/reads/refetch.js +108 -0
- package/dist/lib/reads/refetch.js.map +1 -0
- package/dist/lib/reads/slots.js +215 -0
- package/dist/lib/reads/slots.js.map +1 -0
- package/dist/lib/realtime/hooks.js +40 -0
- package/dist/lib/realtime/hooks.js.map +1 -0
- package/dist/lib/realtime/provider.js +25 -0
- package/dist/lib/realtime/provider.js.map +1 -0
- package/dist/lib/realtime/registry.js +472 -0
- package/dist/lib/realtime/registry.js.map +1 -0
- package/dist/lib/records/define-record-type.js +33 -0
- package/dist/lib/records/define-record-type.js.map +1 -0
- package/dist/lib/records/hooks.js +39 -0
- package/dist/lib/records/hooks.js.map +1 -0
- package/dist/lib/records/store.js +572 -0
- package/dist/lib/records/store.js.map +1 -0
- package/dist/lib/records/wire.js +58 -0
- package/dist/lib/records/wire.js.map +1 -0
- package/dist/lib/reduced-motion-help.js +19 -0
- package/dist/lib/reduced-motion-help.js.map +1 -0
- package/dist/lib/scroll-caret.js +18 -0
- package/dist/lib/scroll-caret.js.map +1 -0
- package/dist/lib/sim/createSimStore.js +54 -0
- package/dist/lib/sim/createSimStore.js.map +1 -0
- package/dist/lib/sim/latency.js +28 -0
- package/dist/lib/sim/latency.js.map +1 -0
- package/dist/lib/sim/registry.js +13 -0
- package/dist/lib/sim/registry.js.map +1 -0
- package/dist/lib/sim/settings.js +41 -0
- package/dist/lib/sim/settings.js.map +1 -0
- package/dist/lib/submit-shortcut.js +25 -0
- package/dist/lib/submit-shortcut.js.map +1 -0
- package/dist/lib/syntax/index.js +33 -0
- package/dist/lib/syntax/index.js.map +1 -0
- package/dist/lib/syntax/languages/bash.js +77 -0
- package/dist/lib/syntax/languages/bash.js.map +1 -0
- package/dist/lib/syntax/languages/css.js +81 -0
- package/dist/lib/syntax/languages/css.js.map +1 -0
- package/dist/lib/syntax/languages/html.js +91 -0
- package/dist/lib/syntax/languages/html.js.map +1 -0
- package/dist/lib/syntax/languages/index.js +49 -0
- package/dist/lib/syntax/languages/index.js.map +1 -0
- package/dist/lib/syntax/languages/javascript.js +133 -0
- package/dist/lib/syntax/languages/javascript.js.map +1 -0
- package/dist/lib/syntax/languages/json.js +45 -0
- package/dist/lib/syntax/languages/json.js.map +1 -0
- package/dist/lib/syntax/languages/mongodb.js +24 -0
- package/dist/lib/syntax/languages/mongodb.js.map +1 -0
- package/dist/lib/syntax/languages/plain.js +10 -0
- package/dist/lib/syntax/languages/plain.js.map +1 -0
- package/dist/lib/syntax/languages/sql.js +113 -0
- package/dist/lib/syntax/languages/sql.js.map +1 -0
- package/dist/lib/syntax/languages/vue.js +31 -0
- package/dist/lib/syntax/languages/vue.js.map +1 -0
- package/dist/lib/syntax/languages/yaml.js +55 -0
- package/dist/lib/syntax/languages/yaml.js.map +1 -0
- package/dist/lib/syntax/markdown/grammar.js +52 -0
- package/dist/lib/syntax/markdown/grammar.js.map +1 -0
- package/dist/lib/syntax/markdown/inline.js +477 -0
- package/dist/lib/syntax/markdown/inline.js.map +1 -0
- package/dist/lib/syntax/markdown/parse.js +464 -0
- package/dist/lib/syntax/markdown/parse.js.map +1 -0
- package/dist/lib/syntax/markdown/refs.js +94 -0
- package/dist/lib/syntax/markdown/refs.js.map +1 -0
- package/dist/lib/syntax/markdown/render.js +230 -0
- package/dist/lib/syntax/markdown/render.js.map +1 -0
- package/dist/lib/syntax/markdown/spans.js +40 -0
- package/dist/lib/syntax/markdown/spans.js.map +1 -0
- package/dist/lib/syntax/registry.js +55 -0
- package/dist/lib/syntax/registry.js.map +1 -0
- package/dist/lib/syntax/tokenize.js +96 -0
- package/dist/lib/syntax/tokenize.js.map +1 -0
- package/dist/lib/time/instant.js +7 -0
- package/dist/lib/time/instant.js.map +1 -0
- package/dist/lib/time/plain.js +83 -0
- package/dist/lib/time/plain.js.map +1 -0
- package/dist/lib/time/relativeAge.js +20 -0
- package/dist/lib/time/relativeAge.js.map +1 -0
- package/dist/lib/time/relativeClock.js +59 -0
- package/dist/lib/time/relativeClock.js.map +1 -0
- package/dist/lib/time/types.js +23 -0
- package/dist/lib/time/types.js.map +1 -0
- package/dist/lib/time/zone.js +148 -0
- package/dist/lib/time/zone.js.map +1 -0
- package/dist/lib/use-controllable.js +16 -0
- package/dist/lib/use-controllable.js.map +1 -0
- package/dist/lib/use-fill-height.js +49 -0
- package/dist/lib/use-fill-height.js.map +1 -0
- package/dist/lib/use-hydrated.js +14 -0
- package/dist/lib/use-hydrated.js.map +1 -0
- package/dist/lib/use-media-query.js +30 -0
- package/dist/lib/use-media-query.js.map +1 -0
- package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
- package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
- package/dist/lib/use-release-snap-drag.js +29 -0
- package/dist/lib/use-release-snap-drag.js.map +1 -0
- package/dist/lib/use-roving-options.js +18 -0
- package/dist/lib/use-roving-options.js.map +1 -0
- package/dist/lib/values/absent.js +5 -0
- package/dist/lib/values/absent.js.map +1 -0
- package/dist/lib/values/boolean.js +13 -0
- package/dist/lib/values/boolean.js.map +1 -0
- package/dist/lib/values/currency.js +23 -0
- package/dist/lib/values/currency.js.map +1 -0
- package/dist/lib/values/date.js +35 -0
- package/dist/lib/values/date.js.map +1 -0
- package/dist/lib/values/datetime.js +54 -0
- package/dist/lib/values/datetime.js.map +1 -0
- package/dist/lib/values/locale-date.js +60 -0
- package/dist/lib/values/locale-date.js.map +1 -0
- package/dist/lib/values/number.js +16 -0
- package/dist/lib/values/number.js.map +1 -0
- package/dist/pure.js +379 -0
- package/dist/pure.js.map +1 -0
- package/dist/styles.css +190 -0
- package/dist/theme.css +360 -0
- package/dist/types/components/Accordion.d.ts +15 -0
- package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
- package/dist/types/components/AppShell.d.ts +164 -0
- package/dist/types/components/Attention.d.ts +87 -0
- package/dist/types/components/Avatar.d.ts +154 -0
- package/dist/types/components/Badge.d.ts +131 -0
- package/dist/types/components/Board.d.ts +239 -0
- package/dist/types/components/Button.d.ts +208 -0
- package/dist/types/components/Callout.d.ts +163 -0
- package/dist/types/components/Card.d.ts +219 -0
- package/dist/types/components/Choice.d.ts +127 -0
- package/dist/types/components/CodeEditor.d.ts +86 -0
- package/dist/types/components/ColorPicker.d.ts +14 -0
- package/dist/types/components/Combobox.d.ts +43 -0
- package/dist/types/components/CommandPalette.d.ts +35 -0
- package/dist/types/components/ConcentricRing.d.ts +61 -0
- package/dist/types/components/ConnectionCard.d.ts +64 -0
- package/dist/types/components/ContextItemRow.d.ts +35 -0
- package/dist/types/components/CopyValue.d.ts +14 -0
- package/dist/types/components/CountBadge.d.ts +14 -0
- package/dist/types/components/DateCalendar.d.ts +30 -0
- package/dist/types/components/DateField.d.ts +29 -0
- package/dist/types/components/DatePicker.d.ts +20 -0
- package/dist/types/components/DateTimeText.d.ts +9 -0
- package/dist/types/components/DescriptionList.d.ts +40 -0
- package/dist/types/components/Dialog.d.ts +269 -0
- package/dist/types/components/DragDrop.d.ts +196 -0
- package/dist/types/components/Drawer.d.ts +163 -0
- package/dist/types/components/EditGutter.d.ts +44 -0
- package/dist/types/components/EmojiPicker.d.ts +30 -0
- package/dist/types/components/ErrorBoundary.d.ts +43 -0
- package/dist/types/components/Field.d.ts +37 -0
- package/dist/types/components/FileUpload.d.ts +22 -0
- package/dist/types/components/FilterMenu.d.ts +120 -0
- package/dist/types/components/GatesSection.d.ts +79 -0
- package/dist/types/components/Icon.d.ts +40 -0
- package/dist/types/components/IconButton.d.ts +69 -0
- package/dist/types/components/IconStack.d.ts +28 -0
- package/dist/types/components/ImageUploadField.d.ts +38 -0
- package/dist/types/components/InlineEdit.d.ts +183 -0
- package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
- package/dist/types/components/Input.d.ts +128 -0
- package/dist/types/components/LegalDocument.d.ts +23 -0
- package/dist/types/components/LineDiff.d.ts +53 -0
- package/dist/types/components/ListHeader.d.ts +45 -0
- package/dist/types/components/Loading.d.ts +131 -0
- package/dist/types/components/Markdown.d.ts +35 -0
- package/dist/types/components/MarkdownEditor.d.ts +129 -0
- package/dist/types/components/Menu.d.ts +157 -0
- package/dist/types/components/Navigation.d.ts +67 -0
- package/dist/types/components/NumberInput.d.ts +177 -0
- package/dist/types/components/OTPInput.d.ts +13 -0
- package/dist/types/components/OrderedEntityManager.d.ts +64 -0
- package/dist/types/components/PagedWindowList.d.ts +23 -0
- package/dist/types/components/PaginationBar.d.ts +31 -0
- package/dist/types/components/Panel.d.ts +94 -0
- package/dist/types/components/PasswordInput.d.ts +7 -0
- package/dist/types/components/PasswordRequirements.d.ts +11 -0
- package/dist/types/components/PatchDiff.d.ts +38 -0
- package/dist/types/components/PendingVeil.d.ts +8 -0
- package/dist/types/components/Popover.d.ts +231 -0
- package/dist/types/components/Progress.d.ts +580 -0
- package/dist/types/components/RatingScale.d.ts +30 -0
- package/dist/types/components/ReadMore.d.ts +26 -0
- package/dist/types/components/RecordCard.d.ts +413 -0
- package/dist/types/components/RelativeTime.d.ts +17 -0
- package/dist/types/components/SandboxedFrame.d.ts +37 -0
- package/dist/types/components/SearchInput.d.ts +6 -0
- package/dist/types/components/SecretField.d.ts +90 -0
- package/dist/types/components/SectionNav.d.ts +15 -0
- package/dist/types/components/Select.d.ts +53 -0
- package/dist/types/components/SequenceDiagram.d.ts +15 -0
- package/dist/types/components/SettingRow.d.ts +144 -0
- package/dist/types/components/SignOffRings.d.ts +29 -0
- package/dist/types/components/Slider.d.ts +255 -0
- package/dist/types/components/SolutionChoice.d.ts +49 -0
- package/dist/types/components/SortMenu.d.ts +45 -0
- package/dist/types/components/Spinner.d.ts +29 -0
- package/dist/types/components/Stat.d.ts +136 -0
- package/dist/types/components/StatusSelect.d.ts +93 -0
- package/dist/types/components/Surface.d.ts +145 -0
- package/dist/types/components/Table.d.ts +164 -0
- package/dist/types/components/Tabs.d.ts +142 -0
- package/dist/types/components/ThemeMenu.d.ts +56 -0
- package/dist/types/components/Toast.d.ts +63 -0
- package/dist/types/components/Toggle.d.ts +168 -0
- package/dist/types/components/ToggleMatrix.d.ts +51 -0
- package/dist/types/components/Tree.d.ts +20 -0
- package/dist/types/components/TriStateSwitch.d.ts +63 -0
- package/dist/types/components/VideoPlayer.d.ts +26 -0
- package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
- package/dist/types/components/auth/AuthLayout.d.ts +12 -0
- package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
- package/dist/types/components/auth/LoginForm.d.ts +13 -0
- package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
- package/dist/types/components/auth/SignInProviders.d.ts +56 -0
- package/dist/types/components/auth/SignupCard.d.ts +62 -0
- package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
- package/dist/types/components/auth/index.d.ts +8 -0
- package/dist/types/components/board/context.d.ts +65 -0
- package/dist/types/components/board/recipe.d.ts +97 -0
- package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
- package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
- package/dist/types/components/calendar/EventActions.d.ts +16 -0
- package/dist/types/components/calendar/format.d.ts +42 -0
- package/dist/types/components/calendar/palette.d.ts +17 -0
- package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
- package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
- package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
- package/dist/types/components/calendar/use-now.d.ts +20 -0
- package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
- package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
- package/dist/types/components/card-face/CardFace.d.ts +106 -0
- package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
- package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
- package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
- package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
- package/dist/types/components/card-face/TapTip.d.ts +15 -0
- package/dist/types/components/card-face/hit-area.d.ts +20 -0
- package/dist/types/components/card-face/vocabulary.d.ts +83 -0
- package/dist/types/components/chart/BarList.d.ts +27 -0
- package/dist/types/components/chart/LineChart.d.ts +64 -0
- package/dist/types/components/chart/ShareBar.d.ts +26 -0
- package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
- package/dist/types/components/chart/label-metrics.d.ts +9 -0
- package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
- package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
- package/dist/types/components/chart/line-series-style.d.ts +14 -0
- package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
- package/dist/types/components/chart/shared.d.ts +122 -0
- package/dist/types/components/chart/time-series-scale.d.ts +29 -0
- package/dist/types/components/chat/Attachment.d.ts +125 -0
- package/dist/types/components/chat/Chat.d.ts +60 -0
- package/dist/types/components/chat/Composer.d.ts +62 -0
- package/dist/types/components/chat/ContextMeter.d.ts +45 -0
- package/dist/types/components/chat/EffortControl.d.ts +23 -0
- package/dist/types/components/chat/FileCover.d.ts +14 -0
- package/dist/types/components/chat/Message.d.ts +66 -0
- package/dist/types/components/chat/MessageScroller.d.ts +18 -0
- package/dist/types/components/chat/ModelSelector.d.ts +44 -0
- package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
- package/dist/types/components/chat/download-file.d.ts +7 -0
- package/dist/types/components/chat/file-icon.d.ts +29 -0
- package/dist/types/components/chat/types.d.ts +165 -0
- package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
- package/dist/types/components/checklist/index.d.ts +3 -0
- package/dist/types/components/checklist/tally.d.ts +19 -0
- package/dist/types/components/checklist/types.d.ts +28 -0
- package/dist/types/components/code-editor/context.d.ts +32 -0
- package/dist/types/components/code-editor/editing.d.ts +39 -0
- package/dist/types/components/code-editor/highlight.d.ts +20 -0
- package/dist/types/components/code-editor/recipe.d.ts +109 -0
- package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
- package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
- package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
- package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
- package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
- package/dist/types/components/drag-drop/context.d.ts +85 -0
- package/dist/types/components/drag-drop/recipe.d.ts +163 -0
- package/dist/types/components/drag-drop/shift.d.ts +153 -0
- package/dist/types/components/edit/activation.d.ts +21 -0
- package/dist/types/components/edit/outcome.d.ts +29 -0
- package/dist/types/components/edit/use-edit-session.d.ts +77 -0
- package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
- package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
- package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
- package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
- package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
- package/dist/types/components/file-viewer/frames.d.ts +28 -0
- package/dist/types/components/file-viewer/index.d.ts +3 -0
- package/dist/types/components/file-viewer/types.d.ts +70 -0
- package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
- package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
- package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
- package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
- package/dist/types/components/focus-web/index.d.ts +4 -0
- package/dist/types/components/focus-web/layout.d.ts +55 -0
- package/dist/types/components/focus-web/types.d.ts +131 -0
- package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
- package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
- package/dist/types/components/graph-explorer/index.d.ts +5 -0
- package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
- package/dist/types/components/graph-explorer/types.d.ts +62 -0
- package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
- package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
- package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
- package/dist/types/components/kanban/recipe.d.ts +73 -0
- package/dist/types/components/kanban/types.d.ts +55 -0
- package/dist/types/components/markdown/Affordances.d.ts +105 -0
- package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
- package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
- package/dist/types/components/media-error.d.ts +11 -0
- package/dist/types/components/nav-sections.d.ts +10 -0
- package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
- package/dist/types/components/node-canvas/index.d.ts +3 -0
- package/dist/types/components/node-canvas/layout.d.ts +29 -0
- package/dist/types/components/node-canvas/types.d.ts +207 -0
- package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
- package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
- package/dist/types/components/openapi/OperationCard.d.ts +33 -0
- package/dist/types/components/openapi/SchemaView.d.ts +14 -0
- package/dist/types/components/openapi/index.d.ts +6 -0
- package/dist/types/components/openapi/resolve.d.ts +72 -0
- package/dist/types/components/openapi/types.d.ts +128 -0
- package/dist/types/components/overlay-shell.d.ts +48 -0
- package/dist/types/components/overlay-stack.d.ts +18 -0
- package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
- package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
- package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
- package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
- package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
- package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
- package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
- package/dist/types/components/provenance/absence.d.ts +37 -0
- package/dist/types/components/provenance/index.d.ts +7 -0
- package/dist/types/components/provenance/types.d.ts +137 -0
- package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
- package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
- package/dist/types/components/rbac/AgentKeysList.d.ts +20 -0
- package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
- package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -0
- package/dist/types/components/rbac/Brand.d.ts +8 -0
- package/dist/types/components/rbac/Can.d.ts +19 -0
- package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
- package/dist/types/components/rbac/DangerZone.d.ts +8 -0
- package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
- package/dist/types/components/rbac/EndedLine.d.ts +21 -0
- package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
- package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
- package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
- package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
- package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
- package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
- package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
- package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
- package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
- package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
- package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
- package/dist/types/components/rbac/SessionsList.d.ts +35 -0
- package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
- package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
- package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
- package/dist/types/components/rbac/index.d.ts +25 -0
- package/dist/types/components/rbac/permissionSections.d.ts +8 -0
- package/dist/types/components/rbac/stagedForm.d.ts +25 -0
- package/dist/types/components/rbac/types.d.ts +65 -0
- package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
- package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
- package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
- package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
- package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
- package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
- package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
- package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
- package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
- package/dist/types/components/roadmap/derive.d.ts +39 -0
- package/dist/types/components/roadmap/index.d.ts +10 -0
- package/dist/types/components/roadmap/types.d.ts +86 -0
- package/dist/types/components/stepper/Stepper.d.ts +79 -0
- package/dist/types/components/stepper/derive.d.ts +49 -0
- package/dist/types/components/stepper/index.d.ts +3 -0
- package/dist/types/components/stepper/types.d.ts +118 -0
- package/dist/types/icons/data.d.ts +2054 -0
- package/dist/types/index.d.ts +209 -0
- package/dist/types/lib/attention.d.ts +62 -0
- package/dist/types/lib/board/anchor.d.ts +69 -0
- package/dist/types/lib/board/index.d.ts +17 -0
- package/dist/types/lib/board/model.d.ts +43 -0
- package/dist/types/lib/board/move.d.ts +181 -0
- package/dist/types/lib/board/position.d.ts +22 -0
- package/dist/types/lib/board/rejection.d.ts +8 -0
- package/dist/types/lib/board/types.d.ts +294 -0
- package/dist/types/lib/board/use-board.d.ts +47 -0
- package/dist/types/lib/calendar/band-packer.d.ts +53 -0
- package/dist/types/lib/calendar/drag.d.ts +125 -0
- package/dist/types/lib/calendar/index.d.ts +4 -0
- package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
- package/dist/types/lib/calendar/segments.d.ts +91 -0
- package/dist/types/lib/calendar/types.d.ts +166 -0
- package/dist/types/lib/chart-palette.d.ts +14 -0
- package/dist/types/lib/clipboard.d.ts +12 -0
- package/dist/types/lib/cn.d.ts +7 -0
- package/dist/types/lib/color.d.ts +14 -0
- package/dist/types/lib/component-guidance.d.ts +15 -0
- package/dist/types/lib/confidence.d.ts +28 -0
- package/dist/types/lib/date-timeline/scale.d.ts +143 -0
- package/dist/types/lib/design-frame/document.d.ts +39 -0
- package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
- package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
- package/dist/types/lib/design-frame/protocol.d.ts +78 -0
- package/dist/types/lib/dev-warn.d.ts +10 -0
- package/dist/types/lib/dnd/announce.d.ts +124 -0
- package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
- package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
- package/dist/types/lib/dnd/geometry.d.ts +126 -0
- package/dist/types/lib/dnd/index.d.ts +17 -0
- package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
- package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
- package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
- package/dist/types/lib/dnd/session.d.ts +124 -0
- package/dist/types/lib/dnd/types.d.ts +226 -0
- package/dist/types/lib/dnd/use-drag.d.ts +82 -0
- package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
- package/dist/types/lib/format.d.ts +33 -0
- package/dist/types/lib/group-in-order.d.ts +13 -0
- package/dist/types/lib/header-fold.d.ts +10 -0
- package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
- package/dist/types/lib/i18n/areas/board.d.ts +51 -0
- package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
- package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
- package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
- package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
- package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
- package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
- package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
- package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
- package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
- package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
- package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
- package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
- package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
- package/dist/types/lib/i18n/areas/rbac.d.ts +633 -0
- package/dist/types/lib/i18n/emphasis.d.ts +3 -0
- package/dist/types/lib/i18n/index.d.ts +10 -0
- package/dist/types/lib/i18n/number-format.d.ts +5 -0
- package/dist/types/lib/i18n/plural.d.ts +7 -0
- package/dist/types/lib/i18n/provider.d.ts +16 -0
- package/dist/types/lib/i18n/strings.d.ts +18 -0
- package/dist/types/lib/icons.d.ts +22 -0
- package/dist/types/lib/interactive-target.d.ts +3 -0
- package/dist/types/lib/intl-cache.d.ts +31 -0
- package/dist/types/lib/legal-document.d.ts +82 -0
- package/dist/types/lib/line-diff-model.d.ts +39 -0
- package/dist/types/lib/markdown/attachments.d.ts +50 -0
- package/dist/types/lib/markdown/caret-map.d.ts +69 -0
- package/dist/types/lib/markdown/caret.d.ts +6 -0
- package/dist/types/lib/markdown/commands.d.ts +186 -0
- package/dist/types/lib/markdown/convert.d.ts +99 -0
- package/dist/types/lib/markdown/dom.d.ts +30 -0
- package/dist/types/lib/markdown/edit.d.ts +16 -0
- package/dist/types/lib/markdown/history.d.ts +59 -0
- package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
- package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
- package/dist/types/lib/markdown/images.d.ts +138 -0
- package/dist/types/lib/markdown/input.d.ts +38 -0
- package/dist/types/lib/markdown/keys.d.ts +34 -0
- package/dist/types/lib/markdown/paste.d.ts +9 -0
- package/dist/types/lib/markdown/position.d.ts +43 -0
- package/dist/types/lib/markdown/project.d.ts +88 -0
- package/dist/types/lib/markdown/reconcile.d.ts +63 -0
- package/dist/types/lib/markdown/surface.d.ts +236 -0
- package/dist/types/lib/motion.d.ts +30 -0
- package/dist/types/lib/pad.d.ts +6 -0
- package/dist/types/lib/paged-window/index.d.ts +2 -0
- package/dist/types/lib/paged-window/layout.d.ts +21 -0
- package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
- package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
- package/dist/types/lib/paged-window/store.d.ts +307 -0
- package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
- package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
- package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
- package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
- package/dist/types/lib/persist.d.ts +57 -0
- package/dist/types/lib/preference-values.d.ts +72 -0
- package/dist/types/lib/preferences.d.ts +26 -0
- package/dist/types/lib/reads/hooks.d.ts +49 -0
- package/dist/types/lib/reads/index.d.ts +5 -0
- package/dist/types/lib/reads/optimistic.d.ts +119 -0
- package/dist/types/lib/reads/refetch.d.ts +83 -0
- package/dist/types/lib/reads/slots.d.ts +137 -0
- package/dist/types/lib/reads/types.d.ts +155 -0
- package/dist/types/lib/realtime/hooks.d.ts +38 -0
- package/dist/types/lib/realtime/index.d.ts +4 -0
- package/dist/types/lib/realtime/provider.d.ts +38 -0
- package/dist/types/lib/realtime/registry.d.ts +225 -0
- package/dist/types/lib/realtime/types.d.ts +242 -0
- package/dist/types/lib/records/define-record-type.d.ts +29 -0
- package/dist/types/lib/records/hooks.d.ts +46 -0
- package/dist/types/lib/records/index.d.ts +5 -0
- package/dist/types/lib/records/store.d.ts +289 -0
- package/dist/types/lib/records/types.d.ts +195 -0
- package/dist/types/lib/records/wire.d.ts +96 -0
- package/dist/types/lib/reduced-motion-help.d.ts +23 -0
- package/dist/types/lib/scroll-caret.d.ts +6 -0
- package/dist/types/lib/sim/createSimStore.d.ts +18 -0
- package/dist/types/lib/sim/index.d.ts +5 -0
- package/dist/types/lib/sim/latency.d.ts +10 -0
- package/dist/types/lib/sim/registry.d.ts +14 -0
- package/dist/types/lib/sim/settings.d.ts +11 -0
- package/dist/types/lib/sim/types.d.ts +3 -0
- package/dist/types/lib/submit-shortcut.d.ts +24 -0
- package/dist/types/lib/syntax/index.d.ts +16 -0
- package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
- package/dist/types/lib/syntax/languages/css.d.ts +1 -0
- package/dist/types/lib/syntax/languages/html.d.ts +17 -0
- package/dist/types/lib/syntax/languages/index.d.ts +33 -0
- package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
- package/dist/types/lib/syntax/languages/json.d.ts +1 -0
- package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
- package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
- package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
- package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
- package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
- package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
- package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
- package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
- package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
- package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
- package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
- package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
- package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
- package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
- package/dist/types/lib/syntax/registry.d.ts +37 -0
- package/dist/types/lib/syntax/tokenize.d.ts +17 -0
- package/dist/types/lib/syntax/types.d.ts +119 -0
- package/dist/types/lib/time/index.d.ts +4 -0
- package/dist/types/lib/time/instant.d.ts +2 -0
- package/dist/types/lib/time/plain.d.ts +61 -0
- package/dist/types/lib/time/relativeAge.d.ts +18 -0
- package/dist/types/lib/time/relativeClock.d.ts +8 -0
- package/dist/types/lib/time/types.d.ts +87 -0
- package/dist/types/lib/time/zone.d.ts +106 -0
- package/dist/types/lib/use-controllable.d.ts +14 -0
- package/dist/types/lib/use-fill-height.d.ts +26 -0
- package/dist/types/lib/use-hydrated.d.ts +8 -0
- package/dist/types/lib/use-media-query.d.ts +29 -0
- package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
- package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
- package/dist/types/lib/use-roving-options.d.ts +10 -0
- package/dist/types/lib/values/absent.d.ts +7 -0
- package/dist/types/lib/values/boolean.d.ts +29 -0
- package/dist/types/lib/values/currency.d.ts +22 -0
- package/dist/types/lib/values/date.d.ts +30 -0
- package/dist/types/lib/values/datetime.d.ts +48 -0
- package/dist/types/lib/values/index.d.ts +5 -0
- package/dist/types/lib/values/locale-date.d.ts +34 -0
- package/dist/types/lib/values/number.d.ts +27 -0
- package/dist/types/pure.d.ts +48 -0
- package/package.json +136 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangePasswordForm.js","sources":["../../../src/components/rbac/ChangePasswordForm.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Button } from \"../Button\";\nimport { Callout } from \"../Callout\";\nimport { Field } from \"../Field\";\nimport { PasswordInput } from \"../PasswordInput\";\nimport { PasswordRequirements, type PasswordRequirementRule } from \"../PasswordRequirements\";\nimport { useUiStrings } from \"../../lib/i18n\";\n\n/* ============================================================================\n CHANGE PASSWORD FORM\n\n THREE FIELDS, LOCAL STATE, SAME SHAPE AS `RoleEditorDialog` — current\n password, new password, confirm — held in this component's own\n `useState`, not lifted to the caller. That is a deliberate choice among a\n few workable ones (see the card this shipped under for the alternatives\n considered): lifting `next` to controlled `value`/`onChange` props would\n mean every keystroke of a password briefly lives in the CONSUMER's own\n state tree for no reason this form needs, and the one thing an external\n caller actually has to own — what counts as a strong-enough password — is\n already fully extracted into `passwordRules`, a pure function this form\n calls with the current draft on every render. Nothing about the RULES lives\n here; this library only ever renders the checklist `PasswordRequirements`\n builds from whatever that function returns (see its own header — the\n \"12 characters\" kind of policy belongs to the consumer's own\n `auth-rules.ts`, never here).\n\n CONFIRM-MATCHES-NEW is the one piece of validation done inline, because it\n is not a password POLICY — it is arithmetic (\"do these two strings read the\n same\"), the same category of decision `SecretField`'s empty-vs-cleared\n distinction makes internally rather than pushing out to a caller.\n\n FIELDS RESET ONLY ON A SUCCESSFUL SUBMIT. A REJECTED `onSubmit` (wrong\n current password, a policy failure the server re-checks, a network error)\n leaves every field exactly as typed — re-typing three password fields\n because the server was slow is exactly the friction a working form must\n not add — and shows whatever the rejection's `message` says in a `Callout`.\n ========================================================================= */\n\n/* DX-5095 - an account that signed up through a provider has no password yet. `hasCurrentPassword={false}` is\n set-password mode: no current-password field, and `onSubmit(next)` instead of `onSubmit(current, next)`. The\n discriminated union keeps each mode's callback honestly typed. */\ninterface ChangePasswordFormBaseProps {\n /** Pure — recomputed against the current draft of the new password on every\n * render. See the module header for why this is a function rather than a\n * precomputed `rules[]`. */\n passwordRules: (nextPassword: string) => PasswordRequirementRule[];\n submitLabel?: string;\n className?: string;\n}\n\nexport type ChangePasswordFormProps = ChangePasswordFormBaseProps &\n (\n | { hasCurrentPassword?: true; onSubmit: (current: string, next: string) => Promise<void> }\n | { hasCurrentPassword: false; onSubmit: (next: string) => Promise<void> }\n );\n\nexport function ChangePasswordForm(props: ChangePasswordFormProps) {\n const { passwordRules, submitLabel, className } = props;\n const strings = useUiStrings().changePasswordForm;\n const [current, setCurrent] = useState(\"\");\n const [next, setNext] = useState(\"\");\n const [confirm, setConfirm] = useState(\"\");\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const askCurrent = props.hasCurrentPassword !== false;\n const copy = askCurrent\n ? { failedTitle: strings.failedTitle, failedMessage: strings.failedMessage, submit: strings.submit }\n : { failedTitle: strings.setFailedTitle, failedMessage: strings.setFailedMessage, submit: strings.setSubmit };\n const rules = passwordRules(next);\n const allRulesMet = rules.length === 0 || rules.every((rule) => rule.met);\n const confirmMismatch = confirm.length > 0 && confirm !== next;\n const canSubmit =\n (!askCurrent || current.length > 0) &&\n next.length > 0 &&\n confirm.length > 0 &&\n allRulesMet &&\n !confirmMismatch &&\n !submitting;\n\n async function handleSubmit(event: React.FormEvent) {\n event.preventDefault();\n if (!canSubmit) return;\n\n setSubmitting(true);\n setError(null);\n try {\n if (props.hasCurrentPassword === false) await props.onSubmit(next);\n else await props.onSubmit(current, next);\n setCurrent(\"\");\n setNext(\"\");\n setConfirm(\"\");\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : copy.failedMessage);\n } finally {\n setSubmitting(false);\n }\n }\n\n return (\n <form className={className} onSubmit={(event) => void handleSubmit(event)}>\n <div className=\"flex flex-col gap-4\">\n {error && <Callout tone=\"danger\" title={copy.failedTitle}>{error}</Callout>}\n\n {askCurrent && (\n <Field label={strings.current}>\n <PasswordInput\n value={current}\n onChange={(event) => setCurrent(event.target.value)}\n autoComplete=\"current-password\"\n disabled={submitting}\n required\n />\n </Field>\n )}\n\n <Field label={strings.next}>\n <PasswordInput\n value={next}\n onChange={(event) => setNext(event.target.value)}\n autoComplete=\"new-password\"\n disabled={submitting}\n required\n />\n <PasswordRequirements rules={rules} className=\"mt-2\" />\n </Field>\n\n <Field\n label={strings.confirmPassword}\n error={confirmMismatch ? strings.mismatch : undefined}\n >\n <PasswordInput\n value={confirm}\n onChange={(event) => setConfirm(event.target.value)}\n autoComplete=\"new-password\"\n disabled={submitting}\n required\n />\n </Field>\n\n <div>\n <Button type=\"submit\" disabled={!canSubmit} loading={submitting}>\n {submitLabel ?? copy.submit}\n </Button>\n </div>\n </div>\n </form>\n );\n}\n"],"names":["ChangePasswordForm","props","passwordRules","submitLabel","className","strings","useUiStrings","current","setCurrent","useState","next","setNext","confirm","setConfirm","submitting","setSubmitting","error","setError","askCurrent","copy","rules","allRulesMet","rule","confirmMismatch","canSubmit","handleSubmit","event","cause","jsx","jsxs","Callout","Field","PasswordInput","PasswordRequirements","Button"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsxs as s, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { cn as d } from "../../lib/cn.js";
|
|
3
|
+
import { useUiStrings as i } from "../../lib/i18n/provider.js";
|
|
4
|
+
function x({ title: o, description: r, children: t, className: a }) {
|
|
5
|
+
const l = i().dangerZone, n = o ?? l.title;
|
|
6
|
+
return /* @__PURE__ */ s(
|
|
7
|
+
"section",
|
|
8
|
+
{
|
|
9
|
+
className: d(
|
|
10
|
+
"flex flex-col gap-3 rounded-lg border border-danger-border bg-danger-subtle p-4",
|
|
11
|
+
a
|
|
12
|
+
),
|
|
13
|
+
"aria-label": n,
|
|
14
|
+
children: [
|
|
15
|
+
/* @__PURE__ */ s("div", { children: [
|
|
16
|
+
/* @__PURE__ */ e("h3", { className: "text-sm font-semibold text-danger-text", children: n }),
|
|
17
|
+
r && /* @__PURE__ */ e("p", { className: "mt-1 text-sm text-secondary", children: r })
|
|
18
|
+
] }),
|
|
19
|
+
t && /* @__PURE__ */ e("div", { className: "flex flex-col gap-2", children: t })
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
x as DangerZone
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=DangerZone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DangerZone.js","sources":["../../../src/components/rbac/DangerZone.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { useUiStrings } from \"../../lib/i18n\";\n\n/* ============================================================================\n DANGER ZONE\n\n A generic, presentational \"irreversible actions live here\" section —\n danger-toned border/heading, a title, an optional description, and a\n `children` slot for whatever action control the page composes in (a\n `Button` wired to an `AlertDialog` confirm, matching `MembersPanel`'s own\n remove-with-confirm convention; see that file for the pattern). This\n component owns NO action logic, no confirmation, no danxbot/team\n knowledge — purely the toned frame every settings page's own danger\n section can reuse, the split test G-5 asks for (would another SaaS app's\n settings page use this frame as-is? yes, given a title/description/action).\n\n MULTIPLE `children` ACTIONS ARE FINE — a settings page with more than one\n irreversible action (today: none for team settings, since team deletion\n is out of v1 per PLN-13 CAV-3; tomorrow: whatever a later card adds) just\n passes more than one control, each still rendered as its own row.\n ========================================================================= */\n\nexport interface DangerZoneProps {\n title?: string;\n description?: string;\n children?: ReactNode;\n className?: string;\n}\n\nexport function DangerZone({ title, description, children, className }: DangerZoneProps) {\n const strings = useUiStrings().dangerZone;\n const heading = title ?? strings.title;\n return (\n <section\n className={cn(\n \"flex flex-col gap-3 rounded-lg border border-danger-border bg-danger-subtle p-4\",\n className,\n )}\n aria-label={heading}\n >\n <div>\n <h3 className=\"text-sm font-semibold text-danger-text\">{heading}</h3>\n {description && <p className=\"mt-1 text-sm text-secondary\">{description}</p>}\n </div>\n {children && <div className=\"flex flex-col gap-2\">{children}</div>}\n </section>\n );\n}\n"],"names":["DangerZone","title","description","children","className","strings","useUiStrings","heading","jsxs","cn","jsx"],"mappings":";;;AA8BO,SAASA,EAAW,EAAE,OAAAC,GAAO,aAAAC,GAAa,UAAAC,GAAU,WAAAC,KAA8B;AACvF,QAAMC,IAAUC,IAAe,YACzBC,IAAUN,KAASI,EAAQ;AACjC,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAL;AAAA,MAAA;AAAA,MAEF,cAAYG;AAAA,MAEZ,UAAA;AAAA,QAAA,gBAAAC,EAAC,OAAA,EACC,UAAA;AAAA,UAAA,gBAAAE,EAAC,MAAA,EAAG,WAAU,0CAA0C,UAAAH,GAAQ;AAAA,UAC/DL,KAAe,gBAAAQ,EAAC,KAAA,EAAE,WAAU,+BAA+B,UAAAR,EAAA,CAAY;AAAA,QAAA,GAC1E;AAAA,QACCC,KAAY,gBAAAO,EAAC,OAAA,EAAI,WAAU,uBAAuB,UAAAP,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlE;"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { jsxs as i, jsx as t, Fragment as R } from "react/jsx-runtime";
|
|
2
|
+
import { useState as b } from "react";
|
|
3
|
+
import { AlertDialog as T } from "../Dialog.js";
|
|
4
|
+
import { Button as n } from "../Button.js";
|
|
5
|
+
import { Icon as a } from "../Icon.js";
|
|
6
|
+
import { Popover as z } from "../Popover.js";
|
|
7
|
+
import { Select as m, SelectItem as p } from "../Select.js";
|
|
8
|
+
import { resetSimStores as D } from "../../lib/sim/registry.js";
|
|
9
|
+
import { useSimSettings as I, setSimSettings as x } from "../../lib/sim/settings.js";
|
|
10
|
+
import { useRBAC as S } from "./RBACProvider.js";
|
|
11
|
+
import { useUiStrings as w } from "../../lib/i18n/provider.js";
|
|
12
|
+
import { emphasis as y } from "../../lib/i18n/emphasis.js";
|
|
13
|
+
const E = ["instant", "fast", "typical", "flaky"], V = ["simulated", "live"], L = "wrench";
|
|
14
|
+
function M({
|
|
15
|
+
onOpenUseCaseLedger: l,
|
|
16
|
+
showSimControls: o = !0,
|
|
17
|
+
iconOnly: e = !1
|
|
18
|
+
} = {}) {
|
|
19
|
+
const s = w().devTools, { canAccessDevTools: c, isImpersonating: d } = S();
|
|
20
|
+
return c ? /* @__PURE__ */ t(
|
|
21
|
+
z,
|
|
22
|
+
{
|
|
23
|
+
align: "end",
|
|
24
|
+
width: "calc(20rem*var(--ui-scale))",
|
|
25
|
+
trigger: /* @__PURE__ */ i(
|
|
26
|
+
n,
|
|
27
|
+
{
|
|
28
|
+
size: "sm",
|
|
29
|
+
variant: d ? "subtle" : e ? "ghost" : "outline",
|
|
30
|
+
iconOnly: e,
|
|
31
|
+
"aria-label": s.triggerLabel,
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ t(a, { name: L, size: "sm" }),
|
|
34
|
+
!e && /* @__PURE__ */ t("span", { className: "hidden sm:inline", children: s.trigger })
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
children: /* @__PURE__ */ t(P, { onOpenUseCaseLedger: l, showSimControls: o })
|
|
39
|
+
}
|
|
40
|
+
) : null;
|
|
41
|
+
}
|
|
42
|
+
function P({ onOpenUseCaseLedger: l, showSimControls: o = !0 } = {}) {
|
|
43
|
+
const e = w().devTools, { canAccessDevTools: s, roles: c, viewingAsRoleId: d, setViewingAsRoleId: g, effectiveRole: N, isImpersonating: u } = S(), { networkSpeed: k, dataSource: f } = I(), [A, h] = b(!1), [C, v] = b(!1);
|
|
44
|
+
return s ? /* @__PURE__ */ i("div", { "data-dev-tools-panel": "", className: "flex w-full min-w-0 flex-col gap-4", children: [
|
|
45
|
+
/* @__PURE__ */ i("div", { className: "flex flex-col gap-2", children: [
|
|
46
|
+
/* @__PURE__ */ t("span", { className: "text-2xs font-semibold tracking-widest text-tertiary uppercase", children: e.viewAs }),
|
|
47
|
+
/* @__PURE__ */ t(
|
|
48
|
+
m,
|
|
49
|
+
{
|
|
50
|
+
"aria-label": e.viewAsLabel,
|
|
51
|
+
placeholder: e.actualRole,
|
|
52
|
+
value: d,
|
|
53
|
+
onValueChange: (r) => g(r ?? null),
|
|
54
|
+
children: c.map((r) => /* @__PURE__ */ t(p, { value: r.id, children: r.label }, r.id))
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
] }),
|
|
58
|
+
u && /* @__PURE__ */ i(
|
|
59
|
+
"div",
|
|
60
|
+
{
|
|
61
|
+
role: "status",
|
|
62
|
+
className: "flex items-start gap-2 rounded-md border border-warning-border bg-warning-subtle p-3",
|
|
63
|
+
children: [
|
|
64
|
+
/* @__PURE__ */ t(a, { name: "triangle-alert", size: "sm", className: "mt-px text-warning-text" }),
|
|
65
|
+
/* @__PURE__ */ t("p", { className: "text-xs text-warning-text", children: e.viewingAs(N?.label ?? e.unknownRole, y) })
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ i(
|
|
70
|
+
n,
|
|
71
|
+
{
|
|
72
|
+
variant: "outline",
|
|
73
|
+
size: "sm",
|
|
74
|
+
disabled: !u,
|
|
75
|
+
onClick: () => g(null),
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ t(a, { name: "rotate-ccw", size: "sm" }),
|
|
78
|
+
e.resetToActual
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
o && /* @__PURE__ */ i(R, { children: [
|
|
83
|
+
/* @__PURE__ */ i("div", { className: "flex flex-col gap-2 border-t border-border-subtle pt-4", children: [
|
|
84
|
+
/* @__PURE__ */ t("span", { className: "text-2xs font-semibold tracking-widest text-tertiary uppercase", children: e.dataSource }),
|
|
85
|
+
/* @__PURE__ */ t(
|
|
86
|
+
m,
|
|
87
|
+
{
|
|
88
|
+
"aria-label": e.dataSource,
|
|
89
|
+
value: f,
|
|
90
|
+
onValueChange: (r) => x({ dataSource: r }),
|
|
91
|
+
children: V.map((r) => /* @__PURE__ */ t(p, { value: r, children: e.dataSources[r] }, r))
|
|
92
|
+
}
|
|
93
|
+
),
|
|
94
|
+
f === "live" && /* @__PURE__ */ t("p", { className: "text-2xs text-tertiary", children: e.liveNotConfigured })
|
|
95
|
+
] }),
|
|
96
|
+
/* @__PURE__ */ i("div", { className: "flex flex-col gap-2 border-t border-border-subtle pt-4", children: [
|
|
97
|
+
/* @__PURE__ */ t("span", { className: "text-2xs font-semibold tracking-widest text-tertiary uppercase", children: e.networkSpeed }),
|
|
98
|
+
/* @__PURE__ */ t(
|
|
99
|
+
m,
|
|
100
|
+
{
|
|
101
|
+
"aria-label": e.networkSpeed,
|
|
102
|
+
value: k,
|
|
103
|
+
onValueChange: (r) => x({ networkSpeed: r }),
|
|
104
|
+
children: E.map((r) => /* @__PURE__ */ t(p, { value: r, children: e.networkSpeeds[r] }, r))
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
] }),
|
|
108
|
+
/* @__PURE__ */ t("div", { className: "flex flex-col gap-2 border-t border-border-subtle pt-4", children: /* @__PURE__ */ t(
|
|
109
|
+
T,
|
|
110
|
+
{
|
|
111
|
+
trigger: /* @__PURE__ */ i(n, { variant: "outline", size: "sm", children: [
|
|
112
|
+
/* @__PURE__ */ t(a, { name: "refresh-cw", size: "sm" }),
|
|
113
|
+
e.regenerate
|
|
114
|
+
] }),
|
|
115
|
+
open: A,
|
|
116
|
+
onOpenChange: h,
|
|
117
|
+
title: e.regenerateTitle,
|
|
118
|
+
description: e.regenerateDescription,
|
|
119
|
+
confirmLabel: e.regenerateConfirm,
|
|
120
|
+
loading: C,
|
|
121
|
+
onConfirm: () => {
|
|
122
|
+
v(!0), D("demo").finally(() => {
|
|
123
|
+
v(!1), h(!1);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
) })
|
|
128
|
+
] }),
|
|
129
|
+
l && /* @__PURE__ */ t("div", { className: "flex flex-col gap-2 border-t border-border-subtle pt-4", children: /* @__PURE__ */ i(n, { variant: "ghost", size: "sm", onClick: l, children: [
|
|
130
|
+
/* @__PURE__ */ t(a, { name: "list-checks", size: "sm" }),
|
|
131
|
+
e.openLedger
|
|
132
|
+
] }) })
|
|
133
|
+
] }) : null;
|
|
134
|
+
}
|
|
135
|
+
export {
|
|
136
|
+
L as DEV_TOOLS_ICON,
|
|
137
|
+
P as DevToolsPanel,
|
|
138
|
+
M as DevToolsPopover
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=DevToolsPopover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevToolsPopover.js","sources":["../../../src/components/rbac/DevToolsPopover.tsx"],"sourcesContent":["import { useState } from \"react\";\r\nimport { AlertDialog } from \"../Dialog\";\r\nimport { Button } from \"../Button\";\r\nimport { Icon, type IconName } from \"../Icon\";\r\nimport { Popover } from \"../Popover\";\r\nimport { Select, SelectItem } from \"../Select\";\r\nimport { resetSimStores } from \"../../lib/sim/registry\";\r\nimport { emphasis, useUiStrings } from \"../../lib/i18n\";\r\nimport { useSimSettings, setSimSettings } from \"../../lib/sim/settings\";\r\nimport type { DataSource, NetworkSpeed } from \"../../lib/sim/types\";\r\nimport { useRBAC } from \"./RBACProvider\";\r\n\r\n/* ============================================================================\r\n DEV TOOLS POPOVER — the \"view the app as a different role\" escape hatch,\r\n plus every other Dev-only control a pitch deck needs: what backend is\r\n answering, how slow it pretends to be, and a one-click way back to a clean\r\n demo.\r\n\r\n THE STRUCTURAL GUARANTEE, NOT A CALLER CONVENTION. This component renders\r\n `null` outright when `useRBAC().canAccessDevTools` is false — a consumer\r\n cannot forget to gate it, wrap it in their own `if`, or render it behind a\r\n feature flag that drifts out of sync with the real permission check. The\r\n ONE thing that decides whether this exists on screen at all is the RBAC\r\n provider's own `canAccessDevTools` config, evaluated against the REAL\r\n signed-in user (see the block comment on `canAccessDevToolsValue` in\r\n `RBACProvider.tsx` for why that evaluation can never read the impersonated\r\n view). Putting the gate here, rather than leaving it to whoever mounts this\r\n component, is what makes that guarantee actually hold.\r\n\r\n NEVER A ROLE NAME. This file selects roles by `id`, labels them with\r\n `role.label`, and has no branch that treats any particular id or label\r\n specially — \"who is allowed to impersonate\" was already decided upstream by\r\n the consumer's own predicate, and by the time this component runs that\r\n question is closed. All that is left is \"which of these roles do you want\r\n to look like,\" which is a plain list with nothing about it hardcoded.\r\n\r\n THE 4 NEWER CONTROLS ARE SIM-LAYER, NOT RBAC-LAYER. Data source, network\r\n speed and \"regenerate demo data\" have nothing to do with roles or\r\n permissions — they read/write `src/lib/sim/settings.ts` and call\r\n `resetSimStores()` directly, both of which are domain-agnostic (a Role\r\n store and a future vertical's Invoice store reset exactly the same way).\r\n This popover living under `rbac/` is a placement choice (it is where the\r\n \"who can see Dev tools\" gate already lives), not a claim that these\r\n controls are RBAC concerns.\r\n\r\n \"OPEN USE CASE LEDGER\" IS THE ONE GENUINELY CONSUMER-SPECIFIC CONTROL —\r\n this library has no idea what route (if any) renders `UseCaseLedgerPage`,\r\n so it is an optional `onOpenUseCaseLedger` callback, same \"no router\"\r\n pattern `AccountMenu` already uses for `onNavigateProfile`/`onNavigateRoles`:\r\n supply it, or the row simply does not render.\r\n ========================================================================= */\r\n\r\nconst NETWORK_SPEEDS: NetworkSpeed[] = [\"instant\", \"fast\", \"typical\", \"flaky\"];\r\n\r\nconst DATA_SOURCES: DataSource[] = [\"simulated\", \"live\"];\r\n\r\n/** The glyph of the Dev tools button. An app that folds the button into its account menu (`useHeaderFold`) draws the entry with this same glyph. */\r\nexport const DEV_TOOLS_ICON = \"wrench\" as const satisfies IconName;\r\n\r\nexport interface DevToolsPopoverProps {\r\n /** Deep link to the dev-only Use Case Ledger. Omit and the row does not render. */\r\n onOpenUseCaseLedger?: () => void;\r\n /**\r\n * Shows the Data source / Network speed / Regenerate demo data section —\r\n * all three read and write THIS LIBRARY's OWN `src/lib/sim/` layer\r\n * (`createSimStore`), which exists for the pitch-deck demo and has nothing\r\n * to do with role-based access control. Defaults `true` so this package's\r\n * own demo pages need no change. A consuming app with a real backend and no\r\n * `createSimStore` usage of its own sets this `false` — otherwise the panel\r\n * shows a \"Simulated ↔ Live\" toggle and a \"Regenerate demo data\" button\r\n * that do nothing observable in that app, which reads as broken rather than\r\n * inert. \"View as\" role impersonation (the RBAC feature this component\r\n * exists to gate) and \"Reset to actual\" are unaffected either way — they\r\n * have nothing to do with the sim layer.\r\n */\r\n showSimControls?: boolean;\r\n /**\r\n * Renders the trigger as a square wrench-only button with no \"Dev tools\"\r\n * label, the same mode as `ThemeMenu.iconOnly` (whose doc explains why it is\r\n * a mode and not a class). The accessible name stays\r\n * `aria-label=\"Developer tools\"` either way.\r\n */\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport function DevToolsPopover({\r\n onOpenUseCaseLedger,\r\n showSimControls = true,\r\n iconOnly = false,\r\n}: DevToolsPopoverProps = {}) {\r\n const strings = useUiStrings().devTools;\r\n const { canAccessDevTools, isImpersonating } = useRBAC();\r\n\r\n if (!canAccessDevTools) return null;\r\n\r\n return (\r\n <Popover\r\n align=\"end\"\r\n width=\"calc(20rem*var(--ui-scale))\"\r\n trigger={\r\n <Button\r\n size=\"sm\"\r\n variant={isImpersonating ? \"subtle\" : iconOnly ? \"ghost\" : \"outline\"}\r\n iconOnly={iconOnly}\r\n aria-label={strings.triggerLabel}\r\n >\r\n <Icon name={DEV_TOOLS_ICON} size=\"sm\" />\r\n {!iconOnly && <span className=\"hidden sm:inline\">{strings.trigger}</span>}\r\n </Button>\r\n }\r\n >\r\n {/* DX-4086 — the design width lives on the popup (`width` below), which renders at\r\n exactly that width capped by the clamp (Popover.tsx), so the panel just fills it. */}\r\n <DevToolsPanel onOpenUseCaseLedger={onOpenUseCaseLedger} showSimControls={showSimControls} />\r\n </Popover>\r\n );\r\n}\r\n\r\nexport type DevToolsPanelProps = Pick<DevToolsPopoverProps, \"onOpenUseCaseLedger\" | \"showSimControls\">;\r\n\r\n/**\r\n * DX-5319 - the Dev tools popup's body on its own: view as a role, and the sim controls. `DevToolsPopover` draws it in its\r\n * popover; an app whose header folded the wrench into the account menu (`useHeaderFold`) draws this same panel in a `Dialog`.\r\n * It carries the SAME structural gate as the popover - nothing at all unless `canAccessDevTools` - so a folded entry cannot be\r\n * the way round it.\r\n */\r\nexport function DevToolsPanel({ onOpenUseCaseLedger, showSimControls = true }: DevToolsPanelProps = {}) {\r\n const strings = useUiStrings().devTools;\r\n const { canAccessDevTools, roles, viewingAsRoleId, setViewingAsRoleId, effectiveRole, isImpersonating } =\r\n useRBAC();\r\n const { networkSpeed, dataSource } = useSimSettings();\r\n const [confirmingReset, setConfirmingReset] = useState(false);\r\n const [resetting, setResetting] = useState(false);\r\n\r\n if (!canAccessDevTools) return null;\r\n\r\n return (\r\n <div data-dev-tools-panel=\"\" className=\"flex w-full min-w-0 flex-col gap-4\">\r\n <div className=\"flex flex-col gap-2\">\r\n <span className=\"text-2xs font-semibold tracking-widest text-tertiary uppercase\">\r\n {strings.viewAs}\r\n </span>\r\n <Select\r\n aria-label={strings.viewAsLabel}\r\n placeholder={strings.actualRole}\r\n value={viewingAsRoleId}\r\n onValueChange={(value) => setViewingAsRoleId((value as string | null) ?? null)}\r\n >\r\n {roles.map((role) => (\r\n <SelectItem key={role.id} value={role.id}>\r\n {role.label}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n </div>\r\n\r\n {/* Clear, unmissable feedback while impersonating — this is the state\r\n where it matters most that a person can tell WHY the app is\r\n behaving differently than they expect. `role=\"status\"` announces\r\n it the moment it appears, without stealing focus. */}\r\n {isImpersonating && (\r\n <div\r\n role=\"status\"\r\n className=\"flex items-start gap-2 rounded-md border border-warning-border bg-warning-subtle p-3\"\r\n >\r\n <Icon name=\"triangle-alert\" size=\"sm\" className=\"mt-px text-warning-text\" />\r\n <p className=\"text-xs text-warning-text\">\r\n {strings.viewingAs(effectiveRole?.label ?? strings.unknownRole, emphasis)}\r\n </p>\r\n </div>\r\n )}\r\n\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n disabled={!isImpersonating}\r\n onClick={() => setViewingAsRoleId(null)}\r\n >\r\n <Icon name=\"rotate-ccw\" size=\"sm\" />\r\n {strings.resetToActual}\r\n </Button>\r\n\r\n {showSimControls && (\r\n <>\r\n <div className=\"flex flex-col gap-2 border-t border-border-subtle pt-4\">\r\n <span className=\"text-2xs font-semibold tracking-widest text-tertiary uppercase\">\r\n {strings.dataSource}\r\n </span>\r\n <Select\r\n aria-label={strings.dataSource}\r\n value={dataSource}\r\n onValueChange={(value) => setSimSettings({ dataSource: value as DataSource })}\r\n >\r\n {DATA_SOURCES.map((source) => (\r\n <SelectItem key={source} value={source}>\r\n {strings.dataSources[source]}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n {dataSource === \"live\" && (\r\n <p className=\"text-2xs text-tertiary\">\r\n {strings.liveNotConfigured}\r\n </p>\r\n )}\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-2 border-t border-border-subtle pt-4\">\r\n <span className=\"text-2xs font-semibold tracking-widest text-tertiary uppercase\">\r\n {strings.networkSpeed}\r\n </span>\r\n <Select\r\n aria-label={strings.networkSpeed}\r\n value={networkSpeed}\r\n onValueChange={(value) => setSimSettings({ networkSpeed: value as NetworkSpeed })}\r\n >\r\n {NETWORK_SPEEDS.map((speed) => (\r\n <SelectItem key={speed} value={speed}>\r\n {strings.networkSpeeds[speed]}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-2 border-t border-border-subtle pt-4\">\r\n <AlertDialog\r\n trigger={\r\n <Button variant=\"outline\" size=\"sm\">\r\n <Icon name=\"refresh-cw\" size=\"sm\" />\r\n {strings.regenerate}\r\n </Button>\r\n }\r\n open={confirmingReset}\r\n onOpenChange={setConfirmingReset}\r\n title={strings.regenerateTitle}\r\n description={strings.regenerateDescription}\r\n confirmLabel={strings.regenerateConfirm}\r\n loading={resetting}\r\n onConfirm={() => {\r\n setResetting(true);\r\n void resetSimStores(\"demo\").finally(() => {\r\n setResetting(false);\r\n setConfirmingReset(false);\r\n });\r\n }}\r\n />\r\n </div>\r\n </>\r\n )}\r\n\r\n {onOpenUseCaseLedger && (\r\n <div className=\"flex flex-col gap-2 border-t border-border-subtle pt-4\">\r\n <Button variant=\"ghost\" size=\"sm\" onClick={onOpenUseCaseLedger}>\r\n <Icon name=\"list-checks\" size=\"sm\" />\r\n {strings.openLedger}\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["NETWORK_SPEEDS","DATA_SOURCES","DEV_TOOLS_ICON","DevToolsPopover","onOpenUseCaseLedger","showSimControls","iconOnly","strings","useUiStrings","canAccessDevTools","isImpersonating","useRBAC","jsx","Popover","jsxs","Button","Icon","DevToolsPanel","roles","viewingAsRoleId","setViewingAsRoleId","effectiveRole","networkSpeed","dataSource","useSimSettings","confirmingReset","setConfirmingReset","useState","resetting","setResetting","Select","value","role","SelectItem","emphasis","Fragment","setSimSettings","source","speed","AlertDialog","resetSimStores"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsxs as e, jsx as a, Fragment as i } from "react/jsx-runtime";
|
|
2
|
+
import { RelativeTime as r } from "../RelativeTime.js";
|
|
3
|
+
function s({ ended: t }) {
|
|
4
|
+
return /* @__PURE__ */ e("span", { className: "text-xs text-tertiary", "data-testid": "ended-line", children: [
|
|
5
|
+
t.label,
|
|
6
|
+
" ",
|
|
7
|
+
/* @__PURE__ */ a(r, { at: t.at }),
|
|
8
|
+
t.after !== void 0 && `, ${t.after}`
|
|
9
|
+
] });
|
|
10
|
+
}
|
|
11
|
+
function x({ idle: t }) {
|
|
12
|
+
return /* @__PURE__ */ e("span", { className: "text-xs text-tertiary", "data-testid": "idle-line", children: [
|
|
13
|
+
t.label,
|
|
14
|
+
t.at != null && /* @__PURE__ */ e(i, { children: [
|
|
15
|
+
" ",
|
|
16
|
+
/* @__PURE__ */ a(r, { at: t.at })
|
|
17
|
+
] })
|
|
18
|
+
] });
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
s as EndedLine,
|
|
22
|
+
x as IdleLine
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=EndedLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndedLine.js","sources":["../../../src/components/rbac/EndedLine.tsx"],"sourcesContent":["import { RelativeTime } from \"../RelativeTime\";\r\n\r\n/** DX-5246: how a credential ended, in the consumer's own words (`label`, e.g. \"Revoked\") and when (`at`, an ISO instant). */\r\nexport interface EndedState {\r\n label: string;\r\n at: string;\r\n /** What follows from it, in the consumer's own words (e.g. \"counts until Oct 24\"): shown after the time, after a comma. */\r\n after?: string;\r\n}\r\n\r\n/** The muted \"<label> <time ago>[, <after>]\" line an ended session or key shows under its name (shared by `SessionsList` and `ApiKeysTable`). */\r\nexport function EndedLine({ ended }: { ended: EndedState }) {\r\n return (\r\n <span className=\"text-xs text-tertiary\" data-testid=\"ended-line\">\r\n {ended.label} <RelativeTime at={ended.at} />\r\n {ended.after !== undefined && `, ${ended.after}`}\r\n </span>\r\n );\r\n}\r\n\r\n/** DX-5246: a credential that still works but nobody is using: the consumer's own words (`label`, e.g. \"Idle, last used\") and, when known, the ISO instant it was last in use (`at`). */\r\nexport interface IdleState {\r\n label: string;\r\n /** ISO instant of its last use; `null`/omitted for one never used, which shows the label alone. */\r\n at?: string | null;\r\n}\r\n\r\n/** The muted \"<label> <time ago>\" line an idle session or key shows under its name (shared by `SessionsList` and `ApiKeysTable`). Unlike an ended row it keeps every action. */\r\nexport function IdleLine({ idle }: { idle: IdleState }) {\r\n return (\r\n <span className=\"text-xs text-tertiary\" data-testid=\"idle-line\">\r\n {idle.label}\r\n {idle.at != null && (\r\n <>\r\n {\" \"}\r\n <RelativeTime at={idle.at} />\r\n </>\r\n )}\r\n </span>\r\n );\r\n}\r\n"],"names":["EndedLine","ended","jsxs","jsx","RelativeTime","IdleLine","idle","Fragment"],"mappings":";;AAWO,SAASA,EAAU,EAAE,OAAAC,KAAgC;AAC1D,SACE,gBAAAC,EAAC,QAAA,EAAK,WAAU,yBAAwB,eAAY,cACjD,UAAA;AAAA,IAAAD,EAAM;AAAA,IAAM;AAAA,IAAC,gBAAAE,EAACC,GAAA,EAAa,IAAIH,EAAM,GAAA,CAAI;AAAA,IACzCA,EAAM,UAAU,UAAa,KAAKA,EAAM,KAAK;AAAA,EAAA,GAChD;AAEJ;AAUO,SAASI,EAAS,EAAE,MAAAC,KAA6B;AACtD,SACE,gBAAAJ,EAAC,QAAA,EAAK,WAAU,yBAAwB,eAAY,aACjD,UAAA;AAAA,IAAAI,EAAK;AAAA,IACLA,EAAK,MAAM,QACV,gBAAAJ,EAAAK,GAAA,EACG,UAAA;AAAA,MAAA;AAAA,MACD,gBAAAJ,EAACC,GAAA,EAAa,IAAIE,EAAK,GAAA,CAAI;AAAA,IAAA,EAAA,CAC7B;AAAA,EAAA,GAEJ;AAEJ;"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { jsx as l, jsxs as g } from "react/jsx-runtime";
|
|
2
|
+
import { AlertDialog as v } from "../Dialog.js";
|
|
3
|
+
import { IconButton as m } from "../IconButton.js";
|
|
4
|
+
import { Icon as c } from "../Icon.js";
|
|
5
|
+
import { Badge as p } from "../Badge.js";
|
|
6
|
+
import { TableEmptyState as b, DataTable as h, CellStack as k } from "../Table.js";
|
|
7
|
+
import { RelativeTime as x } from "../RelativeTime.js";
|
|
8
|
+
import { useUiStrings as f } from "../../lib/i18n/provider.js";
|
|
9
|
+
const y = {
|
|
10
|
+
pending: "warning",
|
|
11
|
+
accepted: "success",
|
|
12
|
+
revoked: "danger",
|
|
13
|
+
expired: "neutral"
|
|
14
|
+
};
|
|
15
|
+
function S({
|
|
16
|
+
invitation: i,
|
|
17
|
+
busy: a,
|
|
18
|
+
onResend: t,
|
|
19
|
+
onRevoke: r,
|
|
20
|
+
onCopyLink: n
|
|
21
|
+
}) {
|
|
22
|
+
const e = f().invitationsList;
|
|
23
|
+
return i.status === "pending" || i.status === "expired" ? /* @__PURE__ */ g("div", { className: "flex justify-end gap-1", children: [
|
|
24
|
+
n && /* @__PURE__ */ l(
|
|
25
|
+
m,
|
|
26
|
+
{
|
|
27
|
+
icon: /* @__PURE__ */ l(c, { name: "link", size: "sm" }),
|
|
28
|
+
label: e.copyLink(i.email),
|
|
29
|
+
size: "sm",
|
|
30
|
+
disabledReason: a ? e.working : void 0,
|
|
31
|
+
onClick: () => n(i.id)
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
/* @__PURE__ */ l(
|
|
35
|
+
m,
|
|
36
|
+
{
|
|
37
|
+
icon: /* @__PURE__ */ l(c, { name: "refresh-cw", size: "sm" }),
|
|
38
|
+
label: e.resend(i.email),
|
|
39
|
+
size: "sm",
|
|
40
|
+
disabledReason: a ? e.working : void 0,
|
|
41
|
+
onClick: () => t(i.id)
|
|
42
|
+
}
|
|
43
|
+
),
|
|
44
|
+
/* @__PURE__ */ l(
|
|
45
|
+
v,
|
|
46
|
+
{
|
|
47
|
+
trigger: /* @__PURE__ */ l(
|
|
48
|
+
m,
|
|
49
|
+
{
|
|
50
|
+
icon: /* @__PURE__ */ l(c, { name: "x", size: "sm" }),
|
|
51
|
+
label: e.revoke(i.email),
|
|
52
|
+
tone: "danger",
|
|
53
|
+
size: "sm",
|
|
54
|
+
disabledReason: a ? e.working : void 0
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
title: e.revokeTitle(i.email),
|
|
58
|
+
description: e.revokeDescription,
|
|
59
|
+
confirmLabel: e.revokeConfirm,
|
|
60
|
+
destructive: !0,
|
|
61
|
+
loading: a,
|
|
62
|
+
onConfirm: () => r(i.id)
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
] }) : null;
|
|
66
|
+
}
|
|
67
|
+
function N(i, a, t, r, n) {
|
|
68
|
+
return [
|
|
69
|
+
{
|
|
70
|
+
id: "invitee",
|
|
71
|
+
header: i.columnInvitee,
|
|
72
|
+
accessorFn: (e) => e.email,
|
|
73
|
+
cell: ({ row: e }) => /* @__PURE__ */ l(
|
|
74
|
+
k,
|
|
75
|
+
{
|
|
76
|
+
primary: e.original.email,
|
|
77
|
+
secondary: e.original.invitedByName ? i.invitedBy(e.original.invitedByName) : void 0
|
|
78
|
+
}
|
|
79
|
+
)
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: "role",
|
|
83
|
+
header: i.columnRole,
|
|
84
|
+
accessorFn: (e) => e.roleLabel,
|
|
85
|
+
cell: ({ row: e }) => /* @__PURE__ */ l("span", { className: "text-secondary", children: e.original.roleLabel })
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "status",
|
|
89
|
+
header: i.columnStatus,
|
|
90
|
+
accessorFn: (e) => e.status,
|
|
91
|
+
// card AC #6 — a failed/suppressed send, or a later bounce/complaint
|
|
92
|
+
// notification, is shown on the invitation itself (not just a
|
|
93
|
+
// one-time toast at create/resend time) so an operator revisiting the
|
|
94
|
+
// list later still sees it and knows to Resend.
|
|
95
|
+
cell: ({ row: e }) => {
|
|
96
|
+
const { lastEmailStatus: o, lastEmailBounced: s, lastEmailComplained: d } = e.original, u = d ? i.complaint : s ? i.bounced : o === "failed" || o === "suppressed" ? i.deliveryFailed : null;
|
|
97
|
+
return /* @__PURE__ */ g("div", { className: "flex flex-wrap items-center gap-1", children: [
|
|
98
|
+
/* @__PURE__ */ l(p, { tone: y[e.original.status], dot: !0, children: i.status[e.original.status] }),
|
|
99
|
+
u && /* @__PURE__ */ l(p, { tone: "danger", children: u })
|
|
100
|
+
] });
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: "sent",
|
|
105
|
+
header: i.columnSent,
|
|
106
|
+
accessorFn: (e) => e.createdAt,
|
|
107
|
+
cell: ({ row: e }) => /* @__PURE__ */ l("span", { className: "text-secondary", children: /* @__PURE__ */ l(x, { at: e.original.createdAt }) })
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: "actions",
|
|
111
|
+
header: "",
|
|
112
|
+
enableSorting: !1,
|
|
113
|
+
cell: ({ row: e }) => /* @__PURE__ */ l(
|
|
114
|
+
S,
|
|
115
|
+
{
|
|
116
|
+
invitation: e.original,
|
|
117
|
+
busy: a === e.original.id,
|
|
118
|
+
onResend: t,
|
|
119
|
+
onRevoke: r,
|
|
120
|
+
onCopyLink: n
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
function R({
|
|
127
|
+
invitations: i,
|
|
128
|
+
onResend: a,
|
|
129
|
+
onRevoke: t,
|
|
130
|
+
onCopyLink: r,
|
|
131
|
+
busyId: n,
|
|
132
|
+
emptyState: e,
|
|
133
|
+
className: o
|
|
134
|
+
}) {
|
|
135
|
+
const s = f().invitationsList, d = N(s, n, a, t, r);
|
|
136
|
+
return i.length === 0 ? e ?? /* @__PURE__ */ l(
|
|
137
|
+
b,
|
|
138
|
+
{
|
|
139
|
+
icon: /* @__PURE__ */ l(c, { name: "mail", size: "lg", className: "text-tertiary" }),
|
|
140
|
+
title: s.emptyTitle,
|
|
141
|
+
description: s.emptyDescription
|
|
142
|
+
}
|
|
143
|
+
) : /* @__PURE__ */ l(h, { columns: d, data: i, className: o });
|
|
144
|
+
}
|
|
145
|
+
export {
|
|
146
|
+
R as InvitationsList
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=InvitationsList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvitationsList.js","sources":["../../../src/components/rbac/InvitationsList.tsx"],"sourcesContent":["import type { ColumnDef } from \"@tanstack/react-table\";\nimport { AlertDialog } from \"../Dialog\";\nimport { IconButton } from \"../IconButton\";\nimport { Icon } from \"../Icon\";\nimport { Badge } from \"../Badge\";\nimport { CellStack, DataTable, TableEmptyState } from \"../Table\";\nimport { RelativeTime } from \"../RelativeTime\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport type { UiStrings } from \"../../lib/i18n\";\n\n/* ----------------------------------------------------------------------------\n INVITATIONS LIST\n\n A team's pending/accepted/revoked/expired invitations — the sibling table\n to `MembersPanel` (same `DataTable` primitive, same disabled/busy-row\n shape), rendered alongside it on a members screen. PRESENTATIONAL ONLY:\n every mutation (resend, revoke, copy the invite link) is a callback: the\n list never fetches and knows nothing about HTTP or token shapes.\n\n `status` is a CLOSED set the consumer computes and hands in (never derived\n here — this library has no notion of \"expired\" without a clock, and no\n business deciding what counts as one).\n -------------------------------------------------------------------------- */\n\nexport type InvitationStatus = \"pending\" | \"accepted\" | \"revoked\" | \"expired\";\n\nexport interface InvitationsListItem {\n id: string;\n email: string;\n roleLabel: string;\n status: InvitationStatus;\n createdAt: string;\n invitedByName?: string;\n /**\n * The MOST RECENT send attempt's outcome for this invitation (create or a\n * later resend), when the consumer's read surfaced one. `undefined` means\n * the consumer's data source has no send-history correlation — the list\n * renders no delivery indicator at all in that case (never assumed \"sent\"\n * from absence). Omit `lastEmailBounced`/`lastEmailComplained` the same\n * way when unknown, rather than defaulting to `false`.\n */\n lastEmailStatus?: \"sent\" | \"failed\" | \"suppressed\";\n /** A LATER async bounce notification arrived for the most recent send. */\n lastEmailBounced?: boolean;\n /** A LATER async complaint notification arrived for the most recent send. */\n lastEmailComplained?: boolean;\n}\n\nexport interface InvitationsListProps {\n invitations: InvitationsListItem[];\n onResend: (id: string) => void;\n onRevoke: (id: string) => void;\n /**\n * Copies the invite link for manual sharing (card architecture: \"the admin\n * UI can also copy the invite link\"). Omit to hide the copy control\n * entirely — a consumer whose invite creation response never surfaced a raw\n * token (e.g. a page reload after create) has nothing to copy.\n */\n onCopyLink?: (id: string) => void;\n /** The id of a row currently mid-mutation (resend or revoke). */\n busyId?: string | null;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\nconst STATUS_TONE: Record<InvitationStatus, \"warning\" | \"success\" | \"danger\" | \"neutral\"> = {\n pending: \"warning\",\n accepted: \"success\",\n revoked: \"danger\",\n expired: \"neutral\",\n};\n\nfunction ActionsCell({\n invitation,\n busy,\n onResend,\n onRevoke,\n onCopyLink,\n}: {\n invitation: InvitationsListItem;\n busy: boolean;\n onResend: (id: string) => void;\n onRevoke: (id: string) => void;\n onCopyLink?: (id: string) => void;\n}) {\n const strings = useUiStrings().invitationsList;\n // Only a LIVE invitation (pending or expired-but-unrevoked, both resendable\n // per the card's own DB contract) can be resent, revoked or copied — an\n // accepted/revoked one is a historical row, actions-inert.\n const live = invitation.status === \"pending\" || invitation.status === \"expired\";\n if (!live) return null;\n\n return (\n <div className=\"flex justify-end gap-1\">\n {onCopyLink && (\n <IconButton\n icon={<Icon name=\"link\" size=\"sm\" />}\n label={strings.copyLink(invitation.email)}\n size=\"sm\"\n disabledReason={busy ? strings.working : undefined}\n onClick={() => onCopyLink(invitation.id)}\n />\n )}\n <IconButton\n icon={<Icon name=\"refresh-cw\" size=\"sm\" />}\n label={strings.resend(invitation.email)}\n size=\"sm\"\n disabledReason={busy ? strings.working : undefined}\n onClick={() => onResend(invitation.id)}\n />\n <AlertDialog\n trigger={\n <IconButton\n icon={<Icon name=\"x\" size=\"sm\" />}\n label={strings.revoke(invitation.email)}\n tone=\"danger\"\n size=\"sm\"\n disabledReason={busy ? strings.working : undefined}\n />\n }\n title={strings.revokeTitle(invitation.email)}\n description={strings.revokeDescription}\n confirmLabel={strings.revokeConfirm}\n destructive\n loading={busy}\n onConfirm={() => onRevoke(invitation.id)}\n />\n </div>\n );\n}\n\nfunction buildColumns(\n strings: UiStrings[\"invitationsList\"],\n busyId: string | null | undefined,\n onResend: (id: string) => void,\n onRevoke: (id: string) => void,\n onCopyLink: ((id: string) => void) | undefined,\n): ColumnDef<InvitationsListItem, unknown>[] {\n return [\n {\n id: \"invitee\",\n header: strings.columnInvitee,\n accessorFn: (i) => i.email,\n cell: ({ row }) => (\n <CellStack\n primary={row.original.email}\n secondary={row.original.invitedByName ? strings.invitedBy(row.original.invitedByName) : undefined}\n />\n ),\n },\n {\n id: \"role\",\n header: strings.columnRole,\n accessorFn: (i) => i.roleLabel,\n cell: ({ row }) => <span className=\"text-secondary\">{row.original.roleLabel}</span>,\n },\n {\n id: \"status\",\n header: strings.columnStatus,\n accessorFn: (i) => i.status,\n // card AC #6 — a failed/suppressed send, or a later bounce/complaint\n // notification, is shown on the invitation itself (not just a\n // one-time toast at create/resend time) so an operator revisiting the\n // list later still sees it and knows to Resend.\n cell: ({ row }) => {\n const { lastEmailStatus, lastEmailBounced, lastEmailComplained } = row.original;\n const deliveryLabel = lastEmailComplained\n ? strings.complaint\n : lastEmailBounced\n ? strings.bounced\n : lastEmailStatus === \"failed\" || lastEmailStatus === \"suppressed\"\n ? strings.deliveryFailed\n : null;\n return (\n <div className=\"flex flex-wrap items-center gap-1\">\n <Badge tone={STATUS_TONE[row.original.status]} dot>\n {strings.status[row.original.status]}\n </Badge>\n {deliveryLabel && <Badge tone=\"danger\">{deliveryLabel}</Badge>}\n </div>\n );\n },\n },\n {\n id: \"sent\",\n header: strings.columnSent,\n accessorFn: (i) => i.createdAt,\n cell: ({ row }) => <span className=\"text-secondary\"><RelativeTime at={row.original.createdAt} /></span>,\n },\n {\n id: \"actions\",\n header: \"\",\n enableSorting: false,\n cell: ({ row }) => (\n <ActionsCell\n invitation={row.original}\n busy={busyId === row.original.id}\n onResend={onResend}\n onRevoke={onRevoke}\n onCopyLink={onCopyLink}\n />\n ),\n },\n ];\n}\n\nexport function InvitationsList({\n invitations,\n onResend,\n onRevoke,\n onCopyLink,\n busyId,\n emptyState,\n className,\n}: InvitationsListProps) {\n const strings = useUiStrings().invitationsList;\n const columns = buildColumns(strings, busyId, onResend, onRevoke, onCopyLink);\n\n if (invitations.length === 0) {\n return (\n emptyState ?? (\n <TableEmptyState\n icon={<Icon name=\"mail\" size=\"lg\" className=\"text-tertiary\" />}\n title={strings.emptyTitle}\n description={strings.emptyDescription}\n />\n )\n );\n }\n\n return <DataTable columns={columns} data={invitations} className={className} />;\n}\n"],"names":["STATUS_TONE","ActionsCell","invitation","busy","onResend","onRevoke","onCopyLink","strings","useUiStrings","jsxs","jsx","IconButton","Icon","AlertDialog","buildColumns","busyId","i","row","CellStack","lastEmailStatus","lastEmailBounced","lastEmailComplained","deliveryLabel","Badge","RelativeTime","InvitationsList","invitations","emptyState","className","columns","TableEmptyState","DataTable"],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsx as r, jsxs as p, Fragment as F } from "react/jsx-runtime";
|
|
2
|
+
import { useState as d, useEffect as L } from "react";
|
|
3
|
+
import { Badge as M } from "../Badge.js";
|
|
4
|
+
import { Button as E } from "../Button.js";
|
|
5
|
+
import { Callout as N } from "../Callout.js";
|
|
6
|
+
import { Dialog as j } from "../Dialog.js";
|
|
7
|
+
import { Field as y } from "../Field.js";
|
|
8
|
+
import { Select as K, SelectItem as $ } from "../Select.js";
|
|
9
|
+
import { useUiStrings as A } from "../../lib/i18n/provider.js";
|
|
10
|
+
const w = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
11
|
+
function R({
|
|
12
|
+
open: m,
|
|
13
|
+
onOpenChange: h,
|
|
14
|
+
assignableRoles: f,
|
|
15
|
+
loading: l = !1,
|
|
16
|
+
error: b,
|
|
17
|
+
onSubmit: k,
|
|
18
|
+
className: S
|
|
19
|
+
}) {
|
|
20
|
+
const i = A().inviteMembersDialog, [t, n] = d([]), [a, s] = d(""), [u, v] = d(f[0]?.id ?? ""), [I, o] = d(void 0);
|
|
21
|
+
L(() => {
|
|
22
|
+
m && (n([]), s(""), o(void 0), v(f[0]?.id ?? ""));
|
|
23
|
+
}, [m]);
|
|
24
|
+
function g() {
|
|
25
|
+
const e = a.trim().replace(/,$/, "");
|
|
26
|
+
if (e !== "") {
|
|
27
|
+
if (!w.test(e)) {
|
|
28
|
+
o(i.invalidEmail(e));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (t.includes(e)) {
|
|
32
|
+
s(""), o(void 0);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
n([...t, e]), s(""), o(void 0);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function _(e) {
|
|
39
|
+
e.key === "Enter" || e.key === "," ? (e.preventDefault(), g()) : e.key === "Backspace" && a === "" && t.length > 0 && n(t.slice(0, -1));
|
|
40
|
+
}
|
|
41
|
+
const c = a.trim(), x = c !== "" && w.test(c) && !t.includes(c) ? [...t, c] : t, D = x.length > 0 && u !== "" && !l;
|
|
42
|
+
function B() {
|
|
43
|
+
D && k({ emails: x, roleId: u });
|
|
44
|
+
}
|
|
45
|
+
return /* @__PURE__ */ r(
|
|
46
|
+
j,
|
|
47
|
+
{
|
|
48
|
+
open: m,
|
|
49
|
+
onOpenChange: h,
|
|
50
|
+
title: i.title,
|
|
51
|
+
description: i.description,
|
|
52
|
+
className: S,
|
|
53
|
+
actions: /* @__PURE__ */ p(F, { children: [
|
|
54
|
+
/* @__PURE__ */ r(E, { variant: "outline", onClick: () => h(!1), disabled: l, children: i.cancel }),
|
|
55
|
+
/* @__PURE__ */ r(E, { onClick: B, disabled: !D, loading: l, children: i.send(t.length) })
|
|
56
|
+
] }),
|
|
57
|
+
children: /* @__PURE__ */ p("div", { className: "flex flex-col gap-4", children: [
|
|
58
|
+
b && /* @__PURE__ */ r(N, { tone: "danger", title: b }),
|
|
59
|
+
/* @__PURE__ */ r(y, { label: i.emailsLabel, error: I, description: i.emailsDescription, children: /* @__PURE__ */ p("div", { className: "flex flex-wrap items-center gap-1.5 rounded-md border border-field-border bg-field p-1.5 focus-within:border-control focus-within:shadow-[0_0_0_3px_var(--control-focus-halo)]", children: [
|
|
60
|
+
t.map((e) => /* @__PURE__ */ r(
|
|
61
|
+
M,
|
|
62
|
+
{
|
|
63
|
+
tone: "accent",
|
|
64
|
+
dismiss: {
|
|
65
|
+
label: i.removeEmail(e),
|
|
66
|
+
onDismiss: () => n(t.filter((C) => C !== e))
|
|
67
|
+
},
|
|
68
|
+
children: e
|
|
69
|
+
},
|
|
70
|
+
e
|
|
71
|
+
)),
|
|
72
|
+
/* @__PURE__ */ r(
|
|
73
|
+
"input",
|
|
74
|
+
{
|
|
75
|
+
type: "email",
|
|
76
|
+
value: a,
|
|
77
|
+
onChange: (e) => {
|
|
78
|
+
s(e.target.value), o(void 0);
|
|
79
|
+
},
|
|
80
|
+
onKeyDown: _,
|
|
81
|
+
onBlur: g,
|
|
82
|
+
placeholder: t.length === 0 ? i.emailPlaceholder : "",
|
|
83
|
+
disabled: l,
|
|
84
|
+
autoFocus: !0,
|
|
85
|
+
className: "min-w-32 flex-1 border-0 bg-transparent px-1 py-0.5 text-sm text-primary outline-none placeholder:text-field-placeholder"
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
] }) }),
|
|
89
|
+
/* @__PURE__ */ r(y, { label: i.roleLabel, children: /* @__PURE__ */ r(K, { value: u, onValueChange: (e) => v(e ?? ""), disabled: l, children: f.map((e) => /* @__PURE__ */ r($, { value: e.id, children: e.label }, e.id)) }) })
|
|
90
|
+
] })
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
R as InviteMembersDialog
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=InviteMembersDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InviteMembersDialog.js","sources":["../../../src/components/rbac/InviteMembersDialog.tsx"],"sourcesContent":["import { useEffect, useState, type KeyboardEvent } from \"react\";\nimport { Badge } from \"../Badge\";\nimport { Button } from \"../Button\";\nimport { Callout } from \"../Callout\";\nimport { Dialog } from \"../Dialog\";\nimport { Field } from \"../Field\";\nimport { Select, SelectItem } from \"../Select\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport type { Role } from \"./types\";\n\n/* ============================================================================\n INVITE MEMBERS DIALOG\n\n Multi-email chips + a single role, submitted together as one batch (the\n card behind this: each email gets its own invitation, one send). PRESENTATIONAL\n ONLY, local `useState` reset on open — same shape as `RoleEditorDialog`'s\n own header describes.\n\n The chip input is built from `Badge`'s own `dismiss` prop (\"a chip you can\n take off\") rather than a new primitive — there is no dedicated tag/chip\n input in this library yet, and one email address is exactly what a\n dismissible badge already models.\n ========================================================================= */\n\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport interface InviteMembersDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** The roles an invitee may be given — the role Select's options. */\n assignableRoles: Role[];\n /** Disables the form and shows a busy submit button while the invite request is in flight. */\n loading?: boolean;\n /**\n * A server-side error surfaced after a failed submit (e.g. \"invite_exists\"\n * for one address) — rendered as a `Callout`. The dialog has no notion of\n * WHY a send failed; the consumer's own error copy goes here verbatim.\n */\n error?: string;\n onSubmit: (input: { emails: string[]; roleId: string }) => void;\n className?: string;\n}\n\nexport function InviteMembersDialog({\n open,\n onOpenChange,\n assignableRoles,\n loading = false,\n error,\n onSubmit,\n className,\n}: InviteMembersDialogProps) {\n const strings = useUiStrings().inviteMembersDialog;\n const [emails, setEmails] = useState<string[]>([]);\n const [draft, setDraft] = useState(\"\");\n const [roleId, setRoleId] = useState<string>(assignableRoles[0]?.id ?? \"\");\n const [draftError, setDraftError] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n if (!open) return;\n setEmails([]);\n setDraft(\"\");\n setDraftError(undefined);\n setRoleId(assignableRoles[0]?.id ?? \"\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n function commitDraft(): void {\n const value = draft.trim().replace(/,$/, \"\");\n if (value === \"\") return;\n if (!EMAIL_RE.test(value)) {\n setDraftError(strings.invalidEmail(value));\n return;\n }\n if (emails.includes(value)) {\n setDraft(\"\");\n setDraftError(undefined);\n return;\n }\n setEmails([...emails, value]);\n setDraft(\"\");\n setDraftError(undefined);\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === \"Enter\" || event.key === \",\") {\n event.preventDefault();\n commitDraft();\n } else if (event.key === \"Backspace\" && draft === \"\" && emails.length > 0) {\n setEmails(emails.slice(0, -1));\n }\n }\n\n // A partially-typed valid address still in the draft field counts toward\n // BOTH whether submit is enabled and what gets sent — a consumer hitting\n // Submit without pressing Enter/comma on the LAST chip should not lose it\n // or be blocked by a submit button that never noticed it was valid.\n const pendingDraft = draft.trim();\n const draftEmails =\n pendingDraft !== \"\" && EMAIL_RE.test(pendingDraft) && !emails.includes(pendingDraft)\n ? [...emails, pendingDraft]\n : emails;\n const canSubmit = draftEmails.length > 0 && roleId !== \"\" && !loading;\n\n function handleSubmit(): void {\n if (!canSubmit) return;\n onSubmit({ emails: draftEmails, roleId });\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={onOpenChange}\n title={strings.title}\n description={strings.description}\n className={className}\n actions={\n <>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)} disabled={loading}>\n {strings.cancel}\n </Button>\n <Button onClick={handleSubmit} disabled={!canSubmit} loading={loading}>\n {strings.send(emails.length)}\n </Button>\n </>\n }\n >\n <div className=\"flex flex-col gap-4\">\n {error && <Callout tone=\"danger\" title={error} />}\n <Field label={strings.emailsLabel} error={draftError} description={strings.emailsDescription}>\n <div className=\"flex flex-wrap items-center gap-1.5 rounded-md border border-field-border bg-field p-1.5 focus-within:border-control focus-within:shadow-[0_0_0_3px_var(--control-focus-halo)]\">\n {emails.map((email) => (\n <Badge\n key={email}\n tone=\"accent\"\n dismiss={{\n label: strings.removeEmail(email),\n onDismiss: () => setEmails(emails.filter((e) => e !== email)),\n }}\n >\n {email}\n </Badge>\n ))}\n <input\n type=\"email\"\n value={draft}\n onChange={(event) => {\n setDraft(event.target.value);\n setDraftError(undefined);\n }}\n onKeyDown={handleKeyDown}\n onBlur={commitDraft}\n placeholder={emails.length === 0 ? strings.emailPlaceholder : \"\"}\n disabled={loading}\n autoFocus\n className=\"min-w-32 flex-1 border-0 bg-transparent px-1 py-0.5 text-sm text-primary outline-none placeholder:text-field-placeholder\"\n />\n </div>\n </Field>\n <Field label={strings.roleLabel}>\n <Select value={roleId} onValueChange={(value) => setRoleId((value as string | null) ?? \"\")} disabled={loading}>\n {assignableRoles.map((role) => (\n <SelectItem key={role.id} value={role.id}>\n {role.label}\n </SelectItem>\n ))}\n </Select>\n </Field>\n </div>\n </Dialog>\n );\n}\n"],"names":["EMAIL_RE","InviteMembersDialog","open","onOpenChange","assignableRoles","loading","error","onSubmit","className","strings","useUiStrings","emails","setEmails","useState","draft","setDraft","roleId","setRoleId","draftError","setDraftError","useEffect","commitDraft","value","handleKeyDown","event","pendingDraft","draftEmails","canSubmit","handleSubmit","jsx","Dialog","jsxs","Fragment","Button","Callout","Field","email","Badge","e","Select","role","SelectItem"],"mappings":";;;;;;;;;AAwBA,MAAMA,IAAW;AAmBV,SAASC,EAAoB;AAAA,EAClC,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAA6B;AAC3B,QAAMC,IAAUC,IAAe,qBACzB,CAACC,GAAQC,CAAS,IAAIC,EAAmB,CAAA,CAAE,GAC3C,CAACC,GAAOC,CAAQ,IAAIF,EAAS,EAAE,GAC/B,CAACG,GAAQC,CAAS,IAAIJ,EAAiBT,EAAgB,CAAC,GAAG,MAAM,EAAE,GACnE,CAACc,GAAYC,CAAa,IAAIN,EAA6B,MAAS;AAE1E,EAAAO,EAAU,MAAM;AACd,IAAKlB,MACLU,EAAU,CAAA,CAAE,GACZG,EAAS,EAAE,GACXI,EAAc,MAAS,GACvBF,EAAUb,EAAgB,CAAC,GAAG,MAAM,EAAE;AAAA,EAExC,GAAG,CAACF,CAAI,CAAC;AAET,WAASmB,IAAoB;AAC3B,UAAMC,IAAQR,EAAM,KAAA,EAAO,QAAQ,MAAM,EAAE;AAC3C,QAAIQ,MAAU,IACd;AAAA,UAAI,CAACtB,EAAS,KAAKsB,CAAK,GAAG;AACzB,QAAAH,EAAcV,EAAQ,aAAaa,CAAK,CAAC;AACzC;AAAA,MACF;AACA,UAAIX,EAAO,SAASW,CAAK,GAAG;AAC1B,QAAAP,EAAS,EAAE,GACXI,EAAc,MAAS;AACvB;AAAA,MACF;AACA,MAAAP,EAAU,CAAC,GAAGD,GAAQW,CAAK,CAAC,GAC5BP,EAAS,EAAE,GACXI,EAAc,MAAS;AAAA;AAAA,EACzB;AAEA,WAASI,EAAcC,GAA8C;AACnE,IAAIA,EAAM,QAAQ,WAAWA,EAAM,QAAQ,OACzCA,EAAM,eAAA,GACNH,EAAA,KACSG,EAAM,QAAQ,eAAeV,MAAU,MAAMH,EAAO,SAAS,KACtEC,EAAUD,EAAO,MAAM,GAAG,EAAE,CAAC;AAAA,EAEjC;AAMA,QAAMc,IAAeX,EAAM,KAAA,GACrBY,IACJD,MAAiB,MAAMzB,EAAS,KAAKyB,CAAY,KAAK,CAACd,EAAO,SAASc,CAAY,IAC/E,CAAC,GAAGd,GAAQc,CAAY,IACxBd,GACAgB,IAAYD,EAAY,SAAS,KAAKV,MAAW,MAAM,CAACX;AAE9D,WAASuB,IAAqB;AAC5B,IAAKD,KACLpB,EAAS,EAAE,QAAQmB,GAAa,QAAAV,EAAA,CAAQ;AAAA,EAC1C;AAEA,SACE,gBAAAa;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAA5B;AAAA,MACA,cAAAC;AAAA,MACA,OAAOM,EAAQ;AAAA,MACf,aAAaA,EAAQ;AAAA,MACrB,WAAAD;AAAA,MACA,SACE,gBAAAuB,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAH,EAACI,GAAA,EAAO,SAAQ,WAAU,SAAS,MAAM9B,EAAa,EAAK,GAAG,UAAUE,GACrE,UAAAI,EAAQ,OAAA,CACX;AAAA,QACA,gBAAAoB,EAACI,GAAA,EAAO,SAASL,GAAc,UAAU,CAACD,GAAW,SAAAtB,GAClD,UAAAI,EAAQ,KAAKE,EAAO,MAAM,EAAA,CAC7B;AAAA,MAAA,GACF;AAAA,MAGF,UAAA,gBAAAoB,EAAC,OAAA,EAAI,WAAU,uBACZ,UAAA;AAAA,QAAAzB,KAAS,gBAAAuB,EAACK,GAAA,EAAQ,MAAK,UAAS,OAAO5B,GAAO;AAAA,QAC/C,gBAAAuB,EAACM,GAAA,EAAM,OAAO1B,EAAQ,aAAa,OAAOS,GAAY,aAAaT,EAAQ,mBACzE,UAAA,gBAAAsB,EAAC,OAAA,EAAI,WAAU,kLACZ,UAAA;AAAA,UAAApB,EAAO,IAAI,CAACyB,MACX,gBAAAP;AAAA,YAACQ;AAAA,YAAA;AAAA,cAEC,MAAK;AAAA,cACL,SAAS;AAAA,gBACP,OAAO5B,EAAQ,YAAY2B,CAAK;AAAA,gBAChC,WAAW,MAAMxB,EAAUD,EAAO,OAAO,CAAC2B,MAAMA,MAAMF,CAAK,CAAC;AAAA,cAAA;AAAA,cAG7D,UAAAA;AAAA,YAAA;AAAA,YAPIA;AAAA,UAAA,CASR;AAAA,UACD,gBAAAP;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAOf;AAAA,cACP,UAAU,CAACU,MAAU;AACnB,gBAAAT,EAASS,EAAM,OAAO,KAAK,GAC3BL,EAAc,MAAS;AAAA,cACzB;AAAA,cACA,WAAWI;AAAA,cACX,QAAQF;AAAA,cACR,aAAaV,EAAO,WAAW,IAAIF,EAAQ,mBAAmB;AAAA,cAC9D,UAAUJ;AAAA,cACV,WAAS;AAAA,cACT,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ,EAAA,CACF,EAAA,CACF;AAAA,QACA,gBAAAwB,EAACM,GAAA,EAAM,OAAO1B,EAAQ,WACpB,UAAA,gBAAAoB,EAACU,GAAA,EAAO,OAAOvB,GAAQ,eAAe,CAACM,MAAUL,EAAWK,KAA2B,EAAE,GAAG,UAAUjB,GACnG,UAAAD,EAAgB,IAAI,CAACoC,wBACnBC,GAAA,EAAyB,OAAOD,EAAK,IACnC,YAAK,MAAA,GADSA,EAAK,EAEtB,CACD,GACH,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|