@equinor/eds-core-react 2.4.0-beta.0 → 2.4.0

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.
Files changed (41) hide show
  1. package/build/index.css +2 -336
  2. package/build/index.min.css +1 -1
  3. package/dist/eds-core-react.cjs +1 -5
  4. package/dist/esm/components/Autocomplete/MultipleInput.js +2 -2
  5. package/dist/esm/components/Autocomplete/useAutocomplete.js +0 -4
  6. package/dist/esm/components/InputWrapper/InputWrapper.js +1 -1
  7. package/dist/esm/components/Textarea/Textarea.js +1 -1
  8. package/dist/esm-next/components/next/Input/Input.js +1 -1
  9. package/dist/esm-next/components/next/TextField/TextField.js +1 -0
  10. package/dist/esm-next/index.next.js +0 -5
  11. package/dist/index.next.cjs +6 -417
  12. package/dist/types/components/Autocomplete/AutocompleteContext.d.ts +2 -2
  13. package/dist/types/components/Autocomplete/useAutocomplete.d.ts +2 -2
  14. package/dist/types/components/next/Input/Input.types.d.ts +1 -4
  15. package/dist/types/components/next/index.d.ts +0 -10
  16. package/package.json +32 -39
  17. package/dist/esm-next/components/next/Banner/Banner.js +0 -88
  18. package/dist/esm-next/components/next/Link/Link.js +0 -24
  19. package/dist/esm-next/components/next/Search/Search.js +0 -118
  20. package/dist/esm-next/components/next/TextArea/TextArea.js +0 -131
  21. package/dist/esm-next/components/next/Tooltip/Tooltip.js +0 -84
  22. package/dist/types/components/next/Banner/Banner.d.ts +0 -23
  23. package/dist/types/components/next/Banner/Banner.figma.d.ts +0 -1
  24. package/dist/types/components/next/Banner/Banner.types.d.ts +0 -33
  25. package/dist/types/components/next/Banner/index.d.ts +0 -2
  26. package/dist/types/components/next/Link/Link.d.ts +0 -4
  27. package/dist/types/components/next/Link/Link.figma.d.ts +0 -1
  28. package/dist/types/components/next/Link/Link.types.d.ts +0 -11
  29. package/dist/types/components/next/Link/index.d.ts +0 -2
  30. package/dist/types/components/next/Search/Search.d.ts +0 -9
  31. package/dist/types/components/next/Search/Search.figma.d.ts +0 -1
  32. package/dist/types/components/next/Search/Search.types.d.ts +0 -16
  33. package/dist/types/components/next/Search/index.d.ts +0 -2
  34. package/dist/types/components/next/TextArea/TextArea.d.ts +0 -11
  35. package/dist/types/components/next/TextArea/TextArea.figma.d.ts +0 -1
  36. package/dist/types/components/next/TextArea/TextArea.types.d.ts +0 -21
  37. package/dist/types/components/next/TextArea/index.d.ts +0 -2
  38. package/dist/types/components/next/Tooltip/Tooltip.d.ts +0 -7
  39. package/dist/types/components/next/Tooltip/Tooltip.figma.d.ts +0 -1
  40. package/dist/types/components/next/Tooltip/Tooltip.types.d.ts +0 -17
  41. package/dist/types/components/next/Tooltip/index.d.ts +0 -2
package/build/index.css CHANGED
@@ -1043,7 +1043,8 @@
1043
1043
 
1044
1044
  /* Input/Textarea element */
1045
1045
  .eds-input {
1046
- --_placeholder-text-color: var(--eds-color-text-subtle);
1046
+ /* Temporary alias until proper placeholder text token is available */
1047
+ --_placeholder-text-color: var(--eds-color-border-strong);
1047
1048
 
1048
1049
  flex: 1;
1049
1050
  min-inline-size: 0;
@@ -1130,339 +1131,4 @@
1130
1131
  margin-block: calc(var(--eds-sizing-icon-xs) / -2);
1131
1132
  }
1132
1133
  }
