fumadocs-ui 16.2.4 → 16.3.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 (150) hide show
  1. package/README.md +1 -1
  2. package/css/black.css +1 -39
  3. package/css/catppuccin.css +1 -49
  4. package/css/dusk.css +1 -47
  5. package/css/neutral.css +1 -7
  6. package/css/ocean.css +1 -48
  7. package/css/preset.css +1 -215
  8. package/css/purple.css +1 -39
  9. package/css/shadcn.css +1 -35
  10. package/css/solar.css +1 -75
  11. package/css/vitepress.css +1 -77
  12. package/dist/components/accordion.d.ts +5 -6
  13. package/dist/components/accordion.d.ts.map +1 -1
  14. package/dist/components/accordion.js +12 -14
  15. package/dist/components/banner.js +2 -2
  16. package/dist/components/callout.d.ts.map +1 -1
  17. package/dist/components/callout.js +2 -2
  18. package/dist/components/card.js +1 -1
  19. package/dist/components/codeblock.d.ts +1 -1
  20. package/dist/components/codeblock.d.ts.map +1 -1
  21. package/dist/components/codeblock.js +5 -5
  22. package/dist/components/dialog/search.js +2 -2
  23. package/dist/components/dynamic-codeblock.js +1 -1
  24. package/dist/components/files.js +2 -2
  25. package/dist/components/github-info.js +2 -2
  26. package/dist/components/heading.js +2 -2
  27. package/dist/components/inline-toc.js +2 -2
  28. package/dist/components/sidebar/base.d.ts +2 -2
  29. package/dist/components/sidebar/base.d.ts.map +1 -1
  30. package/dist/components/sidebar/base.js +4 -4
  31. package/dist/components/sidebar/link-item.d.ts +1 -1
  32. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  33. package/dist/components/sidebar/tabs/dropdown.d.ts +1 -0
  34. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  35. package/dist/components/sidebar/tabs/dropdown.js +8 -3
  36. package/dist/components/tabs.d.ts +1 -1
  37. package/dist/components/tabs.d.ts.map +1 -1
  38. package/dist/components/tabs.js +2 -2
  39. package/dist/components/toc/clerk.d.ts +1 -2
  40. package/dist/components/toc/clerk.d.ts.map +1 -1
  41. package/dist/components/toc/clerk.js +1 -76
  42. package/dist/components/toc/default.d.ts +1 -2
  43. package/dist/components/toc/default.d.ts.map +1 -1
  44. package/dist/components/toc/default.js +1 -19
  45. package/dist/components/toc/index.d.ts +1 -10
  46. package/dist/components/toc/index.d.ts.map +1 -1
  47. package/dist/components/toc/index.js +1 -64
  48. package/dist/components/type-table.js +2 -2
  49. package/dist/components/ui/accordion.d.ts +8 -0
  50. package/dist/components/ui/accordion.d.ts.map +1 -0
  51. package/dist/components/ui/accordion.js +20 -0
  52. package/dist/components/ui/button.d.ts +1 -1
  53. package/dist/components/ui/collapsible.d.ts +7 -4
  54. package/dist/components/ui/collapsible.d.ts.map +1 -1
  55. package/dist/components/ui/collapsible.js +6 -7
  56. package/dist/components/ui/navigation-menu.d.ts +2 -0
  57. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  58. package/dist/components/ui/navigation-menu.js +1 -1
  59. package/dist/components/ui/popover.js +1 -1
  60. package/dist/components/ui/scroll-area.d.ts +5 -4
  61. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  62. package/dist/components/ui/scroll-area.js +8 -8
  63. package/dist/components/{tabs.unstyled.d.ts → ui/tabs.d.ts} +1 -1
  64. package/dist/components/ui/tabs.d.ts.map +1 -0
  65. package/dist/components/{tabs.unstyled.js → ui/tabs.js} +1 -1
  66. package/dist/contexts/i18n.d.ts +1 -29
  67. package/dist/contexts/i18n.d.ts.map +1 -1
  68. package/dist/contexts/i18n.js +1 -23
  69. package/dist/contexts/search.d.ts +1 -60
  70. package/dist/contexts/search.d.ts.map +1 -1
  71. package/dist/contexts/search.js +1 -58
  72. package/dist/contexts/tree.d.ts +1 -14
  73. package/dist/contexts/tree.d.ts.map +1 -1
  74. package/dist/contexts/tree.js +1 -31
  75. package/dist/i18n.d.ts +1 -14
  76. package/dist/i18n.d.ts.map +1 -1
  77. package/dist/i18n.js +1 -16
  78. package/dist/layouts/docs/client.d.ts.map +1 -1
  79. package/dist/layouts/docs/client.js +3 -3
  80. package/dist/layouts/docs/index.js +4 -4
  81. package/dist/layouts/docs/page/client.js +6 -6
  82. package/dist/layouts/docs/page/index.js +2 -2
  83. package/dist/layouts/docs/sidebar.d.ts +1 -1
  84. package/dist/layouts/docs/sidebar.js +4 -4
  85. package/dist/layouts/home/client.d.ts +1 -1
  86. package/dist/layouts/home/client.js +4 -4
  87. package/dist/layouts/home/index.js +1 -1
  88. package/dist/layouts/home/navbar.d.ts +1 -1
  89. package/dist/layouts/home/navbar.d.ts.map +1 -1
  90. package/dist/layouts/home/navbar.js +1 -1
  91. package/dist/layouts/notebook/client.d.ts +3 -3
  92. package/dist/layouts/notebook/client.d.ts.map +1 -1
  93. package/dist/layouts/notebook/client.js +5 -5
  94. package/dist/layouts/notebook/index.js +4 -4
  95. package/dist/layouts/notebook/page/client.js +6 -6
  96. package/dist/layouts/notebook/page/index.js +2 -2
  97. package/dist/layouts/notebook/sidebar.d.ts +1 -1
  98. package/dist/layouts/notebook/sidebar.js +2 -2
  99. package/dist/layouts/shared/index.d.ts +2 -2
  100. package/dist/layouts/shared/index.d.ts.map +1 -1
  101. package/dist/layouts/shared/language-toggle.js +1 -1
  102. package/dist/layouts/shared/search-toggle.js +2 -2
  103. package/dist/layouts/shared/theme-toggle.js +2 -2
  104. package/dist/mdx.js +1 -1
  105. package/dist/mdx.server.d.ts +1 -1
  106. package/dist/mdx.server.d.ts.map +1 -1
  107. package/dist/mdx.server.js +1 -14
  108. package/dist/og.d.ts +1 -14
  109. package/dist/og.d.ts.map +1 -1
  110. package/dist/og.js +1 -45
  111. package/dist/page.d.ts.map +1 -1
  112. package/dist/page.js +1 -1
  113. package/dist/provider/base.d.ts +3 -22
  114. package/dist/provider/base.d.ts.map +1 -1
  115. package/dist/provider/base.js +4 -34
  116. package/dist/style.css +64 -131
  117. package/dist/utils/use-copy-button.d.ts +1 -2
  118. package/dist/utils/use-copy-button.d.ts.map +1 -1
  119. package/dist/utils/use-copy-button.js +1 -27
  120. package/dist/utils/use-footer-items.d.ts +1 -5
  121. package/dist/utils/use-footer-items.d.ts.map +1 -1
  122. package/dist/utils/use-footer-items.js +1 -27
  123. package/dist/utils/use-is-scroll-top.d.ts +1 -3
  124. package/dist/utils/use-is-scroll-top.d.ts.map +1 -1
  125. package/dist/utils/use-is-scroll-top.js +1 -17
  126. package/package.json +12 -25
  127. package/css/colors/index.css +0 -51
  128. package/css/shiki.css +0 -90
  129. package/dist/components/tabs.unstyled.d.ts.map +0 -1
  130. package/dist/icons.d.ts +0 -49
  131. package/dist/icons.d.ts.map +0 -1
  132. package/dist/icons.js +0 -282
  133. package/dist/layouts/shared/link-item.d.ts +0 -78
  134. package/dist/layouts/shared/link-item.d.ts.map +0 -1
  135. package/dist/layouts/shared/link-item.js +0 -12
  136. package/dist/theme/typography/index.d.ts +0 -10
  137. package/dist/theme/typography/index.d.ts.map +0 -1
  138. package/dist/theme/typography/index.js +0 -137
  139. package/dist/theme/typography/styles.d.ts +0 -93
  140. package/dist/theme/typography/styles.d.ts.map +0 -1
  141. package/dist/theme/typography/styles.js +0 -433
  142. package/dist/utils/cn.d.ts +0 -2
  143. package/dist/utils/cn.d.ts.map +0 -1
  144. package/dist/utils/cn.js +0 -1
  145. package/dist/utils/is-active.d.ts +0 -4
  146. package/dist/utils/is-active.d.ts.map +0 -1
  147. package/dist/utils/is-active.js +0 -15
  148. package/dist/utils/merge-refs.d.ts +0 -3
  149. package/dist/utils/merge-refs.d.ts.map +0 -1
  150. package/dist/utils/merge-refs.js +0 -12
