rift-ds 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +107 -0
- package/behaviors/focusable.d.ts +26 -0
- package/behaviors/focusable.js +18 -0
- package/behaviors/useFocusScope.d.ts +38 -0
- package/behaviors/useFocusScope.js +82 -0
- package/behaviors/useLayer.d.ts +43 -0
- package/behaviors/useLayer.js +55 -0
- package/behaviors/useMounted.d.ts +7 -0
- package/behaviors/useMounted.js +14 -0
- package/behaviors/useScrollLock.d.ts +55 -0
- package/behaviors/useScrollLock.js +59 -0
- package/bin/rift-ds.mjs +82 -0
- package/charts.d.ts +16 -0
- package/charts.js +24 -0
- package/components/Accordion/Accordion.css +119 -0
- package/components/Accordion/Accordion.d.ts +24 -0
- package/components/Accordion/Accordion.js +76 -0
- package/components/AgentPlan/AgentPlan.css +251 -0
- package/components/AgentPlan/AgentPlan.d.ts +41 -0
- package/components/AgentPlan/AgentPlan.js +100 -0
- package/components/AgentRail/AgentRail.css +282 -0
- package/components/AgentRail/AgentRail.d.ts +72 -0
- package/components/AgentRail/AgentRail.js +101 -0
- package/components/AgentStatus/AgentStatus.css +511 -0
- package/components/AgentStatus/AgentStatus.d.ts +41 -0
- package/components/AgentStatus/AgentStatus.js +86 -0
- package/components/AgentStatus/AgentStatusPatterns.d.ts +17 -0
- package/components/AgentStatus/AgentStatusPatterns.js +20 -0
- package/components/AiButton/AiButton.css +559 -0
- package/components/AiButton/AiButton.d.ts +79 -0
- package/components/AiButton/AiButton.js +183 -0
- package/components/Alert/Alert.css +261 -0
- package/components/Alert/Alert.d.ts +25 -0
- package/components/Alert/Alert.js +53 -0
- package/components/AlertDialog/AlertDialog.css +133 -0
- package/components/AlertDialog/AlertDialog.d.ts +29 -0
- package/components/AlertDialog/AlertDialog.js +98 -0
- package/components/AnchorNav/AnchorNav.css +137 -0
- package/components/AnchorNav/AnchorNav.d.ts +40 -0
- package/components/AnchorNav/AnchorNav.js +135 -0
- package/components/AnimatedNumber/AnimatedNumber.css +31 -0
- package/components/AnimatedNumber/AnimatedNumber.d.ts +36 -0
- package/components/AnimatedNumber/AnimatedNumber.js +55 -0
- package/components/AppLayout/AppLayout.css +52 -0
- package/components/AppLayout/AppLayout.d.ts +33 -0
- package/components/AppLayout/AppLayout.js +47 -0
- package/components/AppSidebar/AppSidebar.css +592 -0
- package/components/AppSidebar/AppSidebar.d.ts +90 -0
- package/components/AppSidebar/AppSidebar.js +295 -0
- package/components/Avatar/Avatar.css +133 -0
- package/components/Avatar/Avatar.d.ts +20 -0
- package/components/Avatar/Avatar.js +58 -0
- package/components/Avatar/demoAvatars.d.ts +18 -0
- package/components/Avatar/demoAvatars.js +16 -0
- package/components/AvatarGroup/AvatarGroup.css +61 -0
- package/components/AvatarGroup/AvatarGroup.d.ts +32 -0
- package/components/AvatarGroup/AvatarGroup.js +31 -0
- package/components/Badge/Badge.css +67 -0
- package/components/Badge/Badge.d.ts +13 -0
- package/components/Badge/Badge.js +15 -0
- package/components/Banner/Banner.css +110 -0
- package/components/Banner/Banner.d.ts +36 -0
- package/components/Banner/Banner.js +59 -0
- package/components/Breadcrumb/Breadcrumb.css +100 -0
- package/components/Breadcrumb/Breadcrumb.d.ts +25 -0
- package/components/Breadcrumb/Breadcrumb.js +40 -0
- package/components/Button/Button.css +473 -0
- package/components/Button/Button.d.ts +73 -0
- package/components/Button/Button.js +91 -0
- package/components/ButtonGroup/ButtonGroup.css +39 -0
- package/components/ButtonGroup/ButtonGroup.d.ts +13 -0
- package/components/ButtonGroup/ButtonGroup.js +30 -0
- package/components/Card/Card.css +190 -0
- package/components/Card/Card.d.ts +48 -0
- package/components/Card/Card.js +113 -0
- package/components/CardStack/CardStack.css +106 -0
- package/components/CardStack/CardStack.d.ts +44 -0
- package/components/CardStack/CardStack.js +140 -0
- package/components/Carousel/Carousel.css +121 -0
- package/components/Carousel/Carousel.d.ts +25 -0
- package/components/Carousel/Carousel.js +160 -0
- package/components/Chart/AreaChart.d.ts +40 -0
- package/components/Chart/AreaChart.js +101 -0
- package/components/Chart/BarChart.d.ts +36 -0
- package/components/Chart/BarChart.js +107 -0
- package/components/Chart/Chart.css +224 -0
- package/components/Chart/ComboChart.d.ts +40 -0
- package/components/Chart/ComboChart.js +142 -0
- package/components/Chart/LineChart.d.ts +36 -0
- package/components/Chart/LineChart.js +91 -0
- package/components/Chart/PieChart.d.ts +36 -0
- package/components/Chart/PieChart.js +93 -0
- package/components/Chart/RadarChart.d.ts +36 -0
- package/components/Chart/RadarChart.js +92 -0
- package/components/Chart/RadialChart.d.ts +43 -0
- package/components/Chart/RadialChart.js +114 -0
- package/components/Chart/ScatterChart.d.ts +38 -0
- package/components/Chart/ScatterChart.js +99 -0
- package/components/Chart/StackedBarChart.d.ts +36 -0
- package/components/Chart/StackedBarChart.js +98 -0
- package/components/Chart/Treemap.d.ts +35 -0
- package/components/Chart/Treemap.js +95 -0
- package/components/Chart/palette.d.ts +1 -0
- package/components/Chart/palette.js +17 -0
- package/components/ChatHeader/ChatHeader.css +35 -0
- package/components/ChatHeader/ChatHeader.d.ts +30 -0
- package/components/ChatHeader/ChatHeader.js +17 -0
- package/components/ChatMarker/ChatMarker.css +61 -0
- package/components/ChatMarker/ChatMarker.d.ts +22 -0
- package/components/ChatMarker/ChatMarker.js +18 -0
- package/components/ChatMessage/ChatMessage.css +326 -0
- package/components/ChatMessage/ChatMessage.d.ts +74 -0
- package/components/ChatMessage/ChatMessage.js +71 -0
- package/components/ChatThread/ChatThread.css +171 -0
- package/components/ChatThread/ChatThread.d.ts +41 -0
- package/components/ChatThread/ChatThread.js +175 -0
- package/components/Checkbox/Checkbox.css +183 -0
- package/components/Checkbox/Checkbox.d.ts +81 -0
- package/components/Checkbox/Checkbox.js +176 -0
- package/components/Chip/Chip.css +231 -0
- package/components/Chip/Chip.d.ts +27 -0
- package/components/Chip/Chip.js +80 -0
- package/components/CircularButton/CircularButton.css +263 -0
- package/components/CircularButton/CircularButton.d.ts +68 -0
- package/components/CircularButton/CircularButton.js +72 -0
- package/components/CodeBlock/CodeBlock.css +189 -0
- package/components/CodeBlock/CodeBlock.d.ts +23 -0
- package/components/CodeBlock/CodeBlock.js +96 -0
- package/components/CodeDiff/CodeDiff.css +175 -0
- package/components/CodeDiff/CodeDiff.d.ts +58 -0
- package/components/CodeDiff/CodeDiff.js +114 -0
- package/components/ColorPicker/ColorPicker.css +278 -0
- package/components/ColorPicker/ColorPicker.d.ts +50 -0
- package/components/ColorPicker/ColorPicker.js +349 -0
- package/components/ColourSwatch/ColourSwatch.css +88 -0
- package/components/ColourSwatch/ColourSwatch.d.ts +34 -0
- package/components/ColourSwatch/ColourSwatch.js +42 -0
- package/components/Combobox/Combobox.css +384 -0
- package/components/Combobox/Combobox.d.ts +93 -0
- package/components/Combobox/Combobox.js +331 -0
- package/components/CommandPalette/CommandPalette.css +342 -0
- package/components/CommandPalette/CommandPalette.d.ts +62 -0
- package/components/CommandPalette/CommandPalette.js +247 -0
- package/components/Composer/Composer.css +427 -0
- package/components/Composer/Composer.d.ts +97 -0
- package/components/Composer/Composer.js +146 -0
- package/components/ContactCard/ContactCard.css +132 -0
- package/components/ContactCard/ContactCard.d.ts +24 -0
- package/components/ContactCard/ContactCard.js +79 -0
- package/components/ContextMenu/ContextMenu.css +258 -0
- package/components/ContextMenu/ContextMenu.d.ts +26 -0
- package/components/ContextMenu/ContextMenu.js +387 -0
- package/components/ContributionGraph/ContributionGraph.css +169 -0
- package/components/ContributionGraph/ContributionGraph.d.ts +34 -0
- package/components/ContributionGraph/ContributionGraph.js +149 -0
- package/components/DataTable/DataTable.css +109 -0
- package/components/DataTable/DataTable.d.ts +81 -0
- package/components/DataTable/DataTable.js +236 -0
- package/components/DateInput/DateInput.css +127 -0
- package/components/DateInput/DateInput.d.ts +44 -0
- package/components/DateInput/DateInput.js +82 -0
- package/components/DatePicker/DatePicker.css +198 -0
- package/components/DatePicker/DatePicker.d.ts +29 -0
- package/components/DatePicker/DatePicker.js +196 -0
- package/components/Dialog/Dialog.css +178 -0
- package/components/Dialog/Dialog.d.ts +39 -0
- package/components/Dialog/Dialog.js +99 -0
- package/components/Divider/Divider.css +100 -0
- package/components/Divider/Divider.d.ts +18 -0
- package/components/Divider/Divider.js +31 -0
- package/components/DocumentChip/DocumentChip.css +190 -0
- package/components/DocumentChip/DocumentChip.d.ts +41 -0
- package/components/DocumentChip/DocumentChip.js +78 -0
- package/components/Drawer/Drawer.css +262 -0
- package/components/Drawer/Drawer.d.ts +41 -0
- package/components/Drawer/Drawer.js +101 -0
- package/components/Dropdown/Dropdown.css +288 -0
- package/components/Dropdown/Dropdown.d.ts +85 -0
- package/components/Dropdown/Dropdown.js +308 -0
- package/components/DropdownMenu/DropdownMenu.css +301 -0
- package/components/DropdownMenu/DropdownMenu.d.ts +42 -0
- package/components/DropdownMenu/DropdownMenu.js +371 -0
- package/components/EmptyState/EmptyState.css +136 -0
- package/components/EmptyState/EmptyState.d.ts +27 -0
- package/components/EmptyState/EmptyState.js +32 -0
- package/components/EntityCard/EntityCard.css +69 -0
- package/components/EntityCard/EntityCard.d.ts +19 -0
- package/components/EntityCard/EntityCard.js +26 -0
- package/components/EventCalendar/EventCalendar.css +363 -0
- package/components/EventCalendar/EventCalendar.d.ts +59 -0
- package/components/EventCalendar/EventCalendar.js +230 -0
- package/components/Field/Field.css +80 -0
- package/components/Field/Field.d.ts +57 -0
- package/components/Field/Field.js +70 -0
- package/components/Field/FieldContext.d.ts +42 -0
- package/components/Field/FieldContext.js +8 -0
- package/components/Figure/Figure.css +71 -0
- package/components/Figure/Figure.d.ts +17 -0
- package/components/Figure/Figure.js +26 -0
- package/components/FileInput/FileInput.css +281 -0
- package/components/FileInput/FileInput.d.ts +54 -0
- package/components/FileInput/FileInput.js +205 -0
- package/components/FilterBar/FilterBar.css +202 -0
- package/components/FilterBar/FilterBar.d.ts +55 -0
- package/components/FilterBar/FilterBar.js +249 -0
- package/components/FunnelChart/FunnelChart.css +17 -0
- package/components/FunnelChart/FunnelChart.d.ts +51 -0
- package/components/FunnelChart/FunnelChart.js +96 -0
- package/components/GanttChart/GanttChart.css +326 -0
- package/components/GanttChart/GanttChart.d.ts +82 -0
- package/components/GanttChart/GanttChart.js +202 -0
- package/components/Gauge/Gauge.css +120 -0
- package/components/Gauge/Gauge.d.ts +64 -0
- package/components/Gauge/Gauge.js +111 -0
- package/components/Globe/Globe.css +155 -0
- package/components/Globe/Globe.d.ts +103 -0
- package/components/Globe/Globe.js +416 -0
- package/components/HoverCard/HoverCard.css +125 -0
- package/components/HoverCard/HoverCard.d.ts +29 -0
- package/components/HoverCard/HoverCard.js +83 -0
- package/components/ImageCompare/ImageCompare.css +112 -0
- package/components/ImageCompare/ImageCompare.d.ts +40 -0
- package/components/ImageCompare/ImageCompare.js +134 -0
- package/components/Input/Input.css +150 -0
- package/components/Input/Input.d.ts +45 -0
- package/components/Input/Input.js +99 -0
- package/components/Instructions/Instructions.css +216 -0
- package/components/Instructions/Instructions.d.ts +29 -0
- package/components/Instructions/Instructions.js +32 -0
- package/components/InterruptCard/InterruptCard.css +164 -0
- package/components/InterruptCard/InterruptCard.d.ts +54 -0
- package/components/InterruptCard/InterruptCard.js +57 -0
- package/components/Kbd/Kbd.css +28 -0
- package/components/Kbd/Kbd.d.ts +19 -0
- package/components/Kbd/Kbd.js +14 -0
- package/components/LegendTile/LegendTile.css +60 -0
- package/components/LegendTile/LegendTile.d.ts +30 -0
- package/components/LegendTile/LegendTile.js +21 -0
- package/components/Lightbox/Lightbox.css +210 -0
- package/components/Lightbox/Lightbox.d.ts +45 -0
- package/components/Lightbox/Lightbox.js +109 -0
- package/components/LinkList/LinkList.css +71 -0
- package/components/LinkList/LinkList.d.ts +24 -0
- package/components/LinkList/LinkList.js +42 -0
- package/components/MapCallout/MapCallout.css +46 -0
- package/components/MapCallout/MapCallout.d.ts +29 -0
- package/components/MapCallout/MapCallout.js +17 -0
- package/components/MapLegend/MapLegend.css +88 -0
- package/components/MapLegend/MapLegend.d.ts +40 -0
- package/components/MapLegend/MapLegend.js +68 -0
- package/components/MessageActions/MessageActions.css +85 -0
- package/components/MessageActions/MessageActions.d.ts +38 -0
- package/components/MessageActions/MessageActions.js +40 -0
- package/components/MessageCard/MessageCard.css +163 -0
- package/components/MessageCard/MessageCard.d.ts +35 -0
- package/components/MessageCard/MessageCard.js +30 -0
- package/components/Meter/Meter.css +98 -0
- package/components/Meter/Meter.d.ts +36 -0
- package/components/Meter/Meter.js +48 -0
- package/components/ModelPicker/ModelPicker.css +243 -0
- package/components/ModelPicker/ModelPicker.d.ts +60 -0
- package/components/ModelPicker/ModelPicker.js +261 -0
- package/components/MotionSwatch/MotionSwatch.css +176 -0
- package/components/MotionSwatch/MotionSwatch.d.ts +25 -0
- package/components/MotionSwatch/MotionSwatch.js +74 -0
- package/components/Nav/Nav.css +51 -0
- package/components/Nav/Nav.d.ts +19 -0
- package/components/Nav/Nav.js +26 -0
- package/components/NavList/NavList.css +155 -0
- package/components/NavList/NavList.d.ts +56 -0
- package/components/NavList/NavList.js +100 -0
- package/components/NotificationCenter/NotificationCenter.css +279 -0
- package/components/NotificationCenter/NotificationCenter.d.ts +72 -0
- package/components/NotificationCenter/NotificationCenter.js +145 -0
- package/components/NumberInput/NumberInput.css +163 -0
- package/components/NumberInput/NumberInput.d.ts +44 -0
- package/components/NumberInput/NumberInput.js +147 -0
- package/components/Pagination/Pagination.css +126 -0
- package/components/Pagination/Pagination.d.ts +22 -0
- package/components/Pagination/Pagination.js +84 -0
- package/components/Panel/Panel.css +26 -0
- package/components/Panel/Panel.d.ts +22 -0
- package/components/Panel/Panel.js +19 -0
- package/components/PinInput/PinInput.css +92 -0
- package/components/PinInput/PinInput.d.ts +46 -0
- package/components/PinInput/PinInput.js +161 -0
- package/components/Popover/Popover.css +118 -0
- package/components/Popover/Popover.d.ts +22 -0
- package/components/Popover/Popover.js +113 -0
- package/components/ProgressBar/ProgressBar.css +60 -0
- package/components/ProgressBar/ProgressBar.d.ts +16 -0
- package/components/ProgressBar/ProgressBar.js +27 -0
- package/components/PromptSuggestions/PromptSuggestions.css +264 -0
- package/components/PromptSuggestions/PromptSuggestions.d.ts +68 -0
- package/components/PromptSuggestions/PromptSuggestions.js +87 -0
- package/components/Prose/Prose.css +269 -0
- package/components/Prose/Prose.d.ts +21 -0
- package/components/Prose/Prose.js +14 -0
- package/components/Quote/Quote.css +78 -0
- package/components/Quote/Quote.d.ts +18 -0
- package/components/Quote/Quote.js +26 -0
- package/components/RadioButton/RadioButton.css +151 -0
- package/components/RadioButton/RadioButton.d.ts +90 -0
- package/components/RadioButton/RadioButton.js +138 -0
- package/components/Rating/Rating.css +74 -0
- package/components/Rating/Rating.d.ts +41 -0
- package/components/Rating/Rating.js +124 -0
- package/components/Reasoning/Reasoning.css +291 -0
- package/components/Reasoning/Reasoning.d.ts +55 -0
- package/components/Reasoning/Reasoning.js +99 -0
- package/components/RichDropdown/RichDropdown.css +239 -0
- package/components/RichDropdown/RichDropdown.d.ts +78 -0
- package/components/RichDropdown/RichDropdown.js +227 -0
- package/components/SectionTitle/SectionTitle.css +45 -0
- package/components/SectionTitle/SectionTitle.d.ts +12 -0
- package/components/SectionTitle/SectionTitle.js +22 -0
- package/components/SegmentedControl/SegmentedControl.css +231 -0
- package/components/SegmentedControl/SegmentedControl.d.ts +44 -0
- package/components/SegmentedControl/SegmentedControl.js +240 -0
- package/components/SelectionCard/SelectionCard.css +255 -0
- package/components/SelectionCard/SelectionCard.d.ts +36 -0
- package/components/SelectionCard/SelectionCard.js +102 -0
- package/components/ShaderField/ShaderField.css +24 -0
- package/components/ShaderField/ShaderField.d.ts +68 -0
- package/components/ShaderField/ShaderField.js +55 -0
- package/components/ShaderField/field.glsl.d.ts +39 -0
- package/components/ShaderField/field.glsl.js +178 -0
- package/components/ShaderField/useShaderField.d.ts +103 -0
- package/components/ShaderField/useShaderField.js +410 -0
- package/components/Skeleton/Skeleton.css +81 -0
- package/components/Skeleton/Skeleton.d.ts +16 -0
- package/components/Skeleton/Skeleton.js +30 -0
- package/components/Slider/Slider.css +104 -0
- package/components/Slider/Slider.d.ts +48 -0
- package/components/Slider/Slider.js +86 -0
- package/components/SourceChip/SourceChip.css +111 -0
- package/components/SourceChip/SourceChip.d.ts +32 -0
- package/components/SourceChip/SourceChip.js +31 -0
- package/components/SourceTrail/SourceTrail.css +209 -0
- package/components/SourceTrail/SourceTrail.d.ts +49 -0
- package/components/SourceTrail/SourceTrail.js +108 -0
- package/components/SpacingSwatch/SpacingSwatch.css +108 -0
- package/components/SpacingSwatch/SpacingSwatch.d.ts +20 -0
- package/components/SpacingSwatch/SpacingSwatch.js +50 -0
- package/components/Sparkline/Sparkline.css +76 -0
- package/components/Sparkline/Sparkline.d.ts +51 -0
- package/components/Sparkline/Sparkline.js +116 -0
- package/components/Spinner/Spinner.css +84 -0
- package/components/Spinner/Spinner.d.ts +14 -0
- package/components/Spinner/Spinner.js +42 -0
- package/components/SplitButton/SplitButton.css +93 -0
- package/components/SplitButton/SplitButton.d.ts +43 -0
- package/components/SplitButton/SplitButton.js +67 -0
- package/components/SplitPane/SplitPane.css +106 -0
- package/components/SplitPane/SplitPane.d.ts +36 -0
- package/components/SplitPane/SplitPane.js +130 -0
- package/components/Stat/Stat.css +121 -0
- package/components/Stat/Stat.d.ts +22 -0
- package/components/Stat/Stat.js +36 -0
- package/components/StatusDot/StatusDot.css +104 -0
- package/components/StatusDot/StatusDot.d.ts +34 -0
- package/components/StatusDot/StatusDot.js +23 -0
- package/components/Stepper/Stepper.css +216 -0
- package/components/Stepper/Stepper.d.ts +41 -0
- package/components/Stepper/Stepper.js +61 -0
- package/components/StreamingText/StreamingText.css +40 -0
- package/components/StreamingText/StreamingText.d.ts +62 -0
- package/components/StreamingText/StreamingText.js +49 -0
- package/components/StreamingText/useStreamReveal.d.ts +70 -0
- package/components/StreamingText/useStreamReveal.js +121 -0
- package/components/Swatch/Swatch.css +52 -0
- package/components/Swatch/Swatch.d.ts +34 -0
- package/components/Swatch/Swatch.js +44 -0
- package/components/Table/Table.css +223 -0
- package/components/Table/Table.d.ts +53 -0
- package/components/Table/Table.js +65 -0
- package/components/Tabs/Tabs.css +140 -0
- package/components/Tabs/Tabs.d.ts +28 -0
- package/components/Tabs/Tabs.js +78 -0
- package/components/TagInput/TagInput.css +169 -0
- package/components/TagInput/TagInput.d.ts +43 -0
- package/components/TagInput/TagInput.js +137 -0
- package/components/Textarea/Textarea.css +109 -0
- package/components/Textarea/Textarea.d.ts +43 -0
- package/components/Textarea/Textarea.js +86 -0
- package/components/ThreadPanel/ThreadPanel.css +862 -0
- package/components/ThreadPanel/ThreadPanel.d.ts +175 -0
- package/components/ThreadPanel/ThreadPanel.js +466 -0
- package/components/ThreadTabs/ThreadTabs.css +252 -0
- package/components/ThreadTabs/ThreadTabs.d.ts +54 -0
- package/components/ThreadTabs/ThreadTabs.js +201 -0
- package/components/TimePicker/TimePicker.css +230 -0
- package/components/TimePicker/TimePicker.d.ts +46 -0
- package/components/TimePicker/TimePicker.js +250 -0
- package/components/Timeline/Timeline.css +366 -0
- package/components/Timeline/Timeline.d.ts +67 -0
- package/components/Timeline/Timeline.js +73 -0
- package/components/Toast/Toast.css +363 -0
- package/components/Toast/Toast.d.ts +63 -0
- package/components/Toast/Toast.js +215 -0
- package/components/ToggleGroup/ToggleGroup.css +110 -0
- package/components/ToggleGroup/ToggleGroup.d.ts +50 -0
- package/components/ToggleGroup/ToggleGroup.js +73 -0
- package/components/ToggleSwitch/ToggleSwitch.css +172 -0
- package/components/ToggleSwitch/ToggleSwitch.d.ts +43 -0
- package/components/ToggleSwitch/ToggleSwitch.js +76 -0
- package/components/ToolCall/ToolCall.css +234 -0
- package/components/ToolCall/ToolCall.d.ts +43 -0
- package/components/ToolCall/ToolCall.js +90 -0
- package/components/Toolbar/Toolbar.css +56 -0
- package/components/Toolbar/Toolbar.d.ts +35 -0
- package/components/Toolbar/Toolbar.js +62 -0
- package/components/Tooltip/Tooltip.css +175 -0
- package/components/Tooltip/Tooltip.d.ts +22 -0
- package/components/Tooltip/Tooltip.js +74 -0
- package/components/TreeView/TreeView.css +119 -0
- package/components/TreeView/TreeView.d.ts +45 -0
- package/components/TreeView/TreeView.js +232 -0
- package/components/TypographySwatch/TypographySwatch.css +81 -0
- package/components/TypographySwatch/TypographySwatch.d.ts +24 -0
- package/components/TypographySwatch/TypographySwatch.js +40 -0
- package/components/UsageCard/UsageCard.css +30 -0
- package/components/UsageCard/UsageCard.d.ts +48 -0
- package/components/UsageCard/UsageCard.js +54 -0
- package/components/Waveform/Waveform.css +97 -0
- package/components/Waveform/Waveform.d.ts +44 -0
- package/components/Waveform/Waveform.js +46 -0
- package/components/WorldMap/WorldMap.css +234 -0
- package/components/WorldMap/WorldMap.d.ts +113 -0
- package/components/WorldMap/WorldMap.js +427 -0
- package/components/WorldMap/land.d.ts +14 -0
- package/components/WorldMap/land.js +4 -0
- package/components/registry.d.ts +79 -0
- package/components/registry.js +13 -0
- package/components/registry.json +1153 -0
- package/components/registry.json.d.ts +1156 -0
- package/components/registry.json.js +11 -0
- package/fonts/MaterialSymbolsRounded-VariableFont_FILL,GRAD,opsz,wght.woff2 +0 -0
- package/fonts/material-symbols.css +94 -0
- package/fonts/presets/dm-sans-300-700-latin-ext.woff2 +0 -0
- package/fonts/presets/dm-sans-300-700-latin.woff2 +0 -0
- package/fonts/presets/fraunces-300-700-latin-ext.woff2 +0 -0
- package/fonts/presets/fraunces-300-700-latin.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-300-latin-ext.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-300-latin.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-400-latin-ext.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-400-latin.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-500-latin-ext.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-500-latin.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-600-latin-ext.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-600-latin.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-700-latin-ext.woff2 +0 -0
- package/fonts/presets/ibm-plex-mono-700-latin.woff2 +0 -0
- package/fonts/presets/ibm-plex-sans-300-700-latin-ext.woff2 +0 -0
- package/fonts/presets/ibm-plex-sans-300-700-latin.woff2 +0 -0
- package/fonts/presets/inter-300-700-latin-ext.woff2 +0 -0
- package/fonts/presets/inter-300-700-latin.woff2 +0 -0
- package/fonts/presets/inter-tight-300-900-latin-ext.woff2 +0 -0
- package/fonts/presets/inter-tight-300-900-latin.woff2 +0 -0
- package/fonts/presets/lora-400-700-latin-ext.woff2 +0 -0
- package/fonts/presets/lora-400-700-latin.woff2 +0 -0
- package/fonts/presets/montserrat-300-700-latin-ext.woff2 +0 -0
- package/fonts/presets/montserrat-300-700-latin.woff2 +0 -0
- package/fonts/presets/poppins-300-latin-ext.woff2 +0 -0
- package/fonts/presets/poppins-300-latin.woff2 +0 -0
- package/fonts/presets/poppins-400-latin-ext.woff2 +0 -0
- package/fonts/presets/poppins-400-latin.woff2 +0 -0
- package/fonts/presets/poppins-500-latin-ext.woff2 +0 -0
- package/fonts/presets/poppins-500-latin.woff2 +0 -0
- package/fonts/presets/poppins-600-latin-ext.woff2 +0 -0
- package/fonts/presets/poppins-600-latin.woff2 +0 -0
- package/fonts/presets/poppins-700-latin-ext.woff2 +0 -0
- package/fonts/presets/poppins-700-latin.woff2 +0 -0
- package/fonts/presets/source-sans-3-300-700-latin-ext.woff2 +0 -0
- package/fonts/presets/source-sans-3-300-700-latin.woff2 +0 -0
- package/fonts/presets/space-grotesk-300-700-latin-ext.woff2 +0 -0
- package/fonts/presets/space-grotesk-300-700-latin.woff2 +0 -0
- package/fonts/presets/work-sans-300-700-latin-ext.woff2 +0 -0
- package/fonts/presets/work-sans-300-700-latin.woff2 +0 -0
- package/index.d.ts +132 -0
- package/index.js +277 -0
- package/package.json +87 -0
- package/tokens/motion.d.ts +44 -0
- package/tokens/motion.js +32 -0
- package/tokens/presets/contrast.css +316 -0
- package/tokens/presets/coral.css +356 -0
- package/tokens/presets/forest.css +334 -0
- package/tokens/presets/gold.css +303 -0
- package/tokens/presets/mono.css +286 -0
- package/tokens/presets/pink.css +349 -0
- package/tokens/presets/presets.css +17 -0
- package/tokens/presets/terminal.css +378 -0
- package/tokens/presets/violet.css +314 -0
- package/tokens/presets/warm.css +320 -0
- package/tokens/presets/zest.css +359 -0
- package/tokens/registry.d.ts +22 -0
- package/tokens/registry.js +14 -0
- package/tokens/registry.json +276 -0
- package/tokens/registry.json.d.ts +279 -0
- package/tokens/registry.json.js +8 -0
- package/tokens/tokens-dark.css +186 -0
- package/tokens/tokens-light.css +276 -0
- package/tokens/tokens-motion.css +72 -0
- package/tokens/tokens-primitives.css +213 -0
- package/tokens/tokens-typography.css +210 -0
- package/tokens/tokens.css +11 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
TOOL CALL COMPONENT
|
|
3
|
+
One tool invocation: a skimmable header row
|
|
4
|
+
and, behind a disclosure, the arguments and
|
|
5
|
+
the result.
|
|
6
|
+
|
|
7
|
+
The container stays neutral — colour lives in
|
|
8
|
+
the indicator and the status word, so a long
|
|
9
|
+
run of calls reads as a list rather than a
|
|
10
|
+
wall of tinted cards. The border is the
|
|
11
|
+
standard container hairline in every status;
|
|
12
|
+
the status word and icon carry the state.
|
|
13
|
+
============================================ */
|
|
14
|
+
|
|
15
|
+
.ds-tool-call {
|
|
16
|
+
/* Two colour channels per status: -text for the status word (tuned for
|
|
17
|
+
text contrast) and -icon for the indicator glyph, which needs a hue
|
|
18
|
+
that survives a plain surface — see the status token comment. */
|
|
19
|
+
--ds-tool-call-color: var(--color-text-secondary);
|
|
20
|
+
--ds-tool-call-icon-color: var(--color-icon-secondary);
|
|
21
|
+
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
width: 100%;
|
|
25
|
+
background-color: var(--color-bg-container-primary);
|
|
26
|
+
border: var(--border-025) solid var(--color-bg-container-border);
|
|
27
|
+
/* The chat furniture shares one 24px shell with MessageCard and the
|
|
28
|
+
bubbles; a closed row rounds to a capsule the way a one-line bubble
|
|
29
|
+
does, echoing the system's pill buttons. */
|
|
30
|
+
border-radius: var(--radius-600);
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* ============================================
|
|
35
|
+
HEADER
|
|
36
|
+
============================================ */
|
|
37
|
+
|
|
38
|
+
.ds-tool-call__header {
|
|
39
|
+
display: flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
gap: var(--gap-200);
|
|
42
|
+
width: 100%;
|
|
43
|
+
/* 20px sides — the card family's shared content inset. */
|
|
44
|
+
padding: var(--padding-200) var(--padding-500);
|
|
45
|
+
background: none;
|
|
46
|
+
border: none;
|
|
47
|
+
/* Buttons default to the UA's buttontext, not the inherited colour, so
|
|
48
|
+
anything in the header that inherits would read black in both themes. */
|
|
49
|
+
color: var(--color-text-primary);
|
|
50
|
+
text-align: left;
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
transition: background-color var(--motion-duration-fast) var(--motion-ease-standard);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.ds-tool-call__header:hover {
|
|
56
|
+
background-color: var(--color-bg-container-secondary);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.ds-tool-call__header:focus-visible {
|
|
60
|
+
outline: 2px solid var(--color-action-primary-bg);
|
|
61
|
+
outline-offset: -2px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* No panel to open — the row is a plain div and must not look pressable */
|
|
65
|
+
.ds-tool-call__header--static {
|
|
66
|
+
cursor: default;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.ds-tool-call__header--static:hover {
|
|
70
|
+
background-color: transparent;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.ds-tool-call__indicator {
|
|
74
|
+
display: inline-flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
justify-content: center;
|
|
77
|
+
flex: none;
|
|
78
|
+
color: var(--ds-tool-call-icon-color);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.ds-tool-call__indicator .material-symbols-rounded {
|
|
82
|
+
--icon-size: var(--icon-size-500);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* The tool name is an identifier, so it takes the code stack —
|
|
86
|
+
the one place the system leaves Nunito Sans */
|
|
87
|
+
.ds-tool-call__name {
|
|
88
|
+
flex: none;
|
|
89
|
+
font-family: var(--font-family-code);
|
|
90
|
+
font-size: var(--font-paragraph-sm-size);
|
|
91
|
+
line-height: var(--font-paragraph-sm-line-height);
|
|
92
|
+
color: var(--color-text-primary);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.ds-tool-call__summary {
|
|
96
|
+
flex: 1 1 auto;
|
|
97
|
+
min-width: 0;
|
|
98
|
+
overflow: hidden;
|
|
99
|
+
text-overflow: ellipsis;
|
|
100
|
+
white-space: nowrap;
|
|
101
|
+
color: var(--color-text-tertiary);
|
|
102
|
+
font-family: var(--font-paragraph-sm-family);
|
|
103
|
+
font-size: var(--font-paragraph-sm-size);
|
|
104
|
+
font-weight: var(--font-paragraph-sm-weight);
|
|
105
|
+
line-height: var(--font-paragraph-sm-line-height);
|
|
106
|
+
letter-spacing: var(--font-paragraph-sm-letter-spacing);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.ds-tool-call__status {
|
|
110
|
+
flex: none;
|
|
111
|
+
margin-left: auto;
|
|
112
|
+
color: var(--ds-tool-call-color);
|
|
113
|
+
font-family: var(--font-paragraph-sm-emphasis-family);
|
|
114
|
+
font-size: var(--font-paragraph-sm-emphasis-size);
|
|
115
|
+
font-weight: var(--font-paragraph-sm-emphasis-weight);
|
|
116
|
+
line-height: var(--font-paragraph-sm-emphasis-line-height);
|
|
117
|
+
letter-spacing: var(--font-paragraph-sm-emphasis-letter-spacing);
|
|
118
|
+
white-space: nowrap;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* A summary already claims the free space; without one the status still
|
|
122
|
+
needs pushing to the right, which the auto margin above handles */
|
|
123
|
+
.ds-tool-call__summary ~ .ds-tool-call__status {
|
|
124
|
+
margin-left: 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.ds-tool-call__duration {
|
|
128
|
+
flex: none;
|
|
129
|
+
color: var(--color-text-tertiary);
|
|
130
|
+
font-family: var(--font-paragraph-sm-family);
|
|
131
|
+
font-size: var(--font-paragraph-sm-size);
|
|
132
|
+
font-weight: var(--font-paragraph-sm-weight);
|
|
133
|
+
line-height: var(--font-paragraph-sm-line-height);
|
|
134
|
+
letter-spacing: var(--font-paragraph-sm-letter-spacing);
|
|
135
|
+
font-variant-numeric: tabular-nums;
|
|
136
|
+
white-space: nowrap;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.ds-tool-call__chevron {
|
|
140
|
+
--icon-size: var(--icon-size-500);
|
|
141
|
+
|
|
142
|
+
flex: none;
|
|
143
|
+
color: var(--color-icon-secondary);
|
|
144
|
+
transition: transform var(--motion-duration-slow) var(--motion-ease-standard);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.ds-tool-call--open .ds-tool-call__chevron {
|
|
148
|
+
transform: rotate(180deg);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* ============================================
|
|
152
|
+
STATUSES
|
|
153
|
+
============================================ */
|
|
154
|
+
|
|
155
|
+
.ds-tool-call--pending {
|
|
156
|
+
--ds-tool-call-color: var(--color-status-warning-text);
|
|
157
|
+
--ds-tool-call-icon-color: var(--color-status-warning-icon);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.ds-tool-call--running {
|
|
161
|
+
--ds-tool-call-color: var(--color-status-info-text);
|
|
162
|
+
--ds-tool-call-icon-color: var(--color-status-info-icon);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.ds-tool-call--success {
|
|
166
|
+
--ds-tool-call-color: var(--color-status-positive-text);
|
|
167
|
+
--ds-tool-call-icon-color: var(--color-status-positive-icon);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.ds-tool-call--error {
|
|
171
|
+
--ds-tool-call-color: var(--color-status-error-text);
|
|
172
|
+
--ds-tool-call-icon-color: var(--color-status-error-icon);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* ============================================
|
|
176
|
+
PANEL
|
|
177
|
+
============================================ */
|
|
178
|
+
|
|
179
|
+
.ds-tool-call__panel {
|
|
180
|
+
display: grid;
|
|
181
|
+
grid-template-rows: 0fr;
|
|
182
|
+
visibility: hidden;
|
|
183
|
+
transition:
|
|
184
|
+
grid-template-rows var(--motion-duration-slow) var(--motion-ease-standard),
|
|
185
|
+
visibility var(--motion-duration-slow) var(--motion-ease-standard);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.ds-tool-call--open .ds-tool-call__panel {
|
|
189
|
+
grid-template-rows: 1fr;
|
|
190
|
+
visibility: visible;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.ds-tool-call__content {
|
|
194
|
+
overflow: hidden;
|
|
195
|
+
min-height: 0;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.ds-tool-call--open .ds-tool-call__content {
|
|
199
|
+
padding: var(--padding-400) var(--padding-500);
|
|
200
|
+
border-top: var(--border-025) solid var(--color-divider);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.ds-tool-call__content > :first-child {
|
|
204
|
+
margin-top: 0;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.ds-tool-call__content > :last-child {
|
|
208
|
+
margin-bottom: 0;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* ============================================
|
|
212
|
+
ACTIONS
|
|
213
|
+
Outside the panel, so a call awaiting approval
|
|
214
|
+
can be answered without expanding it first.
|
|
215
|
+
============================================ */
|
|
216
|
+
|
|
217
|
+
.ds-tool-call__actions {
|
|
218
|
+
display: flex;
|
|
219
|
+
align-items: center;
|
|
220
|
+
justify-content: flex-start;
|
|
221
|
+
gap: var(--gap-200);
|
|
222
|
+
padding: var(--padding-200) var(--padding-500) var(--padding-400);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* Icons take the colour of the text around them. Explicit, not just
|
|
226
|
+
inherited by default: a consumer stylesheet that sets a colour on
|
|
227
|
+
.material-symbols-rounded itself (a common global default) would
|
|
228
|
+
otherwise override inheritance and detach the icon from the state
|
|
229
|
+
colours this component sets on its parents. The chevron is excluded —
|
|
230
|
+
it is the one icon that carries its own colour rule, which this
|
|
231
|
+
higher-specificity rule would otherwise silently override. */
|
|
232
|
+
.ds-tool-call .material-symbols-rounded:not(.ds-tool-call__chevron) {
|
|
233
|
+
color: inherit;
|
|
234
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type ToolCallStatus = 'pending' | 'running' | 'success' | 'error';
|
|
3
|
+
/** Props owned by ToolCall itself — everything else falls through to the root element. */
|
|
4
|
+
type ToolCallOwnProps = {
|
|
5
|
+
/** The tool that was invoked, shown in monospace. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** Where the call has got to. Drives the colour, the indicator, and the default status text. */
|
|
8
|
+
status?: ToolCallStatus;
|
|
9
|
+
/** One line describing this particular call, e.g. the target path or query. */
|
|
10
|
+
summary?: string;
|
|
11
|
+
/** How long the call took, e.g. "1.2s". Free text, so callers keep their own formatting. */
|
|
12
|
+
duration?: string;
|
|
13
|
+
/** Override the status text shown beside the indicator. */
|
|
14
|
+
statusLabel?: string;
|
|
15
|
+
/** Open state for controlled use. Pair with `onOpenChange`. */
|
|
16
|
+
open?: boolean;
|
|
17
|
+
/** Open state for uncontrolled use. */
|
|
18
|
+
defaultOpen?: boolean;
|
|
19
|
+
/** Fires whenever the panel opens or closes. */
|
|
20
|
+
onOpenChange?: (open: boolean) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Controls for a call awaiting a decision — allow, deny, always allow.
|
|
23
|
+
* Rendered outside the collapsible panel, so approving never requires
|
|
24
|
+
* expanding the call first.
|
|
25
|
+
*/
|
|
26
|
+
actions?: React.ReactNode;
|
|
27
|
+
/** Additional CSS classes */
|
|
28
|
+
className?: string;
|
|
29
|
+
/** The call's arguments and result. */
|
|
30
|
+
children?: React.ReactNode;
|
|
31
|
+
};
|
|
32
|
+
export interface ToolCallProps extends ToolCallOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof ToolCallOwnProps> {
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* ToolCall is the record of one tool invocation: what ran, how it went, how
|
|
36
|
+
* long it took, and — behind a disclosure — the arguments it was given and
|
|
37
|
+
* what it returned.
|
|
38
|
+
*
|
|
39
|
+
* A run is mostly a list of these, so the collapsed header carries everything
|
|
40
|
+
* needed to skim it and the body holds everything needed to audit it.
|
|
41
|
+
*/
|
|
42
|
+
export declare const ToolCall: React.ForwardRefExoticComponent<ToolCallProps & React.RefAttributes<HTMLDivElement>>;
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
3
|
+
import React, { useId, useState, useCallback } from "react";
|
|
4
|
+
import { Spinner } from "../Spinner/Spinner.js";
|
|
5
|
+
import "./ToolCall.css";
|
|
6
|
+
import "../../fonts/material-symbols.css";
|
|
7
|
+
const DEFAULT_STATUS_LABELS = {
|
|
8
|
+
pending: "Needs approval",
|
|
9
|
+
running: "Running",
|
|
10
|
+
success: "Done",
|
|
11
|
+
error: "Failed"
|
|
12
|
+
};
|
|
13
|
+
const STATUS_ICONS = {
|
|
14
|
+
pending: "pause_circle",
|
|
15
|
+
success: "check_circle",
|
|
16
|
+
error: "error"
|
|
17
|
+
};
|
|
18
|
+
const ToolCall = React.forwardRef(
|
|
19
|
+
({
|
|
20
|
+
name,
|
|
21
|
+
status = "success",
|
|
22
|
+
summary,
|
|
23
|
+
duration,
|
|
24
|
+
statusLabel,
|
|
25
|
+
open,
|
|
26
|
+
defaultOpen = false,
|
|
27
|
+
onOpenChange,
|
|
28
|
+
actions,
|
|
29
|
+
className = "",
|
|
30
|
+
children,
|
|
31
|
+
...rest
|
|
32
|
+
}, ref) => {
|
|
33
|
+
const baseClass = "ds-tool-call";
|
|
34
|
+
const id = useId();
|
|
35
|
+
const panelId = `${id}-panel`;
|
|
36
|
+
const triggerId = `${id}-trigger`;
|
|
37
|
+
const isControlled = open !== void 0;
|
|
38
|
+
const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
|
|
39
|
+
const isOpen = isControlled ? open : uncontrolledOpen;
|
|
40
|
+
const hasPanel = Boolean(children);
|
|
41
|
+
const toggle = useCallback(() => {
|
|
42
|
+
const next = !isOpen;
|
|
43
|
+
if (!isControlled) setUncontrolledOpen(next);
|
|
44
|
+
onOpenChange?.(next);
|
|
45
|
+
}, [isOpen, isControlled, onOpenChange]);
|
|
46
|
+
const classes = [
|
|
47
|
+
baseClass,
|
|
48
|
+
`${baseClass}--${status}`,
|
|
49
|
+
isOpen ? `${baseClass}--open` : "",
|
|
50
|
+
className
|
|
51
|
+
].filter(Boolean).join(" ");
|
|
52
|
+
const header = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
53
|
+
/* @__PURE__ */ jsx("span", { className: `${baseClass}__indicator`, "aria-hidden": "true", children: status === "running" ? /* @__PURE__ */ jsx(Spinner, { size: "sm", variant: "inherit" }) : /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded", children: STATUS_ICONS[status] }) }),
|
|
54
|
+
/* @__PURE__ */ jsx("span", { className: `${baseClass}__name`, children: name }),
|
|
55
|
+
summary && /* @__PURE__ */ jsx("span", { className: `${baseClass}__summary`, children: summary }),
|
|
56
|
+
/* @__PURE__ */ jsx("span", { className: `${baseClass}__status`, children: statusLabel ?? DEFAULT_STATUS_LABELS[status] }),
|
|
57
|
+
duration && /* @__PURE__ */ jsx("span", { className: `${baseClass}__duration`, children: duration }),
|
|
58
|
+
hasPanel && /* @__PURE__ */ jsx("span", { className: `${baseClass}__chevron material-symbols-rounded`, "aria-hidden": "true", children: "expand_more" })
|
|
59
|
+
] });
|
|
60
|
+
return /* @__PURE__ */ jsxs("div", { ...rest, ref, className: classes, children: [
|
|
61
|
+
hasPanel ? /* @__PURE__ */ jsx(
|
|
62
|
+
"button",
|
|
63
|
+
{
|
|
64
|
+
type: "button",
|
|
65
|
+
id: triggerId,
|
|
66
|
+
className: `${baseClass}__header`,
|
|
67
|
+
"aria-expanded": isOpen,
|
|
68
|
+
"aria-controls": panelId,
|
|
69
|
+
onClick: toggle,
|
|
70
|
+
children: header
|
|
71
|
+
}
|
|
72
|
+
) : /* @__PURE__ */ jsx("div", { className: `${baseClass}__header ${baseClass}__header--static`, children: header }),
|
|
73
|
+
hasPanel && /* @__PURE__ */ jsx(
|
|
74
|
+
"div",
|
|
75
|
+
{
|
|
76
|
+
className: `${baseClass}__panel`,
|
|
77
|
+
id: panelId,
|
|
78
|
+
role: "region",
|
|
79
|
+
"aria-labelledby": triggerId,
|
|
80
|
+
children: /* @__PURE__ */ jsx("div", { className: `${baseClass}__content`, children })
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
actions && /* @__PURE__ */ jsx("div", { className: `${baseClass}__actions`, children: actions })
|
|
84
|
+
] });
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
ToolCall.displayName = "ToolCall";
|
|
88
|
+
export {
|
|
89
|
+
ToolCall
|
|
90
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
TOOLBAR COMPONENT
|
|
3
|
+
Grouped strip of controls in one shell
|
|
4
|
+
============================================ */
|
|
5
|
+
|
|
6
|
+
/* Base — a pill shell on the container fill. Padding clears the focus
|
|
7
|
+
ring's full reach (2px offset + 2px outline), so a focused control's
|
|
8
|
+
ring seats inside the shell instead of slicing its border. */
|
|
9
|
+
|
|
10
|
+
.ds-toolbar {
|
|
11
|
+
display: inline-flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
gap: var(--gap-100);
|
|
14
|
+
padding: var(--padding-150);
|
|
15
|
+
background-color: var(--color-bg-container-primary);
|
|
16
|
+
border: var(--border-025) solid var(--color-bg-container-border);
|
|
17
|
+
border-radius: var(--radius-pill);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Orientation */
|
|
21
|
+
|
|
22
|
+
.ds-toolbar--vertical {
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* Variants */
|
|
27
|
+
|
|
28
|
+
/* Floating: the glass pill for controls hovering over content — frosted
|
|
29
|
+
fill, floating elevation. The consumer's layout positions it. */
|
|
30
|
+
.ds-toolbar--floating {
|
|
31
|
+
background-color: var(--color-bg-glass);
|
|
32
|
+
/* The frost's strength; an effect length with no token family, chosen by
|
|
33
|
+
eye to match the system's other glass surfaces. */
|
|
34
|
+
--ds-toolbar-frost: 24px;
|
|
35
|
+
backdrop-filter: blur(var(--ds-toolbar-frost));
|
|
36
|
+
box-shadow: var(--shadow-floating);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Separator — a hairline between control clusters, inset from the shell's
|
|
40
|
+
edge by stretching only across the controls' own height. */
|
|
41
|
+
|
|
42
|
+
.ds-toolbar__separator {
|
|
43
|
+
flex-shrink: 0;
|
|
44
|
+
align-self: stretch;
|
|
45
|
+
width: var(--border-025);
|
|
46
|
+
margin-block: var(--gap-050);
|
|
47
|
+
margin-inline: var(--gap-050);
|
|
48
|
+
background-color: var(--color-divider);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.ds-toolbar--vertical .ds-toolbar__separator {
|
|
52
|
+
width: auto;
|
|
53
|
+
height: var(--border-025);
|
|
54
|
+
margin-block: var(--gap-050);
|
|
55
|
+
margin-inline: var(--gap-050);
|
|
56
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/** Props owned by Toolbar itself — everything else falls through to the root div. */
|
|
3
|
+
type ToolbarOwnProps = {
|
|
4
|
+
/** Accessible name for the toolbar — what a screen reader calls the group. */
|
|
5
|
+
label: string;
|
|
6
|
+
/** Which way the controls run. */
|
|
7
|
+
orientation?: 'horizontal' | 'vertical';
|
|
8
|
+
/**
|
|
9
|
+
* `default` is an attached bar on the container fill; `floating` is the
|
|
10
|
+
* glass pill for controls hovering over content — position it with your own
|
|
11
|
+
* layout (the component never fixes itself to the viewport).
|
|
12
|
+
*/
|
|
13
|
+
variant?: 'default' | 'floating';
|
|
14
|
+
/** The toolbar's controls — group unrelated clusters with `ToolbarSeparator`. */
|
|
15
|
+
children?: React.ReactNode;
|
|
16
|
+
/** Additional CSS classes */
|
|
17
|
+
className?: string;
|
|
18
|
+
};
|
|
19
|
+
export interface ToolbarProps extends ToolbarOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof ToolbarOwnProps> {
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Toolbar — a grouped strip of controls sharing one shell: buttons, toggles,
|
|
23
|
+
* segmented controls, separated into clusters. Announces as `role="toolbar"`
|
|
24
|
+
* and moves focus with the arrow keys (Home/End jump to the ends), following
|
|
25
|
+
* the toolbar keyboard pattern, while every control keeps its natural tab
|
|
26
|
+
* stop.
|
|
27
|
+
*
|
|
28
|
+
* The `floating` variant is the glass pill for controls that hover over
|
|
29
|
+
* content — a canvas's zoom cluster, a stage's own instruments. The shell is
|
|
30
|
+
* unpositioned by design; the consumer's layout decides where it floats.
|
|
31
|
+
*/
|
|
32
|
+
export declare const Toolbar: React.ForwardRefExoticComponent<ToolbarProps & React.RefAttributes<HTMLDivElement>>;
|
|
33
|
+
/** A hairline divider between a Toolbar's control clusters. */
|
|
34
|
+
export declare const ToolbarSeparator: () => React.JSX.Element;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import React, { useRef } from "react";
|
|
4
|
+
import "./Toolbar.css";
|
|
5
|
+
import { getFocusable } from "../../behaviors/focusable.js";
|
|
6
|
+
const Toolbar = React.forwardRef(
|
|
7
|
+
({
|
|
8
|
+
label,
|
|
9
|
+
orientation = "horizontal",
|
|
10
|
+
variant = "default",
|
|
11
|
+
children,
|
|
12
|
+
className = "",
|
|
13
|
+
onKeyDown,
|
|
14
|
+
...rest
|
|
15
|
+
}, ref) => {
|
|
16
|
+
const baseClass = "ds-toolbar";
|
|
17
|
+
const rootRef = useRef(null);
|
|
18
|
+
const setRootRef = (node) => {
|
|
19
|
+
rootRef.current = node;
|
|
20
|
+
if (typeof ref === "function") ref(node);
|
|
21
|
+
else if (ref) ref.current = node;
|
|
22
|
+
};
|
|
23
|
+
const handleKeyDown = (e) => {
|
|
24
|
+
onKeyDown?.(e);
|
|
25
|
+
if (e.defaultPrevented || !rootRef.current) return;
|
|
26
|
+
const nextKey = orientation === "vertical" ? "ArrowDown" : "ArrowRight";
|
|
27
|
+
const prevKey = orientation === "vertical" ? "ArrowUp" : "ArrowLeft";
|
|
28
|
+
if (e.key !== nextKey && e.key !== prevKey && e.key !== "Home" && e.key !== "End") return;
|
|
29
|
+
const items = getFocusable(rootRef.current);
|
|
30
|
+
const current = items.indexOf(document.activeElement);
|
|
31
|
+
if (items.length === 0 || current === -1) return;
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
const target = e.key === "Home" ? 0 : e.key === "End" ? items.length - 1 : e.key === nextKey ? (current + 1) % items.length : (current - 1 + items.length) % items.length;
|
|
34
|
+
items[target].focus();
|
|
35
|
+
};
|
|
36
|
+
const classes = [
|
|
37
|
+
baseClass,
|
|
38
|
+
`${baseClass}--${orientation}`,
|
|
39
|
+
`${baseClass}--${variant}`,
|
|
40
|
+
className
|
|
41
|
+
].filter(Boolean).join(" ");
|
|
42
|
+
return /* @__PURE__ */ jsx(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
...rest,
|
|
46
|
+
ref: setRootRef,
|
|
47
|
+
className: classes,
|
|
48
|
+
role: "toolbar",
|
|
49
|
+
"aria-label": label,
|
|
50
|
+
"aria-orientation": orientation,
|
|
51
|
+
onKeyDown: handleKeyDown,
|
|
52
|
+
children
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
Toolbar.displayName = "Toolbar";
|
|
58
|
+
const ToolbarSeparator = () => /* @__PURE__ */ jsx("span", { className: "ds-toolbar__separator", "aria-hidden": "true" });
|
|
59
|
+
export {
|
|
60
|
+
Toolbar,
|
|
61
|
+
ToolbarSeparator
|
|
62
|
+
};
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
TOOLTIP COMPONENT
|
|
3
|
+
Contextual text label on hover / focus
|
|
4
|
+
============================================ */
|
|
5
|
+
|
|
6
|
+
.ds-tooltip {
|
|
7
|
+
position: relative;
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* ============================================
|
|
12
|
+
PANEL
|
|
13
|
+
============================================ */
|
|
14
|
+
|
|
15
|
+
.ds-tooltip__panel {
|
|
16
|
+
position: absolute;
|
|
17
|
+
z-index: 50;
|
|
18
|
+
padding: var(--padding-150) var(--padding-200); /* 6px 8px */
|
|
19
|
+
border-radius: var(--radius-100); /* 4px */
|
|
20
|
+
/* The floating surface, same recipe as Popover: page background (the
|
|
21
|
+
container fill is semi-transparent), hairline border, floating shadow.
|
|
22
|
+
Same-polarity in both themes — light bubble on light, dark on dark —
|
|
23
|
+
softer than the old inverse fill. */
|
|
24
|
+
border: var(--border-025) solid var(--color-bg-container-border);
|
|
25
|
+
background-color: var(--color-bg-page-primary);
|
|
26
|
+
color: var(--color-text-primary);
|
|
27
|
+
box-shadow: var(--shadow-floating);
|
|
28
|
+
font-family: var(--font-paragraph-sm-family);
|
|
29
|
+
font-size: var(--font-paragraph-sm-size);
|
|
30
|
+
font-weight: var(--font-paragraph-sm-weight);
|
|
31
|
+
line-height: var(--font-paragraph-sm-line-height);
|
|
32
|
+
white-space: nowrap;
|
|
33
|
+
pointer-events: none;
|
|
34
|
+
/* Hidden panels leave layout entirely: opacity/visibility alone keep the
|
|
35
|
+
box in the page's scrollable overflow, so an edge-adjacent trigger's
|
|
36
|
+
panel adds horizontal scroll while invisible. display transitions
|
|
37
|
+
discretely (allow-discrete holds it through the exit fade; the entry
|
|
38
|
+
fade starts from @starting-style below); browsers without those skip
|
|
39
|
+
the fades but show and hide correctly. */
|
|
40
|
+
display: none;
|
|
41
|
+
opacity: 0;
|
|
42
|
+
transition-property: opacity, transform, display;
|
|
43
|
+
transition-duration: var(--motion-duration-fast);
|
|
44
|
+
transition-timing-function: var(--motion-ease-standard);
|
|
45
|
+
transition-behavior: allow-discrete;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ds-tooltip__panel--visible {
|
|
49
|
+
display: block;
|
|
50
|
+
opacity: 1;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* ============================================
|
|
54
|
+
POSITIONS
|
|
55
|
+
============================================ */
|
|
56
|
+
|
|
57
|
+
.ds-tooltip__panel--top {
|
|
58
|
+
bottom: 100%;
|
|
59
|
+
left: 50%;
|
|
60
|
+
transform: translateX(-50%) translateY(4px);
|
|
61
|
+
margin-bottom: var(--gap-100); /* 4px */
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.ds-tooltip__panel--top.ds-tooltip__panel--visible {
|
|
65
|
+
transform: translateX(-50%) translateY(0);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.ds-tooltip__panel--bottom {
|
|
69
|
+
top: 100%;
|
|
70
|
+
left: 50%;
|
|
71
|
+
transform: translateX(-50%) translateY(-4px);
|
|
72
|
+
margin-top: var(--gap-100);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.ds-tooltip__panel--bottom.ds-tooltip__panel--visible {
|
|
76
|
+
transform: translateX(-50%) translateY(0);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.ds-tooltip__panel--left {
|
|
80
|
+
right: 100%;
|
|
81
|
+
top: 50%;
|
|
82
|
+
transform: translateY(-50%) translateX(4px);
|
|
83
|
+
margin-right: var(--gap-100);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.ds-tooltip__panel--left.ds-tooltip__panel--visible {
|
|
87
|
+
transform: translateY(-50%) translateX(0);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.ds-tooltip__panel--right {
|
|
91
|
+
left: 100%;
|
|
92
|
+
top: 50%;
|
|
93
|
+
transform: translateY(-50%) translateX(-4px);
|
|
94
|
+
margin-left: var(--gap-100);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.ds-tooltip__panel--right.ds-tooltip__panel--visible {
|
|
98
|
+
transform: translateY(-50%) translateX(0);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Entry states for the display flip: a panel arriving from display:none has
|
|
102
|
+
no prior computed style, so these supply the fade's starting frame. Each
|
|
103
|
+
mirrors its position's hidden transform above. */
|
|
104
|
+
@starting-style {
|
|
105
|
+
.ds-tooltip__panel--top.ds-tooltip__panel--visible {
|
|
106
|
+
opacity: 0;
|
|
107
|
+
transform: translateX(-50%) translateY(4px);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.ds-tooltip__panel--bottom.ds-tooltip__panel--visible {
|
|
111
|
+
opacity: 0;
|
|
112
|
+
transform: translateX(-50%) translateY(-4px);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.ds-tooltip__panel--left.ds-tooltip__panel--visible {
|
|
116
|
+
opacity: 0;
|
|
117
|
+
transform: translateY(-50%) translateX(4px);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.ds-tooltip__panel--right.ds-tooltip__panel--visible {
|
|
121
|
+
opacity: 0;
|
|
122
|
+
transform: translateY(-50%) translateX(-4px);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* ============================================
|
|
127
|
+
ARROW
|
|
128
|
+
============================================ */
|
|
129
|
+
|
|
130
|
+
/* The arrow is a rotated square in the panel's fill. It overlaps the panel
|
|
131
|
+
by a pixel more than before so its opaque fill covers the panel border
|
|
132
|
+
behind it, and draws the hairline itself on its two outward edges only. */
|
|
133
|
+
.ds-tooltip__arrow {
|
|
134
|
+
position: absolute;
|
|
135
|
+
width: 8px;
|
|
136
|
+
height: 8px;
|
|
137
|
+
background-color: var(--color-bg-page-primary);
|
|
138
|
+
transform: rotate(45deg);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Arrow — top position (arrow points down) */
|
|
142
|
+
.ds-tooltip__panel--top .ds-tooltip__arrow {
|
|
143
|
+
bottom: -5px;
|
|
144
|
+
left: 50%;
|
|
145
|
+
margin-left: -4px;
|
|
146
|
+
border-right: var(--border-025) solid var(--color-bg-container-border);
|
|
147
|
+
border-bottom: var(--border-025) solid var(--color-bg-container-border);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* Arrow — bottom position (arrow points up) */
|
|
151
|
+
.ds-tooltip__panel--bottom .ds-tooltip__arrow {
|
|
152
|
+
top: -5px;
|
|
153
|
+
left: 50%;
|
|
154
|
+
margin-left: -4px;
|
|
155
|
+
border-top: var(--border-025) solid var(--color-bg-container-border);
|
|
156
|
+
border-left: var(--border-025) solid var(--color-bg-container-border);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* Arrow — left position (arrow points right) */
|
|
160
|
+
.ds-tooltip__panel--left .ds-tooltip__arrow {
|
|
161
|
+
right: -5px;
|
|
162
|
+
top: 50%;
|
|
163
|
+
margin-top: -4px;
|
|
164
|
+
border-top: var(--border-025) solid var(--color-bg-container-border);
|
|
165
|
+
border-right: var(--border-025) solid var(--color-bg-container-border);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* Arrow — right position (arrow points left) */
|
|
169
|
+
.ds-tooltip__panel--right .ds-tooltip__arrow {
|
|
170
|
+
left: -5px;
|
|
171
|
+
top: 50%;
|
|
172
|
+
margin-top: -4px;
|
|
173
|
+
border-bottom: var(--border-025) solid var(--color-bg-container-border);
|
|
174
|
+
border-left: var(--border-025) solid var(--color-bg-container-border);
|
|
175
|
+
}
|