@godxjp/ui 28.7.0 → 28.8.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 (85) hide show
  1. package/dist/components/data-display/index.d.ts +2 -0
  2. package/dist/components/data-display/index.js +2 -0
  3. package/dist/components/data-display/marquee.d.ts +16 -0
  4. package/dist/components/data-display/marquee.js +155 -0
  5. package/dist/components/general/reveal.d.ts +23 -2
  6. package/dist/components/general/reveal.js +37 -7
  7. package/dist/components/general/typography.d.ts +4 -1
  8. package/dist/components/general/typography.js +14 -1
  9. package/dist/components/layout/affix.d.ts +86 -0
  10. package/dist/components/layout/affix.js +187 -0
  11. package/dist/components/layout/index.d.ts +4 -0
  12. package/dist/components/layout/index.js +4 -0
  13. package/dist/components/layout/legal-document-shell.js +4 -3
  14. package/dist/components/layout/masonry.d.ts +74 -0
  15. package/dist/components/layout/masonry.js +214 -0
  16. package/dist/components/layout/page-container.js +5 -20
  17. package/dist/components/navigation/anchor.d.ts +64 -0
  18. package/dist/components/navigation/anchor.js +284 -0
  19. package/dist/components/navigation/index.d.ts +4 -0
  20. package/dist/components/navigation/index.js +4 -0
  21. package/dist/components/navigation/mega-menu.d.ts +21 -0
  22. package/dist/components/navigation/mega-menu.js +526 -0
  23. package/dist/contracts/measurement.json +1 -1
  24. package/dist/i18n/messages/en.json +517 -0
  25. package/dist/i18n/messages/ja.json +513 -0
  26. package/dist/i18n/messages/vi.json +513 -0
  27. package/dist/lib/hooks.d.ts +68 -0
  28. package/dist/lib/hooks.js +52 -0
  29. package/dist/lib/platform.d.ts +14 -0
  30. package/dist/lib/platform.js +10 -1
  31. package/dist/lib/utils.d.ts +1 -1
  32. package/dist/lib/utils.js +3 -2
  33. package/dist/props/components/data-display.prop.d.ts +95 -1
  34. package/dist/props/components/general.prop.d.ts +47 -3
  35. package/dist/props/components/layout.prop.d.ts +194 -0
  36. package/dist/props/components/navigation.prop.d.ts +263 -0
  37. package/dist/props/registry.d.ts +359 -4
  38. package/dist/props/registry.js +472 -3
  39. package/dist/props/vocabulary/index.d.ts +1 -1
  40. package/dist/props/vocabulary/interaction.prop.d.ts +39 -2
  41. package/dist/styles/control.css +5 -6
  42. package/dist/styles/data-display-layout.css +2 -1
  43. package/dist/styles/density.css +4 -0
  44. package/dist/styles/layout.css +79 -0
  45. package/dist/styles/motion.css +121 -1
  46. package/dist/styles/navigation-layout.css +397 -1
  47. package/dist/styles/shell-layout.css +3 -0
  48. package/dist/styles/text-layout.css +52 -4
  49. package/dist/tokens/base.css +5 -0
  50. package/dist/tokens/components/affix.css +7 -0
  51. package/dist/tokens/components/anchor.css +17 -0
  52. package/dist/tokens/components/control.css +3 -3
  53. package/dist/tokens/components/form.css +1 -1
  54. package/dist/tokens/components/marquee.css +7 -0
  55. package/dist/tokens/components/masonry.css +6 -0
  56. package/dist/tokens/components/mega-menu.css +62 -0
  57. package/dist/tokens/components/shell.css +3 -0
  58. package/dist/tokens/foundation.css +11 -0
  59. package/dist/tokens/semantic/layout.css +7 -0
  60. package/docs/COMPOSITION-VS-COMPONENT.md +19 -1
  61. package/docs/DESIGN-AUTHORITY.md +99 -18
  62. package/docs/FRAME-COVERAGE-REPORT.md +7 -2
  63. package/docs/data-display/marquee.tsx +254 -0
  64. package/docs/foundation/_theme-editor-scope.ts +222 -0
  65. package/docs/foundation/density.tsx +12 -2
  66. package/docs/foundation/spacing.tsx +5 -0
  67. package/docs/foundation/theme-editor.tsx +645 -0
  68. package/docs/general/activity.tsx +65 -0
  69. package/docs/general/reveal.tsx +290 -22
  70. package/docs/general/typography.tsx +91 -1
  71. package/docs/layout/affix.tsx +209 -0
  72. package/docs/layout/masonry.tsx +291 -0
  73. package/docs/navigation/anchor.tsx +285 -0
  74. package/docs/navigation/mega-menu-panel.tsx +86 -0
  75. package/docs/navigation/mega-menu.tsx +254 -0
  76. package/docs/roadmap/website-components.md +779 -0
  77. package/docs/showcase/acme-website.tsx +75 -39
  78. package/docs/showcase/futurelastic-web.tsx +91 -49
  79. package/docs/showcase/marketing-page.tsx +885 -0
  80. package/docs/showcase/table-footer-totals.tsx +12 -2
  81. package/docs/showcase/theme-customization.tsx +1259 -0
  82. package/package.json +5 -3
  83. package/scripts/brand-accent.generated.mjs +27 -0
  84. package/scripts/ui-audit.mjs +66 -0
  85. package/scripts/visual-audit-rules.mjs +46 -2