package/dist/style.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -21,7 +21,6 @@
21
21
  --text-lg--line-height: calc(1.75 / 1.125);
22
22
  --text-2xl: 1.5rem;
23
23
  --text-3xl: 1.875rem;
24
- --text-3xl--line-height: calc(2.25 / 1.875);
25
24
  --font-weight-medium: 500;
26
25
  --font-weight-semibold: 600;
27
26
  --radius-sm: 0.25rem;
@@ -69,6 +68,12 @@
69
68
  --animate-fd-dialog-out: fd-dialog-out 300ms cubic-bezier(0.16, 1, 0.3, 1);
70
69
  --animate-fd-popover-in: fd-popover-in 100ms ease;
71
70
  --animate-fd-popover-out: fd-popover-out 100ms ease;
71
+ --animate-fd-enterFromLeft: fd-enterFromLeft 250ms ease;
72
+ --animate-fd-enterFromRight: fd-enterFromRight 250ms ease;
73
+ --animate-fd-sidebar-in: fd-sidebar-in 250ms ease;
74
+ --animate-fd-sidebar-out: fd-sidebar-out 250ms ease;
75
+ --animate-fd-exitToLeft: fd-exitToLeft 250ms ease;
76
+ --animate-fd-exitToRight: fd-exitToRight 250ms ease;
72
77
  --animate-fd-collapsible-down: fd-collapsible-down 150ms
