nitro_kit 2.0.0.alpha.5 → 2.0.0.alpha.6

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/README.md +2 -2
  4. data/STYLE_GUIDE.md +2 -2
  5. data/app/assets/stylesheets/nitro_kit.css +298 -115
  6. data/app/components/nitro_kit/app_shell.rb +1 -1
  7. data/app/components/nitro_kit/dialog.rb +5 -3
  8. data/app/components/nitro_kit/dropzone.rb +18 -2
  9. data/app/components/nitro_kit/form_builder.rb +2 -0
  10. data/app/javascript/controllers/nk/dropzone_controller.js +20 -0
  11. data/docs/agent_guide.md +5 -0
  12. data/docs/component_contracts.md +53 -47
  13. data/docs/customization.md +3 -4
  14. data/docs/hotwire.md +2 -2
  15. data/docs/migration_1_to_2.md +1 -1
  16. data/docs/patterns/application_foundation.md +20 -2
  17. data/docs/patterns/crud_resource.md +19 -4
  18. data/docs/patterns/destructive_action.md +31 -17
  19. data/docs/patterns/inset_workspace.md +178 -0
  20. data/docs/patterns/queryable_collection.md +104 -44
  21. data/docs/patterns/resource_form.md +16 -12
  22. data/docs/rails_integration.md +1 -1
  23. data/lib/nitro_kit/version.rb +1 -1
  24. data/plugins/nitro-kit/skills/nitro-kit-hotwire/SKILL.md +6 -1
  25. data/plugins/nitro-kit/skills/nitro-kit-rails/SKILL.md +1 -1
  26. data/plugins/nitro-kit/skills/nitro-kit-ui/SKILL.md +10 -2
  27. data/src/stylesheets/nitro_kit/components/app_shell.css +1 -19
  28. data/src/stylesheets/nitro_kit/components/dialog.css +18 -1
  29. data/src/stylesheets/nitro_kit/components/dropzone.css +276 -72
  30. data/src/stylesheets/nitro_kit/components/pagination.css +1 -12
  31. data/src/stylesheets/nitro_kit/components/table.css +2 -1
  32. data/src/stylesheets/nitro_kit/components/toolbar.css +0 -10
  33. metadata +2 -1
@@ -179,25 +179,7 @@
179
179
 