@@ -2013,3 +2013,82 @@
2013
2013
  transition: none;
2014
2014
  }
2015
2015
  }
2016
+
2017
+ @layer components {
2018
+
2019
+ .ui-masonry {
2020
+ position: relative;
2021
+ box-sizing: border-box;
2022
+
2023
+ column-gap: var(--masonry-gap-inline);
2024
+ row-gap: var(--masonry-gap-block);
2025
+ }
2026
+
2027
+ .ui-masonry-item {
2028
+ position: absolute;
2029
+ box-sizing: border-box;
2030
+
2031
+ --masonry-item-track: calc((100% + var(--masonry-gap-inline)) / var(--masonry-column-count, 3));
2032
+ inline-size: calc(var(--masonry-item-track) - var(--masonry-gap-inline));
2033
+
2034
+ inset-inline-start: calc(var(--masonry-item-track) * var(--masonry-item-column, 0));
2035
+ inset-block-start: 0;
2036
+
2037
+ opacity: 0;
2038
+ transition:
2039
+ opacity var(--duration-base) var(--ease-standard),
2040
+ inset-block-start var(--duration-base) var(--ease-standard),
2041
+ inset-inline-start var(--duration-base) var(--ease-standard);
2042
+ }
2043
+
2044
+ .ui-masonry-item[data-positioned] {
2045
+ opacity: 1;
2046
+ }
2047
+
2048
+ @media (prefers-reduced-motion: reduce) {
2049
+ .ui-masonry-item {
2050
+ transition: none;
2051
+ }
2052
+ }
2053
+
2054
+ .ui-affix {
2055
+
2056
+ position: relative;
2057
+ }
2058
+
2059
+ .ui-affix-sentinel {
2060
+ position: absolute;
2061
+ inset-inline: 0;
2062
+
2063
+ block-size: 1px;
2064
+ pointer-events: none;
2065
+ }
2066
+
2067
+ .ui-affix-sentinel[data-edge="block-start"] {
2068
+ inset-block-start: calc(-1 * var(--affix-inset-block-start));
2069
+ }
2070
+
2071
+ .ui-affix-sentinel[data-edge="block-end"] {
2072
+ inset-block-end: calc(-1 * var(--affix-inset-block-end));
2073
+ }
2074
+
2075
+ .ui-affix-placeholder {
2076
+ pointer-events: none;
2077
+ }
2078
+
2079
+ .ui-affix-content[data-affixed] {
2080
+ position: fixed;
2081
+
2082
+ z-index: var(--sticky-z-index);
2083
+
2084
+ inline-size: var(--affix-content-inline-size, auto);
2085
+ }
2086
+
2087
+ .ui-affix-content[data-affixed][data-edge="block-start"] {
2088
+ inset-block-start: calc(var(--affix-target-inset, 0px) + var(--affix-inset-block-start));
2089
+ }
2090
+
2091
+ .ui-affix-content[data-affixed][data-edge="block-end"] {
2092
+ inset-block-end: calc(var(--affix-target-inset, 0px) + var(--affix-inset-block-end));
2093
+ }
2094
+ }
@@ -6,6 +6,20 @@
6
6
  will-change: transform, opacity;
