@sproutsocial/racine 31.7.13 → 31.7.15

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,89 @@
1
1
  # Change Log
2
2
 
3
+ ## 31.7.15
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [a0b98f1]
8
+ - Updated dependencies [ea120a6]
9
+ - Updated dependencies [690479a]
10
+ - Updated dependencies [c36361c]
11
+ - Updated dependencies [a635951]
12
+ - @sproutsocial/seeds-react-character-counter@1.0.8
13
+ - @sproutsocial/seeds-react-grid@0.2.13
14
+ - @sproutsocial/seeds-react-duration@1.0.32
15
+ - @sproutsocial/seeds-react-image@1.0.29
16
+ - @sproutsocial/seeds-react-empty-state@1.0.31
17
+ - @sproutsocial/seeds-react-avatar@1.1.25
18
+ - @sproutsocial/seeds-react-message@1.0.59
19
+
20
+ ## 31.7.14
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies [ef91a0d]
25
+ - Updated dependencies [5ba86b3]
26
+ - Updated dependencies [da85fb8]
27
+ - @sproutsocial/seeds-react-avatar@1.1.24
28
+ - @sproutsocial/seeds-react-system-props@3.1.4
29
+ - @sproutsocial/seeds-react-loader@1.0.30
30
+ - @sproutsocial/seeds-react-pagination@0.1.29
31
+ - @sproutsocial/seeds-react-message@1.0.58
32
+ - @sproutsocial/seeds-react-accordion@0.4.59
33
+ - @sproutsocial/seeds-react-badge@2.0.42
34
+ - @sproutsocial/seeds-react-banner@1.1.31
35
+ - @sproutsocial/seeds-react-box@1.1.28
36
+ - @sproutsocial/seeds-react-breadcrumb@1.1.14
37
+ - @sproutsocial/seeds-react-button@2.3.4
38
+ - @sproutsocial/seeds-react-card@1.1.50
39
+ - @sproutsocial/seeds-react-character-counter@1.0.7
40
+ - @sproutsocial/seeds-react-chart-legend@1.0.49
41
+ - @sproutsocial/seeds-react-chat-bubble@0.2.5
42
+ - @sproutsocial/seeds-react-checkbox@1.3.50
43
+ - @sproutsocial/seeds-react-container@0.3.22
44
+ - @sproutsocial/seeds-react-content-block@0.5.24
45
+ - @sproutsocial/seeds-react-data-table@2.6.32
46
+ - @sproutsocial/seeds-react-datepicker@1.0.47
47
+ - @sproutsocial/seeds-react-drawer@2.2.17
48
+ - @sproutsocial/seeds-react-duration@1.0.31
49
+ - @sproutsocial/seeds-react-empty-state@1.0.30
50
+ - @sproutsocial/seeds-react-fieldset@1.0.31
51
+ - @sproutsocial/seeds-react-form-field@1.1.25
52
+ - @sproutsocial/seeds-react-grid@0.2.12
53
+ - @sproutsocial/seeds-react-icon@2.4.8
54
+ - @sproutsocial/seeds-react-image@1.0.28
55
+ - @sproutsocial/seeds-react-indicator@1.0.48
56
+ - @sproutsocial/seeds-react-input@1.5.37
57
+ - @sproutsocial/seeds-react-keyboard-key@1.0.30
58
+ - @sproutsocial/seeds-react-label@1.0.30
59
+ - @sproutsocial/seeds-react-link@1.1.20
60
+ - @sproutsocial/seeds-react-list@0.3.36
61
+ - @sproutsocial/seeds-react-loader-button@1.0.55
62
+ - @sproutsocial/seeds-react-modal@2.5.32
63
+ - @sproutsocial/seeds-react-numeral@1.0.56
64
+ - @sproutsocial/seeds-react-panel@1.0.11
65
+ - @sproutsocial/seeds-react-partner-logo@1.7.20
66
+ - @sproutsocial/seeds-react-peek-in@0.3.10
67
+ - @sproutsocial/seeds-react-popout@2.5.18
68
+ - @sproutsocial/seeds-react-progress@0.2.15
69
+ - @sproutsocial/seeds-react-radio@1.3.31
70
+ - @sproutsocial/seeds-react-rating@1.0.49
71
+ - @sproutsocial/seeds-react-segmented-control@1.1.31
72
+ - @sproutsocial/seeds-react-select@1.1.49
73
+ - @sproutsocial/seeds-react-skeleton@1.1.28
74
+ - @sproutsocial/seeds-react-stack@1.0.28
75
+ - @sproutsocial/seeds-react-switch@1.2.48
76
+ - @sproutsocial/seeds-react-table@1.0.50
77
+ - @sproutsocial/seeds-react-tabs@1.4.21
78
+ - @sproutsocial/seeds-react-text@1.5.3
79
+ - @sproutsocial/seeds-react-textarea@1.0.29
80
+ - @sproutsocial/seeds-react-toast@1.0.50
81
+ - @sproutsocial/seeds-react-token@1.5.15
82
+ - @sproutsocial/seeds-react-token-input@1.4.59
83
+ - @sproutsocial/seeds-react-tooltip@1.1.35
84
+ - @sproutsocial/seeds-react-visually-hidden@1.0.29
85
+ - @sproutsocial/seeds-react-content-header@0.2.28
86
+
3
87
  ## 31.7.13
