@rokkit/themes 1.1.8 → 1.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 (46) hide show
  1. package/package.json +3 -3
  2. package/src/base/grid.css +0 -35
  3. package/src/base/palette-manager.css +30 -77
  4. package/src/base/pill.css +0 -4
  5. package/src/base/progress.css +0 -2
  6. package/src/base/rating.css +0 -8
  7. package/src/base/table.css +0 -15
  8. package/src/base/tooltip.css +0 -12
  9. package/src/frosted/grid.css +26 -0
  10. package/src/frosted/index.css +6 -0
  11. package/src/frosted/palette-manager.css +97 -0
  12. package/src/frosted/pill.css +17 -0
  13. package/src/frosted/progress.css +13 -0
  14. package/src/frosted/rating.css +13 -0
  15. package/src/frosted/table.css +10 -0
  16. package/src/frosted/tooltip.css +7 -0
  17. package/src/material/grid.css +26 -0
  18. package/src/material/index.css +6 -0
  19. package/src/material/palette-manager.css +97 -0
  20. package/src/material/pill.css +17 -0
  21. package/src/material/progress.css +13 -0
  22. package/src/material/rating.css +13 -0
  23. package/src/material/table.css +10 -0
  24. package/src/material/tooltip.css +7 -0
  25. package/src/minimal/grid.css +26 -0
  26. package/src/minimal/index.css +6 -0
  27. package/src/minimal/palette-manager.css +97 -0
  28. package/src/minimal/pill.css +17 -0
  29. package/src/minimal/progress.css +13 -0
  30. package/src/minimal/rating.css +13 -0
  31. package/src/minimal/table.css +10 -0
  32. package/src/minimal/tooltip.css +7 -0
  33. package/src/rokkit/index.css +4 -0
  34. package/src/rokkit/palette-manager.css +97 -0
  35. package/src/rokkit/pill.css +17 -0
  36. package/src/rokkit/progress.css +13 -0
  37. package/src/rokkit/rating.css +13 -0
  38. package/src/rokkit/table.css +10 -0
  39. package/src/zen-sumi/grid.css +26 -0
  40. package/src/zen-sumi/index.css +6 -0
  41. package/src/zen-sumi/palette-manager.css +97 -0
  42. package/src/zen-sumi/pill.css +17 -0
  43. package/src/zen-sumi/progress.css +13 -0
  44. package/src/zen-sumi/rating.css +13 -0
  45. package/src/zen-sumi/table.css +10 -0
  46. package/src/zen-sumi/tooltip.css +7 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rokkit/themes",
3
- "version": "1.1.8",
3
+ "version": "1.1.9",
4
4
  "description": "Theme styles for @rokkit/ui components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -103,10 +103,10 @@
103
103
  "build": "bun run build.mjs"
104
104
  },
105
105
  "dependencies": {
106
- "@rokkit/core": "1.1.8"
106
+ "@rokkit/core": "1.1.9"
107
107
  },
108
108
  "devDependencies": {
109
- "@rokkit/unocss": "1.1.8",
109
+ "@rokkit/unocss": "1.1.9",
110
110
  "magic-string": "^0.30.21",
111
111
  "unocss": "^66.5.1"
112
112
  },
package/src/base/grid.css CHANGED
@@ -91,38 +91,3 @@
91
91
  [data-grid][data-size='lg'] [data-grid-item] [data-item-icon] {
92
92
  font-size: 2rem;
93
93
  }