180
180
  @layer nitro-kit.variant {
181
181
  :where(
182
- [data-nk="app-shell"][data-layout="sidebar"]
183
- > [data-slot="app-shell-header"]
184
- > [data-slot="app-shell-topbar"]
185
- ) {
186
- display: none;
187
- }
188
-
189
- :where(
190
- [data-nk="app-shell"][data-layout="sidebar"]
191
- > [data-slot="app-shell-main"]
192
- ) {
193
- grid-row: 1 / 3;
194
- }
195
-
196
- :where(
197
- [data-nk="app-shell"]:is(
198
- [data-layout="sidebar"],
199
- [data-layout="hybrid"]
200
- ):not(
182
+ [data-nk="app-shell"][data-layout="sidebar"]:not(
201
183
  :has(> [data-slot="app-shell-header"] > [data-slot="app-shell-brand"])
202
184
  )
203
185
  > [data-slot="app-shell-sidebar"]
@@ -10,6 +10,7 @@
10
10
  margin: auto;
11
11
  padding: calc(var(--nk-space) * 6);
12
12
  overflow: auto;
13
+ text-align: start;
13
14
  color: var(--nk-color-foreground);
14
15
  background: var(--nk-color-surface);
15
16
  border: var(--nk-border-width) solid var(--nk-color-border);
@@ -27,6 +28,23 @@
27
28
  position: static;
28
29
  }
29
30
 
31
+ :where(
32
+ [data-nk="dialog"]
33
+ > [data-slot="dialog-panel"]
34
+ > [data-slot="dialog-header"]
35
+ ) {
36
+ display: flow-root;
37
+ margin-block-end: calc(var(--nk-space) * 4);
38
+ }
39
+
40
+ :where(
41
+ [data-nk="dialog"]
42
+ > [data-slot="dialog-panel"]
43
+ > [data-slot="dialog-body"]
44
+ ) {
45
+ clear: both;
46
+ }
47
+
30
48
  :where([data-nk="dialog"] [data-slot="dialog-title"]) {
31
49
  font-size: var(--nk-title-surface-size);
32
50
  font-weight: var(--nk-title-surface-weight);
@@ -36,7 +54,6 @@
36
54
 
37
55
  :where([data-nk="dialog"] [data-slot="dialog-description"]) {
38
56
  margin-block-start: calc(var(--nk-space) * 2);
39
- margin-block-end: calc(var(--nk-space) * 4);
40
57
  color: var(--nk-color-muted-foreground);
41
58
  font-size: var(--nk-text-sm);
42
59
  line-height: var(--nk-leading-relaxed);
@@ -3,22 +3,44 @@
3
3
  position: relative;
4
4
  display: grid;
5
5
  gap: calc(var(--nk-space) * 3);
6
- min-inline-size: 16rem;
7
- padding: calc(var(--nk-space) * 4);
6
+ min-inline-size: 0;
7
+ inline-size: 100%;
8
8
  color: var(--nk-color-foreground);
9
- background: var(--nk-color-surface);
10
- border: calc(var(--nk-border-width) * 2) dashed var(--nk-color-border);
11
- border-radius: var(--nk-radius-lg);
12
9
  container: nk-dropzone / inline-size;
13
10
  }
14
11
 
15
12
  :where([data-nk="dropzone"] > [data-slot="dropzone-message"]) {
16
13
  display: grid;
14
+ justify-items: center;
15
+ align-content: center;
17
16
  gap: var(--nk-space);
17
+ padding: calc(var(--nk-space) * 8) calc(var(--nk-space) * 4);
18
+ background: var(--nk-color-muted);
19
+ border: var(--nk-border-width) dashed var(--nk-color-border);
20
+ border-color: color-mix(
21
+ in srgb,
22
+ var(--nk-color-foreground) 20%,
23
+ transparent
24
+ );
25
+ border-radius: var(--nk-radius-lg);
18
26
  cursor: pointer;
19
27
  text-align: center;
20
28
  }
21
29
 
30
+ :where([data-nk="dropzone"] [data-slot="dropzone-icon"]) {
31
+ display: flex;
32
+ margin-block-end: calc(var(--nk-space) * 2);
33
+ color: var(--nk-color-muted-foreground);
34
+ }
35
+
36
+ :where(
37
+ [data-nk="dropzone"] [data-slot="dropzone-title"],
38
+ [data-nk="dropzone"] [data-slot="dropzone-file-name"]
39
+ ) {
40
+ font-size: var(--nk-text-sm);
41
+ font-weight: var(--nk-font-weight-medium);
42
+ }
43
+
22
44
  :where(
23
45
  [data-nk="dropzone"] [data-slot="dropzone-instruction"],
24
46
  [data-nk="dropzone"] [data-slot="dropzone-compact-instruction"],
@@ -31,10 +53,51 @@
31
53
  font-size: var(--nk-text-sm);
32
54
  }
33
55
 
56
+ :where(
57
+ [data-nk="dropzone"]
58
+ [data-slot="dropzone-message"]
59
+ > span:not([data-slot="dropzone-icon"])
60
+ ) {
61
+ color: var(--nk-color-muted-foreground);
62
+ color: color-mix(
63
+ in srgb,
64
+ var(--nk-color-muted-foreground) 85%,
65
+ var(--nk-color-foreground)
66
+ );
67
+ }
68
+
34
69
  :where([data-nk="dropzone"] [data-slot="dropzone-compact-instruction"]) {
35
70
  display: none;
36
71
  }
37
72
 
73
+ :where(
74
+ [data-nk="dropzone"][data-layout="inline"]
75
+ > [data-slot="dropzone-message"]
76
+ ) {
77
+ grid-template-columns: auto minmax(0, 1fr);
78
+ justify-items: start;
79
+ column-gap: calc(var(--nk-space) * 4);
80
+ padding: calc(var(--nk-space) * 4);
81
+ text-align: start;
82
+ }
83
+
84
+ :where(
85
+ [data-nk="dropzone"][data-layout="inline"] [data-slot="dropzone-icon"]
86
+ ) {
87
+ grid-column: 1;
88
+ grid-row: 1 / span 3;
89
+ align-self: center;
90
+ margin: 0;
91
+ }
92
+
93
+ :where(
94
+ [data-nk="dropzone"][data-layout="inline"]
95
+ [data-slot="dropzone-message"]
96
+ > :not([data-slot="dropzone-icon"])
97
+ ) {
98
+ grid-column: 2;
99
+ }
100
+
38
101
  :where([data-nk="dropzone"] > [data-slot="dropzone-input"]) {
39
102
  inline-size: 100%;
40
103
  min-block-size: var(--nk-control-height-md);
@@ -52,19 +115,17 @@
52
115
  );
53
116
  margin-inline-end: calc(var(--nk-space) * 3);
54
117
  padding-inline: calc(var(--nk-space) * 3);
55
- color: var(--nk-color-foreground);
118
+ color: var(--nk-button-default-foreground);
56
119
  font-weight: var(--nk-font-weight-medium);
57
- background: var(--nk-color-muted);
120
+ background: var(--nk-button-default-background);
58
121
  border: 0;
59
- border-inline-end: var(--nk-border-width) solid var(--nk-color-border);
122
+ border-inline-end: var(--nk-border-width) solid
123
+ var(--nk-button-default-border);
60
124
  }
61
125
 
62
- /* The minimal presentation keeps the native input operable and in the
63
- accessibility tree while the drop target is the only visible affordance.
64
- The label already points at the input, so clicking anywhere in the message
65
- still opens the file picker. */
126
+ /* Keep the native input focusable; its label carries the visible focus ring. */
66
127
  :where(
67
- [data-nk="dropzone"][data-presentation="minimal"]
128
+ [data-nk="dropzone"]:not([data-presentation="input"])
68
129
  > [data-slot="dropzone-input"]
69
130
  ) {
70
131
  position: absolute;
@@ -75,6 +136,16 @@
75
136
  clip-path: inset(50%);
76
137
  }
77
138
 
139
+ /* Selection is visible in the file rows. Keep the summary for screen readers. */
140
+ :where([data-nk="dropzone"] > [data-slot="dropzone-status"]) {
141
+ position: absolute;
142
+ inline-size: 1px;
143
+ block-size: 1px;
144
+ overflow: hidden;
145
+ white-space: nowrap;
146
+ clip-path: inset(50%);
147
+ }
148
+
78
149
  :where([data-nk="dropzone"] > [data-slot="dropzone-preview-list"]) {
79
150
  display: grid;
80
151
  gap: calc(var(--nk-space) * 2);
@@ -85,24 +156,51 @@
85
156
  :where([data-nk="dropzone"] [data-slot="dropzone-preview"]) {
86
157
  display: grid;
87
158
  grid-template-columns: auto minmax(0, 1fr) auto;
88
- gap: calc(var(--nk-space) * 2);
159
+ column-gap: calc(var(--nk-space) * 3);
160
+ row-gap: var(--nk-space);
89
161
  align-items: center;
90
- padding: calc(var(--nk-space) * 2);
91
- background: var(--nk-color-canvas);
162
+ padding: calc(var(--nk-space) * 3);
163
+ background: var(--nk-color-surface);
92
164
  border: var(--nk-border-width) solid var(--nk-color-border);
93
165
  border-radius: var(--nk-radius-lg);
94
166
  }
95
167
 
168
+ :where(
169
+ [data-nk="dropzone"] [data-slot="dropzone-preview-image"],
170
+ [data-nk="dropzone"] [data-slot="dropzone-file-icon"]
171
+ ) {
172
+ grid-column: 1;
173
+ grid-row: 1 / span 3;
174
+ inline-size: calc(var(--nk-space) * 10);
175
+ block-size: calc(var(--nk-space) * 10);
176
+ border-radius: var(--nk-radius-sm);
177
+ }
178
+
96
179
  :where([data-nk="dropzone"] [data-slot="dropzone-preview-image"]) {
97
- grid-row: span 2;
98
- inline-size: calc(var(--nk-space) * 12);
99
- block-size: calc(var(--nk-space) * 12);
100
180
  object-fit: cover;
101
- border-radius: var(--nk-radius-sm);
181
+ }
182
+
183
+ :where([data-nk="dropzone"] [data-slot="dropzone-file-icon"]) {
184
+ display: grid;
185
+ place-items: center;
186
+ color: var(--nk-color-muted-foreground);
187
+ background: var(--nk-color-muted);
188
+ }
189
+
190
+ :where(
191
+ [data-nk="dropzone"]
192
+ [data-slot="dropzone-preview"]:has(
193
+ [data-slot="dropzone-preview-image"]:not([hidden])
194
+ )
195
+ > [data-slot="dropzone-file-icon"]
196
+ ) {
197
+ display: none;
102
198
  }
103
199
 
104
200
  :where([data-nk="dropzone"] [data-slot="dropzone-file"]) {
105
201
  display: grid;
202
+ grid-column: 2;
203
+ grid-row: 1;
106
204
  min-inline-size: 0;
107
205
  }
108
206
 
@@ -113,53 +211,69 @@
113
211
  }
114
212
 
115
213
  :where([data-nk="dropzone"] [data-slot="dropzone-progress"]) {
214
+ grid-column: 2;
215
+ grid-row: 3;
116
216
  inline-size: 100%;
117
- block-size: calc(var(--nk-space) * 2);
217
+ block-size: var(--nk-space);
118
218
  accent-color: var(--nk-color-primary);
119
219
  }
120
220
 
221
+ :where([data-nk="dropzone"] [data-slot="dropzone-file-status"]) {
222
+ grid-column: 2;
223
+ grid-row: 2;
224
+ overflow-wrap: anywhere;
225
+ }
226
+
121
227
  :where([data-nk="dropzone"] [data-slot="dropzone-remove-control"]) {
122
228
  grid-column: -2 / -1;
229
+ grid-row: 1 / span 3;
123
230
  justify-self: end;
124
231
  min-block-size: var(--nk-control-height-md);
125
- padding-inline: calc(var(--nk-space) * 2);
126
- color: var(--nk-color-foreground);
127
- background: var(--nk-color-surface);
128
- border: var(--nk-border-width) solid var(--nk-color-border);
129
- border-radius: var(--nk-radius-sm);
232
+ padding-inline: calc(var(--nk-space) * 3);
233
+ font-size: var(--nk-text-sm);
234
+ font-weight: var(--nk-font-weight-medium);
235
+ color: var(--nk-button-default-foreground);
236
+ background: var(--nk-button-default-background);
237
+ border: var(--nk-border-width) solid var(--nk-button-default-border);
238
+ border-radius: var(--nk-radius-md);
239
+ cursor: pointer;
130
240
  }
131
241
  }
132
242
 
133
243
  @layer nitro-kit.state {
134
- :where([data-nk="dropzone"][data-state="drag"]) {
135
- background: var(--nk-color-muted);
244
+ :where(
245
+ [data-nk="dropzone"][data-state="drag"] > [data-slot="dropzone-message"]
246
+ ) {
247
+ background: var(--nk-color-surface-hover);
136
248
  border-color: var(--nk-color-primary);
249
+ border-style: solid;
137
250
  }
138
251
 
139
252
  :where(
140
- [data-nk="dropzone"][data-presentation="minimal"][data-state="idle"]
141
- > [data-slot="dropzone-status"]
253
+ [data-nk="dropzone"][data-state="uploading"]
254
+ > [data-slot="dropzone-message"]
142
255
  ) {
143
- text-align: center;
144
- }
145
-
146
- :where([data-nk="dropzone"][data-state="uploading"]) {
147
256
  border-color: var(--nk-color-info);
148
257
  }
149
258
 
150
- :where([data-nk="dropzone"][data-state="success"]) {
151
- border-color: var(--nk-color-success);
152
- }
153
-
154
- :where([data-nk="dropzone"][data-state="error"]) {
259
+ :where(
260
+ [data-nk="dropzone"][data-state="error"] > [data-slot="dropzone-message"],
261
+ [data-nk="dropzone"] [data-slot="dropzone-preview"][data-state="error"]
262
+ ) {
155
263
  border-color: var(--nk-color-destructive);
156
264
  }
157
265
 
158
266
  :where([data-nk="dropzone"][data-state="disabled"]) {
159
- cursor: not-allowed;
160
267
  opacity: var(--nk-disabled-opacity);
161
268
  }
162
269
 
270
+ :where(
271
+ [data-nk="dropzone"][data-state="disabled"]
272
+ > [data-slot="dropzone-message"]
273
+ ) {
274
+ cursor: not-allowed;
275
+ }
276
+
163
277
  :where(
164
278
  [data-nk="dropzone"] > [data-slot="dropzone-input"]:focus-visible,
165
279
  [data-nk="dropzone"] [data-slot="dropzone-remove-control"]:focus-visible
@@ -168,24 +282,35 @@
168
282
  outline-offset: var(--nk-focus-offset);
169
283
  }
170
284
 
171
- /* The clipped input cannot carry a visible ring, so the drop target it
172
- labels wears the focus treatment on its behalf. */
173
285
  :where(
174
- [data-nk="dropzone"][data-presentation="minimal"]:has(
286
+ [data-nk="dropzone"]:not([data-presentation="input"]):has(
175
287
  > [data-slot="dropzone-input"]:focus-visible
176
288
  )
289
+ > [data-slot="dropzone-message"]
177
290
  ) {
178
291
  outline: var(--nk-focus-width) solid var(--nk-color-focus);
179
292
  outline-offset: var(--nk-focus-offset);
180
293
  }
181
294
 
182
295
  @media (hover: hover) {
183
- :where([data-nk="dropzone"] [data-slot="dropzone-remove-control"]:hover) {
296
+ :where(
297
+ [data-nk="dropzone"]:not([data-state="disabled"])
298
+ > [data-slot="dropzone-message"]:hover
299
+ ) {
184
300
  background: var(--nk-color-surface-hover);
185
301
  }
302
+
303
+ :where([data-nk="dropzone"] [data-slot="dropzone-remove-control"]:hover) {
304
+ background: var(--nk-button-default-hover-background);
305
+ }
186
306
  }
187
307
 
188
- :where([data-nk="dropzone"] > [data-slot="dropzone-error"]) {
308
+ :where(
309
+ [data-nk="dropzone"] > [data-slot="dropzone-error"],
310
+ [data-nk="dropzone"]
311
+ [data-slot="dropzone-preview"][data-state="error"]
312
+ > [data-slot="dropzone-file-status"]
313
+ ) {
189
314
  color: var(--nk-color-destructive-content);
190
315
  font-size: var(--nk-text-sm);
191
316
  }
@@ -193,6 +318,13 @@
193
318
 
194
319
  @container nk-dropzone (max-width: 24rem) {
195
320
  @layer nitro-kit.base {
321
+ :where([data-nk="dropzone"] > [data-slot="dropzone-message"]) {
322
+ padding: calc(var(--nk-space) * 5) calc(var(--nk-space) * 3);
323
+ }
324
+ :where([data-nk="dropzone"] [data-slot="dropzone-description"]) {
325
+ text-wrap: pretty;
326
+ }
327
+
196
328
  :where([data-nk="dropzone"] [data-slot="dropzone-instruction"]) {
197
329
  display: none;
198
330
  }
@@ -201,41 +333,113 @@
201
333
  display: inline;
202
334
  }
203
335
 
204
- :where([data-nk="dropzone"] > [data-slot="dropzone-input"]) {
205
- position: absolute;
206
- inline-size: 1px;
207
- block-size: 1px;
208
- overflow: hidden;
209
- white-space: nowrap;
210
- clip-path: inset(50%);
336
+ :where([data-nk="dropzone"] [data-slot="dropzone-preview"]) {
337
+ column-gap: calc(var(--nk-space) * 2);
338
+ padding: calc(var(--nk-space) * 2);
211
339
  }
340
+ }
341
+ }
212
342
 
213
- :where(
214
- [data-nk="dropzone"][data-state="idle"] > [data-slot="dropzone-status"]
215
- ) {
216
- position: absolute;
217
- inline-size: 1px;
218
- block-size: 1px;
219
- overflow: hidden;
220
- white-space: nowrap;
221
- clip-path: inset(50%);
222
- }
343
+ @layer nitro-kit.variant {
344
+ :where(
345
+ [data-nk="dropzone"][data-presentation="avatar"]
346
+ > [data-slot="dropzone-message"]
347
+ ) {
348
+ position: relative;
349
+ inline-size: calc(var(--nk-space) * 16 + var(--nk-space) * 4);
350
+ block-size: calc(var(--nk-space) * 16 + var(--nk-space) * 4);
351
+ padding: 0;
352
+ border-style: solid;
353
+ border-radius: 50%;
354
+ }
223
355
 
224
- :where([data-nk="dropzone"] [data-slot="dropzone-preview"]) {
225
- grid-template-columns: minmax(0, 1fr) auto;
226
- }
356
+ :where(
357
+ [data-nk="dropzone"][data-presentation="avatar"]
358
+ [data-slot="dropzone-icon"]
359
+ ) {
360
+ margin: 0;
361
+ }
227
362
 
228
- :where([data-nk="dropzone"] [data-slot="dropzone-preview-image"]) {
229
- display: none;
230
- }
363
+ :where([data-nk="dropzone"] [data-slot="dropzone-avatar-image"]) {
364
+ position: absolute;
365
+ inset: 0;
366
+ inline-size: 100%;
367
+ block-size: 100%;
368
+ object-fit: cover;
369
+ border-radius: inherit;
370
+ }
371
+
372
+ :where(
373
+ [data-nk="dropzone"]
374
+ [data-slot="dropzone-message"]:has(
375
+ [data-slot="dropzone-avatar-image"]:not([hidden])
376
+ )
377
+ > [data-slot="dropzone-icon"]
378
+ ) {
379
+ visibility: hidden;
380
+ }
381
+
382
+ :where([data-nk="dropzone"] [data-slot="dropzone-upload-badge"]) {
383
+ position: absolute;
384
+ inset-inline-end: 0;
385
+ inset-block-end: 0;
386
+ display: grid;
387
+ place-items: center;
388
+ inline-size: calc(var(--nk-space) * 6);
389
+ block-size: calc(var(--nk-space) * 6);
390
+ color: var(--nk-color-foreground);
391
+ background: var(--nk-color-muted);
392
+ border: calc(var(--nk-border-width) * 2) solid var(--nk-color-canvas);
393
+ border-radius: 50%;
394
+ }
395
+
396
+ :where(
397
+ [data-nk="dropzone"][data-presentation="compact"]
398
+ > [data-slot="dropzone-message"]
399
+ ) {
400
+ display: inline-flex;
401
+ justify-self: start;
402
+ align-items: center;
403
+ gap: calc(var(--nk-space) * 1.5);
404
+ min-block-size: var(--nk-control-height-sm);
405
+ max-inline-size: 100%;
406
+ padding: calc(var(--nk-space) * 0.5) calc(var(--nk-space) * 2);
407
+ background: var(--nk-button-default-background);
408
+ color: var(--nk-button-default-foreground);
409
+ border: var(--nk-border-width) solid var(--nk-button-default-border);
410
+ border-radius: var(--nk-radius-md);
411
+ text-align: start;
231
412
  }
232
413
 
233
- @layer nitro-kit.state {
414
+ /* Concise controls retain their full accessible label and constraints. */
415
+ :where(
416
+ [data-nk="dropzone"]:is(
417
+ [data-presentation="avatar"],
418
+ [data-presentation="compact"]
419
+ )
420
+ [data-slot="dropzone-message"]
421
+ > span:not([data-slot="dropzone-icon"]):not(
422
+ [data-slot="dropzone-upload-badge"]
423
+ ),
424
+ [data-nk="dropzone"][data-presentation="avatar"]
425
+ [data-slot="dropzone-title"]
426
+ ) {
427
+ position: absolute;
428
+ inline-size: 1px;
429
+ block-size: 1px;
430
+ overflow: hidden;
431
+ white-space: nowrap;
432
+ clip-path: inset(50%);
433
+ }
434
+ }
435
+
436
+ @media (pointer: coarse) {
437
+ @layer nitro-kit.size {
234
438
  :where(
235
- [data-nk="dropzone"]:has(> [data-slot="dropzone-input"]:focus-visible)
439
+ [data-nk="dropzone"][data-presentation="compact"]
440
+ > [data-slot="dropzone-message"]
236
441
  ) {
237
- outline: var(--nk-focus-width) solid var(--nk-color-focus);
238
- outline-offset: var(--nk-focus-offset);
442
+ min-block-size: var(--nk-control-height-lg);
239
443
  }
240
444
  }
241
445
  }
@@ -3,14 +3,12 @@
3
3
  display: block;
4
4
  inline-size: fit-content;
5
5
  max-inline-size: 100%;
6
- overflow-x: auto;
7
6
  font-size: var(--nk-text-sm);
8
- scrollbar-width: thin;
9
7
  }
10
8
 
11
9
  :where([data-nk="pagination"] > [data-slot="pagination-list"]) {
12
10
  display: flex;
13
- inline-size: max-content;
11
+ flex-wrap: wrap;
14
12
  align-items: center;
15
13
  gap: var(--nk-space);
16
14
  list-style: none;
@@ -117,12 +115,3 @@
117
115
  user-select: none;
118
116
  }
119
117
  }
120
-
121
- @layer nitro-kit.state {
122
- @media (width < 48rem) {
123
- :where([data-nk="pagination"] > [data-slot="pagination-list"]) {
124
- inline-size: auto;
125
- flex-wrap: wrap;
126
- }
127
- }
128
- }
@@ -1,7 +1,7 @@
1
1
  @layer nitro-kit.base {
2
2
  :where([data-nk="table"]) {
3
3
  inline-size: 100%;
4
- overflow-x: auto;
4
+ overflow-x: scroll;
5
5
  color: var(--nk-color-foreground);
6
6
  scrollbar-width: thin;
7
7
  scrollbar-color: var(--nk-color-border) transparent;
@@ -34,6 +34,7 @@
34
34
  padding-inline: calc(var(--nk-space) * 2);
35
35
  text-align: start;
36
36
  vertical-align: middle;
37
+ white-space: nowrap;
37
38
  }
38
39
 
39
40
  :where([data-nk="table"] [data-slot="table-header"]) {
@@ -26,16 +26,6 @@
26
26
  justify-content: flex-end;
27
27
  margin-inline-start: auto;
28
28
  }
29
-
30
- /* Nested scroll regions such as a clipped ButtonGroup keep a visible
31
- scrollbar so cropped actions read as scrollable. */
32
- :where(
33
- [data-nk="toolbar"] > [data-slot="toolbar-leading"] > *,
34
- [data-nk="toolbar"] > [data-slot="toolbar-trailing"] > *
35
- ) {
36
- scrollbar-width: thin;
37
- scrollbar-color: var(--nk-color-border) transparent;
38
- }
39
29
  }
40
30
 
41
31
  @layer nitro-kit.state {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nitro_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.alpha.5
4
+ version: 2.0.0.alpha.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikkel Malmberg
@@ -187,6 +187,7 @@ files:
187
187
  - docs/patterns/destructive_action.md
188
188
  - docs/patterns/flash_and_toast.md
189
189
  - docs/patterns/inline_edit.md
190
+ - docs/patterns/inset_workspace.md
190
191
  - docs/patterns/queryable_collection.md
191
192
  - docs/patterns/resource_form.md
192
193
  - docs/rails_conventions.md