@elixpo/lixsketch 5.4.7 → 5.5.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 (218) hide show
  1. package/dist/react/AIRenderer-M4LMJ66J.js +1105 -0
  2. package/dist/react/AIRenderer-M4LMJ66J.js.map +7 -0
  3. package/dist/react/Arrow-BJDAXPMH.js +8 -0
  4. package/dist/react/Arrow-BJDAXPMH.js.map +7 -0
  5. package/dist/react/Circle-KPG7TKIX.js +8 -0
  6. package/dist/react/Circle-KPG7TKIX.js.map +7 -0
  7. package/dist/react/CodeShape-K4DIZAIV.js +8 -0
  8. package/dist/react/CodeShape-K4DIZAIV.js.map +7 -0
  9. package/dist/react/CopyPaste-4CKJRHJ3.js +569 -0
  10. package/dist/react/CopyPaste-4CKJRHJ3.js.map +7 -0
  11. package/dist/react/EraserTrail-PA6IQLQN.js +20 -0
  12. package/dist/react/EraserTrail-PA6IQLQN.js.map +7 -0
  13. package/dist/react/EventDispatcher-SRFH6LQZ.js +463 -0
  14. package/dist/react/EventDispatcher-SRFH6LQZ.js.map +7 -0
  15. package/dist/react/Frame-6UR5XPAX.js +10 -0
  16. package/dist/react/Frame-6UR5XPAX.js.map +7 -0
  17. package/dist/react/FreehandStroke-CK24NUT3.js +8 -0
  18. package/dist/react/FreehandStroke-CK24NUT3.js.map +7 -0
  19. package/dist/react/GraphEngine-QE5B2PMR.js +340 -0
  20. package/dist/react/GraphEngine-QE5B2PMR.js.map +7 -0
  21. package/dist/react/GraphMathParser-2WMTY4IE.js +10 -0
  22. package/dist/react/GraphMathParser-2WMTY4IE.js.map +7 -0
  23. package/dist/react/IconShape-KMIA6T2H.js +10 -0
  24. package/dist/react/IconShape-KMIA6T2H.js.map +7 -0
  25. package/dist/react/ImageShape-CHHGBXUQ.js +10 -0
  26. package/dist/react/ImageShape-CHHGBXUQ.js.map +7 -0
  27. package/dist/react/LayerOrder-XCHF4MSS.js +66 -0
  28. package/dist/react/LayerOrder-XCHF4MSS.js.map +7 -0
  29. package/dist/react/Line-2KOQEEGA.js +10 -0
  30. package/dist/react/Line-2KOQEEGA.js.map +7 -0
  31. package/dist/react/LixScriptParser-JYWJX375.js +1033 -0
  32. package/dist/react/LixScriptParser-JYWJX375.js.map +7 -0
  33. package/dist/react/MermaidFlowchartRenderer-4QBAZ5MB.js +412 -0
  34. package/dist/react/MermaidFlowchartRenderer-4QBAZ5MB.js.map +7 -0
  35. package/dist/react/MermaidSequenceParser-UKG2NSZY.js +8 -0
  36. package/dist/react/MermaidSequenceParser-UKG2NSZY.js.map +7 -0
  37. package/dist/react/MermaidSequenceRenderer-HPLHY5II.js +387 -0
  38. package/dist/react/MermaidSequenceRenderer-HPLHY5II.js.map +7 -0
  39. package/dist/react/Rectangle-6FE7RN6W.js +8 -0
  40. package/dist/react/Rectangle-6FE7RN6W.js.map +7 -0
  41. package/dist/react/ResizeCode-WAMDTKSW.js +2 -0
  42. package/dist/react/ResizeCode-WAMDTKSW.js.map +7 -0
  43. package/dist/react/ResizeShapes-LKEQTITP.js +250 -0
  44. package/dist/react/ResizeShapes-LKEQTITP.js.map +7 -0
  45. package/dist/react/SceneSerializer-4U4B24JM.js +739 -0
  46. package/dist/react/SceneSerializer-4U4B24JM.js.map +7 -0
  47. package/dist/react/Selection-VVUHY5YJ.js +34 -0
  48. package/dist/react/Selection-VVUHY5YJ.js.map +7 -0
  49. package/dist/react/SketchEngine-YA4RG3KX.js +413 -0
  50. package/dist/react/SketchEngine-YA4RG3KX.js.map +7 -0
  51. package/dist/react/TextShape-54ZJ66E3.js +8 -0
  52. package/dist/react/TextShape-54ZJ66E3.js.map +7 -0
  53. package/dist/react/UndoRedo-M2JZUBKN.js +30 -0
  54. package/dist/react/UndoRedo-M2JZUBKN.js.map +7 -0
  55. package/dist/react/ZoomPan-U3TXC5AJ.js +186 -0
  56. package/dist/react/ZoomPan-U3TXC5AJ.js.map +7 -0
  57. package/dist/react/arrowTool-CWEMIRXK.js +17 -0
  58. package/dist/react/arrowTool-CWEMIRXK.js.map +7 -0
  59. package/dist/react/boxicons-5JNJQPUP.woff +0 -0
  60. package/dist/react/boxicons-6NVWQSCQ.eot +0 -0
  61. package/dist/react/boxicons-AQ5N6WP7.woff2 +0 -0
  62. package/dist/react/boxicons-GDR4JU3X.ttf +0 -0
  63. package/dist/react/boxicons-NNFHLMOR.svg +1660 -0
  64. package/dist/react/chunk-2OQXI7QB.js +564 -0
  65. package/dist/react/chunk-2OQXI7QB.js.map +7 -0
  66. package/dist/react/chunk-5OUBTHHO.js +187 -0
  67. package/dist/react/chunk-5OUBTHHO.js.map +7 -0
  68. package/dist/react/chunk-6PFXZKL2.js +628 -0
  69. package/dist/react/chunk-6PFXZKL2.js.map +7 -0
  70. package/dist/react/chunk-6SFNWGGZ.js +453 -0
  71. package/dist/react/chunk-6SFNWGGZ.js.map +7 -0
  72. package/dist/react/chunk-7TZSIR6V.js +210 -0
  73. package/dist/react/chunk-7TZSIR6V.js.map +7 -0
  74. package/dist/react/chunk-AJAZC37E.js +662 -0
  75. package/dist/react/chunk-AJAZC37E.js.map +7 -0
  76. package/dist/react/chunk-BU4D2WYQ.js +1213 -0
  77. package/dist/react/chunk-BU4D2WYQ.js.map +7 -0
  78. package/dist/react/chunk-BZE4CEBG.js +747 -0
  79. package/dist/react/chunk-BZE4CEBG.js.map +7 -0
  80. package/dist/react/chunk-CB2RANCB.js +212 -0
  81. package/dist/react/chunk-CB2RANCB.js.map +7 -0
  82. package/dist/react/chunk-DNAG7ML6.js +128 -0
  83. package/dist/react/chunk-DNAG7ML6.js.map +7 -0
  84. package/dist/react/chunk-HZWLPXFN.js +198 -0
  85. package/dist/react/chunk-HZWLPXFN.js.map +7 -0
  86. package/dist/react/chunk-I6HCCIXB.js +572 -0
  87. package/dist/react/chunk-I6HCCIXB.js.map +7 -0
  88. package/dist/react/chunk-IZ5OGWGW.js +235 -0
  89. package/dist/react/chunk-IZ5OGWGW.js.map +7 -0
  90. package/dist/react/chunk-JJCJNLNN.js +1490 -0
  91. package/dist/react/chunk-JJCJNLNN.js.map +7 -0
  92. package/dist/react/chunk-JQ3IRFDP.js +222 -0
  93. package/dist/react/chunk-JQ3IRFDP.js.map +7 -0
  94. package/dist/react/chunk-L5OARZJ7.js +1134 -0
  95. package/dist/react/chunk-L5OARZJ7.js.map +7 -0
  96. package/dist/react/chunk-LHRTXNVE.js +1600 -0
  97. package/dist/react/chunk-LHRTXNVE.js.map +7 -0
  98. package/dist/react/chunk-Q2GA4MBZ.js +1653 -0
  99. package/dist/react/chunk-Q2GA4MBZ.js.map +7 -0
  100. package/dist/react/chunk-QNSE5BAY.js +519 -0
  101. package/dist/react/chunk-QNSE5BAY.js.map +7 -0
  102. package/dist/react/chunk-QXFBG7OM.js +191 -0
  103. package/dist/react/chunk-QXFBG7OM.js.map +7 -0
  104. package/dist/react/chunk-T6ZVV5ZO.js +714 -0
  105. package/dist/react/chunk-T6ZVV5ZO.js.map +7 -0
  106. package/dist/react/chunk-URB6MY46.js +974 -0
  107. package/dist/react/chunk-URB6MY46.js.map +7 -0
  108. package/dist/react/chunk-VN62KLOC.js +931 -0
  109. package/dist/react/chunk-VN62KLOC.js.map +7 -0
  110. package/dist/react/chunk-VQVEPJSA.js +158 -0
  111. package/dist/react/chunk-VQVEPJSA.js.map +7 -0
  112. package/dist/react/chunk-XISEAGBV.js +1632 -0
  113. package/dist/react/chunk-XISEAGBV.js.map +7 -0
  114. package/dist/react/chunk-YKJUBFHE.js +575 -0
  115. package/dist/react/chunk-YKJUBFHE.js.map +7 -0
  116. package/dist/react/circleTool-NUATSEI2.js +14 -0
  117. package/dist/react/circleTool-NUATSEI2.js.map +7 -0
  118. package/dist/react/codeTool-MHCB2FNB.js +38 -0
  119. package/dist/react/codeTool-MHCB2FNB.js.map +7 -0
  120. package/dist/react/eraserTool-2GS2LQCS.js +103 -0
  121. package/dist/react/eraserTool-2GS2LQCS.js.map +7 -0
  122. package/dist/react/frameTool-PWVKKXSP.js +14 -0
  123. package/dist/react/frameTool-PWVKKXSP.js.map +7 -0
  124. package/dist/react/freehandTool-SLYGASVP.js +14 -0
  125. package/dist/react/freehandTool-SLYGASVP.js.map +7 -0
  126. package/dist/react/iconTool-GPZ7O7NH.js +18 -0
  127. package/dist/react/iconTool-GPZ7O7NH.js.map +7 -0
  128. package/dist/react/imageTool-D5R4XGEU.js +15 -0
  129. package/dist/react/imageTool-D5R4XGEU.js.map +7 -0
  130. package/dist/react/index.js +5342 -0
  131. package/dist/react/index.js.map +7 -0
  132. package/dist/react/laserTool-XVMV63AV.js +239 -0
  133. package/dist/react/laserTool-XVMV63AV.js.map +7 -0
  134. package/dist/react/lineTool-WNI5EMZ5.js +14 -0
  135. package/dist/react/lineTool-WNI5EMZ5.js.map +7 -0
  136. package/dist/react/lixCode-OJMVUXXI.ttf +0 -0
  137. package/dist/react/lixDefault-JEAPAUJL.ttf +0 -0
  138. package/dist/react/lixFancy-BPXYM5CQ.ttf +0 -0
  139. package/dist/react/lixFont-CPKEUDVM.woff2 +0 -0
  140. package/dist/react/rectangleTool-U7DZ6ZTA.js +14 -0
  141. package/dist/react/rectangleTool-U7DZ6ZTA.js.map +7 -0
  142. package/dist/react/styles.css +6627 -0
  143. package/dist/react/textTool-M7S6F3VC.js +21 -0
  144. package/dist/react/textTool-M7S6F3VC.js.map +7 -0
  145. package/package.json +39 -5
  146. package/src/EngineShortcuts.js +83 -27
  147. package/src/core/AIRenderer.js +30 -18
  148. package/src/core/GraphEngine.js +64 -41
  149. package/src/core/MermaidFlowchartRenderer.js +153 -88
  150. package/src/core/MermaidSequenceRenderer.js +168 -93
  151. package/src/core/SceneSerializer.js +86 -2
  152. package/src/core/Selection.js +119 -19
  153. package/src/core/UndoRedo.js +82 -15
  154. package/src/core/ZoomPan.js +15 -5
  155. package/src/index.js +14 -1
  156. package/src/react/LixSketchCanvas.jsx +347 -0
  157. package/src/react/components/AppMenu.jsx +475 -0
  158. package/src/react/components/Footer.jsx +85 -0
  159. package/src/react/components/Toolbar.jsx +140 -0
  160. package/src/react/components/canvas/CanvasLoadingOverlay.jsx +76 -0
  161. package/src/react/components/canvas/ContextMenu.jsx +466 -0
  162. package/src/react/components/canvas/FindBar.jsx +177 -0
  163. package/src/react/components/canvas/ImageSourcePicker.jsx +133 -0
  164. package/src/react/components/canvas/MultiSelectActions.jsx +120 -0
  165. package/src/react/components/canvas/SVGCanvas.jsx +145 -0
  166. package/src/react/components/canvas/SaveStatusIndicator.jsx +29 -0
  167. package/src/react/components/modals/CanvasPropertiesModal.jsx +358 -0
  168. package/src/react/components/modals/CommandPalette.jsx +307 -0
  169. package/src/react/components/modals/ExportImageModal.jsx +287 -0
  170. package/src/react/components/modals/GraphModal.jsx +174 -0
  171. package/src/react/components/modals/HelpModal.jsx +208 -0
  172. package/src/react/components/modals/LixScriptModal.jsx +130 -0
  173. package/src/react/components/modals/ShortcutsModal.jsx +125 -0
  174. package/src/react/components/sidebars/ArrowSidebar.jsx +173 -0
  175. package/src/react/components/sidebars/CircleSidebar.jsx +134 -0
  176. package/src/react/components/sidebars/FrameSidebar.jsx +263 -0
  177. package/src/react/components/sidebars/IconSidebar.jsx +279 -0
  178. package/src/react/components/sidebars/ImageSidebar.jsx +69 -0
  179. package/src/react/components/sidebars/LineSidebar.jsx +109 -0
  180. package/src/react/components/sidebars/PaintbrushSidebar.jsx +119 -0
  181. package/src/react/components/sidebars/RectangleSidebar.jsx +165 -0
  182. package/src/react/components/sidebars/ShapeSidebar.jsx +130 -0
  183. package/src/react/components/sidebars/TextSidebar.jsx +174 -0
  184. package/src/react/hooks/inertStores.js +58 -0
  185. package/src/react/hooks/useSketchEngine.js +76 -0
  186. package/src/react/hooks/useTranslation.js +92 -0
  187. package/src/react/index.js +41 -0
  188. package/src/react/store/useSketchStore.js +234 -0
  189. package/src/react/store/useUIStore.js +196 -0
  190. package/src/react/styles/arrowSidebar.css +263 -0
  191. package/src/react/styles/canvasStroke.css +47 -0
  192. package/src/react/styles/canvasTools.css +769 -0
  193. package/src/react/styles/circleSidebar.css +206 -0
  194. package/src/react/styles/fonts/fonts.css +29 -0
  195. package/src/react/styles/fonts/lixCode.ttf +0 -0
  196. package/src/react/styles/fonts/lixDefault.ttf +0 -0
  197. package/src/react/styles/fonts/lixDocs.ttf +0 -0
  198. package/src/react/styles/fonts/lixFancy.ttf +0 -0
  199. package/src/react/styles/fonts/lixFont.woff2 +0 -0
  200. package/src/react/styles/lineSidebar.css +207 -0
  201. package/src/react/styles/paintbrushSidebar.css +247 -0
  202. package/src/react/styles/squareSidebar.css +206 -0
  203. package/src/react/styles/writeText.css +149 -0
  204. package/src/react/styles.css +175 -0
  205. package/src/react/toolsEnum.js +20 -0
  206. package/src/react/utils/toast.js +18 -0
  207. package/src/shapes/Frame.js +7 -1
  208. package/src/shapes/Line.js +11 -5
  209. package/src/tools/arrowTool.js +30 -4
  210. package/src/tools/circleTool.js +33 -9
  211. package/src/tools/codeTool.js +5 -3
  212. package/src/tools/frameTool.js +47 -7
  213. package/src/tools/freehandTool.js +12 -4
  214. package/src/tools/iconTool.js +7 -1
  215. package/src/tools/imageTool.js +7 -1
  216. package/src/tools/lineTool.js +27 -3
  217. package/src/tools/rectangleTool.js +45 -8
  218. package/src/tools/textTool.js +23 -6
