@principal-ade/industry-theme 0.1.2
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/cjs/ThemeProvider.d.ts +19 -0
- package/dist/cjs/ThemeProvider.d.ts.map +1 -0
- package/dist/cjs/ThemeShowcase.d.ts +24 -0
- package/dist/cjs/ThemeShowcase.d.ts.map +1 -0
- package/dist/cjs/defaultThemes.d.ts +8 -0
- package/dist/cjs/defaultThemes.d.ts.map +1 -0
- package/dist/cjs/glassmorphismTheme.d.ts +7 -0
- package/dist/cjs/glassmorphismTheme.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +130 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +1798 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/themeHelpers.d.ts +30 -0
- package/dist/cjs/themeHelpers.d.ts.map +1 -0
- package/dist/cjs/themes.d.ts +12 -0
- package/dist/cjs/themes.d.ts.map +1 -0
- package/dist/cjs/utils.d.ts +32 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/esm/ThemeProvider.d.ts +19 -0
- package/dist/esm/ThemeProvider.d.ts.map +1 -0
- package/dist/esm/ThemeShowcase.d.ts +24 -0
- package/dist/esm/ThemeShowcase.d.ts.map +1 -0
- package/dist/esm/defaultThemes.d.ts +8 -0
- package/dist/esm/defaultThemes.d.ts.map +1 -0
- package/dist/esm/glassmorphismTheme.d.ts +7 -0
- package/dist/esm/glassmorphismTheme.d.ts.map +1 -0
- package/dist/esm/index.d.ts +130 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +1753 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/themeHelpers.d.ts +30 -0
- package/dist/esm/themeHelpers.d.ts.map +1 -0
- package/dist/esm/themes.d.ts +12 -0
- package/dist/esm/themes.d.ts.map +1 -0
- package/dist/esm/utils.d.ts +32 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/package.json +64 -0
- package/src/README.md +134 -0
- package/src/ThemeProvider.tsx +117 -0
- package/src/ThemeShowcase.tsx +442 -0
- package/src/defaultThemes.ts +369 -0
- package/src/glassmorphismTheme.ts +213 -0
- package/src/index.ts +230 -0
- package/src/themeHelpers.ts +106 -0
- package/src/themes.ts +746 -0
- package/src/utils.ts +135 -0
package/src/utils.ts
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Theme } from './index';
|
|
2
|
+
|
|
3
|
+
// Style value can be string, number, array of values (for responsive), or nested style object
|
|
4
|
+
type StyleValue = string | number | StyleValue[] | { [key: string]: StyleValue };
|
|
5
|
+
type StyleObject = Record<string, StyleValue>;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Utility functions for working with the Theme UI spec-compliant theme
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// Get a color value from the theme
|
|
12
|
+
export const getColor = (theme: Theme, colorKey: string): string => {
|
|
13
|
+
// Access colors directly, ignoring the modes property
|
|
14
|
+
const colors = theme.colors as Record<string, unknown>;
|
|
15
|
+
const value = colors[colorKey];
|
|
16
|
+
return typeof value === 'string' ? value : colorKey;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// Get a space value from the theme scale
|
|
20
|
+
export const getSpace = (theme: Theme, index: number): number => {
|
|
21
|
+
return theme.space[index] || 0;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// Get a font size from the theme scale
|
|
25
|
+
export const getFontSize = (theme: Theme, index: number): number => {
|
|
26
|
+
return theme.fontSizes[index] || theme.fontSizes[2]; // default to index 2 (16px)
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// Get a border radius from the theme scale
|
|
30
|
+
export const getRadius = (theme: Theme, index: number): number => {
|
|
31
|
+
return theme.radii[index] || 0;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// Get a shadow from the theme scale
|
|
35
|
+
export const getShadow = (theme: Theme, index: number): string => {
|
|
36
|
+
return theme.shadows[index] || 'none';
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Get a z-index from the theme scale
|
|
40
|
+
export const getZIndex = (theme: Theme, index: number): number => {
|
|
41
|
+
return theme.zIndices[index] || 0;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// Helper to create responsive values
|
|
45
|
+
export const responsive = (values: (string | number)[]): object => {
|
|
46
|
+
return values.reduce((acc, value, index) => {
|
|
47
|
+
if (index === 0) {
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
...acc,
|
|
52
|
+
[`@media screen and (min-width: ${values[index - 1]})`]: value,
|
|
53
|
+
};
|
|
54
|
+
}, {});
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// CSS-in-JS style helpers that follow Theme UI conventions
|
|
58
|
+
export const sx = (styles: StyleObject) => styles;
|
|
59
|
+
|
|
60
|
+
// Create a theme-aware style object
|
|
61
|
+
export const createStyle = (theme: Theme, styleObj: StyleObject): StyleObject => {
|
|
62
|
+
const processValue = (value: StyleValue): StyleValue => {
|
|
63
|
+
if (typeof value === 'string') {
|
|
64
|
+
// Check if it's a theme color reference
|
|
65
|
+
if (value in theme.colors) {
|
|
66
|
+
return getColor(theme, value);
|
|
67
|
+
}
|
|
68
|
+
return value;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (typeof value === 'number') {
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (Array.isArray(value)) {
|
|
76
|
+
return value.map(processValue);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (typeof value === 'object' && value !== null) {
|
|
80
|
+
const processed: StyleObject = {};
|
|
81
|
+
for (const [key, val] of Object.entries(value)) {
|
|
82
|
+
processed[key] = processValue(val);
|
|
83
|
+
}
|
|
84
|
+
return processed;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return value;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// Process the entire style object
|
|
91
|
+
const processed: StyleObject = {};
|
|
92
|
+
for (const [key, val] of Object.entries(styleObj)) {
|
|
93
|
+
processed[key] = processValue(val);
|
|
94
|
+
}
|
|
95
|
+
return processed;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// Merge multiple themes (useful for component-specific overrides)
|
|
99
|
+
export const mergeThemes = (baseTheme: Theme, ...overrides: Partial<Theme>[]): Theme => {
|
|
100
|
+
return overrides.reduce<Theme>(
|
|
101
|
+
(theme: Theme, override: Partial<Theme>): Theme => ({
|
|
102
|
+
space: override.space || theme.space,
|
|
103
|
+
fonts: { ...theme.fonts, ...(override.fonts || {}) },
|
|
104
|
+
fontSizes: override.fontSizes || theme.fontSizes,
|
|
105
|
+
fontWeights: { ...theme.fontWeights, ...(override.fontWeights || {}) },
|
|
106
|
+
lineHeights: { ...theme.lineHeights, ...(override.lineHeights || {}) },
|
|
107
|
+
breakpoints: override.breakpoints || theme.breakpoints,
|
|
108
|
+
sizes: override.sizes || theme.sizes,
|
|
109
|
+
radii: override.radii || theme.radii,
|
|
110
|
+
shadows: override.shadows || theme.shadows,
|
|
111
|
+
zIndices: override.zIndices || theme.zIndices,
|
|
112
|
+
colors: {
|
|
113
|
+
...theme.colors,
|
|
114
|
+
...(override.colors || {}),
|
|
115
|
+
},
|
|
116
|
+
buttons: { ...theme.buttons, ...(override.buttons || {}) },
|
|
117
|
+
text: { ...theme.text, ...(override.text || {}) },
|
|
118
|
+
cards: { ...theme.cards, ...(override.cards || {}) },
|
|
119
|
+
}),
|
|
120
|
+
baseTheme,
|
|
121
|
+
);
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
export default {
|
|
125
|
+
getColor,
|
|
126
|
+
getSpace,
|
|
127
|
+
getFontSize,
|
|
128
|
+
getRadius,
|
|
129
|
+
getShadow,
|
|
130
|
+
getZIndex,
|
|
131
|
+
responsive,
|
|
132
|
+
sx,
|
|
133
|
+
createStyle,
|
|
134
|
+
mergeThemes,
|
|
135
|
+
};
|