@tangible/ui 0.0.3 → 0.0.4

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 (51) hide show
  1. package/README.md +21 -13
  2. package/components/Accordion/Accordion.d.ts +1 -1
  3. package/components/Accordion/Accordion.js +3 -3
  4. package/components/Accordion/types.d.ts +8 -1
  5. package/components/Avatar/Avatar.js +16 -7
  6. package/components/Avatar/AvatarGroup.js +7 -5
  7. package/components/Avatar/types.d.ts +11 -0
  8. package/components/Button/Button.js +10 -3
  9. package/components/Button/types.d.ts +9 -1
  10. package/components/Card/Card.js +26 -13
  11. package/components/Checkbox/Checkbox.d.ts +1 -1
  12. package/components/Chip/Chip.d.ts +37 -1
  13. package/components/Chip/Chip.js +10 -8
  14. package/components/ChipGroup/ChipGroup.js +5 -4
  15. package/components/ChipGroup/types.d.ts +3 -0
  16. package/components/Dropdown/Dropdown.d.ts +19 -1
  17. package/components/Dropdown/Dropdown.js +84 -28
  18. package/components/Dropdown/index.d.ts +2 -2
  19. package/components/Dropdown/index.js +1 -1
  20. package/components/Dropdown/types.d.ts +15 -0
  21. package/components/IconButton/IconButton.js +5 -4
  22. package/components/IconButton/index.d.ts +1 -1
  23. package/components/IconButton/types.d.ts +24 -4
  24. package/components/Modal/Modal.d.ts +16 -2
  25. package/components/Modal/Modal.js +45 -20
  26. package/components/MoveHandle/MoveHandle.js +3 -3
  27. package/components/MoveHandle/types.d.ts +12 -2
  28. package/components/Notice/Notice.js +32 -19
  29. package/components/Select/Select.js +6 -2
  30. package/components/Sidebar/Sidebar.d.ts +6 -1
  31. package/components/Sidebar/Sidebar.js +65 -11
  32. package/components/Sidebar/index.d.ts +1 -1
  33. package/components/Sidebar/types.d.ts +39 -14
  34. package/components/Tabs/Tabs.d.ts +1 -1
  35. package/components/Tabs/Tabs.js +12 -3
  36. package/components/Tabs/types.d.ts +20 -5
  37. package/components/TextInput/TextInput.js +10 -2
  38. package/components/Tooltip/Tooltip.d.ts +2 -2
  39. package/components/Tooltip/Tooltip.js +61 -40
  40. package/components/Tooltip/index.d.ts +1 -1
  41. package/components/Tooltip/types.d.ts +28 -1
  42. package/components/index.d.ts +2 -2
  43. package/components/index.js +1 -1
  44. package/package.json +1 -1
  45. package/styles/all.css +1 -1
  46. package/styles/all.expanded.css +310 -57
  47. package/styles/all.expanded.unlayered.css +310 -57
  48. package/styles/all.unlayered.css +1 -1
  49. package/styles/system/_tokens.scss +3 -0
  50. package/tui-manifest.json +278 -64
  51. package/utils/focus-trap.js +8 -1
@@ -52,6 +52,7 @@
52
52
  --tui-button-bg-interact
53
53
  --tui-button-fg-interact
54
54
  --tui-button-border-interact
55
+ --tui-button-fg-active
55
56
  --tui-control-height-sm
56
57
  --tui-control-height-md
57
58
  --tui-control-height-lg
@@ -75,6 +76,7 @@
75
76
  --tui-chip-border
76
77
  --tui-chip-icon
77
78
  --tui-chip-radius
79
+ --tui-chip-selected-ring
78
80
  */
79
81
  /* @tui-tokens
80
82
  --tui-chip-group-gap
@@ -176,6 +178,7 @@
176
178
  --tui-notice-bg
177
179
  --tui-notice-border
178
180
  --tui-notice-stripe
181
+ --tui-notice-stripe-width
179
182
  --tui-notice-fg
180
183
  --tui-notice-radius
181
184
  --tui-notice-padding
@@ -297,6 +300,8 @@
297
300
  --tui-focus-ring-width: 2px;
298
301
  --tui-focus-ring-offset: 2px;
299
302
  --tui-focus-ring-color: #2563eb;
303
+ /* Font Weight */
304
+ --tui-font-weight-medium: 500;
300
305
  /* Border */
301
306
  --tui-border-width: 1px;
302
307
  /* Z-Index Layers */
@@ -683,7 +688,7 @@
683
688
  :where(.tui-interface) .tui-accordion__item[data-state=open] {
684
689
  --_bg: var(--_bg-open);
685
690
  }
