polen 0.10.0-next.15 → 0.10.0-next.17

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 (230) hide show
  1. package/README.md +7 -6
  2. package/build/api/vite/plugins/core.d.ts.map +1 -1
  3. package/build/api/vite/plugins/core.js +9 -8
  4. package/build/api/vite/plugins/core.js.map +1 -1
  5. package/build/lib/graphql-change/change-groups.d.ts +52 -0
  6. package/build/lib/graphql-change/change-groups.d.ts.map +1 -0
  7. package/build/lib/graphql-change/change-groups.js +33 -0
  8. package/build/lib/graphql-change/change-groups.js.map +1 -0
  9. package/build/lib/graphql-change/change-types.d.ts +170 -0
  10. package/build/lib/graphql-change/change-types.d.ts.map +1 -0
  11. package/build/lib/graphql-change/change-types.js +11 -0
  12. package/build/lib/graphql-change/change-types.js.map +1 -0
  13. package/build/lib/graphql-change/criticality.d.ts +26 -0
  14. package/build/lib/graphql-change/criticality.d.ts.map +1 -0
  15. package/build/lib/graphql-change/criticality.js +30 -0
  16. package/build/lib/graphql-change/criticality.js.map +1 -0
  17. package/build/lib/graphql-change/graphql-change.d.ts +5 -6
  18. package/build/lib/graphql-change/graphql-change.d.ts.map +1 -1
  19. package/build/lib/graphql-change/graphql-change.js +4 -0
  20. package/build/lib/graphql-change/graphql-change.js.map +1 -1
  21. package/build/lib/graphql-document/components/GraphQLDocument.d.ts +0 -2
  22. package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +1 -1
  23. package/build/lib/graphql-document/components/GraphQLDocument.js +5 -5
  24. package/build/lib/graphql-document/components/GraphQLDocument.js.map +1 -1
  25. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts +1 -1
  26. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts.map +1 -1
  27. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js +1 -3
  28. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js.map +1 -1
  29. package/build/lib/graphql-document/positioning-simple.d.ts +1 -1
  30. package/build/lib/graphql-document/positioning-simple.js +1 -1
  31. package/build/template/components/Changelog/ChangeBase.d.ts +9 -0
  32. package/build/template/components/Changelog/ChangeBase.d.ts.map +1 -0
  33. package/build/template/components/Changelog/ChangeBase.js +5 -0
  34. package/build/template/components/Changelog/ChangeBase.js.map +1 -0
  35. package/build/template/components/Changelog/CriticalitySection.d.ts +11 -0
  36. package/build/template/components/Changelog/CriticalitySection.d.ts.map +1 -0
  37. package/build/template/components/Changelog/CriticalitySection.js +11 -0
  38. package/build/template/components/Changelog/CriticalitySection.js.map +1 -0
  39. package/build/template/components/Changelog/changes/index.d.ts +2 -0
  40. package/build/template/components/Changelog/changes/index.d.ts.map +1 -0
  41. package/build/template/components/Changelog/changes/index.js +2 -0
  42. package/build/template/components/Changelog/changes/index.js.map +1 -0
  43. package/build/template/components/Changelog/groups/DirectiveArgument.d.ts +6 -0
  44. package/build/template/components/Changelog/groups/DirectiveArgument.d.ts.map +1 -0
  45. package/build/template/components/Changelog/groups/DirectiveArgument.js +12 -0
  46. package/build/template/components/Changelog/groups/DirectiveArgument.js.map +1 -0
  47. package/build/template/components/Changelog/groups/DirectiveArgumentDescription.d.ts +6 -0
  48. package/build/template/components/Changelog/groups/DirectiveArgumentDescription.d.ts.map +1 -0
  49. package/build/template/components/Changelog/groups/DirectiveArgumentDescription.js +7 -0
  50. package/build/template/components/Changelog/groups/DirectiveArgumentDescription.js.map +1 -0
  51. package/build/template/components/Changelog/groups/DirectiveArgumentOperation.d.ts +6 -0
  52. package/build/template/components/Changelog/groups/DirectiveArgumentOperation.d.ts.map +1 -0
  53. package/build/template/components/Changelog/groups/DirectiveArgumentOperation.js +12 -0
  54. package/build/template/components/Changelog/groups/DirectiveArgumentOperation.js.map +1 -0
  55. package/build/template/components/Changelog/groups/DirectiveDescription.d.ts +6 -0
  56. package/build/template/components/Changelog/groups/DirectiveDescription.d.ts.map +1 -0
  57. package/build/template/components/Changelog/groups/DirectiveDescription.js +7 -0
  58. package/build/template/components/Changelog/groups/DirectiveDescription.js.map +1 -0
  59. package/build/template/components/Changelog/groups/DirectiveLocationOperation.d.ts +6 -0
  60. package/build/template/components/Changelog/groups/DirectiveLocationOperation.d.ts.map +1 -0
  61. package/build/template/components/Changelog/groups/DirectiveLocationOperation.js +12 -0
  62. package/build/template/components/Changelog/groups/DirectiveLocationOperation.js.map +1 -0
  63. package/build/template/components/Changelog/groups/DirectiveOperation.d.ts +6 -0
  64. package/build/template/components/Changelog/groups/DirectiveOperation.d.ts.map +1 -0
  65. package/build/template/components/Changelog/groups/DirectiveOperation.js +12 -0
  66. package/build/template/components/Changelog/groups/DirectiveOperation.js.map +1 -0
  67. package/build/template/components/Changelog/groups/DirectiveUsage.d.ts +6 -0
  68. package/build/template/components/Changelog/groups/DirectiveUsage.d.ts.map +1 -0
  69. package/build/template/components/Changelog/groups/DirectiveUsage.js +59 -0
  70. package/build/template/components/Changelog/groups/DirectiveUsage.js.map +1 -0
  71. package/build/template/components/Changelog/groups/EnumValueDeprecationReason.d.ts +6 -0
  72. package/build/template/components/Changelog/groups/EnumValueDeprecationReason.d.ts.map +1 -0
  73. package/build/template/components/Changelog/groups/EnumValueDeprecationReason.js +14 -0
  74. package/build/template/components/Changelog/groups/EnumValueDeprecationReason.js.map +1 -0
  75. package/build/template/components/Changelog/groups/EnumValueDescription.d.ts +6 -0
  76. package/build/template/components/Changelog/groups/EnumValueDescription.d.ts.map +1 -0
  77. package/build/template/components/Changelog/groups/EnumValueDescription.js +7 -0
  78. package/build/template/components/Changelog/groups/EnumValueDescription.js.map +1 -0
  79. package/build/template/components/Changelog/groups/EnumValueOperation.d.ts +6 -0
  80. package/build/template/components/Changelog/groups/EnumValueOperation.d.ts.map +1 -0
  81. package/build/template/components/Changelog/groups/EnumValueOperation.js +12 -0
  82. package/build/template/components/Changelog/groups/EnumValueOperation.js.map +1 -0
  83. package/build/template/components/Changelog/groups/FieldArgument.d.ts +6 -0
  84. package/build/template/components/Changelog/groups/FieldArgument.d.ts.map +1 -0
  85. package/build/template/components/Changelog/groups/FieldArgument.js +12 -0
  86. package/build/template/components/Changelog/groups/FieldArgument.js.map +1 -0
  87. package/build/template/components/Changelog/groups/FieldArgumentDescription.d.ts +6 -0
  88. package/build/template/components/Changelog/groups/FieldArgumentDescription.d.ts.map +1 -0
  89. package/build/template/components/Changelog/groups/FieldArgumentDescription.js +7 -0
  90. package/build/template/components/Changelog/groups/FieldArgumentDescription.js.map +1 -0
  91. package/build/template/components/Changelog/groups/FieldArgumentOperation.d.ts +6 -0
  92. package/build/template/components/Changelog/groups/FieldArgumentOperation.d.ts.map +1 -0
  93. package/build/template/components/Changelog/groups/FieldArgumentOperation.js +12 -0
  94. package/build/template/components/Changelog/groups/FieldArgumentOperation.js.map +1 -0
  95. package/build/template/components/Changelog/groups/FieldDeprecation.d.ts +6 -0
  96. package/build/template/components/Changelog/groups/FieldDeprecation.d.ts.map +1 -0
  97. package/build/template/components/Changelog/groups/FieldDeprecation.js +12 -0
  98. package/build/template/components/Changelog/groups/FieldDeprecation.js.map +1 -0
  99. package/build/template/components/Changelog/groups/FieldDeprecationReason.d.ts +6 -0
  100. package/build/template/components/Changelog/groups/FieldDeprecationReason.d.ts.map +1 -0
  101. package/build/template/components/Changelog/groups/FieldDeprecationReason.js +14 -0
  102. package/build/template/components/Changelog/groups/FieldDeprecationReason.js.map +1 -0
  103. package/build/template/components/Changelog/groups/FieldDescription.d.ts +6 -0
  104. package/build/template/components/Changelog/groups/FieldDescription.d.ts.map +1 -0
  105. package/build/template/components/Changelog/groups/FieldDescription.js +14 -0
  106. package/build/template/components/Changelog/groups/FieldDescription.js.map +1 -0
  107. package/build/template/components/Changelog/groups/FieldOperation.d.ts +6 -0
  108. package/build/template/components/Changelog/groups/FieldOperation.d.ts.map +1 -0
  109. package/build/template/components/Changelog/groups/FieldOperation.js +14 -0
  110. package/build/template/components/Changelog/groups/FieldOperation.js.map +1 -0
  111. package/build/template/components/Changelog/groups/InputFieldDefaultValue.d.ts +6 -0
  112. package/build/template/components/Changelog/groups/InputFieldDefaultValue.d.ts.map +1 -0
  113. package/build/template/components/Changelog/groups/InputFieldDefaultValue.js +7 -0
  114. package/build/template/components/Changelog/groups/InputFieldDefaultValue.js.map +1 -0
  115. package/build/template/components/Changelog/groups/InputFieldDescription.d.ts +6 -0
  116. package/build/template/components/Changelog/groups/InputFieldDescription.d.ts.map +1 -0
  117. package/build/template/components/Changelog/groups/InputFieldDescription.js +14 -0
  118. package/build/template/components/Changelog/groups/InputFieldDescription.js.map +1 -0
  119. package/build/template/components/Changelog/groups/InputFieldOperation.d.ts +6 -0
  120. package/build/template/components/Changelog/groups/InputFieldOperation.d.ts.map +1 -0
  121. package/build/template/components/Changelog/groups/InputFieldOperation.js +14 -0
  122. package/build/template/components/Changelog/groups/InputFieldOperation.js.map +1 -0
  123. package/build/template/components/Changelog/groups/ObjectTypeInterfaceOperation.d.ts +6 -0
  124. package/build/template/components/Changelog/groups/ObjectTypeInterfaceOperation.d.ts.map +1 -0
  125. package/build/template/components/Changelog/groups/ObjectTypeInterfaceOperation.js +12 -0
  126. package/build/template/components/Changelog/groups/ObjectTypeInterfaceOperation.js.map +1 -0
  127. package/build/template/components/Changelog/groups/SchemaRootType.d.ts +6 -0
  128. package/build/template/components/Changelog/groups/SchemaRootType.d.ts.map +1 -0
  129. package/build/template/components/Changelog/groups/SchemaRootType.js +14 -0
  130. package/build/template/components/Changelog/groups/SchemaRootType.js.map +1 -0
  131. package/build/template/components/Changelog/groups/TypeDescription.d.ts +6 -0
  132. package/build/template/components/Changelog/groups/TypeDescription.d.ts.map +1 -0
  133. package/build/template/components/Changelog/groups/TypeDescription.js +14 -0
  134. package/build/template/components/Changelog/groups/TypeDescription.js.map +1 -0
  135. package/build/template/components/Changelog/groups/TypeOperation.d.ts +6 -0
  136. package/build/template/components/Changelog/groups/TypeOperation.d.ts.map +1 -0
  137. package/build/template/components/Changelog/groups/TypeOperation.js +14 -0
  138. package/build/template/components/Changelog/groups/TypeOperation.js.map +1 -0
  139. package/build/template/components/Changelog/groups/UnionMemberOperation.d.ts +6 -0
  140. package/build/template/components/Changelog/groups/UnionMemberOperation.d.ts.map +1 -0
  141. package/build/template/components/Changelog/groups/UnionMemberOperation.js +12 -0
  142. package/build/template/components/Changelog/groups/UnionMemberOperation.js.map +1 -0
  143. package/build/template/components/Changelog/groups/index.d.ts +26 -0
  144. package/build/template/components/Changelog/groups/index.d.ts.map +1 -0
  145. package/build/template/components/Changelog/groups/index.js +26 -0
  146. package/build/template/components/Changelog/groups/index.js.map +1 -0
  147. package/build/template/components/Changelog.d.ts.map +1 -1
  148. package/build/template/components/Changelog.js +108 -27
  149. package/build/template/components/Changelog.js.map +1 -1
  150. package/build/template/components/ChangelogLayout.d.ts +9 -0
  151. package/build/template/components/ChangelogLayout.d.ts.map +1 -0
  152. package/build/template/components/ChangelogLayout.js +71 -0
  153. package/build/template/components/ChangelogLayout.js.map +1 -0
  154. package/build/template/components/layouts/SidebarLayout.d.ts +9 -0
  155. package/build/template/components/layouts/SidebarLayout.d.ts.map +1 -0
  156. package/build/template/components/layouts/SidebarLayout.js +25 -0
  157. package/build/template/components/layouts/SidebarLayout.js.map +1 -0
  158. package/build/template/components/layouts/index.d.ts +2 -0
  159. package/build/template/components/layouts/index.d.ts.map +1 -0
  160. package/build/template/components/layouts/index.js +2 -0
  161. package/build/template/components/layouts/index.js.map +1 -0
  162. package/build/template/entry.client.d.ts +0 -1
  163. package/build/template/entry.client.d.ts.map +1 -1
  164. package/build/template/entry.client.js +0 -1
  165. package/build/template/entry.client.js.map +1 -1
  166. package/build/template/routes/changelog.d.ts.map +1 -1
  167. package/build/template/routes/changelog.js +2 -1
  168. package/build/template/routes/changelog.js.map +1 -1
  169. package/build/template/routes/reference.d.ts +2 -1
  170. package/build/template/routes/reference.d.ts.map +1 -1
  171. package/build/template/routes/reference.js +20 -1
  172. package/build/template/routes/reference.js.map +1 -1
  173. package/build/template/routes/root.d.ts.map +1 -1
  174. package/build/template/routes/root.js +7 -68
  175. package/build/template/routes/root.js.map +1 -1
  176. package/package.json +3 -3
  177. package/src/api/vite/plugins/core.ts +9 -8
  178. package/src/lib/graphql-change/change-groups.ts +250 -0
  179. package/src/lib/graphql-change/change-types.ts +203 -0
  180. package/src/lib/graphql-change/criticality.ts +45 -0
  181. package/src/lib/graphql-change/graphql-change.ts +7 -5
  182. package/src/lib/graphql-document/components/GraphQLDocument.tsx +7 -12
  183. package/src/lib/graphql-document/components/GraphQLDocumentWithSchema.tsx +1 -6
  184. package/src/lib/graphql-document/demo.md +1 -1
  185. package/src/lib/graphql-document/positioning-simple.test.ts +5 -5
  186. package/src/lib/graphql-document/positioning-simple.ts +1 -1
  187. package/src/template/components/Changelog/ChangeBase.tsx +15 -0
  188. package/src/template/components/Changelog/CriticalitySection.tsx +29 -0
  189. package/src/template/components/Changelog/changes/index.ts +1 -0
  190. package/src/template/components/Changelog/groups/DirectiveArgument.tsx +25 -0
  191. package/src/template/components/Changelog/groups/DirectiveArgumentDescription.tsx +15 -0
  192. package/src/template/components/Changelog/groups/DirectiveArgumentOperation.tsx +25 -0
  193. package/src/template/components/Changelog/groups/DirectiveDescription.tsx +12 -0
  194. package/src/template/components/Changelog/groups/DirectiveLocationOperation.tsx +25 -0
  195. package/src/template/components/Changelog/groups/DirectiveOperation.tsx +21 -0
  196. package/src/template/components/Changelog/groups/DirectiveUsage.tsx +137 -0
  197. package/src/template/components/Changelog/groups/EnumValueDeprecationReason.tsx +32 -0
  198. package/src/template/components/Changelog/groups/EnumValueDescription.tsx +12 -0
  199. package/src/template/components/Changelog/groups/EnumValueOperation.tsx +21 -0
  200. package/src/template/components/Changelog/groups/FieldArgument.tsx +26 -0
  201. package/src/template/components/Changelog/groups/FieldArgumentDescription.tsx +15 -0
  202. package/src/template/components/Changelog/groups/FieldArgumentOperation.tsx +26 -0
  203. package/src/template/components/Changelog/groups/FieldDeprecation.tsx +21 -0
  204. package/src/template/components/Changelog/groups/FieldDeprecationReason.tsx +33 -0
  205. package/src/template/components/Changelog/groups/FieldDescription.tsx +27 -0
  206. package/src/template/components/Changelog/groups/FieldOperation.tsx +28 -0
  207. package/src/template/components/Changelog/groups/InputFieldDefaultValue.tsx +16 -0
  208. package/src/template/components/Changelog/groups/InputFieldDescription.tsx +30 -0
  209. package/src/template/components/Changelog/groups/InputFieldOperation.tsx +29 -0
  210. package/src/template/components/Changelog/groups/ObjectTypeInterfaceOperation.tsx +25 -0
  211. package/src/template/components/Changelog/groups/SchemaRootType.tsx +31 -0
  212. package/src/template/components/Changelog/groups/TypeDescription.tsx +27 -0
  213. package/src/template/components/Changelog/groups/TypeOperation.tsx +27 -0
  214. package/src/template/components/Changelog/groups/UnionMemberOperation.tsx +21 -0
  215. package/src/template/components/Changelog/groups/index.ts +25 -0
  216. package/src/template/components/Changelog.tsx +96 -63
  217. package/src/template/components/ChangelogLayout.tsx +157 -0
  218. package/src/template/components/layouts/SidebarLayout.tsx +68 -0
  219. package/src/template/components/layouts/index.ts +1 -0
  220. package/src/template/entry.client.tsx +0 -1
  221. package/src/template/routes/changelog.tsx +6 -1
  222. package/src/template/routes/reference.tsx +25 -2
  223. package/src/template/routes/root.tsx +5 -105
  224. package/build/template/components/CodeBlockEnhancer.d.ts +0 -2
  225. package/build/template/components/CodeBlockEnhancer.d.ts.map +0 -1
  226. package/build/template/components/CodeBlockEnhancer.js +0 -175
  227. package/build/template/components/CodeBlockEnhancer.js.map +0 -1
  228. package/build/template/styles/code-block.css +0 -218
  229. package/src/template/components/CodeBlockEnhancer.tsx +0 -192
  230. package/src/template/styles/code-block.css +0 -218
