@amulet-laboratories/hex 0.3.0

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 (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/aldricpace.css +5 -0
  4. package/dist/briarcove.css +5 -0
  5. package/dist/briarcovelib.css +5 -0
  6. package/dist/compass.css +5 -0
  7. package/dist/duskline.css +5 -0
  8. package/dist/forge.css +5 -0
  9. package/dist/garden.css +5 -0
  10. package/dist/greyline.css +5 -0
  11. package/dist/hex.css +5 -0
  12. package/dist/kbcv.css +5 -0
  13. package/dist/lanternhouse.css +5 -0
  14. package/dist/marenlys.css +5 -0
  15. package/dist/quizbit.css +5 -0
  16. package/dist/saltsignal.css +5 -0
  17. package/dist/scoped.css +1 -0
  18. package/dist/spacewizard.css +5 -0
  19. package/dist/tidemark.css +5 -0
  20. package/dist/undertow.css +5 -0
  21. package/dist/vscode.css +5 -0
  22. package/package.json +119 -0
  23. package/src/index.css +10 -0
  24. package/src/scoped/bridge.css +47 -0
  25. package/src/scoped/index.css +51 -0
  26. package/src/scoped/themes/aldricpace.css +115 -0
  27. package/src/scoped/themes/briarcove.css +123 -0
  28. package/src/scoped/themes/briarcovelib.css +111 -0
  29. package/src/scoped/themes/compass.css +111 -0
  30. package/src/scoped/themes/duskline.css +117 -0
  31. package/src/scoped/themes/forge.css +123 -0
  32. package/src/scoped/themes/garden.css +123 -0
  33. package/src/scoped/themes/greyline.css +116 -0
  34. package/src/scoped/themes/kbcv.css +111 -0
  35. package/src/scoped/themes/lanternhouse.css +111 -0
  36. package/src/scoped/themes/marenlys.css +112 -0
  37. package/src/scoped/themes/quizbit.css +101 -0
  38. package/src/scoped/themes/saltsignal.css +114 -0
  39. package/src/scoped/themes/spacewizard.css +115 -0
  40. package/src/scoped/themes/tidemark.css +119 -0
  41. package/src/scoped/themes/undertow.css +113 -0
  42. package/src/scoped/themes/vscode.css +230 -0
  43. package/src/scoped/tokens.css +21 -0
  44. package/src/shared/a11y.css +175 -0
  45. package/src/shared/components/core.css +1654 -0
  46. package/src/shared/components/data.css +418 -0
  47. package/src/shared/components/editor.css +358 -0
  48. package/src/shared/components/extras.css +897 -0
  49. package/src/shared/components/layout.css +663 -0
  50. package/src/shared/components/lists.css +278 -0
  51. package/src/shared/components/menus.css +377 -0
  52. package/src/shared/components/nav.css +943 -0
  53. package/src/shared/components/prose.css +302 -0
  54. package/src/shared/components/shell.css +528 -0
  55. package/src/shared/components/spatial.css +184 -0
  56. package/src/shared/components/temporal.css +191 -0
  57. package/src/shared/components/web.css +1689 -0
  58. package/src/shared/rig-defaults.css +121 -0
  59. package/src/shared/scroll-animations.css +176 -0
  60. package/src/shared/tokens.css +125 -0
  61. package/src/shared/utilities.css +204 -0
  62. package/src/themes/aldricpace/base.css +114 -0
  63. package/src/themes/aldricpace/components.css +22 -0
  64. package/src/themes/aldricpace/domains.css +19 -0
  65. package/src/themes/aldricpace/index.css +6 -0
  66. package/src/themes/aldricpace/tokens.css +169 -0
  67. package/src/themes/andrewpassanisi/base.css +192 -0
  68. package/src/themes/andrewpassanisi/index.css +11 -0
  69. package/src/themes/andrewpassanisi/tokens.css +136 -0
  70. package/src/themes/briarcove/base.css +170 -0
  71. package/src/themes/briarcove/components.css +27 -0
  72. package/src/themes/briarcove/domains.css +72 -0
  73. package/src/themes/briarcove/index.css +6 -0
  74. package/src/themes/briarcove/tokens.css +179 -0
  75. package/src/themes/briarcovelib/base.css +111 -0
  76. package/src/themes/briarcovelib/components.css +22 -0
  77. package/src/themes/briarcovelib/domains.css +19 -0
  78. package/src/themes/briarcovelib/index.css +6 -0
  79. package/src/themes/briarcovelib/tokens.css +167 -0
  80. package/src/themes/compass/base.css +112 -0
  81. package/src/themes/compass/components.css +22 -0
  82. package/src/themes/compass/domains.css +19 -0
  83. package/src/themes/compass/index.css +6 -0
  84. package/src/themes/compass/tokens.css +167 -0
  85. package/src/themes/duskline/base.css +167 -0
  86. package/src/themes/duskline/components.css +27 -0
  87. package/src/themes/duskline/domains.css +72 -0
  88. package/src/themes/duskline/index.css +6 -0
  89. package/src/themes/duskline/tokens.css +171 -0
  90. package/src/themes/forge/base.css +165 -0
  91. package/src/themes/forge/components.css +24 -0
  92. package/src/themes/forge/domains.css +72 -0
  93. package/src/themes/forge/index.css +6 -0
  94. package/src/themes/forge/tokens.css +178 -0
  95. package/src/themes/garden/base.css +167 -0
  96. package/src/themes/garden/components.css +27 -0
  97. package/src/themes/garden/domains.css +72 -0
  98. package/src/themes/garden/index.css +6 -0
  99. package/src/themes/garden/tokens.css +178 -0
  100. package/src/themes/greyline/base.css +165 -0
  101. package/src/themes/greyline/components.css +24 -0
  102. package/src/themes/greyline/domains.css +70 -0
  103. package/src/themes/greyline/index.css +6 -0
  104. package/src/themes/greyline/tokens.css +161 -0
  105. package/src/themes/kbcv/base.css +112 -0
  106. package/src/themes/kbcv/components.css +22 -0
  107. package/src/themes/kbcv/domains.css +19 -0
  108. package/src/themes/kbcv/index.css +6 -0
  109. package/src/themes/kbcv/tokens.css +167 -0
  110. package/src/themes/lanternhouse/base.css +170 -0
  111. package/src/themes/lanternhouse/components.css +27 -0
  112. package/src/themes/lanternhouse/domains.css +72 -0
  113. package/src/themes/lanternhouse/index.css +6 -0
  114. package/src/themes/lanternhouse/tokens.css +167 -0
  115. package/src/themes/marenlys/base.css +181 -0
  116. package/src/themes/marenlys/components.css +27 -0
  117. package/src/themes/marenlys/domains.css +72 -0
  118. package/src/themes/marenlys/index.css +6 -0
  119. package/src/themes/marenlys/tokens.css +167 -0
  120. package/src/themes/quizbit/base.css +120 -0
  121. package/src/themes/quizbit/components.css +27 -0
  122. package/src/themes/quizbit/domains.css +7 -0
  123. package/src/themes/quizbit/index.css +6 -0
  124. package/src/themes/quizbit/tokens.css +132 -0
  125. package/src/themes/saltsignal/base.css +168 -0
  126. package/src/themes/saltsignal/components.css +27 -0
  127. package/src/themes/saltsignal/domains.css +72 -0
  128. package/src/themes/saltsignal/index.css +6 -0
  129. package/src/themes/saltsignal/tokens.css +170 -0
  130. package/src/themes/spacewizard/base.css +165 -0
  131. package/src/themes/spacewizard/components.css +24 -0
  132. package/src/themes/spacewizard/domains.css +70 -0
  133. package/src/themes/spacewizard/index.css +6 -0
  134. package/src/themes/spacewizard/tokens.css +160 -0
  135. package/src/themes/tidemark/base.css +169 -0
  136. package/src/themes/tidemark/components.css +27 -0
  137. package/src/themes/tidemark/domains.css +72 -0
  138. package/src/themes/tidemark/index.css +6 -0
  139. package/src/themes/tidemark/tokens.css +175 -0
  140. package/src/themes/undertow/base.css +114 -0
  141. package/src/themes/undertow/components.css +22 -0
  142. package/src/themes/undertow/domains.css +19 -0
  143. package/src/themes/undertow/index.css +6 -0
  144. package/src/themes/undertow/tokens.css +171 -0
  145. package/src/themes/vscode/base.css +104 -0
  146. package/src/themes/vscode/components.css +24 -0
  147. package/src/themes/vscode/domains.css +132 -0
  148. package/src/themes/vscode/index.css +13 -0
  149. package/src/themes/vscode/tokens.css +346 -0
@@ -0,0 +1,897 @@
1
+ /* Hex — Shared Extras Components
2
+ * Theme styles for Rig's extras package: Alert, Toast, EmptyState,
3
+ * NotificationCenter, KanbanBoard, CalendarGrid, Skeleton, Tooltip, PropertyGrid.
4
+ */
5
+
6
+ /* ───────── Alert ───────── */
7
+
8
+ [data-rig-alert] {
9
+ display: flex;
10
+ align-items: flex-start;
11
+ gap: 10px;
12
+ padding: 12px 16px;
13
+ border: 1px solid var(--color-border);
14
+ border-radius: var(--radius);
15
+ font-size: 13px;
16
+ }
17
+
18
+ [data-rig-alert][data-variant='info'] {
19
+ border-color: color-mix(in srgb, var(--color-info) 40%, transparent);
20
+ background: color-mix(in srgb, var(--color-info) 8%, transparent);
21
+ }
22
+
23
+ [data-rig-alert][data-variant='success'] {
24
+ border-color: color-mix(in srgb, var(--color-success) 40%, transparent);
25
+ background: color-mix(in srgb, var(--color-success) 8%, transparent);
26
+ }
27
+
28
+ [data-rig-alert][data-variant='warning'] {
29
+ border-color: color-mix(in srgb, var(--color-warning) 40%, transparent);
30
+ background: color-mix(in srgb, var(--color-warning) 8%, transparent);
31
+ }
32
+
33
+ [data-rig-alert][data-variant='error'] {
34
+ border-color: color-mix(in srgb, var(--color-destructive) 40%, transparent);
35
+ background: color-mix(in srgb, var(--color-destructive) 8%, transparent);
36
+ }
37
+
38
+ [data-rig-alert-icon] {
39
+ flex-shrink: 0;
40
+ margin-top: 1px;
41
+ }
42
+
43
+ [data-rig-alert-content] {
44
+ flex: 1;
45
+ min-width: 0;
46
+ }
47
+
48
+ [data-rig-alert-title] {
49
+ font-weight: 500;
50
+ color: var(--color-foreground);
51
+ margin-bottom: 2px;
52
+ }
53
+
54
+ [data-rig-alert-description] {
55
+ color: var(--color-muted-foreground);
56
+ font-size: 12px;
57
+ }
58
+
59
+ [data-rig-alert-action] {
60
+ flex-shrink: 0;
61
+ }
62
+
63
+ [data-rig-alert-dismiss] {
64
+ @apply inline-flex items-center justify-center;
65
+
66
+ width: 20px;
67
+ height: 20px;
68
+ flex-shrink: 0;
69
+ border: none;
70
+ background: none;
71
+ color: var(--color-muted-foreground);
72
+ cursor: pointer;
73
+ border-radius: 3px;
74
+ font-size: 14px;
75
+ transition: color 0.15s ease;
76
+ }
77
+
78
+ [data-rig-alert-dismiss]:hover {
79
+ color: var(--color-foreground);
80
+ }
81
+
82
+ /* ───────── Toast ───────── */
83
+
84
+ [data-rig-toast-container] {
85
+ position: fixed;
86
+ bottom: 16px;
87
+ right: 16px;
88
+ z-index: 9999;
89
+ display: flex;
90
+ flex-direction: column;
91
+ gap: 8px;
92
+ max-width: 360px;
93
+ }
94
+
95
+ [data-rig-toast] {
96
+ background: var(--rig-notification-bg);
97
+ border: 1px solid var(--rig-notification-border);
98
+ box-shadow: 0 4px 16px rgb(0 0 0 / 40%);
99
+ font-size: 12px;
100
+ border-radius: var(--radius);
101
+ }
102
+
103
+ [data-rig-toast][data-variant='info'] {
104
+ border-left: 3px solid var(--color-info);
105
+ color: var(--color-foreground);
106
+ }
107
+
108
+ [data-rig-toast][data-variant='success'] {
109
+ border-left: 3px solid var(--color-success);
110
+ color: var(--color-foreground);
111
+ }
112
+
113
+ [data-rig-toast][data-variant='error'] {
114
+ border-left: 3px solid var(--color-destructive);
115
+ color: var(--color-foreground);
116
+ }
117
+
118
+ [data-rig-toast][data-variant='warning'] {
119
+ border-left: 3px solid var(--color-warning);
120
+ color: var(--color-foreground);
121
+ }
122
+
123
+ [data-rig-toast-message] {
124
+ color: var(--color-foreground);
125
+ }
126
+
127
+ [data-rig-toast-dismiss] {
128
+ color: var(--rig-description-fg);
129
+ transition: color 0.1s ease;
130
+ }
131
+
132
+ [data-rig-toast-dismiss]:hover {
133
+ color: var(--color-foreground);
134
+ }
135
+
136
+ /* ───────── Empty State ───────── */
137
+
138
+ [data-rig-empty-state] {
139
+ color: var(--rig-description-fg);
140
+ font-size: 13px;
141
+ }
142
+
143
+ [data-rig-empty-state-title] {
144
+ color: var(--color-foreground);
145
+ font-size: 14px;
146
+ }
147
+
148
+ [data-rig-empty-state-description] {
149
+ color: var(--rig-description-fg);
150
+ font-size: 13px;
151
+ }
152
+
153
+ [data-rig-empty-state-icon] {
154
+ color: var(--rig-description-fg);
155
+ font-size: 24px;
156
+ }
157
+
158
+ /* ───────── NotificationCenter ───────── */
159
+
160
+ [data-rig-notification-center] {
161
+ position: relative;
162
+ }
163
+
164
+ [data-rig-notification-bell] {
165
+ color: var(--rig-activitybar-inactive-fg);
166
+ font-size: 14px;
167
+ border-radius: 2px;
168
+ transition:
169
+ color 0.15s ease,
170
+ background-color 0.15s ease;
171
+ }
172
+
173
+ [data-rig-notification-bell]:hover {
174
+ color: var(--color-foreground);
175
+ background: var(--rig-list-hover-bg);
176
+ }
177
+
178
+ [data-rig-notification-bell-icon] {
179
+ color: inherit;
180
+ }
181
+
182
+ [data-rig-notification-badge] {
183
+ font-size: 9px;
184
+ color: var(--rig-activitybar-badge-fg);
185
+ background: var(--rig-activitybar-badge-bg);
186
+ border-radius: 7px;
187
+ }
188
+
189
+ [data-rig-notification-panel] {
190
+ background: var(--rig-notification-bg);
191
+ border: 1px solid var(--rig-notification-border);
192
+ border-radius: 3px;
193
+ box-shadow: 0 8px 24px rgb(0 0 0 / 50%);
194
+ animation: notification-panel-in 0.12s ease;
195
+ }
196
+
197
+ @keyframes notification-panel-in {
198
+ from {
199
+ opacity: 0;
200
+ transform: translateY(4px);
201
+ }
202
+
203
+ to {
204
+ opacity: 1;
205
+ transform: translateY(0);
206
+ }
207
+ }
208
+
209
+ [data-rig-notification-header] {
210
+ border-bottom: 1px solid var(--color-border);
211
+ font-size: 11px;
212
+ color: var(--rig-description-fg);
213
+ }
214
+
215
+ [data-rig-notification-header] button {
216
+ font-size: 10px;
217
+ color: var(--rig-description-fg);
218
+ border-radius: 2px;
219
+ transition: color 0.1s ease;
220
+ }
221
+
222
+ [data-rig-notification-header] button:hover {
223
+ color: var(--color-foreground);
224
+ }
225
+
226
+ [data-rig-notification-clear] {
227
+ font-size: 10px;
228
+ color: var(--rig-description-fg);
229
+ border-radius: 2px;
230
+ transition: color 0.1s ease;
231
+ }
232
+
233
+ [data-rig-notification-clear]:hover {
234
+ color: var(--color-foreground);
235
+ }
236
+
237
+ [data-rig-notification-list] {
238
+ list-style: none;
239
+ margin: 0;
240
+ padding: 0;
241
+ }
242
+
243
+ [data-rig-notification-item] {
244
+ border-bottom: 1px solid var(--color-border);
245
+ transition: background-color 0.1s ease;
246
+ }
247
+
248
+ [data-rig-notification-item]:hover {
249
+ background: var(--rig-list-hover-bg);
250
+ }
251
+
252
+ [data-rig-notification-item]:last-child {
253
+ border-bottom: none;
254
+ }
255
+
256
+ /* Variant dot via pseudo-element */
257
+ [data-rig-notification-item]::before {
258
+ content: '';
259
+ width: 6px;
260
+ height: 6px;
261
+ border-radius: 50%;
262
+ margin-top: 5px;
263
+ flex-shrink: 0;
264
+ background: var(--color-info);
265
+ }
266
+
267
+ [data-rig-notification-item][data-variant='info']::before {
268
+ background: var(--color-info);
269
+ }
270
+
271
+ [data-rig-notification-item][data-variant='success']::before {
272
+ background: var(--color-success);
273
+ }
274
+
275
+ [data-rig-notification-item][data-variant='warning']::before {
276
+ background: var(--color-warning);
277
+ }
278
+
279
+ [data-rig-notification-item][data-variant='error']::before {
280
+ background: var(--color-destructive);
281
+ }
282
+
283
+ [data-rig-notification-message] {
284
+ font-size: 12px;
285
+ color: var(--rig-notification-fg);
286
+ line-height: 1.4;
287
+ }
288
+
289
+ [data-rig-notification-time] {
290
+ font-size: 10px;
291
+ color: var(--rig-description-fg);
292
+ }
293
+
294
+ [data-rig-notification-dismiss] {
295
+ font-size: 12px;
296
+ color: var(--rig-description-fg);
297
+ border-radius: 2px;
298
+ transition: color 0.1s ease;
299
+ }
300
+
301
+ [data-rig-notification-dismiss]:hover {
302
+ color: var(--color-foreground);
303
+ }
304
+
305
+ [data-rig-notification-empty] {
306
+ font-size: 12px;
307
+ color: var(--rig-description-fg);
308
+ font-style: italic;
309
+ }
310
+
311
+ /* ───────── KanbanBoard ───────── */
312
+
313
+ [data-rig-kanban-board] {
314
+ gap: 16px;
315
+ }
316
+
317
+ [data-rig-kanban-column] {
318
+ background: var(--color-card);
319
+ border: 1px solid var(--color-border);
320
+ border-radius: var(--radius);
321
+ }
322
+
323
+ [data-rig-kanban-column-header] {
324
+ color: var(--color-foreground);
325
+ font-size: 13px;
326
+ font-weight: 500;
327
+ padding: 8px 12px;
328
+ border-bottom: 1px solid var(--color-border);
329
+ }
330
+
331
+ [data-rig-kanban-column-title] {
332
+ color: var(--color-foreground);
333
+ font-weight: 500;
334
+ }
335
+
336
+ [data-rig-kanban-column-count] {
337
+ color: var(--rig-description-fg);
338
+ font-size: 11px;
339
+ font-weight: 400;
340
+ }
341
+
342
+ [data-rig-kanban-column-items] {
343
+ display: flex;
344
+ flex-direction: column;
345
+ gap: 8px;
346
+ padding: 8px;
347
+ }
348
+
349
+ [data-rig-kanban-card] {
350
+ background: var(--color-background);
351
+ border: 1px solid var(--color-border);
352
+ border-radius: var(--radius);
353
+ padding: 12px;
354
+ font-size: 13px;
355
+ transition: border-color 0.1s ease;
356
+ box-shadow: 0 1px 3px rgb(0 0 0 / 20%);
357
+ }
358
+
359
+ [data-rig-kanban-card]:hover {
360
+ border-color: var(--rig-widget-border);
361
+ box-shadow: 0 2px 6px rgb(0 0 0 / 30%);
362
+ }
363
+
364
+ [data-rig-kanban-card][draggable='true'] {
365
+ cursor: grab;
366
+ }
367
+
368
+ [data-rig-kanban-card-title] {
369
+ color: var(--color-foreground);
370
+ font-weight: 500;
371
+ }
372
+
373
+ [data-rig-kanban-card-description] {
374
+ color: var(--rig-description-fg);
375
+ font-size: 12px;
376
+ }
377
+
378
+ [data-rig-kanban-card-tags] {
379
+ display: flex;
380
+ flex-wrap: wrap;
381
+ gap: 4px;
382
+ margin-top: 8px;
383
+ }
384
+
385
+ [data-rig-kanban-card-tag] {
386
+ font-size: 11px;
387
+ border-radius: 11px;
388
+ padding: 1px 8px;
389
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
390
+ color: var(--color-primary);
391
+ }
392
+
393
+ /* ───────── CalendarGrid ───────── */
394
+
395
+ [data-rig-calendar-grid] {
396
+ background: var(--color-background);
397
+ border: 1px solid var(--color-border);
398
+ border-radius: var(--radius);
399
+ padding: 12px;
400
+ }
401
+
402
+ [data-rig-calendar-grid-header] {
403
+ display: flex;
404
+ align-items: center;
405
+ justify-content: space-between;
406
+ margin-bottom: 8px;
407
+ }
408
+
409
+ [data-rig-calendar-grid-title] {
410
+ color: var(--color-foreground);
411
+ font-size: 13px;
412
+ font-weight: 500;
413
+ }
414
+
415
+ [data-rig-calendar-grid-nav] {
416
+ color: var(--rig-description-fg);
417
+ transition: color 0.1s ease;
418
+ }
419
+
420
+ [data-rig-calendar-grid-nav]:hover {
421
+ color: var(--color-foreground);
422
+ }
423
+
424
+ [data-rig-calendar-grid-weekdays] {
425
+ display: grid;
426
+ grid-template-columns: repeat(7, 1fr);
427
+ margin-bottom: 4px;
428
+ }
429
+
430
+ [data-rig-calendar-grid-weekday] {
431
+ color: var(--rig-description-fg);
432
+ font-size: 11px;
433
+ text-align: center;
434
+ }
435
+
436
+ [data-rig-calendar-grid-week] {
437
+ display: grid;
438
+ grid-template-columns: repeat(7, 1fr);
439
+ }
440
+
441
+ [data-rig-calendar-grid-day] {
442
+ font-size: 13px;
443
+ color: var(--color-foreground);
444
+ border-radius: var(--radius);
445
+ transition: background-color 0.1s ease;
446
+ }
447
+
448
+ [data-rig-calendar-grid-day]:hover {
449
+ background: var(--rig-list-hover-bg);
450
+ }
451
+
452
+ [data-rig-calendar-grid-day][data-selected] {
453
+ background: var(--color-primary);
454
+ color: #ffffff;
455
+ }
456
+
457
+ [data-rig-calendar-grid-day][data-today] {
458
+ outline: 1px solid var(--color-ring);
459
+ outline-offset: -1px;
460
+ }
461
+
462
+ [data-rig-calendar-grid-day]:not([data-current-month]) {
463
+ color: var(--rig-description-fg);
464
+ opacity: 0.5;
465
+ }
466
+
467
+ [data-rig-calendar-grid-day-number] {
468
+ font-size: 12px;
469
+ line-height: 1;
470
+ }
471
+
472
+ [data-rig-calendar-grid-events] {
473
+ display: flex;
474
+ flex-direction: column;
475
+ gap: 2px;
476
+ margin-top: 2px;
477
+ }
478
+
479
+ [data-rig-calendar-grid-event] {
480
+ font-size: 10px;
481
+ border-radius: 2px;
482
+ padding: 0 4px;
483
+ overflow: hidden;
484
+ text-overflow: ellipsis;
485
+ white-space: nowrap;
486
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
487
+ color: var(--color-primary);
488
+ }
489
+
490
+ /* ───────── Skeleton ───────── */
491
+
492
+ [data-rig-skeleton] {
493
+ display: flex;
494
+ flex-direction: column;
495
+ gap: 8px;
496
+ }
497
+
498
+ [data-rig-skeleton][data-mode='shimmer'] {
499
+ background: color-mix(in srgb, var(--color-foreground) 8%, transparent);
500
+ overflow: hidden;
501
+ position: relative;
502
+ }
503
+
504
+ [data-rig-shimmer-wave] {
505
+ position: absolute;
506
+ inset: 0;
507
+ background: linear-gradient(
508
+ 90deg,
509
+ transparent,
510
+ color-mix(in srgb, var(--color-foreground) 4%, transparent),
511
+ transparent
512
+ );
513
+ animation: rig-shimmer-wave 1.5s ease-in-out infinite;
514
+ }
515
+
516
+ @keyframes rig-shimmer-wave {
517
+ 0% {
518
+ transform: translateX(-100%);
519
+ }
520
+ 100% {
521
+ transform: translateX(100%);
522
+ }
523
+ }
524
+
525
+ [data-rig-skeleton-line] {
526
+ height: 12px;
527
+ border-radius: 2px;
528
+ background: color-mix(in srgb, var(--color-foreground) 6%, transparent);
529
+ }
530
+
531
+ [data-rig-skeleton][data-animate] [data-rig-skeleton-line] {
532
+ animation: skeleton-pulse 1.5s ease-in-out infinite;
533
+ }
534
+
535
+ @keyframes skeleton-pulse {
536
+ 0%,
537
+ 100% {
538
+ opacity: 1;
539
+ }
540
+
541
+ 50% {
542
+ opacity: 0.4;
543
+ }
544
+ }
545
+
546
+ /* ───────── Tooltip ───────── */
547
+
548
+ [data-rig-tooltip] {
549
+ position: fixed;
550
+ z-index: 9999;
551
+ background: var(--rig-widget-bg);
552
+ border: 1px solid var(--rig-widget-border);
553
+ border-radius: 3px;
554
+ padding: 2px 4px;
555
+ font-size: 13px;
556
+ line-height: 1.5em;
557
+ color: var(--color-foreground);
558
+ pointer-events: none;
559
+ white-space: nowrap;
560
+ box-shadow: 0 2px 8px rgb(0 0 0 / 36%);
561
+ animation: tooltip-in 0.1s ease;
562
+ }
563
+
564
+ @keyframes tooltip-in {
565
+ from {
566
+ opacity: 0;
567
+ }
568
+
569
+ to {
570
+ opacity: 1;
571
+ }
572
+ }
573
+
574
+ /* ───────── PropertyGrid ───────── */
575
+
576
+ [data-rig-property-grid] {
577
+ display: grid;
578
+ gap: 0;
579
+ }
580
+
581
+ [data-rig-property-row] {
582
+ display: contents;
583
+ }
584
+
585
+ [data-rig-property-key] {
586
+ padding: 4px 12px 4px 0;
587
+ font-size: 12px;
588
+ color: var(--rig-description-fg);
589
+ white-space: nowrap;
590
+ border-bottom: 1px solid var(--color-border);
591
+ }
592
+
593
+ [data-rig-property-value] {
594
+ padding: 4px 0;
595
+ font-size: 12px;
596
+ color: var(--color-foreground);
597
+ border-bottom: 1px solid var(--color-border);
598
+ word-break: break-word;
599
+ }
600
+
601
+ [data-rig-property-value][data-mono] {
602
+ font-family: var(--font-mono);
603
+ font-size: 11px;
604
+ }
605
+
606
+ /* ───────── Carousel ───────── */
607
+
608
+ [data-rig-carousel] {
609
+ position: relative;
610
+ }
611
+
612
+ [data-rig-carousel-track] {
613
+ position: relative;
614
+ overflow: hidden;
615
+ }
616
+
617
+ [data-rig-carousel-slide] {
618
+ display: none;
619
+ }
620
+
621
+ [data-rig-carousel-slide][data-active] {
622
+ display: block;
623
+ }
624
+
625
+ [data-rig-carousel-prev],
626
+ [data-rig-carousel-next] {
627
+ @apply inline-flex items-center justify-center;
628
+
629
+ width: 32px;
630
+ height: 32px;
631
+ border-radius: var(--radius);
632
+ border: 1px solid var(--color-border);
633
+ background: var(--color-card);
634
+ color: var(--color-foreground);
635
+ cursor: pointer;
636
+ font-size: 18px;
637
+ transition:
638
+ background-color 0.15s ease,
639
+ border-color 0.15s ease;
640
+ }
641
+
642
+ [data-rig-carousel-prev]:hover:not(:disabled),
643
+ [data-rig-carousel-next]:hover:not(:disabled) {
644
+ background: var(--rig-list-hover-bg);
645
+ border-color: var(--rig-widget-border);
646
+ }
647
+
648
+ [data-rig-carousel-prev]:focus-visible,
649
+ [data-rig-carousel-next]:focus-visible {
650
+ outline: 1px solid var(--color-ring);
651
+ outline-offset: -1px;
652
+ }
653
+
654
+ [data-rig-carousel-prev]:disabled,
655
+ [data-rig-carousel-next]:disabled {
656
+ opacity: 0.3;
657
+ cursor: not-allowed;
658
+ }
659
+
660
+ [data-rig-carousel-indicators] {
661
+ @apply flex items-center justify-center;
662
+
663
+ gap: 6px;
664
+ margin-top: 8px;
665
+ }
666
+
667
+ [data-rig-carousel-indicator] {
668
+ width: 8px;
669
+ height: 8px;
670
+ border-radius: 9999px;
671
+ border: none;
672
+ background: color-mix(in srgb, var(--color-foreground) 20%, transparent);
673
+ cursor: pointer;
674
+ padding: 0;
675
+ transition: background-color 0.15s ease;
676
+ }
677
+
678
+ [data-rig-carousel-indicator]:hover {
679
+ background: color-mix(in srgb, var(--color-foreground) 40%, transparent);
680
+ }
681
+
682
+ [data-rig-carousel-indicator][data-active] {
683
+ background: var(--color-primary);
684
+ }
685
+
686
+ [data-rig-carousel-indicator]:focus-visible {
687
+ outline: 1px solid var(--color-ring);
688
+ outline-offset: 2px;
689
+ }
690
+
691
+ /* ───────── ImagePreview ───────── */
692
+
693
+ [data-rig-image-preview] {
694
+ position: relative;
695
+ display: inline-block;
696
+ overflow: hidden;
697
+ border-radius: var(--radius);
698
+ background: color-mix(in srgb, var(--color-foreground) 4%, transparent);
699
+ }
700
+
701
+ [data-rig-image-preview][data-zoomable] {
702
+ cursor: zoom-in;
703
+ }
704
+
705
+ [data-rig-image-preview][data-zoomable]:focus-visible {
706
+ outline: 1px solid var(--color-ring);
707
+ outline-offset: 2px;
708
+ }
709
+
710
+ [data-rig-image-preview-img] {
711
+ display: block;
712
+ max-width: 100%;
713
+ height: auto;
714
+ transition: opacity 0.2s ease;
715
+ }
716
+
717
+ [data-rig-image-preview]:not([data-loaded]) [data-rig-image-preview-img] {
718
+ opacity: 0;
719
+ }
720
+
721
+ [data-rig-image-preview][data-loaded] [data-rig-image-preview-img] {
722
+ opacity: 1;
723
+ }
724
+
725
+ [data-rig-image-preview-fallback] {
726
+ @apply flex items-center justify-center;
727
+
728
+ min-height: 80px;
729
+ color: var(--rig-description-fg);
730
+ font-size: 13px;
731
+ }
732
+
733
+ [data-rig-image-preview-overlay] {
734
+ position: absolute;
735
+ inset: 0;
736
+ display: flex;
737
+ align-items: center;
738
+ justify-content: center;
739
+ background: rgb(0 0 0 / 40%);
740
+ opacity: 0;
741
+ transition: opacity 0.15s ease;
742
+ }
743
+
744
+ [data-rig-image-preview]:hover [data-rig-image-preview-overlay] {
745
+ opacity: 1;
746
+ }
747
+
748
+ [data-rig-image-preview][data-error] {
749
+ border: 1px dashed var(--color-border);
750
+ }
751
+
752
+ /* ───────── Popconfirm ───────── */
753
+
754
+ [data-rig-popconfirm] {
755
+ position: relative;
756
+ display: inline-block;
757
+ }
758
+
759
+ [data-rig-popconfirm-trigger] {
760
+ cursor: pointer;
761
+ }
762
+
763
+ [data-rig-popconfirm-content] {
764
+ position: absolute;
765
+ z-index: 50;
766
+ bottom: calc(100% + 6px);
767
+ left: 50%;
768
+ transform: translateX(-50%);
769
+ min-width: 200px;
770
+ background: var(--rig-widget-bg);
771
+ border: 1px solid var(--rig-widget-border);
772
+ border-radius: var(--radius);
773
+ padding: 12px;
774
+ box-shadow: 0 4px 16px rgb(0 0 0 / 40%);
775
+ animation: popconfirm-in 0.12s ease;
776
+ }
777
+
778
+ @keyframes popconfirm-in {
779
+ from {
780
+ opacity: 0;
781
+ transform: translateX(-50%) translateY(4px);
782
+ }
783
+
784
+ to {
785
+ opacity: 1;
786
+ transform: translateX(-50%) translateY(0);
787
+ }
788
+ }
789
+
790
+ [data-rig-popconfirm-title] {
791
+ font-size: 13px;
792
+ font-weight: 500;
793
+ color: var(--color-foreground);
794
+ margin-bottom: 4px;
795
+ }
796
+
797
+ [data-rig-popconfirm-description] {
798
+ font-size: 12px;
799
+ color: var(--rig-description-fg);
800
+ margin-bottom: 8px;
801
+ }
802
+
803
+ [data-rig-popconfirm-actions] {
804
+ @apply flex items-center justify-end;
805
+
806
+ gap: 6px;
807
+ }
808
+
809
+ [data-rig-popconfirm-cancel] {
810
+ @apply inline-flex items-center justify-center;
811
+
812
+ padding: 4px 8px;
813
+ font-size: 12px;
814
+ border-radius: var(--radius);
815
+ border: 1px solid var(--color-border);
816
+ background: none;
817
+ color: var(--color-foreground);
818
+ cursor: pointer;
819
+ transition:
820
+ background-color 0.15s ease,
821
+ border-color 0.15s ease;
822
+ }
823
+
824
+ [data-rig-popconfirm-cancel]:hover {
825
+ background: var(--rig-list-hover-bg);
826
+ }
827
+
828
+ [data-rig-popconfirm-cancel]:focus-visible {
829
+ outline: 1px solid var(--color-ring);
830
+ outline-offset: -1px;
831
+ }
832
+
833
+ [data-rig-popconfirm-confirm] {
834
+ @apply inline-flex items-center justify-center gap-1;
835
+
836
+ padding: 4px 8px;
837
+ font-size: 12px;
838
+ border-radius: var(--radius);
839
+ border: 1px solid transparent;
840
+ background: var(--color-destructive);
841
+ color: var(--color-destructive-foreground);
842
+ cursor: pointer;
843
+ transition: background-color 0.15s ease;
844
+ }
845
+
846
+ [data-rig-popconfirm-confirm]:hover {
847
+ background: color-mix(in srgb, var(--color-destructive) 85%, black);
848
+ }
849
+
850
+ [data-rig-popconfirm-confirm]:focus-visible {
851
+ outline: 1px solid var(--color-ring);
852
+ outline-offset: -1px;
853
+ }
854
+
855
+ /* ───────── LoadingOverlay ───────── */
856
+
857
+ [data-rig-loading-overlay] {
858
+ @apply flex flex-col items-center justify-center;
859
+
860
+ position: absolute;
861
+ inset: 0;
862
+ z-index: 50;
863
+ background: color-mix(in srgb, var(--color-background) 80%, transparent);
864
+ gap: 8px;
865
+ animation: loading-overlay-in 0.15s ease;
866
+ }
867
+
868
+ @keyframes loading-overlay-in {
869
+ from {
870
+ opacity: 0;
871
+ }
872
+
873
+ to {
874
+ opacity: 1;
875
+ }
876
+ }
877
+
878
+ [data-rig-loading-overlay-spinner] {
879
+ color: var(--color-primary);
880
+ font-size: 24px;
881
+ animation: loading-overlay-spin 1s linear infinite;
882
+ }
883
+
884
+ @keyframes loading-overlay-spin {
885
+ from {
886
+ transform: rotate(0deg);
887
+ }
888
+
889
+ to {
890
+ transform: rotate(360deg);
891
+ }
892
+ }
893
+
894
+ [data-rig-loading-overlay-label] {
895
+ font-size: 12px;
896
+ color: var(--rig-description-fg);
897
+ }