@vsn-ux/gaia-styles 0.6.7 → 0.6.8

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.
@@ -0,0 +1,127 @@
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ .ga-loader {
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ justify-content: center;
7
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
8
+ &.ga-loader--small {
9
+ font-size: calc(
10
+ var(--ga-text-xs-font-size) * var(--ga-base-scaling-factor, 1)
11
+ );
12
+ line-height: var(--tw-leading, calc(
13
+ var(--ga-text-xs-line-height) * var(--ga-base-scaling-factor, 1)
14
+ ));
15
+ letter-spacing: var(--tw-tracking, calc(
16
+ var(--ga-text-xs-letter-spacing) * var(--ga-base-scaling-factor, 1)
17
+ ));
18
+ .ga-loader__icon {
19
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
20
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
21
+ }
22
+ }
23
+ &.ga-loader--medium {
24
+ font-size: calc(
25
+ var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)
26
+ );
27
+ line-height: var(--tw-leading, calc(
28
+ var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)
29
+ ));
30
+ letter-spacing: var(--tw-tracking, 0);
31
+ .ga-loader__icon {
32
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 8);
33
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 8);
34
+ }
35
+ }
36
+ &.ga-loader--large {
37
+ font-size: calc(
38
+ var(--ga-text-md-font-size) * var(--ga-base-scaling-factor, 1)
39
+ );
40
+ line-height: var(--tw-leading, calc(
41
+ var(--ga-text-md-line-height) * var(--ga-base-scaling-factor, 1)
42
+ ));
43
+ letter-spacing: var(--tw-tracking, calc(
44
+ var(--ga-text-md-letter-spacing) * var(--ga-base-scaling-factor, 1)
45
+ ));
46
+ .ga-loader__icon {
47
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 16);
48
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 16);
49
+ }
50
+ }
51
+ .ga-loader__icon--animated {
52
+ animation: ga-loader-animation 1100ms linear infinite;
53
+ }
54
+ .ga-loader__icon--reduced-motion {
55
+ display: none;
56
+ color: var(--ga-color-icon-primary);
57
+ }
58
+ @media (prefers-reduced-motion: reduce) {
59
+ .ga-loader__icon--animated {
60
+ display: none;
61
+ }
62
+ .ga-loader__icon--reduced-motion {
63
+ display: block;
64
+ }
65
+ }
66
+ .ga-loader__label {
67
+ color: var(--ga-color-text-body);
68
+ &:empty {
69
+ display: none;
70
+ }
71
+ }
72
+ }
73
+ .ga-inline-loading {
74
+ display: flex;
75
+ flex-direction: row;
76
+ align-items: center;
77
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 1);
78
+ font-size: calc(
79
+ var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)
80
+ );
81
+ line-height: var(--tw-leading, calc(
82
+ var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)
83
+ ));
84
+ letter-spacing: var(--tw-tracking, 0);
85
+ color: var(--ga-color-text-body);
86
+ &.ga-inline-loading--active {
87
+ .ga-inline-loading__icon {
88
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
89
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
90
+ animation: ga-loader-animation 1100ms linear infinite;
91
+ }
92
+ }
93
+ &.ga-inline-loading--completed {
94
+ .ga-inline-loading__icon {
95
+ color: var(--ga-color-icon-success);
96
+ }
97
+ }
98
+ &.ga-inline-loading--error {
99
+ .ga-inline-loading__icon {
100
+ color: var(--ga-color-icon-error);
101
+ }
102
+ }
103
+ &.ga-inline-loading--inactive {
104
+ color: var(--ga-color-text-disable-selected);
105
+ }
106
+ .ga-inline-loading__icon {
107
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
108
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
109
+ }
110
+ }
111
+ @keyframes ga-loader-animation {
112
+ 0% {
113
+ transform: rotate(0deg);
114
+ }
115
+ 31.82% {
116
+ transform: rotate(90deg);
117
+ }
118
+ 63.64% {
119
+ transform: rotate(180deg);
120
+ }
121
+ 81.82% {
122
+ transform: rotate(270deg);
123
+ }
124
+ 100% {
125
+ transform: rotate(360deg);
126
+ }
127
+ }
@@ -0,0 +1,80 @@
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ @layer properties;
3
+ .ga-input--quantity-selector {
4
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 40);
5
+ padding-inline: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
6
+ &:has(input:disabled):has(input:not(:placeholder-shown)) {
7
+ .ga-input__quantity-separator {
8
+ background-color: var(--ga-color-text-on-action);
9
+ }
10
+ .ga-input__quantity-button {
11
+ color: var(--ga-color-text-on-action);
12
+ }
13
+ }
14
+ input {
15
+ min-width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 0);
16
+ flex: 1;
17
+ background-color: transparent;
18
+ padding-inline: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
19
+ --tw-leading: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
20
+ line-height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
21
+ --tw-outline-style: none;
22
+ outline-style: none;
23
+ appearance: textfield;
24
+ &::-webkit-outer-spin-button, &::-webkit-inner-spin-button {
25
+ -webkit-appearance: none;
26
+ margin: 0;
27
+ }
28
+ }
29
+ .ga-input__quantity-separator {
30
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
31
+ width: 1px;
32
+ background-color: var(--ga-color-border-disabled);
33
+ }
34
+ .ga-input__quantity-button {
35
+ display: flex;
36
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
37
+ flex-shrink: 0;
38
+ cursor: pointer;
39
+ align-items: center;
40
+ justify-content: center;
41
+ background-color: transparent;
42
+ padding: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 1);
43
+ &:hover:not(:disabled) {
44
+ border-radius: var(--ga-radius);
45
+ background-color: var(--ga-color-surface-action-hover-2);
46
+ outline-style: var(--tw-outline-style);
47
+ outline-width: 1px;
48
+ outline-color: var(--ga-color-border-action-hover);
49
+ }
50
+ &:focus-visible {
51
+ border-radius: var(--ga-radius);
52
+ outline-style: var(--tw-outline-style);
53
+ outline-width: 2px;
54
+ outline-offset: 2px;
55
+ outline-color: var(--ga-color-border-focus);
56
+ }
57
+ &:disabled {
58
+ cursor: not-allowed;
59
+ background-color: transparent;
60
+ color: var(--ga-color-text-disabled);
61
+ }
62
+ }
63
+ }
64
+ @property --tw-leading {
65
+ syntax: "*";
66
+ inherits: false;
67
+ }
68
+ @property --tw-outline-style {
69
+ syntax: "*";
70
+ inherits: false;
71
+ initial-value: solid;
72
+ }
73
+ @layer properties {
74
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
75
+ *, ::before, ::after, ::backdrop {
76
+ --tw-leading: initial;
77
+ --tw-outline-style: solid;
78
+ }
79
+ }
80
+ }
@@ -1221,6 +1221,223 @@
1221
1221
  opacity: 0;