1133
- @layer eds-components {
1134
- .eds-text-area {
1135
- & .label-row {
1136
- display: flex;
1137
- align-items: center;
1138
- justify-content: space-between;
1139
- gap: var(--eds-typography-gap-horizontal);
1140
- inline-size: 100%;
1141
-
1142
- & > button {
1143
- flex-shrink: 0;
1144
- margin-block: calc(var(--eds-sizing-icon-xs) / -2);
1145
- }
1146
- }
1147
-
1148
- & .eds-input-container {
1149
- align-items: flex-start;
1150
- padding-block: var(--eds-container-space-vertical);
1151
- overflow: hidden;
1152
-
1153
- & textarea.eds-input {
1154
- box-sizing: border-box;
1155
- overflow: auto;
1156
- white-space: pre-wrap;
1157
- text-overflow: clip;
1158
- resize: vertical;
1159
- padding-block-end: var(--eds-container-space-vertical);
1160
- padding-inline-end: var(--eds-selectable-space-horizontal);
1161
- }
1162
-
1163
- &:has(+ .helper-row) {
1164
- margin-block-end: calc(
1165
- var(--eds-spacing-vertical-3xs) - var(--eds-generic-gap-vertical)
1166
- );
1167
- }
1168
- }
1169
-
1170
- & .helper-row {
1171
- display: flex;
1172
- align-items: baseline;
1173
- gap: var(--eds-typography-gap-horizontal);
1174
- inline-size: 100%;
1175
- }
1176
-
1177
- & .char-count {
1178
- flex-shrink: 0;
1179
- color: var(--eds-color-text-subtle);
1180
- }
1181
- }
1182
- }
1183
- /* Must be outside @layer: [data-font-family] { margin: 0 } in variables.css
1184
- is unlayered and overrides any margin inside @layer eds-components. */
1185
- .eds-text-area {
1186
- & .eds-error-icon {
1187
- margin-block-start: var(--eds-spacing-vertical-2xs);
1188
- }
1189
-
1190
- & .char-count {
1191
- margin-inline-start: auto;
1192
- }
1193
-
1194
- /* Extend textarea to bottom-right corner so the resize handle sits flush. */
1195
- & textarea.eds-input {
1196
- margin-block-end: calc(-1 * var(--eds-container-space-vertical));
1197
- margin-inline-end: calc(-1 * var(--eds-selectable-space-horizontal));
1198
- }
1199
- }
1200
- @layer eds-components {
1201
- .eds-search {
1202
- /* Color changes based on state — accent by default, overridden when readonly/disabled */
1203
- & .search-icon {
1204
- color: var(--eds-color-text-subtle);
1205
-
1206
- [data-readonly] & {
1207
- color: var(--eds-color-border-strong);
1208
- }
1209
-
1210
- [data-disabled] & {
1211
- color: var(--eds-color-text-disabled);
1212
- }
1213
- }
1214
-
1215
- /* Hide native clear button — replaced by our custom one */
1216
- & [type='search']::-webkit-search-cancel-button {
1217
- appearance: none;
1218
- }
1219
- }
1220
- }
1221
- @layer eds-components {
1222
- .eds-link {
1223
- color: var(--eds-color-text-link);
1224
- text-decoration: underline;
1225
- text-decoration-thickness: var(--eds-sizing-stroke-thin);
1226
- text-underline-offset: var(--eds-spacing-vertical-4xs);
1227
-
1228
- transition: color 150ms ease-in-out;
1229
- }
1230
-
1231
- .eds-link:hover {
1232
- color: var(--eds-color-text-strong);
1233
- }
1234
-
1235
- .eds-link:focus-visible {
1236
- border-radius: var(--eds-spacing-border-radius-rounded);
1237
- color: var(--eds-color-text-strong);
1238
- outline: var(--eds-sizing-stroke-thin) solid var(--eds-color-border-focus);
1239
- outline-offset: var(--eds-spacing-vertical-3xs);
1240
- }
1241
-
1242
- /* Standalone variant: flex layout for icon + text */
1243
- .eds-link[data-variant='standalone'] {
1244
- position: relative;
1245
-
1246
- gap: var(--eds-typography-gap-horizontal);
1247
- align-items: center;
1248
-
1249
- border-bottom: var(--eds-sizing-stroke-thin) solid currentcolor;
1250
-
1251
- text-decoration: none;
1252
- }
1253
-
1254
- /* Use pseudo-element for focus ring so it can have border-radius
1255
- while border-bottom stays straight */
1256
- .eds-link[data-variant='standalone']:focus-visible {
1257
- border-radius: 0;
1258
- outline: none;
1259
- }
1260
-
1261
- .eds-link[data-variant='standalone']:focus-visible::after {
1262
- pointer-events: none;
1263
- content: '';
1264
-
1265
- position: absolute;
1266
- inset: calc(var(--eds-spacing-vertical-3xs) * -1);
1267
-
1268
- border: var(--eds-sizing-stroke-thin) solid var(--eds-color-border-focus);
1269
- border-radius: var(--eds-spacing-border-radius-rounded);
1270
- }
1271
- }
1272
- /* Outside @layer to override typography.css [data-font-family] { display: block } */
1273
- .eds-link[data-variant='standalone'] {
1274
- display: inline-flex;
1275
- }
1276
- @layer eds-components {
1277
- .eds-tooltip {
1278
- /* Gap between tooltip and anchor; also used for the arrow height */
1279
- --_arrow: var(--eds-spacing-vertical-3xs);
1280
- /* Width of the arrow tip (1px = visually sharp, matches Figma) */
1281
- --_tip: 1px;
1282
-
1283
- /* UA popover reset */
1284
- position: fixed;
1285
- margin: 0;
1286
- inset: auto;
1287
- border: none;
1288
- overflow: visible;
1289
-
1290
- position-anchor: var(--tooltip-anchor-name);
1291
- width: max-content;
1292
- background-color: var(--eds-color-text-strong);
1293
- color: var(--eds-color-text-strong-on-emphasis);
1294
- border-radius: var(--eds-spacing-border-radius-rounded);
1295
- padding-block: var(--eds-container-space-vertical);
1296
- padding-inline: var(--eds-container-space-horizontal);
1297
-
1298
- /* Rectangle shadow — always downward regardless of arrow direction (no shadow tokens in EDS 2.0) */
1299
- box-shadow:
1300
- 0px 2px 4px rgba(0, 0, 0, 0.14),
1301
- 0px 3px 4px rgba(0, 0, 0, 0.12),
1302
- 0px 1px 5px rgba(0, 0, 0, 0.2);
1303
-
1304
- /* Arrow: ::before is expanded by --_arrow on all sides via `inset: calc(-1 * var(--_arrow))`.
1305
- A 16-point star clip-path pre-draws all 4 arrows. `margin: inherit` shifts the pseudo-element
1306
- to match the tooltip's own margin, so 3 arrows hide behind the tooltip body (z-index:-1)
1307
- and only the gap-side arrow remains visible. */
1308
- &::before {
1309
- content: '';
1310
- position: absolute;
1311
- z-index: -1;
1312
- background: inherit;
1313
- inset: calc(-1 * var(--_arrow));
1314
- margin: inherit;
1315
- clip-path: polygon(
1316
- /* top */
1317
- calc(50% - var(--_arrow)) var(--_arrow),
1318
- calc(50% - var(--_tip)) 0,
1319
- calc(50% + var(--_tip)) 0,
1320
- calc(50% + var(--_arrow)) var(--_arrow),
1321
- /* right */
1322
- calc(100% - var(--_arrow)) calc(50% - var(--_arrow)),
1323
- 100% calc(50% - var(--_tip)),
1324
- 100% calc(50% + var(--_tip)),
1325
- calc(100% - var(--_arrow)) calc(50% + var(--_arrow)),
1326
- /* bottom */
1327
- calc(50% + var(--_arrow)) calc(100% - var(--_arrow)),
1328
- calc(50% + var(--_tip)) 100%,
1329
- calc(50% - var(--_tip)) 100%,
1330
- calc(50% - var(--_arrow)) calc(100% - var(--_arrow)),
1331
- /* left */
1332
- var(--_arrow) calc(50% + var(--_arrow)),
1333
- 0 calc(50% + var(--_tip)),
1334
- 0 calc(50% - var(--_tip)),
1335
- var(--_arrow) calc(50% - var(--_arrow))
1336
- );
1337
- }
1338
-
1339
- &[data-placement='top'] {
1340
- position-area: top;
1341
- bottom: var(--_arrow);
1342
- margin: var(--_arrow) var(--_arrow) 0;
1343
- position-try-fallbacks: flip-block, --eds-tooltip-bottom;
1344
- }
1345
-
1346
- &[data-placement='bottom'] {
1347
- position-area: bottom;
1348
- top: var(--_arrow);
1349
- margin: 0 var(--_arrow) var(--_arrow);
1350
- position-try-fallbacks: flip-block, --eds-tooltip-top;
1351
- }
1352
-
1353
- &[data-placement='right'] {
1354
- position-area: right;
1355
- left: var(--_arrow);
1356
- margin: var(--_arrow) var(--_arrow) var(--_arrow) 0;
1357
- position-try-fallbacks: flip-inline, --eds-tooltip-left;
1358
- }
1359
-
1360
- &[data-placement='left'] {
1361
- position-area: left;
1362
- right: var(--_arrow);
1363
- margin: var(--_arrow) 0 var(--_arrow) var(--_arrow);
1364
- position-try-fallbacks: flip-inline, --eds-tooltip-right;
1365
- }
1366
-
1367
- & .label {
1368
- font-feature-settings: 'lnum', 'tnum';
1369
- }
1370
- }
1371
-
1372
- .eds-tooltip-anchor {
1373
- display: inline-block;
1374
- anchor-name: var(--tooltip-anchor-name);
1375
- }
1376
- }
1377
- /* @position-try must be outside @layer per spec. */
1378
- @position-try --eds-tooltip-bottom {
1379
- position-area: bottom;
1380
- top: var(--_arrow);
1381
- margin: 0 var(--_arrow) var(--_arrow);
1382
- }
1383
- @position-try --eds-tooltip-top {
1384
- position-area: top;
1385
- bottom: var(--_arrow);
1386
- margin: var(--_arrow) var(--_arrow) 0;
1387
- }
1388
- @position-try --eds-tooltip-left {
1389
- position-area: left;
1390
- right: var(--_arrow);
1391
- margin: var(--_arrow) 0 var(--_arrow) var(--_arrow);
1392
- }
1393
- @position-try --eds-tooltip-right {
1394
- position-area: right;
1395
- left: var(--_arrow);
1396
- margin: var(--_arrow) var(--_arrow) var(--_arrow) 0;
1397
- }
1398
- @layer eds-components {
1399
- .eds-banner {
1400
- position: relative;
1401
-
1402
- display: flex;
1403
- flex-wrap: wrap;
1404
- gap: var(--eds-container-space-horizontal);
1405
- align-items: flex-start;
1406
-
1407
- padding: var(--eds-container-space-vertical)
1408
- var(--eds-container-space-horizontal);
1409
- border-radius: var(--eds-spacing-border-radius-rounded, 4px);
1410
-
1411
- background: var(--eds-color-bg-surface);
1412
- outline: var(--eds-sizing-stroke-thin) solid var(--eds-color-border-medium);
1413
- }
1414
-
1415
- .eds-banner__icon {
1416
- display: flex;
1417
- flex-shrink: 0;
1418
- align-items: center;
1419
-
1420
- height: var(--eds-typography-line-height, 1.5rem);
1421
-
1422
- /*
1423
- * Negative margin compensates for Figma's icon container padding,
1424
- * pulling the icon closer to the component edge.
1425
- * Figma variable: selectable/icon-container-padding (↕︎ -6px, ↔︎ -4.8px)
1426
- * See #4684 for exporting this as a CSS custom property.
1427
- */
1428
- margin-block: -6px;
1429
- margin-inline-start: -4.8px;
1430
-
1431
- color: var(--eds-color-text-subtle);
1432
- }
1433
-
1434
- .eds-banner__message {
1435
- flex: 1;
1436
- min-width: 0;
1437
- margin: 0;
1438
- color: var(--eds-color-text-strong);
1439
- }
1440
-
1441
- .eds-banner__actions {
1442
- display: flex;
1443
- gap: var(--eds-selectable-gap-horizontal, 8px);
1444
- align-items: center;
1445
- }
1446
-
1447
- .eds-banner__actions[data-placement='bottom'] {
1448
- flex-basis: 100%;
1449
- }
1450
-
1451
- .eds-banner:has(.eds-banner__dismiss) {
1452
- padding-inline-end: calc(
1453
- var(--eds-container-space-horizontal) + 24px +
1454
- var(--eds-container-space-horizontal)
1455
- );
1456
- }
1457
-
1458
- .eds-banner__dismiss {
1459
- position: absolute;
1460
- top: var(--eds-container-space-vertical);
1461
- right: var(--eds-container-space-horizontal);
1462
-
1463
- /* Same Figma icon container padding compensation as .eds-banner__icon */
1464
- margin-block: -6px;
1465
- margin-inline-end: -4.8px;
1466
- }
1467
- }
1468
1134