@structyl/themes 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/LICENSE +21 -0
- package/README.md +152 -0
- package/dist/index.cjs +928 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +425 -0
- package/dist/index.d.ts +425 -0
- package/dist/index.mjs +895 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/palette.ts","../src/themes.ts","../src/theme-provider.tsx","../src/use-theme.ts","../src/theme-script.tsx","../src/color-presets.ts","../src/use-color-preset.ts"],"names":["value","React2","React3","useState","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ThemeTokens } from './types';\nimport type { StaticPalette } from './palette.types';\n\n// ── Shared semantic sub-tokens ────────────────────────────────────────────────\n// error/warning/info/success are semantic colors that don't change between\n// UI themes (slate/zinc/rose/structyl). Only light/dark mode changes their values.\n\nexport const sharedSemanticLight: Partial<ThemeTokens> = {\n // Error\n 'error-light': '249 218 223',\n 'error-dark': '131 24 63',\n 'error-contrast': '255 255 255',\n 'error-dark-bg': '167 56 95',\n 'error-state-contained': 'rgba(167, 56, 95, 0.9)',\n 'error-state-outlined': 'rgba(221, 60, 113, 0.1)',\n 'error-state-resting': 'rgba(221, 60, 113, 0.5)',\n 'error-alert-bg': 'rgba(60, 47, 58, 0.9)',\n 'error-alert-content': 'rgba(114, 52, 76, 1)',\n 'error-shade-12': 'rgba(221, 60, 113, 0.12)',\n 'error-shade-16': 'rgba(221, 60, 113, 0.16)',\n // Warning\n 'warning-light': '249 220 210',\n 'warning-dark': '122 45 16',\n 'warning-contrast': '255 255 255',\n 'warning-dark-bg': '191 75 30',\n 'warning-state-contained': 'rgba(191, 75, 30, 0.9)',\n 'warning-state-outlined': 'rgba(255, 87, 20, 0.1)',\n 'warning-state-resting': 'rgba(255, 87, 20, 0.5)',\n 'warning-alert-bg': 'rgba(85, 54, 46, 0.9)',\n 'warning-alert-content': 'rgba(127, 62, 39, 1)',\n 'warning-shade-12': 'rgba(255, 87, 20, 0.12)',\n 'warning-shade-16': 'rgba(255, 87, 20, 0.16)',\n // Info\n 'info-light': '227 223 252',\n 'info-dark': '47 32 159',\n 'info-contrast': '255 255 255',\n 'info-dark-bg': '95 88 179',\n 'info-state-contained': 'rgba(95, 88, 179, 0.9)',\n 'info-state-outlined': 'rgba(117, 106, 234, 0.1)',\n 'info-state-resting': 'rgba(117, 106, 234, 0.5)',\n 'info-alert-bg': 'rgba(49, 52, 70, 0.9)',\n 'info-alert-content': 'rgba(72, 70, 125, 1)',\n 'info-shade-12': 'rgba(117, 106, 234, 0.12)',\n 'info-shade-16': 'rgba(117, 106, 234, 0.16)',\n // Success\n 'success-light': '153 252 128',\n 'success-dark': '33 82 25',\n 'success-contrast': '255 255 255',\n 'success-dark-bg': '33 82 25',\n 'success-state-contained': 'rgba(56, 159, 63, 0.9)',\n 'success-state-outlined': 'rgba(62, 208, 68, 0.1)',\n 'success-state-resting': 'rgba(62, 208, 68, 0.5)',\n 'success-alert-bg': 'rgba(44, 62, 54, 0.9)',\n 'success-alert-content': 'rgba(50, 111, 58, 1)',\n 'success-shade-12': 'rgba(62, 208, 68, 0.12)',\n 'success-shade-16': 'rgba(62, 208, 68, 0.16)',\n backdrop: 'rgba(0, 0, 0, 0.5)',\n 'rating-active': '251 191 36',\n};\n\nexport const sharedSemanticDark: Partial<ThemeTokens> = {\n // Error\n 'error-light': '166 44 85',\n 'error-dark': '249 218 223',\n 'error-contrast': '143 0 63',\n 'error-dark-bg': '167 56 95',\n 'error-state-contained': 'rgba(184, 140, 151, 0.9)',\n 'error-state-outlined': 'rgba(221, 60, 113, 0.05)',\n 'error-state-resting': 'rgba(221, 60, 113, 0.5)',\n 'error-alert-bg': 'rgba(253, 240, 243, 1)',\n 'error-alert-content': 'rgba(251, 225, 230, 1)',\n 'error-shade-12': 'rgba(221, 60, 113, 0.12)',\n 'error-shade-16': 'rgba(221, 60, 113, 0.16)',\n // Warning\n 'warning-light': '159 61 25',\n 'warning-dark': '249 220 210',\n 'warning-contrast': '132 38 0',\n 'warning-dark-bg': '191 75 30',\n 'warning-state-contained': 'rgba(184, 143, 128, 0.9)',\n 'warning-state-outlined': 'rgba(244, 184, 161, 0.2)',\n 'warning-state-resting': 'rgba(244, 184, 161, 0.6)',\n 'warning-alert-bg': 'rgba(253, 241, 236, 1)',\n 'warning-alert-content': 'rgba(251, 227, 217, 1)',\n 'warning-shade-12': 'rgba(255, 87, 20, 0.12)',\n 'warning-shade-16': 'rgba(255, 87, 20, 0.16)',\n // Info\n 'info-light': '85 74 195',\n 'info-dark': '226 223 252',\n 'info-contrast': '63 47 177',\n 'info-dark-bg': '95 88 179',\n 'info-state-contained': 'rgba(150, 148, 191, 1)',\n 'info-state-outlined': 'rgba(196, 192, 250, 0.2)',\n 'info-state-resting': 'rgba(196, 192, 250, 0.6)',\n 'info-alert-bg': 'rgba(243, 242, 254, 1)',\n 'info-alert-content': 'rgba(231, 230, 253, 1)',\n 'info-shade-12': 'rgba(117, 106, 234, 0.12)',\n 'info-shade-16': 'rgba(117, 106, 234, 0.16)',\n // Success\n 'success-light': '46 108 36',\n 'success-dark': '153 252 128',\n 'success-contrast': '0 83 12',\n 'success-dark-bg': '46 108 36',\n 'success-state-contained': 'rgba(100, 170, 88, 0.9)',\n 'success-state-outlined': 'rgba(125, 223, 103, 0.2)',\n 'success-state-resting': 'rgba(125, 223, 103, 0.6)',\n 'success-alert-bg': 'rgba(229, 249, 225, 1)',\n 'success-alert-content': 'rgba(203, 242, 194, 1)',\n 'success-shade-12': 'rgba(62, 208, 68, 0.12)',\n 'success-shade-16': 'rgba(62, 208, 68, 0.16)',\n backdrop: 'rgba(0, 0, 0, 0.5)',\n 'rating-active': '251 191 36',\n};\n\n// ── Structyl theme token values ───────────────────────────────────────────────────\n// Light mode values derived from MUI colorsLight palette\n\nexport const structylSubTokensLight: Partial<ThemeTokens> = {\n // Primary (#5754A3)\n 'primary-light': '195 192 250',\n 'primary-dark': '27 20 100',\n 'primary-contrast': '255 255 255',\n 'primary-dark-bg': '32 28 86',\n 'primary-state-contained': 'rgba(42, 46, 52, 0.3)',\n 'primary-state-outlined': 'rgba(87, 84, 163, 0.1)',\n 'primary-state-resting': 'rgba(87, 84, 163, 0.5)',\n 'primary-shade-12': 'rgba(27, 20, 100, 0.12)',\n 'primary-shade-16': 'rgba(27, 20, 100, 0.16)',\n // Secondary (#2578FF)\n 'secondary-light': '219 226 252',\n 'secondary-dark': '25 65 149',\n 'secondary-contrast': '255 255 255',\n 'secondary-dark-bg': '39 98 194',\n 'secondary-state-contained': 'rgba(42, 46, 52, 0.3)',\n 'secondary-state-outlined': 'rgba(37, 120, 255, 0.1)',\n 'secondary-state-resting': 'rgba(37, 120, 255, 0.5)',\n 'secondary-shade-12': 'rgba(37, 120, 255, 0.12)',\n 'secondary-shade-16': 'rgba(37, 120, 255, 0.16)',\n // Text\n text: '42 46 52',\n 'text-secondary': 'rgba(42, 46, 52, 0.6)',\n 'text-disabled': 'rgba(42, 46, 52, 0.38)',\n 'text-info': '117 106 234',\n 'text-fill': '27 20 100',\n 'text-shade-12': 'rgba(42, 46, 52, 0.12)',\n 'text-shade-16': 'rgba(42, 46, 52, 0.16)',\n // Surface\n surface: '250 250 250',\n 'surface-paper': '255 255 255',\n // Divider / borders\n divider: 'rgba(42, 46, 52, 0.23)',\n 'outlined-border': 'rgba(42, 46, 52, 0.12)',\n 'input-line': 'rgba(42, 46, 52, 0.42)',\n // Action\n 'action-active': 'rgba(42, 46, 52, 0.54)',\n 'action-hover': 'rgba(37, 120, 255, 0.05)',\n 'action-selected': 'rgba(42, 46, 52, 0.08)',\n 'action-disabled': 'rgba(42, 46, 52, 0.26)',\n 'action-disabled-bg': 'rgba(42, 46, 52, 0.12)',\n 'action-focus': 'rgba(42, 46, 52, 0.12)',\n // Misc\n 'snackbar-bg': '42 46 52',\n 'map-grid': '255 255 255',\n // Table\n 'table-top-header': '238 245 255',\n 'table-header': '238 239 239',\n 'table-row': '255 255 255',\n 'table-col-border': '250 250 250',\n 'table-border': 'rgba(229, 229, 230, 1)',\n ...sharedSemanticLight,\n};\n\n// Dark mode values derived from MUI colorsDark palette\n\nexport const structylSubTokensDark: Partial<ThemeTokens> = {\n // Primary (#C3C0FA in dark)\n 'primary-light': '75 72 150',\n 'primary-dark': '219 226 252',\n 'primary-contrast': '27 20 100',\n 'primary-dark-bg': '32 28 86',\n 'primary-state-contained': 'rgba(42, 46, 52, 0.3)',\n 'primary-state-outlined': 'rgba(195, 192, 250, 0.2)',\n 'primary-state-resting': 'rgba(195, 192, 250, 0.6)',\n 'primary-shade-12': 'rgba(27, 20, 100, 0.12)',\n 'primary-shade-16': 'rgba(27, 20, 100, 0.16)',\n // Secondary (#B4C5FA in dark)\n 'secondary-light': '36 87 195',\n 'secondary-dark': '219 226 252',\n 'secondary-contrast': '0 45 110',\n 'secondary-dark-bg': '39 98 194',\n 'secondary-state-contained': 'rgba(42, 46, 52, 0.3)',\n 'secondary-state-outlined': 'rgba(180, 197, 250, 0.2)',\n 'secondary-state-resting': 'rgba(180, 197, 250, 0.6)',\n 'secondary-shade-12': 'rgba(37, 120, 255, 0.12)',\n 'secondary-shade-16': 'rgba(37, 120, 255, 0.16)',\n // Text\n text: '255 255 255',\n 'text-secondary': 'rgba(255, 255, 255, 0.7)',\n 'text-disabled': 'rgba(255, 255, 255, 0.5)',\n 'text-info': '117 106 234',\n 'text-fill': '255 255 255',\n 'text-shade-12': 'rgba(42, 46, 52, 0.12)',\n 'text-shade-16': 'rgba(42, 46, 52, 0.16)',\n // Surface\n surface: '42 46 52',\n 'surface-paper': '46 50 56',\n // Divider / borders\n divider: 'rgba(255, 255, 255, 0.23)',\n 'outlined-border': 'rgba(255, 255, 255, 0.12)',\n 'input-line': 'rgba(255, 255, 255, 0.42)',\n // Action\n 'action-active': 'rgba(255, 255, 255, 0.54)',\n 'action-hover': 'rgba(180, 197, 250, 0.05)',\n 'action-selected': 'rgba(255, 255, 255, 0.08)',\n 'action-disabled': 'rgba(255, 255, 255, 0.26)',\n 'action-disabled-bg': 'rgba(255, 255, 255, 0.12)',\n 'action-focus': 'rgba(255, 255, 255, 0.12)',\n // Misc\n 'snackbar-bg': '255 255 255',\n 'map-grid': '37 120 255',\n // Table\n 'table-top-header': '50 52 65',\n 'table-header': '57 60 66',\n 'table-row': '46 50 56',\n 'table-col-border': '42 46 52',\n 'table-border': 'rgba(81, 81, 81, 1)',\n ...sharedSemanticDark,\n};\n\n// ── Static material palette scales ────────────────────────────────────────────\n// These are baked into the Tailwind preset directly (not CSS variables).\n\nexport const staticPalette: StaticPalette = {\n yellow: { '50': '#fffde7', '100': '#fff9c4', '200': '#fff59d', '300': '#fff176', '400': '#ffee58', '500': '#ffeb3b', '600': '#fdd835', '700': '#fbc02d', '800': '#f9a825', '900': '#f57f17', A100: '#ffff8d', A200: '#ffff00', A400: '#ffea00', A700: '#ffd600' },\n amber: { '50': '#fff8e1', '100': '#ffecb3', '200': '#ffe082', '300': '#ffd54f', '400': '#ffca28', '500': '#ffc107', '600': '#ffb300', '700': '#ffa000', '800': '#ff8f00', '900': '#ff6f00', A100: '#ffe57f', A200: '#ffd740', A400: '#ffc400', A700: '#ffab00' },\n blue: { '50': '#e3f2fd', '100': '#bbdefb', '200': '#90caf9', '300': '#64b5f6', '400': '#42a5f5', '500': '#2196f3', '600': '#1e88e5', '700': '#1976d2', '800': '#1565c0', '900': '#0d47a1', A100: '#82b1ff', A200: '#448aff', A400: '#2979ff', A700: '#2962ff' },\n blueGrey: { '50': '#eceff1', '100': '#cfd8dc', '200': '#b0bec5', '300': '#90a4ae', '400': '#78909c', '500': '#607d8b', '600': '#546e7a', '700': '#455a64', '800': '#37474f', '900': '#263238', A100: '#cfd8dc', A200: '#b0bec5', A400: '#78909c', A700: '#455a64' },\n brown: { '50': '#efebe9', '100': '#d7ccc8', '200': '#bcaaa4', '300': '#a1887f', '400': '#8d6e63', '500': '#795548', '600': '#6d4c41', '700': '#5d4037', '800': '#4e342e', '900': '#3e2723', A100: '#d7ccc8', A200: '#bcaaa4', A400: '#8d6e63', A700: '#5d4037' },\n teal: { '50': '#e0f2f1', '100': '#b2dfdb', '200': '#80cbc4', '300': '#4db6ac', '400': '#26a69a', '500': '#009688', '600': '#00897b', '700': '#00796b', '800': '#00695c', '900': '#004d40', A100: '#a7ffeb', A200: '#64ffda', A400: '#1de9b6', A700: '#00bfa5' },\n red: { '50': '#ffebee', '100': '#ffcdd2', '200': '#ef9a9a', '300': '#e57373', '400': '#ef5350', '500': '#f44336', '600': '#e53935', '700': '#d32f2f', '800': '#c62828', '900': '#b71c1c', A100: '#ff8a80', A200: '#ff5252', A400: '#ff1744', A700: '#d50000' },\n purple: { '50': '#f3e5f5', '100': '#e1bee7', '200': '#ce93d8', '300': '#ba68c8', '400': '#ab47bc', '500': '#9c27b0', '600': '#8e24aa', '700': '#7b1fa2', '800': '#6a1b9a', '900': '#4a148c', A100: '#ea80fc', A200: '#e040fb', A400: '#d500f9', A700: '#aa00ff' },\n pink: { '50': '#fce4ec', '100': '#f8bbd0', '200': '#f48fb1', '300': '#f06292', '400': '#ec407a', '500': '#e91e63', '600': '#d81b60', '700': '#c2185b', '800': '#ad1457', '900': '#880e4f', A100: '#ff80ab', A200: '#ff4081', A400: '#f50057', A700: '#c51162' },\n orange: { '50': '#fff3e0', '100': '#ffe0b2', '200': '#ffcc80', '300': '#ffb74d', '400': '#ffa726', '500': '#ff9800', '600': '#fb8c00', '700': '#f57c00', '800': '#ef6c00', '900': '#e65100', A100: '#ffd180', A200: '#ffab40', A400: '#ff9100', A700: '#ff6d00' },\n lime: { '50': '#f9fbe7', '100': '#f0f4c3', '200': '#e6ee9c', '300': '#dce775', '400': '#d4e157', '500': '#cddc39', '600': '#c0ca33', '700': '#afb42b', '800': '#9e9d24', '900': '#827717', A100: '#f4ff81', A200: '#eeff41', A400: '#c6ff00', A700: '#aeea00' },\n lightGreen: { '50': '#f1f8e9', '100': '#dcedc8', '200': '#c5e1a5', '300': '#aed581', '400': '#9ccc65', '500': '#8bc34a', '600': '#7cb342', '700': '#689f38', '800': '#558b2f', '900': '#33691e', A100: '#ccff90', A200: '#b2ff59', A400: '#76ff03', A700: '#64dd17' },\n cyan: { '50': '#e0f7fa', '100': '#b2ebf2', '200': '#80deea', '300': '#4dd0e1', '400': '#26c6da', '500': '#00bcd4', '600': '#00acc1', '700': '#0097a7', '800': '#00838f', '900': '#006064', A100: '#84ffff', A200: '#18ffff', A400: '#00e5ff', A700: '#00b8d4' },\n deepOrange: { '50': '#fbe9e7', '100': '#ffccbc', '200': '#ffab91', '300': '#ff8a65', '400': '#ff7043', '500': '#ff5722', '600': '#f4511e', '700': '#e64a19', '800': '#d84315', '900': '#bf360c', A100: '#ff9e80', A200: '#ff6e40', A400: '#ff3d00', A700: '#dd2c00' },\n deepPurple: { '50': '#ede7f6', '100': '#d1c4e9', '200': '#b39ddb', '300': '#9575cd', '400': '#7e57c2', '500': '#673ab7', '600': '#5e35b1', '700': '#512da8', '800': '#4527a0', '900': '#311b92', A100: '#b388ff', A200: '#7c4dff', A400: '#651fff', A700: '#6200ea' },\n green: { '50': '#e8f5e9', '100': '#c8e6c9', '200': '#a5d6a7', '300': '#81c784', '400': '#66bb6a', '500': '#4caf50', '600': '#43a047', '700': '#388e3c', '800': '#2e7d32', '900': '#1b5e20', A100: '#b9f6ca', A200: '#69f0ae', A400: '#00e676', A700: '#00c853' },\n grey: { '50': '#fafafa', '100': '#f5f5f5', '200': '#eeeeee', '300': '#e0e0e0', '400': '#bdbdbd', '500': '#9e9e9e', '600': '#757575', '700': '#616161', '800': '#424242', '900': '#212121', A100: '#f5f5f5', A200: '#eeeeee', A400: '#bdbdbd', A700: '#616161' },\n indigo: { '50': '#e8eaf6', '100': '#c5cae9', '200': '#9fa8da', '300': '#7986cb', '400': '#5c6bc0', '500': '#3f51b5', '600': '#3949ab', '700': '#303f9f', '800': '#283593', '900': '#1a237e', A100: '#8c9eff', A200: '#536dfe', A400: '#3d5afe', A700: '#304ffe' },\n lightBlue: { '50': '#e1f5fe', '100': '#b3e5fc', '200': '#81d4fa', '300': '#4fc3f7', '400': '#29b6f6', '500': '#03a9f4', '600': '#039be5', '700': '#0288d1', '800': '#0277bd', '900': '#01579b', A100: '#80d8ff', A200: '#40c4ff', A400: '#00b0ff', A700: '#0091ea' },\n};\n\n// ── General named colors (static, rgba) ───────────────────────────────────────\n\nexport const generalColors = {\n 'yellow-golden': 'rgba(255, 215, 0, 0.6)',\n 'yellow-pale': 'rgba(255, 255, 153, 0.4)',\n 'yellow-amber': 'rgba(255, 191, 0, 0.7)',\n 'yellow-sunshine': 'rgba(255, 239, 0, 0.5)',\n 'yellow-light': 'rgba(255, 255, 0, 0.5)',\n 'yellow-warm': 'rgba(255, 204, 0, 0.8)',\n 'yellow-soft': 'rgba(255, 229, 153, 0.7)',\n 'red-rose': 'rgba(255, 51, 51, 0.5)',\n 'red-crimson': 'rgba(220, 20, 60, 0.6)',\n 'red-light-coral': 'rgba(240, 128, 128, 0.5)',\n 'red-fire-brick': 'rgba(178, 34, 34, 0.8)',\n 'red-bright': 'rgba(255, 0, 0, 0.7)',\n 'red-soft-coral': 'rgba(255, 102, 102, 0.6)',\n 'red-dark': 'rgba(204, 0, 0, 0.8)',\n 'blue-turquoise': 'rgba(64, 224, 208, 0.6)',\n 'blue-dodger': 'rgba(30, 144, 255, 0.5)',\n 'blue-navy': 'rgba(0, 0, 128, 0.8)',\n 'blue-steel': 'rgba(70, 130, 180, 0.7)',\n 'blue-sky': 'rgba(0, 153, 255, 0.5)',\n 'blue-light': 'rgba(51, 204, 255, 0.7)',\n 'blue-deep': 'rgba(0, 51, 204, 0.8)',\n 'green-lime': 'rgba(50, 205, 50, 0.5)',\n 'green-pale': 'rgba(152, 251, 152, 0.4)',\n 'green-forest': 'rgba(34, 139, 34, 0.7)',\n 'green-olive': 'rgba(128, 128, 0, 0.6)',\n 'green-fresh': 'rgba(0, 204, 0, 0.6)',\n 'green-soft-mint': 'rgba(102, 255, 153, 0.7)',\n 'green-dark': 'rgba(0, 153, 76, 0.8)',\n 'orange-tangerine': 'rgba(255, 140, 0, 0.6)',\n 'orange-apricot': 'rgba(251, 206, 177, 0.5)',\n 'orange-burnt': 'rgba(204, 85, 0, 0.7)',\n 'orange-carrot': 'rgba(237, 145, 33, 0.6)',\n 'orange-bright': 'rgba(255, 102, 0, 0.7)',\n 'orange-soft-peach': 'rgba(255, 178, 102, 0.6)',\n 'orange-deep': 'rgba(204, 85, 0, 0.8)',\n} as const;\n","import type { ThemeConfig } from './types';\nimport {\n sharedSemanticLight,\n sharedSemanticDark,\n structylSubTokensLight,\n structylSubTokensDark,\n} from './palette';\n\n// ── Helper: build per-theme primary/secondary sub-tokens ─────────────────────\n\nfunction primarySubTokensLight(\n lightRgb: string,\n darkRgb: string,\n contrastRgb: string,\n darkBgRgb: string,\n mainRgb: string,\n): Record<string, string> {\n return {\n 'primary-light': lightRgb,\n 'primary-dark': darkRgb,\n 'primary-contrast': contrastRgb,\n 'primary-dark-bg': darkBgRgb,\n 'primary-state-contained': `rgba(${mainRgb.split(' ').join(', ')}, 0.3)`,\n 'primary-state-outlined': `rgba(${mainRgb.split(' ').join(', ')}, 0.1)`,\n 'primary-state-resting': `rgba(${mainRgb.split(' ').join(', ')}, 0.5)`,\n 'primary-shade-12': `rgba(${darkRgb.split(' ').join(', ')}, 0.12)`,\n 'primary-shade-16': `rgba(${darkRgb.split(' ').join(', ')}, 0.16)`,\n };\n}\n\nfunction secondarySubTokensLight(\n lightRgb: string,\n darkRgb: string,\n contrastRgb: string,\n darkBgRgb: string,\n mainRgb: string,\n): Record<string, string> {\n return {\n 'secondary-light': lightRgb,\n 'secondary-dark': darkRgb,\n 'secondary-contrast': contrastRgb,\n 'secondary-dark-bg': darkBgRgb,\n 'secondary-state-contained': `rgba(${mainRgb.split(' ').join(', ')}, 0.3)`,\n 'secondary-state-outlined': `rgba(${mainRgb.split(' ').join(', ')}, 0.1)`,\n 'secondary-state-resting': `rgba(${mainRgb.split(' ').join(', ')}, 0.5)`,\n 'secondary-shade-12': `rgba(${mainRgb.split(' ').join(', ')}, 0.12)`,\n 'secondary-shade-16': `rgba(${mainRgb.split(' ').join(', ')}, 0.16)`,\n };\n}\n\n// RGB channel format required: values must be space-separated (e.g. \"15 23 41\"), not comma-separated,\n// because they are interpolated into rgba() as `rgba(${rgb.split(' ').join(', ')}, alpha)`.\nfunction textSurfaceTokens(fgRgb: string, bgRgb: string, paperRgb: string, infoRgb: string, snackbarRgb: string): Record<string, string> {\n return {\n text: fgRgb,\n 'text-secondary': `rgba(${fgRgb.split(' ').join(', ')}, 0.6)`,\n 'text-disabled': `rgba(${fgRgb.split(' ').join(', ')}, 0.38)`,\n 'text-info': infoRgb,\n 'text-fill': fgRgb,\n 'text-shade-12': `rgba(${fgRgb.split(' ').join(', ')}, 0.12)`,\n 'text-shade-16': `rgba(${fgRgb.split(' ').join(', ')}, 0.16)`,\n surface: bgRgb,\n 'surface-paper': paperRgb,\n divider: `rgba(${fgRgb.split(' ').join(', ')}, 0.23)`,\n 'outlined-border': `rgba(${fgRgb.split(' ').join(', ')}, 0.12)`,\n 'input-line': `rgba(${fgRgb.split(' ').join(', ')}, 0.42)`,\n 'action-active': `rgba(${fgRgb.split(' ').join(', ')}, 0.54)`,\n 'action-hover': `rgba(${fgRgb.split(' ').join(', ')}, 0.05)`,\n 'action-selected': `rgba(${fgRgb.split(' ').join(', ')}, 0.08)`,\n 'action-disabled': `rgba(${fgRgb.split(' ').join(', ')}, 0.26)`,\n 'action-disabled-bg': `rgba(${fgRgb.split(' ').join(', ')}, 0.12)`,\n 'action-focus': `rgba(${fgRgb.split(' ').join(', ')}, 0.12)`,\n 'snackbar-bg': snackbarRgb,\n 'map-grid': '255 255 255',\n };\n}\n\nfunction tableTokens({ topHeader, header, row, colBorder, border }: {\n topHeader: string; header: string; row: string; colBorder: string; border: string;\n}): Record<string, string> {\n return {\n 'table-top-header': topHeader,\n 'table-header': header,\n 'table-row': row,\n 'table-col-border': colBorder,\n 'table-border': border,\n };\n}\n\n// ── Slate ────────────────────────────────────────────────────────────────────\n\nconst slate: ThemeConfig = {\n light: {\n bg: '0 0% 100%',\n fg: '222 47% 11%',\n card: '0 0% 100%',\n 'card-fg': '222 47% 11%',\n popover: '0 0% 100%',\n 'popover-fg': '222 47% 11%',\n primary: '222 47% 11%',\n 'primary-fg': '210 40% 98%',\n 'primary-hover': '222 47% 20%',\n 'primary-active': '222 47% 8%',\n secondary: '210 40% 96%',\n 'secondary-fg': '222 47% 11%',\n muted: '210 40% 96%',\n 'muted-fg': '215 16% 47%',\n accent: '210 40% 96%',\n 'accent-fg': '222 47% 11%',\n destructive: '0 84% 60%',\n 'destructive-fg': '0 0% 5%',\n success: '142 71% 45%',\n 'success-fg': '0 0% 5%',\n warning: '38 92% 50%',\n 'warning-fg': '38 92% 8%',\n info: '199 89% 48%',\n 'info-fg': '0 0% 5%',\n border: '214 32% 91%',\n 'border-strong': '214 24% 80%',\n input: '214 32% 91%',\n ring: '222 47% 11%',\n overlay: '222 47% 11%',\n shadow: '222 47% 11%',\n // New sub-tokens — primary: '222 47% 11%' ≈ RGB(15, 23, 41)\n ...primarySubTokensLight('124 149 208', '7 10 19', '255 255 255', '11 15 26', '15 23 41'),\n // secondary: '210 40% 96%' ≈ RGB(237, 241, 247)\n ...secondarySubTokensLight('245 248 252', '180 196 220', '15 23 41', '200 210 225', '201 212 228'),\n // fg ≈ RGB(15, 23, 41); bg = white; info = sky blue\n ...textSurfaceTokens('15 23 41', '255 255 255', '255 255 255', '14 165 233', '15 23 41'),\n ...tableTokens({ topHeader: '238 242 255', header: '241 245 249', row: '255 255 255', colBorder: '250 250 250', border: 'rgba(214, 219, 228, 1)' }),\n ...sharedSemanticLight,\n },\n dark: {\n bg: '222 47% 6%',\n fg: '210 40% 98%',\n card: '222 47% 8%',\n 'card-fg': '210 40% 98%',\n popover: '222 35% 10%',\n 'popover-fg': '210 40% 98%',\n primary: '210 40% 98%',\n 'primary-fg': '222 47% 11%',\n 'primary-hover': '210 40% 90%',\n 'primary-active': '210 40% 95%',\n secondary: '217 33% 17%',\n 'secondary-fg': '210 40% 98%',\n muted: '217 33% 17%',\n 'muted-fg': '215 20% 65%',\n accent: '217 33% 20%',\n 'accent-fg': '210 40% 98%',\n destructive: '0 70% 50%',\n 'destructive-fg': '0 0% 100%',\n success: '142 65% 50%',\n 'success-fg': '0 0% 5%',\n warning: '38 92% 55%',\n 'warning-fg': '38 92% 8%',\n info: '199 89% 55%',\n 'info-fg': '0 0% 5%',\n border: '217 33% 20%',\n 'border-strong': '217 25% 30%',\n input: '217 33% 20%',\n ring: '213 27% 84%',\n overlay: '0 0% 0%',\n shadow: '0 0% 0%',\n // primary dark: '210 40% 98%' ≈ RGB(248, 251, 254)\n ...primarySubTokensLight('210 220 235', '255 255 255', '15 23 41', '25 35 55', '248 251 254'),\n // secondary dark: '217 33% 17%' ≈ RGB(29, 40, 58)\n ...secondarySubTokensLight('22 30 45', '44 60 87', '248 251 254', '35 50 72', '29 40 58'),\n // fg dark ≈ RGB(248, 251, 254)\n ...textSurfaceTokens('248 251 254', '8 11 22', '12 16 30', '56 189 248', '248 251 254'),\n ...tableTokens({ topHeader: '17 25 41', header: '22 31 51', row: '12 16 30', colBorder: '8 11 22', border: 'rgba(51, 65, 86, 1)' }),\n ...sharedSemanticDark,\n 'map-grid': '248 251 254',\n },\n};\n\n// ── Zinc ─────────────────────────────────────────────────────────────────────\n\nconst zinc: ThemeConfig = {\n light: {\n bg: '0 0% 100%',\n fg: '240 10% 4%',\n card: '0 0% 100%',\n 'card-fg': '240 10% 4%',\n popover: '0 0% 100%',\n 'popover-fg': '240 10% 4%',\n primary: '240 6% 10%',\n 'primary-fg': '0 0% 98%',\n 'primary-hover': '240 6% 20%',\n 'primary-active': '240 6% 6%',\n secondary: '240 5% 96%',\n 'secondary-fg': '240 6% 10%',\n muted: '240 5% 96%',\n 'muted-fg': '240 4% 46%',\n accent: '240 5% 96%',\n 'accent-fg': '240 6% 10%',\n destructive: '0 84% 60%',\n 'destructive-fg': '0 0% 5%',\n success: '142 71% 45%',\n 'success-fg': '0 0% 5%',\n warning: '38 92% 50%',\n 'warning-fg': '38 92% 8%',\n info: '199 89% 48%',\n 'info-fg': '0 0% 5%',\n border: '240 6% 90%',\n 'border-strong': '240 5% 80%',\n input: '240 6% 90%',\n ring: '240 10% 4%',\n overlay: '240 10% 4%',\n shadow: '240 10% 4%',\n // primary: '240 6% 10%' ≈ RGB(24, 24, 27)\n ...primarySubTokensLight('158 158 164', '10 10 11', '255 255 255', '18 18 22', '24 24 27'),\n // secondary: '240 5% 96%' ≈ RGB(245, 245, 246)\n ...secondarySubTokensLight('248 248 249', '186 186 191', '24 24 27', '196 196 201', '186 186 191'),\n // fg ≈ RGB(10, 10, 11)\n ...textSurfaceTokens('10 10 11', '255 255 255', '255 255 255', '14 165 233', '10 10 11'),\n ...tableTokens({ topHeader: '240 240 244', header: '244 244 245', row: '255 255 255', colBorder: '250 250 250', border: 'rgba(228, 228, 231, 1)' }),\n ...sharedSemanticLight,\n },\n dark: {\n bg: '240 10% 6%',\n fg: '0 0% 98%',\n card: '240 10% 8%',\n 'card-fg': '0 0% 98%',\n popover: '240 8% 10%',\n 'popover-fg': '0 0% 98%',\n primary: '0 0% 98%',\n 'primary-fg': '240 6% 10%',\n 'primary-hover': '0 0% 90%',\n 'primary-active': '0 0% 95%',\n secondary: '240 4% 16%',\n 'secondary-fg': '0 0% 98%',\n muted: '240 4% 16%',\n 'muted-fg': '240 5% 65%',\n accent: '240 4% 20%',\n 'accent-fg': '0 0% 98%',\n destructive: '0 70% 50%',\n 'destructive-fg': '0 0% 100%',\n success: '142 65% 50%',\n 'success-fg': '0 0% 5%',\n warning: '38 92% 55%',\n 'warning-fg': '38 92% 8%',\n info: '199 89% 55%',\n 'info-fg': '0 0% 5%',\n border: '240 4% 20%',\n 'border-strong': '240 5% 30%',\n input: '240 4% 20%',\n ring: '240 5% 84%',\n overlay: '0 0% 0%',\n shadow: '0 0% 0%',\n // primary dark: '0 0% 98%' ≈ RGB(250, 250, 250)\n ...primarySubTokensLight('200 200 202', '255 255 255', '10 10 11', '20 20 24', '250 250 250'),\n // secondary dark: '240 4% 16%' ≈ RGB(38, 38, 42)\n ...secondarySubTokensLight('30 30 34', '52 52 58', '250 250 250', '44 44 49', '38 38 42'),\n // fg dark ≈ RGB(250, 250, 250)\n ...textSurfaceTokens('250 250 250', '14 14 17', '19 19 22', '56 189 248', '250 250 250'),\n ...tableTokens({ topHeader: '22 22 26', header: '28 28 32', row: '19 19 22', colBorder: '14 14 17', border: 'rgba(63, 63, 70, 1)' }),\n ...sharedSemanticDark,\n 'map-grid': '250 250 250',\n },\n};\n\n// ── Rose ─────────────────────────────────────────────────────────────────────\n\nconst rose: ThemeConfig = {\n light: {\n bg: '0 0% 100%',\n fg: '240 10% 4%',\n card: '0 0% 100%',\n 'card-fg': '240 10% 4%',\n popover: '0 0% 100%',\n 'popover-fg': '240 10% 4%',\n primary: '347 77% 50%',\n 'primary-fg': '356 100% 97%',\n 'primary-hover': '347 80% 56%',\n 'primary-active': '347 75% 44%',\n secondary: '240 5% 96%',\n 'secondary-fg': '240 6% 10%',\n muted: '240 5% 96%',\n 'muted-fg': '240 4% 46%',\n accent: '240 5% 96%',\n 'accent-fg': '240 6% 10%',\n destructive: '0 84% 60%',\n 'destructive-fg': '0 0% 5%',\n success: '142 71% 45%',\n 'success-fg': '0 0% 5%',\n warning: '38 92% 50%',\n 'warning-fg': '38 92% 8%',\n info: '199 89% 48%',\n 'info-fg': '0 0% 5%',\n border: '240 6% 90%',\n 'border-strong': '240 5% 80%',\n input: '240 6% 90%',\n ring: '347 77% 50%',\n overlay: '240 10% 4%',\n shadow: '347 60% 30%',\n // primary: '347 77% 50%' ≈ RGB(226, 29, 72)\n ...primarySubTokensLight('237 120 145', '135 18 43', '255 255 255', '107 14 34', '226 29 72'),\n // secondary: same as zinc secondary\n ...secondarySubTokensLight('248 248 249', '186 186 191', '10 10 11', '196 196 201', '186 186 191'),\n // fg ≈ RGB(10, 10, 11)\n ...textSurfaceTokens('10 10 11', '255 255 255', '255 255 255', '14 165 233', '10 10 11'),\n ...tableTokens({ topHeader: '255 241 242', header: '255 245 246', row: '255 255 255', colBorder: '250 250 250', border: 'rgba(244, 227, 229, 1)' }),\n ...sharedSemanticLight,\n },\n dark: {\n bg: '20 14% 5%',\n fg: '0 0% 95%',\n card: '24 10% 8%',\n 'card-fg': '0 0% 95%',\n popover: '0 0% 9%',\n 'popover-fg': '0 0% 95%',\n primary: '347 77% 50%',\n 'primary-fg': '356 100% 97%',\n 'primary-hover': '347 80% 56%',\n 'primary-active': '347 75% 44%',\n secondary: '240 4% 16%',\n 'secondary-fg': '0 0% 98%',\n muted: '0 0% 15%',\n 'muted-fg': '240 5% 65%',\n accent: '12 7% 15%',\n 'accent-fg': '0 0% 98%',\n destructive: '0 70% 50%',\n 'destructive-fg': '0 86% 97%',\n success: '142 65% 50%',\n 'success-fg': '0 0% 5%',\n warning: '38 92% 55%',\n 'warning-fg': '38 92% 8%',\n info: '199 89% 55%',\n 'info-fg': '0 0% 5%',\n border: '240 4% 16%',\n 'border-strong': '240 5% 26%',\n input: '240 4% 20%',\n ring: '347 77% 50%',\n overlay: '0 0% 0%',\n shadow: '0 0% 0%',\n // primary rose same in dark: '347 77% 50%' ≈ RGB(226, 29, 72)\n ...primarySubTokensLight('237 120 145', '135 18 43', '255 255 255', '107 14 34', '226 29 72'),\n // secondary dark: '240 4% 16%' ≈ RGB(38, 38, 42)\n ...secondarySubTokensLight('30 30 34', '52 52 58', '242 242 242', '44 44 49', '38 38 42'),\n // fg ≈ RGB(242, 242, 242) ('0 0% 95%')\n ...textSurfaceTokens('242 242 242', '14 12 10', '22 20 17', '56 189 248', '242 242 242'),\n ...tableTokens({ topHeader: '28 20 20', header: '36 28 28', row: '22 20 17', colBorder: '14 12 10', border: 'rgba(70, 55, 55, 1)' }),\n ...sharedSemanticDark,\n 'map-grid': '242 242 242',\n },\n};\n\n// ── Structyl ─────────────────────────────────────────────────────────────────────\n// Full MUI-inspired palette with exact colorsLight/colorsDark values\n\nconst structyl: ThemeConfig = {\n light: {\n bg: '0 0% 98%',\n fg: '217 11% 18%',\n card: '0 0% 100%',\n 'card-fg': '217 11% 18%',\n popover: '0 0% 100%',\n 'popover-fg': '217 11% 18%',\n primary: '242 32% 48%',\n 'primary-fg': '0 0% 100%',\n 'primary-hover': '242 32% 55%',\n 'primary-active': '245 67% 24%',\n secondary: '217 100% 57%',\n 'secondary-fg': '0 0% 100%',\n muted: '0 0% 96%',\n 'muted-fg': '0 0% 62%',\n accent: '253 80% 94%',\n 'accent-fg': '253 76% 67%',\n destructive: '340 71% 55%',\n 'destructive-fg': '0 0% 5%',\n success: '123 57% 53%',\n 'success-fg': '0 0% 5%',\n warning: '17 100% 54%',\n 'warning-fg': '38 92% 8%',\n info: '253 76% 67%',\n 'info-fg': '0 0% 5%',\n border: '240 2% 90%',\n 'border-strong': '0 0% 78%',\n input: '240 2% 90%',\n ring: '242 32% 48%',\n overlay: '217 11% 18%',\n shadow: '217 11% 18%',\n ...structylSubTokensLight,\n },\n dark: {\n bg: '217 11% 18%',\n fg: '0 0% 100%',\n card: '216 10% 20%',\n 'card-fg': '0 0% 100%',\n popover: '216 10% 20%',\n 'popover-fg': '0 0% 100%',\n primary: '243 85% 87%',\n 'primary-fg': '245 67% 24%',\n 'primary-hover': '243 85% 80%',\n 'primary-active': '243 85% 91%',\n secondary: '225 87% 84%',\n 'secondary-fg': '215 100% 22%',\n muted: '217 12% 26%',\n 'muted-fg': '207 12% 63%',\n accent: '217 13% 28%',\n 'accent-fg': '243 85% 87%',\n destructive: '348 75% 83%',\n 'destructive-fg': '334 100% 28%',\n success: '109 65% 64%',\n 'success-fg': '127 100% 16%',\n warning: '17 79% 79%',\n 'warning-fg': '18 100% 26%',\n info: '243 85% 87%',\n 'info-fg': '247 58% 44%',\n border: '0 0% 32%',\n 'border-strong': '0 0% 39%',\n input: '217 12% 26%',\n ring: '243 85% 87%',\n overlay: '0 0% 0%',\n shadow: '0 0% 0%',\n ...structylSubTokensDark,\n },\n};\n\nexport const defaultThemes: Record<string, ThemeConfig> = { slate, zinc, rose, structyl };\n","'use client';\n\nimport * as React from 'react';\nimport { defaultThemes } from './themes';\nimport type { ResolvedMode, Theme, ThemeConfig, ThemeMode } from './types';\n\nexport interface ThemeContextValue {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n mode: ThemeMode;\n setMode: (mode: ThemeMode) => void;\n resolvedMode: ResolvedMode;\n themes: string[];\n}\n\nconst ThemeContext = React.createContext<ThemeContextValue | undefined>(undefined);\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n defaultTheme?: Theme;\n defaultMode?: ThemeMode;\n storageKey?: string | false;\n enableTransitions?: boolean;\n themes?: Record<string, ThemeConfig>;\n attribute?: string;\n}\n\nexport function ThemeProvider(props: ThemeProviderProps): React.JSX.Element {\n const {\n children,\n defaultTheme = 'slate',\n defaultMode = 'system',\n storageKey = 'structyl-theme',\n enableTransitions = true,\n themes: customThemes,\n attribute = 'data-theme',\n } = props;\n\n const themes = React.useMemo(\n () => ({ ...defaultThemes, ...customThemes }),\n [customThemes],\n );\n\n const [theme, setThemeState] = React.useState<Theme>(defaultTheme);\n const [mode, setModeState] = React.useState<ThemeMode>(defaultMode);\n const [systemMode, setSystemMode] = React.useState<ResolvedMode>('light');\n\n // Hydrate from storage on mount\n React.useEffect(() => {\n if (!storageKey || typeof window === 'undefined') return;\n try {\n const stored = window.localStorage.getItem(storageKey);\n if (stored) {\n const parsed = JSON.parse(stored) as { theme?: Theme; mode?: ThemeMode };\n if (parsed.theme) setThemeState(parsed.theme);\n if (parsed.mode) setModeState(parsed.mode);\n }\n } catch {\n // ignore corrupted storage\n }\n }, [storageKey]);\n\n // Track system preference\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n const update = () => setSystemMode(mql.matches ? 'dark' : 'light');\n update();\n mql.addEventListener('change', update);\n return () => mql.removeEventListener('change', update);\n }, []);\n\n const resolvedMode: ResolvedMode = mode === 'system' ? systemMode : mode;\n\n // Apply data-* attributes and inject CSS variables\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n\n if (!enableTransitions) {\n const css = document.createElement('style');\n css.appendChild(\n document.createTextNode(\n '*,*::before,*::after{transition:none!important;animation:none!important}',\n ),\n );\n document.head.appendChild(css);\n // force reflow then remove\n void window.getComputedStyle(document.body);\n requestAnimationFrame(() => document.head.removeChild(css));\n }\n\n root.setAttribute(attribute, theme);\n root.setAttribute('data-mode', resolvedMode);\n root.style.colorScheme = resolvedMode;\n\n // Inject CSS variables from current theme\n const cfg = themes[theme];\n if (cfg) {\n const tokens = cfg[resolvedMode];\n for (const [key, value] of Object.entries(tokens)) {\n root.style.setProperty(`--color-${key}`, value);\n }\n }\n }, [theme, resolvedMode, themes, attribute, enableTransitions]);\n\n // Persist to storage on change\n React.useEffect(() => {\n if (!storageKey || typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(storageKey, JSON.stringify({ theme, mode }));\n } catch {\n // storage may be unavailable (Safari private mode, etc.)\n }\n }, [theme, mode, storageKey]);\n\n const value = React.useMemo<ThemeContextValue>(\n () => ({\n theme,\n setTheme: setThemeState,\n mode,\n setMode: setModeState,\n resolvedMode,\n themes: Object.keys(themes),\n }),\n [theme, mode, resolvedMode, themes],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\nexport { ThemeContext };\n","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from './theme-provider';\n\nexport function useTheme() {\n const context = React.useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a <ThemeProvider>');\n }\n return context;\n}\n","import * as React from 'react';\nimport type { ThemeMode } from './types';\nimport { defaultThemes } from './themes';\n\ninterface ThemeScriptProps {\n defaultTheme?: string;\n defaultMode?: ThemeMode;\n storageKey?: string;\n attribute?: string;\n}\n\nfunction tokensToVars(tokens: Record<string, string>): string {\n return Object.entries(tokens)\n .map(([k, v]) => `--color-${k}:${v}`)\n .join(';');\n}\n\n/**\n * Renders a <style> block with the default theme's CSS variables plus an inline\n * script that updates them from localStorage before first paint. Place inside\n * <head> of your root layout to prevent flash of unstyled content.\n */\nexport function ThemeScript({\n defaultTheme = 'slate',\n defaultMode = 'system',\n storageKey = 'structyl-theme',\n attribute = 'data-theme',\n}: ThemeScriptProps): React.JSX.Element {\n const cfg = defaultThemes[defaultTheme as keyof typeof defaultThemes];\n const lightVars = cfg ? tokensToVars(cfg.light as Record<string, string>) : '';\n const darkVars = cfg ? tokensToVars(cfg.dark as Record<string, string>) : '';\n\n // Static CSS covers the default theme before JS runs (SSR + initial paint).\n // [data-mode=\"dark\"] overrides are picked up as soon as the script below sets\n // the attribute on <html>, which happens before the browser paints.\n const staticCss = lightVars\n ? `:root{${lightVars}}:root[data-mode=\"dark\"]{${darkVars}}`\n : '';\n\n const script = `\n(function(){\n try {\n var stored = JSON.parse(localStorage.getItem(${JSON.stringify(storageKey)}) || '{}');\n var theme = stored.theme || ${JSON.stringify(defaultTheme)};\n var mode = stored.mode || ${JSON.stringify(defaultMode)};\n var resolved = mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : mode;\n var root = document.documentElement;\n root.setAttribute(${JSON.stringify(attribute)}, theme);\n root.setAttribute('data-mode', resolved);\n root.style.colorScheme = resolved;\n } catch (e) {}\n})();`.trim();\n\n return (\n <>\n {staticCss && (\n <style dangerouslySetInnerHTML={{ __html: staticCss }} suppressHydrationWarning />\n )}\n <script dangerouslySetInnerHTML={{ __html: script }} suppressHydrationWarning />\n </>\n );\n}\n","/**\n * Color accent presets for @structyl/themes.\n *\n * Built-in presets cover 10 common accent colors. Users can extend the list\n * by creating additional `ColorPreset` objects and passing them to\n * `useColorPreset({ extraPresets: [...] })` or calling `applyColorPreset`\n * with any arbitrary hex color.\n */\n\n/* ── Types ─────────────────────────────────────────────────────────────────── */\n\n/** A single accent-color preset. */\nexport interface ColorPreset {\n /** Unique machine-readable identifier. */\n id: string;\n /** Human-readable display name. */\n name: string;\n /** Primary hex color value (e.g. `'#6366f1'`). */\n hex: string;\n}\n\n/* ── Built-in catalogue ─────────────────────────────────────────────────────── */\n\n/**\n * The 10 built-in accent presets shipped with @structyl/themes.\n * Typed `as const` so that `ColorPresetId` is a precise union of literal IDs.\n */\nexport const COLOR_PRESETS = [\n { id: 'structyl', name: 'Structyl', hex: '#5754a3' },\n { id: 'indigo', name: 'Indigo', hex: '#6366f1' },\n { id: 'ocean', name: 'Ocean', hex: '#0284c7' },\n { id: 'rose', name: 'Rose', hex: '#e11d48' },\n { id: 'forest', name: 'Forest', hex: '#16a34a' },\n { id: 'sunset', name: 'Sunset', hex: '#f97316' },\n { id: 'violet', name: 'Violet', hex: '#7c3aed' },\n { id: 'slate', name: 'Slate', hex: '#475569' },\n { id: 'ember', name: 'Ember', hex: '#be123c' },\n { id: 'zinc', name: 'Zinc', hex: '#71717a' },\n] as const satisfies ReadonlyArray<ColorPreset>;\n\n/** Union of all built-in preset IDs (e.g. `'structyl' | 'indigo' | 'ocean' | ...`). */\nexport type ColorPresetId = (typeof COLOR_PRESETS)[number]['id'];\n\n/**\n * Create a custom preset object. Useful for building typed preset lists\n * that will be passed to `useColorPreset({ extraPresets: [...] })`.\n *\n * @example\n * const myPreset = createColorPreset('brand', 'My Brand', '#ff5500');\n */\nexport function createColorPreset(id: string, name: string, hex: string): ColorPreset {\n return { id, name, hex };\n}\n\n/* ── HSL utilities (zero deps) ──────────────────────────────────────────────── */\n\nfunction hexToHslParts(hex: string): { h: number; s: number; l: number } {\n const h = hex.replace('#', '');\n const r = parseInt(h.slice(0, 2), 16) / 255;\n const g = parseInt(h.slice(2, 4), 16) / 255;\n const b = parseInt(h.slice(4, 6), 16) / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let hue = 0;\n let sat = 0;\n const lum = (max + min) / 2;\n if (max !== min) {\n const d = max - min;\n sat = lum > 0.5 ? d / (2 - max - min) : d / (max + min);\n if (max === r) hue = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n else if (max === g) hue = ((b - r) / d + 2) / 6;\n else hue = ((r - g) / d + 4) / 6;\n }\n return { h: Math.round(hue * 360), s: Math.round(sat * 100), l: Math.round(lum * 100) };\n}\n\nfunction hslStr({ h, s, l }: { h: number; s: number; l: number }): string {\n return `${h} ${s}% ${l}%`;\n}\n\nfunction shiftL(p: { h: number; s: number; l: number }, d: number) {\n return { ...p, l: Math.max(2, Math.min(97, p.l + d)) };\n}\n\nfunction relativeLuminance(hex: string): number {\n const h = hex.replace('#', '');\n const lin = (c: number) => {\n const v = c / 255;\n return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n };\n return (\n 0.2126 * lin(parseInt(h.slice(0, 2), 16)) +\n 0.7152 * lin(parseInt(h.slice(2, 4), 16)) +\n 0.0722 * lin(parseInt(h.slice(4, 6), 16))\n );\n}\n\n/* ── DOM utilities ──────────────────────────────────────────────────────────── */\n\n/** CSS custom properties overridden by `applyColorPreset`. */\nconst PRESET_CSS_VARS = [\n '--color-primary',\n '--color-ring',\n '--color-primary-hover',\n '--color-primary-active',\n '--color-primary-fg',\n] as const;\n\n/**\n * Apply an accent preset to the document root by overriding the five\n * primary-color CSS custom properties. Safe to call on every theme/mode\n * change — the ThemeProvider will reset base vars first, then this re-applies.\n *\n * No-op in SSR environments.\n *\n * @param hex - The hex color string (e.g. `'#6366f1'`).\n */\nexport function applyColorPreset(hex: string): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n const p = hexToHslParts(hex);\n const fg = relativeLuminance(hex) > 0.179 ? '222 47% 11%' : '0 0% 100%';\n root.style.setProperty('--color-primary', hslStr(p));\n root.style.setProperty('--color-ring', hslStr(p));\n root.style.setProperty('--color-primary-hover', hslStr(shiftL(p, 6)));\n root.style.setProperty('--color-primary-active', hslStr(shiftL(p, -8)));\n root.style.setProperty('--color-primary-fg', fg);\n}\n\n/**\n * Remove all CSS custom properties applied by `applyColorPreset`,\n * restoring whatever values the active ThemeProvider theme supplies.\n *\n * No-op in SSR environments.\n */\nexport function clearColorPreset(): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n PRESET_CSS_VARS.forEach(k => root.style.removeProperty(k));\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { useTheme } from './use-theme';\nimport {\n COLOR_PRESETS,\n applyColorPreset,\n clearColorPreset,\n type ColorPreset,\n} from './color-presets';\n\nconst DEFAULT_STORAGE_KEY = 'structyl-color-preset';\n\n/* ── Types ─────────────────────────────────────────────────────────────────── */\n\nexport interface UseColorPresetOptions {\n /**\n * Custom presets to add on top of the 10 built-ins.\n * Built-ins always come first in `presets`.\n *\n * @example\n * const brandPreset = createColorPreset('brand', 'Brand Blue', '#1a6cf0');\n * const { setPreset } = useColorPreset({ extraPresets: [brandPreset] });\n */\n extraPresets?: ColorPreset[];\n\n /**\n * localStorage key used to persist the active preset across page loads.\n * Override if you need multiple independent pickers on the same origin.\n *\n * @default 'structyl-color-preset'\n */\n storageKey?: string;\n}\n\nexport interface UseColorPresetReturn {\n /** All available presets: built-ins first, then any `extraPresets`. */\n presets: ColorPreset[];\n /** ID of the currently active preset, or `null` when using the default theme. */\n activeId: string | null;\n /** Full preset object for the active ID, or `null`. */\n activePreset: ColorPreset | null;\n /**\n * Activate a preset by its `id` and `hex` color.\n * Applies CSS variables immediately and persists to localStorage.\n */\n setPreset: (id: string, hex: string) => void;\n /**\n * Clear the active preset, restoring the ThemeProvider's base theme colors.\n * Also removes the stored value from localStorage.\n */\n clearPreset: () => void;\n}\n\n/* ── Hook ───────────────────────────────────────────────────────────────────── */\n\n/**\n * Manages an accent-color preset on top of the active structyl theme.\n *\n * Must be used inside a `<ThemeProvider>`. Persists the selection to\n * localStorage and re-applies it whenever the base theme or color-mode\n * changes (because ThemeProvider resets `--color-primary` on change).\n *\n * @example\n * function AccentPicker() {\n * const { presets, activeId, setPreset, clearPreset } = useColorPreset();\n * return (\n * <>\n * {presets.map(p => (\n * <button key={p.id} onClick={() => setPreset(p.id, p.hex)}\n * style={{ background: p.hex }}>\n * {p.name}\n * </button>\n * ))}\n * {activeId && <button onClick={clearPreset}>Reset</button>}\n * </>\n * );\n * }\n *\n * @example Adding custom presets\n * const brandPreset = createColorPreset('brand', 'Company Blue', '#1a6cf0');\n * const { presets } = useColorPreset({ extraPresets: [brandPreset] });\n */\nexport function useColorPreset(options: UseColorPresetOptions = {}): UseColorPresetReturn {\n const { extraPresets = [], storageKey = DEFAULT_STORAGE_KEY } = options;\n\n const { theme, resolvedMode } = useTheme();\n const [activeId, setActiveId] = useState<string | null>(null);\n\n const allPresets: ColorPreset[] = [...(COLOR_PRESETS as unknown as ColorPreset[]), ...extraPresets];\n\n // Hydrate from localStorage on mount\n useEffect(() => {\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored && allPresets.some(p => p.id === stored)) {\n setActiveId(stored);\n }\n } catch {\n // localStorage unavailable (e.g. private browsing with strict settings)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [storageKey]);\n\n // Re-apply CSS vars whenever base theme or color-mode changes (ThemeProvider resets them)\n useEffect(() => {\n if (!activeId) return;\n const preset = allPresets.find(p => p.id === activeId);\n if (preset) applyColorPreset(preset.hex);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeId, theme, resolvedMode]);\n\n const setPreset = useCallback((id: string, hex: string) => {\n setActiveId(id);\n applyColorPreset(hex);\n try { localStorage.setItem(storageKey, id); } catch { /* ignore */ }\n }, [storageKey]);\n\n const clearPreset = useCallback(() => {\n setActiveId(null);\n clearColorPreset();\n try { localStorage.removeItem(storageKey); } catch { /* ignore */ }\n }, [storageKey]);\n\n const activePreset = allPresets.find(p => p.id === activeId) ?? null;\n\n return { presets: allPresets, activeId, activePreset, setPreset, clearPreset };\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@structyl/themes",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"description": "Runtime theming for React: a ThemeProvider and CSS-variable token system with light/dark modes, SSR-safe anti-flash script, and accent presets.",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"react",
|
|
10
|
+
"typescript",
|
|
11
|
+
"structyl",
|
|
12
|
+
"theme",
|
|
13
|
+
"theming",
|
|
14
|
+
"dark-mode",
|
|
15
|
+
"css-variables",
|
|
16
|
+
"design-tokens",
|
|
17
|
+
"themeprovider",
|
|
18
|
+
"ssr",
|
|
19
|
+
"tailwind",
|
|
20
|
+
"color-scheme"
|
|
21
|
+
],
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"type": "module",
|
|
24
|
+
"sideEffects": [
|
|
25
|
+
"**/*.css"
|
|
26
|
+
],
|
|
27
|
+
"main": "./dist/index.cjs",
|
|
28
|
+
"module": "./dist/index.mjs",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"exports": {
|
|
31
|
+
".": {
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"import": "./dist/index.mjs",
|
|
34
|
+
"require": "./dist/index.cjs"
|
|
35
|
+
},
|
|
36
|
+
"./styles.css": "./dist/styles.css",
|
|
37
|
+
"./themes/*.css": "./dist/themes/*.css"
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"dist"
|
|
41
|
+
],
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"react": "^18.0.0 || ^19.0.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/react": "^19.0.0",
|
|
47
|
+
"react": "^19.0.0",
|
|
48
|
+
"tsup": "^8.3.0",
|
|
49
|
+
"typescript": "^5.6.3",
|
|
50
|
+
"vitest": "^2.1.2"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "tsup",
|
|
54
|
+
"dev": "tsup --watch",
|
|
55
|
+
"lint": "eslint src",
|
|
56
|
+
"test": "vitest run",
|
|
57
|
+
"test:watch": "vitest",
|
|
58
|
+
"typecheck": "tsc --noEmit",
|
|
59
|
+
"clean": "rm -rf dist .turbo"
|
|
60
|
+
}
|
|
61
|
+
}
|