@@ -1,192 +0,0 @@
1
- import { useEffect } from 'react'
2
- import { useLocation } from 'react-router'
3
- import { useTheme } from '../contexts/ThemeContext.js'
4
-
5
- export const CodeBlockEnhancer = () => {
6
- const { appearance } = useTheme()
7
- const location = useLocation()
8
-
9
- useEffect(() => {
10
- // Add styles for code block enhancements
11
- const styleId = `code-block-enhancer-styles`
12
- let styleElement = document.getElementById(styleId) as HTMLStyleElement
13
-
14
- if (!styleElement) {
15
- styleElement = document.createElement(`style`)
16
- styleElement.id = styleId
17
- document.head.appendChild(styleElement)
18
- }
19
-
20
- styleElement.textContent = `
21
- /* Enhanced code block styles */
22
- pre.shiki {
23
- position: relative;
24
- }
25
-
26
- pre.shiki[data-title] {
27
- margin-top: 0;
28
- border-radius: 0 0 8px 8px !important;
29
- }
30
-
31
- pre.shiki[data-title]::before {
32
- content: attr(data-title);
33
- display: block;
34
- position: absolute;
35
- top: -2.5rem;
36
- left: -1px;
37
- right: -1px;
38
- background-color: ${appearance === `dark` ? `#2a2b3d` : `#f3f4f6`};
39
- border: 1px solid var(--gray-4);
40
- border-bottom: 1px solid ${appearance === `dark` ? `#3a3b4d` : `#e5e7eb`};
41
- border-radius: 8px 8px 0 0;
42
- padding: 0.5rem 1rem;
43
- font-size: 0.875rem;
44
- font-weight: 500;
45
- color: var(--gray-11);
46
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
47
- }
48
-
49
- pre.shiki[data-title][data-language]::after {
50
- content: attr(data-language);
51
- position: absolute;
52
- top: -2rem;
53
- right: 1rem;
54
- font-size: 0.75rem;
55
- color: var(--gray-9);
56
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
57
- }
58
-
59
- .code-block-copy {
60
- position: absolute;
61
- top: 0.5rem;
62
- right: 0.5rem;
63
- padding: 0.25rem 0.5rem;
64
- font-size: 0.75rem;
65
- cursor: pointer;
66
- border: none;
67
- border-radius: 4px;
68
- transition: all 0.2s;
69
- background-color: ${appearance === `dark` ? `rgba(0, 0, 0, 0.5)` : `rgba(255, 255, 255, 0.8)`};
70
- backdrop-filter: blur(4px);
71
- color: ${appearance === `dark` ? `#fff` : `#000`};
72
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
73
- }
74
-
75
- pre.shiki[data-title] .code-block-copy {
76
- top: -2rem;
77
- right: 6rem;
78
- background-color: transparent;
79
- color: var(--gray-11);
80
- }
81
-
82
- .code-block-copy:hover {
83
- background-color: var(--accent-9) !important;
84
- color: white !important;
85
- }
86
-
87
- .code-block-copy[data-copied="true"] {
88
- background-color: var(--green-9) !important;
89
- color: white !important;
90
- }
91
- `
92
-
93
- return () => {
94
- if (styleElement && styleElement.parentNode) {
95
- styleElement.parentNode.removeChild(styleElement)
96
- }
97
- }
98
- }, [appearance])
99
-
100
- useEffect(() => {
101
- const enhanceCodeBlocks = () => {
102
- const codeBlocks = document.querySelectorAll(`pre.shiki:not([data-enhanced])`)
103
-
104
- codeBlocks.forEach((block) => {
105
- const preElement = block as HTMLPreElement
106
- preElement.setAttribute(`data-enhanced`, `true`)
107
-
108
- // Get language from class name
109
- const classes = preElement.className.split(` `)
110
- const language = classes.find(c => c !== `shiki` && c !== `shiki-light` && c !== `shiki-dark`) || `text`
111
-
112
- // Check for title in first line
113
- const codeElement = preElement.querySelector(`code`)
114
- if (!codeElement) return
115
-
116
- const firstLine = codeElement.textContent?.split(`\n`)[0] || ``
117
- let title = ``
118
-
119
- const titleMatch = /^\/\/\s*title:\s*(.+)$/i.exec(firstLine)
120
- if (titleMatch?.[1]) {
121
- title = titleMatch[1]
122
- // Remove title line from display
123
- const firstLineElement = codeElement.querySelector(`span.line`) as HTMLElement | null
124
- if (firstLineElement) {
125
- firstLineElement.style.display = `none`
126
- }
127
-
128
- // Set data attributes for CSS
129
- preElement.setAttribute(`data-title`, title)
130
- preElement.setAttribute(`data-language`, language)
131
- preElement.style.marginTop = `3rem`
132
- }
133
-
134
- // Create copy button
135
- const copyButton = document.createElement(`button`)
136
- copyButton.className = `code-block-copy`
137
- copyButton.textContent = `Copy`
138
- copyButton.setAttribute(`data-copied`, `false`)
139
-
140
- copyButton.onclick = async (e) => {
141
- e.preventDefault()
142
- e.stopPropagation()
143
-
144
- // Get clean code without the title line
145
- const code = codeElement.textContent || ``
146
- const cleanCode = title ? code.split(`\n`).slice(1).join(`\n`) : code
147
-
148
- try {
149
- await navigator.clipboard.writeText(cleanCode)
150
- copyButton.textContent = `Copied!`
151
- copyButton.setAttribute(`data-copied`, `true`)
152
- setTimeout(() => {
153
- copyButton.textContent = `Copy`
154
- copyButton.setAttribute(`data-copied`, `false`)
155
- }, 2000)
156
- } catch (err) {
157
- console.error(`Failed to copy:`, err)
158
- }
159
- }
160
-
161
- // Append copy button directly to pre element
162
- preElement.appendChild(copyButton)
163
- })
164
- }
165
-
166
- // Small delay to ensure DOM is ready
167
- const timeoutId = setTimeout(enhanceCodeBlocks, 100)
168
-
169
- return () => {
170
- clearTimeout(timeoutId)
171
- // Clean up enhanced code blocks
172
- document.querySelectorAll(`pre.shiki[data-enhanced]`).forEach(block => {
173
- block.removeAttribute(`data-enhanced`)
174
- block.removeAttribute(`data-title`)
175
- block.removeAttribute(`data-language`)
176
- const copyButton = block.querySelector(`.code-block-copy`)
177
- if (copyButton) {
178
- copyButton.remove()
179
- }
180
- // Restore hidden title lines
181
- const firstLine = block.querySelector(`span.line`) as HTMLElement | null
182
- if (firstLine && firstLine.style.display === `none`) {
183
- firstLine.style.display = ``
184
- } // Reset margin
185
-
186
- ;(block as HTMLElement).style.marginTop = ``
187
- })
188
- }
189
- }, [location.pathname]) // Re-run when route changes
190
-
191
- return null
192
- }
@@ -1,218 +0,0 @@
1
- /* Code Block Styles */
2
-
3
- /* Base code block container */
4
- .code-block {
5
- position: relative;
6
- margin: 1rem 0;
7
- border-radius: 8px;
8
- overflow: hidden;
9
- font-size: 14px;
10
- line-height: 1.6;
11
- }
12
-
13
- .code-block pre {
14
- margin: 0;
15
- padding: 1rem;
16
- overflow-x: auto;
17
- background: inherit;
18
- }
19
-
20
- .code-block code {
21
- font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
22
- font-variant-ligatures: contextual;
23
- }
24
-
25
- /* Shiki theme switching with CSS variables */
26
- /* Default to light theme */
27
- :root {
28
- color-scheme: light;
29
- }
30
-
31
- /* When dark mode is active */
32
- .dark {
33
- color-scheme: dark;
34
- }
35
-
36
- /* Shiki token colors for light theme (github-light) */
37
- :root {
38
- --shiki-color-text: #24292e;
39
- --shiki-color-background: #f6f8fa;
40
- --shiki-token-constant: #005cc5;
41
- --shiki-token-string: #032f62;
42
- --shiki-token-comment: #6a737d;
43
- --shiki-token-keyword: #d73a49;
44
- --shiki-token-parameter: #e36209;
45
- --shiki-token-function: #6f42c1;
46
- --shiki-token-string-expression: #032f62;
47
- --shiki-token-punctuation: #24292e;
48
- --shiki-token-link: #032f62;
49
- }
50
-
51
- /* Shiki token colors for dark theme (tokyo-night) */
52
- .dark {
53
- --shiki-color-text: #c0caf5;
54
- --shiki-color-background: #1a1b26;
55
- --shiki-token-constant: #ff9e64;
56
- --shiki-token-string: #9ece6a;
57
- --shiki-token-comment: #565f89;
58
- --shiki-token-keyword: #bb9af7;
59
- --shiki-token-parameter: #e0af68;
60
- --shiki-token-function: #7aa2f7;
61
- --shiki-token-string-expression: #9ece6a;
62
- --shiki-token-punctuation: #c0caf5;
63
- --shiki-token-link: #9ece6a;
64
- }
65
-
66
- /* Shiki code blocks */
67
- pre.shiki {
68
- margin: 1rem 0;
69
- padding: 1rem;
70
- border-radius: 8px;
71
- overflow-x: auto;
72
- font-size: 14px;
73
- line-height: 1.6;
74
- background-color: var(--shiki-color-background);
75
- color: var(--shiki-color-text);
76
- }
77
-
78
- pre.shiki code {
79
- font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
80
- font-variant-ligatures: contextual;
81
- }
82
-
83
- /* Line numbers */
84
- .code-block[data-line-numbers="true"] pre {
85
- padding-left: 3.5rem;
86
- position: relative;
87
- }
88
-
89
- .code-block[data-line-numbers="true"] .line {
90
- position: relative;
91
- }
92
-
93
- .code-block[data-line-numbers="true"] .line::before {
94
- content: attr(data-line);
95
- position: absolute;
96
- left: -3rem;
97
- width: 2.5rem;
98
- text-align: right;
99
- color: var(--gray-a6);
100
- user-select: none;
101
- }
102
-
103
- /* Line highlighting */
104
- .code-block .line[data-highlighted="true"] {
105
- background-color: var(--amber-a3);
106
- display: block;
107
- margin: 0 -1rem;
108
- padding: 0 1rem;
109
- }
110
-
111
- /* Diff lines */
112
- .code-block .line[data-diff="+"] {
113
- background-color: var(--green-a3);
114
- display: block;
115
- margin: 0 -1rem;
116
- padding: 0 1rem;
117
- }
118
-
119
- .code-block .line[data-diff="-"] {
120
- background-color: var(--red-a3);
121
- display: block;
122
- margin: 0 -1rem;
123
- padding: 0 1rem;
124
- }
125
-
126
- .code-block .line[data-diff="+"]::before {
127
- content: "+ ";
128
- color: var(--green-11);
129
- font-weight: bold;
130
- }
131
-
132
- .code-block .line[data-diff="-"]::before {
133
- content: "- ";
134
- color: var(--red-11);
135
- font-weight: bold;
136
- }
137
-
138
- /* Focus lines */
139
- .code-block .line:not([data-focus="true"]) {
140
- opacity: 0.5;
141
- filter: grayscale(100%);
142
- transition: opacity 0.2s, filter 0.2s;
143
- }
144
-
145
- .code-block:hover .line:not([data-focus="true"]) {
146
- opacity: 0.8;
147
- filter: grayscale(0%);
148
- }
149
-
150
- /* Copy button */
151
- .code-block-copy {
152
- position: absolute;
153
- top: 0.5rem;
154
- right: 0.5rem;
155
- padding: 0.25rem 0.5rem;
156
- border-radius: 4px;
157
- background: var(--gray-a3);
158
- color: var(--gray-12);
159
- border: 1px solid var(--gray-a5);
160
- cursor: pointer;
161
- font-size: 12px;
162
- transition: all 0.2s;
163
- }
164
-
165
- .code-block-copy:hover {
166
- background: var(--gray-a4);
167
- border-color: var(--gray-a6);
168
- }
169
-
170
- .code-block-copy.copied {
171
- background: var(--green-a3);
172
- border-color: var(--green-a5);
173
- color: var(--green-11);
174
- }
175
-
176
- /* Language badge */
177
- .code-block-lang {
178
- position: absolute;
179
- top: 0;
180
- right: 0;
181
- padding: 0.25rem 0.75rem;
182
- background: var(--gray-a3);
183
- color: var(--gray-11);
184
- font-size: 12px;
185
- font-weight: 500;
186
- border-bottom-left-radius: 4px;
187
- user-select: none;
188
- }
189
-
190
- /* Scrollbar styling */
191
- .code-block pre::-webkit-scrollbar {
192
- height: 8px;
193
- width: 8px;
194
- }
195
-
196
- .code-block pre::-webkit-scrollbar-track {
197
- background: var(--gray-a3);
198
- border-radius: 4px;
199
- }
200
-
201
- .code-block pre::-webkit-scrollbar-thumb {
202
- background: var(--gray-a6);
203
- border-radius: 4px;
204
- }
205
-
206
- .code-block pre::-webkit-scrollbar-thumb:hover {
207
- background: var(--gray-a7);
208
- }
209
-
210
- /* Inline code */
211
- code:not(.code-block code) {
212
- padding: 0.2em 0.4em;
213
- margin: 0;
214
- font-size: 0.85em;
215
- background-color: var(--gray-a3);
216
- border-radius: 4px;
217
- font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
218
- }