73
78
  cubic-bezier(0.45, 0, 0.55, 1);
74
79
  --animate-fd-collapsible-up: fd-collapsible-up 150ms
@@ -77,12 +82,6 @@
77
82
  --animate-fd-accordion-up: fd-accordion-up 200ms ease-out;
78
83
  --animate-fd-nav-menu-in: fd-nav-menu-in 200ms ease;
79
84
  --animate-fd-nav-menu-out: fd-nav-menu-out 200ms ease;
80
- --animate-fd-enterFromLeft: fd-enterFromLeft 250ms ease;
81
- --animate-fd-enterFromRight: fd-enterFromRight 250ms ease;
82
- --animate-fd-sidebar-in: fd-sidebar-in 250ms ease;
83
- --animate-fd-sidebar-out: fd-sidebar-out 250ms ease;
84
- --animate-fd-exitToLeft: fd-exitToLeft 250ms ease;
85
- --animate-fd-exitToRight: fd-exitToRight 250ms ease;
86
85
  }
87
86
  }
88
87
  @layer base {
@@ -338,12 +337,6 @@
338
337
  .top-\(--fd-docs-row-3\) {
339
338
  top: var(--fd-docs-row-3);
340
339
  }
341
- .top-\(--fd-nav-height\) {
342
- top: var(--fd-nav-height);
343
- }
344
- .top-\(--fd-top\) {
345
- top: var(--fd-top);
346
- }
347
340
  .top-0 {
348
341
  top: calc(var(--spacing) * 0);
349
342
  }
@@ -359,11 +352,8 @@
359
352
  .top-4 {
360
353
  top: calc(var(--spacing) * 4);
361
354
  }
362
- .top-14 {
363
- top: calc(var(--spacing) * 14);
364
- }
365
- .top-\[calc\(--spacing\(4\)\+var\(--fd-toc-popover-height\)\)\] {
366
- top: calc(calc(var(--spacing) * 4) + var(--fd-toc-popover-height));
355
+ .top-\[calc\(--spacing\(4\)\+var\(--fd-docs-row-3\)\)\] {
356
+ top: calc(calc(var(--spacing) * 4) + var(--fd-docs-row-3));
367
357
  }
368
358
  .right-2 {
369
359
  right: calc(var(--spacing) * 2);
@@ -848,18 +838,12 @@
848
838
  margin-bottom: 0;
849
839
  }
850
840
  }
851
- .mt-\(--fd-top\) {
852
- margin-top: var(--fd-top);
853
- }
854
841
  .mt-6 {
855
842
  margin-top: calc(var(--spacing) * 6);
856
843
  }
857
844
  .mt-px {
858
845
  margin-top: 1px;
859
846
  }
860
- .mr-auto {
861
- margin-right: auto;
862
- }
863
847
  .-mb-px {
864
848
  margin-bottom: -1px;
865
849
  }
@@ -983,9 +967,6 @@
983
967
  .h-\[400px\] {
984
968
  height: 400px;
985
969
  }
986
- .h-\[calc\(100dvh-var\(--fd-nav-height\)\)\] {
987
- height: calc(100dvh - var(--fd-nav-height));
988
- }
989
970
  .h-\[calc\(var\(--fd-docs-height\)-var\(--fd-docs-row-1\)\)\] {
990
971
  height: calc(var(--fd-docs-height) - var(--fd-docs-row-1));
991
972
  }
@@ -1049,9 +1030,6 @@
1049
1030
  .w-\[85\%\] {
1050
1031
  width: 85%;
1051
1032
  }
1052
- .w-\[286px\] {
1053
- width: 286px;
1054
- }
1055
1033
  .w-\[calc\(100\%-1rem\)\] {
1056
1034
  width: calc(100% - 1rem);
1057
1035
  }
@@ -1076,9 +1054,6 @@
1076
1054
  .max-w-\[380px\] {
1077
1055
  max-width: 380px;
1078
1056
  }
1079
- .max-w-\[860px\] {
1080
- max-width: 860px;
1081
- }
1082
1057
  .max-w-\[900px\] {
1083
1058
  max-width: 900px;
1084
1059
  }
@@ -1141,6 +1116,10 @@
1141
1116
  --tw-translate-y: -100%;
1142
1117
  translate: var(--tw-translate-x) var(--tw-translate-y);
1143
1118
  }
