@rvx/ui 0.1.7 → 0.1.9

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 (108) hide show
  1. package/dist/common/theme-test.js +1 -2
  2. package/dist/common/theme-test.js.map +1 -1
  3. package/dist/common/theme.d.ts +11 -2
  4. package/dist/common/theme.js +2 -1
  5. package/dist/common/theme.js.map +1 -1
  6. package/dist/components/button.d.ts +1 -1
  7. package/dist/components/button.js +2 -2
  8. package/dist/components/button.js.map +1 -1
  9. package/dist/components/card.d.ts +6 -0
  10. package/dist/components/card.js +12 -0
  11. package/dist/components/card.js.map +1 -0
  12. package/dist/components/checkbox-test.d.ts +3 -0
  13. package/dist/components/checkbox-test.js +31 -0
  14. package/dist/components/checkbox-test.js.map +1 -0
  15. package/dist/components/checkbox.js +5 -8
  16. package/dist/components/checkbox.js.map +1 -1
  17. package/dist/components/collapse.d.ts +2 -1
  18. package/dist/components/collapse.js +2 -2
  19. package/dist/components/collapse.js.map +1 -1
  20. package/dist/components/column.js +2 -2
  21. package/dist/components/column.js.map +1 -1
  22. package/dist/components/control-group.js +1 -2
  23. package/dist/components/control-group.js.map +1 -1
  24. package/dist/components/dialog.js +23 -21
  25. package/dist/components/dialog.js.map +1 -1
  26. package/dist/components/dropdown-input.js.map +1 -1
  27. package/dist/components/dropdown.js +4 -3
  28. package/dist/components/dropdown.js.map +1 -1
  29. package/dist/components/flex-space.js +2 -2
  30. package/dist/components/flex-space.js.map +1 -1
  31. package/dist/components/heading.d.ts +4 -0
  32. package/dist/components/heading.js +8 -10
  33. package/dist/components/heading.js.map +1 -1
  34. package/dist/components/label.js +2 -2
  35. package/dist/components/label.js.map +1 -1
  36. package/dist/components/layer.d.ts +4 -4
  37. package/dist/components/layer.js +7 -13
  38. package/dist/components/layer.js.map +1 -1
  39. package/dist/components/link.js +2 -2
  40. package/dist/components/link.js.map +1 -1
  41. package/dist/components/page.js +1 -2
  42. package/dist/components/page.js.map +1 -1
  43. package/dist/components/popout.d.ts +2 -1
  44. package/dist/components/popout.js +59 -58
  45. package/dist/components/popout.js.map +1 -1
  46. package/dist/components/popover.js +6 -5
  47. package/dist/components/popover.js.map +1 -1
  48. package/dist/components/radio-buttons.js +3 -2
  49. package/dist/components/radio-buttons.js.map +1 -1
  50. package/dist/components/row.js +3 -3
  51. package/dist/components/row.js.map +1 -1
  52. package/dist/components/scroll-view.js +2 -2
  53. package/dist/components/scroll-view.js.map +1 -1
  54. package/dist/components/text-input.js +2 -2
  55. package/dist/components/text-input.js.map +1 -1
  56. package/dist/components/text.js +1 -2
  57. package/dist/components/text.js.map +1 -1
  58. package/dist/components/validation.d.ts +4 -3
  59. package/dist/components/validation.js +10 -11
  60. package/dist/components/validation.js.map +1 -1
  61. package/dist/components/value.js +1 -2
  62. package/dist/components/value.js.map +1 -1
  63. package/dist/index.d.ts +3 -2
  64. package/dist/index.js +3 -2
  65. package/dist/index.js.map +1 -1
  66. package/dist/test.d.ts +1 -0
  67. package/dist/test.js +1 -0
  68. package/dist/test.js.map +1 -1
  69. package/dist/theme.module.css +152 -41
  70. package/dist/theme.module.css.map +1 -1
  71. package/package.json +2 -2
  72. package/src/common/theme-test.tsx +1 -3
  73. package/src/common/theme.tsx +12 -2
  74. package/src/components/button.tsx +3 -4
  75. package/src/components/card.tsx +22 -0
  76. package/src/components/checkbox-test.tsx +35 -0
  77. package/src/components/checkbox.tsx +5 -7
  78. package/src/components/collapse.tsx +3 -3
  79. package/src/components/column.tsx +2 -3
  80. package/src/components/control-group.tsx +2 -3
  81. package/src/components/dialog.tsx +23 -22
  82. package/src/components/dropdown-input.tsx +0 -1
  83. package/src/components/dropdown.tsx +4 -4
  84. package/src/components/flex-space.tsx +2 -3
  85. package/src/components/heading.tsx +18 -11
  86. package/src/components/label.tsx +3 -2
  87. package/src/components/layer.tsx +13 -19
  88. package/src/components/link.tsx +2 -3
  89. package/src/components/page.tsx +2 -3
  90. package/src/components/popout.tsx +68 -67
  91. package/src/components/popover.tsx +5 -5
  92. package/src/components/radio-buttons.tsx +3 -3
  93. package/src/components/row.tsx +3 -4
  94. package/src/components/scroll-view.tsx +2 -3
  95. package/src/components/text-input.tsx +2 -3
  96. package/src/components/text.tsx +2 -3
  97. package/src/components/validation.tsx +11 -13
  98. package/src/components/value.tsx +2 -3
  99. package/src/index.tsx +3 -2
  100. package/src/test.tsx +1 -0
  101. package/src/theme/base.scss +11 -5
  102. package/src/theme/components/button.scss +58 -31
  103. package/src/theme/components/card.scss +31 -0
  104. package/src/theme/components/column.scss +8 -0
  105. package/src/theme/components/control-group.scss +6 -1
  106. package/src/theme/components/link.scss +1 -1
  107. package/src/theme/components/text-input.scss +2 -2
  108. package/src/theme/theme.scss +1 -0