1222
1222
  }
1223
1223
  }
1224
+ .ga-file-uploader {
1225
+ display: flex;
1226
+ flex-direction: column;
1227
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1228
+ .ga-file-uploader__heading {
1229
+ display: flex;
1230
+ flex: 1;
1231
+ flex-direction: column;
1232
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 1);
1233
+ .ga-file-uploader__heading-label {
1234
+ vertical-align: middle;
1235
+ font-size: calc(
1236
+ var(--ga-text-md-font-size) * var(--ga-base-scaling-factor, 1)
1237
+ );
1238
+ line-height: var(--tw-leading, calc(
1239
+ var(--ga-text-md-line-height) * var(--ga-base-scaling-factor, 1)
1240
+ ));
1241
+ letter-spacing: var(--tw-tracking, calc(
1242
+ var(--ga-text-md-letter-spacing) * var(--ga-base-scaling-factor, 1)
1243
+ ));
1244
+ --tw-font-weight: 500;
1245
+ font-weight: 500;
1246
+ }
1247
+ .ga-file-uploader__heading-description {
1248
+ font-size: calc(
1249
+ var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)
1250
+ );
1251
+ line-height: var(--tw-leading, calc(
1252
+ var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)
1253
+ ));
1254
+ letter-spacing: var(--tw-tracking, 0);
1255
+ --tw-font-weight: 400;
1256
+ font-weight: 400;
1257
+ }
1258
+ }
1259
+ .ga-button {
1260
+ width: fit-content;
1261
+ }
1262
+ .ga-file-uploader__heading {
1263
+ color: var(--ga-color-text-body);
1264
+ }
1265
+ &.ga-file-uploader--disabled .ga-file-uploader__heading {
1266
+ color: var(--ga-color-text-disable-selected);
1267
+ }
1268
+ .ga-file-uploader__file-list {
1269
+ display: flex;
1270
+ flex: 1;
1271
+ flex-direction: column;
1272
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
1273
+ .ga-file-uploader__file-item {
1274
+ display: flex;
1275
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 10);
1276
+ max-width: 58rem;
1277
+ min-width: 22rem;
1278
+ align-items: center;
1279
+ justify-content: space-between;
1280
+ border-radius: var(--ga-radius);
1281
+ background-color: var(--ga-color-surface-disabled);
1282
+ padding-inline: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
1283
+ padding-block: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 1);
1284
+ font-size: calc(
1285
+ var(--ga-text-md-font-size) * var(--ga-base-scaling-factor, 1)
1286
+ );
1287
+ line-height: var(--tw-leading, calc(
1288
+ var(--ga-text-md-line-height) * var(--ga-base-scaling-factor, 1)
1289
+ ));
1290
+ letter-spacing: var(--tw-tracking, calc(
1291
+ var(--ga-text-md-letter-spacing) * var(--ga-base-scaling-factor, 1)
1292
+ ));
1293
+ --tw-font-weight: 400;
1294
+ font-weight: 400;
1295
+ color: var(--ga-color-text-body);
1296
+ .ga-file-uploader__file-action {
1297
+ display: flex;
1298
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1299
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1300
+ cursor: pointer;
1301
+ align-items: center;
1302
+ justify-content: center;
1303
+ border-radius: var(--ga-radius);
1304
+ --tw-border-style: none;
1305
+ border-style: none;
1306
+ background-color: transparent;
1307
+ padding: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 0);
1308
+ color: var(--ga-color-icon-action);
1309
+ &:focus-visible {
1310
+ outline-style: var(--tw-outline-style);
1311
+ outline-width: 2px;
1312
+ outline-offset: 2px;
1313
+ outline-color: var(--ga-color-border-focus);
1314
+ }
1315
+ }
1316
+ .ga-file-uploader__file-icon {
1317
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1318
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1319
+ }
1320
+ &.ga-file-uploader__file-item--success {
1321
+ .ga-file-uploader__file-icon {
1322
+ color: var(--ga-color-icon-success);
1323
+ }
1324
+ }
1325
+ &.ga-file-uploader__file-item--error {
1326
+ height: auto;
1327
+ flex-direction: column;
1328
+ align-items: flex-start;
1329
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
1330
+ border-style: var(--tw-border-style);
1331
+ border-width: 1px;
1332
+ border-color: var(--ga-color-border-error);
1333
+ background-color: var(--ga-color-surface-error);
1334
+ outline-style: var(--tw-outline-style);
1335
+ outline-width: 1px;
1336
+ outline-color: var(--ga-color-border-error);
1337
+ .ga-file-uploader__error-file {
1338
+ display: flex;
1339
+ width: 100%;
1340
+ align-items: center;
1341
+ justify-content: space-between;
1342
+ --tw-leading: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
1343
+ line-height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
1344
+ }
1345
+ .ga-file-uploader__error-callout {
1346
+ display: flex;
1347
+ flex-direction: row;
1348
+ align-items: center;
1349
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 1);
1350
+ vertical-align: middle;
1351
+ font-size: calc(
1352
+ var(--ga-text-xs-font-size) * var(--ga-base-scaling-factor, 1)
1353
+ );
1354
+ line-height: var(--tw-leading, calc(
1355
+ var(--ga-text-xs-line-height) * var(--ga-base-scaling-factor, 1)
1356
+ ));
1357
+ letter-spacing: var(--tw-tracking, calc(
1358
+ var(--ga-text-xs-letter-spacing) * var(--ga-base-scaling-factor, 1)
1359
+ ));
1360
+ --tw-font-weight: 400;
1361
+ font-weight: 400;
1362
+ .ga-file-uploader__error-callout-icon {
1363
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1364
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1365
+ color: var(--ga-color-icon-error);
1366
+ }
1367
+ }
1368
+ }
1369
+ }
1370
+ }
1371
+ .ga-file-uploader__input {
1372
+ position: absolute;
1373
+ width: 1px;
1374
+ height: 1px;
1375
+ padding: 0;
1376
+ margin: -1px;
1377
+ overflow: hidden;
1378
+ clip-path: inset(50%);
1379
+ white-space: nowrap;
1380
+ border-width: 0;
1381
+ }
1382
+ .ga-file-uploader__dropzone {
1383
+ display: flex;
1384
+ min-height: 6.25rem;
1385
+ flex: 1;
1386
+ align-items: center;
1387
+ justify-content: center;
1388
+ border-radius: var(--ga-radius);
1389
+ border-style: var(--tw-border-style);
1390
+ border-width: 1px;
1391
+ --tw-border-style: dashed;
1392
+ border-style: dashed;
1393
+ border-color: var(--ga-color-border-action);
1394
+ padding: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 8);
1395
+ text-align: center;
1396
+ font-size: calc(
1397
+ var(--ga-text-md-font-size) * var(--ga-base-scaling-factor, 1)
1398
+ );
1399
+ line-height: var(--tw-leading, calc(
1400
+ var(--ga-text-md-line-height) * var(--ga-base-scaling-factor, 1)
1401
+ ));
1402
+ letter-spacing: var(--tw-tracking, calc(
1403
+ var(--ga-text-md-letter-spacing) * var(--ga-base-scaling-factor, 1)
1404
+ ));
1405
+ --tw-font-weight: 400;
1406
+ font-weight: 400;
1407
+ color: var(--ga-color-text-action);
1408
+ &:hover {
1409
+ border-color: var(--ga-color-border-action-hover);
1410
+ background-color: var(--ga-color-surface-action-hover-2);
1411
+ color: var(--ga-color-text-action-hover);
1412
+ }
1413
+ &:focus-visible, &:focus-within {
1414
+ --tw-border-style: none;
1415
+ border-style: none;
1416
+ outline-style: var(--tw-outline-style);
1417
+ outline-width: 2px;
1418
+ outline-color: var(--ga-color-border-focus);
1419
+ --tw-outline-style: solid;
1420
+ outline-style: solid;
1421
+ }
1422
+ &.ga-file-uploader__dropzone--drag-hover {
1423
+ --tw-border-style: none;
1424
+ border-style: none;
1425
+ background-color: var(--ga-color-surface-page);
1426
+ color: var(--ga-color-text-action-hover);
1427
+ outline-style: var(--tw-outline-style);
1428
+ outline-width: 2px;
1429
+ outline-color: var(--ga-color-border-focus);
1430
+ --tw-outline-style: solid;
1431
+ outline-style: solid;
1432
+ }
1433
+ }
1434
+ .ga-file-uploader__dropzone[aria-disabled='true'], &.ga-file-uploader--disabled .ga-file-uploader__dropzone {
1435
+ cursor: not-allowed;
1436
+ border-color: var(--ga-color-border-disabled);
1437
+ background-color: var(--ga-color-surface-primary);
1438
+ color: var(--ga-color-text-disabled);
1439
+ }
1440
+ }
1224
1441
  .ga-form-field {
1225
1442
  display: flex;
1226
1443
  flex-direction: column;
@@ -1402,6 +1619,132 @@
1402
1619
  outline-style: none;
1403
1620
  }