1119
+ .translate-y-\(--fd-top\) {
1120
+ --tw-translate-y: var(--fd-top);
1121
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1122
+ }
1144
1123
  .translate-y-full {
1145
1124
  --tw-translate-y: 100%;
1146
1125
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1489,9 +1468,6 @@
1489
1468
  .py-6 {
1490
1469
  padding-block: calc(var(--spacing) * 6);
1491
1470
  }
1492
- .py-8 {
1493
- padding-block: calc(var(--spacing) * 8);
1494
- }
1495
1471
  .py-12 {
1496
1472
  padding-block: calc(var(--spacing) * 12);
1497
1473
  }
@@ -1543,9 +1519,6 @@
1543
1519
  .pb-2 {
1544
1520
  padding-bottom: calc(var(--spacing) * 2);
1545
1521
  }
1546
- .pl-4 {
1547
- padding-left: calc(var(--spacing) * 4);
1548
- }
1549
1522
  .text-center {
1550
1523
  text-align: center;
1551
1524
  }
@@ -1558,10 +1531,6 @@
1558
1531
  .font-mono {
1559
1532
  font-family: var(--font-mono);
1560
1533
  }
1561
- .text-3xl {
1562
- font-size: var(--text-3xl);
1563
- line-height: var(--tw-leading, var(--text-3xl--line-height));
1564
- }
1565
1534
  .text-base {
1566
1535
  font-size: var(--text-base);
1567
1536
  line-height: var(--tw-leading, var(--text-base--line-height));
@@ -1655,9 +1624,6 @@
1655
1624
  .text-fd-secondary-foreground {
1656
1625
  color: var(--color-fd-secondary-foreground);
1657
1626
  }
1658
- .italic {
1659
- font-style: italic;
1660
- }
1661
1627
  .line-through {
1662
1628
  text-decoration-line: line-through;
1663
1629
  }
@@ -1711,11 +1677,6 @@
1711
1677
  -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
1712
1678
  backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
1713
1679
  }
1714
- .transition {
1715
- transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
1716
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1717
- transition-duration: var(--tw-duration, var(--default-transition-duration));
1718
- }
1719
1680
  .transition-\[grid-template-columns\] {
1720
1681
  transition-property: grid-template-columns;
1721
1682
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -1726,6 +1687,21 @@
1726
1687
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1727
1688
  transition-duration: var(--tw-duration, var(--default-transition-duration));
1728
1689
  }
1690
+ .transition-\[opacity\,translate\,color\] {
1691
+ transition-property: opacity,translate,color;
1692
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1693
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1694
+ }
1695
+ .transition-\[opacity\,translate\] {
1696
+ transition-property: opacity,translate;
1697
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1698
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1699
+ }
1700
+ .transition-\[translate\,height\] {
1701
+ transition-property: translate,height;
1702
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1703
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1704
+ }
1729
1705
  .transition-\[width\,height\] {
1730
1706
  transition-property: width,height;
1731
1707
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -1793,9 +1769,6 @@
1793
1769
  .\[--fd-layout-width\:1400px\] {
1794
1770
  --fd-layout-width: 1400px;
1795
1771
  }
1796
- .\[--fd-nav-height\:56px\] {
1797
- --fd-nav-height: 56px;
1798
- }
1799
1772
  .\[--fd-sidebar-width\:0px\] {
1800
1773
  --fd-sidebar-width: 0px;
1801
1774
  }
@@ -2388,21 +2361,6 @@
2388
2361
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2389
2362
  }
2390
2363
  }
