@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.
Files changed (46) hide show
  1. package/dist/cjs/ThemeProvider.d.ts +19 -0
  2. package/dist/cjs/ThemeProvider.d.ts.map +1 -0
  3. package/dist/cjs/ThemeShowcase.d.ts +24 -0
  4. package/dist/cjs/ThemeShowcase.d.ts.map +1 -0
  5. package/dist/cjs/defaultThemes.d.ts +8 -0
  6. package/dist/cjs/defaultThemes.d.ts.map +1 -0
  7. package/dist/cjs/glassmorphismTheme.d.ts +7 -0
  8. package/dist/cjs/glassmorphismTheme.d.ts.map +1 -0
  9. package/dist/cjs/index.d.ts +130 -0
  10. package/dist/cjs/index.d.ts.map +1 -0
  11. package/dist/cjs/index.js +1798 -0
  12. package/dist/cjs/package.json +1 -0
  13. package/dist/cjs/themeHelpers.d.ts +30 -0
  14. package/dist/cjs/themeHelpers.d.ts.map +1 -0
  15. package/dist/cjs/themes.d.ts +12 -0
  16. package/dist/cjs/themes.d.ts.map +1 -0
  17. package/dist/cjs/utils.d.ts +32 -0
  18. package/dist/cjs/utils.d.ts.map +1 -0
  19. package/dist/esm/ThemeProvider.d.ts +19 -0
  20. package/dist/esm/ThemeProvider.d.ts.map +1 -0
  21. package/dist/esm/ThemeShowcase.d.ts +24 -0
  22. package/dist/esm/ThemeShowcase.d.ts.map +1 -0
  23. package/dist/esm/defaultThemes.d.ts +8 -0
  24. package/dist/esm/defaultThemes.d.ts.map +1 -0
  25. package/dist/esm/glassmorphismTheme.d.ts +7 -0
  26. package/dist/esm/glassmorphismTheme.d.ts.map +1 -0
  27. package/dist/esm/index.d.ts +130 -0
  28. package/dist/esm/index.d.ts.map +1 -0
  29. package/dist/esm/index.js +1753 -0
  30. package/dist/esm/package.json +1 -0
  31. package/dist/esm/themeHelpers.d.ts +30 -0
  32. package/dist/esm/themeHelpers.d.ts.map +1 -0
  33. package/dist/esm/themes.d.ts +12 -0
  34. package/dist/esm/themes.d.ts.map +1 -0
  35. package/dist/esm/utils.d.ts +32 -0
  36. package/dist/esm/utils.d.ts.map +1 -0
  37. package/package.json +64 -0
  38. package/src/README.md +134 -0
  39. package/src/ThemeProvider.tsx +117 -0
  40. package/src/ThemeShowcase.tsx +442 -0
  41. package/src/defaultThemes.ts +369 -0
  42. package/src/glassmorphismTheme.ts +213 -0
  43. package/src/index.ts +230 -0
  44. package/src/themeHelpers.ts +106 -0
  45. package/src/themes.ts +746 -0
  46. 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
+ };