@sproutsocial/racine 31.7.4 → 31.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/components.css +945 -210
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 31.7.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [a217f73]
|
|
8
|
+
- Updated dependencies [9c3cfaf]
|
|
9
|
+
- @sproutsocial/seeds-react-stack@1.0.24
|
|
10
|
+
- @sproutsocial/seeds-react-tabs@1.4.15
|
|
11
|
+
|
|
12
|
+
## 31.7.5
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [c35fe22]
|
|
17
|
+
- Updated dependencies [dcd3fb9]
|
|
18
|
+
- Updated dependencies [235938d]
|
|
19
|
+
- Updated dependencies [c19788f]
|
|
20
|
+
- Updated dependencies [5b5b1bd]
|
|
21
|
+
- @sproutsocial/seeds-react-fieldset@1.0.27
|
|
22
|
+
- @sproutsocial/seeds-react-form-field@1.1.21
|
|
23
|
+
- @sproutsocial/seeds-react-radio@1.3.27
|
|
24
|
+
- @sproutsocial/seeds-react-input@1.5.31
|
|
25
|
+
- @sproutsocial/seeds-react-switch@1.2.43
|
|
26
|
+
- @sproutsocial/seeds-react-token-input@1.4.53
|
|
27
|
+
- @sproutsocial/seeds-react-accordion@0.4.52
|
|
28
|
+
|
|
3
29
|
## 31.7.4
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
package/dist/components.css
CHANGED
|
@@ -263,230 +263,238 @@
|
|
|
263
263
|
* <button class="seeds-btn seeds-btn-primary">Click me</button>
|
|
264
264
|
* <button class="seeds-btn seeds-btn-primary seeds-btn-lg">Large</button>
|
|
265
265
|
* <button class="seeds-btn seeds-btn-primary seeds-btn-disabled" disabled>Disabled</button>
|
|
266
|
+
*
|
|
267
|
+
* All rules are wrapped in `@layer components` so that:
|
|
268
|
+
* 1. Consumer Tailwind utilities (unlayered) win the cascade over these styles.
|
|
269
|
+
* 2. Other component CSS also in `@layer components` (e.g. tabs.css) can
|
|
270
|
+
* override button base styles by appearing later in source order, without
|
|
271
|
+
* needing higher specificity.
|
|
266
272
|
*/
|
|
267
273
|
|
|
268
274
|
@layer components {
|
|
269
275
|
|
|
270
|
-
.seeds-btn {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
276
|
+
.seeds-btn {
|
|
277
|
+
display: inline-block;
|
|
278
|
+
box-sizing: border-box;
|
|
279
|
+
text-align: center;
|
|
280
|
+
font-family: var(--font-family);
|
|
281
|
+
border-width: 1px;
|
|
282
|
+
border-style: solid;
|
|
283
|
+
border-radius: var(--radius-500);
|
|
284
|
+
cursor: pointer;
|
|
285
|
+
text-decoration: none;
|
|
286
|
+
line-height: 1rem;
|
|
287
|
+
white-space: nowrap;
|
|
288
|
+
font-weight: var(--font-weight-bold);
|
|
289
|
+
transition-property: all;
|
|
290
|
+
transition-duration: var(--duration-fast);
|
|
291
|
+
margin: 0;
|
|
292
|
+
padding: var(--space-300);
|
|
293
|
+
font-size: var(--font-size-200);
|
|
294
|
+
}
|
|
289
295
|
|
|
290
|
-
.seeds-btn:focus {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
296
|
+
.seeds-btn:focus {
|
|
297
|
+
outline: none;
|
|
298
|
+
box-shadow:
|
|
299
|
+
0 0 0 1px var(--color-button-primary-bg-base),
|
|
300
|
+
0 0 0 4px color-mix(in srgb, var(--color-button-primary-bg-base) 30%, transparent);
|
|
301
|
+
}
|
|
296
302
|
|
|
297
|
-
/* KNOWN ISSUE: `small` currently renders identically to the default size — both use
|
|
303
|
+
/* KNOWN ISSUE: `small` currently renders identically to the default size — both use
|
|
298
304
|
--space-300 / --font-size-200 (only --lg differs). So size="small" has no visual
|
|
299
305
|
effect for ANY appearance. A real fix needs distinct small tokens confirmed against
|
|
300
306
|
Figma (24px target); left out of scope intentionally. */
|
|
301
|
-
.seeds-btn-sm {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}
|
|
307
|
+
.seeds-btn-sm {
|
|
308
|
+
padding: var(--space-300);
|
|
309
|
+
font-size: var(--font-size-200);
|
|
310
|
+
}
|
|
305
311
|
|
|
306
|
-
.seeds-btn-lg {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
}
|
|
312
|
+
.seeds-btn-lg {
|
|
313
|
+
padding: var(--space-350);
|
|
314
|
+
font-size: var(--font-size-300);
|
|
315
|
+
}
|
|
310
316
|
|
|
311
|
-
.seeds-btn-primary {
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}
|
|
317
|
+
.seeds-btn-primary {
|
|
318
|
+
background-color: var(--color-button-primary-bg-base);
|
|
319
|
+
color: var(--color-button-primary-text-base);
|
|
320
|
+
border-color: var(--color-button-primary-border-base);
|
|
321
|
+
}
|
|
316
322
|
|
|
317
|
-
.seeds-btn-primary:hover {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
}
|
|
323
|
+
.seeds-btn-primary:hover {
|
|
324
|
+
background-color: var(--color-button-primary-bg-hover);
|
|
325
|
+
color: var(--color-button-primary-text-hover);
|
|
326
|
+
}
|
|
321
327
|
|
|
322
|
-
.seeds-btn-primary:active {
|
|
323
|
-
|
|
324
|
-
}
|
|
328
|
+
.seeds-btn-primary:active {
|
|
329
|
+
background-color: var(--color-button-primary-bg-active);
|
|
330
|
+
}
|
|
325
331
|
|
|
326
|
-
.seeds-btn-secondary {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
}
|
|
332
|
+
.seeds-btn-secondary {
|
|
333
|
+
background-color: var(--color-button-secondary-bg-base);
|
|
334
|
+
color: var(--color-button-secondary-text-base);
|
|
335
|
+
border-color: var(--color-button-secondary-border-base);
|
|
336
|
+
}
|
|
331
337
|
|
|
332
|
-
.seeds-btn-secondary:hover {
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
}
|
|
338
|
+
.seeds-btn-secondary:hover {
|
|
339
|
+
background-color: var(--color-button-secondary-bg-hover);
|
|
340
|
+
color: var(--color-button-secondary-text-hover);
|
|
341
|
+
}
|
|
336
342
|
|
|
337
|
-
.seeds-btn-secondary:active {
|
|
338
|
-
|
|
339
|
-
}
|
|
343
|
+
.seeds-btn-secondary:active {
|
|
344
|
+
background-color: var(--color-button-secondary-bg-active);
|
|
345
|
+
}
|
|
340
346
|
|
|
341
|
-
.seeds-btn-destructive {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
}
|
|
347
|
+
.seeds-btn-destructive {
|
|
348
|
+
background-color: var(--color-button-destructive-bg-base);
|
|
349
|
+
color: var(--color-button-destructive-text-base);
|
|
350
|
+
border-color: var(--color-button-destructive-border-base);
|
|
351
|
+
}
|
|
346
352
|
|
|
347
|
-
.seeds-btn-destructive:hover {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
}
|
|
353
|
+
.seeds-btn-destructive:hover {
|
|
354
|
+
background-color: var(--color-button-destructive-bg-hover);
|
|
355
|
+
color: var(--color-button-destructive-text-hover);
|
|
356
|
+
}
|
|
351
357
|
|
|
352
|
-
.seeds-btn-destructive:active {
|
|
353
|
-
|
|
354
|
-
}
|
|
358
|
+
.seeds-btn-destructive:active {
|
|
359
|
+
background-color: var(--color-button-destructive-bg-active);
|
|
360
|
+
}
|
|
355
361
|
|
|
356
|
-
.seeds-btn-placeholder {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
}
|
|
362
|
+
.seeds-btn-placeholder {
|
|
363
|
+
background-color: var(--color-button-placeholder-bg-base);
|
|
364
|
+
color: var(--color-button-placeholder-text-base);
|
|
365
|
+
border-color: var(--color-button-placeholder-border-base);
|
|
366
|
+
border-style: dashed;
|
|
367
|
+
}
|
|
362
368
|
|
|
363
|
-
.seeds-btn-placeholder:hover {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
}
|
|
369
|
+
.seeds-btn-placeholder:hover {
|
|
370
|
+
background-color: var(--color-button-placeholder-bg-hover);
|
|
371
|
+
color: var(--color-button-placeholder-text-hover);
|
|
372
|
+
}
|
|
367
373
|
|
|
368
|
-
.seeds-btn-unstyled {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
}
|
|
374
|
+
.seeds-btn-unstyled {
|
|
375
|
+
background-color: var(--color-button-unstyled-bg-base);
|
|
376
|
+
color: var(--color-button-unstyled-text-base);
|
|
377
|
+
border-color: transparent;
|
|
378
|
+
}
|
|
373
379
|
|
|
374
|
-
.seeds-btn-unstyled:hover {
|
|
375
|
-
|
|
376
|
-
}
|
|
380
|
+
.seeds-btn-unstyled:hover {
|
|
381
|
+
color: var(--color-button-unstyled-text-hover);
|
|
382
|
+
}
|
|
377
383
|
|
|
378
|
-
/* AI brand appearances — built on the shared --color-gradient-ai* tokens.
|
|
384
|
+
/* AI brand appearances — built on the shared --color-gradient-ai* tokens.
|
|
379
385
|
Rendered only via this Tailwind/CSS path (see ButtonHybrid routing guard). */
|
|
380
|
-
.seeds-btn-ai-primary {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
386
|
+
.seeds-btn-ai-primary {
|
|
387
|
+
background-color: transparent;
|
|
388
|
+
background-image: var(--color-button-ai-primary-bg-base);
|
|
389
|
+
/* Cover the full border box (incl. the base 1px transparent border) and don't
|
|
384
390
|
tile — otherwise the gradient repeats as a 1px strip along each edge. */
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
}
|
|
391
|
+
background-origin: border-box;
|
|
392
|
+
background-repeat: no-repeat;
|
|
393
|
+
color: var(--color-button-ai-primary-text-base);
|
|
394
|
+
border-color: transparent;
|
|
395
|
+
}
|
|
390
396
|
|
|
391
|
-
.seeds-btn-ai-secondary {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}
|
|
397
|
+
.seeds-btn-ai-secondary {
|
|
398
|
+
/* White base shows through the 20% gradient tint to produce the soft fill. */
|
|
399
|
+
background-color: #fff;
|
|
400
|
+
background-image: var(--color-button-ai-secondary-bg-base);
|
|
401
|
+
background-origin: border-box;
|
|
402
|
+
background-repeat: no-repeat;
|
|
403
|
+
color: var(--color-button-ai-secondary-text-base);
|
|
404
|
+
border-color: transparent;
|
|
405
|
+
}
|
|
400
406
|
|
|
401
|
-
.seeds-btn-ai-outline {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
}
|
|
407
|
+
.seeds-btn-ai-outline {
|
|
408
|
+
position: relative;
|
|
409
|
+
background-color: transparent;
|
|
410
|
+
color: var(--color-button-ai-outline-text-base);
|
|
411
|
+
border-color: transparent;
|
|
412
|
+
}
|
|
407
413
|
|
|
408
|
-
/* Rounded gradient border via a masked ::before so it respects border-radius
|
|
414
|
+
/* Rounded gradient border via a masked ::before so it respects border-radius
|
|
409
415
|
and does not tint the label/icon. */
|
|
410
|
-
.seeds-btn-ai-outline::before {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
}
|
|
416
|
+
.seeds-btn-ai-outline::before {
|
|
417
|
+
content: "";
|
|
418
|
+
position: absolute;
|
|
419
|
+
inset: 0;
|
|
420
|
+
border-radius: inherit;
|
|
421
|
+
padding: 1px;
|
|
422
|
+
background: var(--color-gradient-ai);
|
|
423
|
+
-webkit-mask:
|
|
424
|
+
linear-gradient(#fff 0 0) content-box,
|
|
425
|
+
linear-gradient(#fff 0 0);
|
|
426
|
+
-webkit-mask-composite: xor;
|
|
427
|
+
mask-composite: exclude;
|
|
428
|
+
pointer-events: none;
|
|
429
|
+
}
|
|
424
430
|
|
|
425
|
-
/* Subtle, brand-consistent hover across all three AI appearances. */
|
|
426
|
-
.seeds-btn-ai-primary:hover,
|
|
427
|
-
.seeds-btn-ai-secondary:hover,
|
|
428
|
-
.seeds-btn-ai-outline:hover {
|
|
429
|
-
|
|
430
|
-
}
|
|
431
|
+
/* Subtle, brand-consistent hover across all three AI appearances. */
|
|
432
|
+
.seeds-btn-ai-primary:hover,
|
|
433
|
+
.seeds-btn-ai-secondary:hover,
|
|
434
|
+
.seeds-btn-ai-outline:hover {
|
|
435
|
+
filter: brightness(0.96);
|
|
436
|
+
}
|
|
431
437
|
|
|
432
|
-
/* Active (sustained selected) state — mirrors styled-components: hover text color + active background */
|
|
433
|
-
.seeds-btn-primary.seeds-btn-active {
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
}
|
|
438
|
+
/* Active (sustained selected) state — mirrors styled-components: hover text color + active background */
|
|
439
|
+
.seeds-btn-primary.seeds-btn-active {
|
|
440
|
+
color: var(--color-button-primary-text-hover);
|
|
441
|
+
background-color: var(--color-button-primary-bg-active);
|
|
442
|
+
}
|
|
437
443
|
|
|
438
|
-
.seeds-btn-secondary.seeds-btn-active {
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
}
|
|
444
|
+
.seeds-btn-secondary.seeds-btn-active {
|
|
445
|
+
color: var(--color-button-secondary-text-hover);
|
|
446
|
+
background-color: var(--color-button-secondary-bg-active);
|
|
447
|
+
}
|
|
442
448
|
|
|
443
|
-
.seeds-btn-destructive.seeds-btn-active {
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
}
|
|
449
|
+
.seeds-btn-destructive.seeds-btn-active {
|
|
450
|
+
color: var(--color-button-destructive-text-hover);
|
|
451
|
+
background-color: var(--color-button-destructive-bg-active);
|
|
452
|
+
}
|
|
447
453
|
|
|
448
|
-
.seeds-btn-placeholder.seeds-btn-active {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
}
|
|
454
|
+
.seeds-btn-placeholder.seeds-btn-active {
|
|
455
|
+
color: var(--color-button-placeholder-text-hover);
|
|
456
|
+
background-color: var(--color-button-placeholder-bg-active);
|
|
457
|
+
}
|
|
452
458
|
|
|
453
|
-
/* unstyled active: only text color changes (no background token) */
|
|
454
|
-
.seeds-btn-unstyled.seeds-btn-active {
|
|
455
|
-
|
|
456
|
-
}
|
|
459
|
+
/* unstyled active: only text color changes (no background token) */
|
|
460
|
+
.seeds-btn-unstyled.seeds-btn-active {
|
|
461
|
+
color: var(--color-button-unstyled-text-hover);
|
|
462
|
+
}
|
|
457
463
|
|
|
458
|
-
.seeds-btn-disabled {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
}
|
|
464
|
+
.seeds-btn-disabled {
|
|
465
|
+
opacity: 0.5;
|
|
466
|
+
cursor: not-allowed;
|
|
467
|
+
pointer-events: none;
|
|
468
|
+
}
|
|
463
469
|
|
|
464
|
-
.seeds-btn-pill {
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
}
|
|
470
|
+
.seeds-btn-pill {
|
|
471
|
+
display: inline-flex;
|
|
472
|
+
align-items: center;
|
|
473
|
+
justify-content: center;
|
|
474
|
+
background-color: transparent;
|
|
475
|
+
border: none;
|
|
476
|
+
border-radius: var(--radius-pill);
|
|
477
|
+
min-width: var(--space-600);
|
|
478
|
+
min-height: var(--space-600);
|
|
479
|
+
padding: var(--space-300);
|
|
480
|
+
color: var(--color-button-pill-text-base);
|
|
481
|
+
}
|
|
476
482
|
|
|
477
|
-
.seeds-btn-pill:hover,
|
|
478
|
-
.seeds-btn-pill:focus:active {
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}
|
|
483
|
+
.seeds-btn-pill:hover,
|
|
484
|
+
.seeds-btn-pill:focus:active {
|
|
485
|
+
background-color: transparent;
|
|
486
|
+
color: var(--color-button-pill-text-hover);
|
|
487
|
+
box-shadow: inset 0px 0px 0px 1px var(--color-button-pill-border-hover);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
.seeds-btn-pill.seeds-btn-active {
|
|
491
|
+
color: var(--color-button-pill-text-hover);
|
|
492
|
+
background-color: var(--color-button-pill-bg-active);
|
|
493
|
+
}
|
|
483
494
|
|
|
484
|
-
.seeds-btn-pill.seeds-btn-active {
|
|
485
|
-
color: var(--color-button-pill-text-hover);
|
|
486
|
-
background-color: var(--color-button-pill-bg-active);
|
|
487
495
|
}
|
|
488
496
|
|
|
489
|
-
|
|
497
|
+
/* end @layer components */
|
|
490
498
|
/* --- seeds-react-collapsible --- */
|
|
491
499
|
/**
|
|
492
500
|
* Seeds Collapsible component classes
|
|
@@ -929,6 +937,109 @@
|
|
|
929
937
|
}
|
|
930
938
|
}
|
|
931
939
|
|
|
940
|
+
/* --- seeds-react-fieldset --- */
|
|
941
|
+
/**
|
|
942
|
+
* Seeds Fieldset component classes
|
|
943
|
+
* Use these instead of writing out individual Tailwind utility classes.
|
|
944
|
+
*
|
|
945
|
+
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
946
|
+
* CSS variable definitions and dark mode support.
|
|
947
|
+
*
|
|
948
|
+
* Usage:
|
|
949
|
+
* <fieldset class="seeds-fieldset">
|
|
950
|
+
* <legend class="seeds-fieldset-legend">Label</legend>
|
|
951
|
+
* <p class="seeds-fieldset-helper-text">Helper text</p>
|
|
952
|
+
* <div class="seeds-fieldset-list seeds-fieldset-list-vertical">
|
|
953
|
+
* <div class="seeds-fieldset-item seeds-fieldset-item-vertical">...</div>
|
|
954
|
+
* </div>
|
|
955
|
+
* </fieldset>
|
|
956
|
+
*/
|
|
957
|
+
|
|
958
|
+
@layer components {
|
|
959
|
+
.seeds-fieldset {
|
|
960
|
+
box-sizing: border-box;
|
|
961
|
+
font-family: var(--font-family);
|
|
962
|
+
border: none;
|
|
963
|
+
padding: 0;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
.seeds-fieldset-legend {
|
|
967
|
+
margin: 0;
|
|
968
|
+
font-family: var(--font-family);
|
|
969
|
+
font-size: var(--font-size-300);
|
|
970
|
+
line-height: var(--line-height-300);
|
|
971
|
+
font-weight: var(--font-weight-semibold);
|
|
972
|
+
color: var(--color-text-body);
|
|
973
|
+
margin-bottom: var(--space-300);
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
.seeds-fieldset-helper-text {
|
|
977
|
+
margin: 0;
|
|
978
|
+
font-family: var(--font-family);
|
|
979
|
+
font-size: var(--font-size-200);
|
|
980
|
+
line-height: var(--line-height-200);
|
|
981
|
+
margin-bottom: var(--space-300);
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
.seeds-fieldset-list {
|
|
985
|
+
box-sizing: border-box;
|
|
986
|
+
font-family: var(--font-family);
|
|
987
|
+
display: flex;
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
.seeds-fieldset-list-vertical {
|
|
991
|
+
flex-direction: column;
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
.seeds-fieldset-list-horizontal {
|
|
995
|
+
flex-direction: row;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
.seeds-fieldset-item {
|
|
999
|
+
box-sizing: border-box;
|
|
1000
|
+
font-family: var(--font-family);
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
.seeds-fieldset-item-vertical {
|
|
1004
|
+
margin-top: var(--space-300);
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
.seeds-fieldset-item-vertical:first-child {
|
|
1008
|
+
margin-top: 0;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
.seeds-fieldset-item-horizontal {
|
|
1012
|
+
margin-left: var(--space-300);
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
.seeds-fieldset-item-horizontal:first-child {
|
|
1016
|
+
margin-left: 0;
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
/* --- seeds-react-form-field --- */
|
|
1021
|
+
/**
|
|
1022
|
+
* Seeds FormField component classes
|
|
1023
|
+
* Use these instead of writing out individual Tailwind utility classes.
|
|
1024
|
+
*
|
|
1025
|
+
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
1026
|
+
* CSS variable definitions and dark mode support.
|
|
1027
|
+
*
|
|
1028
|
+
* FormField only contributes the container's vertical layout/margin; the
|
|
1029
|
+
* label, helper text, and error text colors and spacing are owned by the
|
|
1030
|
+
* composed Label/Text children (via their styled-system tokens), so this
|
|
1031
|
+
* class carries layout only and hard-codes no color tokens.
|
|
1032
|
+
*
|
|
1033
|
+
* Usage:
|
|
1034
|
+
* <div class="seeds-form-field">…label, field, error…</div>
|
|
1035
|
+
*/
|
|
1036
|
+
|
|
1037
|
+
@layer components {
|
|
1038
|
+
.seeds-form-field {
|
|
1039
|
+
display: block;
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
|
|
932
1043
|
/* --- seeds-react-icon --- */
|
|
933
1044
|
/**
|
|
934
1045
|
* Seeds Icon component classes
|
|
@@ -967,62 +1078,197 @@
|
|
|
967
1078
|
}
|
|
968
1079
|
}
|
|
969
1080
|
|
|
970
|
-
/* --- seeds-react-
|
|
1081
|
+
/* --- seeds-react-input --- */
|
|
971
1082
|
/**
|
|
972
|
-
* Seeds
|
|
1083
|
+
* Seeds Input component classes
|
|
973
1084
|
* Use these instead of writing out individual Tailwind utility classes.
|
|
974
1085
|
*
|
|
975
1086
|
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
976
1087
|
* CSS variable definitions and dark mode support.
|
|
977
1088
|
*
|
|
978
|
-
*
|
|
979
|
-
*
|
|
1089
|
+
* Usage:
|
|
1090
|
+
* <div class="seeds-input seeds-input-primary"><input /></div>
|
|
1091
|
+
* <div class="seeds-input seeds-input-primary seeds-input-lg"><input /></div>
|
|
980
1092
|
*/
|
|
981
1093
|
|
|
982
1094
|
@layer components {
|
|
983
|
-
.seeds-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
cursor: pointer;
|
|
987
|
-
font-family: var(--font-family);
|
|
988
|
-
font-weight: var(--font-weight-semibold);
|
|
989
|
-
color: var(--color-link-base);
|
|
990
|
-
text-decoration: none;
|
|
1095
|
+
.seeds-input {
|
|
1096
|
+
box-sizing: border-box;
|
|
1097
|
+
position: relative;
|
|
991
1098
|
}
|
|
992
1099
|
|
|
993
|
-
.seeds-
|
|
994
|
-
|
|
1100
|
+
.seeds-input input {
|
|
1101
|
+
box-sizing: border-box;
|
|
1102
|
+
width: 100%;
|
|
1103
|
+
border: 1px solid transparent;
|
|
1104
|
+
border-radius: var(--radius-500);
|
|
1105
|
+
background-color: var(--color-form-bg-base);
|
|
1106
|
+
color: var(--color-text-body);
|
|
1107
|
+
outline: none;
|
|
1108
|
+
transition:
|
|
1109
|
+
border-color var(--duration-fast) var(--ease-ease_in),
|
|
1110
|
+
box-shadow var(--duration-fast) var(--ease-ease_in);
|
|
1111
|
+
font-family: var(--font-family);
|
|
1112
|
+
font-weight: var(--font-weight-normal);
|
|
1113
|
+
appearance: none;
|
|
1114
|
+
/* This matches the overall height of Button and Select */
|
|
1115
|
+
margin: 0;
|
|
1116
|
+
text-overflow: ellipsis;
|
|
1117
|
+
overflow: hidden;
|
|
1118
|
+
white-space: nowrap;
|
|
1119
|
+
padding: var(--space-300);
|
|
1120
|
+
font-size: var(--font-size-200);
|
|
1121
|
+
line-height: 16px;
|
|
995
1122
|
}
|
|
996
1123
|
|
|
997
|
-
.
|
|
998
|
-
|
|
999
|
-
|
|
1124
|
+
/* https://stackoverflow.com/questions/14007655/remove-ie10s-clear-field-x-button-on-certain-inputs */
|
|
1125
|
+
.seeds-input input::-ms-clear {
|
|
1126
|
+
display: none;
|
|
1000
1127
|
}
|
|
1001
1128
|
|
|
1002
|
-
.seeds-
|
|
1003
|
-
|
|
1129
|
+
.seeds-input input::-webkit-search-cancel-button {
|
|
1130
|
+
appearance: none;
|
|
1004
1131
|
}
|
|
1005
1132
|
|
|
1006
|
-
.seeds-
|
|
1133
|
+
.seeds-input input:focus {
|
|
1007
1134
|
outline: none;
|
|
1008
1135
|
box-shadow:
|
|
1009
1136
|
0 0 0 1px var(--color-button-primary-bg-base),
|
|
1010
1137
|
0 0 0 4px color-mix(in srgb, var(--color-button-primary-bg-base) 30%, transparent);
|
|
1011
1138
|
}
|
|
1012
1139
|
|
|
1013
|
-
|
|
1140
|
+
/* Fix for red ring when input is marked required in Firefox */
|
|
1141
|
+
.seeds-input input:not(output):not(:focus):-moz-ui-invalid {
|
|
1014
1142
|
box-shadow: none;
|
|
1015
1143
|
}
|
|
1016
1144
|
|
|
1017
|
-
.seeds-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
pointer-events: none;
|
|
1145
|
+
.seeds-input input::placeholder {
|
|
1146
|
+
color: var(--color-form-placeholder-base);
|
|
1147
|
+
font-style: italic;
|
|
1021
1148
|
}
|
|
1022
1149
|
|
|
1023
|
-
/*
|
|
1024
|
-
.seeds-
|
|
1025
|
-
|
|
1150
|
+
/* Size modifiers */
|
|
1151
|
+
.seeds-input-lg input {
|
|
1152
|
+
padding: var(--space-350) var(--space-400);
|
|
1153
|
+
font-size: var(--font-size-300);
|
|
1154
|
+
line-height: var(--line-height-300);
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
.seeds-input-sm input {
|
|
1158
|
+
padding: var(--space-200);
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
/* Accessory spacing */
|
|
1162
|
+
.seeds-input-has-before input {
|
|
1163
|
+
padding-left: 40px;
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
.seeds-input-has-after input {
|
|
1167
|
+
padding-right: 40px;
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
/* Appearance */
|
|
1171
|
+
.seeds-input-primary input {
|
|
1172
|
+
border: 1px solid var(--color-form-border-base);
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
/* State borders — declared after appearance so border-color wins */
|
|
1176
|
+
.seeds-input-invalid input {
|
|
1177
|
+
border-color: var(--color-form-border-error);
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
.seeds-input-warning input {
|
|
1181
|
+
border-color: var(--color-form-border-warning);
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
/* Disabled */
|
|
1185
|
+
.seeds-input-disabled {
|
|
1186
|
+
opacity: 0.4;
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
.seeds-input-disabled input {
|
|
1190
|
+
cursor: not-allowed;
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
/* Accessories (before / after / clear button) */
|
|
1194
|
+
.seeds-input-accessory {
|
|
1195
|
+
position: absolute;
|
|
1196
|
+
top: 50%;
|
|
1197
|
+
transform: translateY(-50%);
|
|
1198
|
+
color: var(--color-icon-base);
|
|
1199
|
+
display: flex;
|
|
1200
|
+
align-items: center;
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
.seeds-input-accessory-before {
|
|
1204
|
+
left: var(--space-300);
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
.seeds-input-accessory-after {
|
|
1208
|
+
right: var(--space-300);
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
.seeds-input-accessory-clear {
|
|
1212
|
+
right: 0;
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
/* --- seeds-react-link --- */
|
|
1217
|
+
/**
|
|
1218
|
+
* Seeds Link component classes
|
|
1219
|
+
* Use these instead of writing out individual Tailwind utility classes.
|
|
1220
|
+
*
|
|
1221
|
+
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
1222
|
+
* CSS variable definitions and dark mode support.
|
|
1223
|
+
*
|
|
1224
|
+
* Rules live in the Tailwind `components` layer so consumer utility classes
|
|
1225
|
+
* (e.g. mx-200, p-300, inline-flex) win the cascade over these defaults.
|
|
1226
|
+
*/
|
|
1227
|
+
|
|
1228
|
+
@layer components {
|
|
1229
|
+
.seeds-link {
|
|
1230
|
+
border: 0;
|
|
1231
|
+
appearance: none;
|
|
1232
|
+
cursor: pointer;
|
|
1233
|
+
font-family: var(--font-family);
|
|
1234
|
+
font-weight: var(--font-weight-semibold);
|
|
1235
|
+
color: var(--color-link-base);
|
|
1236
|
+
text-decoration: none;
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
.seeds-link-underline {
|
|
1240
|
+
text-decoration: underline;
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
.seeds-link:hover {
|
|
1244
|
+
color: var(--color-link-hover);
|
|
1245
|
+
text-decoration: underline;
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
.seeds-link:active {
|
|
1249
|
+
color: var(--color-link-hover);
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
.seeds-link:focus {
|
|
1253
|
+
outline: none;
|
|
1254
|
+
box-shadow:
|
|
1255
|
+
0 0 0 1px var(--color-button-primary-bg-base),
|
|
1256
|
+
0 0 0 4px color-mix(in srgb, var(--color-button-primary-bg-base) 30%, transparent);
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
.seeds-link:focus:active {
|
|
1260
|
+
box-shadow: none;
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
.seeds-link-disabled {
|
|
1264
|
+
opacity: 0.4;
|
|
1265
|
+
cursor: not-allowed;
|
|
1266
|
+
pointer-events: none;
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
/* When rendered as a button (no href) remove the native button background */
|
|
1270
|
+
.seeds-link-no-href {
|
|
1271
|
+
background: none;
|
|
1026
1272
|
}
|
|
1027
1273
|
}
|
|
1028
1274
|
|
|
@@ -2585,6 +2831,129 @@
|
|
|
2585
2831
|
}
|
|
2586
2832
|
}
|
|
2587
2833
|
|
|
2834
|
+
/* --- seeds-react-radio --- */
|
|
2835
|
+
/**
|
|
2836
|
+
* Seeds Radio component classes
|
|
2837
|
+
* Use these instead of writing out individual Tailwind utility classes.
|
|
2838
|
+
*
|
|
2839
|
+
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
2840
|
+
* CSS variable definitions and dark mode support.
|
|
2841
|
+
*
|
|
2842
|
+
* Usage:
|
|
2843
|
+
* <label class="seeds-radio">
|
|
2844
|
+
* <span class="seeds-radio-wrapper seeds-radio-checked">
|
|
2845
|
+
* <input type="radio" class="seeds-radio-input" />
|
|
2846
|
+
* </span>
|
|
2847
|
+
* <span class="seeds-radio-label">Label</span>
|
|
2848
|
+
* </label>
|
|
2849
|
+
*/
|
|
2850
|
+
|
|
2851
|
+
@layer components {
|
|
2852
|
+
.seeds-radio {
|
|
2853
|
+
display: inline-flex;
|
|
2854
|
+
align-items: center;
|
|
2855
|
+
box-sizing: border-box;
|
|
2856
|
+
}
|
|
2857
|
+
|
|
2858
|
+
.seeds-radio-wrapper {
|
|
2859
|
+
position: relative;
|
|
2860
|
+
width: var(--space-400);
|
|
2861
|
+
height: var(--space-400);
|
|
2862
|
+
cursor: pointer;
|
|
2863
|
+
}
|
|
2864
|
+
|
|
2865
|
+
.seeds-radio-wrapper.seeds-radio-disabled {
|
|
2866
|
+
opacity: 0.4;
|
|
2867
|
+
pointer-events: none;
|
|
2868
|
+
cursor: not-allowed;
|
|
2869
|
+
}
|
|
2870
|
+
|
|
2871
|
+
.seeds-radio-input {
|
|
2872
|
+
box-sizing: border-box;
|
|
2873
|
+
position: absolute;
|
|
2874
|
+
top: 0;
|
|
2875
|
+
left: 0;
|
|
2876
|
+
width: 100%;
|
|
2877
|
+
height: 100%;
|
|
2878
|
+
margin: 0;
|
|
2879
|
+
appearance: none;
|
|
2880
|
+
cursor: pointer;
|
|
2881
|
+
border: 1px solid var(--color-form-border-base);
|
|
2882
|
+
border-radius: 50%;
|
|
2883
|
+
background-color: var(--color-form-bg-base);
|
|
2884
|
+
transition:
|
|
2885
|
+
border-color var(--duration-fast) ease-in,
|
|
2886
|
+
background-color var(--duration-fast) ease-in;
|
|
2887
|
+
}
|
|
2888
|
+
|
|
2889
|
+
/* Focus ring mirrors button.css (the CSS form of the focusRing mixin) */
|
|
2890
|
+
.seeds-radio-input:focus {
|
|
2891
|
+
outline: none;
|
|
2892
|
+
box-shadow:
|
|
2893
|
+
0 0 0 1px var(--color-button-primary-bg-base),
|
|
2894
|
+
0 0 0 4px color-mix(in srgb, var(--color-button-primary-bg-base) 30%, transparent);
|
|
2895
|
+
}
|
|
2896
|
+
|
|
2897
|
+
.seeds-radio-wrapper:before {
|
|
2898
|
+
content: "";
|
|
2899
|
+
position: absolute;
|
|
2900
|
+
top: 50%;
|
|
2901
|
+
left: 50%;
|
|
2902
|
+
transform: translate(-50%, -50%);
|
|
2903
|
+
width: 6px;
|
|
2904
|
+
height: 6px;
|
|
2905
|
+
border-radius: 50%;
|
|
2906
|
+
opacity: 0;
|
|
2907
|
+
transition: opacity var(--duration-fast) ease-in;
|
|
2908
|
+
z-index: 1;
|
|
2909
|
+
pointer-events: none;
|
|
2910
|
+
}
|
|
2911
|
+
|
|
2912
|
+
/* Unchecked hover / focus: show the dot (only when NOT checked) */
|
|
2913
|
+
.seeds-radio-wrapper:not(.seeds-radio-checked):hover .seeds-radio-input,
|
|
2914
|
+
.seeds-radio-wrapper:not(.seeds-radio-checked):focus-within .seeds-radio-input {
|
|
2915
|
+
border-color: var(--color-form-border-base);
|
|
2916
|
+
background-color: var(--color-form-bg-base);
|
|
2917
|
+
}
|
|
2918
|
+
|
|
2919
|
+
.seeds-radio-wrapper:not(.seeds-radio-checked):hover:before,
|
|
2920
|
+
.seeds-radio-wrapper:not(.seeds-radio-checked):focus-within:before {
|
|
2921
|
+
opacity: 1;
|
|
2922
|
+
background-color: var(--color-form-bg-base);
|
|
2923
|
+
}
|
|
2924
|
+
|
|
2925
|
+
/* Disabled-unchecked keeps the hover dot hidden (parity with opacity: disabled ? 0 : 1) */
|
|
2926
|
+
.seeds-radio-wrapper.seeds-radio-disabled:not(.seeds-radio-checked):hover:before {
|
|
2927
|
+
opacity: 0;
|
|
2928
|
+
}
|
|
2929
|
+
|
|
2930
|
+
/* Checked state */
|
|
2931
|
+
.seeds-radio-wrapper.seeds-radio-checked .seeds-radio-input {
|
|
2932
|
+
border-color: var(--color-form-border-selected);
|
|
2933
|
+
/* No --color-form-bg-selected token exists; form.background.selected resolves
|
|
2934
|
+
to the same value as form.border.selected in both light and dark themes. */
|
|
2935
|
+
background-color: var(--color-form-border-selected);
|
|
2936
|
+
}
|
|
2937
|
+
|
|
2938
|
+
.seeds-radio-wrapper.seeds-radio-checked:before {
|
|
2939
|
+
opacity: 1;
|
|
2940
|
+
background-color: var(--color-form-bg-base);
|
|
2941
|
+
}
|
|
2942
|
+
|
|
2943
|
+
.seeds-radio-label {
|
|
2944
|
+
margin-left: var(--space-300);
|
|
2945
|
+
font-size: var(--font-size-200);
|
|
2946
|
+
line-height: 1;
|
|
2947
|
+
cursor: pointer;
|
|
2948
|
+
color: var(--color-text-headline);
|
|
2949
|
+
}
|
|
2950
|
+
|
|
2951
|
+
.seeds-radio.seeds-radio-disabled .seeds-radio-label {
|
|
2952
|
+
opacity: 0.4;
|
|
2953
|
+
cursor: not-allowed;
|
|
2954
|
+
}
|
|
2955
|
+
}
|
|
2956
|
+
|
|
2588
2957
|
/* --- seeds-react-rating --- */
|
|
2589
2958
|
@layer components {
|
|
2590
2959
|
.seeds-rating {
|
|
@@ -2959,6 +3328,372 @@
|
|
|
2959
3328
|
}
|
|
2960
3329
|
}
|
|
2961
3330
|
|
|
3331
|
+
/* --- seeds-react-stack --- */
|
|
3332
|
+
/**
|
|
3333
|
+
* Seeds Stack component classes
|
|
3334
|
+
* Use these instead of writing out individual Tailwind utility classes.
|
|
3335
|
+
*
|
|
3336
|
+
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
3337
|
+
* CSS variable definitions and dark mode support.
|
|
3338
|
+
*
|
|
3339
|
+
* Usage:
|
|
3340
|
+
* <div class="seeds-stack seeds-stack-vertical seeds-stack-align-left seeds-stack-space-300">…</div>
|
|
3341
|
+
*/
|
|
3342
|
+
|
|
3343
|
+
/*
|
|
3344
|
+
* Wrapped in @layer components so consumer Tailwind utilities (which live in
|
|
3345
|
+
* @layer utilities, ordered after components) can override these component
|
|
3346
|
+
* styles. Unlayered rules would always win the cascade regardless of source
|
|
3347
|
+
* order, preventing overrides like className="inline-flex mx-200".
|
|
3348
|
+
*/
|
|
3349
|
+
@layer components {
|
|
3350
|
+
.seeds-stack {
|
|
3351
|
+
display: flex;
|
|
3352
|
+
}
|
|
3353
|
+
|
|
3354
|
+
.seeds-stack-vertical {
|
|
3355
|
+
flex-direction: column;
|
|
3356
|
+
}
|
|
3357
|
+
|
|
3358
|
+
.seeds-stack-horizontal {
|
|
3359
|
+
flex-direction: row;
|
|
3360
|
+
align-items: center;
|
|
3361
|
+
}
|
|
3362
|
+
|
|
3363
|
+
/* vertical: align controls the cross axis (align-items) */
|
|
3364
|
+
.seeds-stack-vertical.seeds-stack-align-left {
|
|
3365
|
+
align-items: flex-start;
|
|
3366
|
+
}
|
|
3367
|
+
|
|
3368
|
+
.seeds-stack-vertical.seeds-stack-align-center {
|
|
3369
|
+
align-items: center;
|
|
3370
|
+
}
|
|
3371
|
+
|
|
3372
|
+
.seeds-stack-vertical.seeds-stack-align-right {
|
|
3373
|
+
align-items: flex-end;
|
|
3374
|
+
}
|
|
3375
|
+
|
|
3376
|
+
.seeds-stack-vertical.seeds-stack-align-stretch {
|
|
3377
|
+
align-items: stretch;
|
|
3378
|
+
}
|
|
3379
|
+
|
|
3380
|
+
/* horizontal: align-items stays center; align controls justify-content */
|
|
3381
|
+
.seeds-stack-horizontal.seeds-stack-align-center {
|
|
3382
|
+
justify-content: center;
|
|
3383
|
+
}
|
|
3384
|
+
|
|
3385
|
+
.seeds-stack-horizontal.seeds-stack-align-right {
|
|
3386
|
+
justify-content: flex-end;
|
|
3387
|
+
}
|
|
3388
|
+
|
|
3389
|
+
/* stretch + horizontal: stretch each child to fill (replicates flexBasis: 100%) */
|
|
3390
|
+
.seeds-stack-horizontal.seeds-stack-align-stretch > * {
|
|
3391
|
+
flex-basis: 100%;
|
|
3392
|
+
}
|
|
3393
|
+
|
|
3394
|
+
/* spacing via gap (replaces the per-child margins of the styled-components path) */
|
|
3395
|
+
.seeds-stack-space-0 {
|
|
3396
|
+
gap: var(--space-0);
|
|
3397
|
+
}
|
|
3398
|
+
|
|
3399
|
+
.seeds-stack-space-100 {
|
|
3400
|
+
gap: var(--space-100);
|
|
3401
|
+
}
|
|
3402
|
+
|
|
3403
|
+
.seeds-stack-space-200 {
|
|
3404
|
+
gap: var(--space-200);
|
|
3405
|
+
}
|
|
3406
|
+
|
|
3407
|
+
.seeds-stack-space-300 {
|
|
3408
|
+
gap: var(--space-300);
|
|
3409
|
+
}
|
|
3410
|
+
|
|
3411
|
+
.seeds-stack-space-350 {
|
|
3412
|
+
gap: var(--space-350);
|
|
3413
|
+
}
|
|
3414
|
+
|
|
3415
|
+
.seeds-stack-space-400 {
|
|
3416
|
+
gap: var(--space-400);
|
|
3417
|
+
}
|
|
3418
|
+
|
|
3419
|
+
.seeds-stack-space-450 {
|
|
3420
|
+
gap: var(--space-450);
|
|
3421
|
+
}
|
|
3422
|
+
|
|
3423
|
+
.seeds-stack-space-500 {
|
|
3424
|
+
gap: var(--space-500);
|
|
3425
|
+
}
|
|
3426
|
+
|
|
3427
|
+
.seeds-stack-space-600 {
|
|
3428
|
+
gap: var(--space-600);
|
|
3429
|
+
}
|
|
3430
|
+
}
|
|
3431
|
+
|
|
3432
|
+
/* --- seeds-react-switch --- */
|
|
3433
|
+
/**
|
|
3434
|
+
* Seeds Switch component classes
|
|
3435
|
+
* Use these instead of writing out individual Tailwind utility classes.
|
|
3436
|
+
*
|
|
3437
|
+
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
3438
|
+
* CSS variable definitions and dark mode support.
|
|
3439
|
+
*
|
|
3440
|
+
* Usage:
|
|
3441
|
+
* <button class="seeds-switch" role="switch" aria-checked="true"></button>
|
|
3442
|
+
* <button class="seeds-switch loading" role="switch" aria-checked="false"></button>
|
|
3443
|
+
*/
|
|
3444
|
+
|
|
3445
|
+
@layer components {
|
|
3446
|
+
.seeds-switch {
|
|
3447
|
+
position: relative;
|
|
3448
|
+
display: inline-flex;
|
|
3449
|
+
align-self: center;
|
|
3450
|
+
width: 40px;
|
|
3451
|
+
height: 24px;
|
|
3452
|
+
margin: 0;
|
|
3453
|
+
padding: var(--space-100) var(--space-200);
|
|
3454
|
+
vertical-align: middle;
|
|
3455
|
+
appearance: none;
|
|
3456
|
+
background-color: var(--color-form-bg-base);
|
|
3457
|
+
border-radius: 16px;
|
|
3458
|
+
outline: none;
|
|
3459
|
+
cursor: pointer;
|
|
3460
|
+
transition: background-color var(--duration-fast) var(--ease-ease_inout);
|
|
3461
|
+
border: 1px solid var(--color-form-border-base);
|
|
3462
|
+
white-space: nowrap;
|
|
3463
|
+
overflow: hidden;
|
|
3464
|
+
}
|
|
3465
|
+
|
|
3466
|
+
/* Mixin for styled focus ring — copied from button.css:34-39 */
|
|
3467
|
+
.seeds-switch:focus {
|
|
3468
|
+
outline: none;
|
|
3469
|
+
box-shadow:
|
|
3470
|
+
0 0 0 1px var(--color-button-primary-bg-base),
|
|
3471
|
+
0 0 0 4px color-mix(in srgb, var(--color-button-primary-bg-base) 30%, transparent);
|
|
3472
|
+
}
|
|
3473
|
+
|
|
3474
|
+
/* Base styles for circle element */
|
|
3475
|
+
.seeds-switch[aria-checked]::after {
|
|
3476
|
+
display: block;
|
|
3477
|
+
width: 16px;
|
|
3478
|
+
height: 16px;
|
|
3479
|
+
border-radius: 50%;
|
|
3480
|
+
content: "";
|
|
3481
|
+
transition: transform var(--duration-fast) var(--ease-ease_inout);
|
|
3482
|
+
}
|
|
3483
|
+
|
|
3484
|
+
.seeds-switch[aria-checked].loading {
|
|
3485
|
+
cursor: not-allowed;
|
|
3486
|
+
pointer-events: none;
|
|
3487
|
+
background-size: contain;
|
|
3488
|
+
background-color: var(--color-form-bg-base);
|
|
3489
|
+
}
|
|
3490
|
+
|
|
3491
|
+
.seeds-switch[aria-checked].loading::after {
|
|
3492
|
+
position: absolute;
|
|
3493
|
+
box-sizing: content-box;
|
|
3494
|
+
width: 8px;
|
|
3495
|
+
height: 8px;
|
|
3496
|
+
border-radius: var(--radius-pill);
|
|
3497
|
+
border: 3px dotted var(--color-icon-base);
|
|
3498
|
+
background-color: transparent;
|
|
3499
|
+
animation: seeds-switch-loading 2s linear infinite;
|
|
3500
|
+
}
|
|
3501
|
+
|
|
3502
|
+
/* Checked State */
|
|
3503
|
+
.seeds-switch[aria-checked="true"] {
|
|
3504
|
+
color: var(--color-text-body);
|
|
3505
|
+
text-align: left;
|
|
3506
|
+
border-color: var(--color-form-border-selected);
|
|
3507
|
+
background-color: var(--color-form-bg-selected);
|
|
3508
|
+
}
|
|
3509
|
+
|
|
3510
|
+
.seeds-switch[aria-checked="true"] .Icon {
|
|
3511
|
+
position: absolute;
|
|
3512
|
+
top: 50%;
|
|
3513
|
+
left: 4px;
|
|
3514
|
+
transform: translate(0, -50%);
|
|
3515
|
+
color: var(--color-icon-inverse);
|
|
3516
|
+
}
|
|
3517
|
+
|
|
3518
|
+
.seeds-switch[aria-checked="true"]::after {
|
|
3519
|
+
background-color: var(--color-icon-inverse);
|
|
3520
|
+
opacity: 1;
|
|
3521
|
+
transform: translate(100%, 6%);
|
|
3522
|
+
}
|
|
3523
|
+
|
|
3524
|
+
.seeds-switch[aria-checked="true"].loading::after {
|
|
3525
|
+
top: 4px;
|
|
3526
|
+
right: 5px;
|
|
3527
|
+
}
|
|
3528
|
+
|
|
3529
|
+
.seeds-switch[aria-checked="true"]:hover::after,
|
|
3530
|
+
.seeds-switch[aria-checked="true"]:focus::after {
|
|
3531
|
+
transform: translate(90%, 6%);
|
|
3532
|
+
}
|
|
3533
|
+
|
|
3534
|
+
/* Unchecked State */
|
|
3535
|
+
.seeds-switch[aria-checked="false"]::after {
|
|
3536
|
+
background-color: var(--color-icon-base);
|
|
3537
|
+
opacity: 0.64;
|
|
3538
|
+
transform: translate(0%, 6%);
|
|
3539
|
+
}
|
|
3540
|
+
|
|
3541
|
+
.seeds-switch[aria-checked="false"].loading::after {
|
|
3542
|
+
top: 4px;
|
|
3543
|
+
left: 5px;
|
|
3544
|
+
}
|
|
3545
|
+
|
|
3546
|
+
.seeds-switch[aria-checked="false"]:hover::after,
|
|
3547
|
+
.seeds-switch[aria-checked="false"]:focus::after {
|
|
3548
|
+
transform: translate(10%, 6%);
|
|
3549
|
+
}
|
|
3550
|
+
|
|
3551
|
+
/* Disabled State Styles */
|
|
3552
|
+
.seeds-switch:disabled {
|
|
3553
|
+
opacity: 0.4;
|
|
3554
|
+
pointer-events: none;
|
|
3555
|
+
cursor: not-allowed;
|
|
3556
|
+
}
|
|
3557
|
+
|
|
3558
|
+
.seeds-switch:disabled[aria-checked="true"]:hover,
|
|
3559
|
+
.seeds-switch:disabled[aria-checked="true"]:focus {
|
|
3560
|
+
background-color: var(--color-container-bg-selected);
|
|
3561
|
+
}
|
|
3562
|
+
|
|
3563
|
+
@keyframes seeds-switch-loading {
|
|
3564
|
+
0% {
|
|
3565
|
+
transform: rotate(0deg);
|
|
3566
|
+
}
|
|
3567
|
+
100% {
|
|
3568
|
+
transform: rotate(360deg);
|
|
3569
|
+
}
|
|
3570
|
+
}
|
|
3571
|
+
}
|
|
3572
|
+
|
|
3573
|
+
/* --- seeds-react-tabs --- */
|
|
3574
|
+
/**
|
|
3575
|
+
* Seeds Tabs component classes
|
|
3576
|
+
* CSS-class implementation of the tab list container and tab buttons, mirroring
|
|
3577
|
+
* the styled-components version in styles.ts. Used by the Tailwind path of the
|
|
3578
|
+
* hybrid Tabs component.
|
|
3579
|
+
*
|
|
3580
|
+
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
3581
|
+
* CSS variable definitions and dark mode support. Tab buttons render on top of
|
|
3582
|
+
* the .seeds-btn / .seeds-btn-unstyled classes from button.css — both files
|
|
3583
|
+
* are in `@layer components`, so source order (tabs imported after button)
|
|
3584
|
+
* determines which overrides win.
|
|
3585
|
+
*
|
|
3586
|
+
* All rules are wrapped in `@layer components` so consumer Tailwind utilities
|
|
3587
|
+
* (which are unlayered) win the cascade over these component styles. Without the
|
|
3588
|
+
* layer, equal-specificity utilities like `mx-200`, `p-300`, or `inline-flex`
|
|
3589
|
+
* would be decided by source order and could silently lose to the component CSS.
|
|
3590
|
+
*/
|
|
3591
|
+
|
|
3592
|
+
@layer components {
|
|
3593
|
+
.seeds-tab-container {
|
|
3594
|
+
display: inline-flex;
|
|
3595
|
+
margin: 0;
|
|
3596
|
+
padding: 0;
|
|
3597
|
+
min-width: 0;
|
|
3598
|
+
max-width: 100%;
|
|
3599
|
+
min-height: min-content;
|
|
3600
|
+
flex-shrink: 0;
|
|
3601
|
+
overflow-x: auto;
|
|
3602
|
+
overflow-y: hidden;
|
|
3603
|
+
scrollbar-width: none;
|
|
3604
|
+
scroll-padding-inline: 48px;
|
|
3605
|
+
scroll-behavior: smooth;
|
|
3606
|
+
border-bottom: 1px solid var(--color-container-border-base);
|
|
3607
|
+
}
|
|
3608
|
+
|
|
3609
|
+
.seeds-tab-container-fullwidth {
|
|
3610
|
+
display: flex;
|
|
3611
|
+
}
|
|
3612
|
+
|
|
3613
|
+
.seeds-tab-container::-webkit-scrollbar {
|
|
3614
|
+
display: none;
|
|
3615
|
+
}
|
|
3616
|
+
|
|
3617
|
+
.seeds-tab-container[data-fade-right] {
|
|
3618
|
+
-webkit-mask-image: linear-gradient(
|
|
3619
|
+
to right,
|
|
3620
|
+
black 0,
|
|
3621
|
+
black calc(100% - 48px),
|
|
3622
|
+
transparent
|
|
3623
|
+
);
|
|
3624
|
+
mask-image: linear-gradient(
|
|
3625
|
+
to right,
|
|
3626
|
+
black 0,
|
|
3627
|
+
black calc(100% - 48px),
|
|
3628
|
+
transparent
|
|
3629
|
+
);
|
|
3630
|
+
}
|
|
3631
|
+
|
|
3632
|
+
.seeds-tab-container[data-fade-left] {
|
|
3633
|
+
-webkit-mask-image: linear-gradient(
|
|
3634
|
+
to right,
|
|
3635
|
+
transparent,
|
|
3636
|
+
black 48px,
|
|
3637
|
+
black 100%
|
|
3638
|
+
);
|
|
3639
|
+
mask-image: linear-gradient(to right, transparent, black 48px, black 100%);
|
|
3640
|
+
}
|
|
3641
|
+
|
|
3642
|
+
.seeds-tab-container[data-fade-left][data-fade-right] {
|
|
3643
|
+
-webkit-mask-image: linear-gradient(
|
|
3644
|
+
to right,
|
|
3645
|
+
transparent,
|
|
3646
|
+
black 48px,
|
|
3647
|
+
black calc(100% - 48px),
|
|
3648
|
+
transparent
|
|
3649
|
+
);
|
|
3650
|
+
mask-image: linear-gradient(
|
|
3651
|
+
to right,
|
|
3652
|
+
transparent,
|
|
3653
|
+
black 48px,
|
|
3654
|
+
black calc(100% - 48px),
|
|
3655
|
+
transparent
|
|
3656
|
+
);
|
|
3657
|
+
}
|
|
3658
|
+
|
|
3659
|
+
.seeds-tab-button {
|
|
3660
|
+
margin-bottom: -1px;
|
|
3661
|
+
padding: var(--space-350) var(--space-350);
|
|
3662
|
+
color: var(--color-text-headline);
|
|
3663
|
+
border-radius: 0;
|
|
3664
|
+
border-width: 0 0 3px;
|
|
3665
|
+
/* Reserve the 3px indicator while keeping it invisible until selected, so
|
|
3666
|
+
selecting a tab causes no layout shift (matches the styled-components path,
|
|
3667
|
+
which inherits transparent borders from .seeds-btn-unstyled). */
|
|
3668
|
+
border-color: transparent;
|
|
3669
|
+
width: 100%;
|
|
3670
|
+
}
|
|
3671
|
+
|
|
3672
|
+
.seeds-tab-button-fullwidth {
|
|
3673
|
+
flex-grow: 1;
|
|
3674
|
+
padding-left: 0;
|
|
3675
|
+
padding-right: 0;
|
|
3676
|
+
}
|
|
3677
|
+
|
|
3678
|
+
.seeds-tab-button-selected {
|
|
3679
|
+
color: var(--color-link-base);
|
|
3680
|
+
border-color: transparent transparent var(--color-button-primary-bg-base);
|
|
3681
|
+
}
|
|
3682
|
+
|
|
3683
|
+
.seeds-tab-button-selected:hover {
|
|
3684
|
+
color: var(--color-link-hover);
|
|
3685
|
+
}
|
|
3686
|
+
|
|
3687
|
+
.seeds-tab-button:focus,
|
|
3688
|
+
.seeds-tab-button:active {
|
|
3689
|
+
box-shadow: none;
|
|
3690
|
+
}
|
|
3691
|
+
|
|
3692
|
+
.seeds-tab-button:active {
|
|
3693
|
+
transform: none;
|
|
3694
|
+
}
|
|
3695
|
+
}
|
|
3696
|
+
|
|
2962
3697
|
/* --- seeds-react-text --- */
|
|
2963
3698
|
/**
|
|
2964
3699
|
* Seeds Text component classes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sproutsocial/racine",
|
|
3
|
-
"version": "31.7.
|
|
3
|
+
"version": "31.7.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18"
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"@size-limit/file": "^11.1.6",
|
|
76
|
-
"@sproutsocial/seeds-react-accordion": "^0.4.
|
|
76
|
+
"@sproutsocial/seeds-react-accordion": "^0.4.52",
|
|
77
77
|
"@sproutsocial/seeds-react-avatar": "^1.1.20",
|
|
78
78
|
"@sproutsocial/seeds-react-badge": "^2.0.37",
|
|
79
79
|
"@sproutsocial/seeds-react-banner": "^1.1.25",
|
|
@@ -94,14 +94,14 @@
|
|
|
94
94
|
"@sproutsocial/seeds-react-drawer": "^2.2.11",
|
|
95
95
|
"@sproutsocial/seeds-react-duration": "^1.0.27",
|
|
96
96
|
"@sproutsocial/seeds-react-empty-state": "^1.0.26",
|
|
97
|
-
"@sproutsocial/seeds-react-fieldset": "^1.0.
|
|
98
|
-
"@sproutsocial/seeds-react-form-field": "^1.1.
|
|
97
|
+
"@sproutsocial/seeds-react-fieldset": "^1.0.27",
|
|
98
|
+
"@sproutsocial/seeds-react-form-field": "^1.1.21",
|
|
99
99
|
"@sproutsocial/seeds-react-grid": "^0.2.8",
|
|
100
100
|
"@sproutsocial/seeds-react-hooks": "^3.2.4",
|
|
101
101
|
"@sproutsocial/seeds-react-icon": "^2.4.3",
|
|
102
102
|
"@sproutsocial/seeds-react-image": "^1.0.24",
|
|
103
103
|
"@sproutsocial/seeds-react-indicator": "^1.0.43",
|
|
104
|
-
"@sproutsocial/seeds-react-input": "^1.5.
|
|
104
|
+
"@sproutsocial/seeds-react-input": "^1.5.31",
|
|
105
105
|
"@sproutsocial/seeds-react-keyboard-key": "^1.0.26",
|
|
106
106
|
"@sproutsocial/seeds-react-label": "^1.0.26",
|
|
107
107
|
"@sproutsocial/seeds-react-link": "^1.1.16",
|
|
@@ -120,22 +120,22 @@
|
|
|
120
120
|
"@sproutsocial/seeds-react-popout": "^2.5.12",
|
|
121
121
|
"@sproutsocial/seeds-react-portal": "^1.2.0",
|
|
122
122
|
"@sproutsocial/seeds-react-progress": "^0.2.11",
|
|
123
|
-
"@sproutsocial/seeds-react-radio": "^1.3.
|
|
123
|
+
"@sproutsocial/seeds-react-radio": "^1.3.27",
|
|
124
124
|
"@sproutsocial/seeds-react-rating": "^1.0.44",
|
|
125
125
|
"@sproutsocial/seeds-react-segmented-control": "^1.1.25",
|
|
126
126
|
"@sproutsocial/seeds-react-spot-illustration": "^1.2.4",
|
|
127
127
|
"@sproutsocial/seeds-react-select": "^1.1.44",
|
|
128
128
|
"@sproutsocial/seeds-react-skeleton": "^1.1.24",
|
|
129
|
-
"@sproutsocial/seeds-react-stack": "^1.0.
|
|
130
|
-
"@sproutsocial/seeds-react-switch": "^1.2.
|
|
129
|
+
"@sproutsocial/seeds-react-stack": "^1.0.24",
|
|
130
|
+
"@sproutsocial/seeds-react-switch": "^1.2.43",
|
|
131
131
|
"@sproutsocial/seeds-react-system-props": "^3.1.2",
|
|
132
132
|
"@sproutsocial/seeds-react-table": "^1.0.45",
|
|
133
|
-
"@sproutsocial/seeds-react-tabs": "^1.4.
|
|
133
|
+
"@sproutsocial/seeds-react-tabs": "^1.4.15",
|
|
134
134
|
"@sproutsocial/seeds-react-text": "^1.5.1",
|
|
135
135
|
"@sproutsocial/seeds-react-textarea": "^1.0.25",
|
|
136
136
|
"@sproutsocial/seeds-react-toast": "^1.0.45",
|
|
137
137
|
"@sproutsocial/seeds-react-token": "^1.5.10",
|
|
138
|
-
"@sproutsocial/seeds-react-token-input": "^1.4.
|
|
138
|
+
"@sproutsocial/seeds-react-token-input": "^1.4.53",
|
|
139
139
|
"@sproutsocial/seeds-react-tooltip": "^1.1.30",
|
|
140
140
|
"@sproutsocial/seeds-react-theme": "^4.2.0",
|
|
141
141
|
"@sproutsocial/seeds-react-theme-provider": "^1.1.22",
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
"@sproutsocial/seeds-motion": "^1.8.2",
|
|
164
164
|
"@sproutsocial/seeds-networkcolor": "^2.22.0",
|
|
165
165
|
"@sproutsocial/seeds-partner-logos": "^2.4.1",
|
|
166
|
-
"@sproutsocial/seeds-react-menu": "^1.16.
|
|
166
|
+
"@sproutsocial/seeds-react-menu": "^1.16.5",
|
|
167
167
|
"@sproutsocial/seeds-react-testing-library": "*",
|
|
168
168
|
"@sproutsocial/seeds-space": "^0.8.1",
|
|
169
169
|
"@sproutsocial/seeds-testing": "*",
|