clampography 2.0.0-beta.24 → 2.0.0-beta.26
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 +1 -1
- package/README.md +6 -31
- package/css/base.css +7 -6
- package/css/base.min.css +1 -1
- package/css/clampography.css +183 -17
- package/css/clampography.min.css +1 -1
- package/css/extra.css +8 -7
- package/css/extra.min.css +1 -1
- package/css/forms.css +74 -2
- package/css/forms.min.css +1 -1
- package/css/kbd.css +1 -1
- package/css/kbd.min.css +1 -1
- package/css/theme.css +90 -0
- package/css/theme.min.css +1 -0
- package/package.json +5 -2
- package/src/base.js +7 -6
- package/src/convert.js +1 -1
- package/src/extra.js +8 -7
- package/src/forms.js +87 -3
- package/src/kbd.js +1 -1
- package/src/theme.js +34 -0
- package/src/themes.js +1377 -1
package/css/forms.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer base{:root :where(button, [type='button'], [type='reset'], [type='submit']){display:inline-flex;align-items:center;justify-content:center;gap:0.375em;padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--clampography-surface);color:var(--clampography-text);border:1px solid var(--clampography-border);border-radius:0.375rem;font-weight:500;white-space:nowrap;transition-property:background-color, border-color, color, box-shadow;transition-duration:150ms}:root :where(button, [type='button'], [type='reset'], [type='submit']):hover{background-color:var(--clampography-background);border-color:var(--clampography-primary)}:root :where(button, [type='button'], [type='submit']).primary, :root [type='submit']{background-color:var(--clampography-primary);color:var(--clampography-background);border-color:var(--clampography-primary)}:root :where(button, [type='button'], [type='submit']).primary:hover, :root [type='submit']:hover{filter:brightness(1.1)}:root :where(input:not([type='checkbox'], [type='radio'], [type='range'], [type='color']), textarea, select){display:block;width:100%;padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--clampography-background);color:var(--clampography-text);border:1px solid var(--clampography-border);border-radius:0.375rem;transition-property:border-color, box-shadow;transition-duration:150ms}:root :where(input:not([type='checkbox'], [type='radio'], [type='range'], [type='color']), textarea, select):focus{outline:none;border-color:var(--clampography-primary);box-shadow:0 0 0 3px color-mix(in oklab, var(--clampography-primary) 20%, transparent)}:root :where(input, textarea, select):disabled{opacity:0.5;cursor:not-allowed}:root :where(input, textarea, select)[readonly]{background-color:color-mix(in oklab, var(--clampography-surface) 50%, transparent);cursor:default}:root :where(input, textarea, select):user-invalid{border-color:var(--clampography-error)}:root :where(input, textarea, select):user-invalid:focus{box-shadow:0 0 0 3px color-mix(in oklab, var(--clampography-error) 20%, transparent)}:root [type='search']::-webkit-search-cancel-button, :root [type='search']::-webkit-search-decoration{-webkit-appearance:none;appearance:none}:root [type='number']::-webkit-inner-spin-button, :root [type='number']::-webkit-outer-spin-button{height:auto}:root :where(input, textarea, select)::placeholder{color:var(--clampography-muted)}:root select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E");background-position:right 0.5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}:root [type='file']{padding:0;background-color:transparent;border:none;cursor:pointer}:root [type='file']::file-selector-button{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);margin-right:var(--spacing-sm);background-color:var(--clampography-surface);color:var(--clampography-text);border:1px solid var(--clampography-border);border-radius:0.375rem;font-family:inherit;font-size:inherit;cursor:pointer;transition-property:background-color, border-color;transition-duration:150ms}:root [type='file']:hover::file-selector-button{background-color:var(--clampography-background);border-color:var(--clampography-primary)}:root [type='checkbox'], :root [type='radio']{width:1em;height:1em;accent-color:var(--clampography-primary);vertical-align:middle;cursor:pointer}:root [type='checkbox']:focus-visible, :root [type='radio']:focus-visible{outline:2px solid var(--clampography-primary);outline-offset:2px}:root [type='range']{accent-color:var(--clampography-primary);width:100%;cursor:pointer}:root [type='color']{padding:0.125rem;width:2.5rem;height:2.5rem;border:1px solid var(--clampography-border);border-radius:0.375rem;background-color:var(--clampography-background);cursor:pointer}:root fieldset{border:1px solid var(--clampography-border);border-radius:0.5rem;background-color:var(--clampography-surface)}:root legend{color:var(--clampography-heading)}:root label{color:var(--clampography-text)}:root output{color:var(--clampography-primary);font-weight:600}:root :
|
|
1
|
+
@layer base{:root :where(button, [type='button'], [type='reset'], [type='submit']){display:inline-flex;align-items:center;justify-content:center;gap:0.375em;padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--clampography-surface);color:var(--clampography-text);border:1px solid var(--clampography-border);border-radius:0.375rem;font-weight:500;white-space:nowrap;transition-property:background-color, border-color, color, box-shadow;transition-duration:150ms}:root :where(button, [type='button'], [type='reset'], [type='submit']):hover{background-color:var(--clampography-background);border-color:var(--clampography-primary)}:root :where(button, [type='button'], [type='submit']).primary, :root [type='submit']{background-color:var(--clampography-primary);color:var(--clampography-background);border-color:var(--clampography-primary)}:root :where(button, [type='button'], [type='submit']).primary:hover, :root [type='submit']:hover{filter:brightness(1.1)}:root :where(input:not([type='checkbox'], [type='radio'], [type='range'], [type='color']), textarea, select){display:block;width:100%;padding:var(--spacing-xs) var(--spacing-sm);background-color:var(--clampography-background);color:var(--clampography-text);border:1px solid var(--clampography-border);border-radius:0.375rem;transition-property:border-color, box-shadow;transition-duration:150ms}:root :where(input:not([type='checkbox'], [type='radio'], [type='range'], [type='color']), textarea, select):focus{outline:none;border-color:var(--clampography-primary);box-shadow:0 0 0 3px color-mix(in oklab, var(--clampography-primary) 20%, transparent)}:root :where(input, textarea, select):disabled{opacity:0.5;cursor:not-allowed}:root :where(input, textarea, select)[readonly]{background-color:color-mix(in oklab, var(--clampography-surface) 50%, transparent);cursor:default}:root :where(input, textarea, select):user-invalid{border-color:var(--clampography-error)}:root :where(input, textarea, select):user-invalid:focus{box-shadow:0 0 0 3px color-mix(in oklab, var(--clampography-error) 20%, transparent)}:root [type='search']::-webkit-search-cancel-button, :root [type='search']::-webkit-search-decoration{-webkit-appearance:none;appearance:none}:root [type='number']::-webkit-inner-spin-button, :root [type='number']::-webkit-outer-spin-button{height:auto}:root :where(input, textarea, select)::placeholder{color:var(--clampography-muted)}:root select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E");background-position:right 0.5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}:root [type='file']{padding:0;background-color:transparent;border:none;cursor:pointer}:root [type='file']::file-selector-button{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);margin-right:var(--spacing-sm);background-color:var(--clampography-surface);color:var(--clampography-text);border:1px solid var(--clampography-border);border-radius:0.375rem;font-family:inherit;font-size:inherit;cursor:pointer;transition-property:background-color, border-color;transition-duration:150ms}:root [type='file']:hover::file-selector-button{background-color:var(--clampography-background);border-color:var(--clampography-primary)}:root [type='checkbox'], :root [type='radio']{width:1em;height:1em;accent-color:var(--clampography-primary);vertical-align:middle;cursor:pointer}:root [type='checkbox']:focus-visible, :root [type='radio']:focus-visible{outline:2px solid var(--clampography-primary);outline-offset:2px}:root [type='range']{accent-color:var(--clampography-primary);width:100%;cursor:pointer}:root [type='color']{padding:0.125rem;width:2.5rem;height:2.5rem;border:1px solid var(--clampography-border);border-radius:0.375rem;background-color:var(--clampography-background);cursor:pointer}:root fieldset{border:1px solid var(--clampography-border);border-radius:0.5rem;background-color:var(--clampography-surface)}:root legend{color:var(--clampography-heading)}:root label{color:var(--clampography-text)}:root output{color:var(--clampography-primary);font-weight:600}:root progress{-webkit-appearance:none;appearance:none;width:100%;height:1em;background:transparent}:root progress::-webkit-progress-bar{background:color-mix(in oklab, var(--clampography-text) 20%, transparent)}:root progress::-webkit-progress-value{background:var(--clampography-success)}:root progress::-moz-progress-bar{background:var(--clampography-success)}:root meter{-webkit-appearance:none;appearance:none;width:100%;height:1em;background:transparent}@supports (-moz-appearance: none){:root progress{background:color-mix(in oklab, var(--clampography-text) 20%, transparent)}:root meter{background:color-mix(in oklab, var(--clampography-text) 20%, transparent)}}:root meter::-webkit-meter-inner-element{display:flex;align-items:stretch;height:1em}:root meter::-webkit-meter-bar{background:color-mix(in oklab, var(--clampography-text) 20%, transparent);height:100%}:root meter::-webkit-meter-optimum-value{background:var(--clampography-success);height:100%}:root meter:-moz-meter-optimum::-moz-meter-bar{background:var(--clampography-success)}:root meter::-webkit-meter-suboptimum-value{background:var(--clampography-warning);height:100%}:root meter:-moz-meter-sub-optimum::-moz-meter-bar{background:var(--clampography-warning)}:root meter::-webkit-meter-even-less-good-value{background:var(--clampography-error);height:100%}:root meter:-moz-meter-sub-sub-optimum::-moz-meter-bar{background:var(--clampography-error)}}
|
package/css/kbd.css
CHANGED
package/css/kbd.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer base{:root kbd{display:inline-block;padding:0.1em 0.45em;min-width:
|
|
1
|
+
@layer base{:root kbd{display:inline-block;padding:0.1em 0.45em;min-width:2em;text-align:center;font-size:0.8em;font-weight:700;line-height:1.5;white-space:nowrap;vertical-align:0.1em;cursor:default;user-select:none;background-color:var(--clampography-surface, oklch(94% 0.004 264));color:var(--clampography-text, oklch(18% 0.015 264));border:1px solid var(--clampography-border, oklch(76% 0.008 264));border-radius:4px;box-shadow:0 2px 0 color-mix(in oklab, var(--clampography-border, oklch(60% 0.008 264)) 100%, black 18%), 0 3px 2px rgba(0, 0, 0, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.5);transition-property:box-shadow, transform, border-bottom-width;transition-duration:80ms}:root kbd:active{transform:translateY(2px);box-shadow:0 0 0 color-mix(in oklab, var(--clampography-border, oklch(60% 0.008 264)) 100%, black 18%), 0 1px 1px rgba(0, 0, 0, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.3)}}
|
package/css/theme.css
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
@layer base {
|
|
2
|
+
|
|
3
|
+
:where(:root), [data-theme="light"] {
|
|
4
|
+
color-scheme: light;
|
|
5
|
+
--clampography-background: oklch(100% 0 0);
|
|
6
|
+
--clampography-border: oklch(92% 0.003 264);
|
|
7
|
+
--clampography-error: oklch(63% 0.22 27);
|
|
8
|
+
--clampography-heading: oklch(15% 0.02 264);
|
|
9
|
+
--clampography-info: oklch(63% 0.258 262);
|
|
10
|
+
--clampography-link: oklch(43% 0.19 264);
|
|
11
|
+
--clampography-muted: oklch(52% 0.014 258);
|
|
12
|
+
--clampography-primary: oklch(63% 0.258 262);
|
|
13
|
+
--clampography-secondary: oklch(55% 0.28 300);
|
|
14
|
+
--clampography-success: oklch(65% 0.17 165);
|
|
15
|
+
--clampography-surface: oklch(96% 0.003 264);
|
|
16
|
+
--clampography-text: oklch(31% 0.02 257);
|
|
17
|
+
--clampography-warning: oklch(72% 0.17 65);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@media (prefers-color-scheme: dark) {
|
|
21
|
+
|
|
22
|
+
:root {
|
|
23
|
+
color-scheme: dark;
|
|
24
|
+
--clampography-background: oklch(10% 0 0);
|
|
25
|
+
--clampography-border: oklch(31% 0.03 254);
|
|
26
|
+
--clampography-error: oklch(63% 0.22 27);
|
|
27
|
+
--clampography-heading: oklch(98% 0.003 264);
|
|
28
|
+
--clampography-info: oklch(72% 0.17 254);
|
|
29
|
+
--clampography-link: oklch(72% 0.17 254);
|
|
30
|
+
--clampography-muted: oklch(68% 0.024 254);
|
|
31
|
+
--clampography-primary: oklch(63% 0.258 262);
|
|
32
|
+
--clampography-secondary: oklch(63% 0.25 300);
|
|
33
|
+
--clampography-success: oklch(65% 0.17 165);
|
|
34
|
+
--clampography-surface: oklch(12% 0 0);
|
|
35
|
+
--clampography-text: oklch(95% 0 0);
|
|
36
|
+
--clampography-warning: oklch(72% 0.17 65);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[data-theme="dark"] {
|
|
40
|
+
color-scheme: dark;
|
|
41
|
+
--clampography-background: oklch(10% 0 0);
|
|
42
|
+
--clampography-border: oklch(31% 0.03 254);
|
|
43
|
+
--clampography-error: oklch(63% 0.22 27);
|
|
44
|
+
--clampography-heading: oklch(98% 0.003 264);
|
|
45
|
+
--clampography-info: oklch(72% 0.17 254);
|
|
46
|
+
--clampography-link: oklch(72% 0.17 254);
|
|
47
|
+
--clampography-muted: oklch(68% 0.024 254);
|
|
48
|
+
--clampography-primary: oklch(63% 0.258 262);
|
|
49
|
+
--clampography-secondary: oklch(63% 0.25 300);
|
|
50
|
+
--clampography-success: oklch(65% 0.17 165);
|
|
51
|
+
--clampography-surface: oklch(12% 0 0);
|
|
52
|
+
--clampography-text: oklch(95% 0 0);
|
|
53
|
+
--clampography-warning: oklch(72% 0.17 65);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
[data-theme="light"] {
|
|
57
|
+
color-scheme: light;
|
|
58
|
+
--clampography-background: oklch(100% 0 0);
|
|
59
|
+
--clampography-border: oklch(92% 0.003 264);
|
|
60
|
+
--clampography-error: oklch(63% 0.22 27);
|
|
61
|
+
--clampography-heading: oklch(15% 0.02 264);
|
|
62
|
+
--clampography-info: oklch(63% 0.258 262);
|
|
63
|
+
--clampography-link: oklch(43% 0.19 264);
|
|
64
|
+
--clampography-muted: oklch(52% 0.014 258);
|
|
65
|
+
--clampography-primary: oklch(63% 0.258 262);
|
|
66
|
+
--clampography-secondary: oklch(55% 0.28 300);
|
|
67
|
+
--clampography-success: oklch(65% 0.17 165);
|
|
68
|
+
--clampography-surface: oklch(96% 0.003 264);
|
|
69
|
+
--clampography-text: oklch(31% 0.02 257);
|
|
70
|
+
--clampography-warning: oklch(72% 0.17 65);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
[data-theme="dark"] {
|
|
75
|
+
color-scheme: dark;
|
|
76
|
+
--clampography-background: oklch(10% 0 0);
|
|
77
|
+
--clampography-border: oklch(31% 0.03 254);
|
|
78
|
+
--clampography-error: oklch(63% 0.22 27);
|
|
79
|
+
--clampography-heading: oklch(98% 0.003 264);
|
|
80
|
+
--clampography-info: oklch(72% 0.17 254);
|
|
81
|
+
--clampography-link: oklch(72% 0.17 254);
|
|
82
|
+
--clampography-muted: oklch(68% 0.024 254);
|
|
83
|
+
--clampography-primary: oklch(63% 0.258 262);
|
|
84
|
+
--clampography-secondary: oklch(63% 0.25 300);
|
|
85
|
+
--clampography-success: oklch(65% 0.17 165);
|
|
86
|
+
--clampography-surface: oklch(12% 0 0);
|
|
87
|
+
--clampography-text: oklch(95% 0 0);
|
|
88
|
+
--clampography-warning: oklch(72% 0.17 65);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer base{:where(:root), [data-theme="light"]{color-scheme:light;--clampography-background:oklch(100% 0 0);--clampography-border:oklch(92% 0.003 264);--clampography-error:oklch(63% 0.22 27);--clampography-heading:oklch(15% 0.02 264);--clampography-info:oklch(63% 0.258 262);--clampography-link:oklch(43% 0.19 264);--clampography-muted:oklch(52% 0.014 258);--clampography-primary:oklch(63% 0.258 262);--clampography-secondary:oklch(55% 0.28 300);--clampography-success:oklch(65% 0.17 165);--clampography-surface:oklch(96% 0.003 264);--clampography-text:oklch(31% 0.02 257);--clampography-warning:oklch(72% 0.17 65)}@media (prefers-color-scheme: dark){:root{color-scheme:dark;--clampography-background:oklch(10% 0 0);--clampography-border:oklch(31% 0.03 254);--clampography-error:oklch(63% 0.22 27);--clampography-heading:oklch(98% 0.003 264);--clampography-info:oklch(72% 0.17 254);--clampography-link:oklch(72% 0.17 254);--clampography-muted:oklch(68% 0.024 254);--clampography-primary:oklch(63% 0.258 262);--clampography-secondary:oklch(63% 0.25 300);--clampography-success:oklch(65% 0.17 165);--clampography-surface:oklch(12% 0 0);--clampography-text:oklch(95% 0 0);--clampography-warning:oklch(72% 0.17 65)}[data-theme="dark"]{color-scheme:dark;--clampography-background:oklch(10% 0 0);--clampography-border:oklch(31% 0.03 254);--clampography-error:oklch(63% 0.22 27);--clampography-heading:oklch(98% 0.003 264);--clampography-info:oklch(72% 0.17 254);--clampography-link:oklch(72% 0.17 254);--clampography-muted:oklch(68% 0.024 254);--clampography-primary:oklch(63% 0.258 262);--clampography-secondary:oklch(63% 0.25 300);--clampography-success:oklch(65% 0.17 165);--clampography-surface:oklch(12% 0 0);--clampography-text:oklch(95% 0 0);--clampography-warning:oklch(72% 0.17 65)}[data-theme="light"]{color-scheme:light;--clampography-background:oklch(100% 0 0);--clampography-border:oklch(92% 0.003 264);--clampography-error:oklch(63% 0.22 27);--clampography-heading:oklch(15% 0.02 264);--clampography-info:oklch(63% 0.258 262);--clampography-link:oklch(43% 0.19 264);--clampography-muted:oklch(52% 0.014 258);--clampography-primary:oklch(63% 0.258 262);--clampography-secondary:oklch(55% 0.28 300);--clampography-success:oklch(65% 0.17 165);--clampography-surface:oklch(96% 0.003 264);--clampography-text:oklch(31% 0.02 257);--clampography-warning:oklch(72% 0.17 65)}}[data-theme="dark"]{color-scheme:dark;--clampography-background:oklch(10% 0 0);--clampography-border:oklch(31% 0.03 254);--clampography-error:oklch(63% 0.22 27);--clampography-heading:oklch(98% 0.003 264);--clampography-info:oklch(72% 0.17 254);--clampography-link:oklch(72% 0.17 254);--clampography-muted:oklch(68% 0.024 254);--clampography-primary:oklch(63% 0.258 262);--clampography-secondary:oklch(63% 0.25 300);--clampography-success:oklch(65% 0.17 165);--clampography-surface:oklch(12% 0 0);--clampography-text:oklch(95% 0 0);--clampography-warning:oklch(72% 0.17 65)}}
|
package/package.json
CHANGED
|
@@ -62,8 +62,11 @@
|
|
|
62
62
|
},
|
|
63
63
|
"scripts": {
|
|
64
64
|
"build": "bun src/convert.js",
|
|
65
|
-
"test": "bun test"
|
|
65
|
+
"test": "bun test",
|
|
66
|
+
"dev:css": "bunx @tailwindcss/cli -i ./dev/input.css -o ./dev/output.css --watch",
|
|
67
|
+
"dev:server": "bun run dev/server.js",
|
|
68
|
+
"dev": "bun run dev/server.js"
|
|
66
69
|
},
|
|
67
70
|
"type": "module",
|
|
68
|
-
"version": "2.0.0-beta.
|
|
71
|
+
"version": "2.0.0-beta.26"
|
|
69
72
|
}
|
package/src/base.js
CHANGED
|
@@ -34,11 +34,11 @@ export default (options = {}) => {
|
|
|
34
34
|
return {
|
|
35
35
|
// ROOT CONFIGURATION
|
|
36
36
|
[root]: {
|
|
37
|
-
"--spacing-xs": "clamp(0.
|
|
38
|
-
"--spacing-sm": "clamp(0.
|
|
39
|
-
"--spacing-md": "clamp(
|
|
40
|
-
"--spacing-lg": "clamp(
|
|
41
|
-
"--spacing-xl": "clamp(
|
|
37
|
+
"--spacing-xs": "clamp(0.25rem, 1.25vw, 0.75rem)",
|
|
38
|
+
"--spacing-sm": "clamp(0.375rem, -0.0625rem + 2.1875vw, 1.25rem)",
|
|
39
|
+
"--spacing-md": "clamp(0.5rem, 2.5vw, 1.5rem)",
|
|
40
|
+
"--spacing-lg": "clamp(0.75rem, -0.125rem + 4.375vw, 2.5rem)",
|
|
41
|
+
"--spacing-xl": "clamp(1rem, 5vw, 3rem)",
|
|
42
42
|
"--list-indent": "clamp(1.5rem, 1.25rem + 1.25vw, 2rem)",
|
|
43
43
|
"--scroll-offset": "5rem",
|
|
44
44
|
"--font-family-base":
|
|
@@ -202,6 +202,7 @@ export default (options = {}) => {
|
|
|
202
202
|
|
|
203
203
|
[scope("abbr[title]")]: {
|
|
204
204
|
"text-decoration": "underline dotted",
|
|
205
|
+
"text-underline-offset": "4px",
|
|
205
206
|
cursor: "help",
|
|
206
207
|
},
|
|
207
208
|
|
|
@@ -386,7 +387,7 @@ export default (options = {}) => {
|
|
|
386
387
|
[scope("fieldset")]: {
|
|
387
388
|
"margin-top": "var(--spacing-md)",
|
|
388
389
|
"margin-bottom": "var(--spacing-md)",
|
|
389
|
-
padding: "var(--spacing-
|
|
390
|
+
padding: "var(--spacing-sm)",
|
|
390
391
|
},
|
|
391
392
|
|
|
392
393
|
[scope("legend")]: {
|
package/src/convert.js
CHANGED
|
@@ -9,7 +9,7 @@ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "fs
|
|
|
9
9
|
import { basename, resolve } from "path";
|
|
10
10
|
|
|
11
11
|
// Configuration
|
|
12
|
-
const FILES_TO_CONVERT = ["base.js", "extra.js", "forms.js", "kbd.js"];
|
|
12
|
+
const FILES_TO_CONVERT = ["base.js", "theme.js", "extra.js", "forms.js", "kbd.js"];
|
|
13
13
|
const OUTPUT_DIR = "css";
|
|
14
14
|
|
|
15
15
|
// Options passed to the JS functions (simulating plugin config)
|
package/src/extra.js
CHANGED
|
@@ -87,7 +87,7 @@ export default (options = {}) => {
|
|
|
87
87
|
"background-color": "var(--clampography-surface)",
|
|
88
88
|
"border": "1px solid var(--clampography-border)",
|
|
89
89
|
"border-radius": "0.375rem",
|
|
90
|
-
"padding": "
|
|
90
|
+
"padding": "var(--spacing-md)",
|
|
91
91
|
},
|
|
92
92
|
|
|
93
93
|
// Tables
|
|
@@ -121,8 +121,8 @@ export default (options = {}) => {
|
|
|
121
121
|
[scope("hr")]: {
|
|
122
122
|
"height": "1px",
|
|
123
123
|
"border-width": "0",
|
|
124
|
-
"margin-top": "
|
|
125
|
-
"margin-bottom": "
|
|
124
|
+
"margin-top": "var(--spacing-xl)",
|
|
125
|
+
"margin-bottom": "var(--spacing-xl)",
|
|
126
126
|
"background-color": "var(--clampography-border)",
|
|
127
127
|
},
|
|
128
128
|
|
|
@@ -131,7 +131,7 @@ export default (options = {}) => {
|
|
|
131
131
|
"border-left-width": "4px",
|
|
132
132
|
"border-left-color": "var(--clampography-primary)",
|
|
133
133
|
"background-color": "var(--clampography-surface)",
|
|
134
|
-
"padding": "
|
|
134
|
+
"padding": "var(--spacing-md)",
|
|
135
135
|
"border-radius": "0.25rem",
|
|
136
136
|
"font-style": "italic",
|
|
137
137
|
"color": "var(--clampography-heading)",
|
|
@@ -155,16 +155,17 @@ export default (options = {}) => {
|
|
|
155
155
|
[scope("details")]: {
|
|
156
156
|
"border": "1px solid var(--clampography-border)",
|
|
157
157
|
"border-radius": "0.375rem",
|
|
158
|
-
"padding": "
|
|
158
|
+
"padding": "var(--spacing-sm)",
|
|
159
159
|
},
|
|
160
160
|
|
|
161
161
|
[scope("summary")]: {
|
|
162
162
|
"color": "var(--clampography-heading)",
|
|
163
|
+
"border-bottom": "0px solid var(--clampography-border)",
|
|
163
164
|
},
|
|
164
165
|
|
|
165
166
|
[scope("details[open] > summary")]: {
|
|
166
|
-
"border-bottom": "1px
|
|
167
|
-
"padding-bottom": "
|
|
167
|
+
"border-bottom-width": "1px",
|
|
168
|
+
"padding-bottom": "var(--spacing-sm)",
|
|
168
169
|
},
|
|
169
170
|
};
|
|
170
171
|
};
|
package/src/forms.js
CHANGED
|
@@ -205,10 +205,94 @@ export default (options = {}) => {
|
|
|
205
205
|
"font-weight": "600",
|
|
206
206
|
},
|
|
207
207
|
|
|
208
|
-
// ──
|
|
209
|
-
[scope("
|
|
210
|
-
"
|
|
208
|
+
// ── Progress ──────────────────────────────────────────────────────────────
|
|
209
|
+
[scope("progress")]: {
|
|
210
|
+
"-webkit-appearance": "none",
|
|
211
|
+
"appearance": "none",
|
|
211
212
|
"width": "100%",
|
|
213
|
+
"height": "1em",
|
|
214
|
+
"background": "transparent",
|
|
212
215
|
},
|
|
216
|
+
|
|
217
|
+
// WebKit progress track
|
|
218
|
+
[scope("progress::-webkit-progress-bar")]: {
|
|
219
|
+
"background": "color-mix(in oklab, var(--clampography-text) 20%, transparent)",
|
|
220
|
+
},
|
|
221
|
+
|
|
222
|
+
// WebKit progress value
|
|
223
|
+
[scope("progress::-webkit-progress-value")]: {
|
|
224
|
+
"background": "var(--clampography-success)",
|
|
225
|
+
},
|
|
226
|
+
|
|
227
|
+
// Firefox progress value
|
|
228
|
+
[scope("progress::-moz-progress-bar")]: {
|
|
229
|
+
"background": "var(--clampography-success)",
|
|
230
|
+
},
|
|
231
|
+
|
|
232
|
+
// ── Meter ─────────────────────────────────────────────────────────────────
|
|
233
|
+
// Custom styling for <meter> (accent-color does not work on meter)
|
|
234
|
+
[scope("meter")]: {
|
|
235
|
+
"-webkit-appearance": "none",
|
|
236
|
+
"appearance": "none",
|
|
237
|
+
"width": "100%",
|
|
238
|
+
"height": "1em",
|
|
239
|
+
"background": "transparent",
|
|
240
|
+
},
|
|
241
|
+
|
|
242
|
+
// Firefox track (restored via Firefox-only feature query)
|
|
243
|
+
// @supports (-moz-appearance: none) is ignored by all WebKit/Blink browsers
|
|
244
|
+
"@supports (-moz-appearance: none)": {
|
|
245
|
+
[scope("progress")]: {
|
|
246
|
+
"background": "color-mix(in oklab, var(--clampography-text) 20%, transparent)",
|
|
247
|
+
},
|
|
248
|
+
[scope("meter")]: {
|
|
249
|
+
"background": "color-mix(in oklab, var(--clampography-text) 20%, transparent)",
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
|
|
253
|
+
// Re-establish height context for WebKit shadow DOM
|
|
254
|
+
// appearance:none breaks Chrome's flex layout; inner elements can't resolve height:100%
|
|
255
|
+
// without a concrete parent height set here.
|
|
256
|
+
// display:flex + align-items:stretch forces the child bar to fill the full height
|
|
257
|
+
// without top-anchoring it the way display:block would.
|
|
258
|
+
[scope("meter::-webkit-meter-inner-element")]: {
|
|
259
|
+
"display": "flex",
|
|
260
|
+
"align-items": "stretch",
|
|
261
|
+
"height": "1em",
|
|
262
|
+
},
|
|
263
|
+
|
|
264
|
+
// WebKit inner track
|
|
265
|
+
[scope("meter::-webkit-meter-bar")]: {
|
|
266
|
+
"background": "color-mix(in oklab, var(--clampography-text) 20%, transparent)",
|
|
267
|
+
"height": "100%",
|
|
268
|
+
},
|
|
269
|
+
|
|
270
|
+
// 1. Optimum (Success)
|
|
271
|
+
[scope("meter::-webkit-meter-optimum-value")]: {
|
|
272
|
+
"background": "var(--clampography-success)",
|
|
273
|
+
"height": "100%",
|
|
274
|
+
},
|
|
275
|
+
[scope("meter:-moz-meter-optimum::-moz-meter-bar")]: {
|
|
276
|
+
"background": "var(--clampography-success)",
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
// 2. Sub-optimum (Warning)
|
|
280
|
+
[scope("meter::-webkit-meter-suboptimum-value")]: {
|
|
281
|
+
"background": "var(--clampography-warning)",
|
|
282
|
+
"height": "100%",
|
|
283
|
+
},
|
|
284
|
+
[scope("meter:-moz-meter-sub-optimum::-moz-meter-bar")]: {
|
|
285
|
+
"background": "var(--clampography-warning)",
|
|
286
|
+
},
|
|
287
|
+
|
|
288
|
+
// 3. Even less good (Error)
|
|
289
|
+
[scope("meter::-webkit-meter-even-less-good-value")]: {
|
|
290
|
+
"background": "var(--clampography-error)",
|
|
291
|
+
"height": "100%",
|
|
292
|
+
},
|
|
293
|
+
[scope("meter:-moz-meter-sub-sub-optimum::-moz-meter-bar")]: {
|
|
294
|
+
"background": "var(--clampography-error)",
|
|
295
|
+
},
|
|
296
|
+
|
|
213
297
|
};
|
|
214
298
|
};
|
package/src/kbd.js
CHANGED
package/src/theme.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { themes } from "./themes.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* CDN Theme Generator
|
|
5
|
+
* Extracts light/dark themes from themes.js and structures them
|
|
6
|
+
* for the Vanilla CSS build process.
|
|
7
|
+
*/
|
|
8
|
+
export default (options = {}) => {
|
|
9
|
+
const root = options.root || ":root";
|
|
10
|
+
const themeStyles = {};
|
|
11
|
+
|
|
12
|
+
// 1. Default Theme (Light)
|
|
13
|
+
if (themes["light"]) {
|
|
14
|
+
// :where() lowers specificity so users can override it easily
|
|
15
|
+
themeStyles[`:where(${root}), [data-theme="light"]`] = themes["light"];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 2. Dark Mode (prefers-color-scheme)
|
|
19
|
+
if (themes["dark"]) {
|
|
20
|
+
themeStyles["@media (prefers-color-scheme: dark)"] = {
|
|
21
|
+
// Default to dark if system prefers dark
|
|
22
|
+
[root]: themes["dark"],
|
|
23
|
+
// Keep data-theme="dark" inside media query for completeness
|
|
24
|
+
[`[data-theme="dark"]`]: themes["dark"],
|
|
25
|
+
// Allow overriding back to light even if system is dark
|
|
26
|
+
[`[data-theme="light"]`]: themes["light"]
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// 3. Explicit Data Theme (Dark) - works regardless of system preference
|
|
30
|
+
themeStyles[`[data-theme="dark"]`] = themes["dark"];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return themeStyles;
|
|
34
|
+
};
|