94
-
95
- /* =============================================================================
96
- Default Colors (flipping named tokens — applies to every style)
97
- Mirrors rokkit/grid.css using raw var(--token) so non-rokkit styles
98
- inherit tile borders, hover/focus, active selection, and icon tinting.
99
- ============================================================================= */
100
-
101
- [data-grid-item] {
102
- border-color: var(--paper-edge);
103
- color: var(--ink-mute);
104
- }
105
-
106
- [data-grid-item]:hover:not(:disabled):not([data-disabled]),
107
- [data-grid-item]:focus:not(:disabled):not([data-disabled]) {
108
- border-color: var(--ink-soft);
109
- background: var(--paper-mute);
110
- color: var(--ink);
111
- }
112
-
113
- [data-grid-item][data-active] {
114
- border-color: var(--primary);
115
- color: var(--primary);
116
- }
117
-
118
- [data-grid-item] [data-item-icon] {
119
- color: var(--ink-soft);
120
- }
121
-
122
- [data-grid-item]:hover:not(:disabled):not([data-disabled]) [data-item-icon] {
123
- color: var(--ink-mute);
124
- }
125
-
126
- [data-grid-item][data-active] [data-item-icon] {
127
- color: var(--primary);
128
- }
@@ -1,9 +1,15 @@
1
1
  /**
2
- * PaletteManager — Base structural styles + flipping default colors.
2
+ * PaletteManager — Base STRUCTURAL styles only.
3
3
  *
4
- * Uses raw var(--token) named tokens (complete colors that flip under
5
- * [data-mode="dark"]) so the component is usable in every theme without a
6
- * dedicated theme layer. Structure first, readable colors second.
4
+ * Headless base: this file owns layout/structure (display, flex/grid, gap,
5
+ * padding, sizing, border-width/style, border-radius, font metrics, cursor,
6
+ * transition, overflow, etc.). All COLOR (background/text/border-color, focus
7
+ * ring color, placeholder color) lives in the per-style theme layers
8
+ * (rokkit / minimal / material / frosted / zen-sumi) via @apply token classes.
9
+ *
10
+ * The shade-swatch background uses the component-supplied inline
11
+ * `--preset-color` variable — that is component-driven, not a theme token, so
12
+ * it stays here.
7
13
  *
8
14
  * Parts (from PaletteManager.svelte):
9
15
  * data-palette-manager / data-compact — root container
@@ -28,10 +34,9 @@
28
34
  flex-direction: column;
29
35
  gap: 1rem;
30
36
  padding: 1rem;
31
- border: 1px solid var(--paper-edge);
37
+ border-width: 1px;
38
+ border-style: solid;
32
39
  border-radius: var(--radius-md, 0.375rem);
33
- background-color: var(--paper);
34
- color: var(--ink);
35
40
  font-size: 0.875rem;
36
41
  }
37
42
 
@@ -52,7 +57,6 @@
52
57
  font-weight: 600;
53
58
  text-transform: uppercase;
54
59
  letter-spacing: 0.05em;
55
- color: var(--ink-mute);
56
60
  }
57
61
 
58
62
  /* =============================================================================
@@ -70,10 +74,9 @@
70
74
  align-items: center;
71
75
  gap: 0.5rem;
72
76
  padding: 0.375rem 0.625rem;
73
- border: 1px solid var(--paper-edge);
77
+ border-width: 1px;
78
+ border-style: solid;
74
79
  border-radius: var(--radius-md, 0.375rem);
75
- background-color: var(--paper-soft);
76
- color: var(--ink);
77
80
  font-size: 0.8125rem;
78
81
  cursor: pointer;
79
82
  transition:
@@ -82,21 +85,13 @@
82
85
  color 150ms ease;
83
86
  }
84
87
 
85
- [data-palette-preset]:hover {
86
- background-color: var(--paper-mute);
87
- }
88
-
89
- [data-palette-preset][data-active] {
90
- border-color: var(--primary);
91
- color: var(--primary);
92
- }
93
-
94
88
  [data-palette-preset-swatch] {
95
89
  width: 1rem;
96
90
  height: 1rem;
97
91
  flex-shrink: 0;
98
92
  border-radius: 9999px;
99
- border: 1px solid var(--paper-edge);
93
+ border-width: 1px;
94
+ border-style: solid;
100
95
  background-color: var(--preset-color, var(--primary));
101
96
  }
102
97
 
@@ -116,10 +111,9 @@
116
111
 
117
112
  [data-palette-custom-item] {
118
113
  padding: 0.375rem 0.625rem;
119
- border: 1px solid var(--paper-edge);
114
+ border-width: 1px;
115
+ border-style: solid;
120
116
  border-radius: var(--radius-md, 0.375rem);
121
- background-color: var(--paper-soft);
122
- color: var(--ink-mute);
123
117
  font-size: 0.8125rem;
124
118
  cursor: pointer;
125
119
  transition:
@@ -128,16 +122,6 @@
128
122
  color 150ms ease;
129
123
  }
130
124
 
131
- [data-palette-custom-item]:hover {
132
- background-color: var(--paper-mute);
133
- color: var(--ink);
134
- }
135
-
136
- [data-palette-custom-item][data-active] {
137
- border-color: var(--primary);
138
- color: var(--primary);
139
- }
140
-
141
125
  /* =============================================================================
142
126
  Editor / role rows
143
127
  ============================================================================= */
