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,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NavBar.variants.ts
|
|
3
|
+
*
|
|
4
|
+
* Token mapping from Figma node 4950-53598 (Nav Bar).
|
|
5
|
+
*
|
|
6
|
+
* ── Styles ───────────────────────────────────────────────────────────────────
|
|
7
|
+
* default — white bg, dark text; MenuButtonItem variant="transparent"
|
|
8
|
+
* gray — neutral-100 bg, dark text; MenuButtonItem variant="filled"
|
|
9
|
+
* brand — green bg (#1b8354), white text; all sub-components brand
|
|
10
|
+
*
|
|
11
|
+
* ── States ───────────────────────────────────────────────────────────────────
|
|
12
|
+
* expanded — full sidebar (255 px desktop, 320 px mobile overlay)
|
|
13
|
+
* collapsed — icon-only strip (64 px desktop, full-width 68 px mobile bar)
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { NavBarVariant } from './NavBar.types';
|
|
17
|
+
import type { MenuButtonItemVariant } from '../MenuButtonItem/MenuButtonItem.types';
|
|
18
|
+
import type { HeaderItemVariant } from '../HeaderItem/HeaderItem.types';
|
|
19
|
+
import type { FooterItemVariant } from '../FooterItem/FooterItem.types';
|
|
20
|
+
import type { NavLabelStyle } from '../NavLabel/NavLabel.types';
|
|
21
|
+
|
|
22
|
+
/* ── Sidebar background ───────────────────────────────────────────────────── */
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Background color applied to the `<nav>` root.
|
|
26
|
+
*
|
|
27
|
+
* Token mapping:
|
|
28
|
+
* default → Background/background-white #ffffff
|
|
29
|
+
* gray → Background/background-neutral-100 #f3f4f6
|
|
30
|
+
* brand → Background/background-primary #1b8354
|
|
31
|
+
*/
|
|
32
|
+
export const SIDEBAR_BG: Record<NavBarVariant, string> = {
|
|
33
|
+
default: 'bg-white dark:bg-[rgba(17,24,39,1)]',
|
|
34
|
+
gray: 'bg-[rgba(249,250,251,1)] dark:bg-[rgba(17,24,39,1)]',
|
|
35
|
+
brand: 'bg-[rgba(27,131,84,1)] dark:bg-[rgba(27,131,84,1)]',
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/* ── Sub-component variant derivation ────────────────────────────────────── */
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Maps NavBar style → MenuButtonItem variant.
|
|
42
|
+
*
|
|
43
|
+
* default → 'transparent' (items have no bg, hover = subtle tint)
|
|
44
|
+
* gray → 'filled' (items have white card bg on gray sidebar)
|
|
45
|
+
* brand → 'brand-background' (items white text on green sidebar)
|
|
46
|
+
*/
|
|
47
|
+
export const ITEM_VARIANT: Record<NavBarVariant, MenuButtonItemVariant> = {
|
|
48
|
+
default: 'transparent',
|
|
49
|
+
gray: 'filled',
|
|
50
|
+
brand: 'brand-background',
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Maps NavBar style → HeaderItem / FooterItem variant.
|
|
55
|
+
*
|
|
56
|
+
* default / gray → 'default' (dark text)
|
|
57
|
+
* brand → 'brand' (white text)
|
|
58
|
+
*/
|
|
59
|
+
export const HEADER_FOOTER_VARIANT: Record<NavBarVariant, HeaderItemVariant> = {
|
|
60
|
+
default: 'default',
|
|
61
|
+
gray: 'default',
|
|
62
|
+
brand: 'brand',
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export const FOOTER_VARIANT: Record<NavBarVariant, FooterItemVariant> = {
|
|
66
|
+
default: 'default',
|
|
67
|
+
gray: 'default',
|
|
68
|
+
brand: 'brand',
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Maps NavBar style → NavLabel style (section headings inside groups).
|
|
73
|
+
*
|
|
74
|
+
* default / gray → 'default' (dark text, 70 % opacity)
|
|
75
|
+
* brand → 'brand' (white text, 70 % opacity)
|
|
76
|
+
*/
|
|
77
|
+
export const LABEL_STYLE: Record<NavBarVariant, NavLabelStyle> = {
|
|
78
|
+
default: 'default',
|
|
79
|
+
gray: 'default',
|
|
80
|
+
brand: 'brand',
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/* ── Layout helpers ───────────────────────────────────────────────────────── */
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Shared base for the `<nav>` element in all states.
|
|
87
|
+
* `flex flex-col` stacks header → content → footer.
|
|
88
|
+
* `transition-[width]` animates the collapse/expand.
|
|
89
|
+
*/
|
|
90
|
+
export const NAV_BASE =
|
|
91
|
+
'flex flex-col overflow-hidden transition-[width] duration-200 ease-in-out';
|
|
92
|
+
|
|
93
|
+
/** Expanded desktop sidebar — 255 px wide. */
|
|
94
|
+
export const NAV_EXPANDED_DESKTOP = 'w-[255px] h-full';
|
|
95
|
+
|
|
96
|
+
/** Collapsed desktop sidebar — 64 px wide, items centered. */
|
|
97
|
+
export const NAV_COLLAPSED_DESKTOP = 'w-[64px] h-full items-center';
|
|
98
|
+
|
|
99
|
+
/** Mobile expanded drawer — fixed 320 px overlay from the inline-start edge. */
|
|
100
|
+
export const NAV_MOBILE_EXPANDED =
|
|
101
|
+
'fixed inset-y-0 start-0 z-50 w-[320px] h-full';
|
|
102
|
+
|
|
103
|
+
/** Mobile collapsed — full-width 68 px header strip only. */
|
|
104
|
+
export const NAV_MOBILE_COLLAPSED = 'w-full';
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Semi-transparent backdrop shown behind the mobile expanded drawer.
|
|
108
|
+
* Figma: Colors/Alpha/alpha-black-40 → rgba(22,22,22,0.4)
|
|
109
|
+
*/
|
|
110
|
+
export const MOBILE_BACKDROP =
|
|
111
|
+
'fixed inset-0 z-40 bg-[rgba(22,22,22,0.4)]';
|
|
112
|
+
|
|
113
|
+
/* ── Content / scroll area ────────────────────────────────────────────────── */
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Scrollable nav-groups area in the expanded desktop / mobile expanded states.
|
|
117
|
+
* `flex-1 min-h-0` makes it grow to fill remaining height.
|
|
118
|
+
* `overflow-y-auto` enables scrolling when there are many groups.
|
|
119
|
+
* `px-spacing-xl` matches Figma's 16 px horizontal padding inside the sidebar.
|
|
120
|
+
*/
|
|
121
|
+
export const CONTENT_AREA_EXPANDED =
|
|
122
|
+
'flex-1 min-h-0 overflow-y-auto px-spacing-xl py-spacing-none flex flex-col';
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Content area in collapsed desktop mode.
|
|
126
|
+
* No horizontal padding — items are centered via the `items-center` on `<nav>`.
|
|
127
|
+
*/
|
|
128
|
+
export const CONTENT_AREA_COLLAPSED =
|
|
129
|
+
'flex-1 min-h-0 overflow-y-auto w-full flex flex-col items-center';
|
|
130
|
+
|
|
131
|
+
/* ── Toggle button (hamburger / close on mobile) ─────────────────────────── */
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Shared base for the hamburger and close toggle buttons.
|
|
135
|
+
* Used as `actionIcon` inside `HeaderItem`.
|
|
136
|
+
* Sizing is inherited from the HeaderItem's icon slot (`size-icon-md`).
|
|
137
|
+
*/
|
|
138
|
+
export const TOGGLE_BTN_BASE =
|
|
139
|
+
'inline-flex items-center justify-center w-full h-full focus:outline-none';
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { forwardRef, Fragment, isValidElement, cloneElement } from 'react';
|
|
4
|
+
import type { Key, ReactElement, ReactNode } from 'react';
|
|
5
|
+
import { cn } from '../../lib/cn';
|
|
6
|
+
import { NavLogoPlaceholder } from '../NavLogoPlaceholder';
|
|
7
|
+
import { NavHeaderMenuButton } from '../NavHeaderMenuButton';
|
|
8
|
+
import { Divider } from '../Divider';
|
|
9
|
+
import type { NavHeaderProps } from './NavHeader.types';
|
|
10
|
+
import {
|
|
11
|
+
ACTIONS_DESKTOP,
|
|
12
|
+
BAR_DESKTOP,
|
|
13
|
+
BAR_MOBILE,
|
|
14
|
+
DRAWER_BODY,
|
|
15
|
+
DRAWER_FOOTER,
|
|
16
|
+
DRAWER_MOBILE,
|
|
17
|
+
ITEMS_ROW,
|
|
18
|
+
MENU_PANEL_COLUMN,
|
|
19
|
+
MENU_PANEL_DESKTOP,
|
|
20
|
+
ROOT,
|
|
21
|
+
SEARCH_DESKTOP,
|
|
22
|
+
} from './NavHeader.variants';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* NavHeader — the top-of-page navigation shell.
|
|
26
|
+
*
|
|
27
|
+
* A pure composition of existing `sdaia-ui` building blocks:
|
|
28
|
+
* - `NavLogoPlaceholder` — brand / logo slot
|
|
29
|
+
* - `NavHeaderMenuItem` — inline menu items (desktop + mobile drawer)
|
|
30
|
+
* - `NavHeaderMenuButton` — mobile hamburger / × toggle
|
|
31
|
+
* - `NavHeaderActions` — Log in / Sign Up / Avatar cluster
|
|
32
|
+
* - `TextInput` — search field (consumer passes a fully
|
|
33
|
+
* configured instance)
|
|
34
|
+
* - `NavHeaderDropdownItemList` / `NavHeaderDropdownItem` /
|
|
35
|
+
* `NavHeaderMenuCard` — optional dropdown / drawer content
|
|
36
|
+
* - `Divider` — separators between stacked mobile rows
|
|
37
|
+
*
|
|
38
|
+
* The shell itself owns only *layout* — spacing, positioning, and the
|
|
39
|
+
* plumbing between `menuOpen` and the mobile toggle button. Every
|
|
40
|
+
* interactive state (hover, focus, disabled, open) lives inside the
|
|
41
|
+
* composed child components and flows through naturally. RTL is
|
|
42
|
+
* automatic because every spacing class uses logical properties
|
|
43
|
+
* (`ps-*`/`pe-*`, `inset-x-*`) and the child components already handle
|
|
44
|
+
* direction-sensitive content themselves.
|
|
45
|
+
*/
|
|
46
|
+
export const NavHeader = forwardRef<HTMLElement, NavHeaderProps>(
|
|
47
|
+
function NavHeader(
|
|
48
|
+
{
|
|
49
|
+
type = 'default',
|
|
50
|
+
mobile,
|
|
51
|
+
menuOpen = false,
|
|
52
|
+
onOpenChange,
|
|
53
|
+
logo,
|
|
54
|
+
items,
|
|
55
|
+
search,
|
|
56
|
+
actions,
|
|
57
|
+
menuContent,
|
|
58
|
+
mobileFooter,
|
|
59
|
+
className,
|
|
60
|
+
...rest
|
|
61
|
+
},
|
|
62
|
+
ref,
|
|
63
|
+
) {
|
|
64
|
+
const logoNode =
|
|
65
|
+
logo ?? <NavLogoPlaceholder size="medium" text="SDAIA" />;
|
|
66
|
+
|
|
67
|
+
/* Visibility model:
|
|
68
|
+
* mobile === undefined → render BOTH branches; CSS switches at `lg`
|
|
69
|
+
* mobile === true → mobile branch only (forced)
|
|
70
|
+
* mobile === false → desktop branch only (forced)
|
|
71
|
+
*/
|
|
72
|
+
const renderDesktop = mobile !== true;
|
|
73
|
+
const renderMobile = mobile !== false;
|
|
74
|
+
const responsive = mobile === undefined;
|
|
75
|
+
|
|
76
|
+
const showDesktopDropdown =
|
|
77
|
+
renderDesktop && type !== 'default' && menuContent != null;
|
|
78
|
+
const showMobileDrawer = renderMobile && menuOpen;
|
|
79
|
+
|
|
80
|
+
return (
|
|
81
|
+
<nav
|
|
82
|
+
ref={ref}
|
|
83
|
+
data-slot="nav-header"
|
|
84
|
+
data-type={type}
|
|
85
|
+
data-mobile={
|
|
86
|
+
mobile === true ? 'true' : mobile === false ? 'false' : 'auto'
|
|
87
|
+
}
|
|
88
|
+
data-open={menuOpen || undefined}
|
|
89
|
+
className={cn(ROOT, className)}
|
|
90
|
+
{...rest}
|
|
91
|
+
>
|
|
92
|
+
{/* ── Desktop branch ───────────────────────────────────────── */}
|
|
93
|
+
{renderDesktop ? (
|
|
94
|
+
<div
|
|
95
|
+
data-slot="nav-header-desktop"
|
|
96
|
+
className={responsive ? 'hidden lg:block' : undefined}
|
|
97
|
+
>
|
|
98
|
+
<div data-slot="nav-header-bar" className={BAR_DESKTOP}>
|
|
99
|
+
{logoNode}
|
|
100
|
+
|
|
101
|
+
{items && items.length > 0 ? (
|
|
102
|
+
<div data-slot="nav-header-items" className={ITEMS_ROW}>
|
|
103
|
+
{keyedItems(items)}
|
|
104
|
+
</div>
|
|
105
|
+
) : null}
|
|
106
|
+
|
|
107
|
+
{search ? (
|
|
108
|
+
<div data-slot="nav-header-search" className={SEARCH_DESKTOP}>
|
|
109
|
+
{search}
|
|
110
|
+
</div>
|
|
111
|
+
) : null}
|
|
112
|
+
|
|
113
|
+
{actions ? (
|
|
114
|
+
<div data-slot="nav-header-actions" className={ACTIONS_DESKTOP}>
|
|
115
|
+
{actions}
|
|
116
|
+
</div>
|
|
117
|
+
) : null}
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
{showDesktopDropdown ? (
|
|
121
|
+
<div
|
|
122
|
+
data-slot="nav-header-dropdown"
|
|
123
|
+
data-density={type === 'menu-compact' ? 'compact' : 'full'}
|
|
124
|
+
className={MENU_PANEL_DESKTOP}
|
|
125
|
+
>
|
|
126
|
+
{renderDropdownColumns(menuContent)}
|
|
127
|
+
</div>
|
|
128
|
+
) : null}
|
|
129
|
+
</div>
|
|
130
|
+
) : null}
|
|
131
|
+
|
|
132
|
+
{/* ── Mobile branch ────────────────────────────────────────── */}
|
|
133
|
+
{renderMobile ? (
|
|
134
|
+
<div
|
|
135
|
+
data-slot="nav-header-mobile"
|
|
136
|
+
className={responsive ? 'lg:hidden' : undefined}
|
|
137
|
+
>
|
|
138
|
+
<div data-slot="nav-header-bar" className={BAR_MOBILE}>
|
|
139
|
+
{logoNode}
|
|
140
|
+
<NavHeaderMenuButton
|
|
141
|
+
data-slot="nav-header-toggle"
|
|
142
|
+
opened={menuOpen}
|
|
143
|
+
onClick={() => onOpenChange?.(!menuOpen)}
|
|
144
|
+
aria-label={menuOpen ? 'Close menu' : 'Open menu'}
|
|
145
|
+
aria-expanded={menuOpen}
|
|
146
|
+
/>
|
|
147
|
+
</div>
|
|
148
|
+
|
|
149
|
+
{showMobileDrawer ? (
|
|
150
|
+
<div data-slot="nav-header-drawer" className={DRAWER_MOBILE}>
|
|
151
|
+
{search ? (
|
|
152
|
+
<div data-slot="nav-header-search">{search}</div>
|
|
153
|
+
) : null}
|
|
154
|
+
|
|
155
|
+
<div data-slot="nav-header-drawer-body" className={DRAWER_BODY}>
|
|
156
|
+
{renderMobileBody(items, menuContent)}
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
{(mobileFooter || actions) && (
|
|
160
|
+
<div
|
|
161
|
+
data-slot="nav-header-drawer-footer"
|
|
162
|
+
className={DRAWER_FOOTER}
|
|
163
|
+
>
|
|
164
|
+
{mobileFooter}
|
|
165
|
+
{actions}
|
|
166
|
+
</div>
|
|
167
|
+
)}
|
|
168
|
+
</div>
|
|
169
|
+
) : null}
|
|
170
|
+
</div>
|
|
171
|
+
) : null}
|
|
172
|
+
</nav>
|
|
173
|
+
);
|
|
174
|
+
},
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
NavHeader.displayName = 'NavHeader';
|
|
178
|
+
|
|
179
|
+
/* ───────────────────────────────────────────────────────────────
|
|
180
|
+
* Helpers
|
|
181
|
+
* ─────────────────────────────────────────────────────────────── */
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Render the mobile drawer body: menu items with any dropdown content
|
|
185
|
+
* injected *inline* directly after the item that has `open={true}`,
|
|
186
|
+
* with a `<Divider />` between every adjacent row.
|
|
187
|
+
*
|
|
188
|
+
* `items` holds `<NavHeaderMenuItem mobile />` nodes. When one of them
|
|
189
|
+
* has `open={true}` and `menuContent` is provided, `menuContent` is
|
|
190
|
+
* inserted immediately after that item so it expands accordion-style
|
|
191
|
+
* rather than appearing at the bottom of the list.
|
|
192
|
+
*
|
|
193
|
+
* If no item is open (or `menuContent` is null/undefined) the drawer
|
|
194
|
+
* renders only the items, with no trailing content block.
|
|
195
|
+
*/
|
|
196
|
+
function renderMobileBody(
|
|
197
|
+
items: ReadonlyArray<ReactNode> | undefined,
|
|
198
|
+
menuContent: ReactNode,
|
|
199
|
+
): ReactNode {
|
|
200
|
+
const rows: ReactNode[] = [];
|
|
201
|
+
|
|
202
|
+
if (items) {
|
|
203
|
+
for (const item of items) {
|
|
204
|
+
rows.push(item);
|
|
205
|
+
// Inject content immediately after the open item (accordion style)
|
|
206
|
+
if (
|
|
207
|
+
menuContent != null &&
|
|
208
|
+
isValidElement(item) &&
|
|
209
|
+
(item as ReactElement<{ open?: boolean }>).props?.open === true
|
|
210
|
+
) {
|
|
211
|
+
rows.push(menuContent);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return rows.map((row, idx) => {
|
|
217
|
+
const key = keyOf(row, idx);
|
|
218
|
+
return (
|
|
219
|
+
<Fragment key={key}>
|
|
220
|
+
{idx > 0 ? (
|
|
221
|
+
<Divider
|
|
222
|
+
lineType="horizontal"
|
|
223
|
+
color="neutral"
|
|
224
|
+
thickness="hairline"
|
|
225
|
+
/>
|
|
226
|
+
) : null}
|
|
227
|
+
{reKey(row, key)}
|
|
228
|
+
</Fragment>
|
|
229
|
+
);
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Wrap each top-level dropdown node in a column wrapper so the panel
|
|
235
|
+
* distributes any number of columns evenly. If the consumer passes a
|
|
236
|
+
* single `NavHeaderDropdownItemList`, it becomes a single column; two
|
|
237
|
+
* lists become two columns; and so on.
|
|
238
|
+
*
|
|
239
|
+
* If `menuContent` is a fragment-like array we unwrap it; if it's a
|
|
240
|
+
* single element we render it as a one-column panel.
|
|
241
|
+
*/
|
|
242
|
+
function renderDropdownColumns(menuContent: ReactNode): ReactNode {
|
|
243
|
+
const nodes = Array.isArray(menuContent) ? menuContent : [menuContent];
|
|
244
|
+
|
|
245
|
+
return nodes.map((node, idx) => {
|
|
246
|
+
const key = keyOf(node, idx);
|
|
247
|
+
return (
|
|
248
|
+
<div
|
|
249
|
+
key={key}
|
|
250
|
+
data-slot="nav-header-dropdown-column"
|
|
251
|
+
className={MENU_PANEL_COLUMN}
|
|
252
|
+
>
|
|
253
|
+
{reKey(node, key)}
|
|
254
|
+
</div>
|
|
255
|
+
);
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/** Preserve an explicit `key` if the consumer set one, else use a
|
|
260
|
+
* namespaced index so it cannot collide with a sibling's explicit key
|
|
261
|
+
* (e.g. items keyed "1", "2" plus an unkeyed menuContent at idx 2). */
|
|
262
|
+
function keyOf(node: ReactNode, fallback: number): Key {
|
|
263
|
+
if (isValidElement(node)) {
|
|
264
|
+
const el = node as ReactElement<{ key?: Key }>;
|
|
265
|
+
if (el.key != null) return el.key;
|
|
266
|
+
}
|
|
267
|
+
return `__nh-${fallback}`;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Stamp a key onto a React element without replacing the original
|
|
272
|
+
* (cloneElement preserves refs and props). Non-element children are
|
|
273
|
+
* returned unchanged — the Fragment / wrapper around them already
|
|
274
|
+
* carries the key.
|
|
275
|
+
*/
|
|
276
|
+
function reKey(node: ReactNode, key: Key): ReactNode {
|
|
277
|
+
if (isValidElement(node)) {
|
|
278
|
+
return cloneElement(node as ReactElement, { key });
|
|
279
|
+
}
|
|
280
|
+
return node;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Apply stable keys to the desktop item array so React stops warning
|
|
285
|
+
* about missing keys on list children the consumer passed in.
|
|
286
|
+
*/
|
|
287
|
+
function keyedItems(items: ReadonlyArray<ReactNode>): ReactNode {
|
|
288
|
+
return items.map((item, idx) => {
|
|
289
|
+
const key = keyOf(item, idx);
|
|
290
|
+
return reKey(item, key);
|
|
291
|
+
});
|
|
292
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Layout tier — drives the structure of the header bar and, when a menu
|
|
5
|
+
* panel is present, the visual density of the dropdown.
|
|
6
|
+
*
|
|
7
|
+
* - `default` → header bar only, no menu panel
|
|
8
|
+
* - `menu` → header bar + full menu panel (large multi-column
|
|
9
|
+
* dropdown on desktop, full drawer on mobile)
|
|
10
|
+
* - `menu-compact` → header bar + compact menu panel (2 columns + card
|
|
11
|
+
* on desktop, smaller drawer on mobile)
|
|
12
|
+
*
|
|
13
|
+
* The difference between `menu` and `menu-compact` is purely editorial —
|
|
14
|
+
* it lets the consumer pick the density that matches their content. The
|
|
15
|
+
* component does not generate the content; the consumer passes it in via
|
|
16
|
+
* `menuContent`.
|
|
17
|
+
*/
|
|
18
|
+
export type NavHeaderType = 'default' | 'menu' | 'menu-compact';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* NavHeader props.
|
|
22
|
+
*
|
|
23
|
+
* Extends `HTMLAttributes<HTMLElement>` (minus `title`, which we shadow so
|
|
24
|
+
* consumers can pass a richer ReactNode label for the mobile footer block).
|
|
25
|
+
*
|
|
26
|
+
* The component is *pure composition* — every interactive sub-element
|
|
27
|
+
* is a separate `sdaia-ui` component that the consumer passes in:
|
|
28
|
+
*
|
|
29
|
+
* - `logo` → default: `<NavLogoPlaceholder size="medium" text="SDAIA" />`
|
|
30
|
+
* - `items` → array of `<NavHeaderMenuItem />` (desktop row / mobile stack)
|
|
31
|
+
* - `search` → a `<TextInput placeholder="Search" />`
|
|
32
|
+
* - `actions` → a `<NavHeaderActions />`
|
|
33
|
+
* - `menuContent` → what to render inside the expanded dropdown/drawer.
|
|
34
|
+
* Typically `<NavHeaderDropdownItemList />`,
|
|
35
|
+
* `<NavHeaderMenuCard />`, or any combination.
|
|
36
|
+
* - `mobileFooter` → optional footer block for the mobile drawer
|
|
37
|
+
* (links + NavHeaderActions).
|
|
38
|
+
*
|
|
39
|
+
* This keeps NavHeader agnostic to concrete content (labels, hrefs, copy,
|
|
40
|
+
* localisation) and prevents us from duplicating the public APIs of the
|
|
41
|
+
* reused components.
|
|
42
|
+
*/
|
|
43
|
+
export interface NavHeaderProps
|
|
44
|
+
extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
45
|
+
/**
|
|
46
|
+
* Visual type — controls which menu-panel density is rendered when
|
|
47
|
+
* `menuOpen` is true. When `type='default'` the menu panel is never
|
|
48
|
+
* rendered regardless of `menuOpen`.
|
|
49
|
+
* @default 'default'
|
|
50
|
+
*/
|
|
51
|
+
type?: NavHeaderType;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Layout override.
|
|
55
|
+
*
|
|
56
|
+
* - `undefined` (default — recommended for app code)
|
|
57
|
+
* Auto-responsive: renders BOTH branches and uses CSS to switch
|
|
58
|
+
* at the `lg` breakpoint (≥1024 px → desktop bar, <1024 px →
|
|
59
|
+
* mobile bar + drawer). The same `<NavHeader />` adapts to any
|
|
60
|
+
* viewport without a JS resize listener.
|
|
61
|
+
* - `true` → force the mobile layout regardless of viewport.
|
|
62
|
+
* Useful for documentation demos that want to showcase the
|
|
63
|
+
* mobile variant inside a desktop preview frame.
|
|
64
|
+
* - `false` → force the desktop layout regardless of viewport.
|
|
65
|
+
* Useful for documentation demos that want to showcase the
|
|
66
|
+
* desktop variant inside a constrained preview frame.
|
|
67
|
+
*/
|
|
68
|
+
mobile?: boolean;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Whether the menu panel (desktop dropdown or mobile drawer) is open.
|
|
72
|
+
* Controlled. The component toggles the hamburger glyph to match but
|
|
73
|
+
* never owns this state itself — the consumer passes the latest value
|
|
74
|
+
* via props and updates it in response to `onOpenChange`.
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
menuOpen?: boolean;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Fires when the user clicks the mobile hamburger or × button. The
|
|
81
|
+
* consumer is expected to flip `menuOpen` in response. Ignored on
|
|
82
|
+
* desktop (where menu open/close is driven by individual
|
|
83
|
+
* `<NavHeaderMenuItem open>` buttons in the bar).
|
|
84
|
+
*/
|
|
85
|
+
onOpenChange?: (open: boolean) => void;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Logo slot. Defaults to `<NavLogoPlaceholder size="medium" text="SDAIA" />`
|
|
89
|
+
* so the component is usable on a fresh project install with zero
|
|
90
|
+
* configuration. Pass your own node (typically a
|
|
91
|
+
* `<NavLogoPlaceholder />`) to customise.
|
|
92
|
+
*/
|
|
93
|
+
logo?: ReactNode;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Main navigation items — one entry per `<NavHeaderMenuItem />`. On
|
|
97
|
+
* desktop they render as a horizontal row inside the bar; on mobile
|
|
98
|
+
* they render stacked inside the drawer, interleaved with any
|
|
99
|
+
* `menuContent` the consumer passes.
|
|
100
|
+
*
|
|
101
|
+
* When empty / omitted, the item row is hidden on desktop and the
|
|
102
|
+
* mobile drawer falls back to rendering only `search`, `menuContent`,
|
|
103
|
+
* `mobileFooter`, and `actions`.
|
|
104
|
+
*/
|
|
105
|
+
items?: ReactNode[];
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Search input. Rendered inline between the items and the actions on
|
|
109
|
+
* desktop; rendered at the top of the drawer on mobile. Omit to hide.
|
|
110
|
+
* Typically `<TextInput placeholder="Search" fullWidth />`.
|
|
111
|
+
*/
|
|
112
|
+
search?: ReactNode;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Trailing cluster — Log in / Sign Up buttons (logged-out) or an
|
|
116
|
+
* avatar + identity (logged-in). Typically `<NavHeaderActions />`.
|
|
117
|
+
* Rendered inline on desktop; stacked at the bottom of the drawer
|
|
118
|
+
* on mobile.
|
|
119
|
+
*/
|
|
120
|
+
actions?: ReactNode;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Content rendered inside the expanded menu panel. On desktop this
|
|
124
|
+
* renders as an absolutely-positioned dropdown below the bar; on
|
|
125
|
+
* mobile it renders inline inside the drawer, between `search` and
|
|
126
|
+
* the footer.
|
|
127
|
+
*
|
|
128
|
+
* Ignored when `type='default'`, or when `menuOpen` is false on
|
|
129
|
+
* mobile. On desktop the dropdown is only shown when `type !== 'default'`
|
|
130
|
+
* AND at least one `<NavHeaderMenuItem open>` is in `items` — i.e.
|
|
131
|
+
* the consumer controls open/close by flipping the `open` prop on the
|
|
132
|
+
* relevant item.
|
|
133
|
+
*/
|
|
134
|
+
menuContent?: ReactNode;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Mobile-only footer block shown at the bottom of the drawer — typically
|
|
138
|
+
* a `<div>` with secondary-link columns. Omit to hide. Has no effect
|
|
139
|
+
* on desktop.
|
|
140
|
+
*/
|
|
141
|
+
mobileFooter?: ReactNode;
|
|
142
|
+
|
|
143
|
+
/** Extra classes merged onto the root element. */
|
|
144
|
+
className?: string;
|
|
145
|
+
}
|