4
88
 
5
89
  ### Patch Changes
@@ -172,6 +172,122 @@
172
172
  }
173
173
  }
174
174
 
175
+ /* --- seeds-react-avatar --- */
176
+ /**
177
+ * Seeds Avatar component classes
178
+ * Use these instead of writing out individual Tailwind utility classes.
179
+ *
180
+ * Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
181
+ * CSS variable definitions and dark mode support.
182
+ *
183
+ * Usage:
184
+ * <div class="seeds-avatar seeds-avatar-circle seeds-avatar-neutral" style="--seeds-avatar-size: 40px">JD</div>
185
+ *
186
+ * The avatar size is driven by the --seeds-avatar-size custom property set
187
+ * inline by the component from its `size` prop.
188
+ *
189
+ * Rules live in `@layer components` so that consumer Tailwind utilities
190
+ * (e.g. `mx-200`, `p-300`, `inline-flex`) win in the cascade and can override
191
+ * these component styles, rather than tying/beating them on specificity.
192
+ */
193
+
194
+ @layer components {
195
+ .seeds-avatar {
196
+ box-sizing: border-box;
197
+ overflow: hidden;
198
+ position: relative;
199
+ display: flex;
200
+ flex-shrink: 0;
201
+ justify-content: center;
202
+ align-items: center;
203
+ width: var(--seeds-avatar-size);
204
+ height: var(--seeds-avatar-size);
205
+ background: none;
206
+ border: none;
207
+ }
208
+
209
+ .seeds-avatar-circle {
210
+ border-radius: 50%;
211
+ }
212
+
213
+ .seeds-avatar-leaf {
214
+ border-radius: 40% 0 40% 0;
215
+ }
216
+
217
+ /* Per-type text color, inherited by the initials Text (Text sets no default color). */
218
+ .seeds-avatar-neutral {
219
+ color: var(--color-text-decorative-neutral);
220
+ }
221
+
222
+ .seeds-avatar-purple {
223
+ color: var(--color-text-decorative-purple);
224
+ }
225
+
226
+ .seeds-avatar-green {
227
+ color: var(--color-text-decorative-green);
228
+ }
229
+
230
+ .seeds-avatar-blue {
231
+ color: var(--color-text-decorative-blue);
232
+ }
233
+
234
+ .seeds-avatar-yellow {
235
+ color: var(--color-text-decorative-yellow);
236
+ }
237
+
238
+ .seeds-avatar-red {
239
+ color: var(--color-text-decorative-red);
240
+ }
241
+
242
+ .seeds-avatar-orange {
243
+ color: var(--color-text-decorative-orange);
244
+ }
245
+
246
+ /*
247
+ * Fallback (initials shown): 1px border + decorative background.
248
+ * Type-specific bg/border-color are scoped to .seeds-avatar-fallback so the
249
+ * image variant keeps background:none / border:none.
250
+ */
251
+ .seeds-avatar-fallback {
252
+ border: 1px solid;
253
+ }
254
+
255
+ .seeds-avatar-fallback.seeds-avatar-neutral {
256
+ background: var(--color-container-bg-decorative-neutral);
257
+ border-color: var(--color-container-border-decorative-neutral);
258
+ }
259
+
260
+ .seeds-avatar-fallback.seeds-avatar-purple {
261
+ background: var(--color-container-bg-decorative-purple);
262
+ border-color: var(--color-container-border-decorative-purple);
263
+ }
264
+
265
+ .seeds-avatar-fallback.seeds-avatar-green {
266
+ background: var(--color-container-bg-decorative-green);
267
+ border-color: var(--color-container-border-decorative-green);
268
+ }
269
+
270
+ .seeds-avatar-fallback.seeds-avatar-blue {
271
+ background: var(--color-container-bg-decorative-blue);
272
+ border-color: var(--color-container-border-decorative-blue);
273
+ }
274
+
275
+ .seeds-avatar-fallback.seeds-avatar-yellow {
276
+ background: var(--color-container-bg-decorative-yellow);
277
+ border-color: var(--color-container-border-decorative-yellow);
278
+ }
279
+
280
+ .seeds-avatar-fallback.seeds-avatar-red {
281
+ background: var(--color-container-bg-decorative-red);
282
+ border-color: var(--color-container-border-decorative-red);
283
+ }
284
+
285
+ .seeds-avatar-fallback.seeds-avatar-orange {
286
+ background: var(--color-container-bg-decorative-orange);
287
+ border-color: var(--color-container-border-decorative-orange);
288
+ }
289
+ }
290
+
175
291
  /* --- seeds-react-badge --- */
176
292
  /**
177
293
  * Seeds Badge component classes
@@ -635,6 +751,41 @@
635
751
  }
636
752
 
637
753
  /* end @layer components */
