@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,1654 @@
1
+ /* Hex — Shared Core Components
2
+ * Styles for Rig's core package: Button, Input, Select, Textarea,
3
+ * Checkbox, Switch, Radio, Badge, Progress, Card, Divider, Kbd,
4
+ * TagInput, Combobox, Tooltip, Skeleton, PropertyGrid, InlineEditor.
5
+ */
6
+
7
+ /* ───────── Buttons ───────── */
8
+
9
+ [data-rig-button] {
10
+ @apply inline-flex items-center justify-center gap-1.5
11
+ font-medium cursor-pointer transition-colors
12
+ focus:outline-none;
13
+
14
+ padding: 4px 8px;
15
+ font-size: 12px;
16
+ line-height: 16px;
17
+ border-radius: var(--radius);
18
+ border: 1px solid transparent;
19
+ }
20
+
21
+ [data-rig-button]:focus-visible {
22
+ outline: 1px solid var(--color-ring);
23
+ outline-offset: -1px;
24
+ }
25
+
26
+ [data-rig-button][data-variant='primary'] {
27
+ background: var(--rig-button-bg);
28
+ color: var(--rig-button-fg);
29
+ border-color: var(--rig-button-border);
30
+ }
31
+
32
+ [data-rig-button][data-variant='primary']:hover {
33
+ background: var(--rig-button-hover-bg);
34
+ color: var(--rig-button-hover-fg, var(--color-foreground));
35
+ }
36
+
37
+ [data-rig-button][data-variant='ghost'] {
38
+ background: var(--rig-button-secondary-bg);
39
+ color: var(--rig-button-secondary-fg);
40
+ }
41
+
42
+ [data-rig-button][data-variant='ghost']:hover {
43
+ background: var(--rig-button-secondary-hover-bg);
44
+ color: var(--rig-button-secondary-hover-fg, var(--color-accent-foreground));
45
+ }
46
+
47
+ [data-rig-button][data-variant='secondary'] {
48
+ background: var(--rig-button-secondary-bg);
49
+ color: var(--rig-button-secondary-fg);
50
+ border-color: var(--color-border);
51
+ }
52
+
53
+ [data-rig-button][data-variant='secondary']:hover {
54
+ background: var(--rig-button-secondary-hover-bg);
55
+ color: var(--rig-button-secondary-hover-fg, var(--color-accent-foreground));
56
+ }
57
+
58
+ [data-rig-button][data-variant='cta'] {
59
+ background: var(--rig-button-bg);
60
+ color: var(--rig-button-fg);
61
+ border-color: var(--rig-button-border);
62
+ }
63
+
64
+ [data-rig-button][data-variant='cta']:hover {
65
+ background: var(--rig-button-hover-bg);
66
+ color: var(--rig-button-hover-fg, var(--color-foreground));
67
+ }
68
+
69
+ [data-rig-button][data-variant='danger'] {
70
+ color: var(--color-destructive);
71
+ background: transparent;
72
+ }
73
+
74
+ [data-rig-button][data-variant='danger']:hover {
75
+ background: color-mix(in srgb, var(--color-destructive) 12%, transparent);
76
+ }
77
+
78
+ [data-rig-button][data-variant='outline'] {
79
+ background: transparent;
80
+ color: var(--color-foreground);
81
+ border-color: var(--rig-button-outline-border, var(--color-foreground));
82
+ }
83
+
84
+ [data-rig-button][data-variant='outline']:hover {
85
+ background: var(--rig-button-hover-bg, var(--color-secondary));
86
+ }
87
+
88
+ [data-rig-button][data-disabled] {
89
+ @apply pointer-events-none;
90
+
91
+ opacity: 0.4;
92
+ }
93
+
94
+ /* ───────── Input ───────── */
95
+
96
+ [data-rig-input] {
97
+ @apply flex items-center gap-2;
98
+ }
99
+
100
+ [data-rig-input] input {
101
+ @apply flex-1 focus:outline-none;
102
+
103
+ background: var(--rig-input-bg);
104
+ border: 1px solid var(--rig-input-border);
105
+ color: var(--rig-input-fg);
106
+ font-size: 13px;
107
+ padding: 4px 6px;
108
+ border-radius: var(--radius);
109
+ }
110
+
111
+ [data-rig-input] input::placeholder {
112
+ color: var(--rig-input-placeholder);
113
+ }
114
+
115
+ [data-rig-input] input:focus {
116
+ border-color: var(--color-ring);
117
+ }
118
+
119
+ [data-rig-input][data-disabled] input {
120
+ @apply cursor-not-allowed;
121
+
122
+ opacity: 0.4;
123
+ }
124
+
125
+ [data-rig-input-clear] {
126
+ color: var(--rig-description-fg);
127
+ font-size: 13px;
128
+ padding: 0 4px;
129
+ }
130
+
131
+ [data-rig-input-clear]:hover {
132
+ color: var(--color-foreground);
133
+ }
134
+
135
+ /* ───────── Select ───────── */
136
+
137
+ [data-rig-select] {
138
+ @apply flex items-center gap-2;
139
+ }
140
+
141
+ [data-rig-select] select {
142
+ @apply flex-1 appearance-none focus:outline-none;
143
+
144
+ background: var(--rig-dropdown-bg);
145
+ border: 1px solid var(--rig-dropdown-border);
146
+ color: var(--rig-dropdown-fg);
147
+ font-size: 13px;
148
+ padding: 4px 6px;
149
+ border-radius: var(--radius);
150
+ }
151
+
152
+ [data-rig-select] select:focus {
153
+ border-color: var(--color-ring);
154
+ }
155
+
156
+ [data-rig-select] select option {
157
+ background: var(--rig-dropdown-list-bg);
158
+ color: var(--color-foreground);
159
+ }
160
+
161
+ [data-rig-select][data-disabled] select {
162
+ @apply cursor-not-allowed;
163
+
164
+ opacity: 0.4;
165
+ }
166
+
167
+ /* ───────── Textarea ───────── */
168
+
169
+ [data-rig-textarea] {
170
+ @apply flex flex-col gap-1;
171
+ }
172
+
173
+ [data-rig-textarea] textarea {
174
+ @apply focus:outline-none;
175
+
176
+ background: var(--rig-input-bg);
177
+ border: 1px solid var(--rig-input-border);
178
+ color: var(--rig-input-fg);
179
+ font-size: 13px;
180
+ padding: 4px 6px;
181
+ border-radius: var(--radius);
182
+ }
183
+
184
+ [data-rig-textarea] textarea::placeholder {
185
+ color: var(--rig-input-placeholder);
186
+ }
187
+
188
+ [data-rig-textarea] textarea:focus {
189
+ border-color: var(--color-ring);
190
+ }
191
+
192
+ [data-rig-textarea][data-disabled] textarea {
193
+ @apply cursor-not-allowed;
194
+
195
+ opacity: 0.4;
196
+ }
197
+
198
+ [data-rig-textarea-count] {
199
+ color: var(--rig-description-fg);
200
+ font-family: var(--font-mono);
201
+ font-size: 11px;
202
+ text-align: right;
203
+ }
204
+
205
+ /* ───────── Checkbox ───────── */
206
+
207
+ [data-rig-checkbox] {
208
+ @apply inline-flex items-center gap-2 cursor-pointer select-none;
209
+
210
+ font-size: 13px;
211
+ color: var(--color-foreground);
212
+ }
213
+
214
+ [data-rig-checkbox] input[type='checkbox'] {
215
+ @apply cursor-pointer;
216
+
217
+ width: 18px;
218
+ height: 18px;
219
+ background: var(--rig-checkbox-bg);
220
+ border: 1px solid var(--rig-checkbox-border);
221
+ border-radius: 3px;
222
+ accent-color: var(--color-primary);
223
+ }
224
+
225
+ [data-rig-checkbox][data-disabled] {
226
+ opacity: 0.4;
227
+ cursor: not-allowed;
228
+ }
229
+
230
+ /* ───────── Switch ───────── */
231
+
232
+ [data-rig-switch] {
233
+ @apply relative inline-flex items-center rounded-full
234
+ transition-colors cursor-pointer focus:outline-none;
235
+
236
+ width: 36px;
237
+ height: 20px;
238
+ background: var(--rig-input-bg);
239
+ border: 1px solid var(--rig-input-border);
240
+ }
241
+
242
+ [data-rig-switch]:focus-visible {
243
+ outline: 1px solid var(--color-ring);
244
+ outline-offset: -1px;
245
+ }
246
+
247
+ [data-rig-switch][data-state='checked'] {
248
+ background: var(--color-primary);
249
+ border-color: var(--color-primary);
250
+ }
251
+
252
+ [data-rig-switch][data-disabled] {
253
+ opacity: 0.4;
254
+ cursor: not-allowed;
255
+ }
256
+
257
+ [data-rig-switch-track] {
258
+ @apply absolute inset-0 rounded-full;
259
+ }
260
+
261
+ [data-rig-switch-thumb] {
262
+ @apply block rounded-full transition-transform;
263
+
264
+ width: 14px;
265
+ height: 14px;
266
+ background: var(--rig-description-fg);
267
+ transform: translateX(2px);
268
+ }
269
+
270
+ [data-rig-switch][data-state='checked'] [data-rig-switch-thumb] {
271
+ transform: translateX(18px);
272
+ background: var(--color-foreground);
273
+ }
274
+
275
+ /* ───────── Radio ───────── */
276
+
277
+ [data-rig-radio] {
278
+ @apply inline-flex items-center gap-2 cursor-pointer select-none;
279
+
280
+ font-size: 13px;
281
+ color: var(--color-foreground);
282
+ }
283
+
284
+ [data-rig-radio] input[type='radio'] {
285
+ @apply cursor-pointer;
286
+
287
+ width: 18px;
288
+ height: 18px;
289
+ border: 1px solid var(--rig-checkbox-border);
290
+ background: var(--rig-checkbox-bg);
291
+ accent-color: var(--color-primary);
292
+ }
293
+
294
+ [data-rig-radio][data-disabled] {
295
+ opacity: 0.4;
296
+ cursor: not-allowed;
297
+ }
298
+
299
+ [data-rig-radio-group] {
300
+ @apply flex gap-3;
301
+ }
302
+
303
+ [data-rig-radio-group][data-orientation='vertical'] {
304
+ @apply flex-col;
305
+ }
306
+
307
+ /* ───────── Badge ───────── */
308
+
309
+ [data-rig-badge] {
310
+ font-size: 11px;
311
+ line-height: 1;
312
+ padding: 3px 5px;
313
+ border-radius: 11px;
314
+ background: var(--rig-badge-bg);
315
+ color: var(--rig-badge-fg);
316
+ }
317
+
318
+ [data-rig-badge][data-variant='active'] {
319
+ background: color-mix(in srgb, var(--color-success) 15%, transparent);
320
+ color: var(--color-success);
321
+ }
322
+
323
+ [data-rig-badge][data-variant='dormant'] {
324
+ background: color-mix(in srgb, var(--color-warning) 15%, transparent);
325
+ color: var(--color-warning);
326
+ }
327
+
328
+ [data-rig-badge][data-variant='frozen'] {
329
+ background: color-mix(in srgb, var(--color-info) 15%, transparent);
330
+ color: var(--color-info);
331
+ }
332
+
333
+ [data-rig-badge][data-variant='placeholder'] {
334
+ background: color-mix(in srgb, var(--color-foreground) 8%, transparent);
335
+ color: var(--rig-description-fg);
336
+ }
337
+
338
+ [data-rig-badge][data-variant='info'] {
339
+ background: color-mix(in srgb, var(--color-info) 15%, transparent);
340
+ color: var(--color-info);
341
+ }
342
+
343
+ [data-rig-badge][data-variant='warning'] {
344
+ background: color-mix(in srgb, var(--color-warning) 15%, transparent);
345
+ color: var(--color-warning);
346
+ }
347
+
348
+ [data-rig-badge][data-variant='danger'] {
349
+ background: color-mix(in srgb, var(--color-destructive) 15%, transparent);
350
+ color: var(--color-destructive);
351
+ }
352
+
353
+ [data-rig-badge][data-variant='muted'] {
354
+ background: color-mix(in srgb, var(--color-foreground) 8%, transparent);
355
+ color: var(--rig-description-fg);
356
+ }
357
+
358
+ [data-rig-badge][data-variant='primary'] {
359
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
360
+ color: var(--color-primary);
361
+ }
362
+
363
+ [data-rig-badge][data-variant='accent'] {
364
+ background: color-mix(in srgb, var(--color-accent) 15%, transparent);
365
+ color: var(--color-accent);
366
+ }
367
+
368
+ [data-rig-badge][data-variant='success'] {
369
+ background: color-mix(in srgb, var(--color-success) 15%, transparent);
370
+ color: var(--color-success);
371
+ }
372
+
373
+ /* ───────── Progress ───────── */
374
+
375
+ [data-rig-progress] {
376
+ @apply flex-1;
377
+
378
+ height: 2px;
379
+ background: color-mix(in srgb, var(--color-foreground) 8%, transparent);
380
+ }
381
+
382
+ [data-rig-progress-fill] {
383
+ @apply h-full transition-all duration-300;
384
+
385
+ background: var(--rig-progress-bg);
386
+ }
387
+
388
+ [data-rig-progress][data-indeterminate] [data-rig-progress-fill] {
389
+ @apply w-1/3 animate-pulse;
390
+ }
391
+
392
+ /* ───────── Card ───────── */
393
+
394
+ [data-rig-card] {
395
+ border: 1px solid var(--color-border);
396
+ border-radius: var(--radius);
397
+ background: var(--color-card);
398
+ padding: 1rem;
399
+ transition:
400
+ border-color 0.15s ease,
401
+ background-color 0.15s ease,
402
+ box-shadow 0.15s ease;
403
+ }
404
+
405
+ [data-rig-card][data-size='sm'] {
406
+ padding: 0.5rem 0.75rem;
407
+ }
408
+
409
+ [data-rig-card][data-size='lg'] {
410
+ padding: 1.5rem;
411
+ }
412
+
413
+ [data-rig-card][data-interactive] {
414
+ cursor: pointer;
415
+ transition:
416
+ transform 0.2s,
417
+ box-shadow 0.2s,
418
+ border-color 0.15s,
419
+ background 0.15s;
420
+ }
421
+
422
+ [data-rig-card][data-interactive]:hover {
423
+ border-color: var(--rig-input-border);
424
+ background: var(--rig-card-hover-bg, var(--color-card));
425
+ transform: translateY(-2px);
426
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
427
+ }
428
+
429
+ @media (prefers-reduced-motion: reduce) {
430
+ [data-rig-card][data-interactive] {
431
+ transition: none;
432
+ }
433
+
434
+ [data-rig-card][data-interactive]:hover {
435
+ transform: none;
436
+ }
437
+ }
438
+
439
+ [data-rig-card][data-interactive]:focus-visible {
440
+ outline: 1px solid var(--rig-card-accent, var(--color-ring));
441
+ outline-offset: 1px;
442
+ }
443
+
444
+ [data-rig-card][data-interactive]:active {
445
+ background: var(--color-secondary);
446
+ }
447
+
448
+ /* Accent border-left */
449
+ [data-rig-card][style*='--rig-card-accent'] {
450
+ border-left: 2px solid var(--rig-card-accent);
451
+ }
452
+
453
+ /* ───────── Divider ───────── */
454
+
455
+ [data-rig-divider] {
456
+ border: none;
457
+ border-top: 1px solid var(--color-border);
458
+ margin: 0;
459
+ }
460
+
461
+ [data-rig-divider][data-vertical] {
462
+ border-top: none;
463
+ border-left: 1px solid var(--color-border);
464
+ align-self: stretch;
465
+ }
466
+
467
+ [data-rig-divider-label] {
468
+ display: flex;
469
+ align-items: center;
470
+ gap: 0.75rem;
471
+ color: var(--rig-description-fg);
472
+ font-family: var(--font-mono);
473
+ font-size: 10px;
474
+ text-transform: uppercase;
475
+ letter-spacing: 0.05em;
476
+ }
477
+
478
+ [data-rig-divider-label]::before,
479
+ [data-rig-divider-label]::after {
480
+ content: '';
481
+ flex: 1;
482
+ height: 1px;
483
+ background: var(--color-border);
484
+ }
485
+
486
+ /* ───────── Kbd ───────── */
487
+
488
+ [data-rig-kbd] {
489
+ display: inline-flex;
490
+ align-items: center;
491
+ gap: 2px;
492
+ font-family: var(--font-mono);
493
+ font-size: 11px;
494
+ line-height: 1;
495
+ color: var(--rig-keybinding-fg);
496
+ background: color-mix(in srgb, var(--color-foreground) 6%, transparent);
497
+ border: 1px solid var(--color-border);
498
+ border-bottom-width: 2px;
499
+ border-radius: 3px;
500
+ padding: 3px 5px;
501
+ white-space: nowrap;
502
+ }
503
+
504
+ /* ───────── TagInput ───────── */
505
+
506
+ [data-rig-tag-input] {
507
+ display: flex;
508
+ flex-wrap: wrap;
509
+ align-items: center;
510
+ gap: 4px;
511
+ min-height: 32px;
512
+ padding: 4px 8px;
513
+ border: 1px solid var(--rig-input-border);
514
+ border-radius: var(--radius);
515
+ background: var(--rig-input-bg);
516
+ transition: border-color 0.15s ease;
517
+ position: relative;
518
+ }
519
+
520
+ [data-rig-tag-input]:focus-within {
521
+ border-color: var(--color-ring);
522
+ }
523
+
524
+ [data-rig-tag] {
525
+ display: inline-flex;
526
+ align-items: center;
527
+ gap: 4px;
528
+ padding: 1px 6px;
529
+ font-family: var(--font-mono);
530
+ font-size: 11px;
531
+ color: var(--color-foreground);
532
+ background: var(--color-accent);
533
+ border: 1px solid var(--color-border);
534
+ border-radius: 3px;
535
+ white-space: nowrap;
536
+ }
537
+
538
+ [data-rig-tag-remove] {
539
+ display: inline-flex;
540
+ align-items: center;
541
+ justify-content: center;
542
+ width: 14px;
543
+ height: 14px;
544
+ font-size: 12px;
545
+ line-height: 1;
546
+ color: var(--rig-description-fg);
547
+ cursor: pointer;
548
+ border: none;
549
+ background: none;
550
+ padding: 0;
551
+ border-radius: 1px;
552
+ transition:
553
+ color 0.1s ease,
554
+ background-color 0.1s ease;
555
+ }
556
+
557
+ [data-rig-tag-remove]:hover {
558
+ color: var(--color-foreground);
559
+ background: color-mix(in srgb, var(--color-foreground) 8%, transparent);
560
+ }
561
+
562
+ [data-rig-tag-input-field] {
563
+ flex: 1;
564
+ min-width: 80px;
565
+ border: none;
566
+ background: none;
567
+ outline: none;
568
+ font-family: var(--font-mono);
569
+ font-size: 12px;
570
+ color: var(--color-foreground);
571
+ padding: 2px 0;
572
+ }
573
+
574
+ [data-rig-tag-input-field]::placeholder {
575
+ color: var(--rig-input-placeholder);
576
+ }
577
+
578
+ [data-rig-tag-suggestions] {
579
+ position: absolute;
580
+ left: 0;
581
+ right: 0;
582
+ top: 100%;
583
+ margin-top: 2px;
584
+ z-index: 50;
585
+ background: var(--rig-widget-bg);
586
+ border: 1px solid var(--rig-widget-border);
587
+ border-radius: var(--radius);
588
+ max-height: 160px;
589
+ overflow-y: auto;
590
+ box-shadow: 0 4px 12px rgb(0 0 0 / 40%);
591
+ }
592
+
593
+ [data-rig-tag-suggestion] {
594
+ display: block;
595
+ width: 100%;
596
+ padding: 4px 10px;
597
+ font-family: var(--font-mono);
598
+ font-size: 12px;
599
+ color: var(--rig-description-fg);
600
+ background: none;
601
+ border: none;
602
+ text-align: left;
603
+ cursor: pointer;
604
+ transition: background-color 0.1s ease;
605
+ }
606
+
607
+ [data-rig-tag-suggestion]:hover,
608
+ [data-rig-tag-suggestion][data-highlighted] {
609
+ background: var(--rig-list-hover-bg);
610
+ color: var(--color-foreground);
611
+ }
612
+
613
+ /* ───────── Combobox ───────── */
614
+
615
+ [data-rig-combobox] {
616
+ position: relative;
617
+ }
618
+
619
+ [data-rig-combobox-input-wrapper] {
620
+ display: flex;
621
+ align-items: center;
622
+ gap: 4px;
623
+ min-height: 32px;
624
+ padding: 4px 8px;
625
+ border: 1px solid var(--rig-input-border);
626
+ border-radius: var(--radius);
627
+ background: var(--rig-input-bg);
628
+ transition: border-color 0.15s ease;
629
+ }
630
+
631
+ [data-rig-combobox-input-wrapper]:focus-within {
632
+ border-color: var(--color-ring);
633
+ }
634
+
635
+ [data-rig-combobox-input-wrapper] input {
636
+ flex: 1;
637
+ min-width: 0;
638
+ border: none;
639
+ background: none;
640
+ outline: none;
641
+ font-family: var(--font-mono);
642
+ font-size: 12px;
643
+ color: var(--color-foreground);
644
+ padding: 2px 0;
645
+ }
646
+
647
+ [data-rig-combobox-input-wrapper] input::placeholder {
648
+ color: var(--rig-input-placeholder);
649
+ }
650
+
651
+ [data-rig-combobox-clear] {
652
+ display: inline-flex;
653
+ align-items: center;
654
+ justify-content: center;
655
+ width: 18px;
656
+ height: 18px;
657
+ font-size: 13px;
658
+ color: var(--rig-description-fg);
659
+ cursor: pointer;
660
+ border: none;
661
+ background: none;
662
+ padding: 0;
663
+ border-radius: 2px;
664
+ transition: color 0.1s ease;
665
+ }
666
+
667
+ [data-rig-combobox-clear]:hover {
668
+ color: var(--color-foreground);
669
+ }
670
+
671
+ [data-rig-combobox-list] {
672
+ position: absolute;
673
+ left: 0;
674
+ right: 0;
675
+ top: 100%;
676
+ margin-top: 2px;
677
+ z-index: 50;
678
+ background: var(--rig-widget-bg);
679
+ border: 1px solid var(--rig-widget-border);
680
+ border-radius: var(--radius);
681
+ max-height: 200px;
682
+ overflow-y: auto;
683
+ box-shadow: 0 4px 12px rgb(0 0 0 / 40%);
684
+ }
685
+
686
+ [data-rig-combobox-option] {
687
+ display: block;
688
+ width: 100%;
689
+ padding: 6px 10px;
690
+ text-align: left;
691
+ cursor: pointer;
692
+ border: none;
693
+ background: none;
694
+ transition: background-color 0.1s ease;
695
+ }
696
+
697
+ [data-rig-combobox-option]:hover,
698
+ [data-rig-combobox-option][data-highlighted] {
699
+ background: var(--rig-list-hover-bg);
700
+ }
701
+
702
+ [data-rig-combobox-option][aria-selected='true'] {
703
+ background: var(--rig-list-active-bg);
704
+ color: var(--rig-list-active-fg);
705
+ }
706
+
707
+ [data-rig-combobox-option] div:first-child {
708
+ font-size: 12px;
709
+ color: var(--color-foreground);
710
+ }
711
+
712
+ [data-rig-combobox-option] div:last-child:not(:first-child) {
713
+ font-size: 11px;
714
+ color: var(--rig-description-fg);
715
+ margin-top: 1px;
716
+ }
717
+
718
+ [data-rig-combobox-empty] {
719
+ padding: 8px 10px;
720
+ font-size: 12px;
721
+ color: var(--rig-description-fg);
722
+ font-style: italic;
723
+ }
724
+
725
+ /* ───────── InlineEditor ───────── */
726
+
727
+ [data-rig-inline-editor] {
728
+ @apply inline-flex;
729
+ }
730
+
731
+ [data-rig-inline-editor-display] {
732
+ @apply cursor-pointer rounded-sm transition-colors;
733
+
734
+ font: inherit;
735
+ color: inherit;
736
+ padding: 2px 4px;
737
+ }
738
+
739
+ [data-rig-inline-editor-display]:hover {
740
+ background: var(--rig-list-hover-bg);
741
+ }
742
+
743
+ [data-rig-inline-editor-input] {
744
+ @apply focus:outline-none;
745
+
746
+ background: var(--rig-input-bg);
747
+ border: 1px solid var(--rig-input-border);
748
+ color: var(--color-foreground);
749
+ font: inherit;
750
+ padding: 2px 4px;
751
+ border-radius: var(--radius);
752
+ }
753
+
754
+ [data-rig-inline-editor-input]:focus {
755
+ border-color: var(--color-ring);
756
+ }
757
+
758
+ /* ───────── Toggle ───────── */
759
+
760
+ [data-rig-toggle] {
761
+ @apply inline-flex items-center justify-center gap-1.5
762
+ cursor-pointer transition-colors
763
+ focus:outline-none;
764
+
765
+ font-size: 13px;
766
+ padding: 4px 8px;
767
+ border-radius: var(--radius);
768
+ background: none;
769
+ border: none;
770
+ color: var(--rig-description-fg);
771
+ }
772
+
773
+ [data-rig-toggle]:hover {
774
+ background: var(--rig-list-hover-bg);
775
+ color: var(--color-foreground);
776
+ }
777
+
778
+ [data-rig-toggle]:focus-visible {
779
+ outline: 1px solid var(--color-ring);
780
+ outline-offset: -1px;
781
+ }
782
+
783
+ [data-rig-toggle][data-state='on'] {
784
+ background: var(--color-accent);
785
+ color: var(--color-foreground);
786
+ }
787
+
788
+ [data-rig-toggle][data-disabled] {
789
+ @apply pointer-events-none;
790
+
791
+ opacity: 0.4;
792
+ }
793
+
794
+ /* ───────── ToggleGroup ───────── */
795
+
796
+ [data-rig-toggle-group] {
797
+ @apply inline-flex gap-0.5;
798
+ }
799
+
800
+ [data-rig-toggle-group][data-orientation='vertical'] {
801
+ @apply flex-col;
802
+ }
803
+
804
+ [data-rig-toggle-group][data-disabled] {
805
+ @apply opacity-30 pointer-events-none;
806
+ }
807
+
808
+ /* ───────── Slider ───────── */
809
+
810
+ [data-rig-slider] {
811
+ @apply relative flex items-center;
812
+
813
+ height: 20px;
814
+ }
815
+
816
+ [data-rig-slider][data-orientation='vertical'] {
817
+ @apply flex-col;
818
+
819
+ width: 20px;
820
+ height: auto;
821
+ }
822
+
823
+ [data-rig-slider-input] {
824
+ @apply w-full appearance-none bg-transparent cursor-pointer;
825
+
826
+ height: 4px;
827
+ }
828
+
829
+ [data-rig-slider-input]::-webkit-slider-runnable-track {
830
+ height: 4px;
831
+ border-radius: 2px;
832
+ background: color-mix(in srgb, var(--color-foreground) 10%, transparent);
833
+ }
834
+
835
+ [data-rig-slider-input]::-webkit-slider-thumb {
836
+ appearance: none;
837
+ width: 14px;
838
+ height: 14px;
839
+ border-radius: 50%;
840
+ background: var(--color-primary);
841
+ margin-top: -5px;
842
+ cursor: pointer;
843
+ }
844
+
845
+ [data-rig-slider][data-disabled] {
846
+ @apply opacity-30 pointer-events-none;
847
+ }
848
+
849
+ /* ───────── Icon ───────── */
850
+
851
+ [data-rig-icon] {
852
+ @apply inline-flex items-center justify-center flex-shrink-0;
853
+ }
854
+
855
+ [data-rig-icon][data-size='sm'] {
856
+ width: 14px;
857
+ height: 14px;
858
+ font-size: 14px;
859
+ }
860
+
861
+ [data-rig-icon][data-size='md'] {
862
+ width: 16px;
863
+ height: 16px;
864
+ font-size: 16px;
865
+ }
866
+
867
+ [data-rig-icon][data-size='lg'] {
868
+ width: 24px;
869
+ height: 24px;
870
+ font-size: 24px;
871
+ }
872
+
873
+ /* ───────── Icon-only Button (via data-icon-only on Button) ───────── */
874
+
875
+ [data-rig-button][data-icon-only] {
876
+ width: 28px;
877
+ height: 28px;
878
+ padding: 0;
879
+ }
880
+
881
+ /* ───────── Label ───────── */
882
+
883
+ [data-rig-label] {
884
+ font-size: 13px;
885
+ color: var(--color-foreground);
886
+ cursor: pointer;
887
+ }
888
+
889
+ [data-rig-label][data-disabled] {
890
+ opacity: 0.4;
891
+ cursor: default;
892
+ }
893
+
894
+ /* Label — field variant (form labels in sidebars / quick-add panels) */
895
+ [data-rig-label][data-variant='field'] {
896
+ @apply text-xs font-mono text-muted-foreground block;
897
+
898
+ margin-bottom: 4px;
899
+ cursor: default;
900
+ }
901
+
902
+ /* ───────── SectionHeader ───────── */
903
+
904
+ [data-rig-section-header] {
905
+ @apply font-mono font-bold uppercase tracking-wider;
906
+
907
+ margin: 0;
908
+ line-height: 1.4;
909
+ }
910
+
911
+ [data-rig-section-header][data-size='xs'] {
912
+ font-size: 11px;
913
+ }
914
+
915
+ [data-rig-section-header][data-size='sm'] {
916
+ font-size: 13px;
917
+ }
918
+
919
+ [data-rig-section-header][data-size='md'] {
920
+ font-size: 14px;
921
+ }
922
+
923
+ [data-rig-section-header][data-size='lg'] {
924
+ font-size: 16px;
925
+ }
926
+
927
+ [data-rig-section-header][data-size='xl'] {
928
+ font-size: 20px;
929
+ }
930
+
931
+ [data-rig-section-header][data-muted] {
932
+ color: var(--color-muted-foreground);
933
+ }
934
+
935
+ /* ───────── Combobox (additions) ───────── */
936
+
937
+ [data-rig-combobox-option-label] {
938
+ font-size: 12px;
939
+ color: var(--color-foreground);
940
+ }
941
+
942
+ [data-rig-combobox-option-desc] {
943
+ font-size: 11px;
944
+ color: var(--rig-description-fg);
945
+ margin-top: 1px;
946
+ }
947
+
948
+ /* ───────── Avatar ───────── */
949
+
950
+ [data-rig-avatar] {
951
+ position: relative;
952
+ display: inline-flex;
953
+ align-items: center;
954
+ justify-content: center;
955
+ border-radius: 9999px;
956
+ background: var(--avatar-bg, var(--color-accent));
957
+ color: var(--color-foreground);
958
+ font-weight: 600;
959
+ font-family: var(--font-mono, monospace);
960
+ user-select: none;
961
+ flex-shrink: 0;
962
+ overflow: hidden;
963
+ line-height: 1;
964
+ }
965
+
966
+ [data-rig-avatar][data-size='xs'] {
967
+ width: 20px;
968
+ height: 20px;
969
+ font-size: 9px;
970
+ }
971
+ [data-rig-avatar][data-size='sm'] {
972
+ width: 24px;
973
+ height: 24px;
974
+ font-size: 10px;
975
+ }
976
+ [data-rig-avatar][data-size='md'] {
977
+ width: 32px;
978
+ height: 32px;
979
+ font-size: 12px;
980
+ }
981
+ [data-rig-avatar][data-size='lg'] {
982
+ width: 40px;
983
+ height: 40px;
984
+ font-size: 14px;
985
+ }
986
+ [data-rig-avatar][data-size='xl'] {
987
+ width: 48px;
988
+ height: 48px;
989
+ font-size: 16px;
990
+ }
991
+
992
+ [data-rig-avatar-initials] {
993
+ pointer-events: none;
994
+ letter-spacing: 0.5px;
995
+ }
996
+
997
+ [data-rig-avatar-img] {
998
+ width: 100%;
999
+ height: 100%;
1000
+ object-fit: cover;
1001
+ border-radius: inherit;
1002
+ }
1003
+
1004
+ [data-rig-avatar-status] {
1005
+ position: absolute;
1006
+ bottom: 0;
1007
+ right: 0;
1008
+ border-radius: 9999px;
1009
+ border: 2px solid var(--color-background, #0f0d0a);
1010
+ }
1011
+
1012
+ [data-rig-avatar][data-size='xs'] [data-rig-avatar-status],
1013
+ [data-rig-avatar][data-size='sm'] [data-rig-avatar-status] {
1014
+ width: 8px;
1015
+ height: 8px;
1016
+ }
1017
+ [data-rig-avatar][data-size='md'] [data-rig-avatar-status] {
1018
+ width: 10px;
1019
+ height: 10px;
1020
+ }
1021
+ [data-rig-avatar][data-size='lg'] [data-rig-avatar-status],
1022
+ [data-rig-avatar][data-size='xl'] [data-rig-avatar-status] {
1023
+ width: 12px;
1024
+ height: 12px;
1025
+ }
1026
+
1027
+ [data-rig-avatar-status][data-status='online'] {
1028
+ background: var(--color-success, #22c55e);
1029
+ }
1030
+ [data-rig-avatar-status][data-status='away'] {
1031
+ background: var(--color-warning, #eab308);
1032
+ }
1033
+ [data-rig-avatar-status][data-status='dnd'] {
1034
+ background: var(--color-destructive, #ef4444);
1035
+ }
1036
+ [data-rig-avatar-status][data-status='offline'] {
1037
+ background: var(--rig-description-fg);
1038
+ }
1039
+
1040
+ /* ───────── Dot ───────── */
1041
+
1042
+ [data-rig-dot] {
1043
+ @apply rounded-full shrink-0;
1044
+
1045
+ background: var(--dot-color, var(--color-foreground));
1046
+ }
1047
+
1048
+ [data-rig-dot][data-size='xs'] {
1049
+ width: 4px;
1050
+ height: 4px;
1051
+ }
1052
+
1053
+ [data-rig-dot][data-size='sm'] {
1054
+ width: 6px;
1055
+ height: 6px;
1056
+ }
1057
+
1058
+ [data-rig-dot][data-size='md'] {
1059
+ width: 8px;
1060
+ height: 8px;
1061
+ }
1062
+
1063
+ [data-rig-dot][data-size='lg'] {
1064
+ width: 12px;
1065
+ height: 12px;
1066
+ }
1067
+
1068
+ /* ───────── PulseIndicator ───────── */
1069
+
1070
+ [data-rig-pulse-indicator] {
1071
+ width: 12px;
1072
+ height: 12px;
1073
+ }
1074
+
1075
+ [data-rig-pulse-indicator][data-active] [data-rig-pulse-indicator-ring] {
1076
+ @apply animate-ping;
1077
+
1078
+ background: var(--color-success, #22c55e);
1079
+ opacity: 0.3;
1080
+ }
1081
+
1082
+ [data-rig-pulse-indicator-dot] {
1083
+ width: 8px;
1084
+ height: 8px;
1085
+ background: var(--color-success, #22c55e);
1086
+ }
1087
+
1088
+ [data-rig-pulse-indicator]:not([data-active]) [data-rig-pulse-indicator-dot] {
1089
+ background: color-mix(in srgb, var(--color-foreground) 25%, transparent);
1090
+ }
1091
+
1092
+ /* ───────── ProgressRing ───────── */
1093
+
1094
+ [data-rig-progress-ring] {
1095
+ @apply inline-flex items-center justify-center;
1096
+ }
1097
+
1098
+ [data-rig-progress-ring-track] {
1099
+ stroke: color-mix(in srgb, var(--color-foreground) 10%, transparent);
1100
+ }
1101
+
1102
+ [data-rig-progress-ring-fill] {
1103
+ stroke: var(--color-primary);
1104
+ transition: stroke-dashoffset 0.3s ease;
1105
+ }
1106
+
1107
+ /* ───────── RangeSlider ───────── */
1108
+
1109
+ [data-rig-range-slider] {
1110
+ @apply relative flex items-center;
1111
+
1112
+ height: 20px;
1113
+ }
1114
+
1115
+ [data-rig-range-slider][data-disabled] {
1116
+ @apply opacity-30 pointer-events-none;
1117
+ }
1118
+
1119
+ [data-rig-range-slider-track] {
1120
+ @apply rounded-full;
1121
+
1122
+ background: color-mix(in srgb, var(--color-foreground) 10%, transparent);
1123
+ }
1124
+
1125
+ [data-rig-range-slider-fill] {
1126
+ @apply rounded-full;
1127
+
1128
+ background: var(--color-primary);
1129
+ }
1130
+
1131
+ [data-rig-range-slider-thumb] {
1132
+ @apply shadow-sm;
1133
+
1134
+ background: var(--color-foreground);
1135
+ border: 2px solid var(--color-background);
1136
+ }
1137
+
1138
+ [data-rig-range-slider-thumb]:focus-visible {
1139
+ outline: 1px solid var(--color-ring);
1140
+ outline-offset: 1px;
1141
+ }
1142
+
1143
+ /* ───────── AvatarGroup ───────── */
1144
+
1145
+ [data-rig-avatar-group] {
1146
+ @apply inline-flex items-center;
1147
+ }
1148
+
1149
+ [data-rig-avatar-group-item] {
1150
+ border: 2px solid var(--color-background);
1151
+ margin-left: -8px;
1152
+ background: var(--color-accent);
1153
+ }
1154
+
1155
+ [data-rig-avatar-group-item]:first-child {
1156
+ margin-left: 0;
1157
+ }
1158
+
1159
+ [data-rig-avatar-group-img] {
1160
+ width: 100%;
1161
+ height: 100%;
1162
+ object-fit: cover;
1163
+ border-radius: inherit;
1164
+ }
1165
+
1166
+ [data-rig-avatar-group-initials] {
1167
+ pointer-events: none;
1168
+ letter-spacing: 0.5px;
1169
+ }
1170
+
1171
+ [data-rig-avatar-group-item][data-size='sm'] {
1172
+ width: 24px;
1173
+ height: 24px;
1174
+ font-size: 10px;
1175
+ }
1176
+
1177
+ [data-rig-avatar-group-item][data-size='md'] {
1178
+ width: 32px;
1179
+ height: 32px;
1180
+ font-size: 12px;
1181
+ }
1182
+
1183
+ [data-rig-avatar-group-item][data-size='lg'] {
1184
+ width: 40px;
1185
+ height: 40px;
1186
+ font-size: 14px;
1187
+ }
1188
+
1189
+ [data-rig-avatar-group-overflow] {
1190
+ font-size: 11px;
1191
+ font-family: var(--font-mono);
1192
+ border: 2px solid var(--color-background);
1193
+ margin-left: -8px;
1194
+ background: var(--color-accent);
1195
+ color: var(--color-foreground);
1196
+ }
1197
+
1198
+ /* ───────── Pagination ───────── */
1199
+
1200
+ [data-rig-pagination] {
1201
+ @apply inline-flex items-center gap-1;
1202
+
1203
+ font-family: var(--font-mono);
1204
+ font-size: 12px;
1205
+ user-select: none;
1206
+ }
1207
+
1208
+ [data-rig-pagination-prev],
1209
+ [data-rig-pagination-next] {
1210
+ @apply inline-flex items-center justify-center;
1211
+
1212
+ width: 28px;
1213
+ height: 28px;
1214
+ border-radius: var(--radius);
1215
+ border: 1px solid var(--color-border);
1216
+ background: none;
1217
+ color: var(--color-foreground);
1218
+ cursor: pointer;
1219
+ transition: background-color 0.15s ease;
1220
+ }
1221
+
1222
+ [data-rig-pagination-prev]:hover:not(:disabled),
1223
+ [data-rig-pagination-next]:hover:not(:disabled) {
1224
+ background: var(--rig-list-hover-bg);
1225
+ }
1226
+
1227
+ [data-rig-pagination-prev]:disabled,
1228
+ [data-rig-pagination-next]:disabled {
1229
+ opacity: 0.3;
1230
+ cursor: not-allowed;
1231
+ }
1232
+
1233
+ [data-rig-pagination-page] {
1234
+ @apply inline-flex items-center justify-center;
1235
+
1236
+ min-width: 28px;
1237
+ height: 28px;
1238
+ border-radius: var(--radius);
1239
+ border: 1px solid transparent;
1240
+ background: none;
1241
+ color: var(--color-muted-foreground);
1242
+ cursor: pointer;
1243
+ padding: 0 4px;
1244
+ transition:
1245
+ background-color 0.15s ease,
1246
+ color 0.15s ease;
1247
+ }
1248
+
1249
+ [data-rig-pagination-page]:hover {
1250
+ background: var(--rig-list-hover-bg);
1251
+ color: var(--color-foreground);
1252
+ }
1253
+
1254
+ [data-rig-pagination-page][data-active] {
1255
+ background: var(--color-primary);
1256
+ color: var(--color-primary-foreground);
1257
+ border-color: var(--color-primary);
1258
+ }
1259
+
1260
+ [data-rig-pagination-ellipsis] {
1261
+ @apply inline-flex items-center justify-center;
1262
+
1263
+ min-width: 28px;
1264
+ height: 28px;
1265
+ color: var(--color-muted-foreground);
1266
+ }
1267
+
1268
+ [data-rig-pagination][data-disabled] {
1269
+ opacity: 0.4;
1270
+ pointer-events: none;
1271
+ }
1272
+
1273
+ /* ───────── FileInput ───────── */
1274
+
1275
+ [data-rig-file-input] {
1276
+ display: flex;
1277
+ align-items: center;
1278
+ justify-content: center;
1279
+ min-height: 80px;
1280
+ padding: 16px;
1281
+ border: 2px dashed var(--color-border);
1282
+ border-radius: var(--radius);
1283
+ background: var(--rig-input-bg);
1284
+ cursor: pointer;
1285
+ transition:
1286
+ border-color 0.15s ease,
1287
+ background-color 0.15s ease;
1288
+ }
1289
+
1290
+ [data-rig-file-input]:hover {
1291
+ border-color: var(--color-ring);
1292
+ }
1293
+
1294
+ [data-rig-file-input]:focus-visible {
1295
+ outline: 1px solid var(--color-ring);
1296
+ outline-offset: 2px;
1297
+ }
1298
+
1299
+ [data-rig-file-input][data-dragging] {
1300
+ border-color: var(--color-primary);
1301
+ background: color-mix(in srgb, var(--color-primary) 5%, transparent);
1302
+ }
1303
+
1304
+ [data-rig-file-input][data-disabled] {
1305
+ opacity: 0.4;
1306
+ cursor: not-allowed;
1307
+ }
1308
+
1309
+ [data-rig-file-input-native] {
1310
+ position: absolute;
1311
+ width: 1px;
1312
+ height: 1px;
1313
+ overflow: hidden;
1314
+ clip: rect(0, 0, 0, 0);
1315
+ white-space: nowrap;
1316
+ border: 0;
1317
+ }
1318
+
1319
+ [data-rig-file-input-content] {
1320
+ text-align: center;
1321
+ }
1322
+
1323
+ [data-rig-file-input-placeholder] {
1324
+ color: var(--color-muted-foreground);
1325
+ font-size: 13px;
1326
+ }
1327
+
1328
+ [data-rig-file-input-files] {
1329
+ color: var(--color-foreground);
1330
+ font-size: 13px;
1331
+ font-family: var(--font-mono);
1332
+ }
1333
+
1334
+ /* ───────── Rating ───────── */
1335
+
1336
+ [data-rig-rating] {
1337
+ @apply inline-flex items-center;
1338
+
1339
+ gap: 2px;
1340
+ }
1341
+
1342
+ [data-rig-rating]:focus-visible {
1343
+ outline: 1px solid var(--color-ring);
1344
+ outline-offset: 2px;
1345
+ border-radius: var(--radius);
1346
+ }
1347
+
1348
+ [data-rig-rating-star] {
1349
+ font-size: 20px;
1350
+ cursor: pointer;
1351
+ color: var(--color-muted-foreground);
1352
+ transition: color 0.1s ease;
1353
+ line-height: 1;
1354
+ }
1355
+
1356
+ [data-rig-rating-star][data-filled] {
1357
+ color: var(--color-warning, #f59e0b);
1358
+ }
1359
+
1360
+ [data-rig-rating-star][data-half] {
1361
+ color: var(--color-warning, #f59e0b);
1362
+ opacity: 0.5;
1363
+ }
1364
+
1365
+ [data-rig-rating][data-readonly] [data-rig-rating-star] {
1366
+ cursor: default;
1367
+ }
1368
+
1369
+ [data-rig-rating][data-disabled] {
1370
+ opacity: 0.4;
1371
+ pointer-events: none;
1372
+ }
1373
+
1374
+ /* ───────── Form ───────── */
1375
+
1376
+ [data-rig-form] {
1377
+ display: flex;
1378
+ flex-direction: column;
1379
+ gap: 12px;
1380
+ }
1381
+
1382
+ [data-rig-form][data-dirty] {
1383
+ /* Visual cue available for consumers via token */
1384
+ }
1385
+
1386
+ /* ───────── NumberInput ───────── */
1387
+
1388
+ [data-rig-number-input] {
1389
+ @apply inline-flex items-center;
1390
+
1391
+ border: 1px solid var(--rig-input-border);
1392
+ border-radius: var(--radius);
1393
+ background: var(--rig-input-bg);
1394
+ transition: border-color 0.15s ease;
1395
+ }
1396
+
1397
+ [data-rig-number-input]:focus-within {
1398
+ border-color: var(--color-ring);
1399
+ }
1400
+
1401
+ [data-rig-number-input-field] {
1402
+ @apply flex-1 focus:outline-none;
1403
+
1404
+ background: transparent;
1405
+ border: none;
1406
+ color: var(--rig-input-fg);
1407
+ font-family: var(--font-mono);
1408
+ font-size: 13px;
1409
+ padding: 4px 6px;
1410
+ text-align: center;
1411
+ min-width: 0;
1412
+ }
1413
+
1414
+ [data-rig-number-input-field]::placeholder {
1415
+ color: var(--rig-input-placeholder);
1416
+ }
1417
+
1418
+ [data-rig-number-input-decrement],
1419
+ [data-rig-number-input-increment] {
1420
+ @apply inline-flex items-center justify-center;
1421
+
1422
+ width: 28px;
1423
+ height: 28px;
1424
+ border: none;
1425
+ background: none;
1426
+ color: var(--rig-description-fg);
1427
+ cursor: pointer;
1428
+ font-size: 14px;
1429
+ transition:
1430
+ color 0.1s ease,
1431
+ background-color 0.1s ease;
1432
+ }
1433
+
1434
+ [data-rig-number-input-decrement]:hover:not(:disabled),
1435
+ [data-rig-number-input-increment]:hover:not(:disabled) {
1436
+ color: var(--color-foreground);
1437
+ background: var(--rig-list-hover-bg);
1438
+ }
1439
+
1440
+ [data-rig-number-input-decrement]:disabled,
1441
+ [data-rig-number-input-increment]:disabled {
1442
+ opacity: 0.3;
1443
+ cursor: not-allowed;
1444
+ }
1445
+
1446
+ [data-rig-number-input][data-disabled] {
1447
+ @apply pointer-events-none;
1448
+
1449
+ opacity: 0.4;
1450
+ }
1451
+
1452
+ /* ───────── OTPInput ───────── */
1453
+
1454
+ [data-rig-otp-input] {
1455
+ @apply inline-flex items-center;
1456
+
1457
+ gap: 6px;
1458
+ }
1459
+
1460
+ [data-rig-otp-input-cell] {
1461
+ @apply focus:outline-none;
1462
+
1463
+ width: 36px;
1464
+ height: 40px;
1465
+ text-align: center;
1466
+ font-family: var(--font-mono);
1467
+ font-size: 16px;
1468
+ font-weight: 600;
1469
+ color: var(--rig-input-fg);
1470
+ background: var(--rig-input-bg);
1471
+ border: 1px solid var(--rig-input-border);
1472
+ border-radius: var(--radius);
1473
+ transition: border-color 0.15s ease;
1474
+ }
1475
+
1476
+ [data-rig-otp-input-cell]:focus {
1477
+ border-color: var(--color-ring);
1478
+ }
1479
+
1480
+ [data-rig-otp-input-cell][data-filled] {
1481
+ border-color: var(--color-primary);
1482
+ background: color-mix(in srgb, var(--color-primary) 5%, transparent);
1483
+ }
1484
+
1485
+ [data-rig-otp-input][data-disabled] {
1486
+ @apply pointer-events-none;
1487
+
1488
+ opacity: 0.4;
1489
+ }
1490
+
1491
+ [data-rig-otp-input][data-disabled] [data-rig-otp-input-cell] {
1492
+ cursor: not-allowed;
1493
+ }
1494
+
1495
+ /* ───────── Transfer ───────── */
1496
+
1497
+ [data-rig-transfer] {
1498
+ @apply flex items-stretch;
1499
+
1500
+ gap: 8px;
1501
+ }
1502
+
1503
+ [data-rig-transfer-source],
1504
+ [data-rig-transfer-target] {
1505
+ flex: 1;
1506
+ min-width: 0;
1507
+ border: 1px solid var(--color-border);
1508
+ border-radius: var(--radius);
1509
+ background: var(--rig-input-bg);
1510
+ overflow-y: auto;
1511
+ max-height: 240px;
1512
+ }
1513
+
1514
+ [data-rig-transfer-item] {
1515
+ display: block;
1516
+ width: 100%;
1517
+ padding: 6px 10px;
1518
+ font-size: 12px;
1519
+ color: var(--color-foreground);
1520
+ cursor: pointer;
1521
+ border: none;
1522
+ background: none;
1523
+ text-align: left;
1524
+ transition: background-color 0.1s ease;
1525
+ }
1526
+
1527
+ [data-rig-transfer-item]:hover {
1528
+ background: var(--rig-list-hover-bg);
1529
+ }
1530
+
1531
+ [data-rig-transfer-item]:focus-visible {
1532
+ outline: 1px solid var(--color-ring);
1533
+ outline-offset: -1px;
1534
+ }
1535
+
1536
+ [data-rig-transfer-item][data-selected] {
1537
+ background: var(--rig-list-active-bg);
1538
+ color: var(--rig-list-active-fg);
1539
+ }
1540
+
1541
+ [data-rig-transfer-actions] {
1542
+ @apply flex flex-col items-center justify-center;
1543
+
1544
+ gap: 4px;
1545
+ }
1546
+
1547
+ [data-rig-transfer-move-right],
1548
+ [data-rig-transfer-move-left] {
1549
+ @apply inline-flex items-center justify-center;
1550
+
1551
+ width: 28px;
1552
+ height: 28px;
1553
+ border-radius: var(--radius);
1554
+ border: 1px solid var(--color-border);
1555
+ background: none;
1556
+ color: var(--color-foreground);
1557
+ cursor: pointer;
1558
+ font-size: 16px;
1559
+ transition: background-color 0.15s ease;
1560
+ }
1561
+
1562
+ [data-rig-transfer-move-right]:hover:not(:disabled),
1563
+ [data-rig-transfer-move-left]:hover:not(:disabled) {
1564
+ background: var(--rig-list-hover-bg);
1565
+ }
1566
+
1567
+ [data-rig-transfer-move-right]:disabled,
1568
+ [data-rig-transfer-move-left]:disabled {
1569
+ opacity: 0.3;
1570
+ cursor: not-allowed;
1571
+ }
1572
+
1573
+ [data-rig-transfer][data-disabled] {
1574
+ @apply pointer-events-none;
1575
+
1576
+ opacity: 0.4;
1577
+ }
1578
+
1579
+ /* ───────── Mention ───────── */
1580
+
1581
+ [data-rig-mention] {
1582
+ position: relative;
1583
+ }
1584
+
1585
+ [data-rig-mention-input] {
1586
+ @apply focus:outline-none;
1587
+
1588
+ width: 100%;
1589
+ background: var(--rig-input-bg);
1590
+ border: 1px solid var(--rig-input-border);
1591
+ color: var(--rig-input-fg);
1592
+ font-size: 13px;
1593
+ padding: 4px 6px;
1594
+ border-radius: var(--radius);
1595
+ transition: border-color 0.15s ease;
1596
+ resize: vertical;
1597
+ }
1598
+
1599
+ [data-rig-mention-input]::placeholder {
1600
+ color: var(--rig-input-placeholder);
1601
+ }
1602
+
1603
+ [data-rig-mention-input]:focus {
1604
+ border-color: var(--color-ring);
1605
+ }
1606
+
1607
+ [data-rig-mention-list] {
1608
+ position: absolute;
1609
+ left: 0;
1610
+ right: 0;
1611
+ top: 100%;
1612
+ margin-top: 2px;
1613
+ z-index: 50;
1614
+ background: var(--rig-widget-bg);
1615
+ border: 1px solid var(--rig-widget-border);
1616
+ border-radius: var(--radius);
1617
+ max-height: 160px;
1618
+ overflow-y: auto;
1619
+ box-shadow: 0 4px 12px rgb(0 0 0 / 40%);
1620
+ list-style: none;
1621
+ margin: 2px 0 0;
1622
+ padding: 0;
1623
+ }
1624
+
1625
+ [data-rig-mention-item] {
1626
+ display: block;
1627
+ width: 100%;
1628
+ padding: 6px 10px;
1629
+ font-size: 12px;
1630
+ color: var(--rig-description-fg);
1631
+ cursor: pointer;
1632
+ transition: background-color 0.1s ease;
1633
+ }
1634
+
1635
+ [data-rig-mention-item]:hover,
1636
+ [data-rig-mention-item][data-active] {
1637
+ background: var(--rig-list-hover-bg);
1638
+ color: var(--color-foreground);
1639
+ }
1640
+
1641
+ [data-rig-mention-item][aria-selected='true'] {
1642
+ background: var(--rig-list-active-bg);
1643
+ color: var(--rig-list-active-fg);
1644
+ }
1645
+
1646
+ [data-rig-mention][data-disabled] {
1647
+ @apply pointer-events-none;
1648
+
1649
+ opacity: 0.4;
1650
+ }
1651
+
1652
+ [data-rig-mention][data-disabled] [data-rig-mention-input] {
1653
+ cursor: not-allowed;
1654
+ }