@sproutsocial/racine 31.7.5 → 31.7.7

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # Change Log
2
2
 
3
+ ## 31.7.7
4
+
5
+ ### Patch Changes
6
+
7
+ - @sproutsocial/seeds-react-accordion@0.4.53
8
+
9
+ ## 31.7.6
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [a217f73]
14
+ - Updated dependencies [9c3cfaf]
15
+ - @sproutsocial/seeds-react-stack@1.0.24
16
+ - @sproutsocial/seeds-react-tabs@1.4.15
17
+
3
18
  ## 31.7.5
4
19
 
5
20
  ### Patch Changes
@@ -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
- display: inline-block;
272
- box-sizing: border-box;
273
- text-align: center;
274
- font-family: var(--font-family);
275
- border-width: 1px;
276
- border-style: solid;
277
- border-radius: var(--radius-500);
278
- cursor: pointer;
279
- text-decoration: none;
280
- line-height: 1rem;
281
- white-space: nowrap;
282
- font-weight: var(--font-weight-bold);
283
- transition-property: all;
284
- transition-duration: var(--duration-fast);
285
- margin: 0;
286
- padding: var(--space-300);
287
- font-size: var(--font-size-200);
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
- outline: none;
292
- box-shadow:
293
- 0 0 0 1px var(--color-button-primary-bg-base),
294
- 0 0 0 4px color-mix(in srgb, var(--color-button-primary-bg-base) 30%, transparent);
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
- padding: var(--space-300);
303
- font-size: var(--font-size-200);
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
- padding: var(--space-350);
308
- font-size: var(--font-size-300);
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
- background-color: var(--color-button-primary-bg-base);
313
- color: var(--color-button-primary-text-base);
314
- border-color: var(--color-button-primary-border-base);
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
- background-color: var(--color-button-primary-bg-hover);
319
- color: var(--color-button-primary-text-hover);
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
- background-color: var(--color-button-primary-bg-active);
324
- }
328
+ .seeds-btn-primary:active {
329
+ background-color: var(--color-button-primary-bg-active);
330
+ }
325
331
 
326
- .seeds-btn-secondary {
327
- background-color: var(--color-button-secondary-bg-base);
328
- color: var(--color-button-secondary-text-base);
329
- border-color: var(--color-button-secondary-border-base);
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
- background-color: var(--color-button-secondary-bg-hover);
334
- color: var(--color-button-secondary-text-hover);
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
- background-color: var(--color-button-secondary-bg-active);
339
- }
343
+ .seeds-btn-secondary:active {
344
+ background-color: var(--color-button-secondary-bg-active);
345
+ }
340
346
 
341
- .seeds-btn-destructive {
342
- background-color: var(--color-button-destructive-bg-base);
343
- color: var(--color-button-destructive-text-base);
344
- border-color: var(--color-button-destructive-border-base);
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
- background-color: var(--color-button-destructive-bg-hover);
349
- color: var(--color-button-destructive-text-hover);
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
- background-color: var(--color-button-destructive-bg-active);
354
- }
358
+ .seeds-btn-destructive:active {
359
+ background-color: var(--color-button-destructive-bg-active);
360
+ }
355
361
 
356
- .seeds-btn-placeholder {
357
- background-color: var(--color-button-placeholder-bg-base);
358
- color: var(--color-button-placeholder-text-base);
359
- border-color: var(--color-button-placeholder-border-base);
360
- border-style: dashed;
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
- background-color: var(--color-button-placeholder-bg-hover);
365
- color: var(--color-button-placeholder-text-hover);
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
- background-color: var(--color-button-unstyled-bg-base);
370
- color: var(--color-button-unstyled-text-base);
371
- border-color: transparent;
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
- color: var(--color-button-unstyled-text-hover);
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
- background-color: transparent;
382
- background-image: var(--color-button-ai-primary-bg-base);
383
- /* Cover the full border box (incl. the base 1px transparent border) and don't
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
- background-origin: border-box;
386
- background-repeat: no-repeat;
387
- color: var(--color-button-ai-primary-text-base);
388
- border-color: transparent;
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
- /* White base shows through the 20% gradient tint to produce the soft fill. */
393
- background-color: #fff;
394
- background-image: var(--color-button-ai-secondary-bg-base);
395
- background-origin: border-box;
396
- background-repeat: no-repeat;
397
- color: var(--color-button-ai-secondary-text-base);
398
- border-color: transparent;
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
- position: relative;
403
- background-color: transparent;
404
- color: var(--color-button-ai-outline-text-base);
405
- border-color: transparent;
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
- content: "";
412
- position: absolute;
413
- inset: 0;
414
- border-radius: inherit;
415
- padding: 1px;
416
- background: var(--color-gradient-ai);
417
- -webkit-mask:
418
- linear-gradient(#fff 0 0) content-box,
419
- linear-gradient(#fff 0 0);
420
- -webkit-mask-composite: xor;
421
- mask-composite: exclude;
422
- pointer-events: none;
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
- filter: brightness(0.96);
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
- color: var(--color-button-primary-text-hover);
435
- background-color: var(--color-button-primary-bg-active);
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
- color: var(--color-button-secondary-text-hover);
440
- background-color: var(--color-button-secondary-bg-active);
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
- color: var(--color-button-destructive-text-hover);
445
- background-color: var(--color-button-destructive-bg-active);
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
- color: var(--color-button-placeholder-text-hover);
450
- background-color: var(--color-button-placeholder-bg-active);
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
- color: var(--color-button-unstyled-text-hover);
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
- opacity: 0.5;
460
- cursor: not-allowed;
461
- pointer-events: none;
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
- display: inline-flex;
466
- align-items: center;
467
- justify-content: center;
468
- background-color: transparent;
469
- border: none;
470
- border-radius: var(--radius-pill);
471
- min-width: var(--space-600);
472
- min-height: var(--space-600);
473
- padding: var(--space-300);
474
- color: var(--color-button-pill-text-base);
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
- background-color: transparent;
480
- color: var(--color-button-pill-text-hover);
481
- box-shadow: inset 0px 0px 0px 1px var(--color-button-pill-border-hover);
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
- } /* end @layer components */
497
+ /* end @layer components */
490
498
  /* --- seeds-react-collapsible --- */
491
499
  /**
492
500
  * Seeds Collapsible component classes
@@ -3320,6 +3328,107 @@
3320
3328
  }
3321
3329
  }
3322
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
+
3323
3432
  /* --- seeds-react-switch --- */
3324
3433
  /**
3325
3434
  * Seeds Switch component classes
@@ -3461,6 +3570,130 @@
3461
3570
  }
3462
3571
  }
3463
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
+
3464
3697
  /* --- seeds-react-text --- */
3465
3698
  /**
3466
3699
  * Seeds Text component classes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sproutsocial/racine",
3
- "version": "31.7.5",
3
+ "version": "31.7.7",
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.52",
76
+ "@sproutsocial/seeds-react-accordion": "^0.4.53",
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",
@@ -126,11 +126,11 @@
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.23",
129
+ "@sproutsocial/seeds-react-stack": "^1.0.24",
130
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.14",
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",
@@ -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.5",
166
+ "@sproutsocial/seeds-react-menu": "^1.16.6",
167
167
  "@sproutsocial/seeds-react-testing-library": "*",
168
168
  "@sproutsocial/seeds-space": "^0.8.1",
169
169
  "@sproutsocial/seeds-testing": "*",