@@ -0,0 +1,206 @@
1
+ .circleSideBar {
2
+ position: fixed;
3
+ bottom: 20px;
4
+ left: 50%;
5
+ transform: translateX(-50%);
6
+ width: auto;
7
+ border-radius: 15px;
8
+ height: auto;
9
+ background-color: #232329;
10
+ overflow: visible;
11
+ padding: 5px 10px;
12
+ transition: 0.5s;
13
+ z-index: 100;
14
+ display: flex;
15
+ flex-direction: row;
16
+ align-items: center;
17
+ filter: blur(0px);
18
+ opacity: 1;
19
+ }
20
+
21
+ .circleSideBar.hidden {
22
+ opacity: 0;
23
+ pointer-events: none;
24
+ filter: blur(10px);
25
+ transform: translateX(-50%) translateY(20px);
26
+ transition: 0.5s;
27
+ z-index: -1;
28
+ }
29
+
30
+ /* Combined Labels */
31
+ .circleColorLabel,
32
+ .circleBackgroundLabel,
33
+ .circleThicknessLabel,
34
+ .circleFillLabel,
35
+ .circleStyleLabel {
36
+ display: none;
37
+ }
38
+
39
+
40
+ /* Combined containers for colors, backgrounds, thickness, and fill */
41
+ .circleColorscircle,
42
+ .circleBackground,
43
+ .circleThickness,
44
+ .circleFill,
45
+ .circleStyle {
46
+ position: static;
47
+ display: flex;
48
+ justify-content: flex-start;
49
+ flex-wrap: nowrap;
50
+ height: 40px;
51
+ gap: 5px;
52
+ align-items: center;
53
+ padding: 0 8px;
54
+ box-sizing: border-box;
55
+ border-right: 1px solid rgba(255,255,255,0.15);
56
+ }
57
+
58
+ .circleFill {
59
+ border-right: none;
60
+ }
61
+
62
+ .circleThickness, .circleStyle {
63
+ gap: 5px;
64
+ }
65
+
66
+
67
+ /* Combined styles for color, background and fill spans */
68
+ .circleColorscircle span,
69
+ .circleBackground span,
70
+ .circleFill span {
71
+ position: relative;
72
+ width: 30px;
73
+ height: 30px;
74
+ border-radius: 10px;
75
+ margin: 0 5px;
76
+ cursor: pointer;
77
+ box-sizing: border-box;
78
+ transition: 0.25s;
79
+ flex-shrink: 0; /* Prevent shrinking */
80
+ }
81
+
82
+ /* Combined selected styles for color background and fill spans */
83
+ .circleColorscircle span.selected,
84
+ .circleBackground span.selected,
85
+ .circleFill span.selected {
86
+ border: 2px solid #3c09d6;
87
+ transform: scale(1.3); /* Using transform instead of scale */
88
+ transition: 0.25s;
89
+ }
90
+
91
+ /* Color-specific styles */
92
+ .circleColorscircle span:nth-child(1) { background-color: #fff; }
93
+ .circleColorscircle span:nth-child(2) { background: #FF8383; }
94
+ .circleColorscircle span:nth-child(3) { background-color: #3A994C; }
95
+ .circleColorscircle span:nth-child(4) { background-color: #56A2E8; }
96
+ .circleColorscircle span:nth-child(5) { background: #FFD700; }
97
+
98
+ /* Background-specific styles */
99
+ .circleBackground span:nth-child(1) { background-color: #fff; }
100
+ .circleBackground span:nth-child(2) { background-color: #5B2D2D; }
101
+ .circleBackground span:nth-child(3) { background-color: #043B0C; }
102
+ .circleBackground span:nth-child(4) { background-color: #154163; }
103
+ .circleBackground span:nth-child(5) {
104
+ background-color: #ffffe000;
105
+ background-image: linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%, #ccc),
106
+ linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%, #ccc);
107
+ background-size: 12px 12px;
108
+ background-position: 0 0, 6px 6px;
109
+ }
110
+
111
+
112
+ /* Thickness styles */
113
+ .circleThickness span {
114
+ width: 40px;
115
+ height: 40px;
116
+ position: relative;
117
+ left: 0;
118
+ border-radius: 10px;
119
+ margin: 0 5px;
120
+ cursor: pointer;
121
+ color: #fff;
122
+ background: #31303B;
123
+ align-items: center;
124
+ justify-content: center;
125
+ display: flex;
126
+ font-size: 30px;
127
+ transition: 0.25s;
128
+ flex-shrink: 0; /* Prevent shrinking */
129
+ }
130
+
131
+ .circleThickness span.selected {
132
+ background: #444480;
133
+ transition: 0.25s;
134
+ }
135
+
136
+ .circleThickness span:nth-child(1) { font-weight: 100; }
137
+ .circleThickness span:nth-child(2) { font-weight: 500; }
138
+ .circleThickness span:nth-child(3) { font-weight: 700; }
139
+
140
+ /* Fill styles */
141
+
142
+
143
+
144
+ .circleFill span {
145
+ width: 30px;
146
+ height: 30px;
147
+ border-radius: 10px;
148
+ margin: 0 5px;
149
+ cursor: pointer;
150
+ box-sizing: border-box;
151
+ transition: 0.25s;
152
+ background: #31303B;
153
+ display: flex;
154
+ align-items: center;
155
+ justify-content: center;
156
+ font-size: 12px;
157
+ color: #fff;
158
+ text-transform: uppercase;
159
+ flex-shrink: 0; /* Prevent shrinking */
160
+ }
161
+
162
+ .circleFill span.selected {
163
+ background: #444480;
164
+ transition: 0.25s;
165
+ }
166
+
167
+ /* Style styles */
168
+ .circleStyle span {
169
+ width: 35px;
170
+ height: 35px;
171
+ left: 5%;
172
+ border-radius: 10px;
173
+ margin: 0; /* Remove left-right margins */
174
+ cursor: pointer;
175
+ color: #fff;
176
+ background: #31303B;
177
+ align-items: center;
178
+ justify-content: center;
179
+ display: flex;
180
+ transition: 0.25s;
181
+ border: 2px solid transparent;
182
+ flex-shrink: 0; /* Prevent shrinking */
183
+ }
184
+
185
+ .circleStyle span.selected {
186
+ background: #444480;
187
+ border: 2px solid #3c09d6;
188
+ transition: 0.25s;
189
+ transform: scale(1.1); /* Using transform instead of scale */
190
+ }
191
+
192
+ .circleStyle span svg {
193
+ width: 30px;
194
+ height: 30px;
195
+ stroke: #fff;
196
+ transition: 0.25s;
197
+ }
198
+
199
+ .circleStyle span.selected svg {
200
+ stroke: #FFD700;
201
+ }
202
+
203
+ .circleFill .circleFillStyleSpan svg {
204
+ pointer-events: none;
205
+ }
206
+
@@ -0,0 +1,29 @@
1
+ @font-face {
2
+ font-family: 'lixCode';
3
+ src: url('./lixCode.ttf') format('truetype');
4
+ font-display: swap;
5
+ }
6
+
7
+ @font-face {
8
+ font-family: 'lixDefault';
9
+ src: url('./lixDefault.ttf') format('truetype');
10
+ font-display: swap;
11
+ }
12
+
13
+ @font-face {
14
+ font-family: 'lixDocs';
15
+ src: url('./lixDocs.ttf') format('truetype');
16
+ font-display: swap;
17
+ }
18
+
19
+ @font-face {
20
+ font-family: 'lixFancy';
21
+ src: url('./lixFancy.ttf') format('truetype');
22
+ font-display: swap;
23
+ }
24
+
25
+ @font-face {
26
+ font-family: 'lixFont';
27
+ src: url('./lixFont.woff2') format('woff2');
28
+ font-display: swap;
29
+ }
@@ -0,0 +1,207 @@
1
+ .lineSideBar {
2
+ position: fixed;
3
+ bottom: 20px;
4
+ left: 50%;
5
+ transform: translateX(-50%);
6
+ width: auto;
7
+ border-radius: 15px;
8
+ height: auto;
9
+ background-color: #232329;
10
+ overflow: visible;
11
+ padding: 5px 10px;
12
+ transition: 0.5s;
13
+ z-index: 100;
14
+ display: flex;
15
+ flex-direction: row;
16
+ align-items: center;
17
+ filter: blur(0px);
18
+ opacity: 1;
19
+ }
20
+
21
+ .lineSideBar.hidden {
22
+ opacity: 0;
23
+ pointer-events: none;
24
+ filter: blur(10px);
25
+ transform: translateX(-50%) translateY(20px);
26
+ transition: 0.5s;
27
+ z-index: -1;
28
+ }
29
+
30
+ .lineColorLabel,
31
+ .lineThicknessLabel,
32
+ .lineStyleLabel,
33
+ .lineSlopeLabel,
34
+ .lineEdgeLabel
35
+ {
36
+ display: none;
37
+ }
38
+
39
+ .lineColor,
40
+ .lineThickness,
41
+ .lineStyle,
42
+ .lineSlope,
43
+ .lineEdge
44
+ {
45
+ position: static;
46
+ display: flex;
47
+ justify-content: flex-start;
48
+ flex-wrap: nowrap;
49
+ height: 40px;
50
+ gap: 5px;
51
+ align-items: center;
52
+ padding: 0 8px;
53
+ box-sizing: border-box;
54
+ border-right: 1px solid rgba(255,255,255,0.15);
55
+ }
56
+
57
+ .lineEdge {
58
+ border-right: none;
59
+ }
60
+ .lineColor span
61
+ {
62
+ position: relative;
63
+ width: 30px;
64
+ height: 30px;
65
+ border-radius: 10px;
66
+ margin: 0 2px;
67
+ cursor: pointer;
68
+ box-sizing: border-box;
69
+ transition: 0.25s;
70
+ flex-shrink: 0;
71
+ }
72
+ .lineColor span.selected
73
+ {
74
+ border: 2px solid #b8a4f4;
75
+ transition: 0.25s;
76
+ }
77
+
78
+ .lineColor span:nth-child(1) { background-color: #fff; }
79
+ .lineColor span:nth-child(2) { background: #FF8383; }
80
+ .lineColor span:nth-child(3) { background-color: #3A994C; }
81
+ .lineColor span:nth-child(4) { background-color: #56A2E8; }
82
+ .lineColor span:nth-child(5) { background: #FFD700; }
83
+
84
+ .lineThickness span
85
+ {
86
+ width: 40px;
87
+ height: 40px;
88
+ position: relative;
89
+ left: 0;
90
+ border-radius: 10px;
91
+ margin: 0 5px;
92
+ cursor: pointer;
93
+ color: #fff;
94
+ background: #31303B;
95
+ align-items: center;
96
+ justify-content: center;
97
+ display: flex;
98
+ font-size: 30px;
99
+ transition: 0.25s;
100
+ flex-shrink: 0; /* Prevent shrinking */
101
+ }
102
+ .lineThickness span.selected
103
+ {
104
+ background: #444480;
105
+ transition: 0.25s;
106
+ }
107
+
108
+ .lineThickness span:nth-child(1) { font-weight: 100; }
109
+ .lineThickness span:nth-child(2) { font-weight: 500; }
110
+ .lineThickness span:nth-child(3) { font-weight: 700; }
111
+
112
+ .lineStyle
113
+ {
114
+ gap: 20px;
115
+ }
116
+ .lineStyle span {
117
+ width: 35px;
118
+ height: 35px;
119
+ left: 10%;
120
+ border-radius: 10px;
121
+ margin: 0; /* Remove left-right margins */
122
+ cursor: pointer;
123
+ color: #fff;
124
+ background: #31303B;
125
+ align-items: center;
126
+ justify-content: center;
127
+ display: flex;
128
+ transition: 0.25s;
129
+ border: 2px solid transparent;
130
+ flex-shrink: 0; /* Prevent shrinking */
131
+ }
132
+ .lineStyle span.selected {
133
+ background: #444480;
134
+ border: 2px solid #3c09d6;
135
+ transition: 0.25s;
136
+ transform: scale(1.1); /* Using transform instead of scale */
137
+ }
138
+ .lineStyle span svg {
139
+ width: 30px;
140
+ height: 30px;
141
+ stroke: #fff;
142
+ transition: 0.25s;
143
+ }
144
+ .lineStyle span.selected svg {
145
+ stroke: #FFD700;
146
+ }
147
+
148
+ .lineSlope
149
+ {
150
+ gap: 20px;
151
+ }
152
+
153
+ .lineSlope span
154
+ {
155
+ width: 35px;
156
+ height: 35px;
157
+ left: 10%;
158
+ border-radius: 10px;
159
+ margin: 0; /* Remove left-right margins */
160
+ cursor: pointer;
161
+ color: #fff;
162
+ background: #31303B;
163
+ align-items: center;
164
+ justify-content: center;
165
+ display: flex;
166
+ transition: 0.25s;
167
+ border: 2px solid transparent;
168
+ flex-shrink: 0; /* Prevent shrinking */
169
+ }
170
+ .lineSlope span.selected
171
+ {
172
+ background: #444480;
173
+ border: 2px solid #3c09d6;
174
+ transition: 0.25s;
175
+ transform: scale(1.1); /* Using transform instead of scale */
176
+ }
177
+
178
+ .lineEdge
179
+ {
180
+ gap: 20px;
181
+ }
182
+
183
+ .lineEdge span
184
+ {
185
+ width: 35px;
186
+ height: 35px;
187
+ left: 10%;
188
+ border-radius: 10px;
189
+ margin: 0; /* Remove left-right margins */
190
+ cursor: pointer;
191
+ color: #fff;
192
+ background: #31303B;
193
+ align-items: center;
194
+ justify-content: center;
195
+ display: flex;
196
+ transition: 0.25s;
197
+ border: 2px solid transparent;
198
+ flex-shrink: 0; /* Prevent shrinking */
199
+ }
200
+
201
+ .lineEdge span.selected
202
+ {
203
+ background: #444480;
204
+ border: 2px solid #3c09d6;
205
+ transition: 0.25s;
206
+ transform: scale(1.1); /* Using transform instead of scale */
207
+ }
@@ -0,0 +1,247 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Kanit:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap');
2
+ .paintBrushToolBar
3
+ {
4
+ position: fixed;
5
+ bottom: 20px;
6
+ left: 50%;
7
+ transform: translateX(-50%);
8
+ display: flex;
9
+ flex-direction: row;
10
+ justify-content: center;
11
+ gap: 0;
12
+ align-items: center;
13
+ height: auto;
14
+ padding: 5px 10px;
15
+ background: #232329;
16
+ border-radius: 15px;
17
+ transition: 0.5s;
18
+ filter: blur(0px);
19
+ opacity: 1;
20
+ z-index: 100;
21
+ }
22
+ .paintBrushToolBar.hidden
23
+ {
24
+ opacity: 0;
25
+ pointer-events: none;
26
+ filter: blur(10px);
27
+ transform: translateX(-50%) translateY(20px);
28
+ transition: 0.5s;
29
+ z-index: -1;
30
+ }
31
+ .paintBrushToolBar .strokeColors
32
+ {
33
+ position: static;
34
+ display: flex;
35
+ flex-direction: row;
36
+ height: 40px;
37
+ align-items: center;
38
+ gap: 3px;
39
+ padding: 0 8px;
40
+ border-right: 1px solid rgba(255,255,255,0.15);
41
+ box-sizing: border-box;
42
+ }
43
+ .paintBrushToolBar .strokeColors span
44
+ {
45
+ width: 25px;
46
+ height: 25px;
47
+ border-radius: 50%;
48
+ margin: 0 3px;
49
+ cursor: pointer;
50
+ box-sizing: border-box;
51
+ transition: 0.25s;
52
+ flex-shrink: 0;
53
+ }
54
+ .paintBrushToolBar .strokeColors span.selected
55
+ {
56
+ border: 2px solid #b8a4f4;
57
+ transform: scale(1.25);
58
+ transition: 0.25s;
59
+ }
60
+ .paintBrushToolBar .strokeColors span:nth-child(1)
61
+ {
62
+ background-color: #fff;
63
+ }
64
+ .paintBrushToolBar .strokeColors span:nth-child(2)
65
+ {
66
+ background-color: #FF8383;
67
+ }
68
+ .paintBrushToolBar .strokeColors span:nth-child(3)
69
+ {
70
+ background-color: #3A994C;
71
+ }
72
+ .paintBrushToolBar .strokeColors span:nth-child(4)
73
+ {
74
+ background-color: #56A2E8;
75
+ }
76
+ .paintBrushToolBar .strokeColors span:nth-child(5)
77
+ {
78
+ background-color: #FFD700;
79
+ }
80
+ .ToolSpacer
81
+ {
82
+ display: none;
83
+ }
84
+
85
+ .paintBrushToolBar .strokeThickness
86
+ {
87
+ position: static;
88
+ display: flex;
89
+ flex-direction: row;
90
+ height: 40px;
91
+ align-items: center;
92
+ gap: 5px;
93
+ padding: 0 8px;
94
+ border-right: 1px solid rgba(255,255,255,0.15);
95
+ box-sizing: border-box;
96
+ }
97
+ .paintBrushToolBar .strokeThickness .strokeThicknessSpan
98
+ {
99
+ border-radius: 50%;
100
+ background-color: #fff;
101
+ cursor: pointer;
102
+ box-sizing: border-box;
103
+ transition: 0.25s;
104
+ flex-shrink: 0;
105
+ border: 2px solid transparent;
106
+ }
107
+ .paintBrushToolBar .strokeThickness .strokeThicknessSpan.selected
108
+ {
109
+ border: 2px solid #b8a4f4;
110
+ transition: 0.25s;
111
+ }
112
+ .paintBrushToolBar .strokeThickness .strokeThicknessSpan:nth-child(1) { width: 8px; height: 8px; }
113
+ .paintBrushToolBar .strokeThickness .strokeThicknessSpan:nth-child(2) { width: 13px; height: 13px; }
114
+ .paintBrushToolBar .strokeThickness .strokeThicknessSpan:nth-child(3) { width: 18px; height: 18px; }
115
+
116
+ .paintBrushToolBar .strokeStyle
117
+ {
118
+ position: static;
119
+ display: flex;
120
+ flex-direction: row;
121
+ height: 40px;
122
+ align-items: center;
123
+ gap: 5px;
124
+ padding: 0 8px;
125
+ border-right: 1px solid rgba(255,255,255,0.15);
126
+ box-sizing: border-box;
127
+ }
128
+ .paintBrushToolBar .strokeStyle .strokeStyleSpan
129
+ {
130
+ width: 32px;
131
+ height: 32px;
132
+ border-radius: 10px;
133
+ background: #31303B;
134
+ display: flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ cursor: pointer;
138
+ box-sizing: border-box;
139
+ transition: 0.25s;
140
+ border: 2px solid transparent;
141
+ flex-shrink: 0;
142
+ }
143
+ .paintBrushToolBar .strokeStyle .strokeStyleSpan.selected
144
+ {
145
+ background: #444480;
146
+ border: 2px solid #3c09d6;
147
+ transition: 0.25s;
148
+ transform: scale(1.1);
149
+ }
150
+ .paintBrushToolBar .strokeStyle .strokeStyleSpan svg
151
+ {
152
+ width: 20px;
153
+ height: 20px;
154
+ stroke: #fff;
155
+ fill: none;
156
+ }
157
+
158
+ /* Taper section */
159
+ .paintBrushToolBar .strokeTaper
160
+ {
161
+ position: static;
162
+ display: flex;
163
+ flex-direction: row;
164
+ height: 40px;
165
+ align-items: center;
166
+ gap: 5px;
167
+ padding: 0 8px;
168
+ border-right: 1px solid rgba(255,255,255,0.15);
169
+ box-sizing: border-box;
170
+ }
171
+ .strokeTaperSpan
172
+ {
173
+ width: 32px;
174
+ height: 32px;
175
+ border-radius: 10px;
176
+ background: #31303B;
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: center;
180
+ cursor: pointer;
181
+ box-sizing: border-box;
182
+ transition: 0.25s;
183
+ border: 2px solid transparent;
184
+ flex-shrink: 0;
185
+ }
186
+ .strokeTaperSpan.selected
187
+ {
188
+ background: #444480;
189
+ border: 2px solid #3c09d6;
190
+ transition: 0.25s;
191
+ transform: scale(1.1);
192
+ }
193
+ .strokeTaperSpan svg
194
+ {
195
+ width: 22px;
196
+ height: 22px;
197
+ fill: #fff;
198
+ stroke: none;
199
+ }
200
+
201
+ /* Roughness section */
202
+ .paintBrushToolBar .strokeRoughness
203
+ {
204
+ position: static;
205
+ display: flex;
206
+ flex-direction: row;
207
+ height: 40px;
208
+ align-items: center;
209
+ gap: 5px;
210
+ padding: 0 8px;
211
+ box-sizing: border-box;
212
+ }
213
+ .strokeRoughnessSpan
214
+ {
215
+ width: 32px;
216
+ height: 32px;
217
+ border-radius: 10px;
218
+ background: #31303B;
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ cursor: pointer;
223
+ box-sizing: border-box;
224
+ transition: 0.25s;
225
+ border: 2px solid transparent;
226
+ flex-shrink: 0;
227
+ }
228
+ .strokeRoughnessSpan.selected
229
+ {
230
+ background: #444480;
231
+ border: 2px solid #3c09d6;
232
+ transition: 0.25s;
233
+ transform: scale(1.1);
234
+ }
235
+ .strokeRoughnessSpan svg
236
+ {
237
+ width: 22px;
238
+ height: 22px;
239
+ stroke: #fff;
240
+ fill: none;
241
+ }
242
+
243
+ /* Opacity */
244
+ .strokeOpacity
245
+ {
246
+ display: none;
247
+ }