2391
- .max-md\:invisible {
2392
- @media (width < 48rem) {
2393
- visibility: hidden;
2394
- }
2395
- }
2396
- .max-md\:inset-x-0 {
2397
- @media (width < 48rem) {
2398
- inset-inline: calc(var(--spacing) * 0);
2399
- }
2400
- }
2401
- .max-md\:bottom-0 {
2402
- @media (width < 48rem) {
2403
- bottom: calc(var(--spacing) * 0);
2404
- }
2405
- }
2406
2364
  .max-md\:flex {
2407
2365
  @media (width < 48rem) {
2408
2366
  display: flex;
@@ -2424,11 +2382,6 @@
2424
2382
  border-width: 1px;
2425
2383
  }
2426
2384
  }
2427
- .max-md\:bg-fd-background {
2428
- @media (width < 48rem) {
2429
- background-color: var(--color-fd-background);
2430
- }
2431
- }
2432
2385
  .max-md\:bg-fd-secondary {
2433
2386
  @media (width < 48rem) {
2434
2387
  background-color: var(--color-fd-secondary);
@@ -2469,21 +2422,11 @@
2469
2422
  justify-content: flex-end;
2470
2423
  }
2471
2424
  }
2472
- .md\:sticky {
2473
- @media (width >= 48rem) {
2474
- position: sticky;
2475
- }
2476
- }
2477
2425
  .md\:top-\[calc\(50\%-250px\)\] {
2478
2426
  @media (width >= 48rem) {
2479
2427
  top: calc(50% - 250px);
2480
2428
  }
2481
2429
  }
2482
- .md\:mx-auto {
2483
- @media (width >= 48rem) {
2484
- margin-inline: auto;
2485
- }
2486
- }
2487
2430
  .md\:mt-1 {
2488
2431
  @media (width >= 48rem) {
2489
2432
  margin-top: calc(var(--spacing) * 1);
@@ -2505,16 +2448,6 @@
2505
2448
  height: calc(var(--spacing) * 5);
2506
2449
  }
2507
2450
  }
2508
- .md\:h-\[calc\(100dvh-56px\)\] {
2509
- @media (width >= 48rem) {
2510
- height: calc(100dvh - 56px);
2511
- }
2512
- }
2513
- .md\:w-\[300px\] {
2514
- @media (width >= 48rem) {
2515
- width: 300px;
2516
- }
2517
- }
2518
2451
  .md\:grid-cols-2 {
2519
2452
  @media (width >= 48rem) {
2520
2453
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -3102,42 +3035,6 @@
3102
3035
  transform: translateX(var(--fd-sidebar-drawer-offset));
3103
3036
  }
3104
3037
  }
3105
- @keyframes fd-collapsible-down {
3106
- from {
3107
- height: 0;
3108
- opacity: 0;
3109
- }
3110
- to {
3111
- height: var(--radix-collapsible-content-height);
3112
- }
3113
- }
3114
- @keyframes fd-collapsible-up {
3115
- from {
3116
- height: var(--radix-collapsible-content-height);
3117
- }
3118
- to {
3119
- height: 0;
3120
- opacity: 0;
3121
- }
3122
- }
3123
- @keyframes fd-accordion-down {
3124
- from {
3125
- height: 0;
3126
- opacity: 0.5;
3127
- }
3128
- to {
3129
- height: var(--radix-accordion-content-height);
3130
- }
3131
- }
3132
- @keyframes fd-accordion-up {
3133
- from {
3134
- height: var(--radix-accordion-content-height);
3135
- }
3136
- to {
3137
- height: 0;
3138
- opacity: 0.5;
3139
- }
3140
- }
3141
3038
  @keyframes fd-dialog-in {
3142
3039
  from {
3143
3040
  transform: scale(1.06);
@@ -3224,6 +3121,42 @@
3224
3121
  transform: translateX(-200px);
3225
3122
  }
3226
3123
  }