package/dist/index.d.ts CHANGED
@@ -5,13 +5,14 @@ export * from "./common/trim.js";
5
5
  export * from "./common/types.js";
6
6
  export * from "./common/writing-mode.js";
7
7
  export * from "./components/button.js";
8
+ export * from "./components/card.js";
8
9
  export * from "./components/checkbox.js";
9
10
  export * from "./components/collapse.js";
10
11
  export * from "./components/column.js";
11
12
  export * from "./components/control-group.js";
12
13
  export * from "./components/dialog.js";
13
- export * from "./components/dropdown.js";
14
14
  export * from "./components/dropdown-input.js";
15
+ export * from "./components/dropdown.js";
15
16
  export * from "./components/flex-space.js";
16
17
  export * from "./components/heading.js";
17
18
  export * from "./components/label.js";
@@ -23,7 +24,7 @@ export * from "./components/popover.js";
23
24
  export * from "./components/radio-buttons.js";
24
25
  export * from "./components/row.js";
25
26
  export * from "./components/scroll-view.js";
26
- export * from "./components/text.js";
27
27
  export * from "./components/text-input.js";
28
+ export * from "./components/text.js";
28
29
  export * from "./components/validation.js";
29
30
  export * from "./components/value.js";
package/dist/index.js CHANGED
@@ -5,13 +5,14 @@ export * from "./common/trim.js";
5
5
  export * from "./common/types.js";
6
6
  export * from "./common/writing-mode.js";
7
7
  export * from "./components/button.js";
8
+ export * from "./components/card.js";
8
9
  export * from "./components/checkbox.js";
9
10
  export * from "./components/collapse.js";
10
11
  export * from "./components/column.js";
11
12
  export * from "./components/control-group.js";
12
13
  export * from "./components/dialog.js";
13
- export * from "./components/dropdown.js";
14
14
  export * from "./components/dropdown-input.js";
15
+ export * from "./components/dropdown.js";
15
16
  export * from "./components/flex-space.js";
16
17
  export * from "./components/heading.js";
17
18
  export * from "./components/label.js";
@@ -23,8 +24,8 @@ export * from "./components/popover.js";
23
24
  export * from "./components/radio-buttons.js";
24
25
  export * from "./components/row.js";
25
26
  export * from "./components/scroll-view.js";
26
- export * from "./components/text.js";
27
27
  export * from "./components/text-input.js";
28
+ export * from "./components/text.js";
28
29
  export * from "./components/validation.js";
29
30
  export * from "./components/value.js";
30
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
package/dist/test.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from "./common/theme-test.js";
2
+ export * from "./components/checkbox-test.js";
2
3
  export * from "./components/collapse-test.js";
package/dist/test.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./common/theme-test.js";
2
+ export * from "./components/checkbox-test.js";
2
3
  export * from "./components/collapse-test.js";
3
4
  //# sourceMappingURL=test.js.map
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.tsx"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.tsx"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC"}
@@ -2,18 +2,22 @@
2
2
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
3
3
  font-size: 0.875rem;
4
4
  line-height: 1;
5
+ --accent: rgb(0, 192, 255);
6
+ accent-color: var(--accent);
5
7
  --content-column-gap: 1.1428571429rem;
6
8
  --content-row-gap: 1.1428571429rem;
7
9
  --content-radius: 0.5714285714rem;
8
10
  --content-border: 0.1428571429rem;
11
+ --content-shadow: 0 0 1.1428571429rem rgba(0, 0, 0, .2);
9
12
  --content-pad-block-start: 1.4285714286rem;
10
13
  --content-pad-inline-start: 1.4285714286rem;
11
14
  --content-pad-block-end: 1.4285714286rem;
12
15
  --content-pad-inline-end: 1.4285714286rem;
13
16
  --control-column-gap: 0.5714285714rem;
14
17
  --control-row-gap: 0.5714285714rem;
15
- --control-radius: 0.2857142857rem;
16
- --control-border: 0.0714285714rem;
18
+ --control-radius: 0.3571428571rem;
19
+ --control-border: 0.1428571429rem;
20
+ --control-shadow: 0 0 0.2142857143rem rgba(0, 0, 0, .5);
17
21
  --control-disabled: opacity(.5);
18
22
  --control-pad-block-start: 0.5714285714rem;
19
23
  --control-pad-inline-start: 0.7142857143rem;
@@ -24,13 +28,14 @@
24
28
  --line-gap: 0.4285714286rem;
25
29
  --space-gap: 0.4285714286rem;
26
30
  --layout-transition: .15s ease;
