@sylwellsoftware/fray 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +164 -3
  2. package/dist/Components/component.d.ts.map +1 -1
  3. package/dist/Components/layout/tabpanel/tab.d.ts +2 -0
  4. package/dist/Components/layout/tabpanel/tab.d.ts.map +1 -1
  5. package/dist/Components/layout/tabpanel/tabline.d.ts.map +1 -1
  6. package/dist/Components/layout/tabpanel/tabpanel.d.ts +9 -1
  7. package/dist/Components/layout/tabpanel/tabpanel.d.ts.map +1 -1
  8. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts +0 -1
  9. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -1
  10. package/dist/Components/lineinputs/radio.d.ts +51 -0
  11. package/dist/Components/lineinputs/radio.d.ts.map +1 -0
  12. package/dist/index.d.ts +8 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2065 -841
  15. package/dist/index.js.map +1 -1
  16. package/dist/{jsx-dev-runtime-CqunwZ8j.js → jsx-dev-runtime-Kf1Dhu-y.js} +277 -252
  17. package/dist/jsx-dev-runtime-Kf1Dhu-y.js.map +1 -0
  18. package/dist/jsx-dev-runtime.js +1 -1
  19. package/dist/jsx-runtime.js +1 -1
  20. package/dist/routing/RouteLink.d.ts +17 -0
  21. package/dist/routing/RouteLink.d.ts.map +1 -0
  22. package/dist/routing/RouteQuery.d.ts +18 -0
  23. package/dist/routing/RouteQuery.d.ts.map +1 -0
  24. package/dist/routing/RouteScope.d.ts +17 -0
  25. package/dist/routing/RouteScope.d.ts.map +1 -0
  26. package/dist/routing/RouteValue.d.ts +18 -0
  27. package/dist/routing/RouteValue.d.ts.map +1 -0
  28. package/dist/routing/navigationAdapter.d.ts +33 -0
  29. package/dist/routing/navigationAdapter.d.ts.map +1 -0
  30. package/dist/routing/route.d.ts +64 -0
  31. package/dist/routing/route.d.ts.map +1 -0
  32. package/dist/routing/router.d.ts +109 -0
  33. package/dist/routing/router.d.ts.map +1 -0
  34. package/dist/runtime.d.ts +5 -0
  35. package/dist/runtime.d.ts.map +1 -1
  36. package/package.json +3 -3
  37. package/styles/structural.css +166 -34
  38. package/themes/dark.css +13 -1
  39. package/themes/java/theme.css +14 -2
  40. package/themes/light.css +13 -1
  41. package/themes/minimal/theme.css +14 -2
  42. package/themes/shiny/theme.css +95 -87
  43. package/dist/jsx-dev-runtime-CqunwZ8j.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/routing/router.ts"],"names":[],"mappings":"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"}
package/dist/runtime.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { Component, ComponentDependency } from './Components/component.js';
2
2
  import type { StyleRegistry } from './styling/styleRegistry.js';
3
3
  import { ServiceScope } from './services.js';
