@fumadocs/ui 16.2.5

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 (68) hide show
  1. package/LICENSE +21 -0
  2. package/css/base.css +217 -0
  3. package/css/colors/black.css +39 -0
  4. package/css/colors/catppuccin.css +49 -0
  5. package/css/colors/dusk.css +47 -0
  6. package/css/colors/index.css +51 -0
  7. package/css/colors/neutral.css +7 -0
  8. package/css/colors/ocean.css +48 -0
  9. package/css/colors/purple.css +39 -0
  10. package/css/colors/shadcn.css +36 -0
  11. package/css/colors/solar.css +75 -0
  12. package/css/colors/vitepress.css +77 -0
  13. package/css/shiki.css +90 -0
  14. package/dist/cn.d.ts +2 -0
  15. package/dist/cn.d.ts.map +1 -0
  16. package/dist/cn.js +1 -0
  17. package/dist/components/toc/clerk.d.ts +3 -0
  18. package/dist/components/toc/clerk.d.ts.map +1 -0
  19. package/dist/components/toc/clerk.js +76 -0
  20. package/dist/components/toc/default.d.ts +3 -0
  21. package/dist/components/toc/default.d.ts.map +1 -0
  22. package/dist/components/toc/default.js +19 -0
  23. package/dist/components/toc/index.d.ts +11 -0
  24. package/dist/components/toc/index.d.ts.map +1 -0
  25. package/dist/components/toc/index.js +64 -0
  26. package/dist/contexts/i18n.d.ts +50 -0
  27. package/dist/contexts/i18n.d.ts.map +1 -0
  28. package/dist/contexts/i18n.js +55 -0
  29. package/dist/contexts/search.d.ts +61 -0
  30. package/dist/contexts/search.d.ts.map +1 -0
  31. package/dist/contexts/search.js +59 -0
  32. package/dist/contexts/tree.d.ts +15 -0
  33. package/dist/contexts/tree.d.ts.map +1 -0
  34. package/dist/contexts/tree.js +32 -0
  35. package/dist/hooks/use-copy-button.d.ts +3 -0
  36. package/dist/hooks/use-copy-button.d.ts.map +1 -0
  37. package/dist/hooks/use-copy-button.js +27 -0
  38. package/dist/hooks/use-footer-items.d.ts +6 -0
  39. package/dist/hooks/use-footer-items.d.ts.map +1 -0
  40. package/dist/hooks/use-footer-items.js +27 -0
  41. package/dist/hooks/use-is-scroll-top.d.ts +4 -0
  42. package/dist/hooks/use-is-scroll-top.d.ts.map +1 -0
  43. package/dist/hooks/use-is-scroll-top.js +17 -0
  44. package/dist/i18n.d.ts +14 -0
  45. package/dist/i18n.d.ts.map +1 -0
  46. package/dist/i18n.js +16 -0
  47. package/dist/icons.d.ts +49 -0
  48. package/dist/icons.d.ts.map +1 -0
  49. package/dist/icons.js +281 -0
  50. package/dist/link-item.d.ts +78 -0
  51. package/dist/link-item.d.ts.map +1 -0
  52. package/dist/link-item.js +12 -0
  53. package/dist/merge-refs.d.ts +3 -0
  54. package/dist/merge-refs.d.ts.map +1 -0
  55. package/dist/merge-refs.js +12 -0
  56. package/dist/og/next.d.ts +15 -0
  57. package/dist/og/next.d.ts.map +1 -0
  58. package/dist/og/next.js +45 -0
  59. package/dist/typography/index.d.ts +10 -0
  60. package/dist/typography/index.d.ts.map +1 -0
  61. package/dist/typography/index.js +137 -0
  62. package/dist/typography/styles.d.ts +93 -0
  63. package/dist/typography/styles.d.ts.map +1 -0
  64. package/dist/typography/styles.js +433 -0
  65. package/dist/urls.d.ts +6 -0
  66. package/dist/urls.d.ts.map +1 -0
  67. package/dist/urls.js +13 -0
  68. package/package.json +75 -0