@@ -158,7 +142,6 @@
158
142
  flex: 0 0 6rem;
159
143
  font-size: 0.8125rem;
160
144
  font-weight: 500;
161
- color: var(--ink);
162
145
  }
163
146
 
164
147
  [data-palette-role-controls] {
@@ -174,23 +157,18 @@
174
157
  [data-palette-color-select],
175
158
  [data-palette-color-input] {
176
159
  padding: 0.3125rem 0.5rem;
177
- border: 1px solid var(--paper-edge);
160
+ border-width: 1px;
161
+ border-style: solid;
178
162
  border-radius: var(--radius-md, 0.375rem);
179
- background-color: var(--paper-soft);
180
- color: var(--ink);
181
163
  font-size: 0.8125rem;
182
164
  line-height: 1.2;
183
165
  }
184
166
 
185
- [data-palette-color-input]::placeholder {
186
- color: var(--ink-faint);
187
- }
188
-
189
167
  [data-palette-color-select]:focus-visible,
190
168
  [data-palette-color-input]:focus-visible {
191
- outline: 2px solid var(--primary);
169
+ outline-width: 2px;
170
+ outline-style: solid;
192
171
  outline-offset: 1px;
193
- border-color: var(--primary);
194
172
  }
195
173
 
196
174
  [data-palette-hex-toggle] {
@@ -200,21 +178,15 @@
200
178
  width: 1.75rem;
201
179
  height: 1.75rem;
202
180
  padding: 0;
203
- border: 1px solid var(--paper-edge);
181
+ border-width: 1px;
182
+ border-style: solid;
204
183
  border-radius: var(--radius-md, 0.375rem);
205
- background-color: var(--paper-soft);
206
- color: var(--ink-mute);
207
184
  cursor: pointer;
208
185
  transition:
209
186
  background-color 150ms ease,
210
187
  color 150ms ease;
211
188
  }
212
189
 
213
- [data-palette-hex-toggle]:hover {
214
- background-color: var(--paper-mute);
215
- color: var(--ink);
216
- }
217
-
218
190
  /* =============================================================================
219
191
  Shade ramp
220
192
  ============================================================================= */
@@ -224,7 +196,8 @@
224
196
  margin-left: auto;
225
197
  border-radius: var(--radius-md, 0.375rem);
226
198
  overflow: hidden;
227
- border: 1px solid var(--paper-edge);
199
+ border-width: 1px;
200
+ border-style: solid;
228
201
  }
229
202
 
230
203
  [data-palette-shade] {
@@ -260,32 +233,12 @@
260
233
 
261
234
  /* Save = secondary / outlined */
262
235
  [data-palette-save] {
263
- border: 1px solid var(--paper-edge);
264
- background-color: var(--paper-soft);
265
- color: var(--ink-mute);
266
- }
267
-
268
- [data-palette-save]:hover {
269
- background-color: var(--paper-mute);
270
- color: var(--ink);
236
+ border-width: 1px;
237
+ border-style: solid;
271
238
  }
272
239
 
273
240
  /* Apply = primary action */
274
241
  [data-palette-apply] {
275
- border: 1px solid var(--primary);
276
- background-color: var(--primary);
277
- color: var(--on-primary);
278
- }
279
-
280
- [data-palette-apply]:hover {
281
- background-color: var(--primary-soft);
282
- border-color: var(--primary-soft);
283
- }
284
-
285
- /* Icon glyphs follow their button's text color */
286
- [data-palette-presets-icon],
287
- [data-palette-hex-icon],
288
- [data-palette-save-icon],
289
- [data-palette-check-icon] {
290
- color: inherit;
242
+ border-width: 1px;
243
+ border-style: solid;
291
244
  }
package/src/base/pill.css CHANGED
@@ -11,8 +11,6 @@
11
11
  white-space: nowrap;
12
12
  outline: none;
13
13
  vertical-align: middle;
14
- background: var(--paper-mute);
15
- color: var(--ink);
16
14
  }
