@mindlogic-ai/logician-ui 5.0.0-alpha.1 → 5.0.0-alpha.10
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/dist/components/Avatar/Avatar.d.ts +68 -11
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +38 -5
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/Avatar.mjs +37 -5
- package/dist/components/Avatar/Avatar.mjs.map +1 -1
- package/dist/components/Avatar/index.d.ts +2 -2
- package/dist/components/Avatar/index.d.ts.map +1 -1
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/Badge.js +5 -3
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Badge/Badge.mjs +5 -3
- package/dist/components/Badge/Badge.mjs.map +1 -1
- package/dist/components/Badge/Badge.types.d.ts +7 -5
- package/dist/components/Badge/Badge.types.d.ts.map +1 -1
- package/dist/components/Banner/Banner.types.d.ts +24 -1
- package/dist/components/Banner/Banner.types.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.styles.d.ts +2 -2
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +10 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.mjs +10 -2
- package/dist/components/Button/Button.mjs.map +1 -1
- package/dist/components/Card/Card.types.d.ts +12 -0
- package/dist/components/Card/Card.types.d.ts.map +1 -1
- package/dist/components/ColorMode/ColorModeToggle.d.ts +7 -2
- package/dist/components/ColorMode/ColorModeToggle.d.ts.map +1 -1
- package/dist/components/ColorMode/ColorModeToggle.js +8 -3
- package/dist/components/ColorMode/ColorModeToggle.js.map +1 -1
- package/dist/components/ColorMode/ColorModeToggle.mjs +8 -3
- package/dist/components/ColorMode/ColorModeToggle.mjs.map +1 -1
- package/dist/components/Confetti/Confetti.types.d.ts +5 -1
- package/dist/components/Confetti/Confetti.types.d.ts.map +1 -1
- package/dist/components/Confetti/confettiColors.d.ts +5 -5
- package/dist/components/Confetti/confettiColors.js +5 -5
- package/dist/components/Confetti/confettiColors.mjs +5 -5
- package/dist/components/ErrorFallback/ErrorFallback.types.d.ts +6 -0
- package/dist/components/ErrorFallback/ErrorFallback.types.d.ts.map +1 -1
- package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts +1 -1
- package/dist/components/Form/FormModalFooter/FormModalFooter.d.ts.map +1 -1
- package/dist/components/Form/FormModalFooter/FormModalFooter.js +2 -2
- package/dist/components/Form/FormModalFooter/FormModalFooter.js.map +1 -1
- package/dist/components/Form/FormModalFooter/FormModalFooter.mjs +2 -2
- package/dist/components/Form/FormModalFooter/FormModalFooter.mjs.map +1 -1
- package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts +11 -1
- package/dist/components/Form/FormModalFooter/FormModalFooter.types.d.ts.map +1 -1
- package/dist/components/Form/FormSection/CollapsibleFormSection.js +1 -0
- package/dist/components/Form/FormSection/CollapsibleFormSection.js.map +1 -1
- package/dist/components/Form/FormSection/CollapsibleFormSection.mjs +1 -0
- package/dist/components/Form/FormSection/CollapsibleFormSection.mjs.map +1 -1
- package/dist/components/LineGraph/LineGraph.d.ts.map +1 -1
- package/dist/components/LineGraph/LineGraph.js +4 -5
- package/dist/components/LineGraph/LineGraph.js.map +1 -1
- package/dist/components/LineGraph/LineGraph.mjs +5 -6
- package/dist/components/LineGraph/LineGraph.mjs.map +1 -1
- package/dist/components/LineGraph/LineGraph.types.d.ts +12 -2
- package/dist/components/LineGraph/LineGraph.types.d.ts.map +1 -1
- package/dist/components/LineGraph/seriesColors.d.ts +12 -6
- package/dist/components/LineGraph/seriesColors.d.ts.map +1 -1
- package/dist/components/LineGraph/seriesColors.js +8 -7
- package/dist/components/LineGraph/seriesColors.js.map +1 -1
- package/dist/components/LineGraph/seriesColors.mjs +8 -7
- package/dist/components/LineGraph/seriesColors.mjs.map +1 -1
- package/dist/components/Masonry/Masonry.types.d.ts +8 -3
- package/dist/components/Masonry/Masonry.types.d.ts.map +1 -1
- package/dist/components/Menu/MenuItem.types.d.ts +8 -0
- package/dist/components/Menu/MenuItem.types.d.ts.map +1 -1
- package/dist/components/Modal/ModalCloseButton.d.ts +1 -1
- package/dist/components/Modal/ModalCloseButton.js +1 -1
- package/dist/components/Modal/ModalCloseButton.mjs +1 -1
- package/dist/components/Pagination/Pagination.d.ts +11 -10
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js +11 -10
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/Pagination.mjs +11 -10
- package/dist/components/Pagination/Pagination.mjs.map +1 -1
- package/dist/components/ProgressBar/ProgressBar.types.d.ts +9 -0
- package/dist/components/ProgressBar/ProgressBar.types.d.ts.map +1 -1
- package/dist/components/RadialProgress/RadialProgress.types.d.ts +21 -1
- package/dist/components/RadialProgress/RadialProgress.types.d.ts.map +1 -1
- package/dist/components/SeeMoreButton/SeeMoreButton.types.d.ts +8 -0
- package/dist/components/SeeMoreButton/SeeMoreButton.types.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js +6 -7
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.mjs +6 -7
- package/dist/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
- package/dist/components/SegmentedProgressBar/SegmentedProgressBar.types.d.ts +2 -0
- package/dist/components/SegmentedProgressBar/SegmentedProgressBar.types.d.ts.map +1 -1
- package/dist/components/Select/Select.d.ts +5 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +2 -2
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/Select.mjs +3 -3
- package/dist/components/Select/Select.mjs.map +1 -1
- package/dist/components/Select/Select.styles.d.ts +38 -0
- package/dist/components/Select/Select.styles.d.ts.map +1 -1
- package/dist/components/Select/Select.styles.js +35 -0
- package/dist/components/Select/Select.styles.js.map +1 -1
- package/dist/components/Select/Select.styles.mjs +35 -2
- package/dist/components/Select/Select.styles.mjs.map +1 -1
- package/dist/components/Select/Select.types.d.ts +10 -0
- package/dist/components/Select/Select.types.d.ts.map +1 -1
- package/dist/components/Select/SelectField.d.ts +1 -1
- package/dist/components/Select/SelectField.d.ts.map +1 -1
- package/dist/components/Select/SelectField.js +3 -2
- package/dist/components/Select/SelectField.js.map +1 -1
- package/dist/components/Select/SelectField.mjs +3 -2
- package/dist/components/Select/SelectField.mjs.map +1 -1
- package/dist/components/Select/index.d.ts +1 -0
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/components/Toast/Toast.styles.d.ts +6 -2
- package/dist/components/Toast/Toast.styles.d.ts.map +1 -1
- package/dist/components/Toast/Toast.styles.js +18 -10
- package/dist/components/Toast/Toast.styles.js.map +1 -1
- package/dist/components/Toast/Toast.styles.mjs +18 -10
- package/dist/components/Toast/Toast.styles.mjs.map +1 -1
- package/dist/components/Typography/Caption.d.ts.map +1 -1
- package/dist/components/Typography/Caption.js +1 -1
- package/dist/components/Typography/Caption.js.map +1 -1
- package/dist/components/Typography/Caption.mjs +1 -1
- package/dist/components/Typography/Caption.mjs.map +1 -1
- package/dist/components/Typography/H1.d.ts.map +1 -1
- package/dist/components/Typography/H1.js +1 -1
- package/dist/components/Typography/H1.js.map +1 -1
- package/dist/components/Typography/H1.mjs +1 -1
- package/dist/components/Typography/H1.mjs.map +1 -1
- package/dist/components/Typography/H2.d.ts.map +1 -1
- package/dist/components/Typography/H2.js +1 -1
- package/dist/components/Typography/H2.js.map +1 -1
- package/dist/components/Typography/H2.mjs +1 -1
- package/dist/components/Typography/H2.mjs.map +1 -1
- package/dist/components/Typography/H3.d.ts.map +1 -1
- package/dist/components/Typography/H3.js +1 -1
- package/dist/components/Typography/H3.js.map +1 -1
- package/dist/components/Typography/H3.mjs +1 -1
- package/dist/components/Typography/H3.mjs.map +1 -1
- package/dist/components/Typography/H4.d.ts.map +1 -1
- package/dist/components/Typography/H4.js +1 -1
- package/dist/components/Typography/H4.js.map +1 -1
- package/dist/components/Typography/H4.mjs +1 -1
- package/dist/components/Typography/H4.mjs.map +1 -1
- package/dist/components/Typography/H5.d.ts.map +1 -1
- package/dist/components/Typography/H5.js +1 -1
- package/dist/components/Typography/H5.js.map +1 -1
- package/dist/components/Typography/H5.mjs +1 -1
- package/dist/components/Typography/H5.mjs.map +1 -1
- package/dist/components/Typography/Link.d.ts.map +1 -1
- package/dist/components/Typography/Link.js +1 -1
- package/dist/components/Typography/Link.js.map +1 -1
- package/dist/components/Typography/Link.mjs +1 -1
- package/dist/components/Typography/Link.mjs.map +1 -1
- package/dist/components/Typography/Overline.d.ts.map +1 -1
- package/dist/components/Typography/Overline.js +1 -1
- package/dist/components/Typography/Overline.js.map +1 -1
- package/dist/components/Typography/Overline.mjs +1 -1
- package/dist/components/Typography/Overline.mjs.map +1 -1
- package/dist/components/Typography/Subtext.d.ts.map +1 -1
- package/dist/components/Typography/Subtext.js +1 -1
- package/dist/components/Typography/Subtext.js.map +1 -1
- package/dist/components/Typography/Subtext.mjs +1 -1
- package/dist/components/Typography/Subtext.mjs.map +1 -1
- package/dist/components/Typography/Subtitle.d.ts.map +1 -1
- package/dist/components/Typography/Subtitle.js +1 -1
- package/dist/components/Typography/Subtitle.js.map +1 -1
- package/dist/components/Typography/Subtitle.mjs +1 -1
- package/dist/components/Typography/Subtitle.mjs.map +1 -1
- package/dist/components/Typography/Text.d.ts.map +1 -1
- package/dist/components/Typography/Text.js +1 -1
- package/dist/components/Typography/Text.js.map +1 -1
- package/dist/components/Typography/Text.mjs +1 -1
- package/dist/components/Typography/Text.mjs.map +1 -1
- package/dist/hooks/useLanguage.d.ts +5 -0
- package/dist/hooks/useLanguage.d.ts.map +1 -1
- package/dist/hooks/useLanguage.js +7 -3
- package/dist/hooks/useLanguage.js.map +1 -1
- package/dist/hooks/useLanguage.mjs +7 -4
- package/dist/hooks/useLanguage.mjs.map +1 -1
- package/dist/hooks/useTranslate.d.ts.map +1 -1
- package/dist/hooks/useTranslate.js +8 -5
- package/dist/hooks/useTranslate.js.map +1 -1
- package/dist/hooks/useTranslate.mjs +8 -5
- package/dist/hooks/useTranslate.mjs.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/theme/colors.d.ts +2 -2
- package/dist/theme/colors.d.ts.map +1 -1
- package/dist/theme/colors.js +36 -2
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/colors.mjs +37 -3
- package/dist/theme/colors.mjs.map +1 -1
- package/dist/theme/global.d.ts.map +1 -1
- package/dist/theme/global.js +18 -0
- package/dist/theme/global.js.map +1 -1
- package/dist/theme/global.mjs +18 -0
- package/dist/theme/global.mjs.map +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +2 -0
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/index.mjs +2 -0
- package/dist/theme/index.mjs.map +1 -1
- package/dist/theme/palette.generated.d.ts +98 -0
- package/dist/theme/palette.generated.d.ts.map +1 -1
- package/dist/theme/palette.generated.js +99 -0
- package/dist/theme/palette.generated.js.map +1 -1
- package/dist/theme/palette.generated.mjs +99 -1
- package/dist/theme/palette.generated.mjs.map +1 -1
- package/dist/theme/paletteSwatches.d.ts +20 -0
- package/dist/theme/paletteSwatches.d.ts.map +1 -1
- package/dist/theme/recipes/avatar.d.ts +30 -0
- package/dist/theme/recipes/avatar.d.ts.map +1 -0
- package/dist/theme/recipes/avatar.js +96 -0
- package/dist/theme/recipes/avatar.js.map +1 -0
- package/dist/theme/recipes/avatar.mjs +94 -0
- package/dist/theme/recipes/avatar.mjs.map +1 -0
- package/dist/translations/Defaults.translations.json.js +9 -0
- package/dist/translations/Defaults.translations.json.js.map +1 -1
- package/dist/translations/Defaults.translations.json.mjs +9 -1
- package/dist/translations/Defaults.translations.json.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/Accordion/Accordion.stories.tsx +85 -0
- package/src/components/Accordion/Accordion.usage.mdx +200 -0
- package/src/components/Appear/Appear.usage.mdx +107 -0
- package/src/components/Avatar/Avatar.recipe.test.tsx +171 -0
- package/src/components/Avatar/Avatar.stories.tsx +199 -24
- package/src/components/Avatar/Avatar.tsx +112 -21
- package/src/components/Avatar/Avatar.usage.mdx +185 -0
- package/src/components/Avatar/index.tsx +8 -1
- package/src/components/Badge/Badge.stories.tsx +193 -3
- package/src/components/Badge/Badge.tsx +5 -3
- package/src/components/Badge/Badge.types.ts +7 -5
- package/src/components/Badge/Badge.usage.mdx +265 -0
- package/src/components/Banner/Banner.stories.tsx +152 -2
- package/src/components/Banner/Banner.types.ts +30 -1
- package/src/components/Banner/Banner.usage.mdx +233 -0
- package/src/components/BottomSheet/BottomSheet.stories.tsx +168 -1
- package/src/components/BottomSheet/BottomSheet.test.tsx +2 -1
- package/src/components/BottomSheet/BottomSheet.usage.mdx +216 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +59 -0
- package/src/components/Breadcrumb/Breadcrumb.usage.mdx +181 -0
- package/src/components/Button/Button.stories.tsx +263 -3
- package/src/components/Button/Button.tsx +15 -2
- package/src/components/Button/Button.usage.mdx +342 -0
- package/src/components/Card/Card.stories.tsx +106 -0
- package/src/components/Card/Card.types.ts +12 -0
- package/src/components/Card/Card.usage.mdx +216 -0
- package/src/components/Checkbox/Checkbox.stories.tsx +140 -13
- package/src/components/Checkbox/Checkbox.usage.mdx +214 -0
- package/src/components/Chip/Chip.usage.mdx +78 -0
- package/src/components/Code/Code.stories.tsx +60 -0
- package/src/components/Code/Code.usage.mdx +187 -0
- package/src/components/CodeTabs/CodeTabs.stories.tsx +53 -0
- package/src/components/CodeTabs/CodeTabs.usage.mdx +176 -0
- package/src/components/Collapsible/Collapsible.stories.tsx +58 -0
- package/src/components/Collapsible/Collapsible.usage.mdx +173 -0
- package/src/components/ColorMode/ColorMode.stories.tsx +50 -0
- package/src/components/ColorMode/ColorMode.usage.mdx +135 -0
- package/src/components/ColorMode/ColorModeToggle.tsx +10 -3
- package/src/components/Confetti/Confetti.types.ts +5 -1
- package/src/components/Confetti/Confetti.usage.mdx +111 -0
- package/src/components/Confetti/confettiColors.ts +5 -5
- package/src/components/Container/Container.stories.tsx +32 -0
- package/src/components/Container/Container.usage.mdx +130 -0
- package/src/components/CopyableCode/CopyableCode.stories.tsx +62 -0
- package/src/components/CopyableCode/CopyableCode.usage.mdx +168 -0
- package/src/components/CountBadge/CountBadge.stories.tsx +69 -0
- package/src/components/CountBadge/CountBadge.usage.mdx +215 -0
- package/src/components/CountUp/CountUp.usage.mdx +107 -0
- package/src/components/DatePicker/DatePicker.usage.mdx +177 -0
- package/src/components/DatePicker/RangeDatePicker.stories.tsx +87 -3
- package/src/components/ErrorFallback/ErrorFallback.types.ts +6 -0
- package/src/components/ErrorFallback/ErrorFallback.usage.mdx +127 -0
- package/src/components/ExpandableText/ExpandableText.stories.tsx +55 -0
- package/src/components/ExpandableText/ExpandableText.usage.mdx +176 -0
- package/src/components/FileInput/FileInput.stories.tsx +38 -1
- package/src/components/FileInput/FileInput.usage.mdx +178 -0
- package/src/components/FileItem/FileItem.stories.tsx +71 -0
- package/src/components/FileItem/FileItem.usage.mdx +180 -0
- package/src/components/FileList/FileList.stories.tsx +25 -0
- package/src/components/FileList/FileList.usage.mdx +165 -0
- package/src/components/FlyTo/FlyTo.usage.mdx +99 -0
- package/src/components/Form/Form.stories.tsx +149 -0
- package/src/components/Form/Form.usage.mdx +203 -0
- package/src/components/Form/FormModalFooter/FormModalFooter.stories.tsx +1 -1
- package/src/components/Form/FormModalFooter/FormModalFooter.test.tsx +19 -1
- package/src/components/Form/FormModalFooter/FormModalFooter.tsx +2 -0
- package/src/components/Form/FormModalFooter/FormModalFooter.types.ts +11 -1
- package/src/components/FormControl/FormControl.stories.tsx +35 -0
- package/src/components/FormControl/FormControl.usage.mdx +128 -0
- package/src/components/FormIntegration/FormIntegration.usage.mdx +158 -0
- package/src/components/FormLabel/FormLabel.stories.tsx +71 -0
- package/src/components/FormLabel/FormLabel.usage.mdx +125 -0
- package/src/components/Icon/Icon.stories.tsx +61 -1
- package/src/components/Icon/Icon.usage.mdx +158 -0
- package/src/components/IconButton/IconButton.stories.tsx +209 -5
- package/src/components/IconButton/IconButton.usage.mdx +273 -0
- package/src/components/InfoSprinkle/InfoSprinkle.stories.tsx +77 -1
- package/src/components/InfoSprinkle/InfoSprinkle.usage.mdx +189 -0
- package/src/components/InlineCode/InlineCode.stories.tsx +75 -0
- package/src/components/InlineCode/InlineCode.usage.mdx +142 -0
- package/src/components/Input/Input.stories.tsx +180 -0
- package/src/components/Input/Input.usage.mdx +278 -0
- package/src/components/LineGraph/LineGraph.stories.tsx +112 -0
- package/src/components/LineGraph/LineGraph.tsx +4 -5
- package/src/components/LineGraph/LineGraph.types.ts +12 -2
- package/src/components/LineGraph/LineGraph.usage.mdx +186 -0
- package/src/components/LineGraph/seriesColors.test.ts +11 -10
- package/src/components/LineGraph/seriesColors.ts +18 -14
- package/src/components/Loaders/Loaders.stories.tsx +93 -0
- package/src/components/Loaders/Loaders.usage.mdx +180 -0
- package/src/components/LogicianProvider/LogicianProvider.usage.mdx +98 -0
- package/src/components/Markdown/Markdown.stories.tsx +53 -0
- package/src/components/Markdown/Markdown.usage.mdx +182 -0
- package/src/components/Masonry/Masonry.stories.tsx +63 -1
- package/src/components/Masonry/Masonry.types.ts +8 -3
- package/src/components/Masonry/Masonry.usage.mdx +142 -0
- package/src/components/MaxLengthIndicator/MaxLengthIndicator.stories.tsx +57 -0
- package/src/components/MaxLengthIndicator/MaxLengthIndicator.usage.mdx +125 -0
- package/src/components/Menu/Menu.stories.tsx +146 -2
- package/src/components/Menu/Menu.usage.mdx +230 -0
- package/src/components/Menu/MenuItem.types.ts +8 -0
- package/src/components/Modal/Modal.stories.tsx +177 -1
- package/src/components/Modal/Modal.usage.mdx +262 -0
- package/src/components/Modal/ModalCloseButton.tsx +1 -1
- package/src/components/MonthPicker/MonthPicker.stories.tsx +30 -0
- package/src/components/MonthPicker/MonthPicker.usage.mdx +191 -0
- package/src/components/Pagination/Pagination.stories.tsx +90 -1
- package/src/components/Pagination/Pagination.tsx +11 -10
- package/src/components/Pagination/Pagination.usage.mdx +186 -0
- package/src/components/PasswordInput/PasswordInput.stories.tsx +51 -0
- package/src/components/PasswordInput/PasswordInput.usage.mdx +193 -0
- package/src/components/PinInput/PinInput.stories.tsx +91 -0
- package/src/components/PinInput/PinInput.usage.mdx +194 -0
- package/src/components/Popover/Popover.stories.tsx +104 -1
- package/src/components/Popover/Popover.usage.mdx +197 -0
- package/src/components/ProgressBar/ProgressBar.stories.tsx +92 -1
- package/src/components/ProgressBar/ProgressBar.types.ts +9 -0
- package/src/components/ProgressBar/ProgressBar.usage.mdx +210 -0
- package/src/components/Pulse/Pulse.usage.mdx +102 -0
- package/src/components/RadialProgress/RadialProgress.stories.tsx +74 -1
- package/src/components/RadialProgress/RadialProgress.types.ts +21 -1
- package/src/components/RadialProgress/RadialProgress.usage.mdx +153 -0
- package/src/components/Radio/Radio.stories.tsx +119 -0
- package/src/components/Radio/Radio.usage.mdx +187 -0
- package/src/components/Reveal/Reveal.usage.mdx +105 -0
- package/src/components/ScaledContext/ScaledContext.usage.mdx +111 -0
- package/src/components/SeeMoreButton/SeeMoreButton.stories.tsx +146 -2
- package/src/components/SeeMoreButton/SeeMoreButton.types.ts +8 -0
- package/src/components/SeeMoreButton/SeeMoreButton.usage.mdx +213 -0
- package/src/components/SegmentedControl/SegmentedControl.stories.tsx +69 -0
- package/src/components/SegmentedControl/SegmentedControl.tsx +6 -7
- package/src/components/SegmentedControl/SegmentedControl.usage.mdx +209 -0
- package/src/components/SegmentedProgressBar/SegmentedProgressBar.stories.tsx +54 -0
- package/src/components/SegmentedProgressBar/SegmentedProgressBar.types.ts +2 -0
- package/src/components/SegmentedProgressBar/SegmentedProgressBar.usage.mdx +145 -0
- package/src/components/Select/Comparison.stories.tsx +19 -0
- package/src/components/Select/Select.stories.tsx +264 -1
- package/src/components/Select/Select.styles.ts +36 -1
- package/src/components/Select/Select.tsx +13 -3
- package/src/components/Select/Select.types.ts +11 -0
- package/src/components/Select/Select.usage.mdx +278 -0
- package/src/components/Select/SelectField.tsx +7 -3
- package/src/components/Select/index.ts +1 -0
- package/src/components/Shake/Shake.usage.mdx +107 -0
- package/src/components/Slider/Slider.stories.tsx +116 -0
- package/src/components/Slider/Slider.usage.mdx +179 -0
- package/src/components/Spinner/Spinner.stories.tsx +64 -0
- package/src/components/Spinner/Spinner.usage.mdx +136 -0
- package/src/components/SwapTransition/SwapTransition.usage.mdx +102 -0
- package/src/components/Switch/Switch.stories.tsx +131 -6
- package/src/components/Switch/Switch.usage.mdx +199 -0
- package/src/components/Table/Table.stories.tsx +159 -1
- package/src/components/Table/Table.usage.mdx +235 -0
- package/src/components/Tabs/Tabs.stories.tsx +86 -0
- package/src/components/Tabs/Tabs.usage.mdx +219 -0
- package/src/components/Tag/Tag.stories.tsx +181 -4
- package/src/components/Tag/Tag.usage.mdx +257 -0
- package/src/components/Textarea/Textarea.stories.tsx +113 -0
- package/src/components/Textarea/Textarea.usage.mdx +186 -0
- package/src/components/Toast/Toast.stories.tsx +185 -3
- package/src/components/Toast/Toast.styles.ts +18 -10
- package/src/components/Toast/Toast.usage.mdx +265 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +86 -1
- package/src/components/Tooltip/Tooltip.usage.mdx +211 -0
- package/src/components/Tree/Tree.stories.tsx +89 -0
- package/src/components/Tree/Tree.usage.mdx +207 -0
- package/src/components/Typography/Caption.tsx +0 -1
- package/src/components/Typography/H1.tsx +0 -1
- package/src/components/Typography/H2.tsx +0 -1
- package/src/components/Typography/H3.tsx +0 -1
- package/src/components/Typography/H4.tsx +0 -1
- package/src/components/Typography/H5.tsx +0 -1
- package/src/components/Typography/Link.tsx +0 -1
- package/src/components/Typography/Overline.tsx +0 -1
- package/src/components/Typography/Subtext.tsx +0 -1
- package/src/components/Typography/Subtitle.tsx +0 -1
- package/src/components/Typography/Text.tsx +0 -1
- package/src/components/Typography/Typography.stories.tsx +117 -0
- package/src/components/Typography/Typography.usage.mdx +257 -0
- package/src/components/Workflow/Workflow.usage.mdx +199 -0
- package/src/components/noRawScales.test.ts +5 -1
- package/src/foundations/BrandAssets.mdx +637 -0
- package/src/foundations/BrandAssets.stories.tsx +680 -0
- package/src/foundations/BrandColour.mdx +364 -0
- package/src/foundations/BrandColour.stories.tsx +334 -0
- package/src/guidelines/ComponentPageTemplate.mdx +84 -0
- package/src/guidelines/FeedbackActions.mdx +162 -23
- package/src/guidelines/_components/Lang.tsx +175 -0
- package/src/guidelines/_components/TokenTable.tsx +136 -0
- package/src/hooks/useLanguage.ts +8 -3
- package/src/hooks/useTranslate.test.tsx +46 -0
- package/src/hooks/useTranslate.ts +7 -5
- package/src/theme/BazePalette.stories.tsx +111 -1
- package/src/theme/Palette.stories.tsx +2 -2
- package/src/theme/SemanticTokens.mdx +86 -1
- package/src/theme/claude.md +16 -7
- package/src/theme/colors.ts +51 -6
- package/src/theme/contrast.test.ts +55 -0
- package/src/theme/global.ts +19 -0
- package/src/theme/index.ts +2 -0
- package/src/theme/palette.generated.ts +99 -0
- package/src/theme/paletteSwatches.ts +35 -0
- package/src/theme/recipes/avatar.ts +92 -0
- package/src/translations/Defaults.translations.json +7 -0
|
@@ -2,7 +2,10 @@ import { useState } from 'react';
|
|
|
2
2
|
import { Button, CloseButton, Heading, Text } from '@chakra-ui/react';
|
|
3
3
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
4
4
|
|
|
5
|
+
import { T } from '../../guidelines/_components/Lang';
|
|
6
|
+
import { TokenTable } from '../../guidelines/_components/TokenTable';
|
|
5
7
|
import { Tab } from '@/components/Tabs/Tab/Tab';
|
|
8
|
+
import { TAB_RAMP } from '@/components/Tabs/Tab/Tab.styles';
|
|
6
9
|
import { TabList } from '@/components/Tabs/TabList';
|
|
7
10
|
import { TabPanel } from '@/components/Tabs/TabPanel';
|
|
8
11
|
import { TabPanels } from '@/components/Tabs/TabPanels';
|
|
@@ -260,3 +263,86 @@ export const DynamicTabs: Story = {
|
|
|
260
263
|
);
|
|
261
264
|
},
|
|
262
265
|
};
|
|
266
|
+
|
|
267
|
+
// ───────────────────────── Usage-page specimens ─────────────────────────
|
|
268
|
+
// Pulled into `Tabs.usage.mdx` with <Canvas of={…} />. Hidden from the
|
|
269
|
+
// sidebar (`!dev`).
|
|
270
|
+
|
|
271
|
+
export const DoSectionsOfOnePlace: Story = {
|
|
272
|
+
tags: ['!dev'],
|
|
273
|
+
parameters: { layout: 'padded' },
|
|
274
|
+
name: 'Usage / Do: sections of one place, with a named list',
|
|
275
|
+
render: () => (
|
|
276
|
+
<Tabs defaultValue="credit">
|
|
277
|
+
<TabList aria-label="그룹 설정">
|
|
278
|
+
<Tab value="credit">크레딧</Tab>
|
|
279
|
+
<Tab value="security">보안</Tab>
|
|
280
|
+
<Tab value="notice">공지</Tab>
|
|
281
|
+
</TabList>
|
|
282
|
+
<TabPanel value="credit" pt={4}>
|
|
283
|
+
<Text>이 그룹의 월간 크레딧 한도와 사용량입니다.</Text>
|
|
284
|
+
</TabPanel>
|
|
285
|
+
<TabPanel value="security" pt={4}>
|
|
286
|
+
<Text>로그인과 파일 업로드 정책입니다.</Text>
|
|
287
|
+
</TabPanel>
|
|
288
|
+
<TabPanel value="notice" pt={4}>
|
|
289
|
+
<Text>이 그룹에만 보이는 공지입니다.</Text>
|
|
290
|
+
</TabPanel>
|
|
291
|
+
</Tabs>
|
|
292
|
+
),
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
export const DontTabsAsSteps: Story = {
|
|
296
|
+
tags: ['!dev'],
|
|
297
|
+
parameters: { layout: 'padded' },
|
|
298
|
+
name: "Usage / Don't: tabs as the steps of a flow",
|
|
299
|
+
render: () => (
|
|
300
|
+
<Tabs defaultValue="step1">
|
|
301
|
+
<TabList>
|
|
302
|
+
<Tab value="step1">1. 기본 정보</Tab>
|
|
303
|
+
<Tab value="step2">2. 모델 선택</Tab>
|
|
304
|
+
<Tab value="step3">3. 확인</Tab>
|
|
305
|
+
</TabList>
|
|
306
|
+
<TabPanel value="step1" pt={4}>
|
|
307
|
+
<Text>이름과 설명을 입력하세요.</Text>
|
|
308
|
+
</TabPanel>
|
|
309
|
+
<TabPanel value="step2" pt={4}>
|
|
310
|
+
<Text>모델을 고르세요.</Text>
|
|
311
|
+
</TabPanel>
|
|
312
|
+
<TabPanel value="step3" pt={4}>
|
|
313
|
+
<Text>입력한 내용을 확인하세요.</Text>
|
|
314
|
+
</TabPanel>
|
|
315
|
+
</Tabs>
|
|
316
|
+
),
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
/** Tokens a tab reads: the selected ramp from `TAB_RAMP` in `Tab.styles.ts`, the rest from `Tab.tsx` and `TabList.tsx`. */
|
|
320
|
+
export const UsageTokens: Story = {
|
|
321
|
+
tags: ['!dev'],
|
|
322
|
+
parameters: { layout: 'padded' },
|
|
323
|
+
name: 'Usage / Tokens',
|
|
324
|
+
render: () => (
|
|
325
|
+
<TokenTable
|
|
326
|
+
rows={[
|
|
327
|
+
{
|
|
328
|
+
token: TAB_RAMP.label,
|
|
329
|
+
use: <T en="Selected tab · label" ko="선택된 탭 · 글자" />,
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
token: TAB_RAMP.indicator,
|
|
333
|
+
use: <T en="Selected tab · indicator" ko="선택된 탭 · 표시 막대" />,
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
token: 'fg.muted',
|
|
337
|
+
use: <T en="Other tabs · label" ko="다른 탭 · 글자" />,
|
|
338
|
+
},
|
|
339
|
+
{ token: 'primary.wash', use: <T en="Hover" ko="마우스 올림" /> },
|
|
340
|
+
{
|
|
341
|
+
token: 'bg.muted',
|
|
342
|
+
use: <T en="Vertical · selected fill" ko="세로 탭 · 선택 배경" />,
|
|
343
|
+
},
|
|
344
|
+
{ token: 'border.subtle', use: <T en="List rule" ko="목록 아래 선" /> },
|
|
345
|
+
]}
|
|
346
|
+
/>
|
|
347
|
+
),
|
|
348
|
+
};
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { ArgTypes, Canvas, Meta } from '@storybook/blocks';
|
|
2
|
+
|
|
3
|
+
import { En, Ko, LangToggle, Verdict } from '../../guidelines/_components/Lang';
|
|
4
|
+
import * as TabsStories from './Tabs.stories';
|
|
5
|
+
|
|
6
|
+
<Meta of={TabsStories} name="Usage" />
|
|
7
|
+
|
|
8
|
+
<LangToggle />
|
|
9
|
+
|
|
10
|
+
<En>
|
|
11
|
+
|
|
12
|
+
# Tabs
|
|
13
|
+
|
|
14
|
+
A row (or column) of labels that switches between sections of the same place.
|
|
15
|
+
One section shows at a time.
|
|
16
|
+
|
|
17
|
+
## When to use
|
|
18
|
+
|
|
19
|
+
- To split one object's settings or data into sections: a group's 크레딧,
|
|
20
|
+
보안 and 공지; a chatbot's 설정 and 분석.
|
|
21
|
+
- To switch between dashboards of the same scope, such as usage by model and
|
|
22
|
+
usage by user.
|
|
23
|
+
- For a long settings page in a side panel, with `orientation="vertical"`.
|
|
24
|
+
|
|
25
|
+
## When not to use
|
|
26
|
+
|
|
27
|
+
- To change how the same content is shown, or to filter it (일/주/월, 목록/카드)
|
|
28
|
+
→ `SegmentedControl`. Tabs change *what* you are looking at, not how.
|
|
29
|
+
- For the steps of a flow the user must complete in order → a stepper or a
|
|
30
|
+
sequence of pages. Tabs let the user jump ahead.
|
|
31
|
+
- To move to another page of the app → navigation links or `Breadcrumb`.
|
|
32
|
+
- For two or three short panels the user needs side by side → show them on
|
|
33
|
+
the page.
|
|
34
|
+
|
|
35
|
+
## Variants and what they mean
|
|
36
|
+
|
|
37
|
+
Tabs has one look. A selected tab is a *place*, not a value, so it is marked
|
|
38
|
+
with ink and weight, not with a brand or status colour. `orientation` decides
|
|
39
|
+
the layout:
|
|
40
|
+
|
|
41
|
+
</En>
|
|
42
|
+
|
|
43
|
+
<Ko>
|
|
44
|
+
|
|
45
|
+
# Tabs
|
|
46
|
+
|
|
47
|
+
같은 곳의 여러 구역을 오가게 하는 라벨 한 줄(또는 한 열)입니다. 한 번에 한 구역만
|
|
48
|
+
보입니다.
|
|
49
|
+
|
|
50
|
+
## 언제 쓰나요
|
|
51
|
+
|
|
52
|
+
- 한 대상의 설정이나 데이터를 구역으로 나눌 때: 그룹의 크레딧·보안·공지, 챗봇의 설정·분석.
|
|
53
|
+
- 같은 범위의 대시보드 여러 개를 오갈 때: 모델별 사용량, 사용자별 사용량.
|
|
54
|
+
- 사이드 패널의 긴 설정 화면을 나눌 때는 `orientation="vertical"`을 씁니다.
|
|
55
|
+
|
|
56
|
+
## 언제 쓰지 않나요
|
|
57
|
+
|
|
58
|
+
- 같은 내용을 보는 방식을 바꾸거나 거를 때(일/주/월, 목록/카드)는 `SegmentedControl`을
|
|
59
|
+
씁니다. 탭은 무엇을 보는지를 바꾸고, 어떻게 보는지를 바꾸지 않습니다.
|
|
60
|
+
- 차례대로 끝내야 하는 흐름의 단계에는 단계 표시나 이어지는 페이지를 씁니다. 탭은 사용자가
|
|
61
|
+
단계를 건너뛰게 둡니다.
|
|
62
|
+
- 앱의 다른 페이지로 옮겨 가는 것은 내비게이션 링크나 `Breadcrumb`가 맡습니다.
|
|
63
|
+
- 나란히 봐야 하는 짧은 패널 두세 개는 탭에 숨기지 말고 페이지에 그대로 보입니다.
|
|
64
|
+
|
|
65
|
+
## 변형과 뜻
|
|
66
|
+
|
|
67
|
+
Tabs의 모양은 하나입니다. 선택된 탭은 값이 아니라 지금 있는 곳이므로, 브랜드색이나
|
|
68
|
+
상태색이 아니라 진한 글자와 굵기로 표시합니다. 배치는 `orientation`이 정합니다.
|
|
69
|
+
|
|
70
|
+
</Ko>
|
|
71
|
+
|
|
72
|
+
<ArgTypes of={TabsStories} include={['orientation', 'defaultValue', 'value', 'activationMode']} />
|
|
73
|
+
|
|
74
|
+
<En>
|
|
75
|
+
|
|
76
|
+
| `orientation` | Selected tab | Use for |
|
|
77
|
+
| --- | --- | --- |
|
|
78
|
+
| `horizontal` (default) | `fg.emphasized` label, semibold, with a 2px `primary.main` underline | Sections across the top of a page or panel |
|
|
79
|
+
| `vertical` | `bg.muted` fill, bold, with a 2px `primary.main` bar on the leading edge | A long settings page in a narrow side column |
|
|
80
|
+
|
|
81
|
+
## Do / Don't
|
|
82
|
+
|
|
83
|
+
</En>
|
|
84
|
+
|
|
85
|
+
<Ko>
|
|
86
|
+
|
|
87
|
+
| `orientation` | 선택된 탭 | 쓰는 곳 |
|
|
88
|
+
| --- | --- | --- |
|
|
89
|
+
| `horizontal` (기본) | `fg.emphasized` 글자를 semibold로 쓰고 아래에 2px `primary.main` 밑줄 | 페이지나 패널 위쪽의 구역 |
|
|
90
|
+
| `vertical` | `bg.muted` 배경에 bold, 앞쪽 가장자리에 2px `primary.main` 막대 | 좁은 옆 열에 둔 긴 설정 화면 |
|
|
91
|
+
|
|
92
|
+
## 이렇게 하세요 / 이렇게 하지 마세요
|
|
93
|
+
|
|
94
|
+
</Ko>
|
|
95
|
+
|
|
96
|
+
<Canvas of={TabsStories.DoSectionsOfOnePlace} />
|
|
97
|
+
<Verdict
|
|
98
|
+
kind="do"
|
|
99
|
+
en="Use short nouns for sections of one place, and name the list with aria-label ('그룹 설정')."
|
|
100
|
+
ko="한 곳의 구역에는 짧은 명사를 쓰고, 탭 목록에 aria-label('그룹 설정')로 이름을 붙입니다."
|
|
101
|
+
/>
|
|
102
|
+
|
|
103
|
+
<Canvas of={TabsStories.DontTabsAsSteps} />
|
|
104
|
+
<Verdict
|
|
105
|
+
kind="dont"
|
|
106
|
+
en="Number tabs as the steps of a flow. Nothing stops the user from opening step 3 first."
|
|
107
|
+
ko="탭에 번호를 붙여 흐름의 단계로 쓰지 마세요. 사용자가 3단계를 먼저 열어도 막을 방법이 없습니다."
|
|
108
|
+
/>
|
|
109
|
+
|
|
110
|
+
<En>
|
|
111
|
+
|
|
112
|
+
## Content
|
|
113
|
+
|
|
114
|
+
- One or two words, a noun: "크레딧", "보안", "사용자별". No full stop and no
|
|
115
|
+
icons alone.
|
|
116
|
+
- Keep labels the same length class; one long label next to short ones reads as
|
|
117
|
+
a different kind of tab.
|
|
118
|
+
- Stay under about six horizontal tabs. More than that, use `vertical` or split
|
|
119
|
+
the page.
|
|
120
|
+
- Do not put a count in the label unless it changes what the user does next.
|
|
121
|
+
|
|
122
|
+
## Accessibility
|
|
123
|
+
|
|
124
|
+
What Tabs does for you:
|
|
125
|
+
|
|
126
|
+
- `TabList` is `role="tablist"`, each `Tab` is `role="tab"` with
|
|
127
|
+
`aria-selected`, and each `TabPanel` is `role="tabpanel"` labelled by its tab
|
|
128
|
+
(WCAG 4.1.2).
|
|
129
|
+
- Keyboard (WCAG 2.1.1): `Tab` lands on the selected tab and then moves on; the
|
|
130
|
+
arrow keys move between tabs and wrap at the ends, `Home` / `End` jump to the
|
|
131
|
+
first and last. With the default `activationMode="automatic"` the panel
|
|
132
|
+
changes as focus moves.
|
|
133
|
+
- Each `Tab` is a `Button`, so it shows the focus ring (WCAG 2.4.7). The
|
|
134
|
+
selected label is `fg.emphasized`, at least 13:1 on every surface it can land
|
|
135
|
+
on (WCAG 1.4.3), and the underline is a second cue beside weight (WCAG
|
|
136
|
+
1.4.1).
|
|
137
|
+
|
|
138
|
+
What you still have to do:
|
|
139
|
+
|
|
140
|
+
- **Name the list.** Pass `aria-label` to `TabList` when there is no visible
|
|
141
|
+
heading right above it, or `aria-labelledby` pointing at the heading.
|
|
142
|
+
- Give every `Tab` and `TabPanel` the same `value`. Both throw without one.
|
|
143
|
+
- Put only phrasing content inside a `Tab`: it renders a `<button>`, so no
|
|
144
|
+
`<div>` or `<p>` inside (KWCAG 5.4.1.1, see `ACCESSIBILITY.md`).
|
|
145
|
+
- If switching a panel is slow (it fetches data), use
|
|
146
|
+
`activationMode="manual"` so arrowing across the list does not fire a request
|
|
147
|
+
per tab.
|
|
148
|
+
|
|
149
|
+
## Tokens
|
|
150
|
+
|
|
151
|
+
The selected ramp is `TAB_RAMP` in `Tab.styles.ts`; the other tokens are set in
|
|
152
|
+
`Tab.tsx` and `TabList.tsx`.
|
|
153
|
+
|
|
154
|
+
</En>
|
|
155
|
+
|
|
156
|
+
<Ko>
|
|
157
|
+
|
|
158
|
+
## 문구
|
|
159
|
+
|
|
160
|
+
- 한두 단어의 명사로 씁니다. "크레딧", "보안", "사용자별". 마침표를 찍지 않고, 아이콘만
|
|
161
|
+
두지 않습니다.
|
|
162
|
+
- 라벨 길이를 비슷하게 맞춥니다. 짧은 라벨 사이의 긴 라벨 하나는 다른 종류의 탭처럼
|
|
163
|
+
보입니다.
|
|
164
|
+
- 가로 탭은 여섯 개 안쪽으로 둡니다. 더 많으면 `vertical`을 쓰거나 페이지를 나눕니다.
|
|
165
|
+
- 다음 행동을 바꾸는 경우가 아니면 라벨에 개수를 넣지 않습니다.
|
|
166
|
+
|
|
167
|
+
## 접근성
|
|
168
|
+
|
|
169
|
+
Tabs가 알아서 하는 일
|
|
170
|
+
|
|
171
|
+
- `TabList`는 `role="tablist"`, 각 `Tab`은 `aria-selected`가 붙은 `role="tab"`, 각
|
|
172
|
+
`TabPanel`은 자기 탭으로 이름이 붙는 `role="tabpanel"`입니다(WCAG 4.1.2).
|
|
173
|
+
- 키보드(WCAG 2.1.1): `Tab`을 누르면 선택된 탭에 닿고, 한 번 더 누르면 목록을 벗어납니다. 방향키로 탭 사이를
|
|
174
|
+
옮기고 끝에서는 처음으로 돌아가며, `Home`/`End`로 처음과 끝으로 갑니다. 기본값인
|
|
175
|
+
`activationMode="automatic"`에서는 초점이 옮겨 가면 패널도 바뀝니다.
|
|
176
|
+
- 각 `Tab`은 `Button`이라 초점 테두리가 보입니다(WCAG 2.4.7). 선택된 글자는
|
|
177
|
+
`fg.emphasized`로, 놓일 수 있는 어느 면에서도 13:1 이상입니다(WCAG 1.4.3). 굵기 말고도
|
|
178
|
+
밑줄이 한 번 더 알려 줍니다(WCAG 1.4.1).
|
|
179
|
+
|
|
180
|
+
직접 챙겨야 하는 일
|
|
181
|
+
|
|
182
|
+
- **탭 목록에 이름을 붙입니다.** 바로 위에 보이는 제목이 없다면 `TabList`에
|
|
183
|
+
`aria-label`을, 제목이 있다면 그 제목을 가리키는 `aria-labelledby`를 넘깁니다.
|
|
184
|
+
- 모든 `Tab`과 `TabPanel`에 짝이 맞는 `value`를 줍니다. 없으면 둘 다 오류를 냅니다.
|
|
185
|
+
- `Tab` 안에는 phrasing content만 넣습니다. `<button>`으로 그려지므로 안에 `<div>`나
|
|
186
|
+
`<p>`를 넣지 않습니다(KWCAG 5.4.1.1, `ACCESSIBILITY.md` 참고).
|
|
187
|
+
- 패널을 바꿀 때 데이터를 불러와 느리다면 `activationMode="manual"`을 씁니다. 그래야
|
|
188
|
+
방향키로 탭을 훑을 때마다 요청이 나가지 않습니다.
|
|
189
|
+
|
|
190
|
+
## 토큰
|
|
191
|
+
|
|
192
|
+
선택 상태의 색은 `Tab.styles.ts`의 `TAB_RAMP`에서, 나머지 토큰은 `Tab.tsx`와
|
|
193
|
+
`TabList.tsx`에서 정합니다.
|
|
194
|
+
|
|
195
|
+
</Ko>
|
|
196
|
+
|
|
197
|
+
<Canvas of={TabsStories.UsageTokens} sourceState="none" />
|
|
198
|
+
|
|
199
|
+
<En>
|
|
200
|
+
|
|
201
|
+
## Related
|
|
202
|
+
|
|
203
|
+
- **SegmentedControl**: change how the same content is shown.
|
|
204
|
+
- **Breadcrumb**: where this page sits in a hierarchy.
|
|
205
|
+
- **Foundations/Brand & colour usage**: why a selected place is ink, not
|
|
206
|
+
colour.
|
|
207
|
+
|
|
208
|
+
</En>
|
|
209
|
+
|
|
210
|
+
<Ko>
|
|
211
|
+
|
|
212
|
+
## 관련 컴포넌트
|
|
213
|
+
|
|
214
|
+
- **SegmentedControl**: 같은 내용을 보는 방식 바꾸기.
|
|
215
|
+
- **Breadcrumb**: 이 페이지가 계층의 어디에 있는지.
|
|
216
|
+
- **Foundations/Brand & colour usage**: 선택된 곳을 색이 아니라 진한 글자로 표시하는
|
|
217
|
+
이유.
|
|
218
|
+
|
|
219
|
+
</Ko>
|
|
@@ -3,8 +3,11 @@ import { Box, Flex, Text, VStack } from '@chakra-ui/react';
|
|
|
3
3
|
import { Meta, StoryObj } from '@storybook/react';
|
|
4
4
|
|
|
5
5
|
import { SYSTEM_HUE_NAMES } from '@/theme/colors';
|
|
6
|
+
import { disabledControl } from '@/utils/disabledControl';
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
+
import { T } from '../../guidelines/_components/Lang';
|
|
9
|
+
import { TokenTable } from '../../guidelines/_components/TokenTable';
|
|
10
|
+
import { getTagStyles, Tag, tagTones, tagToneStyles } from '.';
|
|
8
11
|
import { TagCloseButton } from './TagCloseButton';
|
|
9
12
|
|
|
10
13
|
const meta = {
|
|
@@ -17,16 +20,19 @@ const meta = {
|
|
|
17
20
|
tone: {
|
|
18
21
|
control: 'select',
|
|
19
22
|
options: tagTones,
|
|
20
|
-
description:
|
|
23
|
+
description:
|
|
24
|
+
'`neutral` (default): a plain label. `success` / `warning` / `danger` / `info`: only when the tag reports a status every reader shares. Ignored while `selected` or `category` is set.',
|
|
21
25
|
},
|
|
22
26
|
selected: {
|
|
23
27
|
control: 'boolean',
|
|
24
|
-
description:
|
|
28
|
+
description:
|
|
29
|
+
'Filter-chip "on" state (black fill). Passing it, true or false, makes the tag a toggle; with `as="button"` it sets `aria-pressed`.',
|
|
25
30
|
},
|
|
26
31
|
category: {
|
|
27
32
|
control: 'select',
|
|
28
33
|
options: [undefined, ...SYSTEM_HUE_NAMES],
|
|
29
|
-
description:
|
|
34
|
+
description:
|
|
35
|
+
'One of twelve category hues. Classifies only: no status meaning. Wins over `tone`.',
|
|
30
36
|
},
|
|
31
37
|
disabled: { control: 'boolean' },
|
|
32
38
|
},
|
|
@@ -180,3 +186,174 @@ export const UseCases: Story = {
|
|
|
180
186
|
</VStack>
|
|
181
187
|
),
|
|
182
188
|
};
|
|
189
|
+
|
|
190
|
+
// ───────────────────────── Usage-page specimens ─────────────────────────
|
|
191
|
+
// Pulled into `Tag.usage.mdx` with <Canvas of={…} />. Hidden from the sidebar
|
|
192
|
+
// (`!dev`); `tags` is written on each story because the indexer reads CSF
|
|
193
|
+
// statically.
|
|
194
|
+
|
|
195
|
+
const TOPICS = [
|
|
196
|
+
{ label: '연구', hue: 'blue' },
|
|
197
|
+
{ label: '수업', hue: 'purple' },
|
|
198
|
+
{ label: '행정', hue: 'brown' },
|
|
199
|
+
] as const;
|
|
200
|
+
|
|
201
|
+
export const DoCategoryForTopics: Story = {
|
|
202
|
+
tags: ['!dev'],
|
|
203
|
+
parameters: { layout: 'padded' },
|
|
204
|
+
name: 'Usage / Do: category hues for topics',
|
|
205
|
+
render: () => (
|
|
206
|
+
<Flex gap={2} wrap="wrap">
|
|
207
|
+
{TOPICS.map(({ label, hue }) => (
|
|
208
|
+
<Tag key={label} category={hue} icon="#">
|
|
209
|
+
{label}
|
|
210
|
+
</Tag>
|
|
211
|
+
))}
|
|
212
|
+
</Flex>
|
|
213
|
+
),
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
export const DontToneForTopics: Story = {
|
|
217
|
+
tags: ['!dev'],
|
|
218
|
+
parameters: { layout: 'padded' },
|
|
219
|
+
name: "Usage / Don't: status tones for topics",
|
|
220
|
+
render: () => (
|
|
221
|
+
<Flex gap={2} wrap="wrap">
|
|
222
|
+
<Tag tone="success">연구</Tag>
|
|
223
|
+
<Tag tone="danger">수업</Tag>
|
|
224
|
+
<Tag tone="warning">행정</Tag>
|
|
225
|
+
</Flex>
|
|
226
|
+
),
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export const DoFilterToggle: Story = {
|
|
230
|
+
tags: ['!dev'],
|
|
231
|
+
parameters: { layout: 'padded' },
|
|
232
|
+
name: 'Usage / Do: filter chips as buttons with `selected`',
|
|
233
|
+
render: function DoFilterToggleStory() {
|
|
234
|
+
const [on, setOn] = useState('전체');
|
|
235
|
+
return (
|
|
236
|
+
<Flex gap={2} wrap="wrap" role="group" aria-label="파일 종류">
|
|
237
|
+
{['전체', '이미지', '문서', '코드'].map((name) => (
|
|
238
|
+
<Tag
|
|
239
|
+
key={name}
|
|
240
|
+
as="button"
|
|
241
|
+
selected={on === name}
|
|
242
|
+
onClick={() => setOn(name)}
|
|
243
|
+
>
|
|
244
|
+
{name}
|
|
245
|
+
</Tag>
|
|
246
|
+
))}
|
|
247
|
+
</Flex>
|
|
248
|
+
);
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
export const DoRemovableWithName: Story = {
|
|
253
|
+
tags: ['!dev'],
|
|
254
|
+
parameters: { layout: 'padded' },
|
|
255
|
+
name: 'Usage / Do: a remove button with its own name',
|
|
256
|
+
render: function DoRemovableStory() {
|
|
257
|
+
const [items, setItems] = useState(['마케팅팀', '영업팀', '개발팀']);
|
|
258
|
+
return (
|
|
259
|
+
<Flex gap={2} wrap="wrap">
|
|
260
|
+
{items.map((item) => (
|
|
261
|
+
<Tag key={item}>
|
|
262
|
+
{item}
|
|
263
|
+
<TagCloseButton
|
|
264
|
+
type="button"
|
|
265
|
+
aria-label={`${item} 삭제`}
|
|
266
|
+
onClick={() => setItems((prev) => prev.filter((i) => i !== item))}
|
|
267
|
+
/>
|
|
268
|
+
</Tag>
|
|
269
|
+
))}
|
|
270
|
+
</Flex>
|
|
271
|
+
);
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
export const DontSelectedForStatus: Story = {
|
|
276
|
+
tags: ['!dev'],
|
|
277
|
+
parameters: { layout: 'padded' },
|
|
278
|
+
name: "Usage / Don't: `selected` to mark a status",
|
|
279
|
+
render: () => (
|
|
280
|
+
<Flex gap={2} wrap="wrap" align="center">
|
|
281
|
+
<Text fontSize="sm">보고서 초안</Text>
|
|
282
|
+
<Tag selected>게시됨</Tag>
|
|
283
|
+
</Flex>
|
|
284
|
+
),
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
/** Tokens each tone and state reads, from `Tag.styles.ts` and the theme. */
|
|
288
|
+
export const UsageTokens: Story = {
|
|
289
|
+
tags: ['!dev'],
|
|
290
|
+
parameters: { layout: 'padded' },
|
|
291
|
+
name: 'Usage / Tokens',
|
|
292
|
+
render: () => {
|
|
293
|
+
const selected = getTagStyles({ selected: true });
|
|
294
|
+
const category = getTagStyles({ category: 'blue' });
|
|
295
|
+
return (
|
|
296
|
+
<TokenTable
|
|
297
|
+
rows={[
|
|
298
|
+
...tagTones.flatMap((tone) => [
|
|
299
|
+
{
|
|
300
|
+
token: tagToneStyles[tone].bgColor,
|
|
301
|
+
use: <T en={`${tone} · background`} ko={`${tone} · 배경`} />,
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
token: tagToneStyles[tone].color,
|
|
305
|
+
use: <T en={`${tone} · text`} ko={`${tone} · 글자`} />,
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
token: tagToneStyles[tone].hoverBorder,
|
|
309
|
+
use: (
|
|
310
|
+
<T
|
|
311
|
+
en={`${tone} · hover border (interactive)`}
|
|
312
|
+
ko={`${tone} · 호버 테두리(누를 수 있을 때)`}
|
|
313
|
+
/>
|
|
314
|
+
),
|
|
315
|
+
},
|
|
316
|
+
]),
|
|
317
|
+
{
|
|
318
|
+
token: selected.bgColor as string,
|
|
319
|
+
use: <T en="selected · background" ko="selected · 배경" />,
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
token: selected.color as string,
|
|
323
|
+
use: <T en="selected · text" ko="selected · 글자" />,
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
token: category.bgColor as string,
|
|
327
|
+
use: (
|
|
328
|
+
<T
|
|
329
|
+
en="category (blue shown) · background"
|
|
330
|
+
ko="category(예: blue) · 배경"
|
|
331
|
+
/>
|
|
332
|
+
),
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
token: 'category.blue.fg',
|
|
336
|
+
use: (
|
|
337
|
+
<T
|
|
338
|
+
en="category (blue shown) · icon mark"
|
|
339
|
+
ko="category(예: blue) · 앞쪽 표시"
|
|
340
|
+
/>
|
|
341
|
+
),
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
token: category.color as string,
|
|
345
|
+
use: <T en="category · text" ko="category · 글자" />,
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
token: disabledControl.bg,
|
|
349
|
+
use: <T en="disabled · background" ko="disabled · 배경" />,
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
token: disabledControl.color,
|
|
353
|
+
use: <T en="disabled · text" ko="disabled · 글자" />,
|
|
354
|
+
},
|
|
355
|
+
]}
|
|
356
|
+
/>
|
|
357
|
+
);
|
|
358
|
+
},
|
|
359
|
+
};
|