@jasonshimmy/cer-material 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/README.md +989 -0
- package/dist/components/md-app-bar.d.ts +1 -0
- package/dist/components/md-badge.d.ts +1 -0
- package/dist/components/md-bottom-sheet.d.ts +1 -0
- package/dist/components/md-button-group.d.ts +1 -0
- package/dist/components/md-button.d.ts +1 -0
- package/dist/components/md-card.d.ts +1 -0
- package/dist/components/md-carousel.d.ts +1 -0
- package/dist/components/md-checkbox.d.ts +1 -0
- package/dist/components/md-chip.d.ts +1 -0
- package/dist/components/md-date-picker.d.ts +1 -0
- package/dist/components/md-dialog.d.ts +1 -0
- package/dist/components/md-divider.d.ts +1 -0
- package/dist/components/md-fab-menu.d.ts +1 -0
- package/dist/components/md-fab.d.ts +1 -0
- package/dist/components/md-icon-button.d.ts +1 -0
- package/dist/components/md-list.d.ts +1 -0
- package/dist/components/md-loading-indicator.d.ts +1 -0
- package/dist/components/md-menu.d.ts +1 -0
- package/dist/components/md-navigation-bar.d.ts +1 -0
- package/dist/components/md-navigation-drawer.d.ts +1 -0
- package/dist/components/md-navigation-rail.d.ts +1 -0
- package/dist/components/md-progress.d.ts +1 -0
- package/dist/components/md-radio.d.ts +1 -0
- package/dist/components/md-search.d.ts +1 -0
- package/dist/components/md-segmented-button.d.ts +1 -0
- package/dist/components/md-side-sheet.d.ts +1 -0
- package/dist/components/md-slider.d.ts +1 -0
- package/dist/components/md-snackbar.d.ts +1 -0
- package/dist/components/md-split-button.d.ts +1 -0
- package/dist/components/md-switch.d.ts +1 -0
- package/dist/components/md-tabs.d.ts +1 -0
- package/dist/components/md-text-field.d.ts +1 -0
- package/dist/components/md-time-picker.d.ts +1 -0
- package/dist/components/md-tooltip.d.ts +1 -0
- package/dist/composables/useControlledValue.d.ts +14 -0
- package/dist/composables/useEscapeKey.d.ts +16 -0
- package/dist/composables/useFocusReturn.d.ts +18 -0
- package/dist/composables/useFocusTrap.d.ts +31 -0
- package/dist/composables/useListKeyNav.d.ts +42 -0
- package/dist/composables/useScrollLock.d.ts +4 -0
- package/dist/index.cjs +5030 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +6250 -0
- package/dist/index.js.map +1 -0
- package/dist/theme.cjs +137 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.ts +14 -0
- package/dist/theme.js +148 -0
- package/dist/theme.js.map +1 -0
- package/dist/vite.svg +1 -0
- package/package.json +59 -0
package/dist/theme.cjs
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=`
|
|
2
|
+
:root {
|
|
3
|
+
/* ── Primary ───────────────────────────────── */
|
|
4
|
+
--md-sys-color-primary: #6750A4;
|
|
5
|
+
--md-sys-color-on-primary: #FFFFFF;
|
|
6
|
+
--md-sys-color-primary-container: #EADDFF;
|
|
7
|
+
--md-sys-color-on-primary-container: #21005D;
|
|
8
|
+
|
|
9
|
+
/* ── Secondary ─────────────────────────────── */
|
|
10
|
+
--md-sys-color-secondary: #625B71;
|
|
11
|
+
--md-sys-color-on-secondary: #FFFFFF;
|
|
12
|
+
--md-sys-color-secondary-container: #E8DEF8;
|
|
13
|
+
--md-sys-color-on-secondary-container:#1D192B;
|
|
14
|
+
|
|
15
|
+
/* ── Tertiary ──────────────────────────────── */
|
|
16
|
+
--md-sys-color-tertiary: #7D5260;
|
|
17
|
+
--md-sys-color-on-tertiary: #FFFFFF;
|
|
18
|
+
--md-sys-color-tertiary-container: #FFD8E4;
|
|
19
|
+
--md-sys-color-on-tertiary-container: #31111D;
|
|
20
|
+
|
|
21
|
+
/* ── Error ─────────────────────────────────── */
|
|
22
|
+
--md-sys-color-error: #B3261E;
|
|
23
|
+
--md-sys-color-on-error: #FFFFFF;
|
|
24
|
+
--md-sys-color-error-container: #F9DEDC;
|
|
25
|
+
--md-sys-color-on-error-container: #410E0B;
|
|
26
|
+
|
|
27
|
+
/* ── Surface & Background ──────────────────── */
|
|
28
|
+
--md-sys-color-background: #FFFBFE;
|
|
29
|
+
--md-sys-color-on-background: #1C1B1F;
|
|
30
|
+
--md-sys-color-surface: #FFFBFE;
|
|
31
|
+
--md-sys-color-on-surface: #1C1B1F;
|
|
32
|
+
--md-sys-color-surface-variant: #E7E0EC;
|
|
33
|
+
--md-sys-color-on-surface-variant: #49454F;
|
|
34
|
+
--md-sys-color-surface-container-lowest: #FFFFFF;
|
|
35
|
+
--md-sys-color-surface-container-low: #F7F2FA;
|
|
36
|
+
--md-sys-color-surface-container: #F3EDF7;
|
|
37
|
+
--md-sys-color-surface-container-high: #ECE6F0;
|
|
38
|
+
--md-sys-color-surface-container-highest: #E6E0E9;
|
|
39
|
+
|
|
40
|
+
/* ── Inverse ───────────────────────────────── */
|
|
41
|
+
--md-sys-color-inverse-surface: #313033;
|
|
42
|
+
--md-sys-color-inverse-on-surface: #F4EFF4;
|
|
43
|
+
--md-sys-color-inverse-primary: #D0BCFF;
|
|
44
|
+
|
|
45
|
+
/* ── Utility ───────────────────────────────── */
|
|
46
|
+
--md-sys-color-outline: #79747E;
|
|
47
|
+
--md-sys-color-outline-variant: #CAC4D0;
|
|
48
|
+
--md-sys-color-shadow: #000000;
|
|
49
|
+
--md-sys-color-scrim: #000000;
|
|
50
|
+
--md-sys-color-surface-tint: #6750A4;
|
|
51
|
+
|
|
52
|
+
/* ── Elevation shadows ─────────────────────── */
|
|
53
|
+
--md-sys-elevation-1: 0 1px 2px rgba(0,0,0,.3), 0 1px 3px 1px rgba(0,0,0,.15);
|
|
54
|
+
--md-sys-elevation-2: 0 1px 2px rgba(0,0,0,.3), 0 2px 6px 2px rgba(0,0,0,.15);
|
|
55
|
+
--md-sys-elevation-3: 0 4px 8px 3px rgba(0,0,0,.15), 0 1px 3px rgba(0,0,0,.3);
|
|
56
|
+
--md-sys-elevation-4: 0 6px 10px 4px rgba(0,0,0,.15), 0 2px 3px rgba(0,0,0,.3);
|
|
57
|
+
|
|
58
|
+
/* ── Typography ────────────────────────────── */
|
|
59
|
+
--md-sys-typescale-font: 'Roboto', 'Google Sans', sans-serif;
|
|
60
|
+
|
|
61
|
+
/* ── Shape ─────────────────────────────────── */
|
|
62
|
+
--md-sys-shape-corner-none: 0px;
|
|
63
|
+
--md-sys-shape-corner-extra-small: 4px;
|
|
64
|
+
--md-sys-shape-corner-small: 8px;
|
|
65
|
+
--md-sys-shape-corner-medium: 12px;
|
|
66
|
+
--md-sys-shape-corner-large: 16px;
|
|
67
|
+
--md-sys-shape-corner-extra-large: 28px;
|
|
68
|
+
--md-sys-shape-corner-full: 9999px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
body {
|
|
72
|
+
font-family: var(--md-sys-typescale-font);
|
|
73
|
+
background-color: var(--md-sys-color-background);
|
|
74
|
+
color: var(--md-sys-color-on-background);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
#app {
|
|
78
|
+
min-height: 100vh;
|
|
79
|
+
}
|
|
80
|
+
`,a=`
|
|
81
|
+
@media (prefers-color-scheme: dark) {
|
|
82
|
+
:root {
|
|
83
|
+
/* ── Primary ─────────────────────────────── */
|
|
84
|
+
--md-sys-color-primary: #D0BCFF;
|
|
85
|
+
--md-sys-color-on-primary: #381E72;
|
|
86
|
+
--md-sys-color-primary-container: #4F378B;
|
|
87
|
+
--md-sys-color-on-primary-container: #EADDFF;
|
|
88
|
+
|
|
89
|
+
/* ── Secondary ───────────────────────────── */
|
|
90
|
+
--md-sys-color-secondary: #CCC2DC;
|
|
91
|
+
--md-sys-color-on-secondary: #332D41;
|
|
92
|
+
--md-sys-color-secondary-container: #4A4458;
|
|
93
|
+
--md-sys-color-on-secondary-container:#E8DEF8;
|
|
94
|
+
|
|
95
|
+
/* ── Tertiary ────────────────────────────── */
|
|
96
|
+
--md-sys-color-tertiary: #EFB8C8;
|
|
97
|
+
--md-sys-color-on-tertiary: #492532;
|
|
98
|
+
--md-sys-color-tertiary-container: #633B48;
|
|
99
|
+
--md-sys-color-on-tertiary-container: #FFD8E4;
|
|
100
|
+
|
|
101
|
+
/* ── Error ───────────────────────────────── */
|
|
102
|
+
--md-sys-color-error: #F2B8B5;
|
|
103
|
+
--md-sys-color-on-error: #601410;
|
|
104
|
+
--md-sys-color-error-container: #8C1D18;
|
|
105
|
+
--md-sys-color-on-error-container: #F9DEDC;
|
|
106
|
+
|
|
107
|
+
/* ── Surface & Background ────────────────── */
|
|
108
|
+
--md-sys-color-background: #1C1B1F;
|
|
109
|
+
--md-sys-color-on-background: #E6E1E5;
|
|
110
|
+
--md-sys-color-surface: #1C1B1F;
|
|
111
|
+
--md-sys-color-on-surface: #E6E1E5;
|
|
112
|
+
--md-sys-color-surface-variant: #49454F;
|
|
113
|
+
--md-sys-color-on-surface-variant: #CAC4D0;
|
|
114
|
+
--md-sys-color-surface-container-lowest: #0F0E13;
|
|
115
|
+
--md-sys-color-surface-container-low: #1D1B20;
|
|
116
|
+
--md-sys-color-surface-container: #211F26;
|
|
117
|
+
--md-sys-color-surface-container-high: #2B2930;
|
|
118
|
+
--md-sys-color-surface-container-highest: #36343B;
|
|
119
|
+
|
|
120
|
+
/* ── Inverse ─────────────────────────────── */
|
|
121
|
+
--md-sys-color-inverse-surface: #E6E1E5;
|
|
122
|
+
--md-sys-color-inverse-on-surface: #313033;
|
|
123
|
+
--md-sys-color-inverse-primary: #6750A4;
|
|
124
|
+
|
|
125
|
+
/* ── Utility ─────────────────────────────── */
|
|
126
|
+
--md-sys-color-outline: #938F99;
|
|
127
|
+
--md-sys-color-outline-variant: #49454F;
|
|
128
|
+
|
|
129
|
+
/* ── Elevation (brighter overlays in dark) ── */
|
|
130
|
+
--md-sys-elevation-1: 0 1px 2px rgba(0,0,0,.6), 0 1px 3px 1px rgba(0,0,0,.4);
|
|
131
|
+
--md-sys-elevation-2: 0 1px 2px rgba(0,0,0,.6), 0 2px 6px 2px rgba(0,0,0,.4);
|
|
132
|
+
--md-sys-elevation-3: 0 4px 8px 3px rgba(0,0,0,.4), 0 1px 3px rgba(0,0,0,.6);
|
|
133
|
+
--md-sys-elevation-4: 0 6px 10px 4px rgba(0,0,0,.4), 0 2px 3px rgba(0,0,0,.6);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
`;let o=!1;function s(){if(o||typeof document>"u")return;o=!0;const r=new CSSStyleSheet;r.replaceSync(e+a),document.adoptedStyleSheets=[...document.adoptedStyleSheets,r]}s();exports.applyTheme=s;
|
|
137
|
+
//# sourceMappingURL=theme.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.cjs","sources":["../src/theme.ts"],"sourcesContent":["/**\n * MD3 design-token theme.\n *\n * Injects Material Design 3 system tokens as a document-level CSSStyleSheet\n * so they cascade into every component's Shadow DOM via CSS custom properties.\n *\n * Call `applyTheme()` once at app startup — or just `import 'cer-material'`\n * which calls it automatically.\n */\n\nconst LIGHT = `\n :root {\n /* ── Primary ───────────────────────────────── */\n --md-sys-color-primary: #6750A4;\n --md-sys-color-on-primary: #FFFFFF;\n --md-sys-color-primary-container: #EADDFF;\n --md-sys-color-on-primary-container: #21005D;\n\n /* ── Secondary ─────────────────────────────── */\n --md-sys-color-secondary: #625B71;\n --md-sys-color-on-secondary: #FFFFFF;\n --md-sys-color-secondary-container: #E8DEF8;\n --md-sys-color-on-secondary-container:#1D192B;\n\n /* ── Tertiary ──────────────────────────────── */\n --md-sys-color-tertiary: #7D5260;\n --md-sys-color-on-tertiary: #FFFFFF;\n --md-sys-color-tertiary-container: #FFD8E4;\n --md-sys-color-on-tertiary-container: #31111D;\n\n /* ── Error ─────────────────────────────────── */\n --md-sys-color-error: #B3261E;\n --md-sys-color-on-error: #FFFFFF;\n --md-sys-color-error-container: #F9DEDC;\n --md-sys-color-on-error-container: #410E0B;\n\n /* ── Surface & Background ──────────────────── */\n --md-sys-color-background: #FFFBFE;\n --md-sys-color-on-background: #1C1B1F;\n --md-sys-color-surface: #FFFBFE;\n --md-sys-color-on-surface: #1C1B1F;\n --md-sys-color-surface-variant: #E7E0EC;\n --md-sys-color-on-surface-variant: #49454F;\n --md-sys-color-surface-container-lowest: #FFFFFF;\n --md-sys-color-surface-container-low: #F7F2FA;\n --md-sys-color-surface-container: #F3EDF7;\n --md-sys-color-surface-container-high: #ECE6F0;\n --md-sys-color-surface-container-highest: #E6E0E9;\n\n /* ── Inverse ───────────────────────────────── */\n --md-sys-color-inverse-surface: #313033;\n --md-sys-color-inverse-on-surface: #F4EFF4;\n --md-sys-color-inverse-primary: #D0BCFF;\n\n /* ── Utility ───────────────────────────────── */\n --md-sys-color-outline: #79747E;\n --md-sys-color-outline-variant: #CAC4D0;\n --md-sys-color-shadow: #000000;\n --md-sys-color-scrim: #000000;\n --md-sys-color-surface-tint: #6750A4;\n\n /* ── Elevation shadows ─────────────────────── */\n --md-sys-elevation-1: 0 1px 2px rgba(0,0,0,.3), 0 1px 3px 1px rgba(0,0,0,.15);\n --md-sys-elevation-2: 0 1px 2px rgba(0,0,0,.3), 0 2px 6px 2px rgba(0,0,0,.15);\n --md-sys-elevation-3: 0 4px 8px 3px rgba(0,0,0,.15), 0 1px 3px rgba(0,0,0,.3);\n --md-sys-elevation-4: 0 6px 10px 4px rgba(0,0,0,.15), 0 2px 3px rgba(0,0,0,.3);\n\n /* ── Typography ────────────────────────────── */\n --md-sys-typescale-font: 'Roboto', 'Google Sans', sans-serif;\n\n /* ── Shape ─────────────────────────────────── */\n --md-sys-shape-corner-none: 0px;\n --md-sys-shape-corner-extra-small: 4px;\n --md-sys-shape-corner-small: 8px;\n --md-sys-shape-corner-medium: 12px;\n --md-sys-shape-corner-large: 16px;\n --md-sys-shape-corner-extra-large: 28px;\n --md-sys-shape-corner-full: 9999px;\n }\n\n body {\n font-family: var(--md-sys-typescale-font);\n background-color: var(--md-sys-color-background);\n color: var(--md-sys-color-on-background);\n }\n\n #app {\n min-height: 100vh;\n }\n`;\n\nconst DARK = `\n @media (prefers-color-scheme: dark) {\n :root {\n /* ── Primary ─────────────────────────────── */\n --md-sys-color-primary: #D0BCFF;\n --md-sys-color-on-primary: #381E72;\n --md-sys-color-primary-container: #4F378B;\n --md-sys-color-on-primary-container: #EADDFF;\n\n /* ── Secondary ───────────────────────────── */\n --md-sys-color-secondary: #CCC2DC;\n --md-sys-color-on-secondary: #332D41;\n --md-sys-color-secondary-container: #4A4458;\n --md-sys-color-on-secondary-container:#E8DEF8;\n\n /* ── Tertiary ────────────────────────────── */\n --md-sys-color-tertiary: #EFB8C8;\n --md-sys-color-on-tertiary: #492532;\n --md-sys-color-tertiary-container: #633B48;\n --md-sys-color-on-tertiary-container: #FFD8E4;\n\n /* ── Error ───────────────────────────────── */\n --md-sys-color-error: #F2B8B5;\n --md-sys-color-on-error: #601410;\n --md-sys-color-error-container: #8C1D18;\n --md-sys-color-on-error-container: #F9DEDC;\n\n /* ── Surface & Background ────────────────── */\n --md-sys-color-background: #1C1B1F;\n --md-sys-color-on-background: #E6E1E5;\n --md-sys-color-surface: #1C1B1F;\n --md-sys-color-on-surface: #E6E1E5;\n --md-sys-color-surface-variant: #49454F;\n --md-sys-color-on-surface-variant: #CAC4D0;\n --md-sys-color-surface-container-lowest: #0F0E13;\n --md-sys-color-surface-container-low: #1D1B20;\n --md-sys-color-surface-container: #211F26;\n --md-sys-color-surface-container-high: #2B2930;\n --md-sys-color-surface-container-highest: #36343B;\n\n /* ── Inverse ─────────────────────────────── */\n --md-sys-color-inverse-surface: #E6E1E5;\n --md-sys-color-inverse-on-surface: #313033;\n --md-sys-color-inverse-primary: #6750A4;\n\n /* ── Utility ─────────────────────────────── */\n --md-sys-color-outline: #938F99;\n --md-sys-color-outline-variant: #49454F;\n\n /* ── Elevation (brighter overlays in dark) ── */\n --md-sys-elevation-1: 0 1px 2px rgba(0,0,0,.6), 0 1px 3px 1px rgba(0,0,0,.4);\n --md-sys-elevation-2: 0 1px 2px rgba(0,0,0,.6), 0 2px 6px 2px rgba(0,0,0,.4);\n --md-sys-elevation-3: 0 4px 8px 3px rgba(0,0,0,.4), 0 1px 3px rgba(0,0,0,.6);\n --md-sys-elevation-4: 0 6px 10px 4px rgba(0,0,0,.4), 0 2px 3px rgba(0,0,0,.6);\n }\n }\n`;\n\nlet applied = false;\n\n/**\n * Injects the MD3 design-token stylesheet into `document.adoptedStyleSheets`.\n * Safe to call multiple times — subsequent calls are no-ops.\n */\nexport function applyTheme(): void {\n if (applied || typeof document === 'undefined') return;\n applied = true;\n\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(LIGHT + DARK);\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n}\n\n// Auto-apply when the module is imported (mirrors the old style.css import).\napplyTheme();\n"],"names":["LIGHT","DARK","applied","applyTheme","sheet"],"mappings":"gFAUA,MAAMA,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiFRC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0Db,IAAIC,EAAU,GAMP,SAASC,GAAmB,CACjC,GAAID,GAAW,OAAO,SAAa,IAAa,OAChDA,EAAU,GAEV,MAAME,EAAQ,IAAI,cAClBA,EAAM,YAAYJ,EAAQC,CAAI,EAC9B,SAAS,mBAAqB,CAAC,GAAG,SAAS,mBAAoBG,CAAK,CACtE,CAGAD,EAAA"}
|
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MD3 design-token theme.
|
|
3
|
+
*
|
|
4
|
+
* Injects Material Design 3 system tokens as a document-level CSSStyleSheet
|
|
5
|
+
* so they cascade into every component's Shadow DOM via CSS custom properties.
|
|
6
|
+
*
|
|
7
|
+
* Call `applyTheme()` once at app startup — or just `import 'cer-material'`
|
|
8
|
+
* which calls it automatically.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Injects the MD3 design-token stylesheet into `document.adoptedStyleSheets`.
|
|
12
|
+
* Safe to call multiple times — subsequent calls are no-ops.
|
|
13
|
+
*/
|
|
14
|
+
export declare function applyTheme(): void;
|
package/dist/theme.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
const s = `
|
|
2
|
+
:root {
|
|
3
|
+
/* ── Primary ───────────────────────────────── */
|
|
4
|
+
--md-sys-color-primary: #6750A4;
|
|
5
|
+
--md-sys-color-on-primary: #FFFFFF;
|
|
6
|
+
--md-sys-color-primary-container: #EADDFF;
|
|
7
|
+
--md-sys-color-on-primary-container: #21005D;
|
|
8
|
+
|
|
9
|
+
/* ── Secondary ─────────────────────────────── */
|
|
10
|
+
--md-sys-color-secondary: #625B71;
|
|
11
|
+
--md-sys-color-on-secondary: #FFFFFF;
|
|
12
|
+
--md-sys-color-secondary-container: #E8DEF8;
|
|
13
|
+
--md-sys-color-on-secondary-container:#1D192B;
|
|
14
|
+
|
|
15
|
+
/* ── Tertiary ──────────────────────────────── */
|
|
16
|
+
--md-sys-color-tertiary: #7D5260;
|
|
17
|
+
--md-sys-color-on-tertiary: #FFFFFF;
|
|
18
|
+
--md-sys-color-tertiary-container: #FFD8E4;
|
|
19
|
+
--md-sys-color-on-tertiary-container: #31111D;
|
|
20
|
+
|
|
21
|
+
/* ── Error ─────────────────────────────────── */
|
|
22
|
+
--md-sys-color-error: #B3261E;
|
|
23
|
+
--md-sys-color-on-error: #FFFFFF;
|
|
24
|
+
--md-sys-color-error-container: #F9DEDC;
|
|
25
|
+
--md-sys-color-on-error-container: #410E0B;
|
|
26
|
+
|
|
27
|
+
/* ── Surface & Background ──────────────────── */
|
|
28
|
+
--md-sys-color-background: #FFFBFE;
|
|
29
|
+
--md-sys-color-on-background: #1C1B1F;
|
|
30
|
+
--md-sys-color-surface: #FFFBFE;
|
|
31
|
+
--md-sys-color-on-surface: #1C1B1F;
|
|
32
|
+
--md-sys-color-surface-variant: #E7E0EC;
|
|
33
|
+
--md-sys-color-on-surface-variant: #49454F;
|
|
34
|
+
--md-sys-color-surface-container-lowest: #FFFFFF;
|
|
35
|
+
--md-sys-color-surface-container-low: #F7F2FA;
|
|
36
|
+
--md-sys-color-surface-container: #F3EDF7;
|
|
37
|
+
--md-sys-color-surface-container-high: #ECE6F0;
|
|
38
|
+
--md-sys-color-surface-container-highest: #E6E0E9;
|
|
39
|
+
|
|
40
|
+
/* ── Inverse ───────────────────────────────── */
|
|
41
|
+
--md-sys-color-inverse-surface: #313033;
|
|
42
|
+
--md-sys-color-inverse-on-surface: #F4EFF4;
|
|
43
|
+
--md-sys-color-inverse-primary: #D0BCFF;
|
|
44
|
+
|
|
45
|
+
/* ── Utility ───────────────────────────────── */
|
|
46
|
+
--md-sys-color-outline: #79747E;
|
|
47
|
+
--md-sys-color-outline-variant: #CAC4D0;
|
|
48
|
+
--md-sys-color-shadow: #000000;
|
|
49
|
+
--md-sys-color-scrim: #000000;
|
|
50
|
+
--md-sys-color-surface-tint: #6750A4;
|
|
51
|
+
|
|
52
|
+
/* ── Elevation shadows ─────────────────────── */
|
|
53
|
+
--md-sys-elevation-1: 0 1px 2px rgba(0,0,0,.3), 0 1px 3px 1px rgba(0,0,0,.15);
|
|
54
|
+
--md-sys-elevation-2: 0 1px 2px rgba(0,0,0,.3), 0 2px 6px 2px rgba(0,0,0,.15);
|
|
55
|
+
--md-sys-elevation-3: 0 4px 8px 3px rgba(0,0,0,.15), 0 1px 3px rgba(0,0,0,.3);
|
|
56
|
+
--md-sys-elevation-4: 0 6px 10px 4px rgba(0,0,0,.15), 0 2px 3px rgba(0,0,0,.3);
|
|
57
|
+
|
|
58
|
+
/* ── Typography ────────────────────────────── */
|
|
59
|
+
--md-sys-typescale-font: 'Roboto', 'Google Sans', sans-serif;
|
|
60
|
+
|
|
61
|
+
/* ── Shape ─────────────────────────────────── */
|
|
62
|
+
--md-sys-shape-corner-none: 0px;
|
|
63
|
+
--md-sys-shape-corner-extra-small: 4px;
|
|
64
|
+
--md-sys-shape-corner-small: 8px;
|
|
65
|
+
--md-sys-shape-corner-medium: 12px;
|
|
66
|
+
--md-sys-shape-corner-large: 16px;
|
|
67
|
+
--md-sys-shape-corner-extra-large: 28px;
|
|
68
|
+
--md-sys-shape-corner-full: 9999px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
body {
|
|
72
|
+
font-family: var(--md-sys-typescale-font);
|
|
73
|
+
background-color: var(--md-sys-color-background);
|
|
74
|
+
color: var(--md-sys-color-on-background);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
#app {
|
|
78
|
+
min-height: 100vh;
|
|
79
|
+
}
|
|
80
|
+
`, e = `
|
|
81
|
+
@media (prefers-color-scheme: dark) {
|
|
82
|
+
:root {
|
|
83
|
+
/* ── Primary ─────────────────────────────── */
|
|
84
|
+
--md-sys-color-primary: #D0BCFF;
|
|
85
|
+
--md-sys-color-on-primary: #381E72;
|
|
86
|
+
--md-sys-color-primary-container: #4F378B;
|
|
87
|
+
--md-sys-color-on-primary-container: #EADDFF;
|
|
88
|
+
|
|
89
|
+
/* ── Secondary ───────────────────────────── */
|
|
90
|
+
--md-sys-color-secondary: #CCC2DC;
|
|
91
|
+
--md-sys-color-on-secondary: #332D41;
|
|
92
|
+
--md-sys-color-secondary-container: #4A4458;
|
|
93
|
+
--md-sys-color-on-secondary-container:#E8DEF8;
|
|
94
|
+
|
|
95
|
+
/* ── Tertiary ────────────────────────────── */
|
|
96
|
+
--md-sys-color-tertiary: #EFB8C8;
|
|
97
|
+
--md-sys-color-on-tertiary: #492532;
|
|
98
|
+
--md-sys-color-tertiary-container: #633B48;
|
|
99
|
+
--md-sys-color-on-tertiary-container: #FFD8E4;
|
|
100
|
+
|
|
101
|
+
/* ── Error ───────────────────────────────── */
|
|
102
|
+
--md-sys-color-error: #F2B8B5;
|
|
103
|
+
--md-sys-color-on-error: #601410;
|
|
104
|
+
--md-sys-color-error-container: #8C1D18;
|
|
105
|
+
--md-sys-color-on-error-container: #F9DEDC;
|
|
106
|
+
|
|
107
|
+
/* ── Surface & Background ────────────────── */
|
|
108
|
+
--md-sys-color-background: #1C1B1F;
|
|
109
|
+
--md-sys-color-on-background: #E6E1E5;
|
|
110
|
+
--md-sys-color-surface: #1C1B1F;
|
|
111
|
+
--md-sys-color-on-surface: #E6E1E5;
|
|
112
|
+
--md-sys-color-surface-variant: #49454F;
|
|
113
|
+
--md-sys-color-on-surface-variant: #CAC4D0;
|
|
114
|
+
--md-sys-color-surface-container-lowest: #0F0E13;
|
|
115
|
+
--md-sys-color-surface-container-low: #1D1B20;
|
|
116
|
+
--md-sys-color-surface-container: #211F26;
|
|
117
|
+
--md-sys-color-surface-container-high: #2B2930;
|
|
118
|
+
--md-sys-color-surface-container-highest: #36343B;
|
|
119
|
+
|
|
120
|
+
/* ── Inverse ─────────────────────────────── */
|
|
121
|
+
--md-sys-color-inverse-surface: #E6E1E5;
|
|
122
|
+
--md-sys-color-inverse-on-surface: #313033;
|
|
123
|
+
--md-sys-color-inverse-primary: #6750A4;
|
|
124
|
+
|
|
125
|
+
/* ── Utility ─────────────────────────────── */
|
|
126
|
+
--md-sys-color-outline: #938F99;
|
|
127
|
+
--md-sys-color-outline-variant: #49454F;
|
|
128
|
+
|
|
129
|
+
/* ── Elevation (brighter overlays in dark) ── */
|
|
130
|
+
--md-sys-elevation-1: 0 1px 2px rgba(0,0,0,.6), 0 1px 3px 1px rgba(0,0,0,.4);
|
|
131
|
+
--md-sys-elevation-2: 0 1px 2px rgba(0,0,0,.6), 0 2px 6px 2px rgba(0,0,0,.4);
|
|
132
|
+
--md-sys-elevation-3: 0 4px 8px 3px rgba(0,0,0,.4), 0 1px 3px rgba(0,0,0,.6);
|
|
133
|
+
--md-sys-elevation-4: 0 6px 10px 4px rgba(0,0,0,.4), 0 2px 3px rgba(0,0,0,.6);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
`;
|
|
137
|
+
let o = !1;
|
|
138
|
+
function a() {
|
|
139
|
+
if (o || typeof document > "u") return;
|
|
140
|
+
o = !0;
|
|
141
|
+
const r = new CSSStyleSheet();
|
|
142
|
+
r.replaceSync(s + e), document.adoptedStyleSheets = [...document.adoptedStyleSheets, r];
|
|
143
|
+
}
|
|
144
|
+
a();
|
|
145
|
+
export {
|
|
146
|
+
a as applyTheme
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sources":["../src/theme.ts"],"sourcesContent":["/**\n * MD3 design-token theme.\n *\n * Injects Material Design 3 system tokens as a document-level CSSStyleSheet\n * so they cascade into every component's Shadow DOM via CSS custom properties.\n *\n * Call `applyTheme()` once at app startup — or just `import 'cer-material'`\n * which calls it automatically.\n */\n\nconst LIGHT = `\n :root {\n /* ── Primary ───────────────────────────────── */\n --md-sys-color-primary: #6750A4;\n --md-sys-color-on-primary: #FFFFFF;\n --md-sys-color-primary-container: #EADDFF;\n --md-sys-color-on-primary-container: #21005D;\n\n /* ── Secondary ─────────────────────────────── */\n --md-sys-color-secondary: #625B71;\n --md-sys-color-on-secondary: #FFFFFF;\n --md-sys-color-secondary-container: #E8DEF8;\n --md-sys-color-on-secondary-container:#1D192B;\n\n /* ── Tertiary ──────────────────────────────── */\n --md-sys-color-tertiary: #7D5260;\n --md-sys-color-on-tertiary: #FFFFFF;\n --md-sys-color-tertiary-container: #FFD8E4;\n --md-sys-color-on-tertiary-container: #31111D;\n\n /* ── Error ─────────────────────────────────── */\n --md-sys-color-error: #B3261E;\n --md-sys-color-on-error: #FFFFFF;\n --md-sys-color-error-container: #F9DEDC;\n --md-sys-color-on-error-container: #410E0B;\n\n /* ── Surface & Background ──────────────────── */\n --md-sys-color-background: #FFFBFE;\n --md-sys-color-on-background: #1C1B1F;\n --md-sys-color-surface: #FFFBFE;\n --md-sys-color-on-surface: #1C1B1F;\n --md-sys-color-surface-variant: #E7E0EC;\n --md-sys-color-on-surface-variant: #49454F;\n --md-sys-color-surface-container-lowest: #FFFFFF;\n --md-sys-color-surface-container-low: #F7F2FA;\n --md-sys-color-surface-container: #F3EDF7;\n --md-sys-color-surface-container-high: #ECE6F0;\n --md-sys-color-surface-container-highest: #E6E0E9;\n\n /* ── Inverse ───────────────────────────────── */\n --md-sys-color-inverse-surface: #313033;\n --md-sys-color-inverse-on-surface: #F4EFF4;\n --md-sys-color-inverse-primary: #D0BCFF;\n\n /* ── Utility ───────────────────────────────── */\n --md-sys-color-outline: #79747E;\n --md-sys-color-outline-variant: #CAC4D0;\n --md-sys-color-shadow: #000000;\n --md-sys-color-scrim: #000000;\n --md-sys-color-surface-tint: #6750A4;\n\n /* ── Elevation shadows ─────────────────────── */\n --md-sys-elevation-1: 0 1px 2px rgba(0,0,0,.3), 0 1px 3px 1px rgba(0,0,0,.15);\n --md-sys-elevation-2: 0 1px 2px rgba(0,0,0,.3), 0 2px 6px 2px rgba(0,0,0,.15);\n --md-sys-elevation-3: 0 4px 8px 3px rgba(0,0,0,.15), 0 1px 3px rgba(0,0,0,.3);\n --md-sys-elevation-4: 0 6px 10px 4px rgba(0,0,0,.15), 0 2px 3px rgba(0,0,0,.3);\n\n /* ── Typography ────────────────────────────── */\n --md-sys-typescale-font: 'Roboto', 'Google Sans', sans-serif;\n\n /* ── Shape ─────────────────────────────────── */\n --md-sys-shape-corner-none: 0px;\n --md-sys-shape-corner-extra-small: 4px;\n --md-sys-shape-corner-small: 8px;\n --md-sys-shape-corner-medium: 12px;\n --md-sys-shape-corner-large: 16px;\n --md-sys-shape-corner-extra-large: 28px;\n --md-sys-shape-corner-full: 9999px;\n }\n\n body {\n font-family: var(--md-sys-typescale-font);\n background-color: var(--md-sys-color-background);\n color: var(--md-sys-color-on-background);\n }\n\n #app {\n min-height: 100vh;\n }\n`;\n\nconst DARK = `\n @media (prefers-color-scheme: dark) {\n :root {\n /* ── Primary ─────────────────────────────── */\n --md-sys-color-primary: #D0BCFF;\n --md-sys-color-on-primary: #381E72;\n --md-sys-color-primary-container: #4F378B;\n --md-sys-color-on-primary-container: #EADDFF;\n\n /* ── Secondary ───────────────────────────── */\n --md-sys-color-secondary: #CCC2DC;\n --md-sys-color-on-secondary: #332D41;\n --md-sys-color-secondary-container: #4A4458;\n --md-sys-color-on-secondary-container:#E8DEF8;\n\n /* ── Tertiary ────────────────────────────── */\n --md-sys-color-tertiary: #EFB8C8;\n --md-sys-color-on-tertiary: #492532;\n --md-sys-color-tertiary-container: #633B48;\n --md-sys-color-on-tertiary-container: #FFD8E4;\n\n /* ── Error ───────────────────────────────── */\n --md-sys-color-error: #F2B8B5;\n --md-sys-color-on-error: #601410;\n --md-sys-color-error-container: #8C1D18;\n --md-sys-color-on-error-container: #F9DEDC;\n\n /* ── Surface & Background ────────────────── */\n --md-sys-color-background: #1C1B1F;\n --md-sys-color-on-background: #E6E1E5;\n --md-sys-color-surface: #1C1B1F;\n --md-sys-color-on-surface: #E6E1E5;\n --md-sys-color-surface-variant: #49454F;\n --md-sys-color-on-surface-variant: #CAC4D0;\n --md-sys-color-surface-container-lowest: #0F0E13;\n --md-sys-color-surface-container-low: #1D1B20;\n --md-sys-color-surface-container: #211F26;\n --md-sys-color-surface-container-high: #2B2930;\n --md-sys-color-surface-container-highest: #36343B;\n\n /* ── Inverse ─────────────────────────────── */\n --md-sys-color-inverse-surface: #E6E1E5;\n --md-sys-color-inverse-on-surface: #313033;\n --md-sys-color-inverse-primary: #6750A4;\n\n /* ── Utility ─────────────────────────────── */\n --md-sys-color-outline: #938F99;\n --md-sys-color-outline-variant: #49454F;\n\n /* ── Elevation (brighter overlays in dark) ── */\n --md-sys-elevation-1: 0 1px 2px rgba(0,0,0,.6), 0 1px 3px 1px rgba(0,0,0,.4);\n --md-sys-elevation-2: 0 1px 2px rgba(0,0,0,.6), 0 2px 6px 2px rgba(0,0,0,.4);\n --md-sys-elevation-3: 0 4px 8px 3px rgba(0,0,0,.4), 0 1px 3px rgba(0,0,0,.6);\n --md-sys-elevation-4: 0 6px 10px 4px rgba(0,0,0,.4), 0 2px 3px rgba(0,0,0,.6);\n }\n }\n`;\n\nlet applied = false;\n\n/**\n * Injects the MD3 design-token stylesheet into `document.adoptedStyleSheets`.\n * Safe to call multiple times — subsequent calls are no-ops.\n */\nexport function applyTheme(): void {\n if (applied || typeof document === 'undefined') return;\n applied = true;\n\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(LIGHT + DARK);\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n}\n\n// Auto-apply when the module is imported (mirrors the old style.css import).\napplyTheme();\n"],"names":["LIGHT","DARK","applied","applyTheme","sheet"],"mappings":"AAUA,MAAMA,IAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiFRC,IAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0Db,IAAIC,IAAU;AAMP,SAASC,IAAmB;AACjC,MAAID,KAAW,OAAO,WAAa,IAAa;AAChD,EAAAA,IAAU;AAEV,QAAME,IAAQ,IAAI,cAAA;AAClB,EAAAA,EAAM,YAAYJ,IAAQC,CAAI,GAC9B,SAAS,qBAAqB,CAAC,GAAG,SAAS,oBAAoBG,CAAK;AACtE;AAGAD,EAAA;"}
|
package/dist/vite.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jasonshimmy/cer-material",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Material Design 3 web components built on @jasonshimmy/custom-elements-runtime",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"web-components",
|
|
8
|
+
"custom-elements",
|
|
9
|
+
"reactive",
|
|
10
|
+
"typescript",
|
|
11
|
+
"frontend",
|
|
12
|
+
"ui"
|
|
13
|
+
],
|
|
14
|
+
"author": "Jason Shimkoski <https://jasonshimmy.com>",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/jshimkoski/cer-material.git"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/jshimkoski/cer-material#readme",
|
|
21
|
+
"main": "./dist/index.cjs",
|
|
22
|
+
"module": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"import": "./dist/index.js",
|
|
28
|
+
"require": "./dist/index.cjs"
|
|
29
|
+
},
|
|
30
|
+
"./theme": {
|
|
31
|
+
"types": "./dist/theme.d.ts",
|
|
32
|
+
"import": "./dist/theme.js",
|
|
33
|
+
"require": "./dist/theme.cjs"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist"
|
|
38
|
+
],
|
|
39
|
+
"sideEffects": true,
|
|
40
|
+
"scripts": {
|
|
41
|
+
"dev": "vite",
|
|
42
|
+
"build": "tsc && vite build",
|
|
43
|
+
"build:lib": "vite build --mode lib",
|
|
44
|
+
"preview": "vite preview"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"@jasonshimmy/custom-elements-runtime": ">=2.5.0"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@jasonshimmy/custom-elements-runtime": "^2.6.0",
|
|
51
|
+
"@types/node": "^25.4.0",
|
|
52
|
+
"typescript": "~5.9.3",
|
|
53
|
+
"vite": "^7.3.1",
|
|
54
|
+
"vite-plugin-dts": "^4.5.4"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public"
|
|
58
|
+
}
|
|
59
|
+
}
|