31
+ --color-transition: .1s ease;
27
32
  }
28
33
 
29
34
  @media (prefers-color-scheme: dark) {
30
35
  :root {
31
- --bg: rgb(32, 32, 32);
36
+ --bg: rgb(36, 36, 36);
32
37
  --fg: white;
33
- --focus-outline: var(--control-border) dashed rgb(0, 127, 255);
38
+ --focus-outline: var(--control-border) dashed var(--accent);
34
39
  color-scheme: dark;
35
40
  }
36
41
  }
@@ -53,35 +58,39 @@ body {
53
58
  }
54
59
 
55
60
  ::selection {
56
- background-color: rgba(0, 100, 200, 0.7);
61
+ background-color: rgba(0, 150, 200, 0.6);
57
62
  }
58
63
 
59
64
  @media (prefers-color-scheme: dark) {
60
65
  :root {
61
- --button-default-bg: rgb(54, 54, 54);
62
- --button-default-bg-lit: rgb(72, 72, 72);
66
+ --button-default-bg: rgb(64, 64, 64);
67
+ --button-default-bg-hover: rgb(90, 90, 90);
63
68
  --button-default-fg: var(--fg);
64
- --button-default-border: rgb(80, 80, 80);
65
- --button-primary-bg: rgb(0, 100, 200);
66
- --button-primary-bg-lit: rgb(0, 128, 255);
67
- --button-primary-fg: white;
68
- --button-primary-border: rgb(0, 100, 200);
69
+ --button-primary-bg: rgb(0, 192, 255);
70
+ --button-primary-bg-hover: rgb(92, 214, 255);
71
+ --button-primary-fg: black;
72
+ --button-primary-focus: rgb(200, 241, 255);
69
73
  --button-success-bg: rgb(0, 200, 100);
70
- --button-success-bg-lit: rgb(0, 242, 121);
74
+ --button-success-bg-hover: rgb(0, 242, 121);
71
75
  --button-success-fg: black;
72
- --button-success-border: rgb(0, 200, 100);
73
- --button-warning-bg: rgb(255, 200, 0);
74
- --button-warning-bg-lit: rgb(255, 224, 122);
76
+ --button-success-focus: rgb(200, 255, 228);
77
+ --button-warning-bg: rgb(230, 180, 0);
78
+ --button-warning-bg-hover: rgb(255, 220, 105);
75
79
  --button-warning-fg: black;
76
- --button-warning-border: rgb(255, 200, 0);
80
+ --button-warning-focus: rgb(255, 243, 200);
77
81
  --button-danger-bg: rgb(255, 0, 64);
78
- --button-danger-bg-lit: rgb(255, 64, 96);
82
+ --button-danger-bg-hover: rgb(255, 70, 100);
79
83
  --button-danger-fg: black;
80
- --button-danger-border: rgb(255, 0, 64);
84
+ --button-danger-focus: rgb(255, 200, 214);
81
85
  --button-input-bg: rgb(16, 16, 16);
82
- --button-input-bg-lit: rgb(36, 36, 36);
86
+ --button-input-bg-hover: rgb(60, 60, 60);
87
+ --button-input-bg-active: rgb(80, 80, 80);
83
88
  --button-input-fg: white;
84
89
  --button-input-border: rgb(80, 80, 80);
90
+ --button-text-bg: transparent;
91
+ --button-text-bg-hover: rgb(80, 80, 80);
92
+ --button-text-bg-active: rgb(100, 100, 100);
93
+ --button-text-fg: var(--fg);
85
94
  color-scheme: dark;
86
95
  }
87
96
  }
@@ -95,6 +104,10 @@ body {
95
104
  padding-block: calc(var(--control-pad-block-start) - var(--control-border)) calc(var(--control-pad-block-end) - var(--control-border));
96
105
  padding-inline: calc(var(--control-pad-inline-start) - var(--control-border)) calc(var(--control-pad-inline-end) - var(--control-border));
97
106
  border-radius: var(--control-radius);
107
+ transition: var(--color-transition) background-color, var(--color-transition) border-color;
108
+ }
109
+ .button:not(.button_text) {
110
+ box-shadow: var(--control-shadow);
98
111
  }
