@misoto22/folio 0.0.0 → 0.17.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/AGENTS.md +88 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +21 -0
- package/README.md +208 -2
- package/bin/folio-design.mjs +277 -0
- package/bin/migrate-legacy.mjs +81 -0
- package/dist/agent/Accordion.md +65 -0
- package/dist/agent/Actions.md +49 -0
- package/dist/agent/Alert.md +65 -0
- package/dist/agent/AppShell.md +69 -0
- package/dist/agent/ArchitectureFigure.md +72 -0
- package/dist/agent/AreaChart.md +94 -0
- package/dist/agent/Article.md +65 -0
- package/dist/agent/AspectRatio.md +58 -0
- package/dist/agent/Avatar.md +53 -0
- package/dist/agent/Badge.md +62 -0
- package/dist/agent/BarChart.md +93 -0
- package/dist/agent/BarList.md +67 -0
- package/dist/agent/BigNumber.md +70 -0
- package/dist/agent/BoxPlot.md +82 -0
- package/dist/agent/Breadcrumb.md +55 -0
- package/dist/agent/BulletChart.md +71 -0
- package/dist/agent/Button.md +81 -0
- package/dist/agent/Calendar.md +77 -0
- package/dist/agent/CalendarHeatmap.md +75 -0
- package/dist/agent/Card.md +72 -0
- package/dist/agent/Checkbox.md +57 -0
- package/dist/agent/Code.md +51 -0
- package/dist/agent/CodeBlock.md +77 -0
- package/dist/agent/Collapsible.md +68 -0
- package/dist/agent/Collection.md +169 -0
- package/dist/agent/ColorPicker.md +76 -0
- package/dist/agent/Combobox.md +77 -0
- package/dist/agent/Command.md +122 -0
- package/dist/agent/ComposedChart.md +82 -0
- package/dist/agent/Contact.md +90 -0
- package/dist/agent/Content.md +70 -0
- package/dist/agent/ContextMenu.md +93 -0
- package/dist/agent/Conversation.md +247 -0
- package/dist/agent/DataflowFigure.md +49 -0
- package/dist/agent/DatePicker.md +104 -0
- package/dist/agent/DescriptionList.md +69 -0
- package/dist/agent/Diagram.md +71 -0
- package/dist/agent/DiagramCanvas.md +71 -0
- package/dist/agent/DiagramExportMenu.md +65 -0
- package/dist/agent/DiagramInspector.md +73 -0
- package/dist/agent/DiagramLegend.md +56 -0
- package/dist/agent/DiagramMinimap.md +69 -0
- package/dist/agent/DiagramToolbar.md +70 -0
- package/dist/agent/Dialog.md +76 -0
- package/dist/agent/DropdownMenu.md +110 -0
- package/dist/agent/EmptyState.md +63 -0
- package/dist/agent/ErrorState.md +67 -0
- package/dist/agent/Evidence.md +165 -0
- package/dist/agent/Facet.md +107 -0
- package/dist/agent/Field.md +79 -0
- package/dist/agent/FigureBand.md +49 -0
- package/dist/agent/FloatingIconButton.md +61 -0
- package/dist/agent/FunnelChart.md +75 -0
- package/dist/agent/Heading.md +65 -0
- package/dist/agent/Heatmap.md +78 -0
- package/dist/agent/Histogram.md +88 -0
- package/dist/agent/Input.md +52 -0
- package/dist/agent/Kbd.md +48 -0
- package/dist/agent/LifecycleFigure.md +50 -0
- package/dist/agent/LineChart.md +85 -0
- package/dist/agent/LinkArrow.md +49 -0
- package/dist/agent/Markdown.md +69 -0
- package/dist/agent/Media.md +261 -0
- package/dist/agent/Metric.md +70 -0
- package/dist/agent/Metrics.md +114 -0
- package/dist/agent/Music.md +86 -0
- package/dist/agent/NativeSelect.md +62 -0
- package/dist/agent/NavItem.md +56 -0
- package/dist/agent/NumberField.md +73 -0
- package/dist/agent/PageHeader.md +69 -0
- package/dist/agent/Pagination.md +70 -0
- package/dist/agent/PieChart.md +80 -0
- package/dist/agent/Popover.md +80 -0
- package/dist/agent/Portfolio.md +93 -0
- package/dist/agent/PortfolioIndex.md +34 -0
- package/dist/agent/Progress.md +58 -0
- package/dist/agent/RadarChart.md +79 -0
- package/dist/agent/RadialChart.md +81 -0
- package/dist/agent/RadioGroup.md +66 -0
- package/dist/agent/Reading.md +233 -0
- package/dist/agent/Recovery.md +72 -0
- package/dist/agent/SankeyChart.md +85 -0
- package/dist/agent/ScatterChart.md +80 -0
- package/dist/agent/ScrollArea.md +62 -0
- package/dist/agent/SearchPalette.md +51 -0
- package/dist/agent/SearchableMenu.md +69 -0
- package/dist/agent/Select.md +102 -0
- package/dist/agent/Separator.md +60 -0
- package/dist/agent/SequenceFigure.md +51 -0
- package/dist/agent/Sheet.md +82 -0
- package/dist/agent/Sidebar.md +194 -0
- package/dist/agent/SiteNavigation.md +62 -0
- package/dist/agent/SiteShell.md +67 -0
- package/dist/agent/Skeleton.md +96 -0
- package/dist/agent/Slider.md +67 -0
- package/dist/agent/Sparkline.md +68 -0
- package/dist/agent/Spinner.md +62 -0
- package/dist/agent/StatusDot.md +56 -0
- package/dist/agent/StatusPill.md +55 -0
- package/dist/agent/Steps.md +68 -0
- package/dist/agent/Switch.md +50 -0
- package/dist/agent/Table.md +111 -0
- package/dist/agent/Tabs.md +71 -0
- package/dist/agent/Tag.md +67 -0
- package/dist/agent/Text.md +66 -0
- package/dist/agent/Textarea.md +46 -0
- package/dist/agent/Timeline.md +114 -0
- package/dist/agent/Timestamp.md +65 -0
- package/dist/agent/Toast.md +51 -0
- package/dist/agent/ToggleGroup.md +67 -0
- package/dist/agent/Toolbar.md +72 -0
- package/dist/agent/Tooltip.md +74 -0
- package/dist/agent/TreemapChart.md +76 -0
- package/dist/agent/WaterfallChart.md +86 -0
- package/dist/agent/Workbench.md +142 -0
- package/dist/agent/WorkflowFigure.md +51 -0
- package/dist/agent/catalog.json +8055 -0
- package/dist/agent/index.md +185 -0
- package/dist/article.css +407 -0
- package/dist/charts/AreaChart/AreaChart.d.ts +198 -0
- package/dist/charts/AreaChart/AreaChart.js +479 -0
- package/dist/charts/AreaChart/AreaChart.js.map +1 -0
- package/dist/charts/BarChart/BarChart.d.ts +190 -0
- package/dist/charts/BarChart/BarChart.js +599 -0
- package/dist/charts/BarChart/BarChart.js.map +1 -0
- package/dist/charts/BarList/BarList.d.ts +65 -0
- package/dist/charts/BarList/BarList.js +79 -0
- package/dist/charts/BarList/BarList.js.map +1 -0
- package/dist/charts/BigNumber/BigNumber.d.ts +72 -0
- package/dist/charts/BigNumber/BigNumber.js +51 -0
- package/dist/charts/BigNumber/BigNumber.js.map +1 -0
- package/dist/charts/BoxPlot/BoxPlot.d.ts +177 -0
- package/dist/charts/BoxPlot/BoxPlot.js +497 -0
- package/dist/charts/BoxPlot/BoxPlot.js.map +1 -0
- package/dist/charts/BulletChart/BulletChart.d.ts +100 -0
- package/dist/charts/BulletChart/BulletChart.js +197 -0
- package/dist/charts/BulletChart/BulletChart.js.map +1 -0
- package/dist/charts/CalendarHeatmap/CalendarHeatmap.d.ts +106 -0
- package/dist/charts/CalendarHeatmap/CalendarHeatmap.js +103 -0
- package/dist/charts/CalendarHeatmap/CalendarHeatmap.js.map +1 -0
- package/dist/charts/ComposedChart/ComposedChart.d.ts +178 -0
- package/dist/charts/ComposedChart/ComposedChart.js +667 -0
- package/dist/charts/ComposedChart/ComposedChart.js.map +1 -0
- package/dist/charts/Facet/Facet.d.ts +240 -0
- package/dist/charts/Facet/Facet.js +133 -0
- package/dist/charts/Facet/Facet.js.map +1 -0
- package/dist/charts/Facet/panels.d.ts +187 -0
- package/dist/charts/Facet/panels.js +203 -0
- package/dist/charts/Facet/panels.js.map +1 -0
- package/dist/charts/FunnelChart/FunnelChart.d.ts +106 -0
- package/dist/charts/FunnelChart/FunnelChart.js +137 -0
- package/dist/charts/FunnelChart/FunnelChart.js.map +1 -0
- package/dist/charts/Heatmap/Heatmap.d.ts +101 -0
- package/dist/charts/Heatmap/Heatmap.js +125 -0
- package/dist/charts/Heatmap/Heatmap.js.map +1 -0
- package/dist/charts/Histogram/Histogram.d.ts +188 -0
- package/dist/charts/Histogram/Histogram.js +382 -0
- package/dist/charts/Histogram/Histogram.js.map +1 -0
- package/dist/charts/LineChart/LineChart.d.ts +174 -0
- package/dist/charts/LineChart/LineChart.js +485 -0
- package/dist/charts/LineChart/LineChart.js.map +1 -0
- package/dist/charts/PieChart/PieChart.d.ts +140 -0
- package/dist/charts/PieChart/PieChart.js +317 -0
- package/dist/charts/PieChart/PieChart.js.map +1 -0
- package/dist/charts/RadarChart/RadarChart.d.ts +135 -0
- package/dist/charts/RadarChart/RadarChart.js +303 -0
- package/dist/charts/RadarChart/RadarChart.js.map +1 -0
- package/dist/charts/RadialChart/RadialChart.d.ts +142 -0
- package/dist/charts/RadialChart/RadialChart.js +279 -0
- package/dist/charts/RadialChart/RadialChart.js.map +1 -0
- package/dist/charts/SankeyChart/SankeyChart.d.ts +149 -0
- package/dist/charts/SankeyChart/SankeyChart.js +509 -0
- package/dist/charts/SankeyChart/SankeyChart.js.map +1 -0
- package/dist/charts/ScatterChart/ScatterChart.d.ts +149 -0
- package/dist/charts/ScatterChart/ScatterChart.js +275 -0
- package/dist/charts/ScatterChart/ScatterChart.js.map +1 -0
- package/dist/charts/Sparkline/Sparkline.d.ts +53 -0
- package/dist/charts/Sparkline/Sparkline.js +95 -0
- package/dist/charts/Sparkline/Sparkline.js.map +1 -0
- package/dist/charts/TreemapChart/TreemapChart.d.ts +98 -0
- package/dist/charts/TreemapChart/TreemapChart.js +127 -0
- package/dist/charts/TreemapChart/TreemapChart.js.map +1 -0
- package/dist/charts/WaterfallChart/WaterfallChart.d.ts +164 -0
- package/dist/charts/WaterfallChart/WaterfallChart.js +321 -0
- package/dist/charts/WaterfallChart/WaterfallChart.js.map +1 -0
- package/dist/charts/index.d.ts +43 -0
- package/dist/charts/index.js +130 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/lib/annotations.d.ts +103 -0
- package/dist/charts/lib/annotations.js +99 -0
- package/dist/charts/lib/annotations.js.map +1 -0
- package/dist/charts/lib/axis.d.ts +18 -0
- package/dist/charts/lib/axis.js +21 -0
- package/dist/charts/lib/axis.js.map +1 -0
- package/dist/charts/lib/background.d.ts +33 -0
- package/dist/charts/lib/background.js +173 -0
- package/dist/charts/lib/background.js.map +1 -0
- package/dist/charts/lib/brush.d.ts +94 -0
- package/dist/charts/lib/brush.js +535 -0
- package/dist/charts/lib/brush.js.map +1 -0
- package/dist/charts/lib/chart.d.ts +94 -0
- package/dist/charts/lib/chart.js +149 -0
- package/dist/charts/lib/chart.js.map +1 -0
- package/dist/charts/lib/dot.d.ts +29 -0
- package/dist/charts/lib/dot.js +78 -0
- package/dist/charts/lib/dot.js.map +1 -0
- package/dist/charts/lib/empty.d.ts +31 -0
- package/dist/charts/lib/empty.js +24 -0
- package/dist/charts/lib/empty.js.map +1 -0
- package/dist/charts/lib/export.d.ts +94 -0
- package/dist/charts/lib/export.js +62 -0
- package/dist/charts/lib/export.js.map +1 -0
- package/dist/charts/lib/figure.d.ts +81 -0
- package/dist/charts/lib/figure.js +62 -0
- package/dist/charts/lib/figure.js.map +1 -0
- package/dist/charts/lib/format.d.ts +46 -0
- package/dist/charts/lib/format.js +56 -0
- package/dist/charts/lib/format.js.map +1 -0
- package/dist/charts/lib/legend.d.ts +45 -0
- package/dist/charts/lib/legend.js +117 -0
- package/dist/charts/lib/legend.js.map +1 -0
- package/dist/charts/lib/loading.d.ts +48 -0
- package/dist/charts/lib/loading.js +105 -0
- package/dist/charts/lib/loading.js.map +1 -0
- package/dist/charts/lib/paint.d.ts +154 -0
- package/dist/charts/lib/paint.js +551 -0
- package/dist/charts/lib/paint.js.map +1 -0
- package/dist/charts/lib/scale.d.ts +23 -0
- package/dist/charts/lib/scale.js +13 -0
- package/dist/charts/lib/scale.js.map +1 -0
- package/dist/charts/lib/selection.d.ts +20 -0
- package/dist/charts/lib/selection.js +18 -0
- package/dist/charts/lib/selection.js.map +1 -0
- package/dist/charts/lib/sonify-control.d.ts +163 -0
- package/dist/charts/lib/sonify-control.js +172 -0
- package/dist/charts/lib/sonify-control.js.map +1 -0
- package/dist/charts/lib/sonify.d.ts +248 -0
- package/dist/charts/lib/sonify.js +262 -0
- package/dist/charts/lib/sonify.js.map +1 -0
- package/dist/charts/lib/toolbar.d.ts +144 -0
- package/dist/charts/lib/toolbar.js +156 -0
- package/dist/charts/lib/toolbar.js.map +1 -0
- package/dist/charts/lib/tooltip.d.ts +59 -0
- package/dist/charts/lib/tooltip.js +135 -0
- package/dist/charts/lib/tooltip.js.map +1 -0
- package/dist/charts/lib/values.d.ts +56 -0
- package/dist/charts/lib/values.js +71 -0
- package/dist/charts/lib/values.js.map +1 -0
- package/dist/charts/lib/zoom.d.ts +139 -0
- package/dist/charts/lib/zoom.js +314 -0
- package/dist/charts/lib/zoom.js.map +1 -0
- package/dist/components/Accordion/Accordion.d.ts +34 -0
- package/dist/components/Accordion/Accordion.js +43 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Alert/Alert.d.ts +32 -0
- package/dist/components/Alert/Alert.js +49 -0
- package/dist/components/Alert/Alert.js.map +1 -0
- package/dist/components/AppShell/AppShell.d.ts +58 -0
- package/dist/components/AppShell/AppShell.js +126 -0
- package/dist/components/AppShell/AppShell.js.map +1 -0
- package/dist/components/Article/Article.d.ts +58 -0
- package/dist/components/Article/Article.js +34 -0
- package/dist/components/Article/Article.js.map +1 -0
- package/dist/components/AspectRatio/AspectRatio.d.ts +46 -0
- package/dist/components/AspectRatio/AspectRatio.js +33 -0
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts +38 -0
- package/dist/components/Avatar/Avatar.js +44 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Badge/Badge.d.ts +30 -0
- package/dist/components/Badge/Badge.js +29 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +37 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +46 -0
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/Button/Button.d.ts +70 -0
- package/dist/components/Button/Button.js +95 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Calendar/Calendar.d.ts +54 -0
- package/dist/components/Calendar/Calendar.js +369 -0
- package/dist/components/Calendar/Calendar.js.map +1 -0
- package/dist/components/Card/Card.d.ts +55 -0
- package/dist/components/Card/Card.js +64 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +26 -0
- package/dist/components/Checkbox/Checkbox.js +34 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Code/Code.d.ts +30 -0
- package/dist/components/Code/Code.js +21 -0
- package/dist/components/Code/Code.js.map +1 -0
- package/dist/components/CodeBlock/CodeBlock.d.ts +145 -0
- package/dist/components/CodeBlock/CodeBlock.js +114 -0
- package/dist/components/CodeBlock/CodeBlock.js.map +1 -0
- package/dist/components/Collapsible/Collapsible.d.ts +45 -0
- package/dist/components/Collapsible/Collapsible.js +60 -0
- package/dist/components/Collapsible/Collapsible.js.map +1 -0
- package/dist/components/ColorPicker/ColorPicker.d.ts +67 -0
- package/dist/components/ColorPicker/ColorPicker.js +334 -0
- package/dist/components/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/components/Combobox/Combobox.d.ts +77 -0
- package/dist/components/Combobox/Combobox.js +170 -0
- package/dist/components/Combobox/Combobox.js.map +1 -0
- package/dist/components/Command/Command.d.ts +125 -0
- package/dist/components/Command/Command.js +204 -0
- package/dist/components/Command/Command.js.map +1 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts +63 -0
- package/dist/components/ContextMenu/ContextMenu.js +109 -0
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
- package/dist/components/DatePicker/DatePicker.d.ts +130 -0
- package/dist/components/DatePicker/DatePicker.js +257 -0
- package/dist/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/DescriptionList/DescriptionList.d.ts +73 -0
- package/dist/components/DescriptionList/DescriptionList.js +35 -0
- package/dist/components/DescriptionList/DescriptionList.js.map +1 -0
- package/dist/components/Diagram/Diagram.d.ts +86 -0
- package/dist/components/Diagram/Diagram.js +211 -0
- package/dist/components/Diagram/Diagram.js.map +1 -0
- package/dist/components/Dialog/Dialog.d.ts +63 -0
- package/dist/components/Dialog/Dialog.js +90 -0
- package/dist/components/Dialog/Dialog.js.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +87 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +120 -0
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/components/EmptyState/EmptyState.d.ts +55 -0
- package/dist/components/EmptyState/EmptyState.js +32 -0
- package/dist/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/ErrorState/ErrorState.d.ts +55 -0
- package/dist/components/ErrorState/ErrorState.js +41 -0
- package/dist/components/ErrorState/ErrorState.js.map +1 -0
- package/dist/components/Field/Field.d.ts +111 -0
- package/dist/components/Field/Field.js +95 -0
- package/dist/components/Field/Field.js.map +1 -0
- package/dist/components/Field/field-control.d.ts +31 -0
- package/dist/components/Field/field-control.js +12 -0
- package/dist/components/Field/field-control.js.map +1 -0
- package/dist/components/FigureBand/FigureBand.d.ts +31 -0
- package/dist/components/FigureBand/FigureBand.js +51 -0
- package/dist/components/FigureBand/FigureBand.js.map +1 -0
- package/dist/components/FloatingIconButton/FloatingIconButton.d.ts +29 -0
- package/dist/components/FloatingIconButton/FloatingIconButton.js +34 -0
- package/dist/components/FloatingIconButton/FloatingIconButton.js.map +1 -0
- package/dist/components/Heading/Heading.d.ts +62 -0
- package/dist/components/Heading/Heading.js +44 -0
- package/dist/components/Heading/Heading.js.map +1 -0
- package/dist/components/Input/Input.d.ts +22 -0
- package/dist/components/Input/Input.js +21 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Kbd/Kbd.d.ts +27 -0
- package/dist/components/Kbd/Kbd.js +21 -0
- package/dist/components/Kbd/Kbd.js.map +1 -0
- package/dist/components/LinkArrow/LinkArrow.d.ts +24 -0
- package/dist/components/LinkArrow/LinkArrow.js +24 -0
- package/dist/components/LinkArrow/LinkArrow.js.map +1 -0
- package/dist/components/Markdown/Markdown.d.ts +139 -0
- package/dist/components/Markdown/Markdown.js +135 -0
- package/dist/components/Markdown/Markdown.js.map +1 -0
- package/dist/components/Markdown/inline.d.ts +29 -0
- package/dist/components/Markdown/inline.js +74 -0
- package/dist/components/Markdown/inline.js.map +1 -0
- package/dist/components/Markdown/nodes.d.ts +65 -0
- package/dist/components/Markdown/nodes.js +1 -0
- package/dist/components/Markdown/nodes.js.map +1 -0
- package/dist/components/Markdown/parse.d.ts +24 -0
- package/dist/components/Markdown/parse.js +110 -0
- package/dist/components/Markdown/parse.js.map +1 -0
- package/dist/components/Markdown/slug.d.ts +15 -0
- package/dist/components/Markdown/slug.js +7 -0
- package/dist/components/Markdown/slug.js.map +1 -0
- package/dist/components/Metric/Metric.d.ts +61 -0
- package/dist/components/Metric/Metric.js +51 -0
- package/dist/components/Metric/Metric.js.map +1 -0
- package/dist/components/NativeSelect/NativeSelect.d.ts +33 -0
- package/dist/components/NativeSelect/NativeSelect.js +44 -0
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -0
- package/dist/components/NavItem/NavItem.d.ts +39 -0
- package/dist/components/NavItem/NavItem.js +31 -0
- package/dist/components/NavItem/NavItem.js.map +1 -0
- package/dist/components/NumberField/NumberField.d.ts +69 -0
- package/dist/components/NumberField/NumberField.js +162 -0
- package/dist/components/NumberField/NumberField.js.map +1 -0
- package/dist/components/PageHeader/PageHeader.d.ts +92 -0
- package/dist/components/PageHeader/PageHeader.js +37 -0
- package/dist/components/PageHeader/PageHeader.js.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts +67 -0
- package/dist/components/Pagination/Pagination.js +112 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Popover/Popover.d.ts +39 -0
- package/dist/components/Popover/Popover.js +57 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Progress/Progress.d.ts +43 -0
- package/dist/components/Progress/Progress.js +57 -0
- package/dist/components/Progress/Progress.js.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +49 -0
- package/dist/components/RadioGroup/RadioGroup.js +53 -0
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts +46 -0
- package/dist/components/ScrollArea/ScrollArea.js +54 -0
- package/dist/components/ScrollArea/ScrollArea.js.map +1 -0
- package/dist/components/SearchableMenu/SearchableMenu.d.ts +68 -0
- package/dist/components/SearchableMenu/SearchableMenu.js +101 -0
- package/dist/components/SearchableMenu/SearchableMenu.js.map +1 -0
- package/dist/components/Select/Select.d.ts +87 -0
- package/dist/components/Select/Select.js +130 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Separator/Separator.d.ts +48 -0
- package/dist/components/Separator/Separator.js +43 -0
- package/dist/components/Separator/Separator.js.map +1 -0
- package/dist/components/Sheet/Sheet.d.ts +43 -0
- package/dist/components/Sheet/Sheet.js +79 -0
- package/dist/components/Sheet/Sheet.js.map +1 -0
- package/dist/components/Sidebar/Sidebar.d.ts +357 -0
- package/dist/components/Sidebar/Sidebar.js +447 -0
- package/dist/components/Sidebar/Sidebar.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.d.ts +70 -0
- package/dist/components/Skeleton/Skeleton.js +44 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Slider/Slider.d.ts +74 -0
- package/dist/components/Slider/Slider.js +143 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Spinner/Spinner.d.ts +58 -0
- package/dist/components/Spinner/Spinner.js +49 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/StatusDot/StatusDot.d.ts +29 -0
- package/dist/components/StatusDot/StatusDot.js +44 -0
- package/dist/components/StatusDot/StatusDot.js.map +1 -0
- package/dist/components/StatusPill/StatusPill.d.ts +30 -0
- package/dist/components/StatusPill/StatusPill.js +37 -0
- package/dist/components/StatusPill/StatusPill.js.map +1 -0
- package/dist/components/Steps/Steps.d.ts +65 -0
- package/dist/components/Steps/Steps.js +25 -0
- package/dist/components/Steps/Steps.js.map +1 -0
- package/dist/components/Switch/Switch.d.ts +23 -0
- package/dist/components/Switch/Switch.js +23 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Table/Table.d.ts +116 -0
- package/dist/components/Table/Table.js +137 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts +37 -0
- package/dist/components/Tabs/Tabs.js +205 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tag/Tag.d.ts +87 -0
- package/dist/components/Tag/Tag.js +62 -0
- package/dist/components/Tag/Tag.js.map +1 -0
- package/dist/components/Text/Text.d.ts +62 -0
- package/dist/components/Text/Text.js +30 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +20 -0
- package/dist/components/Textarea/Textarea.js +32 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Timestamp/Timestamp.d.ts +59 -0
- package/dist/components/Timestamp/Timestamp.js +56 -0
- package/dist/components/Timestamp/Timestamp.js.map +1 -0
- package/dist/components/Toast/Toast.d.ts +32 -0
- package/dist/components/Toast/Toast.js +64 -0
- package/dist/components/Toast/Toast.js.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroup.d.ts +46 -0
- package/dist/components/ToggleGroup/ToggleGroup.js +88 -0
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -0
- package/dist/components/Toolbar/Toolbar.d.ts +55 -0
- package/dist/components/Toolbar/Toolbar.js +43 -0
- package/dist/components/Toolbar/Toolbar.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +43 -0
- package/dist/components/Tooltip/Tooltip.js +40 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.d.ts +55 -0
- package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js +175 -0
- package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js.map +1 -0
- package/dist/diagrams/DataflowFigure/DataflowFigure.d.ts +28 -0
- package/dist/diagrams/DataflowFigure/DataflowFigure.js +148 -0
- package/dist/diagrams/DataflowFigure/DataflowFigure.js.map +1 -0
- package/dist/diagrams/DiagramCanvas/DiagramCanvas.d.ts +78 -0
- package/dist/diagrams/DiagramCanvas/DiagramCanvas.js +229 -0
- package/dist/diagrams/DiagramCanvas/DiagramCanvas.js.map +1 -0
- package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.d.ts +106 -0
- package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js +123 -0
- package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js.map +1 -0
- package/dist/diagrams/DiagramInspector/DiagramInspector.d.ts +70 -0
- package/dist/diagrams/DiagramInspector/DiagramInspector.js +94 -0
- package/dist/diagrams/DiagramInspector/DiagramInspector.js.map +1 -0
- package/dist/diagrams/DiagramLegend/DiagramLegend.d.ts +42 -0
- package/dist/diagrams/DiagramLegend/DiagramLegend.js +35 -0
- package/dist/diagrams/DiagramLegend/DiagramLegend.js.map +1 -0
- package/dist/diagrams/DiagramMinimap/DiagramMinimap.d.ts +77 -0
- package/dist/diagrams/DiagramMinimap/DiagramMinimap.js +106 -0
- package/dist/diagrams/DiagramMinimap/DiagramMinimap.js.map +1 -0
- package/dist/diagrams/DiagramToolbar/DiagramToolbar.d.ts +48 -0
- package/dist/diagrams/DiagramToolbar/DiagramToolbar.js +53 -0
- package/dist/diagrams/DiagramToolbar/DiagramToolbar.js.map +1 -0
- package/dist/diagrams/LifecycleFigure/LifecycleFigure.d.ts +31 -0
- package/dist/diagrams/LifecycleFigure/LifecycleFigure.js +234 -0
- package/dist/diagrams/LifecycleFigure/LifecycleFigure.js.map +1 -0
- package/dist/diagrams/SequenceFigure/SequenceFigure.d.ts +38 -0
- package/dist/diagrams/SequenceFigure/SequenceFigure.js +261 -0
- package/dist/diagrams/SequenceFigure/SequenceFigure.js.map +1 -0
- package/dist/diagrams/WorkflowFigure/WorkflowFigure.d.ts +36 -0
- package/dist/diagrams/WorkflowFigure/WorkflowFigure.js +259 -0
- package/dist/diagrams/WorkflowFigure/WorkflowFigure.js.map +1 -0
- package/dist/diagrams/index.d.ts +17 -0
- package/dist/diagrams/index.js +29 -0
- package/dist/diagrams/index.js.map +1 -0
- package/dist/diagrams/lib/dev.d.ts +61 -0
- package/dist/diagrams/lib/dev.js +96 -0
- package/dist/diagrams/lib/dev.js.map +1 -0
- package/dist/diagrams/lib/frame.d.ts +138 -0
- package/dist/diagrams/lib/frame.js +131 -0
- package/dist/diagrams/lib/frame.js.map +1 -0
- package/dist/diagrams/lib/geometry.d.ts +114 -0
- package/dist/diagrams/lib/geometry.js +113 -0
- package/dist/diagrams/lib/geometry.js.map +1 -0
- package/dist/diagrams/lib/legend.d.ts +32 -0
- package/dist/diagrams/lib/legend.js +84 -0
- package/dist/diagrams/lib/legend.js.map +1 -0
- package/dist/diagrams/lib/marks.d.ts +207 -0
- package/dist/diagrams/lib/marks.js +480 -0
- package/dist/diagrams/lib/marks.js.map +1 -0
- package/dist/diagrams/lib/route.d.ts +106 -0
- package/dist/diagrams/lib/route.js +201 -0
- package/dist/diagrams/lib/route.js.map +1 -0
- package/dist/diagrams/lib/wires.d.ts +59 -0
- package/dist/diagrams/lib/wires.js +94 -0
- package/dist/diagrams/lib/wires.js.map +1 -0
- package/dist/diagrams/spec.d.ts +405 -0
- package/dist/diagrams/spec.js +1 -0
- package/dist/diagrams/spec.js.map +1 -0
- package/dist/fonts/hanken-grotesk-300.woff2 +0 -0
- package/dist/fonts/hanken-grotesk-400.woff2 +0 -0
- package/dist/fonts/hanken-grotesk-500.woff2 +0 -0
- package/dist/fonts/hanken-grotesk-600.woff2 +0 -0
- package/dist/fonts/hanken-grotesk-700.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-400.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-500.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-600.woff2 +0 -0
- package/dist/fonts/newsreader-300.woff2 +0 -0
- package/dist/fonts/newsreader-400.woff2 +0 -0
- package/dist/fonts/newsreader-500.woff2 +0 -0
- package/dist/fonts/newsreader-600.woff2 +0 -0
- package/dist/fonts.css +96 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/keyframes.css +300 -0
- package/dist/lib/cn.d.ts +21 -0
- package/dist/lib/cn.js +9 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/color.d.ts +80 -0
- package/dist/lib/color.js +189 -0
- package/dist/lib/color.js.map +1 -0
- package/dist/lib/control.d.ts +32 -0
- package/dist/lib/control.js +14 -0
- package/dist/lib/control.js.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/numeric.d.ts +35 -0
- package/dist/lib/numeric.js +29 -0
- package/dist/lib/numeric.js.map +1 -0
- package/dist/lib/overlay-container.d.ts +48 -0
- package/dist/lib/overlay-container.js +15 -0
- package/dist/lib/overlay-container.js.map +1 -0
- package/dist/lib/slot-content.d.ts +8 -0
- package/dist/lib/slot-content.js +17 -0
- package/dist/lib/slot-content.js.map +1 -0
- package/dist/lib/step-rail.d.ts +45 -0
- package/dist/lib/step-rail.js +47 -0
- package/dist/lib/step-rail.js.map +1 -0
- package/dist/lib/svg-export.d.ts +138 -0
- package/dist/lib/svg-export.js +198 -0
- package/dist/lib/svg-export.js.map +1 -0
- package/dist/lib/useClipboardCopy.d.ts +30 -0
- package/dist/lib/useClipboardCopy.js +37 -0
- package/dist/lib/useClipboardCopy.js.map +1 -0
- package/dist/lib/useSelectionIndicator.d.ts +29 -0
- package/dist/lib/useSelectionIndicator.js +49 -0
- package/dist/lib/useSelectionIndicator.js.map +1 -0
- package/dist/lib/warn.d.ts +73 -0
- package/dist/lib/warn.js +38 -0
- package/dist/lib/warn.js.map +1 -0
- package/dist/semantic.css +200 -0
- package/dist/styles.css +98 -0
- package/dist/themes.css +607 -0
- package/dist/tokens/brand.d.ts +47 -0
- package/dist/tokens/brand.js +38 -0
- package/dist/tokens/brand.js.map +1 -0
- package/dist/tokens.css +666 -0
- package/dist/tokens.d.ts +205 -0
- package/dist/tokens.js +1056 -0
- package/dist/tokens.json +1055 -0
- package/dist/website/Actions/Actions.d.ts +34 -0
- package/dist/website/Actions/Actions.js +29 -0
- package/dist/website/Actions/Actions.js.map +1 -0
- package/dist/website/Collection/Collection.d.ts +128 -0
- package/dist/website/Collection/Collection.js +162 -0
- package/dist/website/Collection/Collection.js.map +1 -0
- package/dist/website/Contact/Contact.d.ts +87 -0
- package/dist/website/Contact/Contact.js +94 -0
- package/dist/website/Contact/Contact.js.map +1 -0
- package/dist/website/Content/CodePanel.d.ts +27 -0
- package/dist/website/Content/CodePanel.js +30 -0
- package/dist/website/Content/CodePanel.js.map +1 -0
- package/dist/website/Content/Content.d.ts +29 -0
- package/dist/website/Content/Content.js +38 -0
- package/dist/website/Content/Content.js.map +1 -0
- package/dist/website/Conversation/Conversation.d.ts +193 -0
- package/dist/website/Conversation/Conversation.js +252 -0
- package/dist/website/Conversation/Conversation.js.map +1 -0
- package/dist/website/Evidence/Evidence.d.ts +116 -0
- package/dist/website/Evidence/Evidence.js +142 -0
- package/dist/website/Evidence/Evidence.js.map +1 -0
- package/dist/website/Media/Media.d.ts +173 -0
- package/dist/website/Media/Media.js +225 -0
- package/dist/website/Media/Media.js.map +1 -0
- package/dist/website/Media/MediaLightbox.d.ts +18 -0
- package/dist/website/Media/MediaLightbox.js +38 -0
- package/dist/website/Media/MediaLightbox.js.map +1 -0
- package/dist/website/Metrics/Metrics.d.ts +74 -0
- package/dist/website/Metrics/Metrics.js +96 -0
- package/dist/website/Metrics/Metrics.js.map +1 -0
- package/dist/website/Music/Music.d.ts +60 -0
- package/dist/website/Music/Music.js +80 -0
- package/dist/website/Music/Music.js.map +1 -0
- package/dist/website/Portfolio/FrameLayout.d.ts +9 -0
- package/dist/website/Portfolio/FrameLayout.js +42 -0
- package/dist/website/Portfolio/FrameLayout.js.map +1 -0
- package/dist/website/Portfolio/Portfolio.d.ts +49 -0
- package/dist/website/Portfolio/Portfolio.js +66 -0
- package/dist/website/Portfolio/Portfolio.js.map +1 -0
- package/dist/website/Portfolio/QuestionCard.d.ts +22 -0
- package/dist/website/Portfolio/QuestionCard.js +33 -0
- package/dist/website/Portfolio/QuestionCard.js.map +1 -0
- package/dist/website/PortfolioIndex/PortfolioIndex.d.ts +21 -0
- package/dist/website/PortfolioIndex/PortfolioIndex.js +31 -0
- package/dist/website/PortfolioIndex/PortfolioIndex.js.map +1 -0
- package/dist/website/Reading/Reading.d.ts +203 -0
- package/dist/website/Reading/Reading.js +357 -0
- package/dist/website/Reading/Reading.js.map +1 -0
- package/dist/website/Recovery/Recovery.d.ts +39 -0
- package/dist/website/Recovery/Recovery.js +96 -0
- package/dist/website/Recovery/Recovery.js.map +1 -0
- package/dist/website/SearchPalette/SearchPalette.d.ts +59 -0
- package/dist/website/SearchPalette/SearchPalette.js +120 -0
- package/dist/website/SearchPalette/SearchPalette.js.map +1 -0
- package/dist/website/SiteNavigation/SiteNavigation.d.ts +46 -0
- package/dist/website/SiteNavigation/SiteNavigation.js +101 -0
- package/dist/website/SiteNavigation/SiteNavigation.js.map +1 -0
- package/dist/website/SiteShell/SiteShell.d.ts +45 -0
- package/dist/website/SiteShell/SiteShell.js +46 -0
- package/dist/website/SiteShell/SiteShell.js.map +1 -0
- package/dist/website/Timeline/Timeline.d.ts +80 -0
- package/dist/website/Timeline/Timeline.js +99 -0
- package/dist/website/Timeline/Timeline.js.map +1 -0
- package/dist/website/Workbench/Chronology.d.ts +32 -0
- package/dist/website/Workbench/Chronology.js +32 -0
- package/dist/website/Workbench/Chronology.js.map +1 -0
- package/dist/website/Workbench/ContactRow.d.ts +13 -0
- package/dist/website/Workbench/ContactRow.js +11 -0
- package/dist/website/Workbench/ContactRow.js.map +1 -0
- package/dist/website/Workbench/PhotoMosaic.d.ts +13 -0
- package/dist/website/Workbench/PhotoMosaic.js +15 -0
- package/dist/website/Workbench/PhotoMosaic.js.map +1 -0
- package/dist/website/Workbench/Reveal.d.ts +19 -0
- package/dist/website/Workbench/Reveal.js +29 -0
- package/dist/website/Workbench/Reveal.js.map +1 -0
- package/dist/website/Workbench/ToolStrip.d.ts +18 -0
- package/dist/website/Workbench/ToolStrip.js +15 -0
- package/dist/website/Workbench/ToolStrip.js.map +1 -0
- package/dist/website/Workbench/Workbench.d.ts +23 -0
- package/dist/website/Workbench/Workbench.js +22 -0
- package/dist/website/Workbench/Workbench.js.map +1 -0
- package/dist/website/Workbench/WorkbenchCard.d.ts +29 -0
- package/dist/website/Workbench/WorkbenchCard.js +21 -0
- package/dist/website/Workbench/WorkbenchCard.js.map +1 -0
- package/dist/website/Workbench/WorkbenchEntries.d.ts +22 -0
- package/dist/website/Workbench/WorkbenchEntries.js +24 -0
- package/dist/website/Workbench/WorkbenchEntries.js.map +1 -0
- package/dist/website/Workbench/WorkbenchFigure.d.ts +20 -0
- package/dist/website/Workbench/WorkbenchFigure.js +15 -0
- package/dist/website/Workbench/WorkbenchFigure.js.map +1 -0
- package/dist/website/Workbench/WorkbenchHero.d.ts +24 -0
- package/dist/website/Workbench/WorkbenchHero.js +24 -0
- package/dist/website/Workbench/WorkbenchHero.js.map +1 -0
- package/dist/website/Workbench/theme.d.ts +22 -0
- package/dist/website/Workbench/theme.js +12 -0
- package/dist/website/Workbench/theme.js.map +1 -0
- package/dist/website/index.d.ts +38 -0
- package/dist/website/index.js +32 -0
- package/dist/website/index.js.map +1 -0
- package/dist/website-actions.css +6 -0
- package/dist/website-base.css +46 -0
- package/dist/website-collection.css +89 -0
- package/dist/website-contact.css +29 -0
- package/dist/website-content.css +20 -0
- package/dist/website-controls.css +91 -0
- package/dist/website-conversation.css +115 -0
- package/dist/website-evidence.css +56 -0
- package/dist/website-media.css +227 -0
- package/dist/website-metrics.css +15 -0
- package/dist/website-music.css +27 -0
- package/dist/website-portfolio.css +94 -0
- package/dist/website-reading.css +159 -0
- package/dist/website-recovery.css +28 -0
- package/dist/website-search.css +26 -0
- package/dist/website-shell.css +89 -0
- package/dist/website-timeline.css +43 -0
- package/dist/website-workbench.css +162 -0
- package/dist/website.css +26 -0
- package/llms.txt +35 -0
- package/package.json +163 -5
- package/skills/folio-design/SKILL.md +228 -0
- package/skills/folio-design/evals/claims.json +95 -0
- package/skills/folio-design/evals/evals.json +84 -0
- package/skills/folio-design/rules/a11y.md +167 -0
- package/skills/folio-design/rules/composition.md +108 -0
- package/skills/folio-design/rules/forms.md +135 -0
- package/skills/folio-design/rules/naming.md +155 -0
- package/skills/folio-design/rules/tokens.md +135 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/website/Conversation/Conversation.tsx"],"sourcesContent":["'use client'\n\nimport { useRef, useState } from 'react'\nimport type { ButtonHTMLAttributes, CSSProperties, HTMLAttributes, PointerEvent, ReactElement, ReactNode, Ref } from 'react'\nimport { RiArrowRightLine, RiArrowRightUpLine, RiArrowDownSLine, RiArrowRightSLine, RiRestartLine, RiSparklingLine, RiCloseLine, RiChat3Line } from '@remixicon/react'\nimport { cn } from '../../lib/cn'\nimport { replaceSlotContent, resolveSlotElement } from '../../lib/slot-content'\nimport { Article } from '../../components/Article/Article'\nimport { Button } from '../../components/Button/Button'\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../components/Collapsible/Collapsible'\nimport { DescriptionList } from '../../components/DescriptionList/DescriptionList'\nimport type { DescriptionListItem } from '../../components/DescriptionList/DescriptionList'\nimport { Field } from '../../components/Field/Field'\nimport { Heading } from '../../components/Heading/Heading'\nimport { Input } from '../../components/Input/Input'\nimport { Text } from '../../components/Text/Text'\n\nexport interface ConversationLayoutProps extends HTMLAttributes<HTMLDivElement> {\n evidence: ReactNode\n}\n\n/** A reading-width conversation with a separate, sticky evidence rail. */\nexport function ConversationLayout({ evidence, children, className, ...rest }: ConversationLayoutProps) {\n return <div className={cn('folio-conversation-layout', className)} {...rest}>\n {children}<div className=\"folio-conversation-layout__evidence\">{evidence}</div>\n </div>\n}\n\nexport interface ConversationFactsProps extends HTMLAttributes<HTMLDListElement> { items: DescriptionListItem[] }\n\nexport function ConversationFacts({ items, className, ...rest }: ConversationFactsProps) {\n return <DescriptionList items={items} layout=\"stacked\" divided={false} className={cn('folio-conversation-facts', className)} {...rest} />\n}\n\nexport interface ConversationSuggestion {\n id: string\n label: string\n onSelect: () => void\n disabled?: boolean\n /** Compact docks may omit longer suggestions on small viewports. */\n wideOnly?: boolean\n}\n\nexport interface ConversationSuggestionsProps extends HTMLAttributes<HTMLDivElement> {\n label: string\n items: ConversationSuggestion[]\n}\n\nexport function ConversationSuggestions({ label, items, className, ...rest }: ConversationSuggestionsProps) {\n return <div className={cn('folio-conversation-suggestions', className)} {...rest}>\n <Text size=\"xs\" tone=\"muted\">{label}</Text>\n <ul>{items.map((item) => <li key={item.id} data-wide-only={item.wideOnly || undefined}>\n <Button variant=\"ghost\" className=\"folio-conversation-suggestions__action\" disabled={item.disabled} onClick={item.onSelect}>\n <span>{item.label}</span><RiArrowRightLine size={16} aria-hidden />\n </Button>\n </li>)}</ul>\n </div>\n}\n\nexport interface ConversationControl {\n id: string\n label: string\n kind?: 'expand' | 'collapse' | 'reset'\n disabled?: boolean\n onSelect: () => void\n}\n\nexport interface ConversationThreadProps extends HTMLAttributes<HTMLElement> {\n label: string\n intro?: { title: ReactNode; description: ReactNode; suggestionsLabel: string; suggestions: ConversationSuggestion[] }\n summary?: ReactNode\n controls?: ConversationControl[]\n composer: ReactNode\n proposal?: ReactNode\n hasTurns: boolean\n}\n\n/** Host owns turns and folding; this composition owns their hierarchy and controls. */\nexport function ConversationThread({ label, intro, summary, controls = [], composer, proposal, hasTurns, children, className, ...rest }: ConversationThreadProps) {\n return <section aria-label={label} className={cn('folio-conversation-thread', className)} {...rest}>\n {intro && <div className=\"folio-conversation-thread__intro\">\n <Heading level={2}>{intro.title}</Heading><Text className=\"mt-5\">{intro.description}</Text>\n <ConversationSuggestions label={intro.suggestionsLabel} items={intro.suggestions} />\n </div>}\n {hasTurns && <>\n <div className=\"folio-conversation-thread__controls\">\n <Text size=\"xs\" tone=\"muted\">{summary}</Text>\n <div>{controls.map((control) => {\n const Icon = control.kind === 'reset' ? RiRestartLine : control.kind === 'expand' ? RiArrowDownSLine : RiArrowRightSLine\n return <Button key={control.id} variant=\"ghost\" disabled={control.disabled} onClick={control.onSelect}><Icon size={14} aria-hidden />{control.label}</Button>\n })}</div>\n </div>\n <ConversationLog>{children}</ConversationLog>\n </>}\n <div className=\"folio-conversation-thread__composer\" data-sticky={hasTurns || undefined}>\n {proposal && <div className=\"folio-conversation-thread__proposal\">{proposal}</div>}{composer}\n </div>\n </section>\n}\n\nexport interface ConversationLogProps extends HTMLAttributes<HTMLDivElement> { compact?: boolean }\n\nexport function ConversationLog({ compact, className, ...rest }: ConversationLogProps) {\n return <div role=\"log\" aria-live=\"polite\" className={cn('folio-conversation-log', className)} data-compact={compact || undefined} {...rest} />\n}\n\nexport interface QuestionComposerProps extends Omit<HTMLAttributes<HTMLFormElement>, 'onSubmit'> {\n id: string\n label: string\n hideLabel?: boolean\n value: string\n onValueChange: (value: string) => void\n onSubmit: () => void\n inputRef?: Ref<HTMLInputElement>\n placeholder?: string\n maxLength?: number\n disabled?: boolean\n submitDisabled?: boolean\n pending?: boolean\n submitLabel: string\n hint?: ReactNode\n hideHint?: boolean\n counter?: ReactNode\n actions?: ReactNode\n compact?: boolean\n}\n\n/** A controlled, labelled composer. Request limits and sending remain host concerns. */\nexport function QuestionComposer({ id, label, hideLabel, value, onValueChange, onSubmit, inputRef, placeholder, maxLength, disabled, submitDisabled, pending, submitLabel, hint, hideHint, counter, actions, compact, className, ...rest }: QuestionComposerProps) {\n return <form autoComplete=\"off\" className={cn('folio-question-composer', className)} data-compact={compact || undefined} onSubmit={(event) => { event.preventDefault(); onSubmit() }} {...rest}>\n <div className=\"folio-question-composer__row\">\n <Field htmlFor={id} label={<span className={hideLabel ? 'sr-only' : undefined}>{label}</span>} className=\"folio-question-composer__field\">\n <Input ref={inputRef} id={id} name=\"question\" value={value} onChange={(event) => onValueChange(event.target.value)} placeholder={placeholder} maxLength={maxLength} disabled={disabled} />\n </Field>\n <Button type=\"submit\" loading={pending} disabled={submitDisabled} keycap={compact ? undefined : '↵'}>{submitLabel}</Button>\n </div>\n {(hint || counter || actions) && <div className=\"folio-question-composer__footer\">\n {hint && <Text size=\"xs\" tone=\"muted\" className={hideHint ? 'sr-only' : undefined}>{hint}</Text>}\n {counter != null && <Text as=\"span\" size=\"xs\" tone=\"muted\" className=\"folio-question-composer__counter\">{counter}</Text>}\n {actions}\n </div>}\n </form>\n}\n\nexport interface ConversationTurnProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n title: ReactNode\n metadata?: ReactNode\n expanded: boolean\n onToggle: () => void\n bodyId: string\n preview?: ReactNode\n}\n\nexport function ConversationTurn({ title, metadata, expanded, onToggle, bodyId, preview, children, className, ...rest }: ConversationTurnProps) {\n return <article className={cn('folio-conversation-turn', className)} {...rest}>\n {metadata}\n <Collapsible open={expanded} onOpenChange={onToggle}>\n <Heading level={3} size=\"sub\">\n <CollapsibleTrigger asChild><Button variant=\"ghost\" className=\"folio-conversation-turn__toggle\" aria-controls={bodyId}><span>{title}</span><RiArrowRightSLine size={16} aria-hidden /></Button></CollapsibleTrigger>\n </Heading>\n {!expanded && <Text size=\"sm\" tone=\"muted\" className=\"folio-conversation-turn__preview\">{preview}</Text>}\n <CollapsibleContent id={bodyId}><div className=\"folio-conversation-turn__body\">{children}</div></CollapsibleContent>\n </Collapsible>\n </article>\n}\n\nexport interface ConversationQuoteProps extends HTMLAttributes<HTMLElement> { label: string; compact?: boolean }\n\nexport function ConversationQuote({ label, compact, children, className, ...rest }: ConversationQuoteProps) {\n return <figure className={cn('folio-conversation-quote', className)} data-compact={compact || undefined} {...rest}>\n <Text as=\"figcaption\" size=\"xs\" tone=\"muted\">{label}</Text><blockquote>{children}</blockquote>\n </figure>\n}\n\nexport interface ConversationAnswerProps extends HTMLAttributes<HTMLDivElement> { question: ReactNode; questionLabel: string; quote?: ReactNode }\n\nexport function ConversationAnswer({ question, questionLabel, quote, children, className, ...rest }: ConversationAnswerProps) {\n return <div className={cn('folio-conversation-answer', className)} {...rest}>\n {quote}<Text size=\"xs\" tone=\"muted\">{questionLabel}</Text><Text tone=\"strong\" size=\"lead\" className=\"folio-conversation-answer__question\">{question}</Text>{children}\n </div>\n}\n\n/** Trusted React nodes from the host's sanitized answer parser, never raw model HTML. */\nexport function ConversationProse({ className, ...rest }: HTMLAttributes<HTMLDivElement>) {\n return <Article as=\"div\" className={cn('folio-conversation-prose', className)} {...rest} />\n}\n\n/** Model-generated headings are prose labels, so they do not alter the page outline. */\nexport function ConversationAnswerHeading({ lead, className, ...rest }: HTMLAttributes<HTMLParagraphElement> & { lead?: boolean }) {\n return <p className={cn('folio-conversation-prose__heading', className)} data-lead={lead || undefined} {...rest} />\n}\n\nexport function StreamingCaret() { return <span aria-hidden=\"true\" className=\"folio-conversation-caret\" /> }\n\nexport interface ConversationSource {\n id: string\n index: string\n title: ReactNode\n detail?: ReactNode\n kind: ReactNode\n highlighted?: boolean\n link: ReactElement<{ children?: ReactNode }>\n}\n\nexport interface ConversationSourcesProps extends HTMLAttributes<HTMLDivElement> { label: string; count: ReactNode; items: ConversationSource[] }\n\nexport function ConversationSources({ label, count, items, className, ...rest }: ConversationSourcesProps) {\n if (items.length === 0) return null\n return <div className={cn('folio-conversation-sources', className)} {...rest}>\n <div className=\"folio-conversation-sources__header\"><Text size=\"xs\" tone=\"muted\">{label}</Text><Text size=\"xs\" tone=\"muted\">{count}</Text></div>\n <ul>{items.map((item) => <li key={item.id}><Button asChild variant=\"ghost\" className=\"folio-conversation-sources__link\" data-highlighted={item.highlighted || undefined}>\n {replaceSlotContent(item.link, <><Text as=\"span\" size=\"xs\" tone=\"muted\" aria-hidden>{item.index}</Text><span><Text as=\"span\" size=\"sm\" tone=\"strong\">{item.title}</Text>{item.detail && <Text as=\"span\" size=\"xs\" tone=\"muted\">{item.detail}</Text>}</span><Text as=\"span\" size=\"xs\" tone=\"muted\">{item.kind}</Text></>)}\n </Button></li>)}</ul>\n </div>\n}\n\nexport interface ActionProposalProps extends HTMLAttributes<HTMLDivElement> {\n label: string\n destination: ReactNode\n detail?: ReactNode\n approveLabel: string\n dismissLabel: string\n onApprove: () => void\n onDismiss: () => void\n approvalAttributes?: Record<`data-${string}`, string>\n}\n\nexport function ActionProposal({ label, destination, detail, approveLabel, dismissLabel, onApprove, onDismiss, approvalAttributes, className, ...rest }: ActionProposalProps) {\n return <div role=\"group\" aria-label={label} className={cn('folio-action-proposal', className)} {...rest}>\n <Text size=\"xs\" tone=\"muted\">{label}</Text>\n <div className=\"folio-action-proposal__actions\">\n <Button variant=\"ghost\" className=\"folio-action-proposal__action\" aria-label={approveLabel} onClick={onApprove} {...approvalAttributes}><span>{destination}</span><span>{detail && <Text as=\"span\" size=\"xs\" tone=\"muted\" className=\"folio-action-proposal__detail\">{detail}</Text>}<RiArrowRightLine size={16} aria-hidden /></span></Button>\n <Button variant=\"ghost\" className=\"folio-action-proposal__action\" onClick={onDismiss}>{dismissLabel}<RiCloseLine size={16} aria-hidden /></Button>\n </div>\n </div>\n}\n\nexport interface ConversationLauncherProps extends ButtonHTMLAttributes<HTMLButtonElement> { visible: boolean; buttonRef?: Ref<HTMLButtonElement> }\n\nexport function ConversationLauncher({ visible, buttonRef, className, children, ...rest }: ConversationLauncherProps) {\n return <Button asChild variant=\"secondary\" className={cn('folio-conversation-launcher', className)}><button ref={buttonRef} inert={!visible} data-revealed={visible} {...rest}><RiChat3Line size={18} aria-hidden />{children}</button></Button>\n}\n\nexport type ConversationDockCorner = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'\n\nexport interface ConversationDockProps extends HTMLAttributes<HTMLElement> {\n label: string\n open: boolean\n card: boolean\n corner: ConversationDockCorner\n dragging?: boolean\n moving?: boolean\n panelRef?: Ref<HTMLElement>\n logRef?: Ref<HTMLDivElement>\n roomLink: ReactElement\n closeLabel: string\n onClose: () => void\n onHeaderPointerDown?: (event: PointerEvent<HTMLElement>) => void\n handles?: ReactNode\n proposal?: ReactNode\n notice?: ReactNode\n composer: ReactNode\n}\n\n/** The host supplies placement, dismissal and stream state; the dock draws them. */\nexport function ConversationDock({ label, open, card, corner, dragging, moving, panelRef, logRef, roomLink, closeLabel, onClose, onHeaderPointerDown, handles, proposal, notice, composer, children, className, ...rest }: ConversationDockProps) {\n return <>\n {open && !card && <div className=\"folio-conversation-dock__scrim\" aria-hidden onClick={onClose} />}\n <aside ref={panelRef} aria-label={label} inert={!open} data-open={open} data-card={card} data-corner={corner} data-dragging={dragging || undefined} data-moving={moving || undefined} className={cn('folio-conversation-dock', className)} {...rest}>\n {handles}\n <header onPointerDown={onHeaderPointerDown} className=\"folio-conversation-dock__header\">\n <Text as=\"span\" size=\"xs\" tone=\"muted\"><RiSparklingLine size={14} aria-hidden />{label}</Text>\n <div><Button asChild variant=\"ghost\">{roomLink}</Button><Button variant=\"ghost\" iconOnly aria-label={closeLabel} onClick={onClose}><RiArrowDownSLine size={16} aria-hidden /></Button></div>\n </header>\n <div ref={logRef} className=\"folio-conversation-dock__log\">{children}</div>\n {proposal && <div className=\"folio-conversation-dock__proposal\">{proposal}</div>}\n {notice && <Text role=\"status\" size=\"xs\" className=\"folio-conversation-dock__notice\">{notice}</Text>}\n <div className=\"folio-conversation-dock__composer\">{composer}</div>\n </aside>\n </>\n}\n\nexport interface ConversationDockWelcomeProps extends HTMLAttributes<HTMLDivElement> { lead: ReactNode; suggestionsLabel: string; suggestions: ConversationSuggestion[] }\n\nexport function ConversationDockWelcome({ lead, suggestionsLabel, suggestions, className, ...rest }: ConversationDockWelcomeProps) {\n return <div className={cn('folio-conversation-dock-welcome', className)} {...rest}><Text size=\"lead\" tone=\"strong\">{lead}</Text><ConversationSuggestions label={suggestionsLabel} items={suggestions} /></div>\n}\n\nexport interface ConversationResizeHandleProps {\n axis: 'size-vertical' | 'size-horizontal'\n side: 'top' | 'bottom' | 'left' | 'right'\n label: string\n dragging: boolean\n onStart: (axis: 'size-vertical' | 'size-horizontal', event: PointerEvent<HTMLElement>) => void\n onNudge: (axis: 'size-vertical' | 'size-horizontal', delta: number) => void\n}\n\n/** Keyboard equivalents for the host's pointer resize controller. */\nexport function ConversationResizeHandle({ axis, side, label, dragging, onStart, onNudge }: ConversationResizeHandleProps) {\n const growKey = { top: 'ArrowUp', bottom: 'ArrowDown', left: 'ArrowLeft', right: 'ArrowRight' }[side]\n const shrinkKey = { top: 'ArrowDown', bottom: 'ArrowUp', left: 'ArrowRight', right: 'ArrowLeft' }[side]\n return <div role=\"separator\" aria-orientation={axis === 'size-vertical' ? 'horizontal' : 'vertical'} aria-label={label} tabIndex={0} data-side={side} data-dragging={dragging || undefined} className=\"folio-conversation-resize\" onPointerDown={(event) => onStart(axis, event)} onKeyDown={(event) => {\n if (event.key === growKey) onNudge(axis, 32)\n else if (event.key === shrinkKey) onNudge(axis, -32)\n else return\n event.preventDefault()\n }} />\n}\n\nexport interface SelectionToolbarAction { id: string; label: string; disabled?: boolean; onSelect: () => void }\n\nexport interface SelectionToolbarProps extends HTMLAttributes<HTMLDivElement> {\n label: string\n actions: SelectionToolbarAction[]\n floating: boolean\n toolbarRef?: Ref<HTMLDivElement>\n style?: CSSProperties\n}\n\n/** Selection actions with a real toolbar's single tab stop and arrow navigation. */\nexport function SelectionToolbar({ label, actions, floating, toolbarRef, className, ...rest }: SelectionToolbarProps) {\n const [activeId, setActiveId] = useState<string | null>(null)\n const controls = useRef<Array<HTMLButtonElement | null>>([])\n const enabled = actions.map((action, index) => action.disabled ? -1 : index).filter((index) => index !== -1)\n const selected = actions.findIndex((action) => action.id === activeId && !action.disabled)\n const activeIndex = selected >= 0 ? selected : (enabled[0] ?? -1)\n return <div ref={toolbarRef} role=\"toolbar\" aria-label={label} data-folio-animated data-floating={floating} className={cn('folio-selection-toolbar', className)} {...rest} onKeyDown={(event) => {\n rest.onKeyDown?.(event)\n if (event.defaultPrevented || enabled.length === 0) return\n const current = controls.current.findIndex((control) => control === document.activeElement)\n const position = enabled.indexOf(current)\n const rtl = getComputedStyle(event.currentTarget).direction === 'rtl'\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight'\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft'\n let next: number | undefined\n if (event.key === 'Home') next = enabled[0]\n else if (event.key === 'End') next = enabled[enabled.length - 1]\n else if (event.key === forward) next = enabled[(position + 1) % enabled.length]\n else if (event.key === backward) next = enabled[(position - 1 + enabled.length) % enabled.length]\n else return\n if (next === undefined) return\n const nextAction = actions[next]\n if (!nextAction) return\n event.preventDefault()\n setActiveId(nextAction.id)\n controls.current[next]?.focus()\n }}>\n {actions.map((action, index) => <Button asChild key={action.id} variant=\"secondary\"><button ref={(node) => { controls.current[index] = node }} type=\"button\" tabIndex={index === activeIndex ? 0 : -1} disabled={action.disabled} onFocus={() => setActiveId(action.id)} onClick={action.onSelect}>{action.label}</button></Button>)}\n </div>\n}\n\n/** A router link keeps its own destination and behavior inside a standard action. */\nexport function ConversationRoomLink({ children }: { children: ReactElement }) {\n const link = resolveSlotElement(children as ReactElement<{ children?: ReactNode }>)\n return <Button asChild variant=\"ghost\" className=\"mt-5\">{replaceSlotContent(link, <>{link.props.children}<RiArrowRightUpLine size={14} aria-hidden /></>)}</Button>\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
3
|
+
import { DescriptionListItem } from '../../components/DescriptionList/DescriptionList.js';
|
|
4
|
+
|
|
5
|
+
type EvidenceState = 'idle' | 'running' | 'done' | 'failed' | 'restored';
|
|
6
|
+
interface EvidenceStatusProps extends HTMLAttributes<HTMLElement> {
|
|
7
|
+
state: EvidenceState;
|
|
8
|
+
}
|
|
9
|
+
declare function EvidenceStatus({ state, children, className, ...rest }: EvidenceStatusProps): react.JSX.Element;
|
|
10
|
+
interface ActivityTraceItem {
|
|
11
|
+
id: string;
|
|
12
|
+
state: 'running' | 'done' | 'failed';
|
|
13
|
+
label: ReactNode;
|
|
14
|
+
detail?: ReactNode;
|
|
15
|
+
summary?: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
interface ActivityTraceProps extends HTMLAttributes<HTMLDivElement> {
|
|
18
|
+
label: string;
|
|
19
|
+
items: ActivityTraceItem[];
|
|
20
|
+
waiting?: boolean;
|
|
21
|
+
waitingLabel?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Tool and job traces share one presentation; the caller supplies truthful, localized labels. */
|
|
24
|
+
declare function ActivityTrace({ label, items, waiting, waitingLabel, className, ...rest }: ActivityTraceProps): react.JSX.Element | null;
|
|
25
|
+
interface EvidencePanelProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
26
|
+
title: string;
|
|
27
|
+
eyebrow: ReactNode;
|
|
28
|
+
state: EvidenceState;
|
|
29
|
+
stateLabel: string;
|
|
30
|
+
}
|
|
31
|
+
declare function EvidencePanel({ title, eyebrow, state, stateLabel, children, className, ...rest }: EvidencePanelProps): react.JSX.Element;
|
|
32
|
+
interface EvidenceSelectionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {
|
|
33
|
+
label: string;
|
|
34
|
+
selectedId: string | null;
|
|
35
|
+
options: {
|
|
36
|
+
id: string;
|
|
37
|
+
label: string;
|
|
38
|
+
}[];
|
|
39
|
+
onSelect: (id: string) => void;
|
|
40
|
+
}
|
|
41
|
+
declare function EvidenceSelection({ label, selectedId, options, onSelect, className, ...rest }: EvidenceSelectionProps): react.JSX.Element;
|
|
42
|
+
interface EvidenceFactsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
43
|
+
title?: ReactNode;
|
|
44
|
+
description?: ReactNode;
|
|
45
|
+
items: DescriptionListItem[];
|
|
46
|
+
}
|
|
47
|
+
declare function EvidenceFacts({ title, description, items, className, ...rest }: EvidenceFactsProps): react.JSX.Element;
|
|
48
|
+
interface EvidenceDisclosureProps extends HTMLAttributes<HTMLDivElement> {
|
|
49
|
+
label: string;
|
|
50
|
+
}
|
|
51
|
+
declare function EvidenceDisclosure({ label, children, className, ...rest }: EvidenceDisclosureProps): react.JSX.Element;
|
|
52
|
+
interface EvidenceQueryProps extends HTMLAttributes<HTMLDivElement> {
|
|
53
|
+
label: string;
|
|
54
|
+
query: string;
|
|
55
|
+
fingerprint: string;
|
|
56
|
+
}
|
|
57
|
+
declare function EvidenceQuery({ label, query, fingerprint, className, ...rest }: EvidenceQueryProps): react.JSX.Element;
|
|
58
|
+
declare function EvidenceStages({ className, ...rest }: HTMLAttributes<HTMLOListElement>): react.JSX.Element;
|
|
59
|
+
interface EvidenceStageProps extends Omit<HTMLAttributes<HTMLLIElement>, 'title'> {
|
|
60
|
+
number: string;
|
|
61
|
+
state: 'idle' | 'active' | 'done';
|
|
62
|
+
stateLabel: string;
|
|
63
|
+
title: ReactNode;
|
|
64
|
+
description: ReactNode;
|
|
65
|
+
time: ReactNode;
|
|
66
|
+
}
|
|
67
|
+
declare function EvidenceStage({ number, state, stateLabel, title, description, time, children, className, ...rest }: EvidenceStageProps): react.JSX.Element;
|
|
68
|
+
interface EvidenceScore {
|
|
69
|
+
id: string;
|
|
70
|
+
label: string;
|
|
71
|
+
value: number;
|
|
72
|
+
valueText: string;
|
|
73
|
+
}
|
|
74
|
+
interface EvidenceScoresProps extends HTMLAttributes<HTMLDivElement> {
|
|
75
|
+
items: EvidenceScore[];
|
|
76
|
+
}
|
|
77
|
+
declare function EvidenceScores({ items, className, ...rest }: EvidenceScoresProps): react.JSX.Element;
|
|
78
|
+
interface SignalFigureProps extends HTMLAttributes<HTMLDivElement> {
|
|
79
|
+
bars: {
|
|
80
|
+
height: number;
|
|
81
|
+
opacity: number;
|
|
82
|
+
}[];
|
|
83
|
+
running?: boolean;
|
|
84
|
+
settled?: boolean;
|
|
85
|
+
caption: ReactNode;
|
|
86
|
+
detail: ReactNode;
|
|
87
|
+
}
|
|
88
|
+
/** A decorative signature supplied by the host, kept out of the evidence's accessibility tree. */
|
|
89
|
+
declare function SignalFigure({ bars, running, settled, caption, detail, className, ...rest }: SignalFigureProps): react.JSX.Element;
|
|
90
|
+
interface EvidenceMeterProps extends HTMLAttributes<HTMLDivElement> {
|
|
91
|
+
label: string;
|
|
92
|
+
/** Leave unset while the total is unknown. */
|
|
93
|
+
value?: number | null;
|
|
94
|
+
valueText: ReactNode;
|
|
95
|
+
detail: ReactNode;
|
|
96
|
+
}
|
|
97
|
+
declare function EvidenceMeter({ label, value, valueText, detail, className, ...rest }: EvidenceMeterProps): react.JSX.Element;
|
|
98
|
+
interface EvidenceDuration {
|
|
99
|
+
id: string;
|
|
100
|
+
label: string;
|
|
101
|
+
value: number | null;
|
|
102
|
+
valueText: string;
|
|
103
|
+
}
|
|
104
|
+
interface EvidenceDurationsProps extends HTMLAttributes<HTMLDivElement> {
|
|
105
|
+
label: string;
|
|
106
|
+
total: number | null;
|
|
107
|
+
totalText: string;
|
|
108
|
+
items: EvidenceDuration[];
|
|
109
|
+
}
|
|
110
|
+
declare function EvidenceDurations({ label, total, totalText, items, className, ...rest }: EvidenceDurationsProps): react.JSX.Element;
|
|
111
|
+
interface EvidenceSummaryProps extends HTMLAttributes<HTMLDListElement> {
|
|
112
|
+
items: DescriptionListItem[];
|
|
113
|
+
}
|
|
114
|
+
declare function EvidenceSummary({ items, className, ...rest }: EvidenceSummaryProps): react.JSX.Element;
|
|
115
|
+
|
|
116
|
+
export { ActivityTrace, type ActivityTraceItem, type ActivityTraceProps, EvidenceDisclosure, type EvidenceDisclosureProps, type EvidenceDuration, EvidenceDurations, type EvidenceDurationsProps, EvidenceFacts, type EvidenceFactsProps, EvidenceMeter, type EvidenceMeterProps, EvidencePanel, type EvidencePanelProps, EvidenceQuery, type EvidenceQueryProps, type EvidenceScore, EvidenceScores, type EvidenceScoresProps, EvidenceSelection, type EvidenceSelectionProps, EvidenceStage, type EvidenceStageProps, EvidenceStages, type EvidenceState, EvidenceStatus, type EvidenceStatusProps, EvidenceSummary, type EvidenceSummaryProps, SignalFigure, type SignalFigureProps };
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { RiCheckLine, RiCloseLine } from "@remixicon/react";
|
|
4
|
+
import { cn } from "../../lib/cn.js";
|
|
5
|
+
import { Button } from "../../components/Button/Button.js";
|
|
6
|
+
import { CollapsibleSection } from "../../components/Collapsible/Collapsible.js";
|
|
7
|
+
import { DescriptionList } from "../../components/DescriptionList/DescriptionList.js";
|
|
8
|
+
import { Heading } from "../../components/Heading/Heading.js";
|
|
9
|
+
import { Progress } from "../../components/Progress/Progress.js";
|
|
10
|
+
import { StatusDot } from "../../components/StatusDot/StatusDot.js";
|
|
11
|
+
import { Text } from "../../components/Text/Text.js";
|
|
12
|
+
function EvidenceStatus({ state, children, className, ...rest }) {
|
|
13
|
+
return /* @__PURE__ */ jsxs(Text, { size: "xs", tone: "muted", className: cn("folio-evidence-status", className), "data-state": state, ...rest, children: [
|
|
14
|
+
/* @__PURE__ */ jsx(StatusDot, { size: "sm", tone: state === "failed" ? "danger" : state === "done" ? "success" : "neutral", pulse: state === "running" }),
|
|
15
|
+
/* @__PURE__ */ jsx("span", { children })
|
|
16
|
+
] });
|
|
17
|
+
}
|
|
18
|
+
function ActivityTrace({ label, items, waiting, waitingLabel, className, ...rest }) {
|
|
19
|
+
if (items.length === 0 && !waiting) return null;
|
|
20
|
+
return /* @__PURE__ */ jsx("div", { role: waiting ? "status" : void 0, "aria-live": waiting ? "polite" : void 0, className: cn("folio-activity-trace", className), ...rest, children: items.length === 0 ? /* @__PURE__ */ jsx(EvidenceStatus, { state: "running", children: waitingLabel }) : /* @__PURE__ */ jsx("ul", { "aria-label": label, children: items.map((item) => /* @__PURE__ */ jsxs("li", { "data-state": item.state, children: [
|
|
21
|
+
item.state === "running" ? /* @__PURE__ */ jsx(StatusDot, { tone: "neutral", size: "sm" }) : item.state === "done" ? /* @__PURE__ */ jsx(RiCheckLine, { size: 12, "aria-hidden": true }) : /* @__PURE__ */ jsx(RiCloseLine, { size: 12, "aria-hidden": true }),
|
|
22
|
+
/* @__PURE__ */ jsxs(Text, { as: "span", size: "xs", children: [
|
|
23
|
+
/* @__PURE__ */ jsx("span", { children: item.label }),
|
|
24
|
+
item.detail && /* @__PURE__ */ jsxs(Text, { as: "span", size: "xs", tone: "muted", children: [
|
|
25
|
+
" ",
|
|
26
|
+
item.detail
|
|
27
|
+
] })
|
|
28
|
+
] }),
|
|
29
|
+
item.summary != null && /* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", className: "folio-activity-trace__summary", children: item.summary })
|
|
30
|
+
] }, item.id)) }) });
|
|
31
|
+
}
|
|
32
|
+
function EvidencePanel({ title, eyebrow, state, stateLabel, children, className, ...rest }) {
|
|
33
|
+
return /* @__PURE__ */ jsxs("aside", { "aria-label": title, className: cn("folio-evidence-panel", className), ...rest, children: [
|
|
34
|
+
/* @__PURE__ */ jsxs("header", { children: [
|
|
35
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
36
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tone: "muted", children: eyebrow }),
|
|
37
|
+
/* @__PURE__ */ jsx(Heading, { level: 2, size: "sub", children: title })
|
|
38
|
+
] }),
|
|
39
|
+
/* @__PURE__ */ jsx(EvidenceStatus, { state, children: stateLabel })
|
|
40
|
+
] }),
|
|
41
|
+
children
|
|
42
|
+
] });
|
|
43
|
+
}
|
|
44
|
+
function EvidenceSelection({ label, selectedId, options, onSelect, className, ...rest }) {
|
|
45
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("folio-evidence-selection", className), ...rest, children: [
|
|
46
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tone: "muted", children: label }),
|
|
47
|
+
/* @__PURE__ */ jsx("div", { role: "group", "aria-label": label, children: options.map((option) => /* @__PURE__ */ jsx(Button, { variant: "ghost", "aria-pressed": selectedId === option.id, onClick: () => onSelect(option.id), children: option.label }, option.id)) })
|
|
48
|
+
] });
|
|
49
|
+
}
|
|
50
|
+
function EvidenceFacts({ title, description, items, className, ...rest }) {
|
|
51
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("folio-evidence-facts", className), ...rest, children: [
|
|
52
|
+
title && /* @__PURE__ */ jsx(Text, { size: "xs", tone: "muted", children: title }),
|
|
53
|
+
description && /* @__PURE__ */ jsx(Text, { size: "sm", className: "mt-2", children: description }),
|
|
54
|
+
/* @__PURE__ */ jsx(DescriptionList, { items, layout: "stacked", className: title || description ? "mt-4" : void 0 })
|
|
55
|
+
] });
|
|
56
|
+
}
|
|
57
|
+
function EvidenceDisclosure({ label, children, className, ...rest }) {
|
|
58
|
+
return /* @__PURE__ */ jsx(CollapsibleSection, { title: label, role: "group", "aria-label": label, className: cn("folio-evidence-disclosure", className), ...rest, children });
|
|
59
|
+
}
|
|
60
|
+
function EvidenceQuery({ label, query, fingerprint, className, ...rest }) {
|
|
61
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("folio-evidence-query", className), ...rest, children: [
|
|
62
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: label }),
|
|
63
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "strong", children: query }),
|
|
64
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: fingerprint })
|
|
65
|
+
] });
|
|
66
|
+
}
|
|
67
|
+
function EvidenceStages({ className, ...rest }) {
|
|
68
|
+
return /* @__PURE__ */ jsx("ol", { className: cn("folio-evidence-stages", className), ...rest });
|
|
69
|
+
}
|
|
70
|
+
function EvidenceStage({ number, state, stateLabel, title, description, time, children, className, ...rest }) {
|
|
71
|
+
return /* @__PURE__ */ jsxs("li", { className: cn("folio-evidence-stage", className), "data-state": state, ...rest, children: [
|
|
72
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", "aria-hidden": true, children: number }),
|
|
73
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
74
|
+
/* @__PURE__ */ jsxs("div", { className: "folio-evidence-stage__header", children: [
|
|
75
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "sm", tone: "strong", children: title }),
|
|
76
|
+
/* @__PURE__ */ jsx(EvidenceStatus, { state: state === "active" ? "running" : state, children: stateLabel })
|
|
77
|
+
] }),
|
|
78
|
+
/* @__PURE__ */ jsxs("div", { className: "folio-evidence-stage__description", children: [
|
|
79
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: description }),
|
|
80
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: time })
|
|
81
|
+
] }),
|
|
82
|
+
children
|
|
83
|
+
] })
|
|
84
|
+
] });
|
|
85
|
+
}
|
|
86
|
+
function EvidenceScores({ items, className, ...rest }) {
|
|
87
|
+
return /* @__PURE__ */ jsx("div", { className: cn("folio-evidence-scores", className), ...rest, children: items.map((item) => /* @__PURE__ */ jsxs("div", { children: [
|
|
88
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
89
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", children: item.label }),
|
|
90
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: item.valueText })
|
|
91
|
+
] }),
|
|
92
|
+
/* @__PURE__ */ jsx(Progress, { label: item.label, value: item.value, max: 1, "aria-valuetext": item.valueText })
|
|
93
|
+
] }, item.id)) });
|
|
94
|
+
}
|
|
95
|
+
function SignalFigure({ bars, running, settled, caption, detail, className, ...rest }) {
|
|
96
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("folio-signal-figure", className), ...rest, children: [
|
|
97
|
+
/* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "folio-signal-figure__bars", "data-running": running || void 0, children: bars.map((bar, index) => /* @__PURE__ */ jsx("span", { style: { height: settled && !running ? bar.height : void 0, opacity: settled && !running ? bar.opacity : void 0, animationDelay: `${index * 16}ms` } }, index)) }),
|
|
98
|
+
/* @__PURE__ */ jsxs("div", { className: "folio-evidence-meter__labels", children: [
|
|
99
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: caption }),
|
|
100
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: detail })
|
|
101
|
+
] })
|
|
102
|
+
] });
|
|
103
|
+
}
|
|
104
|
+
function EvidenceMeter({ label, value, valueText, detail, className, ...rest }) {
|
|
105
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("folio-evidence-meter", className), ...rest, children: [
|
|
106
|
+
/* @__PURE__ */ jsx(Progress, { label, value }),
|
|
107
|
+
/* @__PURE__ */ jsxs("div", { className: "folio-evidence-meter__labels", children: [
|
|
108
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: valueText }),
|
|
109
|
+
/* @__PURE__ */ jsx(Text, { as: "span", size: "xs", tone: "muted", children: detail })
|
|
110
|
+
] })
|
|
111
|
+
] });
|
|
112
|
+
}
|
|
113
|
+
function EvidenceDurations({ label, total, totalText, items, className, ...rest }) {
|
|
114
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("folio-evidence-durations", className), ...rest, children: [
|
|
115
|
+
/* @__PURE__ */ jsxs("div", { className: "folio-evidence-durations__header", children: [
|
|
116
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tone: "muted", children: label }),
|
|
117
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", tone: "strong", children: totalText })
|
|
118
|
+
] }),
|
|
119
|
+
/* @__PURE__ */ jsx("div", { className: "folio-evidence-durations__bar", "aria-hidden": true, children: items.map((item) => /* @__PURE__ */ jsx("span", { style: { width: total != null && total > 0 && item.value != null ? `${Math.min(100, Math.max(0, item.value / total * 100))}%` : "0%" } }, item.id)) }),
|
|
120
|
+
/* @__PURE__ */ jsx(DescriptionList, { "aria-label": label, items: items.map((item) => ({ id: item.id, term: item.label, description: item.valueText })), layout: "stacked", divided: false, className: "folio-evidence-durations__legend" })
|
|
121
|
+
] });
|
|
122
|
+
}
|
|
123
|
+
function EvidenceSummary({ items, className, ...rest }) {
|
|
124
|
+
return /* @__PURE__ */ jsx(DescriptionList, { items, layout: "stacked", divided: false, className: cn("folio-evidence-summary", className), ...rest });
|
|
125
|
+
}
|
|
126
|
+
export {
|
|
127
|
+
ActivityTrace,
|
|
128
|
+
EvidenceDisclosure,
|
|
129
|
+
EvidenceDurations,
|
|
130
|
+
EvidenceFacts,
|
|
131
|
+
EvidenceMeter,
|
|
132
|
+
EvidencePanel,
|
|
133
|
+
EvidenceQuery,
|
|
134
|
+
EvidenceScores,
|
|
135
|
+
EvidenceSelection,
|
|
136
|
+
EvidenceStage,
|
|
137
|
+
EvidenceStages,
|
|
138
|
+
EvidenceStatus,
|
|
139
|
+
EvidenceSummary,
|
|
140
|
+
SignalFigure
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=Evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/website/Evidence/Evidence.tsx"],"sourcesContent":["'use client'\n\nimport { RiCheckLine, RiCloseLine } from '@remixicon/react'\nimport type { HTMLAttributes, ReactNode } from 'react'\nimport { cn } from '../../lib/cn'\nimport { Button } from '../../components/Button/Button'\nimport { CollapsibleSection } from '../../components/Collapsible/Collapsible'\nimport { DescriptionList } from '../../components/DescriptionList/DescriptionList'\nimport type { DescriptionListItem } from '../../components/DescriptionList/DescriptionList'\nimport { Heading } from '../../components/Heading/Heading'\nimport { Progress } from '../../components/Progress/Progress'\nimport { StatusDot } from '../../components/StatusDot/StatusDot'\nimport { Text } from '../../components/Text/Text'\n\nexport type EvidenceState = 'idle' | 'running' | 'done' | 'failed' | 'restored'\n\nexport interface EvidenceStatusProps extends HTMLAttributes<HTMLElement> { state: EvidenceState }\n\nexport function EvidenceStatus({ state, children, className, ...rest }: EvidenceStatusProps) {\n return <Text size=\"xs\" tone=\"muted\" className={cn('folio-evidence-status', className)} data-state={state} {...rest}><StatusDot size=\"sm\" tone={state === 'failed' ? 'danger' : state === 'done' ? 'success' : 'neutral'} pulse={state === 'running'} /><span>{children}</span></Text>\n}\n\nexport interface ActivityTraceItem {\n id: string\n state: 'running' | 'done' | 'failed'\n label: ReactNode\n detail?: ReactNode\n summary?: ReactNode\n}\n\nexport interface ActivityTraceProps extends HTMLAttributes<HTMLDivElement> {\n label: string\n items: ActivityTraceItem[]\n waiting?: boolean\n waitingLabel?: string\n}\n\n/** Tool and job traces share one presentation; the caller supplies truthful, localized labels. */\nexport function ActivityTrace({ label, items, waiting, waitingLabel, className, ...rest }: ActivityTraceProps) {\n if (items.length === 0 && !waiting) return null\n return <div role={waiting ? 'status' : undefined} aria-live={waiting ? 'polite' : undefined} className={cn('folio-activity-trace', className)} {...rest}>\n {items.length === 0 ? <EvidenceStatus state=\"running\">{waitingLabel}</EvidenceStatus> : <ul aria-label={label}>{items.map((item) => <li key={item.id} data-state={item.state}>\n {item.state === 'running' ? <StatusDot tone=\"neutral\" size=\"sm\" /> : item.state === 'done' ? <RiCheckLine size={12} aria-hidden /> : <RiCloseLine size={12} aria-hidden />}\n <Text as=\"span\" size=\"xs\"><span>{item.label}</span>{item.detail && <Text as=\"span\" size=\"xs\" tone=\"muted\"> {item.detail}</Text>}</Text>\n {item.summary != null && <Text as=\"span\" size=\"xs\" tone=\"muted\" className=\"folio-activity-trace__summary\">{item.summary}</Text>}\n </li>)}</ul>}\n </div>\n}\n\nexport interface EvidencePanelProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n title: string\n eyebrow: ReactNode\n state: EvidenceState\n stateLabel: string\n}\n\nexport function EvidencePanel({ title, eyebrow, state, stateLabel, children, className, ...rest }: EvidencePanelProps) {\n return <aside aria-label={title} className={cn('folio-evidence-panel', className)} {...rest}>\n <header><div><Text size=\"xs\" tone=\"muted\">{eyebrow}</Text><Heading level={2} size=\"sub\">{title}</Heading></div><EvidenceStatus state={state}>{stateLabel}</EvidenceStatus></header>\n {children}\n </aside>\n}\n\nexport interface EvidenceSelectionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n label: string\n selectedId: string | null\n options: { id: string; label: string }[]\n onSelect: (id: string) => void\n}\n\nexport function EvidenceSelection({ label, selectedId, options, onSelect, className, ...rest }: EvidenceSelectionProps) {\n return <div className={cn('folio-evidence-selection', className)} {...rest}><Text size=\"xs\" tone=\"muted\">{label}</Text><div role=\"group\" aria-label={label}>{options.map((option) => <Button key={option.id} variant=\"ghost\" aria-pressed={selectedId === option.id} onClick={() => onSelect(option.id)}>{option.label}</Button>)}</div></div>\n}\n\nexport interface EvidenceFactsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: ReactNode\n description?: ReactNode\n items: DescriptionListItem[]\n}\n\nexport function EvidenceFacts({ title, description, items, className, ...rest }: EvidenceFactsProps) {\n return <div className={cn('folio-evidence-facts', className)} {...rest}>\n {title && <Text size=\"xs\" tone=\"muted\">{title}</Text>}{description && <Text size=\"sm\" className=\"mt-2\">{description}</Text>}\n <DescriptionList items={items} layout=\"stacked\" className={title || description ? 'mt-4' : undefined} />\n </div>\n}\n\nexport interface EvidenceDisclosureProps extends HTMLAttributes<HTMLDivElement> { label: string }\n\nexport function EvidenceDisclosure({ label, children, className, ...rest }: EvidenceDisclosureProps) {\n return <CollapsibleSection title={label} role=\"group\" aria-label={label} className={cn('folio-evidence-disclosure', className)} {...rest}>{children}</CollapsibleSection>\n}\n\nexport interface EvidenceQueryProps extends HTMLAttributes<HTMLDivElement> { label: string; query: string; fingerprint: string }\n\nexport function EvidenceQuery({ label, query, fingerprint, className, ...rest }: EvidenceQueryProps) {\n return <div className={cn('folio-evidence-query', className)} {...rest}><Text as=\"span\" size=\"xs\" tone=\"muted\">{label}</Text><Text as=\"span\" size=\"xs\" tone=\"strong\">{query}</Text><Text as=\"span\" size=\"xs\" tone=\"muted\">{fingerprint}</Text></div>\n}\n\nexport function EvidenceStages({ className, ...rest }: HTMLAttributes<HTMLOListElement>) { return <ol className={cn('folio-evidence-stages', className)} {...rest} /> }\n\nexport interface EvidenceStageProps extends Omit<HTMLAttributes<HTMLLIElement>, 'title'> {\n number: string\n state: 'idle' | 'active' | 'done'\n stateLabel: string\n title: ReactNode\n description: ReactNode\n time: ReactNode\n}\n\nexport function EvidenceStage({ number, state, stateLabel, title, description, time, children, className, ...rest }: EvidenceStageProps) {\n return <li className={cn('folio-evidence-stage', className)} data-state={state} {...rest}>\n <Text as=\"span\" size=\"xs\" tone=\"muted\" aria-hidden>{number}</Text>\n <div><div className=\"folio-evidence-stage__header\"><Text as=\"span\" size=\"sm\" tone=\"strong\">{title}</Text><EvidenceStatus state={state === 'active' ? 'running' : state}>{stateLabel}</EvidenceStatus></div>\n <div className=\"folio-evidence-stage__description\"><Text as=\"span\" size=\"xs\" tone=\"muted\">{description}</Text><Text as=\"span\" size=\"xs\" tone=\"muted\">{time}</Text></div>{children}\n </div>\n </li>\n}\n\nexport interface EvidenceScore { id: string; label: string; value: number; valueText: string }\n\nexport interface EvidenceScoresProps extends HTMLAttributes<HTMLDivElement> { items: EvidenceScore[] }\n\nexport function EvidenceScores({ items, className, ...rest }: EvidenceScoresProps) {\n return <div className={cn('folio-evidence-scores', className)} {...rest}>{items.map((item) => <div key={item.id}>\n <div><Text as=\"span\" size=\"xs\">{item.label}</Text><Text as=\"span\" size=\"xs\" tone=\"muted\">{item.valueText}</Text></div>\n <Progress label={item.label} value={item.value} max={1} aria-valuetext={item.valueText} />\n </div>)}</div>\n}\n\nexport interface SignalFigureProps extends HTMLAttributes<HTMLDivElement> {\n bars: { height: number; opacity: number }[]\n running?: boolean\n settled?: boolean\n caption: ReactNode\n detail: ReactNode\n}\n\n/** A decorative signature supplied by the host, kept out of the evidence's accessibility tree. */\nexport function SignalFigure({ bars, running, settled, caption, detail, className, ...rest }: SignalFigureProps) {\n return <div className={cn('folio-signal-figure', className)} {...rest}>\n <div aria-hidden className=\"folio-signal-figure__bars\" data-running={running || undefined}>{bars.map((bar, index) => <span key={index} style={{ height: settled && !running ? bar.height : undefined, opacity: settled && !running ? bar.opacity : undefined, animationDelay: `${index * 16}ms` }} />)}</div>\n <div className=\"folio-evidence-meter__labels\"><Text as=\"span\" size=\"xs\" tone=\"muted\">{caption}</Text><Text as=\"span\" size=\"xs\" tone=\"muted\">{detail}</Text></div>\n </div>\n}\n\nexport interface EvidenceMeterProps extends HTMLAttributes<HTMLDivElement> {\n label: string\n /** Leave unset while the total is unknown. */\n value?: number | null\n valueText: ReactNode\n detail: ReactNode\n}\n\nexport function EvidenceMeter({ label, value, valueText, detail, className, ...rest }: EvidenceMeterProps) {\n return <div className={cn('folio-evidence-meter', className)} {...rest}><Progress label={label} value={value} /><div className=\"folio-evidence-meter__labels\"><Text as=\"span\" size=\"xs\" tone=\"muted\">{valueText}</Text><Text as=\"span\" size=\"xs\" tone=\"muted\">{detail}</Text></div></div>\n}\n\nexport interface EvidenceDuration { id: string; label: string; value: number | null; valueText: string }\n\nexport interface EvidenceDurationsProps extends HTMLAttributes<HTMLDivElement> { label: string; total: number | null; totalText: string; items: EvidenceDuration[] }\n\nexport function EvidenceDurations({ label, total, totalText, items, className, ...rest }: EvidenceDurationsProps) {\n return <div className={cn('folio-evidence-durations', className)} {...rest}>\n <div className=\"folio-evidence-durations__header\"><Text size=\"xs\" tone=\"muted\">{label}</Text><Text size=\"sm\" tone=\"strong\">{totalText}</Text></div>\n <div className=\"folio-evidence-durations__bar\" aria-hidden>{items.map((item) => <span key={item.id} style={{ width: total != null && total > 0 && item.value != null ? `${Math.min(100, Math.max(0, item.value / total * 100))}%` : '0%' }} />)}</div>\n <DescriptionList aria-label={label} items={items.map((item) => ({ id: item.id, term: item.label, description: item.valueText }))} layout=\"stacked\" divided={false} className=\"folio-evidence-durations__legend\" />\n </div>\n}\n\nexport interface EvidenceSummaryProps extends HTMLAttributes<HTMLDListElement> { items: DescriptionListItem[] }\n\nexport function EvidenceSummary({ items, className, ...rest }: EvidenceSummaryProps) { return <DescriptionList items={items} layout=\"stacked\" divided={false} className={cn('folio-evidence-summary', className)} {...rest} /> }\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode, ReactElement, ComponentPropsWithRef } from 'react';
|
|
3
|
+
import { ButtonProps } from '../../components/Button/Button.js';
|
|
4
|
+
import { DescriptionListItem } from '../../components/DescriptionList/DescriptionList.js';
|
|
5
|
+
|
|
6
|
+
interface MediaMastheadProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
7
|
+
eyebrow?: ReactNode;
|
|
8
|
+
title: ReactNode;
|
|
9
|
+
description?: ReactNode;
|
|
10
|
+
/** The title level when this page composition sits inside another document. */
|
|
11
|
+
headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
12
|
+
}
|
|
13
|
+
/** The quiet opening to an image collection, before its controls and prints. */
|
|
14
|
+
declare function MediaMasthead({ eyebrow, title, description, headingLevel, className, ...rest }: MediaMastheadProps): react.JSX.Element;
|
|
15
|
+
interface PhotographFeatureProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
16
|
+
image: ReactNode;
|
|
17
|
+
title: ReactNode;
|
|
18
|
+
eyebrow?: ReactNode;
|
|
19
|
+
description?: ReactNode;
|
|
20
|
+
caption?: ReactNode;
|
|
21
|
+
action?: ReactNode;
|
|
22
|
+
}
|
|
23
|
+
/** A photograph and an editorial introduction, with the original image ratio. */
|
|
24
|
+
declare function PhotographFeature({ image, title, eyebrow, description, caption, action, className, ...rest }: PhotographFeatureProps): react.JSX.Element;
|
|
25
|
+
interface MediaCollectionProps extends HTMLAttributes<HTMLDivElement> {
|
|
26
|
+
masthead: ReactNode;
|
|
27
|
+
controls?: ReactNode;
|
|
28
|
+
collectionId?: string;
|
|
29
|
+
footer?: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
/** Page-level gallery composition; the host owns its filters and collection. */
|
|
32
|
+
declare function MediaCollection({ masthead, controls, collectionId, footer, children, className, ...rest }: MediaCollectionProps): react.JSX.Element;
|
|
33
|
+
interface MediaGalleryProps extends HTMLAttributes<HTMLUListElement> {
|
|
34
|
+
children?: ReactNode;
|
|
35
|
+
/** Supply localized empty copy when the collection may have no children. */
|
|
36
|
+
emptyTitle?: ReactNode;
|
|
37
|
+
emptyAction?: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
/** Level mounts keep unlike aspect ratios aligned without cropping the prints. */
|
|
40
|
+
declare function MediaGallery({ children, emptyTitle, emptyAction, className, ...rest }: MediaGalleryProps): react.JSX.Element;
|
|
41
|
+
interface MediaGalleryItemProps extends Omit<HTMLAttributes<HTMLLIElement>, 'title'> {
|
|
42
|
+
/** A host link containing its image. The package supplies the print layout. */
|
|
43
|
+
children: ReactElement;
|
|
44
|
+
title: ReactNode;
|
|
45
|
+
index?: ReactNode;
|
|
46
|
+
location?: ReactNode;
|
|
47
|
+
orientation?: 'portrait' | 'landscape' | 'square';
|
|
48
|
+
}
|
|
49
|
+
declare function MediaGalleryItem({ children, title, index, location, orientation, className, ...rest }: MediaGalleryItemProps): react.JSX.Element;
|
|
50
|
+
interface MediaGallerySkeletonProps {
|
|
51
|
+
label: string;
|
|
52
|
+
count?: number;
|
|
53
|
+
}
|
|
54
|
+
declare function MediaGallerySkeleton({ label, count }: MediaGallerySkeletonProps): react.JSX.Element;
|
|
55
|
+
interface MediaDetailLayoutProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
56
|
+
title: ReactNode;
|
|
57
|
+
titleId: string;
|
|
58
|
+
/** The title level when this page composition sits inside another document. */
|
|
59
|
+
headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
60
|
+
category?: ReactNode;
|
|
61
|
+
notesLabel: string;
|
|
62
|
+
orientation: 'portrait' | 'landscape' | 'square';
|
|
63
|
+
backLink: ReactElement;
|
|
64
|
+
index?: ReactNode;
|
|
65
|
+
media: ReactNode;
|
|
66
|
+
light?: ReactNode;
|
|
67
|
+
actions?: ReactNode;
|
|
68
|
+
metadata?: ReactNode;
|
|
69
|
+
location?: ReactNode;
|
|
70
|
+
pager?: ReactNode;
|
|
71
|
+
related?: ReactNode;
|
|
72
|
+
}
|
|
73
|
+
/** Portraits share a spread with their notes; landscapes lead a full-width spread. */
|
|
74
|
+
declare function MediaDetailLayout({ title, titleId, headingLevel, category, notesLabel, orientation, backLink, index, media, light, actions, metadata, location, pager, related, className, ...rest }: MediaDetailLayoutProps): react.JSX.Element;
|
|
75
|
+
interface MediaMetadataProps extends HTMLAttributes<HTMLDListElement> {
|
|
76
|
+
items: DescriptionListItem[];
|
|
77
|
+
}
|
|
78
|
+
declare function MediaMetadata({ items, className, ...rest }: MediaMetadataProps): react.JSX.Element;
|
|
79
|
+
interface MediaPagerProps extends HTMLAttributes<HTMLElement> {
|
|
80
|
+
label: string;
|
|
81
|
+
previous?: ReactNode;
|
|
82
|
+
next?: ReactNode;
|
|
83
|
+
}
|
|
84
|
+
declare function MediaPager({ label, previous, next, className, ...rest }: MediaPagerProps): react.JSX.Element | null;
|
|
85
|
+
interface MediaPagerItemProps {
|
|
86
|
+
link: ReactElement;
|
|
87
|
+
direction: 'previous' | 'next';
|
|
88
|
+
label: ReactNode;
|
|
89
|
+
title: ReactNode;
|
|
90
|
+
image?: ReactNode;
|
|
91
|
+
}
|
|
92
|
+
declare function MediaPagerItem({ link, direction, label, title, image }: MediaPagerItemProps): react.JSX.Element;
|
|
93
|
+
interface MediaThumbnailStripProps extends HTMLAttributes<HTMLElement> {
|
|
94
|
+
heading: ReactNode;
|
|
95
|
+
}
|
|
96
|
+
declare function MediaThumbnailStrip({ heading, children, className, ...rest }: MediaThumbnailStripProps): react.JSX.Element;
|
|
97
|
+
interface MediaThumbnailProps {
|
|
98
|
+
children: ReactElement;
|
|
99
|
+
}
|
|
100
|
+
declare function MediaThumbnail({ children }: MediaThumbnailProps): react.JSX.Element;
|
|
101
|
+
interface MediaLightNoteLine {
|
|
102
|
+
id: string;
|
|
103
|
+
icon?: ReactNode;
|
|
104
|
+
text: ReactNode;
|
|
105
|
+
detail?: ReactNode;
|
|
106
|
+
}
|
|
107
|
+
interface MediaLightNoteProps {
|
|
108
|
+
label: ReactNode;
|
|
109
|
+
lines: MediaLightNoteLine[];
|
|
110
|
+
}
|
|
111
|
+
/** The host supplies observations and formatted labels; this is presentation only. */
|
|
112
|
+
declare function MediaLightNote({ label, lines }: MediaLightNoteProps): react.JSX.Element;
|
|
113
|
+
interface MediaMapSectionProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
114
|
+
title: ReactNode;
|
|
115
|
+
hint?: ReactNode;
|
|
116
|
+
/** An optional legacy anchor, owned and named by the host. */
|
|
117
|
+
aliasId?: string;
|
|
118
|
+
map: ReactNode;
|
|
119
|
+
preview: ReactNode;
|
|
120
|
+
}
|
|
121
|
+
declare function MediaMapSection({ title, hint, aliasId, map, preview, className, ...rest }: MediaMapSectionProps): react.JSX.Element;
|
|
122
|
+
interface MediaMapFrameProps extends HTMLAttributes<HTMLDivElement> {
|
|
123
|
+
label?: ReactNode;
|
|
124
|
+
hint?: ReactNode;
|
|
125
|
+
navigation?: ReactNode;
|
|
126
|
+
compact?: boolean;
|
|
127
|
+
}
|
|
128
|
+
declare function MediaMapFrame({ label, hint, navigation, compact, children, className, ...rest }: MediaMapFrameProps): react.JSX.Element;
|
|
129
|
+
interface MediaMapNavigationProps {
|
|
130
|
+
zoomInLabel: string;
|
|
131
|
+
zoomOutLabel: string;
|
|
132
|
+
onZoomIn: () => void;
|
|
133
|
+
onZoomOut: () => void;
|
|
134
|
+
}
|
|
135
|
+
declare function MediaMapNavigation({ zoomInLabel, zoomOutLabel, onZoomIn, onZoomOut }: MediaMapNavigationProps): react.JSX.Element;
|
|
136
|
+
type MediaMapCanvasProps = ComponentPropsWithRef<'div'>;
|
|
137
|
+
/** A sized provider container. Map creation, themes and geographic math stay in the host. */
|
|
138
|
+
declare function MediaMapCanvas({ className, ...rest }: MediaMapCanvasProps): react.JSX.Element;
|
|
139
|
+
interface MediaMapPreviewProps {
|
|
140
|
+
title: ReactNode;
|
|
141
|
+
image?: ReactNode;
|
|
142
|
+
action?: ReactNode;
|
|
143
|
+
place?: ReactNode;
|
|
144
|
+
coordinates?: ReactNode;
|
|
145
|
+
children?: ReactNode;
|
|
146
|
+
}
|
|
147
|
+
declare function MediaMapPreview({ title, image, action, place, coordinates, children }: MediaMapPreviewProps): react.JSX.Element;
|
|
148
|
+
interface MediaMapArea {
|
|
149
|
+
id: string;
|
|
150
|
+
label: ReactNode;
|
|
151
|
+
count: ReactNode;
|
|
152
|
+
}
|
|
153
|
+
interface MediaMapAreaListProps {
|
|
154
|
+
items: MediaMapArea[];
|
|
155
|
+
value?: string;
|
|
156
|
+
onValueChange: (value: string) => void;
|
|
157
|
+
}
|
|
158
|
+
declare function MediaMapAreaList({ items, value, onValueChange }: MediaMapAreaListProps): react.JSX.Element;
|
|
159
|
+
interface MediaMapMarkerProps extends Omit<Extract<ButtonProps, {
|
|
160
|
+
href?: undefined;
|
|
161
|
+
}>, 'children' | 'iconOnly'> {
|
|
162
|
+
label: string;
|
|
163
|
+
active?: boolean;
|
|
164
|
+
}
|
|
165
|
+
/** A keyboard-operable 44px marker for a host's map-provider portal. */
|
|
166
|
+
declare function MediaMapMarker({ label, active, className, ...rest }: MediaMapMarkerProps): react.JSX.Element;
|
|
167
|
+
interface MediaMapPinProps {
|
|
168
|
+
active?: boolean;
|
|
169
|
+
}
|
|
170
|
+
declare function MediaMapPin({ active }: MediaMapPinProps): react.JSX.Element;
|
|
171
|
+
declare function MediaMapSkeleton(): react.JSX.Element;
|
|
172
|
+
|
|
173
|
+
export { MediaCollection, type MediaCollectionProps, MediaDetailLayout, type MediaDetailLayoutProps, MediaGallery, MediaGalleryItem, type MediaGalleryItemProps, type MediaGalleryProps, MediaGallerySkeleton, type MediaGallerySkeletonProps, MediaLightNote, type MediaLightNoteLine, type MediaLightNoteProps, type MediaMapArea, MediaMapAreaList, type MediaMapAreaListProps, MediaMapCanvas, type MediaMapCanvasProps, MediaMapFrame, type MediaMapFrameProps, MediaMapMarker, type MediaMapMarkerProps, MediaMapNavigation, type MediaMapNavigationProps, MediaMapPin, type MediaMapPinProps, MediaMapPreview, type MediaMapPreviewProps, MediaMapSection, type MediaMapSectionProps, MediaMapSkeleton, MediaMasthead, type MediaMastheadProps, MediaMetadata, type MediaMetadataProps, MediaPager, MediaPagerItem, type MediaPagerItemProps, type MediaPagerProps, MediaThumbnail, type MediaThumbnailProps, MediaThumbnailStrip, type MediaThumbnailStripProps, PhotographFeature, type PhotographFeatureProps };
|