@antigenic-oss/paint 0.1.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 (158) hide show
  1. package/LICENSE +178 -0
  2. package/NOTICE +4 -0
  3. package/README.md +180 -0
  4. package/bin/paint.js +266 -0
  5. package/next-env.d.ts +6 -0
  6. package/next.config.ts +19 -0
  7. package/package.json +81 -0
  8. package/postcss.config.mjs +8 -0
  9. package/public/dev-editor-inspector.js +1872 -0
  10. package/src/app/api/claude/analyze/route.ts +319 -0
  11. package/src/app/api/claude/apply/route.ts +185 -0
  12. package/src/app/api/claude/pick-folder/route.ts +64 -0
  13. package/src/app/api/claude/scan/route.ts +221 -0
  14. package/src/app/api/claude/status/route.ts +55 -0
  15. package/src/app/api/project/scan/route.ts +634 -0
  16. package/src/app/api/project-scan/css-variables/route.ts +238 -0
  17. package/src/app/api/project-scan/route.ts +40 -0
  18. package/src/app/api/project-scan/tailwind-config/route.ts +172 -0
  19. package/src/app/api/proxy/[[...path]]/route.ts +2400 -0
  20. package/src/app/docs/DocsClient.tsx +322 -0
  21. package/src/app/docs/layout.tsx +7 -0
  22. package/src/app/docs/page.tsx +855 -0
  23. package/src/app/globals.css +176 -0
  24. package/src/app/layout.tsx +19 -0
  25. package/src/app/page.tsx +46 -0
  26. package/src/bridge/api-handlers.ts +885 -0
  27. package/src/bridge/proxy-handler.ts +329 -0
  28. package/src/bridge/server.ts +113 -0
  29. package/src/components/BreakpointTabs.tsx +72 -0
  30. package/src/components/ChangeSummaryModal.tsx +267 -0
  31. package/src/components/ConnectModal.tsx +994 -0
  32. package/src/components/Editor.tsx +90 -0
  33. package/src/components/PageSelector.tsx +208 -0
  34. package/src/components/PreviewFrame.tsx +299 -0
  35. package/src/components/ProjectFolderBanner.tsx +91 -0
  36. package/src/components/ResponsiveToolbar.tsx +222 -0
  37. package/src/components/TargetSelector.tsx +243 -0
  38. package/src/components/TopBar.tsx +315 -0
  39. package/src/components/common/CollapsibleSection.tsx +36 -0
  40. package/src/components/common/ColorPicker.tsx +920 -0
  41. package/src/components/common/EditablePre.tsx +136 -0
  42. package/src/components/common/ErrorBoundary.tsx +65 -0
  43. package/src/components/common/ResizablePanel.tsx +83 -0
  44. package/src/components/common/ScanAnimation.tsx +76 -0
  45. package/src/components/common/ToastContainer.tsx +97 -0
  46. package/src/components/common/UnitInput.tsx +77 -0
  47. package/src/components/common/VariableColorPicker.tsx +622 -0
  48. package/src/components/left-panel/AddElementPanel.tsx +237 -0
  49. package/src/components/left-panel/ComponentsPanel.tsx +609 -0
  50. package/src/components/left-panel/IconSidebar.tsx +99 -0
  51. package/src/components/left-panel/LayerNode.tsx +874 -0
  52. package/src/components/left-panel/LayerSearch.tsx +23 -0
  53. package/src/components/left-panel/LayersPanel.tsx +52 -0
  54. package/src/components/left-panel/LeftPanel.tsx +122 -0
  55. package/src/components/left-panel/PagesPanel.tsx +114 -0
  56. package/src/components/left-panel/icons.tsx +162 -0
  57. package/src/components/left-panel/terminal/ScanOverlay.tsx +66 -0
  58. package/src/components/left-panel/terminal/TerminalPanel.tsx +217 -0
  59. package/src/components/right-panel/ElementLogBox.tsx +248 -0
  60. package/src/components/right-panel/PanelTabs.tsx +83 -0
  61. package/src/components/right-panel/RightPanel.tsx +41 -0
  62. package/src/components/right-panel/changes/AiScanResultPanel.tsx +285 -0
  63. package/src/components/right-panel/changes/ChangeEntry.tsx +59 -0
  64. package/src/components/right-panel/changes/ChangelogActions.tsx +105 -0
  65. package/src/components/right-panel/changes/ChangesPanel.tsx +1474 -0
  66. package/src/components/right-panel/claude/ApplyConfirmModal.tsx +376 -0
  67. package/src/components/right-panel/claude/ClaudeErrorState.tsx +125 -0
  68. package/src/components/right-panel/claude/ClaudeIntegrationPanel.tsx +482 -0
  69. package/src/components/right-panel/claude/ClaudeProgressIndicator.tsx +76 -0
  70. package/src/components/right-panel/claude/DiffCard.tsx +130 -0
  71. package/src/components/right-panel/claude/DiffViewer.tsx +54 -0
  72. package/src/components/right-panel/claude/ProjectRootSelector.tsx +275 -0
  73. package/src/components/right-panel/claude/ResultsSummary.tsx +119 -0
  74. package/src/components/right-panel/claude/SetupFlow.tsx +315 -0
  75. package/src/components/right-panel/console/ConsolePanel.tsx +209 -0
  76. package/src/components/right-panel/design/AppearanceSection.tsx +703 -0
  77. package/src/components/right-panel/design/BackgroundSection.tsx +516 -0
  78. package/src/components/right-panel/design/BorderSection.tsx +161 -0
  79. package/src/components/right-panel/design/CSSRawView.tsx +412 -0
  80. package/src/components/right-panel/design/DesignCSSTabToggle.tsx +51 -0
  81. package/src/components/right-panel/design/DesignPanel.tsx +275 -0
  82. package/src/components/right-panel/design/ElementBreadcrumb.tsx +51 -0
  83. package/src/components/right-panel/design/GradientEditor.tsx +726 -0
  84. package/src/components/right-panel/design/LayoutSection.tsx +1948 -0
  85. package/src/components/right-panel/design/PositionSection.tsx +865 -0
  86. package/src/components/right-panel/design/PropertiesSection.tsx +86 -0
  87. package/src/components/right-panel/design/SVGSection.tsx +361 -0
  88. package/src/components/right-panel/design/ShadowBlurSection.tsx +227 -0
  89. package/src/components/right-panel/design/SizeSection.tsx +183 -0
  90. package/src/components/right-panel/design/TextSection.tsx +719 -0
  91. package/src/components/right-panel/design/icons.tsx +948 -0
  92. package/src/components/right-panel/design/inputs/BoxModelPreview.tsx +467 -0
  93. package/src/components/right-panel/design/inputs/ColorInput.tsx +43 -0
  94. package/src/components/right-panel/design/inputs/CompactInput.tsx +333 -0
  95. package/src/components/right-panel/design/inputs/DraggableLabel.tsx +118 -0
  96. package/src/components/right-panel/design/inputs/IconToggleGroup.tsx +54 -0
  97. package/src/components/right-panel/design/inputs/LinkedInputPair.tsx +174 -0
  98. package/src/components/right-panel/design/inputs/SectionHeader.tsx +79 -0
  99. package/src/components/right-panel/variables/VariablesPanel.tsx +388 -0
  100. package/src/hooks/useBridge.ts +95 -0
  101. package/src/hooks/useChangeTracker.ts +563 -0
  102. package/src/hooks/useClaudeAPI.ts +118 -0
  103. package/src/hooks/useDOMTree.ts +25 -0
  104. package/src/hooks/useKeyboardShortcuts.ts +76 -0
  105. package/src/hooks/usePostMessage.ts +589 -0
  106. package/src/hooks/useProjectScan.ts +204 -0
  107. package/src/hooks/useResizable.ts +20 -0
  108. package/src/hooks/useSelectedElement.ts +51 -0
  109. package/src/hooks/useTargetUrl.ts +81 -0
  110. package/src/inspector/DOMTraverser.ts +71 -0
  111. package/src/inspector/ElementSelector.ts +23 -0
  112. package/src/inspector/HoverHighlighter.ts +54 -0
  113. package/src/inspector/SelectionHighlighter.ts +27 -0
  114. package/src/inspector/StyleExtractor.ts +19 -0
  115. package/src/inspector/inspector.ts +17 -0
  116. package/src/inspector/messaging.ts +30 -0
  117. package/src/lib/apiBase.ts +15 -0
  118. package/src/lib/classifyElement.ts +430 -0
  119. package/src/lib/claude-bin.ts +197 -0
  120. package/src/lib/claude-stream.ts +158 -0
  121. package/src/lib/clientProjectScanner.ts +344 -0
  122. package/src/lib/componentMatcher.ts +156 -0
  123. package/src/lib/constants.ts +573 -0
  124. package/src/lib/cssVariableUtils.ts +409 -0
  125. package/src/lib/diffParser.ts +206 -0
  126. package/src/lib/folderPicker.ts +84 -0
  127. package/src/lib/gradientParser.ts +160 -0
  128. package/src/lib/projectScanner.ts +355 -0
  129. package/src/lib/promptBuilder.ts +402 -0
  130. package/src/lib/shadowParser.ts +124 -0
  131. package/src/lib/tailwindClassParser.ts +248 -0
  132. package/src/lib/textShadowUtils.ts +106 -0
  133. package/src/lib/utils.ts +299 -0
  134. package/src/lib/validatePath.ts +40 -0
  135. package/src/proxy.ts +92 -0
  136. package/src/server/terminal-server.ts +104 -0
  137. package/src/store/changeSlice.ts +288 -0
  138. package/src/store/claudeSlice.ts +222 -0
  139. package/src/store/componentSlice.ts +90 -0
  140. package/src/store/consoleSlice.ts +51 -0
  141. package/src/store/cssVariableSlice.ts +94 -0
  142. package/src/store/elementSlice.ts +78 -0
  143. package/src/store/index.ts +35 -0
  144. package/src/store/terminalSlice.ts +30 -0
  145. package/src/store/treeSlice.ts +69 -0
  146. package/src/store/uiSlice.ts +327 -0
  147. package/src/types/changelog.ts +49 -0
  148. package/src/types/claude.ts +131 -0
  149. package/src/types/component.ts +49 -0
  150. package/src/types/cssVariables.ts +18 -0
  151. package/src/types/element.ts +21 -0
  152. package/src/types/file-system-access.d.ts +27 -0
  153. package/src/types/gradient.ts +12 -0
  154. package/src/types/messages.ts +392 -0
  155. package/src/types/shadow.ts +8 -0
  156. package/src/types/tree.ts +9 -0
  157. package/tsconfig.json +42 -0
  158. package/tsconfig.server.json +12 -0