1404
1621
  }
1622
+ .ga-loader {
1623
+ display: flex;
1624
+ flex-direction: column;
1625
+ align-items: center;
1626
+ justify-content: center;
1627
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
1628
+ &.ga-loader--small {
1629
+ font-size: calc(
1630
+ var(--ga-text-xs-font-size) * var(--ga-base-scaling-factor, 1)
1631
+ );
1632
+ line-height: var(--tw-leading, calc(
1633
+ var(--ga-text-xs-line-height) * var(--ga-base-scaling-factor, 1)
1634
+ ));
1635
+ letter-spacing: var(--tw-tracking, calc(
1636
+ var(--ga-text-xs-letter-spacing) * var(--ga-base-scaling-factor, 1)
1637
+ ));
1638
+ .ga-loader__icon {
1639
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1640
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1641
+ }
1642
+ }
1643
+ &.ga-loader--medium {
1644
+ font-size: calc(
1645
+ var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)
1646
+ );
1647
+ line-height: var(--tw-leading, calc(
1648
+ var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)
1649
+ ));
1650
+ letter-spacing: var(--tw-tracking, 0);
1651
+ .ga-loader__icon {
1652
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 8);
1653
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 8);
1654
+ }
1655
+ }
1656
+ &.ga-loader--large {
1657
+ font-size: calc(
1658
+ var(--ga-text-md-font-size) * var(--ga-base-scaling-factor, 1)
1659
+ );
1660
+ line-height: var(--tw-leading, calc(
1661
+ var(--ga-text-md-line-height) * var(--ga-base-scaling-factor, 1)
1662
+ ));
1663
+ letter-spacing: var(--tw-tracking, calc(
1664
+ var(--ga-text-md-letter-spacing) * var(--ga-base-scaling-factor, 1)
1665
+ ));
1666
+ .ga-loader__icon {
1667
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 16);
1668
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 16);
1669
+ }
1670
+ }
1671
+ .ga-loader__icon--animated {
1672
+ animation: ga-loader-animation 1100ms linear infinite;
1673
+ }
1674
+ .ga-loader__icon--reduced-motion {
1675
+ display: none;
1676
+ color: var(--ga-color-icon-primary);
1677
+ }
1678
+ @media (prefers-reduced-motion: reduce) {
1679
+ .ga-loader__icon--animated {
1680
+ display: none;
1681
+ }
1682
+ .ga-loader__icon--reduced-motion {
1683
+ display: block;
1684
+ }
1685
+ }
1686
+ .ga-loader__label {
1687
+ color: var(--ga-color-text-body);
1688
+ &:empty {
1689
+ display: none;
1690
+ }
1691
+ }
1692
+ }
1693
+ .ga-inline-loading {
1694
+ display: flex;
1695
+ flex-direction: row;
1696
+ align-items: center;
1697
+ gap: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 1);
1698
+ font-size: calc(
1699
+ var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)
1700
+ );
1701
+ line-height: var(--tw-leading, calc(
1702
+ var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)
1703
+ ));
1704
+ letter-spacing: var(--tw-tracking, 0);
1705
+ color: var(--ga-color-text-body);
1706
+ &.ga-inline-loading--active {
1707
+ .ga-inline-loading__icon {
1708
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1709
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1710
+ animation: ga-loader-animation 1100ms linear infinite;
1711
+ }
1712
+ }
1713
+ &.ga-inline-loading--completed {
1714
+ .ga-inline-loading__icon {
1715
+ color: var(--ga-color-icon-success);
1716
+ }
1717
+ }
1718
+ &.ga-inline-loading--error {
1719
+ .ga-inline-loading__icon {
1720
+ color: var(--ga-color-icon-error);
1721
+ }
1722
+ }
1723
+ &.ga-inline-loading--inactive {
1724
+ color: var(--ga-color-text-disable-selected);
1725
+ }
1726
+ .ga-inline-loading__icon {
1727
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1728
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 4);
1729
+ }
1730
+ }
1731
+ @keyframes ga-loader-animation {
1732
+ 0% {
1733
+ transform: rotate(0deg);
1734
+ }
1735
+ 31.82% {
1736
+ transform: rotate(90deg);
1737
+ }
1738
+ 63.64% {
1739
+ transform: rotate(180deg);
1740
+ }
1741
+ 81.82% {
1742
+ transform: rotate(270deg);
1743
+ }
1744
+ 100% {
1745
+ transform: rotate(360deg);
1746
+ }
1747
+ }
1405
1748
  .ga-notification {
1406
1749
  position: relative;
1407
1750
  display: inline-flex;
@@ -3355,6 +3698,67 @@ textarea.ga-text-area {
3355
3698
  color: var(--ga-color-icon-primary);
3356
3699
  }
3357
3700
  }
