@castui/cast-ui 4.1.1 → 4.2.1
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 +129 -19
- package/dist/components/Alert/Alert.d.ts +40 -0
- package/dist/components/Alert/Alert.js +71 -0
- package/dist/components/Alert/index.d.ts +1 -0
- package/dist/components/Alert/index.js +5 -0
- package/dist/components/Avatar/Avatar.d.ts +31 -0
- package/dist/components/Avatar/Avatar.js +55 -0
- package/dist/components/Avatar/index.d.ts +1 -0
- package/dist/components/Avatar/index.js +5 -0
- package/dist/components/Badge/Badge.d.ts +41 -0
- package/dist/components/Badge/Badge.js +71 -0
- package/dist/components/Badge/index.d.ts +1 -0
- package/dist/components/Badge/index.js +5 -0
- package/dist/components/Button/Button.d.ts +0 -1
- package/dist/components/Button/Button.js +21 -19
- package/dist/components/Button/index.d.ts +0 -1
- package/dist/components/Button/index.js +5 -2
- package/dist/components/Card/Card.d.ts +41 -0
- package/dist/components/Card/Card.js +91 -0
- package/dist/components/Card/index.d.ts +1 -0
- package/dist/components/Card/index.js +5 -0
- package/dist/components/Checkbox/Checkbox.d.ts +32 -0
- package/dist/components/Checkbox/Checkbox.js +107 -0
- package/dist/components/Checkbox/index.d.ts +1 -0
- package/dist/components/Checkbox/index.js +5 -0
- package/dist/components/Chip/Chip.d.ts +46 -0
- package/dist/components/Chip/Chip.js +82 -0
- package/dist/components/Chip/index.d.ts +1 -0
- package/dist/components/Chip/index.js +5 -0
- package/dist/components/Dialog/Dialog.d.ts +0 -1
- package/dist/components/Dialog/Dialog.js +33 -26
- package/dist/components/Dialog/index.d.ts +0 -1
- package/dist/components/Dialog/index.js +6 -2
- package/dist/components/Divider/Divider.d.ts +22 -0
- package/dist/components/Divider/Divider.js +19 -0
- package/dist/components/Divider/index.d.ts +1 -0
- package/dist/components/Divider/index.js +5 -0
- package/dist/components/Icon/Icon.d.ts +26 -9
- package/dist/components/Icon/Icon.js +16 -6
- package/dist/components/Icon/index.d.ts +0 -1
- package/dist/components/Icon/index.js +5 -2
- package/dist/components/Input/Input.d.ts +62 -0
- package/dist/components/Input/Input.js +141 -0
- package/dist/components/Input/index.d.ts +1 -0
- package/dist/components/Input/index.js +5 -0
- package/dist/components/List/List.d.ts +58 -0
- package/dist/components/List/List.js +116 -0
- package/dist/components/List/index.d.ts +1 -0
- package/dist/components/List/index.js +8 -0
- package/dist/components/Popover/Popover.d.ts +34 -0
- package/dist/components/Popover/Popover.js +62 -0
- package/dist/components/Popover/index.d.ts +1 -0
- package/dist/components/Popover/index.js +5 -0
- package/dist/components/Radio/Radio.d.ts +52 -0
- package/dist/components/Radio/Radio.js +127 -0
- package/dist/components/Radio/index.d.ts +1 -0
- package/dist/components/Radio/index.js +6 -0
- package/dist/components/Select/Select.d.ts +0 -1
- package/dist/components/Select/Select.js +114 -96
- package/dist/components/Select/index.d.ts +0 -1
- package/dist/components/Select/index.js +10 -2
- package/dist/components/Skeleton/Skeleton.d.ts +33 -0
- package/dist/components/Skeleton/Skeleton.js +66 -0
- package/dist/components/Skeleton/index.d.ts +1 -0
- package/dist/components/Skeleton/index.js +5 -0
- package/dist/components/Toast/Toast.d.ts +35 -0
- package/dist/components/Toast/Toast.js +79 -0
- package/dist/components/Toast/index.d.ts +1 -0
- package/dist/components/Toast/index.js +5 -0
- package/dist/components/Toggle/Toggle.d.ts +31 -0
- package/dist/components/Toggle/Toggle.js +91 -0
- package/dist/components/Toggle/index.d.ts +1 -0
- package/dist/components/Toggle/index.js +5 -0
- package/dist/components/Tooltip/Tooltip.d.ts +34 -0
- package/dist/components/Tooltip/Tooltip.js +67 -0
- package/dist/components/Tooltip/index.d.ts +1 -0
- package/dist/components/Tooltip/index.js +5 -0
- package/dist/index.d.ts +17 -3
- package/dist/index.js +81 -7
- package/dist/theme/ThemeContext.d.ts +24 -8
- package/dist/theme/ThemeContext.js +41 -22
- package/dist/theme/index.d.ts +1 -2
- package/dist/theme/index.js +8 -3
- package/dist/theme/themes.d.ts +0 -1
- package/dist/theme/themes.js +214 -2
- package/dist/theme/types.d.ts +183 -1
- package/dist/theme/types.js +2 -2
- package/dist/tokens/colors.d.ts +294 -26
- package/dist/tokens/colors.js +324 -99
- package/dist/tokens/index.d.ts +1 -2
- package/dist/tokens/index.js +29 -3
- package/dist/tokens/typography.d.ts +0 -1
- package/dist/tokens/typography.js +13 -11
- package/package.json +13 -2
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.js.map +0 -1
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Button/index.js.map +0 -1
- package/dist/components/Dialog/Dialog.d.ts.map +0 -1
- package/dist/components/Dialog/Dialog.js.map +0 -1
- package/dist/components/Dialog/index.d.ts.map +0 -1
- package/dist/components/Dialog/index.js.map +0 -1
- package/dist/components/Icon/Icon.d.ts.map +0 -1
- package/dist/components/Icon/Icon.js.map +0 -1
- package/dist/components/Icon/index.d.ts.map +0 -1
- package/dist/components/Icon/index.js.map +0 -1
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.js.map +0 -1
- package/dist/components/Select/index.d.ts.map +0 -1
- package/dist/components/Select/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/theme/ThemeContext.d.ts.map +0 -1
- package/dist/theme/ThemeContext.js.map +0 -1
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/themes.d.ts.map +0 -1
- package/dist/theme/themes.js.map +0 -1
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js.map +0 -1
- package/dist/tokens/colors.d.ts.map +0 -1
- package/dist/tokens/colors.js.map +0 -1
- package/dist/tokens/index.d.ts.map +0 -1
- package/dist/tokens/index.js.map +0 -1
- package/dist/tokens/typography.d.ts.map +0 -1
- package/dist/tokens/typography.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ThemeProvider — wraps your app to enable density theming
|
|
2
|
+
* ThemeProvider — wraps your app to enable density theming, light/dark colour
|
|
3
|
+
* modes, and colour customisation.
|
|
3
4
|
*
|
|
4
5
|
* @example Basic usage — switch density
|
|
5
6
|
* ```tsx
|
|
@@ -10,6 +11,13 @@
|
|
|
10
11
|
* </ThemeProvider>
|
|
11
12
|
* ```
|
|
12
13
|
*
|
|
14
|
+
* @example Dark mode
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <ThemeProvider colorMode="dark">
|
|
17
|
+
* <App />
|
|
18
|
+
* </ThemeProvider>
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
13
21
|
* @example Rebrand — override intent colours
|
|
14
22
|
* ```tsx
|
|
15
23
|
* <ThemeProvider
|
|
@@ -29,31 +37,39 @@
|
|
|
29
37
|
* ```
|
|
30
38
|
*/
|
|
31
39
|
import React from 'react';
|
|
32
|
-
import { intentColors as defaultIntentColors
|
|
33
|
-
import type { IntentName } from '../tokens/colors';
|
|
40
|
+
import { intentColors as defaultIntentColors } from '../tokens/colors';
|
|
41
|
+
import type { ColorMode, ColorScheme, IntentName } from '../tokens/colors';
|
|
34
42
|
import type { DensityTheme, ComponentTokens, DeepPartial } from './types';
|
|
35
43
|
type IntentColorMap = typeof defaultIntentColors;
|
|
36
44
|
export type Theme = {
|
|
37
45
|
density: DensityTheme;
|
|
38
46
|
components: ComponentTokens;
|
|
47
|
+
/** Active colour mode — light or dark. */
|
|
48
|
+
colorMode: ColorMode;
|
|
49
|
+
/** Full resolved colour scheme for the active mode (overrides applied). */
|
|
50
|
+
scheme: ColorScheme;
|
|
51
|
+
/** Intent colours of the active scheme — kept for backwards compatibility. */
|
|
39
52
|
colors: IntentColorMap;
|
|
40
|
-
|
|
53
|
+
/** Disabled colours of the active scheme — kept for backwards compatibility. */
|
|
54
|
+
disabledColors: ColorScheme['disabled'];
|
|
41
55
|
};
|
|
42
56
|
export type ThemeProviderProps = {
|
|
43
57
|
/** Density theme — controls spacing and padding across all components. */
|
|
44
58
|
density?: DensityTheme;
|
|
59
|
+
/** Colour mode — switches between the light and dark colour schemes. */
|
|
60
|
+
colorMode?: ColorMode;
|
|
45
61
|
/**
|
|
46
|
-
* Partial colour overrides — deep-merged with the
|
|
47
|
-
* Only provide the values you want to change; everything else
|
|
62
|
+
* Partial colour overrides — deep-merged with the active scheme's intent
|
|
63
|
+
* colours. Only provide the values you want to change; everything else
|
|
64
|
+
* stays default.
|
|
48
65
|
*/
|
|
49
66
|
colors?: Partial<Record<IntentName, DeepPartial<IntentColorMap[IntentName]>>>;
|
|
50
67
|
children: React.ReactNode;
|
|
51
68
|
};
|
|
52
|
-
export declare function ThemeProvider({ density, colors, children, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
69
|
+
export declare function ThemeProvider({ density, colorMode, colors, children, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
53
70
|
/**
|
|
54
71
|
* Access the current theme — density tokens, intent colours, and component tokens.
|
|
55
72
|
* Must be called within a ThemeProvider; falls back to the "default" density if not.
|
|
56
73
|
*/
|
|
57
74
|
export declare function useTheme(): Theme;
|
|
58
75
|
export {};
|
|
59
|
-
//# sourceMappingURL=ThemeContext.d.ts.map
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ThemeProvider = ThemeProvider;
|
|
4
|
+
exports.useTheme = useTheme;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
2
6
|
/**
|
|
3
|
-
* ThemeProvider — wraps your app to enable density theming
|
|
7
|
+
* ThemeProvider — wraps your app to enable density theming, light/dark colour
|
|
8
|
+
* modes, and colour customisation.
|
|
4
9
|
*
|
|
5
10
|
* @example Basic usage — switch density
|
|
6
11
|
* ```tsx
|
|
@@ -11,6 +16,13 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
11
16
|
* </ThemeProvider>
|
|
12
17
|
* ```
|
|
13
18
|
*
|
|
19
|
+
* @example Dark mode
|
|
20
|
+
* ```tsx
|
|
21
|
+
* <ThemeProvider colorMode="dark">
|
|
22
|
+
* <App />
|
|
23
|
+
* </ThemeProvider>
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
14
26
|
* @example Rebrand — override intent colours
|
|
15
27
|
* ```tsx
|
|
16
28
|
* <ThemeProvider
|
|
@@ -29,9 +41,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
29
41
|
* </ThemeProvider>
|
|
30
42
|
* ```
|
|
31
43
|
*/
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
44
|
+
const react_1 = require("react");
|
|
45
|
+
const themes_1 = require("./themes");
|
|
46
|
+
const colors_1 = require("../tokens/colors");
|
|
35
47
|
// ---------------------------------------------------------------------------
|
|
36
48
|
// Deep merge utility (for partial colour overrides)
|
|
37
49
|
// ---------------------------------------------------------------------------
|
|
@@ -60,24 +72,32 @@ function deepMerge(base, overrides) {
|
|
|
60
72
|
// ---------------------------------------------------------------------------
|
|
61
73
|
const defaultTheme = {
|
|
62
74
|
density: 'default',
|
|
63
|
-
components: themes.default,
|
|
64
|
-
|
|
65
|
-
|
|
75
|
+
components: themes_1.themes.default,
|
|
76
|
+
colorMode: 'light',
|
|
77
|
+
scheme: colors_1.colorSchemes.light,
|
|
78
|
+
colors: colors_1.colorSchemes.light.intents,
|
|
79
|
+
disabledColors: colors_1.colorSchemes.light.disabled,
|
|
66
80
|
};
|
|
67
|
-
const ThemeContext = createContext(defaultTheme);
|
|
68
|
-
|
|
69
|
-
const theme = useMemo(() => {
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
const ThemeContext = (0, react_1.createContext)(defaultTheme);
|
|
82
|
+
function ThemeProvider({ density = 'default', colorMode = 'light', colors, children, }) {
|
|
83
|
+
const theme = (0, react_1.useMemo)(() => {
|
|
84
|
+
const baseScheme = colors_1.colorSchemes[colorMode];
|
|
85
|
+
const resolvedIntents = colors
|
|
86
|
+
? deepMerge(baseScheme.intents, colors)
|
|
87
|
+
: baseScheme.intents;
|
|
88
|
+
const scheme = colors
|
|
89
|
+
? { ...baseScheme, intents: resolvedIntents }
|
|
90
|
+
: baseScheme;
|
|
73
91
|
return {
|
|
74
92
|
density,
|
|
75
|
-
components: themes[density],
|
|
76
|
-
|
|
77
|
-
|
|
93
|
+
components: themes_1.themes[density],
|
|
94
|
+
colorMode,
|
|
95
|
+
scheme,
|
|
96
|
+
colors: resolvedIntents,
|
|
97
|
+
disabledColors: scheme.disabled,
|
|
78
98
|
};
|
|
79
|
-
}, [density, colors]);
|
|
80
|
-
return (
|
|
99
|
+
}, [density, colorMode, colors]);
|
|
100
|
+
return ((0, jsx_runtime_1.jsx)(ThemeContext.Provider, { value: theme, children: children }));
|
|
81
101
|
}
|
|
82
102
|
// ---------------------------------------------------------------------------
|
|
83
103
|
// Hook
|
|
@@ -86,7 +106,6 @@ export function ThemeProvider({ density = 'default', colors, children, }) {
|
|
|
86
106
|
* Access the current theme — density tokens, intent colours, and component tokens.
|
|
87
107
|
* Must be called within a ThemeProvider; falls back to the "default" density if not.
|
|
88
108
|
*/
|
|
89
|
-
|
|
90
|
-
return useContext(ThemeContext);
|
|
109
|
+
function useTheme() {
|
|
110
|
+
return (0, react_1.useContext)(ThemeContext);
|
|
91
111
|
}
|
|
92
|
-
//# sourceMappingURL=ThemeContext.js.map
|
package/dist/theme/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { ThemeProvider, useTheme, type ThemeProviderProps, type Theme } from './ThemeContext';
|
|
2
2
|
export { themes } from './themes';
|
|
3
|
-
export type { DensityTheme, ComponentTokens, ButtonSizeTokens, ButtonThemeTokens, DialogSizeTokens, DialogThemeTokens, InputSizeTokens, InputThemeTokens, SelectContentTokens, SelectOptionTokens, SelectGroupTokens, SelectSeparatorTokens, SelectThemeTokens, DeepPartial, } from './types';
|
|
4
|
-
//# sourceMappingURL=index.d.ts.map
|
|
3
|
+
export type { DensityTheme, ComponentTokens, ButtonSizeTokens, ButtonThemeTokens, DialogSizeTokens, DialogThemeTokens, InputSizeTokens, InputThemeTokens, SelectContentTokens, SelectOptionTokens, SelectGroupTokens, SelectSeparatorTokens, SelectThemeTokens, ListItemTokens, ListSubheaderTokens, ListThemeTokens, CheckboxSizeTokens, CheckboxThemeTokens, AlertSizeTokens, AlertThemeTokens, ToggleSizeTokens, ToggleThemeTokens, CardSizeTokens, CardThemeTokens, BadgeSizeTokens, BadgeThemeTokens, RadioSizeTokens, RadioThemeTokens, ToastSizeTokens, ToastThemeTokens, ChipSizeTokens, ChipThemeTokens, AvatarSizeTokens, AvatarThemeTokens, PopoverSizeTokens, PopoverThemeTokens, TooltipSizeTokens, TooltipThemeTokens, DeepPartial, } from './types';
|
package/dist/theme/index.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.themes = exports.useTheme = exports.ThemeProvider = void 0;
|
|
4
|
+
var ThemeContext_1 = require("./ThemeContext");
|
|
5
|
+
Object.defineProperty(exports, "ThemeProvider", { enumerable: true, get: function () { return ThemeContext_1.ThemeProvider; } });
|
|
6
|
+
Object.defineProperty(exports, "useTheme", { enumerable: true, get: function () { return ThemeContext_1.useTheme; } });
|
|
7
|
+
var themes_1 = require("./themes");
|
|
8
|
+
Object.defineProperty(exports, "themes", { enumerable: true, get: function () { return themes_1.themes; } });
|
package/dist/theme/themes.d.ts
CHANGED
package/dist/theme/themes.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Density theme definitions — extracted from component token files.
|
|
3
4
|
*
|
|
@@ -9,7 +10,9 @@
|
|
|
9
10
|
* Values verified against Figma variable defs.
|
|
10
11
|
* Only spacing/sizing tokens live here — colours are constant across densities.
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.themes = void 0;
|
|
15
|
+
exports.themes = {
|
|
13
16
|
compact: {
|
|
14
17
|
dialog: {
|
|
15
18
|
small: { padding: 16, gap: 12, iconSize: 24 },
|
|
@@ -33,6 +36,76 @@ export const themes = {
|
|
|
33
36
|
group: { paddingX: 8, labelPaddingY: 6 },
|
|
34
37
|
separator: { marginY: 4 },
|
|
35
38
|
},
|
|
39
|
+
list: {
|
|
40
|
+
sectionGap: 1,
|
|
41
|
+
item: { gap: 8, paddingX: 8, paddingY: 4, borderRadius: 4, iconSize: 16 },
|
|
42
|
+
subheader: { paddingX: 8, paddingY: 4 },
|
|
43
|
+
},
|
|
44
|
+
checkbox: {
|
|
45
|
+
gap: 4, borderRadius: 4, focusRingWidth: 2,
|
|
46
|
+
small: { indicatorSize: 16, iconSize: 10 },
|
|
47
|
+
default: { indicatorSize: 20, iconSize: 12 },
|
|
48
|
+
large: { indicatorSize: 24, iconSize: 14 },
|
|
49
|
+
},
|
|
50
|
+
alert: {
|
|
51
|
+
borderRadius: 8,
|
|
52
|
+
small: { padding: 8, gap: 8, iconSize: 16, closeSize: 16 },
|
|
53
|
+
default: { padding: 12, gap: 12, iconSize: 20, closeSize: 16 },
|
|
54
|
+
large: { padding: 16, gap: 16, iconSize: 24, closeSize: 20 },
|
|
55
|
+
},
|
|
56
|
+
toggle: {
|
|
57
|
+
gap: 4, thumbOffset: 2, focusRingWidth: 2,
|
|
58
|
+
small: { trackWidth: 32, trackHeight: 16, thumbSize: 12 },
|
|
59
|
+
default: { trackWidth: 40, trackHeight: 20, thumbSize: 16 },
|
|
60
|
+
large: { trackWidth: 48, trackHeight: 24, thumbSize: 20 },
|
|
61
|
+
},
|
|
62
|
+
card: {
|
|
63
|
+
borderRadius: 8,
|
|
64
|
+
small: { padding: 8, gap: 8, iconSize: 16, imageHeight: 120 },
|
|
65
|
+
default: { padding: 12, gap: 12, iconSize: 20, imageHeight: 160 },
|
|
66
|
+
large: { padding: 16, gap: 16, iconSize: 24, imageHeight: 200 },
|
|
67
|
+
},
|
|
68
|
+
badge: {
|
|
69
|
+
borderRadius: 9999,
|
|
70
|
+
small: { gap: 2, paddingX: 4, paddingY: 0, dotSize: 6 },
|
|
71
|
+
default: { gap: 4, paddingX: 6, paddingY: 1, dotSize: 6 },
|
|
72
|
+
large: { gap: 4, paddingX: 8, paddingY: 2, dotSize: 8 },
|
|
73
|
+
},
|
|
74
|
+
radio: {
|
|
75
|
+
gap: 4, borderRadius: 9999, focusRingWidth: 2,
|
|
76
|
+
small: { indicatorSize: 16, dotSize: 6 },
|
|
77
|
+
default: { indicatorSize: 20, dotSize: 8 },
|
|
78
|
+
large: { indicatorSize: 24, dotSize: 10 },
|
|
79
|
+
},
|
|
80
|
+
toast: {
|
|
81
|
+
borderRadius: 8, minWidth: 280, maxWidth: 420,
|
|
82
|
+
small: { padding: 8, gap: 8, iconSize: 16, closeSize: 16 },
|
|
83
|
+
default: { padding: 12, gap: 12, iconSize: 20, closeSize: 16 },
|
|
84
|
+
large: { padding: 16, gap: 16, iconSize: 24, closeSize: 20 },
|
|
85
|
+
},
|
|
86
|
+
chip: {
|
|
87
|
+
borderRadius: 9999,
|
|
88
|
+
small: { gap: 2, paddingX: 4, paddingY: 1, iconSize: 12 },
|
|
89
|
+
default: { gap: 4, paddingX: 6, paddingY: 2, iconSize: 14 },
|
|
90
|
+
large: { gap: 4, paddingX: 8, paddingY: 4, iconSize: 16 },
|
|
91
|
+
},
|
|
92
|
+
avatar: {
|
|
93
|
+
borderRadius: 9999,
|
|
94
|
+
small: { size: 24, iconSize: 12 },
|
|
95
|
+
default: { size: 40, iconSize: 16 },
|
|
96
|
+
large: { size: 64, iconSize: 24 },
|
|
97
|
+
},
|
|
98
|
+
popover: {
|
|
99
|
+
borderRadius: 8, arrowSize: 8,
|
|
100
|
+
small: { padding: 8 },
|
|
101
|
+
default: { padding: 12 },
|
|
102
|
+
large: { padding: 16 },
|
|
103
|
+
},
|
|
104
|
+
tooltip: {
|
|
105
|
+
borderRadius: 4, arrowSize: 6,
|
|
106
|
+
small: { paddingX: 4, paddingY: 1 },
|
|
107
|
+
default: { paddingX: 6, paddingY: 2 },
|
|
108
|
+
},
|
|
36
109
|
},
|
|
37
110
|
default: {
|
|
38
111
|
dialog: {
|
|
@@ -57,6 +130,76 @@ export const themes = {
|
|
|
57
130
|
group: { paddingX: 12, labelPaddingY: 6 },
|
|
58
131
|
separator: { marginY: 4 },
|
|
59
132
|
},
|
|
133
|
+
list: {
|
|
134
|
+
sectionGap: 1,
|
|
135
|
+
item: { gap: 12, paddingX: 12, paddingY: 6, borderRadius: 4, iconSize: 20 },
|
|
136
|
+
subheader: { paddingX: 12, paddingY: 6 },
|
|
137
|
+
},
|
|
138
|
+
checkbox: {
|
|
139
|
+
gap: 8, borderRadius: 4, focusRingWidth: 2,
|
|
140
|
+
small: { indicatorSize: 16, iconSize: 10 },
|
|
141
|
+
default: { indicatorSize: 20, iconSize: 12 },
|
|
142
|
+
large: { indicatorSize: 24, iconSize: 14 },
|
|
143
|
+
},
|
|
144
|
+
alert: {
|
|
145
|
+
borderRadius: 8,
|
|
146
|
+
small: { padding: 12, gap: 12, iconSize: 16, closeSize: 16 },
|
|
147
|
+
default: { padding: 16, gap: 16, iconSize: 20, closeSize: 16 },
|
|
148
|
+
large: { padding: 24, gap: 24, iconSize: 24, closeSize: 20 },
|
|
149
|
+
},
|
|
150
|
+
toggle: {
|
|
151
|
+
gap: 8, thumbOffset: 2, focusRingWidth: 2,
|
|
152
|
+
small: { trackWidth: 32, trackHeight: 16, thumbSize: 12 },
|
|
153
|
+
default: { trackWidth: 40, trackHeight: 20, thumbSize: 16 },
|
|
154
|
+
large: { trackWidth: 48, trackHeight: 24, thumbSize: 20 },
|
|
155
|
+
},
|
|
156
|
+
card: {
|
|
157
|
+
borderRadius: 8,
|
|
158
|
+
small: { padding: 12, gap: 12, iconSize: 16, imageHeight: 120 },
|
|
159
|
+
default: { padding: 16, gap: 16, iconSize: 20, imageHeight: 160 },
|
|
160
|
+
large: { padding: 24, gap: 24, iconSize: 24, imageHeight: 200 },
|
|
161
|
+
},
|
|
162
|
+
badge: {
|
|
163
|
+
borderRadius: 9999,
|
|
164
|
+
small: { gap: 2, paddingX: 4, paddingY: 0, dotSize: 6 },
|
|
165
|
+
default: { gap: 4, paddingX: 6, paddingY: 1, dotSize: 6 },
|
|
166
|
+
large: { gap: 4, paddingX: 8, paddingY: 2, dotSize: 8 },
|
|
167
|
+
},
|
|
168
|
+
radio: {
|
|
169
|
+
gap: 8, borderRadius: 9999, focusRingWidth: 2,
|
|
170
|
+
small: { indicatorSize: 16, dotSize: 6 },
|
|
171
|
+
default: { indicatorSize: 20, dotSize: 8 },
|
|
172
|
+
large: { indicatorSize: 24, dotSize: 10 },
|
|
173
|
+
},
|
|
174
|
+
toast: {
|
|
175
|
+
borderRadius: 8, minWidth: 280, maxWidth: 420,
|
|
176
|
+
small: { padding: 12, gap: 12, iconSize: 16, closeSize: 16 },
|
|
177
|
+
default: { padding: 16, gap: 16, iconSize: 20, closeSize: 16 },
|
|
178
|
+
large: { padding: 24, gap: 24, iconSize: 24, closeSize: 20 },
|
|
179
|
+
},
|
|
180
|
+
chip: {
|
|
181
|
+
borderRadius: 9999,
|
|
182
|
+
small: { gap: 4, paddingX: 6, paddingY: 2, iconSize: 12 },
|
|
183
|
+
default: { gap: 4, paddingX: 8, paddingY: 4, iconSize: 14 },
|
|
184
|
+
large: { gap: 8, paddingX: 10, paddingY: 6, iconSize: 16 },
|
|
185
|
+
},
|
|
186
|
+
avatar: {
|
|
187
|
+
borderRadius: 9999,
|
|
188
|
+
small: { size: 32, iconSize: 12 },
|
|
189
|
+
default: { size: 48, iconSize: 16 },
|
|
190
|
+
large: { size: 80, iconSize: 24 },
|
|
191
|
+
},
|
|
192
|
+
popover: {
|
|
193
|
+
borderRadius: 8, arrowSize: 8,
|
|
194
|
+
small: { padding: 12 },
|
|
195
|
+
default: { padding: 16 },
|
|
196
|
+
large: { padding: 24 },
|
|
197
|
+
},
|
|
198
|
+
tooltip: {
|
|
199
|
+
borderRadius: 4, arrowSize: 6,
|
|
200
|
+
small: { paddingX: 6, paddingY: 2 },
|
|
201
|
+
default: { paddingX: 8, paddingY: 4 },
|
|
202
|
+
},
|
|
60
203
|
},
|
|
61
204
|
comfortable: {
|
|
62
205
|
dialog: {
|
|
@@ -81,6 +224,75 @@ export const themes = {
|
|
|
81
224
|
group: { paddingX: 16, labelPaddingY: 6 },
|
|
82
225
|
separator: { marginY: 4 },
|
|
83
226
|
},
|
|
227
|
+
list: {
|
|
228
|
+
sectionGap: 1,
|
|
229
|
+
item: { gap: 16, paddingX: 16, paddingY: 8, borderRadius: 4, iconSize: 24 },
|
|
230
|
+
subheader: { paddingX: 16, paddingY: 8 },
|
|
231
|
+
},
|
|
232
|
+
checkbox: {
|
|
233
|
+
gap: 12, borderRadius: 4, focusRingWidth: 2,
|
|
234
|
+
small: { indicatorSize: 16, iconSize: 10 },
|
|
235
|
+
default: { indicatorSize: 20, iconSize: 12 },
|
|
236
|
+
large: { indicatorSize: 24, iconSize: 14 },
|
|
237
|
+
},
|
|
238
|
+
alert: {
|
|
239
|
+
borderRadius: 8,
|
|
240
|
+
small: { padding: 16, gap: 16, iconSize: 16, closeSize: 16 },
|
|
241
|
+
default: { padding: 24, gap: 24, iconSize: 20, closeSize: 16 },
|
|
242
|
+
large: { padding: 40, gap: 40, iconSize: 24, closeSize: 20 },
|
|
243
|
+
},
|
|
244
|
+
toggle: {
|
|
245
|
+
gap: 12, thumbOffset: 2, focusRingWidth: 2,
|
|
246
|
+
small: { trackWidth: 32, trackHeight: 16, thumbSize: 12 },
|
|
247
|
+
default: { trackWidth: 40, trackHeight: 20, thumbSize: 16 },
|
|
248
|
+
large: { trackWidth: 48, trackHeight: 24, thumbSize: 20 },
|
|
249
|
+
},
|
|
250
|
+
card: {
|
|
251
|
+
borderRadius: 8,
|
|
252
|
+
small: { padding: 16, gap: 16, iconSize: 16, imageHeight: 120 },
|
|
253
|
+
default: { padding: 24, gap: 24, iconSize: 20, imageHeight: 160 },
|
|
254
|
+
large: { padding: 40, gap: 40, iconSize: 24, imageHeight: 200 },
|
|
255
|
+
},
|
|
256
|
+
badge: {
|
|
257
|
+
borderRadius: 9999,
|
|
258
|
+
small: { gap: 2, paddingX: 4, paddingY: 0, dotSize: 6 },
|
|
259
|
+
default: { gap: 4, paddingX: 6, paddingY: 1, dotSize: 6 },
|
|
260
|
+
large: { gap: 4, paddingX: 8, paddingY: 2, dotSize: 8 },
|
|
261
|
+
},
|
|
262
|
+
radio: {
|
|
263
|
+
gap: 12, borderRadius: 9999, focusRingWidth: 2,
|
|
264
|
+
small: { indicatorSize: 16, dotSize: 6 },
|
|
265
|
+
default: { indicatorSize: 20, dotSize: 8 },
|
|
266
|
+
large: { indicatorSize: 24, dotSize: 10 },
|
|
267
|
+
},
|
|
268
|
+
toast: {
|
|
269
|
+
borderRadius: 8, minWidth: 280, maxWidth: 420,
|
|
270
|
+
small: { padding: 16, gap: 16, iconSize: 16, closeSize: 16 },
|
|
271
|
+
default: { padding: 24, gap: 24, iconSize: 20, closeSize: 16 },
|
|
272
|
+
large: { padding: 40, gap: 40, iconSize: 24, closeSize: 20 },
|
|
273
|
+
},
|
|
274
|
+
chip: {
|
|
275
|
+
borderRadius: 9999,
|
|
276
|
+
small: { gap: 4, paddingX: 8, paddingY: 4, iconSize: 12 },
|
|
277
|
+
default: { gap: 8, paddingX: 10, paddingY: 6, iconSize: 14 },
|
|
278
|
+
large: { gap: 8, paddingX: 12, paddingY: 8, iconSize: 16 },
|
|
279
|
+
},
|
|
280
|
+
avatar: {
|
|
281
|
+
borderRadius: 9999,
|
|
282
|
+
small: { size: 40, iconSize: 12 },
|
|
283
|
+
default: { size: 64, iconSize: 16 },
|
|
284
|
+
large: { size: 96, iconSize: 24 },
|
|
285
|
+
},
|
|
286
|
+
popover: {
|
|
287
|
+
borderRadius: 8, arrowSize: 8,
|
|
288
|
+
small: { padding: 16 },
|
|
289
|
+
default: { padding: 24 },
|
|
290
|
+
large: { padding: 40 },
|
|
291
|
+
},
|
|
292
|
+
tooltip: {
|
|
293
|
+
borderRadius: 4, arrowSize: 6,
|
|
294
|
+
small: { paddingX: 8, paddingY: 4 },
|
|
295
|
+
default: { paddingX: 10, paddingY: 6 },
|
|
296
|
+
},
|
|
84
297
|
},
|
|
85
298
|
};
|
|
86
|
-
//# sourceMappingURL=themes.js.map
|
package/dist/theme/types.d.ts
CHANGED
|
@@ -71,6 +71,177 @@ export type SelectThemeTokens = {
|
|
|
71
71
|
group: SelectGroupTokens;
|
|
72
72
|
separator: SelectSeparatorTokens;
|
|
73
73
|
};
|
|
74
|
+
/** List item tokens (icon size varies by density, unlike Button/Select) */
|
|
75
|
+
export type ListItemTokens = {
|
|
76
|
+
gap: number;
|
|
77
|
+
paddingX: number;
|
|
78
|
+
paddingY: number;
|
|
79
|
+
borderRadius: number;
|
|
80
|
+
iconSize: number;
|
|
81
|
+
};
|
|
82
|
+
/** List subheader tokens */
|
|
83
|
+
export type ListSubheaderTokens = {
|
|
84
|
+
paddingX: number;
|
|
85
|
+
paddingY: number;
|
|
86
|
+
};
|
|
87
|
+
/** Combined list tokens */
|
|
88
|
+
export type ListThemeTokens = {
|
|
89
|
+
sectionGap: number;
|
|
90
|
+
item: ListItemTokens;
|
|
91
|
+
subheader: ListSubheaderTokens;
|
|
92
|
+
};
|
|
93
|
+
/** Checkbox indicator/icon sizes for one size variant (constant across density) */
|
|
94
|
+
export type CheckboxSizeTokens = {
|
|
95
|
+
indicatorSize: number;
|
|
96
|
+
iconSize: number;
|
|
97
|
+
};
|
|
98
|
+
/** Checkbox tokens — gap varies by density; sizes vary by the `size` prop */
|
|
99
|
+
export type CheckboxThemeTokens = {
|
|
100
|
+
gap: number;
|
|
101
|
+
borderRadius: number;
|
|
102
|
+
focusRingWidth: number;
|
|
103
|
+
small: CheckboxSizeTokens;
|
|
104
|
+
default: CheckboxSizeTokens;
|
|
105
|
+
large: CheckboxSizeTokens;
|
|
106
|
+
};
|
|
107
|
+
/** Alert tokens for a single size variant (padding/gap vary by size AND density) */
|
|
108
|
+
export type AlertSizeTokens = {
|
|
109
|
+
padding: number;
|
|
110
|
+
gap: number;
|
|
111
|
+
iconSize: number;
|
|
112
|
+
closeSize: number;
|
|
113
|
+
};
|
|
114
|
+
/** All three alert sizes + constant radius */
|
|
115
|
+
export type AlertThemeTokens = {
|
|
116
|
+
borderRadius: number;
|
|
117
|
+
small: AlertSizeTokens;
|
|
118
|
+
default: AlertSizeTokens;
|
|
119
|
+
large: AlertSizeTokens;
|
|
120
|
+
};
|
|
121
|
+
/** Toggle track/thumb sizes for one size variant (constant across density) */
|
|
122
|
+
export type ToggleSizeTokens = {
|
|
123
|
+
trackWidth: number;
|
|
124
|
+
trackHeight: number;
|
|
125
|
+
thumbSize: number;
|
|
126
|
+
};
|
|
127
|
+
/** Toggle tokens — gap varies by density; track sizes vary by the `size` prop */
|
|
128
|
+
export type ToggleThemeTokens = {
|
|
129
|
+
gap: number;
|
|
130
|
+
thumbOffset: number;
|
|
131
|
+
focusRingWidth: number;
|
|
132
|
+
small: ToggleSizeTokens;
|
|
133
|
+
default: ToggleSizeTokens;
|
|
134
|
+
large: ToggleSizeTokens;
|
|
135
|
+
};
|
|
136
|
+
/** Card tokens for one size variant (padding/gap vary by size AND density) */
|
|
137
|
+
export type CardSizeTokens = {
|
|
138
|
+
padding: number;
|
|
139
|
+
gap: number;
|
|
140
|
+
iconSize: number;
|
|
141
|
+
imageHeight: number;
|
|
142
|
+
};
|
|
143
|
+
/** All three card sizes + constant radius */
|
|
144
|
+
export type CardThemeTokens = {
|
|
145
|
+
borderRadius: number;
|
|
146
|
+
small: CardSizeTokens;
|
|
147
|
+
default: CardSizeTokens;
|
|
148
|
+
large: CardSizeTokens;
|
|
149
|
+
};
|
|
150
|
+
/** Badge spacing/sizing tokens for one size variant (constant across density) */
|
|
151
|
+
export type BadgeSizeTokens = {
|
|
152
|
+
gap: number;
|
|
153
|
+
paddingX: number;
|
|
154
|
+
paddingY: number;
|
|
155
|
+
dotSize: number;
|
|
156
|
+
};
|
|
157
|
+
/** Badge tokens — spacing varies by the `size` prop; pill radius is constant */
|
|
158
|
+
export type BadgeThemeTokens = {
|
|
159
|
+
borderRadius: number;
|
|
160
|
+
small: BadgeSizeTokens;
|
|
161
|
+
default: BadgeSizeTokens;
|
|
162
|
+
large: BadgeSizeTokens;
|
|
163
|
+
};
|
|
164
|
+
/** Radio indicator/dot sizes for one size variant (constant across density) */
|
|
165
|
+
export type RadioSizeTokens = {
|
|
166
|
+
indicatorSize: number;
|
|
167
|
+
dotSize: number;
|
|
168
|
+
};
|
|
169
|
+
/** Radio tokens — gap varies by density; sizes vary by the `size` prop */
|
|
170
|
+
export type RadioThemeTokens = {
|
|
171
|
+
gap: number;
|
|
172
|
+
borderRadius: number;
|
|
173
|
+
focusRingWidth: number;
|
|
174
|
+
small: RadioSizeTokens;
|
|
175
|
+
default: RadioSizeTokens;
|
|
176
|
+
large: RadioSizeTokens;
|
|
177
|
+
};
|
|
178
|
+
/** Toast tokens for a single size variant (padding/gap vary by size AND density) */
|
|
179
|
+
export type ToastSizeTokens = {
|
|
180
|
+
padding: number;
|
|
181
|
+
gap: number;
|
|
182
|
+
iconSize: number;
|
|
183
|
+
closeSize: number;
|
|
184
|
+
};
|
|
185
|
+
/** All three toast sizes + constant radius and width bounds */
|
|
186
|
+
export type ToastThemeTokens = {
|
|
187
|
+
borderRadius: number;
|
|
188
|
+
minWidth: number;
|
|
189
|
+
maxWidth: number;
|
|
190
|
+
small: ToastSizeTokens;
|
|
191
|
+
default: ToastSizeTokens;
|
|
192
|
+
large: ToastSizeTokens;
|
|
193
|
+
};
|
|
194
|
+
/** Chip spacing/sizing tokens for one size variant (padding/gap vary by density) */
|
|
195
|
+
export type ChipSizeTokens = {
|
|
196
|
+
gap: number;
|
|
197
|
+
paddingX: number;
|
|
198
|
+
paddingY: number;
|
|
199
|
+
iconSize: number;
|
|
200
|
+
};
|
|
201
|
+
/** Chip tokens — spacing varies by size + density; pill radius is constant */
|
|
202
|
+
export type ChipThemeTokens = {
|
|
203
|
+
borderRadius: number;
|
|
204
|
+
small: ChipSizeTokens;
|
|
205
|
+
default: ChipSizeTokens;
|
|
206
|
+
large: ChipSizeTokens;
|
|
207
|
+
};
|
|
208
|
+
/** Avatar tokens for one size variant. `size` varies by density; `iconSize` is
|
|
209
|
+
* constant across density (keyed by the `size` prop, like List/Checkbox). */
|
|
210
|
+
export type AvatarSizeTokens = {
|
|
211
|
+
size: number;
|
|
212
|
+
iconSize: number;
|
|
213
|
+
};
|
|
214
|
+
/** Avatar tokens — diameter varies by size AND density; pill radius is constant */
|
|
215
|
+
export type AvatarThemeTokens = {
|
|
216
|
+
borderRadius: number;
|
|
217
|
+
small: AvatarSizeTokens;
|
|
218
|
+
default: AvatarSizeTokens;
|
|
219
|
+
large: AvatarSizeTokens;
|
|
220
|
+
};
|
|
221
|
+
/** Popover tokens for one size variant (padding varies by size AND density) */
|
|
222
|
+
export type PopoverSizeTokens = {
|
|
223
|
+
padding: number;
|
|
224
|
+
};
|
|
225
|
+
/** All three popover sizes + constant radius and arrow size */
|
|
226
|
+
export type PopoverThemeTokens = {
|
|
227
|
+
borderRadius: number;
|
|
228
|
+
arrowSize: number;
|
|
229
|
+
small: PopoverSizeTokens;
|
|
230
|
+
default: PopoverSizeTokens;
|
|
231
|
+
large: PopoverSizeTokens;
|
|
232
|
+
};
|
|
233
|
+
/** Tooltip tokens for one size variant (padding varies by size AND density) */
|
|
234
|
+
export type TooltipSizeTokens = {
|
|
235
|
+
paddingX: number;
|
|
236
|
+
paddingY: number;
|
|
237
|
+
};
|
|
238
|
+
/** Tooltip sizes (small + default only) + constant radius and arrow size */
|
|
239
|
+
export type TooltipThemeTokens = {
|
|
240
|
+
borderRadius: number;
|
|
241
|
+
arrowSize: number;
|
|
242
|
+
small: TooltipSizeTokens;
|
|
243
|
+
default: TooltipSizeTokens;
|
|
244
|
+
};
|
|
74
245
|
/**
|
|
75
246
|
* Component-level tokens that vary by density theme.
|
|
76
247
|
* Extended as new components are added to the library.
|
|
@@ -80,9 +251,20 @@ export type ComponentTokens = {
|
|
|
80
251
|
dialog: DialogThemeTokens;
|
|
81
252
|
input: InputThemeTokens;
|
|
82
253
|
select: SelectThemeTokens;
|
|
254
|
+
list: ListThemeTokens;
|
|
255
|
+
checkbox: CheckboxThemeTokens;
|
|
256
|
+
alert: AlertThemeTokens;
|
|
257
|
+
toggle: ToggleThemeTokens;
|
|
258
|
+
card: CardThemeTokens;
|
|
259
|
+
badge: BadgeThemeTokens;
|
|
260
|
+
radio: RadioThemeTokens;
|
|
261
|
+
toast: ToastThemeTokens;
|
|
262
|
+
chip: ChipThemeTokens;
|
|
263
|
+
avatar: AvatarThemeTokens;
|
|
264
|
+
popover: PopoverThemeTokens;
|
|
265
|
+
tooltip: TooltipThemeTokens;
|
|
83
266
|
};
|
|
84
267
|
/** Utility type for partial overrides at any depth */
|
|
85
268
|
export type DeepPartial<T> = {
|
|
86
269
|
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
87
270
|
};
|
|
88
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/theme/types.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Theme type definitions for the Cast UI density system.
|
|
3
4
|
*
|
|
4
5
|
* The density axis controls spacing/sizing tokens only.
|
|
5
6
|
* Colours and typography are constants — they don't change with density.
|
|
6
7
|
*/
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=types.js.map
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|