@seeqdev/qomponents 0.0.176 → 0.0.177
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 +9 -0
- package/dist/Accordion/Accordion.d.ts +4 -0
- package/dist/Accordion/Accordion.js +7 -0
- package/dist/Accordion/Accordion.js.map +1 -0
- package/dist/Accordion/Accordion.stories.d.ts +5 -0
- package/dist/Accordion/Accordion.stories.js +75 -0
- package/dist/Accordion/Accordion.stories.js.map +1 -0
- package/dist/Accordion/Accordion.test.d.ts +1 -0
- package/dist/Accordion/Accordion.test.js +55 -0
- package/dist/Accordion/Accordion.test.js.map +1 -0
- package/dist/Accordion/Accordion.types.d.ts +86 -0
- package/dist/Accordion/Accordion.types.js +2 -0
- package/dist/Accordion/Accordion.types.js.map +1 -0
- package/dist/Accordion/index.d.ts +1 -0
- package/dist/Accordion/index.js +2 -0
- package/dist/Accordion/index.js.map +1 -0
- package/dist/Alert/Alert.d.ts +7 -0
- package/dist/Alert/Alert.js +34 -0
- package/dist/Alert/Alert.js.map +1 -0
- package/dist/Alert/Alert.stories.d.ts +6 -0
- package/dist/Alert/Alert.stories.js +65 -0
- package/dist/Alert/Alert.stories.js.map +1 -0
- package/dist/Alert/Alert.test.d.ts +1 -0
- package/dist/Alert/Alert.test.js +50 -0
- package/dist/Alert/Alert.test.js.map +1 -0
- package/dist/Alert/Alert.types.d.ts +62 -0
- package/dist/Alert/Alert.types.js +2 -0
- package/dist/Alert/Alert.types.js.map +1 -0
- package/dist/Alert/index.d.ts +1 -0
- package/dist/Alert/index.js +2 -0
- package/dist/Alert/index.js.map +1 -0
- package/dist/Button/Button.d.ts +10 -0
- package/dist/Button/Button.js +90 -0
- package/dist/Button/Button.js.map +1 -0
- package/dist/Button/Button.stories.d.ts +9 -0
- package/dist/Button/Button.stories.js +29 -0
- package/dist/Button/Button.stories.js.map +1 -0
- package/dist/Button/Button.test.d.ts +1 -0
- package/dist/Button/Button.test.js +47 -0
- package/dist/Button/Button.test.js.map +1 -0
- package/dist/Button/Button.types.d.ts +148 -0
- package/dist/Button/Button.types.js +5 -0
- package/dist/Button/Button.types.js.map +1 -0
- package/dist/Button/index.d.ts +1 -0
- package/dist/Button/index.js +2 -0
- package/dist/Button/index.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroup.d.ts +7 -0
- package/dist/ButtonGroup/ButtonGroup.js +35 -0
- package/dist/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroup.stories.d.ts +5 -0
- package/dist/ButtonGroup/ButtonGroup.stories.js +317 -0
- package/dist/ButtonGroup/ButtonGroup.stories.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroup.test.d.ts +1 -0
- package/dist/ButtonGroup/ButtonGroup.test.js +66 -0
- package/dist/ButtonGroup/ButtonGroup.test.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroup.types.d.ts +80 -0
- package/dist/ButtonGroup/ButtonGroup.types.js +2 -0
- package/dist/ButtonGroup/ButtonGroup.types.js.map +1 -0
- package/dist/ButtonGroup/index.d.ts +1 -0
- package/dist/ButtonGroup/index.js +2 -0
- package/dist/ButtonGroup/index.js.map +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.d.ts +4 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.js +36 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.js.map +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.d.ts +5 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js +104 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js.map +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.test.d.ts +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js +93 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js.map +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.types.d.ts +232 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js +2 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js.map +1 -0
- package/dist/ButtonWithDropdown/index.d.ts +1 -0
- package/dist/ButtonWithDropdown/index.js +2 -0
- package/dist/ButtonWithDropdown/index.js.map +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.d.ts +4 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.js +55 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.js.map +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.stories.d.ts +5 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.stories.js +25 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.stories.js.map +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.test.d.ts +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.test.js +81 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.test.js.map +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.types.d.ts +134 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.types.js +2 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.types.js.map +1 -0
- package/dist/ButtonWithPopover/index.d.ts +1 -0
- package/dist/ButtonWithPopover/index.js +2 -0
- package/dist/ButtonWithPopover/index.js.map +1 -0
- package/dist/Carousel/Carousel.d.ts +9 -0
- package/dist/Carousel/Carousel.js +76 -0
- package/dist/Carousel/Carousel.js.map +1 -0
- package/dist/Carousel/Carousel.stories.d.ts +5 -0
- package/dist/Carousel/Carousel.stories.js +63 -0
- package/dist/Carousel/Carousel.stories.js.map +1 -0
- package/dist/Carousel/Carousel.test.d.ts +1 -0
- package/dist/Carousel/Carousel.test.js +48 -0
- package/dist/Carousel/Carousel.test.js.map +1 -0
- package/dist/Carousel/Carousel.types.d.ts +85 -0
- package/dist/Carousel/Carousel.types.js +2 -0
- package/dist/Carousel/Carousel.types.js.map +1 -0
- package/dist/Carousel/index.d.ts +1 -0
- package/dist/Carousel/index.js +2 -0
- package/dist/Carousel/index.js.map +1 -0
- package/dist/Checkbox/Checkbox.d.ts +7 -0
- package/dist/Checkbox/Checkbox.js +24 -0
- package/dist/Checkbox/Checkbox.js.map +1 -0
- package/dist/Checkbox/Checkbox.stories.d.ts +5 -0
- package/dist/Checkbox/Checkbox.stories.js +12 -0
- package/dist/Checkbox/Checkbox.stories.js.map +1 -0
- package/dist/Checkbox/Checkbox.test.d.ts +1 -0
- package/dist/Checkbox/Checkbox.test.js +94 -0
- package/dist/Checkbox/Checkbox.test.js.map +1 -0
- package/dist/Checkbox/Checkbox.types.d.ts +91 -0
- package/dist/Checkbox/Checkbox.types.js +2 -0
- package/dist/Checkbox/Checkbox.types.js.map +1 -0
- package/dist/Checkbox/index.d.ts +1 -0
- package/dist/Checkbox/index.js +2 -0
- package/dist/Checkbox/index.js.map +1 -0
- package/dist/Collapse/Collapse.d.ts +4 -0
- package/dist/Collapse/Collapse.js +17 -0
- package/dist/Collapse/Collapse.js.map +1 -0
- package/dist/Collapse/Collapse.stories.d.ts +5 -0
- package/dist/Collapse/Collapse.stories.js +15 -0
- package/dist/Collapse/Collapse.stories.js.map +1 -0
- package/dist/Collapse/Collapse.test.d.ts +1 -0
- package/dist/Collapse/Collapse.test.js +17 -0
- package/dist/Collapse/Collapse.test.js.map +1 -0
- package/dist/Collapse/Collapse.types.d.ts +18 -0
- package/dist/Collapse/Collapse.types.js +2 -0
- package/dist/Collapse/Collapse.types.js.map +1 -0
- package/dist/Collapse/index.d.ts +1 -0
- package/dist/Collapse/index.js +2 -0
- package/dist/Collapse/index.js.map +1 -0
- package/dist/Icon/Icon.d.ts +10 -0
- package/dist/Icon/Icon.js +56 -0
- package/dist/Icon/Icon.js.map +1 -0
- package/dist/Icon/Icon.stories.d.ts +5 -0
- package/dist/Icon/Icon.stories.js +15 -0
- package/dist/Icon/Icon.stories.js.map +1 -0
- package/dist/Icon/Icon.test.d.ts +1 -0
- package/dist/Icon/Icon.test.js +55 -0
- package/dist/Icon/Icon.test.js.map +1 -0
- package/dist/Icon/Icon.types.d.ts +90 -0
- package/dist/Icon/Icon.types.js +16 -0
- package/dist/Icon/Icon.types.js.map +1 -0
- package/dist/Icon/index.d.ts +1 -0
- package/dist/Icon/index.js +2 -0
- package/dist/Icon/index.js.map +1 -0
- package/dist/InputGroup/InputGroup.d.ts +7 -0
- package/dist/InputGroup/InputGroup.js +36 -0
- package/dist/InputGroup/InputGroup.js.map +1 -0
- package/dist/InputGroup/InputGroup.stories.d.ts +5 -0
- package/dist/InputGroup/InputGroup.stories.js +129 -0
- package/dist/InputGroup/InputGroup.stories.js.map +1 -0
- package/dist/InputGroup/InputGroup.test.d.ts +1 -0
- package/dist/InputGroup/InputGroup.test.js +42 -0
- package/dist/InputGroup/InputGroup.test.js.map +1 -0
- package/dist/InputGroup/InputGroup.types.d.ts +61 -0
- package/dist/InputGroup/InputGroup.types.js +2 -0
- package/dist/InputGroup/InputGroup.types.js.map +1 -0
- package/dist/InputGroup/index.d.ts +2 -0
- package/dist/InputGroup/index.js +2 -0
- package/dist/InputGroup/index.js.map +1 -0
- package/dist/Modal/Modal.d.ts +5 -0
- package/dist/Modal/Modal.js +76 -0
- package/dist/Modal/Modal.js.map +1 -0
- package/dist/Modal/Modal.stories.d.ts +10 -0
- package/dist/Modal/Modal.stories.js +44 -0
- package/dist/Modal/Modal.stories.js.map +1 -0
- package/dist/Modal/Modal.test.d.ts +1 -0
- package/dist/Modal/Modal.test.js +108 -0
- package/dist/Modal/Modal.test.js.map +1 -0
- package/dist/Modal/Modal.types.d.ts +244 -0
- package/dist/Modal/Modal.types.js +2 -0
- package/dist/Modal/Modal.types.js.map +1 -0
- package/dist/Modal/index.d.ts +1 -0
- package/dist/Modal/index.js +2 -0
- package/dist/Modal/index.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.d.ts +4 -0
- package/dist/ProgressBar/ProgressBar.js +72 -0
- package/dist/ProgressBar/ProgressBar.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.stories.d.ts +5 -0
- package/dist/ProgressBar/ProgressBar.stories.js +35 -0
- package/dist/ProgressBar/ProgressBar.stories.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.test.d.ts +1 -0
- package/dist/ProgressBar/ProgressBar.test.js +43 -0
- package/dist/ProgressBar/ProgressBar.test.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.types.d.ts +77 -0
- package/dist/ProgressBar/ProgressBar.types.js +2 -0
- package/dist/ProgressBar/ProgressBar.types.js.map +1 -0
- package/dist/ProgressBar/index.d.ts +1 -0
- package/dist/ProgressBar/index.js +2 -0
- package/dist/ProgressBar/index.js.map +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.d.ts +4 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.js +39 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.js.map +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.d.ts +5 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js +58 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js.map +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.test.d.ts +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js +73 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js.map +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.types.d.ts +164 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js +2 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js.map +1 -0
- package/dist/SeeqActionDropdown/index.d.ts +1 -0
- package/dist/SeeqActionDropdown/index.js +2 -0
- package/dist/SeeqActionDropdown/index.js.map +1 -0
- package/dist/SeeqActionDropdown/variants.d.ts +5 -0
- package/dist/SeeqActionDropdown/variants.js +23 -0
- package/dist/SeeqActionDropdown/variants.js.map +1 -0
- package/dist/Select/Select.d.ts +15 -0
- package/dist/Select/Select.js +179 -0
- package/dist/Select/Select.js.map +1 -0
- package/dist/Select/Select.stories.d.ts +5 -0
- package/dist/Select/Select.stories.js +40 -0
- package/dist/Select/Select.stories.js.map +1 -0
- package/dist/Select/Select.test.d.ts +1 -0
- package/dist/Select/Select.test.js +175 -0
- package/dist/Select/Select.test.js.map +1 -0
- package/dist/Select/Select.types.d.ts +220 -0
- package/dist/Select/Select.types.js +2 -0
- package/dist/Select/Select.types.js.map +1 -0
- package/dist/Select/index.d.ts +2 -0
- package/dist/Select/index.js +3 -0
- package/dist/Select/index.js.map +1 -0
- package/dist/Slider/Slider.d.ts +6 -0
- package/dist/Slider/Slider.js +10 -0
- package/dist/Slider/Slider.js.map +1 -0
- package/dist/Slider/Slider.stories.d.ts +5 -0
- package/dist/Slider/Slider.stories.js +14 -0
- package/dist/Slider/Slider.stories.js.map +1 -0
- package/dist/Slider/Slider.test.d.ts +1 -0
- package/dist/Slider/Slider.test.js +32 -0
- package/dist/Slider/Slider.test.js.map +1 -0
- package/dist/Slider/Slider.types.d.ts +84 -0
- package/dist/Slider/Slider.types.js +2 -0
- package/dist/Slider/Slider.types.js.map +1 -0
- package/dist/Slider/index.d.ts +1 -0
- package/dist/Slider/index.js +2 -0
- package/dist/Slider/index.js.map +1 -0
- package/dist/SvgIcon/SvgIcon.d.ts +20 -0
- package/dist/SvgIcon/SvgIcon.js +28 -0
- package/dist/SvgIcon/SvgIcon.js.map +1 -0
- package/dist/SvgIcon/SvgIcon.stories.d.ts +5 -0
- package/dist/SvgIcon/SvgIcon.stories.js +18 -0
- package/dist/SvgIcon/SvgIcon.stories.js.map +1 -0
- package/dist/SvgIcon/SvgIcon.test.d.ts +1 -0
- package/dist/SvgIcon/SvgIcon.test.js +41 -0
- package/dist/SvgIcon/SvgIcon.test.js.map +1 -0
- package/dist/SvgIcon/SvgIcon.types.d.ts +75 -0
- package/dist/SvgIcon/SvgIcon.types.js +3 -0
- package/dist/SvgIcon/SvgIcon.types.js.map +1 -0
- package/dist/SvgIcon/index.d.ts +1 -0
- package/dist/SvgIcon/index.js +2 -0
- package/dist/SvgIcon/index.js.map +1 -0
- package/dist/Tabs/Tabs.d.ts +4 -0
- package/dist/Tabs/Tabs.js +17 -0
- package/dist/Tabs/Tabs.js.map +1 -0
- package/dist/Tabs/Tabs.stories.d.ts +5 -0
- package/dist/Tabs/Tabs.stories.js +73 -0
- package/dist/Tabs/Tabs.stories.js.map +1 -0
- package/dist/Tabs/Tabs.test.d.ts +1 -0
- package/dist/Tabs/Tabs.test.js +86 -0
- package/dist/Tabs/Tabs.test.js.map +1 -0
- package/dist/Tabs/Tabs.types.d.ts +100 -0
- package/dist/Tabs/Tabs.types.js +2 -0
- package/dist/Tabs/Tabs.types.js.map +1 -0
- package/dist/Tabs/index.d.ts +1 -0
- package/dist/Tabs/index.js +2 -0
- package/dist/Tabs/index.js.map +1 -0
- package/dist/TextArea/TextArea.d.ts +7 -0
- package/dist/TextArea/TextArea.js +55 -0
- package/dist/TextArea/TextArea.js.map +1 -0
- package/dist/TextArea/TextArea.stories.d.ts +5 -0
- package/dist/TextArea/TextArea.stories.js +10 -0
- package/dist/TextArea/TextArea.stories.js.map +1 -0
- package/dist/TextArea/TextArea.test.d.ts +1 -0
- package/dist/TextArea/TextArea.test.js +130 -0
- package/dist/TextArea/TextArea.test.js.map +1 -0
- package/dist/TextArea/TextArea.types.d.ts +115 -0
- package/dist/TextArea/TextArea.types.js +2 -0
- package/dist/TextArea/TextArea.types.js.map +1 -0
- package/dist/TextArea/index.d.ts +1 -0
- package/dist/TextArea/index.js +2 -0
- package/dist/TextArea/index.js.map +1 -0
- package/dist/TextField/TextField.d.ts +7 -0
- package/dist/TextField/TextField.js +85 -0
- package/dist/TextField/TextField.js.map +1 -0
- package/dist/TextField/TextField.stories.d.ts +5 -0
- package/dist/TextField/TextField.stories.js +11 -0
- package/dist/TextField/TextField.stories.js.map +1 -0
- package/dist/TextField/TextField.test.d.ts +1 -0
- package/dist/TextField/TextField.test.js +41 -0
- package/dist/TextField/TextField.test.js.map +1 -0
- package/dist/TextField/TextField.types.d.ts +198 -0
- package/dist/TextField/TextField.types.js +2 -0
- package/dist/TextField/TextField.types.js.map +1 -0
- package/dist/TextField/index.d.ts +1 -0
- package/dist/TextField/index.js +2 -0
- package/dist/TextField/index.js.map +1 -0
- package/dist/ToolbarButton/ToolbarButton.d.ts +3 -0
- package/dist/ToolbarButton/ToolbarButton.js +56 -0
- package/dist/ToolbarButton/ToolbarButton.js.map +1 -0
- package/dist/ToolbarButton/ToolbarButton.stories.d.ts +5 -0
- package/dist/ToolbarButton/ToolbarButton.stories.js +28 -0
- package/dist/ToolbarButton/ToolbarButton.stories.js.map +1 -0
- package/dist/ToolbarButton/ToolbarButton.test.d.ts +1 -0
- package/dist/ToolbarButton/ToolbarButton.test.js +85 -0
- package/dist/ToolbarButton/ToolbarButton.test.js.map +1 -0
- package/dist/ToolbarButton/ToolbarButton.types.d.ts +122 -0
- package/dist/ToolbarButton/ToolbarButton.types.js +2 -0
- package/dist/ToolbarButton/ToolbarButton.types.js.map +1 -0
- package/dist/ToolbarButton/index.d.ts +1 -0
- package/dist/ToolbarButton/index.js +2 -0
- package/dist/ToolbarButton/index.js.map +1 -0
- package/dist/Tooltip/QTip.stories.d.ts +5 -0
- package/dist/Tooltip/QTip.stories.js +19 -0
- package/dist/Tooltip/QTip.stories.js.map +1 -0
- package/dist/Tooltip/QTip.types.d.ts +13 -0
- package/dist/Tooltip/QTip.types.js +2 -0
- package/dist/Tooltip/QTip.types.js.map +1 -0
- package/dist/Tooltip/QTipPerformance.stories.d.ts +5 -0
- package/dist/Tooltip/QTipPerformance.stories.js +26 -0
- package/dist/Tooltip/QTipPerformance.stories.js.map +1 -0
- package/dist/Tooltip/Qtip.d.ts +26 -0
- package/dist/Tooltip/Qtip.js +168 -0
- package/dist/Tooltip/Qtip.js.map +1 -0
- package/dist/Tooltip/Tooltip.d.ts +13 -0
- package/dist/Tooltip/Tooltip.js +34 -0
- package/dist/Tooltip/Tooltip.js.map +1 -0
- package/dist/Tooltip/Tooltip.stories.d.ts +5 -0
- package/dist/Tooltip/Tooltip.stories.js +15 -0
- package/dist/Tooltip/Tooltip.stories.js.map +1 -0
- package/dist/Tooltip/Tooltip.types.d.ts +22 -0
- package/dist/Tooltip/Tooltip.types.js +3 -0
- package/dist/Tooltip/Tooltip.types.js.map +1 -0
- package/dist/Tooltip/TooltipPerformance.stories.d.ts +5 -0
- package/dist/Tooltip/TooltipPerformance.stories.js +26 -0
- package/dist/Tooltip/TooltipPerformance.stories.js.map +1 -0
- package/dist/Tooltip/index.d.ts +2 -0
- package/dist/Tooltip/index.js +3 -0
- package/dist/Tooltip/index.js.map +1 -0
- package/dist/Tooltip/qTip.utilities.d.ts +3 -0
- package/dist/Tooltip/qTip.utilities.js +11 -0
- package/dist/Tooltip/qTip.utilities.js.map +1 -0
- package/dist/example/package.json +1 -1
- package/dist/iconFont/FontCustom.woff +0 -0
- package/dist/iconFont/FontCustom.woff2 +0 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.esm.js +5443 -5298
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +5443 -5298
- package/dist/index.js.map +1 -1
- package/dist/setupTests.d.ts +1 -0
- package/dist/setupTests.js +6 -0
- package/dist/setupTests.js.map +1 -0
- package/dist/src/SeeqActionDropdown/SeeqActionDropdown.types.d.ts +5 -0
- package/dist/styles.css +2807 -3535
- package/dist/types.d.ts +27 -0
- package/dist/types.js +26 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/browserId.d.ts +9 -0
- package/dist/utils/browserId.js +29 -0
- package/dist/utils/browserId.js.map +1 -0
- package/dist/utils/svg.d.ts +15 -0
- package/dist/utils/svg.js +20 -0
- package/dist/utils/svg.js.map +1 -0
- package/dist/utils/validateStyleDimension.d.ts +2 -0
- package/dist/utils/validateStyleDimension.js +14 -0
- package/dist/utils/validateStyleDimension.js.map +1 -0
- package/dist/utils/validateStyleDimension.test.d.ts +1 -0
- package/dist/utils/validateStyleDimension.test.js +20 -0
- package/dist/utils/validateStyleDimension.test.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { TooltipComponentProps } from '../Tooltip/Tooltip.types';
|
|
2
|
+
export declare const svgIconTypes: readonly ["theme", "white", "dark-gray", "darkish-gray", "gray", "color", "info", "text", "warning", "inherit", "danger", "theme-light", "success", "default"];
|
|
3
|
+
export type SvgIconType = (typeof svgIconTypes)[number];
|
|
4
|
+
/**
|
|
5
|
+
* Props for the SvgIcon component that renders SVG-based icons with various styling options.
|
|
6
|
+
* Extends TooltipComponentProps to support tooltip functionality on the icon.
|
|
7
|
+
* Similar to Icon component but specifically for SVG icons instead of font icons.
|
|
8
|
+
*/
|
|
9
|
+
export interface SvgIconProps extends TooltipComponentProps {
|
|
10
|
+
/**
|
|
11
|
+
* SVG icon identifier or class name to display.
|
|
12
|
+
* This should correspond to an available SVG icon in your icon system.
|
|
13
|
+
* Examples: 'fc-zoom', 'fc-delete', 'custom-arrow'.
|
|
14
|
+
*/
|
|
15
|
+
icon: string;
|
|
16
|
+
/**
|
|
17
|
+
* Visual style type that determines the icon's color and appearance:
|
|
18
|
+
* - `default`: Uses automatic dark/light text colors based on theme
|
|
19
|
+
* - `theme`: Uses primary theme colors
|
|
20
|
+
* - `white`: Pure white color
|
|
21
|
+
* - `text`: Uses standard text color
|
|
22
|
+
* - `dark-gray`: Dark gray color
|
|
23
|
+
* - `darkish-gray`: Medium-dark gray color
|
|
24
|
+
* - `gray`: Standard gray color
|
|
25
|
+
* - `color`: Uses custom color specified in `color` prop
|
|
26
|
+
* - `info`: Blue informational color
|
|
27
|
+
* - `warning`: Yellow/orange warning color
|
|
28
|
+
* - `danger`: Red error/danger color
|
|
29
|
+
* - `success`: Green success color
|
|
30
|
+
* - `theme-light`: Lighter version of theme color
|
|
31
|
+
* - `inherit`: Inherits color from parent element
|
|
32
|
+
* @default 'default'
|
|
33
|
+
*/
|
|
34
|
+
type?: SvgIconType;
|
|
35
|
+
/**
|
|
36
|
+
* Custom color value for the icon when `type` is set to 'color'.
|
|
37
|
+
* Can be any valid CSS color (hex, rgb, color names, etc.).
|
|
38
|
+
* This property is required when type is 'color'.
|
|
39
|
+
*/
|
|
40
|
+
color?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Callback function triggered when the icon is clicked.
|
|
43
|
+
* Receives the mouse event as a parameter. Use this to make icons interactive
|
|
44
|
+
* for actions like opening menus, triggering functions, or navigation.
|
|
45
|
+
*/
|
|
46
|
+
onClick?: (e?: React.MouseEvent<HTMLElement, MouseEvent>) => any;
|
|
47
|
+
/**
|
|
48
|
+
* Additional CSS classes to apply to the SVG icon element.
|
|
49
|
+
* Use this to customize the icon's appearance, spacing, or behavior beyond built-in options.
|
|
50
|
+
*/
|
|
51
|
+
extraClassNames?: string;
|
|
52
|
+
/**
|
|
53
|
+
* HTML ID attribute for the SVG icon element.
|
|
54
|
+
* Should be unique across the page for proper HTML semantics and accessibility.
|
|
55
|
+
*/
|
|
56
|
+
id?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Test ID attribute for the SVG icon element used in automated testing.
|
|
59
|
+
* Applied to the `data-testid` attribute for element selection in test suites.
|
|
60
|
+
*/
|
|
61
|
+
testId?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Custom identifier placed in the `data-customid` attribute on the icon element.
|
|
64
|
+
* Useful for identifying the specific icon in event handlers when multiple icons
|
|
65
|
+
* share the same click handler. Helps distinguish which icon was clicked.
|
|
66
|
+
*/
|
|
67
|
+
customId?: string;
|
|
68
|
+
/**
|
|
69
|
+
* SVG viewBox attribute that defines the coordinate system and aspect ratio.
|
|
70
|
+
* Format: "min-x min-y width height" (e.g., "0 0 24 24").
|
|
71
|
+
* If not provided, uses the default viewBox from the SVG definition.
|
|
72
|
+
* Use this to crop or scale the icon's visible area.
|
|
73
|
+
*/
|
|
74
|
+
viewBox?: string;
|
|
75
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SvgIcon.types.js","sourceRoot":"","sources":["../../src/SvgIcon/SvgIcon.types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,SAAS,CAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './SvgIcon';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SvgIcon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Content, List, Root, Trigger } from '@radix-ui/react-tabs';
|
|
3
|
+
import Icon from '../Icon';
|
|
4
|
+
const Tabs = ({ tabs, defaultActiveTab, activeTab, onTabSelect, extraClassNames, testId, id, stretchTabs = false, }) => {
|
|
5
|
+
const handleTabSelect = (tabId) => {
|
|
6
|
+
if (activeTab === tabId)
|
|
7
|
+
return;
|
|
8
|
+
onTabSelect && onTabSelect(tabId);
|
|
9
|
+
};
|
|
10
|
+
return (_jsxs(Root, { className: `tw:flex tw:flex-col tw:min-w-75 tw:max-w-full tw:flex-grow tw:focus-visible:outline-none ${extraClassNames || ''}`, defaultValue: defaultActiveTab, "data-testid": testId, id: id, value: activeTab, onValueChange: handleTabSelect, children: [_jsx(List, { className: `tw:flex tw:flex-row tw:flex-wrap tw:z-[1001]`, children: tabs.map(({ id, icon, label, tabExtraClassNames, testId: tabsTestId, disabled, tabLabelExtraClassNames = '' }, index) => (_jsx(Trigger, { className: `tw:bg-sq-white tw:dark:bg-sq-dark-background tw:h-sq-25 tw:focus-visible:outline-none tw:min-w-25 tw:px-4 tw:border-solid tw:flex tw:flex-1 tw:justify-center tw:items-center tw:border-r-[2px] tw:last:border-r-0 tw:border-sq-overlay tw:dark:border-gray-700 ${stretchTabs ? '' : 'tw:max-w-max tw:min-w-fit'} ${tabExtraClassNames || ''} ${activeTab === id
|
|
11
|
+
? 'tw:border-b-sq-theme-darker tw:dark:border-b-sq-theme-darker tw:border-b-[0.1875rem]'
|
|
12
|
+
: 'tw:hover:bg-sq-light-gray tw:border-b-[0.0625rem] tw:hover:dark:bg-gray-700'}`, "data-testid": tabsTestId, disabled: disabled, value: id, children: _jsxs("span", { className: "tw:flex tw:items-center tw:overflow-hidden", children: [icon && (_jsx(Icon, { icon: icon, testId: `${id}_tab-icon`, extraClassNames: "tw:text-sq-15 tw:mr-sq-7 tw:flex-shrink-0" })), _jsx("span", { className: `tw:text-sq-13 tw:font-medium tw:whitespace-nowrap tw:overflow-hidden tw:text-ellipsis ${activeTab === id
|
|
13
|
+
? 'tw:dark:text-sq-dark-text tw:text-gray-500'
|
|
14
|
+
: 'tw:dark:text-sq-theme-darker tw:text-sq-theme-dark'} ${tabLabelExtraClassNames}`, children: label })] }) }, `${label}-${id}-${index}`))) }), tabs.map((tab, index) => (_jsx(Content, { className: `tw:bg-sq-white tw:dark:bg-sq-dark-background tw:overflow-y-auto tw:-mt-sq-1 tw:border-t-[0.0625rem] tw:border-t-sq-overlay tw:dark:border-t-gray-700 tw:z-[500] tw:flex tw:flex-col tw:flex-grow tw:focus-visible:outline-none ${tab.tabContentExtraClassNames || ''}`, value: tab.id, children: tab.content }, `${tab.label}_${index}_content`)))] }));
|
|
15
|
+
};
|
|
16
|
+
export default Tabs;
|
|
17
|
+
//# sourceMappingURL=Tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../src/Tabs/Tabs.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,MAAM,IAAI,GAAuC,CAAC,EAChD,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,eAAe,EACf,MAAM,EACN,EAAE,EACF,WAAW,GAAG,KAAK,GACpB,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE;QACxC,IAAI,SAAS,KAAK,KAAK;YAAE,OAAO;QAChC,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,IACH,SAAS,EAAE,4FACT,eAAe,IAAI,EACrB,EAAE,EACF,YAAY,EAAE,gBAAgB,iBACjB,MAAM,EACnB,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,eAAe,aAC9B,KAAC,IAAI,IAAC,SAAS,EAAE,8CAA8C,YAC5D,IAAI,CAAC,GAAG,CACP,CACE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,GAAG,EAAE,EAAE,EACnG,KAAK,EACL,EAAE,CAAC,CACH,KAAC,OAAO,IACN,SAAS,EAAE,mQACT,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BACrB,IAAI,kBAAkB,IAAI,EAAE,IAC1B,SAAS,KAAK,EAAE;wBACd,CAAC,CAAC,sFAAsF;wBACxF,CAAC,CAAC,6EACN,EAAE,iBACW,UAAU,EACvB,QAAQ,EAAE,QAAQ,EAElB,KAAK,EAAE,EAAE,YACT,gBAAM,SAAS,EAAC,4CAA4C,aACzD,IAAI,IAAI,CACP,KAAC,IAAI,IACH,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,GAAG,EAAE,WAAW,EACxB,eAAe,EAAC,2CAA2C,GAC3D,CACH,EACD,eACE,SAAS,EAAE,yFACT,SAAS,KAAK,EAAE;oCACd,CAAC,CAAC,4CAA4C;oCAC9C,CAAC,CAAC,oDACN,IAAI,uBAAuB,EAAE,YAC5B,KAAK,GACD,IACF,IAlBF,GAAG,KAAK,IAAI,EAAE,IAAI,KAAK,EAAE,CAmBtB,CACX,CACF,GACI,EACN,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACxB,KAAC,OAAO,IACN,SAAS,EAAE,kOACT,GAAG,CAAC,yBAAyB,IAAI,EACnC,EAAE,EAEF,KAAK,EAAE,GAAG,CAAC,EAAE,YACZ,GAAG,CAAC,OAAO,IAFP,GAAG,GAAG,CAAC,KAAK,IAAI,KAAK,UAAU,CAG5B,CACX,CAAC,IACG,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import Tabs from './Tabs';
|
|
4
|
+
import Button from '../Button';
|
|
5
|
+
export default {
|
|
6
|
+
title: 'Tabs',
|
|
7
|
+
};
|
|
8
|
+
const renderData = () => (_jsxs("div", { className: "tw:text-sq-text-color tw:dark:text-sq-white", children: [_jsx("p", { className: "tw:mb-5 tw:text-sq-15 tw:leading-normal", children: "This is a data tab to show details about your data. You can make changes to your account" }), _jsx(Button, { variant: "outline", label: "Save data" })] }));
|
|
9
|
+
const renderTools = () => (_jsxs("div", { className: "tw:text-sq-text-color tw:dark:text-sq-white", children: [_jsx("p", { className: "tw:mb-5 tw:text-sq-15 tw:leading-normal", children: "Make changes to your account here. Click save when you're done." }), _jsx(Button, { variant: "outline", label: "Save tools" })] }));
|
|
10
|
+
const renderJournal = () => (_jsxs("div", { className: "tw:text-sq-text-color tw:dark:text-sq-white", children: [_jsx("p", { className: "tw:mb-5 tw:text-sq-15 tw:leading-normal", children: "Make changes to your account here. Click save when you're done." }), _jsx(Button, { variant: "outline", label: "Save journal" })] }));
|
|
11
|
+
const tabsList = [
|
|
12
|
+
{
|
|
13
|
+
id: 'data',
|
|
14
|
+
label: 'Data',
|
|
15
|
+
icon: 'fc-data',
|
|
16
|
+
content: renderData(),
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'tools',
|
|
20
|
+
label: 'Tools',
|
|
21
|
+
icon: 'fc-gears-2',
|
|
22
|
+
content: renderTools(),
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'journal',
|
|
26
|
+
label: 'Journal',
|
|
27
|
+
icon: 'fc-workbook-lock',
|
|
28
|
+
content: renderJournal(),
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
const extraTabsList = [
|
|
32
|
+
{
|
|
33
|
+
id: 'data',
|
|
34
|
+
label: 'Data',
|
|
35
|
+
icon: 'fc-data',
|
|
36
|
+
content: renderData(),
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'tools',
|
|
40
|
+
label: 'Tools',
|
|
41
|
+
icon: 'fc-gears-2',
|
|
42
|
+
content: renderTools(),
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: 'journal',
|
|
46
|
+
label: 'Journal',
|
|
47
|
+
icon: 'fc-workbook-lock',
|
|
48
|
+
content: renderJournal(),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: 'journal2',
|
|
52
|
+
label: 'Journal',
|
|
53
|
+
icon: 'fc-workbook-lock',
|
|
54
|
+
disabled: true,
|
|
55
|
+
content: renderJournal(),
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 'data3',
|
|
59
|
+
label: 'Data 2',
|
|
60
|
+
icon: 'fc-data',
|
|
61
|
+
disabled: true,
|
|
62
|
+
content: renderData(),
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
const colors = ['topic', 'analysis', 'datalab', 'vantage'];
|
|
66
|
+
export const AllTabsVariants = () => {
|
|
67
|
+
const [activeTab, setActiveTab] = React.useState('data');
|
|
68
|
+
const renderAllVariations = (color) => (_jsxs("div", { children: [_jsx("div", { className: "tw:p-4", children: _jsx(Tabs, { stretchTabs: true, activeTab: activeTab, onTabSelect: setActiveTab, defaultActiveTab: "data", tabs: tabsList }) }), _jsx("div", { className: "tw:p-4", children: _jsx(Tabs, { activeTab: activeTab, onTabSelect: (tabId) => setActiveTab(tabId), defaultActiveTab: "tool", tabs: extraTabsList.map((tab) => ({ ...tab, icon: undefined, tabExtraClassNames: 'tw:max-w-max' })) }) }), _jsxs("div", { className: "tw:p-4 tw-dark tw:bg-sq-dark-background ", children: [_jsxs("p", { className: "tw:text-sq-theme-dark tw:mb-8", children: [color[0].toUpperCase() + color.slice(1), " Dark mode"] }), _jsx(Tabs, { activeTab: activeTab, onTabSelect: (tabId) => setActiveTab(tabId), defaultActiveTab: "tools", tabs: tabsList.map((tab) => ({ ...tab, icon: undefined })) })] })] }, color + '_wrapper'));
|
|
69
|
+
return (_jsx("div", { className: "tw:grid tw:grid-cols-4 tw:gap-4", children: colors.map((color) => {
|
|
70
|
+
return (_jsxs("div", { className: `color_${color}`, children: [_jsxs("b", { children: [color[0].toUpperCase() + color.slice(1), " Colors"] }), renderAllVariations(color)] }, color));
|
|
71
|
+
}) }));
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=Tabs.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.stories.js","sourceRoot":"","sources":["../../src/Tabs/Tabs.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAe;IACb,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CACvB,eAAK,SAAS,EAAC,6CAA6C,aAC1D,YAAG,SAAS,EAAC,yCAAyC,yGAElD,EACJ,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,WAAW,GAAG,IAC1C,CACP,CAAC;AAEF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CACxB,eAAK,SAAS,EAAC,6CAA6C,aAC1D,YAAG,SAAS,EAAC,yCAAyC,gFAElD,EACJ,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,YAAY,GAAG,IAC3C,CACP,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAC1B,eAAK,SAAS,EAAC,6CAA6C,aAC1D,YAAG,SAAS,EAAC,yCAAyC,gFAElD,EACJ,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,cAAc,GAAG,IAC7C,CACP,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,UAAU,EAAE;KACtB;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,WAAW,EAAE;KACvB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,aAAa,EAAE;KACzB;CACF,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,UAAU,EAAE;KACtB;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,WAAW,EAAE;KACvB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,aAAa,EAAE;KACzB;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,aAAa,EAAE;KACzB;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,UAAU,EAAE;KACtB;CACF,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzD,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAC7C,0BACE,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,IAAI,IACH,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,YAAY,EACzB,gBAAgB,EAAC,MAAM,EACvB,IAAI,EAAE,QAAQ,GACd,GACE,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,IAAI,IACH,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAC3C,gBAAgB,EAAC,MAAM,EACvB,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC,CAAC,GACnG,GACE,EACN,eAAK,SAAS,EAAC,0CAA0C,aACvD,aAAG,SAAS,EAAC,+BAA+B,aAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAe,EACpG,KAAC,IAAI,IACH,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAC3C,gBAAgB,EAAC,OAAO,EACxB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,GAC1D,IACE,KA1BE,KAAK,GAAG,UAAU,CA2BtB,CACP,CAAC;IACF,OAAO,CACL,cAAK,SAAS,EAAC,iCAAiC,YAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpB,OAAO,CACL,eAAiB,SAAS,EAAE,SAAS,KAAK,EAAE,aAC1C,wBAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAY,EACtD,mBAAmB,CAAC,KAAK,CAAC,KAFnB,KAAK,CAGT,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import '@testing-library/jest-dom';
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
6
|
+
import Tabs from './Tabs';
|
|
7
|
+
const renderData = () => (_jsxs("div", { className: "tw:text-sq-text-color tw:dark:text-sq-white", children: [_jsx("p", { className: "tw:mb-5 tw:text-sq-15 tw:leading-normal", children: "This is a data tab to show details about your data. You can make changes to your account" }), _jsx("button", { children: "save data" })] }));
|
|
8
|
+
const renderTools = () => (_jsxs("div", { className: "tw:text-sq-text-color tw:dark:text-sq-white", children: [_jsx("p", { className: "tw:mb-5 tw:text-sq-15 tw:leading-normal", children: "Make changes to your account here. Click save when you're done." }), _jsx("button", { children: "save tools" })] }));
|
|
9
|
+
const renderJournal = () => (_jsxs("div", { className: "tw:text-sq-text-color tw:dark:text-sq-white", children: [_jsx("p", { className: "tw:mb-5 tw:text-sq-15 tw:leading-normal", children: "Make changes to your account here. Click save when you're done." }), _jsx("button", { children: "save journal" })] }));
|
|
10
|
+
const tabsList = [
|
|
11
|
+
{
|
|
12
|
+
id: 'data',
|
|
13
|
+
label: 'Data',
|
|
14
|
+
icon: 'fc-data',
|
|
15
|
+
content: renderData(),
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: 'tools',
|
|
19
|
+
label: 'Tools',
|
|
20
|
+
icon: 'fc-gears-2',
|
|
21
|
+
content: renderTools(),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'journal',
|
|
25
|
+
label: 'Journal',
|
|
26
|
+
icon: 'fc-workbook-lock',
|
|
27
|
+
content: renderJournal(),
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
const mockTabsClick = jest.fn();
|
|
31
|
+
const SampleComponent = (props) => {
|
|
32
|
+
const [activeTab, setActiveTab] = React.useState('data');
|
|
33
|
+
return (_jsx(Tabs, { ...props, activeTab: activeTab, onTabSelect: (tabId) => {
|
|
34
|
+
setActiveTab(tabId);
|
|
35
|
+
mockTabsClick(tabId);
|
|
36
|
+
} }));
|
|
37
|
+
};
|
|
38
|
+
describe('Tabs', () => {
|
|
39
|
+
class Context {
|
|
40
|
+
props = {
|
|
41
|
+
tabs: tabsList,
|
|
42
|
+
defaultActiveTab: 'data',
|
|
43
|
+
activeTab: 'data',
|
|
44
|
+
id: 'tabs-table',
|
|
45
|
+
onTabSelect: jest.fn(),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
let tc;
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
tc = new Context();
|
|
51
|
+
});
|
|
52
|
+
const renderTabs = (props) => render(_jsx(SampleComponent, { ...props }));
|
|
53
|
+
it('renders Tabs label with correct content based on default active tab', () => {
|
|
54
|
+
renderTabs(tc.props);
|
|
55
|
+
expect(screen.getByText('Data')).toBeInTheDocument();
|
|
56
|
+
expect(screen.getByText('Tools')).toBeInTheDocument();
|
|
57
|
+
expect(screen.getByText('Journal')).toBeInTheDocument();
|
|
58
|
+
expect(screen.getByTestId('journal_tab-icon')).toBeInTheDocument();
|
|
59
|
+
expect(screen.getByText('save data')).toBeInTheDocument();
|
|
60
|
+
expect(screen.queryByText('save tools')).not.toBeInTheDocument();
|
|
61
|
+
expect(screen.queryByText('save journals')).not.toBeInTheDocument();
|
|
62
|
+
});
|
|
63
|
+
it('renders correct content after tab is selected', async () => {
|
|
64
|
+
renderTabs(tc.props);
|
|
65
|
+
expect(screen.getByText('save data')).toBeInTheDocument();
|
|
66
|
+
await userEvent.click(screen.getByText('Tools'));
|
|
67
|
+
expect(mockTabsClick).toHaveBeenCalled();
|
|
68
|
+
expect(screen.getByText('save tools')).toBeInTheDocument();
|
|
69
|
+
});
|
|
70
|
+
it('does not render icon if it is not provided', async () => {
|
|
71
|
+
renderTabs({ ...tc.props, tabs: tc.props.tabs.map((tab) => ({ ...tab, icon: undefined })) });
|
|
72
|
+
expect(screen.queryByText('journal_tab-icon')).not.toBeInTheDocument();
|
|
73
|
+
});
|
|
74
|
+
it('calls the onTabSelect callback when a new tab is clicked', async () => {
|
|
75
|
+
mockTabsClick.mockClear();
|
|
76
|
+
renderTabs(tc.props);
|
|
77
|
+
await userEvent.click(screen.getByText('Journal'));
|
|
78
|
+
expect(mockTabsClick).toBeCalledWith('journal');
|
|
79
|
+
expect(mockTabsClick).toBeCalledTimes(1);
|
|
80
|
+
mockTabsClick.mockClear();
|
|
81
|
+
await userEvent.click(screen.getByText('Tools'));
|
|
82
|
+
expect(mockTabsClick).toBeCalledWith('tools');
|
|
83
|
+
expect(mockTabsClick).toBeCalledTimes(1);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=Tabs.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.test.js","sourceRoot":"","sources":["../../src/Tabs/Tabs.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the Tabs component that creates a tabbed interface for organizing content.
|
|
4
|
+
*/
|
|
5
|
+
export interface TabsProps {
|
|
6
|
+
/**
|
|
7
|
+
* Additional CSS classes to apply to the tabs container.
|
|
8
|
+
* Use this to customize the overall appearance and layout of the tab component.
|
|
9
|
+
*/
|
|
10
|
+
extraClassNames?: string;
|
|
11
|
+
/**
|
|
12
|
+
* ID of the tab that should be active when the component first loads.
|
|
13
|
+
* Only used for uncontrolled tabs where the component manages its own active state.
|
|
14
|
+
* Should match the `id` of one of the tabs in the `tabs` array.
|
|
15
|
+
*/
|
|
16
|
+
defaultActiveTab?: string;
|
|
17
|
+
/**
|
|
18
|
+
* ID of the currently active tab for controlled component behavior.
|
|
19
|
+
* When provided, the component becomes controlled and you must handle tab changes
|
|
20
|
+
* via the `onTabSelect` callback to update this value.
|
|
21
|
+
*/
|
|
22
|
+
activeTab?: string;
|
|
23
|
+
/**
|
|
24
|
+
* When true, enables smooth transitions when switching between tabs.
|
|
25
|
+
* Provides visual animation effects during tab content changes.
|
|
26
|
+
*/
|
|
27
|
+
transition?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Callback function triggered when a user selects a different tab.
|
|
30
|
+
* Receives the ID of the newly selected tab. Use this to handle tab changes
|
|
31
|
+
* and update the `activeTab` prop in controlled mode.
|
|
32
|
+
*/
|
|
33
|
+
onTabSelect?: (tabId: string) => void;
|
|
34
|
+
/**
|
|
35
|
+
* HTML ID attribute for the tabs container element.
|
|
36
|
+
* Should be unique across the page for proper HTML semantics and accessibility.
|
|
37
|
+
*/
|
|
38
|
+
id?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Test ID attribute for the tabs container used in automated testing.
|
|
41
|
+
* Applied to the main tabs component for test targeting and interaction.
|
|
42
|
+
*/
|
|
43
|
+
testId?: string;
|
|
44
|
+
/**
|
|
45
|
+
* When true, makes the tab headers stretch to fill the full width of the container.
|
|
46
|
+
* Each tab header will take equal width. When false, tabs size based on their content.
|
|
47
|
+
*/
|
|
48
|
+
stretchTabs?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Array of tab configurations that define the available tabs and their content.
|
|
51
|
+
* Each tab represents a separate page or section within the tabbed interface.
|
|
52
|
+
*/
|
|
53
|
+
tabs: {
|
|
54
|
+
/**
|
|
55
|
+
* Display text for the tab header.
|
|
56
|
+
* This is what users see and click on to switch tabs.
|
|
57
|
+
*/
|
|
58
|
+
label: string;
|
|
59
|
+
/**
|
|
60
|
+
* Unique identifier for this tab.
|
|
61
|
+
* Used for tracking the active tab and in callbacks. Must be unique within the tabs array.
|
|
62
|
+
*/
|
|
63
|
+
id: string;
|
|
64
|
+
/**
|
|
65
|
+
* React content to display when this tab is selected.
|
|
66
|
+
* Can be any React element including complex layouts, forms, or other components.
|
|
67
|
+
*/
|
|
68
|
+
content: React.JSX.Element;
|
|
69
|
+
/**
|
|
70
|
+
* Icon class name to display next to the tab label.
|
|
71
|
+
* Typically uses FontAwesome classes for visual enhancement of the tab header.
|
|
72
|
+
*/
|
|
73
|
+
icon?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Test ID attribute for this specific tab header used in automated testing.
|
|
76
|
+
* Helps identify and interact with individual tabs in test suites.
|
|
77
|
+
*/
|
|
78
|
+
testId?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Additional CSS classes to apply to this tab's header element.
|
|
81
|
+
* Use this to customize individual tab appearance beyond global styling.
|
|
82
|
+
*/
|
|
83
|
+
tabExtraClassNames?: string;
|
|
84
|
+
/**
|
|
85
|
+
* When true, disables this tab preventing user interaction.
|
|
86
|
+
* Disabled tabs appear visually dimmed and cannot be selected.
|
|
87
|
+
*/
|
|
88
|
+
disabled?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Additional CSS classes to apply to this tab's content area.
|
|
91
|
+
* Use this to customize the styling of the content when this tab is active.
|
|
92
|
+
*/
|
|
93
|
+
tabContentExtraClassNames?: string;
|
|
94
|
+
/**
|
|
95
|
+
* Additional CSS classes to apply to this tab's label.
|
|
96
|
+
* Use this to customize the styling of the label.
|
|
97
|
+
*/
|
|
98
|
+
tabLabelExtraClassNames?: string;
|
|
99
|
+
}[];
|
|
100
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.types.js","sourceRoot":"","sources":["../../src/Tabs/Tabs.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Tabs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { useRef, useEffect } from 'react';
|
|
3
|
+
import '../styles.css';
|
|
4
|
+
const baseClasses = 'tw:leading-normal tw:outline-none tw:py-1 tw:px-3 tw:rounded-md tw:w-full' +
|
|
5
|
+
' tw:disabled:pointer-events-none tw:disabled:bg-sq-light-gray tw:disabled:dark:bg-sq-dark-disabled-gray' +
|
|
6
|
+
' tw:disabled:cursor-not-allowed tw:p-1 tw:border-solid tw:border tw:text-sm';
|
|
7
|
+
const darkTheme = 'tw:dark:bg-sq-dark-background tw:dark:text-sq-dark-text ' +
|
|
8
|
+
'tw:dark:placeholder-sq-dark-text/30 tw:disabled:dark:text-sq-dark-text/30';
|
|
9
|
+
const lightTheme = 'tw:text-sq-text-color tw:placeholder-gray-400 tw:disabled:text-sq-darkish-gray';
|
|
10
|
+
const errorClasses = 'tw:border-sq-danger';
|
|
11
|
+
const borderColorClasses = [
|
|
12
|
+
'tw:border-sq-disabled-gray',
|
|
13
|
+
'tw:dark:border-sq-dark-disabled-gray',
|
|
14
|
+
'tw:dark:focus:border-sq-theme-darker',
|
|
15
|
+
'tw:dark:active:border-sq-theme-darker',
|
|
16
|
+
'tw:focus:border-sq-theme-dark',
|
|
17
|
+
'tw:active:border-sq-theme-dark',
|
|
18
|
+
].join(' ');
|
|
19
|
+
/**
|
|
20
|
+
* TextArea.
|
|
21
|
+
*/
|
|
22
|
+
export const TextArea = React.forwardRef(({ readonly = false, disabled = false, onChange, onKeyUp, onFocus, onBlur, onKeyDown, onSelectionChange, id, name, rows = 3, cols = undefined, value, placeholder, showError, extraClassNames, testId, autoFocus = false, }, ref) => {
|
|
23
|
+
const appliedClasses = `${baseClasses} ${extraClassNames} ${lightTheme} ${darkTheme} ${showError ? errorClasses : borderColorClasses}`;
|
|
24
|
+
const textareaRef = useRef(null);
|
|
25
|
+
// Handle selection change events
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (!onSelectionChange || !textareaRef.current) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const textarea = textareaRef.current;
|
|
31
|
+
const handleSelectionChange = (e) => {
|
|
32
|
+
onSelectionChange(e);
|
|
33
|
+
};
|
|
34
|
+
// Add event listeners for selection changes
|
|
35
|
+
textarea.addEventListener('selectionchange', handleSelectionChange);
|
|
36
|
+
// Also listen for mouse and keyboard events that change selection
|
|
37
|
+
textarea.addEventListener('mouseup', handleSelectionChange);
|
|
38
|
+
textarea.addEventListener('keyup', handleSelectionChange);
|
|
39
|
+
return () => {
|
|
40
|
+
textarea.removeEventListener('selectionchange', handleSelectionChange);
|
|
41
|
+
textarea.removeEventListener('mouseup', handleSelectionChange);
|
|
42
|
+
textarea.removeEventListener('keyup', handleSelectionChange);
|
|
43
|
+
};
|
|
44
|
+
}, [onSelectionChange]);
|
|
45
|
+
return (_jsx("textarea", { ref: (element) => {
|
|
46
|
+
textareaRef.current = element;
|
|
47
|
+
if (typeof ref === 'function') {
|
|
48
|
+
ref(element);
|
|
49
|
+
}
|
|
50
|
+
else if (ref) {
|
|
51
|
+
ref.current = element;
|
|
52
|
+
}
|
|
53
|
+
}, "data-testid": testId, name: name, id: id, value: value, className: appliedClasses, placeholder: placeholder, disabled: disabled, readOnly: readonly, onChange: onChange, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onKeyUp: onKeyUp, rows: rows, cols: cols, autoFocus: autoFocus }));
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=TextArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../src/TextArea/TextArea.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { TextArea } from './TextArea';
|
|
3
|
+
export default {
|
|
4
|
+
title: 'TextArea',
|
|
5
|
+
};
|
|
6
|
+
export const AllTextAreas = () => {
|
|
7
|
+
const renderAllVariations = () => (_jsxs(_Fragment, { children: [_jsxs("div", { className: "tw:p-4 light", children: [_jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { value: "Short text provided." }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { value: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Odio morbi quis commodo odio aenean. Lectus sit amet est placerat in egestas erat. Dui nunc mattis enim ut tellus. Dictumst vestibulum rhoncus est pellentesque elit ullamcorper. Nibh mauris cursus mattis molestie a. Aenean vel elit scelerisque mauris pellentesque. Nunc sed id semper risus in hendrerit gravida rutrum quisque. Tortor dignissim convallis aenean et tortor at risus. Vitae congue mauris rhoncus aenean vel elit scelerisque. Tellus id interdum velit laoreet id donec ultrices. Ac turpis egestas maecenas pharetra. Commodo odio aenean sed adipiscing diam donec adipiscing tristique risus. Consequat interdum varius sit amet mattis. Lacus laoreet non curabitur gravida arcu ac tortor. Vulputate sapien nec sagittis aliquam malesuada bibendum arcu vitae elementum. Odio ut enim blandit volutpat maecenas volutpat." }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { placeholder: "placeholder text" }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { placeholder: "with error", showError: true }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { value: "read-only", readonly: true, onFocus: (e) => e.currentTarget.select() }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { value: "disabled", disabled: true }) })] }), _jsxs("div", { className: "tw:p-4 tw-dark tw:bg-sq-dark-background", children: [_jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { value: "value provided" }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { placeholder: "placeholder text" }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { placeholder: "with error", showError: true }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { value: "read-only", readonly: true, onFocus: (e) => e.currentTarget.select() }) }), _jsx("div", { className: "tw:p-4", children: _jsx(TextArea, { value: "disabled", disabled: true }) })] })] }));
|
|
8
|
+
return (_jsxs("div", { className: "tw:grid tw:grid-cols-4 tw:gap-4", children: [_jsxs("div", { className: "color_topic", children: [_jsx("b", { children: "Topic Colors" }), renderAllVariations()] }), _jsxs("div", { className: "color_analysis", children: [_jsx("b", { children: "Analysis Colors" }), renderAllVariations()] }), _jsxs("div", { className: "color_datalab", children: [_jsx("b", { children: "Datalab Colors" }), renderAllVariations()] }), _jsxs("div", { className: "color_vantage", children: [_jsx("b", { children: "Vantage Colors" }), renderAllVariations()] })] }));
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=TextArea.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextArea.stories.js","sourceRoot":"","sources":["../../src/TextArea/TextArea.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAe;IACb,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,CAChC,8BACE,eAAK,SAAS,EAAC,cAAc,aAC3B,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,KAAK,EAAC,sBAAsB,GAAG,GACrC,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,KAAK,EAAC,q7BAAq7B,GAAG,GACp8B,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,WAAW,EAAC,kBAAkB,GAAG,GACvC,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,WAAW,EAAC,YAAY,EAAC,SAAS,EAAE,IAAI,GAAI,GAClD,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,KAAK,EAAC,WAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,GAAI,GACpF,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAE,IAAI,GAAI,GACzC,IACF,EAEN,eAAK,SAAS,EAAC,yCAAyC,aACtD,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,KAAK,EAAC,gBAAgB,GAAG,GAC/B,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,WAAW,EAAC,kBAAkB,GAAG,GACvC,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,WAAW,EAAC,YAAY,EAAC,SAAS,EAAE,IAAI,GAAI,GAClD,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,KAAK,EAAC,WAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,GAAI,GACpF,EACN,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,QAAQ,IAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAE,IAAI,GAAI,GACzC,IACF,IACL,CACJ,CAAC;IACF,OAAO,CACL,eAAK,SAAS,EAAC,iCAAiC,aAC9C,eAAK,SAAS,EAAC,aAAa,aAC1B,uCAAmB,EAClB,mBAAmB,EAAE,IAClB,EAEN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,0CAAsB,EACrB,mBAAmB,EAAE,IAClB,EAEN,eAAK,SAAS,EAAC,eAAe,aAC5B,yCAAqB,EACpB,mBAAmB,EAAE,IAClB,EAEN,eAAK,SAAS,EAAC,eAAe,aAC5B,yCAAqB,EACpB,mBAAmB,EAAE,IAClB,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|