17
15
 
18
16
  [data-pill-icon] {
@@ -37,7 +35,6 @@
37
35
  border-radius: 9999px;
38
36
  cursor: pointer;
39
37
  background: transparent;
40
- color: var(--ink-soft);
41
38
  opacity: 0.6;
42
39
  transition:
43
40
  opacity 0.15s ease,
@@ -48,7 +45,6 @@
48
45
 
49
46
  [data-pill-remove]:hover {
50
47
  opacity: 1;
51
- color: var(--ink);
52
48
  }
53
49
 
54
50
  [data-pill-remove]:disabled {
@@ -6,14 +6,12 @@
6
6
  height: 0.5rem;
7
7
  border-radius: 9999px;
8
8
  overflow: hidden;
9
- background: var(--paper-mute);
10
9
  }
11
10
 
12
11
  [data-progress-bar] {
13
12
  height: 100%;
14
13
  border-radius: 9999px;
15
14
  transition: width 0.3s ease;
16
- background: var(--primary);
17
15
  }
18
16
 
19
17
  [data-progress][data-indeterminate] [data-progress-bar] {
@@ -40,11 +40,3 @@
40
40
  [data-rating-item][data-filled] {
41
41
  opacity: 1;
42
42
  }
43
-
44
- [data-rating-icon] {
45
- color: var(--ink-faint);
46
- }
47
-
48
- [data-rating-item][data-filled] [data-rating-icon] {
49
- color: var(--warning);
50
- }
@@ -92,21 +92,6 @@
92
92
  outline: none;
93
93
  }
94
94
 
95
- /* Default state colors (flipping named tokens — applies to every style).
96
- data-focused = keyboard-focused row (Table + TreeTable emit it as a bare
97
- attribute). data-group = synthesised group row in TreeTable. Scoped under
98
- [data-table] so the bare attribute selectors don't bleed into other
99
- components. Selected/hover remain owned by per-style theme CSS. */
100
- [data-table] tr[data-table-row][data-focused] {
101
- background: var(--paper-mute);
102
- }
103
-
104
- [data-table] tr[data-table-row][data-group] {
105
- background: var(--paper-soft);
106
- color: var(--ink);
107
- font-weight: 500;
108
- }
109
-
110
95
  /* =============================================================================
111
96
  Cells
112
97
  ============================================================================= */
@@ -62,15 +62,3 @@
62
62
  visibility: visible;
63
63
  opacity: 1;
64
64
  }
65
-
66
- /* =============================================================================
67
- Default Colors (flipping named tokens — applies to every style)
68
- Tooltips are inverse: dark bubble on light text. Mirrors rokkit/tooltip.css
69
- using raw var(--token). The component renders no arrow element, so only the
70
- bubble (data-tooltip-content) is colored.
71
- ============================================================================= */
72
-
73
- [data-tooltip-content] {
74
- background: var(--ink);
75
- color: var(--paper);
76
- }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Grid - Glass Theme Styles
3
+ *
4
+ * Tile borders, hover/focus effects, selection highlight.
5
+ */
6
+
7
+ [data-style='frosted'] [data-grid-item] {
8
+ @apply border-paper-edge text-ink-mute;
9
+ }
10
+
11
+ [data-style='frosted'] [data-grid-item]:hover:not(:disabled):not([data-disabled]),
12
+ [data-style='frosted'] [data-grid-item]:focus:not(:disabled):not([data-disabled]) {
13
+ @apply border-ink-soft bg-paper-mute text-ink;
14
+ }
15
+
16
+ [data-style='frosted'] [data-grid-item][data-active] {
17
+ @apply border-primary text-primary;
18
+ }
19
+
20
+ [data-style='frosted'] [data-grid-item] [data-item-icon] {
21
+ @apply text-ink-soft;
22
+ }
23
+
24
+ [data-style='frosted'] [data-grid-item][data-active] [data-item-icon] {
25
+ @apply text-primary;
26
+ }
@@ -18,6 +18,8 @@
18
18
  @import './dropdown.css';