99
112
  .button[disabled] {
100
113
  cursor: default;
@@ -104,61 +117,149 @@ body {
104
117
  .button_default {
105
118
  background-color: var(--button-default-bg);
106
119
  color: var(--button-default-fg);
107
- border: var(--control-border) solid var(--button-default-border, transparent);
120
+ border: var(--button-default-border, transparent) solid var(--control-border);
121
+ }
122
+ .button_default:hover:not(:active):not([disabled]) {
123
+ background-color: var(--button-default-bg-hover);
124
+ }
125
+ .button_default:focus-visible {
126
+ border-color: var(--button-default-focus, var(--accent));
108
127
  }
109
- .button_default:hover:not(:active):not([disabled]), .button_default:focus-visible:not([disabled]) {
110
- background-color: var(--button-default-bg-lit);
128
+ .button_default:active {
129
+ background-color: var(--button-default-bg-active, var(--button-default-bg));
111
130
  }
112
131
 
113
132
  .button_primary {
114
133
  background-color: var(--button-primary-bg);
115
134
  color: var(--button-primary-fg);
116
- border: var(--control-border) solid var(--button-primary-border, transparent);
135
+ border: var(--button-primary-border, transparent) solid var(--control-border);
117
136
  }
118
- .button_primary:hover:not(:active):not([disabled]), .button_primary:focus-visible:not([disabled]) {
119
- background-color: var(--button-primary-bg-lit);
137
+ .button_primary:hover:not(:active):not([disabled]) {
138
+ background-color: var(--button-primary-bg-hover);
139
+ }
140
+ .button_primary:focus-visible {
141
+ border-color: var(--button-primary-focus, var(--accent));
142
+ }
143
+ .button_primary:active {
144
+ background-color: var(--button-primary-bg-active, var(--button-primary-bg));
120
145
  }
121
146
 
122
147
  .button_success {
123
148
  background-color: var(--button-success-bg);
124
149
  color: var(--button-success-fg);
125
- border: var(--control-border) solid var(--button-success-border, transparent);
150
+ border: var(--button-success-border, transparent) solid var(--control-border);
151
+ }
152
+ .button_success:hover:not(:active):not([disabled]) {
153
+ background-color: var(--button-success-bg-hover);
126
154
  }
127
- .button_success:hover:not(:active):not([disabled]), .button_success:focus-visible:not([disabled]) {
128
- background-color: var(--button-success-bg-lit);
155
+ .button_success:focus-visible {
156
+ border-color: var(--button-success-focus, var(--accent));
157
+ }
158
+ .button_success:active {
159
+ background-color: var(--button-success-bg-active, var(--button-success-bg));
129
160
  }
130
161
 
131
162
  .button_warning {
132
163
  background-color: var(--button-warning-bg);
133
164
  color: var(--button-warning-fg);
134
- border: var(--control-border) solid var(--button-warning-border, transparent);
165
+ border: var(--button-warning-border, transparent) solid var(--control-border);
166
+ }
167
+ .button_warning:hover:not(:active):not([disabled]) {
168
+ background-color: var(--button-warning-bg-hover);
169
+ }
170
+ .button_warning:focus-visible {
171
+ border-color: var(--button-warning-focus, var(--accent));
135
172
  }
136
- .button_warning:hover:not(:active):not([disabled]), .button_warning:focus-visible:not([disabled]) {
137
- background-color: var(--button-warning-bg-lit);
173
+ .button_warning:active {
174
+ background-color: var(--button-warning-bg-active, var(--button-warning-bg));
138
175
  }
139
176
 
140
177
  .button_danger {
141
178
  background-color: var(--button-danger-bg);
142
179
  color: var(--button-danger-fg);
143
- border: var(--control-border) solid var(--button-danger-border, transparent);
180
+ border: var(--button-danger-border, transparent) solid var(--control-border);
181
+ }
182
+ .button_danger:hover:not(:active):not([disabled]) {
183
+ background-color: var(--button-danger-bg-hover);
184
+ }
185
+ .button_danger:focus-visible {
186
+ border-color: var(--button-danger-focus, var(--accent));
144
187
  }
145
- .button_danger:hover:not(:active):not([disabled]), .button_danger:focus-visible:not([disabled]) {
146
- background-color: var(--button-danger-bg-lit);
188
+ .button_danger:active {
189
+ background-color: var(--button-danger-bg-active, var(--button-danger-bg));
147
190
  }
148
191
 
149
192
  .button_input {
150
193
  background-color: var(--button-input-bg);
151
194
  color: var(--button-input-fg);
152
- border: var(--control-border) solid var(--button-input-border, transparent);
195
+ border: var(--button-input-border, transparent) solid var(--control-border);
153
196
  }
154
- .button_input:hover:not(:active):not([disabled]), .button_input:focus-visible:not([disabled]) {
155
- background-color: var(--button-input-bg-lit);
197
+ .button_input:hover:not(:active):not([disabled]) {
198
+ background-color: var(--button-input-bg-hover);
199
+ }
200
+ .button_input:focus-visible {
201
+ border-color: var(--button-input-focus, var(--accent));
202
+ }
203
+ .button_input:active {
204
+ background-color: var(--button-input-bg-active, var(--button-input-bg));
205
+ }
206
+
207
+ .button_text {
208
+ background-color: var(--button-text-bg);
209
+ color: var(--button-text-fg);
210
+ border: var(--button-text-border, transparent) solid var(--control-border);
211
+ }
212
+ .button_text:hover:not(:active):not([disabled]) {
213
+ background-color: var(--button-text-bg-hover);
214
+ }
215
+ .button_text:focus-visible {
216
+ border-color: var(--button-text-focus, var(--accent));
217
+ }
218
+ .button_text:active {
219
+ background-color: var(--button-text-bg-active, var(--button-text-bg));
156
220
  }
157
221
 
158
222
  .button_input {
159
223
  text-align: left;
160
224
  }
161
225
 
226
+ @media (prefers-color-scheme: dark) {
227
+ :root {
228
+ --card-default-border: rgb(72, 72, 72);
229
+ --card-info-border: rgb(0, 96, 128);
230
+ --card-success-border: rgb(0, 128, 64);
231
+ --card-warning-border: rgb(150, 117, 0);
232
+ --card-danger-border: rgb(160, 0, 40);
233
+ color-scheme: dark;
234
+ }
235
+ }
236
+ .card {
237
+ box-shadow: var(--content-shadow);
238
+ border-radius: var(--content-radius);
239
+ padding-block: calc(var(--content-pad-block-start) - var(--content-border)) calc(var(--content-pad-block-end) - var(--content-border));
240
+ padding-inline: calc(var(--content-pad-inline-start) - var(--content-border)) calc(var(--content-pad-inline-end) - var(--content-border));
241
+ }
242
+
243
+ .card_default {
244
+ border: var(--content-border) solid var(--card-default-border);
245
+ }
246
+
247
+ .card_info {
248
+ border: var(--content-border) solid var(--card-info-border);
249
+ }
250
+
251
+ .card_success {
252
+ border: var(--content-border) solid var(--card-success-border);
253
+ }
254
+
255
+ .card_warning {
256
+ border: var(--content-border) solid var(--card-warning-border);
257
+ }
258
+
259
+ .card_danger {
260
+ border: var(--content-border) solid var(--card-danger-border);
261
+ }
262
+
162
263
  .checkbox_label {
163
264
  display: flex;
164
265
  column-gap: var(--control-column-gap);
@@ -248,9 +349,15 @@ body {
248
349
  .column > :not(:first-child) {
249
350
  margin-block-start: calc((var(--space-above, var(--parent-row-gap)) - var(--parent-row-gap)) * var(--space-scale) + var(--parent-row-gap) * (var(--space-scale) - 1) / 2);
250
351
  }
352
+ .column > :first-child {
353
+ margin-block-start: calc(var(--parent-row-gap) * (var(--space-scale) - 1) / 2);
354
+ }
251
355
  .column > :not(:last-child) {
252
356
  margin-block-end: calc((var(--space-below, var(--parent-row-gap)) - var(--parent-row-gap)) * var(--space-scale) + var(--parent-row-gap) * (var(--space-scale) - 1) / 2);
253
357
  }
358
+ .column > :last-child {
359
+ margin-block-end: calc(var(--parent-row-gap) * (var(--space-scale) - 1) / 2);
360
+ }
254
361
 
255
362
  .column_content {
256
363
  row-gap: var(--content-row-gap);
@@ -269,7 +376,10 @@ body {
269
376
  .control_group {
270
377
  display: flex;
271
378
  flex-direction: row;
272
- flex-wrap: wrap;
379
+ box-shadow: var(--control-shadow);
380
+ }
381
+ .control_group * {
382
+ --control-shadow: none;
273
383
  }
274
384
  .control_group > :not(:first-child) {
275
385
  border-start-start-radius: 0;
@@ -421,7 +531,7 @@ h6.heading {
421
531
 
422
532
  @media (prefers-color-scheme: dark) {
423
533
  :root {
424
- --link-fg: rgb(64, 160, 255);
534
+ --link-fg: rgb(64, 208, 255);
425
535
  color-scheme: dark;
426
536
  }
427
537
  }
@@ -619,7 +729,7 @@ h6.heading {
619
729
  --text-input-bg: rgb(16, 16, 16);
620
730
  --text-input-fg: white;
621
731
  --text-input-border: rgb(80, 80, 80);
622
- --text-input-border-lit: rgb(0, 128, 255);
732
+ --text-input-border-lit: var(--accent);
623
733
  color-scheme: dark;
624
734
  }
625
735
  }
@@ -633,6 +743,7 @@ h6.heading {
633
743
  padding-inline: var(--control-pad-inline-start) var(--control-pad-inline-end);
634
744
  border: var(--control-border) solid var(--text-input-border);
635
745
  border-radius: var(--control-radius);
746
+ box-shadow: var(--control-shadow);
636
747
  background-color: var(--text-input-bg);
637
748
  color: var(--text-input-fg);
638
749
  }
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/theme/base.scss","../src/theme/common.scss","../src/theme/components/button.scss","../src/theme/components/checkbox.scss","../src/theme/components/collapse.scss","../src/theme/components/column.scss","../src/theme/components/control-group.scss","../src/theme/components/dialog.scss","../src/theme/components/dropdown.scss","../src/theme/components/flex-space.scss","../src/theme/components/heading.scss","../src/theme/components/label.scss","../src/theme/components/link.scss","../src/theme/components/page.scss","../src/theme/components/popover.scss","../src/theme/components/radio-buttons.scss","../src/theme/components/row.scss","../src/theme/components/scroll-view.scss","../src/theme/components/text-input.scss","../src/theme/components/text.scss","../src/theme/components/validation.scss","../src/theme/components/value.scss"],"names":[],"mappings":"AASA;EACC;EACA;EACA;EAEA;EACA;EACA;EACA;ECWA;EACA;EACA;EACA;EDXA;EACA;EACA;EACA;EACA;ECIA;EACA;EACA;EACA;EDJA;EAEA;EAEA;EACA;EAEA;;;ACrBC;EAFD;IANE;IAAA;IAAA;IAUA;;;ADkCH;EACC;EACA;EAEA;;AACA;EALD;IAME;;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;ACtDC;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;ACmEH;EACC;EACA;EACA;EACA;EAEA;EAEA;EDtDC,eACC;EAED,gBACC;ECqDF;;AAEA;EACC;EACA;;;AAKD;EACC;EACA;EACA;;AACA;EAEC;;;AANF;EACC;EACA;EACA;;AACA;EAEC;;;AANF;EACC;EACA;EACA;;AACA;EAEC;;;AANF;EACC;EACA;EACA;;AACA;EAEC;;;AANF;EACC;EACA;EACA;;AACA;EAEC;;;AANF;EACC;EACA;EACA;;AACA;EAEC;;;AAKH;EACC;;;ACjHD;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;EACA;;;ACtBD;EACC;EACA;EACA;;;AAGD;EACC,YACC;;;AAIF;EACC;IAAO;;EACP;IAAM;;EACN;IAAM;;EACN;IAAK;;;AAGN;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;AAEA;EACC,YACC;;AAIF;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC,YACC;;AAKF;EACC;EACA;EACA;;;AC5DF;EACC;EACA;;AAEA;EACC;;AAMD;EACC;;;AAQD;EACC;;AACA;EACC;;;AAHF;EACC;;AACA;EACC;;;ACvBH;EACC;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;;;ALEA;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AMEH;EACC;EACA;EAEA;EAEA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EAEA;EACA;EACA;EACA;ENDC,eACC;EAED,gBACC;;;AMCH;EACC;;;AN7BC;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AOEH;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EPPC,eACC;EAED,gBACC;;AOMF;EACC;;;AC9CF;EACC;EACA;EACA;;;ACHD;EACC;EACA;;AAEA;EAEC;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;;ATxBC;EAFD;IANE;IAUA;;;AUPH;EACC;EACA;EAEA;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;;;AVRA;EAFD;IANE;IAUA;;;AWPH;EACC;EACA;EAEA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;ACrBF;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AZPC;EAFD;IANE;IAAA;IAAA;IAUA;;;AaDH;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EbnBC,eACC;EAED,gBACC;;;AcvCH;EACC;EACA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AC5BD;EACC;EACA;EACA;;;AAIA;EACC;EACA;;AACA;EACC;EACA;;;AALF;EACC;EACA;;AACA;EACC;EACA;;;AfAD;EAFD;IANE;IAAA;IAUA;;;AgBJH;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AhBpCC;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AiBEH;EACC;EACA;EACA;EAEA;EAEA;EjBmBC,eACC;EAED,gBACC;EiBrBF;EACA;EAEA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;;;AC1CD;EACC;;AAEA;EAEC;EACA;EACA;EACA;;;AlBIA;EAFD;IANE;IAUA;;;AmBPH;EACC;;;AAGD;EACC;;;ACZD;EACC","file":"theme.module.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/theme/base.scss","../src/theme/common.scss","../src/theme/components/button.scss","../src/theme/components/card.scss","../src/theme/components/checkbox.scss","../src/theme/components/collapse.scss","../src/theme/components/column.scss","../src/theme/components/control-group.scss","../src/theme/components/dialog.scss","../src/theme/components/dropdown.scss","../src/theme/components/flex-space.scss","../src/theme/components/heading.scss","../src/theme/components/label.scss","../src/theme/components/link.scss","../src/theme/components/page.scss","../src/theme/components/popover.scss","../src/theme/components/radio-buttons.scss","../src/theme/components/row.scss","../src/theme/components/scroll-view.scss","../src/theme/components/text-input.scss","../src/theme/components/text.scss","../src/theme/components/validation.scss","../src/theme/components/value.scss"],"names":[],"mappings":"AASA;EACC;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;ECOA;EACA;EACA;EACA;EDPA;EACA;EACA;EACA;EACA;EACA;ECDA;EACA;EACA;EACA;EDCA;EAEA;EAEA;EACA;EAEA;EACA;;;AC3BC;EAFD;IANE;IAAA;IAAA;IAUA;;;ADwCH;EACC;EACA;EAEA;;AACA;EALD;IAME;;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AC5DC;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;ACgFH;EACC;EACA;EACA;EACA;EAEA;EAEA;EDnEC,eACC;EAED,gBACC;ECkEF;EACA;;AAGA;EACC;;AAGD;EACC;EACA;;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;;;ADhIC;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAUA;;;AEKH;EACC;EACA;EFcC,eACC;EAED,gBACC;;;AEbF;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AC3BF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;EACA;;;ACtBD;EACC;EACA;EACA;;;AAGD;EACC,YACC;;;AAIF;EACC;IAAO;;EACP;IAAM;;EACN;IAAM;;EACN;IAAK;;;AAGN;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;AAEA;EACC,YACC;;AAIF;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC,YACC;;AAKF;EACC;EACA;EACA;;;AC5DF;EACC;EACA;;AAEA;EACC;;AAMD;EACC;;AAGD;EACC;;AAMD;EACC;;;AAKD;EACC;;AACA;EACC;;;AAHF;EACC;;AACA;EACC;;;AC/BH;EACC;EACA;EAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAED;EACC;EACA;;;ANHA;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AOEH;EACC;EACA;EAEA;EAEA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EAEA;EACA;EACA;EACA;EPDC,eACC;EAED,gBACC;;;AOCH;EACC;;;AP7BC;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AQEH;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;ERPC,eACC;EAED,gBACC;;AQMF;EACC;;;AC9CF;EACC;EACA;EACA;;;ACHD;EACC;EACA;;AAEA;EAEC;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;;AVxBC;EAFD;IANE;IAUA;;;AWPH;EACC;EACA;EAEA;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;;;AXRA;EAFD;IANE;IAUA;;;AYPH;EACC;EACA;EAEA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;ACrBF;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AbPC;EAFD;IANE;IAAA;IAAA;IAUA;;;AcDH;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EdnBC,eACC;EAED,gBACC;;;AevCH;EACC;EACA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AC5BD;EACC;EACA;EACA;;;AAIA;EACC;EACA;;AACA;EACC;EACA;;;AALF;EACC;EACA;;AACA;EACC;EACA;;;AhBAD;EAFD;IANE;IAAA;IAUA;;;AiBJH;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AjBpCC;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AkBEH;EACC;EACA;EACA;EAEA;EAEA;ElBmBC,eACC;EAED,gBACC;EkBrBF;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;;;AC1CD;EACC;;AAEA;EAEC;EACA;EACA;EACA;;;AnBIA;EAFD;IANE;IAUA;;;AoBPH;EACC;;;AAGD;EACC;;;ACZD;EACC","file":"theme.module.css"}
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "rvx"
13
13
  ],
14
14
  "license": "MIT",
15
- "version": "0.1.7",
15
+ "version": "0.1.9",
16
16
  "type": "module",
17
17
  "main": "./dist/index.js",
18
18
  "sideEffects": false,
@@ -28,6 +28,6 @@
28
28
  "./dist/": "./dist/"
29
29
  },
30
30
  "dependencies": {
31
- "rvx": "^16.0.2"
31
+ "rvx": "^18.6.2"
32
32
  }
33
33
  }
@@ -1,5 +1,3 @@
1
- import { extract } from "rvx";
2
-
3
1
  import { THEME, Theme } from "./theme.js";
4
2
 
5
3
  /**
@@ -8,7 +6,7 @@ import { THEME, Theme } from "./theme.js";
8
6
  * @throws An error if the current theme doesn't support the specified key.
9
7
  */
10
8
  export function themeClass(key: keyof Theme): string {
11
- const theme = extract(THEME);
9
+ const theme = THEME.current;
12
10
  if (!theme) {
13
11
  throw new Error("theme is not available in the current context");
14
12
  }
@@ -1,6 +1,6 @@
1
- import { ContextKey } from "rvx";
1
+ import { Context } from "rvx";
2
2
 
3
- export const THEME = Symbol.for("rvx-ui:theme") as ContextKey<Theme>;
3
+ export const THEME = new Context<Theme | undefined>(undefined);
4
4
 
5
5
  /**
6
6
  * A collection of class names that is used as the theme.
@@ -37,6 +37,16 @@ export interface Theme {
37
37
  button_warning?: string;
38
38
  /** Additional class for buttons with the "input" variant */
39
39
  button_input?: string;
40
+ /** Additional class for buttons with the "text" variant */
41
+ button_text?: string;
42
+
43
+ card?: string;
44
+ card_content?: string;
45
+ card_default?: string;
46
+ card_info?: string;
47
+ card_success?: string;
48
+ card_warning?: string;
49
+ card_danger?: string;
40
50
 
41
51
  /** Class for all checkbox containing labels */
42
52
  checkbox_label?: string;
@@ -1,12 +1,11 @@
1
- import { ClassValue, Expression, extract, get, optionalString, StyleValue } from "rvx";
1
+ import { ClassValue, Expression, get, optionalString, StyleValue } from "rvx";
2
2
  import { isPending } from "rvx/async";
3
-
4
3
  import { Action, handleActionEvent, keyFor } from "../common/events.js";
5
4
  import { THEME } from "../common/theme.js";
6
5
  import { Validator } from "./validation.js";
7
6
 
8
7
  export type ButtonType = "button" | "submit" | "reset" | "menu";
9
- export type ButtonVariant = "default" | "primary" | "success" | "danger" | "warning" | "input";
8
+ export type ButtonVariant = "default" | "primary" | "success" | "danger" | "warning" | "input" | "text";
10
9
 
11
10
  export function Button(props: {
12
11
  /**
@@ -50,7 +49,7 @@ export function Button(props: {
50
49
 
51
50
  children?: unknown;
52
51
  }): unknown {
53
- const theme = extract(THEME);
52
+ const theme = THEME.current;
54
53
  const disabled = () => isPending() || get(props.disabled);
55
54
 
56
55
  function action(event: Event) {
@@ -0,0 +1,22 @@
1
+ import { Expression, get } from "rvx";
2
+ import { THEME } from "../common/theme.js";
3
+ import { Column } from "./column.js";
4
+
5
+ export type CardVariant = "default" | "info" | "success" | "warning" | "danger";
6
+
7
+ export function Card(props: {
8
+ variant?: Expression<CardVariant | undefined>;
9
+ children?: unknown;
10
+ }): unknown {
11
+ const theme = THEME.current;
12
+ return <div
13
+ class={[
14
+ theme?.card,
15
+ () => theme?.[`card_${get(props.variant) ?? "default"}`],
16
+ ]}
17
+ >
18
+ <Column class={theme?.card_content}>
19
+ {props.children}
20
+ </Column>
21
+ </div>;
22
+ }
@@ -0,0 +1,35 @@
1
+ import { ENV } from "rvx";
2
+ import { themeClass } from "../common/theme-test.js";
3
+
4
+ function assertCheckbox(checkbox: Element): asserts checkbox is HTMLElement {
5
+ if (!checkbox.matches(`.${themeClass("checkbox_label")}`)) {
6
+ throw new Error("checkbox must be a checkbox root element.");
7
+ }
8
+ }
9
+
10
+ function getInput(checkbox: HTMLElement): HTMLInputElement {
11
+ return checkbox.querySelector("input")!;
12
+ }
13
+
14
+ export function isCheckboxChecked(checkbox: Element): boolean | undefined {
15
+ assertCheckbox(checkbox);
16
+ const input = getInput(checkbox);
17
+ return input.indeterminate ? undefined : input.checked;
18
+ }
19
+
20
+ export function toggleCheckbox(checkbox: Element, checked?: boolean): void {
21
+ assertCheckbox(checkbox);
22
+ const input = getInput(checkbox);
23
+ if (input.disabled) {
24
+ return;
25
+ }
26
+ checked ??= !input.checked;
27
+ input.indeterminate = false;
28
+ input.checked = checked;
29
+ input.dispatchEvent(new ENV.current.CustomEvent("input"));
30
+ }
31
+
32
+ export function getCheckboxContent(checkbox: Element): HTMLElement {
33
+ assertCheckbox(checkbox);
34
+ return checkbox.querySelector(`.${themeClass("checkbox_content")}`) as HTMLElement;
35
+ }
@@ -1,5 +1,6 @@
1
- import { ClassValue, Expression, extract, get, optionalString, Signal, string, StyleValue, uniqueId, watch } from "rvx";
1
+ import { ClassValue, Expression, get, optionalString, Signal, string, StyleValue, watch } from "rvx";
2
2
  import { isPending } from "rvx/async";
3
+ import { uniqueId } from "rvx/id";
3
4
 
4
5
  import { THEME } from "../common/theme.js";
5
6
  import { Text } from "./text.js";
@@ -16,7 +17,7 @@ export function Checkbox(props: {
16
17
  children?: unknown;
17
18
  }): unknown {
18
19
  const id = uniqueId();
19
- const theme = extract(THEME);
20
+ const theme = THEME.current;
20
21
 
21
22
  const disabled = props.checked instanceof Signal
22
23
  ? () => isPending() || get(props.disabled)
@@ -41,11 +42,8 @@ export function Checkbox(props: {
41
42
  /> as HTMLInputElement;
42
43
 
43
44
  watch(props.checked, checked => {
44
- if (checked === undefined) {
45
- input.indeterminate = true;
46
- } else {
47
- input.checked = checked;
48
- }
45
+ input.indeterminate = checked === undefined;
46
+ input.checked = checked === true;
49
47
  });
50
48
 
51
49
  return <label
@@ -1,5 +1,5 @@
1
- import { ClassValue, Event, Expression, extract, get, map, optionalString, sig, StyleValue, teardown } from "rvx";
2
-
1
+ import { ClassValue, Expression, get, map, optionalString, sig, StyleValue, teardown } from "rvx";
2
+ import { Event } from "rvx/event";
3
3
  import { THEME } from "../common/theme.js";
4
4
  import { AriaLive, AriaRelevant } from "../common/types.js";
5
5
 
@@ -14,7 +14,7 @@ export function Collapse(props: {
14
14
  "aria-relevant"?: Expression<AriaRelevant | undefined>;
15
15
  "aria-atomic"?: Expression<boolean | undefined>;
16
16
  }): unknown {
17
- const theme = extract(THEME);
17
+ const theme = THEME.current;
18
18
  const visible = map(props.visible, v => v ?? false);
19
19
  const alert = sig(false);
20
20
  const size = sig<number | undefined>(undefined);
@@ -1,5 +1,4 @@
1
- import { ClassValue, Expression, extract, map, StyleValue } from "rvx";
2
-
1
+ import { ClassValue, Expression, map, StyleValue } from "rvx";
3
2
  import { THEME } from "../common/theme.js";
4
3
  import { SizeContext } from "../common/types.js";
5
4
 
@@ -13,7 +12,7 @@ export function Column(props: {
13
12
  id?: Expression<string | undefined>;
14
13
  children?: unknown;
15
14
  }): unknown {
16
- const theme = extract(THEME);
15
+ const theme = THEME.current;
17
16
  return <div
18
17
  class={[
19
18
  theme?.column,
@@ -1,5 +1,4 @@
1
- import { ClassValue, Expression, extract, StyleValue } from "rvx";
2
-
1
+ import { ClassValue, Expression, StyleValue } from "rvx";
3
2
  import { THEME } from "../common/theme.js";
4
3
 
5
4
  export function ControlGroup(props: {
@@ -8,7 +7,7 @@ export function ControlGroup(props: {
8
7
  id?: Expression<string | undefined>;
9
8
  children?: unknown;
10
9
  }): unknown {
11
- const theme = extract(THEME);
10
+ const theme = THEME.current;
12
11
  return <div
13
12
  class={[
14
13
  theme?.control_group,