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,862 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
THREAD PANEL COMPONENT
|
|
3
|
+
The session-history rail of a chat or agent product: brand header,
|
|
4
|
+
new-thread action, standing controls, projects, grouped history,
|
|
5
|
+
profile footer. Deliberately surface-less — the host paints the band
|
|
6
|
+
it sits on.
|
|
7
|
+
|
|
8
|
+
Expand/collapse is AppSidebar's choreography, restated: the panel owns
|
|
9
|
+
its width (64px rail, 280px expanded — the same constants), the sweeping
|
|
10
|
+
clip and the labels' opacity fades carry the whole transition, and inner
|
|
11
|
+
layout stays constant so nothing snaps mid-glide. Rows keep AppSidebar's
|
|
12
|
+
geometry: 40px --radius-pill pills inset by 12px margins, so a collapsed
|
|
13
|
+
row is a perfect circle around its icon (12 + 8 + 24 + 8 + 12 = 64).
|
|
14
|
+
============================================ */
|
|
15
|
+
|
|
16
|
+
.ds-thread-panel {
|
|
17
|
+
/* Width and padding combine on the root and the rows, so the component
|
|
18
|
+
declares its own sizing model rather than leaning on a host reset —
|
|
19
|
+
without it the 64px rail renders 88 wide in a bare host. */
|
|
20
|
+
box-sizing: border-box;
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
/* AppSidebar's row rhythm: one gap-xs beat between every action row,
|
|
24
|
+
the new-thread row included; the larger section breaks come from the
|
|
25
|
+
history's and footer's own top padding. */
|
|
26
|
+
gap: var(--gap-100);
|
|
27
|
+
width: 64px;
|
|
28
|
+
height: 100%;
|
|
29
|
+
min-height: 0;
|
|
30
|
+
overflow: hidden;
|
|
31
|
+
/* The inline inset lives on the panel, not the rows: every row fills
|
|
32
|
+
the padded column, so the fills all stop at the same 12px breathing
|
|
33
|
+
room in both states — and the collapsed circle math is unchanged
|
|
34
|
+
(12 + 8 + 24 + 8 + 12 = the 64px rail). */
|
|
35
|
+
padding: var(--padding-400) var(--padding-300);
|
|
36
|
+
transition: width var(--motion-duration-slow) var(--motion-ease-emphasized);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.ds-thread-panel--expanded {
|
|
40
|
+
width: 280px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Collapsed, the whole rail is an expand target (the markup only wires
|
|
44
|
+
the click when a collapse handler exists, and rows keep their own
|
|
45
|
+
jobs); the cursor says so. */
|
|
46
|
+
.ds-thread-panel:not(.ds-thread-panel--expanded) {
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* ============================================
|
|
51
|
+
HEADER — brand row and the collapse toggle
|
|
52
|
+
============================================ */
|
|
53
|
+
|
|
54
|
+
/* Collapsed, --padding-200 centres the 24px mark on the rail's axis
|
|
55
|
+
(12 + 8 = the rows' icon seat); expanded it deepens to the 28px optical
|
|
56
|
+
seat with everything else, the padding gliding with the sweep. The
|
|
57
|
+
margin sits the brand row evenly between the panel's top edge and the
|
|
58
|
+
new-thread row: 6 + 12 + the panel's 4px gap below mirrors the 16px
|
|
59
|
+
panel padding + 6 above. */
|
|
60
|
+
.ds-thread-panel__header {
|
|
61
|
+
display: flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
flex: none;
|
|
64
|
+
min-width: 0;
|
|
65
|
+
padding: var(--padding-150) var(--padding-200);
|
|
66
|
+
margin-bottom: var(--gap-300);
|
|
67
|
+
transition: padding var(--motion-duration-slow) var(--motion-ease-emphasized);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.ds-thread-panel--expanded .ds-thread-panel__header {
|
|
71
|
+
padding: var(--padding-150) var(--padding-400);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* A logo-less header collapsed to the rail: the empty brand slot would
|
|
75
|
+
otherwise push the standing toggle off the rail's axis, so it stands
|
|
76
|
+
down and the toggle centres like every other mark. */
|
|
77
|
+
.ds-thread-panel:not(.ds-thread-panel--expanded)
|
|
78
|
+
.ds-thread-panel__header--bare {
|
|
79
|
+
justify-content: center;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.ds-thread-panel:not(.ds-thread-panel--expanded)
|
|
83
|
+
.ds-thread-panel__header--bare
|
|
84
|
+
.ds-thread-panel__header-inner {
|
|
85
|
+
display: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Collapsed, the logo doubles as the expand button (role="button" comes
|
|
89
|
+
from the markup); the pointer affordance is all it needs visually. */
|
|
90
|
+
.ds-thread-panel__header-inner {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex: 1;
|
|
93
|
+
align-items: center;
|
|
94
|
+
gap: var(--gap-200);
|
|
95
|
+
min-width: 0;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.ds-thread-panel__header-inner[role='button'] {
|
|
99
|
+
cursor: pointer;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.ds-thread-panel__header-inner[role='button']:focus-visible {
|
|
103
|
+
outline: 2px solid var(--color-action-primary-bg);
|
|
104
|
+
outline-offset: 2px;
|
|
105
|
+
border-radius: var(--radius-100);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.ds-thread-panel__logo {
|
|
109
|
+
display: inline-flex;
|
|
110
|
+
flex: none;
|
|
111
|
+
align-items: center;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* ChatHeader's title face, so a brand here sits at the same size the
|
|
115
|
+
chat's own header wears it — the two surfaces meet in one product. */
|
|
116
|
+
.ds-thread-panel__brand {
|
|
117
|
+
min-width: 0;
|
|
118
|
+
flex-shrink: 1;
|
|
119
|
+
overflow: hidden;
|
|
120
|
+
text-overflow: ellipsis;
|
|
121
|
+
white-space: nowrap;
|
|
122
|
+
font-family: var(--font-title-body-family);
|
|
123
|
+
font-size: var(--font-title-body-size);
|
|
124
|
+
font-weight: var(--font-title-body-weight);
|
|
125
|
+
line-height: var(--font-title-body-line-height);
|
|
126
|
+
color: var(--color-text-primary);
|
|
127
|
+
opacity: 0;
|
|
128
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.ds-thread-panel--expanded .ds-thread-panel__brand {
|
|
132
|
+
opacity: 1;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* The toggle folds to nothing while collapsed — the logo carries the
|
|
136
|
+
expand gesture — and glides back in with the width (AppSidebar's
|
|
137
|
+
mechanics: both widths explicit, so the width interpolates). */
|
|
138
|
+
.ds-thread-panel__toggle {
|
|
139
|
+
--icon-size: var(--icon-size-600);
|
|
140
|
+
display: flex;
|
|
141
|
+
align-items: center;
|
|
142
|
+
justify-content: center;
|
|
143
|
+
width: 0;
|
|
144
|
+
height: 24px;
|
|
145
|
+
flex-shrink: 0;
|
|
146
|
+
padding: 0;
|
|
147
|
+
border: none;
|
|
148
|
+
background: none;
|
|
149
|
+
color: var(--color-icon-primary);
|
|
150
|
+
cursor: pointer;
|
|
151
|
+
overflow: hidden;
|
|
152
|
+
opacity: 0;
|
|
153
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
|
|
154
|
+
width var(--motion-duration-slow) var(--motion-ease-emphasized);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.ds-thread-panel--expanded .ds-thread-panel__toggle {
|
|
158
|
+
width: 24px;
|
|
159
|
+
opacity: 1;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* With no logo there is nothing to hand the expand gesture to, so the
|
|
163
|
+
toggle stays present in both states. */
|
|
164
|
+
.ds-thread-panel__toggle--standalone {
|
|
165
|
+
width: 24px;
|
|
166
|
+
opacity: 1;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.ds-thread-panel__toggle:focus-visible {
|
|
170
|
+
outline: 2px solid var(--color-action-primary-bg);
|
|
171
|
+
outline-offset: 2px;
|
|
172
|
+
border-radius: var(--radius-100);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* ============================================
|
|
176
|
+
ROWS — AppSidebar's shared pill shape
|
|
177
|
+
40px --radius-pill rows inset by 12px margins with 8px padding: the
|
|
178
|
+
icon keeps its x-position in both states, and the collapsed hover pill
|
|
179
|
+
is a circle clear of the rail edges.
|
|
180
|
+
============================================ */
|
|
181
|
+
|
|
182
|
+
.ds-thread-panel__new,
|
|
183
|
+
.ds-thread-panel__control,
|
|
184
|
+
.ds-thread-panel__project,
|
|
185
|
+
.ds-thread-panel__thread {
|
|
186
|
+
box-sizing: border-box;
|
|
187
|
+
display: flex;
|
|
188
|
+
align-items: center;
|
|
189
|
+
gap: var(--gap-200);
|
|
190
|
+
width: 100%;
|
|
191
|
+
height: 40px;
|
|
192
|
+
min-width: 0;
|
|
193
|
+
padding: var(--padding-200);
|
|
194
|
+
border: none;
|
|
195
|
+
border-radius: var(--radius-pill);
|
|
196
|
+
background: transparent;
|
|
197
|
+
cursor: pointer;
|
|
198
|
+
overflow: hidden;
|
|
199
|
+
text-align: left;
|
|
200
|
+
text-decoration: none;
|
|
201
|
+
transition: background-color var(--motion-duration-fast)
|
|
202
|
+
var(--motion-ease-standard),
|
|
203
|
+
padding var(--motion-duration-slow) var(--motion-ease-emphasized);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Expanded, the rows breathe: --padding-400 inline sets the 28px optical
|
|
207
|
+
seat (12 + 16) that everything in the panel aligns to — the pen icon's
|
|
208
|
+
box is the guide. Collapsed returns to --padding-200, which is what the
|
|
209
|
+
40px circle's math needs; the padding glides with the rail's sweep. */
|
|
210
|
+
.ds-thread-panel--expanded .ds-thread-panel__new,
|
|
211
|
+
.ds-thread-panel--expanded .ds-thread-panel__control,
|
|
212
|
+
.ds-thread-panel--expanded .ds-thread-panel__project,
|
|
213
|
+
.ds-thread-panel--expanded .ds-thread-panel__thread {
|
|
214
|
+
padding: var(--padding-200) var(--padding-400);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.ds-thread-panel__new:hover,
|
|
218
|
+
.ds-thread-panel__control:hover,
|
|
219
|
+
.ds-thread-panel__project:hover,
|
|
220
|
+
.ds-thread-panel__thread:hover {
|
|
221
|
+
background-color: var(--color-action-passive-bg-hover);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.ds-thread-panel__new:focus-visible,
|
|
225
|
+
.ds-thread-panel__control:focus-visible,
|
|
226
|
+
.ds-thread-panel__project:focus-visible,
|
|
227
|
+
.ds-thread-panel__projects-add:focus-visible,
|
|
228
|
+
.ds-thread-panel__thread:focus-visible,
|
|
229
|
+
.ds-thread-panel__more:focus-visible {
|
|
230
|
+
outline: 2px solid var(--color-action-primary-bg);
|
|
231
|
+
outline-offset: -2px;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* ============================================
|
|
235
|
+
NEW THREAD — the one filled action, always in reach
|
|
236
|
+
============================================ */
|
|
237
|
+
|
|
238
|
+
/* Deliberately as quiet as the control rows: the leading position and the
|
|
239
|
+
add glyph carry the affordance, not a fill. */
|
|
240
|
+
.ds-thread-panel__new {
|
|
241
|
+
flex: none;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.ds-thread-panel__new-icon {
|
|
245
|
+
--icon-size: var(--icon-size-600);
|
|
246
|
+
color: var(--color-icon-primary);
|
|
247
|
+
flex-shrink: 0;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.ds-thread-panel__new-label {
|
|
251
|
+
flex: 1;
|
|
252
|
+
min-width: 0;
|
|
253
|
+
overflow: hidden;
|
|
254
|
+
white-space: nowrap;
|
|
255
|
+
font-family: var(--font-paragraph-sm-emphasis-family);
|
|
256
|
+
font-size: var(--font-paragraph-sm-emphasis-size);
|
|
257
|
+
font-weight: var(--font-paragraph-sm-emphasis-weight);
|
|
258
|
+
line-height: var(--font-paragraph-sm-emphasis-line-height);
|
|
259
|
+
color: var(--color-text-primary);
|
|
260
|
+
opacity: 0;
|
|
261
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.ds-thread-panel--expanded .ds-thread-panel__new-label {
|
|
265
|
+
opacity: 1;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.ds-thread-panel__new-kbd {
|
|
269
|
+
display: inline-flex;
|
|
270
|
+
flex: none;
|
|
271
|
+
gap: var(--gap-050);
|
|
272
|
+
opacity: 0;
|
|
273
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.ds-thread-panel--expanded .ds-thread-panel__new-kbd {
|
|
277
|
+
opacity: 1;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/* ============================================
|
|
281
|
+
CONTROLS — quiet standing rows
|
|
282
|
+
============================================ */
|
|
283
|
+
|
|
284
|
+
.ds-thread-panel__controls {
|
|
285
|
+
display: flex;
|
|
286
|
+
flex-direction: column;
|
|
287
|
+
flex: none;
|
|
288
|
+
gap: var(--gap-100);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.ds-thread-panel__control-icon {
|
|
292
|
+
--icon-size: var(--icon-size-600);
|
|
293
|
+
color: var(--color-icon-primary);
|
|
294
|
+
flex-shrink: 0;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.ds-thread-panel__control-label {
|
|
298
|
+
flex: 1;
|
|
299
|
+
min-width: 0;
|
|
300
|
+
overflow: hidden;
|
|
301
|
+
white-space: nowrap;
|
|
302
|
+
font-family: var(--font-paragraph-sm-family);
|
|
303
|
+
font-size: var(--font-paragraph-sm-size);
|
|
304
|
+
font-weight: var(--font-paragraph-sm-weight);
|
|
305
|
+
line-height: var(--font-paragraph-sm-line-height);
|
|
306
|
+
color: var(--color-text-primary);
|
|
307
|
+
opacity: 0;
|
|
308
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.ds-thread-panel--expanded .ds-thread-panel__control-label {
|
|
312
|
+
opacity: 1;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/* ============================================
|
|
316
|
+
PROJECTS — standing rows under their own overline header
|
|
317
|
+
Rows share the controls' anatomy (icon circles while collapsed, labels
|
|
318
|
+
fading with the sweep); the header carries the section's name and the
|
|
319
|
+
quiet new-project button, and fades out whole while collapsed — the
|
|
320
|
+
rows' icons keep the section present on the rail.
|
|
321
|
+
============================================ */
|
|
322
|
+
|
|
323
|
+
.ds-thread-panel__projects {
|
|
324
|
+
display: flex;
|
|
325
|
+
flex-direction: column;
|
|
326
|
+
flex: none;
|
|
327
|
+
gap: var(--gap-050);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/* The group-label's seat and rhythm, with the add button balanced on the
|
|
331
|
+
trailing edge; the vertical inset shrinks to keep the 24px button from
|
|
332
|
+
growing the header past the label-only group rows below. */
|
|
333
|
+
.ds-thread-panel__projects-header {
|
|
334
|
+
display: flex;
|
|
335
|
+
align-items: center;
|
|
336
|
+
gap: var(--gap-200);
|
|
337
|
+
min-width: 0;
|
|
338
|
+
padding: var(--padding-150) var(--padding-200) var(--padding-150)
|
|
339
|
+
var(--padding-400);
|
|
340
|
+
opacity: 0;
|
|
341
|
+
visibility: hidden;
|
|
342
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
|
|
343
|
+
visibility 0s var(--motion-duration-base);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.ds-thread-panel--expanded .ds-thread-panel__projects-header {
|
|
347
|
+
opacity: 1;
|
|
348
|
+
visibility: visible;
|
|
349
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
|
|
350
|
+
visibility 0s;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.ds-thread-panel__projects-label {
|
|
354
|
+
flex: 1;
|
|
355
|
+
min-width: 0;
|
|
356
|
+
overflow: hidden;
|
|
357
|
+
white-space: nowrap;
|
|
358
|
+
font-family: var(--font-overline-family);
|
|
359
|
+
font-size: var(--font-overline-size);
|
|
360
|
+
font-weight: var(--font-overline-weight);
|
|
361
|
+
line-height: var(--font-overline-line-height);
|
|
362
|
+
letter-spacing: var(--font-overline-letter-spacing);
|
|
363
|
+
text-transform: uppercase;
|
|
364
|
+
color: var(--color-text-tertiary);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.ds-thread-panel__projects-add {
|
|
368
|
+
--icon-size: var(--icon-size-500);
|
|
369
|
+
display: flex;
|
|
370
|
+
align-items: center;
|
|
371
|
+
justify-content: center;
|
|
372
|
+
width: 24px;
|
|
373
|
+
height: 24px;
|
|
374
|
+
flex: none;
|
|
375
|
+
padding: 0;
|
|
376
|
+
border: none;
|
|
377
|
+
border-radius: var(--radius-pill);
|
|
378
|
+
background: transparent;
|
|
379
|
+
color: var(--color-icon-primary);
|
|
380
|
+
cursor: pointer;
|
|
381
|
+
transition: background-color var(--motion-duration-fast)
|
|
382
|
+
var(--motion-ease-standard);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.ds-thread-panel__projects-add:hover {
|
|
386
|
+
background-color: var(--color-bg-container-tertiary);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.ds-thread-panel__project--active {
|
|
390
|
+
background-color: var(--color-bg-container-tertiary);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.ds-thread-panel__project-icon {
|
|
394
|
+
--icon-size: var(--icon-size-600);
|
|
395
|
+
color: var(--color-icon-primary);
|
|
396
|
+
flex-shrink: 0;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.ds-thread-panel__project-label {
|
|
400
|
+
flex: 1;
|
|
401
|
+
min-width: 0;
|
|
402
|
+
overflow: hidden;
|
|
403
|
+
white-space: nowrap;
|
|
404
|
+
font-family: var(--font-paragraph-sm-family);
|
|
405
|
+
font-size: var(--font-paragraph-sm-size);
|
|
406
|
+
font-weight: var(--font-paragraph-sm-weight);
|
|
407
|
+
line-height: var(--font-paragraph-sm-line-height);
|
|
408
|
+
color: var(--color-text-primary);
|
|
409
|
+
opacity: 0;
|
|
410
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.ds-thread-panel--expanded .ds-thread-panel__project-label {
|
|
414
|
+
opacity: 1;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/* A project's meta fades with the labels — collapsed, the row is only its
|
|
418
|
+
icon circle. The label fades' pace, not the menu-fade's. */
|
|
419
|
+
.ds-thread-panel__project .ds-thread-panel__meta {
|
|
420
|
+
opacity: 0;
|
|
421
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.ds-thread-panel--expanded .ds-thread-panel__project .ds-thread-panel__meta {
|
|
425
|
+
opacity: 1;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/* ============================================
|
|
429
|
+
HISTORY — the one scrolling region
|
|
430
|
+
Threads have no icons, so unlike AppSidebar's nav the history has no
|
|
431
|
+
collapsed form: it fades out and leaves the accessibility tree and tab
|
|
432
|
+
order (visibility), holding the rail's middle open.
|
|
433
|
+
============================================ */
|
|
434
|
+
|
|
435
|
+
.ds-thread-panel__history {
|
|
436
|
+
flex: 1;
|
|
437
|
+
min-height: 0;
|
|
438
|
+
overflow-y: auto;
|
|
439
|
+
display: flex;
|
|
440
|
+
flex-direction: column;
|
|
441
|
+
gap: var(--gap-400);
|
|
442
|
+
padding-top: var(--padding-150);
|
|
443
|
+
/* Tucked-away scrollbar (ChatThread's manner, without its JS): thin, no
|
|
444
|
+
track fill, and invisible until the pointer is over the history. No
|
|
445
|
+
reserved gutter — it would hold the history's rows 10px narrower than
|
|
446
|
+
the action rows above on classic-scrollbar platforms, and the row
|
|
447
|
+
widths matching matters more than a rare reflow when a long history
|
|
448
|
+
first overflows. */
|
|
449
|
+
scrollbar-width: thin;
|
|
450
|
+
scrollbar-color: transparent transparent;
|
|
451
|
+
opacity: 0;
|
|
452
|
+
visibility: hidden;
|
|
453
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
|
|
454
|
+
visibility 0s var(--motion-duration-base);
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
.ds-thread-panel--expanded .ds-thread-panel__history {
|
|
458
|
+
opacity: 1;
|
|
459
|
+
visibility: visible;
|
|
460
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard),
|
|
461
|
+
visibility 0s;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
.ds-thread-panel__history:hover {
|
|
465
|
+
scrollbar-color: var(--color-divider) transparent;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
.ds-thread-panel__group {
|
|
469
|
+
display: flex;
|
|
470
|
+
flex-direction: column;
|
|
471
|
+
gap: var(--gap-050);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/* Aligned with the expanded rows' 28px optical seat. The vertical padding
|
|
475
|
+
is the rows' own inset restated — as if the label sat inside a row —
|
|
476
|
+
so the overline keeps the pills' rhythm instead of hugging the
|
|
477
|
+
new-thread row above and the first thread below. */
|
|
478
|
+
.ds-thread-panel__group-label {
|
|
479
|
+
padding: var(--padding-200) var(--padding-400);
|
|
480
|
+
overflow: hidden;
|
|
481
|
+
white-space: nowrap;
|
|
482
|
+
font-family: var(--font-overline-family);
|
|
483
|
+
font-size: var(--font-overline-size);
|
|
484
|
+
font-weight: var(--font-overline-weight);
|
|
485
|
+
line-height: var(--font-overline-line-height);
|
|
486
|
+
letter-spacing: var(--font-overline-letter-spacing);
|
|
487
|
+
text-transform: uppercase;
|
|
488
|
+
color: var(--color-text-tertiary);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
.ds-thread-panel__list {
|
|
492
|
+
margin: 0;
|
|
493
|
+
padding: 0;
|
|
494
|
+
list-style: none;
|
|
495
|
+
display: flex;
|
|
496
|
+
flex-direction: column;
|
|
497
|
+
/* A hairline of air between fills, so stacked hover and active pills
|
|
498
|
+
never read as one slab. */
|
|
499
|
+
gap: 1px;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/* Thread rows keep the shared 40px shape — no height override, so they
|
|
503
|
+
match the new-thread and control rows exactly. The <li> is the row's
|
|
504
|
+
frame: relative, so the overflow trigger can sit over the trailing
|
|
505
|
+
edge without living inside the row button (nested controls are
|
|
506
|
+
invalid markup). */
|
|
507
|
+
|
|
508
|
+
.ds-thread-panel__row {
|
|
509
|
+
position: relative;
|
|
510
|
+
min-width: 0;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.ds-thread-panel__thread--active {
|
|
514
|
+
background-color: var(--color-bg-container-tertiary);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/* A row with a description wraps to two lines: the title line keeps the
|
|
518
|
+
shared height's rhythm, the description takes the full second line, and
|
|
519
|
+
the row's gap becomes column-only so the lines sit close. */
|
|
520
|
+
.ds-thread-panel__thread--detailed {
|
|
521
|
+
height: auto;
|
|
522
|
+
min-height: 40px;
|
|
523
|
+
flex-wrap: wrap;
|
|
524
|
+
column-gap: var(--gap-200);
|
|
525
|
+
row-gap: 0;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/* The unread dot: a small status disc leading the title. Sized on the gap
|
|
529
|
+
scale — there is no icon token this small, and 8px matches the title's
|
|
530
|
+
cap height. */
|
|
531
|
+
.ds-thread-panel__unread {
|
|
532
|
+
flex: none;
|
|
533
|
+
width: var(--gap-200);
|
|
534
|
+
height: var(--gap-200);
|
|
535
|
+
border-radius: var(--radius-pill);
|
|
536
|
+
background-color: var(--color-status-info-icon);
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
.ds-thread-panel__title {
|
|
540
|
+
flex: 1;
|
|
541
|
+
min-width: 0;
|
|
542
|
+
overflow: hidden;
|
|
543
|
+
white-space: nowrap;
|
|
544
|
+
font-family: var(--font-paragraph-sm-family);
|
|
545
|
+
font-size: var(--font-paragraph-sm-size);
|
|
546
|
+
font-weight: var(--font-paragraph-sm-weight);
|
|
547
|
+
line-height: var(--font-paragraph-sm-line-height);
|
|
548
|
+
color: var(--color-text-primary);
|
|
549
|
+
/* A long title dissolves at the trailing edge instead of clipping to an
|
|
550
|
+
ellipsis — the fade is where the overflow trigger lands, so revealed
|
|
551
|
+
text and control never fight. Short titles end before the fade zone
|
|
552
|
+
and are untouched; the full text stays in the row's tooltip.
|
|
553
|
+
ds-allow(color): mask alpha keywords (black/transparent), not palette colours */
|
|
554
|
+
-webkit-mask-image: linear-gradient(
|
|
555
|
+
to right,
|
|
556
|
+
black calc(100% - var(--gap-1000)),
|
|
557
|
+
transparent
|
|
558
|
+
);
|
|
559
|
+
mask-image: linear-gradient(
|
|
560
|
+
to right,
|
|
561
|
+
black calc(100% - var(--gap-1000)),
|
|
562
|
+
transparent
|
|
563
|
+
);
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
/* The naming state: a shimmer bar holds the title's place while the host
|
|
567
|
+
generates a name (Skeleton's sweep restated on the row's own geometry);
|
|
568
|
+
the row's accessible name stays on its tooltip. */
|
|
569
|
+
.ds-thread-panel__title--pending {
|
|
570
|
+
display: flex;
|
|
571
|
+
align-items: center;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
.ds-thread-panel__title-shimmer {
|
|
575
|
+
display: block;
|
|
576
|
+
/* Full width of the title's space — the row's inline padding is the
|
|
577
|
+
only inset; the title mask softens its trailing end. */
|
|
578
|
+
width: 100%;
|
|
579
|
+
height: 0.75em;
|
|
580
|
+
border-radius: var(--radius-pill);
|
|
581
|
+
background-color: var(--color-bg-container-secondary);
|
|
582
|
+
position: relative;
|
|
583
|
+
overflow: hidden;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
.ds-thread-panel__title-shimmer::after {
|
|
587
|
+
content: '';
|
|
588
|
+
position: absolute;
|
|
589
|
+
inset: 0;
|
|
590
|
+
background: linear-gradient(
|
|
591
|
+
90deg,
|
|
592
|
+
transparent 0%,
|
|
593
|
+
var(--color-bg-container-primary) 50%,
|
|
594
|
+
transparent 100%
|
|
595
|
+
);
|
|
596
|
+
/* ds-allow(motion): Skeleton's shimmer — the sweep needs a symmetric
|
|
597
|
+
in-out curve no --motion-ease-* token provides; the duration is
|
|
598
|
+
tokenized. */
|
|
599
|
+
animation: ds-thread-panel-shimmer var(--motion-duration-loop-shimmer)
|
|
600
|
+
ease-in-out infinite;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
@keyframes ds-thread-panel-shimmer {
|
|
604
|
+
0% {
|
|
605
|
+
transform: translateX(-100%);
|
|
606
|
+
}
|
|
607
|
+
100% {
|
|
608
|
+
transform: translateX(100%);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/* The description line: the caption face on the full second line, fading
|
|
613
|
+
at the trailing edge like the title above it. Indented past the unread
|
|
614
|
+
dot's column so both lines share a left edge.
|
|
615
|
+
ds-allow(color): mask alpha keywords (black/transparent), not palette colours */
|
|
616
|
+
.ds-thread-panel__description {
|
|
617
|
+
flex-basis: 100%;
|
|
618
|
+
min-width: 0;
|
|
619
|
+
overflow: hidden;
|
|
620
|
+
white-space: nowrap;
|
|
621
|
+
font-family: var(--font-caption-family);
|
|
622
|
+
font-size: var(--font-caption-size);
|
|
623
|
+
font-weight: var(--font-caption-weight);
|
|
624
|
+
line-height: var(--font-caption-line-height);
|
|
625
|
+
color: var(--color-text-tertiary);
|
|
626
|
+
-webkit-mask-image: linear-gradient(
|
|
627
|
+
to right,
|
|
628
|
+
black calc(100% - var(--gap-1000)),
|
|
629
|
+
transparent
|
|
630
|
+
);
|
|
631
|
+
mask-image: linear-gradient(
|
|
632
|
+
to right,
|
|
633
|
+
black calc(100% - var(--gap-1000)),
|
|
634
|
+
transparent
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
.ds-thread-panel__thread--unread .ds-thread-panel__description {
|
|
639
|
+
/* The dot's width plus the row's column gap. */
|
|
640
|
+
margin-left: calc(var(--gap-200) + var(--gap-200));
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
/* The trailing cluster: session glyph, pin marker, and the meta caption,
|
|
644
|
+
fading together when the overflow trigger needs their edge. */
|
|
645
|
+
.ds-thread-panel__trail {
|
|
646
|
+
display: inline-flex;
|
|
647
|
+
flex: none;
|
|
648
|
+
align-items: center;
|
|
649
|
+
gap: var(--gap-100);
|
|
650
|
+
transition: opacity var(--motion-duration-fast) var(--motion-ease-standard);
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
.ds-thread-panel__thread-icon,
|
|
654
|
+
.ds-thread-panel__pin {
|
|
655
|
+
--icon-size: var(--icon-size-500);
|
|
656
|
+
flex: none;
|
|
657
|
+
color: var(--color-icon-secondary);
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
.ds-thread-panel__meta {
|
|
661
|
+
flex: none;
|
|
662
|
+
font-family: var(--font-caption-family);
|
|
663
|
+
font-size: var(--font-caption-size);
|
|
664
|
+
font-weight: var(--font-caption-weight);
|
|
665
|
+
line-height: var(--font-caption-line-height);
|
|
666
|
+
color: var(--color-text-tertiary);
|
|
667
|
+
font-variant-numeric: tabular-nums;
|
|
668
|
+
white-space: nowrap;
|
|
669
|
+
transition: opacity var(--motion-duration-fast) var(--motion-ease-standard);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/* ============================================
|
|
673
|
+
THREAD MENU — the hover-revealed overflow trigger
|
|
674
|
+
A 28px circular trigger over the row's faded trailing edge, opening the
|
|
675
|
+
compact DropdownMenu. Hidden until the row is hovered or holds keyboard
|
|
676
|
+
focus, and held while its menu is open — never standing on a resting
|
|
677
|
+
row. The meta caption steps aside as the trigger arrives, since they
|
|
678
|
+
share the trailing edge.
|
|
679
|
+
============================================ */
|
|
680
|
+
|
|
681
|
+
.ds-thread-panel__row .ds-thread-panel__menu {
|
|
682
|
+
position: absolute;
|
|
683
|
+
top: var(--padding-150);
|
|
684
|
+
right: var(--padding-150);
|
|
685
|
+
opacity: 0;
|
|
686
|
+
pointer-events: none;
|
|
687
|
+
transition: opacity var(--motion-duration-fast) var(--motion-ease-standard);
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
.ds-thread-panel__row:hover .ds-thread-panel__menu,
|
|
691
|
+
.ds-thread-panel__row:focus-within .ds-thread-panel__menu,
|
|
692
|
+
.ds-thread-panel__row .ds-thread-panel__menu:has([aria-expanded='true']) {
|
|
693
|
+
opacity: 1;
|
|
694
|
+
pointer-events: auto;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
.ds-thread-panel__row--with-menu:hover .ds-thread-panel__trail,
|
|
698
|
+
.ds-thread-panel__row--with-menu:focus-within .ds-thread-panel__trail,
|
|
699
|
+
.ds-thread-panel__row--with-menu:has([aria-expanded='true'])
|
|
700
|
+
.ds-thread-panel__trail {
|
|
701
|
+
opacity: 0;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
/* While the menu is open the pointer is off in the panel, so the row holds
|
|
705
|
+
its hover wash — the open menu and its row read as one thing. */
|
|
706
|
+
.ds-thread-panel__row:has(.ds-thread-panel__menu [aria-expanded='true'])
|
|
707
|
+
.ds-thread-panel__thread {
|
|
708
|
+
background-color: var(--color-action-passive-bg-hover);
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
.ds-thread-panel__menu-trigger {
|
|
712
|
+
--icon-size: var(--icon-size-500);
|
|
713
|
+
display: flex;
|
|
714
|
+
align-items: center;
|
|
715
|
+
justify-content: center;
|
|
716
|
+
width: 28px;
|
|
717
|
+
height: 28px;
|
|
718
|
+
padding: 0;
|
|
719
|
+
border: none;
|
|
720
|
+
border-radius: var(--radius-pill);
|
|
721
|
+
background: transparent;
|
|
722
|
+
color: var(--color-icon-primary);
|
|
723
|
+
cursor: pointer;
|
|
724
|
+
transition: background-color var(--motion-duration-fast)
|
|
725
|
+
var(--motion-ease-standard);
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
.ds-thread-panel__menu-trigger:hover {
|
|
729
|
+
background-color: var(--color-bg-container-tertiary);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
.ds-thread-panel__menu-trigger:focus-visible {
|
|
733
|
+
outline: 2px solid var(--color-action-primary-bg);
|
|
734
|
+
outline-offset: -2px;
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
/* ============================================
|
|
738
|
+
RENAME — the inline title editor
|
|
739
|
+
The input wears the row's exact shape and face; the teal border is the
|
|
740
|
+
active-input treatment, the one sanctioned "you are editing here" mark.
|
|
741
|
+
============================================ */
|
|
742
|
+
|
|
743
|
+
.ds-thread-panel__rename {
|
|
744
|
+
box-sizing: border-box;
|
|
745
|
+
width: 100%;
|
|
746
|
+
height: 40px;
|
|
747
|
+
min-width: 0;
|
|
748
|
+
padding: 0 var(--padding-400);
|
|
749
|
+
border: var(--border-025) solid var(--color-action-primary-bg);
|
|
750
|
+
border-radius: var(--radius-pill);
|
|
751
|
+
background-color: var(--color-bg-container-primary);
|
|
752
|
+
font-family: var(--font-paragraph-sm-family);
|
|
753
|
+
font-size: var(--font-paragraph-sm-size);
|
|
754
|
+
font-weight: var(--font-paragraph-sm-weight);
|
|
755
|
+
line-height: var(--font-paragraph-sm-line-height);
|
|
756
|
+
color: var(--color-text-primary);
|
|
757
|
+
outline: none;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
/* ============================================
|
|
761
|
+
MORE — the quiet trailing reveal
|
|
762
|
+
============================================ */
|
|
763
|
+
|
|
764
|
+
.ds-thread-panel__more {
|
|
765
|
+
align-self: flex-start;
|
|
766
|
+
padding: var(--padding-150) var(--padding-400);
|
|
767
|
+
border: none;
|
|
768
|
+
border-radius: var(--radius-pill);
|
|
769
|
+
background: transparent;
|
|
770
|
+
cursor: pointer;
|
|
771
|
+
white-space: nowrap;
|
|
772
|
+
font-family: var(--font-caption-family);
|
|
773
|
+
font-size: var(--font-caption-size);
|
|
774
|
+
font-weight: var(--font-caption-weight);
|
|
775
|
+
line-height: var(--font-caption-line-height);
|
|
776
|
+
color: var(--color-text-tertiary);
|
|
777
|
+
transition: color var(--motion-duration-fast) var(--motion-ease-standard);
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
.ds-thread-panel__more:hover {
|
|
781
|
+
color: var(--color-text-secondary);
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
/* ============================================
|
|
785
|
+
FOOTER — host furniture and the profile row
|
|
786
|
+
The slot fades out while collapsed (AppSidebar's contract); the profile
|
|
787
|
+
keeps its avatar, the texts fading with the labels above.
|
|
788
|
+
============================================ */
|
|
789
|
+
|
|
790
|
+
.ds-thread-panel__footer {
|
|
791
|
+
display: flex;
|
|
792
|
+
flex-direction: column;
|
|
793
|
+
flex: none;
|
|
794
|
+
gap: var(--gap-200);
|
|
795
|
+
min-width: 0;
|
|
796
|
+
/* Enough air that an overflowing history's last row never crowds the
|
|
797
|
+
profile — the footer is a different region, and the space says so. */
|
|
798
|
+
padding-top: var(--padding-200);
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
.ds-thread-panel__footer-slot {
|
|
802
|
+
min-width: 0;
|
|
803
|
+
overflow: hidden;
|
|
804
|
+
opacity: 0;
|
|
805
|
+
pointer-events: none;
|
|
806
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
.ds-thread-panel--expanded .ds-thread-panel__footer-slot {
|
|
810
|
+
opacity: 1;
|
|
811
|
+
pointer-events: auto;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
/* Same per-state seat as the header: collapsed, --padding-100 centres the
|
|
815
|
+
32px avatar on the rail's axis (12 + 4); expanded joins the 28px seat. */
|
|
816
|
+
.ds-thread-panel__profile {
|
|
817
|
+
display: flex;
|
|
818
|
+
align-items: center;
|
|
819
|
+
gap: var(--gap-200);
|
|
820
|
+
min-width: 0;
|
|
821
|
+
padding: var(--padding-100);
|
|
822
|
+
transition: padding var(--motion-duration-slow) var(--motion-ease-emphasized);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
.ds-thread-panel--expanded .ds-thread-panel__profile {
|
|
826
|
+
padding: var(--padding-100) var(--padding-400);
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
.ds-thread-panel__profile-name {
|
|
830
|
+
flex: 1;
|
|
831
|
+
min-width: 0;
|
|
832
|
+
overflow: hidden;
|
|
833
|
+
white-space: nowrap;
|
|
834
|
+
font-family: var(--font-paragraph-sm-emphasis-family);
|
|
835
|
+
font-size: var(--font-paragraph-sm-emphasis-size);
|
|
836
|
+
font-weight: var(--font-paragraph-sm-emphasis-weight);
|
|
837
|
+
line-height: var(--font-paragraph-sm-emphasis-line-height);
|
|
838
|
+
color: var(--color-text-primary);
|
|
839
|
+
opacity: 0;
|
|
840
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
.ds-thread-panel--expanded .ds-thread-panel__profile-name {
|
|
844
|
+
opacity: 1;
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
.ds-thread-panel__profile-meta {
|
|
848
|
+
flex: none;
|
|
849
|
+
overflow: hidden;
|
|
850
|
+
white-space: nowrap;
|
|
851
|
+
font-family: var(--font-caption-family);
|
|
852
|
+
font-size: var(--font-caption-size);
|
|
853
|
+
font-weight: var(--font-caption-weight);
|
|
854
|
+
line-height: var(--font-caption-line-height);
|
|
855
|
+
color: var(--color-text-tertiary);
|
|
856
|
+
opacity: 0;
|
|
857
|
+
transition: opacity var(--motion-duration-base) var(--motion-ease-standard);
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
.ds-thread-panel--expanded .ds-thread-panel__profile-meta {
|
|
861
|
+
opacity: 1;
|
|
862
|
+
}
|