@rokkit/themes 1.1.9 → 1.1.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rokkit/themes",
3
- "version": "1.1.9",
3
+ "version": "1.1.11",
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.9"
106
+ "@rokkit/core": "1.1.11"
107
107
  },
108
108
  "devDependencies": {
109
- "@rokkit/unocss": "1.1.9",
109
+ "@rokkit/unocss": "1.1.11",
110
110
  "magic-string": "^0.30.21",
111
111
  "unocss": "^66.5.1"
112
112
  },
@@ -67,14 +67,14 @@
67
67
 
68
68
  /* Small */
69
69
  [data-button][data-size='sm'] {
70
- height: 1.75rem;
70
+ height: var(--control-h-sm);
71
71
  padding-inline: 0.625rem;
72
72
  font-size: 0.75rem;
73
73
  gap: 0.375rem;
74
74
  }
75
75
 
76
76
  [data-button][data-size='sm'][data-icon-only] {
77
- width: 1.75rem;
77
+ width: var(--control-h-sm);
78
78
  }
79
79
 
80
80
  [data-button][data-size='sm'] [data-item-icon],
@@ -85,7 +85,7 @@
85
85
  /* Medium (default) — responds to density */
86
86
  [data-button][data-size='md'],
87
87
  [data-button]:not([data-size]) {
88
- height: calc(var(--density-icon-size) + var(--density-spacing-sm) * 2);
88
+ height: var(--control-h-md);
89
89
  padding-inline: var(--density-spacing-lg);
90
90
  font-size: 0.875rem;
91
91
  gap: var(--density-spacing-sm);
@@ -93,7 +93,7 @@
93
93
 
94
94
  [data-button][data-size='md'][data-icon-only],
95
95
  [data-button]:not([data-size])[data-icon-only] {
96
- width: calc(var(--density-icon-size) + var(--density-spacing-sm) * 2);
96
+ width: var(--control-h-md);
97
97
  }
98
98
 
99
99
  [data-button][data-size='md'] [data-item-icon],
@@ -105,14 +105,14 @@
105
105
 
106
106
  /* Large */
107
107
  [data-button][data-size='lg'] {
108
- height: 2.75rem;
108
+ height: var(--control-h-lg);
109
109
  padding-inline: 1.5rem;
110
110
  font-size: 1rem;
111
111
  gap: 0.625rem;
112
112
  }
113
113
 
114
114
  [data-button][data-size='lg'][data-icon-only] {
115
- width: 2.75rem;
115
+ width: var(--control-h-lg);
116
116
  }
117
117
 
118
118
  [data-button][data-size='lg'] [data-item-icon],
@@ -7,6 +7,15 @@
7
7
  * Axes: compact → comfortable (default) → cozy
8
8
  */
9
9
 
10
+ /* Control heights — fixed scale (rem, so they track font-size). Density drives
11
+ internal spacing/padding/typography, NOT the control height, so same-size
12
+ controls (button, select, dropdown, menu, toggle, input) always align. */
13
+ :root {
14
+ --control-h-sm: 1.75rem;
15
+ --control-h-md: 2.25rem;
16
+ --control-h-lg: 2.75rem;
17
+ }
18
+
10
19
  :root,
11
20
  [data-density='comfortable'] {
12
21
  --density-spacing-base: 1rem;
@@ -47,20 +47,20 @@
47
47
 
48
48
  /* Size variants */
49
49
  [data-dropdown][data-size='sm'] [data-dropdown-trigger] {
50
- height: 1.5rem;
50
+ height: var(--control-h-sm);
51
51
  padding-inline: 0.5rem;
52
52
  font-size: 0.75rem;
53
53
  }
54
54
 
55
55
  [data-dropdown][data-size='md'] [data-dropdown-trigger],
56
56
  [data-dropdown]:not([data-size]) [data-dropdown-trigger] {
57
- height: calc(var(--density-icon-size) + var(--density-spacing-xs) * 2);
57
+ height: var(--control-h-md);
58
58
  padding-inline: var(--density-spacing-md);
59
59
  font-size: 0.875rem;
60
60
  }
61
61
 
62
62
  [data-dropdown][data-size='lg'] [data-dropdown-trigger] {
63
- height: 2.5rem;
63
+ height: var(--control-h-lg);
64
64
  padding-inline: 0.75rem;
65
65
  font-size: 1rem;
66
66
  }
@@ -169,6 +169,11 @@ button[data-form-reset]:disabled {
169
169
  [data-input-root] [data-select] [data-select-trigger] {
170
170
  @apply flex-1 self-stretch;
171
171
  min-width: 0;
172
+ /* Fill the field (via self-stretch) instead of imposing the standalone control
173
+ height — so a control embedded in a form field is the same height as a plain
174
+ field (the wrapper owns the height). Any control embedded in [data-input-root]
175
+ should follow this contract. */
176
+ height: auto;
172
177
  }
173
178
 
174
179
  /* Checkbox icon */
@@ -201,6 +206,10 @@ button[data-form-reset]:disabled {
201
206
  /* Input wrapper: horizontal for input + icon */
202
207
  [data-input-root] {
203
208
  @apply flex flex-row items-center;
209
+ /* Align to the shared control-height scale so a text field lines up with
210
+ buttons/selects/etc. at the default (md) size. min-height (not height) so
211
+ a textarea still grows past one line. */
212
+ min-height: var(--control-h-md);
204
213
  }
205
214
 
206
215
  /* Input elements fill available width */
package/src/base/menu.css CHANGED
@@ -48,20 +48,20 @@
48
48
 
49
49
  /* Size variants */
50
50
  [data-menu][data-size='sm'] [data-menu-trigger] {
51
- height: 1.5rem;
51
+ height: var(--control-h-sm);
52
52
  padding-inline: 0.5rem;
53
53
  font-size: 0.75rem;
54
54
  }
55
55
 
56
56
  [data-menu][data-size='md'] [data-menu-trigger],
57
57
  [data-menu]:not([data-size]) [data-menu-trigger] {
58
- height: calc(var(--density-icon-size) + var(--density-spacing-xs) * 2);
58
+ height: var(--control-h-md);
59
59
  padding-inline: var(--density-spacing-md);
60
60
  font-size: 0.875rem;
61
61
  }
62
62
 
63
63
  [data-menu][data-size='lg'] [data-menu-trigger] {
64
- height: 2.5rem;
64
+ height: var(--control-h-lg);
65
65
  padding-inline: 0.75rem;
66
66
  font-size: 1rem;
67
67
  }
package/src/base/pill.css CHANGED
@@ -11,6 +11,9 @@
11
11
  white-space: nowrap;
12
12
  outline: none;
13
13
  vertical-align: middle;
14
+ /* Align to the smallest control rung (pills are the compact end of the family);
15
+ min-height so content can still grow. */
16
+ min-height: var(--control-h-sm);
14
17
  }
15
18
 
16
19
  [data-pill-icon] {
@@ -13,7 +13,8 @@
13
13
  position: relative;
14
14
  display: grid;
15
15
  grid-template-rows: auto auto;
16
- height: 2.5rem;
16
+ /* Align to the shared control-height scale (no size prop → md). */
17
+ height: var(--control-h-md);
17
18
  user-select: none;
18
19
  }
19
20
 
@@ -49,20 +49,20 @@
49
49
 
50
50
  /* Size variants */
51
51
  [data-select][data-size='sm'] [data-select-trigger] {
52
- height: 1.75rem;
52
+ height: var(--control-h-sm);
53
53
  padding-inline: 0.5rem;
54
54
  font-size: 0.75rem;
55
55
  }
56
56
 
57
57
  [data-select][data-size='md'] [data-select-trigger],
58
58
  [data-select]:not([data-size]) [data-select-trigger] {
59
- height: 2.25rem;
59
+ height: var(--control-h-md);
60
60
  padding-inline: 0.75rem;
61
61
  font-size: 0.875rem;
62
62
  }
63
63
 
64
64
  [data-select][data-size='lg'] [data-select-trigger] {
65
- height: 2.75rem;
65
+ height: var(--control-h-lg);
66
66
  padding-inline: 1rem;
67
67
  font-size: 1rem;
68
68
  }
@@ -30,6 +30,22 @@
30
30
  cursor: not-allowed;
31
31
  }
32
32
 
33
+ /* Bounding height aligns to the shared control scale (so a switch lines up with
34
+ buttons/inputs/etc. in a row); the track/thumb keep their geometry, centered
35
+ via align-items: center. */
36
+ [data-switch][data-switch-size='sm'] {
37
+ min-height: var(--control-h-sm);
38
+ }
39
+
40
+ [data-switch][data-switch-size='md'],
41
+ [data-switch]:not([data-switch-size]) {
42
+ min-height: var(--control-h-md);
43
+ }
44
+
45
+ [data-switch][data-switch-size='lg'] {
46
+ min-height: var(--control-h-lg);
47
+ }
48
+
33
49
  /* =============================================================================
34
50
  Track
35
51
  ============================================================================= */
@@ -65,7 +65,7 @@
65
65
 
66
66
  /* Small */
67
67
  [data-toggle][data-toggle-size='sm'] [data-toggle-option] {
68
- height: 1.5rem;
68
+ height: var(--control-h-sm);
69
69
  font-size: 0.75rem;
70
70
  gap: 0.25rem;
71
71
  }
@@ -85,7 +85,7 @@
85
85
  /* Medium (default) */
86
86
  [data-toggle][data-toggle-size='md'] [data-toggle-option],
87
87
  [data-toggle]:not([data-toggle-size]) [data-toggle-option] {
88
- height: 2rem;
88
+ height: var(--control-h-md);
89
89
  font-size: 0.875rem;
90
90
  gap: 0.375rem;
91
91
  }
@@ -107,7 +107,7 @@
107
107
 
108
108
  /* Large */
109
109
  [data-toggle][data-toggle-size='lg'] [data-toggle-option] {
110
- height: 2.5rem;
110
+ height: var(--control-h-lg);
111
111
  font-size: 1rem;
112
112
  gap: 0.5rem;
113
113
  }
@@ -169,17 +169,17 @@
169
169
 
170
170
  /* Square control sized to match the option height scale */
171
171
  [data-toggle][data-toggle-variant='button'][data-toggle-size='sm'] {
172
- height: 1.5rem;
173
- min-width: 1.5rem;
172
+ height: var(--control-h-sm);
173
+ min-width: var(--control-h-sm);
174
174
  }
175
175
 
176
176
  [data-toggle][data-toggle-variant='button'][data-toggle-size='md'],
177
177
  [data-toggle][data-toggle-variant='button']:not([data-toggle-size]) {
178
- height: 2rem;
179
- min-width: 2rem;
178
+ height: var(--control-h-md);
179
+ min-width: var(--control-h-md);
180
180
  }
181
181
 
182
182
  [data-toggle][data-toggle-variant='button'][data-toggle-size='lg'] {
183
- height: 2.5rem;
184
- min-width: 2.5rem;
183
+ height: var(--control-h-lg);
184
+ min-width: var(--control-h-lg);
185
185
  }