754
+ /* --- seeds-react-character-counter --- */
755
+ /**
756
+ * Seeds CharacterCounter component classes
757
+ * Use these instead of writing out individual Tailwind utility classes.
758
+ *
759
+ * Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
760
+ * CSS variable definitions and dark mode support.
761
+ *
762
+ * Usage:
763
+ * <div class="seeds-character-counter" role="status">5</div>
764
+ *
765
+ * Rules live in `@layer components` so that consumer Tailwind utilities
766
+ * (e.g. `mx-200`, `p-300`) win in the cascade and can override these component
767
+ * styles, rather than tying/beating them on specificity.
768
+ */
769
+
770
+ @layer components {
771
+ .seeds-character-counter {
772
+ font-family: var(--font-family);
773
+ font-size: var(--font-size-200);
774
+ line-height: 1;
775
+ font-weight: var(--font-weight-semibold);
776
+ font-variant-numeric: tabular-nums;
777
+ color: var(--color-text-subtext);
778
+ }
779
+
780
+ .seeds-character-counter-mini {
781
+ font-size: var(--font-size-100);
782
+ }
783
+
784
+ .seeds-character-counter-overlimit {
785
+ color: var(--color-text-error);
786
+ }
787
+ }
788
+
638
789
  /* --- seeds-react-chat-bubble --- */
639
790
  /**
640
791
  * Seeds ChatBubble component classes
@@ -1159,6 +1310,95 @@
1159
1310
  }
1160
1311
  }
1161
1312
 
1313
+ /* --- seeds-react-duration --- */
1314
+ /**
1315
+ * Seeds Duration component classes
1316
+ * Use these instead of writing out individual Tailwind utility classes.
1317
+ *
1318
+ * Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
1319
+ * CSS variable definitions and dark mode support (consistent with other Seeds
1320
+ * components). font-variant-numeric has no design token, so this rule uses none.
1321
+ *
1322
+ * Usage:
1323
+ * <span class="seeds-duration">1m 30s</span>
1324
+ */
1325
+
1326
+ @layer components {
1327
+ .seeds-duration {
1328
+ font-variant-numeric: tabular-nums;
1329
+ }
1330
+ }
1331
+
1332
+ /* --- seeds-react-empty-state --- */
1333
+ /**
1334
+ * Seeds EmptyState component classes
1335
+ * Use these instead of writing out individual Tailwind utility classes.
1336
+ *
1337
+ * Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
1338
+ * CSS variable definitions and dark mode support.
1339
+ *
1340
+ * Usage:
1341
+ * <div class="seeds-empty-state">...</div>
1342
+ *
1343
+ * Rules live in @layer components so that consumer Tailwind utilities
1344
+ * (e.g. mx-200, p-300) win in the cascade and can override these component
1345
+ * styles, rather than tying/beating them on specificity.
1346
+ */
1347
+
1348
+ @layer components {
1349
+ .seeds-empty-state {
1350
+ max-width: 400px;
1351
+ margin-inline: auto;
1352
+ }
1353
+
1354
+ .seeds-empty-state-media {
1355
+ display: flex;
1356
+ flex-direction: column;
1357
+ justify-content: center;
1358
+ margin-bottom: var(--space-450);
1359
+ }
1360
+
1361
+ .seeds-empty-state-content {
1362
+ text-align: center;
1363
+ }
1364
+
1365
+ .seeds-empty-state-headline {
1366
+ margin: 0;
1367
+ padding-left: 0;
1368
+ padding-right: 0;
1369
+ font-family: var(--font-family);
1370
+ color: var(--color-text-headline);
1371
+ font-weight: var(--font-weight-semibold);
1372
+ font-size: var(--font-size-400);
1373
+ line-height: var(--line-height-400);
1374
+ }
1375
+
1376
+ .seeds-empty-state-subtext {
1377
+ margin: 0;
1378
+ margin-top: var(--space-400);
1379
+ padding-left: 0;
1380
+ padding-right: 0;
1381
+ font-family: var(--font-family);
1382
+ color: var(--color-text-subtext);
1383
+ font-weight: var(--font-weight-normal);
1384
+ font-size: var(--font-size-200);
1385
+ line-height: var(--line-height-200);
1386
+ }
1387
+
1388
+ .seeds-empty-state-actions {
1389
+ margin-top: var(--space-450);
1390
+ }
1391
+
1392
+ /* -empty MUST follow the base rule: equal specificity, source order wins */
1393
+ .seeds-empty-state-actions-empty {
1394
+ margin-top: 0;
1395
+ }
1396
+
1397
+ .seeds-empty-state-secondary-action {
1398
+ margin-top: var(--space-400);
1399
+ }
1400
+ }
1401
+
1162
1402
  /* --- seeds-react-fieldset --- */
