@beforesemicolon/builder 1.8.25 → 2.0.1

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 (187) hide show
  1. package/README.md +54 -904
  2. package/dist/cjs/build-browser.js +1 -1
  3. package/dist/cjs/build-modules.js +1 -1
  4. package/dist/cjs/index.js +1 -1
  5. package/dist/esm/build-browser.js +1 -1
  6. package/dist/esm/build-modules.js +1 -1
  7. package/dist/esm/index.js +1 -1
  8. package/dist/types/build-browser.d.ts +5 -3
  9. package/dist/types/build-modules.d.ts +5 -22
  10. package/dist/types/index.d.ts +0 -1
  11. package/package.json +5 -25
  12. package/dist/cjs/.declarations.d.js +0 -1
  13. package/dist/cjs/docs/markdown-layout/index.js +0 -1
  14. package/dist/cjs/docs/markdown-layout/marked-extension.js +0 -1
  15. package/dist/cjs/docs/markdown-layout/parser.js +0 -7
  16. package/dist/cjs/docs/markdown-layout/renderer.js +0 -1
  17. package/dist/cjs/docs/markdown-layout/types.js +0 -1
  18. package/dist/cjs/docs/renderer/code.js +0 -11
  19. package/dist/cjs/docs/renderer/heading.js +0 -1
  20. package/dist/cjs/docs/renderer/index.js +0 -1
  21. package/dist/cjs/docs/renderer/link.js +0 -1
  22. package/dist/cjs/docs/run.js +0 -78
  23. package/dist/cjs/docs/templates/default.template.js +0 -17
  24. package/dist/cjs/docs/templates/fading-citrus/README.md +0 -822
  25. package/dist/cjs/docs/templates/fading-citrus/assets/facebook.svg +0 -8
  26. package/dist/cjs/docs/templates/fading-citrus/assets/favicon/android-chrome-192x192.png +0 -0
  27. package/dist/cjs/docs/templates/fading-citrus/assets/favicon/android-chrome-512x512.png +0 -0
  28. package/dist/cjs/docs/templates/fading-citrus/assets/favicon/apple-touch-icon.png +0 -0
  29. package/dist/cjs/docs/templates/fading-citrus/assets/favicon/favicon-16x16.png +0 -0
  30. package/dist/cjs/docs/templates/fading-citrus/assets/favicon/favicon-32x32.png +0 -0
  31. package/dist/cjs/docs/templates/fading-citrus/assets/favicon/favicon.ico +0 -0
  32. package/dist/cjs/docs/templates/fading-citrus/assets/favicon/site.webmanifest +0 -19
  33. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Black.otf +0 -0
  34. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-BlackItalic.otf +0 -0
  35. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Bold.otf +0 -0
  36. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-BoldItalic.otf +0 -0
  37. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ExtraBold.otf +0 -0
  38. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ExtraBoldItalic.otf +0 -0
  39. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ExtraLight.otf +0 -0
  40. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ExtraLightItalic.otf +0 -0
  41. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Italic.otf +0 -0
  42. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Light.otf +0 -0
  43. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-LightItalic.otf +0 -0
  44. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Medium.otf +0 -0
  45. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-MediumItalic.otf +0 -0
  46. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Regular.otf +0 -0
  47. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-SemiBold.otf +0 -0
  48. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-SemiBoldItalic.otf +0 -0
  49. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Thin.otf +0 -0
  50. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ThinItalic.otf +0 -0
  51. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/exo-2/SIL Open Font License.txt +0 -43
  52. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/Apache License.txt +0 -201
  53. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Bold.ttf +0 -0
  54. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-BoldItalic.ttf +0 -0
  55. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-ExtraBold.ttf +0 -0
  56. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf +0 -0
  57. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Italic.ttf +0 -0
  58. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Light.ttf +0 -0
  59. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-LightItalic.ttf +0 -0
  60. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Regular.ttf +0 -0
  61. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Semibold.ttf +0 -0
  62. package/dist/cjs/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-SemiboldItalic.ttf +0 -0
  63. package/dist/cjs/docs/templates/fading-citrus/assets/instagram.svg +0 -28
  64. package/dist/cjs/docs/templates/fading-citrus/assets/logo.dark.svg +0 -8
  65. package/dist/cjs/docs/templates/fading-citrus/assets/logo.light.svg +0 -8
  66. package/dist/cjs/docs/templates/fading-citrus/assets/logo.svg +0 -8
  67. package/dist/cjs/docs/templates/fading-citrus/assets/medium2.svg +0 -18
  68. package/dist/cjs/docs/templates/fading-citrus/assets/reddit.svg +0 -16
  69. package/dist/cjs/docs/templates/fading-citrus/assets/twitter.svg +0 -11
  70. package/dist/cjs/docs/templates/fading-citrus/assets/youtube.svg +0 -10
  71. package/dist/cjs/docs/templates/fading-citrus/layouts/_code-snippet.js +0 -128
  72. package/dist/cjs/docs/templates/fading-citrus/layouts/_footer.js +0 -72
  73. package/dist/cjs/docs/templates/fading-citrus/layouts/_head-meta.js +0 -235
  74. package/dist/cjs/docs/templates/fading-citrus/layouts/_header.js +0 -91
  75. package/dist/cjs/docs/templates/fading-citrus/layouts/_layout-utils.js +0 -109
  76. package/dist/cjs/docs/templates/fading-citrus/layouts/document.js +0 -100
  77. package/dist/cjs/docs/templates/fading-citrus/layouts/landing-cta.js +0 -30
  78. package/dist/cjs/docs/templates/fading-citrus/layouts/landing-ecosystem.js +0 -51
  79. package/dist/cjs/docs/templates/fading-citrus/layouts/landing-features.js +0 -25
  80. package/dist/cjs/docs/templates/fading-citrus/layouts/landing-hero.js +0 -89
  81. package/dist/cjs/docs/templates/fading-citrus/layouts/landing-install.js +0 -116
  82. package/dist/cjs/docs/templates/fading-citrus/layouts/landing-showcase.js +0 -133
  83. package/dist/cjs/docs/templates/fading-citrus/layouts/landing.js +0 -29
  84. package/dist/cjs/docs/templates/fading-citrus/stylesheets/common.css +0 -900
  85. package/dist/cjs/docs/templates/fading-citrus/stylesheets/documentation.css +0 -623
  86. package/dist/cjs/docs/templates/fading-citrus/stylesheets/fonts.css +0 -1
  87. package/dist/cjs/docs/templates/fading-citrus/stylesheets/github-dark.hightlighter.css +0 -107
  88. package/dist/cjs/docs/templates/fading-citrus/stylesheets/github-light.hightlighter.css +0 -107
  89. package/dist/cjs/docs/templates/fading-citrus/stylesheets/hybrid.hightlighter.css +0 -102
  90. package/dist/cjs/docs/templates/fading-citrus/stylesheets/landing.css +0 -1563
  91. package/dist/cjs/docs/templates/fading-citrus/stylesheets/normalize.css +0 -351
  92. package/dist/cjs/docs/templates/fading-citrus/template.config.js +0 -233
  93. package/dist/cjs/docs/types.js +0 -1
  94. package/dist/esm/.declarations.d.js +0 -0
  95. package/dist/esm/docs/markdown-layout/index.js +0 -1
  96. package/dist/esm/docs/markdown-layout/marked-extension.js +0 -1
  97. package/dist/esm/docs/markdown-layout/parser.js +0 -7
  98. package/dist/esm/docs/markdown-layout/renderer.js +0 -1
  99. package/dist/esm/docs/markdown-layout/types.js +0 -0
  100. package/dist/esm/docs/renderer/code.js +0 -11
  101. package/dist/esm/docs/renderer/heading.js +0 -1
  102. package/dist/esm/docs/renderer/index.js +0 -1
  103. package/dist/esm/docs/renderer/link.js +0 -1
  104. package/dist/esm/docs/run.js +0 -78
  105. package/dist/esm/docs/templates/default.template.js +0 -17
  106. package/dist/esm/docs/templates/fading-citrus/README.md +0 -822
  107. package/dist/esm/docs/templates/fading-citrus/assets/facebook.svg +0 -8
  108. package/dist/esm/docs/templates/fading-citrus/assets/favicon/android-chrome-192x192.png +0 -0
  109. package/dist/esm/docs/templates/fading-citrus/assets/favicon/android-chrome-512x512.png +0 -0
  110. package/dist/esm/docs/templates/fading-citrus/assets/favicon/apple-touch-icon.png +0 -0
  111. package/dist/esm/docs/templates/fading-citrus/assets/favicon/favicon-16x16.png +0 -0
  112. package/dist/esm/docs/templates/fading-citrus/assets/favicon/favicon-32x32.png +0 -0
  113. package/dist/esm/docs/templates/fading-citrus/assets/favicon/favicon.ico +0 -0
  114. package/dist/esm/docs/templates/fading-citrus/assets/favicon/site.webmanifest +0 -19
  115. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Black.otf +0 -0
  116. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-BlackItalic.otf +0 -0
  117. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Bold.otf +0 -0
  118. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-BoldItalic.otf +0 -0
  119. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ExtraBold.otf +0 -0
  120. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ExtraBoldItalic.otf +0 -0
  121. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ExtraLight.otf +0 -0
  122. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ExtraLightItalic.otf +0 -0
  123. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Italic.otf +0 -0
  124. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Light.otf +0 -0
  125. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-LightItalic.otf +0 -0
  126. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Medium.otf +0 -0
  127. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-MediumItalic.otf +0 -0
  128. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Regular.otf +0 -0
  129. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-SemiBold.otf +0 -0
  130. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-SemiBoldItalic.otf +0 -0
  131. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-Thin.otf +0 -0
  132. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/Exo2.0-ThinItalic.otf +0 -0
  133. package/dist/esm/docs/templates/fading-citrus/assets/fonts/exo-2/SIL Open Font License.txt +0 -43
  134. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/Apache License.txt +0 -201
  135. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Bold.ttf +0 -0
  136. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-BoldItalic.ttf +0 -0
  137. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-ExtraBold.ttf +0 -0
  138. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf +0 -0
  139. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Italic.ttf +0 -0
  140. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Light.ttf +0 -0
  141. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-LightItalic.ttf +0 -0
  142. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Regular.ttf +0 -0
  143. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-Semibold.ttf +0 -0
  144. package/dist/esm/docs/templates/fading-citrus/assets/fonts/open-sans/OpenSans-SemiboldItalic.ttf +0 -0
  145. package/dist/esm/docs/templates/fading-citrus/assets/instagram.svg +0 -28
  146. package/dist/esm/docs/templates/fading-citrus/assets/logo.dark.svg +0 -8
  147. package/dist/esm/docs/templates/fading-citrus/assets/logo.light.svg +0 -8
  148. package/dist/esm/docs/templates/fading-citrus/assets/logo.svg +0 -8
  149. package/dist/esm/docs/templates/fading-citrus/assets/medium2.svg +0 -18
  150. package/dist/esm/docs/templates/fading-citrus/assets/reddit.svg +0 -16
  151. package/dist/esm/docs/templates/fading-citrus/assets/twitter.svg +0 -11
  152. package/dist/esm/docs/templates/fading-citrus/assets/youtube.svg +0 -10
  153. package/dist/esm/docs/templates/fading-citrus/layouts/_code-snippet.js +0 -128
  154. package/dist/esm/docs/templates/fading-citrus/layouts/_footer.js +0 -72
  155. package/dist/esm/docs/templates/fading-citrus/layouts/_head-meta.js +0 -235
  156. package/dist/esm/docs/templates/fading-citrus/layouts/_header.js +0 -91
  157. package/dist/esm/docs/templates/fading-citrus/layouts/_layout-utils.js +0 -109
  158. package/dist/esm/docs/templates/fading-citrus/layouts/document.js +0 -100
  159. package/dist/esm/docs/templates/fading-citrus/layouts/landing-cta.js +0 -30
  160. package/dist/esm/docs/templates/fading-citrus/layouts/landing-ecosystem.js +0 -51
  161. package/dist/esm/docs/templates/fading-citrus/layouts/landing-features.js +0 -25
  162. package/dist/esm/docs/templates/fading-citrus/layouts/landing-hero.js +0 -89
  163. package/dist/esm/docs/templates/fading-citrus/layouts/landing-install.js +0 -116
  164. package/dist/esm/docs/templates/fading-citrus/layouts/landing-showcase.js +0 -133
  165. package/dist/esm/docs/templates/fading-citrus/layouts/landing.js +0 -29
  166. package/dist/esm/docs/templates/fading-citrus/stylesheets/common.css +0 -900
  167. package/dist/esm/docs/templates/fading-citrus/stylesheets/documentation.css +0 -623
  168. package/dist/esm/docs/templates/fading-citrus/stylesheets/fonts.css +0 -1
  169. package/dist/esm/docs/templates/fading-citrus/stylesheets/github-dark.hightlighter.css +0 -107
  170. package/dist/esm/docs/templates/fading-citrus/stylesheets/github-light.hightlighter.css +0 -107
  171. package/dist/esm/docs/templates/fading-citrus/stylesheets/hybrid.hightlighter.css +0 -102
  172. package/dist/esm/docs/templates/fading-citrus/stylesheets/landing.css +0 -1563
  173. package/dist/esm/docs/templates/fading-citrus/stylesheets/normalize.css +0 -351
  174. package/dist/esm/docs/templates/fading-citrus/template.config.js +0 -233
  175. package/dist/esm/docs/types.js +0 -0
  176. package/dist/types/docs/markdown-layout/index.d.ts +0 -4
  177. package/dist/types/docs/markdown-layout/marked-extension.d.ts +0 -9
  178. package/dist/types/docs/markdown-layout/parser.d.ts +0 -12
  179. package/dist/types/docs/markdown-layout/renderer.d.ts +0 -3
  180. package/dist/types/docs/markdown-layout/types.d.ts +0 -36
  181. package/dist/types/docs/renderer/code.d.ts +0 -2
  182. package/dist/types/docs/renderer/heading.d.ts +0 -2
  183. package/dist/types/docs/renderer/index.d.ts +0 -3
  184. package/dist/types/docs/renderer/link.d.ts +0 -2
  185. package/dist/types/docs/run.d.ts +0 -19
  186. package/dist/types/docs/templates/default.template.d.ts +0 -3
  187. package/dist/types/docs/types.d.ts +0 -107
