create-starlight-cms 0.9.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 (228) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +18 -0
  3. package/THIRD_PARTY_NOTICES.md +4 -0
  4. package/bin/index.js +147 -0
  5. package/package.json +46 -0
  6. package/template/.nvmrc +1 -0
  7. package/template/LICENSE +21 -0
  8. package/template/README.md +68 -0
  9. package/template/THIRD_PARTY_NOTICES.md +12 -0
  10. package/template/_gitignore +14 -0
  11. package/template/astro.config.mjs +26 -0
  12. package/template/migrations/0001_schema.sql +73 -0
  13. package/template/migrations/0002_publish_delivery.sql +16 -0
  14. package/template/package-lock.json.template +9123 -0
  15. package/template/package.json +89 -0
  16. package/template/scripts/build-admin.mjs +38 -0
  17. package/template/scripts/check-linux-bindings.mjs +18 -0
  18. package/template/scripts/dev.mjs +94 -0
  19. package/template/src/admin/admin.scss +182 -0
  20. package/template/src/admin/app.ts +130 -0
  21. package/template/src/admin/client.tsx +684 -0
  22. package/template/src/admin/components/tiptap-extension/node-background-extension.ts +150 -0
  23. package/template/src/admin/components/tiptap-icons/align-center-icon.tsx +38 -0
  24. package/template/src/admin/components/tiptap-icons/align-justify-icon.tsx +38 -0
  25. package/template/src/admin/components/tiptap-icons/align-left-icon.tsx +38 -0
  26. package/template/src/admin/components/tiptap-icons/align-right-icon.tsx +38 -0
  27. package/template/src/admin/components/tiptap-icons/arrow-left-icon.tsx +24 -0
  28. package/template/src/admin/components/tiptap-icons/arrow-right-icon.tsx +26 -0
  29. package/template/src/admin/components/tiptap-icons/ban-icon.tsx +26 -0
  30. package/template/src/admin/components/tiptap-icons/blockquote-icon.tsx +44 -0
  31. package/template/src/admin/components/tiptap-icons/bold-icon.tsx +26 -0
  32. package/template/src/admin/components/tiptap-icons/case-sensitive-icon.tsx +32 -0
  33. package/template/src/admin/components/tiptap-icons/check-icon.tsx +26 -0
  34. package/template/src/admin/components/tiptap-icons/chevron-down-icon.tsx +26 -0
  35. package/template/src/admin/components/tiptap-icons/chevron-up-icon.tsx +22 -0
  36. package/template/src/admin/components/tiptap-icons/close-icon.tsx +24 -0
  37. package/template/src/admin/components/tiptap-icons/code-block-icon.tsx +38 -0
  38. package/template/src/admin/components/tiptap-icons/code2-icon.tsx +32 -0
  39. package/template/src/admin/components/tiptap-icons/corner-down-left-icon.tsx +26 -0
  40. package/template/src/admin/components/tiptap-icons/external-link-icon.tsx +28 -0
  41. package/template/src/admin/components/tiptap-icons/heading-five-icon.tsx +28 -0
  42. package/template/src/admin/components/tiptap-icons/heading-four-icon.tsx +28 -0
  43. package/template/src/admin/components/tiptap-icons/heading-icon.tsx +24 -0
  44. package/template/src/admin/components/tiptap-icons/heading-one-icon.tsx +28 -0
  45. package/template/src/admin/components/tiptap-icons/heading-six-icon.tsx +30 -0
  46. package/template/src/admin/components/tiptap-icons/heading-three-icon.tsx +36 -0
  47. package/template/src/admin/components/tiptap-icons/heading-two-icon.tsx +28 -0
  48. package/template/src/admin/components/tiptap-icons/highlighter-icon.tsx +26 -0
  49. package/template/src/admin/components/tiptap-icons/image-plus-icon.tsx +26 -0
  50. package/template/src/admin/components/tiptap-icons/italic-icon.tsx +24 -0
  51. package/template/src/admin/components/tiptap-icons/link-icon.tsx +28 -0
  52. package/template/src/admin/components/tiptap-icons/list-icon.tsx +56 -0
  53. package/template/src/admin/components/tiptap-icons/list-ordered-icon.tsx +56 -0
  54. package/template/src/admin/components/tiptap-icons/list-todo-icon.tsx +50 -0
  55. package/template/src/admin/components/tiptap-icons/moon-star-icon.tsx +30 -0
  56. package/template/src/admin/components/tiptap-icons/redo2-icon.tsx +26 -0
  57. package/template/src/admin/components/tiptap-icons/search-icon.tsx +26 -0
  58. package/template/src/admin/components/tiptap-icons/strike-icon.tsx +28 -0
  59. package/template/src/admin/components/tiptap-icons/subscript-icon.tsx +38 -0
  60. package/template/src/admin/components/tiptap-icons/sun-icon.tsx +58 -0
  61. package/template/src/admin/components/tiptap-icons/superscript-icon.tsx +38 -0
  62. package/template/src/admin/components/tiptap-icons/trash-icon.tsx +26 -0
  63. package/template/src/admin/components/tiptap-icons/underline-icon.tsx +26 -0
  64. package/template/src/admin/components/tiptap-icons/undo2-icon.tsx +26 -0
  65. package/template/src/admin/components/tiptap-icons/whole-word-icon.tsx +36 -0
  66. package/template/src/admin/components/tiptap-node/blockquote-node/blockquote-node.scss +37 -0
  67. package/template/src/admin/components/tiptap-node/code-block-node/code-block-node.scss +54 -0
  68. package/template/src/admin/components/tiptap-node/heading-node/heading-node.scss +45 -0
  69. package/template/src/admin/components/tiptap-node/horizontal-rule-node/horizontal-rule-node-extension.ts +14 -0
  70. package/template/src/admin/components/tiptap-node/horizontal-rule-node/horizontal-rule-node.scss +25 -0
  71. package/template/src/admin/components/tiptap-node/image-node/image-node.scss +35 -0
  72. package/template/src/admin/components/tiptap-node/image-upload-node/image-upload-node-extension.ts +161 -0
  73. package/template/src/admin/components/tiptap-node/image-upload-node/image-upload-node.scss +249 -0
  74. package/template/src/admin/components/tiptap-node/image-upload-node/image-upload-node.tsx +554 -0
  75. package/template/src/admin/components/tiptap-node/image-upload-node/index.tsx +1 -0
  76. package/template/src/admin/components/tiptap-node/list-node/list-node.scss +208 -0
  77. package/template/src/admin/components/tiptap-node/paragraph-node/paragraph-node.scss +217 -0
  78. package/template/src/admin/components/tiptap-templates/simple/NOTICE.md +14 -0
  79. package/template/src/admin/components/tiptap-templates/simple/data/content.json +477 -0
  80. package/template/src/admin/components/tiptap-templates/simple/simple-editor.scss +97 -0
  81. package/template/src/admin/components/tiptap-templates/simple/simple-editor.tsx +348 -0
  82. package/template/src/admin/components/tiptap-templates/simple/theme-toggle.tsx +44 -0
  83. package/template/src/admin/components/tiptap-ui/blockquote-button/blockquote-button.tsx +122 -0
  84. package/template/src/admin/components/tiptap-ui/blockquote-button/index.tsx +2 -0
  85. package/template/src/admin/components/tiptap-ui/blockquote-button/use-blockquote.ts +273 -0
  86. package/template/src/admin/components/tiptap-ui/code-block-button/code-block-button.tsx +122 -0
  87. package/template/src/admin/components/tiptap-ui/code-block-button/index.tsx +2 -0
  88. package/template/src/admin/components/tiptap-ui/code-block-button/use-code-block.ts +283 -0
  89. package/template/src/admin/components/tiptap-ui/color-highlight-button/color-highlight-button.scss +49 -0
  90. package/template/src/admin/components/tiptap-ui/color-highlight-button/color-highlight-button.tsx +170 -0
  91. package/template/src/admin/components/tiptap-ui/color-highlight-button/index.tsx +2 -0
  92. package/template/src/admin/components/tiptap-ui/color-highlight-button/use-color-highlight.ts +380 -0
  93. package/template/src/admin/components/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +231 -0
  94. package/template/src/admin/components/tiptap-ui/color-highlight-popover/index.tsx +1 -0
  95. package/template/src/admin/components/tiptap-ui/heading-button/heading-button.tsx +124 -0
  96. package/template/src/admin/components/tiptap-ui/heading-button/index.tsx +2 -0
  97. package/template/src/admin/components/tiptap-ui/heading-button/use-heading.ts +348 -0
  98. package/template/src/admin/components/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu.tsx +128 -0
  99. package/template/src/admin/components/tiptap-ui/heading-dropdown-menu/index.tsx +2 -0
  100. package/template/src/admin/components/tiptap-ui/heading-dropdown-menu/use-heading-dropdown-menu.ts +132 -0
  101. package/template/src/admin/components/tiptap-ui/image-upload-button/image-upload-button.tsx +130 -0
  102. package/template/src/admin/components/tiptap-ui/image-upload-button/index.tsx +2 -0
  103. package/template/src/admin/components/tiptap-ui/image-upload-button/use-image-upload.ts +197 -0
  104. package/template/src/admin/components/tiptap-ui/link-popover/index.tsx +2 -0
  105. package/template/src/admin/components/tiptap-ui/link-popover/link-popover.scss +16 -0
  106. package/template/src/admin/components/tiptap-ui/link-popover/link-popover.tsx +315 -0
  107. package/template/src/admin/components/tiptap-ui/link-popover/use-link-popover.ts +297 -0
  108. package/template/src/admin/components/tiptap-ui/list-button/index.tsx +2 -0
  109. package/template/src/admin/components/tiptap-ui/list-button/list-button.tsx +120 -0
  110. package/template/src/admin/components/tiptap-ui/list-button/use-list.ts +353 -0
  111. package/template/src/admin/components/tiptap-ui/list-dropdown-menu/index.tsx +2 -0
  112. package/template/src/admin/components/tiptap-ui/list-dropdown-menu/list-dropdown-menu.tsx +126 -0
  113. package/template/src/admin/components/tiptap-ui/list-dropdown-menu/use-list-dropdown-menu.ts +220 -0
  114. package/template/src/admin/components/tiptap-ui/mark-button/index.tsx +2 -0
  115. package/template/src/admin/components/tiptap-ui/mark-button/mark-button.tsx +122 -0
  116. package/template/src/admin/components/tiptap-ui/mark-button/use-mark.ts +219 -0
  117. package/template/src/admin/components/tiptap-ui/search-and-replace/index.tsx +2 -0
  118. package/template/src/admin/components/tiptap-ui/search-and-replace/search-and-replace.scss +300 -0
  119. package/template/src/admin/components/tiptap-ui/search-and-replace/search-and-replace.tsx +718 -0
  120. package/template/src/admin/components/tiptap-ui/search-and-replace/use-search-and-replace.ts +528 -0
  121. package/template/src/admin/components/tiptap-ui/text-align-button/index.tsx +2 -0
  122. package/template/src/admin/components/tiptap-ui/text-align-button/text-align-button.tsx +144 -0
  123. package/template/src/admin/components/tiptap-ui/text-align-button/use-text-align.ts +237 -0
  124. package/template/src/admin/components/tiptap-ui/undo-redo-button/index.tsx +2 -0
  125. package/template/src/admin/components/tiptap-ui/undo-redo-button/undo-redo-button.tsx +125 -0
  126. package/template/src/admin/components/tiptap-ui/undo-redo-button/use-undo-redo.ts +200 -0
  127. package/template/src/admin/components/tiptap-ui-primitive/badge/badge-colors.scss +395 -0
  128. package/template/src/admin/components/tiptap-ui-primitive/badge/badge-group.scss +16 -0
  129. package/template/src/admin/components/tiptap-ui-primitive/badge/badge.scss +99 -0
  130. package/template/src/admin/components/tiptap-ui-primitive/badge/badge.tsx +44 -0
  131. package/template/src/admin/components/tiptap-ui-primitive/badge/index.tsx +1 -0
  132. package/template/src/admin/components/tiptap-ui-primitive/button/button-colors.scss +613 -0
  133. package/template/src/admin/components/tiptap-ui-primitive/button/button.scss +390 -0
  134. package/template/src/admin/components/tiptap-ui-primitive/button/button.tsx +158 -0
  135. package/template/src/admin/components/tiptap-ui-primitive/button/index.tsx +1 -0
  136. package/template/src/admin/components/tiptap-ui-primitive/button-group/button-group.scss +89 -0
  137. package/template/src/admin/components/tiptap-ui-primitive/button-group/button-group.tsx +72 -0
  138. package/template/src/admin/components/tiptap-ui-primitive/button-group/index.tsx +1 -0
  139. package/template/src/admin/components/tiptap-ui-primitive/card/card.scss +74 -0
  140. package/template/src/admin/components/tiptap-ui-primitive/card/card.tsx +79 -0
  141. package/template/src/admin/components/tiptap-ui-primitive/card/index.tsx +1 -0
  142. package/template/src/admin/components/tiptap-ui-primitive/dropdown-menu/dropdown-menu.scss +152 -0
  143. package/template/src/admin/components/tiptap-ui-primitive/dropdown-menu/dropdown-menu.tsx +262 -0
  144. package/template/src/admin/components/tiptap-ui-primitive/dropdown-menu/index.tsx +1 -0
  145. package/template/src/admin/components/tiptap-ui-primitive/input/index.tsx +1 -0
  146. package/template/src/admin/components/tiptap-ui-primitive/input/input.scss +41 -0
  147. package/template/src/admin/components/tiptap-ui-primitive/input/input.tsx +22 -0
  148. package/template/src/admin/components/tiptap-ui-primitive/input-group/index.tsx +1 -0
  149. package/template/src/admin/components/tiptap-ui-primitive/input-group/input-group.scss +225 -0
  150. package/template/src/admin/components/tiptap-ui-primitive/input-group/input-group.tsx +135 -0
  151. package/template/src/admin/components/tiptap-ui-primitive/popover/index.tsx +1 -0
  152. package/template/src/admin/components/tiptap-ui-primitive/popover/popover.scss +64 -0
  153. package/template/src/admin/components/tiptap-ui-primitive/popover/popover.tsx +35 -0
  154. package/template/src/admin/components/tiptap-ui-primitive/separator/index.tsx +1 -0
  155. package/template/src/admin/components/tiptap-ui-primitive/separator/separator.scss +23 -0
  156. package/template/src/admin/components/tiptap-ui-primitive/separator/separator.tsx +28 -0
  157. package/template/src/admin/components/tiptap-ui-primitive/spacer/index.tsx +1 -0
  158. package/template/src/admin/components/tiptap-ui-primitive/spacer/spacer.tsx +24 -0
  159. package/template/src/admin/components/tiptap-ui-primitive/switch/index.tsx +1 -0
  160. package/template/src/admin/components/tiptap-ui-primitive/switch/switch.scss +86 -0
  161. package/template/src/admin/components/tiptap-ui-primitive/switch/switch.tsx +29 -0
  162. package/template/src/admin/components/tiptap-ui-primitive/textarea/index.tsx +1 -0
  163. package/template/src/admin/components/tiptap-ui-primitive/textarea/textarea.scss +42 -0
  164. package/template/src/admin/components/tiptap-ui-primitive/textarea/textarea.tsx +16 -0
  165. package/template/src/admin/components/tiptap-ui-primitive/toolbar/index.tsx +1 -0
  166. package/template/src/admin/components/tiptap-ui-primitive/toolbar/toolbar.scss +98 -0
  167. package/template/src/admin/components/tiptap-ui-primitive/toolbar/toolbar.tsx +203 -0
  168. package/template/src/admin/components/tiptap-ui-primitive/tooltip/index.tsx +1 -0
  169. package/template/src/admin/components/tiptap-ui-primitive/tooltip/tooltip.scss +43 -0
  170. package/template/src/admin/components/tiptap-ui-primitive/tooltip/tooltip.tsx +241 -0
  171. package/template/src/admin/hooks/use-composed-ref.ts +46 -0
  172. package/template/src/admin/hooks/use-cursor-visibility.ts +69 -0
  173. package/template/src/admin/hooks/use-element-rect.ts +166 -0
  174. package/template/src/admin/hooks/use-is-breakpoint.ts +35 -0
  175. package/template/src/admin/hooks/use-menu-navigation.ts +204 -0
  176. package/template/src/admin/hooks/use-scrolling.ts +75 -0
  177. package/template/src/admin/hooks/use-throttled-callback.ts +48 -0
  178. package/template/src/admin/hooks/use-tiptap-editor.ts +69 -0
  179. package/template/src/admin/hooks/use-unmount.ts +21 -0
  180. package/template/src/admin/hooks/use-window-size.ts +93 -0
  181. package/template/src/admin/html.ts +17 -0
  182. package/template/src/admin/lib/tiptap-utils.ts +652 -0
  183. package/template/src/admin/navigation-tree.tsx +82 -0
  184. package/template/src/admin/preview.ts +73 -0
  185. package/template/src/admin/styles/_cms-theme.scss +58 -0
  186. package/template/src/admin/styles/_keyframe-animations.scss +91 -0
  187. package/template/src/admin/styles/_variables.scss +298 -0
  188. package/template/src/assets/favicon.svg +1 -0
  189. package/template/src/assets/logo.svg +1 -0
  190. package/template/src/astro-env.d.ts +1 -0
  191. package/template/src/content.config.ts +12 -0
  192. package/template/src/db/bootstrap.ts +36 -0
  193. package/template/src/db/client.ts +7 -0
  194. package/template/src/db/schema.ts +45 -0
  195. package/template/src/documents/service.ts +178 -0
  196. package/template/src/documents/validation.ts +9 -0
  197. package/template/src/env.ts +9 -0
  198. package/template/src/index.ts +10 -0
  199. package/template/src/locales.ts +10 -0
  200. package/template/src/media/service.ts +120 -0
  201. package/template/src/navigation/service.ts +171 -0
  202. package/template/src/pages/[locale]/cms-preview-shell.astro +12 -0
  203. package/template/src/pages/cms-preview-shell.astro +5 -0
  204. package/template/src/publish/deploy-hook.ts +42 -0
  205. package/template/src/publish/record.ts +20 -0
  206. package/template/src/publish/service.ts +135 -0
  207. package/template/src/scss.d.ts +5 -0
  208. package/template/src/site.config.ts +7 -0
  209. package/template/src/sql.d.ts +4 -0
  210. package/template/src/starlight/cms-origin.ts +4 -0
  211. package/template/src/starlight/loader.ts +21 -0
  212. package/template/src/starlight/preview-render.ts +162 -0
  213. package/template/src/starlight/preview-shell.astro +14 -0
  214. package/template/src/starlight/render.ts +59 -0
  215. package/template/src/starlight/schema.ts +34 -0
  216. package/template/src/starlight/sidebar.ts +35 -0
  217. package/template/src/starlight/snapshot.ts +47 -0
  218. package/template/src/starlight/source.ts +26 -0
  219. package/template/src/starlight/tiptap.ts +29 -0
  220. package/template/src/styles/starlight.css +12 -0
  221. package/template/test-files/content.test.template.ts +82 -0
  222. package/template/test-files/deploy-hook.test.template.ts +32 -0
  223. package/template/test-files/media.test.template.ts +39 -0
  224. package/template/test-files/publishing.integration.test.template.ts +156 -0
  225. package/template/tsconfig.admin.json +18 -0
  226. package/template/tsconfig.json +23 -0
  227. package/template/worker-configuration.d.ts +15389 -0
  228. package/template/wrangler.jsonc +26 -0