1163
1403
  /**
1164
1404
  * Seeds Fieldset component classes
@@ -1262,6 +1502,95 @@
1262
1502
  }
1263
1503
  }
1264
1504
 
1505
+ /* --- seeds-react-grid --- */
1506
+ /**
1507
+ * Seeds Grid component classes.
1508
+ *
1509
+ * Scalar column/gap values are applied inline by GridTailwind (jsdom-safe and
1510
+ * they win over these rules). These rules provide sane defaults and drive the
1511
+ * responsive cases: GridTailwind sets --sg-* custom properties per breakpoint
1512
+ * and the media queries below promote them, resolving the sm -> md -> lg -> xl
1513
+ * cascade. Breakpoints match @sproutsocial/seeds-react-theme
1514
+ * (sm 640 / md 768 / lg 1024 / xl 1280).
1515
+ *
1516
+ * All rules are wrapped in `@layer components` so consumer Tailwind utilities
1517
+ * (unlayered) win the cascade, matching button.css.
1518
+ */
1519
+
1520
+ @layer components {
1521
+ .seeds-grid {
1522
+ display: grid;
1523
+ grid-template-columns: var(--sg-cols, repeat(1, 1fr));
1524
+ row-gap: var(--sg-row-gap, 0);
1525
+ column-gap: var(--sg-col-gap, 0);
1526
+ }
1527
+
1528
+ @media (min-width: 640px) {
1529
+ .seeds-grid {
1530
+ grid-template-columns: var(--sg-cols-sm, var(--sg-cols, repeat(1, 1fr)));
1531
+ row-gap: var(--sg-row-gap-sm, var(--sg-row-gap, 0));
1532
+ column-gap: var(--sg-col-gap-sm, var(--sg-col-gap, 0));
1533
+ }
1534
+ }
1535
+
1536
+ @media (min-width: 768px) {
1537
+ .seeds-grid {
1538
+ grid-template-columns: var(
1539
+ --sg-cols-md,
1540
+ var(--sg-cols-sm, var(--sg-cols, repeat(1, 1fr)))
1541
+ );
1542
+ row-gap: var(--sg-row-gap-md, var(--sg-row-gap-sm, var(--sg-row-gap, 0)));
1543
+ column-gap: var(
1544
+ --sg-col-gap-md,
1545
+ var(--sg-col-gap-sm, var(--sg-col-gap, 0))
1546
+ );
1547
+ }
1548
+ }
1549
+
1550
+ @media (min-width: 1024px) {
1551
+ .seeds-grid {
1552
+ grid-template-columns: var(
1553
+ --sg-cols-lg,
1554
+ var(--sg-cols-md, var(--sg-cols-sm, var(--sg-cols, repeat(1, 1fr))))
1555
+ );
1556
+ row-gap: var(
1557
+ --sg-row-gap-lg,
1558
+ var(--sg-row-gap-md, var(--sg-row-gap-sm, var(--sg-row-gap, 0)))
1559
+ );
1560
+ column-gap: var(
1561
+ --sg-col-gap-lg,
1562
+ var(--sg-col-gap-md, var(--sg-col-gap-sm, var(--sg-col-gap, 0)))
1563
+ );
1564
+ }
1565
+ }
1566
+
1567
+ @media (min-width: 1280px) {
1568
+ .seeds-grid {
1569
+ grid-template-columns: var(
1570
+ --sg-cols-xl,
1571
+ var(
1572
+ --sg-cols-lg,
1573
+ var(--sg-cols-md, var(--sg-cols-sm, var(--sg-cols, repeat(1, 1fr))))
1574
+ )
1575
+ );
1576
+ row-gap: var(
1577
+ --sg-row-gap-xl,
1578
+ var(
1579
+ --sg-row-gap-lg,
1580
+ var(--sg-row-gap-md, var(--sg-row-gap-sm, var(--sg-row-gap, 0)))
1581
+ )
1582
+ );
1583
+ column-gap: var(
1584
+ --sg-col-gap-xl,
1585
+ var(
1586
+ --sg-col-gap-lg,
1587
+ var(--sg-col-gap-md, var(--sg-col-gap-sm, var(--sg-col-gap, 0)))
1588
+ )
1589
+ );
1590
+ }
1591
+ }
1592
+ }
1593
+
1265
1594
  /* --- seeds-react-icon --- */
1266
1595
  /**
1267
1596
  * Seeds Icon component classes
@@ -1300,6 +1629,26 @@
1300
1629
  }
1301
1630
  }
1302
1631
 
1632
+ /* --- seeds-react-image --- */
1633
+ /**
1634
+ * Seeds Image component classes
1635
+ * Use these instead of writing out individual Tailwind utility classes.
1636
+ *
1637
+ * Usage:
1638
+ * <img class="seeds-image" />
1639
+ * <img class="seeds-image seeds-image-loading" />
1640
+ */
1641
+
1642
+ @layer components {
1643
+ .seeds-image {
1644
+ display: block;
1645
+ }
1646
+
1647
+ .seeds-image-loading {
1648
+ opacity: 0;
1649
+ }
1650
+ }
1651
+
1303
1652
  /* --- seeds-react-indicator --- */