@@ -0,0 +1,433 @@
1
+ function round(num) {
2
+ return num
3
+ .toFixed(7)
4
+ .replace(/(\.[0-9]+?)0+$/, '$1')
5
+ .replace(/\.0$/, '');
6
+ }
7
+ function rem(px) {
8
+ return `${round(px / 16)}rem`;
9
+ }
10
+ function em(px, base) {
11
+ return `${round(px / base)}em`;
12
+ }
13
+ const colors = {
14
+ '--tw-prose-body': 'color-mix(in oklab, var(--color-fd-foreground) 90%, transparent)',
15
+ '--tw-prose-headings': 'var(--color-fd-foreground)',
16
+ '--tw-prose-lead': `var(--color-fd-foreground)`,
17
+ '--tw-prose-links': `var(--color-fd-foreground)`,
18
+ '--tw-prose-bold': `var(--color-fd-foreground)`,
19
+ '--tw-prose-counters': `var(--color-fd-muted-foreground)`,
20
+ '--tw-prose-bullets': `var(--color-fd-muted-foreground)`,
21
+ '--tw-prose-hr': `var(--color-fd-border)`,
22
+ '--tw-prose-quotes': `var(--color-fd-foreground)`,
23
+ '--tw-prose-quote-borders': `var(--color-fd-border)`,
24
+ '--tw-prose-captions': `var(--color-fd-foreground)`,
25
+ '--tw-prose-code': `var(--color-fd-foreground)`,
26
+ '--tw-prose-th-borders': `var(--color-fd-border)`,
27
+ '--tw-prose-td-borders': `var(--color-fd-border)`,
28
+ '--tw-prose-kbd': `var(--color-fd-foreground)`,
29
+ '--tw-prose-kbd-shadows': `color-mix(in oklab, var(--color-fd-primary) 50%, transparent)`,
30
+ };
31
+ export const roundedTable = {
32
+ table: {
33
+ borderCollapse: 'separate',
34
+ borderSpacing: '0',
35
+ background: 'var(--color-fd-card)',
36
+ borderRadius: 'var(--radius-lg)',
37
+ border: '1px solid var(--color-fd-border)',
38
+ overflow: 'hidden',
39
+ },
40
+ th: {
41
+ textAlign: 'start',
42
+ padding: 'calc(var(--spacing) * 2.5)',
43
+ 'border-inline-start': '1px solid var(--color-fd-border)',
44
+ background: 'var(--color-fd-muted)',
45
+ },
46
+ 'th:first-child': {
47
+ 'border-inline-start': 'none',
48
+ },
49
+ 'th:not(tr:last-child *), td:not(tr:last-child *)': {
50
+ 'border-bottom': '1px solid var(--color-fd-border)',
51
+ },
52
+ td: {
53
+ textAlign: 'start',
54
+ 'border-inline-start': '1px solid var(--color-fd-border)',
55
+ padding: 'calc(var(--spacing) * 2.5)',
56
+ },
57
+ 'td:first-child': {
58
+ 'border-inline-start': 'none',
59
+ },
60
+ 'tfoot th, tfoot td': {
61
+ borderTopWidth: '1px',
62
+ borderTopColor: 'var(--tw-prose-th-borders)',
63
+ },
64
+ 'thead th, thead td': {
65
+ borderBottomWidth: '1px',
66
+ borderBottomColor: 'var(--tw-prose-th-borders)',
67
+ },
68
+ };
69
+ export const normalTable = {
70
+ thead: {
71
+ borderBottomWidth: '1px',
72
+ borderBottomColor: 'var(--tw-prose-th-borders)',
73
+ },
74
+ 'thead th': {
75
+ verticalAlign: 'bottom',
76
+ paddingInlineEnd: em(8, 14),
77
+ paddingBottom: em(8, 14),
78
+ paddingInlineStart: em(8, 14),
79
+ },
80
+ 'thead th:first-child': {
81
+ paddingInlineStart: '0',
82
+ },
83
+ 'thead th:last-child': {
84
+ paddingInlineEnd: '0',
85
+ },
86
+ 'tbody td, tfoot td': {
87
+ paddingTop: em(8, 14),
88
+ paddingInlineEnd: em(8, 14),
89
+ paddingBottom: em(8, 14),
90
+ paddingInlineStart: em(8, 14),
91
+ },
92
+ 'tbody td:first-child, tfoot td:first-child': {
93
+ paddingInlineStart: '0',
94
+ },
95
+ 'tbody td:last-child, tfoot td:last-child': {
96
+ paddingInlineEnd: '0',
97
+ },
98
+ 'tbody tr': {
99
+ borderBottomWidth: '1px',
100
+ borderBottomColor: 'var(--tw-prose-td-borders)',
101
+ },
102
+ 'tbody tr:last-child': {
103
+ borderBottomWidth: '0',
104
+ },
105
+ 'tbody td': {
106
+ verticalAlign: 'baseline',
107
+ },
108
+ tfoot: {
109
+ borderTopWidth: '1px',
110
+ borderTopColor: 'var(--tw-prose-th-borders)',
111
+ },
112
+ 'tfoot td': {
113
+ verticalAlign: 'top',
114
+ },
115
+ 'th, td': {
116
+ textAlign: 'start',
117
+ },
118
+ };
119
+ export const DEFAULT = {
120
+ css: [
121
+ {
122
+ color: 'var(--tw-prose-body)',
123
+ maxWidth: 'none',
124
+ fontSize: rem(16),
125
+ lineHeight: '1.75rem',
126
+ '[class~="lead"]': {
127
+ fontSize: em(20, 16),
128
+ lineHeight: round(32 / 20),
129
+ marginTop: em(24, 20),
130
+ marginBottom: em(24, 20),
131
+ color: 'var(--tw-prose-lead)',
132
+ },
133
+ ul: {
134
+ paddingInlineStart: '1rem',
135
+ listStyleType: 'disc',
136
+ marginTop: em(20, 16),
137
+ marginBottom: em(20, 16),
138
+ },
139
+ li: {
140
+ marginTop: em(8, 16),
141
+ marginBottom: em(8, 16),
142
+ },
143
+ 'ol > li': {
144
+ paddingInlineStart: em(6, 16),
145
+ },
146
+ 'ul > li': {
147
+ paddingInlineStart: '0',
148
+ },
149
+ '> ul > li p': {
150
+ marginTop: em(12, 16),
151
+ marginBottom: em(12, 16),
152
+ },
153
+ '> ul > li > p:first-child': {
154
+ marginTop: em(20, 16),
155
+ },
156
+ '> ul > li > p:last-child': {
157
+ marginBottom: em(20, 16),
158
+ },
159
+ '> ol > li > p:first-child': {
160
+ marginTop: em(20, 16),
161
+ },
162
+ '> ol > li > p:last-child': {
163
+ marginBottom: em(20, 16),
164
+ },
165
+ 'ul ul, ul ol, ol ul, ol ol': {
166
+ marginTop: em(12, 16),
167
+ marginBottom: em(12, 16),
168
+ },
169
+ dl: {
170
+ marginTop: em(20, 16),
171
+ marginBottom: em(20, 16),
172
+ },
173
+ dt: {
174
+ color: 'var(--tw-prose-headings)',
175
+ fontWeight: '600',
176
+ marginTop: em(20, 16),
177
+ },
178
+ dd: {
179
+ marginTop: em(8, 16),
180
+ paddingInlineStart: em(26, 16),
181
+ },
182
+ hr: {
183
+ borderColor: 'var(--tw-prose-hr)',
184
+ borderTopWidth: '1px',
185
+ marginTop: em(48, 16),
186
+ marginBottom: em(48, 16),
187
+ },
188
+ p: {
189
+ marginTop: em(20, 16),
190
+ marginBottom: em(20, 16),
191
+ },
192
+ strong: {
193
+ color: 'var(--tw-prose-bold)',
194
+ fontWeight: '500',
195
+ },
196
+ 'a strong': {
197
+ color: 'inherit',
198
+ },
199
+ 'blockquote strong': {
200
+ color: 'inherit',
201
+ },
202
+ 'thead th strong': {
203
+ color: 'inherit',
204
+ },
205
+ ol: {
206
+ listStyleType: 'decimal',
207
+ marginTop: em(20, 16),
208
+ marginBottom: em(20, 16),
209
+ paddingInlineStart: em(26, 16),
210
+ },
211
+ 'ol[type="A"]': {
212
+ listStyleType: 'upper-alpha',
213
+ },
214
+ 'ol[type="a"]': {
215
+ listStyleType: 'lower-alpha',
216
+ },
217
+ 'ol[type="A" s]': {
218
+ listStyleType: 'upper-alpha',
219
+ },
220
+ 'ol[type="a" s]': {
221
+ listStyleType: 'lower-alpha',
222
+ },
223
+ 'ol[type="I"]': {
224
+ listStyleType: 'upper-roman',
225
+ },
226
+ 'ol[type="i"]': {
227
+ listStyleType: 'lower-roman',
228
+ },
229
+ 'ol[type="I" s]': {
230
+ listStyleType: 'upper-roman',
231
+ },
232
+ 'ol[type="i" s]': {
233
+ listStyleType: 'lower-roman',
234
+ },
235
+ 'ol[type="1"]': {
236
+ listStyleType: 'decimal',
237
+ },
238
+ 'ol > li::marker': {
239
+ fontWeight: '400',
240
+ color: 'var(--tw-prose-counters)',
241
+ },
242
+ 'ul > li::marker': {
243
+ color: 'var(--tw-prose-bullets)',
244
+ },
245
+ blockquote: {
246
+ marginTop: em(32, 20),
247
+ marginBottom: em(32, 20),
248
+ paddingInlineStart: em(20, 20),
249
+ fontWeight: '500',
250
+ fontStyle: 'italic',
251
+ color: 'var(--tw-prose-quotes)',
252
+ borderInlineStartWidth: '0.25rem',
253
+ borderInlineStartColor: 'var(--tw-prose-quote-borders)',
254
+ quotes: '"\\201C""\\201D""\\2018""\\2019"',
255
+ },
256
+ 'blockquote p:first-of-type::before': {
257
+ content: 'open-quote',
258
+ },
259
+ 'blockquote p:last-of-type::after': {
260
+ content: 'close-quote',
261
+ },
262
+ h1: {
263
+ color: 'var(--tw-prose-headings)',
264
+ fontWeight: '800',
265
+ fontSize: 'var(--text-3xl)',
266
+ marginTop: '0',
267
+ marginBottom: em(32, 36),
268
+ lineHeight: round(40 / 36),
269
+ },
270
+ 'h1 strong': {
271
+ fontWeight: '900',
272
+ color: 'inherit',
273
+ },
274
+ h2: {
275
+ color: 'var(--tw-prose-headings)',
276
+ fontSize: em(24, 16),
277
+ marginTop: em(48, 24),
278
+ marginBottom: em(24, 24),
279
+ lineHeight: round(32 / 24),
280
+ fontWeight: '600',
281
+ },
282
+ 'h2 strong': {
283
+ fontWeight: '800',
284
+ color: 'inherit',
285
+ },
286
+ h3: {
287
+ color: 'var(--tw-prose-headings)',
288
+ fontWeight: '600',
289
+ fontSize: em(20, 16),
290
+ marginTop: em(32, 20),
291
+ marginBottom: em(12, 20),
292
+ lineHeight: round(32 / 20),
293
+ },
294
+ 'h3 strong': {
295
+ fontWeight: '700',
296
+ color: 'inherit',
297
+ },
298
+ h4: {
299
+ color: 'var(--tw-prose-headings)',
300
+ fontWeight: '600',
301
+ marginTop: em(24, 16),
302
+ marginBottom: em(8, 16),
303
+ lineHeight: round(24 / 16),
304
+ },
305
+ 'h4 strong': {
306
+ fontWeight: '700',
307
+ color: 'inherit',
308
+ },
309
+ 'hr + *': {
310
+ marginTop: '0',
311
+ },
312
+ 'h2 + *': {
313
+ marginTop: '0',
314
+ },
315
+ 'h3 + *': {
316
+ marginTop: '0',
317
+ },
318
+ 'h4 + *': {
319
+ marginTop: '0',
320
+ },
321
+ img: {
322
+ marginTop: em(32, 16),
323
+ marginBottom: em(32, 16),
324
+ },
325
+ picture: {
326
+ display: 'block',
327
+ marginTop: em(32, 16),
328
+ marginBottom: em(32, 16),
329
+ },
330
+ 'picture > img': {
331
+ marginTop: '0',
332
+ marginBottom: '0',
333
+ },
334
+ video: {
335
+ marginTop: em(32, 16),
336
+ marginBottom: em(32, 16),
337
+ },
338
+ kbd: {
339
+ fontSize: em(14, 16),
340
+ borderRadius: rem(5),
341
+ paddingTop: em(3, 16),
342
+ paddingInlineEnd: em(6, 16),
343
+ paddingBottom: em(3, 16),
344
+ paddingInlineStart: em(6, 16),
345
+ fontWeight: '500',
346
+ fontFamily: 'inherit',
347
+ color: 'var(--tw-prose-kbd)',
348
+ boxShadow: '0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows)',
349
+ },
350
+ code: {
351
+ padding: '3px',
352
+ border: 'solid 1px',
353
+ fontSize: '13px',
354
+ borderColor: `var(--color-fd-border)`,
355
+ borderRadius: '5px',
356
+ fontWeight: '400',
357
+ background: `var(--color-fd-muted)`,
358
+ color: 'var(--tw-prose-code)',
359
+ },
360
+ 'a code': {
361
+ color: 'inherit',
362
+ },
363
+ 'h1 code': {
364
+ color: 'inherit',
365
+ fontSize: 'var(--text-2xl)',
366
+ },
367
+ 'h2 code': {
368
+ color: 'inherit',
369
+ fontSize: em(21, 24),
370
+ },
371
+ 'h3 code': {
372
+ color: 'inherit',
373
+ fontSize: em(18, 20),
374
+ },
375
+ 'h4 code': {
376
+ color: 'inherit',
377
+ },
378
+ 'blockquote code': {
379
+ color: 'inherit',
380
+ },
381
+ 'thead th code': {
382
+ color: 'inherit',
383
+ },
384
+ table: {
385
+ fontSize: em(14, 16),
386
+ lineHeight: round(24 / 14),
387
+ width: '100%',
388
+ tableLayout: 'auto',
389
+ marginTop: em(32, 16),
390
+ marginBottom: em(32, 16),
391
+ },
392
+ 'thead th': {
393
+ color: 'var(--tw-prose-headings)',
394
+ fontWeight: '600',
395
+ },
396
+ figure: {
397
+ marginTop: em(32, 16),
398
+ marginBottom: em(32, 16),
399
+ },
400
+ 'figure > *': {
401
+ marginTop: '0',
402
+ marginBottom: '0',
403
+ },
404
+ figcaption: {
405
+ color: 'var(--tw-prose-captions)',
406
+ fontSize: em(14, 16),
407
+ lineHeight: round(20 / 14),
408
+ marginTop: em(12, 14),
409
+ },
410
+ 'a:not([data-card])': {
411
+ color: 'var(--tw-prose-links)',
412
+ transition: 'opacity .2s',
413
+ fontWeight: '500',
414
+ textDecoration: 'underline',
415
+ textUnderlineOffset: '3.5px',
416
+ textDecorationColor: 'var(--color-fd-primary)',
417
+ textDecorationThickness: '1.5px',
418
+ },
419
+ 'a:not([data-card]):hover': {
420
+ opacity: '80%',
421
+ },
422
+ },
423
+ colors,
424
+ {
425
+ '> :first-child': {
426
+ marginTop: '0',
427
+ },
428
+ '> :last-child': {
429
+ marginBottom: '0',
430
+ },
431
+ },
432
+ ],
433
+ };
package/dist/urls.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare function normalize(urlOrPath: string): string;
2
+ /**
3
+ * @returns if `href` is matching the given pathname
4
+ */
5
+ export declare function isActive(href: string, pathname: string, nested?: boolean): boolean;
6
+ //# sourceMappingURL=urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,UAI1C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,UAAO,GACZ,OAAO,CAKT"}
package/dist/urls.js ADDED
@@ -0,0 +1,13 @@
1
+ export function normalize(urlOrPath) {
2
+ if (urlOrPath.length > 1 && urlOrPath.endsWith('/'))
3
+ return urlOrPath.slice(0, -1);
4
+ return urlOrPath;
5
+ }
6
+ /**
7
+ * @returns if `href` is matching the given pathname
8
+ */
9
+ export function isActive(href, pathname, nested = true) {
10
+ href = normalize(href);
11
+ pathname = normalize(pathname);
12
+ return href === pathname || (nested && pathname.startsWith(`${href}/`));
13
+ }
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@fumadocs/ui",
3
+ "version": "16.2.5",
4
+ "description": "The low-level primitives for Fumadocs UI.",
5
+ "keywords": [
6
+ "Fumadocs",
7
+ "Docs"
8
+ ],
9
+ "homepage": "https://fumadocs.dev",
10
+ "repository": "github:fuma-nama/fumadocs",
11
+ "license": "MIT",
12
+ "author": "Fuma Nama",
13
+ "type": "module",
14
+ "exports": {
15
+ "./css/*": "./css/*",
16
+ "./*": {
17
+ "import": "./dist/*.js",
18
+ "types": "./dist/*.d.ts"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist/*",
23
+ "css/*"
24
+ ],
25
+ "dependencies": {
26
+ "lodash.merge": "^4.6.2",
27
+ "next-themes": "^0.4.6",
28
+ "postcss-selector-parser": "^7.1.1",
29
+ "tailwind-merge": "^3.4.0",
30
+ "fumadocs-core": "16.2.5"
31
+ },
32
+ "devDependencies": {
33
+ "@types/bun": "^1.3.4",
34
+ "@types/lodash.merge": "^4.6.9",
35
+ "@types/node": "^24.10.2",
36
+ "@types/react": "^19.2.7",
37
+ "@types/react-dom": "^19.2.3",
38
+ "class-variance-authority": "^0.7.1",
39
+ "next": "16.0.10",
40
+ "tailwindcss": "^4.1.18",
41
+ "tsc-alias": "^1.8.16",
42
+ "@fumadocs/cli": "1.1.0",
43
+ "eslint-config-custom": "0.0.0",
44
+ "fumadocs-core": "16.2.5",
45
+ "tsconfig": "0.0.0"
46
+ },
47
+ "peerDependencies": {
48
+ "@types/react": "*",
49
+ "next": "16.x.x",
50
+ "react": "^19.2.0",
51
+ "react-dom": "^19.2.0",
52
+ "tailwindcss": "^4.0.0"
53
+ },
54
+ "peerDependenciesMeta": {
55
+ "next": {
56
+ "optional": true
57
+ },
58
+ "@types/react": {
59
+ "optional": true
60
+ },
61
+ "tailwindcss": {
62
+ "optional": true
63
+ }
64
+ },
65
+ "publishConfig": {
66
+ "access": "public"
67
+ },
68
+ "scripts": {
69
+ "build": "tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json",
70
+ "clean": "rimraf dist",
71
+ "dev": "concurrently \"tsc -w --project tsconfig.build.json\" \"tsc-alias -w -p tsconfig.build.json\"",
72
+ "lint": "eslint .",
73
+ "types:check": "tsc --noEmit"
74
+ }
75
+ }