@beydesign/storybook 0.0.36 → 0.0.38
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/index.d.ts +4 -4
- package/dist/index.js +5 -3
- package/dist/stories/AgentCard/AgentCard.d.ts +3 -0
- package/dist/stories/{AgentCard.js → AgentCard/AgentCard.js} +13 -16
- package/dist/stories/{AgentCard.stories.js → AgentCard/AgentCard.stories.js} +2 -2
- package/dist/stories/AgentCard/AgentCardSkeleton.d.ts +2 -0
- package/dist/stories/AgentCard/AgentCardSkeleton.js +6 -0
- package/dist/stories/{AgentCardSkeleton.stories.d.ts → AgentCard/AgentCardSkeleton.stories.d.ts} +1 -1
- package/dist/stories/{AgentCardSkeleton.stories.js → AgentCard/AgentCardSkeleton.stories.js} +2 -2
- package/dist/stories/AgentCard/index.d.ts +3 -0
- package/dist/stories/AgentCard/index.js +2 -0
- package/dist/stories/{types/agent-card.d.ts → AgentCard/types.d.ts} +22 -5
- package/dist/stories/HintBubble.d.ts +3 -0
- package/dist/stories/HintBubble.js +29 -0
- package/dist/stories/HintBubble.stories.d.ts +9 -0
- package/dist/stories/HintBubble.stories.js +68 -0
- package/dist/stories/SkeletonLoader.d.ts +0 -23
- package/dist/stories/SkeletonLoader.js +1 -4
- package/dist/stories/SkeletonLoader.stories.d.ts +1 -4
- package/dist/stories/SkeletonLoader.stories.js +1 -68
- package/dist/stories/TextArea.d.ts +3 -0
- package/dist/stories/TextArea.js +23 -0
- package/dist/stories/TextArea.stories.d.ts +103 -0
- package/dist/stories/TextArea.stories.js +88 -0
- package/dist/stories/TextInput.d.ts +3 -0
- package/dist/stories/TextInput.js +23 -0
- package/dist/stories/TextInput.stories.d.ts +85 -0
- package/dist/stories/TextInput.stories.js +74 -0
- package/dist/stories/types/hint-bubble.d.ts +24 -0
- package/dist/stories/types/hint-bubble.js +10 -0
- package/dist/stories/types/text-area.d.ts +30 -0
- package/dist/stories/types/text-area.js +1 -0
- package/dist/stories/types/text-input.d.ts +26 -0
- package/dist/stories/types/text-input.js +1 -0
- package/package.json +1 -1
- package/dist/stories/AgentCard.d.ts +0 -4
- /package/dist/stories/{AgentCard.stories.d.ts → AgentCard/AgentCard.stories.d.ts} +0 -0
- /package/dist/stories/{types/agent-card.js → AgentCard/types.js} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ export { NavItem } from './stories/NavItem';
|
|
|
12
12
|
export { CreditsCard } from './stories/CreditsCard';
|
|
13
13
|
export { Sidebar } from './stories/Sidebar';
|
|
14
14
|
export { Menu } from './stories/Menu';
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
15
|
+
export { SkeletonLoader } from './stories/SkeletonLoader';
|
|
16
|
+
export { HintBubble } from './stories/HintBubble';
|
|
17
17
|
export { ButtonSize, ButtonHierarchy, ButtonState, ButtonShape, ButtonDisplayMode, ButtonType, type MainButtonProps, } from './stories/types/button';
|
|
18
18
|
export { BadgeColor, BadgeSize, type BadgeProps } from './stories/types/badge';
|
|
19
19
|
export { AvatarStyle, AvatarSize, type AvatarProps, } from './stories/types/avatar';
|
|
@@ -28,5 +28,5 @@ export { NavItemState, NavItemSize, type NavItemProps, } from './stories/types/n
|
|
|
28
28
|
export { CreditsCardSize, type CreditsCardProps, } from './stories/types/credits-card';
|
|
29
29
|
export { SidebarSize, type SidebarProps, type NavItemConfig, type NavSection, } from './stories/types/sidebar';
|
|
30
30
|
export { type MenuProps, type MenuItemProps } from './stories/types/menu';
|
|
31
|
-
export { type
|
|
32
|
-
export { type
|
|
31
|
+
export { HintBubbleType, HintBubbleSize, type HintBubbleProps, } from './stories/types/hint-bubble';
|
|
32
|
+
export { AgentCard, type AgentCardProps, type AgentState, AgentCardSkeleton, type AgentCardSkeletonProps, } from './stories/AgentCard';
|
package/dist/index.js
CHANGED
|
@@ -13,8 +13,8 @@ export { NavItem } from './stories/NavItem';
|
|
|
13
13
|
export { CreditsCard } from './stories/CreditsCard';
|
|
14
14
|
export { Sidebar } from './stories/Sidebar';
|
|
15
15
|
export { Menu } from './stories/Menu';
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
16
|
+
export { SkeletonLoader } from './stories/SkeletonLoader';
|
|
17
|
+
export { HintBubble } from './stories/HintBubble';
|
|
18
18
|
// Button Types
|
|
19
19
|
export { ButtonSize, ButtonHierarchy, ButtonState, ButtonShape, ButtonDisplayMode, ButtonType, } from './stories/types/button';
|
|
20
20
|
// Badge Types
|
|
@@ -40,4 +40,6 @@ export { CreditsCardSize, } from './stories/types/credits-card';
|
|
|
40
40
|
// Sidebar Types
|
|
41
41
|
export { SidebarSize, } from './stories/types/sidebar';
|
|
42
42
|
// Agent Card Types
|
|
43
|
-
|
|
43
|
+
// Hint Bubble Types
|
|
44
|
+
export { HintBubbleType, HintBubbleSize, } from './stories/types/hint-bubble';
|
|
45
|
+
export { AgentCard, AgentCardSkeleton, } from './stories/AgentCard';
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
|
-
import { AgentState
|
|
3
|
+
import { AgentState } from './types';
|
|
4
4
|
import { Box } from '@mui/material';
|
|
5
|
-
import { Typography } from '
|
|
6
|
-
import { TypographySize, TypographyWeight } from '
|
|
7
|
-
import { Toggle } from '
|
|
8
|
-
import { TogglePosition } from '
|
|
9
|
-
import { Badge } from '
|
|
10
|
-
import { BadgeColor, BadgeSize } from '
|
|
11
|
-
import { MainButton } from '
|
|
12
|
-
import { ButtonHierarchy, ButtonSize } from '
|
|
13
|
-
import { Menu } from '
|
|
5
|
+
import { Typography } from '../Typography';
|
|
6
|
+
import { TypographySize, TypographyWeight } from '../types/typography';
|
|
7
|
+
import { Toggle } from '../Toggle';
|
|
8
|
+
import { TogglePosition } from '../types/toggle';
|
|
9
|
+
import { Badge } from '../Bagde';
|
|
10
|
+
import { BadgeColor, BadgeSize } from '../types/badge';
|
|
11
|
+
import { MainButton } from '../Button';
|
|
12
|
+
import { ButtonHierarchy, ButtonSize } from '../types/button';
|
|
13
|
+
import { Menu } from '../Menu';
|
|
14
14
|
import { ArrowsCounterClockwise } from '@phosphor-icons/react';
|
|
15
|
-
import { ProgressIndicator } from '
|
|
16
|
-
import { ProgressIndicatorMode } from '
|
|
15
|
+
import { ProgressIndicator } from '../ProgressIndicator';
|
|
16
|
+
import { ProgressIndicatorMode } from '../types/progress-indicator';
|
|
17
17
|
export const AgentCard = ({ title, description = '', date = '', showDate = false, badges = [], showBadges = false, showTimeBadge = false, showDescription = false, showMenu = false, menuItems = [], active = false, showActiveToggle = false, onActiveToggleChange, activeToggleDisabled = false, agentImage, time, onPreview, agentState, previewButtonText = 'Preview', }) => {
|
|
18
18
|
const [hovered, setHovered] = useState(false);
|
|
19
19
|
const [imageError, setImageError] = useState(false);
|
|
@@ -78,8 +78,5 @@ export const AgentCard = ({ title, description = '', date = '', showDate = false
|
|
|
78
78
|
position: 'absolute',
|
|
79
79
|
right: '8px',
|
|
80
80
|
top: '8px',
|
|
81
|
-
} })), isReady && hovered && (_jsx(Box, { position: 'absolute', top: '0', left: '0', width: '100%', height: '100%', bgcolor: 'var(--colors-light-background-bg-component-hover)', sx: {
|
|
82
|
-
};
|
|
83
|
-
export const Components = () => {
|
|
84
|
-
return (_jsxs("div", { style: { padding: '20px' }, children: [_jsx("h1", { children: "Avatars" }), _jsx("div", { style: { display: 'flex', gap: '1rem', flexDirection: 'column' }, children: _jsx("div", { children: _jsx("h2", { children: "Size: sm, Avatar Style: Letters" }) }) })] }));
|
|
81
|
+
} })), isReady && hovered && onPreview && (_jsx(Box, { position: 'absolute', top: '0', left: '0', width: '100%', height: '100%', bgcolor: 'var(--colors-light-background-bg-component-hover)', sx: { zIndex: 1 }, display: 'flex', justifyContent: 'center', alignItems: 'center', children: _jsx(MainButton, { text: previewButtonText, onClick: onPreview, showTrailingIcon: true, trailingIcon: "Play", hierarchy: ButtonHierarchy.SecondaryTransparent, size: ButtonSize.sm, style: { border: 'none' } }) })), isProcessing && (_jsxs(Box, { position: 'absolute', top: '0', left: '0', width: '100%', height: '100%', bgcolor: 'var(--colors-light-background-bg-component-hover)', style: { zIndex: 1 }, display: 'flex', flexDirection: 'column', justifyContent: 'center', alignItems: 'center', gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-md)', children: [_jsx(ArrowsCounterClockwise, { size: 24, weight: "bold", color: 'var(--primitives-desktop-primary-white-100)' }), _jsx(Typography, { text: "Agent creation in progress", size: TypographySize.TextS, weight: TypographyWeight.SemiBold, color: 'var(--primitives-desktop-primary-white-100)' }), _jsx(ProgressIndicator, { mode: ProgressIndicatorMode.Percentage, currentValue: 50, maxValue: 100, textColor: 'var(--primitives-desktop-primary-white-100)' })] }))] }), _jsx(Typography, { text: title, size: TypographySize.HeadingXS, weight: TypographyWeight.SemiBold }), (showDate || showActiveToggle) && (_jsxs(Box, { display: 'flex', flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', children: [showDate && (_jsx(Typography, { text: date, size: TypographySize.TextS, weight: TypographyWeight.Regular, color: 'var(--colors-light-text-text-subtle)', style: { flex: 1 } })), showActiveToggle && (_jsx(Toggle, { checked: active, onChange: (checked) => onActiveToggleChange?.(checked), disabled: activeToggleDisabled, text: "Active", togglePosition: TogglePosition.Right, style: { flex: 1 } }))] })), showBadges && (_jsx(Box, { display: 'flex', flexDirection: 'row', flexWrap: 'wrap', alignItems: 'center', gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-lg)', children: badges.map((badge, index) => (_jsx(Badge, { text: badge, size: BadgeSize.lg, fill: true }, `badge-${index}-${badge}`))) })), showDescription && (_jsx(Typography, { text: description, size: TypographySize.TextS, weight: TypographyWeight.Regular, color: 'var(--colors-light-text-text-paragraph)' }))] }));
|
|
85
82
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AgentCard } from './AgentCard';
|
|
2
|
-
import { AgentState } from './types
|
|
2
|
+
import { AgentState } from './types';
|
|
3
3
|
const meta = {
|
|
4
|
-
title: 'Design System/Components/AgentCard',
|
|
4
|
+
title: 'Design System/Components/Agent/AgentCard',
|
|
5
5
|
component: AgentCard,
|
|
6
6
|
parameters: {
|
|
7
7
|
layout: 'centered',
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from '@mui/material';
|
|
3
|
+
import { SkeletonLoader } from '../SkeletonLoader';
|
|
4
|
+
export const AgentCardSkeleton = ({ width = '300px', showDate = false, showBadges = false, showDescription = false, style, }) => {
|
|
5
|
+
return (_jsxs(Box, { width: width, display: "flex", flexDirection: "column", borderRadius: "var(--spacing-tokens-size-in-px-spacing-md)", padding: "var(--spacing-tokens-size-in-px-spacing-spacing-xl)", gap: "var(--spacing-tokens-size-in-px-spacing-spacing-lg)", bgcolor: "var(--colors-light-background-bg-component)", boxShadow: `var(--global-shadows-shadow-xs-offset-x) var(--global-shadows-shadow-xs-offset-y) var(--global-shadows-shadow-xs-blur) var(--global-shadows-shadow-xs-spread) var(--global-shadows-shadow-xs-color)`, style: style, children: [_jsx(Box, { width: "100%", sx: { aspectRatio: 1 }, borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-sm)", overflow: "hidden", children: _jsx(SkeletonLoader, {}) }), _jsx(SkeletonLoader, { width: "70%", height: "24px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" }), showDate && (_jsx(SkeletonLoader, { width: "100%", height: "20px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" })), showBadges && (_jsxs(Box, { display: "flex", flexDirection: "row", gap: "var(--spacing-tokens-size-in-px-spacing-spacing-md)", children: [_jsx(SkeletonLoader, { width: "60px", height: "24px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" }), _jsx(SkeletonLoader, { width: "80px", height: "24px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" })] })), showDescription && (_jsxs(Box, { display: "flex", flexDirection: "column", gap: "var(--spacing-tokens-size-in-px-spacing-spacing-sm)", children: [_jsx(SkeletonLoader, { width: "100%", height: "16px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" }), _jsx(SkeletonLoader, { width: "80%", height: "16px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" })] }))] }));
|
|
6
|
+
};
|
package/dist/stories/{AgentCardSkeleton.stories.d.ts → AgentCard/AgentCardSkeleton.stories.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { AgentCardSkeleton } from './
|
|
2
|
+
import { AgentCardSkeleton } from './AgentCardSkeleton';
|
|
3
3
|
declare const meta: Meta<typeof AgentCardSkeleton>;
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof AgentCardSkeleton>;
|
package/dist/stories/{AgentCardSkeleton.stories.js → AgentCard/AgentCardSkeleton.stories.js}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { AgentCardSkeleton } from './SkeletonLoader';
|
|
3
2
|
import { Box } from '@mui/material';
|
|
3
|
+
import { AgentCardSkeleton } from './AgentCardSkeleton';
|
|
4
4
|
const meta = {
|
|
5
|
-
title: 'Design System/Components/AgentCardSkeleton',
|
|
5
|
+
title: 'Design System/Components/Agent/AgentCardSkeleton',
|
|
6
6
|
component: AgentCardSkeleton,
|
|
7
7
|
parameters: {
|
|
8
8
|
layout: 'centered',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuItemProps } from '
|
|
1
|
+
import { MenuItemProps } from '../types/menu';
|
|
2
2
|
export declare enum AgentState {
|
|
3
3
|
pending = "pending",
|
|
4
4
|
processing = "processing",
|
|
@@ -48,8 +48,25 @@ export type AgentCardProps = {
|
|
|
48
48
|
/** Preview button text */
|
|
49
49
|
previewButtonText?: string;
|
|
50
50
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
export interface AgentCardSkeletonProps {
|
|
52
|
+
/**
|
|
53
|
+
* Width of the card
|
|
54
|
+
*/
|
|
55
|
+
width?: string | number;
|
|
56
|
+
/**
|
|
57
|
+
* Show date placeholder
|
|
58
|
+
*/
|
|
59
|
+
showDate?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Show badges placeholder
|
|
62
|
+
*/
|
|
63
|
+
showBadges?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Show description placeholder
|
|
66
|
+
*/
|
|
67
|
+
showDescription?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Custom style for the skeleton
|
|
70
|
+
*/
|
|
71
|
+
style?: React.CSSProperties;
|
|
55
72
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from '@mui/material';
|
|
3
|
+
import { Typography } from './Typography';
|
|
4
|
+
import { TypographySize, TypographyWeight } from './types/typography';
|
|
5
|
+
import { HintBubbleSize, HintBubbleType, } from './types/hint-bubble';
|
|
6
|
+
export const HintBubble = ({ text, size = HintBubbleSize.md, type = HintBubbleType.Info, }) => {
|
|
7
|
+
const getPadding = () => {
|
|
8
|
+
if (size === HintBubbleSize.sm) {
|
|
9
|
+
return 'var(--spacing-tokens-size-in-px-spacing-spacing-md) var(--spacing-tokens-size-in-px-spacing-spacing-lg)';
|
|
10
|
+
}
|
|
11
|
+
return 'var(--spacing-tokens-size-in-px-spacing-spacing-lg)';
|
|
12
|
+
};
|
|
13
|
+
const getTypographySize = () => {
|
|
14
|
+
if (size === HintBubbleSize.sm)
|
|
15
|
+
return TypographySize.TextXS;
|
|
16
|
+
return TypographySize.TextM;
|
|
17
|
+
};
|
|
18
|
+
const getTypographyWeight = () => {
|
|
19
|
+
if (size === HintBubbleSize.sm)
|
|
20
|
+
return TypographyWeight.Regular;
|
|
21
|
+
return TypographyWeight.Medium;
|
|
22
|
+
};
|
|
23
|
+
const getTypographyColor = () => {
|
|
24
|
+
if (type === HintBubbleType.Error)
|
|
25
|
+
return 'var(--colors-light-text-text-error)';
|
|
26
|
+
return 'var(--colors-light-text-text-title)';
|
|
27
|
+
};
|
|
28
|
+
return (_jsx(Box, { borderRadius: 'var(--spacing-tokens-size-in-px-spacing-spacing-md)', bgcolor: 'var(--colors-light-background-bg-card-highlight)', padding: getPadding(), gap: '10px', children: _jsx(Typography, { text: text, size: getTypographySize(), weight: getTypographyWeight(), color: getTypographyColor() }) }));
|
|
29
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { HintBubble } from './HintBubble';
|
|
3
|
+
declare const meta: Meta<typeof HintBubble>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof HintBubble>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const Small: Story;
|
|
8
|
+
export declare const Error: Story;
|
|
9
|
+
export declare const SmallError: Story;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { HintBubble } from './HintBubble';
|
|
2
|
+
import { HintBubbleSize, HintBubbleType } from './types/hint-bubble';
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Design System/Components/HintBubble',
|
|
5
|
+
component: HintBubble,
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: 'centered',
|
|
8
|
+
design: {
|
|
9
|
+
type: 'figspec',
|
|
10
|
+
url: 'https://www.figma.com/design/mIhjz2yJjcpLlIqw6oUivt/Beyond-Presence?node-id=4717-3779&t=8I9WicYVdJD1jCB1-1',
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
tags: ['autodocs'],
|
|
14
|
+
argTypes: {
|
|
15
|
+
size: {
|
|
16
|
+
control: 'select',
|
|
17
|
+
options: Object.values(HintBubbleSize),
|
|
18
|
+
description: 'Size of the hint bubble',
|
|
19
|
+
table: {
|
|
20
|
+
type: { summary: 'string' },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
type: {
|
|
24
|
+
control: 'select',
|
|
25
|
+
options: Object.values(HintBubbleType),
|
|
26
|
+
description: 'Type of the hint bubble',
|
|
27
|
+
table: {
|
|
28
|
+
type: { summary: 'string' },
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
text: {
|
|
32
|
+
control: 'text',
|
|
33
|
+
description: 'Text of the hint bubble',
|
|
34
|
+
table: {
|
|
35
|
+
type: { summary: 'string' },
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
export default meta;
|
|
41
|
+
export const Default = {
|
|
42
|
+
args: {
|
|
43
|
+
text: 'This is a hint bubble',
|
|
44
|
+
type: HintBubbleType.Info,
|
|
45
|
+
size: HintBubbleSize.md,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
export const Small = {
|
|
49
|
+
args: {
|
|
50
|
+
text: 'This is a hint bubble',
|
|
51
|
+
type: HintBubbleType.Info,
|
|
52
|
+
size: HintBubbleSize.sm,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
export const Error = {
|
|
56
|
+
args: {
|
|
57
|
+
text: 'This is an error hint bubble',
|
|
58
|
+
type: HintBubbleType.Error,
|
|
59
|
+
size: HintBubbleSize.md,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
export const SmallError = {
|
|
63
|
+
args: {
|
|
64
|
+
text: 'This is an error hint bubble',
|
|
65
|
+
type: HintBubbleType.Error,
|
|
66
|
+
size: HintBubbleSize.sm,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
@@ -22,26 +22,3 @@ export interface SkeletonLoaderProps {
|
|
|
22
22
|
style?: React.CSSProperties;
|
|
23
23
|
}
|
|
24
24
|
export declare const SkeletonLoader: React.FC<SkeletonLoaderProps>;
|
|
25
|
-
export interface AgentCardSkeletonProps {
|
|
26
|
-
/**
|
|
27
|
-
* Width of the card
|
|
28
|
-
*/
|
|
29
|
-
width?: string | number;
|
|
30
|
-
/**
|
|
31
|
-
* Show date placeholder
|
|
32
|
-
*/
|
|
33
|
-
showDate?: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Show badges placeholder
|
|
36
|
-
*/
|
|
37
|
-
showBadges?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Show description placeholder
|
|
40
|
-
*/
|
|
41
|
-
showDescription?: boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Custom style for the skeleton
|
|
44
|
-
*/
|
|
45
|
-
style?: React.CSSProperties;
|
|
46
|
-
}
|
|
47
|
-
export declare const AgentCardSkeleton: React.FC<AgentCardSkeletonProps>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box } from '@mui/material';
|
|
3
3
|
export const SkeletonLoader = ({ width = '100%', height = '100%', borderRadius = 'var(--spacing-tokens-size-in-px-spacing-sm)', animationDuration = 1.5, style, }) => {
|
|
4
4
|
return (_jsx(Box, { width: width, height: height, borderRadius: borderRadius, sx: {
|
|
@@ -17,6 +17,3 @@ export const SkeletonLoader = ({ width = '100%', height = '100%', borderRadius =
|
|
|
17
17
|
}
|
|
18
18
|
` }) }));
|
|
19
19
|
};
|
|
20
|
-
export const AgentCardSkeleton = ({ width = '300px', showDate = false, showBadges = false, showDescription = false, style, }) => {
|
|
21
|
-
return (_jsxs(Box, { width: width, display: "flex", flexDirection: "column", borderRadius: "var(--spacing-tokens-size-in-px-spacing-md)", padding: "var(--spacing-tokens-size-in-px-spacing-spacing-xl)", gap: "var(--spacing-tokens-size-in-px-spacing-spacing-lg)", bgcolor: "var(--colors-light-background-bg-component)", boxShadow: `var(--global-shadows-shadow-xs-offset-x) var(--global-shadows-shadow-xs-offset-y) var(--global-shadows-shadow-xs-blur) var(--global-shadows-shadow-xs-spread) var(--global-shadows-shadow-xs-color)`, style: style, children: [_jsx(Box, { width: "100%", sx: { aspectRatio: 1 }, borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-sm)", overflow: "hidden", children: _jsx(SkeletonLoader, {}) }), _jsx(SkeletonLoader, { width: "70%", height: "24px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" }), showDate && (_jsx(SkeletonLoader, { width: "100%", height: "20px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" })), showBadges && (_jsxs(Box, { display: "flex", flexDirection: "row", gap: "var(--spacing-tokens-size-in-px-spacing-spacing-md)", children: [_jsx(SkeletonLoader, { width: "60px", height: "24px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" }), _jsx(SkeletonLoader, { width: "80px", height: "24px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" })] })), showDescription && (_jsxs(Box, { display: "flex", flexDirection: "column", gap: "var(--spacing-tokens-size-in-px-spacing-spacing-sm)", children: [_jsx(SkeletonLoader, { width: "100%", height: "16px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" }), _jsx(SkeletonLoader, { width: "80%", height: "16px", borderRadius: "var(--spacing-tokens-size-in-px-spacing-spacing-xs)" })] }))] }));
|
|
22
|
-
};
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { SkeletonLoader
|
|
2
|
+
import { SkeletonLoader } from './SkeletonLoader';
|
|
3
3
|
declare const meta: Meta<typeof SkeletonLoader>;
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof SkeletonLoader>;
|
|
6
6
|
export declare const Default: Story;
|
|
7
7
|
export declare const CustomAnimation: Story;
|
|
8
8
|
export declare const RoundedSkeleton: Story;
|
|
9
|
-
export declare const agentCardSkeletonMeta: Meta<typeof AgentCardSkeleton>;
|
|
10
|
-
export declare const AgentCardSkeletonStory: StoryObj<typeof AgentCardSkeleton>;
|
|
11
|
-
export declare const AgentCardSkeletonGrid: StoryObj<typeof AgentCardSkeleton>;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SkeletonLoader, AgentCardSkeleton } from './SkeletonLoader';
|
|
3
|
-
import { Box } from '@mui/material';
|
|
1
|
+
import { SkeletonLoader } from './SkeletonLoader';
|
|
4
2
|
const meta = {
|
|
5
3
|
title: 'Design System/Components/SkeletonLoader',
|
|
6
4
|
component: SkeletonLoader,
|
|
@@ -74,68 +72,3 @@ export const RoundedSkeleton = {
|
|
|
74
72
|
borderRadius: '50%',
|
|
75
73
|
},
|
|
76
74
|
};
|
|
77
|
-
// AgentCardSkeleton meta and stories
|
|
78
|
-
export const agentCardSkeletonMeta = {
|
|
79
|
-
title: 'Design System/Components/AgentCardSkeleton',
|
|
80
|
-
component: AgentCardSkeleton,
|
|
81
|
-
parameters: {
|
|
82
|
-
layout: 'centered',
|
|
83
|
-
},
|
|
84
|
-
tags: ['autodocs'],
|
|
85
|
-
argTypes: {
|
|
86
|
-
width: {
|
|
87
|
-
control: 'text',
|
|
88
|
-
description: 'Width of the card',
|
|
89
|
-
table: {
|
|
90
|
-
type: { summary: 'string | number' },
|
|
91
|
-
defaultValue: { summary: '300px' },
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
showDate: {
|
|
95
|
-
control: 'boolean',
|
|
96
|
-
description: 'Show date placeholder',
|
|
97
|
-
table: {
|
|
98
|
-
type: { summary: 'boolean' },
|
|
99
|
-
defaultValue: { summary: 'false' },
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
showBadges: {
|
|
103
|
-
control: 'boolean',
|
|
104
|
-
description: 'Show badges placeholder',
|
|
105
|
-
table: {
|
|
106
|
-
type: { summary: 'boolean' },
|
|
107
|
-
defaultValue: { summary: 'false' },
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
showDescription: {
|
|
111
|
-
control: 'boolean',
|
|
112
|
-
description: 'Show description placeholder',
|
|
113
|
-
table: {
|
|
114
|
-
type: { summary: 'boolean' },
|
|
115
|
-
defaultValue: { summary: 'false' },
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
style: {
|
|
119
|
-
control: 'object',
|
|
120
|
-
description: 'Custom style for the skeleton',
|
|
121
|
-
table: {
|
|
122
|
-
type: { summary: 'React.CSSProperties' },
|
|
123
|
-
defaultValue: { summary: 'undefined' },
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
};
|
|
128
|
-
// AgentCardSkeleton stories
|
|
129
|
-
export const AgentCardSkeletonStory = {
|
|
130
|
-
name: 'Agent Card Skeleton',
|
|
131
|
-
render: (args) => _jsx(AgentCardSkeleton, { ...args }),
|
|
132
|
-
args: {
|
|
133
|
-
showDate: true,
|
|
134
|
-
showBadges: true,
|
|
135
|
-
showDescription: true,
|
|
136
|
-
},
|
|
137
|
-
};
|
|
138
|
-
export const AgentCardSkeletonGrid = {
|
|
139
|
-
name: 'Agent Card Skeleton Grid',
|
|
140
|
-
render: () => (_jsxs(Box, { display: "flex", flexWrap: "wrap", gap: 2, children: [_jsx(AgentCardSkeleton, { showDate: true }), _jsx(AgentCardSkeleton, { showBadges: true }), _jsx(AgentCardSkeleton, { showDescription: true }), _jsx(AgentCardSkeleton, { showDate: true, showBadges: true, showDescription: true })] })),
|
|
141
|
-
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box } from '@mui/material';
|
|
4
|
+
import { Typography } from './Typography';
|
|
5
|
+
import { TypographySize, TypographyWeight } from './types/typography';
|
|
6
|
+
export const TextArea = ({ label, value, onChange, placeholder, hintText, errorText, disabled, maxLength = 256, showMaxLengthIndicator = false, numberOfRows = 5, }) => {
|
|
7
|
+
const [focused, setFocused] = useState(false);
|
|
8
|
+
return (_jsx(Box, { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-sm)', children: _jsxs(Box, { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-lg)', minWidth: '260px', children: [_jsx(Typography, { text: label, size: TypographySize.HeadingXS, weight: TypographyWeight.SemiBold }), _jsx(Box, { display: 'flex', flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', bgcolor: 'var(--colors-light-background-bg-component)', border: `1px solid ${errorText
|
|
9
|
+
? 'var(--colors-light-border-border-error)'
|
|
10
|
+
: focused
|
|
11
|
+
? 'var(--colors-light-border-border-component-active)'
|
|
12
|
+
: 'var(--colors-light-border-border-component)'}`, overflow: 'hidden', borderRadius: 'var(--spacing-tokens-size-in-px-spacing-spacing-xs)', padding: 'var(--spacing-tokens-size-in-px-spacing-spacing-lg)', width: '100%', children: _jsx("textarea", { value: value, onChange: (e) => onChange(e.target.value), placeholder: placeholder, disabled: disabled, rows: numberOfRows, style: {
|
|
13
|
+
border: 'none',
|
|
14
|
+
outline: 'none',
|
|
15
|
+
width: '100%',
|
|
16
|
+
height: '100%',
|
|
17
|
+
color: disabled
|
|
18
|
+
? 'var(--colors-light-text-text-disabled)'
|
|
19
|
+
: 'var(--colors-light-text-text-title)',
|
|
20
|
+
backgroundColor: 'transparent',
|
|
21
|
+
resize: 'none',
|
|
22
|
+
}, maxLength: maxLength, onFocus: () => setFocused(true), onBlur: () => setFocused(false) }) }), _jsxs(Box, { display: 'flex', flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', children: [errorText ? (_jsx(Typography, { text: errorText, size: TypographySize.TextS, weight: TypographyWeight.Regular, color: 'var(--colors-light-text-text-error)' })) : hintText ? (_jsx(Typography, { text: hintText, size: TypographySize.TextS, weight: TypographyWeight.Regular, color: 'var(--colors-light-text-text-subtle)' })) : (_jsx(Box, { style: { flex: 1 } })), showMaxLengthIndicator && maxLength && (_jsx(Typography, { text: `${maxLength - value.length}`, size: TypographySize.TextS, weight: TypographyWeight.Regular, color: 'var(--colors-light-text-text-subtle)', style: { alignSelf: 'flex-end' } }))] })] }) }));
|
|
23
|
+
};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import("react").FC<import("./types/text-area").TextAreaProps>;
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: string;
|
|
7
|
+
};
|
|
8
|
+
tags: string[];
|
|
9
|
+
argTypes: {
|
|
10
|
+
label: {
|
|
11
|
+
control: "text";
|
|
12
|
+
description: string;
|
|
13
|
+
table: {
|
|
14
|
+
type: {
|
|
15
|
+
summary: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
value: {
|
|
20
|
+
control: "text";
|
|
21
|
+
description: string;
|
|
22
|
+
table: {
|
|
23
|
+
type: {
|
|
24
|
+
summary: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
placeholder: {
|
|
29
|
+
control: "text";
|
|
30
|
+
description: string;
|
|
31
|
+
table: {
|
|
32
|
+
type: {
|
|
33
|
+
summary: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
hintText: {
|
|
38
|
+
control: "text";
|
|
39
|
+
description: string;
|
|
40
|
+
table: {
|
|
41
|
+
type: {
|
|
42
|
+
summary: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
errorText: {
|
|
47
|
+
control: "text";
|
|
48
|
+
description: string;
|
|
49
|
+
table: {
|
|
50
|
+
type: {
|
|
51
|
+
summary: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
disabled: {
|
|
56
|
+
control: "boolean";
|
|
57
|
+
description: string;
|
|
58
|
+
table: {
|
|
59
|
+
type: {
|
|
60
|
+
summary: string;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
onChange: {
|
|
65
|
+
description: string;
|
|
66
|
+
table: {
|
|
67
|
+
type: {
|
|
68
|
+
summary: string;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
maxLength: {
|
|
73
|
+
control: "number";
|
|
74
|
+
description: string;
|
|
75
|
+
table: {
|
|
76
|
+
type: {
|
|
77
|
+
summary: string;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
showMaxLengthIndicator: {
|
|
82
|
+
control: "boolean";
|
|
83
|
+
description: string;
|
|
84
|
+
table: {
|
|
85
|
+
type: {
|
|
86
|
+
summary: string;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
numberOfRows: {
|
|
91
|
+
control: "number";
|
|
92
|
+
description: string;
|
|
93
|
+
table: {
|
|
94
|
+
type: {
|
|
95
|
+
summary: string;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
export default meta;
|
|
102
|
+
type Story = StoryObj<typeof meta>;
|
|
103
|
+
export declare const Default: Story;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { TextArea } from './TextArea';
|
|
2
|
+
const meta = {
|
|
3
|
+
title: 'Design System/Components/TextArea',
|
|
4
|
+
component: TextArea,
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: 'centered',
|
|
7
|
+
},
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
argTypes: {
|
|
10
|
+
label: {
|
|
11
|
+
control: 'text',
|
|
12
|
+
description: 'The label of the text input',
|
|
13
|
+
table: {
|
|
14
|
+
type: { summary: 'string' },
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
value: {
|
|
18
|
+
control: 'text',
|
|
19
|
+
description: 'The value of the text input',
|
|
20
|
+
table: {
|
|
21
|
+
type: { summary: 'string' },
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
placeholder: {
|
|
25
|
+
control: 'text',
|
|
26
|
+
description: 'The placeholder of the text input',
|
|
27
|
+
table: {
|
|
28
|
+
type: { summary: 'string' },
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
hintText: {
|
|
32
|
+
control: 'text',
|
|
33
|
+
description: 'The hint text of the text input',
|
|
34
|
+
table: {
|
|
35
|
+
type: { summary: 'string' },
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
errorText: {
|
|
39
|
+
control: 'text',
|
|
40
|
+
description: 'The error text of the text input',
|
|
41
|
+
table: {
|
|
42
|
+
type: { summary: 'string' },
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
disabled: {
|
|
46
|
+
control: 'boolean',
|
|
47
|
+
description: 'Whether the text input is disabled',
|
|
48
|
+
table: {
|
|
49
|
+
type: { summary: 'boolean' },
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
onChange: {
|
|
53
|
+
description: 'The onChange function of the text input',
|
|
54
|
+
table: {
|
|
55
|
+
type: { summary: 'function' },
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
maxLength: {
|
|
59
|
+
control: 'number',
|
|
60
|
+
description: 'The max length of the text input',
|
|
61
|
+
table: {
|
|
62
|
+
type: { summary: 'number' },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
showMaxLengthIndicator: {
|
|
66
|
+
control: 'boolean',
|
|
67
|
+
description: 'Whether to show the max length indicator',
|
|
68
|
+
table: {
|
|
69
|
+
type: { summary: 'boolean' },
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
numberOfRows: {
|
|
73
|
+
control: 'number',
|
|
74
|
+
description: 'The number of rows of the text input',
|
|
75
|
+
table: {
|
|
76
|
+
type: { summary: 'number' },
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
export default meta;
|
|
82
|
+
export const Default = {
|
|
83
|
+
args: {
|
|
84
|
+
label: "Agent's name",
|
|
85
|
+
value: 'Anna',
|
|
86
|
+
onChange: () => { },
|
|
87
|
+
},
|
|
88
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box } from '@mui/material';
|
|
4
|
+
import { Typography } from './Typography';
|
|
5
|
+
import { TypographySize, TypographyWeight } from './types/typography';
|
|
6
|
+
export const TextInput = ({ label, value, onChange, placeholder, hintText, errorText, disabled, trailingText, }) => {
|
|
7
|
+
const [focused, setFocused] = useState(false);
|
|
8
|
+
return (_jsx(Box, { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-sm)', children: _jsxs(Box, { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-lg)', minWidth: '260px', children: [_jsx(Typography, { text: label, size: TypographySize.HeadingXS, weight: TypographyWeight.SemiBold }), _jsxs(Box, { display: 'flex', flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', bgcolor: 'var(--colors-light-background-bg-component)', border: errorText
|
|
9
|
+
? 'none'
|
|
10
|
+
: '1px solid var(--colors-light-border-border-component)', overflow: 'hidden', borderRadius: 'var(--spacing-tokens-size-in-px-spacing-spacing-xs)', children: [_jsx(Box, { display: 'flex', flexDirection: 'row', padding: 'var(--spacing-tokens-size-in-px-spacing-spacing-lg)', width: '100%', borderRadius: 'var(--spacing-tokens-size-in-px-spacing-spacing-xs) 0 0 var(--spacing-tokens-size-in-px-spacing-spacing-xs)', border: `${errorText
|
|
11
|
+
? '1px solid var(--colors-light-border-border-error)'
|
|
12
|
+
: focused
|
|
13
|
+
? '1px solid var(--colors-light-border-border-component-active)'
|
|
14
|
+
: 'transparent'}`, children: _jsx("input", { type: "text", value: value, onChange: (e) => onChange(e.target.value), placeholder: placeholder, disabled: disabled, style: {
|
|
15
|
+
border: 'none',
|
|
16
|
+
outline: 'none',
|
|
17
|
+
width: '100%',
|
|
18
|
+
color: disabled
|
|
19
|
+
? 'var(--colors-light-text-text-disabled)'
|
|
20
|
+
: 'var(--colors-light-text-text-title)',
|
|
21
|
+
backgroundColor: 'transparent',
|
|
22
|
+
}, onFocus: () => setFocused(true), onBlur: () => setFocused(false) }) }), trailingText && (_jsx(Box, { display: 'flex', alignItems: 'center', height: '100%', padding: 'var(--spacing-tokens-size-in-px-spacing-spacing-lg)', borderLeft: '1px solid var(--colors-light-border-border-component)', children: _jsx(Typography, { text: trailingText, size: TypographySize.TextS, weight: TypographyWeight.Regular, color: 'var(--colors-light-text-text-paragraph)' }) }))] }), errorText && (_jsx(Typography, { text: errorText, size: TypographySize.TextS, weight: TypographyWeight.Regular, color: 'var(--colors-light-text-text-error)' })), hintText && !errorText && (_jsx(Typography, { text: hintText, size: TypographySize.TextS, weight: TypographyWeight.Regular, color: 'var(--colors-light-text-text-subtle)' }))] }) }));
|
|
23
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import("react").FC<import("./types/text-input").TextInputProps>;
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: string;
|
|
7
|
+
};
|
|
8
|
+
tags: string[];
|
|
9
|
+
argTypes: {
|
|
10
|
+
label: {
|
|
11
|
+
control: "text";
|
|
12
|
+
description: string;
|
|
13
|
+
table: {
|
|
14
|
+
type: {
|
|
15
|
+
summary: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
value: {
|
|
20
|
+
control: "text";
|
|
21
|
+
description: string;
|
|
22
|
+
table: {
|
|
23
|
+
type: {
|
|
24
|
+
summary: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
placeholder: {
|
|
29
|
+
control: "text";
|
|
30
|
+
description: string;
|
|
31
|
+
table: {
|
|
32
|
+
type: {
|
|
33
|
+
summary: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
hintText: {
|
|
38
|
+
control: "text";
|
|
39
|
+
description: string;
|
|
40
|
+
table: {
|
|
41
|
+
type: {
|
|
42
|
+
summary: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
errorText: {
|
|
47
|
+
control: "text";
|
|
48
|
+
description: string;
|
|
49
|
+
table: {
|
|
50
|
+
type: {
|
|
51
|
+
summary: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
disabled: {
|
|
56
|
+
control: "boolean";
|
|
57
|
+
description: string;
|
|
58
|
+
table: {
|
|
59
|
+
type: {
|
|
60
|
+
summary: string;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
trailingText: {
|
|
65
|
+
control: "text";
|
|
66
|
+
description: string;
|
|
67
|
+
table: {
|
|
68
|
+
type: {
|
|
69
|
+
summary: string;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
onChange: {
|
|
74
|
+
description: string;
|
|
75
|
+
table: {
|
|
76
|
+
type: {
|
|
77
|
+
summary: string;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
export default meta;
|
|
84
|
+
type Story = StoryObj<typeof meta>;
|
|
85
|
+
export declare const Default: Story;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { TextInput } from './TextInput';
|
|
2
|
+
const meta = {
|
|
3
|
+
title: 'Design System/Components/TextInput',
|
|
4
|
+
component: TextInput,
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: 'centered',
|
|
7
|
+
},
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
argTypes: {
|
|
10
|
+
label: {
|
|
11
|
+
control: 'text',
|
|
12
|
+
description: 'The label of the text input',
|
|
13
|
+
table: {
|
|
14
|
+
type: { summary: 'string' },
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
value: {
|
|
18
|
+
control: 'text',
|
|
19
|
+
description: 'The value of the text input',
|
|
20
|
+
table: {
|
|
21
|
+
type: { summary: 'string' },
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
placeholder: {
|
|
25
|
+
control: 'text',
|
|
26
|
+
description: 'The placeholder of the text input',
|
|
27
|
+
table: {
|
|
28
|
+
type: { summary: 'string' },
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
hintText: {
|
|
32
|
+
control: 'text',
|
|
33
|
+
description: 'The hint text of the text input',
|
|
34
|
+
table: {
|
|
35
|
+
type: { summary: 'string' },
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
errorText: {
|
|
39
|
+
control: 'text',
|
|
40
|
+
description: 'The error text of the text input',
|
|
41
|
+
table: {
|
|
42
|
+
type: { summary: 'string' },
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
disabled: {
|
|
46
|
+
control: 'boolean',
|
|
47
|
+
description: 'Whether the text input is disabled',
|
|
48
|
+
table: {
|
|
49
|
+
type: { summary: 'boolean' },
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
trailingText: {
|
|
53
|
+
control: 'text',
|
|
54
|
+
description: 'The trailing text of the text input',
|
|
55
|
+
table: {
|
|
56
|
+
type: { summary: 'string' },
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
onChange: {
|
|
60
|
+
description: 'The onChange function of the text input',
|
|
61
|
+
table: {
|
|
62
|
+
type: { summary: 'function' },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
export default meta;
|
|
68
|
+
export const Default = {
|
|
69
|
+
args: {
|
|
70
|
+
label: "Agent's name",
|
|
71
|
+
value: 'Anna',
|
|
72
|
+
onChange: () => { },
|
|
73
|
+
},
|
|
74
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare enum HintBubbleType {
|
|
2
|
+
Info = "Info",
|
|
3
|
+
Error = "Error"
|
|
4
|
+
}
|
|
5
|
+
export declare enum HintBubbleSize {
|
|
6
|
+
md = "md",
|
|
7
|
+
sm = "sm"
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* HintBubble component props
|
|
11
|
+
*/
|
|
12
|
+
export type HintBubbleProps = {
|
|
13
|
+
/** Type variant of the hint bubble */
|
|
14
|
+
type?: HintBubbleType;
|
|
15
|
+
/** Size variant of the hint bubble */
|
|
16
|
+
size?: HintBubbleSize;
|
|
17
|
+
/** Text of the hint bubble */
|
|
18
|
+
text: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Props for the Components wrapper
|
|
22
|
+
*/
|
|
23
|
+
export interface ComponentsProps {
|
|
24
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var HintBubbleType;
|
|
2
|
+
(function (HintBubbleType) {
|
|
3
|
+
HintBubbleType["Info"] = "Info";
|
|
4
|
+
HintBubbleType["Error"] = "Error";
|
|
5
|
+
})(HintBubbleType || (HintBubbleType = {}));
|
|
6
|
+
export var HintBubbleSize;
|
|
7
|
+
(function (HintBubbleSize) {
|
|
8
|
+
HintBubbleSize["md"] = "md";
|
|
9
|
+
HintBubbleSize["sm"] = "sm";
|
|
10
|
+
})(HintBubbleSize || (HintBubbleSize = {}));
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text area component props
|
|
3
|
+
*/
|
|
4
|
+
export type TextAreaProps = {
|
|
5
|
+
/** Text area label */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Text area value */
|
|
8
|
+
value: string;
|
|
9
|
+
/** Text area onChange */
|
|
10
|
+
onChange: (value: string) => void;
|
|
11
|
+
/** Text input placeholder */
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
/** Text input hint */
|
|
14
|
+
hintText?: string;
|
|
15
|
+
/** Text input error */
|
|
16
|
+
errorText?: string;
|
|
17
|
+
/** Text input disabled */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
/** Text input max length */
|
|
20
|
+
maxLength?: number;
|
|
21
|
+
/** Text input show max length indicator */
|
|
22
|
+
showMaxLengthIndicator?: boolean;
|
|
23
|
+
/** Text input number of rows */
|
|
24
|
+
numberOfRows?: number;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Props for the Components wrapper
|
|
28
|
+
*/
|
|
29
|
+
export interface ComponentsProps {
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text input component props
|
|
3
|
+
*/
|
|
4
|
+
export type TextInputProps = {
|
|
5
|
+
/** Text input label */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Text input value */
|
|
8
|
+
value: string;
|
|
9
|
+
/** Text input onChange */
|
|
10
|
+
onChange: (value: string) => void;
|
|
11
|
+
/** Text input placeholder */
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
/** Text input hint */
|
|
14
|
+
hintText?: string;
|
|
15
|
+
/** Text input error */
|
|
16
|
+
errorText?: string;
|
|
17
|
+
/** Text input disabled */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
/** Text input trailing text */
|
|
20
|
+
trailingText?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Props for the Components wrapper
|
|
24
|
+
*/
|
|
25
|
+
export interface ComponentsProps {
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|