1304
1653
  /**
1305
1654
  * Seeds Indicator component classes
@@ -1593,17 +1942,22 @@
1593
1942
  * <div class="seeds-loader seeds-loader-sm">...</div> (small)
1594
1943
  * <div class="seeds-loader">...</div> (no delay)
1595
1944
  *
1596
- * The visual is a thin rotating arc (--color-neutral-0) over a faint arc ring
1597
- * (--color-neutral-600), both clipped to the bottom half by the spinner span.
1945
+ * The visual is Exploration 1 "Border Top Spinner": a single bordered ring
1946
+ * element (--color-container-border-decorative-neutral) whose top and left
1947
+ * borders are accented (--color-container-border-base), rotating once per
1948
+ * 3s cycle. No pseudo-elements, no clip.
1598
1949
  */
1599
1950
 
1600
1951
  @layer components {
1601
1952
  @keyframes seeds-loader-spin {
1602
- from {
1953
+ 0% {
1603
1954
  transform: rotate(0deg);
1604
1955
  }
1605
- to {
1606
- transform: rotate(360deg);
1956
+ 50% {
1957
+ transform: rotate(540deg);
1958
+ }
1959
+ 100% {
1960
+ transform: rotate(1080deg);
1607
1961
  }
1608
1962
  }
1609
1963
 
@@ -1619,83 +1973,44 @@
1619
1973
  }
1620
1974
  }
1621
1975
 
1622
- /* Base (large / 40px) — slow outer rotation hosting the spinner */
1976
+ /* Base (large / 40px) — layout only; the spinner element carries rotation. */
1623
1977
  .seeds-loader {
1624
1978
  position: relative;
1625
1979
  margin: 0 auto;
1626
1980
  padding: 0;
1627
1981
  width: 40px;
1628
1982
  height: 40px;
1629
- animation: seeds-loader-spin 3s infinite linear;
1630
1983
  }
1631
1984
 
1632
- /* Visual spinner clipped to bottom half, faster eased rotation */
1985
+ /* Visual spinner IS the bordered ring faint full border with accented
1986
+ top/left, rotating once per 3s cycle. */
1633
1987
  .seeds-loader-spinner {
1634
- position: absolute;
1635
- inset: 0;
1636
- margin: auto;
1637
- width: 40px;
1638
- height: 40px;
1639
- clip: rect(20px, 40px, 40px, 0);
1640
- animation: seeds-loader-spin 1.5s cubic-bezier(0.77, 0, 0.175, 1) infinite;
1641
- }
1642
-
1643
- /* Bright arc */
1644
- .seeds-loader-spinner::before {
1645
- content: "";
1646
- position: absolute;
1647
- inset: 0;
1648
- margin: auto;
1649
- width: 40px;
1650
- height: 40px;
1651
- box-sizing: border-box;
1652
- border: 4px solid transparent;
1653
- border-top-color: var(--color-neutral-0);
1654
- border-radius: 100%;
1655
- animation: seeds-loader-spin 1.5s cubic-bezier(0.77, 0, 0.175, 1) infinite;
1656
- }
1657
-
1658
- /* Faint arc ring (static) — clipped to bottom half alongside the bright arc */
1659
- .seeds-loader-spinner::after {
1660
- content: "";
1661
1988
  position: absolute;
1662
1989
  inset: 0;
1663
1990
  margin: auto;
1664
1991
  width: 40px;
1665
1992
  height: 40px;
1666
1993
  box-sizing: border-box;
1667
- border: 4px solid var(--color-neutral-600);
1994
+ border: 4px solid var(--color-container-border-decorative-neutral);
1995
+ border-top-color: var(--color-container-border-base);
1996
+ border-left-color: var(--color-container-border-base);
1668
1997
  border-radius: 100%;
1998
+ animation: seeds-loader-spin 3s cubic-bezier(0.77, 0, 0.175, 1) infinite;
1669
1999
  }
1670
2000
 
1671
- /* When animations are disabled, the faint arc still renders so the loader
1672
- is never invisible. */
1673
- .no-cssanimations .seeds-loader-spinner::after {
1674
- border-color: var(--color-neutral-600);
1675
- }
1676
-
1677
- /* Delay variant — fades the whole spinner in alongside the outer rotation */
2001
+ /* Delay variant fades the spinner in; rotation lives on the spinner. */
1678
2002
  .seeds-loader-delay {
1679
- animation:
1680
- seeds-loader-spin 3s infinite linear,
1681
- seeds-loader-delay-anim 2s 1;
2003
+ animation: seeds-loader-delay-anim 2s 1;
1682
2004
  }
1683
2005
 
1684
- /* Small (20px) — scale size, border width, and the clip rect together */
2006
+ /* Small (20px) — scale size and border width together. */
1685
2007
  .seeds-loader-sm,
1686
- .seeds-loader-sm .seeds-loader-spinner,
1687
- .seeds-loader-sm .seeds-loader-spinner::before,
1688
- .seeds-loader-sm .seeds-loader-spinner::after {
2008
+ .seeds-loader-sm .seeds-loader-spinner {
1689
2009
  width: 20px;
1690
2010
  height: 20px;
1691
2011
  }
1692
2012
 
1693
2013
  .seeds-loader-sm .seeds-loader-spinner {
1694
- clip: rect(10px, 20px, 20px, 0);
1695
- }
1696
-
1697
- .seeds-loader-sm .seeds-loader-spinner::before,
1698
- .seeds-loader-sm .seeds-loader-spinner::after {
1699
2014
  border-width: 2px;
1700
2015
  }
1701
2016
 
@@ -2894,6 +3209,107 @@
2894
3209
  }
2895
3210
  }
