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,120 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
GAUGE COMPONENT
|
|
3
|
+
Radial dial for a single bounded reading.
|
|
4
|
+
Card chrome, header, and padding come from
|
|
5
|
+
the shared chart styles (Chart.css) — this
|
|
6
|
+
file owns the dial alone. Colour flows
|
|
7
|
+
through `color`: the value arc draws with
|
|
8
|
+
currentColor, so a tone is one custom
|
|
9
|
+
property swap.
|
|
10
|
+
============================================ */
|
|
11
|
+
|
|
12
|
+
/* Base — the dial centres in the shared chart body */
|
|
13
|
+
|
|
14
|
+
.ds-gauge__body {
|
|
15
|
+
display: flex;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Unlike the fluid recharts bodies, the dial has intrinsic size — a bare
|
|
20
|
+
gauge shrink-wraps it so it sits inline in a Stat row or tile. */
|
|
21
|
+
.ds-gauge.ds-chart--bare {
|
|
22
|
+
width: auto;
|
|
23
|
+
display: inline-flex;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ds-gauge__dial {
|
|
27
|
+
position: relative;
|
|
28
|
+
display: inline-flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
flex-shrink: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.ds-gauge__svg {
|
|
35
|
+
display: block;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Parts */
|
|
39
|
+
|
|
40
|
+
.ds-gauge__track {
|
|
41
|
+
fill: none;
|
|
42
|
+
stroke: var(--color-bg-container-tertiary);
|
|
43
|
+
stroke-linecap: round;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.ds-gauge__arc {
|
|
47
|
+
fill: none;
|
|
48
|
+
stroke: currentColor;
|
|
49
|
+
stroke-linecap: round;
|
|
50
|
+
transition: stroke-dasharray var(--motion-duration-slow) var(--motion-ease-emphasized);
|
|
51
|
+
/* Sweep in from an empty dial on mount — the single keyframe animates to
|
|
52
|
+
the element's own dasharray, so one rule serves every reading. The
|
|
53
|
+
duration tokens collapse under reduced motion, guarding this for free. */
|
|
54
|
+
animation: ds-gauge-sweep var(--motion-duration-slower) var(--motion-ease-emphasized);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@keyframes ds-gauge-sweep {
|
|
58
|
+
from {
|
|
59
|
+
stroke-dasharray: 0 100;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.ds-gauge__center {
|
|
64
|
+
position: absolute;
|
|
65
|
+
inset: 0;
|
|
66
|
+
display: flex;
|
|
67
|
+
flex-direction: column;
|
|
68
|
+
align-items: center;
|
|
69
|
+
justify-content: center;
|
|
70
|
+
gap: var(--gap-050);
|
|
71
|
+
text-align: center;
|
|
72
|
+
pointer-events: none;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* The centre pair mirrors the chart family's radial centre label:
|
|
76
|
+
a light sub-display numeral over a caption. */
|
|
77
|
+
|
|
78
|
+
.ds-gauge__value {
|
|
79
|
+
font-family: var(--font-sub-display-family);
|
|
80
|
+
font-size: var(--font-sub-display-size);
|
|
81
|
+
font-weight: var(--font-sub-display-weight);
|
|
82
|
+
line-height: var(--font-sub-display-line-height);
|
|
83
|
+
letter-spacing: var(--font-sub-display-letter-spacing);
|
|
84
|
+
color: var(--color-text-primary);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.ds-gauge__label {
|
|
88
|
+
font-family: var(--font-caption-family);
|
|
89
|
+
font-size: var(--font-caption-size);
|
|
90
|
+
font-weight: var(--font-caption-weight);
|
|
91
|
+
line-height: var(--font-caption-line-height);
|
|
92
|
+
letter-spacing: var(--font-caption-letter-spacing);
|
|
93
|
+
color: var(--color-text-secondary);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Tones */
|
|
97
|
+
|
|
98
|
+
.ds-gauge--accent {
|
|
99
|
+
color: var(--color-chart-series-1);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* The status hues come from the border tokens, not the text tokens: the
|
|
103
|
+
border set is stable across themes, while the dark-mode text tints are
|
|
104
|
+
near-white and would wash three tones into one. */
|
|
105
|
+
|
|
106
|
+
.ds-gauge--positive {
|
|
107
|
+
color: var(--color-status-positive-border);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.ds-gauge--warning {
|
|
111
|
+
color: var(--color-status-warning-border);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.ds-gauge--error {
|
|
115
|
+
color: var(--color-status-error-border);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.ds-gauge--neutral {
|
|
119
|
+
color: var(--color-text-secondary);
|
|
120
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/** One colour switch point: at or above `value`, the dial takes `tone`. */
|
|
3
|
+
export interface GaugeThreshold {
|
|
4
|
+
/** Reading at which this tone takes over. */
|
|
5
|
+
value: number;
|
|
6
|
+
/** Tone applied from this reading upward. */
|
|
7
|
+
tone: 'accent' | 'positive' | 'warning' | 'error' | 'neutral';
|
|
8
|
+
}
|
|
9
|
+
/** Props owned by Gauge itself — everything else falls through to the root div. */
|
|
10
|
+
type GaugeOwnProps = {
|
|
11
|
+
/** Current reading. Clamped into the `min`–`max` range for drawing. */
|
|
12
|
+
value: number;
|
|
13
|
+
/** Lower bound of the dial. */
|
|
14
|
+
min?: number;
|
|
15
|
+
/** Upper bound of the dial. */
|
|
16
|
+
max?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Colour role for the value arc. `accent` (the default) follows the chart
|
|
19
|
+
* palette's lead colour. Ignored while a threshold matches — thresholds
|
|
20
|
+
* exist so the dial recolours itself as the reading crosses them.
|
|
21
|
+
*/
|
|
22
|
+
tone?: 'accent' | 'positive' | 'warning' | 'error' | 'neutral';
|
|
23
|
+
/**
|
|
24
|
+
* Colour switch points, e.g. warning at 70 and error at 90. The highest
|
|
25
|
+
* threshold at or below the current reading wins; below them all, the
|
|
26
|
+
* `tone` prop applies.
|
|
27
|
+
*/
|
|
28
|
+
thresholds?: GaugeThreshold[];
|
|
29
|
+
/** Shows the reading in the centre of the dial. */
|
|
30
|
+
showValue?: boolean;
|
|
31
|
+
/** Formats the centre reading — for units, precision, or locale. */
|
|
32
|
+
formatValue?: (value: number) => string;
|
|
33
|
+
/**
|
|
34
|
+
* What the reading measures, shown as a caption under it and used as the
|
|
35
|
+
* accessible name, e.g. "CPU usage".
|
|
36
|
+
*/
|
|
37
|
+
label?: string;
|
|
38
|
+
/** Chart title, in the shared chart header. */
|
|
39
|
+
title?: string;
|
|
40
|
+
/** Description text below the title. */
|
|
41
|
+
subtitle?: string;
|
|
42
|
+
/** Strip the card chrome (border, padding, fill) when the chart sits inside another panel that supplies the surface */
|
|
43
|
+
bare?: boolean;
|
|
44
|
+
/** Rendered dial diameter in pixels. The arc geometry scales with it. */
|
|
45
|
+
size?: number;
|
|
46
|
+
/** Arc thickness in pixels. */
|
|
47
|
+
strokeWidth?: number;
|
|
48
|
+
/** Additional CSS classes */
|
|
49
|
+
className?: string;
|
|
50
|
+
};
|
|
51
|
+
export interface GaugeProps extends GaugeOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof GaugeOwnProps | 'children'> {
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gauge — a radial dial for a single bounded reading: capacity, usage, a
|
|
55
|
+
* score against a target. Pure SVG computed from props — no charting library,
|
|
56
|
+
* no hooks — so it renders from a Server Component. It wears the chart
|
|
57
|
+
* family's card chrome (title, subtitle, padding) and takes `bare` to drop
|
|
58
|
+
* it inside a Panel, like every other chart. Thresholds recolour the dial
|
|
59
|
+
* through the status roles as the reading crosses them, and the arc animates
|
|
60
|
+
* between readings via a CSS transition. The dial is announced as a `meter`
|
|
61
|
+
* with the label as its accessible name.
|
|
62
|
+
*/
|
|
63
|
+
export declare const Gauge: React.ForwardRefExoticComponent<GaugeProps & React.RefAttributes<HTMLDivElement>>;
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import "../Chart/Chart.css";
|
|
4
|
+
import "./Gauge.css";
|
|
5
|
+
const SWEEP_UNITS = 75;
|
|
6
|
+
const Gauge = React.forwardRef(
|
|
7
|
+
({
|
|
8
|
+
value,
|
|
9
|
+
min = 0,
|
|
10
|
+
max = 100,
|
|
11
|
+
tone = "accent",
|
|
12
|
+
thresholds,
|
|
13
|
+
showValue = true,
|
|
14
|
+
formatValue,
|
|
15
|
+
label,
|
|
16
|
+
title,
|
|
17
|
+
subtitle,
|
|
18
|
+
bare = false,
|
|
19
|
+
size = 120,
|
|
20
|
+
strokeWidth = 12,
|
|
21
|
+
className = "",
|
|
22
|
+
...rest
|
|
23
|
+
}, ref) => {
|
|
24
|
+
const baseClass = "ds-gauge";
|
|
25
|
+
const chartClass = "ds-chart";
|
|
26
|
+
const range = max - min;
|
|
27
|
+
const fraction = range > 0 ? Math.min(Math.max((value - min) / range, 0), 1) : 0;
|
|
28
|
+
const activeThreshold = thresholds?.filter((t) => value >= t.value).sort((a, b) => b.value - a.value)[0];
|
|
29
|
+
const resolvedTone = activeThreshold?.tone ?? tone;
|
|
30
|
+
const classes = [
|
|
31
|
+
chartClass,
|
|
32
|
+
bare && `${chartClass}--bare`,
|
|
33
|
+
baseClass,
|
|
34
|
+
`${baseClass}--${resolvedTone}`,
|
|
35
|
+
className
|
|
36
|
+
].filter(Boolean).join(" ");
|
|
37
|
+
const radius = (size - strokeWidth) / 2;
|
|
38
|
+
const center = size / 2;
|
|
39
|
+
const valueUnits = Math.round(SWEEP_UNITS * fraction * 100) / 100;
|
|
40
|
+
const displayValue = formatValue ? formatValue(value) : String(Math.round(value));
|
|
41
|
+
const { "aria-label": restAriaLabel, ...restProps } = rest;
|
|
42
|
+
return /* @__PURE__ */ jsxs("div", { ...restProps, ref, className: classes, children: [
|
|
43
|
+
(title || subtitle) && /* @__PURE__ */ jsx("div", { className: `${chartClass}__header`, children: /* @__PURE__ */ jsxs("div", { className: `${chartClass}__header-text`, children: [
|
|
44
|
+
title && /* @__PURE__ */ jsx("h3", { className: `${chartClass}__title`, children: title }),
|
|
45
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: `${chartClass}__subtitle`, children: subtitle })
|
|
46
|
+
] }) }),
|
|
47
|
+
/* @__PURE__ */ jsx("div", { className: `${chartClass}__body ${baseClass}__body`, children: /* @__PURE__ */ jsxs(
|
|
48
|
+
"div",
|
|
49
|
+
{
|
|
50
|
+
className: `${baseClass}__dial`,
|
|
51
|
+
style: { width: size, height: size },
|
|
52
|
+
role: "meter",
|
|
53
|
+
"aria-valuenow": value,
|
|
54
|
+
"aria-valuemin": min,
|
|
55
|
+
"aria-valuemax": max,
|
|
56
|
+
"aria-valuetext": displayValue,
|
|
57
|
+
"aria-label": label ?? restAriaLabel,
|
|
58
|
+
children: [
|
|
59
|
+
/* @__PURE__ */ jsxs(
|
|
60
|
+
"svg",
|
|
61
|
+
{
|
|
62
|
+
className: `${baseClass}__svg`,
|
|
63
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
64
|
+
width: size,
|
|
65
|
+
height: size,
|
|
66
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
67
|
+
"aria-hidden": "true",
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ jsx(
|
|
70
|
+
"circle",
|
|
71
|
+
{
|
|
72
|
+
className: `${baseClass}__track`,
|
|
73
|
+
cx: center,
|
|
74
|
+
cy: center,
|
|
75
|
+
r: radius,
|
|
76
|
+
pathLength: 100,
|
|
77
|
+
strokeWidth,
|
|
78
|
+
strokeDasharray: `${SWEEP_UNITS} ${100 - SWEEP_UNITS}`,
|
|
79
|
+
transform: `rotate(135 ${center} ${center})`
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
valueUnits > 0 && /* @__PURE__ */ jsx(
|
|
83
|
+
"circle",
|
|
84
|
+
{
|
|
85
|
+
className: `${baseClass}__arc`,
|
|
86
|
+
cx: center,
|
|
87
|
+
cy: center,
|
|
88
|
+
r: radius,
|
|
89
|
+
pathLength: 100,
|
|
90
|
+
strokeWidth,
|
|
91
|
+
strokeDasharray: `${valueUnits} ${100 - valueUnits}`,
|
|
92
|
+
transform: `rotate(135 ${center} ${center})`
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
),
|
|
98
|
+
(showValue || label) && /* @__PURE__ */ jsxs("div", { className: `${baseClass}__center`, children: [
|
|
99
|
+
showValue && /* @__PURE__ */ jsx("span", { className: `${baseClass}__value`, children: displayValue }),
|
|
100
|
+
label && /* @__PURE__ */ jsx("span", { className: `${baseClass}__label`, children: label })
|
|
101
|
+
] })
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
) })
|
|
105
|
+
] });
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
Gauge.displayName = "Gauge";
|
|
109
|
+
export {
|
|
110
|
+
Gauge
|
|
111
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/* ============================================
|
|
2
|
+
GLOBE COMPONENT
|
|
3
|
+
An orthographic globe: graticule, markers and
|
|
4
|
+
great-circle arcs. Every colour is a token; the
|
|
5
|
+
stroke widths are SVG geometry in viewBox units,
|
|
6
|
+
like Sparkline's, and scale with the drawing.
|
|
7
|
+
============================================ */
|
|
8
|
+
|
|
9
|
+
/* Base */
|
|
10
|
+
|
|
11
|
+
.ds-globe {
|
|
12
|
+
position: relative;
|
|
13
|
+
display: block;
|
|
14
|
+
width: 100%;
|
|
15
|
+
aspect-ratio: 1;
|
|
16
|
+
color: var(--color-text-primary);
|
|
17
|
+
border-radius: var(--radius-300);
|
|
18
|
+
outline: none;
|
|
19
|
+
touch-action: none;
|
|
20
|
+
user-select: none;
|
|
21
|
+
-webkit-user-select: none;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.ds-globe:focus-visible {
|
|
25
|
+
outline: var(--border-050) solid var(--color-action-primary-bg);
|
|
26
|
+
outline-offset: var(--padding-100);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.ds-globe--interactive {
|
|
30
|
+
cursor: grab;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.ds-globe--dragging {
|
|
34
|
+
cursor: grabbing;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.ds-globe__svg {
|
|
38
|
+
display: block;
|
|
39
|
+
width: 100%;
|
|
40
|
+
height: 100%;
|
|
41
|
+
overflow: visible;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Sphere */
|
|
45
|
+
|
|
46
|
+
.ds-globe__limb {
|
|
47
|
+
fill: none;
|
|
48
|
+
stroke: var(--color-text-tertiary);
|
|
49
|
+
stroke-width: 1;
|
|
50
|
+
opacity: 0.6;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.ds-globe__graticule {
|
|
54
|
+
fill: none;
|
|
55
|
+
stroke: var(--color-divider);
|
|
56
|
+
stroke-width: 1;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.ds-globe__graticule-back {
|
|
60
|
+
fill: none;
|
|
61
|
+
stroke: var(--color-divider);
|
|
62
|
+
stroke-width: 1;
|
|
63
|
+
stroke-dasharray: 2 4;
|
|
64
|
+
opacity: 0.5;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Arcs — the default gradient runs along the cobalt-to-violet end of the
|
|
68
|
+
chart series; a per-arc `color` replaces it with a flat stroke. */
|
|
69
|
+
|
|
70
|
+
.ds-globe__arc-stop-start {
|
|
71
|
+
stop-color: var(--color-chart-series-7);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.ds-globe__arc-stop-end {
|
|
75
|
+
stop-color: var(--color-chart-series-5);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.ds-globe__arc {
|
|
79
|
+
fill: none;
|
|
80
|
+
stroke-width: 1.5;
|
|
81
|
+
stroke-linecap: round;
|
|
82
|
+
stroke-linejoin: round;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.ds-globe__arc-back {
|
|
86
|
+
fill: none;
|
|
87
|
+
stroke-width: 1;
|
|
88
|
+
stroke-linecap: round;
|
|
89
|
+
opacity: 0.15;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Markers */
|
|
93
|
+
|
|
94
|
+
.ds-globe__point {
|
|
95
|
+
color: var(--color-text-secondary);
|
|
96
|
+
transition: color var(--motion-duration-fast) var(--motion-ease-standard);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.ds-globe__point--back {
|
|
100
|
+
opacity: 0.3;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.ds-globe__point--active,
|
|
104
|
+
.ds-globe__point:hover {
|
|
105
|
+
color: var(--color-text-primary);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.ds-globe__hit {
|
|
109
|
+
fill: transparent;
|
|
110
|
+
stroke: none;
|
|
111
|
+
pointer-events: all;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.ds-globe--interactive .ds-globe__point {
|
|
115
|
+
cursor: pointer;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.ds-globe__glyph {
|
|
119
|
+
fill: none;
|
|
120
|
+
stroke: currentColor;
|
|
121
|
+
stroke-width: 1.5;
|
|
122
|
+
stroke-linecap: round;
|
|
123
|
+
transform-box: fill-box;
|
|
124
|
+
transform-origin: center;
|
|
125
|
+
transition: transform var(--motion-duration-fast) var(--motion-ease-emphasized);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.ds-globe__point--active .ds-globe__glyph {
|
|
129
|
+
transform: scale(1.4);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.ds-globe__label {
|
|
133
|
+
font-family: var(--font-family-code);
|
|
134
|
+
font-size: var(--font-caption-size);
|
|
135
|
+
fill: var(--color-text-tertiary);
|
|
136
|
+
pointer-events: none;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.ds-globe__point--active .ds-globe__label {
|
|
140
|
+
fill: var(--color-text-primary);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* Callout overlay — positioned at the marker, opening away from the centre. */
|
|
144
|
+
|
|
145
|
+
.ds-globe__callout {
|
|
146
|
+
position: absolute;
|
|
147
|
+
pointer-events: none;
|
|
148
|
+
padding: 0 var(--padding-400);
|
|
149
|
+
transform: translate(0, -100%);
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.ds-globe__callout[data-side='left'] {
|
|
154
|
+
transform: translate(-100%, -100%);
|
|
155
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/** A place on the globe. */
|
|
3
|
+
export interface GlobePoint {
|
|
4
|
+
/** Stable identifier, referenced by arcs and by `activePointId`. */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Latitude in degrees, north positive. */
|
|
7
|
+
lat: number;
|
|
8
|
+
/** Longitude in degrees, east positive. */
|
|
9
|
+
lng: number;
|
|
10
|
+
/** Short label drawn beside the marker when `showLabels` is on. */
|
|
11
|
+
label?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Marker glyph. `point` is a cross (something that moves or listens),
|
|
14
|
+
* `anchor` is a square (something fixed). The glyph is the only difference.
|
|
15
|
+
*/
|
|
16
|
+
kind?: 'point' | 'anchor';
|
|
17
|
+
/**
|
|
18
|
+
* Marker colour, any CSS colour (`var(--color-status-warning-border)`
|
|
19
|
+
* works) — the same per-point channel WorldMap carries, so one dataset
|
|
20
|
+
* keys identically on both projections. Omit for the text-ramp default;
|
|
21
|
+
* a coloured marker keeps its colour on hover instead of brightening.
|
|
22
|
+
*/
|
|
23
|
+
color?: string;
|
|
24
|
+
}
|
|
25
|
+
/** A great-circle arc between two points. */
|
|
26
|
+
export interface GlobeArc {
|
|
27
|
+
/** `id` of the point the arc leaves. */
|
|
28
|
+
from: string;
|
|
29
|
+
/** `id` of the point the arc reaches. */
|
|
30
|
+
to: string;
|
|
31
|
+
/**
|
|
32
|
+
* Stroke colour, any CSS colour (`var(--color-chart-series-3)` works).
|
|
33
|
+
* Omit for the default cobalt-to-violet gradient along the arc.
|
|
34
|
+
*/
|
|
35
|
+
color?: string;
|
|
36
|
+
/** How far the arc lifts off the surface at its midpoint, as a fraction of the radius. */
|
|
37
|
+
altitude?: number;
|
|
38
|
+
}
|
|
39
|
+
/** Where the globe is looking: `[longitude, latitude]` of the centre, in degrees. */
|
|
40
|
+
export type GlobeRotation = [number, number];
|
|
41
|
+
/** Props owned by Globe itself — everything else falls through to the root `<div>`. */
|
|
42
|
+
type GlobeOwnProps = {
|
|
43
|
+
/** The places to mark. */
|
|
44
|
+
points?: GlobePoint[];
|
|
45
|
+
/** The arcs to draw between them. An arc whose endpoint is not in `points` is skipped. */
|
|
46
|
+
arcs?: GlobeArc[];
|
|
47
|
+
/**
|
|
48
|
+
* Controlled view: `[longitude, latitude]` of the centre, in degrees.
|
|
49
|
+
* Pair with `onRotationChange`. Omit to let the globe own its rotation.
|
|
50
|
+
*/
|
|
51
|
+
rotation?: GlobeRotation;
|
|
52
|
+
/** Initial view when uncontrolled. */
|
|
53
|
+
defaultRotation?: GlobeRotation;
|
|
54
|
+
/** Fires whenever the view changes — drag, keys, or the auto-rotation. */
|
|
55
|
+
onRotationChange?: (rotation: GlobeRotation) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Spin slowly on its own, in degrees per second. Pauses while the pointer
|
|
58
|
+
* is over the globe or it has focus, and never runs under
|
|
59
|
+
* `prefers-reduced-motion`. `0` switches it off.
|
|
60
|
+
*/
|
|
61
|
+
autoRotate?: number;
|
|
62
|
+
/** Drag to rotate, and rotate with the arrow keys (or W, A, S, D) when focused. */
|
|
63
|
+
interactive?: boolean;
|
|
64
|
+
/** Degrees between graticule lines. `0` removes the graticule. */
|
|
65
|
+
graticuleStep?: number;
|
|
66
|
+
/** Draw each point's `label` beside its marker. */
|
|
67
|
+
showLabels?: boolean;
|
|
68
|
+
/** The point to single out: its marker enlarges and its callout renders. */
|
|
69
|
+
activePointId?: string;
|
|
70
|
+
/** Fires as the pointer enters a marker, and with `null` as it leaves. */
|
|
71
|
+
onPointHover?: (point: GlobePoint | null) => void;
|
|
72
|
+
/** Fires when a marker is clicked. */
|
|
73
|
+
onPointClick?: (point: GlobePoint) => void;
|
|
74
|
+
/**
|
|
75
|
+
* Renders the annotation for the active (or hovered) point. It is placed
|
|
76
|
+
* beside the marker in an HTML overlay, so any markup works; MapCallout is
|
|
77
|
+
* the intended filling. The overlay carries `data-side="left"|"right"` for
|
|
78
|
+
* which side of the marker it sits on.
|
|
79
|
+
*/
|
|
80
|
+
renderCallout?: (point: GlobePoint) => React.ReactNode;
|
|
81
|
+
/**
|
|
82
|
+
* Accessible name for the globe, e.g. "Listening points across the
|
|
83
|
+
* network". The point and arc counts are appended for screen readers.
|
|
84
|
+
*/
|
|
85
|
+
label?: string;
|
|
86
|
+
/** Additional CSS classes */
|
|
87
|
+
className?: string;
|
|
88
|
+
};
|
|
89
|
+
export interface GlobeProps extends GlobeOwnProps, Omit<React.ComponentPropsWithoutRef<'div'>, keyof GlobeOwnProps | 'children'> {
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Globe — an orthographic globe drawn in SVG, for showing where things are
|
|
93
|
+
* and what connects them: a graticule, markers at lat/lng, and great-circle
|
|
94
|
+
* arcs between them. No map library, no tile server, no land data; the
|
|
95
|
+
* graticule alone gives the sphere its shape, which is the point — this is
|
|
96
|
+
* for the geometry of a network, not for navigation.
|
|
97
|
+
*
|
|
98
|
+
* Colour comes from the tokens: the graticule in the divider colour, markers
|
|
99
|
+
* in the text colours, arcs along the cobalt-to-violet chart series. Rotate
|
|
100
|
+
* it by dragging, with the arrow keys when focused, or let it turn on its own.
|
|
101
|
+
*/
|
|
102
|
+
export declare const Globe: React.ForwardRefExoticComponent<GlobeProps & React.RefAttributes<HTMLDivElement>>;
|
|
103
|
+
export {};
|