@heliosgraphics/ui 2.0.0-alpha.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/components/Alert/Alert.meta.ts +45 -0
- package/components/Alert/Alert.module.css +41 -0
- package/components/Alert/Alert.tsx +54 -0
- package/components/Alert/Alert.types.ts +15 -0
- package/components/Alert/index.ts +1 -0
- package/components/Breadcrumb/Breadcrumb.meta.ts +17 -0
- package/components/Breadcrumb/Breadcrumb.tsx +55 -0
- package/components/Breadcrumb/Breadcrumb.types.ts +13 -0
- package/components/Breadcrumb/index.ts +2 -0
- package/components/Browser/Browser.meta.ts +27 -0
- package/components/Browser/Browser.module.css +3 -0
- package/components/Browser/Browser.tsx +16 -0
- package/components/Browser/Browser.types.ts +9 -0
- package/components/Browser/index.ts +1 -0
- package/components/Button/Button.meta.ts +46 -0
- package/components/Button/Button.module.css +337 -0
- package/components/Button/Button.spec.tsx +6 -0
- package/components/Button/Button.tsx +207 -0
- package/components/Button/Button.types.ts +30 -0
- package/components/Button/index.ts +2 -0
- package/components/ButtonGroup/ButtonGroup.meta.ts +37 -0
- package/components/ButtonGroup/ButtonGroup.module.css +55 -0
- package/components/ButtonGroup/ButtonGroup.spec.tsx +6 -0
- package/components/ButtonGroup/ButtonGroup.tsx +41 -0
- package/components/ButtonGroup/ButtonGroup.types.ts +11 -0
- package/components/ButtonGroup/index.ts +2 -0
- package/components/Checkbox/Checkbox.meta.ts +54 -0
- package/components/Checkbox/Checkbox.module.css +99 -0
- package/components/Checkbox/Checkbox.tsx +80 -0
- package/components/Checkbox/Checkbox.types.ts +17 -0
- package/components/Checkbox/index.ts +1 -0
- package/components/Clock/Clock.meta.ts +14 -0
- package/components/Clock/Clock.module.css +27 -0
- package/components/Clock/Clock.tsx +66 -0
- package/components/Clock/Clock.types.ts +1 -0
- package/components/Clock/Clock.utils.ts +16 -0
- package/components/Clock/index.ts +1 -0
- package/components/Column/Column.meta.ts +22 -0
- package/components/Column/Column.tsx +21 -0
- package/components/Column/Column.types.ts +8 -0
- package/components/Column/index.ts +2 -0
- package/components/Confirm/Confirm.meta.ts +51 -0
- package/components/Confirm/Confirm.tsx +40 -0
- package/components/Confirm/Confirm.types.ts +17 -0
- package/components/Confirm/index.ts +1 -0
- package/components/DatePicker/DatePicker.meta.ts +25 -0
- package/components/DatePicker/DatePicker.module.css +72 -0
- package/components/DatePicker/DatePicker.tsx +126 -0
- package/components/DatePicker/DatePicker.types.ts +8 -0
- package/components/DatePicker/DatePicker.utils.ts +53 -0
- package/components/DatePicker/index.ts +1 -0
- package/components/Debug/Debug.meta.ts +22 -0
- package/components/Debug/Debug.module.css +17 -0
- package/components/Debug/Debug.tsx +48 -0
- package/components/Debug/Debug.types.ts +6 -0
- package/components/Debug/Debug.utils.ts +23 -0
- package/components/Debug/index.ts +1 -0
- package/components/Details/Details.meta.ts +22 -0
- package/components/Details/Details.module.css +36 -0
- package/components/Details/Details.tsx +21 -0
- package/components/Details/Details.types.ts +8 -0
- package/components/Details/index.ts +1 -0
- package/components/Dialog/Dialog.meta.ts +48 -0
- package/components/Dialog/Dialog.module.css +109 -0
- package/components/Dialog/Dialog.tsx +100 -0
- package/components/Dialog/Dialog.types.ts +13 -0
- package/components/Dialog/index.ts +1 -0
- package/components/Donut/Donut.meta.ts +25 -0
- package/components/Donut/Donut.module.css +8 -0
- package/components/Donut/Donut.tsx +63 -0
- package/components/Donut/Donut.types.ts +12 -0
- package/components/Donut/Donut.utils.ts +11 -0
- package/components/Donut/index.ts +2 -0
- package/components/Dot/Dot.meta.ts +26 -0
- package/components/Dot/Dot.module.css +24 -0
- package/components/Dot/Dot.spec.tsx +6 -0
- package/components/Dot/Dot.tsx +46 -0
- package/components/Dot/Dot.types.ts +8 -0
- package/components/Dot/index.ts +1 -0
- package/components/Dropdown/Dropdown.meta.ts +30 -0
- package/components/Dropdown/Dropdown.module.css +92 -0
- package/components/Dropdown/Dropdown.tsx +117 -0
- package/components/Dropdown/Dropdown.types.ts +10 -0
- package/components/Dropdown/index.ts +2 -0
- package/components/Fieldset/Fieldset.meta.ts +18 -0
- package/components/Fieldset/Fieldset.module.css +3 -0
- package/components/Fieldset/Fieldset.tsx +14 -0
- package/components/Fieldset/Fieldset.types.ts +7 -0
- package/components/Fieldset/index.ts +1 -0
- package/components/Flex/Flex.meta.ts +47 -0
- package/components/Flex/Flex.tsx +40 -0
- package/components/Flex/Flex.types.ts +38 -0
- package/components/Flex/Flex.utils.spec.ts +97 -0
- package/components/Flex/Flex.utils.ts +162 -0
- package/components/Flex/index.ts +4 -0
- package/components/Grid/Grid.meta.ts +22 -0
- package/components/Grid/Grid.tsx +17 -0
- package/components/Grid/Grid.types.ts +8 -0
- package/components/Grid/index.ts +1 -0
- package/components/Heading/Heading.meta.ts +23 -0
- package/components/Heading/Heading.module.css +19 -0
- package/components/Heading/Heading.tsx +69 -0
- package/components/Heading/Heading.types.ts +9 -0
- package/components/Heading/components/H0/H0.meta.ts +11 -0
- package/components/Heading/components/H0/H0.module.css +4 -0
- package/components/Heading/components/H0/H0.tsx +12 -0
- package/components/Heading/components/H0/H0.types.ts +3 -0
- package/components/Heading/components/H0/index.ts +1 -0
- package/components/Heading/components/H1/H1.meta.ts +11 -0
- package/components/Heading/components/H1/H1.tsx +9 -0
- package/components/Heading/components/H1/H1.types.ts +3 -0
- package/components/Heading/components/H1/index.ts +1 -0
- package/components/Heading/components/H2/H2.meta.ts +11 -0
- package/components/Heading/components/H2/H2.tsx +9 -0
- package/components/Heading/components/H2/H2.types.ts +3 -0
- package/components/Heading/components/H2/index.ts +1 -0
- package/components/Heading/components/H3/H3.meta.ts +11 -0
- package/components/Heading/components/H3/H3.tsx +9 -0
- package/components/Heading/components/H3/H3.types.ts +3 -0
- package/components/Heading/components/H3/index.ts +1 -0
- package/components/Heading/components/H4/H4.meta.ts +11 -0
- package/components/Heading/components/H4/H4.tsx +9 -0
- package/components/Heading/components/H4/H4.types.ts +3 -0
- package/components/Heading/components/H4/index.ts +1 -0
- package/components/Heading/components/H5/H5.meta.ts +11 -0
- package/components/Heading/components/H5/H5.tsx +9 -0
- package/components/Heading/components/H5/H5.types.ts +3 -0
- package/components/Heading/components/H5/index.ts +1 -0
- package/components/Heading/components/H6/H6.meta.ts +11 -0
- package/components/Heading/components/H6/H6.tsx +9 -0
- package/components/Heading/components/H6/H6.types.ts +3 -0
- package/components/Heading/components/H6/index.ts +1 -0
- package/components/Heading/index.ts +2 -0
- package/components/Icon/Icon.meta.ts +28 -0
- package/components/Icon/Icon.module.css +22 -0
- package/components/Icon/Icon.tsx +32 -0
- package/components/Icon/Icon.types.ts +9 -0
- package/components/Icon/index.ts +1 -0
- package/components/Input/Input.meta.ts +53 -0
- package/components/Input/Input.module.css +82 -0
- package/components/Input/Input.tsx +124 -0
- package/components/Input/Input.types.ts +28 -0
- package/components/Input/index.ts +1 -0
- package/components/Layout/Layout.meta.ts +19 -0
- package/components/Layout/Layout.module.css +7 -0
- package/components/Layout/Layout.tsx +33 -0
- package/components/Layout/Layout.types.ts +19 -0
- package/components/Layout/components/LayoutAside/LayoutAside.meta.ts +15 -0
- package/components/Layout/components/LayoutAside/LayoutAside.module.css +40 -0
- package/components/Layout/components/LayoutAside/LayoutAside.tsx +27 -0
- package/components/Layout/components/LayoutAside/LayoutAside.types.ts +14 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideContent/LayoutAsideContent.meta.ts +15 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideContent/LayoutAsideContent.module.css +5 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideContent/LayoutAsideContent.tsx +19 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideContent/LayoutAsideContent.types.ts +5 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideContent/index.ts +1 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/LayoutAsideFooter.meta.ts +15 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/LayoutAsideFooter.module.css +10 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/LayoutAsideFooter.tsx +19 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/LayoutAsideFooter.types.ts +5 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/index.ts +1 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideToggle/LayoutAsideToggle.meta.ts +14 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideToggle/LayoutAsideToggle.tsx +31 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideToggle/LayoutAsideToggle.types.ts +1 -0
- package/components/Layout/components/LayoutAside/components/LayoutAsideToggle/index.ts +1 -0
- package/components/Layout/components/LayoutAside/index.ts +13 -0
- package/components/Layout/components/LayoutMain/LayoutMain.meta.ts +15 -0
- package/components/Layout/components/LayoutMain/LayoutMain.module.css +15 -0
- package/components/Layout/components/LayoutMain/LayoutMain.tsx +23 -0
- package/components/Layout/components/LayoutMain/LayoutMain.types.ts +12 -0
- package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.meta.ts +15 -0
- package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.module.css +4 -0
- package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.tsx +49 -0
- package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.types.ts +5 -0
- package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.utils.ts +65 -0
- package/components/Layout/components/LayoutMain/components/LayoutMainContent/index.ts +1 -0
- package/components/Layout/components/LayoutMain/index.ts +9 -0
- package/components/Layout/components/LayoutNavigation/LayoutNavigation.meta.ts +15 -0
- package/components/Layout/components/LayoutNavigation/LayoutNavigation.module.css +12 -0
- package/components/Layout/components/LayoutNavigation/LayoutNavigation.tsx +24 -0
- package/components/Layout/components/LayoutNavigation/LayoutNavigation.types.ts +5 -0
- package/components/Layout/components/LayoutNavigation/index.ts +1 -0
- package/components/Layout/components/LayoutSubNavigation/LayoutSubNavigation.meta.ts +15 -0
- package/components/Layout/components/LayoutSubNavigation/LayoutSubNavigation.module.css +12 -0
- package/components/Layout/components/LayoutSubNavigation/LayoutSubNavigation.tsx +24 -0
- package/components/Layout/components/LayoutSubNavigation/LayoutSubNavigation.types.ts +5 -0
- package/components/Layout/components/LayoutSubNavigation/index.ts +1 -0
- package/components/Layout/index.ts +17 -0
- package/components/Loading/Loading.meta.ts +20 -0
- package/components/Loading/Loading.module.css +65 -0
- package/components/Loading/Loading.tsx +57 -0
- package/components/Loading/Loading.types.ts +7 -0
- package/components/Loading/index.ts +1 -0
- package/components/Markdown/Markdown.meta.ts +28 -0
- package/components/Markdown/Markdown.module.css +274 -0
- package/components/Markdown/Markdown.tsx +27 -0
- package/components/Markdown/Markdown.types.ts +7 -0
- package/components/Markdown/Markdown.utils.spec.ts +11 -0
- package/components/Markdown/Markdown.utils.ts +10 -0
- package/components/Markdown/index.ts +1 -0
- package/components/Masonry/Masonry.meta.ts +24 -0
- package/components/Masonry/Masonry.tsx +49 -0
- package/components/Masonry/Masonry.types.ts +10 -0
- package/components/Masonry/index.ts +1 -0
- package/components/Menu/Menu.meta.ts +15 -0
- package/components/Menu/Menu.tsx +18 -0
- package/components/Menu/Menu.types.ts +15 -0
- package/components/Menu/components/MenuCategory/MenuCategory.meta.ts +32 -0
- package/components/Menu/components/MenuCategory/MenuCategory.module.css +73 -0
- package/components/Menu/components/MenuCategory/MenuCategory.tsx +88 -0
- package/components/Menu/components/MenuCategory/MenuCategory.types.ts +10 -0
- package/components/Menu/components/MenuCategory/index.ts +1 -0
- package/components/Menu/components/MenuFilter/MenuFilter.meta.ts +24 -0
- package/components/Menu/components/MenuFilter/MenuFilter.module.css +11 -0
- package/components/Menu/components/MenuFilter/MenuFilter.tsx +25 -0
- package/components/Menu/components/MenuFilter/MenuFilter.types.ts +7 -0
- package/components/Menu/components/MenuFilter/index.ts +1 -0
- package/components/Menu/components/MenuItem/MenuItem.meta.ts +42 -0
- package/components/Menu/components/MenuItem/MenuItem.module.css +37 -0
- package/components/Menu/components/MenuItem/MenuItem.tsx +73 -0
- package/components/Menu/components/MenuItem/MenuItem.types.ts +12 -0
- package/components/Menu/components/MenuItem/index.ts +1 -0
- package/components/Menu/index.ts +14 -0
- package/components/Overlay/Overlay.meta.ts +25 -0
- package/components/Overlay/Overlay.module.css +85 -0
- package/components/Overlay/Overlay.tsx +47 -0
- package/components/Overlay/Overlay.types.ts +9 -0
- package/components/Overlay/index.ts +1 -0
- package/components/Pie/Pie.meta.ts +23 -0
- package/components/Pie/Pie.module.css +5 -0
- package/components/Pie/Pie.tsx +47 -0
- package/components/Pie/Pie.types.ts +12 -0
- package/components/Pie/index.ts +2 -0
- package/components/Pill/Pill.meta.ts +64 -0
- package/components/Pill/Pill.module.css +64 -0
- package/components/Pill/Pill.tsx +89 -0
- package/components/Pill/Pill.types.ts +19 -0
- package/components/Pill/index.ts +1 -0
- package/components/Placeholder/Placeholder.meta.ts +25 -0
- package/components/Placeholder/Placeholder.module.css +3 -0
- package/components/Placeholder/Placeholder.tsx +24 -0
- package/components/Placeholder/Placeholder.types.ts +7 -0
- package/components/Placeholder/index.ts +1 -0
- package/components/Progress/Progress.meta.ts +35 -0
- package/components/Progress/Progress.module.css +22 -0
- package/components/Progress/Progress.tsx +30 -0
- package/components/Progress/Progress.types.ts +9 -0
- package/components/Progress/index.ts +1 -0
- package/components/Radio/Radio.meta.ts +21 -0
- package/components/Radio/Radio.module.css +101 -0
- package/components/Radio/Radio.tsx +73 -0
- package/components/Radio/Radio.types.ts +8 -0
- package/components/Radio/index.ts +1 -0
- package/components/Range/Range.meta.ts +26 -0
- package/components/Range/Range.module.css +68 -0
- package/components/Range/Range.tsx +49 -0
- package/components/Range/Range.types.ts +13 -0
- package/components/Range/index.ts +1 -0
- package/components/Segments/Segments.meta.ts +27 -0
- package/components/Segments/Segments.module.css +46 -0
- package/components/Segments/Segments.tsx +79 -0
- package/components/Segments/Segments.types.ts +15 -0
- package/components/Segments/Segments.utils.ts +19 -0
- package/components/Segments/components/SegmentButton/SegmentButton.meta.ts +32 -0
- package/components/Segments/components/SegmentButton/SegmentButton.module.css +34 -0
- package/components/Segments/components/SegmentButton/SegmentButton.tsx +61 -0
- package/components/Segments/components/SegmentButton/SegmentButton.types.ts +10 -0
- package/components/Segments/components/SegmentButton/index.ts +1 -0
- package/components/Segments/index.ts +9 -0
- package/components/Select/Select.meta.ts +43 -0
- package/components/Select/Select.module.css +76 -0
- package/components/Select/Select.tsx +53 -0
- package/components/Select/Select.types.ts +18 -0
- package/components/Select/index.ts +2 -0
- package/components/Separator/Separator.meta.ts +69 -0
- package/components/Separator/Separator.module.css +11 -0
- package/components/Separator/Separator.spec.tsx +6 -0
- package/components/Separator/Separator.tsx +36 -0
- package/components/Separator/Separator.types.ts +10 -0
- package/components/Separator/components/HRMarkup/HRMarkup.meta.ts +15 -0
- package/components/Separator/components/HRMarkup/HRMarkup.tsx +10 -0
- package/components/Separator/components/HRMarkup/HRMarkup.types.ts +5 -0
- package/components/Separator/components/HRMarkup/index.ts +1 -0
- package/components/Separator/components/HorizontalSeparator/HorizontalSeparator.meta.ts +22 -0
- package/components/Separator/components/HorizontalSeparator/HorizontalSeparator.module.css +22 -0
- package/components/Separator/components/HorizontalSeparator/HorizontalSeparator.tsx +22 -0
- package/components/Separator/components/HorizontalSeparator/HorizontalSeparator.types.ts +3 -0
- package/components/Separator/components/HorizontalSeparator/index.ts +1 -0
- package/components/Separator/components/VerticalSeparator/VerticalSeparator.meta.ts +22 -0
- package/components/Separator/components/VerticalSeparator/VerticalSeparator.module.css +20 -0
- package/components/Separator/components/VerticalSeparator/VerticalSeparator.tsx +22 -0
- package/components/Separator/components/VerticalSeparator/VerticalSeparator.types.ts +3 -0
- package/components/Separator/components/VerticalSeparator/index.ts +1 -0
- package/components/Separator/index.ts +1 -0
- package/components/Setup/Setup.global.css +14 -0
- package/components/Setup/Setup.meta.ts +22 -0
- package/components/Setup/Setup.tsx +53 -0
- package/components/Setup/Setup.types.ts +13 -0
- package/components/Setup/Setup.utils.ts +61 -0
- package/components/Setup/css/core.colors-helpers.css +322 -0
- package/components/Setup/css/core.colors.css +428 -0
- package/components/Setup/css/core.scale.css +49 -0
- package/components/Setup/css/core.setup.css +28 -0
- package/components/Setup/css/core.typography.css +57 -0
- package/components/Setup/css/feat.atomics.css +126 -0
- package/components/Setup/css/feat.markdown.css +39 -0
- package/components/Setup/css/feat.responsive.css +590 -0
- package/components/Setup/index.ts +1 -0
- package/components/Shimmer/Shimmer.meta.ts +32 -0
- package/components/Shimmer/Shimmer.module.css +24 -0
- package/components/Shimmer/Shimmer.tsx +31 -0
- package/components/Shimmer/Shimmer.types.ts +7 -0
- package/components/Shimmer/index.ts +1 -0
- package/components/Slider/Slider.meta.ts +22 -0
- package/components/Slider/Slider.module.css +49 -0
- package/components/Slider/Slider.tsx +18 -0
- package/components/Slider/Slider.types.ts +6 -0
- package/components/Slider/index.ts +1 -0
- package/components/Spacer/Spacer.meta.ts +17 -0
- package/components/Spacer/Spacer.tsx +8 -0
- package/components/Spacer/Spacer.types.ts +3 -0
- package/components/Spacer/index.ts +1 -0
- package/components/Table/Table.meta.ts +36 -0
- package/components/Table/Table.module.css +53 -0
- package/components/Table/Table.tsx +21 -0
- package/components/Table/Table.types.ts +8 -0
- package/components/Table/index.ts +1 -0
- package/components/Tabs/Tabs.meta.ts +24 -0
- package/components/Tabs/Tabs.module.css +43 -0
- package/components/Tabs/Tabs.tsx +63 -0
- package/components/Tabs/Tabs.types.ts +14 -0
- package/components/Tabs/index.ts +1 -0
- package/components/Text/Text.meta.ts +38 -0
- package/components/Text/Text.module.css +41 -0
- package/components/Text/Text.tsx +59 -0
- package/components/Text/Text.types.ts +20 -0
- package/components/Text/Text.utils.spec.ts +13 -0
- package/components/Text/Text.utils.ts +50 -0
- package/components/Text/components/Div/Div.meta.ts +11 -0
- package/components/Text/components/Div/Div.tsx +9 -0
- package/components/Text/components/Div/Div.types.ts +3 -0
- package/components/Text/components/Div/index.ts +1 -0
- package/components/Text/components/Micro/Micro.meta.ts +11 -0
- package/components/Text/components/Micro/Micro.tsx +9 -0
- package/components/Text/components/Micro/Micro.types.ts +3 -0
- package/components/Text/components/Micro/index.ts +1 -0
- package/components/Text/components/P/P.meta.ts +11 -0
- package/components/Text/components/P/P.tsx +9 -0
- package/components/Text/components/P/P.types.ts +3 -0
- package/components/Text/components/P/index.ts +1 -0
- package/components/Text/components/Small/Small.meta.ts +11 -0
- package/components/Text/components/Small/Small.tsx +9 -0
- package/components/Text/components/Small/Small.types.ts +3 -0
- package/components/Text/components/Small/index.ts +1 -0
- package/components/Text/components/Tiny/Tiny.meta.ts +11 -0
- package/components/Text/components/Tiny/Tiny.tsx +9 -0
- package/components/Text/components/Tiny/Tiny.types.ts +3 -0
- package/components/Text/components/Tiny/index.ts +1 -0
- package/components/Text/index.ts +2 -0
- package/components/Textarea/Textarea.meta.ts +26 -0
- package/components/Textarea/Textarea.module.css +52 -0
- package/components/Textarea/Textarea.tsx +68 -0
- package/components/Textarea/Textarea.types.ts +16 -0
- package/components/Textarea/index.ts +1 -0
- package/components/Tile/Tile.meta.ts +24 -0
- package/components/Tile/Tile.module.css +35 -0
- package/components/Tile/Tile.tsx +70 -0
- package/components/Tile/Tile.types.ts +16 -0
- package/components/Tile/index.ts +1 -0
- package/components/Timestamp/Timestamp.meta.ts +22 -0
- package/components/Timestamp/Timestamp.tsx +21 -0
- package/components/Timestamp/Timestamp.types.ts +6 -0
- package/components/Timestamp/index.ts +1 -0
- package/components/Toggle/Toggle.meta.ts +40 -0
- package/components/Toggle/Toggle.module.css +137 -0
- package/components/Toggle/Toggle.tsx +62 -0
- package/components/Toggle/Toggle.types.ts +9 -0
- package/components/Toggle/index.ts +1 -0
- package/components/Tooltip/Tooltip.meta.ts +78 -0
- package/components/Tooltip/Tooltip.module.css +63 -0
- package/components/Tooltip/Tooltip.tsx +115 -0
- package/components/Tooltip/Tooltip.types.ts +31 -0
- package/components/Tooltip/Tooltip.utils.ts +14 -0
- package/components/Tooltip/components/TooltipContent/TooltipContent.meta.ts +12 -0
- package/components/Tooltip/components/TooltipContent/TooltipContent.tsx +27 -0
- package/components/Tooltip/components/TooltipContent/TooltipContent.types.ts +3 -0
- package/components/Tooltip/components/TooltipContent/index.ts +1 -0
- package/components/Tooltip/components/TooltipTrigger/TooltipTrigger.meta.ts +12 -0
- package/components/Tooltip/components/TooltipTrigger/TooltipTrigger.tsx +19 -0
- package/components/Tooltip/components/TooltipTrigger/TooltipTrigger.types.ts +3 -0
- package/components/Tooltip/components/TooltipTrigger/index.ts +1 -0
- package/components/Tooltip/index.ts +6 -0
- package/components/shared/InputLabel/InputLabel.meta.ts +22 -0
- package/components/shared/InputLabel/InputLabel.module.css +14 -0
- package/components/shared/InputLabel/InputLabel.tsx +20 -0
- package/components/shared/InputLabel/InputLabel.types.ts +6 -0
- package/components/shared/InputLabel/index.ts +1 -0
- package/components/shared/ResultList/ResultList.meta.ts +20 -0
- package/components/shared/ResultList/ResultList.module.css +71 -0
- package/components/shared/ResultList/ResultList.tsx +67 -0
- package/components/shared/ResultList/ResultList.types.ts +19 -0
- package/components/shared/ResultList/index.ts +2 -0
- package/constants/animations.ts +5 -0
- package/constants/colors.ts +14 -0
- package/constants/components.ts +101 -0
- package/constants/emphasis.ts +3 -0
- package/constants/hooks.ts +1 -0
- package/constants/icons.ts +4 -0
- package/constants/intentions.ts +28 -0
- package/constants/meta.ts +60 -0
- package/constants/positions.ts +3 -0
- package/constants/scale.ts +5 -0
- package/constants/scope.ts +151 -0
- package/contexts/LayoutContext/LayoutContext.tsx +93 -0
- package/contexts/LayoutContext/LayoutContext.types.ts +11 -0
- package/contexts/LayoutContext/index.ts +2 -0
- package/globals.d.ts +14 -0
- package/hooks/useChatScroll.tsx +98 -0
- package/hooks/useDebounce.tsx +19 -0
- package/hooks/useIntersection.tsx +19 -0
- package/hooks/useInterval.tsx +27 -0
- package/hooks/useKeyPress.tsx +33 -0
- package/hooks/useLayoutContext.tsx +23 -0
- package/hooks/usePrevious.tsx +13 -0
- package/hooks/usePrint.tsx +31 -0
- package/hooks/useResizeObserver.tsx +38 -0
- package/hooks/useTheme.tsx +40 -0
- package/index.ts +96 -0
- package/package.json +67 -0
- package/types/colors.ts +13 -0
- package/types/icons.ts +3 -0
- package/types/intentions.ts +13 -0
- package/types/meta.ts +24 -0
- package/types/positions.ts +3 -0
- package/types/scale.ts +29 -0
- package/types/scope.ts +67 -0
- package/types/themes.ts +2 -0
- package/types/typography.ts +1 -0
- package/utils/colors.ts +11 -0
- package/utils/date.ts +54 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { getClasses } from "@heliosgraphics/utils"
|
|
2
|
+
import { Checkbox } from "../../Checkbox"
|
|
3
|
+
import { Flex } from "../../Flex"
|
|
4
|
+
import { Icon } from "../../Icon"
|
|
5
|
+
import { Text } from "../../Text"
|
|
6
|
+
import styles from "./ResultList.module.css"
|
|
7
|
+
import type { ChangeEventHandler, FC } from "react"
|
|
8
|
+
import type { ResultListProps } from "./ResultList.types"
|
|
9
|
+
|
|
10
|
+
export const ResultList: FC<ResultListProps> = ({ items, isHidden, ref }) => {
|
|
11
|
+
if (!items?.length || isHidden) return null
|
|
12
|
+
|
|
13
|
+
const resultListClasses: string = getClasses(styles.resultList, "elevation-lg")
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<ol className={resultListClasses} data-ui-component="ResultList" role="listbox" ref={ref}>
|
|
17
|
+
{items?.map((item, index) => {
|
|
18
|
+
const itemKey: string = item.name ? `${item.name}-${index}` : `separator-${index}`
|
|
19
|
+
const itemClasses: string = getClasses("flex flex-y-center gap-5", styles.item, {
|
|
20
|
+
[styles.itemActive]: item.isActive && !item.type,
|
|
21
|
+
[styles.itemDisabled]: item.isDisabled,
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
if (item.type === "separator") return <li key={itemKey} className={styles.resultList__separator} />
|
|
25
|
+
|
|
26
|
+
if (item.type === "checkbox") {
|
|
27
|
+
const onCheck: ChangeEventHandler<HTMLInputElement> = (): void => {
|
|
28
|
+
item.onClick?.({} as React.MouseEvent)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<li key={itemKey} onClick={item.onClick} className={itemClasses}>
|
|
33
|
+
<Checkbox
|
|
34
|
+
label={item.name}
|
|
35
|
+
{...(item.description && { description: item.description })}
|
|
36
|
+
isChecked={!!item.isActive}
|
|
37
|
+
onChange={onCheck}
|
|
38
|
+
/>
|
|
39
|
+
</li>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<li key={itemKey} onClick={item.onClick} className={itemClasses}>
|
|
45
|
+
{item.icon && (
|
|
46
|
+
<Flex isCentered={true}>
|
|
47
|
+
<Icon icon={item.icon} size={18} />
|
|
48
|
+
</Flex>
|
|
49
|
+
)}
|
|
50
|
+
<Flex isColumn={true} gap={1}>
|
|
51
|
+
<Text type="small" fontWeight="medium" lineClamp={1}>
|
|
52
|
+
{item.name}
|
|
53
|
+
</Text>
|
|
54
|
+
{!!item.description && (
|
|
55
|
+
<Text type="tiny" fontFamily="sans">
|
|
56
|
+
{item.description}
|
|
57
|
+
</Text>
|
|
58
|
+
)}
|
|
59
|
+
</Flex>
|
|
60
|
+
</li>
|
|
61
|
+
)
|
|
62
|
+
})}
|
|
63
|
+
</ol>
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
ResultList.displayName = "ResultList"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Ref, MouseEventHandler } from "react"
|
|
2
|
+
import type { HeliosIconType } from "../../../types/icons"
|
|
3
|
+
|
|
4
|
+
export interface ResultItem {
|
|
5
|
+
description?: string
|
|
6
|
+
icon?: HeliosIconType
|
|
7
|
+
isActive?: boolean
|
|
8
|
+
isDisabled?: boolean
|
|
9
|
+
name: string
|
|
10
|
+
onClick?: MouseEventHandler
|
|
11
|
+
ref?: Ref<HTMLOListElement>
|
|
12
|
+
type?: "separator" | "checkbox"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ResultListProps {
|
|
16
|
+
items?: Array<ResultItem>
|
|
17
|
+
isHidden?: boolean
|
|
18
|
+
ref?: Ref<HTMLOListElement>
|
|
19
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { HeliosAttributeMeta } from "../types/meta"
|
|
2
|
+
|
|
3
|
+
import { meta as metaAlert } from "../components/Alert/Alert.meta"
|
|
4
|
+
import { meta as metaBreadcrumb } from "../components/Breadcrumb/Breadcrumb.meta"
|
|
5
|
+
import { meta as metaBrowser } from "../components/Browser/Browser.meta"
|
|
6
|
+
import { meta as metaButton } from "../components/Button/Button.meta"
|
|
7
|
+
import { meta as metaButtonGroup } from "../components/ButtonGroup/ButtonGroup.meta"
|
|
8
|
+
import { meta as metaCheckbox } from "../components/Checkbox/Checkbox.meta"
|
|
9
|
+
import { meta as metaClock } from "../components/Clock/Clock.meta"
|
|
10
|
+
import { meta as metaColumn } from "../components/Column/Column.meta"
|
|
11
|
+
import { meta as metaConfirm } from "../components/Confirm/Confirm.meta"
|
|
12
|
+
import { meta as metaDatePicker } from "../components/DatePicker/DatePicker.meta"
|
|
13
|
+
import { meta as metaDebug } from "../components/Debug/Debug.meta"
|
|
14
|
+
import { meta as metaDetails } from "../components/Details/Details.meta"
|
|
15
|
+
import { meta as metaDialog } from "../components/Dialog/Dialog.meta"
|
|
16
|
+
import { meta as metaDonut } from "../components/Donut/Donut.meta"
|
|
17
|
+
import { meta as metaLayout } from "../components/Layout/Layout.meta"
|
|
18
|
+
import { meta as metaDot } from "../components/Dot/Dot.meta"
|
|
19
|
+
import { meta as metaDropdown } from "../components/Dropdown/Dropdown.meta"
|
|
20
|
+
import { meta as metaFieldset } from "../components/Fieldset/Fieldset.meta"
|
|
21
|
+
import { meta as metaFlex } from "../components/Flex/Flex.meta"
|
|
22
|
+
import { meta as metaGrid } from "../components/Grid/Grid.meta"
|
|
23
|
+
import { meta as metaHeading } from "../components/Heading/Heading.meta"
|
|
24
|
+
import { meta as metaIcon } from "../components/Icon/Icon.meta"
|
|
25
|
+
import { meta as metaInput } from "../components/Input/Input.meta"
|
|
26
|
+
import { meta as metaLoading } from "../components/Loading/Loading.meta"
|
|
27
|
+
import { meta as metaMarkdown } from "../components/Markdown/Markdown.meta"
|
|
28
|
+
import { meta as metaMasonry } from "../components/Masonry/Masonry.meta"
|
|
29
|
+
import { meta as metaMenu } from "../components/Menu/Menu.meta"
|
|
30
|
+
import { meta as metaOverlay } from "../components/Overlay/Overlay.meta"
|
|
31
|
+
import { meta as metaPie } from "../components/Pie/Pie.meta"
|
|
32
|
+
import { meta as metaPill } from "../components/Pill/Pill.meta"
|
|
33
|
+
import { meta as metaProgress } from "../components/Progress/Progress.meta"
|
|
34
|
+
import { meta as metaRadio } from "../components/Radio/Radio.meta"
|
|
35
|
+
import { meta as metaRange } from "../components/Range/Range.meta"
|
|
36
|
+
import { meta as metaSegments } from "../components/Segments/Segments.meta"
|
|
37
|
+
import { meta as metaSelect } from "../components/Select/Select.meta"
|
|
38
|
+
import { meta as metaSeparator } from "../components/Separator/Separator.meta"
|
|
39
|
+
import { meta as metaSetup } from "../components/Setup/Setup.meta"
|
|
40
|
+
import { meta as metaShimmer } from "../components/Shimmer/Shimmer.meta"
|
|
41
|
+
import { meta as metaSlider } from "../components/Slider/Slider.meta"
|
|
42
|
+
import { meta as metaSpacer } from "../components/Spacer/Spacer.meta"
|
|
43
|
+
import { meta as metaTable } from "../components/Table/Table.meta"
|
|
44
|
+
import { meta as metaTabs } from "../components/Tabs/Tabs.meta"
|
|
45
|
+
import { meta as metaText } from "../components/Text/Text.meta"
|
|
46
|
+
import { meta as metaTextarea } from "../components/Textarea/Textarea.meta"
|
|
47
|
+
import { meta as metaTile } from "../components/Tile/Tile.meta"
|
|
48
|
+
import { meta as metaTimestamp } from "../components/Timestamp/Timestamp.meta"
|
|
49
|
+
import { meta as metaToggle } from "../components/Toggle/Toggle.meta"
|
|
50
|
+
import { meta as metaTooltip } from "../components/Tooltip/Tooltip.meta"
|
|
51
|
+
|
|
52
|
+
export const COMPONENTS = {
|
|
53
|
+
Alert: metaAlert,
|
|
54
|
+
Breadcrumb: metaBreadcrumb,
|
|
55
|
+
Browser: metaBrowser,
|
|
56
|
+
Button: metaButton,
|
|
57
|
+
ButtonGroup: metaButtonGroup,
|
|
58
|
+
Checkbox: metaCheckbox,
|
|
59
|
+
Clock: metaClock,
|
|
60
|
+
Column: metaColumn,
|
|
61
|
+
Confirm: metaConfirm,
|
|
62
|
+
DatePicker: metaDatePicker,
|
|
63
|
+
Debug: metaDebug,
|
|
64
|
+
Details: metaDetails,
|
|
65
|
+
Dialog: metaDialog,
|
|
66
|
+
Donut: metaDonut,
|
|
67
|
+
Dot: metaDot,
|
|
68
|
+
Dropdown: metaDropdown,
|
|
69
|
+
Fieldset: metaFieldset,
|
|
70
|
+
Flex: metaFlex,
|
|
71
|
+
Grid: metaGrid,
|
|
72
|
+
Heading: metaHeading,
|
|
73
|
+
Icon: metaIcon,
|
|
74
|
+
Input: metaInput,
|
|
75
|
+
Layout: metaLayout,
|
|
76
|
+
Loading: metaLoading,
|
|
77
|
+
Markdown: metaMarkdown,
|
|
78
|
+
Masonry: metaMasonry,
|
|
79
|
+
Menu: metaMenu,
|
|
80
|
+
Overlay: metaOverlay,
|
|
81
|
+
Pie: metaPie,
|
|
82
|
+
Pill: metaPill,
|
|
83
|
+
Progress: metaProgress,
|
|
84
|
+
Radio: metaRadio,
|
|
85
|
+
Range: metaRange,
|
|
86
|
+
Segments: metaSegments,
|
|
87
|
+
Select: metaSelect,
|
|
88
|
+
Separator: metaSeparator,
|
|
89
|
+
Setup: metaSetup,
|
|
90
|
+
Shimmer: metaShimmer,
|
|
91
|
+
Slider: metaSlider,
|
|
92
|
+
Spacer: metaSpacer,
|
|
93
|
+
Table: metaTable,
|
|
94
|
+
Tabs: metaTabs,
|
|
95
|
+
Text: metaText,
|
|
96
|
+
Textarea: metaTextarea,
|
|
97
|
+
Tile: metaTile,
|
|
98
|
+
Timestamp: metaTimestamp,
|
|
99
|
+
Toggle: metaToggle,
|
|
100
|
+
Tooltip: metaTooltip,
|
|
101
|
+
} as const satisfies Record<string, HeliosAttributeMeta<unknown>>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const HOOKS = ["useIntersection", "useLayoutContext", "usePrevious", "usePrint", "useTheme"] as const
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { HeliosColorType } from "../types/colors"
|
|
2
|
+
import type { HeliosIntentionType } from "../types/intentions"
|
|
3
|
+
|
|
4
|
+
export const INTENTIONS: Array<HeliosIntentionType> = [
|
|
5
|
+
"action",
|
|
6
|
+
"automation",
|
|
7
|
+
"confirmation",
|
|
8
|
+
"danger",
|
|
9
|
+
"highlight",
|
|
10
|
+
"question",
|
|
11
|
+
"organic",
|
|
12
|
+
"neutral",
|
|
13
|
+
"success",
|
|
14
|
+
"warning",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
export const INTENTION_COLOR_MAP: Readonly<Record<HeliosIntentionType, HeliosColorType>> = {
|
|
18
|
+
action: "blue",
|
|
19
|
+
automation: "pink",
|
|
20
|
+
confirmation: "purple",
|
|
21
|
+
danger: "red",
|
|
22
|
+
highlight: "orange",
|
|
23
|
+
neutral: "gray",
|
|
24
|
+
organic: "olive",
|
|
25
|
+
question: "aqua",
|
|
26
|
+
success: "green",
|
|
27
|
+
warning: "yellow",
|
|
28
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { COMPONENTS } from "./components"
|
|
2
|
+
import type { HeliosComponentStatusType, HeliosComponentCategoryType } from "../types/meta"
|
|
3
|
+
import type { HeliosColorType } from "../types/colors"
|
|
4
|
+
import type { HeliosIconType } from "../types/icons"
|
|
5
|
+
|
|
6
|
+
export const STATUS_COLORS = {
|
|
7
|
+
experimental: "pink",
|
|
8
|
+
nominal: "gray",
|
|
9
|
+
stable: "green",
|
|
10
|
+
internal: "gray",
|
|
11
|
+
} as const satisfies Record<HeliosComponentStatusType, HeliosColorType>
|
|
12
|
+
|
|
13
|
+
export const STATUS_ICONS = {
|
|
14
|
+
experimental: "bolt",
|
|
15
|
+
nominal: "bolt",
|
|
16
|
+
stable: "check",
|
|
17
|
+
internal: "bullseye",
|
|
18
|
+
} as const satisfies Record<HeliosComponentStatusType, HeliosIconType>
|
|
19
|
+
|
|
20
|
+
export const STATUS_NAMES = {
|
|
21
|
+
experimental: "Experimental",
|
|
22
|
+
nominal: "Might Change",
|
|
23
|
+
stable: "Stable",
|
|
24
|
+
internal: "Internal",
|
|
25
|
+
} as const satisfies Record<HeliosComponentStatusType, string>
|
|
26
|
+
|
|
27
|
+
export const TYPE_NAMES = {
|
|
28
|
+
content: "Content",
|
|
29
|
+
pattern: "Pattern",
|
|
30
|
+
core: "Core",
|
|
31
|
+
layout: "Layout",
|
|
32
|
+
meta: "Meta",
|
|
33
|
+
} as const satisfies Record<HeliosComponentCategoryType, string>
|
|
34
|
+
|
|
35
|
+
interface StatusReturnType {
|
|
36
|
+
color: HeliosColorType
|
|
37
|
+
icon: HeliosIconType
|
|
38
|
+
name: string
|
|
39
|
+
status: HeliosComponentStatusType
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const getStatus = (component: string = "Example"): StatusReturnType => {
|
|
43
|
+
const componentMeta = COMPONENTS[component as keyof typeof COMPONENTS]
|
|
44
|
+
|
|
45
|
+
if (!componentMeta || !componentMeta._status) {
|
|
46
|
+
throw new Error(`Component "${component}" not found or missing _status`)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const _status = componentMeta._status as HeliosComponentStatusType
|
|
50
|
+
const color = STATUS_COLORS[_status]
|
|
51
|
+
const icon = STATUS_ICONS[_status]
|
|
52
|
+
const name = STATUS_NAMES[_status]
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
status: _status,
|
|
56
|
+
color,
|
|
57
|
+
icon,
|
|
58
|
+
name,
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import type { Scope } from "../types/scope"
|
|
2
|
+
import type { BreadcrumbItem } from "../components/Breadcrumb/Breadcrumb.types"
|
|
3
|
+
import type { SelectItem } from "../components/Select/Select.types"
|
|
4
|
+
import type { PieItem } from "../components/Pie/Pie.types"
|
|
5
|
+
import type { ResultItem } from "../components/shared/ResultList/ResultList.types"
|
|
6
|
+
|
|
7
|
+
const BREADCRUMB_ITEMS: Array<BreadcrumbItem> = [
|
|
8
|
+
{ name: "Index", href: "/", onClick: () => null },
|
|
9
|
+
{ name: "Books", href: "/", onClick: () => null },
|
|
10
|
+
{
|
|
11
|
+
name: "Lorem Ipsum",
|
|
12
|
+
href: "/",
|
|
13
|
+
isActive: true,
|
|
14
|
+
onClick: () => null,
|
|
15
|
+
},
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
const RESULT_ITEMS: Array<ResultItem> = [
|
|
19
|
+
{ name: "First Item", icon: "bullseye" },
|
|
20
|
+
{
|
|
21
|
+
name: "Second Item",
|
|
22
|
+
icon: "bell",
|
|
23
|
+
description: "Nulla ultricies ultrices mauris, sed posuere justo ultrices in.",
|
|
24
|
+
},
|
|
25
|
+
{ name: "Separator", type: "separator" },
|
|
26
|
+
{ name: "Disabled", isDisabled: false },
|
|
27
|
+
{ name: "Checkbox", type: "checkbox", isActive: false, onClick: () => null },
|
|
28
|
+
{
|
|
29
|
+
name: "Checkbox Checked",
|
|
30
|
+
type: "checkbox",
|
|
31
|
+
isActive: true,
|
|
32
|
+
onClick: () => null,
|
|
33
|
+
description: "Nulla ultricies ultrices mauris, sed posuere justo ultrices in.",
|
|
34
|
+
},
|
|
35
|
+
{ name: "Random Item", icon: "person" },
|
|
36
|
+
{ name: "Active Item", icon: "bell", isActive: true },
|
|
37
|
+
{ name: "Lorem Ipsum Dolor Sit Ameta", icon: "x-x" },
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
const MARKDOWN: string = `# Donec vestibulum
|
|
41
|
+
## Nam porta, orci porta commodo
|
|
42
|
+
### Pellentesque eu est luctus
|
|
43
|
+
#### Nullam pulvinar convallis
|
|
44
|
+
##### Luctus sollicitudin ipsum
|
|
45
|
+
###### Aliquam erat volutpat
|
|
46
|
+
|
|
47
|
+
Praesent tincidunt elit ante, <a href="">sit amet aliquet nunc imperdiet</a> nec. In pulvinar volutpat lacus sed semper. Aliquam vulputate risus at lacinia aliquam.
|
|
48
|
+
|
|
49
|
+
|feature|description|
|
|
50
|
+
|--|--|
|
|
51
|
+
|calt|Contextual alternates|
|
|
52
|
+
|dlig|Discretionary Ligatures|
|
|
53
|
+
|
|
54
|
+
Mauris efficitur aliquam risus, id tempus quam pharetra vitae.
|
|
55
|
+
|
|
56
|
+
\`\`\`tsx
|
|
57
|
+
<Flex isCentered={true} gap={4}>
|
|
58
|
+
<Dot size={8} color="blue"/>
|
|
59
|
+
<Dot size={8} color="red"/>
|
|
60
|
+
</Flex>
|
|
61
|
+
\`\`\`
|
|
62
|
+
|
|
63
|
+
Integer leo est, lobortis at nulla at, tempus dignissim velit. ~~Suspendisse dignissim~~, ipsum sit amet rhoncus tristique, urna risus accumsan leo, ut \`auctor augue function() {}\` sit amet metus. Proin purus risus, tincidunt a est a, porttitor dignissim erat. Sed vitae varius urna, sed <mark>mark tincidunt neque</mark>. Aenean egestas molestie ante nec pellentesque. Donec massa diam, molestie ac gravida at, commodo et diam.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
- First item
|
|
68
|
+
- Second item<sup>1</sup>
|
|
69
|
+
- Third item
|
|
70
|
+
- Orci varius natoque penatibus<sub>2</sub>
|
|
71
|
+
|
|
72
|
+
Orci varius natoque penatibus et <a>magnis dis parturient</a> montes, nascetur ridiculus mus. Aenean varius non magna dapibus pharetra. Pellentesque eget sapien sit amet massa dapibus lacinia. Integer auctor pulvinar erat, non pharetra felis fermentum ac.
|
|
73
|
+
|
|
74
|
+
> Proin purus risus, ~~tincidunt~~ a est a, porttitor dignissim erat. Sed vitae varius urna, sed tincidunt neque. Aenean egestas molestie ante nec pellentesque. Donec massa diam, molestie ac gravida at, commodo et diam.
|
|
75
|
+
|
|
76
|
+
<small>
|
|
77
|
+
Phasellus tristique tortor sed malesuada aliquam. Quisque cursus sodales velit, eget condimentum erat accumsan a. Fusce feugiat felis eros, in dignissim arcu imperdiet non. Fusce tincidunt eu dolor vitae pulvinar. Quisque dignissim nibh erat, eu iaculis est maximus sit amet. Vestibulum id lobortis nisi, a maximus leo. Etiam mattis rhoncus felis id condimentum. Vivamus ut nisi non nunc sollicitudin consectetur at id nisl. Vivamus quis turpis a leo pellentesque interdum et id diam. Fusce egestas diam orci, ut volutpat diam semper nec. Pellentesque accumsan consequat erat, id mattis mi ultrices sit amet.
|
|
78
|
+
</small>
|
|
79
|
+
`
|
|
80
|
+
|
|
81
|
+
const TAB_ITEMS: Array<string> = ["First", "Second", "Third"]
|
|
82
|
+
|
|
83
|
+
const TAB_SECTIONS: Array<unknown> = ["1. Content", "2. Content", "3. Content"]
|
|
84
|
+
|
|
85
|
+
const PIE_ITEMS: Array<PieItem> = [
|
|
86
|
+
{ name: "X", value: 24 },
|
|
87
|
+
{ name: "First", value: 24 },
|
|
88
|
+
{ name: "Second", value: 34 },
|
|
89
|
+
{ name: "Third", value: 63 },
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
const SELECT_ITEMS: Array<SelectItem> = [
|
|
93
|
+
{ name: "First", value: "first" },
|
|
94
|
+
{ name: "Second", value: "second" },
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
export const SCOPE: Scope = {
|
|
98
|
+
APPEARANCE: "light",
|
|
99
|
+
BREADCRUMB_ITEMS: BREADCRUMB_ITEMS,
|
|
100
|
+
BUTTONGROUP_ALIGN: "left",
|
|
101
|
+
CHECKBOX_LABEL: "Helium Enabled",
|
|
102
|
+
CHILDREN: "Hello World",
|
|
103
|
+
COLOR: "blue",
|
|
104
|
+
COLOR_ACCENT: "purple",
|
|
105
|
+
DATE: new Date().toISOString(),
|
|
106
|
+
DATE_FORMAT: "YYYY-MM-DD",
|
|
107
|
+
DONUT_SIZE: 48,
|
|
108
|
+
EMPHASIS: "primary",
|
|
109
|
+
FUNCTION: () => console.log(0),
|
|
110
|
+
GAP: 8,
|
|
111
|
+
HELPER_TEXT: "Learn this with love",
|
|
112
|
+
ICON: "robot",
|
|
113
|
+
ICON_ACCENT: "asterisk",
|
|
114
|
+
INPUT_LABEL: "Helium Enabled",
|
|
115
|
+
INTENT: "action",
|
|
116
|
+
INTENT_PARAGRAPH: "Offer guidance or recommendations based on expertise or experience, allowing for personal choice",
|
|
117
|
+
INTENT_TITLE: "Action",
|
|
118
|
+
IS_ACTIVE: false,
|
|
119
|
+
IS_CENTERED: false,
|
|
120
|
+
IS_CHECKED: true,
|
|
121
|
+
IS_COLUMN: true,
|
|
122
|
+
IS_DISABLED: false,
|
|
123
|
+
IS_LOADING: false,
|
|
124
|
+
IS_NARROW: false,
|
|
125
|
+
IS_OPEN: false,
|
|
126
|
+
IS_ROUND: false,
|
|
127
|
+
IS_ROUNDED: true,
|
|
128
|
+
MARKDOWN,
|
|
129
|
+
ON_RADIO_CHANGE: () => console.log(0),
|
|
130
|
+
ON_SELECT_ITEM: (item: SelectItem) => console.log(item),
|
|
131
|
+
ON_TEXTAREA_CHANGE: () => console.log(0),
|
|
132
|
+
ON_TEXT_CHANGE: () => console.log(0),
|
|
133
|
+
ON_TOGGLE_OPEN: () => console.log(0),
|
|
134
|
+
PERCENTAGE: 49,
|
|
135
|
+
PIE_ITEMS,
|
|
136
|
+
PILL_LABEL: "Deployed",
|
|
137
|
+
POSITION: "bottom-left",
|
|
138
|
+
RADIO: "radio-state-01",
|
|
139
|
+
RADIO_LABEL: "Atmosphere",
|
|
140
|
+
RESULT_LIST_ITEMS: RESULT_ITEMS,
|
|
141
|
+
SCALE: 24,
|
|
142
|
+
SELECT_ITEMS,
|
|
143
|
+
SIZE: "normal",
|
|
144
|
+
TAB_ITEMS,
|
|
145
|
+
TAB_SECTIONS,
|
|
146
|
+
TEXTAREA: "Your Message",
|
|
147
|
+
TEXTAREA_LABEL: "Your Message",
|
|
148
|
+
TEXTAREA_PLACEHOLDER: "Your Message",
|
|
149
|
+
TEXT_LABEL: "Email Address",
|
|
150
|
+
TEXT_VALUE: "",
|
|
151
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import { useState, createContext, useRef, useEffect, useMemo, useCallback } from "react"
|
|
4
|
+
import type { FC, PropsWithChildren } from "react"
|
|
5
|
+
import type { LayoutContextProps } from "./LayoutContext.types"
|
|
6
|
+
|
|
7
|
+
const IGNORE_DATA_ATTRIBUTE = "data-ui-layout-ignore" as const
|
|
8
|
+
|
|
9
|
+
const LayoutContext = createContext<LayoutContextProps | null>(null)
|
|
10
|
+
|
|
11
|
+
interface LayoutProviderBaseProps {
|
|
12
|
+
breakpoint?: number
|
|
13
|
+
}
|
|
14
|
+
type LayoutProviderProps = PropsWithChildren<LayoutProviderBaseProps>
|
|
15
|
+
|
|
16
|
+
const LayoutProvider: FC<LayoutProviderProps> = ({ children, breakpoint = 960 }) => {
|
|
17
|
+
const [isMenuVisible, setIsMenuVisible] = useState<boolean>(false)
|
|
18
|
+
const [isWideEnough, setIsWideEnough] = useState<boolean>(false)
|
|
19
|
+
const [hasMounted, setHasMounted] = useState<boolean>(false)
|
|
20
|
+
const asideRef = useRef<HTMLElement | null>(null)
|
|
21
|
+
const isMenuVisibleRef = useRef<boolean>(false)
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
isMenuVisibleRef.current = isMenuVisible
|
|
25
|
+
}, [isMenuVisible])
|
|
26
|
+
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
setHasMounted(true)
|
|
29
|
+
|
|
30
|
+
const mql = globalThis.matchMedia(`(min-width: ${breakpoint}px)`)
|
|
31
|
+
|
|
32
|
+
const handleChange = (event: MediaQueryListEvent | MediaQueryList): void => {
|
|
33
|
+
const matches = event.matches
|
|
34
|
+
|
|
35
|
+
setIsWideEnough(matches)
|
|
36
|
+
|
|
37
|
+
if (matches) {
|
|
38
|
+
setIsMenuVisible(true)
|
|
39
|
+
} else {
|
|
40
|
+
setIsMenuVisible(false)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Set initial state
|
|
45
|
+
handleChange(mql)
|
|
46
|
+
|
|
47
|
+
mql.addEventListener("change", handleChange)
|
|
48
|
+
|
|
49
|
+
const handleClickOutside = (event: MouseEvent): void => {
|
|
50
|
+
if (asideRef?.current?.contains(event.target as Node)) return
|
|
51
|
+
|
|
52
|
+
const clickedElement = event.target as Element
|
|
53
|
+
const shouldIgnore: Element | null = clickedElement?.closest(`[${IGNORE_DATA_ATTRIBUTE}]`)
|
|
54
|
+
|
|
55
|
+
if (!shouldIgnore) {
|
|
56
|
+
const currentIsWideEnough: boolean = mql.matches
|
|
57
|
+
|
|
58
|
+
if (!currentIsWideEnough && isMenuVisibleRef.current) {
|
|
59
|
+
setIsMenuVisible(false)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
globalThis.document.addEventListener("mousedown", handleClickOutside)
|
|
65
|
+
|
|
66
|
+
return (): void => {
|
|
67
|
+
mql.removeEventListener("change", handleChange)
|
|
68
|
+
globalThis.document.removeEventListener("mousedown", handleClickOutside)
|
|
69
|
+
}
|
|
70
|
+
}, [breakpoint])
|
|
71
|
+
|
|
72
|
+
const isNavigationVisible: boolean = isWideEnough || isMenuVisible
|
|
73
|
+
|
|
74
|
+
const onNavigationToggle = useCallback((): void => setIsMenuVisible((prev) => !prev), [])
|
|
75
|
+
const onAsideClose = useCallback((): void => setIsMenuVisible(false), [])
|
|
76
|
+
|
|
77
|
+
const contextValue: LayoutContextProps = useMemo(
|
|
78
|
+
() => ({
|
|
79
|
+
asideRef,
|
|
80
|
+
hasMounted,
|
|
81
|
+
isMenuVisible,
|
|
82
|
+
isWideEnough,
|
|
83
|
+
onAsideClose,
|
|
84
|
+
onNavigationToggle,
|
|
85
|
+
isNavigationVisible,
|
|
86
|
+
}),
|
|
87
|
+
[hasMounted, isMenuVisible, isWideEnough, isNavigationVisible, onAsideClose, onNavigationToggle],
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
return <LayoutContext.Provider value={contextValue}>{children}</LayoutContext.Provider>
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export { LayoutContext, LayoutProvider }
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RefObject } from "react"
|
|
2
|
+
|
|
3
|
+
export interface LayoutContextProps {
|
|
4
|
+
asideRef: RefObject<HTMLElement | null>
|
|
5
|
+
hasMounted: boolean
|
|
6
|
+
isMenuVisible: boolean
|
|
7
|
+
isWideEnough: boolean
|
|
8
|
+
onAsideClose: () => void
|
|
9
|
+
onNavigationToggle: () => void
|
|
10
|
+
isNavigationVisible: boolean
|
|
11
|
+
}
|
package/globals.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare module "*.module.css"
|
|
2
|
+
declare module "*.css"
|
|
3
|
+
|
|
4
|
+
type HeliosFixedThemeTypeRef = import("./types/themes").HeliosFixedThemeType
|
|
5
|
+
|
|
6
|
+
interface Window {
|
|
7
|
+
__theme: HeliosFixedThemeTypeRef
|
|
8
|
+
__onThemeChange: ((theme: HeliosFixedThemeTypeRef) => void) | undefined
|
|
9
|
+
__setPreferredTheme: (theme: HeliosFixedThemeTypeRef) => void
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare var __theme: HeliosFixedThemeTypeRef
|
|
13
|
+
declare var __onThemeChange: ((theme: HeliosFixedThemeTypeRef) => void) | undefined
|
|
14
|
+
declare var __setPreferredTheme: (theme: HeliosFixedThemeTypeRef) => void
|