2896
3211
 
3212
+ /* --- seeds-react-pagination --- */
3213
+ /**
3214
+ * Seeds Pagination component classes
3215
+ * Use these instead of writing out individual Tailwind utility classes.
3216
+ *
3217
+ * Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
3218
+ * CSS variable definitions and dark mode support.
3219
+ *
3220
+ * Rules are wrapped in @layer components so consumer Tailwind utilities (which
3221
+ * live in @layer utilities) win the cascade. Without this layer the unlayered
3222
+ * component CSS would beat utilities like mx-200 / p-300 / inline-flex and they
3223
+ * could not override component styling. Keep every rule inside this single block
3224
+ * in source order — the -selected modifier and the :disabled overrides resolve
3225
+ * by source order within the same layer.
3226
+ */
3227
+
3228
+ @layer components {
3229
+ /* StyledPaginationContainer */
3230
+ .seeds-pagination-container {
3231
+ font-size: var(--font-size-200);
3232
+ line-height: var(--line-height-200);
3233
+ display: flex;
3234
+ align-items: center;
3235
+ gap: var(--space-300);
3236
+ margin-top: var(--space-400);
3237
+ flex-wrap: wrap;
3238
+ }
3239
+
3240
+ /* StyledPaginationInfo (styled(Text)) */
3241
+ .seeds-pagination-info {
3242
+ white-space: nowrap;
3243
+ }
3244
+
3245
+ /* StyledPageSizeSelector */
3246
+ .seeds-pagination-page-size-selector {
3247
+ display: flex;
3248
+ align-items: center;
3249
+ gap: var(--space-300);
3250
+ }
3251
+
3252
+ /* StyledPaginationControls */
3253
+ .seeds-pagination-controls {
3254
+ display: flex;
3255
+ align-items: center;
3256
+ margin-left: auto;
3257
+ }
3258
+
3259
+ /* StyledPageButtons */
3260
+ .seeds-pagination-page-buttons {
3261
+ display: inline-flex;
3262
+ flex-flow: row wrap;
3263
+ background-clip: padding-box;
3264
+ border: 1px solid var(--color-button-secondary-border-base);
3265
+ border-radius: var(--radius-outer);
3266
+ padding: var(--space-100);
3267
+ background: transparent;
3268
+ }
3269
+
3270
+ /* StyledPaginationButton — base */
3271
+ .seeds-pagination-button {
3272
+ min-width: calc(var(--space-500) + 4px);
3273
+ min-height: calc(var(--space-500) + 2px);
3274
+ padding: calc(var(--space-350) - 6px);
3275
+ line-height: var(--space-400);
3276
+ font-weight: var(--font-weight-semibold);
3277
+ background-color: transparent;
3278
+ color: var(--color-text-body);
3279
+ border: none;
3280
+ border-radius: var(--radius-inner);
3281
+ cursor: pointer;
3282
+ display: inline-flex;
3283
+ align-items: center;
3284
+ justify-content: center;
3285
+ }
3286
+
3287
+ /* selected modifier MUST follow base (equal specificity — source order wins) */
3288
+ .seeds-pagination-button-selected {
3289
+ background-color: var(--color-button-secondary-bg-active);
3290
+ color: var(--color-text-inverse);
3291
+ }
3292
+
3293
+ .seeds-pagination-button:hover:not(:disabled) {
3294
+ background-color: var(--color-listItem-bg-hover);
3295
+ }
3296
+
3297
+ .seeds-pagination-button-selected:hover:not(:disabled) {
3298
+ background-color: var(--color-button-secondary-bg-active);
3299
+ color: var(--color-text-inverse);
3300
+ }
3301
+
3302
+ .seeds-pagination-button:disabled {
3303
+ cursor: default;
3304
+ opacity: 0.5;
3305
+ }
3306
+
3307
+ /* current page renders disabled + selected and must stay fully opaque */
3308
+ .seeds-pagination-button-selected:disabled {
3309
+ opacity: 1;
3310
+ }
3311
+ }
3312
+
2897
3313
  /* --- seeds-react-partner-logo --- */