@@ -0,0 +1,150 @@
1
+ import type { NodeWithPos } from "@tiptap/core"
2
+ import { Extension } from "@tiptap/core"
3
+ import type { EditorState, Transaction } from "@tiptap/pm/state"
4
+ import { getSelectedNodesOfType } from "@/lib/tiptap-utils"
5
+ import { updateNodesAttr } from "@/lib/tiptap-utils"
6
+
7
+ declare module "@tiptap/core" {
8
+ interface Commands<ReturnType> {
9
+ nodeBackground: {
10
+ setNodeBackgroundColor: (backgroundColor: string) => ReturnType
11
+ unsetNodeBackgroundColor: () => ReturnType
12
+ toggleNodeBackgroundColor: (backgroundColor: string) => ReturnType
13
+ }
14
+ }
15
+ }
16
+
17
+ export interface NodeBackgroundOptions {
18
+ /**
19
+ * Node types that should support background colors
20
+ * @default ["paragraph", "heading", "blockquote", "taskList", "bulletList", "orderedList", "tableCell", "tableHeader"]
21
+ */
22
+ types: string[]
23
+ /**
24
+ * Use inline style instead of data attribute
25
+ * @default true
26
+ */
27
+ useStyle?: boolean
28
+ }
29
+
30
+ /**
31
+ * Determines the target color for toggle operations
32
+ */
33
+ function getToggleColor(
34
+ targets: NodeWithPos[],
35
+ inputColor: string
36
+ ): string | null {
37
+ if (targets.length === 0) return null
38
+
39
+ for (const target of targets) {
40
+ const currentColor = target.node.attrs?.backgroundColor ?? null
41
+ if (currentColor !== inputColor) {
42
+ return inputColor
43
+ }
44
+ }
45
+
46
+ return null
47
+ }
48
+
49
+ export const NodeBackground = Extension.create<NodeBackgroundOptions>({
50
+ name: "nodeBackground",
51
+
52
+ addOptions() {
53
+ return {
54
+ types: [
55
+ "paragraph",
56
+ "heading",
57
+ "blockquote",
58
+ "taskList",
59
+ "bulletList",
60
+ "orderedList",
61
+ "tableCell",
62
+ "tableHeader",
63
+ ],
64
+ useStyle: true,
65
+ }
66
+ },
67
+
68
+ addGlobalAttributes() {
69
+ return [
70
+ {
71
+ types: this.options.types,
72
+ attributes: {
73
+ backgroundColor: {
74
+ default: null as string | null,
75
+
76
+ parseHTML: (element: HTMLElement) => {
77
+ const styleColor = element.style?.backgroundColor
78
+ if (styleColor) return styleColor
79
+
80
+ const dataColor = element.getAttribute("data-background-color")
81
+ return dataColor || null
82
+ },
83
+
84
+ renderHTML: (attributes) => {
85
+ const color = attributes.backgroundColor as string | null
86
+ if (!color) return {}
87
+
88
+ if (this.options.useStyle) {
89
+ return {
90
+ style: `background-color: ${color}`,
91
+ }
92
+ } else {
93
+ return {
94
+ "data-background-color": color,
95
+ }
96
+ }
97
+ },
98
+ },
99
+ },
100
+ },
101
+ ]
102
+ },
103
+
104
+ addCommands() {
105
+ /**
106
+ * Generic command executor for background color operations
107
+ */
108
+ const executeBackgroundCommand = (
109
+ getTargetColor: (
110
+ targets: NodeWithPos[],
111
+ inputColor?: string
112
+ ) => string | null
113
+ ) => {
114
+ return (inputColor?: string) =>
115
+ ({ state, tr }: { state: EditorState; tr: Transaction }) => {
116
+ const targets = getSelectedNodesOfType(
117
+ state.selection,
118
+ this.options.types
119
+ )
120
+
121
+ if (targets.length === 0) return false
122
+
123
+ const targetColor = getTargetColor(targets, inputColor)
124
+
125
+ return updateNodesAttr(tr, targets, "backgroundColor", targetColor)
126
+ }
127
+ }
128
+
129
+ return {
130
+ /**
131
+ * Set background color to specific value
132
+ */
133
+ setNodeBackgroundColor: executeBackgroundCommand(
134
+ (_, inputColor) => inputColor || null
135
+ ),
136
+
137
+ /**
138
+ * Remove background color
139
+ */
140
+ unsetNodeBackgroundColor: executeBackgroundCommand(() => null),
141
+
142
+ /**
143
+ * Toggle background color (set if different/missing, unset if all have it)
144
+ */
145
+ toggleNodeBackgroundColor: executeBackgroundCommand(
146
+ (targets, inputColor) => getToggleColor(targets, inputColor || "")
147
+ ),
148
+ }
149
+ },
150
+ })
@@ -0,0 +1,38 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const AlignCenterIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M2 6C2 5.44772 2.44772 5 3 5H21C21.5523 5 22 5.44772 22 6C22 6.55228 21.5523 7 21 7H3C2.44772 7 2 6.55228 2 6Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ fillRule="evenodd"
24
+ clipRule="evenodd"
25
+ d="M6 12C6 11.4477 6.44772 11 7 11H17C17.5523 11 18 11.4477 18 12C18 12.5523 17.5523 13 17 13H7C6.44772 13 6 12.5523 6 12Z"
26
+ fill="currentColor"
27
+ />
28
+ <path
29
+ fillRule="evenodd"
30
+ clipRule="evenodd"
31
+ d="M4 18C4 17.4477 4.44772 17 5 17H19C19.5523 17 20 17.4477 20 18C20 18.5523 19.5523 19 19 19H5C4.44772 19 4 18.5523 4 18Z"
32
+ fill="currentColor"
33
+ />
34
+ </svg>
35
+ )
36
+ })
37
+
38
+ AlignCenterIcon.displayName = "AlignCenterIcon"
@@ -0,0 +1,38 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const AlignJustifyIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M2 6C2 5.44772 2.44772 5 3 5H21C21.5523 5 22 5.44772 22 6C22 6.55228 21.5523 7 21 7H3C2.44772 7 2 6.55228 2 6Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ fillRule="evenodd"
24
+ clipRule="evenodd"
25
+ d="M2 12C2 11.4477 2.44772 11 3 11H21C21.5523 11 22 11.4477 22 12C22 12.5523 21.5523 13 21 13H3C2.44772 13 2 12.5523 2 12Z"
26
+ fill="currentColor"
27
+ />
28
+ <path
29
+ fillRule="evenodd"
30
+ clipRule="evenodd"
31
+ d="M2 18C2 17.4477 2.44772 17 3 17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19H3C2.44772 19 2 18.5523 2 18Z"
32
+ fill="currentColor"
33
+ />
34
+ </svg>
35
+ )
36
+ })
37
+
38
+ AlignJustifyIcon.displayName = "AlignJustifyIcon"
@@ -0,0 +1,38 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const AlignLeftIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M2 6C2 5.44772 2.44772 5 3 5H21C21.5523 5 22 5.44772 22 6C22 6.55228 21.5523 7 21 7H3C2.44772 7 2 6.55228 2 6Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ fillRule="evenodd"
24
+ clipRule="evenodd"
25
+ d="M2 12C2 11.4477 2.44772 11 3 11H15C15.5523 11 16 11.4477 16 12C16 12.5523 15.5523 13 15 13H3C2.44772 13 2 12.5523 2 12Z"
26
+ fill="currentColor"
27
+ />
28
+ <path
29
+ fillRule="evenodd"
30
+ clipRule="evenodd"
31
+ d="M2 18C2 17.4477 2.44772 17 3 17H17C17.5523 17 18 17.4477 18 18C18 18.5523 17.5523 19 17 19H3C2.44772 19 2 18.5523 2 18Z"
32
+ fill="currentColor"
33
+ />
34
+ </svg>
35
+ )
36
+ })
37
+
38
+ AlignLeftIcon.displayName = "AlignLeftIcon"
@@ -0,0 +1,38 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const AlignRightIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M2 6C2 5.44772 2.44772 5 3 5H21C21.5523 5 22 5.44772 22 6C22 6.55228 21.5523 7 21 7H3C2.44772 7 2 6.55228 2 6Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ fillRule="evenodd"
24
+ clipRule="evenodd"
25
+ d="M8 12C8 11.4477 8.44772 11 9 11H21C21.5523 11 22 11.4477 22 12C22 12.5523 21.5523 13 21 13H9C8.44772 13 8 12.5523 8 12Z"
26
+ fill="currentColor"
27
+ />
28
+ <path
29
+ fillRule="evenodd"
30
+ clipRule="evenodd"
31
+ d="M6 18C6 17.4477 6.44772 17 7 17H21C21.5523 17 22 17.4477 22 18C22 18.5523 21.5523 19 21 19H7C6.44772 19 6 18.5523 6 18Z"
32
+ fill="currentColor"
33
+ />
34
+ </svg>
35
+ )
36
+ })
37
+
38
+ AlignRightIcon.displayName = "AlignRightIcon"
@@ -0,0 +1,24 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const ArrowLeftIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ d="M12.7071 5.70711C13.0976 5.31658 13.0976 4.68342 12.7071 4.29289C12.3166 3.90237 11.6834 3.90237 11.2929 4.29289L4.29289 11.2929C3.90237 11.6834 3.90237 12.3166 4.29289 12.7071L11.2929 19.7071C11.6834 20.0976 12.3166 20.0976 12.7071 19.7071C13.0976 19.3166 13.0976 18.6834 12.7071 18.2929L7.41421 13L19 13C19.5523 13 20 12.5523 20 12C20 11.4477 19.5523 11 19 11L7.41421 11L12.7071 5.70711Z"
18
+ fill="currentColor"
19
+ />
20
+ </svg>
21
+ )
22
+ })
23
+
24
+ ArrowLeftIcon.displayName = "ArrowLeftIcon"
@@ -0,0 +1,26 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const ArrowRightIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M12.7071 4.29289C12.3166 3.90237 11.6834 3.90237 11.2929 4.29289C10.9024 4.68342 10.9024 5.31658 11.2929 5.70711L16.5858 11H5C4.44772 11 4 11.4477 4 12C4 12.5523 4.44772 13 5 13H16.5858L11.2929 18.2929C10.9024 18.6834 10.9024 19.3166 11.2929 19.7071C11.6834 20.0976 12.3166 20.0976 12.7071 19.7071L19.7071 12.7071C20.0976 12.3166 20.0976 11.6834 19.7071 11.2929L12.7071 4.29289Z"
20
+ fill="currentColor"
21
+ />
22
+ </svg>
23
+ )
24
+ })
25
+
26
+ ArrowRightIcon.displayName = "ArrowRightIcon"
@@ -0,0 +1,26 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const BanIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M4.43471 4.01458C4.34773 4.06032 4.26607 4.11977 4.19292 4.19292C4.11977 4.26607 4.06032 4.34773 4.01458 4.43471C2.14611 6.40628 1 9.0693 1 12C1 18.0751 5.92487 23 12 23C14.9306 23 17.5936 21.854 19.5651 19.9856C19.6522 19.9398 19.7339 19.8803 19.8071 19.8071C19.8803 19.7339 19.9398 19.6522 19.9856 19.5651C21.854 17.5936 23 14.9306 23 12C23 5.92487 18.0751 1 12 1C9.0693 1 6.40628 2.14611 4.43471 4.01458ZM6.38231 4.9681C7.92199 3.73647 9.87499 3 12 3C16.9706 3 21 7.02944 21 12C21 14.125 20.2635 16.078 19.0319 17.6177L6.38231 4.9681ZM17.6177 19.0319C16.078 20.2635 14.125 21 12 21C7.02944 21 3 16.9706 3 12C3 9.87499 3.73647 7.92199 4.9681 6.38231L17.6177 19.0319Z"
20
+ fill="currentColor"
21
+ />
22
+ </svg>
23
+ )
24
+ })
25
+
26
+ BanIcon.displayName = "BanIcon"
@@ -0,0 +1,44 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const BlockquoteIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M8 6C8 5.44772 8.44772 5 9 5H16C16.5523 5 17 5.44772 17 6C17 6.55228 16.5523 7 16 7H9C8.44772 7 8 6.55228 8 6Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ fillRule="evenodd"
24
+ clipRule="evenodd"
25
+ d="M4 3C4.55228 3 5 3.44772 5 4L5 20C5 20.5523 4.55229 21 4 21C3.44772 21 3 20.5523 3 20L3 4C3 3.44772 3.44772 3 4 3Z"
26
+ fill="currentColor"
27
+ />
28
+ <path
29
+ fillRule="evenodd"
30
+ clipRule="evenodd"
31
+ d="M8 12C8 11.4477 8.44772 11 9 11H20C20.5523 11 21 11.4477 21 12C21 12.5523 20.5523 13 20 13H9C8.44772 13 8 12.5523 8 12Z"
32
+ fill="currentColor"
33
+ />
34
+ <path
35
+ fillRule="evenodd"
36
+ clipRule="evenodd"
37
+ d="M8 18C8 17.4477 8.44772 17 9 17H16C16.5523 17 17 17.4477 17 18C17 18.5523 16.5523 19 16 19H9C8.44772 19 8 18.5523 8 18Z"
38
+ fill="currentColor"
39
+ />
40
+ </svg>
41
+ )
42
+ })
43
+
44
+ BlockquoteIcon.displayName = "BlockquoteIcon"
@@ -0,0 +1,26 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const BoldIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M6 2.5C5.17157 2.5 4.5 3.17157 4.5 4V20C4.5 20.8284 5.17157 21.5 6 21.5H15C16.4587 21.5 17.8576 20.9205 18.8891 19.8891C19.9205 18.8576 20.5 17.4587 20.5 16C20.5 14.5413 19.9205 13.1424 18.8891 12.1109C18.6781 11.9 18.4518 11.7079 18.2128 11.5359C19.041 10.5492 19.5 9.29829 19.5 8C19.5 6.54131 18.9205 5.14236 17.8891 4.11091C16.8576 3.07946 15.4587 2.5 14 2.5H6ZM14 10.5C14.663 10.5 15.2989 10.2366 15.7678 9.76777C16.2366 9.29893 16.5 8.66304 16.5 8C16.5 7.33696 16.2366 6.70107 15.7678 6.23223C15.2989 5.76339 14.663 5.5 14 5.5H7.5V10.5H14ZM7.5 18.5V13.5H15C15.663 13.5 16.2989 13.7634 16.7678 14.2322C17.2366 14.7011 17.5 15.337 17.5 16C17.5 16.663 17.2366 17.2989 16.7678 17.7678C16.2989 18.2366 15.663 18.5 15 18.5H7.5Z"
20
+ fill="currentColor"
21
+ />
22
+ </svg>
23
+ )
24
+ })
25
+
26
+ BoldIcon.displayName = "BoldIcon"
@@ -0,0 +1,32 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const CaseSensitiveIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M6.61132 5.00586C6.86822 5.02489 7.11659 5.11042 7.33202 5.25391C7.57828 5.41804 7.7708 5.65169 7.88476 5.9248L11.9228 15.6152C12.1351 16.1249 11.8944 16.7104 11.3848 16.9229C10.875 17.1353 10.2896 16.8936 10.0771 16.3838L9.08397 14H3.91698L2.92284 16.3848C2.7102 16.8942 2.12483 17.1352 1.61522 16.9229C1.10565 16.7104 0.86489 16.1249 1.07714 15.6152L5.1162 5.9248L5.1621 5.82422C5.27859 5.5943 5.45343 5.39755 5.66894 5.25391L5.76269 5.19629C5.98724 5.06944 6.24182 5.00195 6.50097 5.00195L6.61132 5.00586ZM4.74999 12H8.24999L6.49999 7.80078L4.74999 12Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ fillRule="evenodd"
24
+ clipRule="evenodd"
25
+ d="M22 8C22.5523 8.00001 23 8.44772 23 9V16C23 16.5523 22.5523 17 22 17C21.5246 17 21.127 16.6682 21.0254 16.2236C20.3052 16.713 19.4363 17 18.5 17C16.0147 17 14 14.9853 14 12.5C14 10.0147 16.0147 8 18.5 8C19.4361 8 20.3053 8.2862 21.0254 8.77539C21.1273 8.33127 21.5249 8 22 8ZM18.5 10C17.1193 10 16 11.1193 16 12.5C16 13.8807 17.1193 15 18.5 15C19.8807 15 21 13.8807 21 12.5C21 11.1193 19.8807 10 18.5 10Z"
26
+ fill="currentColor"
27
+ />
28
+ </svg>
29
+ )
30
+ })
31
+
32
+ CaseSensitiveIcon.displayName = "CaseSensitiveIcon"
@@ -0,0 +1,26 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const CheckIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M20.7071 5.29289C21.0976 5.68342 21.0976 6.31658 20.7071 6.70711L9.70711 17.7071C9.31658 18.0976 8.68342 18.0976 8.29289 17.7071L3.29289 12.7071C2.90237 12.3166 2.90237 11.6834 3.29289 11.2929C3.68342 10.9024 4.31658 10.9024 4.70711 11.2929L9 15.5858L19.2929 5.29289C19.6834 4.90237 20.3166 4.90237 20.7071 5.29289Z"
20
+ fill="currentColor"
21
+ />
22
+ </svg>
23
+ )
24
+ })
25
+
26
+ CheckIcon.displayName = "CheckIcon"
@@ -0,0 +1,26 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const ChevronDownIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M5.29289 8.29289C5.68342 7.90237 6.31658 7.90237 6.70711 8.29289L12 13.5858L17.2929 8.29289C17.6834 7.90237 18.3166 7.90237 18.7071 8.29289C19.0976 8.68342 19.0976 9.31658 18.7071 9.70711L12.7071 15.7071C12.3166 16.0976 11.6834 16.0976 11.2929 15.7071L5.29289 9.70711C4.90237 9.31658 4.90237 8.68342 5.29289 8.29289Z"
20
+ fill="currentColor"
21
+ />
22
+ </svg>
23
+ )
24
+ })
25
+
26
+ ChevronDownIcon.displayName = "ChevronDownIcon"
@@ -0,0 +1,22 @@
1
+ import { memo } from "react"
2
+ import { ChevronDownIcon } from "@/components/tiptap-icons/chevron-down-icon"
3
+
4
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
5
+
6
+ export const ChevronUpIcon = memo(
7
+ ({ className, style, ...props }: SvgProps) => {
8
+ return (
9
+ <ChevronDownIcon
10
+ className={className}
11
+ style={{
12
+ transform: "rotate(180deg)",
13
+ transformOrigin: "50% 50%",
14
+ ...style,
15
+ }}
16
+ {...props}
17
+ />
18
+ )
19
+ }
20
+ )
21
+
22
+ ChevronUpIcon.displayName = "ChevronUpIcon"
@@ -0,0 +1,24 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const CloseIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ d="M18.7071 6.70711C19.0976 6.31658 19.0976 5.68342 18.7071 5.29289C18.3166 4.90237 17.6834 4.90237 17.2929 5.29289L12 10.5858L6.70711 5.29289C6.31658 4.90237 5.68342 4.90237 5.29289 5.29289C4.90237 5.68342 4.90237 6.31658 5.29289 6.70711L10.5858 12L5.29289 17.2929C4.90237 17.6834 4.90237 18.3166 5.29289 18.7071C5.68342 19.0976 6.31658 19.0976 6.70711 18.7071L12 13.4142L17.2929 18.7071C17.6834 19.0976 18.3166 19.0976 18.7071 18.7071C19.0976 18.3166 19.0976 17.6834 18.7071 17.2929L13.4142 12L18.7071 6.70711Z"
18
+ fill="currentColor"
19
+ />
20
+ </svg>
21
+ )
22
+ })
23
+
24
+ CloseIcon.displayName = "CloseIcon"
@@ -0,0 +1,38 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const CodeBlockIcon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ fillRule="evenodd"
18
+ clipRule="evenodd"
19
+ d="M6.70711 2.29289C7.09763 2.68342 7.09763 3.31658 6.70711 3.70711L4.41421 6L6.70711 8.29289C7.09763 8.68342 7.09763 9.31658 6.70711 9.70711C6.31658 10.0976 5.68342 10.0976 5.29289 9.70711L2.29289 6.70711C1.90237 6.31658 1.90237 5.68342 2.29289 5.29289L5.29289 2.29289C5.68342 1.90237 6.31658 1.90237 6.70711 2.29289Z"
20
+ fill="currentColor"
21
+ />
22
+ <path
23
+ fillRule="evenodd"
24
+ clipRule="evenodd"
25
+ d="M10.2929 2.29289C10.6834 1.90237 11.3166 1.90237 11.7071 2.29289L14.7071 5.29289C15.0976 5.68342 15.0976 6.31658 14.7071 6.70711L11.7071 9.70711C11.3166 10.0976 10.6834 10.0976 10.2929 9.70711C9.90237 9.31658 9.90237 8.68342 10.2929 8.29289L12.5858 6L10.2929 3.70711C9.90237 3.31658 9.90237 2.68342 10.2929 2.29289Z"
26
+ fill="currentColor"
27
+ />
28
+ <path
29
+ fillRule="evenodd"
30
+ clipRule="evenodd"
31
+ d="M17 4C17 3.44772 17.4477 3 18 3H19C20.6569 3 22 4.34315 22 6V18C22 19.6569 20.6569 21 19 21H5C3.34315 21 2 19.6569 2 18V12C2 11.4477 2.44772 11 3 11C3.55228 11 4 11.4477 4 12V18C4 18.5523 4.44772 19 5 19H19C19.5523 19 20 18.5523 20 18V6C20 5.44772 19.5523 5 19 5H18C17.4477 5 17 4.55228 17 4Z"
32
+ fill="currentColor"
33
+ />
34
+ </svg>
35
+ )
36
+ })
37
+
38
+ CodeBlockIcon.displayName = "CodeBlockIcon"
@@ -0,0 +1,32 @@
1
+ import { memo } from "react"
2
+
3
+ type SvgProps = React.ComponentPropsWithoutRef<"svg">
4
+
5
+ export const Code2Icon = memo(({ className, ...props }: SvgProps) => {
6
+ return (
7
+ <svg
8
+ width="24"
9
+ height="24"
10
+ className={className}
11
+ viewBox="0 0 24 24"
12
+ fill="currentColor"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ {...props}
15
+ >
16
+ <path
17
+ d="M15.4545 4.2983C15.6192 3.77115 15.3254 3.21028 14.7983 3.04554C14.2712 2.88081 13.7103 3.1746 13.5455 3.70175L8.54554 19.7017C8.38081 20.2289 8.6746 20.7898 9.20175 20.9545C9.72889 21.1192 10.2898 20.8254 10.4545 20.2983L15.4545 4.2983Z"
18
+ fill="currentColor"
19
+ />
20
+ <path
21
+ d="M6.70711 7.29289C7.09763 7.68342 7.09763 8.31658 6.70711 8.70711L3.41421 12L6.70711 15.2929C7.09763 15.6834 7.09763 16.3166 6.70711 16.7071C6.31658 17.0976 5.68342 17.0976 5.29289 16.7071L1.29289 12.7071C0.902369 12.3166 0.902369 11.6834 1.29289 11.2929L5.29289 7.29289C5.68342 6.90237 6.31658 6.90237 6.70711 7.29289Z"
22
+ fill="currentColor"
23
+ />
24
+ <path
25
+ d="M17.2929 7.29289C17.6834 6.90237 18.3166 6.90237 18.7071 7.29289L22.7071 11.2929C23.0976 11.6834 23.0976 12.3166 22.7071 12.7071L18.7071 16.7071C18.3166 17.0976 17.6834 17.0976 17.2929 16.7071C16.9024 16.3166 16.9024 15.6834 17.2929 15.2929L20.5858 12L17.2929 8.70711C16.9024 8.31658 16.9024 7.68342 17.2929 7.29289Z"
26
+ fill="currentColor"
27
+ />
28
+ </svg>
29
+ )
30
+ })
31
+
32
+ Code2Icon.displayName = "Code2Icon"