@shipfox/react-ui 0.3.0 → 0.5.0
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/.storybook/main.ts +20 -10
- package/.storybook/preview.tsx +1 -1
- package/.storybook/vitest.setup.ts +4 -0
- package/.turbo/turbo-build.log +2 -2
- package/.turbo/turbo-check.log +2 -2
- package/.turbo/turbo-type.log +1 -1
- package/CHANGELOG.md +18 -0
- package/README.md +40 -1
- package/argos.config.ts +33 -0
- package/dist/components/alert/alert.d.ts +2 -2
- package/dist/components/alert/alert.js +3 -3
- package/dist/components/alert/alert.js.map +1 -1
- package/dist/components/alert/alert.stories.js +2 -2
- package/dist/components/alert/alert.stories.js.map +1 -1
- package/dist/components/avatar/avatar-group.js +3 -3
- package/dist/components/avatar/avatar-group.js.map +1 -1
- package/dist/components/avatar/avatar.d.ts +4 -1
- package/dist/components/avatar/avatar.d.ts.map +1 -1
- package/dist/components/avatar/avatar.js +7 -8
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/avatar/avatar.stories.js +15 -3
- package/dist/components/avatar/avatar.stories.js.map +1 -1
- package/dist/components/badge/badge.d.ts +48 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/badge.js +72 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/badge.stories.js +802 -0
- package/dist/components/badge/badge.stories.js.map +1 -0
- package/dist/components/badge/icon-badge.d.ts +9 -0
- package/dist/components/badge/icon-badge.d.ts.map +1 -0
- package/dist/components/badge/icon-badge.js +32 -0
- package/dist/components/badge/icon-badge.js.map +1 -0
- package/dist/components/badge/index.d.ts +5 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +6 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/badge/status-badge.d.ts +9 -0
- package/dist/components/badge/status-badge.d.ts.map +1 -0
- package/dist/components/badge/status-badge.js +29 -0
- package/dist/components/badge/status-badge.js.map +1 -0
- package/dist/components/badge/user-badge.d.ts +8 -0
- package/dist/components/badge/user-badge.d.ts.map +1 -0
- package/dist/components/badge/user-badge.js +24 -0
- package/dist/components/badge/user-badge.js.map +1 -0
- package/dist/components/button/button-link.d.ts +14 -0
- package/dist/components/button/button-link.d.ts.map +1 -0
- package/dist/components/button/button-link.js +63 -0
- package/dist/components/button/button-link.js.map +1 -0
- package/dist/components/button/button-link.stories.js +127 -0
- package/dist/components/button/button-link.stories.js.map +1 -0
- package/dist/components/{button.d.ts → button/button.d.ts} +2 -2
- package/dist/components/button/button.d.ts.map +1 -0
- package/dist/components/{button.js → button/button.js} +9 -8
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/{button.stories.js → button/button.stories.js} +2 -14
- package/dist/components/button/button.stories.js.map +1 -0
- package/dist/components/button/icon-button.d.ts +14 -0
- package/dist/components/button/icon-button.d.ts.map +1 -0
- package/dist/components/button/icon-button.js +53 -0
- package/dist/components/button/icon-button.js.map +1 -0
- package/dist/components/button/icon-button.stories.js +254 -0
- package/dist/components/button/icon-button.stories.js.map +1 -0
- package/dist/components/button/index.d.ts +4 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +5 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/checkbox/checkbox-label.d.ts +14 -0
- package/dist/components/checkbox/checkbox-label.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox-label.js +82 -0
- package/dist/components/checkbox/checkbox-label.js.map +1 -0
- package/dist/components/checkbox/checkbox-links.d.ts +18 -0
- package/dist/components/checkbox/checkbox-links.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox-links.js +58 -0
- package/dist/components/checkbox/checkbox-links.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts +9 -0
- package/dist/components/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/checkbox.js +49 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/checkbox.stories.js +566 -0
- package/dist/components/checkbox/checkbox.stories.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +4 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +5 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/code-block/code-block-footer.d.ts +26 -0
- package/dist/components/code-block/code-block-footer.d.ts.map +1 -0
- package/dist/components/code-block/code-block-footer.js +86 -0
- package/dist/components/code-block/code-block-footer.js.map +1 -0
- package/dist/components/code-block/code-block.d.ts +50 -0
- package/dist/components/code-block/code-block.d.ts.map +1 -0
- package/dist/components/code-block/code-block.js +142 -0
- package/dist/components/code-block/code-block.js.map +1 -0
- package/dist/components/code-block/code-block.stories.js +341 -0
- package/dist/components/code-block/code-block.stories.js.map +1 -0
- package/dist/components/code-block/code-content.d.ts +11 -0
- package/dist/components/code-block/code-content.d.ts.map +1 -0
- package/dist/components/code-block/code-content.js +29 -0
- package/dist/components/code-block/code-content.js.map +1 -0
- package/dist/components/code-block/code-copy-button.d.ts +11 -0
- package/dist/components/code-block/code-copy-button.d.ts.map +1 -0
- package/dist/components/code-block/code-copy-button.js +49 -0
- package/dist/components/code-block/code-copy-button.js.map +1 -0
- package/dist/components/code-block/code-tabs.d.ts +16 -0
- package/dist/components/code-block/code-tabs.d.ts.map +1 -0
- package/dist/components/code-block/code-tabs.js +98 -0
- package/dist/components/code-block/code-tabs.js.map +1 -0
- package/dist/components/code-block/index.d.ts +4 -0
- package/dist/components/code-block/index.d.ts.map +1 -0
- package/dist/components/code-block/index.js +5 -0
- package/dist/components/code-block/index.js.map +1 -0
- package/dist/components/dynamic-item/dynamic-item.d.ts +13 -0
- package/dist/components/dynamic-item/dynamic-item.d.ts.map +1 -0
- package/dist/components/dynamic-item/dynamic-item.js +43 -0
- package/dist/components/dynamic-item/dynamic-item.js.map +1 -0
- package/dist/components/dynamic-item/dynamic-item.stories.js +375 -0
- package/dist/components/dynamic-item/dynamic-item.stories.js.map +1 -0
- package/dist/components/dynamic-item/index.d.ts +2 -0
- package/dist/components/dynamic-item/index.d.ts.map +1 -0
- package/dist/components/dynamic-item/index.js +3 -0
- package/dist/components/dynamic-item/index.js.map +1 -0
- package/dist/components/icon/custom/index.d.ts +2 -0
- package/dist/components/icon/custom/index.d.ts.map +1 -1
- package/dist/components/icon/custom/index.js +2 -0
- package/dist/components/icon/custom/index.js.map +1 -1
- package/dist/components/icon/custom/slack-logo.d.ts +6 -0
- package/dist/components/icon/custom/slack-logo.d.ts.map +1 -0
- package/dist/components/icon/custom/slack-logo.js +34 -0
- package/dist/components/icon/custom/slack-logo.js.map +1 -0
- package/dist/components/icon/custom/stripe-logo.d.ts +8 -0
- package/dist/components/icon/custom/stripe-logo.d.ts.map +1 -0
- package/dist/components/icon/custom/stripe-logo.js +24 -0
- package/dist/components/icon/custom/stripe-logo.js.map +1 -0
- package/dist/components/icon/icon.d.ts +13 -2
- package/dist/components/icon/icon.d.ts.map +1 -1
- package/dist/components/icon/icon.js +14 -3
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/icon/icon.stories.js +6 -3
- package/dist/components/icon/icon.stories.js.map +1 -1
- package/dist/components/index.d.ts +9 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +10 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/inline-tips/inline-tips.d.ts +1 -1
- package/dist/components/inline-tips/inline-tips.d.ts.map +1 -1
- package/dist/components/inline-tips/inline-tips.js +1 -1
- package/dist/components/inline-tips/inline-tips.js.map +1 -1
- package/dist/components/inline-tips/inline-tips.stories.js +5 -5
- package/dist/components/inline-tips/inline-tips.stories.js.map +1 -1
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +3 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input/input.d.ts.map +1 -0
- package/dist/components/{input.js → input/input.js} +2 -2
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/{input.stories.js → input/input.stories.js} +1 -1
- package/dist/components/input/input.stories.js.map +1 -0
- package/dist/components/item/index.d.ts +2 -0
- package/dist/components/item/index.d.ts.map +1 -0
- package/dist/components/item/index.js +3 -0
- package/dist/components/item/index.js.map +1 -0
- package/dist/components/item/item.d.ts +32 -0
- package/dist/components/item/item.d.ts.map +1 -0
- package/dist/components/item/item.js +120 -0
- package/dist/components/item/item.js.map +1 -0
- package/dist/components/item/item.stories.js +232 -0
- package/dist/components/item/item.stories.js.map +1 -0
- package/dist/components/label/index.d.ts +2 -0
- package/dist/components/label/index.d.ts.map +1 -0
- package/dist/components/label/index.js +3 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/label/label.d.ts +7 -0
- package/dist/components/label/label.d.ts.map +1 -0
- package/dist/components/label/label.js +13 -0
- package/dist/components/label/label.js.map +1 -0
- package/dist/components/label/label.stories.js +105 -0
- package/dist/components/label/label.stories.js.map +1 -0
- package/dist/components/moving-border/moving-border.d.ts +9 -0
- package/dist/components/moving-border/moving-border.d.ts.map +1 -0
- package/dist/components/moving-border/moving-border.js +54 -0
- package/dist/components/moving-border/moving-border.js.map +1 -0
- package/dist/components/textarea/textarea.js +1 -1
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/theme/index.d.ts +2 -0
- package/dist/components/theme/index.d.ts.map +1 -0
- package/dist/components/theme/index.js +3 -0
- package/dist/components/theme/index.js.map +1 -0
- package/dist/components/{theme-provider.d.ts → theme/theme-provider.d.ts} +1 -1
- package/dist/components/theme/theme-provider.d.ts.map +1 -0
- package/dist/components/{theme-provider.js → theme/theme-provider.js} +1 -1
- package/dist/components/theme/theme-provider.js.map +1 -0
- package/dist/components/toast/index.d.ts +3 -0
- package/dist/components/toast/index.d.ts.map +1 -0
- package/dist/components/toast/index.js +4 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toast/toast-custom.d.ts +19 -0
- package/dist/components/toast/toast-custom.d.ts.map +1 -0
- package/dist/components/toast/toast-custom.js +134 -0
- package/dist/components/toast/toast-custom.js.map +1 -0
- package/dist/components/toast/toast.d.ts +5 -0
- package/dist/components/toast/toast.d.ts.map +1 -0
- package/dist/components/toast/toast.js +40 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/toast/toast.stories.js +326 -0
- package/dist/components/toast/toast.stories.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +3 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/tooltip/tooltip.d.ts +18 -5
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip.js +63 -3
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/tooltip/tooltip.stories.js +560 -0
- package/dist/components/tooltip/tooltip.stories.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useResolvedTheme.d.ts +2 -0
- package/dist/hooks/useResolvedTheme.d.ts.map +1 -0
- package/dist/hooks/useResolvedTheme.js +24 -0
- package/dist/hooks/useResolvedTheme.js.map +1 -0
- package/dist/hooks/useShikiHighlight.d.ts +28 -0
- package/dist/hooks/useShikiHighlight.d.ts.map +1 -0
- package/dist/hooks/useShikiHighlight.js +106 -0
- package/dist/hooks/useShikiHighlight.js.map +1 -0
- package/dist/hooks/useShikiStyleInjection.d.ts +2 -0
- package/dist/hooks/useShikiStyleInjection.d.ts.map +1 -0
- package/dist/hooks/useShikiStyleInjection.js +34 -0
- package/dist/hooks/useShikiStyleInjection.js.map +1 -0
- package/dist/onboarding/sign-in.stories.js +93 -0
- package/dist/onboarding/sign-in.stories.js.map +1 -0
- package/index.css +130 -12
- package/package.json +14 -3
- package/src/assets/illustration-1.svg +92 -0
- package/src/assets/illustration-2.svg +14 -0
- package/src/assets/illustration-gradient.svg +7049 -0
- package/src/components/alert/alert.stories.tsx +2 -2
- package/src/components/alert/alert.tsx +3 -3
- package/src/components/avatar/avatar-group.tsx +3 -3
- package/src/components/avatar/avatar.stories.tsx +9 -2
- package/src/components/avatar/avatar.tsx +10 -6
- package/src/components/badge/badge.stories.tsx +468 -0
- package/src/components/badge/badge.tsx +147 -0
- package/src/components/badge/icon-badge.tsx +43 -0
- package/src/components/badge/index.ts +4 -0
- package/src/components/badge/status-badge.tsx +43 -0
- package/src/components/badge/user-badge.tsx +34 -0
- package/src/components/button/button-link.stories.tsx +86 -0
- package/src/components/button/button-link.tsx +76 -0
- package/src/components/{button.stories.tsx → button/button.stories.tsx} +1 -7
- package/src/components/{button.tsx → button/button.tsx} +9 -7
- package/src/components/button/icon-button.stories.tsx +182 -0
- package/src/components/button/icon-button.tsx +69 -0
- package/src/components/button/index.ts +3 -0
- package/src/components/checkbox/checkbox-label.tsx +125 -0
- package/src/components/checkbox/checkbox-links.tsx +90 -0
- package/src/components/checkbox/checkbox.stories.tsx +375 -0
- package/src/components/checkbox/checkbox.tsx +71 -0
- package/src/components/checkbox/index.ts +3 -0
- package/src/components/code-block/code-block-footer.tsx +173 -0
- package/src/components/code-block/code-block.stories.tsx +323 -0
- package/src/components/code-block/code-block.tsx +283 -0
- package/src/components/code-block/code-content.tsx +63 -0
- package/src/components/code-block/code-copy-button.tsx +73 -0
- package/src/components/code-block/code-tabs.tsx +170 -0
- package/src/components/code-block/index.ts +3 -0
- package/src/components/dynamic-item/dynamic-item.stories.tsx +261 -0
- package/src/components/dynamic-item/dynamic-item.tsx +68 -0
- package/src/components/dynamic-item/index.ts +1 -0
- package/src/components/icon/custom/index.ts +2 -0
- package/src/components/icon/custom/slack-logo.tsx +35 -0
- package/src/components/icon/custom/stripe-logo.tsx +27 -0
- package/src/components/icon/icon.stories.tsx +3 -1
- package/src/components/icon/icon.tsx +23 -1
- package/src/components/index.ts +9 -1
- package/src/components/inline-tips/inline-tips.stories.tsx +3 -3
- package/src/components/inline-tips/inline-tips.tsx +2 -2
- package/src/components/input/index.ts +1 -0
- package/src/components/{input.tsx → input/input.tsx} +1 -1
- package/src/components/item/index.ts +1 -0
- package/src/components/item/item.stories.tsx +150 -0
- package/src/components/item/item.tsx +182 -0
- package/src/components/label/index.ts +1 -0
- package/src/components/label/label.stories.tsx +67 -0
- package/src/components/label/label.tsx +15 -0
- package/src/components/moving-border/moving-border.tsx +67 -0
- package/src/components/textarea/textarea.tsx +1 -1
- package/src/components/theme/index.ts +1 -0
- package/src/components/toast/index.ts +2 -0
- package/src/components/toast/toast-custom.tsx +154 -0
- package/src/components/toast/toast.stories.tsx +369 -0
- package/src/components/toast/toast.tsx +41 -0
- package/src/components/tooltip/index.ts +1 -0
- package/src/components/tooltip/tooltip.stories.tsx +284 -0
- package/src/components/tooltip/tooltip.tsx +79 -10
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useResolvedTheme.ts +34 -0
- package/src/hooks/useShikiHighlight.ts +140 -0
- package/src/hooks/useShikiStyleInjection.ts +34 -0
- package/src/onboarding/sign-in.stories.tsx +73 -0
- package/vitest.config.ts +30 -3
- package/dist/components/button.d.ts.map +0 -1
- package/dist/components/button.js.map +0 -1
- package/dist/components/button.stories.js.map +0 -1
- package/dist/components/input.d.ts.map +0 -1
- package/dist/components/input.js.map +0 -1
- package/dist/components/input.stories.js.map +0 -1
- package/dist/components/theme-provider.d.ts.map +0 -1
- package/dist/components/theme-provider.js.map +0 -1
- /package/dist/components/{input.d.ts → input/input.d.ts} +0 -0
- /package/src/components/{input.stories.tsx → input/input.stories.tsx} +0 -0
- /package/src/components/{theme-provider.tsx → theme/theme-provider.tsx} +0 -0
|
@@ -17,7 +17,7 @@ const meta = {
|
|
|
17
17
|
argTypes: {
|
|
18
18
|
variant: {
|
|
19
19
|
control: 'select',
|
|
20
|
-
options: ['default', 'info', 'success', 'warning', '
|
|
20
|
+
options: ['default', 'info', 'success', 'warning', 'error'],
|
|
21
21
|
},
|
|
22
22
|
},
|
|
23
23
|
args: {
|
|
@@ -29,7 +29,7 @@ export default meta;
|
|
|
29
29
|
|
|
30
30
|
type Story = StoryObj<typeof meta>;
|
|
31
31
|
|
|
32
|
-
const variants = ['default', 'info', 'success', 'warning', '
|
|
32
|
+
const variants = ['default', 'info', 'success', 'warning', 'error'] as const;
|
|
33
33
|
|
|
34
34
|
export const Default: Story = {
|
|
35
35
|
render: (args) => {
|
|
@@ -12,7 +12,7 @@ const alertVariants = cva(
|
|
|
12
12
|
info: 'bg-tag-blue-bg text-foreground-neutral-base border-tag-blue-border',
|
|
13
13
|
success: 'bg-tag-success-bg text-foreground-neutral-base border-tag-success-border',
|
|
14
14
|
warning: 'bg-tag-warning-bg text-foreground-neutral-base border-tag-warning-border',
|
|
15
|
-
|
|
15
|
+
error: 'bg-tag-error-bg text-foreground-neutral-base border-tag-error-border',
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
18
|
defaultVariants: {
|
|
@@ -28,7 +28,7 @@ const alertLineVariants = cva('w-4 self-stretch rounded-full', {
|
|
|
28
28
|
info: 'bg-tag-blue-icon',
|
|
29
29
|
success: 'bg-tag-success-icon',
|
|
30
30
|
warning: 'bg-tag-warning-icon',
|
|
31
|
-
|
|
31
|
+
error: 'bg-tag-error-icon',
|
|
32
32
|
},
|
|
33
33
|
},
|
|
34
34
|
defaultVariants: {
|
|
@@ -43,7 +43,7 @@ const closeIconVariants = cva('w-16 h-16', {
|
|
|
43
43
|
info: 'text-tag-blue-icon',
|
|
44
44
|
success: 'text-tag-success-icon',
|
|
45
45
|
warning: 'text-tag-warning-icon',
|
|
46
|
-
|
|
46
|
+
error: 'text-tag-error-icon',
|
|
47
47
|
},
|
|
48
48
|
},
|
|
49
49
|
defaultVariants: {
|
|
@@ -17,8 +17,8 @@ const avatarGroupVariants = cva('flex items-start', {
|
|
|
17
17
|
'3xs': '-space-x-4',
|
|
18
18
|
'2xs': '-space-x-4',
|
|
19
19
|
xs: '-space-x-4',
|
|
20
|
-
sm: '-space-x-
|
|
21
|
-
md: '-space-x-
|
|
20
|
+
sm: '-space-x-6',
|
|
21
|
+
md: '-space-x-6',
|
|
22
22
|
lg: '-space-x-6',
|
|
23
23
|
xl: '-space-x-6',
|
|
24
24
|
'2xl': '-space-x-12',
|
|
@@ -76,7 +76,7 @@ function AvatarContainer({
|
|
|
76
76
|
data-slot="avatar-container"
|
|
77
77
|
className={cn(
|
|
78
78
|
'relative',
|
|
79
|
-
animateOnHover && 'transition-transform duration-300 ease-out hover:-translate-y-
|
|
79
|
+
animateOnHover && 'transition-transform duration-300 ease-in-out hover:-translate-y-4',
|
|
80
80
|
)}
|
|
81
81
|
style={{zIndex}}
|
|
82
82
|
>
|
|
@@ -6,6 +6,7 @@ import {AvatarGroup, AvatarGroupTooltip} from './avatar-group';
|
|
|
6
6
|
const contentOptions = ['letters', 'logo', 'logoPlaceholder', 'image', 'upload'] as const;
|
|
7
7
|
const radiusOptions = ['full', 'rounded'] as const;
|
|
8
8
|
const sizeOptions = ['3xs', '2xs', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'] as const;
|
|
9
|
+
const logoNameOptions = ['shipfox', 'slack', 'stripe', 'github'] as const;
|
|
9
10
|
|
|
10
11
|
const meta = {
|
|
11
12
|
title: 'Components/Avatar',
|
|
@@ -33,12 +34,18 @@ const meta = {
|
|
|
33
34
|
alt: {
|
|
34
35
|
control: 'text',
|
|
35
36
|
},
|
|
37
|
+
logoName: {
|
|
38
|
+
control: 'select',
|
|
39
|
+
options: logoNameOptions,
|
|
40
|
+
description: 'Logo icon name to display when content is "logo" or "logoPlaceholder"',
|
|
41
|
+
},
|
|
36
42
|
},
|
|
37
43
|
args: {
|
|
38
44
|
content: 'letters',
|
|
39
45
|
radius: 'full',
|
|
40
46
|
size: 'md',
|
|
41
47
|
fallback: 'John Doe',
|
|
48
|
+
logoName: 'shipfox',
|
|
42
49
|
},
|
|
43
50
|
} satisfies Meta<typeof Avatar>;
|
|
44
51
|
|
|
@@ -47,8 +54,8 @@ type Story = StoryObj<typeof meta>;
|
|
|
47
54
|
|
|
48
55
|
export const Default: Story = {
|
|
49
56
|
args: {
|
|
50
|
-
content: '
|
|
51
|
-
fallback: '
|
|
57
|
+
content: 'logo',
|
|
58
|
+
fallback: 'Shipfox',
|
|
52
59
|
},
|
|
53
60
|
|
|
54
61
|
render: (args) => (
|
|
@@ -3,7 +3,7 @@ import {cva, type VariantProps} from 'class-variance-authority';
|
|
|
3
3
|
import type {ComponentProps, ReactNode} from 'react';
|
|
4
4
|
import {getInitial, getPlaceholderImageUrl} from 'utils';
|
|
5
5
|
import {cn} from 'utils/cn';
|
|
6
|
-
import {Icon} from '../icon/icon';
|
|
6
|
+
import {Icon, type IconName} from '../icon/icon';
|
|
7
7
|
|
|
8
8
|
export const avatarVariants = cva(
|
|
9
9
|
'relative flex shrink-0 overflow-hidden bg-background-button-neutral-default text-foreground-neutral-base ring-1 ring-border-neutral-base-component ring-offset-1 ring-offset-background-neutral-base shadow-button-neutral',
|
|
@@ -110,6 +110,8 @@ export type AvatarProps = ComponentProps<typeof AvatarPrimitive.Root> &
|
|
|
110
110
|
alt?: string;
|
|
111
111
|
fallback?: string;
|
|
112
112
|
animateOnHover?: boolean;
|
|
113
|
+
logoName?: IconName;
|
|
114
|
+
logoClassName?: string;
|
|
113
115
|
};
|
|
114
116
|
|
|
115
117
|
export function Avatar({
|
|
@@ -121,6 +123,8 @@ export function Avatar({
|
|
|
121
123
|
alt,
|
|
122
124
|
fallback,
|
|
123
125
|
animateOnHover = false,
|
|
126
|
+
logoName = 'shipfox',
|
|
127
|
+
logoClassName,
|
|
124
128
|
...props
|
|
125
129
|
}: AvatarProps) {
|
|
126
130
|
const innerClassName =
|
|
@@ -152,19 +156,19 @@ export function Avatar({
|
|
|
152
156
|
|
|
153
157
|
if (content === 'logo') {
|
|
154
158
|
return (
|
|
155
|
-
<AvatarFallback className={cn(innerClassName, 'p-[15%]')}>
|
|
156
|
-
<Icon name=
|
|
159
|
+
<AvatarFallback className={cn(innerClassName, logoClassName ?? 'p-[15%]')}>
|
|
160
|
+
<Icon name={logoName} className="h-full w-full" />
|
|
157
161
|
</AvatarFallback>
|
|
158
162
|
);
|
|
159
163
|
}
|
|
160
164
|
|
|
161
165
|
if (content === 'logoPlaceholder') {
|
|
162
166
|
return (
|
|
163
|
-
<AvatarFallback className={cn(innerClassName, 'p-[15%]')}>
|
|
167
|
+
<AvatarFallback className={cn(innerClassName, logoClassName ?? 'p-[15%]')}>
|
|
164
168
|
<Icon
|
|
165
|
-
name=
|
|
169
|
+
name={logoName}
|
|
166
170
|
color="var(--foreground-neutral-subtle, #a1a1aa)"
|
|
167
|
-
className="h-full w-full
|
|
171
|
+
className="h-full w-full opacity-50"
|
|
168
172
|
/>
|
|
169
173
|
</AvatarFallback>
|
|
170
174
|
);
|
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
import type {Meta, StoryObj} from '@storybook/react';
|
|
2
|
+
import {Code} from 'components/typography';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import {Badge, IconBadge, StatusBadge, UserBadge} from '.';
|
|
5
|
+
|
|
6
|
+
const meta = {
|
|
7
|
+
title: 'Components/Badge',
|
|
8
|
+
component: Badge,
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: 'centered',
|
|
11
|
+
},
|
|
12
|
+
tags: ['autodocs'],
|
|
13
|
+
} satisfies Meta<typeof Badge>;
|
|
14
|
+
|
|
15
|
+
export default meta;
|
|
16
|
+
type Story = StoryObj<typeof meta>;
|
|
17
|
+
|
|
18
|
+
export const AllVariants: Story = {
|
|
19
|
+
render: () => (
|
|
20
|
+
<div className="flex flex-col gap-32">
|
|
21
|
+
{/* STATUS BADGE */}
|
|
22
|
+
<div>
|
|
23
|
+
<Code variant="label" className="mb-16">
|
|
24
|
+
Status Badge
|
|
25
|
+
</Code>
|
|
26
|
+
<div className="flex gap-16">
|
|
27
|
+
<StatusBadge variant="neutral">Badge</StatusBadge>
|
|
28
|
+
<StatusBadge variant="info">Badge</StatusBadge>
|
|
29
|
+
<StatusBadge variant="feature">Badge</StatusBadge>
|
|
30
|
+
<StatusBadge variant="success" dotClassName="size-5 rounded-full">
|
|
31
|
+
Badge
|
|
32
|
+
</StatusBadge>
|
|
33
|
+
<StatusBadge variant="warning">Badge</StatusBadge>
|
|
34
|
+
<StatusBadge variant="error">Badge</StatusBadge>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
{/* USER BADGE */}
|
|
39
|
+
<div>
|
|
40
|
+
<Code variant="label" className="mb-16">
|
|
41
|
+
User Badge
|
|
42
|
+
</Code>
|
|
43
|
+
<div className="flex gap-16">
|
|
44
|
+
<UserBadge
|
|
45
|
+
name="Thierry Abalea"
|
|
46
|
+
avatarSrc="https://avatars.githubusercontent.com/u/1290899?v=4"
|
|
47
|
+
/>
|
|
48
|
+
<UserBadge
|
|
49
|
+
name="Kyle Nguyen"
|
|
50
|
+
avatarSrc="https://avatars.githubusercontent.com/u/89263955?v=4"
|
|
51
|
+
/>
|
|
52
|
+
<UserBadge
|
|
53
|
+
name="Noe Charmet"
|
|
54
|
+
avatarSrc="https://avatars.githubusercontent.com/u/59678972?v=4"
|
|
55
|
+
/>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
{/* ICON BADGE */}
|
|
60
|
+
<div>
|
|
61
|
+
<Code variant="label" className="mb-16">
|
|
62
|
+
Icon Badge
|
|
63
|
+
</Code>
|
|
64
|
+
<div className="flex gap-16">
|
|
65
|
+
<IconBadge variant="neutral" name="homeSmile" />
|
|
66
|
+
<IconBadge variant="info" name="homeSmile" />
|
|
67
|
+
<IconBadge variant="feature" name="homeSmile" />
|
|
68
|
+
<IconBadge variant="success" name="homeSmile" />
|
|
69
|
+
<IconBadge variant="primary" name="homeSmile" />
|
|
70
|
+
<IconBadge variant="error" name="homeSmile" />
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
{/* BADGE - 2XS SIZE */}
|
|
75
|
+
<div>
|
|
76
|
+
<Code variant="label" className="mb-16">
|
|
77
|
+
Badge - 2XS Size
|
|
78
|
+
</Code>
|
|
79
|
+
<div className="flex flex-col gap-16">
|
|
80
|
+
{/* Base */}
|
|
81
|
+
<div className="flex gap-16">
|
|
82
|
+
<Badge variant="neutral" size="2xs">
|
|
83
|
+
Badge
|
|
84
|
+
</Badge>
|
|
85
|
+
<Badge variant="info" size="2xs">
|
|
86
|
+
Badge
|
|
87
|
+
</Badge>
|
|
88
|
+
<Badge variant="feature" size="2xs">
|
|
89
|
+
Badge
|
|
90
|
+
</Badge>
|
|
91
|
+
<Badge variant="success" size="2xs">
|
|
92
|
+
Badge
|
|
93
|
+
</Badge>
|
|
94
|
+
<Badge variant="warning" size="2xs">
|
|
95
|
+
Badge
|
|
96
|
+
</Badge>
|
|
97
|
+
<Badge variant="error" size="2xs">
|
|
98
|
+
Badge
|
|
99
|
+
</Badge>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
{/* With Right Icon */}
|
|
103
|
+
<div className="flex gap-16">
|
|
104
|
+
<Badge variant="neutral" size="2xs" iconRight="close">
|
|
105
|
+
Badge
|
|
106
|
+
</Badge>
|
|
107
|
+
<Badge variant="info" size="2xs" iconRight="close">
|
|
108
|
+
Badge
|
|
109
|
+
</Badge>
|
|
110
|
+
<Badge variant="feature" size="2xs" iconRight="close">
|
|
111
|
+
Badge
|
|
112
|
+
</Badge>
|
|
113
|
+
<Badge variant="success" size="2xs" iconRight="close">
|
|
114
|
+
Badge
|
|
115
|
+
</Badge>
|
|
116
|
+
<Badge variant="warning" size="2xs" iconRight="close">
|
|
117
|
+
Badge
|
|
118
|
+
</Badge>
|
|
119
|
+
<Badge variant="error" size="2xs" iconRight="close">
|
|
120
|
+
Badge
|
|
121
|
+
</Badge>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
{/* With Left Icon */}
|
|
125
|
+
<div className="flex gap-16">
|
|
126
|
+
<Badge variant="neutral" size="2xs" iconLeft="close">
|
|
127
|
+
Badge
|
|
128
|
+
</Badge>
|
|
129
|
+
<Badge variant="info" size="2xs" iconLeft="close">
|
|
130
|
+
Badge
|
|
131
|
+
</Badge>
|
|
132
|
+
<Badge variant="feature" size="2xs" iconLeft="close">
|
|
133
|
+
Badge
|
|
134
|
+
</Badge>
|
|
135
|
+
<Badge variant="success" size="2xs" iconLeft="close">
|
|
136
|
+
Badge
|
|
137
|
+
</Badge>
|
|
138
|
+
<Badge variant="warning" size="2xs" iconLeft="close">
|
|
139
|
+
Badge
|
|
140
|
+
</Badge>
|
|
141
|
+
<Badge variant="error" size="2xs" iconLeft="close">
|
|
142
|
+
Badge
|
|
143
|
+
</Badge>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
{/* BADGE - XS SIZE */}
|
|
149
|
+
<div>
|
|
150
|
+
<Code variant="label" className="mb-16">
|
|
151
|
+
Badge - XS Size
|
|
152
|
+
</Code>
|
|
153
|
+
<div className="flex flex-col gap-16">
|
|
154
|
+
{/* Base */}
|
|
155
|
+
<div className="flex gap-16">
|
|
156
|
+
<Badge variant="neutral" size="xs">
|
|
157
|
+
Badge
|
|
158
|
+
</Badge>
|
|
159
|
+
<Badge variant="info" size="xs">
|
|
160
|
+
Badge
|
|
161
|
+
</Badge>
|
|
162
|
+
<Badge variant="feature" size="xs">
|
|
163
|
+
Badge
|
|
164
|
+
</Badge>
|
|
165
|
+
<Badge variant="success" size="xs">
|
|
166
|
+
Badge
|
|
167
|
+
</Badge>
|
|
168
|
+
<Badge variant="warning" size="xs">
|
|
169
|
+
Badge
|
|
170
|
+
</Badge>
|
|
171
|
+
<Badge variant="error" size="xs">
|
|
172
|
+
Badge
|
|
173
|
+
</Badge>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
{/* With Right Icon */}
|
|
177
|
+
<div className="flex gap-16">
|
|
178
|
+
<Badge variant="neutral" size="xs" iconRight="close">
|
|
179
|
+
Badge
|
|
180
|
+
</Badge>
|
|
181
|
+
<Badge variant="info" size="xs" iconRight="close">
|
|
182
|
+
Badge
|
|
183
|
+
</Badge>
|
|
184
|
+
<Badge variant="feature" size="xs" iconRight="close">
|
|
185
|
+
Badge
|
|
186
|
+
</Badge>
|
|
187
|
+
<Badge variant="success" size="xs" iconRight="close">
|
|
188
|
+
Badge
|
|
189
|
+
</Badge>
|
|
190
|
+
<Badge variant="warning" size="xs" iconRight="close">
|
|
191
|
+
Badge
|
|
192
|
+
</Badge>
|
|
193
|
+
<Badge variant="error" size="xs" iconRight="close">
|
|
194
|
+
Badge
|
|
195
|
+
</Badge>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
{/* With Left Icon */}
|
|
199
|
+
<div className="flex gap-16">
|
|
200
|
+
<Badge variant="neutral" size="xs" iconLeft="close">
|
|
201
|
+
Badge
|
|
202
|
+
</Badge>
|
|
203
|
+
<Badge variant="info" size="xs" iconLeft="close">
|
|
204
|
+
Badge
|
|
205
|
+
</Badge>
|
|
206
|
+
<Badge variant="feature" size="xs" iconLeft="close">
|
|
207
|
+
Badge
|
|
208
|
+
</Badge>
|
|
209
|
+
<Badge variant="success" size="xs" iconLeft="close">
|
|
210
|
+
Badge
|
|
211
|
+
</Badge>
|
|
212
|
+
<Badge variant="warning" size="xs" iconLeft="close">
|
|
213
|
+
Badge
|
|
214
|
+
</Badge>
|
|
215
|
+
<Badge variant="error" size="xs" iconLeft="close">
|
|
216
|
+
Badge
|
|
217
|
+
</Badge>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
{/* BADGE - ROUNDED */}
|
|
223
|
+
<div>
|
|
224
|
+
<Code variant="label" className="mb-16">
|
|
225
|
+
Badge - Rounded
|
|
226
|
+
</Code>
|
|
227
|
+
<div className="flex flex-col gap-16">
|
|
228
|
+
{/* Base - 2XS */}
|
|
229
|
+
<div className="flex gap-16">
|
|
230
|
+
<Badge variant="neutral" size="2xs" radius="rounded">
|
|
231
|
+
Badge
|
|
232
|
+
</Badge>
|
|
233
|
+
<Badge variant="info" size="2xs" radius="rounded">
|
|
234
|
+
Badge
|
|
235
|
+
</Badge>
|
|
236
|
+
<Badge variant="feature" size="2xs" radius="rounded">
|
|
237
|
+
Badge
|
|
238
|
+
</Badge>
|
|
239
|
+
<Badge variant="success" size="2xs" radius="rounded">
|
|
240
|
+
Badge
|
|
241
|
+
</Badge>
|
|
242
|
+
<Badge variant="warning" size="2xs" radius="rounded">
|
|
243
|
+
Badge
|
|
244
|
+
</Badge>
|
|
245
|
+
<Badge variant="error" size="2xs" radius="rounded">
|
|
246
|
+
Badge
|
|
247
|
+
</Badge>
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
{/* Base - XS */}
|
|
251
|
+
<div className="flex gap-16">
|
|
252
|
+
<Badge variant="neutral" size="xs" radius="rounded">
|
|
253
|
+
Badge
|
|
254
|
+
</Badge>
|
|
255
|
+
<Badge variant="info" size="xs" radius="rounded">
|
|
256
|
+
Badge
|
|
257
|
+
</Badge>
|
|
258
|
+
<Badge variant="feature" size="xs" radius="rounded">
|
|
259
|
+
Badge
|
|
260
|
+
</Badge>
|
|
261
|
+
<Badge variant="success" size="xs" radius="rounded">
|
|
262
|
+
Badge
|
|
263
|
+
</Badge>
|
|
264
|
+
<Badge variant="warning" size="xs" radius="rounded">
|
|
265
|
+
Badge
|
|
266
|
+
</Badge>
|
|
267
|
+
<Badge variant="error" size="xs" radius="rounded">
|
|
268
|
+
Badge
|
|
269
|
+
</Badge>
|
|
270
|
+
</div>
|
|
271
|
+
|
|
272
|
+
{/* With Right Icon - 2XS */}
|
|
273
|
+
<div className="flex gap-16">
|
|
274
|
+
<Badge variant="neutral" size="2xs" radius="rounded" iconRight="close">
|
|
275
|
+
Badge
|
|
276
|
+
</Badge>
|
|
277
|
+
<Badge variant="info" size="2xs" radius="rounded" iconRight="close">
|
|
278
|
+
Badge
|
|
279
|
+
</Badge>
|
|
280
|
+
<Badge variant="feature" size="2xs" radius="rounded" iconRight="close">
|
|
281
|
+
Badge
|
|
282
|
+
</Badge>
|
|
283
|
+
<Badge variant="success" size="2xs" radius="rounded" iconRight="close">
|
|
284
|
+
Badge
|
|
285
|
+
</Badge>
|
|
286
|
+
<Badge variant="warning" size="2xs" radius="rounded" iconRight="close">
|
|
287
|
+
Badge
|
|
288
|
+
</Badge>
|
|
289
|
+
<Badge variant="error" size="2xs" radius="rounded" iconRight="close">
|
|
290
|
+
Badge
|
|
291
|
+
</Badge>
|
|
292
|
+
</div>
|
|
293
|
+
|
|
294
|
+
{/* With Right Icon - XS */}
|
|
295
|
+
<div className="flex gap-16">
|
|
296
|
+
<Badge variant="neutral" size="xs" radius="rounded" iconRight="close">
|
|
297
|
+
Badge
|
|
298
|
+
</Badge>
|
|
299
|
+
<Badge variant="info" size="xs" radius="rounded" iconRight="close">
|
|
300
|
+
Badge
|
|
301
|
+
</Badge>
|
|
302
|
+
<Badge variant="feature" size="xs" radius="rounded" iconRight="close">
|
|
303
|
+
Badge
|
|
304
|
+
</Badge>
|
|
305
|
+
<Badge variant="success" size="xs" radius="rounded" iconRight="close">
|
|
306
|
+
Badge
|
|
307
|
+
</Badge>
|
|
308
|
+
<Badge variant="warning" size="xs" radius="rounded" iconRight="close">
|
|
309
|
+
Badge
|
|
310
|
+
</Badge>
|
|
311
|
+
<Badge variant="error" size="xs" radius="rounded" iconRight="close">
|
|
312
|
+
Badge
|
|
313
|
+
</Badge>
|
|
314
|
+
</div>
|
|
315
|
+
|
|
316
|
+
{/* With Left Icon - 2XS */}
|
|
317
|
+
<div className="flex gap-16">
|
|
318
|
+
<Badge variant="neutral" size="2xs" radius="rounded" iconLeft="close">
|
|
319
|
+
Badge
|
|
320
|
+
</Badge>
|
|
321
|
+
<Badge variant="info" size="2xs" radius="rounded" iconLeft="close">
|
|
322
|
+
Badge
|
|
323
|
+
</Badge>
|
|
324
|
+
<Badge variant="feature" size="2xs" radius="rounded" iconLeft="close">
|
|
325
|
+
Badge
|
|
326
|
+
</Badge>
|
|
327
|
+
<Badge variant="success" size="2xs" radius="rounded" iconLeft="close">
|
|
328
|
+
Badge
|
|
329
|
+
</Badge>
|
|
330
|
+
<Badge variant="warning" size="2xs" radius="rounded" iconLeft="close">
|
|
331
|
+
Badge
|
|
332
|
+
</Badge>
|
|
333
|
+
<Badge variant="error" size="2xs" radius="rounded" iconLeft="close">
|
|
334
|
+
Badge
|
|
335
|
+
</Badge>
|
|
336
|
+
</div>
|
|
337
|
+
|
|
338
|
+
{/* With Left Icon - XS */}
|
|
339
|
+
<div className="flex gap-16">
|
|
340
|
+
<Badge variant="neutral" size="xs" radius="rounded" iconLeft="close">
|
|
341
|
+
Badge
|
|
342
|
+
</Badge>
|
|
343
|
+
<Badge variant="info" size="xs" radius="rounded" iconLeft="close">
|
|
344
|
+
Badge
|
|
345
|
+
</Badge>
|
|
346
|
+
<Badge variant="feature" size="xs" radius="rounded" iconLeft="close">
|
|
347
|
+
Badge
|
|
348
|
+
</Badge>
|
|
349
|
+
<Badge variant="success" size="xs" radius="rounded" iconLeft="close">
|
|
350
|
+
Badge
|
|
351
|
+
</Badge>
|
|
352
|
+
<Badge variant="warning" size="xs" radius="rounded" iconLeft="close">
|
|
353
|
+
Badge
|
|
354
|
+
</Badge>
|
|
355
|
+
<Badge variant="error" size="xs" radius="rounded" iconLeft="close">
|
|
356
|
+
Badge
|
|
357
|
+
</Badge>
|
|
358
|
+
</div>
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
|
|
362
|
+
{/* BETA BADGE */}
|
|
363
|
+
<div>
|
|
364
|
+
<Code variant="label" className="mb-16">
|
|
365
|
+
Beta Badge
|
|
366
|
+
</Code>
|
|
367
|
+
<div className="flex gap-16">
|
|
368
|
+
<Badge variant="info" size="2xs" radius="rounded">
|
|
369
|
+
Beta
|
|
370
|
+
</Badge>
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
</div>
|
|
374
|
+
),
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
// Interactive badges with click handlers
|
|
378
|
+
function InteractiveBadgesComponent() {
|
|
379
|
+
const [tags, setTags] = React.useState(['React', 'TypeScript', 'Next.js', 'Tailwind']);
|
|
380
|
+
|
|
381
|
+
const removeTag = (tagToRemove: string) => {
|
|
382
|
+
setTags(tags.filter((tag) => tag !== tagToRemove));
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
return (
|
|
386
|
+
<div className="flex flex-col gap-32">
|
|
387
|
+
{/* Removable tags */}
|
|
388
|
+
<div>
|
|
389
|
+
<Code variant="label" className="mb-16">
|
|
390
|
+
Interactive Badges - Removable Tags
|
|
391
|
+
</Code>
|
|
392
|
+
<div className="flex flex-wrap gap-8">
|
|
393
|
+
{tags.map((tag) => (
|
|
394
|
+
<Badge
|
|
395
|
+
key={tag}
|
|
396
|
+
variant="neutral"
|
|
397
|
+
size="xs"
|
|
398
|
+
radius="rounded"
|
|
399
|
+
iconRight="close"
|
|
400
|
+
onIconRightClick={() => removeTag(tag)}
|
|
401
|
+
iconRightAriaLabel={`Remove ${tag} tag`}
|
|
402
|
+
>
|
|
403
|
+
{tag}
|
|
404
|
+
</Badge>
|
|
405
|
+
))}
|
|
406
|
+
</div>
|
|
407
|
+
</div>
|
|
408
|
+
|
|
409
|
+
{/* Different variants with interactive icons */}
|
|
410
|
+
<div>
|
|
411
|
+
<Code variant="label" className="mb-16">
|
|
412
|
+
Interactive Badges - Different Variants
|
|
413
|
+
</Code>
|
|
414
|
+
<div className="flex flex-wrap gap-8">
|
|
415
|
+
<Badge
|
|
416
|
+
variant="success"
|
|
417
|
+
size="xs"
|
|
418
|
+
iconRight="close"
|
|
419
|
+
onIconRightClick={() => alert('Success badge clicked!')}
|
|
420
|
+
iconRightAriaLabel="Remove success badge"
|
|
421
|
+
>
|
|
422
|
+
Completed
|
|
423
|
+
</Badge>
|
|
424
|
+
<Badge
|
|
425
|
+
variant="warning"
|
|
426
|
+
size="xs"
|
|
427
|
+
iconRight="close"
|
|
428
|
+
onIconRightClick={() => alert('Warning badge clicked!')}
|
|
429
|
+
iconRightAriaLabel="Remove warning badge"
|
|
430
|
+
>
|
|
431
|
+
Pending
|
|
432
|
+
</Badge>
|
|
433
|
+
<Badge
|
|
434
|
+
variant="error"
|
|
435
|
+
size="xs"
|
|
436
|
+
iconRight="close"
|
|
437
|
+
onIconRightClick={() => alert('Error badge clicked!')}
|
|
438
|
+
iconRightAriaLabel="Remove error badge"
|
|
439
|
+
>
|
|
440
|
+
Failed
|
|
441
|
+
</Badge>
|
|
442
|
+
</div>
|
|
443
|
+
</div>
|
|
444
|
+
|
|
445
|
+
{/* Non-interactive icons (static) */}
|
|
446
|
+
<div>
|
|
447
|
+
<Code variant="label" className="mb-16">
|
|
448
|
+
Static Icons (Non-interactive)
|
|
449
|
+
</Code>
|
|
450
|
+
<div className="flex flex-wrap gap-8">
|
|
451
|
+
<Badge variant="info" size="xs" iconLeft="info">
|
|
452
|
+
Information
|
|
453
|
+
</Badge>
|
|
454
|
+
<Badge variant="success" size="xs" iconLeft="check">
|
|
455
|
+
Verified
|
|
456
|
+
</Badge>
|
|
457
|
+
<Badge variant="feature" size="xs" iconLeft="money">
|
|
458
|
+
Premium
|
|
459
|
+
</Badge>
|
|
460
|
+
</div>
|
|
461
|
+
</div>
|
|
462
|
+
</div>
|
|
463
|
+
);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
export const InteractiveBadges: Story = {
|
|
467
|
+
render: () => <InteractiveBadgesComponent />,
|
|
468
|
+
};
|