@@ -1,900 +0,0 @@
1
- @import 'normalize.css';
2
- @import 'fonts.css';
3
-
4
- :root {
5
- --background: oklch(0.18 0.015 250);
6
- --foreground: oklch(0.96 0.005 250);
7
- --heading: var(--foreground);
8
- --card: oklch(0.22 0.018 250);
9
- --primary: oklch(0.74 0.18 45);
10
- --primary-glow: oklch(0.78 0.19 50);
11
- --primary-foreground: oklch(0.18 0.02 250);
12
- --primary-soft: color-mix(in oklch, var(--primary) 12%, transparent);
13
- --primary-softer: color-mix(in oklch, var(--primary) 6%, transparent);
14
- --primary-border: color-mix(in oklch, var(--primary) 45%, transparent);
15
- --secondary: oklch(0.27 0.02 250);
16
- --muted: oklch(0.25 0.018 250);
17
- --muted-foreground: oklch(0.68 0.02 250);
18
- --accent: oklch(0.7 0.16 200);
19
- --accent-soft: color-mix(in oklch, var(--accent) 12%, transparent);
20
- --accent-softer: color-mix(in oklch, var(--accent) 6%, transparent);
21
- --accent-border: color-mix(in oklch, var(--accent) 35%, transparent);
22
- --border: oklch(0.3 0.02 250);
23
- --ring: oklch(0.74 0.18 45);
24
- --radius: 0.75rem;
25
- --surface: color-mix(in oklch, var(--card) 40%, transparent);
26
- --surface-muted: color-mix(in oklch, var(--card) 60%, transparent);
27
- --surface-hover: color-mix(in oklch, var(--card) 70%, transparent);
28
- --surface-border: color-mix(in oklch, var(--border) 65%, transparent);
29
- --surface-border-strong: color-mix(
30
- in oklch,
31
- var(--foreground) 20%,
32
- transparent
33
- );
34
- --header-bg: color-mix(in oklch, var(--background) 60%, transparent);
35
- --footer-bg: color-mix(in oklch, var(--background) 88%, black 12%);
36
- --grid-line: color-mix(in oklch, var(--foreground) 5%, transparent);
37
- --inline-code-bg: color-mix(
38
- in oklch,
39
- var(--background) 82%,
40
- var(--foreground) 8%
41
- );
42
- --code-bg: oklch(0.16 0.015 250);
43
- --code-header-bg: color-mix(in oklch, var(--card) 60%, transparent);
44
- --code-border: var(--surface-border);
45
- --code-line-number: color-mix(
46
- in oklch,
47
- var(--muted-foreground) 65%,
48
- transparent
49
- );
50
- --success: oklch(0.78 0.15 145);
51
- --success-soft: color-mix(in oklch, var(--success) 14%, transparent);
52
- --warning: oklch(0.78 0.14 90);
53
- --warning-soft: color-mix(in oklch, var(--warning) 14%, transparent);
54
- --danger: oklch(0.62 0.22 25);
55
- --danger-soft: color-mix(in oklch, var(--danger) 14%, transparent);
56
- --syntax-comment: oklch(0.55 0.02 250);
57
- --syntax-keyword: var(--primary);
58
- --syntax-string: var(--success);
59
- --syntax-tag: var(--accent);
60
- --syntax-attr: var(--warning);
61
-
62
- --font-sans:
63
- ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
64
- sans-serif;
65
- --font-title: var(--font-sans);
66
- --font-mono:
67
- 'JetBrains Mono', 'Fira Code', ui-monospace, SFMono-Regular, Menlo,
68
- monospace;
69
-
70
- --gradient-hero: radial-gradient(
71
- ellipse at top,
72
- color-mix(in oklch, var(--primary) 26%, transparent),
73
- transparent 60%
74
- );
75
- --gradient-primary: linear-gradient(
76
- 135deg,
77
- var(--primary),
78
- var(--primary-glow)
79
- );
80
- --gradient-text: linear-gradient(
81
- 135deg,
82
- oklch(0.98 0.005 250),
83
- oklch(0.78 0.05 250)
84
- );
85
- --gradient-border: linear-gradient(
86
- 135deg,
87
- color-mix(in oklch, var(--primary) 50%, transparent),
88
- color-mix(in oklch, var(--accent) 30%, transparent)
89
- );
90
- --shadow-glow: 0 0 60px -15px
91
- color-mix(in oklch, var(--primary) 50%, transparent);
92
- --shadow-card:
93
- 0 1px 0 0 oklch(1 0 0 / 0.05) inset,
94
- 0 20px 40px -20px oklch(0 0 0 / 0.5);
95
-
96
- --transition-smooth: cubic-bezier(0.22, 1, 0.36, 1);
97
- }
98
-
99
- html,
100
- body {
101
- margin: 0;
102
- padding: 0;
103
- min-height: 100vh;
104
- min-width: 100vw;
105
- scroll-behavior: smooth;
106
- scroll-padding-top: 6rem;
107
- background-color: var(--background);
108
- color: var(--foreground);
109
- }
110
-
111
- body {
112
- font-size: 16px;
113
- font-family: var(--font-sans);
114
- line-height: 1.6;
115
- letter-spacing: 0;
116
- display: flex;
117
- flex-direction: column;
118
- }
119
-
120
- *,
121
- *::before,
122
- *::after {
123
- box-sizing: border-box;
124
- }
125
-
126
- .wrapper {
127
- max-width: 1280px;
128
- width: 100%;
129
- margin-left: auto;
130
- margin-right: auto;
131
- padding-left: 24px;
132
- padding-right: 24px;
133
- }
134
-
135
- h1,
136
- h2,
137
- h3,
138
- h4,
139
- h5,
140
- h6 {
141
- margin-top: 0;
142
- line-height: 1.25;
143
- }
144
-
145
- h1,
146
- h2,
147
- h3,
148
- h4,
149
- h5,
150
- h6 {
151
- font-family: var(--font-title);
152
- color: var(--heading);
153
- font-weight: 800;
154
- }
155
-
156
- h2 a,
157
- h3 a,
158
- h4 a,
159
- h5 a,
160
- h6 a {
161
- text-decoration: none;
162
- position: relative;
163
- color: inherit;
164
- }
165
-
166
- h2 a::before,
167
- h3 a::before,
168
- h4 a::before,
169
- h5 a::before,
170
- h6 a::before {
171
- content: '#';
172
- opacity: 0;
173
- font-size: 70%;
174
- position: absolute;
175
- top: 50%;
176
- left: 0;
177
- transform: translate(calc(-100% - 4px), -50%);
178
- color: var(--primary);
179
- transition: opacity 0.2s ease;
180
- }
181
-
182
- h2 a::before {
183
- font-size: 50%;
184
- }
185
-
186
- h2 a:hover::before,
187
- h3 a:hover::before,
188
- h4 a:hover::before,
189
- h5 a:hover::before,
190
- h6 a:hover::before {
191
- opacity: 0.7;
192
- }
193
-
194
- p {
195
- margin-top: 0;
196
- line-height: 1.6;
197
- font-weight: 400;
198
- color: var(--muted-foreground);
199
- }
200
-
201
- a {
202
- text-decoration: none;
203
- transition: color 0.2s ease;
204
- }
205
-
206
- img {
207
- max-width: 100%;
208
- height: auto;
209
- }
210
-
211
- ul {
212
- list-style: none;
213
- padding: 0;
214
- margin: 0;
215
- }
216
-
217
- /* Gradients & Utilities */
218
- .text-gradient {
219
- background: var(--gradient-text);
220
- -webkit-background-clip: text;
221
- -webkit-text-fill-color: transparent;
222
- background-clip: text;
223
- }
224
-
225
- .text-gradient-primary {
226
- background: var(--gradient-primary);
227
- -webkit-background-clip: text;
228
- -webkit-text-fill-color: transparent;
229
- background-clip: text;
230
- }
231
-
232
- .bg-grid {
233
- background-size: 48px 48px;
234
- background-image:
235
- linear-gradient(to right, var(--grid-line) 1px, transparent 1px),
236
- linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);
237
- mask-image: radial-gradient(
238
- ellipse 80% 60% at 50% 0%,
239
- black 30%,
240
- transparent 80%
241
- );
242
- -webkit-mask-image: radial-gradient(
243
- ellipse 80% 60% at 50% 0%,
244
- black 30%,
245
- transparent 80%
246
- );
247
- }
248
-
249
- .glow {
250
- box-shadow: var(--shadow-glow);
251
- }
252
-
253
- /* Animations */
254
- @keyframes float-up {
255
- 0% {
256
- transform: translateY(20px);
257
- opacity: 0;
258
- }
259
- 100% {
260
- transform: translateY(0);
261
- opacity: 1;
262
- }
263
- }
264
-
265
- @keyframes pulse-glow {
266
- 0%,
267
- 100% {
268
- opacity: 0.4;
269
- }
270
- 50% {
271
- opacity: 0.8;
272
- }
273
- }
274
-
275
- .animate-float-up {
276
- animation: float-up 0.8s var(--transition-smooth) forwards;
277
- }
278
-
279
- .animate-pulse-glow {
280
- animation: pulse-glow 4s ease-in-out infinite;
281
- }
282
-
283
- /* header ---------------- */
284
- header {
285
- height: 4rem;
286
- max-width: 1280px;
287
- border-bottom: 1px solid var(--surface-border);
288
- background-color: var(--header-bg);
289
- backdrop-filter: blur(16px);
290
- -webkit-backdrop-filter: blur(16px);
291
- display: flex;
292
- justify-content: space-between;
293
- align-items: center;
294
- position: sticky;
295
- top: 0;
296
- z-index: 50;
297
- }
298
-
299
- header h1 {
300
- margin: 0;
301
- font-size: 1.1rem;
302
- font-weight: 700;
303
- }
304
-
305
- header h1 a {
306
- display: flex;
307
- align-items: center;
308
- gap: 8px;
309
- color: var(--foreground);
310
- text-decoration: none;
311
- transition: transform 0.2s ease;
312
- }
313
-
314
- header h1 a:hover {
315
- transform: scale(1.02);
316
- }
317
-
318
- header h1 a svg {
319
- height: 1.5rem;
320
- width: auto;
321
- }
322
-
323
- header nav {
324
- display: flex;
325
- align-items: center;
326
- gap: 48px;
327
- }
328
-
329
- header nav.nav-actions {
330
- gap: 16px;
331
- }
332
-
333
- header nav.nav-actions .btn-primary {
334
- height: 34px;
335
- border-radius: 6px;
336
- }
337
-
338
- header nav a {
339
- text-decoration: none;
340
- transition: all 0.2s ease;
341
- font-size: 0.9rem;
342
- font-weight: 500;
343
- color: var(--muted-foreground);
344
- }
345
-
346
- header nav a:hover,
347
- header nav a.active {
348
- color: var(--foreground);
349
- }
350
-
351
- header nav a.github-link {
352
- width: 36px;
353
- height: 36px;
354
- display: inline-grid;
355
- place-items: center;
356
- border: 1px solid var(--surface-border);
357
- border-radius: 8px;
358
- }
359
-
360
- header nav a.github-link:hover {
361
- border-color: var(--primary-border);
362
- color: var(--primary);
363
- }
364
-
365
- /* footer ------------------- */
366
- footer {
367
- background: var(--footer-bg);
368
- color: var(--muted-foreground);
369
- border-top: 1px solid var(--border);
370
- padding-top: 60px;
371
- padding-bottom: 40px;
372
- display: flex;
373
- flex-wrap: wrap;
374
- gap: 40px;
375
- }
376
-
377
- footer .footer-brand {
378
- flex: 1;
379
- min-width: 280px;
380
- }
381
-
382
- footer .footer-brand .site-logo-pair {
383
- margin-bottom: 16px;
384
- }
385
-
386
- footer .footer-brand p {
387
- font-size: 0.9rem;
388
- max-width: 320px;
389
- margin-bottom: 20px;
390
- }
391
-
392
- footer h4 {
393
- color: var(--foreground);
394
- font-size: 0.95rem;
395
- font-weight: 600;
396
- margin-bottom: 16px;
397
- text-transform: uppercase;
398
- letter-spacing: 0.05rem;
399
- }
400
-
401
- footer .learning-resources,
402
- footer .about-bfs {
403
- width: 20%;
404
- min-width: 180px;
405
- }
406
-
407
- footer .learning-resources li,
408
- footer .about-bfs li {
409
- padding: 6px 0;
410
- font-size: 0.9rem;
411
- }
412
-
413
- footer .learning-resources li a,
414
- footer .about-bfs li a {
415
- color: var(--muted-foreground);
416
- }
417
-
418
- footer .learning-resources li a:hover,
419
- footer .about-bfs li a:hover {
420
- color: var(--foreground);
421
- }
422
-
423
- footer address {
424
- margin-top: 16px;
425
- display: flex;
426
- gap: 12px;
427
- flex-wrap: wrap;
428
- }
429
-
430
- footer address a {
431
- display: flex;
432
- align-items: center;
433
- justify-content: center;
434
- width: 32px;
435
- height: 32px;
436
- border-radius: 6px;
437
- border: 1px solid var(--border);
438
- background: var(--surface);
439
- transition: all 0.2s ease;
440
- }
441
-
442
- footer address a img {
443
- filter: invert(1);
444
- opacity: 0.6;
445
- transition: opacity 0.2s ease;
446
- }
447
-
448
- footer address a:hover {
449
- border-color: var(--primary);
450
- background: var(--primary-softer);
451
- }
452
-
453
- footer address a:hover img {
454
- opacity: 1;
455
- }
456
-
457
- footer .copyright-section {
458
- width: 100%;
459
- border-top: 1px solid var(--surface-border);
460
- padding-top: 24px;
461
- margin-top: 20px;
462
- display: flex;
463
- justify-content: space-between;
464
- align-items: center;
465
- flex-wrap: wrap;
466
- gap: 16px;
467
- font-size: 0.85rem;
468
- }
469
-
470
- footer .copyright-section .brand-logo-container {
471
- display: flex;
472
- align-items: center;
473
- gap: 10px;
474
- }
475
-
476
- footer .copyright-section .brand-logo-container img {
477
- height: 20px;
478
- opacity: 0.8;
479
- }
480
-
481
- /* .code-snippet ------------------- */
482
- .code-snippet {
483
- background: var(--code-bg);
484
- border-radius: 0.75rem;
485
- border: 1px solid var(--code-border);
486
- margin: 16px 0;
487
- width: 100%;
488
- max-width: 100%;
489
- max-height: 80vh;
490
- min-width: 0;
491
- display: flex;
492
- flex-direction: column;
493
- overflow: hidden;
494
- box-shadow: var(--shadow-card);
495
- }
496
-
497
- .code-snippet .header {
498
- flex: 0 0 41px;
499
- min-height: 41px;
500
- display: flex;
501
- align-items: center;
502
- gap: 12px;
503
- padding: 0 10px 0 16px;
504
- background: var(--code-header-bg);
505
- border-bottom: 1px solid var(--code-border);
506
- }
507
-
508
- .code-snippet .mac-dots {
509
- flex: 0 0 auto;
510
- display: flex;
511
- gap: 6px;
512
- }
513
-
514
- .code-snippet .mac-dots span {
515
- width: 10px;
516
- height: 10px;
517
- border-radius: 50%;
518
- }
519
-
520
- .code-snippet .mac-dots .dot-red {
521
- background-color: color-mix(in oklch, var(--danger) 70%, transparent);
522
- }
523
-
524
- .code-snippet .mac-dots .dot-yellow {
525
- background-color: color-mix(in oklch, var(--warning) 70%, transparent);
526
- }
527
-
528
- .code-snippet .mac-dots .dot-green {
529
- background-color: color-mix(in oklch, var(--success) 70%, transparent);
530
- }
531
-
532
- .code-snippet .filename {
533
- flex: 1 1 auto;
534
- min-width: 0;
535
- font-family: var(--font-mono);
536
- font-size: 0.75rem;
537
- color: var(--muted-foreground);
538
- line-height: 20px;
539
- overflow: hidden;
540
- text-overflow: ellipsis;
541
- white-space: nowrap;
542
- }
543
-
544
- .code-snippet .label {
545
- flex: 0 0 auto;
546
- font-family: var(--font-mono);
547
- font-size: 0.625rem;
548
- color: var(--muted-foreground);
549
- text-transform: uppercase;
550
- line-height: 20px;
551
- opacity: 0.6;
552
- }
553
-
554
- .code-snippet .content {
555
- flex: 1 1 auto;
556
- min-height: 0;
557
- width: 100%;
558
- overflow: auto;
559
- padding: 12px;
560
- }
561
-
562
- .code-snippet pre {
563
- margin: 0;
564
- font-family: var(--font-mono);
565
- font-size: 13px;
566
- line-height: 1.5rem;
567
- width: max-content;
568
- min-width: 100%;
569
- }
570
-
571
- .code-snippet pre code {
572
- font-family: inherit;
573
- font-size: inherit;
574
- }
575
-
576
- .code-snippet .syntax-comment {
577
- color: var(--syntax-comment);
578
- font-style: italic;
579
- }
580
-
581
- .code-snippet .syntax-keyword {
582
- color: var(--syntax-keyword);
583
- }
584
-
585
- .code-snippet .syntax-string {
586
- color: var(--syntax-string);
587
- }
588
-
589
- .code-snippet .syntax-tag {
590
- color: var(--syntax-tag);
591
- }
592
-
593
- .code-snippet .syntax-attr {
594
- color: var(--syntax-attr);
595
- }
596
-
597
- .code-snippet .syntax-expression {
598
- color: var(--foreground);
599
- }
600
-
601
- .code-snippet .code-line {
602
- display: flex;
603
- }
604
-
605
- .code-snippet .line-number {
606
- user-select: none;
607
- width: 32px;
608
- padding-right: 16px;
609
- flex-shrink: 0;
610
- text-align: right;
611
- color: var(--code-line-number);
612
- }
613
-
614
- .code-snippet .line-code {
615
- flex: 1;
616
- white-space: pre;
617
- }
618
-
619
- .code-snippet .code-copy-btn {
620
- all: unset;
621
- position: relative;
622
- flex: 0 0 28px;
623
- width: 28px;
624
- height: 28px;
625
- overflow: hidden;
626
- text-indent: 999px;
627
- white-space: nowrap;
628
- color: var(--muted-foreground);
629
- cursor: pointer;
630
- transition: all 0.2s ease;
631
- border-radius: 6px;
632
- }
633
-
634
- .code-snippet .code-copy-btn::before,
635
- .code-snippet .code-copy-btn::after {
636
- content: '';
637
- position: absolute;
638
- border: 1.5px solid currentColor;
639
- border-radius: 2px;
640
- width: 10px;
641
- height: 12px;
642
- text-indent: 0;
643
- }
644
-
645
- .code-snippet .code-copy-btn::before {
646
- top: 10px;
647
- left: 8px;
648
- opacity: 0.55;
649
- }
650
-
651
- .code-snippet .code-copy-btn::after {
652
- top: 7px;
653
- left: 12px;
654
- background: var(--code-header-bg);
655
- }
656
-
657
- .code-snippet .code-copy-btn:hover {
658
- color: var(--foreground);
659
- background: var(--surface-muted);
660
- }
661
-
662
- .code-snippet .code-copy-btn.copied {
663
- color: var(--success);
664
- }
665
-
666
- @media screen and (max-width: 768px) {
667
- .code-snippet pre code {
668
- font-size: 0.7rem !important;
669
- line-height: 150% !important;
670
- }
671
-
672
- footer {
673
- padding-top: 40px;
674
- padding-bottom: 30px;
675
- }
676
-
677
- footer .copyright-section {
678
- flex-direction: column;
679
- align-items: flex-start;
680
- gap: 12px;
681
- }
682
- }
683
-
684
- /* React landing shell parity */
685
- header.site-header {
686
- position: fixed;
687
- inset: 0 0 auto;
688
- width: 100%;
689
- max-width: none;
690
- height: auto;
691
- padding: 0;
692
- backdrop-filter: blur(24px);
693
- -webkit-backdrop-filter: blur(24px);
694
- }
695
-
696
- header.site-header .header-inner {
697
- height: 64px;
698
- display: flex;
699
- align-items: center;
700
- justify-content: space-between;
701
- }
702
-
703
- .site-logo-pair {
704
- display: inline-grid;
705
- align-items: center;
706
- }
707
-
708
- .site-logo-pair .site-logo {
709
- grid-area: 1 / 1;
710
- }
711
-
712
- .site-logo-light {
713
- display: block;
714
- }
715
-
716
- .site-logo-dark {
717
- display: none;
718
- }
719
-
720
- @media (prefers-color-scheme: dark) {
721
- .site-logo-light {
722
- display: none;
723
- }
724
-
725
- .site-logo-dark {
726
- display: block;
727
- }
728
- }
729
-
730
- [data-theme='light'] .site-logo-light {
731
- display: block;
732
- }
733
-
734
- [data-theme='light'] .site-logo-dark {
735
- display: none;
736
- }
737
-
738
- [data-theme='dark'] .site-logo-light {
739
- display: none;
740
- }
741
-
742
- [data-theme='dark'] .site-logo-dark {
743
- display: block;
744
- }
745
-
746
- header.site-header h1 a .site-logo {
747
- height: 28px;
748
- width: auto;
749
- }
750
-
751
- header.site-header nav a {
752
- letter-spacing: 0;
753
- }
754
-
755
- header.site-header nav a.github-link {
756
- width: 36px;
757
- height: 36px;
758
- }
759
-
760
- header.site-header nav a.docs-github-link {
761
- width: auto;
762
- min-width: 36px;
763
- padding: 0 12px;
764
- display: inline-flex;
765
- align-items: center;
766
- justify-content: center;
767
- gap: 8px;
768
- font-family: var(--font-mono);
769
- font-size: 0.75rem;
770
- }
771
-
772
- .site-footer {
773
- border-top: 1px solid var(--surface-border);
774
- background: transparent;
775
- padding: 56px 0 36px;
776
- }
777
-
778
- .site-footer .footer-inner {
779
- display: grid;
780
- grid-template-columns: minmax(240px, 1fr) minmax(180px, auto) minmax(
781
- 220px,
782
- auto
783
- );
784
- align-items: start;
785
- gap: 40px;
786
- }
787
-
788
- .site-footer .footer-brand .site-logo {
789
- height: 28px;
790
- width: auto;
791
- }
792
-
793
- .site-footer .footer-brand p {
794
- max-width: 360px;
795
- margin: 16px 0 0;
796
- font-size: 0.875rem;
797
- line-height: 1.6;
798
- }
799
-
800
- .footer-links {
801
- margin: 0;
802
- padding: 0;
803
- }
804
-
805
- .footer-links li {
806
- margin: 0 0 8px;
807
- padding: 0;
808
- }
809
-
810
- .footer-links h4 {
811
- margin: 0 0 14px;
812
- color: var(--foreground);
813
- font-size: 0.8125rem;
814
- line-height: 1.25;
815
- letter-spacing: 0.08em;
816
- text-transform: uppercase;
817
- }
818
-
819
- .footer-links a {
820
- color: var(--muted-foreground);
821
- font-size: 0.875rem;
822
- }
823
-
824
- .footer-links a:hover {
825
- color: var(--primary);
826
- }
827
-
828
- .footer-credit {
829
- grid-column: 1 / -1;
830
- border-top: 1px solid var(--surface-border);
831
- padding-top: 24px;
832
- display: flex;
833
- align-items: center;
834
- justify-content: center;
835
- text-align: center;
836
- font-size: 0.8125rem;
837
- }
838
-
839
- .footer-social {
840
- display: flex;
841
- align-items: center;
842
- justify-content: flex-end;
843
- flex-wrap: wrap;
844
- gap: 8px;
845
- }
846
-
847
- .footer-social a {
848
- width: 36px;
849
- height: 36px;
850
- display: grid;
851
- place-items: center;
852
- border-radius: 6px;
853
- border: 1px solid var(--surface-border);
854
- color: var(--muted-foreground);
855
- background: var(--surface);
856
- transition: all 0.2s ease;
857
- }
858
-
859
- .footer-social-icon {
860
- width: 16px;
861
- height: 16px;
862
- display: block;
863
- background-color: var(--muted-foreground);
864
- opacity: 0.72;
865
- mask: var(--icon) center / contain no-repeat;
866
- -webkit-mask: var(--icon) center / contain no-repeat;
867
- transition:
868
- background-color 0.2s ease,
869
- opacity 0.2s ease;
870
- }
871
-
872
- .footer-social a:hover {
873
- color: var(--primary);
874
- border-color: var(--primary-border);
875
- background: var(--primary-softer);
876
- }
877
-
878
- .footer-social a:hover .footer-social-icon {
879
- background-color: var(--primary);
880
- opacity: 1;
881
- }
882
-
883
- @media screen and (max-width: 768px) {
884
- header.site-header .nav-links {
885
- display: none;
886
- }
887
-
888
- header.site-header .github-link {
889
- display: none;
890
- }
891
-
892
- .site-footer .footer-inner {
893
- grid-template-columns: 1fr;
894
- gap: 28px;
895
- }
896
-
897
- .footer-social {
898
- justify-content: flex-start;
899
- }
900
- }