2898
3314
  /**
2899
3315
  * Seeds Partner Logo component classes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sproutsocial/racine",
3
- "version": "31.7.13",
3
+ "version": "31.7.15",
4
4
  "license": "MIT",
5
5
  "engines": {
6
6
  "node": ">=18"
@@ -73,74 +73,74 @@
73
73
  },
74
74
  "dependencies": {
75
75
  "@size-limit/file": "^11.1.6",
76
- "@sproutsocial/seeds-react-accordion": "^0.4.58",
77
- "@sproutsocial/seeds-react-avatar": "^1.1.23",
78
- "@sproutsocial/seeds-react-badge": "^2.0.41",
79
- "@sproutsocial/seeds-react-banner": "^1.1.30",
80
- "@sproutsocial/seeds-react-box": "^1.1.27",
81
- "@sproutsocial/seeds-react-breadcrumb": "^1.1.13",
82
- "@sproutsocial/seeds-react-button": "^2.3.3",
83
- "@sproutsocial/seeds-react-card": "^1.1.49",
84
- "@sproutsocial/seeds-react-character-counter": "^1.0.6",
85
- "@sproutsocial/seeds-react-chart-legend": "^1.0.48",
86
- "@sproutsocial/seeds-react-chat-bubble": "^0.2.4",
87
- "@sproutsocial/seeds-react-checkbox": "^1.3.49",
76
+ "@sproutsocial/seeds-react-accordion": "^0.4.59",
77
+ "@sproutsocial/seeds-react-avatar": "^1.1.25",
78
+ "@sproutsocial/seeds-react-badge": "^2.0.42",
79
+ "@sproutsocial/seeds-react-banner": "^1.1.31",
80
+ "@sproutsocial/seeds-react-box": "^1.1.28",
81
+ "@sproutsocial/seeds-react-breadcrumb": "^1.1.14",
82
+ "@sproutsocial/seeds-react-button": "^2.3.4",
83
+ "@sproutsocial/seeds-react-card": "^1.1.50",
84
+ "@sproutsocial/seeds-react-character-counter": "^1.0.8",
85
+ "@sproutsocial/seeds-react-chart-legend": "^1.0.49",
86
+ "@sproutsocial/seeds-react-chat-bubble": "^0.2.5",
87
+ "@sproutsocial/seeds-react-checkbox": "^1.3.50",
88
88
  "@sproutsocial/seeds-react-collapsible": "^2.0.1",
89
- "@sproutsocial/seeds-react-container": "^0.3.21",
90
- "@sproutsocial/seeds-react-content-block": "^0.5.23",
91
- "@sproutsocial/seeds-react-content-header": "^0.2.27",
92
- "@sproutsocial/seeds-react-data-table": "^2.6.31",
93
- "@sproutsocial/seeds-react-datepicker": "^1.0.46",
94
- "@sproutsocial/seeds-react-drawer": "^2.2.16",
95
- "@sproutsocial/seeds-react-duration": "^1.0.30",
96
- "@sproutsocial/seeds-react-empty-state": "^1.0.29",
97
- "@sproutsocial/seeds-react-fieldset": "^1.0.30",
98
- "@sproutsocial/seeds-react-form-field": "^1.1.24",
99
- "@sproutsocial/seeds-react-grid": "^0.2.11",
89
+ "@sproutsocial/seeds-react-container": "^0.3.22",
90
+ "@sproutsocial/seeds-react-content-block": "^0.5.24",
91
+ "@sproutsocial/seeds-react-content-header": "^0.2.28",
92
+ "@sproutsocial/seeds-react-data-table": "^2.6.32",
93
+ "@sproutsocial/seeds-react-datepicker": "^1.0.47",
94
+ "@sproutsocial/seeds-react-drawer": "^2.2.17",
95
+ "@sproutsocial/seeds-react-duration": "^1.0.32",
96
+ "@sproutsocial/seeds-react-empty-state": "^1.0.31",
97
+ "@sproutsocial/seeds-react-fieldset": "^1.0.31",
98
+ "@sproutsocial/seeds-react-form-field": "^1.1.25",
99
+ "@sproutsocial/seeds-react-grid": "^0.2.13",
100
100
  "@sproutsocial/seeds-react-hooks": "^3.2.7",
101
- "@sproutsocial/seeds-react-icon": "^2.4.7",
102
- "@sproutsocial/seeds-react-image": "^1.0.27",
103
- "@sproutsocial/seeds-react-indicator": "^1.0.47",
104
- "@sproutsocial/seeds-react-input": "^1.5.36",
105
- "@sproutsocial/seeds-react-keyboard-key": "^1.0.29",
106
- "@sproutsocial/seeds-react-label": "^1.0.29",
107
- "@sproutsocial/seeds-react-link": "^1.1.19",
108
- "@sproutsocial/seeds-react-list": "^0.3.35",
109
- "@sproutsocial/seeds-react-loader": "^1.0.29",
110
- "@sproutsocial/seeds-react-loader-button": "^1.0.54",
111
- "@sproutsocial/seeds-react-message": "^1.0.57",
101
+ "@sproutsocial/seeds-react-icon": "^2.4.8",
102
+ "@sproutsocial/seeds-react-image": "^1.0.29",
103
+ "@sproutsocial/seeds-react-indicator": "^1.0.48",
104
+ "@sproutsocial/seeds-react-input": "^1.5.37",
105
+ "@sproutsocial/seeds-react-keyboard-key": "^1.0.30",
106
+ "@sproutsocial/seeds-react-label": "^1.0.30",
107
+ "@sproutsocial/seeds-react-link": "^1.1.20",
108
+ "@sproutsocial/seeds-react-list": "^0.3.36",
109
+ "@sproutsocial/seeds-react-loader": "^1.0.30",
110
+ "@sproutsocial/seeds-react-loader-button": "^1.0.55",
111
+ "@sproutsocial/seeds-react-message": "^1.0.59",
112
112
  "@sproutsocial/seeds-react-mixins": "^4.3.12",
113
- "@sproutsocial/seeds-react-modal": "^2.5.31",
113
+ "@sproutsocial/seeds-react-modal": "^2.5.32",
114
114
  "@sproutsocial/seeds-react-narrative-kit": "^0.6.3",
115
- "@sproutsocial/seeds-react-numeral": "^1.0.55",
116
- "@sproutsocial/seeds-react-pagination": "^0.1.28",
117
- "@sproutsocial/seeds-react-panel": "^1.0.10",
118
- "@sproutsocial/seeds-react-peek-in": "^0.3.9",
119
- "@sproutsocial/seeds-react-partner-logo": "^1.7.19",
120
- "@sproutsocial/seeds-react-popout": "^2.5.17",
115
+ "@sproutsocial/seeds-react-numeral": "^1.0.56",
116
+ "@sproutsocial/seeds-react-pagination": "^0.1.29",
117
+ "@sproutsocial/seeds-react-panel": "^1.0.11",
118
+ "@sproutsocial/seeds-react-peek-in": "^0.3.10",
119
+ "@sproutsocial/seeds-react-partner-logo": "^1.7.20",
120
+ "@sproutsocial/seeds-react-popout": "^2.5.18",
121
121
  "@sproutsocial/seeds-react-portal": "^1.2.0",
122
- "@sproutsocial/seeds-react-progress": "^0.2.14",
123
- "@sproutsocial/seeds-react-radio": "^1.3.30",
124
- "@sproutsocial/seeds-react-rating": "^1.0.48",
125
- "@sproutsocial/seeds-react-segmented-control": "^1.1.30",
122
+ "@sproutsocial/seeds-react-progress": "^0.2.15",
123
+ "@sproutsocial/seeds-react-radio": "^1.3.31",
124
+ "@sproutsocial/seeds-react-rating": "^1.0.49",
125
+ "@sproutsocial/seeds-react-segmented-control": "^1.1.31",
126
126
  "@sproutsocial/seeds-react-spot-illustration": "^1.2.5",
127
- "@sproutsocial/seeds-react-select": "^1.1.48",
128
- "@sproutsocial/seeds-react-skeleton": "^1.1.27",
129
- "@sproutsocial/seeds-react-stack": "^1.0.27",
130
- "@sproutsocial/seeds-react-switch": "^1.2.47",
131
- "@sproutsocial/seeds-react-system-props": "^3.1.3",
132
- "@sproutsocial/seeds-react-table": "^1.0.49",
133
- "@sproutsocial/seeds-react-tabs": "^1.4.20",
134
- "@sproutsocial/seeds-react-text": "^1.5.2",
135
- "@sproutsocial/seeds-react-textarea": "^1.0.28",
136
- "@sproutsocial/seeds-react-toast": "^1.0.49",
137
- "@sproutsocial/seeds-react-token": "^1.5.14",
138
- "@sproutsocial/seeds-react-token-input": "^1.4.58",
139
- "@sproutsocial/seeds-react-tooltip": "^1.1.34",
127
+ "@sproutsocial/seeds-react-select": "^1.1.49",
128
+ "@sproutsocial/seeds-react-skeleton": "^1.1.28",
129
+ "@sproutsocial/seeds-react-stack": "^1.0.28",
130
+ "@sproutsocial/seeds-react-switch": "^1.2.48",
131
+ "@sproutsocial/seeds-react-system-props": "^3.1.4",
132
+ "@sproutsocial/seeds-react-table": "^1.0.50",
133
+ "@sproutsocial/seeds-react-tabs": "^1.4.21",
134
+ "@sproutsocial/seeds-react-text": "^1.5.3",
135
+ "@sproutsocial/seeds-react-textarea": "^1.0.29",
136
+ "@sproutsocial/seeds-react-toast": "^1.0.50",
137
+ "@sproutsocial/seeds-react-token": "^1.5.15",
138
+ "@sproutsocial/seeds-react-token-input": "^1.4.59",
139
+ "@sproutsocial/seeds-react-tooltip": "^1.1.35",
140
140
  "@sproutsocial/seeds-react-theme": "^4.3.1",
141
141
  "@sproutsocial/seeds-react-theme-provider": "^1.1.25",
142
142
  "@sproutsocial/seeds-react-utilities": "^4.3.0",
143
- "@sproutsocial/seeds-react-visually-hidden": "^1.0.28",
143
+ "@sproutsocial/seeds-react-visually-hidden": "^1.0.29",
144
144
  "scroll-into-view-if-needed": "^2.2.20",
145
145
  "lodash.uniqueid": "^4.0.1",
146
146
  "styled-system": "^5.1.5",
@@ -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.11",
166
+ "@sproutsocial/seeds-react-menu": "^1.16.12",
167
167
  "@sproutsocial/seeds-react-testing-library": "*",
168
168
  "@sproutsocial/seeds-space": "^0.8.1",
169
169
  "@sproutsocial/seeds-testing": "*",