@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,172 @@
|
|
|
1
|
+
import { jsx as r, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as w, Children as S, isValidElement as O, Fragment as _ } from "react";
|
|
3
|
+
import { Select as o } from "@base-ui/react/select";
|
|
4
|
+
import { tv as I } from "tailwind-variants";
|
|
5
|
+
import { cn as d } from "../lib/cn.js";
|
|
6
|
+
import { devWarn as j } from "../lib/dev-warn.js";
|
|
7
|
+
import { Icon as v } from "./Icon.js";
|
|
8
|
+
import { ANCHORED_POPUP_MOTION as A, ANCHORED_POPUP_SURFACE as P } from "./overlay-shell.js";
|
|
9
|
+
import { useUiStrings as z } from "../lib/i18n/provider.js";
|
|
10
|
+
const E = I({
|
|
11
|
+
base: [
|
|
12
|
+
"group/trigger flex w-full min-w-0 cursor-pointer items-center justify-between gap-2",
|
|
13
|
+
"border border-field-border bg-field font-sans text-primary text-left",
|
|
14
|
+
"transition-[var(--tx-colors),box-shadow] duration-(--dur-fast) ease-hover",
|
|
15
|
+
"hover:not-disabled:border-field-border-hover hover:not-disabled:bg-field-hover",
|
|
16
|
+
"focus-visible:border-control focus-visible:shadow-[0_0_0_3px_var(--control-focus-halo)]",
|
|
17
|
+
"data-popup-open:border-control data-popup-open:shadow-[0_0_0_3px_var(--control-focus-halo)]",
|
|
18
|
+
"data-invalid:border-danger",
|
|
19
|
+
"disabled:cursor-not-allowed disabled:opacity-45"
|
|
20
|
+
],
|
|
21
|
+
variants: {
|
|
22
|
+
size: {
|
|
23
|
+
sm: "h-control-sm rounded-md px-3 text-xs",
|
|
24
|
+
md: "h-control-md rounded-md px-3.5 text-sm",
|
|
25
|
+
lg: "h-control-lg rounded-lg px-4 text-md"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: { size: "md" }
|
|
29
|
+
});
|
|
30
|
+
function u(e, t = []) {
|
|
31
|
+
return S.forEach(e, (a) => {
|
|
32
|
+
if (O(a)) {
|
|
33
|
+
if (a.type === U) {
|
|
34
|
+
const n = a.props;
|
|
35
|
+
t.push({ value: n.value, label: n.children });
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (a.type === V) {
|
|
39
|
+
u(a.props.children, t);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
a.type === _ && u(a.props.children, t);
|
|
43
|
+
}
|
|
44
|
+
}), t;
|
|
45
|
+
}
|
|
46
|
+
function R(e) {
|
|
47
|
+
const t = w(e), a = t.current;
|
|
48
|
+
return a.length === e.length && a.every(
|
|
49
|
+
(s, i) => Object.is(s.value, e[i]?.value) && Object.is(s.label, e[i]?.label)
|
|
50
|
+
) || (t.current = e), t.current;
|
|
51
|
+
}
|
|
52
|
+
function C(e, t) {
|
|
53
|
+
return t ? Array.isArray(t) ? t.some((a) => Object.is(a.value, e)) : Object.prototype.hasOwnProperty.call(t, String(e)) : !1;
|
|
54
|
+
}
|
|
55
|
+
function T(e) {
|
|
56
|
+
return Array.isArray(e) ? e : [e];
|
|
57
|
+
}
|
|
58
|
+
function M({
|
|
59
|
+
size: e,
|
|
60
|
+
placeholder: t,
|
|
61
|
+
className: a,
|
|
62
|
+
children: n,
|
|
63
|
+
ref: s,
|
|
64
|
+
items: i,
|
|
65
|
+
"aria-label": y,
|
|
66
|
+
...h
|
|
67
|
+
}) {
|
|
68
|
+
const N = z().select, f = R(u(n)), p = i ?? (f.length > 0 ? f : void 0), g = /* @__PURE__ */ r("span", { className: "text-field-placeholder", children: t ?? N.placeholder });
|
|
69
|
+
return /* @__PURE__ */ c(
|
|
70
|
+
o.Root,
|
|
71
|
+
{
|
|
72
|
+
...h,
|
|
73
|
+
...p ? { items: p } : {},
|
|
74
|
+
children: [
|
|
75
|
+
/* @__PURE__ */ c(o.Trigger, { ref: s, "aria-label": y, className: d(E({ size: e }), a), children: [
|
|
76
|
+
/* @__PURE__ */ r(
|
|
77
|
+
o.Value,
|
|
78
|
+
{
|
|
79
|
+
className: "truncate",
|
|
80
|
+
placeholder: g,
|
|
81
|
+
render: (l, b) => {
|
|
82
|
+
if (b.placeholder) return /* @__PURE__ */ r("span", { ...l });
|
|
83
|
+
if (h.itemToStringLabel) return /* @__PURE__ */ r("span", { ...l });
|
|
84
|
+
const x = T(b.value).filter((m) => !C(m, p));
|
|
85
|
+
return x.length === 0 ? /* @__PURE__ */ r("span", { ...l }) : (j(
|
|
86
|
+
"Select",
|
|
87
|
+
`no item matches ${x.map((m) => JSON.stringify(m)).join(", ")} — the trigger is showing the placeholder rather than painting the raw value into the interface. Either the value is stale, or the items are built in a component this one cannot read, in which case pass \`items\` explicitly.`
|
|
88
|
+
), /* @__PURE__ */ r("span", { ...l, children: g }));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
/* @__PURE__ */ r(o.Icon, { className: "shrink-0 text-tertiary", children: /* @__PURE__ */ r(
|
|
93
|
+
v,
|
|
94
|
+
{
|
|
95
|
+
name: "chevron-down",
|
|
96
|
+
size: "sm",
|
|
97
|
+
className: "transition-[var(--tx-colors),transform,translate,scale,rotate] duration-(--dur-base) ease-snappy group-data-popup-open/trigger:rotate-180"
|
|
98
|
+
}
|
|
99
|
+
) })
|
|
100
|
+
] }),
|
|
101
|
+
/* @__PURE__ */ r(o.Portal, { children: /* @__PURE__ */ r(o.Positioner, { sideOffset: 6, className: "z-(--z-popover) outline-none", children: /* @__PURE__ */ r(
|
|
102
|
+
o.Popup,
|
|
103
|
+
{
|
|
104
|
+
className: d(
|
|
105
|
+
"max-h-[min(24rem,var(--available-height))] min-w-[var(--anchor-width)] overflow-y-auto",
|
|
106
|
+
P,
|
|
107
|
+
"p-1",
|
|
108
|
+
A
|
|
109
|
+
),
|
|
110
|
+
children: /* @__PURE__ */ r(o.List, { children: n })
|
|
111
|
+
}
|
|
112
|
+
) }) })
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
function U({ className: e, children: t, ref: a, ...n }) {
|
|
118
|
+
return /* @__PURE__ */ c(
|
|
119
|
+
o.Item,
|
|
120
|
+
{
|
|
121
|
+
ref: a,
|
|
122
|
+
className: d(
|
|
123
|
+
"dx-tap relative flex cursor-pointer select-none items-center gap-2 rounded-md py-2 pr-2 pl-8",
|
|
124
|
+
"text-sm text-secondary outline-none",
|
|
125
|
+
"transition-[var(--tx-colors)] duration-(--dur-instant)",
|
|
126
|
+
/* `data-highlighted` covers keyboard AND pointer, so the highlight
|
|
127
|
+
never splits into two competing visual states when someone moves the
|
|
128
|
+
mouse mid-keyboard-navigation. */
|
|
129
|
+
"data-highlighted:bg-surface-hover data-highlighted:text-primary",
|
|
130
|
+
/* The chosen option carries a FILL, not just a tick and a tint. A
|
|
131
|
+
colour-only mark is the whole "I selected something and nothing
|
|
132
|
+
happened" complaint. */
|
|
133
|
+
"data-selected:bg-control-subtle data-selected:text-control-text data-selected:font-medium",
|
|
134
|
+
/* Selected AND pointed at is its own fill. Both conditions stacked, so
|
|
135
|
+
it out-specifies the plain highlight above — otherwise moving onto
|
|
136
|
+
the chosen row repaints it with the UNSELECTED hover colour and the
|
|
137
|
+
row reads as deselected for as long as the pointer is on it. */
|
|
138
|
+
"data-selected:data-highlighted:bg-control-subtle-hover",
|
|
139
|
+
"data-disabled:pointer-events-none data-disabled:opacity-45",
|
|
140
|
+
e
|
|
141
|
+
),
|
|
142
|
+
...n,
|
|
143
|
+
children: [
|
|
144
|
+
/* @__PURE__ */ r(o.ItemIndicator, { className: "absolute left-2 grid place-items-center", children: /* @__PURE__ */ r(
|
|
145
|
+
v,
|
|
146
|
+
{
|
|
147
|
+
name: "check",
|
|
148
|
+
size: "sm",
|
|
149
|
+
className: "animate-scale-in text-control-text"
|
|
150
|
+
}
|
|
151
|
+
) }),
|
|
152
|
+
/* @__PURE__ */ r(o.ItemText, { className: "truncate", children: t })
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
function V({ label: e, children: t }) {
|
|
158
|
+
return /* @__PURE__ */ c(o.Group, { children: [
|
|
159
|
+
e && /* @__PURE__ */ r(o.GroupLabel, { className: "px-2 py-1.5 text-2xs font-semibold tracking-wide text-tertiary uppercase", children: e }),
|
|
160
|
+
t
|
|
161
|
+
] });
|
|
162
|
+
}
|
|
163
|
+
function W({ className: e }) {
|
|
164
|
+
return /* @__PURE__ */ r(o.Separator, { className: d("my-1 h-px bg-border-subtle", e) });
|
|
165
|
+
}
|
|
166
|
+
export {
|
|
167
|
+
M as Select,
|
|
168
|
+
V as SelectGroup,
|
|
169
|
+
U as SelectItem,
|
|
170
|
+
W as SelectSeparator
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../src/components/Select.tsx"],"sourcesContent":["import { Children, Fragment, isValidElement, useRef, type ReactNode, type Ref } from \"react\";\nimport { Select as BaseSelect } from \"@base-ui/react/select\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../lib/cn\";\nimport { useUiStrings } from \"../lib/i18n\";\nimport { devWarn } from \"../lib/dev-warn\";\nimport { Icon } from \"./Icon\";\nimport { ANCHORED_POPUP_MOTION, ANCHORED_POPUP_SURFACE } from \"./overlay-shell\";\n\n/* ----------------------------------------------------------------------------\n A SELECT'S MOTION HAS TO DO ONE JOB: SHOW WHERE THE LIST CAME FROM.\n\n The popup scales in from the trigger's edge (`--transform-origin`, supplied\n by Base UI's positioner and flipped automatically when the menu opens\n upward). Scaling from the centre — the default if you do nothing — makes the\n list appear to arrive from nowhere, and on a flipped menu it actively points\n at the wrong place.\n\n Exit is faster than entry and does NOT scale back down: a list you have\n dismissed should get out of the way, and re-animating its geometry on the\n way out makes every dismissal feel like an undo.\n -------------------------------------------------------------------------- */\n\nconst trigger = tv({\n base: [\n \"group/trigger flex w-full min-w-0 cursor-pointer items-center justify-between gap-2\",\n \"border border-field-border bg-field font-sans text-primary text-left\",\n \"transition-[var(--tx-colors),box-shadow] duration-(--dur-fast) ease-hover\",\n \"hover:not-disabled:border-field-border-hover hover:not-disabled:bg-field-hover\",\n \"focus-visible:border-control focus-visible:shadow-[0_0_0_3px_var(--control-focus-halo)]\",\n \"data-popup-open:border-control data-popup-open:shadow-[0_0_0_3px_var(--control-focus-halo)]\",\n \"data-invalid:border-danger\",\n \"disabled:cursor-not-allowed disabled:opacity-45\",\n ],\n variants: {\n size: {\n sm: \"h-control-sm rounded-md px-3 text-xs\",\n md: \"h-control-md rounded-md px-3.5 text-sm\",\n lg: \"h-control-lg rounded-lg px-4 text-md\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\n/* ----------------------------------------------------------------------------\n THE CLOSED TRIGGER SHOWS THE LABEL, AND THAT TAKES READING THE CHILDREN.\n\n Base UI resolves the trigger's text from `Select.Root`'s `items` map (or\n `itemToStringLabel`), and falls back to `String(value)` when it has neither.\n The items live in the POPUP, which is portalled and unmounted while the\n select is closed — so nothing a `SelectItem` registers at render time can\n still be there when the trigger needs it. There is no runtime registry that\n survives the close; the only place the pairing exists at all times is the\n `children` element tree the consumer handed us.\n\n So the pairing is READ OFF THE ELEMENTS rather than collected at mount.\n `<SelectItem value={id}>{label}</SelectItem>` — the way every consumer of\n this component already writes it — becomes `{value: id, label}`, and that is\n handed to Base UI as `items` so its own resolution has something to resolve\n against.\n\n AND THE FALLBACK IS GONE. Base UI renders `String(value)` for a value it\n cannot resolve, and 2.9.0 kept that, calling it \"the honest rendering of the\n value is not in the list\". It is not honest, it is the reported bug with a\n smaller blast radius: a key leaking into the interface where a human-readable\n label belongs is the exact complaint, and preserving it as a fallback path\n preserved the defect for precisely the case nobody tested.\n\n AN UNMATCHED VALUE IS A PROGRAMMING ERROR. There is no state of the world in\n which showing a user `AT-CW-GH` is the right answer — the value is stale, or\n the list has not loaded, or the items were built somewhere this tree cannot\n see, and every one of those is a bug in the consumer's data, not a rendering\n choice. So it renders the PLACEHOLDER, which is the honest thing: nothing\n valid is selected. And it says so, once, in development, naming the value and\n the component — because a placeholder alone is quiet, and quiet is how the\n first version of this shipped.\n\n `render` RATHER THAN A `children` FUNCTION, and the distinction is the whole\n history of this component. A `children` function takes label resolution off\n Base UI entirely — which is what made `items`, `itemToStringLabel` and\n `{value,label}` items all do nothing, and is the defect described below.\n `render` receives Base UI's OWN resolved output plus its state, so the\n matched case is passed through untouched and only the unmatched one is\n replaced. What counts as unmatched is decided against the SAME item map Base\n UI was handed, not inferred from the string it produced.\n\n A CONSUMER'S `itemToStringLabel` IS LEFT ALONE. That prop is the consumer\n saying \"I will turn any value into a label\", including values not in the\n list, so there is no such thing as unmatched under it and nothing here\n second-guesses it.\n\n THE DEFECT THIS REPLACES was a `children` FUNCTION on `Select.Value` that\n returned `String(value)`. A children function short-circuits Base UI's whole\n resolution path — so passing `items`, or `itemToStringLabel`, or an item\n whose value was `{value, label}`, ALL did nothing, and the trigger showed a\n raw id (`AT-CW-GH` where \"Group home — child welfare\" belonged) no matter\n what the consumer did about it. The placeholder is now `Select.Value`'s own\n `placeholder` prop, which is emitted on exactly the condition the function\n used to test by hand — null, undefined, or the empty string.\n\n WHAT IT CANNOT SEE, stated so nobody infers otherwise: items rendered from a\n consumer's OWN wrapper component are not in this tree — the wrapper has not\n run yet. Those now read as unmatched, which shows the placeholder and warns\n with the remedy in it. Pass `items` explicitly for that case; an explicit\n `items` is never overridden here.\n -------------------------------------------------------------------------- */\n\ninterface DerivedItem {\n value: unknown;\n label: ReactNode;\n}\n\n/**\n * Every `<SelectItem>` in a children tree, in order, with its label.\n *\n * Descends through `SelectGroup` and fragments because both are OURS and both\n * are structural — a grouped list is the same list with headings in it, and a\n * consumer who wrote `<>…</>` around two items has not changed what the list\n * holds. Nothing else is descended into; see the banner.\n */\nfunction collectItems(node: ReactNode, out: DerivedItem[] = []): DerivedItem[] {\n Children.forEach(node, (child) => {\n if (!isValidElement(child)) return;\n if (child.type === SelectItem) {\n const props = child.props as SelectItemProps;\n out.push({ value: props.value, label: props.children });\n return;\n }\n if (child.type === SelectGroup) {\n collectItems((child.props as SelectGroupProps).children, out);\n return;\n }\n if (child.type === Fragment) {\n collectItems((child.props as { children?: ReactNode }).children, out);\n }\n });\n return out;\n}\n\n/**\n * Hold the array's IDENTITY still while its contents are unchanged.\n *\n * `items` is synced into Base UI's store on identity, and this array is rebuilt\n * on every render of the consumer's own component — which is every render, for\n * anyone writing the items inline. A fresh identity each time makes the store\n * notify, and every `Select.Value` on the page re-render, for a list that did\n * not change. Comparing pairwise is cheaper than the render it avoids.\n */\nfunction useStableItems(next: DerivedItem[]): DerivedItem[] {\n const held = useRef(next);\n const previous = held.current;\n const same =\n previous.length === next.length &&\n previous.every(\n (item, i) => Object.is(item.value, next[i]?.value) && Object.is(item.label, next[i]?.label),\n );\n if (!same) held.current = next;\n return held.current;\n}\n\n/**\n * Is `value` one the list can name?\n *\n * Reads the SAME map Base UI was handed, in both shapes it accepts: an array of\n * `{value,label}` pairs, and a `Record<string, ReactNode>` whose keys are the\n * stringified values. Deciding this from the map rather than from the rendered\n * output is what keeps it exact — comparing Base UI's output to `String(value)`\n * would call a legitimate label that happens to equal its own key a miss.\n *\n * `Object.is` and not `===`, so a `NaN` value matches itself and `-0` does not\n * quietly match `0`.\n */\nfunction isKnown(value: unknown, items: BaseSelect.Root.Props<never, boolean>[\"items\"]): boolean {\n if (!items) return false;\n if (Array.isArray(items)) {\n return items.some((item) => Object.is((item as { value: unknown }).value, value));\n }\n return Object.prototype.hasOwnProperty.call(items, String(value));\n}\n\n/**\n * Every value the trigger is being asked to name — one, or all of them when the\n * select is `multiple`.\n *\n * A multi-select with one stale entry is the same defect as a single one with a\n * stale value, so ANY unmatched member makes the whole trigger unmatched. The\n * alternative is a trigger reading \"Group home, AT-CW-GH\", which is the bug\n * wearing a comma.\n */\nfunction selectedValues(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [value];\n}\n\nexport interface SelectProps<Value>\n extends Omit<BaseSelect.Root.Props<Value, boolean>, \"children\">,\n VariantProps<typeof trigger> {\n placeholder?: string;\n className?: string;\n /** Accessible name for the trigger when no visible label is present. */\n \"aria-label\"?: string;\n children: ReactNode;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function Select<Value>({\n size,\n placeholder,\n className,\n children,\n ref,\n items,\n \"aria-label\": ariaLabel,\n ...props\n}: SelectProps<Value>) {\n const strings = useUiStrings().select;\n const derived = useStableItems(collectItems(children));\n /* An explicit `items` always wins: a consumer who states the map is telling\n us about entries this tree cannot see. */\n const resolved = items ?? (derived.length > 0 ? derived : undefined);\n const placeholderNode = <span className=\"text-field-placeholder\">{placeholder ?? strings.placeholder}</span>;\n\n return (\n <BaseSelect.Root\n {...(props as BaseSelect.Root.Props<Value, boolean>)}\n {...(resolved ? { items: resolved as BaseSelect.Root.Props<Value, boolean>[\"items\"] } : {})}\n >\n {/* aria-label goes on the TRIGGER, not the root. The root renders no\n element a screen reader reaches, so labelling it names nothing — a\n defect this component actually shipped once. */}\n <BaseSelect.Trigger ref={ref} aria-label={ariaLabel} className={cn(trigger({ size }), className)}>\n {/* NO `children` FUNCTION HERE — see the banner above `collectItems`.\n One would take the label resolution back off Base UI, which is the\n whole defect. The placeholder is a prop precisely so it can be\n declared without doing that, and `render` below sees Base UI's own\n resolved output rather than replacing it. */}\n <BaseSelect.Value\n className=\"truncate\"\n placeholder={placeholderNode}\n render={(valueProps, state) => {\n /* Base UI is already showing the placeholder: nothing is selected,\n which is a state and not a mistake. */\n if (state.placeholder) return <span {...valueProps} />;\n /* The consumer owns resolution; there is no unmatched under it. */\n if (props.itemToStringLabel) return <span {...valueProps} />;\n\n const missing = selectedValues(state.value).filter((v) => !isKnown(v, resolved));\n if (missing.length === 0) return <span {...valueProps} />;\n\n devWarn(\n \"Select\",\n `no item matches ${missing.map((v) => JSON.stringify(v)).join(\", \")} — ` +\n \"the trigger is showing the placeholder rather than painting the raw value \" +\n \"into the interface. Either the value is stale, or the items are built in a \" +\n \"component this one cannot read, in which case pass `items` explicitly.\",\n );\n return <span {...valueProps}>{placeholderNode}</span>;\n }}\n />\n <BaseSelect.Icon className=\"shrink-0 text-tertiary\">\n <Icon\n name=\"chevron-down\"\n size=\"sm\"\n /* Rotating rather than swapping to a chevron-up keeps ONE object on\n screen through the state change. A swap is two icons and reads as\n a flicker at this size. */\n className=\"transition-[var(--tx-colors),transform,translate,scale,rotate] duration-(--dur-base) ease-snappy group-data-popup-open/trigger:rotate-180\"\n />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n\n <BaseSelect.Portal>\n <BaseSelect.Positioner sideOffset={6} className=\"z-(--z-popover) outline-none\">\n <BaseSelect.Popup\n className={cn(\n \"max-h-[min(24rem,var(--available-height))] min-w-[var(--anchor-width)] overflow-y-auto\",\n ANCHORED_POPUP_SURFACE,\n \"p-1\",\n ANCHORED_POPUP_MOTION,\n )}\n >\n <BaseSelect.List>{children}</BaseSelect.List>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n}\n\nexport interface SelectItemProps extends Omit<BaseSelect.Item.Props, \"className\"> {\n className?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function SelectItem({ className, children, ref, ...props }: SelectItemProps) {\n return (\n <BaseSelect.Item\n ref={ref}\n className={cn(\n \"dx-tap relative flex cursor-pointer select-none items-center gap-2 rounded-md py-2 pr-2 pl-8\",\n \"text-sm text-secondary outline-none\",\n \"transition-[var(--tx-colors)] duration-(--dur-instant)\",\n /* `data-highlighted` covers keyboard AND pointer, so the highlight\n never splits into two competing visual states when someone moves the\n mouse mid-keyboard-navigation. */\n \"data-highlighted:bg-surface-hover data-highlighted:text-primary\",\n /* The chosen option carries a FILL, not just a tick and a tint. A\n colour-only mark is the whole \"I selected something and nothing\n happened\" complaint. */\n \"data-selected:bg-control-subtle data-selected:text-control-text data-selected:font-medium\",\n /* Selected AND pointed at is its own fill. Both conditions stacked, so\n it out-specifies the plain highlight above — otherwise moving onto\n the chosen row repaints it with the UNSELECTED hover colour and the\n row reads as deselected for as long as the pointer is on it. */\n \"data-selected:data-highlighted:bg-control-subtle-hover\",\n \"data-disabled:pointer-events-none data-disabled:opacity-45\",\n className,\n )}\n {...props}\n >\n <BaseSelect.ItemIndicator className=\"absolute left-2 grid place-items-center\">\n {/* The tick scales in rather than appearing, so moving the selection\n down a list reads as the mark travelling with you. */}\n <Icon\n name=\"check\"\n size=\"sm\"\n className=\"animate-scale-in text-control-text\"\n />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText className=\"truncate\">{children}</BaseSelect.ItemText>\n </BaseSelect.Item>\n );\n}\n\nexport interface SelectGroupProps {\n /**\n * The group's heading.\n *\n * A prop rather than a `<SelectGroupLabel>` child, because the label is only\n * valid INSIDE a group — as a separate exported component it can be placed\n * anywhere and throws at render. Making it a prop makes the misuse\n * unrepresentable, which is how a blank page happened here once.\n */\n label?: ReactNode;\n children: ReactNode;\n}\n\nexport function SelectGroup({ label, children }: SelectGroupProps) {\n return (\n <BaseSelect.Group>\n {label && (\n <BaseSelect.GroupLabel className=\"px-2 py-1.5 text-2xs font-semibold tracking-wide text-tertiary uppercase\">\n {label}\n </BaseSelect.GroupLabel>\n )}\n {children}\n </BaseSelect.Group>\n );\n}\n\nexport function SelectSeparator({ className }: { className?: string }) {\n return <BaseSelect.Separator className={cn(\"my-1 h-px bg-border-subtle\", className)} />;\n}\n"],"names":["trigger","tv","collectItems","node","out","Children","child","isValidElement","SelectItem","props","SelectGroup","Fragment","useStableItems","next","held","useRef","previous","item","isKnown","value","items","selectedValues","Select","size","placeholder","className","children","ref","ariaLabel","strings","useUiStrings","derived","resolved","placeholderNode","jsx","jsxs","BaseSelect","cn","valueProps","state","missing","v","devWarn","Icon","ANCHORED_POPUP_SURFACE","ANCHORED_POPUP_MOTION","label","SelectSeparator"],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { jsxs as x, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as y, useRef as D } from "react";
|
|
3
|
+
import { cn as l } from "../lib/cn.js";
|
|
4
|
+
function M(u) {
|
|
5
|
+
const r = [];
|
|
6
|
+
for (const t of u)
|
|
7
|
+
r.includes(t.actor) || r.push(t.actor), t.target && !r.includes(t.target) && r.push(t.target);
|
|
8
|
+
return r;
|
|
9
|
+
}
|
|
10
|
+
function $({ label: u, steps: r, selectedIndex: t, onSelectIndex: d, className: v }) {
|
|
11
|
+
const i = y(() => M(r), [r]), p = y(() => new Map(i.map((e, a) => [e, a])), [i]), h = D([]), f = r[t], g = `repeat(${Math.max(i.length, 1)}, minmax(7rem, 1fr))`;
|
|
12
|
+
function c(e) {
|
|
13
|
+
d(e), h.current[e]?.focus();
|
|
14
|
+
}
|
|
15
|
+
function w(e) {
|
|
16
|
+
switch (e.key) {
|
|
17
|
+
case "ArrowDown":
|
|
18
|
+
e.preventDefault(), c(Math.min(r.length - 1, t + 1));
|
|
19
|
+
return;
|
|
20
|
+
case "ArrowUp":
|
|
21
|
+
e.preventDefault(), c(Math.max(0, t - 1));
|
|
22
|
+
return;
|
|
23
|
+
case "Home":
|
|
24
|
+
e.preventDefault(), c(0);
|
|
25
|
+
return;
|
|
26
|
+
case "End":
|
|
27
|
+
e.preventDefault(), c(r.length - 1);
|
|
28
|
+
return;
|
|
29
|
+
default:
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return /* @__PURE__ */ x("div", { className: l("flex w-full min-w-min flex-col", v), children: [
|
|
34
|
+
/* @__PURE__ */ n("div", { className: "grid border-b border-border", style: { gridTemplateColumns: g }, children: i.map((e) => {
|
|
35
|
+
const a = !!f && (f.actor === e || f.target === e);
|
|
36
|
+
return /* @__PURE__ */ n(
|
|
37
|
+
"div",
|
|
38
|
+
{
|
|
39
|
+
className: l(
|
|
40
|
+
"border-l border-border px-3 py-2 text-center text-sm font-semibold first:border-l-0",
|
|
41
|
+
a && "bg-surface-raised text-accent"
|
|
42
|
+
),
|
|
43
|
+
children: e
|
|
44
|
+
},
|
|
45
|
+
e
|
|
46
|
+
);
|
|
47
|
+
}) }),
|
|
48
|
+
/* @__PURE__ */ n("div", { role: "listbox", "aria-label": u, className: "flex flex-col", onKeyDown: w, children: r.map((e, a) => {
|
|
49
|
+
const o = p.get(e.actor) ?? 0, s = e.target ? p.get(e.target) ?? o : o, m = a === t, b = o === s;
|
|
50
|
+
return /* @__PURE__ */ n(
|
|
51
|
+
"button",
|
|
52
|
+
{
|
|
53
|
+
ref: (N) => {
|
|
54
|
+
h.current[a] = N;
|
|
55
|
+
},
|
|
56
|
+
type: "button",
|
|
57
|
+
role: "option",
|
|
58
|
+
"aria-selected": m,
|
|
59
|
+
tabIndex: m ? 0 : -1,
|
|
60
|
+
className: l(
|
|
61
|
+
"grid min-h-11 w-full cursor-pointer border-b border-border bg-transparent px-0 py-1.5 font-inherit text-inherit last:border-b-0",
|
|
62
|
+
"focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent",
|
|
63
|
+
m && "bg-surface-raised"
|
|
64
|
+
),
|
|
65
|
+
style: { gridTemplateColumns: g },
|
|
66
|
+
"data-self": b ? "true" : void 0,
|
|
67
|
+
onClick: () => d(a),
|
|
68
|
+
onFocus: () => d(a),
|
|
69
|
+
children: /* @__PURE__ */ x(
|
|
70
|
+
"span",
|
|
71
|
+
{
|
|
72
|
+
className: "relative flex items-center justify-center px-3",
|
|
73
|
+
style: { gridColumn: `${Math.min(o, s) + 1} / ${Math.max(o, s) + 2}` },
|
|
74
|
+
children: [
|
|
75
|
+
/* @__PURE__ */ n(
|
|
76
|
+
"span",
|
|
77
|
+
{
|
|
78
|
+
"aria-hidden": "true",
|
|
79
|
+
className: l(
|
|
80
|
+
"absolute inset-x-2 top-1/2 border-t-2 border-secondary",
|
|
81
|
+
b && "border-dashed"
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
),
|
|
85
|
+
!b && /* @__PURE__ */ n(
|
|
86
|
+
"span",
|
|
87
|
+
{
|
|
88
|
+
"aria-hidden": "true",
|
|
89
|
+
"data-arrowhead": s > o ? "right" : "left",
|
|
90
|
+
className: l(
|
|
91
|
+
"absolute top-1/2 size-0 -translate-y-1/2 border-y-[5px] border-y-transparent",
|
|
92
|
+
s > o ? "right-1.5 border-l-[7px] border-l-secondary" : "left-1.5 border-r-[7px] border-r-secondary"
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
),
|
|
96
|
+
/* @__PURE__ */ n("span", { className: "relative max-w-full bg-surface px-1.5 text-center text-sm leading-snug text-balance", children: e.action })
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
},
|
|
101
|
+
a
|
|
102
|
+
);
|
|
103
|
+
}) })
|
|
104
|
+
] });
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
$ as SequenceDiagram
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=SequenceDiagram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SequenceDiagram.js","sources":["../../src/components/SequenceDiagram.tsx"],"sourcesContent":["import { useMemo, useRef, type KeyboardEvent } from \"react\";\nimport { cn } from \"../lib/cn\";\n\n/* ----------------------------------------------------------------------------\n SEQUENCEDIAGRAM — actor lanes with ordered, directional messages between\n them (DX-3373, moved here from danxbot-docs per R-4: a missing primitive\n goes INTO the library rather than staying a per-app one-off, the same path\n `NodeCanvas` took generalising out of the docs app in DX-3344).\n\n A sequence diagram is not a node-edge graph — `NodeCanvas`'s dagre layout\n has no notion of ordered lanes with directional messages between them, so\n this stays its own small, dependency-free component rather than being\n forced through NodeCanvas (a state machine, by contrast, genuinely IS a\n node-edge graph — that shape uses NodeCanvas directly, no diagram of its\n own needed).\n\n ACCESSIBLE: KEYBOARD STEP-THROUGH PLUS A TEXT EQUIVALENT. The step list is\n a standard single-select listbox (`role=\"listbox\"`/`role=\"option\"`, roving\n tabindex, Up/Down/Home/End) — each option's own text label (\"Actor does\n action to Target\") already IS the text equivalent of the arrow it draws,\n so a screen-reader user reading the listbox loses nothing a sighted user\n sees in the arrow.\n -------------------------------------------------------------------------- */\n\nexport interface SequenceStep {\n actor: string;\n action: string;\n target?: string;\n notes?: string;\n}\n\nexport interface SequenceDiagramProps {\n /** Accessible name for the whole step list — see `NodeCanvas`'s own `label` for why this is required, not optional. */\n label: string;\n steps: readonly SequenceStep[];\n selectedIndex: number;\n onSelectIndex: (index: number) => void;\n className?: string;\n}\n\n/** First-appearance order of every actor AND target — the diagram's lanes. */\nfunction collectActors(steps: readonly SequenceStep[]): string[] {\n const seen: string[] = [];\n for (const step of steps) {\n if (!seen.includes(step.actor)) seen.push(step.actor);\n if (step.target && !seen.includes(step.target)) seen.push(step.target);\n }\n return seen;\n}\n\nexport function SequenceDiagram({ label, steps, selectedIndex, onSelectIndex, className }: SequenceDiagramProps) {\n const actors = useMemo(() => collectActors(steps), [steps]);\n const laneIndex = useMemo(() => new Map(actors.map((actor, index) => [actor, index])), [actors]);\n const optionRefs = useRef<(HTMLButtonElement | null)[]>([]);\n const activeStep = steps[selectedIndex] as SequenceStep | undefined;\n /* DX-3451: lanes share the container's width and message labels WRAP.\n A `max-content` diagram with unwrapped labels grew as wide as its\n longest sentence, so a five-lane story in a page column was mostly\n scrolled out of sight — lanes and labels both cut off at the edge. Now\n the diagram fills its container and only scrolls when even the 7rem lane\n minimum does not fit. */\n const columns = `repeat(${Math.max(actors.length, 1)}, minmax(7rem, 1fr))`;\n\n function selectAndFocus(index: number) {\n onSelectIndex(index);\n optionRefs.current[index]?.focus();\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n selectAndFocus(Math.min(steps.length - 1, selectedIndex + 1));\n return;\n case \"ArrowUp\":\n event.preventDefault();\n selectAndFocus(Math.max(0, selectedIndex - 1));\n return;\n case \"Home\":\n event.preventDefault();\n selectAndFocus(0);\n return;\n case \"End\":\n event.preventDefault();\n selectAndFocus(steps.length - 1);\n return;\n default:\n return;\n }\n }\n\n return (\n <div className={cn(\"flex w-full min-w-min flex-col\", className)}>\n <div className=\"grid border-b border-border\" style={{ gridTemplateColumns: columns }}>\n {actors.map((actor) => {\n const highlighted = !!activeStep && (activeStep.actor === actor || activeStep.target === actor);\n return (\n <div\n key={actor}\n className={cn(\n \"border-l border-border px-3 py-2 text-center text-sm font-semibold first:border-l-0\",\n highlighted && \"bg-surface-raised text-accent\",\n )}\n >\n {actor}\n </div>\n );\n })}\n </div>\n\n <div role=\"listbox\" aria-label={label} className=\"flex flex-col\" onKeyDown={handleKeyDown}>\n {steps.map((step, index) => {\n const fromIndex = laneIndex.get(step.actor) ?? 0;\n const toIndex = step.target ? (laneIndex.get(step.target) ?? fromIndex) : fromIndex;\n const selected = index === selectedIndex;\n const isSelf = fromIndex === toIndex;\n return (\n <button\n key={index}\n ref={(el) => {\n optionRefs.current[index] = el;\n }}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n tabIndex={selected ? 0 : -1}\n className={cn(\n \"grid min-h-11 w-full cursor-pointer border-b border-border bg-transparent px-0 py-1.5 font-inherit text-inherit last:border-b-0\",\n \"focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent\",\n selected && \"bg-surface-raised\",\n )}\n style={{ gridTemplateColumns: columns }}\n data-self={isSelf ? \"true\" : undefined}\n onClick={() => onSelectIndex(index)}\n onFocus={() => onSelectIndex(index)}\n >\n <span\n className=\"relative flex items-center justify-center px-3\"\n style={{ gridColumn: `${Math.min(fromIndex, toIndex) + 1} / ${Math.max(fromIndex, toIndex) + 2}` }}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute inset-x-2 top-1/2 border-t-2 border-secondary\",\n isSelf && \"border-dashed\",\n )}\n />\n {/* DX-3451: an arrowhead at the RECEIVING lane, so \"who did\n what to whom\" reads from the diagram alone. */}\n {!isSelf && (\n <span\n aria-hidden=\"true\"\n data-arrowhead={toIndex > fromIndex ? \"right\" : \"left\"}\n className={cn(\n \"absolute top-1/2 size-0 -translate-y-1/2 border-y-[5px] border-y-transparent\",\n toIndex > fromIndex ? \"right-1.5 border-l-[7px] border-l-secondary\" : \"left-1.5 border-r-[7px] border-r-secondary\",\n )}\n />\n )}\n <span className=\"relative max-w-full bg-surface px-1.5 text-center text-sm leading-snug text-balance\">{step.action}</span>\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n"],"names":["collectActors","steps","seen","step","SequenceDiagram","label","selectedIndex","onSelectIndex","className","actors","useMemo","laneIndex","actor","index","optionRefs","useRef","activeStep","columns","selectAndFocus","handleKeyDown","event","cn","jsx","highlighted","fromIndex","toIndex","selected","isSelf","el","jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsxs as a, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useId as y } from "react";
|
|
3
|
+
import { tv as w } from "tailwind-variants";
|
|
4
|
+
import { cn as O } from "../lib/cn.js";
|
|
5
|
+
import { Icon as p } from "./Icon.js";
|
|
6
|
+
import { Collapsible as v } from "./Surface.js";
|
|
7
|
+
import { Card as k, CardHeader as C, CardFooter as R } from "./Card.js";
|
|
8
|
+
import { useUiStrings as j } from "../lib/i18n/provider.js";
|
|
9
|
+
const h = w({
|
|
10
|
+
slots: {
|
|
11
|
+
root: "flex min-w-0 flex-col gap-3",
|
|
12
|
+
text: "flex min-w-0 flex-1 flex-col gap-1.5",
|
|
13
|
+
label: "font-sans text-sm font-medium text-primary",
|
|
14
|
+
description: "text-sm text-secondary text-pretty",
|
|
15
|
+
effect: "flex items-start gap-1.5 text-2xs text-tertiary",
|
|
16
|
+
controlWrap: "flex w-full min-w-0 flex-wrap items-center gap-3",
|
|
17
|
+
readOnlyBlock: "flex flex-col gap-1",
|
|
18
|
+
readOnlyValue: "font-mono text-sm text-secondary break-words",
|
|
19
|
+
readOnlyReason: "flex items-start gap-1.5 text-2xs text-tertiary",
|
|
20
|
+
/* DX-5125: every rendered DOM child gets the group's rhythm as padding (`py-4`,
|
|
21
|
+
a hairline above all but the first, the padding cancelled at the two
|
|
22
|
+
ends), EXCEPT a boxed `Callout`. It owns its padding (`p-3`), which
|
|
23
|
+
`[&>*]:py-4` used to overwrite: it read as having no top padding as the
|
|
24
|
+
first child. A Callout is spaced with vertical margins instead, so its own
|
|
25
|
+
box is left alone. Selected by DOM and `data-slot`, never by React child,
|
|
26
|
+
so a component rendering a fragment of rows is still rows here. */
|
|
27
|
+
rows: [
|
|
28
|
+
"flex flex-col",
|
|
29
|
+
"divide-y divide-border-subtle",
|
|
30
|
+
"[&>:not([data-slot=callout])]:py-4 [&>:not([data-slot=callout]):first-child]:pt-0 [&>:not([data-slot=callout]):last-child]:pb-0",
|
|
31
|
+
"[&>[data-slot=callout]]:my-4 [&>[data-slot=callout]:first-child]:mt-0 [&>[data-slot=callout]:last-child]:mb-0"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
variants: {
|
|
35
|
+
layout: {
|
|
36
|
+
inline: {
|
|
37
|
+
root: "sm:flex-row sm:items-start sm:justify-between",
|
|
38
|
+
/* `sm:justify-end` is what puts the control at the row's trailing edge
|
|
39
|
+
once there is room beside the text column, rather than merely below
|
|
40
|
+
it. `sm:w-auto` lets it stop claiming the full row once it no longer
|
|
41
|
+
has to. */
|
|
42
|
+
controlWrap: "sm:w-auto sm:shrink-0 sm:justify-end sm:pl-4",
|
|
43
|
+
readOnlyBlock: "items-end text-right"
|
|
44
|
+
},
|
|
45
|
+
/* DX-4968: label and description on top, the control under them across the whole row at every width. */
|
|
46
|
+
stacked: { readOnlyBlock: "items-start text-left" }
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
defaultVariants: { layout: "inline" }
|
|
50
|
+
});
|
|
51
|
+
function F(e) {
|
|
52
|
+
const {
|
|
53
|
+
label: o,
|
|
54
|
+
description: s,
|
|
55
|
+
details: n,
|
|
56
|
+
detailsLabel: r,
|
|
57
|
+
detailsDefaultOpen: d,
|
|
58
|
+
effect: i,
|
|
59
|
+
status: c,
|
|
60
|
+
layout: m = "inline",
|
|
61
|
+
className: g
|
|
62
|
+
} = e, l = h({ layout: m }), b = j().settingRow, f = y(), x = y(), u = s != null, N = e.readOnly ? null : typeof e.control == "function" ? e.control({
|
|
63
|
+
"aria-labelledby": f,
|
|
64
|
+
"aria-describedby": u ? x : void 0
|
|
65
|
+
}) : e.control;
|
|
66
|
+
return /* @__PURE__ */ a("div", { className: O(l.root(), g), "data-slot": "setting-row", "data-layout": m, children: [
|
|
67
|
+
/* @__PURE__ */ a("div", { className: l.text(), children: [
|
|
68
|
+
/* @__PURE__ */ t("span", { id: f, className: l.label(), children: o }),
|
|
69
|
+
u && /* @__PURE__ */ t("p", { id: x, className: l.description(), children: s }),
|
|
70
|
+
i && /* @__PURE__ */ a("p", { className: l.effect(), children: [
|
|
71
|
+
/* @__PURE__ */ t(p, { name: "info", size: "xs", className: "mt-px shrink-0", "aria-hidden": !0 }),
|
|
72
|
+
/* @__PURE__ */ t("span", { children: i })
|
|
73
|
+
] }),
|
|
74
|
+
n && /* @__PURE__ */ t(
|
|
75
|
+
v,
|
|
76
|
+
{
|
|
77
|
+
trigger: r ?? b.detailsLabel,
|
|
78
|
+
defaultOpen: d,
|
|
79
|
+
triggerClassName: "text-2xs",
|
|
80
|
+
children: /* @__PURE__ */ t("div", { className: "text-sm text-secondary text-pretty", children: n })
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
] }),
|
|
84
|
+
/* @__PURE__ */ a("div", { className: l.controlWrap(), children: [
|
|
85
|
+
c,
|
|
86
|
+
e.readOnly ? (
|
|
87
|
+
/* No `role`/`aria-*` layered on here on purpose — `aria-readonly`
|
|
88
|
+
has no defined mapping on a generic container and is not a
|
|
89
|
+
reliable channel. Real text is: the reason and the value are
|
|
90
|
+
plain content, so every screen reader announces them the same
|
|
91
|
+
way it announces anything else on the page, with no assistive
|
|
92
|
+
-tech-specific behaviour to get wrong or fail to verify. */
|
|
93
|
+
/* @__PURE__ */ a("div", { className: l.readOnlyBlock(), children: [
|
|
94
|
+
e.readOnly.value != null && /* @__PURE__ */ t("span", { className: l.readOnlyValue(), children: e.readOnly.value }),
|
|
95
|
+
/* @__PURE__ */ a("span", { className: l.readOnlyReason(), children: [
|
|
96
|
+
/* @__PURE__ */ t(p, { name: "lock", size: "xs", className: "mt-px shrink-0", "aria-hidden": !0 }),
|
|
97
|
+
/* @__PURE__ */ t("span", { children: e.readOnly.reason })
|
|
98
|
+
] })
|
|
99
|
+
] })
|
|
100
|
+
) : N
|
|
101
|
+
] })
|
|
102
|
+
] });
|
|
103
|
+
}
|
|
104
|
+
function G({
|
|
105
|
+
id: e,
|
|
106
|
+
title: o,
|
|
107
|
+
description: s,
|
|
108
|
+
titleAs: n,
|
|
109
|
+
footer: r,
|
|
110
|
+
className: d,
|
|
111
|
+
children: i
|
|
112
|
+
}) {
|
|
113
|
+
const c = h();
|
|
114
|
+
return /* @__PURE__ */ a(k, { id: e, className: d, children: [
|
|
115
|
+
/* @__PURE__ */ t(C, { title: o, description: s, titleAs: n }),
|
|
116
|
+
/* @__PURE__ */ t("div", { className: c.rows(), children: i }),
|
|
117
|
+
r && /* @__PURE__ */ t(R, { children: r })
|
|
118
|
+
] });
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
G as SettingGroup,
|
|
122
|
+
F as SettingRow
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=SettingRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingRow.js","sources":["../../src/components/SettingRow.tsx"],"sourcesContent":["import { useId, type ReactNode } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { cn } from \"../lib/cn\";\r\nimport { useUiStrings } from \"../lib/i18n\";\r\nimport { Icon } from \"./Icon\";\r\nimport { Collapsible } from \"./Surface\";\r\nimport { Card, CardHeader, CardFooter, type CardHeaderProps } from \"./Card\";\r\n\r\n/* ============================================================================\r\n SETTING ROW / SETTING GROUP — the workhorse layout of a settings page.\r\n\r\n THE DESCRIPTION IS NOT DECORATION. A control with no explanation of what it\r\n does is a control most people leave alone, because touching an unknown\r\n switch is how you break something. So `description` is a first-class, always\r\n -visible slot here — not an afterthought bolted on with a tooltip — and it\r\n is programmatically wired to the control, not merely placed near it. See\r\n `SettingRowControlRenderProps` below for exactly how, and why that is a\r\n render prop rather than automatic.\r\n\r\n PROGRESSIVE DISCLOSURE, NOT A TOOLTIP. A short description is always on\r\n screen; a longer \"why this matters\" is reachable but collapsed, built on\r\n this library's own `Collapsible` rather than re-implemented — tooltips are\r\n for short supplementary text and are unreliable on touch, and the long\r\n explanation this is for is neither.\r\n\r\n CONSEQUENCE, NOT MECHANISM. `effect` exists because \"a setting that\r\n silently does not apply yet\" is a real, recurring failure mode in a\r\n settings UI — a toggle that reads as ON while the process it configures is\r\n still running the OLD value. This is deliberately a separate, always-visible\r\n slot from `description` (what the setting IS) and `details` (why it\r\n matters) — the three answer three different questions, and folding the\r\n consequence into either of the other two is how it gets lost.\r\n\r\n READ-ONLY IS A STATE, NOT A DISABLED CONTROL. Some settings are backed by\r\n something the API genuinely cannot write — an environment variable, a value\r\n baked at deploy time. Rendering those as a `disabled` control that LOOKS\r\n editable promises an edit that will never take, which is worse than not\r\n offering one at all. `readOnly` replaces the control slot entirely with a\r\n plain-text presentation carrying the CURRENT value and the reason, both as\r\n real text — never a tooltip, so the reason survives to touch and to anyone\r\n not hovering, and is trivially in the accessibility tree because it simply\r\n IS text, not an ARIA state layered onto a `<div>` with no defined mapping.\r\n ========================================================================= */\r\n\r\nconst settingRow = tv({\r\n slots: {\r\n root: \"flex min-w-0 flex-col gap-3\",\r\n text: \"flex min-w-0 flex-1 flex-col gap-1.5\",\r\n label: \"font-sans text-sm font-medium text-primary\",\r\n description: \"text-sm text-secondary text-pretty\",\r\n effect: \"flex items-start gap-1.5 text-2xs text-tertiary\",\r\n controlWrap: \"flex w-full min-w-0 flex-wrap items-center gap-3\",\r\n readOnlyBlock: \"flex flex-col gap-1\",\r\n readOnlyValue: \"font-mono text-sm text-secondary break-words\",\r\n readOnlyReason: \"flex items-start gap-1.5 text-2xs text-tertiary\",\r\n /* DX-5125: every rendered DOM child gets the group's rhythm as padding (`py-4`,\r\n a hairline above all but the first, the padding cancelled at the two\r\n ends), EXCEPT a boxed `Callout`. It owns its padding (`p-3`), which\r\n `[&>*]:py-4` used to overwrite: it read as having no top padding as the\r\n first child. A Callout is spaced with vertical margins instead, so its own\r\n box is left alone. Selected by DOM and `data-slot`, never by React child,\r\n so a component rendering a fragment of rows is still rows here. */\r\n rows: [\r\n \"flex flex-col\",\r\n \"divide-y divide-border-subtle\",\r\n \"[&>:not([data-slot=callout])]:py-4 [&>:not([data-slot=callout]):first-child]:pt-0 [&>:not([data-slot=callout]):last-child]:pb-0\",\r\n \"[&>[data-slot=callout]]:my-4 [&>[data-slot=callout]:first-child]:mt-0 [&>[data-slot=callout]:last-child]:mb-0\",\r\n ],\r\n },\r\n variants: {\r\n layout: {\r\n inline: {\r\n root: \"sm:flex-row sm:items-start sm:justify-between\",\r\n /* `sm:justify-end` is what puts the control at the row's trailing edge\r\n once there is room beside the text column, rather than merely below\r\n it. `sm:w-auto` lets it stop claiming the full row once it no longer\r\n has to. */\r\n controlWrap: \"sm:w-auto sm:shrink-0 sm:justify-end sm:pl-4\",\r\n readOnlyBlock: \"items-end text-right\",\r\n },\r\n /* DX-4968: label and description on top, the control under them across the whole row at every width. */\r\n stacked: { readOnlyBlock: \"items-start text-left\" },\r\n },\r\n },\r\n defaultVariants: { layout: \"inline\" },\r\n});\r\n\r\n/**\r\n * What `SettingRow` hands to a `control` supplied as a render function —\r\n * two ARIA id references to place on the control's own focusable element(s).\r\n *\r\n * WHY A RENDER PROP, NOT AN AUTOMATIC ASSOCIATION LIKE `Field`.\r\n *\r\n * `Field` (this library's other labelled wrapper) gets the label/description\r\n * link for free, but only because every control it has ever wrapped is one of\r\n * THIS library's own Base UI–backed primitives — `Checkbox`, `Switch`,\r\n * `Input`, `Select`… — and those read Base UI's internal field context\r\n * themselves to pick up `aria-describedby`. That mechanism is a private\r\n * implementation detail of Base UI (there is no public hook a third-party\r\n * control could subscribe to), so it silently does NOTHING for anything that\r\n * is not one of those primitives.\r\n *\r\n * `SettingRow.control` is typed to accept literally anything a settings page\r\n * might need in that slot — a bare `<input>`, a third-party widget, a\r\n * composite the CONSUMER wrote that has never heard of this library, let\r\n * alone Base UI's field internals. Wrapping arbitrary children in the same\r\n * context-based `Field` would look correct and associate nothing, which is\r\n * the worse failure: it fails silently, exactly the thing this component\r\n * exists to prevent for settings prose.\r\n *\r\n * So the association is made an explicit VALUE instead of an implicit\r\n * context read: `SettingRow` generates the ids, and a `control` passed as a\r\n * function receives them and is responsible for spreading them onto the\r\n * element that actually receives focus (the switch's button, the input\r\n * itself, a slider's thumb — for a multi-thumb control, every thumb).\r\n *\r\n * `control` may also be passed as a plain `ReactNode` — the escape hatch for\r\n * a control that already carries its own accessible name and description\r\n * through some other channel (for example a `SwitchField`/`Field`-wrapped\r\n * control, or a composite region where per-control labelling does not apply)\r\n * — in which case NEITHER id is wired anywhere, and getting the control\r\n * properly named and described is entirely the caller's responsibility.\r\n */\r\nexport interface SettingRowControlRenderProps {\r\n /** Always present — `label` is required, so the row always has a name to give. */\r\n \"aria-labelledby\": string;\r\n /** `undefined` when this row has no `description` — nothing to describe with. */\r\n \"aria-describedby\": string | undefined;\r\n}\r\n\r\nexport interface SettingRowBaseProps {\r\n /** The setting's name. Always rendered as visible text and always given an id. */\r\n label: ReactNode;\r\n /**\r\n * What the setting actually DOES, in one line. Always visible — see the\r\n * module doc comment for why this is not a tooltip. Rendered with a\r\n * generated id and, when `control` is a render function, offered to it via\r\n * `SettingRowControlRenderProps[\"aria-describedby\"]`.\r\n */\r\n description?: ReactNode;\r\n /**\r\n * The long-form \"why this matters\" — collapsed by default, revealed by a\r\n * disclosure built on this library's `Collapsible`. Omit entirely when\r\n * `description` alone says everything worth saying; not every setting earns\r\n * a second paragraph.\r\n */\r\n details?: ReactNode;\r\n /** Accessible name + visible label of the `details` disclosure trigger. */\r\n detailsLabel?: ReactNode;\r\n /** Renders the `details` disclosure already open — for a setting a caller deep-links to. */\r\n detailsDefaultOpen?: boolean;\r\n /**\r\n * The CONSEQUENCE of changing this setting, stated plainly — \"takes effect\r\n * on next dispatch\", \"requires a worker restart\" — never the mechanism. See\r\n * the module doc comment: this is what stops a setting from silently not\r\n * applying yet.\r\n */\r\n effect?: ReactNode;\r\n /**\r\n * Where the control sits. DX-4968.\r\n *\r\n * `inline` (the default): beside the text from `sm` (640px) up, under it below. Right for a switch, a select or a short input,\r\n * which keeps its own width at the row's trailing edge.\r\n *\r\n * `stacked`: ALWAYS under the text, the full width of the row. Use it for a control whose value is long and must be seen or\r\n * copied whole, such as a `CopyValue` holding a URL. Beside the text, a control that cannot shrink takes the row's whole width and\r\n * leaves the label and description a word-per-line sliver (or runs past the card edge); stacked gives the value box the width\r\n * to truncate or wrap inside, with the copy button still in view.\r\n */\r\n layout?: \"inline\" | \"stacked\";\r\n /**\r\n * Right-aligned indicator — a `Badge` showing the setting's current derived\r\n * state, most often. Rendered beside the control, not inside it, so it\r\n * survives a `readOnly` row where there is no control at all.\r\n */\r\n status?: ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport interface SettingRowEditableProps extends SettingRowBaseProps {\r\n readOnly?: undefined;\r\n /**\r\n * The setting's control. Either a plain node, or a function receiving the\r\n * ids to associate — see `SettingRowControlRenderProps`.\r\n */\r\n control: ReactNode | ((renderProps: SettingRowControlRenderProps) => ReactNode);\r\n}\r\n\r\nexport interface SettingRowReadOnlyProps extends SettingRowBaseProps {\r\n /**\r\n * Presents this row as READ-ONLY instead of rendering `control` at all —\r\n * see the module doc comment for why this is a first-class state rather\r\n * than a disabled control. `reason` is required; `value`, when given, is\r\n * the setting's current value, shown as plain text beside it.\r\n */\r\n readOnly: { reason: ReactNode; value?: ReactNode };\r\n control?: undefined;\r\n}\r\n\r\nexport type SettingRowProps = SettingRowEditableProps | SettingRowReadOnlyProps;\r\n\r\nexport function SettingRow(props: SettingRowProps) {\r\n const {\r\n label,\r\n description,\r\n details,\r\n detailsLabel,\r\n detailsDefaultOpen,\r\n effect,\r\n status,\r\n layout = \"inline\",\r\n className,\r\n } = props;\r\n const s = settingRow({ layout });\r\n const strings = useUiStrings().settingRow;\r\n\r\n /* Two ids, generated unconditionally so their identity never depends on\r\n which branch below actually uses them — a stable `useId()` call cannot be\r\n skipped by a runtime condition without breaking React's hook rules, and\r\n there is no cost to generating an id that happens to go unused. */\r\n const labelId = useId();\r\n const descriptionId = useId();\r\n const hasDescription = description != null;\r\n\r\n const controlNode = props.readOnly\r\n ? null\r\n : typeof props.control === \"function\"\r\n ? props.control({\r\n \"aria-labelledby\": labelId,\r\n \"aria-describedby\": hasDescription ? descriptionId : undefined,\r\n })\r\n : props.control;\r\n\r\n return (\r\n <div className={cn(s.root(), className)} data-slot=\"setting-row\" data-layout={layout}>\r\n <div className={s.text()}>\r\n <span id={labelId} className={s.label()}>\r\n {label}\r\n </span>\r\n\r\n {hasDescription && (\r\n <p id={descriptionId} className={s.description()}>\r\n {description}\r\n </p>\r\n )}\r\n\r\n {effect && (\r\n <p className={s.effect()}>\r\n <Icon name=\"info\" size=\"xs\" className=\"mt-px shrink-0\" aria-hidden />\r\n <span>{effect}</span>\r\n </p>\r\n )}\r\n\r\n {details && (\r\n <Collapsible\r\n trigger={detailsLabel ?? strings.detailsLabel}\r\n defaultOpen={detailsDefaultOpen}\r\n triggerClassName=\"text-2xs\"\r\n >\r\n <div className=\"text-sm text-secondary text-pretty\">{details}</div>\r\n </Collapsible>\r\n )}\r\n </div>\r\n\r\n <div className={s.controlWrap()}>\r\n {status}\r\n {props.readOnly ? (\r\n /* No `role`/`aria-*` layered on here on purpose — `aria-readonly`\r\n has no defined mapping on a generic container and is not a\r\n reliable channel. Real text is: the reason and the value are\r\n plain content, so every screen reader announces them the same\r\n way it announces anything else on the page, with no assistive\r\n -tech-specific behaviour to get wrong or fail to verify. */\r\n <div className={s.readOnlyBlock()}>\r\n {props.readOnly.value != null && (\r\n <span className={s.readOnlyValue()}>{props.readOnly.value}</span>\r\n )}\r\n <span className={s.readOnlyReason()}>\r\n <Icon name=\"lock\" size=\"xs\" className=\"mt-px shrink-0\" aria-hidden />\r\n <span>{props.readOnly.reason}</span>\r\n </span>\r\n </div>\r\n ) : (\r\n controlNode\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport interface SettingGroupProps {\r\n /** DOM id on the group's root element, so a URL anchor (`#designs`) can target it. */\r\n id?: string;\r\n /** The group's name — e.g. \"Notifications\", \"Dispatch limits\". */\r\n title: ReactNode;\r\n /** One line of context for the whole group. */\r\n description?: ReactNode;\r\n /** @default \"h3\" — see `CardHeader`'s own doc comment on why this is the caller's call. */\r\n titleAs?: CardHeaderProps[\"titleAs\"];\r\n /** Where a Save button or a \"last changed\" line lives. Rendered as a `CardFooter`. */\r\n footer?: ReactNode;\r\n className?: string;\r\n /** `SettingRow` elements, in display order. */\r\n children: ReactNode;\r\n}\r\n\r\n/**\r\n * A titled card holding several `SettingRow`s.\r\n *\r\n * `SettingGroup` simply IS a `Card` — a fixed shape (`CardHeader` for the\r\n * title/description, a divided list of rows, an optional `CardFooter`) built\r\n * from parts this library already ships, rather than a new container\r\n * component that happens to look like one. Nesting, theming, radius\r\n * arithmetic and padding all come from `Card` for free, and any future fix to\r\n * that component (the nested-radius correction, for one) reaches every\r\n * settings page without this file changing at all. The rows themselves supply\r\n * only the divider and the per-row padding — everything else about \"a card\r\n * with a header\" was already solved.\r\n */\r\nexport function SettingGroup({\r\n id,\r\n title,\r\n description,\r\n titleAs,\r\n footer,\r\n className,\r\n children,\r\n}: SettingGroupProps) {\r\n const s = settingRow();\r\n\r\n return (\r\n <Card id={id} className={className}>\r\n <CardHeader title={title} description={description} titleAs={titleAs} />\r\n <div className={s.rows()}>{children}</div>\r\n {footer && <CardFooter>{footer}</CardFooter>}\r\n </Card>\r\n );\r\n}\r\n"],"names":["settingRow","tv","SettingRow","props","label","description","details","detailsLabel","detailsDefaultOpen","effect","status","layout","className","s","strings","useUiStrings","labelId","useId","descriptionId","hasDescription","controlNode","jsxs","cn","jsx","Icon","Collapsible","SettingGroup","id","title","titleAs","footer","children","Card","CardHeader","CardFooter"],"mappings":";;;;;;;;AA4CA,MAAMA,IAAaC,EAAG;AAAA,EACpB,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,eAAe;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQhB,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,QAKN,aAAa;AAAA,QACb,eAAe;AAAA,MAAA;AAAA;AAAA,MAGjB,SAAS,EAAE,eAAe,wBAAA;AAAA,IAAwB;AAAA,EACpD;AAAA,EAEF,iBAAiB,EAAE,QAAQ,SAAA;AAC7B,CAAC;AAoHM,SAASC,EAAWC,GAAwB;AACjD,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,cAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,WAAAC;AAAA,EAAA,IACET,GACEU,IAAIb,EAAW,EAAE,QAAAW,GAAQ,GACzBG,IAAUC,IAAe,YAMzBC,IAAUC,EAAA,GACVC,IAAgBD,EAAA,GAChBE,IAAiBd,KAAe,MAEhCe,IAAcjB,EAAM,WACtB,OACA,OAAOA,EAAM,WAAY,aACvBA,EAAM,QAAQ;AAAA,IACZ,mBAAmBa;AAAA,IACnB,oBAAoBG,IAAiBD,IAAgB;AAAA,EAAA,CACtD,IACDf,EAAM;AAEZ,SACE,gBAAAkB,EAAC,OAAA,EAAI,WAAWC,EAAGT,EAAE,KAAA,GAAQD,CAAS,GAAG,aAAU,eAAc,eAAaD,GAC5E,UAAA;AAAA,IAAA,gBAAAU,EAAC,OAAA,EAAI,WAAWR,EAAE,KAAA,GAChB,UAAA;AAAA,MAAA,gBAAAU,EAAC,UAAK,IAAIP,GAAS,WAAWH,EAAE,MAAA,GAC7B,UAAAT,GACH;AAAA,MAECe,uBACE,KAAA,EAAE,IAAID,GAAe,WAAWL,EAAE,YAAA,GAChC,UAAAR,EAAA,CACH;AAAA,MAGDI,KACC,gBAAAY,EAAC,KAAA,EAAE,WAAWR,EAAE,UACd,UAAA;AAAA,QAAA,gBAAAU,EAACC,GAAA,EAAK,MAAK,QAAO,MAAK,MAAK,WAAU,kBAAiB,eAAW,GAAA,CAAC;AAAA,QACnE,gBAAAD,EAAC,UAAM,UAAAd,EAAA,CAAO;AAAA,MAAA,GAChB;AAAA,MAGDH,KACC,gBAAAiB;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,SAASlB,KAAgBO,EAAQ;AAAA,UACjC,aAAaN;AAAA,UACb,kBAAiB;AAAA,UAEjB,UAAA,gBAAAe,EAAC,OAAA,EAAI,WAAU,sCAAsC,UAAAjB,EAAA,CAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,IAC/D,GAEJ;AAAA,IAEA,gBAAAe,EAAC,OAAA,EAAI,WAAWR,EAAE,eACf,UAAA;AAAA,MAAAH;AAAA,MACAP,EAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOL,gBAAAkB,EAAC,OAAA,EAAI,WAAWR,EAAE,iBACf,UAAA;AAAA,UAAAV,EAAM,SAAS,SAAS,QACvB,gBAAAoB,EAAC,QAAA,EAAK,WAAWV,EAAE,cAAA,GAAkB,UAAAV,EAAM,SAAS,MAAA,CAAM;AAAA,UAE5D,gBAAAkB,EAAC,QAAA,EAAK,WAAWR,EAAE,kBACjB,UAAA;AAAA,YAAA,gBAAAU,EAACC,GAAA,EAAK,MAAK,QAAO,MAAK,MAAK,WAAU,kBAAiB,eAAW,GAAA,CAAC;AAAA,YACnE,gBAAAD,EAAC,QAAA,EAAM,UAAApB,EAAM,SAAS,OAAA,CAAO;AAAA,UAAA,EAAA,CAC/B;AAAA,QAAA,EAAA,CACF;AAAA,UAEAiB;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,GACF;AAEJ;AA+BO,SAASM,EAAa;AAAA,EAC3B,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAvB;AAAA,EACA,SAAAwB;AAAA,EACA,QAAAC;AAAA,EACA,WAAAlB;AAAA,EACA,UAAAmB;AACF,GAAsB;AACpB,QAAMlB,IAAIb,EAAA;AAEV,SACE,gBAAAqB,EAACW,GAAA,EAAK,IAAAL,GAAQ,WAAAf,GACZ,UAAA;AAAA,IAAA,gBAAAW,EAACU,GAAA,EAAW,OAAAL,GAAc,aAAAvB,GAA0B,SAAAwB,EAAA,CAAkB;AAAA,sBACrE,OAAA,EAAI,WAAWhB,EAAE,KAAA,GAAS,UAAAkB,GAAS;AAAA,IACnCD,KAAU,gBAAAP,EAACW,GAAA,EAAY,UAAAJ,EAAA,CAAO;AAAA,EAAA,GACjC;AAEJ;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { cn as a } from "../lib/cn.js";
|
|
3
|
+
import { ConcentricRing as m } from "./ConcentricRing.js";
|
|
4
|
+
import { percentOf as p } from "./Progress.js";
|
|
5
|
+
const t = {
|
|
6
|
+
person: "success",
|
|
7
|
+
agent: "brand"
|
|
8
|
+
}, h = {
|
|
9
|
+
person: "text-success-text",
|
|
10
|
+
agent: "text-brand-text"
|
|
11
|
+
};
|
|
12
|
+
function i(n, e) {
|
|
13
|
+
if (e <= 0) throw new Error(`signOffFill needs a positive total, got ${e}`);
|
|
14
|
+
return n === e ? 100 : Math.min(99, Math.max(n > 0 ? 1 : 0, p(n, e)));
|
|
15
|
+
}
|
|
16
|
+
function O({ total: n, person: e, agent: s, label: o, className: c, testId: f }) {
|
|
17
|
+
return (
|
|
18
|
+
/* -my-1: the 28px ring borrows 4px above and below from a tab's own padding, so a ringed tab is as tall as a plain-label one. */
|
|
19
|
+
/* @__PURE__ */ r("span", { className: a("-my-1 inline-flex shrink-0", c), "data-testid": f, children: /* @__PURE__ */ r(
|
|
20
|
+
m,
|
|
21
|
+
{
|
|
22
|
+
label: o,
|
|
23
|
+
outer: { value: i(e, n), tone: t.person },
|
|
24
|
+
inner: { value: i(s, n), tone: t.agent },
|
|
25
|
+
children: /* @__PURE__ */ r("span", { className: "text-[0.75em]", children: n })
|
|
26
|
+
}
|
|
27
|
+
) })
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
h as SIGN_OFF_TEXT_CLASS,
|
|
32
|
+
t as SIGN_OFF_TONE,
|
|
33
|
+
O as SignOffRings,
|
|
34
|
+
i as signOffFill
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=SignOffRings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignOffRings.js","sources":["../../src/components/SignOffRings.tsx"],"sourcesContent":["import { cn } from \"../lib/cn\";\nimport { ConcentricRing } from \"./ConcentricRing\";\nimport { percentOf, type ProgressTone } from \"./Progress\";\n\n/* ============================================================================\n THE DOUBLE SIGN-OFF RING (DX-5428, from danxbot DX-4118) — one glyph for\n \"how many of a set have been signed off, and by whom\".\n\n OUTER ring fills with what a PERSON signed off (`SIGN_OFF_TONE.person`)\n INNER ring fills with what an AGENT verified (`SIGN_OFF_TONE.agent`)\n CENTRE how many there are\n\n It is `ConcentricRing`, which owns the geometry; this file owns what the two\n rings MEAN (which actor, which colour). Every word arrives from the caller: the\n ring's `label` is the whole sentence naming both fractions, since colour is\n never the only carrier. A set with no members draws no ring: that is the\n caller's call (an empty circle with a 0 in it says nothing), and `signOffFill`\n refuses a total of 0 rather than invent a fraction.\n\n The tones are the library's own theme tokens (`success`, `brand`), so the pair\n is theme-aware without this file knowing either theme. Green is the person's\n \"approved\" act; violet is the one library hue that is neither a status colour\n nor close to green, so two nested rings never blur into one.\n ========================================================================= */\n\nexport type SignOffActor = \"person\" | \"agent\";\n\n/** The ring/badge tone of each actor. */\nexport const SIGN_OFF_TONE = {\n person: \"success\",\n agent: \"brand\",\n} as const satisfies Record<SignOffActor, ProgressTone>;\n\n/** The same two colours as text, for a label that names an actor beside its ring. Literal class names so Tailwind's source scan sees them. */\nexport const SIGN_OFF_TEXT_CLASS = {\n person: \"text-success-text\",\n agent: \"text-brand-text\",\n} as const satisfies Record<SignOffActor, string>;\n\n/**\n * How full a ring is, 0-100: the share of `total` that is `done`, floored. Only a complete set reaches 100: 199 of 200\n * rounds to 100 but is not done, so it reads 99. Any sign-off at all shows at least a 1% sliver. `total` is never 0 here.\n */\nexport function signOffFill(done: number, total: number): number {\n if (total <= 0) throw new Error(`signOffFill needs a positive total, got ${total}`);\n if (done === total) return 100;\n return Math.min(99, Math.max(done > 0 ? 1 : 0, percentOf(done, total)));\n}\n\nexport interface SignOffRingsProps {\n /** How many there are: drawn in the centre. Must be positive; a caller with none draws no ring. */\n total: number;\n /** How many a person signed off (the outer ring). */\n person: number;\n /** How many an agent verified (the inner ring). */\n agent: number;\n /** The ring's accessible name: one sentence naming both fractions, in the caller's words. */\n label: string;\n className?: string;\n testId?: string;\n}\n\nexport function SignOffRings({ total, person, agent, label, className, testId }: SignOffRingsProps) {\n return (\n /* -my-1: the 28px ring borrows 4px above and below from a tab's own padding, so a ringed tab is as tall as a plain-label one. */\n <span className={cn(\"-my-1 inline-flex shrink-0\", className)} data-testid={testId}>\n <ConcentricRing\n label={label}\n outer={{ value: signOffFill(person, total), tone: SIGN_OFF_TONE.person }}\n inner={{ value: signOffFill(agent, total), tone: SIGN_OFF_TONE.agent }}\n >\n {/* The ring's own centre type is 12px, which leaves \"14\" touching the 15px inner disc; 0.75em of it (9px) keeps two digits clear of the ring and one digit legible. */}\n <span className=\"text-[0.75em]\">{total}</span>\n </ConcentricRing>\n </span>\n );\n}\n"],"names":["SIGN_OFF_TONE","SIGN_OFF_TEXT_CLASS","signOffFill","done","total","percentOf","SignOffRings","person","agent","label","className","testId","jsx","cn","ConcentricRing"],"mappings":";;;;AA4BO,MAAMA,IAAgB;AAAA,EAC3B,QAAQ;AAAA,EACR,OAAO;AACT,GAGaC,IAAsB;AAAA,EACjC,QAAQ;AAAA,EACR,OAAO;AACT;AAMO,SAASC,EAAYC,GAAcC,GAAuB;AAC/D,MAAIA,KAAS,EAAG,OAAM,IAAI,MAAM,2CAA2CA,CAAK,EAAE;AAClF,SAAID,MAASC,IAAc,MACpB,KAAK,IAAI,IAAI,KAAK,IAAID,IAAO,IAAI,IAAI,GAAGE,EAAUF,GAAMC,CAAK,CAAC,CAAC;AACxE;AAeO,SAASE,EAAa,EAAE,OAAAF,GAAO,QAAAG,GAAQ,OAAAC,GAAO,OAAAC,GAAO,WAAAC,GAAW,QAAAC,KAA6B;AAClG;AAAA;AAAA,IAEE,gBAAAC,EAAC,UAAK,WAAWC,EAAG,8BAA8BH,CAAS,GAAG,eAAaC,GACzE,UAAA,gBAAAC;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,OAAAL;AAAA,QACA,OAAO,EAAE,OAAOP,EAAYK,GAAQH,CAAK,GAAG,MAAMJ,EAAc,OAAA;AAAA,QAChE,OAAO,EAAE,OAAOE,EAAYM,GAAOJ,CAAK,GAAG,MAAMJ,EAAc,MAAA;AAAA,QAG/D,UAAA,gBAAAY,EAAC,QAAA,EAAK,WAAU,iBAAiB,UAAAR,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA,EACzC,CACF;AAAA;AAEJ;"}
|