7
7
  }
8
8
 
9
+ .ui-reveal[data-reveal-on="view"] {
10
+ animation: none;
11
+ }
12
+ .ui-reveal[data-reveal-state="out"] {
13
+ opacity: 0;
14
+ transform: translateY(var(--reveal-distance));
15
+ }
16
+ .ui-reveal[data-reveal-state="in"] {
17
+ animation-name: ui-reveal-in;
18
+ animation-duration: var(--duration-slow);
19
+ animation-timing-function: var(--ease-emphasized);
20
+ animation-fill-mode: both;
21
+ }
22
+
9
23
  .ui-reveal[data-reveal-delay="1"] {
10
24
  animation-delay: calc(var(--reveal-stagger-step) * 1);
11
25
  }
@@ -38,9 +52,14 @@
38
52
 
39
53
  @media (prefers-reduced-motion: reduce) {
40
54
  .ui-reveal,
41
- .ui-reveal[data-reveal-delay] {
55
+ .ui-reveal[data-reveal-delay],
56
+ .ui-reveal[data-reveal-state] {
42
57
  animation: none;
43
58
  }
59
+ .ui-reveal[data-reveal-state="out"] {
60
+ opacity: 1;
61
+ transform: none;
62
+ }
44
63
  }
45
64
  }
46
65
 
@@ -193,3 +212,104 @@
193
212
  }
194
213
  }
195
214
  }