3701
+ .ga-input--quantity-selector {
3702
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 40);
3703
+ padding-inline: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
3704
+ &:has(input:disabled):has(input:not(:placeholder-shown)) {
3705
+ .ga-input__quantity-separator {
3706
+ background-color: var(--ga-color-text-on-action);
3707
+ }
3708
+ .ga-input__quantity-button {
3709
+ color: var(--ga-color-text-on-action);
3710
+ }
3711
+ }
3712
+ input {
3713
+ min-width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 0);
3714
+ flex: 1;
3715
+ background-color: transparent;
3716
+ padding-inline: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 2);
3717
+ --tw-leading: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
3718
+ line-height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
3719
+ --tw-outline-style: none;
3720
+ outline-style: none;
3721
+ appearance: textfield;
3722
+ &::-webkit-outer-spin-button, &::-webkit-inner-spin-button {
3723
+ -webkit-appearance: none;
3724
+ margin: 0;
3725
+ }
3726
+ }
3727
+ .ga-input__quantity-separator {
3728
+ height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
3729
+ width: 1px;
3730
+ background-color: var(--ga-color-border-disabled);
3731
+ }
3732
+ .ga-input__quantity-button {
3733
+ display: flex;
3734
+ width: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 6);
3735
+ flex-shrink: 0;
3736
+ cursor: pointer;
3737
+ align-items: center;
3738
+ justify-content: center;
3739
+ background-color: transparent;
3740
+ padding: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 1);
3741
+ &:hover:not(:disabled) {
3742
+ border-radius: var(--ga-radius);
3743
+ background-color: var(--ga-color-surface-action-hover-2);
3744
+ outline-style: var(--tw-outline-style);
3745
+ outline-width: 1px;
3746
+ outline-color: var(--ga-color-border-action-hover);
3747
+ }
3748
+ &:focus-visible {
3749
+ border-radius: var(--ga-radius);
3750
+ outline-style: var(--tw-outline-style);
3751
+ outline-width: 2px;
3752
+ outline-offset: 2px;
3753
+ outline-color: var(--ga-color-border-focus);
3754
+ }
3755
+ &:disabled {
3756
+ cursor: not-allowed;
3757
+ background-color: transparent;
3758
+ color: var(--ga-color-text-disabled);
3759
+ }
3760
+ }
3761
+ }
3358
3762
  .ga-quick-filter-button {
3359
3763
  display: inline-flex;
3360
3764
  height: calc(calc(0.25rem * var(--ga-base-scaling-factor, 1)) * 10);
@@ -0,0 +1,67 @@
1
+ # File Uploader
2
+
3
+ ## Visual Structure
4
+
5
+ ```
6
+ ga-file-uploader [--disabled]
7
+ ├── ga-file-uploader__heading (optional)
8
+ │ ├── ga-file-uploader__heading-label
9
+ │ └── ga-file-uploader__heading-description
10
+ ├── ga-button (default variant)
11
+ ├── ga-file-uploader__dropzone (drag-and-drop variant)
12
+ │ └── ga-file-uploader__input
13
+ └── ga-file-uploader__file-list (optional)
14
+ └── ga-file-uploader__file-item [--uploaded|--success|--error]
15
+ ├── [filename text]
16
+ ├── ga-file-uploader__file-action
17
+ │ └── ga-file-uploader__file-icon
18
+ ├── ga-file-uploader__error-file (error state)
19
+ │ └── ga-file-uploader__file-action
20
+ │ └── ga-file-uploader__file-icon
21
+ └── ga-file-uploader__error-callout (error state)
22
+ └── ga-file-uploader__error-callout-icon
23
+ ```
24
+
25
+ ## Elements Hierarchy
26
+
27
+ ### Core Block
28
+
29
+ - `ga-file-uploader` - Main container for the file uploader component
30
+
31
+ ### Optional Elements
32
+
33
+ - `ga-file-uploader__heading` - Heading container for upload title and helper text
34
+ - `ga-file-uploader__heading-label` - Heading label text
35
+ - `ga-file-uploader__heading-description` - Heading description text
36
+ - `ga-file-uploader__dropzone` - Drag-and-drop upload area, commonly used on a `<label>` with a nested file input
37
+ - `ga-file-uploader__input` - Native `type="file"` input for the drag-and-drop variant
38
+ - `ga-file-uploader__file-list` - Container for uploaded file items
39
+ - `ga-file-uploader__file-item` - Single uploaded file row
40
+ - `ga-file-uploader__file-action` - Button element for actionable file item icons
41
+ - `ga-file-uploader__file-icon` - Icon inside a file item or file action
42
+ - `ga-file-uploader__error-file` - Wrapper for file name and action in the error state
43
+ - `ga-file-uploader__error-callout` - Error message container
44
+ - `ga-file-uploader__error-callout-icon` - Icon displayed in the error callout
45
+
46
+ ### State Modifiers
47
+
48
+ - `ga-file-uploader--disabled` - Styles the uploader as disabled
49
+ - `ga-file-uploader__dropzone--drag-hover` - Styles the dropzone when a file is dragged over it
50
+ - `ga-file-uploader__dropzone--disabled` - Disabled styling for label-based dropzones
51
+ - `ga-file-uploader__file-item--uploaded` - Uploaded file item state
52
+ - `ga-file-uploader__file-item--success` - Successful upload file item state
53
+ - `ga-file-uploader__file-item--error` - Error file item state
54
+
55
+ For the loading state, compose with the [Loader](?path=/docs/molecules-loader--docs) component (`ga-loader ga-loader--small`) in place of the file icon.
56
+
57
+ ## Examples
58
+
59
+ ### Default
60
+
61
+ ### Disabled
62
+
63
+ ### Drag and Drop
64
+
65
+ ### Drag and Drop Hover
66
+
67
+ ### Drag and Drop Disabled