tonkean-tcltext 1.0.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/README.md +114 -0
- package/dist/components/ButtonToken.d.ts +17 -0
- package/dist/components/ButtonToken.d.ts.map +1 -0
- package/dist/components/ButtonToken.js +234 -0
- package/dist/components/ButtonToken.js.map +1 -0
- package/dist/components/ColorSelectToken.d.ts +17 -0
- package/dist/components/ColorSelectToken.d.ts.map +1 -0
- package/dist/components/ColorSelectToken.js +499 -0
- package/dist/components/ColorSelectToken.js.map +1 -0
- package/dist/components/ColorSwatch.d.ts +9 -0
- package/dist/components/ColorSwatch.d.ts.map +1 -0
- package/dist/components/ColorSwatch.js +12 -0
- package/dist/components/ColorSwatch.js.map +1 -0
- package/dist/components/IconItem.d.ts +17 -0
- package/dist/components/IconItem.d.ts.map +1 -0
- package/dist/components/IconItem.js +64 -0
- package/dist/components/IconItem.js.map +1 -0
- package/dist/components/InputToken.d.ts +15 -0
- package/dist/components/InputToken.d.ts.map +1 -0
- package/dist/components/InputToken.js +203 -0
- package/dist/components/InputToken.js.map +1 -0
- package/dist/components/MultiSelectToken.d.ts +18 -0
- package/dist/components/MultiSelectToken.d.ts.map +1 -0
- package/dist/components/MultiSelectToken.js +568 -0
- package/dist/components/MultiSelectToken.js.map +1 -0
- package/dist/components/NumericInputToken.d.ts +16 -0
- package/dist/components/NumericInputToken.d.ts.map +1 -0
- package/dist/components/NumericInputToken.js +322 -0
- package/dist/components/NumericInputToken.js.map +1 -0
- package/dist/components/SelectToken.d.ts +18 -0
- package/dist/components/SelectToken.d.ts.map +1 -0
- package/dist/components/SelectToken.js +357 -0
- package/dist/components/SelectToken.js.map +1 -0
- package/dist/components/TCLText.d.ts +28 -0
- package/dist/components/TCLText.d.ts.map +1 -0
- package/dist/components/TCLText.js +89 -0
- package/dist/components/TCLText.js.map +1 -0
- package/dist/components/hooks/useTooltipOnTruncation.d.ts +20 -0
- package/dist/components/hooks/useTooltipOnTruncation.d.ts.map +1 -0
- package/dist/components/hooks/useTooltipOnTruncation.js +62 -0
- package/dist/components/hooks/useTooltipOnTruncation.js.map +1 -0
- package/dist/components/iconLibrary.d.ts +3 -0
- package/dist/components/iconLibrary.d.ts.map +1 -0
- package/dist/components/iconLibrary.js +58 -0
- package/dist/components/iconLibrary.js.map +1 -0
- package/dist/components/iconLoader.d.ts +5 -0
- package/dist/components/iconLoader.d.ts.map +1 -0
- package/dist/components/iconLoader.js +113 -0
- package/dist/components/iconLoader.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/tokens/buttons.json +198 -0
- package/dist/tokens/colors.json +93 -0
- package/dist/tokens/index.d.ts +7 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +6 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/inputs.json +304 -0
- package/dist/tokens/types.d.ts +9 -0
- package/dist/tokens/types.d.ts.map +1 -0
- package/dist/tokens/types.js +2 -0
- package/dist/tokens/types.js.map +1 -0
- package/dist/tokens/typography.json +37 -0
- package/package.json +59 -0
- package/src/styles/tokens.css +274 -0
package/README.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Tonkean Design System
|
|
2
|
+
|
|
3
|
+
Design system components and tokens for Tonkean app, including the TCLText component with truncation and tooltip functionality.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install tonkean-design-system
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### TCLText Component
|
|
14
|
+
|
|
15
|
+
The TCLText component provides text truncation with automatic tooltip display on hover.
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { TCLText, TCLFontSize } from 'tonkean-design-system';
|
|
19
|
+
import 'tonkean-design-system/tokens.css';
|
|
20
|
+
|
|
21
|
+
function App() {
|
|
22
|
+
return (
|
|
23
|
+
<div style={{ width: '200px' }}>
|
|
24
|
+
<TCLText
|
|
25
|
+
text="This is a very long text that will be truncated and show a tooltip on hover"
|
|
26
|
+
fontSize={TCLFontSize.NORMAL}
|
|
27
|
+
/>
|
|
28
|
+
</div>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Using Storybook Typography Tokens Directly
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
import { TCLText } from 'tonkean-design-system';
|
|
37
|
+
|
|
38
|
+
function App() {
|
|
39
|
+
return (
|
|
40
|
+
<TCLText
|
|
41
|
+
text="Sample text"
|
|
42
|
+
fontSize="base" // Can use: 'xs', 'sm', 'base', 'lg', 'xl', '2xl'
|
|
43
|
+
fontFamily="roboto" // or 'lato'
|
|
44
|
+
color="#000000"
|
|
45
|
+
/>
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Importing Tokens
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
import { colors, typography, buttons, inputs } from 'tonkean-design-system';
|
|
54
|
+
|
|
55
|
+
// Access token values
|
|
56
|
+
const primaryColor = colors.colors.purple[600];
|
|
57
|
+
const baseFontSize = typography.typography.fontSizes.base;
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### CSS Tokens
|
|
61
|
+
|
|
62
|
+
Import the CSS file to use CSS variables:
|
|
63
|
+
|
|
64
|
+
```tsx
|
|
65
|
+
import 'tonkean-design-system/tokens.css';
|
|
66
|
+
|
|
67
|
+
// Then use in your CSS:
|
|
68
|
+
.my-element {
|
|
69
|
+
color: var(--color-purple-600);
|
|
70
|
+
font-size: var(--font-size-base);
|
|
71
|
+
font-family: var(--font-family-roboto);
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## TCLText Props
|
|
76
|
+
|
|
77
|
+
| Prop | Type | Default | Description |
|
|
78
|
+
|------|------|---------|-------------|
|
|
79
|
+
| `text` | `string` | - | Text content to display |
|
|
80
|
+
| `children` | `ReactNode` | - | Alternative to text prop |
|
|
81
|
+
| `fontSize` | `TCLFontSize \| 'xs' \| 'sm' \| 'base' \| 'lg' \| 'xl' \| '2xl'` | `'base'` | Font size variant |
|
|
82
|
+
| `fontFamily` | `'roboto' \| 'lato'` | `'roboto'` | Font family |
|
|
83
|
+
| `color` | `string` | `'var(--color-gray-900)'` | Text color |
|
|
84
|
+
| `className` | `string` | `''` | Additional CSS classes |
|
|
85
|
+
| `tooltipConfig` | `object` | - | Tooltip configuration |
|
|
86
|
+
| `tooltipConfig.margin` | `number` | `10` | Tooltip margin |
|
|
87
|
+
| `tooltipConfig.maxWidth` | `number` | `300` | Maximum tooltip width |
|
|
88
|
+
|
|
89
|
+
## TCLFontSize Enum
|
|
90
|
+
|
|
91
|
+
- `TCLFontSize.NORMAL` - Maps to 'base' (14px)
|
|
92
|
+
- `TCLFontSize.TEXT_MEDIUM` - Maps to 'base' (14px)
|
|
93
|
+
- `TCLFontSize.MSMALL` - Maps to 'sm' (12px)
|
|
94
|
+
- `TCLFontSize.SMALL` - Maps to 'sm' (12px)
|
|
95
|
+
- `TCLFontSize.XSMALL` - Maps to 'xs' (10px)
|
|
96
|
+
- `TCLFontSize.MEDIUM` - Maps to 'lg' (16px)
|
|
97
|
+
- `TCLFontSize.LARGE` - Maps to 'xl' (20px)
|
|
98
|
+
|
|
99
|
+
## Features
|
|
100
|
+
|
|
101
|
+
- ✅ Automatic text truncation detection
|
|
102
|
+
- ✅ Tooltip on hover for truncated text
|
|
103
|
+
- ✅ Uses Storybook design tokens
|
|
104
|
+
- ✅ TypeScript support
|
|
105
|
+
- ✅ Fully typed
|
|
106
|
+
|
|
107
|
+
## Requirements
|
|
108
|
+
|
|
109
|
+
- React 18.2.0 or higher
|
|
110
|
+
- React DOM 18.2.0 or higher
|
|
111
|
+
|
|
112
|
+
## License
|
|
113
|
+
|
|
114
|
+
MIT
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { buttons } from '../tokens';
|
|
3
|
+
import { IconData } from './IconItem';
|
|
4
|
+
interface ButtonTokenProps {
|
|
5
|
+
variant: keyof typeof buttons.buttons.variants;
|
|
6
|
+
size: 'small' | 'regular' | 'large';
|
|
7
|
+
state: 'default' | 'hover' | 'disabled';
|
|
8
|
+
showLabel?: boolean;
|
|
9
|
+
showTokens?: boolean;
|
|
10
|
+
iconPosition?: 'lead' | 'end' | 'both' | 'none';
|
|
11
|
+
label?: string;
|
|
12
|
+
leadIcon?: IconData | null;
|
|
13
|
+
endIcon?: IconData | null;
|
|
14
|
+
}
|
|
15
|
+
export declare const ButtonToken: React.FC<ButtonTokenProps>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=ButtonToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonToken.d.ts","sourceRoot":"","sources":["../../src/components/ButtonToken.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOtC,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/C,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC3B;AAoCD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoTlD,CAAC"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { buttons, colors } from '../tokens';
|
|
4
|
+
import { loadAllIcons } from './iconLoader';
|
|
5
|
+
// Load all icons once at module level and get default circle icon
|
|
6
|
+
const allIconsCache = loadAllIcons();
|
|
7
|
+
const defaultCircleIcon = allIconsCache.find(icon => icon.name === 'circle') || null;
|
|
8
|
+
// Helper function to resolve color references from tokens
|
|
9
|
+
const resolveColor = (colorRef) => {
|
|
10
|
+
// If it's already a hex color or CSS value, return as-is
|
|
11
|
+
if (colorRef.startsWith('#') || colorRef === 'transparent' || colorRef === 'none') {
|
|
12
|
+
return colorRef;
|
|
13
|
+
}
|
|
14
|
+
// Parse reference like "purple.600" or "basic.white"
|
|
15
|
+
const parts = colorRef.split('.');
|
|
16
|
+
if (parts.length === 2) {
|
|
17
|
+
const [category, shade] = parts;
|
|
18
|
+
const colorCategory = colors.colors[category];
|
|
19
|
+
if (colorCategory && typeof colorCategory === 'object') {
|
|
20
|
+
const colorValue = colorCategory[shade];
|
|
21
|
+
if (colorValue) {
|
|
22
|
+
return colorValue;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Fallback: return the original reference if not found
|
|
27
|
+
return colorRef;
|
|
28
|
+
};
|
|
29
|
+
// Helper function to resolve border string (may contain color references)
|
|
30
|
+
const resolveBorder = (border) => {
|
|
31
|
+
if (border === 'none' || border === 'transparent') {
|
|
32
|
+
return border;
|
|
33
|
+
}
|
|
34
|
+
// Handle "1px solid gray.300" format
|
|
35
|
+
return border.replace(/(\w+\.\w+)/g, (match) => resolveColor(match));
|
|
36
|
+
};
|
|
37
|
+
export const ButtonToken = ({ variant, size, state, showLabel = true, showTokens = false, iconPosition = 'lead', label = 'Button', leadIcon, endIcon, }) => {
|
|
38
|
+
const variantTokens = buttons.buttons.variants[variant];
|
|
39
|
+
const stateTokens = variantTokens[state];
|
|
40
|
+
const sizeTokens = buttons.buttons.sizes[size];
|
|
41
|
+
// Resolve colors from token references
|
|
42
|
+
const resolvedBackground = resolveColor(stateTokens.background);
|
|
43
|
+
const resolvedText = resolveColor(stateTokens.text);
|
|
44
|
+
const resolvedIcon = resolveColor(stateTokens.icon);
|
|
45
|
+
const resolvedBorder = resolveBorder(stateTokens.border);
|
|
46
|
+
// Calculate icon size based on button size (proportional to font size)
|
|
47
|
+
const iconSize = size === 'small' ? '12px' : size === 'regular' ? '14px' : '16px';
|
|
48
|
+
const chevronSize = size === 'small' ? '10px' : size === 'regular' ? '12px' : '14px';
|
|
49
|
+
// For multiaction, we need special styling with two sections
|
|
50
|
+
const isMultiaction = variant === 'multiaction';
|
|
51
|
+
// For multiaction, we need to resolve purple colors for borders
|
|
52
|
+
const purple500 = resolveColor('purple.500');
|
|
53
|
+
const purple600 = resolveColor('purple.600');
|
|
54
|
+
const buttonStyle = {
|
|
55
|
+
padding: isMultiaction ? '0' : `${sizeTokens.padding.vertical} ${sizeTokens.padding.horizontal}`,
|
|
56
|
+
fontSize: sizeTokens.fontSize,
|
|
57
|
+
minHeight: sizeTokens.minHeight,
|
|
58
|
+
borderRadius: isMultiaction ? '0' : buttons.buttons.borderRadius,
|
|
59
|
+
border: isMultiaction ? 'none' : resolvedBorder,
|
|
60
|
+
backgroundColor: isMultiaction ? 'transparent' : resolvedBackground,
|
|
61
|
+
color: resolvedText,
|
|
62
|
+
cursor: state === 'disabled' ? 'not-allowed' : 'pointer',
|
|
63
|
+
textDecoration: ('textDecoration' in stateTokens ? stateTokens.textDecoration : undefined) || 'none',
|
|
64
|
+
display: 'inline-flex',
|
|
65
|
+
alignItems: 'center',
|
|
66
|
+
justifyContent: isMultiaction ? 'stretch' : 'center',
|
|
67
|
+
gap: isMultiaction ? '0' : '6px',
|
|
68
|
+
fontFamily: 'var(--font-family-roboto)',
|
|
69
|
+
fontWeight: 'var(--font-weight-medium)',
|
|
70
|
+
transition: 'all 0.2s ease',
|
|
71
|
+
opacity: state === 'disabled' ? 0.6 : 1,
|
|
72
|
+
lineHeight: '1',
|
|
73
|
+
overflow: 'hidden',
|
|
74
|
+
};
|
|
75
|
+
// Helper function to render icon (from library or default circle)
|
|
76
|
+
const renderIcon = (iconData, position) => {
|
|
77
|
+
// Use circle icon as default if no icon is provided
|
|
78
|
+
const iconToRender = iconData || defaultCircleIcon;
|
|
79
|
+
if (!iconToRender) {
|
|
80
|
+
// Fallback: render a simple circle if circle icon not found
|
|
81
|
+
const iconStyle = {
|
|
82
|
+
width: iconSize,
|
|
83
|
+
height: iconSize,
|
|
84
|
+
backgroundColor: isMultiaction ? 'transparent' : resolvedIcon,
|
|
85
|
+
border: isMultiaction ? `1px solid ${resolvedIcon}` : 'none',
|
|
86
|
+
borderRadius: '50%',
|
|
87
|
+
display: 'inline-block',
|
|
88
|
+
flexShrink: 0,
|
|
89
|
+
};
|
|
90
|
+
return _jsx("span", { style: iconStyle });
|
|
91
|
+
}
|
|
92
|
+
// Render icon from library (SVG string or React component)
|
|
93
|
+
if (iconToRender.svg) {
|
|
94
|
+
// Process SVG string from icon tokens - update size, color, and stroke width
|
|
95
|
+
let processedSvg = iconToRender.svg;
|
|
96
|
+
// Update width and height attributes
|
|
97
|
+
processedSvg = processedSvg.replace(/width="[^"]*"/gi, `width="${iconSize}"`);
|
|
98
|
+
processedSvg = processedSvg.replace(/height="[^"]*"/gi, `height="${iconSize}"`);
|
|
99
|
+
// If SVG doesn't have width/height, add them
|
|
100
|
+
if (!processedSvg.match(/width\s*=/i)) {
|
|
101
|
+
processedSvg = processedSvg.replace(/<svg([^>]*?)>/i, (match, attrs) => `<svg${attrs} width="${iconSize}" height="${iconSize}">`);
|
|
102
|
+
}
|
|
103
|
+
// Replace currentColor with actual icon color
|
|
104
|
+
processedSvg = processedSvg.replace(/stroke="currentColor"/gi, `stroke="${resolvedIcon}"`);
|
|
105
|
+
processedSvg = processedSvg.replace(/fill="currentColor"/gi, `fill="${resolvedIcon}"`);
|
|
106
|
+
// Set stroke-width to 2px for all stroke elements
|
|
107
|
+
processedSvg = processedSvg.replace(/stroke-width="[^"]*"/gi, 'stroke-width="2"');
|
|
108
|
+
processedSvg = processedSvg.replace(/strokeWidth="[^"]*"/gi, 'strokeWidth="2"');
|
|
109
|
+
// Add stroke-width="2" to all elements that have stroke but no stroke-width
|
|
110
|
+
processedSvg = processedSvg.replace(/(<(path|line|polyline|polygon|circle|ellipse|rect)[^>]*stroke="[^"]*"[^>]*?)(?![^>]*stroke-width)(?![^>]*strokeWidth)([^>]*>)/gi, (match, before, tag, after) => {
|
|
111
|
+
return `${before} stroke-width="2"${after}`;
|
|
112
|
+
});
|
|
113
|
+
// Render SVG string from icon tokens
|
|
114
|
+
return (_jsx("span", { style: {
|
|
115
|
+
width: iconSize,
|
|
116
|
+
height: iconSize,
|
|
117
|
+
display: 'inline-flex',
|
|
118
|
+
alignItems: 'center',
|
|
119
|
+
justifyContent: 'center',
|
|
120
|
+
flexShrink: 0,
|
|
121
|
+
color: resolvedIcon,
|
|
122
|
+
lineHeight: 0,
|
|
123
|
+
verticalAlign: 'middle',
|
|
124
|
+
}, dangerouslySetInnerHTML: { __html: processedSvg } }));
|
|
125
|
+
}
|
|
126
|
+
if (iconToRender.component) {
|
|
127
|
+
// Render React component
|
|
128
|
+
return (_jsx("span", { style: {
|
|
129
|
+
width: iconSize,
|
|
130
|
+
height: iconSize,
|
|
131
|
+
display: 'inline-flex',
|
|
132
|
+
alignItems: 'center',
|
|
133
|
+
justifyContent: 'center',
|
|
134
|
+
flexShrink: 0,
|
|
135
|
+
color: resolvedIcon,
|
|
136
|
+
}, children: React.cloneElement(iconToRender.component, {
|
|
137
|
+
width: iconSize,
|
|
138
|
+
height: iconSize,
|
|
139
|
+
style: { color: resolvedIcon },
|
|
140
|
+
}) }));
|
|
141
|
+
}
|
|
142
|
+
// Fallback to circle if icon has no component
|
|
143
|
+
const iconStyle = {
|
|
144
|
+
width: iconSize,
|
|
145
|
+
height: iconSize,
|
|
146
|
+
backgroundColor: isMultiaction ? 'transparent' : resolvedIcon,
|
|
147
|
+
border: isMultiaction ? `1px solid ${resolvedIcon}` : 'none',
|
|
148
|
+
borderRadius: '50%',
|
|
149
|
+
display: 'inline-block',
|
|
150
|
+
flexShrink: 0,
|
|
151
|
+
};
|
|
152
|
+
return _jsx("span", { style: iconStyle });
|
|
153
|
+
};
|
|
154
|
+
// Determine if icon should be shown and where
|
|
155
|
+
const showIcon = iconPosition !== 'none';
|
|
156
|
+
const iconAtLead = (iconPosition === 'lead' || iconPosition === 'both') || (isMultiaction && iconPosition !== 'end');
|
|
157
|
+
const iconAtEnd = (iconPosition === 'end' || iconPosition === 'both') && !isMultiaction;
|
|
158
|
+
// Get hover and disabled colors for multiaction
|
|
159
|
+
const hoverBackground = isMultiaction ? resolveColor('purple.700') : null;
|
|
160
|
+
const disabledBackground = isMultiaction ? resolveColor(variantTokens.disabled.background) : null;
|
|
161
|
+
const disabledBorder = isMultiaction ? resolveColor(variantTokens.disabled.text) : null;
|
|
162
|
+
// Main button content wrapper for multiaction - left piece with border-radius: 4px 0 0 4px
|
|
163
|
+
const mainButtonContent = isMultiaction ? (_jsxs("div", { className: state === 'default' ? 'multiaction-left-default' : state === 'hover' ? 'multiaction-left-hover' : 'multiaction-left-disabled', style: {
|
|
164
|
+
display: 'inline-flex',
|
|
165
|
+
alignItems: 'center',
|
|
166
|
+
gap: '6px',
|
|
167
|
+
padding: `${sizeTokens.padding.vertical} ${sizeTokens.padding.horizontal}`,
|
|
168
|
+
flex: '1',
|
|
169
|
+
borderRadius: '4px 0 0 4px',
|
|
170
|
+
border: `1px solid ${state === 'disabled' ? disabledBorder : purple600}`,
|
|
171
|
+
background: state === 'disabled' ? disabledBackground : state === 'hover' ? hoverBackground : purple500,
|
|
172
|
+
minHeight: sizeTokens.minHeight,
|
|
173
|
+
height: sizeTokens.minHeight,
|
|
174
|
+
boxSizing: 'border-box',
|
|
175
|
+
}, children: [showIcon && iconAtLead && renderIcon(leadIcon, 'lead'), _jsx("span", { children: label }), showIcon && iconAtEnd && renderIcon(endIcon || leadIcon, 'end')] })) : (_jsxs(_Fragment, { children: [showIcon && iconAtLead && renderIcon(leadIcon, 'lead'), _jsx("span", { children: label }), showIcon && iconAtEnd && renderIcon(endIcon || leadIcon, 'end')] }));
|
|
176
|
+
// Trailing chevron for multiaction variant - right piece with border-radius: 0 4px 4px 0
|
|
177
|
+
const dropdownIcon = isMultiaction ? (_jsx("div", { className: state === 'default' ? 'multiaction-right-default' : state === 'hover' ? 'multiaction-right-hover' : 'multiaction-right-disabled', style: {
|
|
178
|
+
display: 'inline-flex',
|
|
179
|
+
alignItems: 'center',
|
|
180
|
+
justifyContent: 'center',
|
|
181
|
+
padding: `${sizeTokens.padding.vertical} ${size === 'small' ? '4px' : size === 'regular' ? '4px' : '6px'}`,
|
|
182
|
+
flexShrink: 0,
|
|
183
|
+
minHeight: sizeTokens.minHeight,
|
|
184
|
+
height: sizeTokens.minHeight,
|
|
185
|
+
borderRadius: '0 4px 4px 0',
|
|
186
|
+
borderTop: `1px solid ${state === 'disabled' ? disabledBorder : purple600}`,
|
|
187
|
+
borderRight: `1px solid ${state === 'disabled' ? disabledBorder : purple600}`,
|
|
188
|
+
borderBottom: `1px solid ${state === 'disabled' ? disabledBorder : purple600}`,
|
|
189
|
+
borderLeft: 'none',
|
|
190
|
+
background: state === 'disabled' ? disabledBackground : state === 'hover' ? hoverBackground : purple500,
|
|
191
|
+
boxSizing: 'border-box',
|
|
192
|
+
}, children: _jsx("svg", { width: chevronSize, height: chevronSize, viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { display: 'block' }, children: _jsx("path", { d: "M2 4L6 8L10 4", stroke: resolvedIcon, strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) })) : null;
|
|
193
|
+
return (_jsxs("div", { style: { marginBottom: '1rem' }, children: [showLabel && (_jsxs("div", { style: { fontSize: '0.875rem', color: '#6b7280', marginBottom: '0.5rem', fontFamily: 'monospace' }, children: [variant, "-", size, "-", state] })), _jsxs("button", { style: buttonStyle, disabled: state === 'disabled', onMouseEnter: (e) => {
|
|
194
|
+
if (state === 'default') {
|
|
195
|
+
if (isMultiaction) {
|
|
196
|
+
// Update both pieces for multiaction
|
|
197
|
+
const leftPiece = e.currentTarget.querySelector('.multiaction-left-default');
|
|
198
|
+
const rightPiece = e.currentTarget.querySelector('.multiaction-right-default');
|
|
199
|
+
if (leftPiece) {
|
|
200
|
+
leftPiece.style.background = hoverBackground || purple500;
|
|
201
|
+
}
|
|
202
|
+
if (rightPiece) {
|
|
203
|
+
rightPiece.style.background = hoverBackground || purple500;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
const hoverTokens = variantTokens.hover;
|
|
208
|
+
e.currentTarget.style.backgroundColor = resolveColor(hoverTokens.background);
|
|
209
|
+
e.currentTarget.style.color = resolveColor(hoverTokens.text);
|
|
210
|
+
e.currentTarget.style.border = resolveBorder(hoverTokens.border);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}, onMouseLeave: (e) => {
|
|
214
|
+
if (state === 'default') {
|
|
215
|
+
if (isMultiaction) {
|
|
216
|
+
// Reset both pieces for multiaction
|
|
217
|
+
const leftPiece = e.currentTarget.querySelector('.multiaction-left-default');
|
|
218
|
+
const rightPiece = e.currentTarget.querySelector('.multiaction-right-default');
|
|
219
|
+
if (leftPiece) {
|
|
220
|
+
leftPiece.style.background = purple500;
|
|
221
|
+
}
|
|
222
|
+
if (rightPiece) {
|
|
223
|
+
rightPiece.style.background = purple500;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
e.currentTarget.style.backgroundColor = resolvedBackground;
|
|
228
|
+
e.currentTarget.style.color = resolvedText;
|
|
229
|
+
e.currentTarget.style.border = resolvedBorder;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}, children: [mainButtonContent, dropdownIcon] }), showTokens && (_jsxs("div", { style: { marginTop: '0.5rem', fontSize: '0.75rem', color: '#6b7280', fontFamily: 'monospace' }, children: [_jsxs("div", { children: ["Background: ", stateTokens.background] }), _jsxs("div", { children: ["Text: ", stateTokens.text] }), _jsxs("div", { children: ["Icon: ", stateTokens.icon] }), _jsxs("div", { children: ["Border: ", stateTokens.border] }), 'textDecoration' in stateTokens && stateTokens.textDecoration && _jsxs("div", { children: ["Decoration: ", stateTokens.textDecoration] }), _jsx("div", { style: { marginTop: '0.25rem', color: '#9ca3af', fontSize: '0.7rem' }, children: `CSS: var(--button-${variant}-${state}-background), var(--button-${variant}-${state}-text), etc.` })] }))] }));
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=ButtonToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonToken.js","sourceRoot":"","sources":["../../src/components/ButtonToken.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ColorSelectTokenProps {
|
|
3
|
+
state: 'empty' | 'focus' | 'filled' | 'disabled' | 'hover' | 'open';
|
|
4
|
+
showLabel?: boolean;
|
|
5
|
+
label?: string;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
value?: string;
|
|
8
|
+
selectedColor?: string | null;
|
|
9
|
+
options?: Array<{
|
|
10
|
+
label: string;
|
|
11
|
+
color: string;
|
|
12
|
+
}>;
|
|
13
|
+
onSelect?: (value: string, color: string) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare const ColorSelectToken: React.FC<ColorSelectTokenProps>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=ColorSelectToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorSelectToken.d.ts","sourceRoot":"","sources":["../../src/components/ColorSelectToken.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,UAAU,qBAAqB;IAC7B,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAyJD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAyf5D,CAAC"}
|