@sproutsocial/racine 31.7.5 → 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 +9 -0
- package/dist/components.css +415 -182
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
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
|
|
@@ -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.
|
|
3
|
+
"version": "31.7.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18"
|
|
@@ -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.
|
|
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.
|
|
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",
|