sdaia-ui 1.0.1
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/README.md +89 -0
- package/dist/PlayVideoIcon-BM-4pwUd.d.cts +7 -0
- package/dist/PlayVideoIcon-BM-4pwUd.d.ts +7 -0
- package/dist/dga-icons.cjs +14 -0
- package/dist/dga-icons.cjs.map +1 -0
- package/dist/dga-icons.d.cts +1 -0
- package/dist/dga-icons.d.ts +1 -0
- package/dist/dga-icons.js +3 -0
- package/dist/dga-icons.js.map +1 -0
- package/dist/icons.cjs +4014 -0
- package/dist/icons.cjs.map +1 -0
- package/dist/icons.d.cts +756 -0
- package/dist/icons.d.ts +756 -0
- package/dist/icons.js +3871 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.cjs +43620 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +9407 -0
- package/dist/index.d.ts +9407 -0
- package/dist/index.js +43411 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +242 -0
- package/package.json +65 -0
- package/src/components/Accordion/Accordion.tsx +207 -0
- package/src/components/Accordion/Accordion.types.ts +36 -0
- package/src/components/Accordion/Accordion.variants.ts +283 -0
- package/src/components/Accordion/index.ts +9 -0
- package/src/components/ActionBar/ActionBar.tsx +192 -0
- package/src/components/ActionBar/ActionBar.types.ts +67 -0
- package/src/components/ActionBar/ActionBar.variants.ts +95 -0
- package/src/components/ActionBar/index.ts +8 -0
- package/src/components/Activity/Activity.tsx +52 -0
- package/src/components/Activity/Activity.types.ts +19 -0
- package/src/components/Activity/Activity.variants.ts +15 -0
- package/src/components/Activity/index.ts +2 -0
- package/src/components/ActivityItem/ActivityItem.tsx +298 -0
- package/src/components/ActivityItem/ActivityItem.types.ts +76 -0
- package/src/components/ActivityItem/ActivityItem.variants.ts +117 -0
- package/src/components/ActivityItem/index.ts +8 -0
- package/src/components/Alert/Alert.tsx +183 -0
- package/src/components/Alert/Alert.types.ts +34 -0
- package/src/components/Alert/Alert.variants.ts +168 -0
- package/src/components/Alert/index.ts +2 -0
- package/src/components/AreaChart/AreaChart.tsx +454 -0
- package/src/components/AreaChart/AreaChart.types.ts +117 -0
- package/src/components/AreaChart/AreaChart.variants.ts +202 -0
- package/src/components/AreaChart/index.ts +2 -0
- package/src/components/AspectRatio/AspectRatio.tsx +36 -0
- package/src/components/AspectRatio/AspectRatio.types.ts +33 -0
- package/src/components/AspectRatio/AspectRatio.variants.ts +42 -0
- package/src/components/AspectRatio/index.ts +2 -0
- package/src/components/AudioPlayer/AudioPlayer.tsx +294 -0
- package/src/components/AudioPlayer/AudioPlayer.types.ts +64 -0
- package/src/components/AudioPlayer/AudioPlayer.variants.ts +225 -0
- package/src/components/AudioPlayer/index.ts +2 -0
- package/src/components/Autocomplete/Autocomplete.tsx +353 -0
- package/src/components/Autocomplete/Autocomplete.types.ts +93 -0
- package/src/components/Autocomplete/Autocomplete.variants.ts +149 -0
- package/src/components/Autocomplete/index.ts +6 -0
- package/src/components/Avatar/Avatar.tsx +168 -0
- package/src/components/Avatar/Avatar.types.ts +36 -0
- package/src/components/Avatar/Avatar.variants.ts +102 -0
- package/src/components/Avatar/index.ts +7 -0
- package/src/components/AvatarGroup/AvatarGroup.tsx +87 -0
- package/src/components/AvatarGroup/AvatarGroup.types.ts +44 -0
- package/src/components/AvatarGroup/AvatarGroup.variants.ts +17 -0
- package/src/components/AvatarGroup/index.ts +6 -0
- package/src/components/Badge/Badge.tsx +74 -0
- package/src/components/Badge/Badge.types.ts +31 -0
- package/src/components/Badge/Badge.variants.ts +83 -0
- package/src/components/Badge/index.ts +2 -0
- package/src/components/Bar/Bar.tsx +57 -0
- package/src/components/Bar/Bar.types.ts +18 -0
- package/src/components/Bar/Bar.variants.ts +20 -0
- package/src/components/Bar/index.ts +2 -0
- package/src/components/BarChart/BarChart.tsx +179 -0
- package/src/components/BarChart/BarChart.types.ts +72 -0
- package/src/components/BarChart/BarChart.variants.ts +134 -0
- package/src/components/BarChart/index.ts +2 -0
- package/src/components/BarGroup/BarGroup.tsx +119 -0
- package/src/components/BarGroup/BarGroup.types.ts +50 -0
- package/src/components/BarGroup/BarGroup.variants.ts +76 -0
- package/src/components/BarGroup/index.ts +2 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +137 -0
- package/src/components/Breadcrumb/Breadcrumb.types.ts +21 -0
- package/src/components/Breadcrumb/BreadcrumbItem.tsx +267 -0
- package/src/components/Breadcrumb/BreadcrumbItem.types.ts +66 -0
- package/src/components/Breadcrumb/BreadcrumbItem.variants.ts +102 -0
- package/src/components/Breadcrumb/index.ts +12 -0
- package/src/components/Button/Button.tsx +100 -0
- package/src/components/Button/Button.types.ts +44 -0
- package/src/components/Button/Button.variants.ts +183 -0
- package/src/components/Button/index.ts +2 -0
- package/src/components/ButtonClose/ButtonClose.tsx +57 -0
- package/src/components/ButtonClose/ButtonClose.types.ts +18 -0
- package/src/components/ButtonClose/ButtonClose.variants.ts +72 -0
- package/src/components/ButtonClose/index.ts +2 -0
- package/src/components/ButtonGroup/ButtonGroup.tsx +127 -0
- package/src/components/ButtonGroup/ButtonGroup.types.ts +51 -0
- package/src/components/ButtonGroup/ButtonGroup.variants.ts +65 -0
- package/src/components/ButtonGroup/index.ts +2 -0
- package/src/components/ButtonMenu/ButtonMenu.tsx +73 -0
- package/src/components/ButtonMenu/ButtonMenu.types.ts +43 -0
- package/src/components/ButtonMenu/ButtonMenu.variants.ts +18 -0
- package/src/components/ButtonMenu/index.ts +2 -0
- package/src/components/ButtonSplit/ButtonSplit.tsx +344 -0
- package/src/components/ButtonSplit/ButtonSplit.types.ts +95 -0
- package/src/components/ButtonSplit/ButtonSplit.variants.ts +165 -0
- package/src/components/ButtonSplit/index.ts +7 -0
- package/src/components/ButtonsWithSdaiaTouch/ButtonHoverPattern.tsx +69 -0
- package/src/components/ButtonsWithSdaiaTouch/ButtonsWithSdaiaTouch.tsx +130 -0
- package/src/components/ButtonsWithSdaiaTouch/ButtonsWithSdaiaTouch.types.ts +4 -0
- package/src/components/ButtonsWithSdaiaTouch/ButtonsWithSdaiaTouch.variants.ts +19 -0
- package/src/components/ButtonsWithSdaiaTouch/index.ts +6 -0
- package/src/components/CLAUDE.md +212 -0
- package/src/components/CalendarHeader/CalendarHeader.tsx +224 -0
- package/src/components/CalendarHeader/CalendarHeader.types.ts +51 -0
- package/src/components/CalendarHeader/CalendarHeader.variants.ts +65 -0
- package/src/components/CalendarHeader/index.ts +2 -0
- package/src/components/Card/Card.tsx +76 -0
- package/src/components/Card/Card.types.ts +11 -0
- package/src/components/Card/Card.variants.ts +30 -0
- package/src/components/Card/index.ts +2 -0
- package/src/components/CardContent/CardContent.tsx +178 -0
- package/src/components/CardContent/CardContent.types.ts +70 -0
- package/src/components/CardContent/CardContent.variants.ts +90 -0
- package/src/components/CardContent/index.ts +6 -0
- package/src/components/CardFooter/CardFooter.tsx +196 -0
- package/src/components/CardFooter/CardFooter.types.ts +59 -0
- package/src/components/CardFooter/CardFooter.variants.ts +127 -0
- package/src/components/CardFooter/index.ts +8 -0
- package/src/components/CardHeader/CardHeader.tsx +150 -0
- package/src/components/CardHeader/CardHeader.types.ts +42 -0
- package/src/components/CardHeader/CardHeader.variants.ts +72 -0
- package/src/components/CardHeader/index.ts +5 -0
- package/src/components/CardLeadingItem/CardLeadingItem.tsx +166 -0
- package/src/components/CardLeadingItem/CardLeadingItem.types.ts +75 -0
- package/src/components/CardLeadingItem/CardLeadingItem.variants.ts +66 -0
- package/src/components/CardLeadingItem/index.ts +6 -0
- package/src/components/CardMedia/CardMedia.tsx +324 -0
- package/src/components/CardMedia/CardMedia.types.ts +114 -0
- package/src/components/CardMedia/CardMedia.variants.ts +139 -0
- package/src/components/CardMedia/index.ts +2 -0
- package/src/components/Carousel/Carousel.tsx +182 -0
- package/src/components/Carousel/Carousel.types.ts +38 -0
- package/src/components/Carousel/Carousel.variants.ts +17 -0
- package/src/components/Carousel/index.ts +2 -0
- package/src/components/CarouselArrow/CarouselArrow.tsx +66 -0
- package/src/components/CarouselArrow/CarouselArrow.types.ts +26 -0
- package/src/components/CarouselArrow/CarouselArrow.variants.ts +83 -0
- package/src/components/CarouselArrow/index.ts +7 -0
- package/src/components/CarouselControlsGroup/CarouselControlsGroup.tsx +81 -0
- package/src/components/CarouselControlsGroup/CarouselControlsGroup.types.ts +24 -0
- package/src/components/CarouselControlsGroup/CarouselControlsGroup.variants.ts +60 -0
- package/src/components/CarouselControlsGroup/index.ts +6 -0
- package/src/components/CarouselImage/CarouselImage.tsx +253 -0
- package/src/components/CarouselImage/CarouselImage.types.ts +72 -0
- package/src/components/CarouselImage/CarouselImage.variants.ts +43 -0
- package/src/components/CarouselImage/index.ts +6 -0
- package/src/components/Chart/Chart.tsx +3 -0
- package/src/components/Chart/Chart.types.ts +2 -0
- package/src/components/Chart/Chart.variants.ts +2 -0
- package/src/components/Chart/index.ts +2 -0
- package/src/components/ChartBadge/ChartBadge.tsx +62 -0
- package/src/components/ChartBadge/ChartBadge.types.ts +27 -0
- package/src/components/ChartBadge/ChartBadge.variants.ts +62 -0
- package/src/components/ChartBadge/index.ts +2 -0
- package/src/components/Checkbox/Checkbox.tsx +243 -0
- package/src/components/Checkbox/Checkbox.types.ts +20 -0
- package/src/components/Checkbox/index.ts +2 -0
- package/src/components/CheckboxLabel/CheckboxLabel.tsx +148 -0
- package/src/components/CheckboxLabel/CheckboxLabel.types.ts +55 -0
- package/src/components/CheckboxLabel/CheckboxLabel.variants.ts +35 -0
- package/src/components/CheckboxLabel/index.ts +2 -0
- package/src/components/Chip/Chip.tsx +245 -0
- package/src/components/Chip/Chip.types.ts +83 -0
- package/src/components/Chip/Chip.variants.ts +143 -0
- package/src/components/Chip/index.ts +2 -0
- package/src/components/CircularItem/CircularItem.tsx +133 -0
- package/src/components/CircularItem/CircularItem.types.ts +45 -0
- package/src/components/CircularItem/CircularItem.variants.ts +128 -0
- package/src/components/CircularItem/index.ts +7 -0
- package/src/components/CodeSnippet/CodeSnippet.tsx +421 -0
- package/src/components/CodeSnippet/CodeSnippet.types.ts +99 -0
- package/src/components/CodeSnippet/CodeSnippet.variants.ts +76 -0
- package/src/components/CodeSnippet/index.ts +9 -0
- package/src/components/ColumnChart/ColumnChart.tsx +943 -0
- package/src/components/ColumnChart/ColumnChart.types.ts +98 -0
- package/src/components/ColumnChart/ColumnChart.variants.ts +117 -0
- package/src/components/ColumnChart/index.ts +9 -0
- package/src/components/ComplexComposition/ComplexComposition.tsx +82 -0
- package/src/components/ComplexComposition/ComplexComposition.types.ts +3 -0
- package/src/components/ComplexComposition/ComplexComposition.variants.ts +14 -0
- package/src/components/ComplexComposition/index.ts +2 -0
- package/src/components/ContentSwitcher/ContentSwitcher.tsx +104 -0
- package/src/components/ContentSwitcher/ContentSwitcher.types.ts +28 -0
- package/src/components/ContentSwitcher/ContentSwitcher.variants.ts +70 -0
- package/src/components/ContentSwitcher/index.ts +6 -0
- package/src/components/ContentSwitcherItem/ContentSwitcherItem.tsx +56 -0
- package/src/components/ContentSwitcherItem/ContentSwitcherItem.types.ts +14 -0
- package/src/components/ContentSwitcherItem/ContentSwitcherItem.variants.ts +65 -0
- package/src/components/ContentSwitcherItem/index.ts +6 -0
- package/src/components/ContextMenu/ContextMenu.tsx +101 -0
- package/src/components/ContextMenu/ContextMenu.types.ts +64 -0
- package/src/components/ContextMenu/ContextMenu.variants.ts +36 -0
- package/src/components/ContextMenu/index.ts +7 -0
- package/src/components/ContextMenuDropdown/ContextMenuDropdown.tsx +370 -0
- package/src/components/ContextMenuDropdown/ContextMenuDropdown.types.ts +89 -0
- package/src/components/ContextMenuDropdown/ContextMenuDropdown.variants.ts +88 -0
- package/src/components/ContextMenuDropdown/index.ts +5 -0
- package/src/components/DateCell/DateCell.tsx +181 -0
- package/src/components/DateCell/DateCell.types.ts +53 -0
- package/src/components/DateCell/DateCell.variants.ts +217 -0
- package/src/components/DateCell/index.ts +2 -0
- package/src/components/DatePicker/DatePicker.tsx +923 -0
- package/src/components/DatePicker/DatePicker.types.ts +102 -0
- package/src/components/DatePicker/DatePicker.variants.ts +274 -0
- package/src/components/DatePicker/index.ts +9 -0
- package/src/components/DateTab/DateTab.tsx +91 -0
- package/src/components/DateTab/DateTab.types.ts +9 -0
- package/src/components/DateTab/DateTab.variants.ts +98 -0
- package/src/components/DateTab/index.ts +2 -0
- package/src/components/DgaIcon/DgaIcon.tsx +68 -0
- package/src/components/DgaIcon/DgaIcon.types.ts +57 -0
- package/src/components/DgaIcon/DgaIcon.variants.ts +41 -0
- package/src/components/DgaIcon/DgaIconByName.tsx +76 -0
- package/src/components/DgaIcon/generated/icon-names.ts +4388 -0
- package/src/components/DgaIcon/index.ts +12 -0
- package/src/components/DgaIcon/lib/decodeDataUrl.ts +46 -0
- package/src/components/DigitalStamp/DigitalStamp.tsx +236 -0
- package/src/components/DigitalStamp/DigitalStamp.types.ts +38 -0
- package/src/components/DigitalStamp/DigitalStamp.variants.ts +185 -0
- package/src/components/DigitalStamp/index.ts +2 -0
- package/src/components/Divider/Divider.tsx +83 -0
- package/src/components/Divider/Divider.types.ts +49 -0
- package/src/components/Divider/Divider.variants.ts +55 -0
- package/src/components/Divider/index.ts +8 -0
- package/src/components/DonutChart/DonutChart.tsx +251 -0
- package/src/components/DonutChart/DonutChart.types.ts +97 -0
- package/src/components/DonutChart/DonutChart.variants.ts +203 -0
- package/src/components/DonutChart/index.ts +7 -0
- package/src/components/DonutChartPanel/DonutChartPanel.tsx +778 -0
- package/src/components/DonutChartPanel/DonutChartPanel.types.ts +143 -0
- package/src/components/DonutChartPanel/DonutChartPanel.variants.ts +154 -0
- package/src/components/DonutChartPanel/index.ts +9 -0
- package/src/components/DraggableItem/DraggableItem.tsx +228 -0
- package/src/components/DraggableItem/DraggableItem.types.ts +72 -0
- package/src/components/DraggableItem/DraggableItem.variants.ts +149 -0
- package/src/components/DraggableItem/index.ts +3 -0
- package/src/components/DraggableList/DraggableList.tsx +20 -0
- package/src/components/DraggableList/DraggableList.types.ts +16 -0
- package/src/components/DraggableList/DraggableList.variants.ts +13 -0
- package/src/components/DraggableList/index.ts +3 -0
- package/src/components/Dropdown/Dropdown.tsx +331 -0
- package/src/components/Dropdown/Dropdown.types.ts +108 -0
- package/src/components/Dropdown/Dropdown.variants.ts +73 -0
- package/src/components/Dropdown/index.ts +9 -0
- package/src/components/DropdownListHeader/DropdownListHeader.tsx +79 -0
- package/src/components/DropdownListHeader/DropdownListHeader.types.ts +24 -0
- package/src/components/DropdownListHeader/DropdownListHeader.variants.ts +65 -0
- package/src/components/DropdownListHeader/index.ts +2 -0
- package/src/components/EmptyState/EmptyState.tsx +221 -0
- package/src/components/EmptyState/EmptyState.types.ts +48 -0
- package/src/components/EmptyState/EmptyState.variants.ts +122 -0
- package/src/components/EmptyState/index.ts +3 -0
- package/src/components/Extension/Extension.tsx +240 -0
- package/src/components/Extension/Extension.types.ts +40 -0
- package/src/components/Extension/Extension.variants.ts +27 -0
- package/src/components/Extension/index.ts +6 -0
- package/src/components/Feedback/Feedback.tsx +55 -0
- package/src/components/Feedback/Feedback.types.ts +15 -0
- package/src/components/Feedback/Feedback.variants.ts +9 -0
- package/src/components/Feedback/index.ts +2 -0
- package/src/components/FeedbackOverview/FeedbackOverview.tsx +70 -0
- package/src/components/FeedbackOverview/FeedbackOverview.types.ts +11 -0
- package/src/components/FeedbackOverview/FeedbackOverview.variants.ts +17 -0
- package/src/components/FeedbackOverview/index.ts +2 -0
- package/src/components/FeedbackReaction/FeedbackReaction.tsx +81 -0
- package/src/components/FeedbackReaction/FeedbackReaction.types.ts +14 -0
- package/src/components/FeedbackReaction/FeedbackReaction.variants.ts +39 -0
- package/src/components/FeedbackReaction/index.ts +2 -0
- package/src/components/FileUploadBase/FileUploadBase.tsx +104 -0
- package/src/components/FileUploadBase/FileUploadBase.types.ts +48 -0
- package/src/components/FileUploadBase/FileUploadBase.variants.ts +51 -0
- package/src/components/FileUploadBase/index.ts +2 -0
- package/src/components/FileUploadItemBase/FileUploadItemBase.tsx +197 -0
- package/src/components/FileUploadItemBase/FileUploadItemBase.types.ts +58 -0
- package/src/components/FileUploadItemBase/FileUploadItemBase.variants.ts +67 -0
- package/src/components/FileUploadItemBase/index.ts +6 -0
- package/src/components/FileUploader/FileUploader.tsx +164 -0
- package/src/components/FileUploader/FileUploader.types.ts +46 -0
- package/src/components/FileUploader/FileUploader.variants.ts +9 -0
- package/src/components/FileUploader/index.ts +2 -0
- package/src/components/Filtration/Filtration.tsx +260 -0
- package/src/components/Filtration/Filtration.types.ts +95 -0
- package/src/components/Filtration/Filtration.variants.ts +70 -0
- package/src/components/Filtration/index.ts +6 -0
- package/src/components/FiltrationItem/FiltrationItem.tsx +200 -0
- package/src/components/FiltrationItem/FiltrationItem.types.ts +57 -0
- package/src/components/FiltrationItem/FiltrationItem.variants.ts +81 -0
- package/src/components/FiltrationItem/index.ts +2 -0
- package/src/components/FiltrationList/FiltrationList.tsx +611 -0
- package/src/components/FiltrationList/FiltrationList.types.ts +191 -0
- package/src/components/FiltrationList/FiltrationList.variants.ts +283 -0
- package/src/components/FiltrationList/index.ts +16 -0
- package/src/components/FloatingButton/FloatingButton.tsx +89 -0
- package/src/components/FloatingButton/FloatingButton.types.ts +29 -0
- package/src/components/FloatingButton/FloatingButton.variants.ts +79 -0
- package/src/components/FloatingButton/index.ts +6 -0
- package/src/components/Footer/Footer.tsx +353 -0
- package/src/components/Footer/Footer.types.ts +142 -0
- package/src/components/Footer/Footer.variants.ts +137 -0
- package/src/components/Footer/index.ts +11 -0
- package/src/components/FooterItem/FooterItem.tsx +211 -0
- package/src/components/FooterItem/FooterItem.types.ts +45 -0
- package/src/components/FooterItem/FooterItem.variants.ts +139 -0
- package/src/components/FooterItem/index.ts +2 -0
- package/src/components/FooterLinkList/FooterLinkList.tsx +140 -0
- package/src/components/FooterLinkList/FooterLinkList.types.ts +46 -0
- package/src/components/FooterLinkList/FooterLinkList.variants.ts +64 -0
- package/src/components/FooterLinkList/index.ts +2 -0
- package/src/components/GraphBase/GraphBase.tsx +598 -0
- package/src/components/GraphBase/GraphBase.types.ts +101 -0
- package/src/components/GraphBase/GraphBase.variants.ts +126 -0
- package/src/components/GraphBase/index.ts +7 -0
- package/src/components/HeaderItem/HeaderItem.tsx +206 -0
- package/src/components/HeaderItem/HeaderItem.types.ts +73 -0
- package/src/components/HeaderItem/HeaderItem.variants.ts +139 -0
- package/src/components/HeaderItem/index.ts +2 -0
- package/src/components/HelpIcon/HelpIcon.tsx +173 -0
- package/src/components/HelpIcon/HelpIcon.types.ts +54 -0
- package/src/components/HelpIcon/HelpIcon.variants.ts +79 -0
- package/src/components/HelpIcon/index.ts +2 -0
- package/src/components/HorizontalTabs/HorizontalTabs.tsx +87 -0
- package/src/components/HorizontalTabs/HorizontalTabs.types.ts +41 -0
- package/src/components/HorizontalTabs/HorizontalTabs.variants.ts +54 -0
- package/src/components/HorizontalTabs/index.ts +6 -0
- package/src/components/IllustrationInstance/IllustrationInstance.tsx +46 -0
- package/src/components/IllustrationInstance/IllustrationInstance.types.ts +25 -0
- package/src/components/IllustrationInstance/IllustrationInstance.variants.ts +19 -0
- package/src/components/IllustrationInstance/index.ts +3 -0
- package/src/components/ImagePreview/ImagePreview.tsx +170 -0
- package/src/components/ImagePreview/ImagePreview.types.ts +54 -0
- package/src/components/ImagePreview/ImagePreview.variants.ts +39 -0
- package/src/components/ImagePreview/index.ts +2 -0
- package/src/components/Input/Input.tsx +113 -0
- package/src/components/Input/Input.types.ts +22 -0
- package/src/components/Input/index.ts +2 -0
- package/src/components/InputPrefixSuffix/InputPrefixSuffix.tsx +91 -0
- package/src/components/InputPrefixSuffix/InputPrefixSuffix.types.ts +81 -0
- package/src/components/InputPrefixSuffix/InputPrefixSuffix.variants.ts +128 -0
- package/src/components/InputPrefixSuffix/index.ts +8 -0
- package/src/components/InputsActions/InputsActions.tsx +53 -0
- package/src/components/InputsActions/InputsActions.types.ts +13 -0
- package/src/components/InputsActions/InputsActions.variants.ts +18 -0
- package/src/components/InputsActions/index.ts +2 -0
- package/src/components/InstanceColumn/InstanceColumn.tsx +43 -0
- package/src/components/InstanceColumn/InstanceColumn.types.ts +18 -0
- package/src/components/InstanceColumn/InstanceColumn.variants.ts +11 -0
- package/src/components/InstanceColumn/index.ts +2 -0
- package/src/components/InstanceItem/InstanceItem.tsx +33 -0
- package/src/components/InstanceItem/InstanceItem.types.ts +11 -0
- package/src/components/InstanceItem/InstanceItem.variants.ts +31 -0
- package/src/components/InstanceItem/index.ts +2 -0
- package/src/components/InstanceRows/InstanceRows.tsx +41 -0
- package/src/components/InstanceRows/InstanceRows.types.ts +17 -0
- package/src/components/InstanceRows/InstanceRows.variants.ts +10 -0
- package/src/components/InstanceRows/index.ts +2 -0
- package/src/components/InstanceSlot/InstanceSlot.tsx +25 -0
- package/src/components/InstanceSlot/InstanceSlot.types.ts +10 -0
- package/src/components/InstanceSlot/InstanceSlot.variants.ts +2 -0
- package/src/components/InstanceSlot/index.ts +2 -0
- package/src/components/LineChart/LineChart.tsx +592 -0
- package/src/components/LineChart/LineChart.types.ts +78 -0
- package/src/components/LineChart/LineChart.variants.ts +324 -0
- package/src/components/LineChart/index.ts +7 -0
- package/src/components/Link/Link.tsx +81 -0
- package/src/components/Link/Link.types.ts +23 -0
- package/src/components/Link/Link.variants.ts +69 -0
- package/src/components/Link/index.ts +2 -0
- package/src/components/List/List.tsx +260 -0
- package/src/components/List/List.types.ts +70 -0
- package/src/components/List/List.variants.ts +94 -0
- package/src/components/List/index.ts +5 -0
- package/src/components/ListGroup/ListGroup.tsx +37 -0
- package/src/components/ListGroup/ListGroup.types.ts +14 -0
- package/src/components/ListGroup/ListGroup.variants.ts +17 -0
- package/src/components/ListGroup/index.ts +3 -0
- package/src/components/LoadingIndicator/LoadingIndicator.tsx +208 -0
- package/src/components/LoadingIndicator/LoadingIndicator.types.ts +51 -0
- package/src/components/LoadingIndicator/LoadingIndicator.variants.ts +108 -0
- package/src/components/LoadingIndicator/index.ts +7 -0
- package/src/components/MediaGallery/MediaGallery.tsx +600 -0
- package/src/components/MediaGallery/MediaGallery.types.ts +124 -0
- package/src/components/MediaGallery/MediaGallery.variants.ts +116 -0
- package/src/components/MediaGallery/index.ts +2 -0
- package/src/components/MediaGrids/MediaGrids.tsx +48 -0
- package/src/components/MediaGrids/MediaGrids.types.ts +14 -0
- package/src/components/MediaGrids/MediaGrids.variants.ts +16 -0
- package/src/components/MediaGrids/index.ts +2 -0
- package/src/components/MediaViewer/MediaViewer.tsx +345 -0
- package/src/components/MediaViewer/MediaViewer.types.ts +59 -0
- package/src/components/MediaViewer/MediaViewer.variants.ts +168 -0
- package/src/components/MediaViewer/index.ts +2 -0
- package/src/components/Menu/Menu.tsx +109 -0
- package/src/components/Menu/Menu.types.ts +37 -0
- package/src/components/Menu/Menu.variants.ts +29 -0
- package/src/components/Menu/index.ts +2 -0
- package/src/components/MenuButtonItem/MenuButtonItem.tsx +280 -0
- package/src/components/MenuButtonItem/MenuButtonItem.types.ts +91 -0
- package/src/components/MenuButtonItem/MenuButtonItem.variants.ts +223 -0
- package/src/components/MenuButtonItem/index.ts +8 -0
- package/src/components/MenuItem/MenuItem.tsx +211 -0
- package/src/components/MenuItem/MenuItem.types.ts +40 -0
- package/src/components/MenuItem/MenuItem.variants.ts +48 -0
- package/src/components/MenuItem/index.ts +2 -0
- package/src/components/MenuItemGroup/MenuItemGroup.tsx +91 -0
- package/src/components/MenuItemGroup/MenuItemGroup.types.ts +82 -0
- package/src/components/MenuItemGroup/MenuItemGroup.variants.ts +33 -0
- package/src/components/MenuItemGroup/index.ts +2 -0
- package/src/components/MenuList/MenuList.tsx +44 -0
- package/src/components/MenuList/MenuList.types.ts +28 -0
- package/src/components/MenuList/MenuList.variants.ts +2 -0
- package/src/components/MenuList/index.ts +2 -0
- package/src/components/Metric/Metric.tsx +584 -0
- package/src/components/Metric/Metric.types.ts +77 -0
- package/src/components/Metric/Metric.variants.ts +175 -0
- package/src/components/Metric/index.ts +8 -0
- package/src/components/Modal/Modal.tsx +139 -0
- package/src/components/Modal/Modal.types.ts +55 -0
- package/src/components/Modal/index.ts +2 -0
- package/src/components/ModalActions/ModalActions.tsx +176 -0
- package/src/components/ModalActions/ModalActions.types.ts +31 -0
- package/src/components/ModalActions/index.ts +2 -0
- package/src/components/ModalHeader/ModalHeader.tsx +207 -0
- package/src/components/ModalHeader/ModalHeader.types.ts +24 -0
- package/src/components/ModalHeader/index.ts +2 -0
- package/src/components/NavBar/NavBar.tsx +326 -0
- package/src/components/NavBar/NavBar.types.ts +78 -0
- package/src/components/NavBar/NavBar.variants.ts +139 -0
- package/src/components/NavBar/index.ts +2 -0
- package/src/components/NavHeader/NavHeader.tsx +292 -0
- package/src/components/NavHeader/NavHeader.types.ts +145 -0
- package/src/components/NavHeader/NavHeader.variants.ts +178 -0
- package/src/components/NavHeader/index.ts +2 -0
- package/src/components/NavHeaderActions/NavHeaderActions.tsx +161 -0
- package/src/components/NavHeaderActions/NavHeaderActions.types.ts +61 -0
- package/src/components/NavHeaderActions/NavHeaderActions.variants.ts +58 -0
- package/src/components/NavHeaderActions/index.ts +2 -0
- package/src/components/NavHeaderDropdownItem/NavHeaderDropdownItem.tsx +243 -0
- package/src/components/NavHeaderDropdownItem/NavHeaderDropdownItem.types.ts +76 -0
- package/src/components/NavHeaderDropdownItem/NavHeaderDropdownItem.variants.ts +133 -0
- package/src/components/NavHeaderDropdownItem/index.ts +5 -0
- package/src/components/NavHeaderDropdownItemList/NavHeaderDropdownItemList.tsx +64 -0
- package/src/components/NavHeaderDropdownItemList/NavHeaderDropdownItemList.types.ts +55 -0
- package/src/components/NavHeaderDropdownItemList/NavHeaderDropdownItemList.variants.ts +47 -0
- package/src/components/NavHeaderDropdownItemList/index.ts +5 -0
- package/src/components/NavHeaderMenuButton/NavHeaderMenuButton.tsx +52 -0
- package/src/components/NavHeaderMenuButton/NavHeaderMenuButton.types.ts +17 -0
- package/src/components/NavHeaderMenuButton/NavHeaderMenuButton.variants.ts +73 -0
- package/src/components/NavHeaderMenuButton/index.ts +2 -0
- package/src/components/NavHeaderMenuCard/NavHeaderMenuCard.tsx +126 -0
- package/src/components/NavHeaderMenuCard/NavHeaderMenuCard.types.ts +74 -0
- package/src/components/NavHeaderMenuCard/NavHeaderMenuCard.variants.ts +169 -0
- package/src/components/NavHeaderMenuCard/index.ts +6 -0
- package/src/components/NavHeaderMenuItem/NavHeaderMenuItem.tsx +164 -0
- package/src/components/NavHeaderMenuItem/NavHeaderMenuItem.types.ts +64 -0
- package/src/components/NavHeaderMenuItem/NavHeaderMenuItem.variants.ts +175 -0
- package/src/components/NavHeaderMenuItem/index.ts +2 -0
- package/src/components/NavItem/NavItem.tsx +210 -0
- package/src/components/NavItem/NavItem.types.ts +71 -0
- package/src/components/NavItem/NavItem.variants.ts +61 -0
- package/src/components/NavItem/index.ts +2 -0
- package/src/components/NavLabel/NavLabel.tsx +84 -0
- package/src/components/NavLabel/NavLabel.types.ts +55 -0
- package/src/components/NavLabel/NavLabel.variants.ts +68 -0
- package/src/components/NavLabel/index.ts +2 -0
- package/src/components/NavLogoPlaceholder/NavLogoPlaceholder.tsx +101 -0
- package/src/components/NavLogoPlaceholder/NavLogoPlaceholder.types.ts +27 -0
- package/src/components/NavLogoPlaceholder/NavLogoPlaceholder.variants.ts +42 -0
- package/src/components/NavLogoPlaceholder/index.ts +6 -0
- package/src/components/NotificationBanner/NotificationBanner.tsx +256 -0
- package/src/components/NotificationBanner/NotificationBanner.types.ts +77 -0
- package/src/components/NotificationBanner/NotificationBanner.variants.ts +109 -0
- package/src/components/NotificationBanner/index.ts +7 -0
- package/src/components/NotificationPopup/NotificationPopup.tsx +147 -0
- package/src/components/NotificationPopup/NotificationPopup.types.ts +51 -0
- package/src/components/NotificationPopup/NotificationPopup.variants.ts +145 -0
- package/src/components/NotificationPopup/index.ts +5 -0
- package/src/components/Notifications/Notifications.tsx +209 -0
- package/src/components/Notifications/Notifications.types.ts +68 -0
- package/src/components/Notifications/Notifications.variants.ts +89 -0
- package/src/components/Notifications/index.ts +2 -0
- package/src/components/Number/Number.tsx +497 -0
- package/src/components/Number/Number.types.ts +58 -0
- package/src/components/Number/Number.variants.ts +94 -0
- package/src/components/Number/index.ts +2 -0
- package/src/components/NumberInput/NumberInput.tsx +265 -0
- package/src/components/NumberInput/NumberInput.types.ts +110 -0
- package/src/components/NumberInput/NumberInput.variants.ts +205 -0
- package/src/components/NumberInput/index.ts +6 -0
- package/src/components/Pagination/Pagination.tsx +393 -0
- package/src/components/Pagination/Pagination.types.ts +26 -0
- package/src/components/Pagination/Pagination.variants.ts +88 -0
- package/src/components/Pagination/index.ts +3 -0
- package/src/components/PaginationButtonGroup/PaginationButtonGroup.tsx +132 -0
- package/src/components/PaginationButtonGroup/PaginationButtonGroup.types.ts +20 -0
- package/src/components/PaginationButtonGroup/PaginationButtonGroup.variants.ts +45 -0
- package/src/components/PaginationButtonGroup/index.ts +8 -0
- package/src/components/PaginationCells/PaginationCells.tsx +105 -0
- package/src/components/PaginationCells/PaginationCells.types.ts +31 -0
- package/src/components/PaginationCells/PaginationCells.variants.ts +96 -0
- package/src/components/PaginationCells/index.ts +9 -0
- package/src/components/PdfViewer/PdfViewer.tsx +265 -0
- package/src/components/PdfViewer/PdfViewer.types.ts +79 -0
- package/src/components/PdfViewer/PdfViewer.variants.ts +105 -0
- package/src/components/PdfViewer/index.ts +3 -0
- package/src/components/PieChartPanel/PieChartPanel.tsx +889 -0
- package/src/components/PieChartPanel/PieChartPanel.types.ts +130 -0
- package/src/components/PieChartPanel/PieChartPanel.variants.ts +156 -0
- package/src/components/PieChartPanel/index.ts +8 -0
- package/src/components/Popover/Popover.tsx +398 -0
- package/src/components/Popover/Popover.types.ts +155 -0
- package/src/components/Popover/Popover.variants.ts +147 -0
- package/src/components/Popover/index.ts +7 -0
- package/src/components/ProgressBar/ProgressBar.tsx +241 -0
- package/src/components/ProgressBar/ProgressBar.types.ts +22 -0
- package/src/components/ProgressBar/ProgressBar.variants.ts +54 -0
- package/src/components/ProgressBar/index.ts +2 -0
- package/src/components/ProgressCircle/ProgressCircle.tsx +369 -0
- package/src/components/ProgressCircle/ProgressCircle.types.ts +26 -0
- package/src/components/ProgressCircle/ProgressCircle.variants.ts +88 -0
- package/src/components/ProgressCircle/index.ts +7 -0
- package/src/components/Quote/Quote.tsx +210 -0
- package/src/components/Quote/Quote.types.ts +73 -0
- package/src/components/Quote/Quote.variants.ts +106 -0
- package/src/components/Quote/index.ts +2 -0
- package/src/components/RadialStepper/RadialStepper.tsx +166 -0
- package/src/components/RadialStepper/RadialStepper.types.ts +77 -0
- package/src/components/RadialStepper/RadialStepper.variants.ts +122 -0
- package/src/components/RadialStepper/index.ts +7 -0
- package/src/components/RadioButton/RadioButton.tsx +237 -0
- package/src/components/RadioButton/RadioButton.types.ts +18 -0
- package/src/components/RadioButton/index.ts +2 -0
- package/src/components/RadioLabel/RadioLabel.tsx +157 -0
- package/src/components/RadioLabel/RadioLabel.types.ts +53 -0
- package/src/components/RadioLabel/RadioLabel.variants.ts +36 -0
- package/src/components/RadioLabel/index.ts +2 -0
- package/src/components/RangeSlider/RangeSlider.tsx +389 -0
- package/src/components/RangeSlider/RangeSlider.types.ts +38 -0
- package/src/components/RangeSlider/RangeSlider.variants.ts +27 -0
- package/src/components/RangeSlider/index.ts +2 -0
- package/src/components/Rating/Rating.tsx +246 -0
- package/src/components/Rating/Rating.types.ts +37 -0
- package/src/components/Rating/Rating.variants.ts +52 -0
- package/src/components/Rating/index.ts +8 -0
- package/src/components/RatingOverview/RatingOverview.tsx +170 -0
- package/src/components/RatingOverview/RatingOverview.types.ts +37 -0
- package/src/components/RatingOverview/RatingOverview.variants.ts +50 -0
- package/src/components/RatingOverview/index.ts +2 -0
- package/src/components/RatingStar/RatingStar.tsx +76 -0
- package/src/components/RatingStar/RatingStar.types.ts +18 -0
- package/src/components/RatingStar/RatingStar.variants.ts +34 -0
- package/src/components/RatingStar/index.ts +7 -0
- package/src/components/RichTextEditor/RichTextEditor.tsx +1341 -0
- package/src/components/RichTextEditor/RichTextEditor.types.ts +127 -0
- package/src/components/RichTextEditor/RichTextEditor.variants.ts +231 -0
- package/src/components/RichTextEditor/index.ts +6 -0
- package/src/components/ScatterChart/ScatterChart.tsx +164 -0
- package/src/components/ScatterChart/ScatterChart.types.ts +42 -0
- package/src/components/ScatterChart/ScatterChart.variants.ts +162 -0
- package/src/components/ScatterChart/index.ts +2 -0
- package/src/components/SdaiaLogoAnimation/BGSVG.tsx +216 -0
- package/src/components/SdaiaLogoAnimation/SdaiaLogoAnimation.tsx +120 -0
- package/src/components/SdaiaLogoAnimation/SdaiaLogoAnimation.types.ts +13 -0
- package/src/components/SdaiaLogoAnimation/SdaiaLogoAnimation.variants.ts +22 -0
- package/src/components/SdaiaLogoAnimation/index.ts +2 -0
- package/src/components/SdaiaTouch2dAnimation/SdaiaTouch2dAnimation.tsx +55 -0
- package/src/components/SdaiaTouch2dAnimation/SdaiaTouch2dAnimation.types.ts +12 -0
- package/src/components/SdaiaTouch2dAnimation/SdaiaTouch2dAnimation.variants.ts +28 -0
- package/src/components/SdaiaTouch2dAnimation/Star.tsx +82 -0
- package/src/components/SdaiaTouch2dAnimation/StarShape.tsx +78 -0
- package/src/components/SdaiaTouch2dAnimation/index.ts +6 -0
- package/src/components/SecondNavHeader/SecondNavHeader.tsx +80 -0
- package/src/components/SecondNavHeader/SecondNavHeader.types.ts +41 -0
- package/src/components/SecondNavHeader/SecondNavHeader.variants.ts +42 -0
- package/src/components/SecondNavHeader/index.ts +2 -0
- package/src/components/Select/Select.tsx +351 -0
- package/src/components/Select/Select.types.ts +102 -0
- package/src/components/Select/Select.variants.ts +111 -0
- package/src/components/Select/index.ts +2 -0
- package/src/components/SelectMenuItem/SelectMenuItem.tsx +132 -0
- package/src/components/SelectMenuItem/SelectMenuItem.types.ts +47 -0
- package/src/components/SelectMenuItem/SelectMenuItem.variants.ts +56 -0
- package/src/components/SelectMenuItem/index.ts +2 -0
- package/src/components/SeriesLabel/SeriesLabel.tsx +76 -0
- package/src/components/SeriesLabel/SeriesLabel.types.ts +27 -0
- package/src/components/SeriesLabel/SeriesLabel.variants.ts +84 -0
- package/src/components/SeriesLabel/index.ts +2 -0
- package/src/components/Signature/Signature.tsx +905 -0
- package/src/components/Signature/Signature.types.ts +68 -0
- package/src/components/Signature/Signature.variants.ts +115 -0
- package/src/components/Signature/index.ts +2 -0
- package/src/components/Skeleton/Skeleton.tsx +21 -0
- package/src/components/Skeleton/Skeleton.types.ts +15 -0
- package/src/components/Skeleton/Skeleton.variants.ts +14 -0
- package/src/components/Skeleton/index.ts +2 -0
- package/src/components/SkeletonAvatar/SkeletonAvatar.tsx +21 -0
- package/src/components/SkeletonAvatar/SkeletonAvatar.types.ts +15 -0
- package/src/components/SkeletonAvatar/SkeletonAvatar.variants.ts +14 -0
- package/src/components/SkeletonAvatar/index.ts +2 -0
- package/src/components/SlideoutMenu/SlideoutMenu.tsx +225 -0
- package/src/components/SlideoutMenu/SlideoutMenu.types.ts +39 -0
- package/src/components/SlideoutMenu/SlideoutMenuDivider.tsx +10 -0
- package/src/components/SlideoutMenu/SlideoutMenuSection.tsx +39 -0
- package/src/components/SlideoutMenu/index.ts +5 -0
- package/src/components/SlideoutMenuFooter/SlideoutMenuFooter.tsx +96 -0
- package/src/components/SlideoutMenuFooter/SlideoutMenuFooter.types.ts +28 -0
- package/src/components/SlideoutMenuFooter/SlideoutMenuFooter.variants.ts +49 -0
- package/src/components/SlideoutMenuFooter/index.ts +6 -0
- package/src/components/SlideoutMenuHeader/SlideoutMenuHeader.tsx +83 -0
- package/src/components/SlideoutMenuHeader/SlideoutMenuHeader.types.ts +19 -0
- package/src/components/SlideoutMenuHeader/SlideoutMenuHeader.variants.ts +78 -0
- package/src/components/SlideoutMenuHeader/index.ts +2 -0
- package/src/components/Slider/Slider.tsx +259 -0
- package/src/components/Slider/Slider.types.ts +22 -0
- package/src/components/Slider/Slider.variants.ts +23 -0
- package/src/components/Slider/index.ts +2 -0
- package/src/components/Sparkline/Sparkline.tsx +130 -0
- package/src/components/Sparkline/Sparkline.types.ts +36 -0
- package/src/components/Sparkline/Sparkline.variants.ts +118 -0
- package/src/components/Sparkline/index.ts +2 -0
- package/src/components/StatusDot/StatusDot.tsx +82 -0
- package/src/components/StatusDot/StatusDot.types.ts +35 -0
- package/src/components/StatusDot/StatusDot.variants.ts +66 -0
- package/src/components/StatusDot/index.ts +8 -0
- package/src/components/StructuredList/StructuredList.tsx +79 -0
- package/src/components/StructuredList/StructuredList.types.ts +27 -0
- package/src/components/StructuredList/index.ts +2 -0
- package/src/components/StructuredListGroup/StructuredListGroup.tsx +76 -0
- package/src/components/StructuredListGroup/StructuredListGroup.types.ts +27 -0
- package/src/components/StructuredListGroup/StructuredListGroup.variants.ts +14 -0
- package/src/components/StructuredListGroup/index.ts +5 -0
- package/src/components/StructuredListHeader/StructuredListHeader.tsx +98 -0
- package/src/components/StructuredListHeader/StructuredListHeader.types.ts +26 -0
- package/src/components/StructuredListHeader/StructuredListHeader.variants.ts +24 -0
- package/src/components/StructuredListHeader/index.ts +5 -0
- package/src/components/StructuredListRow/StructuredListRow.tsx +144 -0
- package/src/components/StructuredListRow/StructuredListRow.types.ts +37 -0
- package/src/components/StructuredListRow/StructuredListRow.variants.ts +53 -0
- package/src/components/StructuredListRow/index.ts +6 -0
- package/src/components/SubHeaderItem/SubHeaderItem.tsx +37 -0
- package/src/components/SubHeaderItem/SubHeaderItem.types.ts +20 -0
- package/src/components/SubHeaderItem/SubHeaderItem.variants.ts +23 -0
- package/src/components/SubHeaderItem/index.ts +2 -0
- package/src/components/Switch/Switch.tsx +138 -0
- package/src/components/Switch/Switch.types.ts +18 -0
- package/src/components/Switch/Switch.variants.ts +49 -0
- package/src/components/Switch/index.ts +2 -0
- package/src/components/SwitchLabel/SwitchLabel.tsx +114 -0
- package/src/components/SwitchLabel/SwitchLabel.types.ts +27 -0
- package/src/components/SwitchLabel/SwitchLabel.variants.ts +28 -0
- package/src/components/SwitchLabel/index.ts +2 -0
- package/src/components/Tab/Tab.tsx +92 -0
- package/src/components/Tab/Tab.types.ts +34 -0
- package/src/components/Tab/Tab.variants.ts +79 -0
- package/src/components/Tab/index.ts +2 -0
- package/src/components/Table/Table.tsx +353 -0
- package/src/components/Table/Table.types.ts +80 -0
- package/src/components/Table/Table.variants.ts +110 -0
- package/src/components/Table/index.ts +10 -0
- package/src/components/TableOfContent/TableOfContent.tsx +33 -0
- package/src/components/TableOfContent/TableOfContent.types.ts +15 -0
- package/src/components/TableOfContent/TableOfContent.variants.ts +27 -0
- package/src/components/TableOfContent/index.ts +2 -0
- package/src/components/TableOfContentItem/TableOfContentItem.tsx +85 -0
- package/src/components/TableOfContentItem/TableOfContentItem.types.ts +23 -0
- package/src/components/TableOfContentItem/TableOfContentItem.variants.ts +109 -0
- package/src/components/TableOfContentItem/index.ts +2 -0
- package/src/components/TableOfContentList/TableOfContentList.tsx +60 -0
- package/src/components/TableOfContentList/TableOfContentList.types.ts +39 -0
- package/src/components/TableOfContentList/TableOfContentList.variants.ts +6 -0
- package/src/components/TableOfContentList/index.ts +2 -0
- package/src/components/Tabs/Tabs.tsx +80 -0
- package/src/components/Tabs/Tabs.types.ts +36 -0
- package/src/components/Tabs/Tabs.variants.ts +23 -0
- package/src/components/Tabs/index.ts +2 -0
- package/src/components/Tag/Tag.tsx +114 -0
- package/src/components/Tag/Tag.types.ts +32 -0
- package/src/components/Tag/Tag.variants.ts +57 -0
- package/src/components/Tag/index.ts +2 -0
- package/src/components/TagCount/TagCount.tsx +45 -0
- package/src/components/TagCount/TagCount.types.ts +21 -0
- package/src/components/TagCount/TagCount.variants.ts +26 -0
- package/src/components/TagCount/index.ts +7 -0
- package/src/components/TextArea/TextArea.tsx +130 -0
- package/src/components/TextArea/TextArea.types.ts +20 -0
- package/src/components/TextArea/index.ts +2 -0
- package/src/components/TextInput/TextInput.tsx +568 -0
- package/src/components/TextInput/TextInput.types.ts +87 -0
- package/src/components/TextInput/TextInput.variants.ts +89 -0
- package/src/components/TextInput/TextInputTag.tsx +43 -0
- package/src/components/TextInput/TextInputTag.types.ts +14 -0
- package/src/components/TextInput/index.ts +4 -0
- package/src/components/Tooltip/Tooltip.tsx +229 -0
- package/src/components/Tooltip/Tooltip.types.ts +48 -0
- package/src/components/Tooltip/Tooltip.variants.ts +141 -0
- package/src/components/Tooltip/index.ts +10 -0
- package/src/components/TreeView/TreeView.tsx +130 -0
- package/src/components/TreeView/TreeView.types.ts +42 -0
- package/src/components/TreeView/TreeView.variants.ts +6 -0
- package/src/components/TreeView/index.ts +3 -0
- package/src/components/TreeViewItem/TreeViewItem.tsx +108 -0
- package/src/components/TreeViewItem/TreeViewItem.types.ts +34 -0
- package/src/components/TreeViewItem/TreeViewItem.variants.ts +40 -0
- package/src/components/TreeViewItem/index.ts +3 -0
- package/src/components/VerticalTabs/VerticalTabs.tsx +84 -0
- package/src/components/VerticalTabs/VerticalTabs.types.ts +37 -0
- package/src/components/VerticalTabs/VerticalTabs.variants.ts +43 -0
- package/src/components/VerticalTabs/index.ts +6 -0
- package/src/components/VideoPlayer/VideoPlayer.tsx +470 -0
- package/src/components/VideoPlayer/VideoPlayer.types.ts +59 -0
- package/src/components/VideoPlayer/VideoPlayer.variants.ts +134 -0
- package/src/components/VideoPlayer/index.ts +2 -0
- package/src/components/XAxis/XAxis.tsx +67 -0
- package/src/components/XAxis/XAxis.types.ts +30 -0
- package/src/components/XAxis/XAxis.variants.ts +77 -0
- package/src/components/XAxis/index.ts +2 -0
- package/src/components/YAxis/YAxis.tsx +78 -0
- package/src/components/YAxis/YAxis.types.ts +41 -0
- package/src/components/YAxis/YAxis.variants.ts +94 -0
- package/src/components/YAxis/index.ts +2 -0
- package/src/dga-icons.ts +18 -0
- package/src/hooks/usePresence.ts +73 -0
- package/src/icons/AIIcon.tsx +34 -0
- package/src/icons/AaIcon.tsx +34 -0
- package/src/icons/AlertCircle02Icon.tsx +28 -0
- package/src/icons/AlertCircleIcon.tsx +29 -0
- package/src/icons/AlertCircleSVG.tsx +19 -0
- package/src/icons/AlertCircleWarningIcon.tsx +37 -0
- package/src/icons/AlertTriangleIcon.tsx +27 -0
- package/src/icons/AlignCenterIcon.tsx +31 -0
- package/src/icons/AlignLeftIcon.tsx +31 -0
- package/src/icons/AlignRightIcon.tsx +31 -0
- package/src/icons/ArrowDownIcon.tsx +27 -0
- package/src/icons/ArrowDownLeft01Icon.tsx +32 -0
- package/src/icons/ArrowDownSVG.tsx +16 -0
- package/src/icons/ArrowIcon.tsx +38 -0
- package/src/icons/ArrowLeft01Icon.tsx +23 -0
- package/src/icons/ArrowLeft02SVG.tsx +19 -0
- package/src/icons/ArrowLeftIcon.tsx +28 -0
- package/src/icons/ArrowRight01Icon.tsx +23 -0
- package/src/icons/ArrowRight01SVG.tsx +16 -0
- package/src/icons/ArrowRightIcon.tsx +28 -0
- package/src/icons/ArrowUpIcon.tsx +27 -0
- package/src/icons/ArrowUpRight01Icon.tsx +31 -0
- package/src/icons/ArrowUpSVG.tsx +16 -0
- package/src/icons/AtIcon.tsx +33 -0
- package/src/icons/BeakBottom.tsx +13 -0
- package/src/icons/BeakDown.tsx +29 -0
- package/src/icons/BeakLeft.tsx +13 -0
- package/src/icons/BeakRight.tsx +11 -0
- package/src/icons/BeakTop.tsx +13 -0
- package/src/icons/BeakUp.tsx +23 -0
- package/src/icons/BellCircleIcon.tsx +33 -0
- package/src/icons/BellIcon.tsx +27 -0
- package/src/icons/BoldIcon.tsx +33 -0
- package/src/icons/CalendarIcon.tsx +35 -0
- package/src/icons/ChartsIcon.tsx +25 -0
- package/src/icons/CheckCircleIcon.tsx +29 -0
- package/src/icons/ChevronDownIcon.tsx +30 -0
- package/src/icons/ChevronDownSmIcon.tsx +34 -0
- package/src/icons/ChevronLeftIcon.tsx +20 -0
- package/src/icons/ChevronRightIcon.tsx +36 -0
- package/src/icons/ClearIcon.tsx +34 -0
- package/src/icons/ClockIcon.tsx +34 -0
- package/src/icons/CloseIcon.tsx +29 -0
- package/src/icons/CloudUploadIcon.tsx +21 -0
- package/src/icons/CodeSnippetChevronDownIcon.tsx +25 -0
- package/src/icons/CodeSnippetCopyIcon.tsx +24 -0
- package/src/icons/CodeSnippetStarIcon.tsx +25 -0
- package/src/icons/ColorSquareIcon.tsx +42 -0
- package/src/icons/ComponentsIcon.tsx +25 -0
- package/src/icons/DGALogoSVG.tsx +133 -0
- package/src/icons/DeleteIcon.tsx +24 -0
- package/src/icons/DownloadIcon.tsx +29 -0
- package/src/icons/DragHandleVerticalIcon.tsx +23 -0
- package/src/icons/FeedbackEmojiDislikeIcon.tsx +20 -0
- package/src/icons/FeedbackEmojiLikeIcon.tsx +20 -0
- package/src/icons/FeedbackEmojiNeutralIcon.tsx +20 -0
- package/src/icons/FeedbackThumbDislikeFilledIcon.tsx +26 -0
- package/src/icons/FeedbackThumbDislikeIcon.tsx +20 -0
- package/src/icons/FeedbackThumbLikeFilledIcon.tsx +20 -0
- package/src/icons/FeedbackThumbLikeIcon.tsx +20 -0
- package/src/icons/FileUploadItemCloseIcon.tsx +30 -0
- package/src/icons/FileUploadItemEmptyFileIcon.tsx +27 -0
- package/src/icons/FileUploadItemPdfIcon.tsx +52 -0
- package/src/icons/FilterFunnelIcon.tsx +34 -0
- package/src/icons/FilterIcon.tsx +31 -0
- package/src/icons/FitIcon.tsx +22 -0
- package/src/icons/FolderFilledIcon.tsx +25 -0
- package/src/icons/FolderIcon.tsx +28 -0
- package/src/icons/FoundationsIcon.tsx +25 -0
- package/src/icons/FullscreenExitIcon.tsx +71 -0
- package/src/icons/FullscreenIcon.tsx +70 -0
- package/src/icons/GoBackward10Icon.tsx +27 -0
- package/src/icons/GoForward10Icon.tsx +27 -0
- package/src/icons/GridSquaresIcon.tsx +40 -0
- package/src/icons/HamburgerIcon.tsx +28 -0
- package/src/icons/HelpCircleIcon.tsx +28 -0
- package/src/icons/HomeIcon.tsx +22 -0
- package/src/icons/HomeSVG.tsx +32 -0
- package/src/icons/IconFactory.ts +157 -0
- package/src/icons/Image01SVG.tsx +18 -0
- package/src/icons/ImageIcon.tsx +31 -0
- package/src/icons/InfoCircleIcon.tsx +31 -0
- package/src/icons/InfoCircleSVG.tsx +20 -0
- package/src/icons/InfoIcon.tsx +27 -0
- package/src/icons/ItalicIcon.tsx +31 -0
- package/src/icons/LearnMoreArrowIcon.tsx +22 -0
- package/src/icons/LinkCircleSVG.tsx +58 -0
- package/src/icons/LinkIcon.tsx +33 -0
- package/src/icons/ListLinesIcon.tsx +40 -0
- package/src/icons/LockCircleSVG.tsx +60 -0
- package/src/icons/LockIcon.tsx +36 -0
- package/src/icons/Logout02Icon.tsx +19 -0
- package/src/icons/MicrophoneIcon.tsx +20 -0
- package/src/icons/MinusIcon.tsx +40 -0
- package/src/icons/MoreHorizontalIcon.tsx +24 -0
- package/src/icons/MoreVerticalIcon.tsx +40 -0
- package/src/icons/NextIcon.tsx +44 -0
- package/src/icons/PDFSvg.tsx +39 -0
- package/src/icons/PatternsIcon.tsx +21 -0
- package/src/icons/PauseIcon.tsx +30 -0
- package/src/icons/PencilIcon.tsx +36 -0
- package/src/icons/PlayButtonCardIcon.tsx +41 -0
- package/src/icons/PlayCenterIcon.tsx +45 -0
- package/src/icons/PlayIcon.tsx +27 -0
- package/src/icons/PlayIconSolid.tsx +33 -0
- package/src/icons/PlayIconStroke.tsx +22 -0
- package/src/icons/PlayIconTwotone.tsx +36 -0
- package/src/icons/PlayVideoIcon.tsx +31 -0
- package/src/icons/PlusCircleIcon.tsx +41 -0
- package/src/icons/PlusIcon.tsx +43 -0
- package/src/icons/PreviousIcon.tsx +44 -0
- package/src/icons/PrintIcon.tsx +25 -0
- package/src/icons/QuestionMarkGrayBgIcon.tsx +52 -0
- package/src/icons/QuestionMarkIcon.tsx +47 -0
- package/src/icons/RedoIcon.tsx +41 -0
- package/src/icons/SaudiFlagSVG.tsx +31 -0
- package/src/icons/SdaiaNavLogo.tsx +345 -0
- package/src/icons/SearchIcon.tsx +34 -0
- package/src/icons/SettingsIcon.tsx +25 -0
- package/src/icons/ShareIcon.tsx +26 -0
- package/src/icons/SidebarCollapseIcon.tsx +25 -0
- package/src/icons/SmileIcon.tsx +34 -0
- package/src/icons/SortIcon.tsx +20 -0
- package/src/icons/StarIcon.tsx +38 -0
- package/src/icons/StatusBadgeIcon.tsx +19 -0
- package/src/icons/TextTIcon.tsx +33 -0
- package/src/icons/Tick02Icon.tsx +32 -0
- package/src/icons/TickIcon.tsx +33 -0
- package/src/icons/TrashIcon.tsx +44 -0
- package/src/icons/UnderlineIcon.tsx +31 -0
- package/src/icons/UndoIcon.tsx +31 -0
- package/src/icons/UploadArrowIcon.tsx +40 -0
- package/src/icons/UserIcon.tsx +21 -0
- package/src/icons/VolumeHighIcon.tsx +27 -0
- package/src/icons/VolumeMuteIcon.tsx +53 -0
- package/src/icons/XCircleIcon.tsx +32 -0
- package/src/icons/XIcon.tsx +27 -0
- package/src/icons/XIconSVG.tsx +16 -0
- package/src/icons/XSmallIcon.tsx +29 -0
- package/src/icons/XSvg.tsx +18 -0
- package/src/icons/ZoomInIcon.tsx +25 -0
- package/src/icons/index.ts +5 -0
- package/src/index.ts +699 -0
- package/src/lib/cn.ts +42 -0
- package/src/styles/motion.css +120 -0
- package/src/styles.css +242 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
/** Visual type of the media block. */
|
|
4
|
+
export type CardMediaType = 'image' | 'carousel' | 'video';
|
|
5
|
+
|
|
6
|
+
export interface CardMediaProps
|
|
7
|
+
extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
8
|
+
/**
|
|
9
|
+
* Variant of the media block.
|
|
10
|
+
* - `image` — single image with a bottom gradient overlay + optional title / description / leading icon.
|
|
11
|
+
* - `carousel` — image with top chips, left/right arrow controls, and pagination dots.
|
|
12
|
+
* - `video` — image poster with top chips, centered play button, and a duration pill in the footer.
|
|
13
|
+
* @default 'image'
|
|
14
|
+
*/
|
|
15
|
+
type?: CardMediaType;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Background image source. Used for the single-image Image / Video variants,
|
|
19
|
+
* and as a fallback for the Carousel variant when no `images` array is supplied.
|
|
20
|
+
*/
|
|
21
|
+
imageSrc: string;
|
|
22
|
+
/** Background image alt text. @default '' */
|
|
23
|
+
imageAlt?: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Carousel-only: the ordered list of images the carousel cycles through.
|
|
27
|
+
* When provided, the active image is `images[currentSlide]` and
|
|
28
|
+
* `totalSlides` defaults to `images.length`. When omitted, the carousel
|
|
29
|
+
* falls back to rendering a single `imageSrc`.
|
|
30
|
+
*/
|
|
31
|
+
images?: Array<{ src: string; alt?: string }>;
|
|
32
|
+
|
|
33
|
+
/* ── Image-variant content ────────────────────────────────── */
|
|
34
|
+
/** Title shown in the bottom overlay (Image variant). */
|
|
35
|
+
title?: ReactNode;
|
|
36
|
+
/** Description shown under the title (Image variant). */
|
|
37
|
+
description?: ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* Leading icon rendered inside the featured-icon slot on the Image footer.
|
|
40
|
+
* Defaults to a placeholder image icon when omitted.
|
|
41
|
+
*/
|
|
42
|
+
leadingIcon?: ReactNode;
|
|
43
|
+
/** Hide the leading featured-icon slot entirely (Image variant). @default false */
|
|
44
|
+
hideLeadingIcon?: boolean;
|
|
45
|
+
|
|
46
|
+
/* ── Carousel / Video shared ──────────────────────────────── */
|
|
47
|
+
/**
|
|
48
|
+
* Chip badges rendered in the top row for Carousel and Video variants.
|
|
49
|
+
* Pass an array of strings (each becomes a styled chip) or any ReactNode
|
|
50
|
+
* (rendered as-is so you can pass fully custom chips).
|
|
51
|
+
*/
|
|
52
|
+
badges?: ReactNode[] | ReactNode;
|
|
53
|
+
|
|
54
|
+
/* ── Carousel-specific ────────────────────────────────────── */
|
|
55
|
+
/** Total pagination dots (Carousel). @default 3 */
|
|
56
|
+
totalSlides?: number;
|
|
57
|
+
/** Currently active dot (0-based) (Carousel). @default 0 */
|
|
58
|
+
currentSlide?: number;
|
|
59
|
+
/**
|
|
60
|
+
* Fired whenever the active slide changes — either from a pagination dot click
|
|
61
|
+
* or from a previous / next arrow click. CardMedia computes the target index
|
|
62
|
+
* internally (with optional wrap-around, see `loop`) and passes it here.
|
|
63
|
+
*/
|
|
64
|
+
onSlideChange?: (index: number) => void;
|
|
65
|
+
/**
|
|
66
|
+
* Infinite scrolling: pressing Next on the last slide wraps back to the
|
|
67
|
+
* first, and pressing Previous on the first slide jumps to the last.
|
|
68
|
+
* Disable to clamp at the edges instead.
|
|
69
|
+
* @default true
|
|
70
|
+
*/
|
|
71
|
+
loop?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Optional side-effect hook fired in addition to `onSlideChange` when the
|
|
74
|
+
* user clicks the previous arrow. The component already updates the index
|
|
75
|
+
* itself — use this only if you need extra behavior (analytics, etc.).
|
|
76
|
+
*/
|
|
77
|
+
onPrev?: () => void;
|
|
78
|
+
/**
|
|
79
|
+
* Optional side-effect hook fired in addition to `onSlideChange` when the
|
|
80
|
+
* user clicks the next arrow. The component already updates the index
|
|
81
|
+
* itself — use this only if you need extra behavior (analytics, etc.).
|
|
82
|
+
*/
|
|
83
|
+
onNext?: () => void;
|
|
84
|
+
|
|
85
|
+
/* ── Video-specific ───────────────────────────────────────── */
|
|
86
|
+
/** Duration text shown in the footer pill (Video). */
|
|
87
|
+
duration?: ReactNode;
|
|
88
|
+
/** Fired when the user clicks the play button (Video). */
|
|
89
|
+
onPlay?: () => void;
|
|
90
|
+
/** Accessible label for the play button. @default 'Play' */
|
|
91
|
+
playLabel?: string;
|
|
92
|
+
|
|
93
|
+
/* ── Direction ────────────────────────────────────────────── */
|
|
94
|
+
/** Direction — applied to the root and drives RTL layout. */
|
|
95
|
+
dir?: 'ltr' | 'rtl';
|
|
96
|
+
/** @deprecated Use `dir="rtl"` instead. */
|
|
97
|
+
rtl?: boolean;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Bleeds the media past the card's horizontal padding on both sides so the
|
|
101
|
+
* image meets the left and right card edges. Use for any card where the
|
|
102
|
+
* media is NOT the first child (Content, Social Post, Item).
|
|
103
|
+
* @default false
|
|
104
|
+
*/
|
|
105
|
+
stretched?: boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Also bleeds the media past the card's top padding so it meets the top
|
|
108
|
+
* card edge (rounded corners match the card's 16 px radius). Only use when
|
|
109
|
+
* the media is the FIRST child of the card, i.e. Product and Event cards.
|
|
110
|
+
* Requires `stretched={true}`.
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
113
|
+
stretchTop?: boolean;
|
|
114
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* ──────────────────────────────────────────────────────────────
|
|
2
|
+
* CardMedia — class-name maps.
|
|
3
|
+
*
|
|
4
|
+
* Color values come from the Figma variables bound to the _Card
|
|
5
|
+
* Media frame (JnxIDV6Ev4yznMM0njgo5i → 4401:35269). Values that
|
|
6
|
+
* don't map to an existing global token are kept as rgba literals
|
|
7
|
+
* with the Figma variable name in a comment. Dark-mode pairs are
|
|
8
|
+
* included where the surface could sit on a dark host page.
|
|
9
|
+
* ────────────────────────────────────────────────────────────── */
|
|
10
|
+
|
|
11
|
+
/* ── Root ──────────────────────────────────────────────────────
|
|
12
|
+
* 360 × 210 in Figma. We default to the same width cap and exact
|
|
13
|
+
* height; parent containers can override via `className`.
|
|
14
|
+
* ────────────────────────────────────────────────────────────── */
|
|
15
|
+
|
|
16
|
+
export const ROOT_BASE = [
|
|
17
|
+
// No explicit `w-full` — let align-self:stretch fill the cross-axis.
|
|
18
|
+
// This allows negative horizontal margins (stretched) to correctly extend
|
|
19
|
+
// past the card padding; with w-full the margins only shift, not widen.
|
|
20
|
+
'relative flex flex-col h-[210px]',
|
|
21
|
+
'rounded-[8px] overflow-hidden',
|
|
22
|
+
'bg-[rgba(243,244,246,1)] dark:bg-[rgba(31,42,55,1)]',
|
|
23
|
+
].join(' ');
|
|
24
|
+
|
|
25
|
+
/** Image variant — content (if any) hugs the bottom edge; gradient overlays it. */
|
|
26
|
+
export const ROOT_IMAGE = 'justify-end';
|
|
27
|
+
|
|
28
|
+
/** Carousel + Video share a padded three-row layout. */
|
|
29
|
+
export const ROOT_OVERLAYED = 'justify-between p-spacing-xl';
|
|
30
|
+
|
|
31
|
+
/* ── Background image ─────────────────────────────────────────── */
|
|
32
|
+
|
|
33
|
+
export const MEDIA_IMAGE =
|
|
34
|
+
'absolute inset-0 size-full object-cover pointer-events-none rounded-[8px]';
|
|
35
|
+
|
|
36
|
+
/* ── Image variant: gradient footer with text + leading icon ──── */
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Bottom-anchored gradient strip per Figma:
|
|
40
|
+
* from #16161666 (alpha-black-40)
|
|
41
|
+
* via #16161633 (alpha-black-20) at 55.625%
|
|
42
|
+
* to #16161600 (alpha-black-0)
|
|
43
|
+
*/
|
|
44
|
+
export const IMAGE_FOOTER_OVERLAY = [
|
|
45
|
+
'relative flex items-center gap-spacing-md w-full',
|
|
46
|
+
'p-spacing-xl',
|
|
47
|
+
'bg-gradient-to-t',
|
|
48
|
+
'from-[rgba(22,22,22,0.4)]',
|
|
49
|
+
'via-[rgba(22,22,22,0.2)] via-[55.625%]',
|
|
50
|
+
'to-[rgba(22,22,22,0)]',
|
|
51
|
+
].join(' ');
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The leading-item slot on the Image footer is rendered by the shared
|
|
55
|
+
* `CardLeadingItem` primitive — see `../CardLeadingItem`. The CardMedia
|
|
56
|
+
* variants file no longer owns a wrapper style for it.
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
export const TEXT_COLUMN =
|
|
60
|
+
'flex flex-1 min-w-0 flex-col gap-spacing-xxs items-start w-full';
|
|
61
|
+
|
|
62
|
+
export const TITLE_CLASS = [
|
|
63
|
+
'm-0 w-full',
|
|
64
|
+
// Text md Bold
|
|
65
|
+
'text-text-md font-[700] leading-[24px]',
|
|
66
|
+
// text-oncolor-primary (#fff)
|
|
67
|
+
'text-white',
|
|
68
|
+
].join(' ');
|
|
69
|
+
|
|
70
|
+
export const DESCRIPTION_CLASS = [
|
|
71
|
+
'm-0 w-full',
|
|
72
|
+
// Text sm Regular
|
|
73
|
+
'text-text-sm font-[400] leading-[20px]',
|
|
74
|
+
// text-oncolor-secondary (rgba(255,255,255,0.8))
|
|
75
|
+
'text-[rgba(255,255,255,0.8)]',
|
|
76
|
+
].join(' ');
|
|
77
|
+
|
|
78
|
+
/* ── Chips row (Carousel + Video) ─────────────────────────────── */
|
|
79
|
+
|
|
80
|
+
export const CHIP_ROW =
|
|
81
|
+
'relative flex items-center gap-spacing-md w-full h-[20px]';
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* Badge rendering now delegates to the shared `Chip` component
|
|
85
|
+
* (`variant="neutral" size="sm" rounded={false}`) — no inline wrapper
|
|
86
|
+
* class lives here.
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
/* ── Carousel middle row (arrows) ─────────────────────────────── */
|
|
90
|
+
|
|
91
|
+
export const CAROUSEL_CENTER_ROW =
|
|
92
|
+
'relative flex items-center justify-between w-full h-[32px]';
|
|
93
|
+
|
|
94
|
+
/* ── Carousel bottom row (pagination) ─────────────────────────── */
|
|
95
|
+
|
|
96
|
+
export const CAROUSEL_PAGINATION_ROW =
|
|
97
|
+
'relative flex flex-col items-center justify-end w-full h-[20px]';
|
|
98
|
+
|
|
99
|
+
/* ── Video middle row (play button) ───────────────────────────── */
|
|
100
|
+
|
|
101
|
+
export const VIDEO_CENTER_ROW =
|
|
102
|
+
'relative flex items-center justify-between w-full h-[48px]';
|
|
103
|
+
|
|
104
|
+
/** Circular play-button overlay — translucent white. */
|
|
105
|
+
export const PLAY_BUTTON = [
|
|
106
|
+
'inline-flex items-center justify-center flex-shrink-0',
|
|
107
|
+
'p-spacing-lg rounded-full',
|
|
108
|
+
// alpha-white-80 (rgba(255,255,255,0.8))
|
|
109
|
+
'bg-[rgba(255,255,255,0.8)]',
|
|
110
|
+
// Focus ring for keyboard users
|
|
111
|
+
'cursor-pointer motion-feedback',
|
|
112
|
+
'hover:bg-white active:bg-[rgba(255,255,255,0.6)]',
|
|
113
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-offset-2',
|
|
114
|
+
// Icon color (icon-default #161616)
|
|
115
|
+
'text-[rgba(22,22,22,1)]',
|
|
116
|
+
].join(' ');
|
|
117
|
+
|
|
118
|
+
export const PLAY_ICON_INNER =
|
|
119
|
+
'inline-flex items-center justify-center flex-shrink-0 size-[24px]';
|
|
120
|
+
|
|
121
|
+
/** Center row wrapping used when the play button is centered and no leading/trailing decoration. */
|
|
122
|
+
export const VIDEO_CENTER_INNER =
|
|
123
|
+
'flex-1 flex items-center justify-center';
|
|
124
|
+
|
|
125
|
+
/* ── Video footer (duration pill) ─────────────────────────────── */
|
|
126
|
+
|
|
127
|
+
export const VIDEO_FOOTER_ROW = 'relative flex flex-row items-center w-full h-[20px]';
|
|
128
|
+
|
|
129
|
+
export const DURATION_PILL = [
|
|
130
|
+
'inline-flex items-center gap-[0px] ms-auto',
|
|
131
|
+
'px-spacing-lg py-[3px]',
|
|
132
|
+
'rounded-[6px]',
|
|
133
|
+
// alpha-white-50 (rgba(255,255,255,0.5))
|
|
134
|
+
'bg-[rgba(255,255,255,0.5)]',
|
|
135
|
+
// text-oncolor-primary (#fff)
|
|
136
|
+
'text-white',
|
|
137
|
+
// Text 2xs Semibold
|
|
138
|
+
'text-text-2xs font-[600] leading-[14px] whitespace-nowrap',
|
|
139
|
+
].join(' ');
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
Children,
|
|
5
|
+
forwardRef,
|
|
6
|
+
useCallback,
|
|
7
|
+
useEffect,
|
|
8
|
+
useId,
|
|
9
|
+
useMemo,
|
|
10
|
+
useRef,
|
|
11
|
+
useState,
|
|
12
|
+
} from 'react';
|
|
13
|
+
import { cn } from '../../lib/cn';
|
|
14
|
+
import { CarouselArrow } from '../CarouselArrow/CarouselArrow';
|
|
15
|
+
import { CarouselControlsGroup } from '../CarouselControlsGroup/CarouselControlsGroup';
|
|
16
|
+
import type { CarouselProps } from './Carousel.types';
|
|
17
|
+
import {
|
|
18
|
+
ROOT_CLASSES,
|
|
19
|
+
ROW_CLASSES,
|
|
20
|
+
VIEWPORT_CLASSES,
|
|
21
|
+
TRACK_CLASSES,
|
|
22
|
+
SLIDE_CLASSES,
|
|
23
|
+
DOTS_ROW_CLASSES,
|
|
24
|
+
} from './Carousel.variants';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Carousel — a desktop carousel that composes the package `CarouselArrow` and
|
|
28
|
+
* `CarouselControlsGroup` around a slide track. Supports controlled and
|
|
29
|
+
* uncontrolled active index, optional looping, autoplay, and RTL — the slide
|
|
30
|
+
* translation flips automatically under `dir="rtl"`.
|
|
31
|
+
*
|
|
32
|
+
* Each direct child of `<Carousel>` is rendered as one slide.
|
|
33
|
+
*/
|
|
34
|
+
export const Carousel = forwardRef<HTMLDivElement, CarouselProps>(function Carousel(
|
|
35
|
+
{
|
|
36
|
+
children,
|
|
37
|
+
activeIndex,
|
|
38
|
+
defaultIndex = 0,
|
|
39
|
+
onChange,
|
|
40
|
+
showArrows = true,
|
|
41
|
+
showDots = true,
|
|
42
|
+
dotsVariant = 'brand',
|
|
43
|
+
dotsSize = 'sm',
|
|
44
|
+
arrowVariant = 'brand',
|
|
45
|
+
arrowSize = 'md',
|
|
46
|
+
loop = false,
|
|
47
|
+
autoplayMs,
|
|
48
|
+
ariaLabel = 'Carousel',
|
|
49
|
+
className,
|
|
50
|
+
...rest
|
|
51
|
+
},
|
|
52
|
+
ref,
|
|
53
|
+
) {
|
|
54
|
+
const slides = useMemo(() => Children.toArray(children), [children]);
|
|
55
|
+
const count = slides.length;
|
|
56
|
+
|
|
57
|
+
const [uncontrolled, setUncontrolled] = useState(() =>
|
|
58
|
+
Math.min(Math.max(0, defaultIndex), Math.max(0, count - 1)),
|
|
59
|
+
);
|
|
60
|
+
const isControlled = activeIndex !== undefined;
|
|
61
|
+
const index = isControlled ? Math.min(Math.max(0, activeIndex!), Math.max(0, count - 1)) : uncontrolled;
|
|
62
|
+
const reactId = useId();
|
|
63
|
+
|
|
64
|
+
// Detect RTL from the rendered DOM so the translate direction flips.
|
|
65
|
+
const viewportRef = useRef<HTMLDivElement | null>(null);
|
|
66
|
+
const [isRtl, setIsRtl] = useState(false);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
const el = viewportRef.current;
|
|
69
|
+
if (!el) return;
|
|
70
|
+
const dir = getComputedStyle(el).direction;
|
|
71
|
+
setIsRtl(dir === 'rtl');
|
|
72
|
+
}, []);
|
|
73
|
+
|
|
74
|
+
const setIndex = useCallback(
|
|
75
|
+
(next: number) => {
|
|
76
|
+
if (count === 0) return;
|
|
77
|
+
let target = next;
|
|
78
|
+
if (loop) {
|
|
79
|
+
target = ((next % count) + count) % count;
|
|
80
|
+
} else {
|
|
81
|
+
target = Math.min(Math.max(0, next), count - 1);
|
|
82
|
+
}
|
|
83
|
+
if (!isControlled) setUncontrolled(target);
|
|
84
|
+
onChange?.(target);
|
|
85
|
+
},
|
|
86
|
+
[count, loop, isControlled, onChange],
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
const goPrev = useCallback(() => setIndex(index - 1), [index, setIndex]);
|
|
90
|
+
const goNext = useCallback(() => setIndex(index + 1), [index, setIndex]);
|
|
91
|
+
|
|
92
|
+
/* ── Autoplay ─────────────────────────────────────────────── */
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
if (!autoplayMs || autoplayMs <= 0 || count <= 1) return;
|
|
95
|
+
const id = window.setInterval(() => {
|
|
96
|
+
setIndex(loop ? index + 1 : (index + 1) % count);
|
|
97
|
+
}, autoplayMs);
|
|
98
|
+
return () => window.clearInterval(id);
|
|
99
|
+
}, [autoplayMs, count, index, loop, setIndex]);
|
|
100
|
+
|
|
101
|
+
const canPrev = loop || index > 0;
|
|
102
|
+
const canNext = loop || index < count - 1;
|
|
103
|
+
|
|
104
|
+
// Translate is negative in LTR, positive in RTL (because the track visually
|
|
105
|
+
// flows right-to-left under dir="rtl" and we want to move it the opposite way).
|
|
106
|
+
const translatePct = (isRtl ? 1 : -1) * index * 100;
|
|
107
|
+
|
|
108
|
+
return (
|
|
109
|
+
<section
|
|
110
|
+
ref={ref}
|
|
111
|
+
data-slot="carousel"
|
|
112
|
+
aria-roledescription="carousel"
|
|
113
|
+
aria-label={ariaLabel}
|
|
114
|
+
className={cn(ROOT_CLASSES, className)}
|
|
115
|
+
{...rest}
|
|
116
|
+
>
|
|
117
|
+
<div className={ROW_CLASSES}>
|
|
118
|
+
{showArrows ? (
|
|
119
|
+
<CarouselArrow
|
|
120
|
+
direction="previous"
|
|
121
|
+
size={arrowSize}
|
|
122
|
+
variant={arrowVariant}
|
|
123
|
+
disabled={!canPrev}
|
|
124
|
+
onClick={goPrev}
|
|
125
|
+
aria-controls={`${reactId}-viewport`}
|
|
126
|
+
/>
|
|
127
|
+
) : null}
|
|
128
|
+
|
|
129
|
+
<div
|
|
130
|
+
ref={viewportRef}
|
|
131
|
+
id={`${reactId}-viewport`}
|
|
132
|
+
data-slot="carousel-viewport"
|
|
133
|
+
className={VIEWPORT_CLASSES}
|
|
134
|
+
aria-live={autoplayMs ? 'off' : 'polite'}
|
|
135
|
+
>
|
|
136
|
+
<div
|
|
137
|
+
data-slot="carousel-track"
|
|
138
|
+
className={TRACK_CLASSES}
|
|
139
|
+
style={{ transform: `translateX(${translatePct}%)` }}
|
|
140
|
+
>
|
|
141
|
+
{slides.map((slide, i) => (
|
|
142
|
+
<div
|
|
143
|
+
key={i}
|
|
144
|
+
data-slot="carousel-slide"
|
|
145
|
+
role="group"
|
|
146
|
+
aria-roledescription="slide"
|
|
147
|
+
aria-label={`${i + 1} of ${count}`}
|
|
148
|
+
aria-hidden={i !== index}
|
|
149
|
+
className={SLIDE_CLASSES}
|
|
150
|
+
>
|
|
151
|
+
{slide}
|
|
152
|
+
</div>
|
|
153
|
+
))}
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
|
|
157
|
+
{showArrows ? (
|
|
158
|
+
<CarouselArrow
|
|
159
|
+
direction="next"
|
|
160
|
+
size={arrowSize}
|
|
161
|
+
variant={arrowVariant}
|
|
162
|
+
disabled={!canNext}
|
|
163
|
+
onClick={goNext}
|
|
164
|
+
aria-controls={`${reactId}-viewport`}
|
|
165
|
+
/>
|
|
166
|
+
) : null}
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
{showDots && count > 1 ? (
|
|
170
|
+
<div className={DOTS_ROW_CLASSES}>
|
|
171
|
+
<CarouselControlsGroup
|
|
172
|
+
count={count}
|
|
173
|
+
activeIndex={index}
|
|
174
|
+
onChange={setIndex}
|
|
175
|
+
size={dotsSize}
|
|
176
|
+
variant={dotsVariant}
|
|
177
|
+
/>
|
|
178
|
+
</div>
|
|
179
|
+
) : null}
|
|
180
|
+
</section>
|
|
181
|
+
);
|
|
182
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import type {
|
|
3
|
+
CarouselControlsGroupSize,
|
|
4
|
+
CarouselControlsGroupStyle,
|
|
5
|
+
} from '../CarouselControlsGroup/CarouselControlsGroup.types';
|
|
6
|
+
import type {
|
|
7
|
+
CarouselArrowSize,
|
|
8
|
+
CarouselArrowVariant,
|
|
9
|
+
} from '../CarouselArrow/CarouselArrow.types';
|
|
10
|
+
|
|
11
|
+
export interface CarouselProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
12
|
+
/** Slides to render. Each child is treated as a single slide. */
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
/** Controlled active index. If omitted, the carousel manages its own state. */
|
|
15
|
+
activeIndex?: number;
|
|
16
|
+
/** Initial slide index when uncontrolled. @default 0 */
|
|
17
|
+
defaultIndex?: number;
|
|
18
|
+
/** Called whenever the active slide changes. */
|
|
19
|
+
onChange?: (index: number) => void;
|
|
20
|
+
/** Show left/right arrow buttons on the sides. @default true */
|
|
21
|
+
showArrows?: boolean;
|
|
22
|
+
/** Show pagination dots below the slides. @default true */
|
|
23
|
+
showDots?: boolean;
|
|
24
|
+
/** Visual style of the pagination dots. @default 'brand' */
|
|
25
|
+
dotsVariant?: CarouselControlsGroupStyle;
|
|
26
|
+
/** Size of the pagination dots. @default 'sm' */
|
|
27
|
+
dotsSize?: CarouselControlsGroupSize;
|
|
28
|
+
/** Visual style of the arrows. @default 'brand' */
|
|
29
|
+
arrowVariant?: CarouselArrowVariant;
|
|
30
|
+
/** Size of the arrows. @default 'md' */
|
|
31
|
+
arrowSize?: CarouselArrowSize;
|
|
32
|
+
/** Wrap around when navigating past the first/last slide. @default false */
|
|
33
|
+
loop?: boolean;
|
|
34
|
+
/** Auto-advance interval in ms. 0 / undefined disables autoplay. */
|
|
35
|
+
autoplayMs?: number;
|
|
36
|
+
/** Accessible label for the carousel region. */
|
|
37
|
+
ariaLabel?: string;
|
|
38
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Outer region wrapper. */
|
|
2
|
+
export const ROOT_CLASSES = 'relative w-full';
|
|
3
|
+
|
|
4
|
+
/** Row holding the optional start arrow, the slide viewport, and the end arrow. */
|
|
5
|
+
export const ROW_CLASSES = 'flex w-full items-center gap-spacing-md';
|
|
6
|
+
|
|
7
|
+
/** Viewport that clips slides; slides translate horizontally inside it. */
|
|
8
|
+
export const VIEWPORT_CLASSES = 'relative w-full overflow-hidden';
|
|
9
|
+
|
|
10
|
+
/** Flex track that holds every slide side-by-side. */
|
|
11
|
+
export const TRACK_CLASSES = 'flex w-full transition-transform duration-300 ease-out';
|
|
12
|
+
|
|
13
|
+
/** Each slide occupies the full viewport width. */
|
|
14
|
+
export const SLIDE_CLASSES = 'w-full shrink-0';
|
|
15
|
+
|
|
16
|
+
/** Dots row below the slides. */
|
|
17
|
+
export const DOTS_ROW_CLASSES = 'mt-spacing-lg flex w-full justify-center';
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { cn } from '../../lib/cn';
|
|
5
|
+
import type { CarouselArrowProps } from './CarouselArrow.types';
|
|
6
|
+
import {
|
|
7
|
+
SIZE_CLASSES,
|
|
8
|
+
ICON_SIZE_CLASSES,
|
|
9
|
+
VARIANT_CLASSES,
|
|
10
|
+
DISABLED_CLASSES,
|
|
11
|
+
FOCUS_RING_CLASSES,
|
|
12
|
+
} from './CarouselArrow.variants';
|
|
13
|
+
import { ArrowLeft01Icon, ArrowRight01Icon } from '../../icons/IconFactory';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* CarouselArrow — a round navigation button for carousels. Use `direction`
|
|
17
|
+
* (`previous` / `next`) instead of `left` / `right` so the arrow flips
|
|
18
|
+
* automatically under RTL. Five visual variants, three sizes.
|
|
19
|
+
*/
|
|
20
|
+
export const CarouselArrow = forwardRef<HTMLButtonElement, CarouselArrowProps>(
|
|
21
|
+
function CarouselArrow(
|
|
22
|
+
{
|
|
23
|
+
direction = 'next',
|
|
24
|
+
size = 'md',
|
|
25
|
+
variant = 'brand',
|
|
26
|
+
disabled = false,
|
|
27
|
+
ariaLabel,
|
|
28
|
+
className,
|
|
29
|
+
...rest
|
|
30
|
+
},
|
|
31
|
+
ref,
|
|
32
|
+
) {
|
|
33
|
+
const isDisabled = disabled;
|
|
34
|
+
const variantClass = isDisabled
|
|
35
|
+
? DISABLED_CLASSES[variant]
|
|
36
|
+
: VARIANT_CLASSES[variant];
|
|
37
|
+
|
|
38
|
+
const Icon = direction === 'previous' ? ArrowLeft01Icon : ArrowRight01Icon;
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<button
|
|
42
|
+
ref={ref}
|
|
43
|
+
type="button"
|
|
44
|
+
data-slot="carousel-arrow"
|
|
45
|
+
data-direction={direction}
|
|
46
|
+
data-size={size}
|
|
47
|
+
data-variant={variant}
|
|
48
|
+
disabled={isDisabled}
|
|
49
|
+
aria-label={
|
|
50
|
+
ariaLabel ?? (direction === 'next' ? 'Next slide' : 'Previous slide')
|
|
51
|
+
}
|
|
52
|
+
className={cn(
|
|
53
|
+
'inline-flex shrink-0 items-center justify-center rounded-full motion-feedback',
|
|
54
|
+
isDisabled ? 'cursor-not-allowed' : 'cursor-pointer',
|
|
55
|
+
SIZE_CLASSES[size],
|
|
56
|
+
variantClass,
|
|
57
|
+
!isDisabled && FOCUS_RING_CLASSES[variant],
|
|
58
|
+
className,
|
|
59
|
+
)}
|
|
60
|
+
{...rest}
|
|
61
|
+
>
|
|
62
|
+
<Icon className={cn(ICON_SIZE_CLASSES[size], 'rtl:-scale-x-100')} />
|
|
63
|
+
</button>
|
|
64
|
+
);
|
|
65
|
+
},
|
|
66
|
+
);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
|
|
3
|
+
export type CarouselArrowSize = 'sm' | 'md' | 'lg';
|
|
4
|
+
|
|
5
|
+
/** Arrow direction. Logical: `previous` / `next` flip with RTL; `left`/`right` are physical. */
|
|
6
|
+
export type CarouselArrowDirection = 'previous' | 'next';
|
|
7
|
+
|
|
8
|
+
/** Visual style of the round arrow button. */
|
|
9
|
+
export type CarouselArrowVariant =
|
|
10
|
+
| 'brand'
|
|
11
|
+
| 'neutral'
|
|
12
|
+
| 'subtle'
|
|
13
|
+
| 'outline'
|
|
14
|
+
| 'on-color';
|
|
15
|
+
|
|
16
|
+
export interface CarouselArrowProps
|
|
17
|
+
extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {
|
|
18
|
+
/** Which direction the arrow points. @default 'next' */
|
|
19
|
+
direction?: CarouselArrowDirection;
|
|
20
|
+
/** Size of the button. @default 'md' */
|
|
21
|
+
size?: CarouselArrowSize;
|
|
22
|
+
/** Visual style. @default 'brand' */
|
|
23
|
+
variant?: CarouselArrowVariant;
|
|
24
|
+
/** Accessible label. Defaults to "Previous slide" / "Next slide". */
|
|
25
|
+
ariaLabel?: string;
|
|
26
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { CarouselArrowSize, CarouselArrowVariant } from './CarouselArrow.types';
|
|
2
|
+
|
|
3
|
+
/** Button dimensions per size (Figma: 32 / 40 / 48). */
|
|
4
|
+
export const SIZE_CLASSES: Record<CarouselArrowSize, string> = {
|
|
5
|
+
sm: 'size-[32px]',
|
|
6
|
+
md: 'size-[40px]',
|
|
7
|
+
lg: 'size-[48px]',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/** Inner chevron icon dimensions per size (uses global icon tokens). */
|
|
11
|
+
export const ICON_SIZE_CLASSES: Record<CarouselArrowSize, string> = {
|
|
12
|
+
sm: 'size-icon-sm',
|
|
13
|
+
md: 'size-icon-md',
|
|
14
|
+
lg: 'size-icon-lg',
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/** Enabled variant styles (background/border/text + hover/active, light + dark). */
|
|
18
|
+
export const VARIANT_CLASSES: Record<CarouselArrowVariant, string> = {
|
|
19
|
+
brand: [
|
|
20
|
+
'bg-[rgba(27,131,84,1)] text-white',
|
|
21
|
+
'hover:bg-[rgba(22,106,69,1)]',
|
|
22
|
+
'active:bg-[rgba(16,70,49,1)]',
|
|
23
|
+
'dark:bg-[rgba(34,164,105,1)] dark:text-white',
|
|
24
|
+
'dark:hover:bg-[rgba(22,106,69,1)]',
|
|
25
|
+
'dark:active:bg-[rgba(16,70,49,1)]',
|
|
26
|
+
].join(' '),
|
|
27
|
+
neutral: [
|
|
28
|
+
'bg-[rgba(243,244,246,1)] text-[rgba(13,18,28,1)]',
|
|
29
|
+
'hover:bg-[rgba(243,244,246,1)]',
|
|
30
|
+
'active:bg-[rgba(229,231,235,1)]',
|
|
31
|
+
'dark:bg-[rgba(44,57,79,1)] dark:text-[rgba(229,231,235,1)]',
|
|
32
|
+
'dark:hover:bg-[rgba(55,65,81,1)]',
|
|
33
|
+
'dark:active:bg-[rgba(75,85,99,1)]',
|
|
34
|
+
].join(' '),
|
|
35
|
+
subtle: [
|
|
36
|
+
'bg-transparent text-[rgba(31,42,55,1)]',
|
|
37
|
+
'hover:bg-[rgba(243,244,246,1)]',
|
|
38
|
+
'active:bg-[rgba(229,231,235,1)]',
|
|
39
|
+
'dark:bg-transparent dark:text-[rgba(229,231,235,1)]',
|
|
40
|
+
'dark:hover:bg-[rgba(29,41,57,1)]',
|
|
41
|
+
'dark:active:bg-[rgba(44,57,79,1)]',
|
|
42
|
+
].join(' '),
|
|
43
|
+
outline: [
|
|
44
|
+
'border border-[rgba(210,214,219,1)] bg-transparent text-[rgba(31,42,55,1)]',
|
|
45
|
+
'hover:bg-[rgba(249,250,251,1)]',
|
|
46
|
+
'active:bg-[rgba(229,231,235,1)]',
|
|
47
|
+
'dark:border-[rgba(55,65,81,1)] dark:text-[rgba(229,231,235,1)]',
|
|
48
|
+
'dark:hover:bg-[rgba(29,41,57,1)]',
|
|
49
|
+
'dark:active:bg-[rgba(44,57,79,1)]',
|
|
50
|
+
].join(' '),
|
|
51
|
+
'on-color': [
|
|
52
|
+
'bg-[rgba(255,255,255,0.2)] text-white backdrop-blur-sm',
|
|
53
|
+
'hover:bg-[rgba(255,255,255,0.3)]',
|
|
54
|
+
'active:bg-[rgba(255,255,255,0.4)]',
|
|
55
|
+
].join(' '),
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/** Disabled styles per variant. */
|
|
59
|
+
export const DISABLED_CLASSES: Record<CarouselArrowVariant, string> = {
|
|
60
|
+
brand:
|
|
61
|
+
'bg-[rgba(229,231,235,1)] text-[rgba(157,164,174,1)] dark:bg-[rgba(44,57,79,1)] dark:text-[rgba(75,85,99,1)]',
|
|
62
|
+
neutral:
|
|
63
|
+
'bg-[rgba(229,231,235,1)] text-[rgba(157,164,174,1)] dark:bg-[rgba(44,57,79,1)] dark:text-[rgba(75,85,99,1)]',
|
|
64
|
+
subtle:
|
|
65
|
+
'bg-[rgba(249,250,251,1)] text-[rgba(157,164,174,1)] dark:bg-[rgba(17,25,39,1)] dark:text-[rgba(75,85,99,1)]',
|
|
66
|
+
outline:
|
|
67
|
+
'border border-[rgba(229,231,235,1)] bg-transparent text-[rgba(157,164,174,1)] dark:border-[rgba(44,57,79,1)] dark:text-[rgba(75,85,99,1)]',
|
|
68
|
+
'on-color': 'bg-[rgba(255,255,255,0.1)] text-[rgba(255,255,255,0.4)]',
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/** Focus ring per variant — brand uses green, neutral/subtle/outline use near-black, on-color uses white. */
|
|
72
|
+
export const FOCUS_RING_CLASSES: Record<CarouselArrowVariant, string> = {
|
|
73
|
+
brand:
|
|
74
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[rgba(27,131,84,0.7)] focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-[rgba(17,25,39,1)]',
|
|
75
|
+
neutral:
|
|
76
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[rgba(22,22,22,0.7)] focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-[rgba(17,25,39,1)]',
|
|
77
|
+
subtle:
|
|
78
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[rgba(22,22,22,0.7)] focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-[rgba(17,25,39,1)]',
|
|
79
|
+
outline:
|
|
80
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[rgba(22,22,22,0.7)] focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-[rgba(17,25,39,1)]',
|
|
81
|
+
'on-color':
|
|
82
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[rgba(255,255,255,0.7)] focus-visible:ring-offset-2 focus-visible:ring-offset-transparent',
|
|
83
|
+
};
|