@50arms/ui 0.0.0-stage → 35.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +193 -2
- package/dist/components/Accordion.js +68 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/AgentWorkingSpinner.js +46 -0
- package/dist/components/AgentWorkingSpinner.js.map +1 -0
- package/dist/components/AppShell.js +228 -0
- package/dist/components/AppShell.js.map +1 -0
- package/dist/components/Attention.js +130 -0
- package/dist/components/Attention.js.map +1 -0
- package/dist/components/Avatar.js +99 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.js +143 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Board.js +292 -0
- package/dist/components/Board.js.map +1 -0
- package/dist/components/Button.js +327 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Callout.js +106 -0
- package/dist/components/Callout.js.map +1 -0
- package/dist/components/Card.js +140 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Choice.js +361 -0
- package/dist/components/Choice.js.map +1 -0
- package/dist/components/CodeEditor.js +384 -0
- package/dist/components/CodeEditor.js.map +1 -0
- package/dist/components/ColorPicker.js +174 -0
- package/dist/components/ColorPicker.js.map +1 -0
- package/dist/components/Combobox.js +212 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/CommandPalette.js +163 -0
- package/dist/components/CommandPalette.js.map +1 -0
- package/dist/components/ConcentricRing.js +60 -0
- package/dist/components/ConcentricRing.js.map +1 -0
- package/dist/components/ConnectionCard.js +98 -0
- package/dist/components/ConnectionCard.js.map +1 -0
- package/dist/components/ContextItemRow.js +49 -0
- package/dist/components/ContextItemRow.js.map +1 -0
- package/dist/components/CopyValue.js +57 -0
- package/dist/components/CopyValue.js.map +1 -0
- package/dist/components/CountBadge.js +26 -0
- package/dist/components/CountBadge.js.map +1 -0
- package/dist/components/DateCalendar.js +156 -0
- package/dist/components/DateCalendar.js.map +1 -0
- package/dist/components/DateField.js +166 -0
- package/dist/components/DateField.js.map +1 -0
- package/dist/components/DatePicker.js +56 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/DateTimeText.js +19 -0
- package/dist/components/DateTimeText.js.map +1 -0
- package/dist/components/DescriptionList.js +25 -0
- package/dist/components/DescriptionList.js.map +1 -0
- package/dist/components/Dialog.js +332 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/DragDrop.js +395 -0
- package/dist/components/DragDrop.js.map +1 -0
- package/dist/components/Drawer.js +100 -0
- package/dist/components/Drawer.js.map +1 -0
- package/dist/components/EditGutter.js +110 -0
- package/dist/components/EditGutter.js.map +1 -0
- package/dist/components/EmojiPicker.js +174 -0
- package/dist/components/EmojiPicker.js.map +1 -0
- package/dist/components/ErrorBoundary.js +47 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/Field.js +115 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/FileUpload.js +128 -0
- package/dist/components/FileUpload.js.map +1 -0
- package/dist/components/FilterMenu.js +256 -0
- package/dist/components/FilterMenu.js.map +1 -0
- package/dist/components/GatesSection.js +79 -0
- package/dist/components/GatesSection.js.map +1 -0
- package/dist/components/Icon.js +50 -0
- package/dist/components/Icon.js.map +1 -0
- package/dist/components/IconButton.js +59 -0
- package/dist/components/IconButton.js.map +1 -0
- package/dist/components/IconStack.js +69 -0
- package/dist/components/IconStack.js.map +1 -0
- package/dist/components/ImageUploadField.js +146 -0
- package/dist/components/ImageUploadField.js.map +1 -0
- package/dist/components/InlineEdit.js +432 -0
- package/dist/components/InlineEdit.js.map +1 -0
- package/dist/components/InlineMarkdownEdit.js +184 -0
- package/dist/components/InlineMarkdownEdit.js.map +1 -0
- package/dist/components/Input.js +156 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/LegalDocument.js +155 -0
- package/dist/components/LegalDocument.js.map +1 -0
- package/dist/components/LineDiff.js +95 -0
- package/dist/components/LineDiff.js.map +1 -0
- package/dist/components/ListHeader.js +72 -0
- package/dist/components/ListHeader.js.map +1 -0
- package/dist/components/Loading.js +111 -0
- package/dist/components/Loading.js.map +1 -0
- package/dist/components/Markdown.js +28 -0
- package/dist/components/Markdown.js.map +1 -0
- package/dist/components/MarkdownEditor.js +467 -0
- package/dist/components/MarkdownEditor.js.map +1 -0
- package/dist/components/Menu.js +185 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/Navigation.js +87 -0
- package/dist/components/Navigation.js.map +1 -0
- package/dist/components/NumberInput.js +119 -0
- package/dist/components/NumberInput.js.map +1 -0
- package/dist/components/OTPInput.js +71 -0
- package/dist/components/OTPInput.js.map +1 -0
- package/dist/components/OrderedEntityManager.js +170 -0
- package/dist/components/OrderedEntityManager.js.map +1 -0
- package/dist/components/PagedWindowList.js +74 -0
- package/dist/components/PagedWindowList.js.map +1 -0
- package/dist/components/PaginationBar.js +95 -0
- package/dist/components/PaginationBar.js.map +1 -0
- package/dist/components/Panel.js +396 -0
- package/dist/components/Panel.js.map +1 -0
- package/dist/components/PasswordInput.js +32 -0
- package/dist/components/PasswordInput.js.map +1 -0
- package/dist/components/PasswordRequirements.js +25 -0
- package/dist/components/PasswordRequirements.js.map +1 -0
- package/dist/components/PatchDiff.js +96 -0
- package/dist/components/PatchDiff.js.map +1 -0
- package/dist/components/PendingVeil.js +18 -0
- package/dist/components/PendingVeil.js.map +1 -0
- package/dist/components/Popover.js +214 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Progress.js +419 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/RatingScale.js +89 -0
- package/dist/components/RatingScale.js.map +1 -0
- package/dist/components/ReadMore.js +232 -0
- package/dist/components/ReadMore.js.map +1 -0
- package/dist/components/RecordCard.js +202 -0
- package/dist/components/RecordCard.js.map +1 -0
- package/dist/components/RelativeTime.js +29 -0
- package/dist/components/RelativeTime.js.map +1 -0
- package/dist/components/SandboxedFrame.js +135 -0
- package/dist/components/SandboxedFrame.js.map +1 -0
- package/dist/components/SearchInput.js +38 -0
- package/dist/components/SearchInput.js.map +1 -0
- package/dist/components/SecretField.js +228 -0
- package/dist/components/SecretField.js.map +1 -0
- package/dist/components/SectionNav.js +42 -0
- package/dist/components/SectionNav.js.map +1 -0
- package/dist/components/Select.js +172 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/SequenceDiagram.js +109 -0
- package/dist/components/SequenceDiagram.js.map +1 -0
- package/dist/components/SettingRow.js +124 -0
- package/dist/components/SettingRow.js.map +1 -0
- package/dist/components/SignOffRings.js +36 -0
- package/dist/components/SignOffRings.js.map +1 -0
- package/dist/components/Slider.js +353 -0
- package/dist/components/Slider.js.map +1 -0
- package/dist/components/SolutionChoice.js +89 -0
- package/dist/components/SolutionChoice.js.map +1 -0
- package/dist/components/SortMenu.js +75 -0
- package/dist/components/SortMenu.js.map +1 -0
- package/dist/components/Spinner.js +42 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Stat.js +148 -0
- package/dist/components/Stat.js.map +1 -0
- package/dist/components/StatusSelect.js +119 -0
- package/dist/components/StatusSelect.js.map +1 -0
- package/dist/components/Surface.js +210 -0
- package/dist/components/Surface.js.map +1 -0
- package/dist/components/Table.js +300 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.js +288 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/ThemeMenu.js +198 -0
- package/dist/components/ThemeMenu.js.map +1 -0
- package/dist/components/Toast.js +217 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/components/Toggle.js +147 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/ToggleMatrix.js +157 -0
- package/dist/components/ToggleMatrix.js.map +1 -0
- package/dist/components/Tree.js +125 -0
- package/dist/components/Tree.js.map +1 -0
- package/dist/components/TriStateSwitch.js +111 -0
- package/dist/components/TriStateSwitch.js.map +1 -0
- package/dist/components/VideoPlayer.js +64 -0
- package/dist/components/VideoPlayer.js.map +1 -0
- package/dist/components/auth/AcceptInvitationCard.js +110 -0
- package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
- package/dist/components/auth/AuthLayout.js +18 -0
- package/dist/components/auth/AuthLayout.js.map +1 -0
- package/dist/components/auth/ForgotPasswordForm.js +44 -0
- package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
- package/dist/components/auth/LoginForm.js +76 -0
- package/dist/components/auth/LoginForm.js.map +1 -0
- package/dist/components/auth/ResetPasswordForm.js +69 -0
- package/dist/components/auth/ResetPasswordForm.js.map +1 -0
- package/dist/components/auth/SignInProviders.js +45 -0
- package/dist/components/auth/SignInProviders.js.map +1 -0
- package/dist/components/auth/SignupCard.js +204 -0
- package/dist/components/auth/SignupCard.js.map +1 -0
- package/dist/components/auth/TermsAcceptance.js +43 -0
- package/dist/components/auth/TermsAcceptance.js.map +1 -0
- package/dist/components/board/context.js +32 -0
- package/dist/components/board/context.js.map +1 -0
- package/dist/components/board/recipe.js +94 -0
- package/dist/components/board/recipe.js.map +1 -0
- package/dist/components/calendar/CalendarMonth.js +299 -0
- package/dist/components/calendar/CalendarMonth.js.map +1 -0
- package/dist/components/calendar/CalendarTimeGrid.js +430 -0
- package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
- package/dist/components/calendar/EventActions.js +101 -0
- package/dist/components/calendar/EventActions.js.map +1 -0
- package/dist/components/calendar/format.js +73 -0
- package/dist/components/calendar/format.js.map +1 -0
- package/dist/components/calendar/palette.js +31 -0
- package/dist/components/calendar/palette.js.map +1 -0
- package/dist/components/calendar/use-calendar-drag.js +149 -0
- package/dist/components/calendar/use-calendar-drag.js.map +1 -0
- package/dist/components/calendar/use-event-keyboard.js +87 -0
- package/dist/components/calendar/use-event-keyboard.js.map +1 -0
- package/dist/components/calendar/use-grid-navigation.js +79 -0
- package/dist/components/calendar/use-grid-navigation.js.map +1 -0
- package/dist/components/calendar/use-now.js +27 -0
- package/dist/components/calendar/use-now.js.map +1 -0
- package/dist/components/card-face/AcRingGlyph.js +39 -0
- package/dist/components/card-face/AcRingGlyph.js.map +1 -0
- package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
- package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
- package/dist/components/card-face/CardFace.js +109 -0
- package/dist/components/card-face/CardFace.js.map +1 -0
- package/dist/components/card-face/CardTypeBadge.js +17 -0
- package/dist/components/card-face/CardTypeBadge.js.map +1 -0
- package/dist/components/card-face/EffortBadge.js +11 -0
- package/dist/components/card-face/EffortBadge.js.map +1 -0
- package/dist/components/card-face/GateRingGlyph.js +31 -0
- package/dist/components/card-face/GateRingGlyph.js.map +1 -0
- package/dist/components/card-face/OverflowRow.js +70 -0
- package/dist/components/card-face/OverflowRow.js.map +1 -0
- package/dist/components/card-face/TapTip.js +32 -0
- package/dist/components/card-face/TapTip.js.map +1 -0
- package/dist/components/card-face/hit-area.js +6 -0
- package/dist/components/card-face/hit-area.js.map +1 -0
- package/dist/components/card-face/vocabulary.js +102 -0
- package/dist/components/card-face/vocabulary.js.map +1 -0
- package/dist/components/chart/BarList.js +78 -0
- package/dist/components/chart/BarList.js.map +1 -0
- package/dist/components/chart/LineChart.js +310 -0
- package/dist/components/chart/LineChart.js.map +1 -0
- package/dist/components/chart/ShareBar.js +141 -0
- package/dist/components/chart/ShareBar.js.map +1 -0
- package/dist/components/chart/TimeSeriesChart.js +305 -0
- package/dist/components/chart/TimeSeriesChart.js.map +1 -0
- package/dist/components/chart/label-metrics.js +17 -0
- package/dist/components/chart/label-metrics.js.map +1 -0
- package/dist/components/chart/line-chart-axis.js +38 -0
- package/dist/components/chart/line-chart-axis.js.map +1 -0
- package/dist/components/chart/line-chart-scale.js +132 -0
- package/dist/components/chart/line-chart-scale.js.map +1 -0
- package/dist/components/chart/line-series-style.js +22 -0
- package/dist/components/chart/line-series-style.js.map +1 -0
- package/dist/components/chart/share-bar-labels.js +14 -0
- package/dist/components/chart/share-bar-labels.js.map +1 -0
- package/dist/components/chart/shared.js +157 -0
- package/dist/components/chart/shared.js.map +1 -0
- package/dist/components/chart/time-series-scale.js +51 -0
- package/dist/components/chart/time-series-scale.js.map +1 -0
- package/dist/components/chat/Attachment.js +316 -0
- package/dist/components/chat/Attachment.js.map +1 -0
- package/dist/components/chat/Chat.js +171 -0
- package/dist/components/chat/Chat.js.map +1 -0
- package/dist/components/chat/Composer.js +274 -0
- package/dist/components/chat/Composer.js.map +1 -0
- package/dist/components/chat/ContextMeter.js +202 -0
- package/dist/components/chat/ContextMeter.js.map +1 -0
- package/dist/components/chat/EffortControl.js +116 -0
- package/dist/components/chat/EffortControl.js.map +1 -0
- package/dist/components/chat/FileCover.js +78 -0
- package/dist/components/chat/FileCover.js.map +1 -0
- package/dist/components/chat/Message.js +356 -0
- package/dist/components/chat/Message.js.map +1 -0
- package/dist/components/chat/MessageScroller.js +104 -0
- package/dist/components/chat/MessageScroller.js.map +1 -0
- package/dist/components/chat/ModelSelector.js +156 -0
- package/dist/components/chat/ModelSelector.js.map +1 -0
- package/dist/components/chat/StreamingMarkdown.js +42 -0
- package/dist/components/chat/StreamingMarkdown.js.map +1 -0
- package/dist/components/chat/download-file.js +9 -0
- package/dist/components/chat/download-file.js.map +1 -0
- package/dist/components/chat/file-icon.js +39 -0
- package/dist/components/chat/file-icon.js.map +1 -0
- package/dist/components/checklist/StatusChecklist.js +103 -0
- package/dist/components/checklist/StatusChecklist.js.map +1 -0
- package/dist/components/checklist/tally.js +29 -0
- package/dist/components/checklist/tally.js.map +1 -0
- package/dist/components/code-editor/context.js +13 -0
- package/dist/components/code-editor/context.js.map +1 -0
- package/dist/components/code-editor/editing.js +93 -0
- package/dist/components/code-editor/editing.js.map +1 -0
- package/dist/components/code-editor/highlight.js +27 -0
- package/dist/components/code-editor/highlight.js.map +1 -0
- package/dist/components/code-editor/recipe.js +75 -0
- package/dist/components/code-editor/recipe.js.map +1 -0
- package/dist/components/date-timeline/DateTimeline.js +358 -0
- package/dist/components/date-timeline/DateTimeline.js.map +1 -0
- package/dist/components/date-timeline/TimelineRow.js +100 -0
- package/dist/components/date-timeline/TimelineRow.js.map +1 -0
- package/dist/components/date-timeline/useBarDrag.js +44 -0
- package/dist/components/date-timeline/useBarDrag.js.map +1 -0
- package/dist/components/date-timeline/useMarkerDrag.js +40 -0
- package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
- package/dist/components/date-timeline/useTimelineZoom.js +44 -0
- package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
- package/dist/components/drag-drop/context.js +37 -0
- package/dist/components/drag-drop/context.js.map +1 -0
- package/dist/components/drag-drop/recipe.js +270 -0
- package/dist/components/drag-drop/recipe.js.map +1 -0
- package/dist/components/drag-drop/shift.js +157 -0
- package/dist/components/drag-drop/shift.js.map +1 -0
- package/dist/components/edit/activation.js +10 -0
- package/dist/components/edit/activation.js.map +1 -0
- package/dist/components/edit/outcome.js +47 -0
- package/dist/components/edit/outcome.js.map +1 -0
- package/dist/components/edit/use-edit-session.js +146 -0
- package/dist/components/edit/use-edit-session.js.map +1 -0
- package/dist/components/file-viewer/FileViewer.js +97 -0
- package/dist/components/file-viewer/FileViewer.js.map +1 -0
- package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
- package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
- package/dist/components/file-viewer/ViewerControls.js +122 -0
- package/dist/components/file-viewer/ViewerControls.js.map +1 -0
- package/dist/components/file-viewer/ViewerRail.js +57 -0
- package/dist/components/file-viewer/ViewerRail.js.map +1 -0
- package/dist/components/file-viewer/ViewerStage.js +112 -0
- package/dist/components/file-viewer/ViewerStage.js.map +1 -0
- package/dist/components/file-viewer/frames.js +37 -0
- package/dist/components/file-viewer/frames.js.map +1 -0
- package/dist/components/file-viewer/use-frame-cursor.js +32 -0
- package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
- package/dist/components/file-viewer/use-viewer-keys.js +50 -0
- package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
- package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
- package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
- package/dist/components/focus-web/FocusWeb.js +322 -0
- package/dist/components/focus-web/FocusWeb.js.map +1 -0
- package/dist/components/focus-web/layout.js +34 -0
- package/dist/components/focus-web/layout.js.map +1 -0
- package/dist/components/graph-explorer/GraphExplorer.js +441 -0
- package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
- package/dist/components/graph-explorer/camera-math.js +102 -0
- package/dist/components/graph-explorer/camera-math.js.map +1 -0
- package/dist/components/graph-explorer/tree-layout.js +103 -0
- package/dist/components/graph-explorer/tree-layout.js.map +1 -0
- package/dist/components/graph-explorer/use-camera.js +82 -0
- package/dist/components/graph-explorer/use-camera.js.map +1 -0
- package/dist/components/graph-explorer/viewport-gesture.js +107 -0
- package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
- package/dist/components/kanban/KanbanBoard.js +219 -0
- package/dist/components/kanban/KanbanBoard.js.map +1 -0
- package/dist/components/kanban/recipe.js +144 -0
- package/dist/components/kanban/recipe.js.map +1 -0
- package/dist/components/markdown/Affordances.js +398 -0
- package/dist/components/markdown/Affordances.js.map +1 -0
- package/dist/components/markdown/AttachmentStrip.js +128 -0
- package/dist/components/markdown/AttachmentStrip.js.map +1 -0
- package/dist/components/markdown/ImageUpload.js +45 -0
- package/dist/components/markdown/ImageUpload.js.map +1 -0
- package/dist/components/media-error.js +7 -0
- package/dist/components/media-error.js.map +1 -0
- package/dist/components/nav-sections.js +61 -0
- package/dist/components/nav-sections.js.map +1 -0
- package/dist/components/node-canvas/NodeCanvas.js +384 -0
- package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
- package/dist/components/node-canvas/layout.js +237 -0
- package/dist/components/node-canvas/layout.js.map +1 -0
- package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
- package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
- package/dist/components/openapi/OpenApiViewer.js +137 -0
- package/dist/components/openapi/OpenApiViewer.js.map +1 -0
- package/dist/components/openapi/OperationCard.js +145 -0
- package/dist/components/openapi/OperationCard.js.map +1 -0
- package/dist/components/openapi/SchemaView.js +68 -0
- package/dist/components/openapi/SchemaView.js.map +1 -0
- package/dist/components/openapi/resolve.js +102 -0
- package/dist/components/openapi/resolve.js.map +1 -0
- package/dist/components/openapi/types.js +5 -0
- package/dist/components/openapi/types.js.map +1 -0
- package/dist/components/overlay-shell.js +29 -0
- package/dist/components/overlay-shell.js.map +1 -0
- package/dist/components/overlay-stack.js +27 -0
- package/dist/components/overlay-stack.js.map +1 -0
- package/dist/components/paged-window/PageBlock.js +50 -0
- package/dist/components/paged-window/PageBlock.js.map +1 -0
- package/dist/components/provenance/ConfidenceBar.js +60 -0
- package/dist/components/provenance/ConfidenceBar.js.map +1 -0
- package/dist/components/provenance/ConfidenceMeter.js +36 -0
- package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
- package/dist/components/provenance/ConfidenceReadout.js +31 -0
- package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
- package/dist/components/provenance/ProvenanceBadge.js +44 -0
- package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
- package/dist/components/provenance/ProvenanceDetail.js +114 -0
- package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
- package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
- package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
- package/dist/components/provenance/absence.js +31 -0
- package/dist/components/provenance/absence.js.map +1 -0
- package/dist/components/provenance/types.js +30 -0
- package/dist/components/provenance/types.js.map +1 -0
- package/dist/components/rbac/AccessRequestPanel.js +153 -0
- package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
- package/dist/components/rbac/AccountMenu.js +118 -0
- package/dist/components/rbac/AccountMenu.js.map +1 -0
- package/dist/components/rbac/AgentKeysList.js +20 -0
- package/dist/components/rbac/AgentKeysList.js.map +1 -0
- package/dist/components/rbac/ApiKeysPanel.js +172 -0
- package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
- package/dist/components/rbac/ApiKeysTable.js +167 -0
- package/dist/components/rbac/ApiKeysTable.js.map +1 -0
- package/dist/components/rbac/Brand.js +13 -0
- package/dist/components/rbac/Brand.js.map +1 -0
- package/dist/components/rbac/Can.js +18 -0
- package/dist/components/rbac/Can.js.map +1 -0
- package/dist/components/rbac/ChangePasswordForm.js +73 -0
- package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
- package/dist/components/rbac/DangerZone.js +27 -0
- package/dist/components/rbac/DangerZone.js.map +1 -0
- package/dist/components/rbac/DevToolsPopover.js +140 -0
- package/dist/components/rbac/DevToolsPopover.js.map +1 -0
- package/dist/components/rbac/EndedLine.js +24 -0
- package/dist/components/rbac/EndedLine.js.map +1 -0
- package/dist/components/rbac/InvitationsList.js +148 -0
- package/dist/components/rbac/InvitationsList.js.map +1 -0
- package/dist/components/rbac/InviteMembersDialog.js +97 -0
- package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
- package/dist/components/rbac/MembersPanel.js +138 -0
- package/dist/components/rbac/MembersPanel.js.map +1 -0
- package/dist/components/rbac/PermissionRequestPanel.js +141 -0
- package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
- package/dist/components/rbac/ProfileForm.js +86 -0
- package/dist/components/rbac/ProfileForm.js.map +1 -0
- package/dist/components/rbac/ProfilePage.js +58 -0
- package/dist/components/rbac/ProfilePage.js.map +1 -0
- package/dist/components/rbac/RBACProvider.js +82 -0
- package/dist/components/rbac/RBACProvider.js.map +1 -0
- package/dist/components/rbac/RoleEditorDialog.js +90 -0
- package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
- package/dist/components/rbac/RoleKeyPicker.js +77 -0
- package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
- package/dist/components/rbac/RolePermissionMatrix.js +37 -0
- package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
- package/dist/components/rbac/RolesPermissionsPage.js +142 -0
- package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
- package/dist/components/rbac/SessionsList.js +146 -0
- package/dist/components/rbac/SessionsList.js.map +1 -0
- package/dist/components/rbac/TeamSettingsForm.js +69 -0
- package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
- package/dist/components/rbac/TeamSwitcher.js +66 -0
- package/dist/components/rbac/TeamSwitcher.js.map +1 -0
- package/dist/components/rbac/approvalPanelParts.js +130 -0
- package/dist/components/rbac/approvalPanelParts.js.map +1 -0
- package/dist/components/rbac/permissionSections.js +8 -0
- package/dist/components/rbac/permissionSections.js.map +1 -0
- package/dist/components/rbac/stagedForm.js +42 -0
- package/dist/components/rbac/stagedForm.js.map +1 -0
- package/dist/components/rbac/useStagedImage.js +21 -0
- package/dist/components/rbac/useStagedImage.js.map +1 -0
- package/dist/components/roadmap/PhaseManager.js +48 -0
- package/dist/components/roadmap/PhaseManager.js.map +1 -0
- package/dist/components/roadmap/RoadmapItemCard.js +96 -0
- package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
- package/dist/components/roadmap/RoadmapPage.js +34 -0
- package/dist/components/roadmap/RoadmapPage.js.map +1 -0
- package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
- package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
- package/dist/components/roadmap/TrackManager.js +58 -0
- package/dist/components/roadmap/TrackManager.js.map +1 -0
- package/dist/components/roadmap/UseCaseCard.js +93 -0
- package/dist/components/roadmap/UseCaseCard.js.map +1 -0
- package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
- package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
- package/dist/components/roadmap/chip-tones.js +9 -0
- package/dist/components/roadmap/chip-tones.js.map +1 -0
- package/dist/components/roadmap/derive.js +28 -0
- package/dist/components/roadmap/derive.js.map +1 -0
- package/dist/components/stepper/Stepper.js +276 -0
- package/dist/components/stepper/Stepper.js.map +1 -0
- package/dist/components/stepper/derive.js +53 -0
- package/dist/components/stepper/derive.js.map +1 -0
- package/dist/confidence.css +222 -0
- package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
- package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
- package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
- package/dist/fonts/figtree-0.woff2 +0 -0
- package/dist/fonts/figtree-1.woff2 +0 -0
- package/dist/fonts/figtree-2.woff2 +0 -0
- package/dist/fonts/figtree-3.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
- package/dist/fonts.css +187 -0
- package/dist/icons/data.js +233 -0
- package/dist/icons/data.js.map +1 -0
- package/dist/index.js +942 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/attention.js +75 -0
- package/dist/lib/attention.js.map +1 -0
- package/dist/lib/board/anchor.js +14 -0
- package/dist/lib/board/anchor.js.map +1 -0
- package/dist/lib/board/model.js +41 -0
- package/dist/lib/board/model.js.map +1 -0
- package/dist/lib/board/move.js +161 -0
- package/dist/lib/board/move.js.map +1 -0
- package/dist/lib/board/position.js +11 -0
- package/dist/lib/board/position.js.map +1 -0
- package/dist/lib/board/rejection.js +22 -0
- package/dist/lib/board/rejection.js.map +1 -0
- package/dist/lib/board/use-board.js +43 -0
- package/dist/lib/board/use-board.js.map +1 -0
- package/dist/lib/calendar/band-packer.js +44 -0
- package/dist/lib/calendar/band-packer.js.map +1 -0
- package/dist/lib/calendar/drag.js +74 -0
- package/dist/lib/calendar/drag.js.map +1 -0
- package/dist/lib/calendar/lane-packer.js +67 -0
- package/dist/lib/calendar/lane-packer.js.map +1 -0
- package/dist/lib/calendar/segments.js +82 -0
- package/dist/lib/calendar/segments.js.map +1 -0
- package/dist/lib/calendar/types.js +7 -0
- package/dist/lib/calendar/types.js.map +1 -0
- package/dist/lib/chart-palette.js +27 -0
- package/dist/lib/chart-palette.js.map +1 -0
- package/dist/lib/clipboard.js +30 -0
- package/dist/lib/clipboard.js.map +1 -0
- package/dist/lib/cn.js +9 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/color.js +24 -0
- package/dist/lib/color.js.map +1 -0
- package/dist/lib/component-guidance.js +297 -0
- package/dist/lib/component-guidance.js.map +1 -0
- package/dist/lib/confidence.js +22 -0
- package/dist/lib/confidence.js.map +1 -0
- package/dist/lib/date-timeline/scale.js +197 -0
- package/dist/lib/date-timeline/scale.js.map +1 -0
- package/dist/lib/design-frame/document.js +44 -0
- package/dist/lib/design-frame/document.js.map +1 -0
- package/dist/lib/design-frame/mini-app-script.js +107 -0
- package/dist/lib/design-frame/mini-app-script.js.map +1 -0
- package/dist/lib/design-frame/mini-app.js +12 -0
- package/dist/lib/design-frame/mini-app.js.map +1 -0
- package/dist/lib/design-frame/protocol.js +46 -0
- package/dist/lib/design-frame/protocol.js.map +1 -0
- package/dist/lib/dev-warn.js +17 -0
- package/dist/lib/dev-warn.js.map +1 -0
- package/dist/lib/dnd/announce.js +120 -0
- package/dist/lib/dnd/announce.js.map +1 -0
- package/dist/lib/dnd/autoscroll.js +123 -0
- package/dist/lib/dnd/autoscroll.js.map +1 -0
- package/dist/lib/dnd/cross-drop.js +11 -0
- package/dist/lib/dnd/cross-drop.js.map +1 -0
- package/dist/lib/dnd/geometry.js +99 -0
- package/dist/lib/dnd/geometry.js.map +1 -0
- package/dist/lib/dnd/sensors/gesture.js +86 -0
- package/dist/lib/dnd/sensors/gesture.js.map +1 -0
- package/dist/lib/dnd/sensors/keyboard.js +47 -0
- package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
- package/dist/lib/dnd/sensors/pointer.js +32 -0
- package/dist/lib/dnd/sensors/pointer.js.map +1 -0
- package/dist/lib/dnd/session.js +256 -0
- package/dist/lib/dnd/session.js.map +1 -0
- package/dist/lib/dnd/use-drag.js +90 -0
- package/dist/lib/dnd/use-drag.js.map +1 -0
- package/dist/lib/dom/scroll-ancestor.js +18 -0
- package/dist/lib/dom/scroll-ancestor.js.map +1 -0
- package/dist/lib/format.js +23 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/group-in-order.js +13 -0
- package/dist/lib/group-in-order.js.map +1 -0
- package/dist/lib/header-fold.js +11 -0
- package/dist/lib/header-fold.js.map +1 -0
- package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
- package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
- package/dist/lib/i18n/areas/board.js +35 -0
- package/dist/lib/i18n/areas/board.js.map +1 -0
- package/dist/lib/i18n/areas/card-face.js +10 -0
- package/dist/lib/i18n/areas/card-face.js.map +1 -0
- package/dist/lib/i18n/areas/chat-chart.js +118 -0
- package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
- package/dist/lib/i18n/areas/code-editor.js +24 -0
- package/dist/lib/i18n/areas/code-editor.js.map +1 -0
- package/dist/lib/i18n/areas/date-timeline.js +21 -0
- package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
- package/dist/lib/i18n/areas/dates.js +71 -0
- package/dist/lib/i18n/areas/dates.js.map +1 -0
- package/dist/lib/i18n/areas/docs-views.js +183 -0
- package/dist/lib/i18n/areas/docs-views.js.map +1 -0
- package/dist/lib/i18n/areas/feedback.js +75 -0
- package/dist/lib/i18n/areas/feedback.js.map +1 -0
- package/dist/lib/i18n/areas/formats.js +24 -0
- package/dist/lib/i18n/areas/formats.js.map +1 -0
- package/dist/lib/i18n/areas/forms.js +110 -0
- package/dist/lib/i18n/areas/forms.js.map +1 -0
- package/dist/lib/i18n/areas/keys.js +25 -0
- package/dist/lib/i18n/areas/keys.js.map +1 -0
- package/dist/lib/i18n/areas/markdown.js +136 -0
- package/dist/lib/i18n/areas/markdown.js.map +1 -0
- package/dist/lib/i18n/areas/move-rejected.js +14 -0
- package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
- package/dist/lib/i18n/areas/navigation.js +104 -0
- package/dist/lib/i18n/areas/navigation.js.map +1 -0
- package/dist/lib/i18n/areas/rbac.js +331 -0
- package/dist/lib/i18n/areas/rbac.js.map +1 -0
- package/dist/lib/i18n/emphasis.js +6 -0
- package/dist/lib/i18n/emphasis.js.map +1 -0
- package/dist/lib/i18n/number-format.js +9 -0
- package/dist/lib/i18n/number-format.js.map +1 -0
- package/dist/lib/i18n/plural.js +9 -0
- package/dist/lib/i18n/plural.js.map +1 -0
- package/dist/lib/i18n/provider.js +27 -0
- package/dist/lib/i18n/provider.js.map +1 -0
- package/dist/lib/i18n/strings.js +38 -0
- package/dist/lib/i18n/strings.js.map +1 -0
- package/dist/lib/icons.js +17 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/interactive-target.js +9 -0
- package/dist/lib/interactive-target.js.map +1 -0
- package/dist/lib/intl-cache.js +69 -0
- package/dist/lib/intl-cache.js.map +1 -0
- package/dist/lib/legal-document.js +37 -0
- package/dist/lib/legal-document.js.map +1 -0
- package/dist/lib/line-diff-model.js +51 -0
- package/dist/lib/line-diff-model.js.map +1 -0
- package/dist/lib/markdown/attachments.js +71 -0
- package/dist/lib/markdown/attachments.js.map +1 -0
- package/dist/lib/markdown/caret-map.js +153 -0
- package/dist/lib/markdown/caret-map.js.map +1 -0
- package/dist/lib/markdown/caret.js +35 -0
- package/dist/lib/markdown/caret.js.map +1 -0
- package/dist/lib/markdown/commands.js +443 -0
- package/dist/lib/markdown/commands.js.map +1 -0
- package/dist/lib/markdown/convert.js +153 -0
- package/dist/lib/markdown/convert.js.map +1 -0
- package/dist/lib/markdown/dom.js +89 -0
- package/dist/lib/markdown/dom.js.map +1 -0
- package/dist/lib/markdown/edit.js +92 -0
- package/dist/lib/markdown/edit.js.map +1 -0
- package/dist/lib/markdown/history.js +79 -0
- package/dist/lib/markdown/history.js.map +1 -0
- package/dist/lib/markdown/hotkeys.js +63 -0
- package/dist/lib/markdown/hotkeys.js.map +1 -0
- package/dist/lib/markdown/image-pipeline.js +236 -0
- package/dist/lib/markdown/image-pipeline.js.map +1 -0
- package/dist/lib/markdown/images.js +85 -0
- package/dist/lib/markdown/images.js.map +1 -0
- package/dist/lib/markdown/input.js +210 -0
- package/dist/lib/markdown/input.js.map +1 -0
- package/dist/lib/markdown/keys.js +37 -0
- package/dist/lib/markdown/keys.js.map +1 -0
- package/dist/lib/markdown/paste.js +180 -0
- package/dist/lib/markdown/paste.js.map +1 -0
- package/dist/lib/markdown/position.js +111 -0
- package/dist/lib/markdown/position.js.map +1 -0
- package/dist/lib/markdown/project.js +108 -0
- package/dist/lib/markdown/project.js.map +1 -0
- package/dist/lib/markdown/reconcile.js +127 -0
- package/dist/lib/markdown/reconcile.js.map +1 -0
- package/dist/lib/markdown/surface.js +373 -0
- package/dist/lib/markdown/surface.js.map +1 -0
- package/dist/lib/motion.js +22 -0
- package/dist/lib/motion.js.map +1 -0
- package/dist/lib/pad.js +7 -0
- package/dist/lib/pad.js.map +1 -0
- package/dist/lib/paged-window/layout.js +15 -0
- package/dist/lib/paged-window/layout.js.map +1 -0
- package/dist/lib/paged-window/list-owner.js +21 -0
- package/dist/lib/paged-window/list-owner.js.map +1 -0
- package/dist/lib/paged-window/records-binding.js +239 -0
- package/dist/lib/paged-window/records-binding.js.map +1 -0
- package/dist/lib/paged-window/store.js +562 -0
- package/dist/lib/paged-window/store.js.map +1 -0
- package/dist/lib/paged-window/use-measured-pitch.js +38 -0
- package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
- package/dist/lib/paged-window/use-page-visibility.js +36 -0
- package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
- package/dist/lib/paged-window/use-paged-window.js +43 -0
- package/dist/lib/paged-window/use-paged-window.js.map +1 -0
- package/dist/lib/paged-window/use-scroll-root.js +12 -0
- package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
- package/dist/lib/persist.js +84 -0
- package/dist/lib/persist.js.map +1 -0
- package/dist/lib/preference-values.js +13 -0
- package/dist/lib/preference-values.js.map +1 -0
- package/dist/lib/preferences.js +86 -0
- package/dist/lib/preferences.js.map +1 -0
- package/dist/lib/reads/hooks.js +156 -0
- package/dist/lib/reads/hooks.js.map +1 -0
- package/dist/lib/reads/optimistic.js +169 -0
- package/dist/lib/reads/optimistic.js.map +1 -0
- package/dist/lib/reads/refetch.js +108 -0
- package/dist/lib/reads/refetch.js.map +1 -0
- package/dist/lib/reads/slots.js +215 -0
- package/dist/lib/reads/slots.js.map +1 -0
- package/dist/lib/realtime/hooks.js +40 -0
- package/dist/lib/realtime/hooks.js.map +1 -0
- package/dist/lib/realtime/provider.js +25 -0
- package/dist/lib/realtime/provider.js.map +1 -0
- package/dist/lib/realtime/registry.js +472 -0
- package/dist/lib/realtime/registry.js.map +1 -0
- package/dist/lib/records/define-record-type.js +33 -0
- package/dist/lib/records/define-record-type.js.map +1 -0
- package/dist/lib/records/hooks.js +39 -0
- package/dist/lib/records/hooks.js.map +1 -0
- package/dist/lib/records/store.js +572 -0
- package/dist/lib/records/store.js.map +1 -0
- package/dist/lib/records/wire.js +58 -0
- package/dist/lib/records/wire.js.map +1 -0
- package/dist/lib/reduced-motion-help.js +19 -0
- package/dist/lib/reduced-motion-help.js.map +1 -0
- package/dist/lib/scroll-caret.js +18 -0
- package/dist/lib/scroll-caret.js.map +1 -0
- package/dist/lib/sim/createSimStore.js +54 -0
- package/dist/lib/sim/createSimStore.js.map +1 -0
- package/dist/lib/sim/latency.js +28 -0
- package/dist/lib/sim/latency.js.map +1 -0
- package/dist/lib/sim/registry.js +13 -0
- package/dist/lib/sim/registry.js.map +1 -0
- package/dist/lib/sim/settings.js +41 -0
- package/dist/lib/sim/settings.js.map +1 -0
- package/dist/lib/submit-shortcut.js +25 -0
- package/dist/lib/submit-shortcut.js.map +1 -0
- package/dist/lib/syntax/index.js +33 -0
- package/dist/lib/syntax/index.js.map +1 -0
- package/dist/lib/syntax/languages/bash.js +77 -0
- package/dist/lib/syntax/languages/bash.js.map +1 -0
- package/dist/lib/syntax/languages/css.js +81 -0
- package/dist/lib/syntax/languages/css.js.map +1 -0
- package/dist/lib/syntax/languages/html.js +91 -0
- package/dist/lib/syntax/languages/html.js.map +1 -0
- package/dist/lib/syntax/languages/index.js +49 -0
- package/dist/lib/syntax/languages/index.js.map +1 -0
- package/dist/lib/syntax/languages/javascript.js +133 -0
- package/dist/lib/syntax/languages/javascript.js.map +1 -0
- package/dist/lib/syntax/languages/json.js +45 -0
- package/dist/lib/syntax/languages/json.js.map +1 -0
- package/dist/lib/syntax/languages/mongodb.js +24 -0
- package/dist/lib/syntax/languages/mongodb.js.map +1 -0
- package/dist/lib/syntax/languages/plain.js +10 -0
- package/dist/lib/syntax/languages/plain.js.map +1 -0
- package/dist/lib/syntax/languages/sql.js +113 -0
- package/dist/lib/syntax/languages/sql.js.map +1 -0
- package/dist/lib/syntax/languages/vue.js +31 -0
- package/dist/lib/syntax/languages/vue.js.map +1 -0
- package/dist/lib/syntax/languages/yaml.js +55 -0
- package/dist/lib/syntax/languages/yaml.js.map +1 -0
- package/dist/lib/syntax/markdown/grammar.js +52 -0
- package/dist/lib/syntax/markdown/grammar.js.map +1 -0
- package/dist/lib/syntax/markdown/inline.js +477 -0
- package/dist/lib/syntax/markdown/inline.js.map +1 -0
- package/dist/lib/syntax/markdown/parse.js +464 -0
- package/dist/lib/syntax/markdown/parse.js.map +1 -0
- package/dist/lib/syntax/markdown/refs.js +94 -0
- package/dist/lib/syntax/markdown/refs.js.map +1 -0
- package/dist/lib/syntax/markdown/render.js +230 -0
- package/dist/lib/syntax/markdown/render.js.map +1 -0
- package/dist/lib/syntax/markdown/spans.js +40 -0
- package/dist/lib/syntax/markdown/spans.js.map +1 -0
- package/dist/lib/syntax/registry.js +55 -0
- package/dist/lib/syntax/registry.js.map +1 -0
- package/dist/lib/syntax/tokenize.js +96 -0
- package/dist/lib/syntax/tokenize.js.map +1 -0
- package/dist/lib/time/instant.js +7 -0
- package/dist/lib/time/instant.js.map +1 -0
- package/dist/lib/time/plain.js +83 -0
- package/dist/lib/time/plain.js.map +1 -0
- package/dist/lib/time/relativeAge.js +20 -0
- package/dist/lib/time/relativeAge.js.map +1 -0
- package/dist/lib/time/relativeClock.js +59 -0
- package/dist/lib/time/relativeClock.js.map +1 -0
- package/dist/lib/time/types.js +23 -0
- package/dist/lib/time/types.js.map +1 -0
- package/dist/lib/time/zone.js +148 -0
- package/dist/lib/time/zone.js.map +1 -0
- package/dist/lib/use-controllable.js +16 -0
- package/dist/lib/use-controllable.js.map +1 -0
- package/dist/lib/use-fill-height.js +49 -0
- package/dist/lib/use-fill-height.js.map +1 -0
- package/dist/lib/use-hydrated.js +14 -0
- package/dist/lib/use-hydrated.js.map +1 -0
- package/dist/lib/use-media-query.js +30 -0
- package/dist/lib/use-media-query.js.map +1 -0
- package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
- package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
- package/dist/lib/use-release-snap-drag.js +29 -0
- package/dist/lib/use-release-snap-drag.js.map +1 -0
- package/dist/lib/use-roving-options.js +18 -0
- package/dist/lib/use-roving-options.js.map +1 -0
- package/dist/lib/values/absent.js +5 -0
- package/dist/lib/values/absent.js.map +1 -0
- package/dist/lib/values/boolean.js +13 -0
- package/dist/lib/values/boolean.js.map +1 -0
- package/dist/lib/values/currency.js +23 -0
- package/dist/lib/values/currency.js.map +1 -0
- package/dist/lib/values/date.js +35 -0
- package/dist/lib/values/date.js.map +1 -0
- package/dist/lib/values/datetime.js +54 -0
- package/dist/lib/values/datetime.js.map +1 -0
- package/dist/lib/values/locale-date.js +60 -0
- package/dist/lib/values/locale-date.js.map +1 -0
- package/dist/lib/values/number.js +16 -0
- package/dist/lib/values/number.js.map +1 -0
- package/dist/pure.js +379 -0
- package/dist/pure.js.map +1 -0
- package/dist/styles.css +190 -0
- package/dist/theme.css +360 -0
- package/dist/types/components/Accordion.d.ts +15 -0
- package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
- package/dist/types/components/AppShell.d.ts +164 -0
- package/dist/types/components/Attention.d.ts +87 -0
- package/dist/types/components/Avatar.d.ts +154 -0
- package/dist/types/components/Badge.d.ts +131 -0
- package/dist/types/components/Board.d.ts +239 -0
- package/dist/types/components/Button.d.ts +208 -0
- package/dist/types/components/Callout.d.ts +163 -0
- package/dist/types/components/Card.d.ts +219 -0
- package/dist/types/components/Choice.d.ts +127 -0
- package/dist/types/components/CodeEditor.d.ts +86 -0
- package/dist/types/components/ColorPicker.d.ts +14 -0
- package/dist/types/components/Combobox.d.ts +43 -0
- package/dist/types/components/CommandPalette.d.ts +35 -0
- package/dist/types/components/ConcentricRing.d.ts +61 -0
- package/dist/types/components/ConnectionCard.d.ts +64 -0
- package/dist/types/components/ContextItemRow.d.ts +35 -0
- package/dist/types/components/CopyValue.d.ts +14 -0
- package/dist/types/components/CountBadge.d.ts +14 -0
- package/dist/types/components/DateCalendar.d.ts +30 -0
- package/dist/types/components/DateField.d.ts +29 -0
- package/dist/types/components/DatePicker.d.ts +20 -0
- package/dist/types/components/DateTimeText.d.ts +9 -0
- package/dist/types/components/DescriptionList.d.ts +40 -0
- package/dist/types/components/Dialog.d.ts +269 -0
- package/dist/types/components/DragDrop.d.ts +196 -0
- package/dist/types/components/Drawer.d.ts +163 -0
- package/dist/types/components/EditGutter.d.ts +44 -0
- package/dist/types/components/EmojiPicker.d.ts +30 -0
- package/dist/types/components/ErrorBoundary.d.ts +43 -0
- package/dist/types/components/Field.d.ts +37 -0
- package/dist/types/components/FileUpload.d.ts +22 -0
- package/dist/types/components/FilterMenu.d.ts +120 -0
- package/dist/types/components/GatesSection.d.ts +79 -0
- package/dist/types/components/Icon.d.ts +40 -0
- package/dist/types/components/IconButton.d.ts +69 -0
- package/dist/types/components/IconStack.d.ts +28 -0
- package/dist/types/components/ImageUploadField.d.ts +38 -0
- package/dist/types/components/InlineEdit.d.ts +183 -0
- package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
- package/dist/types/components/Input.d.ts +128 -0
- package/dist/types/components/LegalDocument.d.ts +23 -0
- package/dist/types/components/LineDiff.d.ts +53 -0
- package/dist/types/components/ListHeader.d.ts +45 -0
- package/dist/types/components/Loading.d.ts +131 -0
- package/dist/types/components/Markdown.d.ts +35 -0
- package/dist/types/components/MarkdownEditor.d.ts +129 -0
- package/dist/types/components/Menu.d.ts +157 -0
- package/dist/types/components/Navigation.d.ts +67 -0
- package/dist/types/components/NumberInput.d.ts +177 -0
- package/dist/types/components/OTPInput.d.ts +13 -0
- package/dist/types/components/OrderedEntityManager.d.ts +64 -0
- package/dist/types/components/PagedWindowList.d.ts +23 -0
- package/dist/types/components/PaginationBar.d.ts +31 -0
- package/dist/types/components/Panel.d.ts +94 -0
- package/dist/types/components/PasswordInput.d.ts +7 -0
- package/dist/types/components/PasswordRequirements.d.ts +11 -0
- package/dist/types/components/PatchDiff.d.ts +38 -0
- package/dist/types/components/PendingVeil.d.ts +8 -0
- package/dist/types/components/Popover.d.ts +231 -0
- package/dist/types/components/Progress.d.ts +580 -0
- package/dist/types/components/RatingScale.d.ts +30 -0
- package/dist/types/components/ReadMore.d.ts +26 -0
- package/dist/types/components/RecordCard.d.ts +413 -0
- package/dist/types/components/RelativeTime.d.ts +17 -0
- package/dist/types/components/SandboxedFrame.d.ts +37 -0
- package/dist/types/components/SearchInput.d.ts +6 -0
- package/dist/types/components/SecretField.d.ts +90 -0
- package/dist/types/components/SectionNav.d.ts +15 -0
- package/dist/types/components/Select.d.ts +53 -0
- package/dist/types/components/SequenceDiagram.d.ts +15 -0
- package/dist/types/components/SettingRow.d.ts +144 -0
- package/dist/types/components/SignOffRings.d.ts +29 -0
- package/dist/types/components/Slider.d.ts +255 -0
- package/dist/types/components/SolutionChoice.d.ts +49 -0
- package/dist/types/components/SortMenu.d.ts +45 -0
- package/dist/types/components/Spinner.d.ts +29 -0
- package/dist/types/components/Stat.d.ts +136 -0
- package/dist/types/components/StatusSelect.d.ts +93 -0
- package/dist/types/components/Surface.d.ts +145 -0
- package/dist/types/components/Table.d.ts +164 -0
- package/dist/types/components/Tabs.d.ts +142 -0
- package/dist/types/components/ThemeMenu.d.ts +56 -0
- package/dist/types/components/Toast.d.ts +63 -0
- package/dist/types/components/Toggle.d.ts +168 -0
- package/dist/types/components/ToggleMatrix.d.ts +51 -0
- package/dist/types/components/Tree.d.ts +20 -0
- package/dist/types/components/TriStateSwitch.d.ts +63 -0
- package/dist/types/components/VideoPlayer.d.ts +26 -0
- package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
- package/dist/types/components/auth/AuthLayout.d.ts +12 -0
- package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
- package/dist/types/components/auth/LoginForm.d.ts +13 -0
- package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
- package/dist/types/components/auth/SignInProviders.d.ts +56 -0
- package/dist/types/components/auth/SignupCard.d.ts +62 -0
- package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
- package/dist/types/components/auth/index.d.ts +8 -0
- package/dist/types/components/board/context.d.ts +65 -0
- package/dist/types/components/board/recipe.d.ts +97 -0
- package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
- package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
- package/dist/types/components/calendar/EventActions.d.ts +16 -0
- package/dist/types/components/calendar/format.d.ts +42 -0
- package/dist/types/components/calendar/palette.d.ts +17 -0
- package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
- package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
- package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
- package/dist/types/components/calendar/use-now.d.ts +20 -0
- package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
- package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
- package/dist/types/components/card-face/CardFace.d.ts +106 -0
- package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
- package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
- package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
- package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
- package/dist/types/components/card-face/TapTip.d.ts +15 -0
- package/dist/types/components/card-face/hit-area.d.ts +20 -0
- package/dist/types/components/card-face/vocabulary.d.ts +83 -0
- package/dist/types/components/chart/BarList.d.ts +27 -0
- package/dist/types/components/chart/LineChart.d.ts +64 -0
- package/dist/types/components/chart/ShareBar.d.ts +26 -0
- package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
- package/dist/types/components/chart/label-metrics.d.ts +9 -0
- package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
- package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
- package/dist/types/components/chart/line-series-style.d.ts +14 -0
- package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
- package/dist/types/components/chart/shared.d.ts +122 -0
- package/dist/types/components/chart/time-series-scale.d.ts +29 -0
- package/dist/types/components/chat/Attachment.d.ts +125 -0
- package/dist/types/components/chat/Chat.d.ts +60 -0
- package/dist/types/components/chat/Composer.d.ts +62 -0
- package/dist/types/components/chat/ContextMeter.d.ts +45 -0
- package/dist/types/components/chat/EffortControl.d.ts +23 -0
- package/dist/types/components/chat/FileCover.d.ts +14 -0
- package/dist/types/components/chat/Message.d.ts +66 -0
- package/dist/types/components/chat/MessageScroller.d.ts +18 -0
- package/dist/types/components/chat/ModelSelector.d.ts +44 -0
- package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
- package/dist/types/components/chat/download-file.d.ts +7 -0
- package/dist/types/components/chat/file-icon.d.ts +29 -0
- package/dist/types/components/chat/types.d.ts +165 -0
- package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
- package/dist/types/components/checklist/index.d.ts +3 -0
- package/dist/types/components/checklist/tally.d.ts +19 -0
- package/dist/types/components/checklist/types.d.ts +28 -0
- package/dist/types/components/code-editor/context.d.ts +32 -0
- package/dist/types/components/code-editor/editing.d.ts +39 -0
- package/dist/types/components/code-editor/highlight.d.ts +20 -0
- package/dist/types/components/code-editor/recipe.d.ts +109 -0
- package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
- package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
- package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
- package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
- package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
- package/dist/types/components/drag-drop/context.d.ts +85 -0
- package/dist/types/components/drag-drop/recipe.d.ts +163 -0
- package/dist/types/components/drag-drop/shift.d.ts +153 -0
- package/dist/types/components/edit/activation.d.ts +21 -0
- package/dist/types/components/edit/outcome.d.ts +29 -0
- package/dist/types/components/edit/use-edit-session.d.ts +77 -0
- package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
- package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
- package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
- package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
- package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
- package/dist/types/components/file-viewer/frames.d.ts +28 -0
- package/dist/types/components/file-viewer/index.d.ts +3 -0
- package/dist/types/components/file-viewer/types.d.ts +70 -0
- package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
- package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
- package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
- package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
- package/dist/types/components/focus-web/index.d.ts +4 -0
- package/dist/types/components/focus-web/layout.d.ts +55 -0
- package/dist/types/components/focus-web/types.d.ts +131 -0
- package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
- package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
- package/dist/types/components/graph-explorer/index.d.ts +5 -0
- package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
- package/dist/types/components/graph-explorer/types.d.ts +62 -0
- package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
- package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
- package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
- package/dist/types/components/kanban/recipe.d.ts +73 -0
- package/dist/types/components/kanban/types.d.ts +55 -0
- package/dist/types/components/markdown/Affordances.d.ts +105 -0
- package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
- package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
- package/dist/types/components/media-error.d.ts +11 -0
- package/dist/types/components/nav-sections.d.ts +10 -0
- package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
- package/dist/types/components/node-canvas/index.d.ts +3 -0
- package/dist/types/components/node-canvas/layout.d.ts +29 -0
- package/dist/types/components/node-canvas/types.d.ts +207 -0
- package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
- package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
- package/dist/types/components/openapi/OperationCard.d.ts +33 -0
- package/dist/types/components/openapi/SchemaView.d.ts +14 -0
- package/dist/types/components/openapi/index.d.ts +6 -0
- package/dist/types/components/openapi/resolve.d.ts +72 -0
- package/dist/types/components/openapi/types.d.ts +128 -0
- package/dist/types/components/overlay-shell.d.ts +48 -0
- package/dist/types/components/overlay-stack.d.ts +18 -0
- package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
- package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
- package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
- package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
- package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
- package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
- package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
- package/dist/types/components/provenance/absence.d.ts +37 -0
- package/dist/types/components/provenance/index.d.ts +7 -0
- package/dist/types/components/provenance/types.d.ts +137 -0
- package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
- package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
- package/dist/types/components/rbac/AgentKeysList.d.ts +20 -0
- package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
- package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -0
- package/dist/types/components/rbac/Brand.d.ts +8 -0
- package/dist/types/components/rbac/Can.d.ts +19 -0
- package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
- package/dist/types/components/rbac/DangerZone.d.ts +8 -0
- package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
- package/dist/types/components/rbac/EndedLine.d.ts +21 -0
- package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
- package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
- package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
- package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
- package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
- package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
- package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
- package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
- package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
- package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
- package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
- package/dist/types/components/rbac/SessionsList.d.ts +35 -0
- package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
- package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
- package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
- package/dist/types/components/rbac/index.d.ts +25 -0
- package/dist/types/components/rbac/permissionSections.d.ts +8 -0
- package/dist/types/components/rbac/stagedForm.d.ts +25 -0
- package/dist/types/components/rbac/types.d.ts +65 -0
- package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
- package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
- package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
- package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
- package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
- package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
- package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
- package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
- package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
- package/dist/types/components/roadmap/derive.d.ts +39 -0
- package/dist/types/components/roadmap/index.d.ts +10 -0
- package/dist/types/components/roadmap/types.d.ts +86 -0
- package/dist/types/components/stepper/Stepper.d.ts +79 -0
- package/dist/types/components/stepper/derive.d.ts +49 -0
- package/dist/types/components/stepper/index.d.ts +3 -0
- package/dist/types/components/stepper/types.d.ts +118 -0
- package/dist/types/icons/data.d.ts +2054 -0
- package/dist/types/index.d.ts +209 -0
- package/dist/types/lib/attention.d.ts +62 -0
- package/dist/types/lib/board/anchor.d.ts +69 -0
- package/dist/types/lib/board/index.d.ts +17 -0
- package/dist/types/lib/board/model.d.ts +43 -0
- package/dist/types/lib/board/move.d.ts +181 -0
- package/dist/types/lib/board/position.d.ts +22 -0
- package/dist/types/lib/board/rejection.d.ts +8 -0
- package/dist/types/lib/board/types.d.ts +294 -0
- package/dist/types/lib/board/use-board.d.ts +47 -0
- package/dist/types/lib/calendar/band-packer.d.ts +53 -0
- package/dist/types/lib/calendar/drag.d.ts +125 -0
- package/dist/types/lib/calendar/index.d.ts +4 -0
- package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
- package/dist/types/lib/calendar/segments.d.ts +91 -0
- package/dist/types/lib/calendar/types.d.ts +166 -0
- package/dist/types/lib/chart-palette.d.ts +14 -0
- package/dist/types/lib/clipboard.d.ts +12 -0
- package/dist/types/lib/cn.d.ts +7 -0
- package/dist/types/lib/color.d.ts +14 -0
- package/dist/types/lib/component-guidance.d.ts +15 -0
- package/dist/types/lib/confidence.d.ts +28 -0
- package/dist/types/lib/date-timeline/scale.d.ts +143 -0
- package/dist/types/lib/design-frame/document.d.ts +39 -0
- package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
- package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
- package/dist/types/lib/design-frame/protocol.d.ts +78 -0
- package/dist/types/lib/dev-warn.d.ts +10 -0
- package/dist/types/lib/dnd/announce.d.ts +124 -0
- package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
- package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
- package/dist/types/lib/dnd/geometry.d.ts +126 -0
- package/dist/types/lib/dnd/index.d.ts +17 -0
- package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
- package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
- package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
- package/dist/types/lib/dnd/session.d.ts +124 -0
- package/dist/types/lib/dnd/types.d.ts +226 -0
- package/dist/types/lib/dnd/use-drag.d.ts +82 -0
- package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
- package/dist/types/lib/format.d.ts +33 -0
- package/dist/types/lib/group-in-order.d.ts +13 -0
- package/dist/types/lib/header-fold.d.ts +10 -0
- package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
- package/dist/types/lib/i18n/areas/board.d.ts +51 -0
- package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
- package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
- package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
- package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
- package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
- package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
- package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
- package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
- package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
- package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
- package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
- package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
- package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
- package/dist/types/lib/i18n/areas/rbac.d.ts +633 -0
- package/dist/types/lib/i18n/emphasis.d.ts +3 -0
- package/dist/types/lib/i18n/index.d.ts +10 -0
- package/dist/types/lib/i18n/number-format.d.ts +5 -0
- package/dist/types/lib/i18n/plural.d.ts +7 -0
- package/dist/types/lib/i18n/provider.d.ts +16 -0
- package/dist/types/lib/i18n/strings.d.ts +18 -0
- package/dist/types/lib/icons.d.ts +22 -0
- package/dist/types/lib/interactive-target.d.ts +3 -0
- package/dist/types/lib/intl-cache.d.ts +31 -0
- package/dist/types/lib/legal-document.d.ts +82 -0
- package/dist/types/lib/line-diff-model.d.ts +39 -0
- package/dist/types/lib/markdown/attachments.d.ts +50 -0
- package/dist/types/lib/markdown/caret-map.d.ts +69 -0
- package/dist/types/lib/markdown/caret.d.ts +6 -0
- package/dist/types/lib/markdown/commands.d.ts +186 -0
- package/dist/types/lib/markdown/convert.d.ts +99 -0
- package/dist/types/lib/markdown/dom.d.ts +30 -0
- package/dist/types/lib/markdown/edit.d.ts +16 -0
- package/dist/types/lib/markdown/history.d.ts +59 -0
- package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
- package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
- package/dist/types/lib/markdown/images.d.ts +138 -0
- package/dist/types/lib/markdown/input.d.ts +38 -0
- package/dist/types/lib/markdown/keys.d.ts +34 -0
- package/dist/types/lib/markdown/paste.d.ts +9 -0
- package/dist/types/lib/markdown/position.d.ts +43 -0
- package/dist/types/lib/markdown/project.d.ts +88 -0
- package/dist/types/lib/markdown/reconcile.d.ts +63 -0
- package/dist/types/lib/markdown/surface.d.ts +236 -0
- package/dist/types/lib/motion.d.ts +30 -0
- package/dist/types/lib/pad.d.ts +6 -0
- package/dist/types/lib/paged-window/index.d.ts +2 -0
- package/dist/types/lib/paged-window/layout.d.ts +21 -0
- package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
- package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
- package/dist/types/lib/paged-window/store.d.ts +307 -0
- package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
- package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
- package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
- package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
- package/dist/types/lib/persist.d.ts +57 -0
- package/dist/types/lib/preference-values.d.ts +72 -0
- package/dist/types/lib/preferences.d.ts +26 -0
- package/dist/types/lib/reads/hooks.d.ts +49 -0
- package/dist/types/lib/reads/index.d.ts +5 -0
- package/dist/types/lib/reads/optimistic.d.ts +119 -0
- package/dist/types/lib/reads/refetch.d.ts +83 -0
- package/dist/types/lib/reads/slots.d.ts +137 -0
- package/dist/types/lib/reads/types.d.ts +155 -0
- package/dist/types/lib/realtime/hooks.d.ts +38 -0
- package/dist/types/lib/realtime/index.d.ts +4 -0
- package/dist/types/lib/realtime/provider.d.ts +38 -0
- package/dist/types/lib/realtime/registry.d.ts +225 -0
- package/dist/types/lib/realtime/types.d.ts +242 -0
- package/dist/types/lib/records/define-record-type.d.ts +29 -0
- package/dist/types/lib/records/hooks.d.ts +46 -0
- package/dist/types/lib/records/index.d.ts +5 -0
- package/dist/types/lib/records/store.d.ts +289 -0
- package/dist/types/lib/records/types.d.ts +195 -0
- package/dist/types/lib/records/wire.d.ts +96 -0
- package/dist/types/lib/reduced-motion-help.d.ts +23 -0
- package/dist/types/lib/scroll-caret.d.ts +6 -0
- package/dist/types/lib/sim/createSimStore.d.ts +18 -0
- package/dist/types/lib/sim/index.d.ts +5 -0
- package/dist/types/lib/sim/latency.d.ts +10 -0
- package/dist/types/lib/sim/registry.d.ts +14 -0
- package/dist/types/lib/sim/settings.d.ts +11 -0
- package/dist/types/lib/sim/types.d.ts +3 -0
- package/dist/types/lib/submit-shortcut.d.ts +24 -0
- package/dist/types/lib/syntax/index.d.ts +16 -0
- package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
- package/dist/types/lib/syntax/languages/css.d.ts +1 -0
- package/dist/types/lib/syntax/languages/html.d.ts +17 -0
- package/dist/types/lib/syntax/languages/index.d.ts +33 -0
- package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
- package/dist/types/lib/syntax/languages/json.d.ts +1 -0
- package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
- package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
- package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
- package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
- package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
- package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
- package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
- package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
- package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
- package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
- package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
- package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
- package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
- package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
- package/dist/types/lib/syntax/registry.d.ts +37 -0
- package/dist/types/lib/syntax/tokenize.d.ts +17 -0
- package/dist/types/lib/syntax/types.d.ts +119 -0
- package/dist/types/lib/time/index.d.ts +4 -0
- package/dist/types/lib/time/instant.d.ts +2 -0
- package/dist/types/lib/time/plain.d.ts +61 -0
- package/dist/types/lib/time/relativeAge.d.ts +18 -0
- package/dist/types/lib/time/relativeClock.d.ts +8 -0
- package/dist/types/lib/time/types.d.ts +87 -0
- package/dist/types/lib/time/zone.d.ts +106 -0
- package/dist/types/lib/use-controllable.d.ts +14 -0
- package/dist/types/lib/use-fill-height.d.ts +26 -0
- package/dist/types/lib/use-hydrated.d.ts +8 -0
- package/dist/types/lib/use-media-query.d.ts +29 -0
- package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
- package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
- package/dist/types/lib/use-roving-options.d.ts +10 -0
- package/dist/types/lib/values/absent.d.ts +7 -0
- package/dist/types/lib/values/boolean.d.ts +29 -0
- package/dist/types/lib/values/currency.d.ts +22 -0
- package/dist/types/lib/values/date.d.ts +30 -0
- package/dist/types/lib/values/datetime.d.ts +48 -0
- package/dist/types/lib/values/index.d.ts +5 -0
- package/dist/types/lib/values/locale-date.d.ts +34 -0
- package/dist/types/lib/values/number.d.ts +27 -0
- package/dist/types/pure.d.ts +48 -0
- package/package.json +136 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sources":["../../../src/components/openapi/resolve.ts"],"sourcesContent":["import { collator } from \"../../lib/intl-cache\";\nimport { HTTP_METHODS } from \"./types\";\nimport type {\n HttpMethod,\n OpenApiDocument,\n OpenApiParameter,\n OpenApiPathItem,\n OpenApiSchema,\n OperationGroup,\n ResolvedOperation,\n} from \"./types\";\n\n/* ============================================================================\n OPENAPI VIEWER — pure resolution logic (DX-3668)\n\n Kept apart from any component so grouping, `$ref` resolution and example\n synthesis are each a plain function of data in, data out — unit-testable\n with no DOM, and reusable by a future non-React consumer (the same split\n `focus-web/layout.ts` makes from `FocusWeb.tsx`).\n ========================================================================= */\n\nconst HTTP_METHOD_SET: ReadonlySet<string> = new Set(HTTP_METHODS as unknown as readonly string[]);\n\nexport function isHttpMethod(key: string): key is HttpMethod {\n return HTTP_METHOD_SET.has(key);\n}\n\n/**\n * Resolves a single `{ $ref: \"#/components/schemas/Foo\" }` against the\n * document's `components.schemas`, one hop. Only the LOCAL `#/components/…`\n * form is supported — an external or remote `$ref` is a shape this\n * component's producers (danxbot's own generators) never emit, and resolving\n * one would mean a network fetch this pure function cannot make; it is\n * returned unresolved (`{ $ref, unresolved: true }`) instead of thrown, so a\n * viewer degrades to showing the raw pointer rather than crashing the page.\n */\nexport interface SchemaResolution {\n readonly schema: OpenApiSchema;\n /** The `$ref` this schema came from, when it was one. */\n readonly ref?: string;\n /** True when `ref` pointed somewhere this function could not follow (a\n * non-local ref, or a name absent from `components.schemas`). */\n readonly unresolved?: boolean;\n}\n\nconst LOCAL_SCHEMA_REF = /^#\\/components\\/schemas\\/([^/]+)$/;\n\n/**\n * Follows `$ref` chains until it reaches a non-`$ref` schema, a document\n * boundary, or a cycle — a schema that refers back to one already on the\n * current chain renders as `unresolved` rather than looping forever (a\n * self-referential \"Tree\"-shaped schema, e.g. `TaskInput.subtasks: Task[]`,\n * is common enough that this is a real case, not a defensive nicety).\n */\nexport function resolveSchema(\n doc: Pick<OpenApiDocument, \"components\">,\n schema: OpenApiSchema | undefined,\n seen: ReadonlySet<string> = new Set(),\n): SchemaResolution | undefined {\n if (!schema) return undefined;\n const ref = schema.$ref;\n if (typeof ref !== \"string\") return { schema };\n\n const match = LOCAL_SCHEMA_REF.exec(ref);\n if (!match) return { schema, ref, unresolved: true };\n if (seen.has(ref)) return { schema, ref, unresolved: true };\n\n const named = doc.components?.schemas?.[match[1]];\n if (!named) return { schema, ref, unresolved: true };\n\n const next = resolveSchema(doc, named, new Set([...seen, ref]));\n return next ? { ...next, ref } : { schema: named, ref };\n}\n\n/**\n * `PathItem`-level parameters merged with the operation's own — 3.1 §4.8.10:\n * \"If a parameter is already defined at the Path Item, the new definition\n * will override it, but can never remove it\", matched by `name`+`in`. Path\n * parameters win because an operation that redeclares one is documenting it\n * more specifically, never withdrawing it.\n */\nexport function mergedParameters(\n pathParameters: readonly OpenApiParameter[],\n operationParameters: readonly OpenApiParameter[] | undefined,\n): OpenApiParameter[] {\n const ownKeys = new Set((operationParameters ?? []).map((p) => `${p.in}:${p.name}`));\n const inherited = pathParameters.filter((p) => !ownKeys.has(`${p.in}:${p.name}`));\n return [...inherited, ...(operationParameters ?? [])];\n}\n\n/** The one word `groupOperations` needs; the viewer passes `useUiStrings().openApiViewer`. */\nexport interface GroupOperationsStrings {\n untaggedGroup: string;\n}\n\n/**\n * Groups every operation by tag, falling back to the first path segment ONLY\n * when the document declares no tag on any operation at all — a document\n * that tags SOME operations and not others puts the untagged remainder in\n * `strings.untaggedGroup` rather than silently switching the whole document to path-based\n * grouping, so a partially-tagged spec still reads as \"the author meant to\n * group by tag\". Groups are ordered the way `locale` sorts their names (DX-4740).\n */\nexport function groupOperations(doc: OpenApiDocument, strings: GroupOperationsStrings, locale: string): OperationGroup[] {\n const resolved = Object.entries(doc.paths).flatMap(([path, item]) => resolvePathItem(path, item));\n\n const anyTagged = resolved.some((r) => (r.operation.tags?.length ?? 0) > 0);\n const tagDescriptions = new Map((doc.tags ?? []).map((t) => [t.name, t.description]));\n\n const groups = new Map<string, ResolvedOperation[]>();\n for (const r of resolved) {\n const names = anyTagged\n ? r.operation.tags?.length\n ? r.operation.tags\n : [strings.untaggedGroup]\n : [firstPathSegment(r.path)];\n for (const name of names) {\n const existing = groups.get(name);\n if (existing) existing.push(r);\n else groups.set(name, [r]);\n }\n }\n\n return [...groups.entries()]\n .sort(([a], [b]) => collator(locale).compare(a, b))\n .map(([name, operations]) => ({ name, description: tagDescriptions.get(name), operations }));\n}\n\n/** Every operation one Path Item carries, paired with its method and `path`. */\nfunction resolvePathItem(path: string, item: OpenApiPathItem, webhook?: true): ResolvedOperation[] {\n const pathParameters = item.parameters ?? [];\n const out: ResolvedOperation[] = [];\n for (const key of Object.keys(item)) {\n if (!isHttpMethod(key)) continue;\n const operation = item[key];\n if (!operation) continue;\n out.push({ method: key, path, operation, pathParameters, ...(webhook && { webhook }) });\n }\n return out;\n}\n\n/**\n * Every operation of the document's top-level `webhooks` (DX-4178), in\n * document order, each carrying its webhook NAME as `path` and `webhook:\n * true`. Webhooks are not grouped by tag: they are a short, named list of the\n * calls a consumer must receive, shown as their own section.\n */\nexport function resolveWebhooks(doc: OpenApiDocument): ResolvedOperation[] {\n return Object.entries(doc.webhooks ?? {}).flatMap(([name, item]) => resolvePathItem(name, item, true));\n}\n\nfunction firstPathSegment(path: string): string {\n const segment = path.split(\"/\").find((s) => s.length > 0 && !s.startsWith(\"{\"));\n return segment ?? \"/\";\n}\n\n/** A stable per-operation id for a deep link / anchor — same input, same id,\n * across renders and across documents (used as both the section `id` and the\n * `#fragment` a \"copy link\" control writes). */\nexport function operationAnchorId(method: HttpMethod, path: string, webhook?: boolean): string {\n const slug = path\n .toLowerCase()\n .replace(/[{}]/g, \"\")\n .replace(/[^a-z0-9/]+/g, \"-\")\n .replace(/\\/+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n // I18N-ALLOW: anchor id built from the operation kind, method and path slug\n return `${webhook ? \"webhook\" : \"operation\"}-${method}-${slug}`;\n}\n\n/** `operationAnchorId` for a resolved operation — the one place a caller\n * cannot forget the webhook namespace. */\nexport function resolvedAnchorId(resolved: ResolvedOperation): string {\n return operationAnchorId(resolved.method, resolved.path, resolved.webhook);\n}\n\nconst EXAMPLE_DEPTH_LIMIT = 6;\n\n/**\n * Synthesises a representative JSON value from a schema when the document\n * supplies no explicit `example`/`examples` — the same fallback every\n * OpenAPI-viewing tool makes, because a schema-only operation (which is most\n * of danxbot's own generated spec today) would otherwise have no example\n * tab at all. `depth` guards a self-referential schema (`resolveSchema`\n * already breaks `$ref` cycles; a schema can still recurse structurally,\n * e.g. `additionalProperties: <self>`, without ever repeating a `$ref`).\n */\nexport function schemaToExample(\n doc: Pick<OpenApiDocument, \"components\">,\n schema: OpenApiSchema | undefined,\n depth = 0,\n): unknown {\n if (!schema || depth > EXAMPLE_DEPTH_LIMIT) return undefined;\n if (\"example\" in schema) return schema.example;\n if (Array.isArray(schema.examples) && schema.examples.length > 0) return schema.examples[0];\n if (\"default\" in schema) return schema.default;\n if (\"const\" in schema) return schema.const;\n if (Array.isArray(schema.enum) && schema.enum.length > 0) return schema.enum[0];\n\n const resolution = resolveSchema(doc, schema);\n const resolvedSchema = resolution?.unresolved ? schema : (resolution?.schema ?? schema);\n if (resolvedSchema !== schema && resolvedSchema.$ref === undefined) {\n return schemaToExample(doc, resolvedSchema, depth);\n }\n\n for (const combiner of [\"allOf\", \"oneOf\", \"anyOf\"] as const) {\n const variants = schema[combiner];\n if (Array.isArray(variants) && variants.length > 0) {\n if (combiner === \"allOf\") {\n return variants.reduce<Record<string, unknown>>((acc, v) => {\n const part = schemaToExample(doc, v as OpenApiSchema, depth + 1);\n return part && typeof part === \"object\" ? { ...acc, ...part } : acc;\n }, {});\n }\n return schemaToExample(doc, variants[0] as OpenApiSchema, depth + 1);\n }\n }\n\n const type = schema.type;\n if (type === \"object\" || (schema.properties && type === undefined)) {\n const properties = (schema.properties ?? {}) as Record<string, OpenApiSchema>;\n const out: Record<string, unknown> = {};\n for (const [key, propSchema] of Object.entries(properties)) {\n out[key] = schemaToExample(doc, propSchema, depth + 1);\n }\n return out;\n }\n if (type === \"array\") {\n const items = schema.items as OpenApiSchema | undefined;\n return items ? [schemaToExample(doc, items, depth + 1)] : [];\n }\n // I18N-ALLOW: JSON Schema type name shown as the schema document spells it\n if (type === \"string\") return typeof schema.format === \"string\" ? `<${schema.format}>` : \"string\";\n if (type === \"integer\") return 0;\n if (type === \"number\") return 0;\n if (type === \"boolean\") return true;\n if (type === \"null\") return null;\n return undefined;\n}\n"],"names":["HTTP_METHOD_SET","HTTP_METHODS","isHttpMethod","key","LOCAL_SCHEMA_REF","resolveSchema","doc","schema","seen","ref","match","named","next","mergedParameters","pathParameters","operationParameters","ownKeys","p","groupOperations","strings","locale","resolved","path","item","resolvePathItem","anyTagged","r","tagDescriptions","t","groups","names","firstPathSegment","name","existing","a","b","collator","operations","webhook","out","operation","resolveWebhooks","s","operationAnchorId","method","slug","resolvedAnchorId","EXAMPLE_DEPTH_LIMIT","schemaToExample","depth","resolution","resolvedSchema","combiner","variants","acc","v","part","type","properties","propSchema","items"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../src/components/openapi/types.ts"],"sourcesContent":["/* ============================================================================\n OPENAPI VIEWER — types (DX-3668)\n\n A DELIBERATELY LOOSE SUBSET OF OPENAPI 3.1, not a validating parser. This\n package renders a document a server already generated and already trusts;\n re-validating it here would be a second copy of whatever schema the\n producer enforces, and the two would drift the way every duplicated\n contract does. Every JSON Schema-shaped field is typed as\n `OpenApiSchema = Record<string, unknown>` with narrow, defensive reads in\n `resolve.ts` and `SchemaView` — a document that omits an optional field, or\n carries a vendor extension this package has never heard of, still renders\n instead of throwing.\n\n `OpenApiDocument` intentionally accepts both 3.0 and 3.1 shapes: 3.1 folds\n `nullable`/`example` into JSON Schema proper, but a consumer's generator\n may still be on 3.0 vocabulary, and telling the two apart is not this\n component's job — `resolve.ts` reads both.\n ========================================================================= */\n\n/** A JSON Schema node (or an OpenAPI \"Schema Object\", which 3.1 defines as\n * one). Loose on purpose — see the file header. */\nexport type OpenApiSchema = Record<string, unknown>;\n\nexport type OpenApiParameterLocation = \"path\" | \"query\" | \"header\" | \"cookie\";\n\nexport interface OpenApiParameter {\n readonly name: string;\n readonly in: OpenApiParameterLocation;\n readonly required?: boolean;\n readonly deprecated?: boolean;\n readonly description?: string;\n readonly schema?: OpenApiSchema;\n readonly example?: unknown;\n}\n\nexport interface OpenApiMediaType {\n readonly schema?: OpenApiSchema;\n readonly example?: unknown;\n readonly examples?: Record<string, { readonly summary?: string; readonly value?: unknown }>;\n}\n\nexport interface OpenApiRequestBody {\n readonly required?: boolean;\n readonly description?: string;\n readonly content: Record<string, OpenApiMediaType>;\n}\n\nexport interface OpenApiResponse {\n readonly description: string;\n readonly content?: Record<string, OpenApiMediaType>;\n}\n\n/** `{securitySchemeName: scopes[]}` — one alternative a caller may satisfy.\n * An operation's `security` is an array of these; several entries in the\n * SAME object mean \"all of these together\", several objects in the array\n * mean \"any one of these\". An empty array (`[]` on the operation) means\n * \"no security\" and overrides the document-level default. */\nexport type OpenApiSecurityRequirement = Record<string, readonly string[]>;\n\nexport interface OpenApiOperation {\n readonly operationId?: string;\n readonly summary?: string;\n readonly description?: string;\n readonly tags?: readonly string[];\n readonly deprecated?: boolean;\n readonly parameters?: readonly OpenApiParameter[];\n readonly requestBody?: OpenApiRequestBody;\n readonly responses: Record<string, OpenApiResponse>;\n readonly security?: readonly OpenApiSecurityRequirement[];\n /** Vendor extensions (`x-...`) ride along unread by name, so a caller can\n * still reach `operation[\"x-served-by\"]` off the resolved operation this\n * package hands back from `groupOperations`. */\n readonly [extension: `x-${string}`]: unknown;\n}\n\nexport const HTTP_METHODS = [\"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\", \"trace\"] as const;\nexport type HttpMethod = (typeof HTTP_METHODS)[number];\n\nexport type OpenApiPathItem = Partial<Record<HttpMethod, OpenApiOperation>> & {\n readonly summary?: string;\n readonly description?: string;\n readonly parameters?: readonly OpenApiParameter[];\n};\n\nexport interface OpenApiSecurityScheme {\n readonly type: \"http\" | \"apiKey\" | \"oauth2\" | \"openIdConnect\" | \"mutualTLS\";\n readonly scheme?: string;\n readonly bearerFormat?: string;\n readonly in?: \"query\" | \"header\" | \"cookie\";\n readonly name?: string;\n readonly description?: string;\n readonly openIdConnectUrl?: string;\n readonly flows?: Record<string, { readonly scopes?: Record<string, string> }>;\n}\n\nexport interface OpenApiTag {\n readonly name: string;\n readonly description?: string;\n}\n\nexport interface OpenApiDocument {\n readonly openapi: string;\n readonly info: {\n readonly title: string;\n readonly version: string;\n readonly description?: string;\n };\n readonly servers?: readonly { readonly url: string; readonly description?: string }[];\n readonly tags?: readonly OpenApiTag[];\n readonly paths: Record<string, OpenApiPathItem>;\n /** OpenAPI 3.1 top-level `webhooks` (DX-4178): calls the API's server\n * MAKES to a consumer, keyed by a name rather than a path. Each value is a\n * Path Item whose operations are the requests the consumer must receive. */\n readonly webhooks?: Record<string, OpenApiPathItem>;\n readonly components?: {\n readonly schemas?: Record<string, OpenApiSchema>;\n readonly securitySchemes?: Record<string, OpenApiSecurityScheme>;\n };\n readonly security?: readonly OpenApiSecurityRequirement[];\n}\n\n/** One operation, already paired with its method + path — `groupOperations`'s\n * output unit, and `OperationCard`'s own prop. Carrying `path`/`method`\n * alongside the raw `OpenApiOperation` means every renderer below the group\n * level can stay a pure function of \"one operation\", never reaching back up\n * for context its parent already had. */\nexport interface ResolvedOperation {\n readonly method: HttpMethod;\n readonly path: string;\n readonly operation: OpenApiOperation;\n /** Parameters declared on the shared `PathItem` (never overridden — 3.1\n * merges these with the operation's own, operation-level winning on a\n * `name`+`in` collision — see `resolve.ts#mergedParameters`). */\n readonly pathParameters: readonly OpenApiParameter[];\n /** DX-4178: true when this is an OpenAPI `webhooks` entry — `path` then\n * holds the webhook's NAME, not a URL path the API serves. A webhook has no\n * document-level default security (the document's `security` governs the\n * calls INTO the API, not the one a consumer's receiver is sent) and its\n * anchor id is namespaced apart from every path's. */\n readonly webhook?: true;\n}\n\n/** One tag/path group of operations, in document order. */\nexport interface OperationGroup {\n /** The tag name, or — when the document declares no tags at all on the\n * operations it carries — the first non-empty path segment (`resolve.ts`).\n * Never both in the same document: a document that tags ANY operation is\n * grouped by tag, with untagged operations falling into the group the\n * provider names (`openApiViewer.untaggedGroup`). */\n readonly name: string;\n readonly description?: string;\n readonly operations: readonly ResolvedOperation[];\n}\n"],"names":["HTTP_METHODS"],"mappings":"AA2EO,MAAMA,IAAe,CAAC,OAAO,OAAO,QAAQ,UAAU,WAAW,QAAQ,SAAS,OAAO;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { cn as t } from "../lib/cn.js";
|
|
2
|
+
function r(...a) {
|
|
3
|
+
return t(
|
|
4
|
+
"fixed inset-0 z-(--z-overlay) bg-scrim backdrop-blur-[2px]",
|
|
5
|
+
"transition-[var(--tx-colors),opacity] duration-(--dur-slower) ease-standard",
|
|
6
|
+
"data-starting-style:opacity-0",
|
|
7
|
+
"data-ending-style:opacity-0 data-ending-style:duration-(--dur-exit-slow)",
|
|
8
|
+
...a
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
const o = "dx-ground-overlay rounded-xl border border-border bg-surface-overlay shadow-xl outline-none", n = [
|
|
12
|
+
"transition-[var(--tx-colors),opacity,scale,translate] duration-(--dur-slower) ease-emphasis",
|
|
13
|
+
"data-ending-style:opacity-0 data-ending-style:duration-(--dur-exit-slow) data-ending-style:ease-exit"
|
|
14
|
+
], s = "dx-ground-overlay rounded-lg border border-border bg-surface-overlay shadow-lg outline-none", d = [
|
|
15
|
+
"origin-[var(--transform-origin)]",
|
|
16
|
+
"transition-[var(--tx-colors),opacity,scale,translate] duration-(--dur-slow) ease-emphasis",
|
|
17
|
+
"data-starting-style:scale-95 data-starting-style:-translate-y-1",
|
|
18
|
+
"data-ending-style:opacity-0 data-ending-style:duration-(--dur-exit) data-ending-style:ease-exit"
|
|
19
|
+
], i = "ml-auto flex flex-none items-center gap-1.5", l = "flex min-w-0 flex-1 items-center gap-1.5";
|
|
20
|
+
export {
|
|
21
|
+
d as ANCHORED_POPUP_MOTION,
|
|
22
|
+
s as ANCHORED_POPUP_SURFACE,
|
|
23
|
+
i as OVERLAY_HEADER_ACTIONS_CLASS,
|
|
24
|
+
l as OVERLAY_HEADER_ACTIONS_GROW_CLASS,
|
|
25
|
+
n as OVERLAY_POPUP_MOTION,
|
|
26
|
+
o as OVERLAY_POPUP_SURFACE,
|
|
27
|
+
r as overlayBackdropClassName
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=overlay-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-shell.js","sources":["../../src/components/overlay-shell.ts"],"sourcesContent":["import { cn } from \"../lib/cn\";\n\n/* ============================================================================\n OVERLAY SHELL — the chrome every full-screen overlay dims and floats a\n panel over, shared by `Dialog`, `CommandPalette`, and `AppShell`'s mobile\n drawer (DX-3254).\n\n These three used to hand-copy the same backdrop and popup-surface classes\n independently, and the copies drifted: `AppShell`'s backdrop silently lost\n `backdrop-blur-[2px]` at some point, with nothing to catch it since nothing\n compared the three. One definition here; each caller composes it with\n whatever is genuinely ITS OWN — position (centered vs. anchored vs. a side\n drawer), size, and its own starting-style transform, none of which this\n file tries to unify because they are the real differences between a modal,\n a palette, and a drawer.\n ========================================================================= */\n\n/**\n * The backdrop every overlay dims the page with. Callers may only ADD\n * classes (e.g. `AppShell`'s `lg:hidden`, scoping its copy to viewports\n * below the drawer breakpoint) — never override what is defined here, or the\n * three stop being the same backdrop again.\n */\nexport function overlayBackdropClassName(...extra: Array<string | false | null | undefined>): string {\n return cn(\n \"fixed inset-0 z-(--z-overlay) bg-scrim backdrop-blur-[2px]\",\n \"transition-[var(--tx-colors),opacity] duration-(--dur-slower) ease-standard\",\n \"data-starting-style:opacity-0\",\n \"data-ending-style:opacity-0 data-ending-style:duration-(--dur-exit-slow)\",\n ...extra,\n );\n}\n\n/** The floated panel's background/border/shadow — identical for `Dialog` and\n * `CommandPalette`, which both float a centered/anchored `rounded-xl` panel\n * (as opposed to `AppShell`'s edge-to-edge side drawer, which is genuinely\n * different chrome and keeps its own). */\nexport const OVERLAY_POPUP_SURFACE =\n \"dx-ground-overlay rounded-xl border border-border bg-surface-overlay shadow-xl outline-none\";\n\n/** The motion halves shared by every `OVERLAY_POPUP_SURFACE` consumer — the\n * entry transition and the exit half of the starting/ending-style pair. The\n * ENTRY starting-style stays per-caller (each panel enters from a slightly\n * different transform: `Dialog` scales in place, `CommandPalette` also\n * drifts up a couple pixels), so it is deliberately not included here. */\nexport const OVERLAY_POPUP_MOTION = [\n \"transition-[var(--tx-colors),opacity,scale,translate] duration-(--dur-slower) ease-emphasis\",\n \"data-ending-style:opacity-0 data-ending-style:duration-(--dur-exit-slow) data-ending-style:ease-exit\",\n];\n\n/** The surface of every popup ANCHORED to a control — `Menu`, `Select`,\n * `Combobox`, `MultiCombobox`, `Popover` (DX-4265). Same paint as\n * `OVERLAY_POPUP_SURFACE` minus the modal panel's radius, so the five\n * stop hand-copying it. `bg-surface-overlay` is opaque in both themes.\n * `dx-ground-overlay` tells the interaction ramp what the popup is painted ON:\n * without it every hover inside mixes from `--surface`, which on dark is two\n * ramp steps below `--surface-overlay`, so the hover fill lands DARKER than\n * the popup and reads as nothing happening (tokens.css). */\nexport const ANCHORED_POPUP_SURFACE =\n \"dx-ground-overlay rounded-lg border border-border bg-surface-overlay shadow-lg outline-none\";\n\n/** The motion every `ANCHORED_POPUP_SURFACE` consumer shares.\n *\n * DX-4265: ENTRY DOES NOT FADE. Opacity animates the whole element, background\n * included, so a popup that fades in is see-through for its first\n * `--dur-slow`: the page behind it reads through the option list. That is\n * invisible in dark, where popup and page are both near-black, and obvious in\n * light, where the list is white text-on-white over page text; it was filed as\n * \"the light popup is translucent\" when the surface token was opaque all along.\n * The popup arrives by scale + a one-step drift, opaque from the first frame.\n * EXIT still fades: a closing popup being see-through says \"leaving\". */\nexport const ANCHORED_POPUP_MOTION = [\n \"origin-[var(--transform-origin)]\",\n \"transition-[var(--tx-colors),opacity,scale,translate] duration-(--dur-slow) ease-emphasis\",\n \"data-starting-style:scale-95 data-starting-style:-translate-y-1\",\n \"data-ending-style:opacity-0 data-ending-style:duration-(--dur-exit) data-ending-style:ease-exit\",\n];\n\n/**\n * DXUI-93: the host's own controls in a `Dialog` or `Drawer` header (`headerActions`), pushed to the row's end beside the close\n * button. They sit OUTSIDE the title element, so they are no part of the overlay's accessible name.\n */\nexport const OVERLAY_HEADER_ACTIONS_CLASS = \"ml-auto flex flex-none items-center gap-1.5\";\n\n/**\n * DXUI-94: `headerActionsGrow`: the host's controls fill the row beside the title (start-aligned, truncating inside it) instead of hugging\n * the close button. The title block then takes only the room its content needs, so the controls get the rest.\n */\nexport const OVERLAY_HEADER_ACTIONS_GROW_CLASS = \"flex min-w-0 flex-1 items-center gap-1.5\";\n"],"names":["overlayBackdropClassName","extra","cn","OVERLAY_POPUP_SURFACE","OVERLAY_POPUP_MOTION","ANCHORED_POPUP_SURFACE","ANCHORED_POPUP_MOTION","OVERLAY_HEADER_ACTIONS_CLASS","OVERLAY_HEADER_ACTIONS_GROW_CLASS"],"mappings":";AAuBO,SAASA,KAA4BC,GAAyD;AACnG,SAAOC;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAGD;AAAA,EAAA;AAEP;AAMO,MAAME,IACX,+FAOWC,IAAuB;AAAA,EAClC;AAAA,EACA;AACF,GAUaC,IACX,+FAYWC,IAAwB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMaC,IAA+B,+CAM/BC,IAAoC;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createContext as s } from "react";
|
|
2
|
+
const n = s([]), t = /* @__PURE__ */ new Set();
|
|
3
|
+
function p(e) {
|
|
4
|
+
return t.add(e), () => {
|
|
5
|
+
t.delete(e);
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
function v(e) {
|
|
9
|
+
for (const r of [...t])
|
|
10
|
+
e.includes(r.scope) || r.close();
|
|
11
|
+
}
|
|
12
|
+
function f(e) {
|
|
13
|
+
const r = [...t].filter((o) => e.includes(o.scope));
|
|
14
|
+
for (const o of r)
|
|
15
|
+
o.covers += 1, o.setCovered(!0);
|
|
16
|
+
return () => {
|
|
17
|
+
for (const o of r)
|
|
18
|
+
o.covers -= 1, o.setCovered(o.covers > 0);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
n as PopoverScopeContext,
|
|
23
|
+
f as coverPopovers,
|
|
24
|
+
v as dismissPopoversOutside,
|
|
25
|
+
p as registerOpenPopover
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=overlay-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-stack.js","sources":["../../src/components/overlay-stack.ts"],"sourcesContent":["import { createContext } from \"react\";\n\n/* ============================================================================\n OVERLAY STACK — what a Dialog does to the Popovers that are open when it opens.\n (DX-4398)\n\n A Popover sits at `--z-popover` (500), ABOVE a Dialog's `--z-modal` (400), on\n purpose: a select or a menu opened from inside a dialog must render above it.\n The price is a defect found by opening the file viewer from a button inside a\n Popover: the viewer was drawn BENEATH the popover that opened it, which stayed\n open on top of a full-screen dialog. That is true of every dialog opened from a\n popover, so it is fixed here, once, rather than by the viewer.\n\n THE RULE: a Dialog that opens supersedes the Popovers open at that moment. A\n modal takes the reader's attention; the transient panel that launched it has\n done its job. A Popover opened AFTER the dialog (the dialog's own select, the\n viewer's overflow menu) is not affected: it opens later and is above it.\n\n THE ONES THE DIALOG LIVES INSIDE ARE COVERED, NOT CLOSED. A Dialog rendered\n inside a Popover's content (a chat panel in a popover that opens a file viewer)\n would be unmounted with it, so closing that popover would close the dialog the\n moment it opened. But leaving it open covers the dialog, because a popover is\n above a modal. So it is hidden (`visibility: hidden`, still mounted) for as long\n as a dialog inside it is open, and restored when the last one closes. Each\n Popover provides its scope down its content through `PopoverScopeContext`, and a\n Dialog reads the scopes it lives inside.\n ========================================================================= */\n\n/** The scopes of every Popover whose content the reader is inside, outermost first. */\nexport const PopoverScopeContext = createContext<readonly symbol[]>([]);\n\ninterface OpenPopover {\n scope: symbol;\n close: () => void;\n /** Hide or show the popover without unmounting it. */\n setCovered: (covered: boolean) => void;\n /** How many open dialogs inside it are covering it right now. */\n covers: number;\n}\n\nconst openPopovers = new Set<OpenPopover>();\n\n/** A Popover is open. Returns the call that says it no longer is. */\nexport function registerOpenPopover(entry: OpenPopover): () => void {\n openPopovers.add(entry);\n return () => {\n openPopovers.delete(entry);\n };\n}\n\n/** A Dialog is opening inside `ancestry`: close every open Popover outside it. */\nexport function dismissPopoversOutside(ancestry: readonly symbol[]): void {\n for (const popover of [...openPopovers]) {\n if (!ancestry.includes(popover.scope)) popover.close();\n }\n}\n\n/** A Dialog is open inside `ancestry`: hide those popovers until it closes.\n Returns the call that says it has. */\nexport function coverPopovers(ancestry: readonly symbol[]): () => void {\n const covered = [...openPopovers].filter((popover) => ancestry.includes(popover.scope));\n for (const popover of covered) {\n popover.covers += 1;\n popover.setCovered(true);\n }\n return () => {\n for (const popover of covered) {\n popover.covers -= 1;\n popover.setCovered(popover.covers > 0);\n }\n };\n}\n"],"names":["PopoverScopeContext","createContext","openPopovers","registerOpenPopover","entry","dismissPopoversOutside","ancestry","popover","coverPopovers","covered"],"mappings":";AA6BO,MAAMA,IAAsBC,EAAiC,CAAA,CAAE,GAWhEC,wBAAmB,IAAA;AAGlB,SAASC,EAAoBC,GAAgC;AAClE,SAAAF,EAAa,IAAIE,CAAK,GACf,MAAM;AACX,IAAAF,EAAa,OAAOE,CAAK;AAAA,EAC3B;AACF;AAGO,SAASC,EAAuBC,GAAmC;AACxE,aAAWC,KAAW,CAAC,GAAGL,CAAY;AACpC,IAAKI,EAAS,SAASC,EAAQ,KAAK,OAAW,MAAA;AAEnD;AAIO,SAASC,EAAcF,GAAyC;AACrE,QAAMG,IAAU,CAAC,GAAGP,CAAY,EAAE,OAAO,CAACK,MAAYD,EAAS,SAASC,EAAQ,KAAK,CAAC;AACtF,aAAWA,KAAWE;AACpB,IAAAF,EAAQ,UAAU,GAClBA,EAAQ,WAAW,EAAI;AAEzB,SAAO,MAAM;AACX,eAAWA,KAAWE;AACpB,MAAAF,EAAQ,UAAU,GAClBA,EAAQ,WAAWA,EAAQ,SAAS,CAAC;AAAA,EAEzC;AACF;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsxs as t, jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { cn as u } from "../../lib/cn.js";
|
|
3
|
+
import { Button as x } from "../Button.js";
|
|
4
|
+
import { useListOwner as f } from "../../lib/paged-window/list-owner.js";
|
|
5
|
+
const v = 0.1, h = 12;
|
|
6
|
+
function A(e) {
|
|
7
|
+
const r = Math.min(h, Math.round(e * v)), n = Math.max(1, e - r);
|
|
8
|
+
return {
|
|
9
|
+
backgroundImage: `repeating-linear-gradient(to bottom, var(--surface-raised) 0, var(--surface-raised) ${n}px, transparent ${n}px, transparent ${e}px)`
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function I({
|
|
13
|
+
page: e,
|
|
14
|
+
status: r,
|
|
15
|
+
children: n,
|
|
16
|
+
count: o,
|
|
17
|
+
height: d,
|
|
18
|
+
pitch: l,
|
|
19
|
+
blockRef: s,
|
|
20
|
+
errorText: c,
|
|
21
|
+
retryText: m,
|
|
22
|
+
onRetry: p
|
|
23
|
+
}) {
|
|
24
|
+
const a = r === "ready", g = f() !== null;
|
|
25
|
+
return /* @__PURE__ */ t(
|
|
26
|
+
"div",
|
|
27
|
+
{
|
|
28
|
+
ref: s,
|
|
29
|
+
"data-page": e,
|
|
30
|
+
"data-status": r,
|
|
31
|
+
"data-count": a ? o : void 0,
|
|
32
|
+
"aria-hidden": a || r === "error" ? void 0 : !0,
|
|
33
|
+
className: u("min-w-0 shrink-0", r === "loading" && "animate-pulse"),
|
|
34
|
+
style: a ? void 0 : { minHeight: d, ...r === "loading" ? A(l) : null },
|
|
35
|
+
children: [
|
|
36
|
+
a && n,
|
|
37
|
+
r === "error" && /* DX-5084: in a lane's `role="list"` the retry row is that list's one item
|
|
38
|
+
(a list may own only listitems); outside a lane it stands alone. */
|
|
39
|
+
/* @__PURE__ */ i("div", { role: g ? "listitem" : void 0, children: /* @__PURE__ */ t("div", { role: "alert", className: "flex items-center gap-2 px-3 py-2 text-xs text-danger-text", children: [
|
|
40
|
+
/* @__PURE__ */ i("span", { children: c }),
|
|
41
|
+
/* @__PURE__ */ i(x, { size: "sm", variant: "outline", onClick: p, children: m })
|
|
42
|
+
] }) })
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
I as PageBlock
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=PageBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageBlock.js","sources":["../../../src/components/paged-window/PageBlock.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode, Ref } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport type { BlockStatus } from \"../../lib/paged-window/layout\";\nimport { Button } from \"../Button\";\nimport { useListOwner } from \"../../lib/paged-window/list-owner\";\n\n/** The gap between loading rows as a share of one item's height, capped. */\nconst LOADING_GAP_RATIO = 0.1;\nconst LOADING_GAP_MAX_PX = 12;\n\n/** A faint row per expected item, drawn by one gradient so a 20-item page is still one element. */\nfunction loadingBackground(pitch: number): CSSProperties {\n const gap = Math.min(LOADING_GAP_MAX_PX, Math.round(pitch * LOADING_GAP_RATIO));\n const row = Math.max(1, pitch - gap);\n return {\n backgroundImage: `repeating-linear-gradient(to bottom, var(--surface-raised) 0, var(--surface-raised) ${row}px, transparent ${row}px, transparent ${pitch}px)`,\n };\n}\n\nexport interface PageBlockProps {\n page: number;\n status: BlockStatus;\n /** The cards of a `ready` page. Ignored for every other status: they have none to show. */\n children?: ReactNode;\n /** How many cards a `ready` page shows (`data-count`, which the pitch measurement reads). */\n count: number;\n /** The height the page holds when it has no cards: items on it x the measured item height. */\n height: number;\n /** One item's height, for the loading rows. */\n pitch: number;\n /** Ref callback that returns its cleanup: how the list's observers find this block. */\n blockRef: Ref<HTMLDivElement>;\n errorText: string;\n retryText: string;\n onRetry: () => void;\n}\n\n/**\n * THE ONE ELEMENT A PAGE IS, in every state. A page turns from placeholder to\n * cards (a load), to placeholder again (a drop) and to an error row and back\n * without this element being replaced: it is the same component type at the same\n * key, so React keeps the same DOM node. That is what keeps the browser's scroll\n * anchoring on the element under the viewport and keeps the observers attached\n * (visibility and pitch) instead of detaching and re-attaching on every change.\n * What changes is only what it holds and how it is drawn: the cards of a ready\n * page, otherwise the page's height (and, while loading, faint rows; on failure,\n * a Retry row).\n */\nexport function PageBlock({\n page,\n status,\n children,\n count,\n height,\n pitch,\n blockRef,\n errorText,\n retryText,\n onRetry,\n}: PageBlockProps) {\n const ready = status === \"ready\";\n const inList = useListOwner() !== null;\n return (\n <div\n ref={blockRef}\n data-page={page}\n data-status={status}\n data-count={ready ? count : undefined}\n aria-hidden={ready || status === \"error\" ? undefined : true}\n className={cn(\"min-w-0 shrink-0\", status === \"loading\" && \"animate-pulse\")}\n style={ready ? undefined : { minHeight: height, ...(status === \"loading\" ? loadingBackground(pitch) : null) }}\n >\n {ready && children}\n {status === \"error\" && (\n /* DX-5084: in a lane's `role=\"list\"` the retry row is that list's one item\n (a list may own only listitems); outside a lane it stands alone. */\n <div role={inList ? \"listitem\" : undefined}>\n <div role=\"alert\" className=\"flex items-center gap-2 px-3 py-2 text-xs text-danger-text\">\n <span>{errorText}</span>\n <Button size=\"sm\" variant=\"outline\" onClick={onRetry}>\n {retryText}\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"names":["LOADING_GAP_RATIO","LOADING_GAP_MAX_PX","loadingBackground","pitch","gap","row","PageBlock","page","status","children","count","height","blockRef","errorText","retryText","onRetry","ready","inList","useListOwner","jsxs","cn","jsx","Button"],"mappings":";;;;AAOA,MAAMA,IAAoB,KACpBC,IAAqB;AAG3B,SAASC,EAAkBC,GAA8B;AACvD,QAAMC,IAAM,KAAK,IAAIH,GAAoB,KAAK,MAAME,IAAQH,CAAiB,CAAC,GACxEK,IAAM,KAAK,IAAI,GAAGF,IAAQC,CAAG;AACnC,SAAO;AAAA,IACL,iBAAiB,uFAAuFC,CAAG,mBAAmBA,CAAG,mBAAmBF,CAAK;AAAA,EAAA;AAE7J;AA+BO,SAASG,EAAU;AAAA,EACxB,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAR;AAAA,EACA,UAAAS;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AACF,GAAmB;AACjB,QAAMC,IAAQR,MAAW,SACnBS,IAASC,QAAmB;AAClC,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKP;AAAA,MACL,aAAWL;AAAA,MACX,eAAaC;AAAA,MACb,cAAYQ,IAAQN,IAAQ;AAAA,MAC5B,eAAaM,KAASR,MAAW,UAAU,SAAY;AAAA,MACvD,WAAWY,EAAG,oBAAoBZ,MAAW,aAAa,eAAe;AAAA,MACzE,OAAOQ,IAAQ,SAAY,EAAE,WAAWL,GAAQ,GAAIH,MAAW,YAAYN,EAAkBC,CAAK,IAAI,KAAA;AAAA,MAErG,UAAA;AAAA,QAAAa,KAASP;AAAA,QACTD,MAAW;AAAA;AAAA,QAGV,gBAAAa,EAAC,OAAA,EAAI,MAAMJ,IAAS,aAAa,QAC/B,UAAA,gBAAAE,EAAC,OAAA,EAAI,MAAK,SAAQ,WAAU,8DAC1B,UAAA;AAAA,UAAA,gBAAAE,EAAC,UAAM,UAAAR,EAAA,CAAU;AAAA,UACjB,gBAAAQ,EAACC,KAAO,MAAK,MAAK,SAAQ,WAAU,SAASP,GAC1C,UAAAD,EAAA,CACH;AAAA,QAAA,EAAA,CACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { tv as m } from "tailwind-variants";
|
|
3
|
+
import { Tooltip as u } from "../Popover.js";
|
|
4
|
+
import { cn as p } from "../../lib/cn.js";
|
|
5
|
+
import { confidenceLevel as b } from "../../lib/confidence.js";
|
|
6
|
+
import { useUiStrings as h } from "../../lib/i18n/provider.js";
|
|
7
|
+
import { useNumberFormat as v } from "../../lib/i18n/number-format.js";
|
|
8
|
+
const w = m({
|
|
9
|
+
slots: {
|
|
10
|
+
slot: "flex shrink-0 overflow-hidden rounded-full",
|
|
11
|
+
fill: "h-full rounded-full"
|
|
12
|
+
},
|
|
13
|
+
variants: {
|
|
14
|
+
size: {
|
|
15
|
+
/* The dense form: under a glyph, in a strip of them. */
|
|
16
|
+
xs: { slot: "h-[3px] w-[19px]" },
|
|
17
|
+
/* The stated form: on a surface someone opened to read one value. */
|
|
18
|
+
sm: { slot: "h-[5px] w-10" }
|
|
19
|
+
},
|
|
20
|
+
/* Each level's fill written out whole, never assembled from a template string —
|
|
21
|
+
Tailwind finds classes by scanning source text, and a class built at runtime is
|
|
22
|
+
simply absent from the stylesheet. */
|
|
23
|
+
level: {
|
|
24
|
+
1: { fill: "w-1/5 bg-confidence-1" },
|
|
25
|
+
2: { fill: "w-2/5 bg-confidence-2" },
|
|
26
|
+
3: { fill: "w-3/5 bg-confidence-3" },
|
|
27
|
+
4: { fill: "w-4/5 bg-confidence-4" },
|
|
28
|
+
5: { fill: "w-full bg-confidence-5" },
|
|
29
|
+
/* Not rated — a dotted outline of the whole slot, so it cannot be mistaken for any
|
|
30
|
+
earned level. Its own token, not a general border one: every general border token
|
|
31
|
+
measures under WCAG 1.4.11's 3:1 on this library's surfaces, and an empty bar
|
|
32
|
+
nobody can see is the hidden state this component exists to rule out. */
|
|
33
|
+
none: { slot: "border border-dotted border-confidence-none" }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
defaultVariants: { size: "sm", level: "none" }
|
|
37
|
+
});
|
|
38
|
+
function k({
|
|
39
|
+
rating: e,
|
|
40
|
+
scale: r,
|
|
41
|
+
label: c,
|
|
42
|
+
size: d,
|
|
43
|
+
className: a
|
|
44
|
+
}) {
|
|
45
|
+
const n = h().confidenceBar, t = v(), i = c ?? n.label, l = e === null ? null : b(e, r), s = l === null || e === null ? n.notRated(i) : n.rated(i, t(Math.round(e)), t(Math.round(r))), f = w({ size: d, level: l ?? "none" });
|
|
46
|
+
return /* @__PURE__ */ o(u, { content: s, children: /* @__PURE__ */ o(
|
|
47
|
+
"span",
|
|
48
|
+
{
|
|
49
|
+
role: "img",
|
|
50
|
+
"aria-label": s,
|
|
51
|
+
"data-level": l ?? "none",
|
|
52
|
+
className: p(f.slot(), a),
|
|
53
|
+
children: l === null ? null : /* @__PURE__ */ o("span", { "aria-hidden": "true", className: f.fill() })
|
|
54
|
+
}
|
|
55
|
+
) });
|
|
56
|
+
}
|
|
57
|
+
export {
|
|
58
|
+
k as ConfidenceBar
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=ConfidenceBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfidenceBar.js","sources":["../../../src/components/provenance/ConfidenceBar.tsx"],"sourcesContent":["import { tv, type VariantProps } from \"tailwind-variants\";\nimport { Tooltip } from \"../Popover\";\nimport { cn } from \"../../lib/cn\";\nimport { useNumberFormat, useUiStrings } from \"../../lib/i18n\";\nimport { confidenceLevel, type ConfidenceLevel } from \"../../lib/confidence\";\n\n/* ----------------------------------------------------------------------------\n A SMALL-INTEGER RATING, AS ONE BAR IN ONE OF SIX STATES.\n\n The discrete counterpart to `ConfidenceMeter`. A percentage is a fair drawing\n of a continuous 0–1 score and an unfair drawing of \"4 out of 5\", so a rating\n never gets a figure: it gets a bar whose LENGTH and COLOUR are its level.\n\n SIX STATES, AND NO STATE DRAWS NOTHING. The operator's own spec (SG-896,\n SG-904):\n\n not rated grey DOTTED outline across the whole slot, no fill\n 1 dark red, 20% of the slot\n 2 light red, 40%\n 3 yellow, 60%\n 4 light green, 80%\n 5 dark green, the whole slot\n\n LENGTH IS THE LEVEL (SG-904). SG-896 drew every level full length, which left\n colour as the only signal; the operator corrected it — the fill is as long as\n the confidence. There is no track behind a short fill: the unfilled part of\n the slot is empty.\n\n THE SLOT IS ONE FIXED SIZE IN EVERY STATE. Only the fill inside it changes, so\n a strip of these never reflows when a rating arrives or changes, and a\n consumer reserving the space for a mark with no rating (by rendering this\n invisible) reserves exactly the right amount.\n\n A SCALE OTHER THAN FIVE is mapped onto the five steps by its fraction, so the\n colours and lengths keep one meaning whatever scale a consumer rates on. The\n scale itself is never lost: it is in the accessible name and the tooltip.\n -------------------------------------------------------------------------- */\n\nconst bar = tv({\n slots: {\n slot: \"flex shrink-0 overflow-hidden rounded-full\",\n fill: \"h-full rounded-full\",\n },\n variants: {\n size: {\n /* The dense form: under a glyph, in a strip of them. */\n xs: { slot: \"h-[3px] w-[19px]\" },\n /* The stated form: on a surface someone opened to read one value. */\n sm: { slot: \"h-[5px] w-10\" },\n },\n /* Each level's fill written out whole, never assembled from a template string —\n Tailwind finds classes by scanning source text, and a class built at runtime is\n simply absent from the stylesheet. */\n level: {\n 1: { fill: \"w-1/5 bg-confidence-1\" },\n 2: { fill: \"w-2/5 bg-confidence-2\" },\n 3: { fill: \"w-3/5 bg-confidence-3\" },\n 4: { fill: \"w-4/5 bg-confidence-4\" },\n 5: { fill: \"w-full bg-confidence-5\" },\n /* Not rated — a dotted outline of the whole slot, so it cannot be mistaken for any\n earned level. Its own token, not a general border one: every general border token\n measures under WCAG 1.4.11's 3:1 on this library's surfaces, and an empty bar\n nobody can see is the hidden state this component exists to rule out. */\n none: { slot: \"border border-dotted border-confidence-none\" },\n },\n },\n defaultVariants: { size: \"sm\", level: \"none\" },\n});\n\n/** How big the bar is. See the two variants above for where each is used. */\nexport type ConfidenceBarSize = NonNullable<VariantProps<typeof bar>[\"size\"]>;\n\nexport interface ConfidenceBarProps {\n /** The rating itself, on `scale`. Null when nothing rated it — drawn as the empty state. */\n rating: number | null;\n /** The top of the scale — the \"5\" in \"4 out of 5\". */\n scale: number;\n /**\n * What the rating is OF, used verbatim at the head of the accessible name and\n * the tooltip: `\"<label> 3 of 5\"`.\n *\n * Absent means the provider's own word for it.\n */\n label?: string;\n /** @default \"sm\" */\n size?: ConfidenceBarSize;\n className?: string;\n}\n\nexport function ConfidenceBar({\n rating,\n scale,\n label,\n size,\n className,\n}: ConfidenceBarProps) {\n const strings = useUiStrings().confidenceBar;\n const fmt = useNumberFormat();\n const subject = label ?? strings.label;\n const level: ConfidenceLevel | null =\n rating === null ? null : confidenceLevel(rating, scale);\n const name =\n level === null || rating === null\n ? strings.notRated(subject)\n : strings.rated(subject, fmt(Math.round(rating)), fmt(Math.round(scale)));\n const s = bar({ size, level: level ?? \"none\" });\n\n return (\n <Tooltip content={name}>\n {/* `role=\"img\"` with a name, because a coloured bar is a number only the sighted half\n of the audience gets otherwise. `data-level` is for anything keying off the state. */}\n <span\n role=\"img\"\n aria-label={name}\n data-level={level ?? \"none\"}\n className={cn(s.slot(), className)}\n >\n {level === null ? null : <span aria-hidden=\"true\" className={s.fill()} />}\n </span>\n </Tooltip>\n );\n}\n"],"names":["bar","tv","ConfidenceBar","rating","scale","label","size","className","strings","useUiStrings","fmt","useNumberFormat","subject","level","confidenceLevel","name","s","jsx","Tooltip","cn"],"mappings":";;;;;;;AAsCA,MAAMA,IAAMC,EAAG;AAAA,EACb,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAAA,EAER,UAAU;AAAA,IACR,MAAM;AAAA;AAAA,MAEJ,IAAI,EAAE,MAAM,mBAAA;AAAA;AAAA,MAEZ,IAAI,EAAE,MAAM,eAAA;AAAA,IAAe;AAAA;AAAA;AAAA;AAAA,IAK7B,OAAO;AAAA,MACL,GAAG,EAAE,MAAM,wBAAA;AAAA,MACX,GAAG,EAAE,MAAM,wBAAA;AAAA,MACX,GAAG,EAAE,MAAM,wBAAA;AAAA,MACX,GAAG,EAAE,MAAM,wBAAA;AAAA,MACX,GAAG,EAAE,MAAM,yBAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAKX,MAAM,EAAE,MAAM,8CAAA;AAAA,IAA8C;AAAA,EAC9D;AAAA,EAEF,iBAAiB,EAAE,MAAM,MAAM,OAAO,OAAA;AACxC,CAAC;AAsBM,SAASC,EAAc;AAAA,EAC5B,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AACF,GAAuB;AACrB,QAAMC,IAAUC,IAAe,eACzBC,IAAMC,EAAA,GACNC,IAAUP,KAASG,EAAQ,OAC3BK,IACJV,MAAW,OAAO,OAAOW,EAAgBX,GAAQC,CAAK,GAClDW,IACJF,MAAU,QAAQV,MAAW,OACzBK,EAAQ,SAASI,CAAO,IACxBJ,EAAQ,MAAMI,GAASF,EAAI,KAAK,MAAMP,CAAM,CAAC,GAAGO,EAAI,KAAK,MAAMN,CAAK,CAAC,CAAC,GACtEY,IAAIhB,EAAI,EAAE,MAAAM,GAAM,OAAOO,KAAS,QAAQ;AAE9C,SACE,gBAAAI,EAACC,GAAA,EAAQ,SAASH,GAGhB,UAAA,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAYF;AAAA,MACZ,cAAYF,KAAS;AAAA,MACrB,WAAWM,EAAGH,EAAE,KAAA,GAAQT,CAAS;AAAA,MAEhC,UAAAM,MAAU,OAAO,OAAO,gBAAAI,EAAC,QAAA,EAAK,eAAY,QAAO,WAAWD,EAAE,KAAA,EAAK,CAAG;AAAA,IAAA;AAAA,EAAA,GAE3E;AAEJ;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { Meter as l } from "../Progress.js";
|
|
3
|
+
import { cn as a } from "../../lib/cn.js";
|
|
4
|
+
import { confidenceBand as m } from "./types.js";
|
|
5
|
+
import { useUiStrings as f } from "../../lib/i18n/provider.js";
|
|
6
|
+
const u = {
|
|
7
|
+
high: "success",
|
|
8
|
+
moderate: "warning",
|
|
9
|
+
low: "danger"
|
|
10
|
+
};
|
|
11
|
+
function M({
|
|
12
|
+
confidence: e,
|
|
13
|
+
unscoredLabel: s,
|
|
14
|
+
compact: i = !1,
|
|
15
|
+
className: n
|
|
16
|
+
}) {
|
|
17
|
+
const o = f().confidenceMeter;
|
|
18
|
+
if (e === null)
|
|
19
|
+
return /* @__PURE__ */ r("p", { className: a("text-xs text-tertiary", n), "data-band": "none", children: s ?? o.notScored });
|
|
20
|
+
const t = m(e), d = Math.round(e * 100);
|
|
21
|
+
return /* @__PURE__ */ r("div", { className: a("flex flex-col gap-1", n), "data-band": t, children: /* @__PURE__ */ r(
|
|
22
|
+
l,
|
|
23
|
+
{
|
|
24
|
+
value: d,
|
|
25
|
+
tone: u[t],
|
|
26
|
+
size: "sm",
|
|
27
|
+
label: i ? void 0 : o.bands[t],
|
|
28
|
+
format: (c) => `${c}%`,
|
|
29
|
+
showValue: !0
|
|
30
|
+
}
|
|
31
|
+
) });
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
M as ConfidenceMeter
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=ConfidenceMeter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfidenceMeter.js","sources":["../../../src/components/provenance/ConfidenceMeter.tsx"],"sourcesContent":["import { Meter } from \"../Progress\";\nimport { cn } from \"../../lib/cn\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport { confidenceBand, type ConfidenceBand, type ConfidenceScore } from \"./types\";\n\n/* ----------------------------------------------------------------------------\n A CONTINUOUS 0–1 CONFIDENCE, AS A BAND.\n\n A bare percentage invites false precision on a number whose entire point is\n that it might be wrong. Nobody can act on the difference between 0.71 and\n 0.74; everybody can act on \"low\". So the band is the headline and the figure\n is secondary — the reverse of the obvious layout, and deliberate.\n\n THIS COMPONENT IS FOR SCORES ONLY, AND THE TYPE ENFORCES IT. `confidence` is\n a `ConfidenceScore`, which only `confidenceScore()` can mint — so a rating on\n a small integer scale cannot be handed to it, by accident or otherwise. Draw\n one of those with `ConfidenceBar`; the reasoning is at the foot of `types.ts`.\n -------------------------------------------------------------------------- */\n\nconst BAND_TONE: Record<ConfidenceBand, \"success\" | \"warning\" | \"danger\"> = {\n high: \"success\",\n moderate: \"warning\",\n low: \"danger\",\n};\n\nexport interface ConfidenceMeterProps {\n /**\n * A 0–1 score from `confidenceScore()`, or null when nothing scored it.\n *\n * Deliberately NOT a plain number — see the header. A raw literal will not\n * type-check, which is what keeps a \"4 out of 5\" out of a percentage.\n */\n confidence: ConfidenceScore | null;\n /**\n * What to say when there is no score.\n *\n * Rendered as text rather than an empty bar, because a bar at zero and a bar\n * with nothing to show look identical and mean opposite things.\n */\n unscoredLabel?: string;\n /** Hides the band name, for dense rows where the bar is enough. */\n compact?: boolean;\n className?: string;\n}\n\nexport function ConfidenceMeter({\n confidence,\n unscoredLabel,\n compact = false,\n className,\n}: ConfidenceMeterProps) {\n const strings = useUiStrings().confidenceMeter;\n if (confidence === null) {\n return (\n <p className={cn(\"text-xs text-tertiary\", className)} data-band=\"none\">\n {unscoredLabel ?? strings.notScored}\n </p>\n );\n }\n\n const band = confidenceBand(confidence);\n const percent = Math.round(confidence * 100);\n\n return (\n <div className={cn(\"flex flex-col gap-1\", className)} data-band={band}>\n <Meter\n value={percent}\n tone={BAND_TONE[band]}\n size=\"sm\"\n label={compact ? undefined : strings.bands[band]}\n format={(value) => `${value}%`}\n /* The figure is present but secondary — an attorney reading a page of\n these needs the band at a glance and the number only when they stop\n on one. */\n showValue\n />\n </div>\n );\n}\n"],"names":["BAND_TONE","ConfidenceMeter","confidence","unscoredLabel","compact","className","strings","useUiStrings","jsx","cn","band","confidenceBand","percent","Meter","value"],"mappings":";;;;;AAmBA,MAAMA,IAAsE;AAAA,EAC1E,MAAM;AAAA,EACN,UAAU;AAAA,EACV,KAAK;AACP;AAsBO,SAASC,EAAgB;AAAA,EAC9B,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC;AACF,GAAyB;AACvB,QAAMC,IAAUC,IAAe;AAC/B,MAAIL,MAAe;AACjB,WACE,gBAAAM,EAAC,KAAA,EAAE,WAAWC,EAAG,yBAAyBJ,CAAS,GAAG,aAAU,QAC7D,UAAAF,KAAiBG,EAAQ,UAAA,CAC5B;AAIJ,QAAMI,IAAOC,EAAeT,CAAU,GAChCU,IAAU,KAAK,MAAMV,IAAa,GAAG;AAE3C,SACE,gBAAAM,EAAC,SAAI,WAAWC,EAAG,uBAAuBJ,CAAS,GAAG,aAAWK,GAC/D,UAAA,gBAAAF;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,OAAOD;AAAA,MACP,MAAMZ,EAAUU,CAAI;AAAA,MACpB,MAAK;AAAA,MACL,OAAON,IAAU,SAAYE,EAAQ,MAAMI,CAAI;AAAA,MAC/C,QAAQ,CAACI,MAAU,GAAGA,CAAK;AAAA,MAI3B,WAAS;AAAA,IAAA;AAAA,EAAA,GAEb;AAEJ;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { ConfidenceMeter as e } from "./ConfidenceMeter.js";
|
|
3
|
+
import { ConfidenceBar as l } from "./ConfidenceBar.js";
|
|
4
|
+
function p({
|
|
5
|
+
confidence: r,
|
|
6
|
+
unscoredLabel: i,
|
|
7
|
+
ratingLabel: o,
|
|
8
|
+
compact: f = !1,
|
|
9
|
+
className: n
|
|
10
|
+
}) {
|
|
11
|
+
return r === null ? /* @__PURE__ */ t(e, { confidence: null, unscoredLabel: i, className: n }) : r.kind === "rating" ? /* @__PURE__ */ t(
|
|
12
|
+
l,
|
|
13
|
+
{
|
|
14
|
+
rating: r.rating,
|
|
15
|
+
scale: r.scale,
|
|
16
|
+
label: o,
|
|
17
|
+
className: n
|
|
18
|
+
}
|
|
19
|
+
) : /* @__PURE__ */ t(
|
|
20
|
+
e,
|
|
21
|
+
{
|
|
22
|
+
confidence: r.score,
|
|
23
|
+
compact: f,
|
|
24
|
+
className: n
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
p as ConfidenceReadout
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=ConfidenceReadout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfidenceReadout.js","sources":["../../../src/components/provenance/ConfidenceReadout.tsx"],"sourcesContent":["import { ConfidenceMeter } from \"./ConfidenceMeter\";\nimport { ConfidenceBar } from \"./ConfidenceBar\";\nimport type { ProvenanceConfidence } from \"./types\";\n\n/* ----------------------------------------------------------------------------\n THE ONE PLACE THAT DECIDES HOW A CONFIDENCE IS DRAWN.\n\n A record carries a `ProvenanceConfidence`, which knows which KIND of scale it\n was said on, and this is the switch: a continuous score gets the banded meter\n and its percentage, a small-integer rating gets one six-state bar, and nothing at all gets\n a sentence saying so.\n\n IT EXISTS SO THE SWITCH IS WRITTEN ONCE. Every surface that shows a record —\n this library's own detail panel today, a consumer's row or card tomorrow —\n needs the same decision, and a second copy of it is how one surface comes to\n draw a rating as a percentage after the other stopped.\n -------------------------------------------------------------------------- */\n\nexport interface ConfidenceReadoutProps {\n confidence: ProvenanceConfidence | null;\n /**\n * What to say when nothing scored it. Absent means the provider's own words.\n *\n * Text rather than an empty bar, because a bar at zero and a bar with nothing\n * to show look identical and mean opposite things.\n */\n unscoredLabel?: string;\n /** What a RATING is of, at the head of its accessible name. Absent means the provider's own word. */\n ratingLabel?: string;\n /** Hides the band name on a SCORE, for dense rows where the bar is enough. */\n compact?: boolean;\n className?: string;\n}\n\nexport function ConfidenceReadout({\n confidence,\n unscoredLabel,\n ratingLabel,\n compact = false,\n className,\n}: ConfidenceReadoutProps) {\n /* The null (nothing scored it) case is `ConfidenceMeter`'s own — reused\n rather than re-copied (DX-3254), since `ConfidenceMeter(confidence: null)`\n renders exactly this sentence already. */\n if (confidence === null) {\n return <ConfidenceMeter confidence={null} unscoredLabel={unscoredLabel} className={className} />;\n }\n\n if (confidence.kind === \"rating\") {\n return (\n <ConfidenceBar\n rating={confidence.rating}\n scale={confidence.scale}\n label={ratingLabel}\n className={className}\n />\n );\n }\n\n return (\n <ConfidenceMeter\n confidence={confidence.score}\n compact={compact}\n className={className}\n />\n );\n}\n"],"names":["ConfidenceReadout","confidence","unscoredLabel","ratingLabel","compact","className","jsx","ConfidenceMeter","ConfidenceBar"],"mappings":";;;AAkCO,SAASA,EAAkB;AAAA,EAChC,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC;AACF,GAA2B;AAIzB,SAAIJ,MAAe,OACV,gBAAAK,EAACC,GAAA,EAAgB,YAAY,MAAM,eAAAL,GAA8B,WAAAG,GAAsB,IAG5FJ,EAAW,SAAS,WAEpB,gBAAAK;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,QAAQP,EAAW;AAAA,MACnB,OAAOA,EAAW;AAAA,MAClB,OAAOE;AAAA,MACP,WAAAE;AAAA,IAAA;AAAA,EAAA,IAMJ,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,YAAYN,EAAW;AAAA,MACvB,SAAAG;AAAA,MACA,WAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as c } from "react/jsx-runtime";
|
|
2
|
+
import { Badge as f } from "../Badge.js";
|
|
3
|
+
import { Icon as u } from "../Icon.js";
|
|
4
|
+
import { cn as t } from "../../lib/cn.js";
|
|
5
|
+
import { useUiStrings as d } from "../../lib/i18n/provider.js";
|
|
6
|
+
const m = {
|
|
7
|
+
verified: { tone: "success", icon: "circle-check", quiet: !0 },
|
|
8
|
+
human: { tone: "info", icon: "shield-check", quiet: !1 },
|
|
9
|
+
unverified: { tone: "warning", icon: "circle-dashed", quiet: !1 },
|
|
10
|
+
failed: { tone: "danger", icon: "circle-x", quiet: !1 }
|
|
11
|
+
};
|
|
12
|
+
function x({
|
|
13
|
+
state: e,
|
|
14
|
+
alwaysShow: n = !1,
|
|
15
|
+
appearance: r = "word",
|
|
16
|
+
size: s = "sm",
|
|
17
|
+
className: a
|
|
18
|
+
}) {
|
|
19
|
+
const l = d().provenanceBadge, i = m[e], o = r === "icon";
|
|
20
|
+
return i.quiet && !n && !o ? null : /* @__PURE__ */ c(
|
|
21
|
+
f,
|
|
22
|
+
{
|
|
23
|
+
tone: i.tone,
|
|
24
|
+
size: s,
|
|
25
|
+
"data-state": e,
|
|
26
|
+
className: t(
|
|
27
|
+
/* A square-ish box for the glyph. The padding comes off the spacing
|
|
28
|
+
scale like everything else, so it tracks the size control. */
|
|
29
|
+
o && "px-1",
|
|
30
|
+
a
|
|
31
|
+
),
|
|
32
|
+
icon: /* @__PURE__ */ c(u, { name: i.icon, size: "xs" }),
|
|
33
|
+
children: /* @__PURE__ */ c("span", { className: t(o && "sr-only"), children: l.states[e] })
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
function B(e, n) {
|
|
38
|
+
return n.states[e];
|
|
39
|
+
}
|
|
40
|
+
export {
|
|
41
|
+
x as ProvenanceBadge,
|
|
42
|
+
B as provenanceStateLabel
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=ProvenanceBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvenanceBadge.js","sources":["../../../src/components/provenance/ProvenanceBadge.tsx"],"sourcesContent":["import { Badge } from \"../Badge\";\nimport { Icon, type IconName } from \"../Icon\";\nimport { cn } from \"../../lib/cn\";\nimport { useUiStrings, type UiStrings } from \"../../lib/i18n\";\nimport type { ProvenanceState } from \"./types\";\n\n/* ----------------------------------------------------------------------------\n THE VERIFICATION STATE, IN ONE CHIP.\n\n THE RESTING STATE IS NEARLY SILENT. A verified value is the ordinary case —\n most of them are — and a page where every row wears a green badge is a page\n where nothing stands out, which defeats the entire purpose of marking\n anything. So `verified` renders quietly and only the exceptions carry weight.\n\n That is why `alwaysShow` exists and defaults to false: a caller who genuinely\n wants the affirmative mark (a single record on its own page, an export) can\n ask for it, and a caller rendering four hundred rows gets silence.\n\n THE ICON APPEARANCE LIFTS THE SILENCE, ON PURPOSE. The argument for keeping\n `verified` quiet is an argument about WORDS: four hundred rows each carrying\n the word \"Verified\" is four hundred sentences nobody reads. A single glyph in\n a fixed column is a legend rather than a sentence — it is scanned, not read —\n so `appearance=\"icon\"` shows all four states and the affirmative mark stops\n being noise. Silence and legibility are the same goal reached two ways.\n\n THE GLYPHS DIFFER IN SHAPE, NOT ONLY IN HUE, and that is load-bearing rather\n than aesthetic: an icon-only badge is the single easiest place in this\n library to end up encoding status in colour alone. A tick, a shield, a dashed\n ring and a cross are told apart with the colour removed entirely.\n\n AND THE WORD SURVIVES EVEN WHEN IT IS NOT DRAWN. Under `appearance=\"icon\"`\n the label is still in the DOM as `sr-only` text, so the badge's accessible\n name is IDENTICAL in both appearances. It is written as visually-hidden text\n rather than `aria-label` deliberately: `aria-label` REPLACES an element's\n content, and this library has shipped that defect three times — here the\n name is COMPUTED FROM the content, so it cannot drift away from what is\n rendered.\n -------------------------------------------------------------------------- */\n\nconst STATE: Record<\n ProvenanceState,\n { tone: \"success\" | \"info\" | \"warning\" | \"danger\"; icon: IconName; quiet: boolean }\n> = {\n verified: { tone: \"success\", icon: \"circle-check\", quiet: true },\n human: { tone: \"info\", icon: \"shield-check\", quiet: false },\n unverified: { tone: \"warning\", icon: \"circle-dashed\", quiet: false },\n failed: { tone: \"danger\", icon: \"circle-x\", quiet: false },\n};\n\n/** How much of the state the badge draws. The accessible name is the same either way. */\nexport type ProvenanceBadgeAppearance = \"word\" | \"icon\";\n\nexport interface ProvenanceBadgeProps {\n state: ProvenanceState;\n /** Render the badge even for states that are quiet by default. */\n alwaysShow?: boolean;\n /**\n * `\"word\"` (default) draws the icon and the word. `\"icon\"` draws the glyph in\n * the same coloured box and keeps the word as visually-hidden text, so the\n * announced name does not change.\n *\n * `\"icon\"` also lifts the quiet rule — see the note at the top of this file.\n */\n appearance?: ProvenanceBadgeAppearance;\n size?: \"sm\" | \"md\";\n className?: string;\n}\n\nexport function ProvenanceBadge({\n state,\n alwaysShow = false,\n appearance = \"word\",\n size = \"sm\",\n className,\n}: ProvenanceBadgeProps) {\n const strings = useUiStrings().provenanceBadge;\n const detail = STATE[state];\n const iconOnly = appearance === \"icon\";\n if (detail.quiet && !alwaysShow && !iconOnly) return null;\n\n return (\n <Badge\n tone={detail.tone}\n size={size}\n data-state={state}\n className={cn(\n /* A square-ish box for the glyph. The padding comes off the spacing\n scale like everything else, so it tracks the size control. */\n iconOnly && \"px-1\",\n className,\n )}\n icon={<Icon name={detail.icon} size=\"xs\" />}\n >\n {/* `sr-only` is `position: absolute`, so it is not a flex item and adds no\n gap of its own — the box stays the width of the glyph. */}\n <span className={cn(iconOnly && \"sr-only\")}>{strings.states[state]}</span>\n </Badge>\n );\n}\n\n/** The words this library uses for each state, from the provider's strings. Exported so a\n consumer's own filters and legends read the same as its badges. */\nexport function provenanceStateLabel(state: ProvenanceState, strings: UiStrings[\"provenanceBadge\"]): string {\n return strings.states[state];\n}\n"],"names":["STATE","ProvenanceBadge","state","alwaysShow","appearance","size","className","strings","useUiStrings","detail","iconOnly","jsx","Badge","cn","Icon","provenanceStateLabel"],"mappings":";;;;;AAuCA,MAAMA,IAGF;AAAA,EACF,UAAU,EAAE,MAAM,WAAW,MAAM,gBAAgB,OAAO,GAAA;AAAA,EAC1D,OAAO,EAAE,MAAM,QAAQ,MAAM,gBAAgB,OAAO,GAAA;AAAA,EACpD,YAAY,EAAE,MAAM,WAAW,MAAM,iBAAiB,OAAO,GAAA;AAAA,EAC7D,QAAQ,EAAE,MAAM,UAAU,MAAM,YAAY,OAAO,GAAA;AACrD;AAqBO,SAASC,EAAgB;AAAA,EAC9B,OAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,YAAAC,IAAa;AAAA,EACb,MAAAC,IAAO;AAAA,EACP,WAAAC;AACF,GAAyB;AACvB,QAAMC,IAAUC,IAAe,iBACzBC,IAAST,EAAME,CAAK,GACpBQ,IAAWN,MAAe;AAChC,SAAIK,EAAO,SAAS,CAACN,KAAc,CAACO,IAAiB,OAGnD,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMH,EAAO;AAAA,MACb,MAAAJ;AAAA,MACA,cAAYH;AAAA,MACZ,WAAWW;AAAA;AAAA;AAAA,QAGTH,KAAY;AAAA,QACZJ;AAAA,MAAA;AAAA,MAEF,MAAM,gBAAAK,EAACG,GAAA,EAAK,MAAML,EAAO,MAAM,MAAK,MAAK;AAAA,MAIzC,UAAA,gBAAAE,EAAC,QAAA,EAAK,WAAWE,EAAGH,KAAY,SAAS,GAAI,UAAAH,EAAQ,OAAOL,CAAK,EAAA,CAAE;AAAA,IAAA;AAAA,EAAA;AAGzE;AAIO,SAASa,EAAqBb,GAAwBK,GAA+C;AAC1G,SAAOA,EAAQ,OAAOL,CAAK;AAC7B;"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { jsxs as a, jsx as t, Fragment as F } from "react/jsx-runtime";
|
|
2
|
+
import { useId as S } from "react";
|
|
3
|
+
import { Badge as r } from "../Badge.js";
|
|
4
|
+
import { Icon as j } from "../Icon.js";
|
|
5
|
+
import { Separator as u } from "../Surface.js";
|
|
6
|
+
import { cn as f } from "../../lib/cn.js";
|
|
7
|
+
import { numberFormat as R } from "../../lib/intl-cache.js";
|
|
8
|
+
import { ConfidenceReadout as A } from "./ConfidenceReadout.js";
|
|
9
|
+
import { ProvenanceBadge as B } from "./ProvenanceBadge.js";
|
|
10
|
+
import { isRedacted as C, isFailed as D, shownValue as M } from "./absence.js";
|
|
11
|
+
import { useUiStrings as O, useUiLocale as P } from "../../lib/i18n/provider.js";
|
|
12
|
+
function c({ icon: e, label: i, children: o }) {
|
|
13
|
+
return /* @__PURE__ */ a("div", { className: "flex flex-col gap-1", children: [
|
|
14
|
+
/* @__PURE__ */ a("p", { className: "flex items-center gap-1.5 text-2xs font-semibold uppercase tracking-widest text-tertiary", children: [
|
|
15
|
+
/* @__PURE__ */ t(j, { name: e, size: "xs" }),
|
|
16
|
+
i
|
|
17
|
+
] }),
|
|
18
|
+
/* @__PURE__ */ t("div", { className: "text-sm text-secondary", children: o })
|
|
19
|
+
] });
|
|
20
|
+
}
|
|
21
|
+
function W({
|
|
22
|
+
record: e,
|
|
23
|
+
actions: i,
|
|
24
|
+
emptyLabel: o,
|
|
25
|
+
redactedLabel: x,
|
|
26
|
+
ratingLabel: g,
|
|
27
|
+
valueContent: b,
|
|
28
|
+
stateContent: N,
|
|
29
|
+
titleId: y,
|
|
30
|
+
titleAs: k = "h2",
|
|
31
|
+
className: v
|
|
32
|
+
}) {
|
|
33
|
+
const h = O(), l = h.provenanceDetail, m = R(P(), {}), w = `provenance-detail-${S()}`, I = y ?? w, d = C(e), z = D(e), s = d && e.source ? { ...e.source, quote: null } : e.source, p = d ? null : e.reasoning, n = d && e.signoff ? { ...e.signoff, note: null, replaced: null } : e.signoff, q = M(e, { emptyLabel: o, redactedLabel: x }, h.provenanceAbsence);
|
|
34
|
+
return /* @__PURE__ */ a("div", { className: f("flex flex-col", v), children: [
|
|
35
|
+
/* @__PURE__ */ a("header", { className: "flex flex-col gap-2 p-4 pb-3", children: [
|
|
36
|
+
/* @__PURE__ */ a("div", { className: "flex items-start justify-between gap-3", children: [
|
|
37
|
+
/* @__PURE__ */ t(k, { id: I, className: "text-2xs font-semibold uppercase tracking-widest text-tertiary", children: e.label }),
|
|
38
|
+
N ?? /* @__PURE__ */ t(B, { state: e.state, alwaysShow: !0 })
|
|
39
|
+
] }),
|
|
40
|
+
b ?? /* @__PURE__ */ t("p", { className: f("text-md text-primary", z && "text-danger-text"), children: q }),
|
|
41
|
+
/* @__PURE__ */ t(A, { confidence: e.confidence, ratingLabel: g })
|
|
42
|
+
] }),
|
|
43
|
+
/* @__PURE__ */ t(u, {}),
|
|
44
|
+
/* @__PURE__ */ a("div", { className: "flex flex-col gap-4 p-4", children: [
|
|
45
|
+
e.check && /* @__PURE__ */ t(
|
|
46
|
+
c,
|
|
47
|
+
{
|
|
48
|
+
icon: e.check.passed === !0 ? "circle-check" : e.check.passed === !1 ? "circle-x" : "circle-dashed",
|
|
49
|
+
label: l.check,
|
|
50
|
+
children: /* @__PURE__ */ t(
|
|
51
|
+
"span",
|
|
52
|
+
{
|
|
53
|
+
className: f(
|
|
54
|
+
e.check.passed === !1 && "text-danger-text",
|
|
55
|
+
e.check.passed === null && "text-tertiary"
|
|
56
|
+
),
|
|
57
|
+
children: e.check.detail
|
|
58
|
+
}
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
s && /* @__PURE__ */ a(c, { icon: "file-text", label: l.source, children: [
|
|
63
|
+
/* @__PURE__ */ a("p", { className: "text-primary", children: [
|
|
64
|
+
s.label,
|
|
65
|
+
s.locus && /* @__PURE__ */ a("span", { className: "text-tertiary", children: [
|
|
66
|
+
" · ",
|
|
67
|
+
s.locus
|
|
68
|
+
] })
|
|
69
|
+
] }),
|
|
70
|
+
s.quote && /* The quote is the evidence, so it is set apart rather than run
|
|
71
|
+
into the sentence above it — and it is never truncated: a
|
|
72
|
+
half-shown quotation is a misquotation. */
|
|
73
|
+
/* @__PURE__ */ t("blockquote", { className: "mt-2 border-l-2 border-accent-border bg-surface-sunken py-2 pl-3 text-sm text-secondary", children: s.quote })
|
|
74
|
+
] }),
|
|
75
|
+
p && /* @__PURE__ */ t(c, { icon: "brain", label: l.reasoning, children: p }),
|
|
76
|
+
n && /* @__PURE__ */ a(c, { icon: "shield-check", label: l.signed, children: [
|
|
77
|
+
/* @__PURE__ */ a("p", { className: "text-primary", children: [
|
|
78
|
+
n.by,
|
|
79
|
+
" ",
|
|
80
|
+
/* @__PURE__ */ a("span", { className: "text-tertiary", children: [
|
|
81
|
+
"· ",
|
|
82
|
+
n.at
|
|
83
|
+
] })
|
|
84
|
+
] }),
|
|
85
|
+
n.note && /* @__PURE__ */ t("p", { className: "mt-1", children: n.note }),
|
|
86
|
+
n.replaced !== null && /* The original, kept. A correction whose previous value is gone is
|
|
87
|
+
an assertion rather than a record — this line is the difference
|
|
88
|
+
between the two. */
|
|
89
|
+
/* @__PURE__ */ a("p", { className: "mt-2 text-xs text-tertiary", children: [
|
|
90
|
+
l.correctedFrom,
|
|
91
|
+
" ",
|
|
92
|
+
/* @__PURE__ */ t("span", { className: "line-through decoration-danger-border", children: n.replaced })
|
|
93
|
+
] })
|
|
94
|
+
] }),
|
|
95
|
+
e.call && /* @__PURE__ */ t(c, { icon: "cpu", label: l.modelCall, children: /* @__PURE__ */ a("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
96
|
+
/* @__PURE__ */ t(r, { size: "sm", tone: "neutral", className: "font-mono", children: e.call.model }),
|
|
97
|
+
/* @__PURE__ */ t(r, { size: "sm", tone: "neutral", className: "tabular font-mono", children: l.tokensIn(m.format(e.call.tokensIn)) }),
|
|
98
|
+
/* @__PURE__ */ t(r, { size: "sm", tone: "neutral", className: "tabular font-mono", children: l.tokensOut(m.format(e.call.tokensOut)) }),
|
|
99
|
+
/* @__PURE__ */ t(r, { size: "sm", tone: "neutral", className: "tabular font-mono", children: l.latencyMs(m.format(e.call.latencyMs)) })
|
|
100
|
+
] }) }),
|
|
101
|
+
!s && !p && !e.call && !e.check && /* Says so, rather than rendering an empty panel that reads as a
|
|
102
|
+
loading state or a bug. */
|
|
103
|
+
/* @__PURE__ */ t("p", { className: "text-sm text-tertiary", children: l.empty })
|
|
104
|
+
] }),
|
|
105
|
+
i && /* @__PURE__ */ a(F, { children: [
|
|
106
|
+
/* @__PURE__ */ t(u, {}),
|
|
107
|
+
/* @__PURE__ */ t("div", { className: "flex flex-wrap gap-2 p-4 pt-3", children: i })
|
|
108
|
+
] })
|
|
109
|
+
] });
|
|
110
|
+
}
|
|
111
|
+
export {
|
|
112
|
+
W as ProvenanceDetail
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=ProvenanceDetail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvenanceDetail.js","sources":["../../../src/components/provenance/ProvenanceDetail.tsx"],"sourcesContent":["import { useId, type ReactNode } from \"react\";\nimport { Badge } from \"../Badge\";\nimport { Icon } from \"../Icon\";\nimport { Separator } from \"../Surface\";\nimport { cn } from \"../../lib/cn\";\nimport { useUiLocale, useUiStrings } from \"../../lib/i18n\";\nimport { numberFormat } from \"../../lib/intl-cache\";\nimport { ConfidenceReadout } from \"./ConfidenceReadout\";\nimport { ProvenanceBadge } from \"./ProvenanceBadge\";\nimport { isFailed, isRedacted, shownValue } from \"./absence\";\nimport type { ProvenanceRecord } from \"./types\";\n\n/* ----------------------------------------------------------------------------\n EVERYTHING BEHIND A VALUE, WITHOUT DECIDING WHERE IT IS SHOWN.\n\n The field, the state, the value, the confidence, the verdict of whatever\n check ran, the source and its quote, the model's reasoning, the sign-off, and\n what the call cost. This is the CONTENT — it has no trigger, opens nothing,\n floats over nothing, and does not care whether something above it is a\n popover, a drawer, a side panel or a page.\n\n WHY IT IS ITS OWN COMPONENT. It was the inside of `ProvenanceDisclosure`, and\n a popover is exactly the wrong shape on a surface a reader has already\n dedicated to one value: a side panel opened FROM a document should show the\n evidence, not a second thing to click that covers the document. The panel\n consumer had no way in, so it rendered a row whose only content was a label\n and a value behind a click — the same two strings the row beneath it already\n drew, one of them claiming to be the detailed one.\n\n ONE IMPLEMENTATION, TWO PLACEMENTS. `ProvenanceDisclosure` now RENDERS this,\n inside its popover, rather than carrying a copy of it. A change to what a\n record's evidence looks like lands in one file and reaches both surfaces; a\n copy would have started drifting on the first fix that only one caller\n reported.\n\n NO DIALOG ASSUMPTIONS TRAVELLED OUT WITH IT, and that was the one real risk\n in the move. Two things here used to lean on the popover:\n\n - THE LABELLING. `aria-labelledby` pointed at this heading, so the heading\n carried an id minted by the disclosure. It still can — `titleId` — but\n the id is now generated here when nobody supplies one, so the heading is\n never anonymous and an inline render owes the component nothing.\n\n - THE HEADING LEVEL. `<h2>` is right inside a dialog, which starts its own\n outline. Rendered inline it sits under whatever headings the page already\n has, so `titleAs` names the level. It defaults to `h2`, which is what the\n popover has always drawn.\n\n `valueContent` MAY STILL BE INTERACTIVE — see the prop. That was previously\n justified by the popover's focus management, and it does not need it: an\n editor rendered here is an ordinary control in the document flow, reached by\n Tab in reading order like any other. The dialog only ever ADDED a focus trap\n around it.\n\n THE REDACTION GATE TRAVELLED WITH THE BODY, because it is a property of what\n the body prints, not of the box it prints in. A record marked `redacted`\n withholds its quote, its reasoning and its sign-off note here, wherever\n \"here\" is rendered. Leaving that behind in the popover would have leaked, on\n the new surface, exactly what it exists to protect.\n -------------------------------------------------------------------------- */\n\n/** The level the field name renders at. See \"NO DIALOG ASSUMPTIONS\" above. */\nexport type ProvenanceDetailTitleAs = \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport interface ProvenanceDetailProps {\n record: ProvenanceRecord;\n /**\n * Rendered at the foot — sign-off, correction, the cited pages themselves.\n *\n * A slot rather than props, because the actions a consumer offers over an\n * extracted value are theirs: this library has no idea who is allowed to sign\n * one, or what correcting it should do. It is also where a consumer puts the\n * evidence it had to go and FETCH — the cited pages, their thumbnails, the\n * audit trail — none of which this library can name.\n */\n actions?: ReactNode;\n /** Shown in place of the value when there is none and it did not fail. Absent means the provider's own words. */\n emptyLabel?: string;\n /** Shown in place of the value when the viewer may not see it. Absent means the provider's own words. */\n redactedLabel?: string;\n /**\n * YOUR word for what a discrete rating is a rating OF — \"Self-rated\n * certainty\", \"Reviewer score\" — at the head of its accessible name and\n * tooltip.\n *\n * A rating is drawn as a coloured bar with no words on its face, so this is\n * the only place its meaning is stated to a reader who stops on it. Absent\n * means the provider's own word, the blandest true one, because a default naming\n * anybody's domain would be a lie in everybody else's. Ignored for a\n * continuous score, which says its own band aloud.\n */\n ratingLabel?: string;\n /**\n * Draw the VALUE yourself — an editor, most usefully.\n *\n * This replaces the one paragraph that prints the value, and nothing else:\n * the field name above it, the state badge beside it, the confidence meter\n * under it, and every row below the separator are still the component's.\n *\n * IT MAY BE INTERACTIVE. An `InlineEdit`, a select, a confirm/cancel pair are\n * all legitimate — correcting a value in the surface somebody opened to judge\n * it is the whole point of opening it, and the observed alternative is a\n * consumer putting its editor in `actions`, which reads as \"here is the\n * value, and separately, down here, a form about some value\".\n *\n * AN `InlineEdit` HERE STILL NEEDS THE OVERWRITE-PROTECTION CONTRACT IT\n * SHIPS WITH (DX-2930) — this panel can stay open while the underlying\n * record keeps changing (a re-extraction, another reviewer's own edit), so\n * an `onCommit={(next, base) => …}` that compares `base` against whatever\n * the caller currently believes is authoritative, plus an\n * `onEditingChange` that suspends re-rendering `record` while someone is\n * mid-edit, is what stops this panel from resetting a draft out from under\n * whoever opened it. See `content/docs/provenance.mdx` for the shape.\n *\n * IT OVERRIDES THE ABSENCES TOO — redacted, empty and failed alike. A slot\n * that disappeared whenever the value was missing would vanish in exactly the\n * case a value editor is most wanted: a field that was never extracted is the\n * one somebody actually has to type.\n *\n * The redaction gate cannot police a node you built yourself, so a consumer\n * rendering this against a redactable record owns that one decision —\n * `record.redacted` is right there to branch on.\n *\n * Passing `null` or `undefined` falls back to the built-in paragraph, so\n * gating editability is `canEdit ? <Editor … /> : null` rather than two\n * spellings of the whole component.\n */\n valueContent?: ReactNode;\n /**\n * Draw the top-right corner of the header yourself, in place of the built-in\n * `ProvenanceBadge`.\n *\n * This replaces ONE thing — the badge beside the field name — and nothing\n * else: the field name itself, `valueContent` on the line below it, and the\n * confidence readout under that are still the component's. `ProvenanceBadge`\n * exists because this library has an opinion about extraction verification;\n * it has none about who ELSE has a stake in that same corner. A consumer that\n * layers its own sign-off/attribution mark over a record — who answered,\n * whether a human has signed it, an audit's own verdict — is naming a fact\n * this library cannot: it owns the record's own fields, not a caller's\n * broader authorship model. Forcing that mark one row lower (the only slot\n * that reached the header before this one) put two badges answering related\n * questions on two different lines instead of the one corner a reader\n * actually scans.\n *\n * The SAME `??` idiom `valueContent` uses, and for the same reason: passing\n * `null` falls back to the built-in `ProvenanceBadge` exactly as leaving the\n * prop `undefined` does, so gating this on some later condition is\n * `showOwnMark ? <OwnMark /> : null` rather than two spellings of the header.\n *\n * Does not touch the trigger — `ProvenanceDisclosure`'s closed-page mark and\n * accessible name are unaffected either way; see `stateContent` there.\n */\n stateContent?: ReactNode;\n /**\n * Put a known id on the field-name heading, so something WRAPPING this can be\n * labelled by it.\n *\n * `ProvenanceDisclosure` passes one: its popup takes `role=\"dialog\"`, and an\n * unlabelled dialog announces itself as nothing. An inline render normally\n * has nothing to label and can leave this alone — a generated id is used, so\n * the heading always has one.\n */\n titleId?: string;\n /** @default \"h2\" */\n titleAs?: ProvenanceDetailTitleAs;\n className?: string;\n}\n\nfunction Row({ icon, label, children }: { icon: string; label: string; children: ReactNode }) {\n return (\n <div className=\"flex flex-col gap-1\">\n <p className=\"flex items-center gap-1.5 text-2xs font-semibold uppercase tracking-widest text-tertiary\">\n <Icon name={icon} size=\"xs\" />\n {label}\n </p>\n <div className=\"text-sm text-secondary\">{children}</div>\n </div>\n );\n}\n\nexport function ProvenanceDetail({\n record,\n actions,\n emptyLabel,\n redactedLabel,\n ratingLabel,\n valueContent,\n stateContent,\n titleId,\n titleAs: Title = \"h2\",\n className,\n}: ProvenanceDetailProps) {\n const strings = useUiStrings();\n const detailStrings = strings.provenanceDetail;\n const numbers = numberFormat(useUiLocale(), {});\n const generatedId = `provenance-detail-${useId()}`;\n const headingId = titleId ?? generatedId;\n\n const redacted = isRedacted(record);\n const failed = isFailed(record);\n\n /* THE SECOND GATE, and it has to cover more than the value. The quote IS the\n value in most records, and the reasoning routinely restates it — a panel\n that substitutes the value and then prints both is not redacting, it is\n relocating. The API redacts too; this is the half that survives a consumer\n passing a record it should not have. */\n const source = redacted && record.source ? { ...record.source, quote: null } : record.source;\n const reasoning = redacted ? null : record.reasoning;\n /* The signature too, and this is where the first version of the gate leaked.\n `replaced` IS the pre-correction value, and `note` is free text that\n routinely restates it — so a redacted record showed the withheld value\n twice, underneath the word \"Redacted\". Who signed and when survive: that is\n a fact about the record's handling, not about its contents. */\n const signoff =\n redacted && record.signoff ? { ...record.signoff, note: null, replaced: null } : record.signoff;\n\n const shown = shownValue(record, { emptyLabel, redactedLabel }, strings.provenanceAbsence);\n\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <header className=\"flex flex-col gap-2 p-4 pb-3\">\n <div className=\"flex items-start justify-between gap-3\">\n <Title id={headingId} className=\"text-2xs font-semibold uppercase tracking-widest text-tertiary\">\n {record.label}\n </Title>\n {/* IT ALWAYS SPELLS THE STATE OUT — icon AND word, every state. A\n reader who has opened this has asked for the detail; the quiet\n argument is about a page of four hundred rows, not about the one\n surface someone deliberately opened. `stateContent` overrides\n this ONE mark, not the corner's existence — see its own doc for\n why a caller would rather own this than fight it with CSS. */}\n {stateContent ?? <ProvenanceBadge state={record.state} alwaysShow />}\n </div>\n {/* `??`, the same idiom the trigger's slot uses and for the same reason:\n an explicit `null` from a consumer's own `canEdit ? … : null` has to\n mean \"you draw it\", not \"draw nothing\". A slot that treated `null` as\n content would render an empty header for the most ordinary\n conditional there is. */}\n {valueContent ?? (\n <p className={cn(\"text-md text-primary\", failed && \"text-danger-text\")}>{shown}</p>\n )}\n {/* THE READOUT, NOT THE METER. A record's confidence knows which kind of\n scale it was said on, and drawing a small-integer rating as a\n percentage is the defect this indirection exists to make\n unrepresentable — see the foot of `types.ts`. */}\n <ConfidenceReadout confidence={record.confidence} ratingLabel={ratingLabel} />\n </header>\n\n <Separator />\n\n <div className=\"flex flex-col gap-4 p-4\">\n {record.check && (\n <Row\n /* Three icons for three states. Collapsing `false` and `null` onto\n one is the exact conflation the tri-state exists to prevent — a\n check that failed and a check nobody ran are not the same claim,\n and colour alone does not carry it. */\n icon={\n record.check.passed === true\n ? \"circle-check\"\n : record.check.passed === false\n ? \"circle-x\"\n : \"circle-dashed\"\n }\n label={detailStrings.check}\n >\n <span\n className={cn(\n record.check.passed === false && \"text-danger-text\",\n record.check.passed === null && \"text-tertiary\",\n )}\n >\n {record.check.detail}\n </span>\n </Row>\n )}\n\n {source && (\n <Row icon=\"file-text\" label={detailStrings.source}>\n <p className=\"text-primary\">\n {source.label}\n {source.locus && <span className=\"text-tertiary\"> · {source.locus}</span>}\n </p>\n {source.quote && (\n /* The quote is the evidence, so it is set apart rather than run\n into the sentence above it — and it is never truncated: a\n half-shown quotation is a misquotation. */\n <blockquote className=\"mt-2 border-l-2 border-accent-border bg-surface-sunken py-2 pl-3 text-sm text-secondary\">\n {source.quote}\n </blockquote>\n )}\n </Row>\n )}\n\n {reasoning && (\n <Row icon=\"brain\" label={detailStrings.reasoning}>\n {reasoning}\n </Row>\n )}\n\n {signoff && (\n <Row icon=\"shield-check\" label={detailStrings.signed}>\n <p className=\"text-primary\">\n {signoff.by} <span className=\"text-tertiary\">· {signoff.at}</span>\n </p>\n {signoff.note && <p className=\"mt-1\">{signoff.note}</p>}\n {signoff.replaced !== null && (\n /* The original, kept. A correction whose previous value is gone is\n an assertion rather than a record — this line is the difference\n between the two. */\n <p className=\"mt-2 text-xs text-tertiary\">\n {detailStrings.correctedFrom}{\" \"}\n <span className=\"line-through decoration-danger-border\">{signoff.replaced}</span>\n </p>\n )}\n </Row>\n )}\n\n {record.call && (\n <Row icon=\"cpu\" label={detailStrings.modelCall}>\n <div className=\"flex flex-wrap items-center gap-1.5\">\n <Badge size=\"sm\" tone=\"neutral\" className=\"font-mono\">\n {record.call.model}\n </Badge>\n <Badge size=\"sm\" tone=\"neutral\" className=\"tabular font-mono\">\n {detailStrings.tokensIn(numbers.format(record.call.tokensIn))}\n </Badge>\n <Badge size=\"sm\" tone=\"neutral\" className=\"tabular font-mono\">\n {detailStrings.tokensOut(numbers.format(record.call.tokensOut))}\n </Badge>\n <Badge size=\"sm\" tone=\"neutral\" className=\"tabular font-mono\">\n {detailStrings.latencyMs(numbers.format(record.call.latencyMs))}\n </Badge>\n </div>\n </Row>\n )}\n\n {!source && !reasoning && !record.call && !record.check && (\n /* Says so, rather than rendering an empty panel that reads as a\n loading state or a bug. */\n <p className=\"text-sm text-tertiary\">\n {detailStrings.empty}\n </p>\n )}\n </div>\n\n {actions && (\n <>\n <Separator />\n <div className=\"flex flex-wrap gap-2 p-4 pt-3\">{actions}</div>\n </>\n )}\n </div>\n );\n}\n"],"names":["Row","icon","label","children","jsxs","jsx","Icon","ProvenanceDetail","record","actions","emptyLabel","redactedLabel","ratingLabel","valueContent","stateContent","titleId","Title","className","strings","useUiStrings","detailStrings","numbers","numberFormat","useUiLocale","generatedId","useId","headingId","redacted","isRedacted","failed","isFailed","source","reasoning","signoff","shown","shownValue","cn","ProvenanceBadge","ConfidenceReadout","Separator","Badge","Fragment"],"mappings":"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"}
|