215
+
216
+ @layer components {
217
+
218
+ .ui-marquee {
219
+ display: flex;
220
+ align-items: center;
221
+ gap: var(--marquee-gap-inline);
222
+ inline-size: 100%;
223
+ min-inline-size: 0;
224
+ }
225
+
226
+ .ui-marquee-viewport {
227
+ flex: 1 1 auto;
228
+ min-inline-size: 0;
229
+ overflow: hidden;
230
+ }
231
+
232
+ .ui-marquee-scroller {
233
+ flex: 1 1 auto;
234
+ min-inline-size: 0;
235
+ }
236
+
237
+ .ui-marquee[data-fade="true"] .ui-marquee-viewport {
238
+ mask-image: linear-gradient(
239
+ to right,
240
+ transparent,
241
+ black var(--marquee-mask-width),
242
+ black calc(100% - var(--marquee-mask-width)),
243
+ transparent
244
+ );
245
+ }
246
+
247
+ .ui-marquee-track {
248
+ display: flex;
249
+ inline-size: max-content;
250
+ will-change: transform;
251
+ animation: ui-marquee-travel calc(var(--marquee-interval) * var(--marquee-cycle-scale, 1))
252
+ linear infinite;
253
+ }
254
+ .ui-marquee[data-speed="slow"] .ui-marquee-track {
255
+ animation-duration: calc(var(--marquee-interval-slow) * var(--marquee-cycle-scale, 1));
256
+ }
257
+ .ui-marquee[data-speed="fast"] .ui-marquee-track {
258
+ animation-duration: calc(var(--marquee-interval-fast) * var(--marquee-cycle-scale, 1));
259
+ }
260
+
261
+ .ui-marquee-copy {
262
+ display: flex;
263
+ flex: 0 0 auto;
264
+ align-items: center;
265
+ gap: var(--marquee-gap-inline);
266
+ padding-inline-end: var(--marquee-gap-inline);
267
+ }
268
+
269
+ .ui-marquee-control {
270
+ flex: 0 0 auto;
271
+ }
272
+
273
+ @keyframes ui-marquee-travel {
274
+ from {
275
+ transform: translateX(0);
276
+ }
277
+ to {
278
+ transform: translateX(calc(-100% / var(--marquee-copies, 2)));
279
+ }
280
+ }
281
+
282
+ @keyframes ui-marquee-travel-rtl {
283
+ from {
284
+ transform: translateX(0);
285
+ }
286
+ to {
287
+ transform: translateX(calc(100% / var(--marquee-copies, 2)));
288
+ }
289
+ }
290
+ [dir="rtl"] .ui-marquee-track {
291
+ animation-name: ui-marquee-travel-rtl;
292
+ }
293
+
294
+ .ui-marquee[data-direction="end"] .ui-marquee-track {
295
+ animation-direction: reverse;
296
+ }
297
+
298
+ .ui-marquee[data-playing="false"] .ui-marquee-track {
299
+ animation-play-state: paused;
300
+ }
301
+
302
+ .ui-marquee-viewport:focus-within .ui-marquee-track {
303
+ animation-play-state: paused;
304
+ }
305
+
306
+ .ui-marquee[data-pause-on-hover="true"] .ui-marquee-viewport:hover .ui-marquee-track {
307
+ animation-play-state: paused;
308
+ }
309
+
310
+ @media (prefers-reduced-motion: reduce) {
311
+ .ui-marquee-track {
312
+ animation: none;
313
+ }
314
+ }
315
+ }
@@ -1085,12 +1085,13 @@
1085
1085
  }
1086
1086
 
1087
1087
  .ui-conversations-row {
1088
+ --button-radius: var(--conversations-item-radius);
1089
+
1088
1090
  min-inline-size: 0;
1089
1091
  height: var(--conversations-item-height);
1090
1092
  flex: 1 1 auto;
1091
1093
  gap: var(--conversations-item-gap);
1092
1094
  padding-inline: var(--conversations-item-padding-inline);
1093
- border-radius: var(--conversations-item-radius);
1094
1095
  color: var(--conversations-item-color, hsl(var(--muted-foreground)));
1095
1096
  font-size: var(--conversations-item-font-size);
1096
1097
  }
@@ -1195,4 +1196,399 @@
1195
1196
  hsl(var(--separator-rule-color, var(--border)));
1196
1197
  background: transparent;
1197
1198
  }
