@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 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
@@ -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
@@ -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-link --- */
1081
+ /* --- seeds-react-input --- */
971
1082
  /**
972
- * Seeds Link component classes
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
- * Rules live in the Tailwind `components` layer so consumer utility classes
979
- * (e.g. mx-200, p-300, inline-flex) win the cascade over these defaults.
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-link {
984
- border: 0;
985
- appearance: none;
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-link-underline {
994
- text-decoration: underline;
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
- .seeds-link:hover {
998
- color: var(--color-link-hover);
999
- text-decoration: underline;
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-link:active {
1003
- color: var(--color-link-hover);
1129
+ .seeds-input input::-webkit-search-cancel-button {
1130
+ appearance: none;
1004
1131
  }
1005
1132
 
1006
- .seeds-link:focus {
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
- .seeds-link:focus:active {
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-link-disabled {
1018
- opacity: 0.4;
1019
- cursor: not-allowed;
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
- /* When rendered as a button (no href) remove the native button background */
1024
- .seeds-link-no-href {
1025
- background: none;
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.4",
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.51",
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.26",
98
- "@sproutsocial/seeds-react-form-field": "^1.1.20",
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.30",
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.26",
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.23",
130
- "@sproutsocial/seeds-react-switch": "^1.2.42",
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.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",
137
137
  "@sproutsocial/seeds-react-token": "^1.5.10",
138
- "@sproutsocial/seeds-react-token-input": "^1.4.52",
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.4",
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": "*",