4
+ import type { BrowserRouter } from './routing/router.js';
4
5
  export interface FrayElementNameOptions {
5
6
  /** Namespace prepended to component host names. Defaults to `fray`. */
6
7
  prefix?: string | null;
@@ -11,6 +12,8 @@ export interface FrayRuntimeOptions {
11
12
  elementNames?: FrayElementNameOptions;
12
13
  /** Service scope inherited by every component created or mounted here. */
13
14
  services?: ServiceScope;
15
+ /** Optional caller-owned browser router inherited by routed components. */
16
+ router?: BrowserRouter;
14
17
  }
15
18
  /** Immutable application scope for element naming and structural styles. */
16
19
  export declare class FrayRuntime {
@@ -18,6 +21,8 @@ export declare class FrayRuntime {
18
21
  readonly elementNameOverrides: Readonly<Record<string, string>>;
19
22
  readonly styleRegistry: StyleRegistry;
20
23
  readonly services: ServiceScope;
24
+ readonly router: BrowserRouter | null;
25
+ private readonly routedRoots;
21
26
  constructor(options?: FrayRuntimeOptions, registry?: StyleRegistry);
22
27
  resolveElementName(hostName: string, standaloneHostName?: string | null): string;
23
28
  resolveHostSelector(selector: string, hostName: string, standaloneHostName?: string | null): string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,SAAS,EACT,mBAAmB,EACtB,MAAM,2BAA2B,CAAA;AAKlC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,YAAY,EAAqB,MAAM,eAAe,CAAA;AAa9D,MAAM,WAAW,sBAAsB;IACnC,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC/C;AAED,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,sBAAsB,CAAA;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,YAAY,CAAA;CAC1B;AAED,4EAA4E;AAC5E,qBAAa,WAAW;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;gBAG3B,OAAO,GAAE,kBAAuB,EAChC,QAAQ,GAAE,aAAqC;IAgCnD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM;IAWtF,mBAAmB,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,GAAE,MAAM,GAAG,IAAW,GACzC,MAAM;IAKT,cAAc,CACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,kBAAkB,GAAE,MAAM,GAAG,IAAW,GACzC,MAAM;IAKT,MAAM,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,UAAU,SAAS,SAAS,EACxD,aAAa,EAAE,KAAI,GAAG,IAAI,EAAE,KAAK,KAAK,UAAU,EAChD,GAAG,IAAI,EAAE,KAAK,GACf,UAAU;IAMb,KAAK,CAAC,UAAU,SAAS,SAAS,EAC9B,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,IAAI,GAAG,IAAW,GAC3B,UAAU;IAMb,cAAc,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI;IAQrD,YAAY,CAAC,cAAc,GAAE,QAA8B,GAAG,gBAAgB;CAGjF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAE/E;AAED,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,aAAqC,CAAA"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,SAAS,EACT,mBAAmB,EACtB,MAAM,2BAA2B,CAAA;AAKlC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,YAAY,EAAqB,MAAM,eAAe,CAAA;AAC9D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAA;AAatD,MAAM,WAAW,sBAAsB;IACnC,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC/C;AAED,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,sBAAsB,CAAA;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,aAAa,CAAA;CACzB;AAED,4EAA4E;AAC5E,qBAAa,WAAW;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAGnD,OAAO,GAAE,kBAAuB,EAChC,QAAQ,GAAE,aAAqC;IAuCnD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM;IAWtF,mBAAmB,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,GAAE,MAAM,GAAG,IAAW,GACzC,MAAM;IAKT,cAAc,CACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,kBAAkB,GAAE,MAAM,GAAG,IAAW,GACzC,MAAM;IAKT,MAAM,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,UAAU,SAAS,SAAS,EACxD,aAAa,EAAE,KAAI,GAAG,IAAI,EAAE,KAAK,KAAK,UAAU,EAChD,GAAG,IAAI,EAAE,KAAK,GACf,UAAU;IAMb,KAAK,CAAC,UAAU,SAAS,SAAS,EAC9B,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,IAAI,GAAG,IAAW,GAC3B,UAAU;IAoBb,cAAc,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI;IAQrD,YAAY,CAAC,cAAc,GAAE,QAA8B,GAAG,gBAAgB;CAGjF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAE/E;AAED,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,aAAqC,CAAA"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "type": "module",
3
3
  "name": "@sylwellsoftware/fray",
4
4
  "private": false,
5
- "version": "0.6.0",
5
+ "version": "0.7.0",
6
6
  "description": "Browser-only TypeScript component runtime, JSX controls, and semantic themes.",
7
7
  "license": "Apache-2.0",
8
8
  "author": {
@@ -64,11 +64,11 @@
64
64
  "./themes/**/*.css"
65
65
  ],
66
66
  "peerDependencies": {
67
- "@sylwellsoftware/glue": "^0.6.0"
67
+ "@sylwellsoftware/glue": "^0.7.0"
68
68
  },
69
69
  "devDependencies": {
70
70
  "vite": "^6.3.5",
71
- "@sylwellsoftware/glue": "^0.6.0"
71
+ "@sylwellsoftware/glue": "^0.7.0"
72
72
  },
73
73
  "engines": {
74
74
  "node": ">=22",
@@ -54,22 +54,27 @@ fieldset:has(> [data-part="options"]) [role="radio"]:disabled {
54
54
  pointer-events: none;
55
55
  }
56
56
 
57
+ /* labeledinput */
58
+ fray-color-picker,
59
+ fray-dropdown,
60
+ fray-textbox,
61
+ fray-theme-picker {
62
+ display: flex;
63
+ flex-flow: row nowrap;
64
+ align-items: center;
65
+ gap: .5em;
66
+ }
67
+
57
68
  /* inputline */
58
- fray-checkbox,
59
- fray-checkbox > [role="checkbox"],
60
69
  fray-color-picker,
61
70
  fray-color-picker > select,
62
71
  fray-dropdown,
63
72
  fray-dropdown > select,
64
73
  fray-list-view > [role="listbox"] > [role="option"],
65
- fray-quad-checkbox,
66
- fray-quad-checkbox > [role="checkbox"],
67
74
  fray-textbox,
68
75
  fray-textbox > input,
69
76
  fray-theme-picker,
70
- fray-theme-picker > select,
71
- fray-tri-checkbox,
72
- fray-tri-checkbox > [role="checkbox"] {
77
+ fray-theme-picker > select {
73
78
  display: flex;
74
79
  flex-flow: row nowrap;
75
80
  position: relative;
@@ -78,30 +83,16 @@ fray-tri-checkbox > [role="checkbox"] {
78
83
  }
79
84
 
80
85
  /* input */
81
- fray-checkbox > [role="checkbox"],
82
86
  fray-color-picker > select,
83
87
  fray-dropdown > select,
84
- fray-quad-checkbox > [role="checkbox"],
85
88
  fray-textbox > input,
86
- fray-theme-picker > select,
87
- fray-tri-checkbox > [role="checkbox"] {
89
+ fray-theme-picker > select {
88
90
  pointer-events: all;
89
91
  width: var(--input-width, 15rem);
90
92
  box-sizing: border-box;
91
93
  white-space: nowrap;
92
94
  }
93
95
 
94
- /* labeledinput */
95
- fray-color-picker,
96
- fray-dropdown,
97
- fray-textbox,
98
- fray-theme-picker {
99
- display: flex;
100
- flex-flow: row nowrap;
101
- align-items: center;
102
- gap: .5em;
103
- }
104
-
105
96
  /* after */
106
97
  fray-placeholder::after {
107
98
  content: "";
@@ -146,20 +137,67 @@ button {
146
137
  font-family: inherit;
147
138
  }
148
139
 
149
- fray-checkbox > [role="checkbox"] {
140
+ fray-check-box {
141
+ display: inline-block;
142
+ }
143
+
144
+ fray-check-box > label {
150
145
  display: inline-flex;
151
146
  align-items: center;
152
147
  gap: 0.35em;
153
- width: auto;
154
- font-family: inherit;
148
+ cursor: pointer;
149
+ }
150
+
151
+ fray-check-box[data-disabled] > label {
152
+ cursor: not-allowed;
153
+ }
154
+
155
+ fray-check-box input[type="checkbox"] {
156
+ position: absolute;
157
+ width: 1px;
158
+ height: 1px;
159
+ padding: 0;
160
+ margin: -1px;
161
+ overflow: hidden;
162
+ clip: rect(0 0 0 0);
163
+ white-space: nowrap;
164
+ border: 0;
165
+ font: inherit;
166
+ font-size: var(--ui-font-size, inherit);
155
167
  }
156
168
 
157
- fray-checkbox .inputshell {
169
+ fray-check-box input[type="checkbox"] + .checkboxshell {
170
+ position: relative;
158
171
  display: inline-grid;
159
172
  width: 1em;
160
173
  height: 1em;
174
+ flex: 0 0 1em;
175
+ overflow: hidden;
176
+ box-sizing: border-box;
161
177
  line-height: 1;
162
178
  place-items: center;
179
+ color: var(--input-color, var(--ui-text-color, currentColor));
180
+ background: var(--checkbox-box-background, var(--ui-input-bg, transparent));
181
+ border: var(--checkbox-box-border, var(--cbx-o-border, 1px solid currentColor));
182
+ border-radius: var(--cbx-border-radius, var(--radius-sm, 0.2rem));
183
+ font-family: inherit;
184
+ font-size: 1em;
185
+ user-select: none;
186
+ }
187
+
188
+ fray-check-box input[type="checkbox"]:checked + .checkboxshell {
189
+ color: var(--checkbox-symbol-color, var(--selection-color, currentColor));
190
+ background: var(--checkbox-box-background-checked,
191
+ var(--selection-background, var(--ui-accent-color, Highlight)));
192
+ }
193
+
194
+ fray-check-box input[type="checkbox"]:focus-visible + .checkboxshell {
195
+ outline: 2px solid var(--focus-color, var(--ui-accent-color, Highlight));
196
+ outline-offset: 1px;
197
+ }
198
+
199
+ fray-check-box input[type="checkbox"]:disabled + .checkboxshell {
200
+ opacity: 0.6;
163
201
  }
164
202
 
165
203
  fray-color-picker {
@@ -377,20 +415,67 @@ fray-progress-bar {
377
415
  }
378
416
  }
379
417
 
380
- fray-quad-checkbox > [role="checkbox"] {
418
+ fray-quad-checkbox {
419
+ display: inline-block;
420
+ }
421
+
422
+ fray-quad-checkbox > label {
381
423
  display: inline-flex;
382
424
  align-items: center;
383
425
  gap: 0.35em;
384
- width: auto;
385
- font-family: inherit;
426
+ cursor: pointer;
427
+ }
428
+
429
+ fray-quad-checkbox[data-disabled] > label {
430
+ cursor: not-allowed;
431
+ }
432
+
433
+ fray-quad-checkbox input[type="checkbox"] {
434
+ position: absolute;
435
+ width: 1px;
436
+ height: 1px;
437
+ padding: 0;
438
+ margin: -1px;
439
+ overflow: hidden;
440
+ clip: rect(0 0 0 0);
441
+ white-space: nowrap;
442
+ border: 0;
443
+ font: inherit;
444
+ font-size: var(--ui-font-size, inherit);
386
445
  }
387
446
 
388
- fray-quad-checkbox .inputshell {
447
+ fray-quad-checkbox input[type="checkbox"] + .checkboxshell {
448
+ position: relative;
389
449
  display: inline-grid;
390
450
  width: 1em;
391
451
  height: 1em;
452
+ flex: 0 0 1em;
453
+ overflow: hidden;
454
+ box-sizing: border-box;
392
455
  line-height: 1;
393
456
  place-items: center;
457
+ color: var(--input-color, var(--ui-text-color, currentColor));
458
+ background: var(--checkbox-box-background, var(--ui-input-bg, transparent));
459
+ border: var(--checkbox-box-border, var(--cbx-o-border, 1px solid currentColor));
460
+ border-radius: var(--cbx-border-radius, var(--radius-sm, 0.2rem));
461
+ font-family: inherit;
462
+ font-size: 1em;
463
+ user-select: none;
464
+ }
465
+
466
+ fray-quad-checkbox input[type="checkbox"]:checked + .checkboxshell {
467
+ color: var(--checkbox-symbol-color, var(--selection-color, currentColor));
468
+ background: var(--checkbox-box-background-checked,
469
+ var(--selection-background, var(--ui-accent-color, Highlight)));
470
+ }
471
+
472
+ fray-quad-checkbox input[type="checkbox"]:focus-visible + .checkboxshell {
473
+ outline: 2px solid var(--focus-color, var(--ui-accent-color, Highlight));
474
+ outline-offset: 1px;
475
+ }
476
+
477
+ fray-quad-checkbox input[type="checkbox"]:disabled + .checkboxshell {
478
+ opacity: 0.6;
394
479
  }
395
480
 
396
481
  aside {
@@ -564,18 +649,65 @@ fray-tree-view {
564
649
  }
565
650
  }
566
651
 
567
- fray-tri-checkbox > [role="checkbox"] {
652
+ fray-tri-checkbox {
653
+ display: inline-block;
654
+ }
655
+
656
+ fray-tri-checkbox > label {
568
657
  display: inline-flex;
569
658
  align-items: center;
570
659
  gap: 0.35em;
571
- width: auto;
572
- font-family: inherit;
660
+ cursor: pointer;
661
+ }
662
+
663
+ fray-tri-checkbox[data-disabled] > label {
664
+ cursor: not-allowed;
665
+ }
666
+
667
+ fray-tri-checkbox input[type="checkbox"] {
668
+ position: absolute;
669
+ width: 1px;
670
+ height: 1px;
671
+ padding: 0;
672
+ margin: -1px;
673
+ overflow: hidden;
674
+ clip: rect(0 0 0 0);
675
+ white-space: nowrap;
676
+ border: 0;
677
+ font: inherit;
678
+ font-size: var(--ui-font-size, inherit);
573
679
  }
574
680
 
575
- fray-tri-checkbox .inputshell {
681
+ fray-tri-checkbox input[type="checkbox"] + .checkboxshell {
682
+ position: relative;
576
683
  display: inline-grid;
577
684
  width: 1em;
578
685
  height: 1em;
686
+ flex: 0 0 1em;
687
+ overflow: hidden;
688
+ box-sizing: border-box;
579
689
  line-height: 1;
580
690
  place-items: center;
691
+ color: var(--input-color, var(--ui-text-color, currentColor));
692
+ background: var(--checkbox-box-background, var(--ui-input-bg, transparent));
693
+ border: var(--checkbox-box-border, var(--cbx-o-border, 1px solid currentColor));
694
+ border-radius: var(--cbx-border-radius, var(--radius-sm, 0.2rem));
695
+ font-family: inherit;
696
+ font-size: 1em;
697
+ user-select: none;
698
+ }
699
+
700
+ fray-tri-checkbox input[type="checkbox"]:checked + .checkboxshell {
701
+ color: var(--checkbox-symbol-color, var(--selection-color, currentColor));
702
+ background: var(--checkbox-box-background-checked,
703
+ var(--selection-background, var(--ui-accent-color, Highlight)));
704
+ }
705
+
706
+ fray-tri-checkbox input[type="checkbox"]:focus-visible + .checkboxshell {
707
+ outline: 2px solid var(--focus-color, var(--ui-accent-color, Highlight));
708
+ outline-offset: 1px;
709
+ }
710
+
711
+ fray-tri-checkbox input[type="checkbox"]:disabled + .checkboxshell {
712
+ opacity: 0.6;
581
713
  }
package/themes/dark.css CHANGED
@@ -65,7 +65,7 @@
65
65
  border: var(--button-border-disabled);
66
66
  }
67
67
 
68
- :where(input, select, textarea) {
68
+ :where(input:not([type="checkbox"]), select, textarea) {
69
69
  min-height: 2rem;
70
70
  padding: 0.25rem 0.5rem;
71
71
  color: var(--ui-text-color);
@@ -82,5 +82,17 @@
82
82
  outline: 2px solid var(--ui-accent-color);
83
83
  outline-offset: 1px;
84
84
  }
85
+
86
+ :where(.checkboxshell) {
87
+ color: var(--ui-text-color);
88
+ background: var(--ui-input-bg);
89
+ border: var(--cbx-o-border);
90
+ border-radius: var(--cbx-border-radius);
91
+ }
92
+
93
+ :where(input[type="checkbox"]:checked + .checkboxshell) {
94
+ color: #102030;
95
+ background: var(--ui-accent-color);
96
+ }
85
97
  }
86
98
  }
@@ -192,7 +192,7 @@
192
192
  background: var(--button-background);
193
193
  }
194
194
 
195
- :where(input, select, textarea, .inputlike) {
195
+ :where(input:not([type="checkbox"]), select, textarea, .inputlike) {
196
196
  min-height: var(--control-min-height);
197
197
  padding: var(--space-xs) var(--space-sm);
198
198
  color: var(--input-color);
@@ -204,7 +204,7 @@
204
204
  font: inherit;
205
205
  }
206
206
 
207
- :where(input, select, textarea, .inputlike):disabled,
207
+ :where(input:not([type="checkbox"]), select, textarea, .inputlike):disabled,
208
208
  :where(.inputlike[aria-disabled="true"]) {
209
209
  color: var(--input-color-disabled);
210
210
  background: var(--input-background-disabled);
@@ -219,6 +219,18 @@
219
219
  box-shadow: var(--input-shadow);
220
220
  }
221
221
 
222
+ :where(.checkboxshell) {
223
+ color: var(--input-color);
224
+ background: var(--checkbox-box-background);
225
+ border: var(--checkbox-box-border);
226
+ border-radius: var(--radius-sm);
227
+ }
228
+
229
+ :where(input[type="checkbox"]:checked + .checkboxshell) {
230
+ color: var(--checkbox-symbol-color);
231
+ background: var(--checkbox-box-background-checked);
232
+ }
233
+
222
234
  :where([role="checkbox"][aria-checked="true"] .inputshell) {
223
235
  color: var(--checkbox-symbol-color);
224
236
  background: var(--checkbox-box-background-checked);
package/themes/light.css CHANGED
@@ -65,7 +65,7 @@
65
65
  border: var(--button-border-disabled);
66
66
  }
67
67
 
68
- :where(input, select, textarea) {
68
+ :where(input:not([type="checkbox"]), select, textarea) {
69
69
  min-height: 2rem;
70
70
  padding: 0.25rem 0.5rem;
71
71
  color: var(--ui-text-color);
@@ -82,5 +82,17 @@
82
82
  outline: 2px solid var(--ui-accent-color);
83
83
  outline-offset: 1px;
84
84
  }
85
+
86
+ :where(.checkboxshell) {
87
+ color: var(--ui-text-color);
88
+ background: var(--ui-input-bg);
89
+ border: var(--cbx-o-border);
90
+ border-radius: var(--cbx-border-radius);
91
+ }
92
+
93
+ :where(input[type="checkbox"]:checked + .checkboxshell) {
94
+ color: #ffffff;
95
+ background: var(--ui-accent-color);
96
+ }
85
97
  }
86
98
  }
@@ -192,7 +192,7 @@
192
192
  background: var(--button-background);
193
193
  }
194
194
 
195
- :where(input, select, textarea, .inputlike) {
195
+ :where(input:not([type="checkbox"]), select, textarea, .inputlike) {
196
196
  min-height: var(--control-min-height);
197
197
  padding: var(--space-xs) var(--space-sm);
198
198
  color: var(--input-color);
@@ -204,7 +204,7 @@
204
204
  font: inherit;
205
205
  }
206
206
 
207
- :where(input, select, textarea, .inputlike):disabled,
207
+ :where(input:not([type="checkbox"]), select, textarea, .inputlike):disabled,
208
208
  :where(.inputlike[aria-disabled="true"]) {
209
209
  color: var(--input-color-disabled);
210
210
  background: var(--input-background-disabled);
@@ -219,6 +219,18 @@
219
219
  box-shadow: var(--input-shadow);
220
220
  }
221
221
 
222
+ :where(.checkboxshell) {
223
+ color: var(--input-color);
224
+ background: var(--checkbox-box-background);
225
+ border: var(--checkbox-box-border);
226
+ border-radius: var(--radius-sm);
227
+ }
228
+
229
+ :where(input[type="checkbox"]:checked + .checkboxshell) {
230
+ color: var(--checkbox-symbol-color);
231
+ background: var(--checkbox-box-background-checked);
232
+ }
233
+
222
234
  :where([role="checkbox"][aria-checked="true"] .inputshell) {
223
235
  color: var(--checkbox-symbol-color);
224
236
  background: var(--checkbox-box-background-checked);