@ornery/ui-grid-react 0.1.4

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.
@@ -0,0 +1,521 @@
1
+ .ui-grid-host {
2
+ --ui-grid-border-color: var(--app-ui-grid-border-color, #d4d4d8);
3
+ --ui-grid-header-background: var(--app-ui-grid-header-background, #f3f4f6);
4
+ --ui-grid-row-odd: var(--app-ui-grid-row-odd, #fcfcfd);
5
+ --ui-grid-row-even: var(--app-ui-grid-row-even, #f7f7f8);
6
+ --ui-grid-row-hover: var(--app-ui-grid-row-hover, #eef4ff);
7
+ --ui-grid-cell-color: var(--app-ui-grid-cell-color, #111827);
8
+ --ui-grid-muted-color: var(--app-ui-grid-muted-color, #6b7280);
9
+ --ui-grid-surface: var(--app-ui-grid-surface, #ffffff);
10
+ --ui-grid-radius: var(--app-ui-grid-radius, 4px);
11
+ --ui-grid-shadow: var(--app-ui-grid-shadow, 0 10px 24px rgba(15, 23, 42, 0.08));
12
+ --ui-grid-header-weight: var(--app-ui-grid-header-weight, 700);
13
+ --ui-grid-accent: var(--app-ui-grid-accent, #2563eb);
14
+ --ui-grid-group-background: var(--app-ui-grid-group-background, #eceff3);
15
+ --ui-grid-status-active-bg: var(--app-ui-grid-status-active-bg, rgba(22, 163, 74, 0.14));
16
+ --ui-grid-status-active-color: var(--app-ui-grid-status-active-color, #166534);
17
+ --ui-grid-status-expansion-bg: var(--app-ui-grid-status-expansion-bg, rgba(37, 99, 235, 0.14));
18
+ --ui-grid-status-expansion-color: var(--app-ui-grid-status-expansion-color, #1d4ed8);
19
+ --ui-grid-status-enterprise-bg: var(--app-ui-grid-status-enterprise-bg, rgba(15, 118, 110, 0.14));
20
+ --ui-grid-status-enterprise-color: var(--app-ui-grid-status-enterprise-color, #115e59);
21
+ --ui-grid-status-pilot-bg: var(--app-ui-grid-status-pilot-bg, rgba(234, 88, 12, 0.14));
22
+ --ui-grid-status-pilot-color: var(--app-ui-grid-status-pilot-color, #c2410c);
23
+ display: block;
24
+ color: var(--ui-grid-cell-color);
25
+ }
26
+
27
+ .ui-grid-host,
28
+ .ui-grid-host *,
29
+ .ui-grid-host *::before,
30
+ .ui-grid-host *::after {
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ .grid-shell {
35
+ display: grid;
36
+ gap: 1.5rem;
37
+ }
38
+
39
+ .grid-hero {
40
+ display: flex;
41
+ justify-content: space-between;
42
+ gap: 1.5rem;
43
+ align-items: end;
44
+ padding: 1rem 0;
45
+ color: var(--ui-grid-cell-color);
46
+ }
47
+
48
+ .ui-grid-host .eyebrow {
49
+ margin: 0 0 0.5rem;
50
+ text-transform: uppercase;
51
+ letter-spacing: 0.18em;
52
+ font-size: 0.72rem;
53
+ color: var(--ui-grid-muted-color);
54
+ }
55
+
56
+ .ui-grid-host h1 {
57
+ margin: 0;
58
+ font-size: clamp(1.4rem, 2vw, 2rem);
59
+ line-height: 1.1;
60
+ }
61
+
62
+ .deck {
63
+ max-width: 56ch;
64
+ margin: 0.75rem 0 0;
65
+ color: var(--ui-grid-muted-color);
66
+ }
67
+
68
+ .hero-actions {
69
+ display: flex;
70
+ gap: 1rem;
71
+ align-items: center;
72
+ flex-wrap: wrap;
73
+ }
74
+
75
+ .action {
76
+ border: 0;
77
+ border-radius: 999px;
78
+ padding: 0.8rem 1.1rem;
79
+ font: inherit;
80
+ cursor: pointer;
81
+ }
82
+
83
+ .action-secondary {
84
+ background: var(--ui-grid-surface);
85
+ color: var(--ui-grid-cell-color);
86
+ border: 1px solid var(--ui-grid-border-color);
87
+ }
88
+
89
+ .stats-card {
90
+ min-width: 8rem;
91
+ padding: 0.85rem 1rem;
92
+ border-radius: var(--ui-grid-radius);
93
+ background: var(--ui-grid-surface);
94
+ border: 1px solid var(--ui-grid-border-color);
95
+ display: grid;
96
+ }
97
+
98
+ .stats-card span {
99
+ font-size: 1.9rem;
100
+ font-weight: 700;
101
+ }
102
+
103
+ .stats-card small {
104
+ color: var(--ui-grid-muted-color);
105
+ }
106
+
107
+ .grid-frame {
108
+ border-radius: var(--ui-grid-radius);
109
+ background: var(--ui-grid-surface);
110
+ border: 1px solid var(--ui-grid-border-color);
111
+ box-shadow: var(--ui-grid-shadow);
112
+ overflow: hidden;
113
+ }
114
+
115
+ .metrics-strip {
116
+ display: grid;
117
+ grid-template-columns: repeat(4, minmax(0, 1fr));
118
+ gap: 1rem;
119
+ }
120
+
121
+ .metrics-strip article {
122
+ padding: 1rem 1.1rem;
123
+ border-radius: var(--ui-grid-radius);
124
+ background: var(--ui-grid-surface);
125
+ border: 1px solid var(--ui-grid-border-color);
126
+ display: grid;
127
+ }
128
+
129
+ .metrics-strip strong {
130
+ font-size: 1.3rem;
131
+ }
132
+
133
+ .metrics-strip span {
134
+ color: var(--ui-grid-muted-color);
135
+ }
136
+
137
+ .grid-toolbar {
138
+ display: flex;
139
+ justify-content: space-between;
140
+ gap: 1rem;
141
+ padding: 1rem 1.25rem;
142
+ align-items: center;
143
+ background: var(--ui-grid-header-background);
144
+ border-bottom: 1px solid var(--ui-grid-border-color);
145
+ }
146
+
147
+ .grid-toolbar div {
148
+ display: flex;
149
+ gap: 0.4rem;
150
+ align-items: baseline;
151
+ }
152
+
153
+ .grid-toolbar p {
154
+ margin: 0;
155
+ color: var(--ui-grid-muted-color);
156
+ }
157
+
158
+ .grid-table {
159
+ display: grid;
160
+ min-height: 0;
161
+ width: 100%;
162
+ min-width: 0;
163
+ overflow-x: auto;
164
+ overflow-y: hidden;
165
+ }
166
+
167
+ .header-grid,
168
+ .filter-grid,
169
+ .body-grid {
170
+ display: grid;
171
+ }
172
+
173
+ .header-cell,
174
+ .filter-cell,
175
+ .body-cell,
176
+ .group-row {
177
+ min-width: 0;
178
+ }
179
+
180
+ .header-cell {
181
+ display: grid;
182
+ grid-template-columns: minmax(0, 1fr) auto;
183
+ gap: 0.75rem;
184
+ padding: 0.85rem 1rem;
185
+ border-bottom: 1px solid var(--ui-grid-border-color);
186
+ background: var(--ui-grid-header-background);
187
+ font-weight: var(--ui-grid-header-weight);
188
+ align-items: center;
189
+ }
190
+
191
+ .header-cell.is-active {
192
+ background: color-mix(in srgb, var(--ui-grid-accent) 8%, var(--ui-grid-header-background));
193
+ }
194
+
195
+ .header-label {
196
+ min-width: 0;
197
+ }
198
+
199
+ .header-actions {
200
+ display: inline-flex;
201
+ align-items: center;
202
+ gap: 0.4rem;
203
+ justify-self: end;
204
+ }
205
+
206
+ .header-action,
207
+ .chip-action {
208
+ display: inline-flex;
209
+ align-items: center;
210
+ justify-content: center;
211
+ width: 2rem;
212
+ height: 2rem;
213
+ border: 0;
214
+ background: var(--ui-grid-surface);
215
+ padding: 0;
216
+ font: inherit;
217
+ border-radius: 999px;
218
+ cursor: pointer;
219
+ }
220
+
221
+ .header-action-disabled {
222
+ cursor: default;
223
+ }
224
+
225
+ .header-action svg,
226
+ .chip-action svg {
227
+ width: 1rem;
228
+ height: 1rem;
229
+ fill: currentColor;
230
+ }
231
+
232
+ .header-action {
233
+ color: var(--ui-grid-muted-color);
234
+ border: 1px solid var(--ui-grid-border-color);
235
+ }
236
+
237
+ .header-cell.is-active .header-action {
238
+ color: var(--ui-grid-accent);
239
+ border-color: color-mix(in srgb, var(--ui-grid-accent) 35%, var(--ui-grid-border-color));
240
+ }
241
+
242
+ .chip-action {
243
+ border: 1px solid var(--ui-grid-border-color);
244
+ color: var(--ui-grid-muted-color);
245
+ }
246
+
247
+ .chip-action-active {
248
+ background: color-mix(in srgb, var(--ui-grid-accent) 12%, var(--ui-grid-surface));
249
+ border-color: color-mix(in srgb, var(--ui-grid-accent) 35%, var(--ui-grid-border-color));
250
+ color: var(--ui-grid-accent);
251
+ }
252
+
253
+ .filter-cell {
254
+ padding: 0.75rem 1rem 1rem;
255
+ border-bottom: 1px solid var(--ui-grid-border-color);
256
+ background: var(--ui-grid-header-background);
257
+ }
258
+
259
+ .filter-cell input {
260
+ width: 100%;
261
+ border: 1px solid var(--ui-grid-border-color);
262
+ border-radius: var(--ui-grid-radius);
263
+ background: var(--ui-grid-surface);
264
+ padding: 0.55rem 0.7rem;
265
+ font: inherit;
266
+ }
267
+
268
+ .filter-cell input:focus {
269
+ outline: 2px solid color-mix(in srgb, var(--ui-grid-accent) 18%, transparent);
270
+ border-color: var(--ui-grid-accent);
271
+ }
272
+
273
+ .body-cell {
274
+ padding: 0.95rem 1rem;
275
+ border-bottom: 1px solid var(--ui-grid-border-color);
276
+ color: var(--ui-grid-cell-color);
277
+ background: var(--ui-grid-row-even);
278
+ outline: 0;
279
+ }
280
+
281
+ .body-cell.body-cell-odd {
282
+ background: var(--ui-grid-row-odd);
283
+ }
284
+
285
+ .cell-shell {
286
+ display: flex;
287
+ align-items: center;
288
+ gap: 0.55rem;
289
+ min-width: 0;
290
+ }
291
+
292
+ .cell-value {
293
+ min-width: 0;
294
+ flex: 1 1 auto;
295
+ }
296
+
297
+ .row-toggle {
298
+ border: 1px solid var(--ui-grid-border-color);
299
+ background: var(--ui-grid-surface);
300
+ color: var(--ui-grid-cell-color);
301
+ width: 1.55rem;
302
+ height: 1.55rem;
303
+ border-radius: 999px;
304
+ display: inline-flex;
305
+ align-items: center;
306
+ justify-content: center;
307
+ cursor: pointer;
308
+ flex: 0 0 auto;
309
+ padding: 0;
310
+ font: inherit;
311
+ }
312
+
313
+ .toggle-icon {
314
+ width: 1.1rem;
315
+ height: 1.1rem;
316
+ fill: currentColor;
317
+ pointer-events: none;
318
+ }
319
+
320
+ .group-disclosure-icon {
321
+ width: 0.9rem;
322
+ height: 0.9rem;
323
+ }
324
+
325
+ .pagination-icon {
326
+ width: 1.2rem;
327
+ height: 1.2rem;
328
+ fill: currentColor;
329
+ }
330
+
331
+ .expandable-row {
332
+ padding: 1rem 1.25rem;
333
+ border-bottom: 1px solid var(--ui-grid-border-color);
334
+ background: color-mix(in srgb, var(--ui-grid-accent) 4%, var(--ui-grid-surface));
335
+ }
336
+
337
+ .body-grid > .body-cell:hover {
338
+ background: var(--ui-grid-row-hover);
339
+ }
340
+
341
+ .body-cell.cell-focused,
342
+ .body-grid > .body-cell.cell-focused {
343
+ background: color-mix(in srgb, var(--ui-grid-accent) 10%, var(--ui-grid-surface));
344
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ui-grid-accent) 28%, transparent);
345
+ }
346
+
347
+ .body-cell.cell-editing,
348
+ .body-grid > .body-cell.cell-editing {
349
+ background: color-mix(in srgb, var(--ui-grid-accent) 7%, var(--ui-grid-surface));
350
+ }
351
+
352
+ .cell-editor {
353
+ display: block;
354
+ width: 100%;
355
+ min-width: 0;
356
+ max-width: 100%;
357
+ border: 1px solid color-mix(in srgb, var(--ui-grid-accent) 45%, var(--ui-grid-border-color));
358
+ border-radius: calc(var(--ui-grid-radius) - 1px);
359
+ background: var(--ui-grid-surface);
360
+ color: var(--ui-grid-cell-color);
361
+ padding: 0.45rem 0.55rem;
362
+ font: inherit;
363
+ }
364
+
365
+ .cell-editor:focus {
366
+ outline: 2px solid color-mix(in srgb, var(--ui-grid-accent) 18%, transparent);
367
+ }
368
+
369
+ .group-row {
370
+ display: flex;
371
+ align-items: center;
372
+ gap: 0.9rem;
373
+ border: 0;
374
+ width: 100%;
375
+ padding: 0.9rem 1rem;
376
+ background: var(--ui-grid-group-background);
377
+ border-bottom: 1px solid var(--ui-grid-border-color);
378
+ color: var(--ui-grid-cell-color);
379
+ cursor: pointer;
380
+ text-align: left;
381
+ font: inherit;
382
+ }
383
+
384
+ .group-row span,
385
+ .group-row small {
386
+ color: var(--ui-grid-muted-color);
387
+ }
388
+
389
+ .grid-viewport {
390
+ width: 100%;
391
+ }
392
+
393
+ .body-cell.align-center {
394
+ text-align: center;
395
+ }
396
+
397
+ .body-cell.align-end {
398
+ text-align: right;
399
+ }
400
+
401
+ .empty-state {
402
+ display: grid;
403
+ place-items: center;
404
+ gap: 0.35rem;
405
+ min-height: 16rem;
406
+ text-align: center;
407
+ padding: 2rem;
408
+ color: var(--ui-grid-muted-color);
409
+ background: var(--ui-grid-surface);
410
+ }
411
+
412
+ .empty-state p,
413
+ .empty-state strong {
414
+ margin: 0;
415
+ }
416
+
417
+ .pagination-bar {
418
+ display: flex;
419
+ align-items: center;
420
+ justify-content: space-between;
421
+ gap: 1rem;
422
+ padding: 0.85rem 1.25rem;
423
+ border-top: 1px solid var(--ui-grid-border-color);
424
+ background: var(--ui-grid-header-background);
425
+ }
426
+
427
+ .pagination-bar p {
428
+ margin: 0;
429
+ color: var(--ui-grid-muted-color);
430
+ }
431
+
432
+ .pagination-controls {
433
+ display: flex;
434
+ align-items: center;
435
+ gap: 0.75rem;
436
+ flex-wrap: wrap;
437
+ }
438
+
439
+ .pagination-button {
440
+ padding: 0.45rem 0.8rem;
441
+ }
442
+
443
+ .pagination-size {
444
+ display: inline-flex;
445
+ align-items: center;
446
+ gap: 0.4rem;
447
+ }
448
+
449
+ .pagination-size select {
450
+ border: 1px solid var(--ui-grid-border-color);
451
+ border-radius: var(--ui-grid-radius);
452
+ background: var(--ui-grid-surface);
453
+ padding: 0.35rem 0.55rem;
454
+ font: inherit;
455
+ }
456
+
457
+ .sr-only {
458
+ position: absolute;
459
+ width: 1px;
460
+ height: 1px;
461
+ padding: 0;
462
+ margin: -1px;
463
+ overflow: hidden;
464
+ clip: rect(0, 0, 0, 0);
465
+ white-space: nowrap;
466
+ border: 0;
467
+ }
468
+
469
+ .status-pill {
470
+ display: inline-flex;
471
+ align-items: center;
472
+ justify-content: center;
473
+ padding: 0.2rem 0.55rem;
474
+ border-radius: 999px;
475
+ background: rgba(15, 23, 42, 0.07);
476
+ color: var(--ui-grid-cell-color);
477
+ font-size: 0.85rem;
478
+ font-weight: 700;
479
+ }
480
+
481
+ .status-pill-enterprise {
482
+ background: var(--ui-grid-status-enterprise-bg);
483
+ color: var(--ui-grid-status-enterprise-color);
484
+ }
485
+
486
+ .status-pill-active {
487
+ background: var(--ui-grid-status-active-bg);
488
+ color: var(--ui-grid-status-active-color);
489
+ }
490
+
491
+ .status-pill-expansion {
492
+ background: var(--ui-grid-status-expansion-bg);
493
+ color: var(--ui-grid-status-expansion-color);
494
+ }
495
+
496
+ .status-pill-pilot {
497
+ background: var(--ui-grid-status-pilot-bg);
498
+ color: var(--ui-grid-status-pilot-color);
499
+ }
500
+
501
+ @media (max-width: 900px) {
502
+ .metrics-strip {
503
+ grid-template-columns: repeat(2, minmax(0, 1fr));
504
+ }
505
+
506
+ .grid-hero,
507
+ .grid-toolbar {
508
+ grid-template-columns: 1fr;
509
+ display: grid;
510
+ }
511
+
512
+ .hero-actions {
513
+ justify-content: space-between;
514
+ }
515
+ }
516
+
517
+ @media (max-width: 640px) {
518
+ .metrics-strip {
519
+ grid-template-columns: 1fr;
520
+ }
521
+ }