@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.
Files changed (53) hide show
  1. package/README.md +989 -0
  2. package/dist/components/md-app-bar.d.ts +1 -0
  3. package/dist/components/md-badge.d.ts +1 -0
  4. package/dist/components/md-bottom-sheet.d.ts +1 -0
  5. package/dist/components/md-button-group.d.ts +1 -0
  6. package/dist/components/md-button.d.ts +1 -0
  7. package/dist/components/md-card.d.ts +1 -0
  8. package/dist/components/md-carousel.d.ts +1 -0
  9. package/dist/components/md-checkbox.d.ts +1 -0
  10. package/dist/components/md-chip.d.ts +1 -0
  11. package/dist/components/md-date-picker.d.ts +1 -0
  12. package/dist/components/md-dialog.d.ts +1 -0
  13. package/dist/components/md-divider.d.ts +1 -0
  14. package/dist/components/md-fab-menu.d.ts +1 -0
  15. package/dist/components/md-fab.d.ts +1 -0
  16. package/dist/components/md-icon-button.d.ts +1 -0
  17. package/dist/components/md-list.d.ts +1 -0
  18. package/dist/components/md-loading-indicator.d.ts +1 -0
  19. package/dist/components/md-menu.d.ts +1 -0
  20. package/dist/components/md-navigation-bar.d.ts +1 -0
  21. package/dist/components/md-navigation-drawer.d.ts +1 -0
  22. package/dist/components/md-navigation-rail.d.ts +1 -0
  23. package/dist/components/md-progress.d.ts +1 -0
  24. package/dist/components/md-radio.d.ts +1 -0
  25. package/dist/components/md-search.d.ts +1 -0
  26. package/dist/components/md-segmented-button.d.ts +1 -0
  27. package/dist/components/md-side-sheet.d.ts +1 -0
  28. package/dist/components/md-slider.d.ts +1 -0
  29. package/dist/components/md-snackbar.d.ts +1 -0
  30. package/dist/components/md-split-button.d.ts +1 -0
  31. package/dist/components/md-switch.d.ts +1 -0
  32. package/dist/components/md-tabs.d.ts +1 -0
  33. package/dist/components/md-text-field.d.ts +1 -0
  34. package/dist/components/md-time-picker.d.ts +1 -0
  35. package/dist/components/md-tooltip.d.ts +1 -0
  36. package/dist/composables/useControlledValue.d.ts +14 -0
  37. package/dist/composables/useEscapeKey.d.ts +16 -0
  38. package/dist/composables/useFocusReturn.d.ts +18 -0
  39. package/dist/composables/useFocusTrap.d.ts +31 -0
  40. package/dist/composables/useListKeyNav.d.ts +42 -0
  41. package/dist/composables/useScrollLock.d.ts +4 -0
  42. package/dist/index.cjs +5030 -0
  43. package/dist/index.cjs.map +1 -0
  44. package/dist/index.d.ts +7 -0
  45. package/dist/index.js +6250 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/theme.cjs +137 -0
  48. package/dist/theme.cjs.map +1 -0
  49. package/dist/theme.d.ts +14 -0
  50. package/dist/theme.js +148 -0
  51. package/dist/theme.js.map +1 -0
  52. package/dist/vite.svg +1 -0
  53. 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"}
@@ -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
+ }