19
19
  @import './floating-action.css';
20
20
  @import './table.css';
21
+ @import './grid.css';
22
+ @import './tooltip.css';
21
23
  @import './search-filter.css';
22
24
  @import './range.css';
23
25
  @import './timeline.css';
@@ -31,3 +33,7 @@
31
33
  @import './step-indicator.css';
32
34
  @import './chart.css';
33
35
  @import './swatch.css';
36
+ @import './palette-manager.css';
37
+ @import './progress.css';
38
+ @import './pill.css';
39
+ @import './rating.css';
@@ -0,0 +1,97 @@
1
+ /**
2
+ * PaletteManager — Glass Theme
3
+ * Color layer for the headless base structure in base/palette-manager.css.
4
+ */
5
+
6
+ /* Container */
7
+ [data-style='frosted'] [data-palette-manager] {
8
+ @apply bg-paper text-ink border-paper-edge;
9
+ }
10
+
11
+ /* Section labels */
12
+ [data-style='frosted'] [data-palette-presets-label],
13
+ [data-style='frosted'] [data-palette-custom-label] {
14
+ @apply text-ink-mute;
15
+ }
16
+
17
+ /* Presets */
18
+ [data-style='frosted'] [data-palette-preset] {
19
+ @apply bg-paper-soft text-ink border-paper-edge;
20
+ }
21
+
22
+ [data-style='frosted'] [data-palette-preset]:hover {
23
+ @apply bg-paper-mute;
24
+ }
25
+
26
+ [data-style='frosted'] [data-palette-preset][data-active] {
27
+ @apply text-primary border-primary;
28
+ }
29
+
30
+ [data-style='frosted'] [data-palette-preset-swatch] {
31
+ @apply border-paper-edge;
32
+ }
33
+
34
+ /* Custom palettes */
35
+ [data-style='frosted'] [data-palette-custom-item] {
36
+ @apply bg-paper-soft text-ink-mute border-paper-edge;
37
+ }
38
+
39
+ [data-style='frosted'] [data-palette-custom-item]:hover {
40
+ @apply bg-paper-mute text-ink;
41
+ }
42
+
43
+ [data-style='frosted'] [data-palette-custom-item][data-active] {
44
+ @apply text-primary border-primary;
45
+ }
46
+
47
+ /* Role rows */
48
+ [data-style='frosted'] [data-palette-role-label] {
49
+ @apply text-ink;
50
+ }
51
+
52
+ /* Color pickers */
53
+ [data-style='frosted'] [data-palette-color-select],
54
+ [data-style='frosted'] [data-palette-color-input] {
55
+ @apply bg-paper-soft text-ink border-paper-edge;
56
+ }
57
+
58
+ [data-style='frosted'] [data-palette-color-input]::placeholder {
59
+ @apply text-ink-faint;
60
+ }
61
+
62
+ [data-style='frosted'] [data-palette-color-select]:focus-visible,
63
+ [data-style='frosted'] [data-palette-color-input]:focus-visible {
64
+ @apply outline-focus-ring border-focus-ring;
65
+ }
66
+
67
+ /* Hex toggle */
68
+ [data-style='frosted'] [data-palette-hex-toggle] {
69
+ @apply bg-paper-soft text-ink-mute border-paper-edge;
70
+ }
71
+
72
+ [data-style='frosted'] [data-palette-hex-toggle]:hover {
73
+ @apply bg-paper-mute text-ink;
74
+ }
75
+
76
+ /* Shade ramp */
77
+ [data-style='frosted'] [data-palette-shades] {
78
+ @apply border-paper-edge;
79
+ }
80
+
81
+ /* Actions — Save = secondary / outlined */
82
+ [data-style='frosted'] [data-palette-save] {
83
+ @apply bg-paper-soft text-ink-mute border-paper-edge;
84
+ }
85
+
86
+ [data-style='frosted'] [data-palette-save]:hover {
87
+ @apply bg-paper-mute text-ink;
88
+ }
89
+
90
+ /* Actions — Apply = primary */
91
+ [data-style='frosted'] [data-palette-apply] {
92
+ @apply bg-primary text-on-primary border-primary;
93
+ }
94
+
95
+ [data-style='frosted'] [data-palette-apply]:hover {
96
+ @apply bg-accent border-accent;
97
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Pill - Frosted Theme Styles
3
+ *
4
+ * Muted surface chip with soft remove affordance.
5
+ */
6
+
7
+ [data-style='frosted'] [data-pill] {
8
+ @apply bg-paper-mute text-ink;
9
+ }
10
+
11
+ [data-style='frosted'] [data-pill-remove] {
12
+ @apply text-ink-soft;
13
+ }
14
+
15
+ [data-style='frosted'] [data-pill-remove]:hover:not(:disabled) {
16
+ @apply text-ink;
17
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ProgressBar - Frosted Theme Styles
3
+ *
4
+ * Default track + primary fill colors.
5
+ */
6
+
7
+ [data-style='frosted'] [data-progress] {
8
+ @apply bg-paper-mute;
9
+ }
10
+
11
+ [data-style='frosted'] [data-progress-bar] {
12
+ @apply bg-primary;
13
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Rating - Frosted Theme Styles
3
+ *
4
+ * Faint empty icons, warning-toned filled icons.
5
+ */
6
+
7
+ [data-style='frosted'] [data-rating-icon] {
8
+ @apply text-ink-faint;
9
+ }
10
+
11
+ [data-style='frosted'] [data-rating-item][data-filled] [data-rating-icon] {
12
+ @apply text-warning;
13
+ }
@@ -58,6 +58,16 @@
58
58
  @apply text-primary bg-primary/40;
59
59
  }
60
60
 
61
+ /* Keyboard-focused row + synthesised TreeTable group row */
62
+ [data-style='frosted'] [data-table] tr[data-table-row][data-focused] {
63
+ @apply bg-paper-mute;
64
+ }
65
+
66
+ [data-style='frosted'] [data-table] tr[data-table-row][data-group] {
67
+ @apply bg-paper-soft text-ink;
68
+ font-weight: 500;
69
+ }
70
+
61
71
  /* =============================================================================
62
72
  Striped
63
73
  ============================================================================= */
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tooltip - Glass Theme Styles
3
+ */
4
+
5
+ [data-style='frosted'] [data-tooltip-content] {
6
+ @apply bg-ink text-paper;
7
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Grid - Material Theme Styles
3
+ *
4
+ * Tile borders, hover/focus effects, selection highlight.
5
+ */
6
+
7
+ [data-style='material'] [data-grid-item] {
8
+ @apply border-paper-edge text-ink-mute;
9
+ }
10
+
11
+ [data-style='material'] [data-grid-item]:hover:not(:disabled):not([data-disabled]),
12
+ [data-style='material'] [data-grid-item]:focus:not(:disabled):not([data-disabled]) {
13
+ @apply border-ink-soft bg-paper-mute text-ink;
14
+ }
15
+
16
+ [data-style='material'] [data-grid-item][data-active] {
17
+ @apply border-primary text-primary;
18
+ }
19
+
20
+ [data-style='material'] [data-grid-item] [data-item-icon] {
21
+ @apply text-ink-soft;
22
+ }
23
+
24
+ [data-style='material'] [data-grid-item][data-active] [data-item-icon] {
25
+ @apply text-primary;
26
+ }
@@ -18,6 +18,8 @@
18
18
  @import './dropdown.css';
19
19
  @import './floating-action.css';
20
20
  @import './table.css';
21
+ @import './grid.css';
22
+ @import './tooltip.css';
21
23
  @import './search-filter.css';
22
24
  @import './range.css';
23
25
  @import './timeline.css';
@@ -31,3 +33,7 @@
31
33
  @import './step-indicator.css';
32
34
  @import './chart.css';
33
35
  @import './swatch.css';
36
+ @import './palette-manager.css';
37
+ @import './progress.css';
38
+ @import './pill.css';
39
+ @import './rating.css';