686
- :where(.tui-interface) .tui-accordion__item[data-disabled=true] {
691
+ :where(.tui-interface) .tui-accordion__item[data-disabled] {
687
692
  opacity: var(--tui-opacity-disabled);
688
693
  }
689
694
  :where(.tui-interface) .tui-accordion__heading {
@@ -734,7 +739,7 @@
734
739
  transition-duration: var(--tui-motion-duration);
735
740
  transition-timing-function: var(--tui-motion-timing);
736
741
  }
737
- [data-state=open] > :where(.tui-interface) .tui-accordion__indicator {
742
+ :where(.tui-interface) .tui-accordion__trigger[data-state=open] > .tui-accordion__indicator {
738
743
  transform: rotate(180deg);
739
744
  }
740
745
  :where(.tui-interface) .tui-accordion__panel {
@@ -799,7 +804,7 @@
799
804
  --_radius: var(--tui-avatar-radius, 50%);
800
805
  --_bg: var(--tui-avatar-bg, var(--tui-color-bg-muted));
801
806
  --_fg: var(--tui-avatar-fg, var(--tui-color-fg-inverted));
802
- --_border: var(--tui-avatar-border, 2px solid var(--tui-color-bg));
807
+ --_border: var(--tui-avatar-border, none);
803
808
  position: relative;
804
809
  display: inline-flex;
805
810
  align-items: center;
@@ -807,9 +812,10 @@
807
812
  width: var(--_size);
808
813
  height: var(--_size);
809
814
  border-radius: var(--_radius);
815
+ border: var(--_border);
810
816
  background-color: var(--_bg);
811
817
  color: var(--_fg);
812
- font-weight: 500;
818
+ font-weight: var(--tui-font-weight-medium, 500);
813
819
  font-size: calc(var(--_size) * 0.4);
814
820
  line-height: 1;
815
821
  flex-shrink: 0;
@@ -952,6 +958,20 @@
952
958
  :where(.tui-interface) .tui-avatar-group.is-overlap .tui-avatar {
953
959
  box-shadow: 0 0 0 var(--tui-avatar-group-border-width, 2px) var(--tui-avatar-group-border-color, var(--tui-color-bg-surface));
954
960
  }
961
+ .tui-interface[data-theme=dark] .tui-avatar.is-color-amber, .tui-interface[data-theme=dark] .tui-avatar.is-color-lime, .tui-interface[data-theme=dark] .tui-avatar.is-color-cyan,
962
+ .tui-interface[data-theme=dark] :where(.tui-interface) .tui-avatar.is-color-amber,
963
+ .tui-interface[data-theme=dark] :where(.tui-interface) .tui-avatar.is-color-lime,
964
+ .tui-interface[data-theme=dark] :where(.tui-interface) .tui-avatar.is-color-cyan {
965
+ --_fg: var(--tui-avatar-fg, var(--tui-color-fg-inverted));
966
+ }
967
+ @media (prefers-color-scheme: dark) {
968
+ .tui-interface[data-theme=auto] .tui-avatar.is-color-amber, .tui-interface[data-theme=auto] .tui-avatar.is-color-lime, .tui-interface[data-theme=auto] .tui-avatar.is-color-cyan,
969
+ .tui-interface[data-theme=auto] :where(.tui-interface) .tui-avatar.is-color-amber,
970
+ .tui-interface[data-theme=auto] :where(.tui-interface) .tui-avatar.is-color-lime,
971
+ .tui-interface[data-theme=auto] :where(.tui-interface) .tui-avatar.is-color-cyan {
972
+ --_fg: var(--tui-avatar-fg, var(--tui-color-fg-inverted));
973
+ }
974
+ }
955
975
  @media (forced-colors: active) {
956
976
  :where(.tui-interface) .tui-avatar {
957
977
  background-color: Canvas;
@@ -997,15 +1017,15 @@
997
1017
  padding-block: 0.575em;
998
1018
  min-height: var(--tui-control-height-md);
999
1019
  gap: 0.5em;
1020
+ border-radius: var(--_radius);
1021
+ transition-duration: var(--tui-motion-duration);
1022
+ transition-timing-function: var(--tui-motion-timing);
1023
+ transition-property: border-color, color, background-color;
1000
1024
  background-color: var(--_bg) !important;
1001
1025
  color: var(--_fg) !important;
1002
1026
  border-color: var(--_border) !important;
1003
1027
  border-style: solid;
1004
1028
  border-width: var(--tui-border-width);
1005
- border-radius: var(--_radius);
1006
- transition-duration: var(--tui-motion-duration);
1007
- transition-timing-function: var(--tui-motion-timing);
1008
- transition-property: border-color, color, background-color;
1009
1029
  }
1010
1030
  .tui-interface .tui-button .tui-icon {
1011
1031
  font-size: inherit;
@@ -1048,6 +1068,12 @@
1048
1068
  display: inline-block;
1049
1069
  animation: tui-spin 0.85s linear infinite;
1050
1070
  }
1071
+ @media (prefers-reduced-motion: reduce) {
1072
+ .tui-interface .tui-button[data-loading=true]::before {
1073
+ animation: none;
1074
+ border-style: dashed;
1075
+ }
1076
+ }
1051
1077
  .tui-interface .tui-button.is-width-full {
1052
1078
  width: 100%;
1053
1079
  }
@@ -1143,6 +1169,7 @@
1143
1169
  --_bg: var(--tui-button-bg, transparent);
1144
1170
  --_fg: var(--tui-button-fg, var(--tui-theme-primary-strong));
1145
1171
  --_border: transparent;
1172
+ text-decoration: underline;
1146
1173
  border-width: 0;
1147
1174
  padding: 0;
1148
1175
  }
@@ -1183,10 +1210,15 @@
1183
1210
  color: LinkText;
1184
1211
  border-color: transparent;
1185
1212
  }
1213
+ .tui-interface .tui-button[disabled], .tui-interface .tui-button.is-disabled {
1214
+ color: GrayText;
1215
+ border-color: GrayText;
1216
+ background-color: Canvas;
1217
+ }
1186
1218
  }
1187
1219
  .tui-interface input[type=file] {
1188
1220
  --_bg: var(--tui-button-bg, var(--tui-theme-primary-base));
1189
- --_fg: var(--tui-button-fg, var(--tui-color-bg-surface));
1221
+ --_fg: var(--tui-button-fg, var(--tui-color-fg-on-accent));
1190
1222
  --_border: var(--tui-button-border, var(--tui-theme-primary-base));
1191
1223
  --_radius: var(--tui-button-radius, var(--tui-radius-md));
1192
1224
  --_bg-interact: var(--tui-button-bg-interact, var(--tui-theme-primary-stronger));
@@ -1206,13 +1238,13 @@
1206
1238
  padding-block: 0.575em;
1207
1239
  min-height: var(--tui-control-height-md);
1208
1240
  gap: 0.5em;
1209
- background-color: var(--_bg);
1210
- color: var(--_fg);
1211
- border: var(--tui-border-width) solid var(--_border);
1212
1241
  border-radius: var(--_radius);
1213
1242
  transition-duration: var(--tui-motion-duration);
1214
1243
  transition-timing-function: var(--tui-motion-timing);
1215
1244
  transition-property: border-color, color, background-color;
1245
+ background-color: var(--_bg);
1246
+ color: var(--_fg);
1247
+ border: var(--tui-border-width) solid var(--_border);
1216
1248
  }
1217
1249
  .tui-interface input[type=file]:hover::file-selector-button {
1218
1250
  background-color: var(--_bg-interact);
@@ -1236,9 +1268,9 @@
1236
1268
  --_border: var(--tui-card-border, var(--tui-color-border));
1237
1269
  --_border-interact: var(--tui-card-border-interact, var(--tui-theme-primary-base));
1238
1270
  --_radius: var(--tui-card-radius, var(--tui-radius-md));
1239
- --_shadow: var(--tui-card-shadow, var(--tui-shadow-md));
1240
- --_shadow-interact: var(--tui-card-shadow-interact, var(--tui-shadow-sm));
1241
- --_padding: var(--tui-card-padding, var(--tui-spacing-md));
1271
+ --_shadow: var(--tui-card-shadow, var(--tui-shadow-sm));
1272
+ --_shadow-interact: var(--tui-card-shadow-interact, var(--tui-shadow-md));
1273
+ --_padding: var(--tui-card-padding, var(--tui-spacing-lg));
1242
1274
  --_foot-basis: var(--tui-card-foot-basis, 500px);
1243
1275
  container-type: inline-size;
1244
1276
  container-name: tuiCard;
@@ -1367,15 +1399,23 @@
1367
1399
  :where(.tui-interface) .tui-card.has-interaction:hover {
1368
1400
  --_border: var(--_border-interact);
1369
1401
  }
1370
- :where(.tui-interface) .tui-card.has-interaction:focus, :where(.tui-interface) .tui-card.has-interaction:focus-within {
1402
+ :where(.tui-interface) .tui-card.has-interaction:focus-visible, :where(.tui-interface) .tui-card.has-interaction:has(:focus-visible) {
1371
1403
  --_border: var(--_border-interact);
1372
1404
  }
1373
1405
  :where(.tui-interface) .tui-card.has-interaction:active, :where(.tui-interface) .tui-card.has-interaction.active {
1374
- --_border: var(--tui-card-border-active, var(--tui-theme-secondary-subtlest));
1406
+ --_border: var(--tui-card-border-active, var(--tui-theme-primary-soft));
1407
+ }
1408
+ :where(.tui-interface) .tui-card .tui-stretched-link:focus {
1409
+ outline: none;
1375
1410
  }
1376
- :where(.tui-interface) .tui-card.has-interaction [disabled],
1377
- :where(.tui-interface) .tui-card.has-interaction .disabled {
1411
+ :where(.tui-interface) .tui-card .tui-stretched-link:focus-visible::after {
1412
+ outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
1413
+ outline-offset: calc(-1 * var(--tui-focus-ring-offset));
1414
+ border-radius: var(--_radius);
1415
+ }
1416
+ :where(.tui-interface) .tui-card[aria-disabled=true] {
1378
1417
  opacity: var(--tui-opacity-disabled);
1418
+ pointer-events: none;
1379
1419
  }
1380
1420
  :where(.tui-interface) .tui-card.is-style-elevated {
1381
1421
  box-shadow: var(--_shadow);
@@ -1464,7 +1504,7 @@
1464
1504
  outline-offset: var(--tui-focus-ring-offset);
1465
1505
  }
1466
1506
  :where(.tui-interface) .tui-chip.is-interactive:is(:active, [aria-pressed=true], .is-selected), :where(.tui-interface) .tui-chip.is-interactive:has(input:checked), :where(.tui-interface) .tui-chip:is(a, button, [role=button]):is(:active, [aria-pressed=true], .is-selected), :where(.tui-interface) .tui-chip:is(a, button, [role=button]):has(input:checked), :where(.tui-interface) .tui-chip:has(input[type=checkbox], input[type=radio]):is(:active, [aria-pressed=true], .is-selected), :where(.tui-interface) .tui-chip:has(input[type=checkbox], input[type=radio]):has(input:checked) {
1467
- box-shadow: 0 0 0 1px var(--_fg) inset;
1507
+ box-shadow: 0 0 0 var(--tui-chip-selected-ring, 1px) var(--_fg) inset;
1468
1508
  filter: brightness(0.95);
1469
1509
  }
1470
1510
  :where(.tui-interface) .tui-chip.is-interactive:is(a), :where(.tui-interface) .tui-chip:is(a, button, [role=button]):is(a), :where(.tui-interface) .tui-chip:has(input[type=checkbox], input[type=radio]):is(a) {
@@ -1502,12 +1542,21 @@
1502
1542
  --_border: var(--tui-chip-border, var(--tui-theme-danger-subtlest));
1503
1543
  --_icon: var(--tui-chip-icon, var(--tui-theme-danger-base));
1504
1544
  }
1505
- :where(.tui-interface) .tui-chip.is-style-ghost:not(:is(a, button, [role=button])), :where(.tui-interface) .tui-chip.is-style-ghost:not(:is(:hover, :focus)) {
1545
+ :where(.tui-interface) .tui-chip.is-style-ghost {
1506
1546
  --_bg: transparent;
1507
- }
1508
- :where(.tui-interface) .tui-chip.is-style-ghost:not(:is(:focus-visible, :active, [aria-pressed=true], .is-selected)) {
1509
1547
  --_border: transparent;
1510
1548
  }
1549
+ @media (hover: hover) {
1550
+ :where(.tui-interface) .tui-chip.is-style-ghost.is-interactive:hover, :where(.tui-interface) .tui-chip.is-style-ghost:is(a, button, [role=button]):hover, :where(.tui-interface) .tui-chip.is-style-ghost:has(input[type=checkbox], input[type=radio]):hover {
1551
+ --_bg: var(--tui-chip-bg, var(--tui-theme-secondary-subtle));
1552
+ }
1553
+ }
1554
+ :where(.tui-interface) .tui-chip.is-style-ghost.is-interactive:focus, :where(.tui-interface) .tui-chip.is-style-ghost:is(a, button, [role=button]):focus, :where(.tui-interface) .tui-chip.is-style-ghost:has(input[type=checkbox], input[type=radio]):focus {
1555
+ --_bg: var(--tui-chip-bg, var(--tui-theme-secondary-subtle));
1556
+ }
1557
+ :where(.tui-interface) .tui-chip.is-style-ghost:is(:focus-visible, :active, [aria-pressed=true], .is-selected), :where(.tui-interface) .tui-chip.is-style-ghost:has(input:checked) {
1558
+ --_border: var(--tui-chip-border, var(--tui-theme-secondary-subtle));
1559
+ }
1511
1560
  :where(.tui-interface) .tui-chip.is-style-outline {
1512
1561
  --_bg: var(--tui-chip-bg, var(--tui-color-bg-surface));
1513
1562
  --_fg: var(--tui-chip-fg, var(--tui-theme-secondary-base));
@@ -1956,12 +2005,12 @@
1956
2005
  }
1957
2006
  :where(.tui-interface) .tui-dropdown {
1958
2007
  --_bg: var(--tui-dropdown-bg, var(--tui-color-bg-elevated));
1959
- --_fg: var(--tui-dropdown-fg, var(--tui-color-fg-default));
2008
+ --_fg: var(--tui-dropdown-fg, var(--tui-color-fg));
1960
2009
  --_radius: var(--tui-dropdown-radius, var(--tui-radius-sm));
1961
2010
  --_shadow: var(--tui-dropdown-shadow, var(--tui-shadow-md));
1962
2011
  --_z: var(--tui-dropdown-z, var(--tui-layer-top));
1963
- --_border: var(--tui-dropdown-border, var(--tui-color-border-default));
1964
- --_item-bg-hover: var(--tui-dropdown-item-bg-hover, var(--tui-color-bg-subtle));
2012
+ --_border: var(--tui-dropdown-border, var(--tui-color-border));
2013
+ --_item-bg-hover: var(--tui-dropdown-item-bg-hover, var(--tui-color-bg-muted));
1965
2014
  --_item-bg-active: var(--tui-dropdown-item-bg-active, var(--tui-color-bg-muted));
1966
2015
  z-index: var(--_z);
1967
2016
  min-width: var(--tui-dropdown-min-width, 160px);
@@ -1991,16 +2040,21 @@
1991
2040
  --tui-button-fg: inherit;
1992
2041
  --tui-button-border-color: transparent;
1993
2042
  }
1994
- :where(.tui-interface) .tui-dropdown__item:hover, :where(.tui-interface) .tui-dropdown__item:focus-visible, :where(.tui-interface) .tui-dropdown__item[data-active],
2043
+ :where(.tui-interface) .tui-dropdown__item:hover, :where(.tui-interface) .tui-dropdown__item[data-active],
1995
2044
  :where(.tui-interface) .tui-dropdown .tui-button:hover,
1996
- :where(.tui-interface) .tui-dropdown .tui-button:focus-visible,
1997
2045
  :where(.tui-interface) .tui-dropdown .tui-button[data-active],
1998
2046
  :where(.tui-interface) .tui-dropdown .tui-icon-button:hover,
1999
- :where(.tui-interface) .tui-dropdown .tui-icon-button:focus-visible,
2000
2047
  :where(.tui-interface) .tui-dropdown .tui-icon-button[data-active] {
2001
2048
  --tui-button-bg: var(--_item-bg-hover);
2002
2049
  --tui-button-fg: inherit;
2003
- outline: none;
2050
+ }
2051
+ :where(.tui-interface) .tui-dropdown__item:focus-visible,
2052
+ :where(.tui-interface) .tui-dropdown .tui-button:focus-visible,
2053
+ :where(.tui-interface) .tui-dropdown .tui-icon-button:focus-visible {
2054
+ --tui-button-bg: var(--_item-bg-hover);
2055
+ --tui-button-fg: inherit;
2056
+ outline: var(--tui-focus-ring-width, 2px) solid var(--tui-focus-ring-color, #2563eb);
2057
+ outline-offset: calc(-1 * var(--tui-focus-ring-width, 2px));
2004
2058
  }
2005
2059
  :where(.tui-interface) .tui-dropdown__item:active,
2006
2060
  :where(.tui-interface) .tui-dropdown .tui-button:active,
@@ -2019,6 +2073,25 @@
2019
2073
  :where(.tui-interface) .tui-dropdown .tui-icon-button {
2020
2074
  justify-content: center;
2021
2075
  }
2076
+ :where(.tui-interface) .tui-dropdown__separator {
2077
+ border: none;
2078
+ border-top: 1px solid var(--tui-color-border);
2079
+ margin: var(--tui-spacing-xxs, 4px) 0;
2080
+ }
2081
+ :where(.tui-interface) .tui-dropdown__header {
2082
+ padding: var(--tui-spacing-xs, 8px) var(--tui-spacing-sm, 12px);
2083
+ padding-block-end: var(--tui-spacing-xxs, 4px);
2084
+ font-size: var(--tui-typography-size-xs, 11px);
2085
+ font-weight: var(--tui-font-weight-semibold, 600);
2086
+ color: var(--tui-color-fg-muted);
2087
+ letter-spacing: 0.02em;
2088
+ user-select: none;
2089
+ }
2090
+ @media (prefers-reduced-motion: reduce) {
2091
+ :where(.tui-interface) .tui-dropdown {
2092
+ animation: none;
2093
+ }
2094
+ }
2022
2095
  @media (forced-colors: active) {
2023
2096
  :where(.tui-interface) .tui-dropdown {
2024
2097
  background-color: Canvas;
@@ -2507,7 +2580,7 @@
2507
2580
  }
2508
2581
  :where(.tui-interface) .tui-select__option[aria-selected=true] {
2509
2582
  background-color: var(--_bg-selected);
2510
- font-weight: 500;
2583
+ font-weight: var(--tui-font-weight-medium, 500);
2511
2584
  }
2512
2585
  :where(.tui-interface) .tui-select__option[aria-selected=true]:hover:not([data-disabled]), :where(.tui-interface) .tui-select__option[aria-selected=true][data-highlighted]:not([data-disabled]) {
2513
2586
  background-color: var(--tui-theme-primary-subtle);
@@ -2882,6 +2955,7 @@
2882
2955
  --_radius: var(--tui-icon-button-radius, var(--tui-radius-md));
2883
2956
  --_bg-interact: var(--tui-icon-button-bg-interact, var(--tui-theme-secondary-subtle));
2884
2957
  --_fg-interact: var(--tui-icon-button-fg-interact, var(--tui-color-fg));
2958
+ --_bg-pressed: var(--tui-theme-secondary-soft);
2885
2959
  appearance: none;
2886
2960
  border: none;
2887
2961
  background: none;
@@ -2918,10 +2992,14 @@
2918
2992
  outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
2919
2993
  outline-offset: var(--tui-focus-ring-offset);
2920
2994
  }
2921
- .tui-interface .tui-icon-button:is(:active, [aria-pressed=true]) {
2995
+ .tui-interface .tui-icon-button:active {
2922
2996
  --_bg: var(--_bg-interact);
2923
2997
  --_fg: var(--_fg-interact);
2924
2998
  }
2999
+ .tui-interface .tui-icon-button[aria-pressed=true] {
3000
+ --_bg: var(--_bg-pressed);
3001
+ --_fg: var(--_fg-interact);
3002
+ }
2925
3003
  .tui-interface .tui-icon-button:where(:disabled, [aria-disabled=true], .is-disabled) {
2926
3004
  pointer-events: none;
2927
3005
  cursor: not-allowed;
@@ -2937,15 +3015,20 @@
2937
3015
  .tui-interface .tui-icon-button.is-size-lg {
2938
3016
  --_size: var(--tui-control-height-lg, 3rem);
2939
3017
  }
3018
+ .tui-interface .tui-icon-button.is-shape-circle {
3019
+ border-radius: 50%;
3020
+ }
2940
3021
  .tui-interface .tui-icon-button.is-theme-primary {
2941
3022
  --_fg: var(--tui-icon-button-fg, var(--tui-theme-primary-base));
2942
3023
  --_fg-interact: var(--tui-icon-button-fg-interact, var(--tui-theme-primary-strong));
2943
3024
  --_bg-interact: var(--tui-icon-button-bg-interact, var(--tui-theme-primary-subtlest));
3025
+ --_bg-pressed: var(--tui-theme-primary-subtle);
2944
3026
  }
2945
3027
  .tui-interface .tui-icon-button.is-theme-danger {
2946
3028
  --_fg: var(--tui-icon-button-fg, var(--tui-theme-danger-base));
2947
3029
  --_fg-interact: var(--tui-icon-button-fg-interact, var(--tui-theme-danger-strong));
2948
3030
  --_bg-interact: var(--tui-icon-button-bg-interact, var(--tui-theme-danger-subtlest));
3031
+ --_bg-pressed: var(--tui-theme-danger-subtle);
2949
3032
  }
2950
3033
  .tui-interface .tui-icon-button.is-style-outline {
2951
3034
  --_border: var(--tui-icon-button-border, var(--tui-color-border));
@@ -2964,24 +3047,36 @@
2964
3047
  .tui-interface .tui-icon-button.is-style-solid {
2965
3048
  --_bg: var(--tui-icon-button-bg, var(--tui-theme-secondary-subtle));
2966
3049
  --_fg: var(--tui-icon-button-fg, var(--tui-color-fg));
3050
+ --_bg-pressed: var(--tui-theme-secondary-soft);
2967
3051
  }
2968
- .tui-interface .tui-icon-button.is-style-solid:hover, .tui-interface .tui-icon-button.is-style-solid:focus-visible, .tui-interface .tui-icon-button.is-style-solid:is(:active, [aria-pressed=true]) {
3052
+ .tui-interface .tui-icon-button.is-style-solid:hover, .tui-interface .tui-icon-button.is-style-solid:focus-visible, .tui-interface .tui-icon-button.is-style-solid:active {
2969
3053
  --_bg: var(--tui-icon-button-bg-interact, var(--tui-theme-secondary-soft));
2970
3054
  }
3055
+ .tui-interface .tui-icon-button.is-style-solid[aria-pressed=true] {
3056
+ --_bg: var(--_bg-pressed);
3057
+ }
2971
3058
  .tui-interface .tui-icon-button.is-style-solid.is-theme-primary {
2972
3059
  --_bg: var(--tui-icon-button-bg, var(--tui-theme-primary-base));
2973
3060
  --_fg: var(--tui-icon-button-fg, var(--tui-color-fg-on-accent));
3061
+ --_bg-pressed: var(--tui-theme-primary-stronger);
2974
3062
  }
2975
- .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:hover, .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:focus-visible, .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:is(:active, [aria-pressed=true]) {
3063
+ .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:hover, .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:focus-visible, .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:active {
2976
3064
  --_bg: var(--tui-icon-button-bg-interact, var(--tui-theme-primary-stronger));
2977
3065
  }
3066
+ .tui-interface .tui-icon-button.is-style-solid.is-theme-primary[aria-pressed=true] {
3067
+ --_bg: var(--_bg-pressed);
3068
+ }
2978
3069
  .tui-interface .tui-icon-button.is-style-solid.is-theme-danger {
2979
3070
  --_bg: var(--tui-icon-button-bg, var(--tui-theme-danger-base));
2980
3071
  --_fg: var(--tui-icon-button-fg, var(--tui-color-fg-on-accent));
3072
+ --_bg-pressed: var(--tui-theme-danger-stronger);
2981
3073
  }
2982
- .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:hover, .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:focus-visible, .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:is(:active, [aria-pressed=true]) {
3074
+ .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:hover, .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:focus-visible, .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:active {
2983
3075
  --_bg: var(--tui-icon-button-bg-interact, var(--tui-theme-danger-stronger));
2984
3076
  }
3077
+ .tui-interface .tui-icon-button.is-style-solid.is-theme-danger[aria-pressed=true] {
3078
+ --_bg: var(--_bg-pressed);
3079
+ }
2985
3080
  .tui-interface .tui-icon-button[aria-busy=true] {
2986
3081
  pointer-events: none;
2987
3082
  }
@@ -2997,6 +3092,12 @@
2997
3092
  border-radius: 50%;
2998
3093
  animation: tui-spin 0.85s linear infinite;
2999
3094
  }
3095
+ @media (prefers-reduced-motion: reduce) {
3096
+ .tui-interface .tui-icon-button__spinner {
3097
+ animation: none;
3098
+ border-style: dashed;
3099
+ }
3100
+ }
3000
3101
  @media (forced-colors: active) {
3001
3102
  .tui-icon-button {
3002
3103
  forced-color-adjust: none;
@@ -3012,6 +3113,11 @@
3012
3113
  outline: 2px solid Highlight;
3013
3114
  outline-offset: 2px;
3014
3115
  }
3116
+ .tui-icon-button:is(:disabled, [aria-disabled=true]) {
3117
+ color: GrayText;
3118
+ border-color: GrayText;
3119
+ background-color: Canvas;
3120
+ }
3015
3121
  }
3016
3122
  .tui-modal {
3017
3123
  --_z: var(--tui-modal-z, var(--tui-layer-modal, 1000));
@@ -3047,7 +3153,7 @@
3047
3153
  --_bg: var(--tui-modal-bg, var(--tui-color-bg-surface));
3048
3154
  --_border: var(--tui-modal-border, var(--tui-color-border));
3049
3155
  --_radius: var(--tui-modal-radius, var(--tui-radius-lg));
3050
- --_padding: var(--tui-modal-padding, var(--tui-spacing-md));
3156
+ --_padding: var(--tui-modal-padding, var(--tui-spacing-lg));
3051
3157
  --_shadow: var(--tui-modal-shadow, var(--tui-shadow-lg));
3052
3158
  position: relative;
3053
3159
  width: 100%;
@@ -3068,6 +3174,10 @@
3068
3174
  .tui-modal__dialog:has(> .tui-modal__foot) {
3069
3175
  --_min-foot: 4rem;
3070
3176
  }
3177
+ .tui-modal__dialog:focus-visible {
3178
+ outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
3179
+ outline-offset: var(--tui-focus-ring-offset);
3180
+ }
3071
3181
  .tui-modal__dialog {
3072
3182
  color: var(--tui-color-fg);
3073
3183
  border-style: solid;
@@ -3102,12 +3212,41 @@
3102
3212
  }
3103
3213
  .tui-modal__dialog .tui-modal__body-inner > p {
3104
3214
  margin: 0;
3215
+ margin-block-end: var(--tui-spacing-md);
3216
+ }
3217
+ .tui-modal__dialog .tui-modal__body-inner > p:last-child {
3218
+ margin-block-end: 0;
3105
3219
  }
3106
3220
  .tui-modal__dialog .tui-modal__head {
3107
3221
  padding-block: var(--_padding);
3108
3222
  padding-inline: var(--_padding);
3109
3223
  width: 100%;
3110
3224
  }
3225
+ .tui-modal__dialog .tui-modal__head.has-icon {
3226
+ display: flex;
3227
+ align-items: flex-start;
3228
+ gap: var(--tui-spacing-sm);
3229
+ }
3230
+ .tui-modal__dialog .tui-modal__head-icon {
3231
+ flex-shrink: 0;
3232
+ display: flex;
3233
+ align-items: center;
3234
+ height: 1.5em;
3235
+ font-size: var(--tui-typography-size-lg);
3236
+ color: var(--tui-color-fg);
3237
+ }
3238
+ .tui-modal__dialog .tui-modal__head-content {
3239
+ flex: 1 1 auto;
3240
+ min-width: 0;
3241
+ }
3242
+ .tui-modal__dialog .tui-modal__head-subtitle {
3243
+ margin-block-start: var(--tui-spacing-xxs);
3244
+ font-size: var(--tui-typography-size-sm);
3245
+ color: var(--tui-color-fg-muted);
3246
+ }
3247
+ .tui-modal__dialog:has(> .tui-modal__close) > .tui-modal__head {
3248
+ padding-inline-end: calc(var(--_padding) + var(--tui-spacing-xl));
3249
+ }
3111
3250
  .tui-modal__dialog .tui-modal__foot {
3112
3251
  padding-block: var(--_padding);
3113
3252
  padding-inline: var(--_padding);
@@ -3331,7 +3470,8 @@
3331
3470
  align-items: center;
3332
3471
  justify-content: center;
3333
3472
  width: auto;
3334
- min-height: auto;
3473
+ min-width: 32px;
3474
+ min-height: 32px;
3335
3475
  background: none;
3336
3476
  border: none;
3337
3477
  border-radius: var(--tui-radius-sm);
@@ -3345,7 +3485,7 @@
3345
3485
  transition-property: color;
3346
3486
  }
3347
3487
  .tui-interface .tui-move-handle.is-handle .tui-icon {
3348
- font-size: 24px;
3488
+ font-size: var(--_icon-size);
3349
3489
  }
3350
3490
  .tui-interface .tui-move-handle.is-handle:hover {
3351
3491
  color: var(--_fg-interact);
@@ -3396,7 +3536,7 @@
3396
3536
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-primary-base));
3397
3537
  --_fg: var(--tui-notice-fg, inherit);
3398
3538
  --_radius: var(--tui-notice-radius, var(--tui-radius-md));
3399
- --_padding: var(--tui-notice-padding, var(--tui-spacing-sm));
3539
+ --_padding: var(--tui-notice-padding, var(--tui-spacing-md));
3400
3540
  --_foot-basis: var(--tui-notice-foot-basis, 500px);
3401
3541
  --_gap: var(--tui-spacing-sm);
3402
3542
  container-type: inline-size;
@@ -3421,6 +3561,7 @@
3421
3561
  justify-content: center;
3422
3562
  line-height: 0;
3423
3563
  font-size: var(--tui-typography-size-xl);
3564
+ color: var(--_icon-color, inherit);
3424
3565
  }
3425
3566
  :where(.tui-interface) .tui-notice__title {
3426
3567
  flex: 1 1 auto;
@@ -3447,6 +3588,10 @@
3447
3588
  }
3448
3589
  :where(.tui-interface) .tui-notice__body > p {
3449
3590
  margin: 0;
3591
+ margin-block-end: var(--tui-spacing-sm);
3592
+ }
3593
+ :where(.tui-interface) .tui-notice__body > p:last-child {
3594
+ margin-block-end: 0;
3450
3595
  }
3451
3596
  :where(.tui-interface) .tui-notice__body a {
3452
3597
  color: var(--tui-theme-primary-strong);
@@ -3514,7 +3659,7 @@
3514
3659
  }
3515
3660
  }
3516
3661
  :where(.tui-interface) .tui-notice.is-dismissible .tui-notice__inner {
3517
- padding-inline-end: calc(var(--_padding) + 2rem);
3662
+ padding-inline-end: calc(var(--_padding) + var(--tui-control-height-sm));
3518
3663
  }
3519
3664
  @container tuiNotice (width >= 400px) {
3520
3665
  :where(.tui-interface) .tui-notice.is-layout-inline.is-dismissible .tui-notice__inner {
@@ -3527,24 +3672,32 @@
3527
3672
  }
3528
3673
  }
3529
3674
  :where(.tui-interface) .tui-notice.has-stripe {
3530
- border-inline-start-width: 4px;
3675
+ border-inline-start-width: var(--tui-notice-stripe-width, 4px);
3531
3676
  border-inline-start-color: var(--_stripe);
3532
3677
  }
3533
3678
  :where(.tui-interface) .tui-notice.is-theme-info {
3534
3679
  --_bg: var(--tui-notice-bg, var(--tui-theme-primary-subtlest));
3680
+ --_bg-hover: var(--tui-theme-primary-subtle);
3535
3681
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-primary-base));
3682
+ --_icon-color: var(--tui-theme-primary-base);
3536
3683
  }
3537
3684
  :where(.tui-interface) .tui-notice.is-theme-success {
3538
3685
  --_bg: var(--tui-notice-bg, var(--tui-theme-success-subtlest));
3686
+ --_bg-hover: var(--tui-theme-success-subtle);
3539
3687
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-success-base));
3688
+ --_icon-color: var(--tui-theme-success-base);
3540
3689
  }
3541
3690
  :where(.tui-interface) .tui-notice.is-theme-warning {
3542
3691
  --_bg: var(--tui-notice-bg, var(--tui-theme-warning-subtlest));
3692
+ --_bg-hover: var(--tui-theme-warning-subtle);
3543
3693
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-warning-base));
3694
+ --_icon-color: var(--tui-theme-warning-base);
3544
3695
  }
3545
3696
  :where(.tui-interface) .tui-notice.is-theme-danger {
3546
3697
  --_bg: var(--tui-notice-bg, var(--tui-theme-danger-subtlest));
3698
+ --_bg-hover: var(--tui-theme-danger-subtle);
3547
3699
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-danger-base));
3700
+ --_icon-color: var(--tui-theme-danger-base);
3548
3701
  }
3549
3702
  :where(.tui-interface) .tui-notice.is-style-elevated {
3550
3703
  box-shadow: var(--tui-shadow-md);
@@ -3556,7 +3709,7 @@
3556
3709
  transition-timing-function: var(--tui-motion-timing);
3557
3710
  }
3558
3711
  :where(.tui-interface) .tui-notice.has-interaction:hover {
3559
- --_bg: var(--tui-color-bg-muted);
3712
+ --_bg: var(--_bg-hover, var(--tui-color-bg-muted));
3560
3713
  }
3561
3714
  :where(.tui-interface) .tui-notice.has-interaction:focus-visible {
3562
3715
  outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
@@ -3572,20 +3725,23 @@
3572
3725
  }
3573
3726
  :where(.tui-interface) .tui-notice.is-exiting-collapse {
3574
3727
  display: grid;
3575
- animation: tui-noticeExitCollapse 200ms var(--tui-motion-timing) forwards;
3728
+ animation: tui-noticeExitCollapse var(--tui-motion-duration) var(--tui-motion-timing) forwards;
3576
3729
  }
3577
3730
  :where(.tui-interface) .tui-notice.is-exiting-collapse .tui-notice__inner {
3578
3731
  min-height: 0;
3579
3732
  overflow: hidden;
3580
3733
  }
3581
3734
  :where(.tui-interface) .tui-notice.is-exiting-fade {
3582
- animation: tui-noticeExitFade 200ms var(--tui-motion-timing) forwards;
3735
+ animation: tui-noticeExitFade var(--tui-motion-duration) var(--tui-motion-timing) forwards;
3583
3736
  }
3584
3737
  @media (prefers-reduced-motion: reduce) {
3585
3738
  :where(.tui-interface) .tui-notice.is-exiting-collapse, :where(.tui-interface) .tui-notice.is-exiting-fade {
3586
3739
  animation: none;
3587
3740
  opacity: 0;
3588
3741
  }
3742
+ :where(.tui-interface) .tui-notice.has-interaction {
3743
+ transition-duration: 0s;
3744
+ }
3589
3745
  }
3590
3746
  @keyframes tui-noticeExitCollapse {
3591
3747
  0% {
@@ -3609,15 +3765,15 @@
3609
3765
  }
3610
3766
  .tui-notice .tui-notice__dismiss {
3611
3767
  position: absolute;
3612
- inset-block-start: var(--tui-notice-padding, var(--tui-spacing-sm));
3613
- inset-inline-end: var(--tui-notice-padding, var(--tui-spacing-sm));
3768
+ inset-block-start: var(--tui-notice-padding, var(--tui-spacing-md));
3769
+ inset-inline-end: var(--tui-notice-padding, var(--tui-spacing-md));
3614
3770
  }
3615
3771
  .tui-notice.is-layout-inline .tui-notice__dismiss {
3616
3772
  position: static;
3617
3773
  flex-shrink: 0;
3618
3774
  align-self: center;
3619
3775
  margin-inline-start: var(--tui-spacing-sm);
3620
- margin-inline-end: var(--tui-notice-padding, var(--tui-spacing-sm));
3776
+ margin-inline-end: var(--tui-notice-padding, var(--tui-spacing-md));
3621
3777
  }
3622
3778
  :where(.tui-interface) .tui-overlap-stack {
3623
3779
  display: inline-flex;
@@ -3651,7 +3807,7 @@
3651
3807
  background-color: var(--_bg);
3652
3808
  color: var(--_fg);
3653
3809
  font-size: 0.75rem;
3654
- font-weight: 500;
3810
+ font-weight: var(--tui-font-weight-medium, 500);
3655
3811
  }
3656
3812
  @media (forced-colors: active) {
3657
3813
  :where(.tui-interface) .tui-overlap-stack__overflow {
@@ -4387,6 +4543,15 @@
4387
4543
  :where(.tui-interface) .tui-sidebar__header h1, :where(.tui-interface) .tui-sidebar__header h2, :where(.tui-interface) .tui-sidebar__header h3, :where(.tui-interface) .tui-sidebar__header h4, :where(.tui-interface) .tui-sidebar__header h5, :where(.tui-interface) .tui-sidebar__header h6 {
4388
4544
  margin: 0;
4389
4545
  }
4546
+ :where(.tui-interface) .tui-sidebar__footer {
4547
+ flex-shrink: 0;
4548
+ margin-top: auto;
4549
+ padding: var(--_padding);
4550
+ border-top: var(--tui-border-width) solid var(--_border);
4551
+ display: flex;
4552
+ flex-direction: column;
4553
+ gap: var(--tui-spacing-sm);
4554
+ }
4390
4555
  :where(.tui-interface) .tui-sidebar__nav {
4391
4556
  flex: 1;
4392
4557
  overflow-y: auto;
@@ -4405,9 +4570,12 @@
4405
4570
  :where(.tui-interface) .tui-sidebar-drawer__backdrop {
4406
4571
  position: absolute;
4407
4572
  inset: 0;
4408
- background-color: var(--tui-color-bg-overlay, rgba(0, 0, 0, 0.5));
4573
+ background-color: var(--tui-color-bg-overlay);
4409
4574
  animation: tui-fadeFromTransparent var(--tui-motion-duration) var(--tui-motion-timing);
4410
4575
  }
4576
+ [data-state=closing] > :where(.tui-interface) .tui-sidebar-drawer__backdrop {
4577
+ animation: tui-fadeToTransparent var(--tui-motion-duration) var(--tui-motion-timing) forwards;
4578
+ }
4411
4579
  :where(.tui-interface) .tui-sidebar-drawer__panel {
4412
4580
  position: relative;
4413
4581
  z-index: 1;
@@ -4420,6 +4588,12 @@
4420
4588
  [data-position=right] > :where(.tui-interface) .tui-sidebar-drawer__panel {
4421
4589
  animation: tui-slideInFromRight var(--tui-motion-duration) var(--tui-motion-timing);
4422
4590
  }
4591
+ [data-state=closing][data-position=left] > :where(.tui-interface) .tui-sidebar-drawer__panel {
4592
+ animation: tui-slideOutToLeft var(--tui-motion-duration) var(--tui-motion-timing) forwards;
4593
+ }
4594
+ [data-state=closing][data-position=right] > :where(.tui-interface) .tui-sidebar-drawer__panel {
4595
+ animation: tui-slideOutToRight var(--tui-motion-duration) var(--tui-motion-timing) forwards;
4596
+ }
4423
4597
  :where(.tui-interface) .tui-sidebar-drawer__panel .tui-sidebar {
4424
4598
  height: 100%;
4425
4599
  border-left: none;
@@ -4441,6 +4615,36 @@
4441
4615
  transform: translateX(0);
4442
4616
  }
4443
4617
  }
4618
+ @keyframes tui-slideOutToLeft {
4619
+ from {
4620
+ transform: translateX(0);
4621
+ }
4622
+ to {
4623
+ transform: translateX(-100%);
4624
+ }
4625
+ }
4626
+ @keyframes tui-slideOutToRight {
4627
+ from {
4628
+ transform: translateX(0);
4629
+ }
4630
+ to {
4631
+ transform: translateX(100%);
4632
+ }
4633
+ }
4634
+ @keyframes tui-fadeToTransparent {
4635
+ from {
4636
+ opacity: 1;
4637
+ }
4638
+ to {
4639
+ opacity: 0;
4640
+ }
4641
+ }
4642
+ @media (prefers-reduced-motion: reduce) {
4643
+ :where(.tui-interface) .tui-sidebar-drawer__backdrop,
4644
+ :where(.tui-interface) .tui-sidebar-drawer__panel {
4645
+ animation: none;
4646
+ }
4647
+ }
4444
4648
  body.tui-sidebar-drawer-open {
4445
4649
  overflow: hidden;
4446
4650
  }
@@ -4659,6 +4863,10 @@
4659
4863
  align-items: stretch;
4660
4864
  flex-wrap: nowrap;
4661
4865
  }
4866
+ :where(.tui-interface) .tui-tabs[data-orientation=vertical] .tui-tabs__tab {
4867
+ text-align: start;
4868
+ justify-content: flex-start;
4869
+ }
4662
4870
  :where(.tui-interface) .tui-tabs__list {
4663
4871
  display: flex;
4664
4872
  flex-wrap: wrap;
@@ -4682,7 +4890,7 @@
4682
4890
  --_fg: var(--tui-tabs-tab-fg, var(--tui-color-fg-muted));
4683
4891
  --_border: var(--tui-tabs-tab-border, transparent);
4684
4892
  --_bg-active: var(--tui-tabs-tab-bg-active, var(--tui-theme-primary-base, currentColor));
4685
- --_fg-active: var(--tui-tabs-tab-fg-active, var(--tui-color-fg-on-accent, #fff));
4893
+ --_fg-active: var(--tui-tabs-tab-fg-active, var(--tui-color-fg-on-accent));
4686
4894
  --_bg-hover: var(--tui-tabs-tab-bg-hover, var(--tui-color-bg-muted));
4687
4895
  --_indicator: var(--tui-tabs-indicator, var(--tui-theme-primary-base, currentColor));
4688
4896
  --_indicator-size: var(--tui-tabs-indicator-size, 2px);
@@ -4698,9 +4906,9 @@
4698
4906
  background: var(--_bg);
4699
4907
  color: var(--_fg);
4700
4908
  font: inherit;
4701
- font-size: var(--tui-font-size-sm);
4909
+ font-size: var(--tui-typography-size-sm);
4702
4910
  font-weight: var(--tui-font-weight-medium, 500);
4703
- line-height: var(--tui-line-height-tight);
4911
+ line-height: var(--tui-line-height-tight, 1.25);
4704
4912
  text-decoration: none;
4705
4913
  white-space: nowrap;
4706
4914
  cursor: pointer;
@@ -4736,6 +4944,7 @@
4736
4944
  --_padding: var(--tui-tabs-tab-padding, var(--tui-spacing-sm) var(--tui-spacing-xs));
4737
4945
  --_radius: 0;
4738
4946
  --_bg-hover: transparent;
4947
+ --_fg-active: var(--tui-tabs-tab-fg-active, var(--tui-color-fg));
4739
4948
  position: relative;
4740
4949
  margin-block-end: calc(var(--tui-border-width) * -1);
4741
4950
  border-bottom: var(--_indicator-size) solid transparent;
@@ -4745,7 +4954,7 @@
4745
4954
  color: var(--tui-color-fg);
4746
4955
  }
4747
4956
  .tui-interface [data-variant=underline] .tui-tabs__tab[data-state=active] {
4748
- color: var(--tui-color-fg);
4957
+ color: var(--_fg-active);
4749
4958
  border-bottom-color: var(--_indicator);
4750
4959
  }
4751
4960
  .tui-interface [data-variant=underline] .tui-tabs__tab:focus-visible {
@@ -4755,11 +4964,12 @@
4755
4964
  --_radius: var(--tui-tabs-tab-radius, var(--tui-radius-full));
4756
4965
  --_border: var(--tui-tabs-tab-border, var(--tui-color-border));
4757
4966
  --_bg-hover: var(--tui-tabs-tab-bg-hover, var(--tui-color-bg-muted));
4967
+ --_fg-active: var(--tui-tabs-tab-fg-active, var(--tui-theme-primary-strong, currentColor));
4758
4968
  border: var(--tui-border-width) solid var(--_border);
4759
4969
  }
4760
4970
  .tui-interface [data-variant=outline] .tui-tabs__tab[data-state=active] {
4761
4971
  --_border: var(--tui-theme-primary-base, currentColor);
4762
- color: var(--tui-theme-primary-strong, currentColor);
4972
+ color: var(--_fg-active);
4763
4973
  background: var(--tui-theme-primary-subtlest, transparent);
4764
4974
  }
4765
4975
  :where(.tui-interface) .tui-tabs__panel[data-state=inactive] {
@@ -4855,10 +5065,12 @@
4855
5065
  border: var(--tui-border-width) solid var(--_border);
4856
5066
  border-radius: var(--_radius);
4857
5067
  padding-inline: var(--tui-spacing-xs);
5068
+ cursor: text;
4858
5069
  }
4859
5070
  :where(.tui-interface) .tui-input-group .tui-input,
4860
5071
  :where(.tui-interface) .tui-input-group input {
4861
5072
  border: none;
5073
+ border-radius: 0;
4862
5074
  background: transparent;
4863
5075
  padding-inline: 0;
4864
5076
  padding-block: 0;
@@ -4904,6 +5116,31 @@
4904
5116
  :where(.tui-interface) .tui-input-group__suffix .tui-icon {
4905
5117
  font-size: 1em;
4906
5118
  }
5119
+ :where(.tui-interface) .tui-input-group__prefix.is-text,
5120
+ :where(.tui-interface) .tui-input-group__suffix.is-text {
5121
+ background-color: var(--tui-color-bg-surface);
5122
+ padding-inline: var(--tui-spacing-xs);
5123
+ margin-block: calc(-1 * var(--_py));
5124
+ align-self: stretch;
5125
+ display: inline-flex;
5126
+ align-items: center;
5127
+ }
5128
+ :where(.tui-interface) .tui-input-group__prefix.is-text {
5129
+ border-inline-end: var(--tui-border-width) solid var(--_border);
5130
+ border-start-start-radius: calc(var(--_radius) - var(--tui-border-width));
5131
+ border-end-start-radius: calc(var(--_radius) - var(--tui-border-width));
5132
+ }
5133
+ :where(.tui-interface) .tui-input-group__suffix.is-text {
5134
+ border-inline-start: var(--tui-border-width) solid var(--_border);
5135
+ border-start-end-radius: calc(var(--_radius) - var(--tui-border-width));
5136
+ border-end-end-radius: calc(var(--_radius) - var(--tui-border-width));
5137
+ }
5138
+ :where(.tui-interface) .tui-input-group:has(> .tui-input-group__prefix.is-text) {
5139
+ padding-inline-start: 0;
5140
+ }
5141
+ :where(.tui-interface) .tui-input-group:has(> .tui-input-group__suffix.is-text) {
5142
+ padding-inline-end: 0;
5143
+ }
4907
5144
  :where(.tui-interface) .tui-toolbar {
4908
5145
  --_gap: var(--tui-toolbar-gap, var(--tui-spacing-sm));
4909
5146
  --_padding: var(--tui-toolbar-padding, 0);
@@ -4936,30 +5173,46 @@
4936
5173
  :where(.tui-interface) .tui-tooltip {
4937
5174
  --_bg: var(--tui-tooltip-bg, var(--tui-color-bg-inverted));
4938
5175
  --_fg: var(--tui-tooltip-fg, var(--tui-color-fg-inverted));
4939
- --_radius: var(--tui-tooltip-radius, var(--tui-radius-xs));
5176
+ --_radius: var(--tui-tooltip-radius, var(--tui-radius-sm));
4940
5177
  --_z: var(--tui-tooltip-z, var(--tui-layer-top));
4941
5178
  z-index: var(--_z);
4942
5179
  width: max-content;
4943
5180
  max-width: min(250px, 100vw - 2 * var(--tui-spacing-xs, 8px));
4944
- padding: 0.27em 0.54em;
5181
+ padding: 0.35em 0.65em;
4945
5182
  pointer-events: auto;
4946
5183
  background-color: var(--_bg);
4947
5184
  color: var(--_fg);
4948
5185
  border-radius: var(--_radius);
4949
- font-size: var(--tui-typography-size-xs, 11px);
5186
+ font-size: var(--tui-typography-size-sm, 13px);
4950
5187
  line-height: 1.4;
4951
5188
  animation: tui-fadeFromTransparent var(--tui-motion-duration) var(--tui-motion-timing);
4952
5189
  }
5190
+ :where(.tui-interface) .tui-tooltip.is-theme-light {
5191
+ --_bg: var(--tui-tooltip-bg, var(--tui-color-bg-surface));
5192
+ --_fg: var(--tui-tooltip-fg, var(--tui-color-fg));
5193
+ border: 1px solid var(--tui-color-border);
5194
+ }
5195
+ :where(.tui-interface) .tui-tooltip__arrow {
5196
+ fill: var(--_bg);
5197
+ }
4953
5198
  :where(.tui-interface) [data-tooltip-open]:focus-visible {
4954
5199
  outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
4955
5200
  outline-offset: var(--tui-focus-ring-offset);
4956
5201
  }
5202
+ @media (prefers-reduced-motion: reduce) {
5203
+ :where(.tui-interface) .tui-tooltip {
5204
+ animation: none;
5205
+ }
5206
+ }
4957
5207
  @media (forced-colors: active) {
4958
5208
  :where(.tui-interface) .tui-tooltip {
4959
5209
  background-color: Canvas;
4960
5210
  color: CanvasText;
4961
5211
  border: 1px solid CanvasText;
4962
5212
  }
5213
+ :where(.tui-interface) .tui-tooltip__arrow {
5214
+ fill: Canvas;
5215
+ }
4963
5216
  }
4964
5217
 
4965
5218