3124
+ @keyframes fd-collapsible-down {
3125
+ from {
3126
+ height: 0;
3127
+ opacity: 0;
3128
+ }
3129
+ to {
3130
+ height: var(--radix-collapsible-content-height);
3131
+ }
3132
+ }
3133
+ @keyframes fd-collapsible-up {
3134
+ from {
3135
+ height: var(--radix-collapsible-content-height);
3136
+ }
3137
+ to {
3138
+ height: 0;
3139
+ opacity: 0;
3140
+ }
3141
+ }
3142
+ @keyframes fd-accordion-down {
3143
+ from {
3144
+ height: 0;
3145
+ opacity: 0.5;
3146
+ }
3147
+ to {
3148
+ height: var(--radix-accordion-content-height);
3149
+ }
3150
+ }
3151
+ @keyframes fd-accordion-up {
3152
+ from {
3153
+ height: var(--radix-accordion-content-height);
3154
+ }
3155
+ to {
3156
+ height: 0;
3157
+ opacity: 0.5;
3158
+ }
3159
+ }
3227
3160
  @keyframes fd-nav-menu-in {
3228
3161
  from {
3229
3162
  opacity: 0;
@@ -1,3 +1,2 @@
1
- import { type MouseEventHandler } from 'react';
2
- export declare function useCopyButton(onCopy: () => void | Promise<void>): [checked: boolean, onClick: MouseEventHandler];
1
+ export * from '@fumadocs/ui/hooks/use-copy-button';
3
2
  //# sourceMappingURL=use-copy-button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-copy-button.d.ts","sourceRoot":"","sources":["../../src/utils/use-copy-button.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EAKvB,MAAM,OAAO,CAAC;AAEf,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACjC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,CA2BhD"}
1
+ {"version":3,"file":"use-copy-button.d.ts","sourceRoot":"","sources":["../../src/utils/use-copy-button.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC"}
@@ -1,27 +1 @@
1
- 'use client';
2
- import { useCallback, useEffect, useRef, useState, } from 'react';
3
- export function useCopyButton(onCopy) {
4
- const [checked, setChecked] = useState(false);
5
- const callbackRef = useRef(onCopy);
6
- const timeoutRef = useRef(null);
7
- callbackRef.current = onCopy;
8
- const onClick = useCallback(() => {
9
- if (timeoutRef.current)
10
- window.clearTimeout(timeoutRef.current);
11
- const res = Promise.resolve(callbackRef.current());
12
- void res.then(() => {
13
- setChecked(true);
14
- timeoutRef.current = window.setTimeout(() => {
15
- setChecked(false);
16
- }, 1500);
17
- });
18
- }, []);
19
- // Avoid updates after being unmounted
20
- useEffect(() => {
21
- return () => {
22
- if (timeoutRef.current)
23
- window.clearTimeout(timeoutRef.current);
24
- };
25
- }, []);
26
- return [checked, onClick];
27
- }
1
+ export * from '@fumadocs/ui/hooks/use-copy-button';
@@ -1,6 +1,2 @@
1
- import type * as PageTree from 'fumadocs-core/page-tree';
2
- /**
3
- * @returns a list of page tree items (linear), that you can obtain footer items
4
- */
5
- export declare function useFooterItems(): PageTree.Item[];
1
+ export * from '@fumadocs/ui/hooks/use-footer-items';
6
2
  //# sourceMappingURL=use-footer-items.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-footer-items.d.ts","sourceRoot":"","sources":["../../src/utils/use-footer-items.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAIzD;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAAC,IAAI,EAAE,CAkBhD"}
1
+ {"version":3,"file":"use-footer-items.d.ts","sourceRoot":"","sources":["../../src/utils/use-footer-items.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC"}
@@ -1,27 +1 @@
1
- import { useTreeContext } from '../contexts/tree.js';
2
- const footerCache = new Map();
3
- /**
4
- * @returns a list of page tree items (linear), that you can obtain footer items
5
- */
6
- export function useFooterItems() {
7
- const { root } = useTreeContext();
8
- const cached = footerCache.get(root.$id);
9
- if (cached)
10
- return cached;
11
- const list = [];
12
- function onNode(node) {
13
- if (node.type === 'folder') {
14
- if (node.index)
15
- onNode(node.index);
16
- for (const child of node.children)
17
- onNode(child);
18
- }
19
- else if (node.type === 'page' && !node.external) {
20
- list.push(node);
21
- }
22
- }
23
- for (const child of root.children)
24
- onNode(child);
25
- footerCache.set(root.$id, list);
26
- return list;
27
- }
1
+ export * from '@fumadocs/ui/hooks/use-footer-items';
@@ -1,4 +1,2 @@
1
- export declare function useIsScrollTop({ enabled }: {
2
- enabled?: boolean;
3
- }): boolean | undefined;
1
+ export * from '@fumadocs/ui/hooks/use-is-scroll-top';
4
2
  //# sourceMappingURL=use-is-scroll-top.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-is-scroll-top.d.ts","sourceRoot":"","sources":["../../src/utils/use-is-scroll-top.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,EAAE,OAAc,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,uBAkBvE"}
1
+ {"version":3,"file":"use-is-scroll-top.d.ts","sourceRoot":"","sources":["../../src/utils/use-is-scroll-top.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC"}
@@ -1,17 +1 @@
1
- import { useEffect, useState } from 'react';
2
- export function useIsScrollTop({ enabled = true }) {
3
- const [isTop, setIsTop] = useState();
4
- useEffect(() => {
5
- if (!enabled)
6
- return;
7
- const listener = () => {
8
- setIsTop(window.scrollY < 10);
9
- };
10
- listener();
11
- window.addEventListener('scroll', listener);
12
- return () => {
13
- window.removeEventListener('scroll', listener);
14
- };
15
- }, [enabled]);
16
- return isTop;
17
- }
1
+ export * from '@fumadocs/ui/hooks/use-is-scroll-top';
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "16.2.4",
4
- "description": "The React.js documentation framework",
3
+ "version": "16.3.0",
4
+ "description": "The Radix UI version of Fumadocs UI",
5
5
  "keywords": [
6
- "NextJs",
6
+ "Fumadocs",
7
7
  "Docs"
8
8
  ],
9
9
  "homepage": "https://fumadocs.dev",
@@ -15,6 +15,10 @@
15
15
  "./style.css": "./dist/style.css",
16
16
  "./css/*": "./css/*",
17
17
  "./image-zoom.css": "./dist/image-zoom.css",
18
+ "./components/tabs.unstyled": {
19
+ "import": "./dist/components/ui/tabs.js",
20
+ "types": "./dist/components/ui/tabs.d.ts"
21
+ },
18
22
  "./components/*": {
19
23
  "import": "./dist/components/*.js",
20
24
  "types": "./dist/components/*.d.ts",
@@ -73,10 +77,6 @@
73
77
  "import": "./dist/og.js",
74
78
  "types": "./dist/og.d.ts"
75
79
  },
76
- "./theme/*": {
77
- "import": "./dist/theme/*.js",
78
- "types": "./dist/theme/*.d.ts"
79
- },
80
80
  "./utils/get-sidebar-tabs": {
81
81
  "import": "./dist/components/sidebar/tabs/index.js",
82
82
  "types": "./dist/components/sidebar/tabs/index.d.ts"
@@ -84,10 +84,6 @@
84
84
  "./utils/*": {
85
85
  "import": "./dist/utils/*.js",
86
86
  "types": "./dist/utils/*.d.ts"
87
- },
88
- "./internal/icons": {
89
- "import": "./dist/icons.js",
90
- "types": "./dist/icons.d.ts"
91
87
  }
92
88
  },
93
89
  "files": [
@@ -106,40 +102,31 @@
106
102
  "@radix-ui/react-slot": "^1.2.4",
107
103
  "@radix-ui/react-tabs": "^1.1.13",
108
104
  "class-variance-authority": "^0.7.1",
109
- "lodash.merge": "^4.6.2",
110
105
  "next-themes": "^0.4.6",
111
- "postcss-selector-parser": "^7.1.1",
112
106
  "react-medium-image-zoom": "^5.4.0",
113
107
  "scroll-into-view-if-needed": "^3.1.0",
114
- "tailwind-merge": "^3.4.0",
115
- "fumadocs-core": "16.2.4"
108
+ "@fumadocs/ui": "16.3.0",
109
+ "fumadocs-core": "16.3.0"
116
110
  },
117
111
  "devDependencies": {
118
- "@next/eslint-plugin-next": "16.0.8",
119
- "@tailwindcss/cli": "^4.1.17",
120
- "@types/lodash.merge": "^4.6.9",
112
+ "@tailwindcss/cli": "^4.1.18",
121
113
  "@types/node": "^24.10.2",
122
114
  "@types/react": "^19.2.7",
123
115
  "@types/react-dom": "^19.2.3",
124
- "next": "16.0.8",
125
- "tailwindcss": "^4.1.17",
116
+ "tailwindcss": "^4.1.18",
126
117
  "tsc-alias": "^1.8.16",
127
118
  "@fumadocs/cli": "1.1.0",
128
119
  "eslint-config-custom": "0.0.0",
129
- "fumadocs-core": "16.2.4",
120
+ "fumadocs-core": "16.3.0",
130
121
  "tsconfig": "0.0.0"
131
122
  },
132
123
  "peerDependencies": {
133
124
  "@types/react": "*",
134
- "next": "16.x.x",
135
125
  "react": "^19.2.0",
136
126
  "react-dom": "^19.2.0",
137
127
  "tailwindcss": "^4.0.0"
138
128
  },
139
129
  "peerDependenciesMeta": {
140
- "next": {
141
- "optional": true
142
- },
143
130
  "@types/react": {
144
131
  "optional": true
145
132
  },
@@ -1,51 +0,0 @@
1
- @theme {
2
- --color-fd-background: hsl(0, 0%, 96%);
3
- --color-fd-foreground: hsl(0, 0%, 3.9%);
4
- --color-fd-muted: hsl(0, 0%, 96.1%);
5
- --color-fd-muted-foreground: hsl(0, 0%, 45.1%);
6
- --color-fd-popover: hsl(0, 0%, 98%);
7
- --color-fd-popover-foreground: hsl(0, 0%, 15.1%);
8
- --color-fd-card: hsl(0, 0%, 94.7%);
9
- --color-fd-card-foreground: hsl(0, 0%, 3.9%);
10
- --color-fd-border: hsla(0, 0%, 80%, 50%);
11
- --color-fd-primary: hsl(0, 0%, 9%);
12
- --color-fd-primary-foreground: hsl(0, 0%, 98%);
13
- --color-fd-secondary: hsl(0, 0%, 93.1%);
14
- --color-fd-secondary-foreground: hsl(0, 0%, 9%);
15
- --color-fd-accent: hsla(0, 0%, 82%, 50%);
16
- --color-fd-accent-foreground: hsl(0, 0%, 9%);
17
- --color-fd-ring: hsl(0, 0%, 63.9%);
18
- --color-fd-overlay: hsla(0, 0%, 0%, 0.2);
19
- }
20
-
21
- .dark {
22
- --color-fd-background: hsl(0, 0%, 7.04%);
23
- --color-fd-foreground: hsl(0, 0%, 92%);
24
- --color-fd-muted: hsl(0, 0%, 12.9%);
25
- --color-fd-muted-foreground: hsla(0, 0%, 70%, 0.8);
26
- --color-fd-popover: hsl(0, 0%, 11.6%);
27
- --color-fd-popover-foreground: hsl(0, 0%, 86.9%);
28
- --color-fd-card: hsl(0, 0%, 9.8%);
29
- --color-fd-card-foreground: hsl(0, 0%, 98%);
30
- --color-fd-border: hsla(0, 0%, 40%, 20%);
31
- --color-fd-primary: hsl(0, 0%, 98%);
32
- --color-fd-primary-foreground: hsl(0, 0%, 9%);
33
- --color-fd-secondary: hsl(0, 0%, 12.9%);
34
- --color-fd-secondary-foreground: hsl(0, 0%, 92%);
35
- --color-fd-accent: hsla(0, 0%, 40.9%, 30%);
36
- --color-fd-accent-foreground: hsl(0, 0%, 90%);
37
- --color-fd-ring: hsl(0, 0%, 54.9%);
38
- --color-fd-overlay: hsla(0, 0%, 0%, 0.2);
39
- }
40
-
41
- @theme static {
42
- --color-fd-info: oklch(62.3% 0.214 259.815);
43
- --color-fd-warning: oklch(76.9% 0.188 70.08);
44
- --color-fd-error: oklch(63.7% 0.237 25.331);
45
- --color-fd-success: oklch(72.3% 0.219 149.579);
46
- --color-fd-idea: oklch(70.5% 0.209 60.849);
47
- --color-fd-diff-remove: rgba(200, 10, 100, 0.12);
48
- --color-fd-diff-remove-symbol: rgb(230, 10, 100);
49
- --color-fd-diff-add: rgba(14, 180, 100, 0.1);
50
- --color-fd-diff-add-symbol: rgb(10, 200, 100);
51
- }