1199
+
1200
+ .ui-anchor-track {
1201
+ position: relative;
1202
+ }
1203
+
1204
+ .ui-anchor-list {
1205
+ list-style: none;
1206
+ margin: 0;
1207
+ padding: 0;
1208
+ }
1209
+
1210
+ .ui-anchor [data-slot="anchor-link"] {
1211
+ display: block;
1212
+ padding-block: var(--anchor-item-padding-block);
1213
+ padding-inline: var(--anchor-item-padding-inline) 0;
1214
+ color: hsl(var(--muted-foreground));
1215
+ text-decoration: none;
1216
+
1217
+ overflow-wrap: anywhere;
1218
+ }
1219
+
1220
+ .ui-anchor [data-slot="anchor-link"]:hover {
1221
+ color: hsl(var(--foreground));
1222
+ }
1223
+
1224
+ .ui-anchor [data-slot="anchor-link"][data-active] {
1225
+ color: hsl(var(--anchor-ink-color, var(--primary)));
1226
+ font-weight: var(--font-weight-medium);
1227
+ }
1228
+
1229
+ .ui-anchor [data-slot="anchor-item"][data-nested] > [data-slot="anchor-link"] {
1230
+ padding-inline-start: calc(
1231
+ var(--anchor-item-padding-inline) + var(--anchor-nested-padding-inline)
1232
+ );
1233
+ }
1234
+
1235
+ .ui-anchor-ink {
1236
+ position: absolute;
1237
+ background: hsl(var(--anchor-ink-color, var(--primary)));
1238
+
1239
+ opacity: 0;
1240
+ transition:
1241
+ opacity var(--duration-fast) var(--ease-standard),
1242
+ inset-block-start var(--duration-fast) var(--ease-standard),
1243
+ inset-inline-start var(--duration-fast) var(--ease-standard),
1244
+ block-size var(--duration-fast) var(--ease-standard),
1245
+ inline-size var(--duration-fast) var(--ease-standard);
1246
+ }
1247
+
1248
+ .ui-anchor-ink[data-visible] {
1249
+ opacity: 1;
1250
+ }
1251
+
1252
+ .ui-anchor[data-ink="hidden"] .ui-anchor-ink {
1253
+ display: none;
1254
+ }
1255
+
1256
+ .ui-anchor[data-direction="vertical"] .ui-anchor-track {
1257
+ border-inline-start: var(--anchor-ink-width) solid hsl(var(--anchor-track-color, var(--border)));
1258
+ }
1259
+
1260
+ .ui-anchor[data-direction="vertical"] .ui-anchor-ink {
1261
+
1262
+ inset-inline-start: calc(-1 * var(--anchor-ink-width));
1263
+ inline-size: var(--anchor-ink-width);
1264
+ inset-block-start: var(--anchor-ink-offset, 0px);
1265
+ block-size: var(--anchor-ink-extent, 0px);
1266
+ }
1267
+
1268
+ .ui-anchor[data-direction="horizontal"] .ui-anchor-track {
1269
+ border-block-end: var(--anchor-ink-width) solid hsl(var(--anchor-track-color, var(--border)));
1270
+ }
1271
+
1272
+ .ui-anchor[data-direction="horizontal"] .ui-anchor-list {
1273
+ display: flex;
1274
+ gap: var(--anchor-gap);
1275
+
1276
+ overflow-x: auto;
1277
+ }
1278
+
1279
+ .ui-anchor[data-direction="horizontal"] [data-slot="anchor-link"] {
1280
+ padding-inline: 0;
1281
+ white-space: nowrap;
1282
+ }
1283
+
1284
+ .ui-anchor[data-direction="horizontal"] .ui-anchor-ink {
1285
+ inset-block-end: calc(-1 * var(--anchor-ink-width));
1286
+ block-size: var(--anchor-ink-width);
1287
+ inset-inline-start: var(--anchor-ink-offset, 0px);
1288
+ inline-size: var(--anchor-ink-extent, 0px);
1289
+ }
1290
+
1291
+ @media (prefers-reduced-motion: reduce) {
1292
+ .ui-anchor-ink {
1293
+ transition: none;
1294
+ }
1295
+ }
1296
+ }
1297
+
1298
+ @layer components {
1299
+
1300
+ .ui-mega-menu {
1301
+ position: relative;
1302
+ display: block;
1303
+ }
1304
+
1305
+ .ui-mega-menu-bar {
1306
+ display: flex;
1307
+ flex-wrap: wrap;
1308
+ align-items: center;
1309
+ gap: var(--mega-menu-bar-gap);
1310
+ margin: 0;
1311
+ padding: 0;
1312
+ list-style: none;
1313
+ }
1314
+
1315
+ .ui-mega-menu-item {
1316
+ position: static;
1317
+ list-style: none;
1318
+ }
1319
+
1320
+ .ui-mega-menu-trigger {
1321
+ display: inline-flex;
1322
+ align-items: center;
1323
+ gap: var(--mega-menu-trigger-gap);
1324
+ min-block-size: var(--mega-menu-trigger-height);
1325
+ padding-inline: var(--mega-menu-trigger-padding-x);
1326
+ border: 0;
1327
+ border-radius: var(--mega-menu-trigger-radius);
1328
+ background: var(--mega-menu-trigger-background);
1329
+ color: var(--mega-menu-trigger-foreground);
1330
+ font-size: var(--mega-menu-trigger-font-size);
1331
+ font-weight: var(--font-weight-medium);
1332
+ line-height: var(--line-height-normal);
1333
+ text-align: start;
1334
+ text-decoration: none;
1335
+ cursor: pointer;
1336
+ }
1337
+
1338
+ .ui-mega-menu-trigger:hover {
1339
+ background: var(--mega-menu-trigger-hover-background, hsl(var(--accent)));
1340
+ color: var(--mega-menu-trigger-hover-foreground, hsl(var(--accent-foreground)));
1341
+ }
1342
+
1343
+ .ui-mega-menu-trigger[data-open="true"] {
1344
+ background: var(--mega-menu-trigger-open-background, hsl(var(--accent)));
1345
+ color: var(--mega-menu-trigger-open-foreground, hsl(var(--accent-foreground)));
1346
+ }
1347
+
1348
+ .ui-mega-menu-trigger[aria-current="page"] {
1349
+ color: var(--mega-menu-trigger-current-foreground, hsl(var(--primary)));
1350
+ font-weight: var(--font-weight-semibold);
1351
+ text-decoration: underline;
1352
+ text-underline-offset: var(--space-1);
1353
+ }
1354
+
1355
+ .ui-mega-menu-trigger:disabled,
1356
+ .ui-mega-menu-trigger[aria-disabled="true"] {
1357
+ opacity: var(--mega-menu-trigger-disabled-alpha);
1358
+ cursor: not-allowed;
1359
+ }
1360
+
1361
+ .ui-mega-menu-trigger-icon {
1362
+ display: inline-flex;
1363
+ flex: none;
1364
+ }
1365
+
1366
+ .ui-mega-menu-trigger-icon svg {
1367
+ inline-size: var(--mega-menu-expand-icon-size);
1368
+ block-size: var(--mega-menu-expand-icon-size);
1369
+ }
1370
+
1371
+ .ui-mega-menu-trigger-label {
1372
+ min-inline-size: 0;
1373
+ overflow-wrap: anywhere;
1374
+ }
1375
+
1376
+ .ui-mega-menu-expand-icon {
1377
+ display: inline-flex;
1378
+ flex: none;
1379
+ transition: rotate var(--duration-fast) var(--ease-standard);
1380
+ }
1381
+
1382
+ .ui-mega-menu-expand-icon svg {
1383
+ inline-size: var(--mega-menu-expand-icon-size);
1384
+ block-size: var(--mega-menu-expand-icon-size);
1385
+ }
1386
+
1387
+ .ui-mega-menu-trigger[data-open="true"] .ui-mega-menu-expand-icon {
1388
+ rotate: 180deg;
1389
+ }
1390
+
1391
+ .ui-mega-menu-panel {
1392
+ position: fixed;
1393
+ z-index: var(--overlay-z-index);
1394
+ inset-inline-start: 0;
1395
+ inset-block-start: var(--mega-menu-panel-offset);
1396
+ inline-size: var(--mega-menu-panel-measured-width, 100%);
1397
+ translate: var(--mega-menu-panel-translate-x, 0) var(--mega-menu-panel-translate-y, 0);
1398
+ max-block-size: var(--mega-menu-panel-max-height);
1399
+ overflow-y: auto;
1400
+ border: var(--mega-menu-panel-border-width) solid var(--mega-menu-panel-border-color);
1401
+ border-radius: var(--mega-menu-panel-radius);
1402
+ background: var(--mega-menu-panel-background);
1403
+ color: var(--mega-menu-panel-foreground);
1404
+ box-shadow: var(--mega-menu-panel-shadow);
1405
+ animation: ui-mega-menu-panel-in var(--duration-fast) var(--ease-standard);
1406
+ }
1407
+
1408
+ @keyframes ui-mega-menu-panel-in {
1409
+ from {
1410
+ opacity: 0;
1411
+ }
1412
+
1413
+ to {
1414
+ opacity: 1;
1415
+ }
1416
+ }
1417
+
1418
+ .ui-mega-menu-panel-inner {
1419
+ padding: var(--mega-menu-panel-padding);
1420
+ }
1421
+
1422
+ .ui-mega-menu-groups {
1423
+ display: grid;
1424
+ grid-template-columns: repeat(
1425
+ auto-fit,
1426
+ minmax(min(var(--mega-menu-group-min-width), 100%), 1fr)
1427
+ );
1428
+ gap: var(--mega-menu-groups-gap);
1429
+ margin: 0;
1430
+ padding: 0;
1431
+ list-style: none;
1432
+ }
1433
+
1434
+ .ui-mega-menu-group {
1435
+ display: flex;
1436
+ flex-direction: column;
1437
+ gap: var(--mega-menu-group-gap);
1438
+ min-inline-size: 0;
1439
+ list-style: none;
1440
+ }
1441
+
1442
+ .ui-mega-menu-group-label {
1443
+ display: flex;
1444
+ align-items: center;
1445
+ gap: var(--mega-menu-link-gap);
1446
+ margin: 0;
1447
+ color: var(--mega-menu-group-label-foreground);
1448
+ font-size: var(--mega-menu-group-label-font-size);
1449
+ font-weight: var(--font-weight-semibold);
1450
+ overflow-wrap: anywhere;
1451
+ }
1452
+
1453
+ .ui-mega-menu-group-icon {
1454
+ display: inline-flex;
1455
+ flex: none;
1456
+ }
1457
+
1458
+ .ui-mega-menu-group-icon svg {
1459
+ inline-size: var(--mega-menu-group-icon-size);
1460
+ block-size: var(--mega-menu-group-icon-size);
1461
+ }
1462
+
1463
+ .ui-mega-menu-group-description {
1464
+ margin: 0;
1465
+ color: var(--mega-menu-group-description-foreground);
1466
+ font-size: var(--mega-menu-group-description-font-size);
1467
+ line-height: var(--line-height-body);
1468
+ overflow-wrap: anywhere;
1469
+ }
1470
+
1471
+ .ui-mega-menu-group-links {
1472
+ display: flex;
1473
+ flex-direction: column;
1474
+ margin: 0;
1475
+ padding: 0;
1476
+ list-style: none;
1477
+ }
1478
+
1479
+ .ui-mega-menu-link-row {
1480
+ list-style: none;
1481
+ }
1482
+
1483
+ .ui-mega-menu-link {
1484
+ display: flex;
1485
+ align-items: start;
1486
+ gap: var(--mega-menu-link-gap);
1487
+ min-block-size: var(--mega-menu-link-min-height);
1488
+ padding-block: var(--mega-menu-link-padding-y);
1489
+ padding-inline: var(--mega-menu-link-padding-x);
1490
+ border-radius: var(--mega-menu-link-radius);
1491
+ color: var(--mega-menu-link-foreground);
1492
+ font-size: var(--mega-menu-link-font-size);
1493
+ line-height: var(--line-height-body);
1494
+ text-decoration: none;
1495
+ }
1496
+
1497
+ .ui-mega-menu-link:hover {
1498
+ background: var(--mega-menu-link-hover-background, hsl(var(--accent)));
1499
+ color: var(--mega-menu-link-hover-foreground, hsl(var(--accent-foreground)));
1500
+ }
1501
+
1502
+ .ui-mega-menu-link[aria-current="page"] {
1503
+ color: var(--mega-menu-link-current-foreground, hsl(var(--primary)));
1504
+ font-weight: var(--font-weight-semibold);
1505
+ }
1506
+
1507
+ .ui-mega-menu-link[data-disabled="true"] {
1508
+ opacity: var(--mega-menu-trigger-disabled-alpha);
1509
+ cursor: not-allowed;
1510
+ }
1511
+
1512
+ .ui-mega-menu-link-icon {
1513
+ display: inline-flex;
1514
+ flex: none;
1515
+ }
1516
+
1517
+ .ui-mega-menu-link-icon svg {
1518
+ inline-size: var(--mega-menu-link-icon-size);
1519
+ block-size: var(--mega-menu-link-icon-size);
1520
+ }
1521
+
1522
+ .ui-mega-menu-link-text {
1523
+ display: flex;
1524
+ flex-direction: column;
1525
+ min-inline-size: 0;
1526
+ overflow-wrap: anywhere;
1527
+ }
1528
+
1529
+ .ui-mega-menu-link-description {
1530
+ color: var(--mega-menu-link-description-foreground);
1531
+ font-size: var(--mega-menu-link-description-font-size);
1532
+ font-weight: var(--font-weight-normal);
1533
+ }
1534
+
1535
+ .ui-mega-menu-panel-footer {
1536
+ margin-block-start: var(--mega-menu-panel-footer-gap);
1537
+ padding-block-start: var(--mega-menu-panel-footer-gap);
1538
+ border-block-start: var(--mega-menu-panel-border-width) solid
1539
+ var(--mega-menu-panel-footer-border-color);
1540
+ }
1541
+
1542
+ @media (max-width: 47.99rem) {
1543
+ .ui-mega-menu-bar {
1544
+ flex-direction: column;
1545
+ align-items: stretch;
1546
+ }
1547
+
1548
+ .ui-mega-menu-trigger {
1549
+ inline-size: 100%;
1550
+ justify-content: space-between;
1551
+ }
1552
+
1553
+ .ui-mega-menu-panel {
1554
+ position: static;
1555
+ inline-size: auto;
1556
+ translate: none;
1557
+ max-block-size: none;
1558
+ margin-block-start: var(--mega-menu-bar-gap);
1559
+ box-shadow: none;
1560
+ }
1561
+
1562
+ .ui-mega-menu-panel-inner {
1563
+ padding: var(--mega-menu-link-padding-x);
1564
+ }
1565
+
1566
+ .ui-mega-menu-groups {
1567
+ grid-template-columns: 1fr;
1568
+ gap: var(--mega-menu-group-gap);
1569
+ }
1570
+ }
1571
+
1572
+ @media (prefers-reduced-motion: reduce) {
1573
+ .ui-mega-menu-panel {
1574
+ animation: none;
1575
+ }
1576
+
1577
+ .ui-mega-menu-expand-icon {
1578
+ transition: none;
1579
+ }
1580
+ }
1581
+
1582
+ @media (forced-colors: active) {
1583
+ .ui-mega-menu-panel {
1584
+ border-color: CanvasText;
1585
+ }
1586
+
1587
+ .ui-mega-menu-trigger[data-open="true"],
1588
+ .ui-mega-menu-link[aria-current="page"] {
1589
+ forced-color-adjust: none;
1590
+ background: Highlight;
1591
+ color: HighlightText;
1592
+ }
1593
+ }
1198
1594
  }
@@ -1974,6 +1974,9 @@
1974
1974
  gap: var(--topbar-gap);
1975
1975
  padding-inline: var(--topbar-inset);
1976
1976
 
1977
+ background-color: hsl(var(--background) / var(--topbar-background-alpha));
1978
+ backdrop-filter: blur(var(--topbar-backdrop-blur-size));
1979
+
1977
1980
  overflow: clip;
1978
1981
  overflow-clip-margin: var(--focus-ring-clip-margin);
1979
1982
  }