@@ -0,0 +1,948 @@
1
+ import React from 'react'
2
+
3
+ export function FlexRowIcon(props: React.SVGProps<SVGSVGElement>) {
4
+ return (
5
+ <svg
6
+ width={14}
7
+ height={14}
8
+ viewBox="0 0 14 14"
9
+ fill="none"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ {...props}
12
+ >
13
+ <path
14
+ d="M2 7h10M9 4l3 3-3 3"
15
+ stroke="currentColor"
16
+ strokeWidth={1.5}
17
+ strokeLinecap="round"
18
+ strokeLinejoin="round"
19
+ />
20
+ </svg>
21
+ )
22
+ }
23
+
24
+ export function FlexColIcon(props: React.SVGProps<SVGSVGElement>) {
25
+ return (
26
+ <svg
27
+ width={14}
28
+ height={14}
29
+ viewBox="0 0 14 14"
30
+ fill="none"
31
+ xmlns="http://www.w3.org/2000/svg"
32
+ {...props}
33
+ >
34
+ <path
35
+ d="M7 2v10M4 9l3 3 3-3"
36
+ stroke="currentColor"
37
+ strokeWidth={1.5}
38
+ strokeLinecap="round"
39
+ strokeLinejoin="round"
40
+ />
41
+ </svg>
42
+ )
43
+ }
44
+
45
+ export function GridIcon(props: React.SVGProps<SVGSVGElement>) {
46
+ return (
47
+ <svg
48
+ width={14}
49
+ height={14}
50
+ viewBox="0 0 14 14"
51
+ fill="none"
52
+ xmlns="http://www.w3.org/2000/svg"
53
+ {...props}
54
+ >
55
+ <rect
56
+ x={2}
57
+ y={2}
58
+ width={4}
59
+ height={4}
60
+ rx={0.5}
61
+ stroke="currentColor"
62
+ strokeWidth={1.2}
63
+ />
64
+ <rect
65
+ x={8}
66
+ y={2}
67
+ width={4}
68
+ height={4}
69
+ rx={0.5}
70
+ stroke="currentColor"
71
+ strokeWidth={1.2}
72
+ />
73
+ <rect
74
+ x={2}
75
+ y={8}
76
+ width={4}
77
+ height={4}
78
+ rx={0.5}
79
+ stroke="currentColor"
80
+ strokeWidth={1.2}
81
+ />
82
+ <rect
83
+ x={8}
84
+ y={8}
85
+ width={4}
86
+ height={4}
87
+ rx={0.5}
88
+ stroke="currentColor"
89
+ strokeWidth={1.2}
90
+ />
91
+ </svg>
92
+ )
93
+ }
94
+
95
+ export function BlockIcon(props: React.SVGProps<SVGSVGElement>) {
96
+ return (
97
+ <svg
98
+ width={14}
99
+ height={14}
100
+ viewBox="0 0 14 14"
101
+ fill="none"
102
+ xmlns="http://www.w3.org/2000/svg"
103
+ {...props}
104
+ >
105
+ <rect x={2} y={3} width={10} height={8} rx={1} fill="currentColor" />
106
+ </svg>
107
+ )
108
+ }
109
+
110
+ export function InlineIcon(props: React.SVGProps<SVGSVGElement>) {
111
+ return (
112
+ <svg
113
+ width={14}
114
+ height={14}
115
+ viewBox="0 0 14 14"
116
+ fill="none"
117
+ xmlns="http://www.w3.org/2000/svg"
118
+ {...props}
119
+ >
120
+ <rect
121
+ x={1.5}
122
+ y={3}
123
+ width={4.5}
124
+ height={8}
125
+ rx={0.5}
126
+ stroke="currentColor"
127
+ strokeWidth={1.2}
128
+ />
129
+ <rect
130
+ x={8}
131
+ y={3}
132
+ width={4.5}
133
+ height={8}
134
+ rx={0.5}
135
+ stroke="currentColor"
136
+ strokeWidth={1.2}
137
+ />
138
+ </svg>
139
+ )
140
+ }
141
+
142
+ export function AlignLeftIcon(props: React.SVGProps<SVGSVGElement>) {
143
+ return (
144
+ <svg
145
+ width={14}
146
+ height={14}
147
+ viewBox="0 0 14 14"
148
+ fill="none"
149
+ xmlns="http://www.w3.org/2000/svg"
150
+ {...props}
151
+ >
152
+ <path
153
+ d="M2 3h8M2 7h5M2 11h8"
154
+ stroke="currentColor"
155
+ strokeWidth={1.5}
156
+ strokeLinecap="round"
157
+ />
158
+ </svg>
159
+ )
160
+ }
161
+
162
+ export function AlignCenterIcon(props: React.SVGProps<SVGSVGElement>) {
163
+ return (
164
+ <svg
165
+ width={14}
166
+ height={14}
167
+ viewBox="0 0 14 14"
168
+ fill="none"
169
+ xmlns="http://www.w3.org/2000/svg"
170
+ {...props}
171
+ >
172
+ <path
173
+ d="M3 3h8M4.5 7h5M3 11h8"
174
+ stroke="currentColor"
175
+ strokeWidth={1.5}
176
+ strokeLinecap="round"
177
+ />
178
+ </svg>
179
+ )
180
+ }
181
+
182
+ export function AlignRightIcon(props: React.SVGProps<SVGSVGElement>) {
183
+ return (
184
+ <svg
185
+ width={14}
186
+ height={14}
187
+ viewBox="0 0 14 14"
188
+ fill="none"
189
+ xmlns="http://www.w3.org/2000/svg"
190
+ {...props}
191
+ >
192
+ <path
193
+ d="M4 3h8M7 7h5M4 11h8"
194
+ stroke="currentColor"
195
+ strokeWidth={1.5}
196
+ strokeLinecap="round"
197
+ />
198
+ </svg>
199
+ )
200
+ }
201
+
202
+ export function AlignJustifyIcon(props: React.SVGProps<SVGSVGElement>) {
203
+ return (
204
+ <svg
205
+ width={14}
206
+ height={14}
207
+ viewBox="0 0 14 14"
208
+ fill="none"
209
+ xmlns="http://www.w3.org/2000/svg"
210
+ {...props}
211
+ >
212
+ <path
213
+ d="M2 3h10M2 7h10M2 11h10"
214
+ stroke="currentColor"
215
+ strokeWidth={1.5}
216
+ strokeLinecap="round"
217
+ />
218
+ </svg>
219
+ )
220
+ }
221
+
222
+ export function AlignTopIcon(props: React.SVGProps<SVGSVGElement>) {
223
+ return (
224
+ <svg
225
+ width={14}
226
+ height={14}
227
+ viewBox="0 0 14 14"
228
+ fill="none"
229
+ xmlns="http://www.w3.org/2000/svg"
230
+ {...props}
231
+ >
232
+ <path
233
+ d="M2 2h10"
234
+ stroke="currentColor"
235
+ strokeWidth={1.5}
236
+ strokeLinecap="round"
237
+ />
238
+ <path
239
+ d="M7 5v7M4.5 7.5L7 5l2.5 2.5"
240
+ stroke="currentColor"
241
+ strokeWidth={1.5}
242
+ strokeLinecap="round"
243
+ strokeLinejoin="round"
244
+ />
245
+ </svg>
246
+ )
247
+ }
248
+
249
+ export function AlignMiddleIcon(props: React.SVGProps<SVGSVGElement>) {
250
+ return (
251
+ <svg
252
+ width={14}
253
+ height={14}
254
+ viewBox="0 0 14 14"
255
+ fill="none"
256
+ xmlns="http://www.w3.org/2000/svg"
257
+ {...props}
258
+ >
259
+ <path
260
+ d="M7 1.5v4M5 3.5L7 1.5l2 2M7 12.5v-4M5 10.5l2 2 2-2"
261
+ stroke="currentColor"
262
+ strokeWidth={1.5}
263
+ strokeLinecap="round"
264
+ strokeLinejoin="round"
265
+ />
266
+ <path
267
+ d="M3 7h8"
268
+ stroke="currentColor"
269
+ strokeWidth={1.2}
270
+ strokeLinecap="round"
271
+ strokeDasharray="1.5 1.5"
272
+ />
273
+ </svg>
274
+ )
275
+ }
276
+
277
+ export function AlignBottomIcon(props: React.SVGProps<SVGSVGElement>) {
278
+ return (
279
+ <svg
280
+ width={14}
281
+ height={14}
282
+ viewBox="0 0 14 14"
283
+ fill="none"
284
+ xmlns="http://www.w3.org/2000/svg"
285
+ {...props}
286
+ >
287
+ <path
288
+ d="M2 12h10"
289
+ stroke="currentColor"
290
+ strokeWidth={1.5}
291
+ strokeLinecap="round"
292
+ />
293
+ <path
294
+ d="M7 9V2M4.5 6.5L7 9l2.5-2.5"
295
+ stroke="currentColor"
296
+ strokeWidth={1.5}
297
+ strokeLinecap="round"
298
+ strokeLinejoin="round"
299
+ />
300
+ </svg>
301
+ )
302
+ }
303
+
304
+ export function StaticIcon(props: React.SVGProps<SVGSVGElement>) {
305
+ return (
306
+ <svg
307
+ width={14}
308
+ height={14}
309
+ viewBox="0 0 14 14"
310
+ fill="none"
311
+ xmlns="http://www.w3.org/2000/svg"
312
+ {...props}
313
+ >
314
+ <path d="M7 2L5 6h4L7 2Z" fill="currentColor" />
315
+ <path
316
+ d="M7 6v5"
317
+ stroke="currentColor"
318
+ strokeWidth={1.5}
319
+ strokeLinecap="round"
320
+ />
321
+ <circle cx={7} cy={12} r={0.75} fill="currentColor" />
322
+ </svg>
323
+ )
324
+ }
325
+
326
+ export function RelativeIcon(props: React.SVGProps<SVGSVGElement>) {
327
+ return (
328
+ <svg
329
+ width={14}
330
+ height={14}
331
+ viewBox="0 0 14 14"
332
+ fill="none"
333
+ xmlns="http://www.w3.org/2000/svg"
334
+ {...props}
335
+ >
336
+ <rect
337
+ x={2}
338
+ y={2}
339
+ width={8}
340
+ height={8}
341
+ rx={0.5}
342
+ stroke="currentColor"
343
+ strokeWidth={1.2}
344
+ strokeDasharray="2 1.5"
345
+ />
346
+ <path
347
+ d="M10 8l2.5 2.5M10.5 10.5h2v-2"
348
+ stroke="currentColor"
349
+ strokeWidth={1.2}
350
+ strokeLinecap="round"
351
+ strokeLinejoin="round"
352
+ />
353
+ </svg>
354
+ )
355
+ }
356
+
357
+ export function AbsoluteIcon(props: React.SVGProps<SVGSVGElement>) {
358
+ return (
359
+ <svg
360
+ width={14}
361
+ height={14}
362
+ viewBox="0 0 14 14"
363
+ fill="none"
364
+ xmlns="http://www.w3.org/2000/svg"
365
+ {...props}
366
+ >
367
+ <circle cx={7} cy={7} r={5} stroke="currentColor" strokeWidth={1.2} />
368
+ <circle cx={7} cy={7} r={1} fill="currentColor" />
369
+ <path
370
+ d="M7 2v2M7 10v2M2 7h2M10 7h2"
371
+ stroke="currentColor"
372
+ strokeWidth={1.2}
373
+ strokeLinecap="round"
374
+ />
375
+ </svg>
376
+ )
377
+ }
378
+
379
+ export function FixedIcon(props: React.SVGProps<SVGSVGElement>) {
380
+ return (
381
+ <svg
382
+ width={14}
383
+ height={14}
384
+ viewBox="0 0 14 14"
385
+ fill="none"
386
+ xmlns="http://www.w3.org/2000/svg"
387
+ {...props}
388
+ >
389
+ <rect
390
+ x={4}
391
+ y={2}
392
+ width={6}
393
+ height={7}
394
+ rx={1}
395
+ stroke="currentColor"
396
+ strokeWidth={1.2}
397
+ />
398
+ <path
399
+ d="M7 9v3"
400
+ stroke="currentColor"
401
+ strokeWidth={1.5}
402
+ strokeLinecap="round"
403
+ />
404
+ <circle cx={7} cy={5.5} r={1.25} stroke="currentColor" strokeWidth={1} />
405
+ </svg>
406
+ )
407
+ }
408
+
409
+ export function StickyIcon(props: React.SVGProps<SVGSVGElement>) {
410
+ return (
411
+ <svg
412
+ width={14}
413
+ height={14}
414
+ viewBox="0 0 14 14"
415
+ fill="none"
416
+ xmlns="http://www.w3.org/2000/svg"
417
+ {...props}
418
+ >
419
+ <circle cx={7} cy={3.5} r={2} stroke="currentColor" strokeWidth={1.2} />
420
+ <path
421
+ d="M7 5.5v5"
422
+ stroke="currentColor"
423
+ strokeWidth={1.5}
424
+ strokeLinecap="round"
425
+ />
426
+ <path
427
+ d="M4.5 12l2.5-1.5L9.5 12"
428
+ stroke="currentColor"
429
+ strokeWidth={1.2}
430
+ strokeLinecap="round"
431
+ strokeLinejoin="round"
432
+ />
433
+ </svg>
434
+ )
435
+ }
436
+
437
+ export function LinkIcon(props: React.SVGProps<SVGSVGElement>) {
438
+ return (
439
+ <svg
440
+ width={14}
441
+ height={14}
442
+ viewBox="0 0 14 14"
443
+ fill="none"
444
+ xmlns="http://www.w3.org/2000/svg"
445
+ {...props}
446
+ >
447
+ <path
448
+ d="M6 8.5l2-2a2.12 2.12 0 0 1 3 3l-2 2a2.12 2.12 0 0 1-3 0"
449
+ stroke="currentColor"
450
+ strokeWidth={1.3}
451
+ strokeLinecap="round"
452
+ />
453
+ <path
454
+ d="M8 5.5l-2 2a2.12 2.12 0 0 1-3-3l2-2a2.12 2.12 0 0 1 3 0"
455
+ stroke="currentColor"
456
+ strokeWidth={1.3}
457
+ strokeLinecap="round"
458
+ />
459
+ </svg>
460
+ )
461
+ }
462
+
463
+ export function UnlinkIcon(props: React.SVGProps<SVGSVGElement>) {
464
+ return (
465
+ <svg
466
+ width={14}
467
+ height={14}
468
+ viewBox="0 0 14 14"
469
+ fill="none"
470
+ xmlns="http://www.w3.org/2000/svg"
471
+ {...props}
472
+ >
473
+ <path
474
+ d="M6 8.5l.5-.5"
475
+ stroke="currentColor"
476
+ strokeWidth={1.3}
477
+ strokeLinecap="round"
478
+ />
479
+ <path
480
+ d="M8 5.5l-.5.5"
481
+ stroke="currentColor"
482
+ strokeWidth={1.3}
483
+ strokeLinecap="round"
484
+ />
485
+ <path
486
+ d="M8 8.5a2.12 2.12 0 0 1-3 0l-1-1a2.12 2.12 0 0 1 3-3"
487
+ stroke="currentColor"
488
+ strokeWidth={1.3}
489
+ strokeLinecap="round"
490
+ />
491
+ <path
492
+ d="M6 5.5a2.12 2.12 0 0 1 3 0l1 1a2.12 2.12 0 0 1-3 3"
493
+ stroke="currentColor"
494
+ strokeWidth={1.3}
495
+ strokeLinecap="round"
496
+ />
497
+ <path
498
+ d="M2 12L12 2"
499
+ stroke="currentColor"
500
+ strokeWidth={1.2}
501
+ strokeLinecap="round"
502
+ />
503
+ </svg>
504
+ )
505
+ }
506
+
507
+ export function PlusIcon(props: React.SVGProps<SVGSVGElement>) {
508
+ return (
509
+ <svg
510
+ width={14}
511
+ height={14}
512
+ viewBox="0 0 14 14"
513
+ fill="none"
514
+ xmlns="http://www.w3.org/2000/svg"
515
+ {...props}
516
+ >
517
+ <path
518
+ d="M7 2v10M2 7h10"
519
+ stroke="currentColor"
520
+ strokeWidth={1.5}
521
+ strokeLinecap="round"
522
+ />
523
+ </svg>
524
+ )
525
+ }
526
+
527
+ export function MinusIcon(props: React.SVGProps<SVGSVGElement>) {
528
+ return (
529
+ <svg
530
+ width={14}
531
+ height={14}
532
+ viewBox="0 0 14 14"
533
+ fill="none"
534
+ xmlns="http://www.w3.org/2000/svg"
535
+ {...props}
536
+ >
537
+ <path
538
+ d="M2 7h10"
539
+ stroke="currentColor"
540
+ strokeWidth={1.5}
541
+ strokeLinecap="round"
542
+ />
543
+ </svg>
544
+ )
545
+ }
546
+
547
+ export function TrashIcon(props: React.SVGProps<SVGSVGElement>) {
548
+ return (
549
+ <svg
550
+ width={14}
551
+ height={14}
552
+ viewBox="0 0 14 14"
553
+ fill="none"
554
+ xmlns="http://www.w3.org/2000/svg"
555
+ {...props}
556
+ >
557
+ <path
558
+ d="M2.5 4h9M5 4V2.5h4V4"
559
+ stroke="currentColor"
560
+ strokeWidth={1.2}
561
+ strokeLinecap="round"
562
+ strokeLinejoin="round"
563
+ />
564
+ <path
565
+ d="M3.5 4l.5 8h6l.5-8"
566
+ stroke="currentColor"
567
+ strokeWidth={1.2}
568
+ strokeLinecap="round"
569
+ strokeLinejoin="round"
570
+ />
571
+ <path
572
+ d="M5.5 6.5v3M8.5 6.5v3"
573
+ stroke="currentColor"
574
+ strokeWidth={1.2}
575
+ strokeLinecap="round"
576
+ />
577
+ </svg>
578
+ )
579
+ }
580
+
581
+ export function CornerRadiusIcon(props: React.SVGProps<SVGSVGElement>) {
582
+ return (
583
+ <svg
584
+ width={14}
585
+ height={14}
586
+ viewBox="0 0 14 14"
587
+ fill="none"
588
+ xmlns="http://www.w3.org/2000/svg"
589
+ {...props}
590
+ >
591
+ <path
592
+ d="M2 12V6a4 4 0 0 1 4-4h6"
593
+ stroke="currentColor"
594
+ strokeWidth={1.5}
595
+ strokeLinecap="round"
596
+ />
597
+ </svg>
598
+ )
599
+ }
600
+
601
+ export function ClipContentIcon(props: React.SVGProps<SVGSVGElement>) {
602
+ return (
603
+ <svg
604
+ width={14}
605
+ height={14}
606
+ viewBox="0 0 14 14"
607
+ fill="none"
608
+ xmlns="http://www.w3.org/2000/svg"
609
+ {...props}
610
+ >
611
+ <path
612
+ d="M3.5 3.5l7 7M10.5 3.5l-7 7"
613
+ stroke="currentColor"
614
+ strokeWidth={0.8}
615
+ strokeLinecap="round"
616
+ />
617
+ <rect
618
+ x={2}
619
+ y={4}
620
+ width={10}
621
+ height={6}
622
+ rx={0.5}
623
+ stroke="currentColor"
624
+ strokeWidth={1.2}
625
+ />
626
+ <path
627
+ d="M5 1L5 4M9 1L9 4M5 10L5 13M9 10L9 13"
628
+ stroke="currentColor"
629
+ strokeWidth={1.2}
630
+ strokeLinecap="round"
631
+ />
632
+ </svg>
633
+ )
634
+ }
635
+
636
+ export function BorderBoxIcon(props: React.SVGProps<SVGSVGElement>) {
637
+ return (
638
+ <svg
639
+ width={14}
640
+ height={14}
641
+ viewBox="0 0 14 14"
642
+ fill="none"
643
+ xmlns="http://www.w3.org/2000/svg"
644
+ {...props}
645
+ >
646
+ <rect
647
+ x={1.5}
648
+ y={1.5}
649
+ width={11}
650
+ height={11}
651
+ rx={0.5}
652
+ stroke="currentColor"
653
+ strokeWidth={1.2}
654
+ />
655
+ <rect
656
+ x={4}
657
+ y={4}
658
+ width={6}
659
+ height={6}
660
+ rx={0.25}
661
+ stroke="currentColor"
662
+ strokeWidth={0.8}
663
+ strokeDasharray="1.5 1"
664
+ />
665
+ </svg>
666
+ )
667
+ }
668
+
669
+ export function ReverseIcon(props: React.SVGProps<SVGSVGElement>) {
670
+ return (
671
+ <svg
672
+ width={14}
673
+ height={14}
674
+ viewBox="0 0 14 14"
675
+ fill="none"
676
+ xmlns="http://www.w3.org/2000/svg"
677
+ {...props}
678
+ >
679
+ <path
680
+ d="M3 4.5h7.5M8.5 2.5l2 2-2 2"
681
+ stroke="currentColor"
682
+ strokeWidth={1.3}
683
+ strokeLinecap="round"
684
+ strokeLinejoin="round"
685
+ />
686
+ <path
687
+ d="M11 9.5H3.5M5.5 11.5l-2-2 2-2"
688
+ stroke="currentColor"
689
+ strokeWidth={1.3}
690
+ strokeLinecap="round"
691
+ strokeLinejoin="round"
692
+ />
693
+ </svg>
694
+ )
695
+ }
696
+
697
+ export function VisibilityIcon(props: React.SVGProps<SVGSVGElement>) {
698
+ return (
699
+ <svg
700
+ width={14}
701
+ height={14}
702
+ viewBox="0 0 14 14"
703
+ fill="none"
704
+ xmlns="http://www.w3.org/2000/svg"
705
+ {...props}
706
+ >
707
+ <path
708
+ d="M1 7s2.5-4 6-4 6 4 6 4-2.5 4-6 4-6-4-6-4Z"
709
+ stroke="currentColor"
710
+ strokeWidth={1.2}
711
+ strokeLinejoin="round"
712
+ />
713
+ <circle cx={7} cy={7} r={1.75} stroke="currentColor" strokeWidth={1.2} />
714
+ </svg>
715
+ )
716
+ }
717
+
718
+ export function ExpandIcon(props: React.SVGProps<SVGSVGElement>) {
719
+ return (
720
+ <svg
721
+ width={14}
722
+ height={14}
723
+ viewBox="0 0 14 14"
724
+ fill="none"
725
+ xmlns="http://www.w3.org/2000/svg"
726
+ {...props}
727
+ >
728
+ <path
729
+ d="M2 5V2h3M9 2h3v3M12 9v3h-3M5 12H2V9"
730
+ stroke="currentColor"
731
+ strokeWidth={1.3}
732
+ strokeLinecap="round"
733
+ strokeLinejoin="round"
734
+ />
735
+ </svg>
736
+ )
737
+ }
738
+
739
+ export function DecoNoneIcon(props: React.SVGProps<SVGSVGElement>) {
740
+ return (
741
+ <svg
742
+ width={14}
743
+ height={14}
744
+ viewBox="0 0 14 14"
745
+ fill="none"
746
+ xmlns="http://www.w3.org/2000/svg"
747
+ {...props}
748
+ >
749
+ <path
750
+ d="M3.5 3.5l7 7M10.5 3.5l-7 7"
751
+ stroke="currentColor"
752
+ strokeWidth={1.5}
753
+ strokeLinecap="round"
754
+ />
755
+ </svg>
756
+ )
757
+ }
758
+
759
+ export function StrikethroughIcon(props: React.SVGProps<SVGSVGElement>) {
760
+ return (
761
+ <svg
762
+ width={14}
763
+ height={14}
764
+ viewBox="0 0 14 14"
765
+ fill="none"
766
+ xmlns="http://www.w3.org/2000/svg"
767
+ {...props}
768
+ >
769
+ <text
770
+ x={3}
771
+ y={11}
772
+ fontSize={10}
773
+ fill="currentColor"
774
+ fontFamily="sans-serif"
775
+ >
776
+ S
777
+ </text>
778
+ <path
779
+ d="M2 7h10"
780
+ stroke="currentColor"
781
+ strokeWidth={1.2}
782
+ strokeLinecap="round"
783
+ />
784
+ </svg>
785
+ )
786
+ }
787
+
788
+ export function OverlineIcon(props: React.SVGProps<SVGSVGElement>) {
789
+ return (
790
+ <svg
791
+ width={14}
792
+ height={14}
793
+ viewBox="0 0 14 14"
794
+ fill="none"
795
+ xmlns="http://www.w3.org/2000/svg"
796
+ {...props}
797
+ >
798
+ <text
799
+ x={3}
800
+ y={12}
801
+ fontSize={10}
802
+ fill="currentColor"
803
+ fontFamily="sans-serif"
804
+ >
805
+ S
806
+ </text>
807
+ <path
808
+ d="M2 2.5h10"
809
+ stroke="currentColor"
810
+ strokeWidth={1.5}
811
+ strokeLinecap="round"
812
+ />
813
+ </svg>
814
+ )
815
+ }
816
+
817
+ export function UnderlineIcon(props: React.SVGProps<SVGSVGElement>) {
818
+ return (
819
+ <svg
820
+ width={14}
821
+ height={14}
822
+ viewBox="0 0 14 14"
823
+ fill="none"
824
+ xmlns="http://www.w3.org/2000/svg"
825
+ {...props}
826
+ >
827
+ <text
828
+ x={3}
829
+ y={10}
830
+ fontSize={10}
831
+ fill="currentColor"
832
+ fontFamily="sans-serif"
833
+ >
834
+ S
835
+ </text>
836
+ <path
837
+ d="M2 12h10"
838
+ stroke="currentColor"
839
+ strokeWidth={1.5}
840
+ strokeLinecap="round"
841
+ />
842
+ </svg>
843
+ )
844
+ }
845
+
846
+ export function ItalicIcon(props: React.SVGProps<SVGSVGElement>) {
847
+ return (
848
+ <svg
849
+ width={14}
850
+ height={14}
851
+ viewBox="0 0 14 14"
852
+ fill="none"
853
+ xmlns="http://www.w3.org/2000/svg"
854
+ {...props}
855
+ >
856
+ <path
857
+ d="M6 12h2M6 2h2M8.5 2l-3 10"
858
+ stroke="currentColor"
859
+ strokeWidth={1.3}
860
+ strokeLinecap="round"
861
+ />
862
+ </svg>
863
+ )
864
+ }
865
+
866
+ export function DirectionLTRIcon(props: React.SVGProps<SVGSVGElement>) {
867
+ return (
868
+ <svg
869
+ width={14}
870
+ height={14}
871
+ viewBox="0 0 14 14"
872
+ fill="none"
873
+ xmlns="http://www.w3.org/2000/svg"
874
+ {...props}
875
+ >
876
+ <path
877
+ d="M2 4h8M2 7h6M2 10h8"
878
+ stroke="currentColor"
879
+ strokeWidth={1.2}
880
+ strokeLinecap="round"
881
+ />
882
+ <path
883
+ d="M11 3l2 1-2 1"
884
+ stroke="currentColor"
885
+ strokeWidth={1.2}
886
+ strokeLinecap="round"
887
+ strokeLinejoin="round"
888
+ />
889
+ </svg>
890
+ )
891
+ }
892
+
893
+ export function DirectionRTLIcon(props: React.SVGProps<SVGSVGElement>) {
894
+ return (
895
+ <svg
896
+ width={14}
897
+ height={14}
898
+ viewBox="0 0 14 14"
899
+ fill="none"
900
+ xmlns="http://www.w3.org/2000/svg"
901
+ {...props}
902
+ >
903
+ <path
904
+ d="M4 4h8M6 7h6M4 10h8"
905
+ stroke="currentColor"
906
+ strokeWidth={1.2}
907
+ strokeLinecap="round"
908
+ />
909
+ <path
910
+ d="M3 3L1 4l2 1"
911
+ stroke="currentColor"
912
+ strokeWidth={1.2}
913
+ strokeLinecap="round"
914
+ strokeLinejoin="round"
915
+ />
916
+ </svg>
917
+ )
918
+ }
919
+
920
+ export function InsetIcon(props: React.SVGProps<SVGSVGElement>) {
921
+ return (
922
+ <svg
923
+ width={14}
924
+ height={14}
925
+ viewBox="0 0 14 14"
926
+ fill="none"
927
+ xmlns="http://www.w3.org/2000/svg"
928
+ {...props}
929
+ >
930
+ <rect
931
+ x={2}
932
+ y={2}
933
+ width={10}
934
+ height={10}
935
+ rx={0.5}
936
+ stroke="currentColor"
937
+ strokeWidth={1.2}
938
+ />
939
+ <path
940
+ d="M9 5L7 7l2 2"
941
+ stroke="currentColor"
942
+ strokeWidth={1.3}
943
+ strokeLinecap="round"
944
+ strokeLinejoin="round"
945
+ />
946
+ </svg>
947
+ )
948
+ }