@basementstudio/shader-lab 0.1.0 → 1.0.2

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 (399) hide show
  1. package/dist/src/easings.d.ts +3 -0
  2. package/dist/src/easings.js +3 -0
  3. package/dist/src/index.d.ts +5 -0
  4. package/dist/src/index.js +4 -0
  5. package/dist/src/lib/editor/custom-shader/shared.d.ts +1 -0
  6. package/dist/src/lib/editor/custom-shader/shared.js +1 -0
  7. package/dist/src/renderer/ascii-atlas.d.ts +5 -0
  8. package/dist/src/renderer/ascii-atlas.js +61 -0
  9. package/dist/src/renderer/ascii-pass.d.ts +50 -0
  10. package/dist/src/renderer/ascii-pass.js +271 -0
  11. package/dist/src/renderer/asset-url.d.ts +1 -0
  12. package/dist/src/renderer/asset-url.js +3 -0
  13. package/dist/src/renderer/blend-modes.d.ts +4 -0
  14. package/dist/src/renderer/blend-modes.js +157 -0
  15. package/dist/src/renderer/contracts.d.ts +26 -0
  16. package/dist/src/renderer/contracts.js +13 -0
  17. package/dist/src/renderer/create-webgpu-renderer.d.ts +3 -0
  18. package/dist/src/renderer/create-webgpu-renderer.js +37 -0
  19. package/dist/src/renderer/crt-pass.d.ts +72 -0
  20. package/dist/src/renderer/crt-pass.js +536 -0
  21. package/dist/src/renderer/custom-shader-pass.d.ts +17 -0
  22. package/dist/src/renderer/custom-shader-pass.js +79 -0
  23. package/dist/src/renderer/custom-shader-runtime.d.ts +16 -0
  24. package/dist/src/renderer/custom-shader-runtime.js +169 -0
  25. package/dist/src/renderer/dither-textures.d.ts +8 -0
  26. package/dist/src/renderer/dither-textures.js +66 -0
  27. package/dist/src/renderer/dithering-pass.d.ts +45 -0
  28. package/dist/src/renderer/dithering-pass.js +229 -0
  29. package/dist/src/renderer/gradient-pass.d.ts +39 -0
  30. package/dist/src/renderer/gradient-pass.js +358 -0
  31. package/dist/src/renderer/halftone-pass.d.ts +65 -0
  32. package/dist/src/renderer/halftone-pass.js +530 -0
  33. package/dist/src/renderer/ink-pass.d.ts +84 -0
  34. package/dist/src/renderer/ink-pass.js +526 -0
  35. package/dist/src/renderer/live-pass.d.ts +31 -0
  36. package/dist/src/renderer/live-pass.js +136 -0
  37. package/dist/src/renderer/media-pass.d.ts +32 -0
  38. package/dist/src/renderer/media-pass.js +130 -0
  39. package/dist/src/renderer/media-texture.d.ts +8 -0
  40. package/dist/src/renderer/media-texture.js +41 -0
  41. package/dist/src/renderer/particle-grid-pass.d.ts +48 -0
  42. package/dist/src/renderer/particle-grid-pass.js +269 -0
  43. package/dist/src/renderer/pass-node.d.ts +36 -0
  44. package/dist/src/renderer/pass-node.js +120 -0
  45. package/dist/src/renderer/pattern-atlas.d.ts +8 -0
  46. package/dist/src/renderer/pattern-atlas.js +79 -0
  47. package/dist/src/renderer/pattern-pass.d.ts +58 -0
  48. package/dist/src/renderer/pattern-pass.js +316 -0
  49. package/dist/src/renderer/pipeline-manager.d.ts +39 -0
  50. package/dist/src/renderer/pipeline-manager.js +287 -0
  51. package/dist/src/renderer/pixel-sorting-pass.d.ts +33 -0
  52. package/dist/src/renderer/pixel-sorting-pass.js +179 -0
  53. package/dist/src/renderer/shaders/tsl/color/tonemapping.d.ts +9 -0
  54. package/dist/src/renderer/shaders/tsl/color/tonemapping.js +59 -0
  55. package/dist/src/renderer/shaders/tsl/cosine-palette.d.ts +4 -0
  56. package/{packages/shader-lab-react/src/renderer/shaders/tsl/cosine-palette.ts → dist/src/renderer/shaders/tsl/cosine-palette.js} +3 -4
  57. package/dist/src/renderer/shaders/tsl/noise/common.d.ts +5 -0
  58. package/dist/src/renderer/shaders/tsl/noise/common.js +24 -0
  59. package/dist/src/renderer/shaders/tsl/noise/curl-noise-3d.d.ts +1 -0
  60. package/dist/src/renderer/shaders/tsl/noise/curl-noise-3d.js +27 -0
  61. package/dist/src/renderer/shaders/tsl/noise/curl-noise-4d.d.ts +1 -0
  62. package/dist/src/renderer/shaders/tsl/noise/curl-noise-4d.js +27 -0
  63. package/dist/src/renderer/shaders/tsl/noise/fbm.d.ts +1 -0
  64. package/dist/src/renderer/shaders/tsl/noise/fbm.js +11 -0
  65. package/dist/src/renderer/shaders/tsl/noise/perlin-noise-3d.d.ts +5 -0
  66. package/dist/src/renderer/shaders/tsl/noise/perlin-noise-3d.js +66 -0
  67. package/dist/src/renderer/shaders/tsl/noise/ridge-noise.d.ts +1 -0
  68. package/dist/src/renderer/shaders/tsl/noise/ridge-noise.js +19 -0
  69. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-3d.d.ts +1 -0
  70. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-3d.js +44 -0
  71. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-4d.d.ts +1 -0
  72. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-4d.js +51 -0
  73. package/dist/src/renderer/shaders/tsl/noise/turbulence.d.ts +7 -0
  74. package/dist/src/renderer/shaders/tsl/noise/turbulence.js +34 -0
  75. package/dist/src/renderer/shaders/tsl/noise/value-noise-3d.d.ts +1 -0
  76. package/dist/src/renderer/shaders/tsl/noise/value-noise-3d.js +27 -0
  77. package/dist/src/renderer/shaders/tsl/noise/voronoi-noise-3d.d.ts +1 -0
  78. package/dist/src/renderer/shaders/tsl/noise/voronoi-noise-3d.js +45 -0
  79. package/dist/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.d.ts +4 -0
  80. package/dist/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.js +13 -0
  81. package/dist/src/renderer/shaders/tsl/patterns/bloom.d.ts +4 -0
  82. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom.ts → dist/src/renderer/shaders/tsl/patterns/bloom.js} +4 -6
  83. package/dist/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.d.ts +4 -0
  84. package/dist/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.js +16 -0
  85. package/dist/src/renderer/shaders/tsl/patterns/grain-texture-pattern.d.ts +4 -0
  86. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts → dist/src/renderer/shaders/tsl/patterns/grain-texture-pattern.js} +3 -4
  87. package/dist/src/renderer/shaders/tsl/patterns/repeating-pattern.d.ts +4 -0
  88. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/repeating-pattern.ts → dist/src/renderer/shaders/tsl/patterns/repeating-pattern.js} +4 -6
  89. package/dist/src/renderer/shaders/tsl/utils/atan2.d.ts +1 -0
  90. package/dist/src/renderer/shaders/tsl/utils/atan2.js +7 -0
  91. package/dist/src/renderer/shaders/tsl/utils/complex-conj.d.ts +4 -0
  92. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-conj.ts → dist/src/renderer/shaders/tsl/utils/complex-conj.js} +3 -4
  93. package/dist/src/renderer/shaders/tsl/utils/complex-cos.d.ts +4 -0
  94. package/dist/src/renderer/shaders/tsl/utils/complex-cos.js +9 -0
  95. package/dist/src/renderer/shaders/tsl/utils/complex-div.d.ts +1 -0
  96. package/dist/src/renderer/shaders/tsl/utils/complex-div.js +6 -0
  97. package/dist/src/renderer/shaders/tsl/utils/complex-log.d.ts +1 -0
  98. package/dist/src/renderer/shaders/tsl/utils/complex-log.js +6 -0
  99. package/dist/src/renderer/shaders/tsl/utils/complex-mobius.d.ts +4 -0
  100. package/dist/src/renderer/shaders/tsl/utils/complex-mobius.js +10 -0
  101. package/dist/src/renderer/shaders/tsl/utils/complex-mul.d.ts +4 -0
  102. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mul.ts → dist/src/renderer/shaders/tsl/utils/complex-mul.js} +3 -4
  103. package/dist/src/renderer/shaders/tsl/utils/complex-pow.d.ts +5 -0
  104. package/dist/src/renderer/shaders/tsl/utils/complex-pow.js +14 -0
  105. package/dist/src/renderer/shaders/tsl/utils/complex-sin.d.ts +4 -0
  106. package/dist/src/renderer/shaders/tsl/utils/complex-sin.js +9 -0
  107. package/dist/src/renderer/shaders/tsl/utils/complex-sqrt.d.ts +5 -0
  108. package/dist/src/renderer/shaders/tsl/utils/complex-sqrt.js +12 -0
  109. package/dist/src/renderer/shaders/tsl/utils/complex-tan.d.ts +4 -0
  110. package/dist/src/renderer/shaders/tsl/utils/complex-tan.js +11 -0
  111. package/dist/src/renderer/shaders/tsl/utils/complex-to-polar.d.ts +4 -0
  112. package/dist/src/renderer/shaders/tsl/utils/complex-to-polar.js +9 -0
  113. package/dist/src/renderer/shaders/tsl/utils/hyperbolic.d.ts +8 -0
  114. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/hyperbolic.ts → dist/src/renderer/shaders/tsl/utils/hyperbolic.js} +7 -11
  115. package/dist/src/renderer/shaders/tsl/utils/index.d.ts +38 -0
  116. package/dist/src/renderer/shaders/tsl/utils/index.js +39 -0
  117. package/dist/src/renderer/shaders/tsl/utils/rotate.d.ts +2 -0
  118. package/dist/src/renderer/shaders/tsl/utils/rotate.js +7 -0
  119. package/dist/src/renderer/shaders/tsl/utils/screen-aspect-uv.d.ts +2 -0
  120. package/dist/src/renderer/shaders/tsl/utils/screen-aspect-uv.js +6 -0
  121. package/dist/src/renderer/shaders/tsl/utils/sd-box-2d.d.ts +1 -0
  122. package/dist/src/renderer/shaders/tsl/utils/sd-box-2d.js +5 -0
  123. package/dist/src/renderer/shaders/tsl/utils/sd-diamond.d.ts +1 -0
  124. package/dist/src/renderer/shaders/tsl/utils/sd-diamond.js +5 -0
  125. package/dist/src/renderer/shaders/tsl/utils/sd-rhombus.d.ts +1 -0
  126. package/dist/src/renderer/shaders/tsl/utils/sd-rhombus.js +14 -0
  127. package/dist/src/renderer/shaders/tsl/utils/sd-sphere.d.ts +1 -0
  128. package/dist/src/renderer/shaders/tsl/utils/sd-sphere.js +5 -0
  129. package/dist/src/renderer/shaders/tsl/utils/smax.d.ts +1 -0
  130. package/dist/src/renderer/shaders/tsl/utils/smax.js +6 -0
  131. package/dist/src/renderer/shaders/tsl/utils/smin.d.ts +1 -0
  132. package/dist/src/renderer/shaders/tsl/utils/smin.js +6 -0
  133. package/dist/src/renderer/text-pass.d.ts +23 -0
  134. package/dist/src/renderer/text-pass.js +129 -0
  135. package/dist/src/runtime-clock.d.ts +9 -0
  136. package/dist/src/runtime-clock.js +20 -0
  137. package/dist/src/runtime-frame.d.ts +11 -0
  138. package/dist/src/runtime-frame.js +12 -0
  139. package/dist/src/shader-lab-composition.d.ts +9 -0
  140. package/dist/src/shader-lab-composition.js +96 -0
  141. package/dist/src/timeline.d.ts +8 -0
  142. package/dist/src/timeline.js +179 -0
  143. package/dist/src/types/editor.d.ts +3 -0
  144. package/dist/src/types/editor.js +1 -0
  145. package/dist/src/types.d.ts +81 -0
  146. package/dist/src/types.js +1 -0
  147. package/package.json +28 -65
  148. package/.biome/plugins/README.md +0 -21
  149. package/.biome/plugins/no-anchor-element.grit +0 -12
  150. package/.biome/plugins/no-relative-parent-imports.grit +0 -10
  151. package/.biome/plugins/no-unnecessary-forwardref.grit +0 -9
  152. package/.changeset/README.md +0 -17
  153. package/.changeset/config.json +0 -11
  154. package/.editorconfig +0 -40
  155. package/.env.example +0 -81
  156. package/.gitattributes +0 -19
  157. package/.github/workflows/canary.yml +0 -80
  158. package/.github/workflows/ci.yml +0 -37
  159. package/.github/workflows/release.yml +0 -56
  160. package/.tldrignore +0 -84
  161. package/.vscode/extensions.json +0 -20
  162. package/.vscode/settings.json +0 -105
  163. package/biome.json +0 -249
  164. package/bun.lock +0 -1224
  165. package/next.config.ts +0 -131
  166. package/packages/shader-lab-react/CHANGELOG.md +0 -9
  167. package/packages/shader-lab-react/README.md +0 -119
  168. package/packages/shader-lab-react/package.json +0 -36
  169. package/packages/shader-lab-react/scripts/fix-esm-specifiers.mjs +0 -57
  170. package/packages/shader-lab-react/scripts/prepare-dist.mjs +0 -4
  171. package/packages/shader-lab-react/src/ambient/three-tsl.d.ts +0 -146
  172. package/packages/shader-lab-react/src/ambient/three-webgpu.d.ts +0 -51
  173. package/packages/shader-lab-react/src/easings.ts +0 -4
  174. package/packages/shader-lab-react/src/index.ts +0 -35
  175. package/packages/shader-lab-react/src/lib/editor/custom-shader/shared.ts +0 -2
  176. package/packages/shader-lab-react/src/renderer/ascii-atlas.ts +0 -83
  177. package/packages/shader-lab-react/src/renderer/ascii-pass.ts +0 -416
  178. package/packages/shader-lab-react/src/renderer/asset-url.ts +0 -3
  179. package/packages/shader-lab-react/src/renderer/blend-modes.ts +0 -229
  180. package/packages/shader-lab-react/src/renderer/contracts.ts +0 -54
  181. package/packages/shader-lab-react/src/renderer/create-webgpu-renderer.ts +0 -48
  182. package/packages/shader-lab-react/src/renderer/crt-pass.ts +0 -1040
  183. package/packages/shader-lab-react/src/renderer/custom-shader-pass.ts +0 -108
  184. package/packages/shader-lab-react/src/renderer/custom-shader-runtime.ts +0 -309
  185. package/packages/shader-lab-react/src/renderer/dither-textures.ts +0 -99
  186. package/packages/shader-lab-react/src/renderer/dithering-pass.ts +0 -322
  187. package/packages/shader-lab-react/src/renderer/gradient-pass.ts +0 -521
  188. package/packages/shader-lab-react/src/renderer/halftone-pass.ts +0 -932
  189. package/packages/shader-lab-react/src/renderer/ink-pass.ts +0 -802
  190. package/packages/shader-lab-react/src/renderer/live-pass.ts +0 -194
  191. package/packages/shader-lab-react/src/renderer/media-pass.ts +0 -187
  192. package/packages/shader-lab-react/src/renderer/media-texture.ts +0 -66
  193. package/packages/shader-lab-react/src/renderer/particle-grid-pass.ts +0 -389
  194. package/packages/shader-lab-react/src/renderer/pass-node.ts +0 -209
  195. package/packages/shader-lab-react/src/renderer/pattern-atlas.ts +0 -133
  196. package/packages/shader-lab-react/src/renderer/pattern-pass.ts +0 -552
  197. package/packages/shader-lab-react/src/renderer/pipeline-manager.ts +0 -369
  198. package/packages/shader-lab-react/src/renderer/pixel-sorting-pass.ts +0 -277
  199. package/packages/shader-lab-react/src/renderer/shaders/tsl/color/tonemapping.ts +0 -87
  200. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/common.ts +0 -31
  201. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +0 -36
  202. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +0 -36
  203. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/fbm.ts +0 -13
  204. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +0 -96
  205. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/ridge-noise.ts +0 -24
  206. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +0 -79
  207. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +0 -89
  208. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/turbulence.ts +0 -56
  209. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/value-noise-3d.ts +0 -32
  210. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +0 -60
  211. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +0 -15
  212. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +0 -24
  213. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/atan2.ts +0 -9
  214. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-cos.ts +0 -10
  215. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-div.ts +0 -11
  216. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-log.ts +0 -7
  217. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mobius.ts +0 -12
  218. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-pow.ts +0 -16
  219. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sin.ts +0 -10
  220. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sqrt.ts +0 -18
  221. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-tan.ts +0 -12
  222. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-to-polar.ts +0 -10
  223. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/index.ts +0 -48
  224. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/rotate.ts +0 -15
  225. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +0 -15
  226. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-box-2d.ts +0 -6
  227. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-diamond.ts +0 -6
  228. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-rhombus.ts +0 -27
  229. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-sphere.ts +0 -6
  230. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smax.ts +0 -7
  231. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smin.ts +0 -7
  232. package/packages/shader-lab-react/src/renderer/text-pass.ts +0 -176
  233. package/packages/shader-lab-react/src/runtime-clock.ts +0 -42
  234. package/packages/shader-lab-react/src/runtime-frame.ts +0 -29
  235. package/packages/shader-lab-react/src/shader-lab-composition.tsx +0 -163
  236. package/packages/shader-lab-react/src/timeline.ts +0 -283
  237. package/packages/shader-lab-react/src/types/editor.ts +0 -5
  238. package/packages/shader-lab-react/src/types.ts +0 -141
  239. package/packages/shader-lab-react/tsconfig.build.json +0 -8
  240. package/packages/shader-lab-react/tsconfig.json +0 -21
  241. package/postcss.config.mjs +0 -5
  242. package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf-atlas.png +0 -0
  243. package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf.json +0 -1412
  244. package/public/assets/patterns/bars/1.svg +0 -3
  245. package/public/assets/patterns/bars/2.svg +0 -3
  246. package/public/assets/patterns/bars/3.svg +0 -3
  247. package/public/assets/patterns/bars/4.svg +0 -3
  248. package/public/assets/patterns/bars/5.svg +0 -3
  249. package/public/assets/patterns/bars/6.svg +0 -3
  250. package/public/assets/patterns/candles/1.svg +0 -3
  251. package/public/assets/patterns/candles/2.svg +0 -3
  252. package/public/assets/patterns/candles/3.svg +0 -3
  253. package/public/assets/patterns/candles/4.svg +0 -3
  254. package/public/assets/patterns/shapes/1.svg +0 -3
  255. package/public/assets/patterns/shapes/2.svg +0 -3
  256. package/public/assets/patterns/shapes/3.svg +0 -3
  257. package/public/assets/patterns/shapes/4.svg +0 -4
  258. package/public/assets/patterns/shapes/5.svg +0 -3
  259. package/public/assets/patterns/shapes/6.svg +0 -4
  260. package/public/fonts/geist/Geist-Mono.woff2 +0 -0
  261. package/public/textures/blue-noise.png +0 -0
  262. package/public/textures/crt-mask.png +0 -0
  263. package/src/app/design/page.tsx +0 -398
  264. package/src/app/favicon.ico +0 -0
  265. package/src/app/globals.css +0 -280
  266. package/src/app/layout.tsx +0 -89
  267. package/src/app/page.tsx +0 -20
  268. package/src/app/robots.ts +0 -13
  269. package/src/app/sitemap.ts +0 -13
  270. package/src/components/editor/editor-canvas-viewport.tsx +0 -116
  271. package/src/components/editor/editor-export-dialog.tsx +0 -1177
  272. package/src/components/editor/editor-timeline-overlay.tsx +0 -983
  273. package/src/components/editor/editor-topbar.tsx +0 -287
  274. package/src/components/editor/layer-sidebar.tsx +0 -738
  275. package/src/components/editor/properties-sidebar-content.tsx +0 -574
  276. package/src/components/editor/properties-sidebar-fields.tsx +0 -389
  277. package/src/components/editor/properties-sidebar-utils.ts +0 -178
  278. package/src/components/editor/properties-sidebar.tsx +0 -421
  279. package/src/components/ui/button/index.tsx +0 -57
  280. package/src/components/ui/color-picker/index.tsx +0 -358
  281. package/src/components/ui/glass-panel/index.tsx +0 -45
  282. package/src/components/ui/icon-button/index.tsx +0 -46
  283. package/src/components/ui/select/index.tsx +0 -136
  284. package/src/components/ui/slider/index.tsx +0 -192
  285. package/src/components/ui/toggle/index.tsx +0 -34
  286. package/src/components/ui/typography/index.tsx +0 -61
  287. package/src/components/ui/xy-pad/index.tsx +0 -160
  288. package/src/features/editor/components/editor-export-dialog.module.css +0 -271
  289. package/src/hooks/use-editor-renderer.ts +0 -182
  290. package/src/lib/app.ts +0 -6
  291. package/src/lib/cn.ts +0 -7
  292. package/src/lib/easings.ts +0 -240
  293. package/src/lib/editor/config/layer-registry.ts +0 -2434
  294. package/src/lib/editor/custom-shader/shared.ts +0 -28
  295. package/src/lib/editor/export.ts +0 -420
  296. package/src/lib/editor/history.ts +0 -71
  297. package/src/lib/editor/layers.ts +0 -76
  298. package/src/lib/editor/parameter-schema.ts +0 -75
  299. package/src/lib/editor/project-file.ts +0 -145
  300. package/src/lib/editor/shader-export-snippet.ts +0 -37
  301. package/src/lib/editor/shader-export.ts +0 -315
  302. package/src/lib/editor/timeline/evaluate.ts +0 -252
  303. package/src/lib/editor/view-transform.ts +0 -58
  304. package/src/lib/fonts.ts +0 -28
  305. package/src/renderer/ascii-atlas.ts +0 -83
  306. package/src/renderer/ascii-pass.ts +0 -416
  307. package/src/renderer/blend-modes.ts +0 -229
  308. package/src/renderer/contracts.ts +0 -161
  309. package/src/renderer/create-webgpu-renderer.ts +0 -48
  310. package/src/renderer/crt-pass.ts +0 -1040
  311. package/src/renderer/custom-shader-pass.ts +0 -117
  312. package/src/renderer/custom-shader-runtime.ts +0 -309
  313. package/src/renderer/dither-textures.ts +0 -99
  314. package/src/renderer/dithering-pass.ts +0 -322
  315. package/src/renderer/gradient-pass.ts +0 -520
  316. package/src/renderer/halftone-pass.ts +0 -932
  317. package/src/renderer/ink-pass.ts +0 -683
  318. package/src/renderer/live-pass.ts +0 -194
  319. package/src/renderer/media-pass.ts +0 -187
  320. package/src/renderer/media-texture.ts +0 -66
  321. package/src/renderer/particle-grid-pass.ts +0 -389
  322. package/src/renderer/pass-node-factory.ts +0 -33
  323. package/src/renderer/pass-node.ts +0 -209
  324. package/src/renderer/pattern-atlas.ts +0 -97
  325. package/src/renderer/pattern-pass.ts +0 -552
  326. package/src/renderer/pipeline-manager.ts +0 -343
  327. package/src/renderer/pixel-sorting-pass.ts +0 -277
  328. package/src/renderer/project-clock.ts +0 -57
  329. package/src/renderer/shaders/tsl/color/tonemapping.ts +0 -86
  330. package/src/renderer/shaders/tsl/cosine-palette.ts +0 -8
  331. package/src/renderer/shaders/tsl/noise/common.ts +0 -30
  332. package/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +0 -35
  333. package/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +0 -35
  334. package/src/renderer/shaders/tsl/noise/fbm.ts +0 -12
  335. package/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +0 -97
  336. package/src/renderer/shaders/tsl/noise/ridge-noise.ts +0 -23
  337. package/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +0 -78
  338. package/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +0 -88
  339. package/src/renderer/shaders/tsl/noise/turbulence.ts +0 -55
  340. package/src/renderer/shaders/tsl/noise/value-noise-3d.ts +0 -31
  341. package/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +0 -59
  342. package/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +0 -14
  343. package/src/renderer/shaders/tsl/patterns/bloom.ts +0 -10
  344. package/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +0 -23
  345. package/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts +0 -8
  346. package/src/renderer/shaders/tsl/patterns/repeating-pattern.ts +0 -10
  347. package/src/renderer/shaders/tsl/utils/atan2.ts +0 -8
  348. package/src/renderer/shaders/tsl/utils/complex-conj.ts +0 -8
  349. package/src/renderer/shaders/tsl/utils/complex-cos.ts +0 -9
  350. package/src/renderer/shaders/tsl/utils/complex-div.ts +0 -10
  351. package/src/renderer/shaders/tsl/utils/complex-log.ts +0 -6
  352. package/src/renderer/shaders/tsl/utils/complex-mobius.ts +0 -11
  353. package/src/renderer/shaders/tsl/utils/complex-mul.ts +0 -8
  354. package/src/renderer/shaders/tsl/utils/complex-pow.ts +0 -15
  355. package/src/renderer/shaders/tsl/utils/complex-sin.ts +0 -9
  356. package/src/renderer/shaders/tsl/utils/complex-sqrt.ts +0 -17
  357. package/src/renderer/shaders/tsl/utils/complex-tan.ts +0 -11
  358. package/src/renderer/shaders/tsl/utils/complex-to-polar.ts +0 -9
  359. package/src/renderer/shaders/tsl/utils/hyperbolic.ts +0 -19
  360. package/src/renderer/shaders/tsl/utils/index.ts +0 -47
  361. package/src/renderer/shaders/tsl/utils/rotate.ts +0 -14
  362. package/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +0 -14
  363. package/src/renderer/shaders/tsl/utils/sd-box-2d.ts +0 -5
  364. package/src/renderer/shaders/tsl/utils/sd-diamond.ts +0 -5
  365. package/src/renderer/shaders/tsl/utils/sd-rhombus.ts +0 -26
  366. package/src/renderer/shaders/tsl/utils/sd-sphere.ts +0 -5
  367. package/src/renderer/shaders/tsl/utils/smax.ts +0 -7
  368. package/src/renderer/shaders/tsl/utils/smin.ts +0 -6
  369. package/src/renderer/text-pass.ts +0 -176
  370. package/src/store/asset-store.ts +0 -193
  371. package/src/store/editor-store.ts +0 -223
  372. package/src/store/history-store.ts +0 -172
  373. package/src/store/index.ts +0 -31
  374. package/src/store/layer-store.ts +0 -675
  375. package/src/store/timeline-store.ts +0 -572
  376. package/src/types/assets.d.ts +0 -6
  377. package/src/types/css.d.ts +0 -21
  378. package/src/types/editor.ts +0 -357
  379. package/src/types/react.d.ts +0 -15
  380. package/src/types/three-tsl.d.ts +0 -146
  381. package/src/types/three-webgpu.d.ts +0 -51
  382. package/tsconfig.json +0 -49
  383. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/1.svg +0 -0
  384. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/2.svg +0 -0
  385. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/3.svg +0 -0
  386. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/4.svg +0 -0
  387. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/5.svg +0 -0
  388. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/6.svg +0 -0
  389. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/1.svg +0 -0
  390. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/2.svg +0 -0
  391. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/3.svg +0 -0
  392. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/4.svg +0 -0
  393. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/1.svg +0 -0
  394. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/2.svg +0 -0
  395. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/3.svg +0 -0
  396. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/4.svg +0 -0
  397. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/5.svg +0 -0
  398. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/6.svg +0 -0
  399. /package/{packages/shader-lab-react/assets → assets}/textures/blue-noise.png +0 -0
@@ -1,421 +0,0 @@
1
- "use client"
2
-
3
- import { AnimatePresence, motion, useReducedMotion } from "motion/react"
4
- import { useCallback, useEffect, useMemo, useRef, useState } from "react"
5
- import { getLayerDefinition } from "@/lib/editor/config/layer-registry"
6
- import { evaluateTimelineForLayers } from "@/lib/editor/timeline/evaluate"
7
- import type {
8
- AnimatedPropertyBinding,
9
- ParameterDefinition,
10
- ParameterValue,
11
- } from "@/types/editor"
12
- import { cn } from "@/lib/cn"
13
- import { GlassPanel } from "@/components/ui/glass-panel"
14
- import { useAssetStore } from "@/store/asset-store"
15
- import { useEditorStore } from "@/store/editor-store"
16
- import { useLayerStore } from "@/store/layer-store"
17
- import {
18
- createLayerPropertyBinding,
19
- useTimelineStore,
20
- } from "@/store/timeline-store"
21
- import {
22
- EmptyPropertiesContent,
23
- SelectedLayerPropertiesContent,
24
- } from "./properties-sidebar-content"
25
- import {
26
- createParamTimelineBinding,
27
- getSelectedAsset,
28
- hasTrackForBinding,
29
- isParamVisible,
30
- } from "./properties-sidebar-utils"
31
-
32
- export function PropertiesSidebar() {
33
- const reduceMotion = useReducedMotion() ?? false
34
- const [expandedParamGroups, setExpandedParamGroups] = useState<
35
- Record<string, boolean>
36
- >({})
37
- const [panelHeight, setPanelHeight] = useState<number | null>(null)
38
- const viewResizeObserverRef = useRef<ResizeObserver | null>(null)
39
- const rightSidebarVisible = useEditorStore((state) => state.sidebars.right)
40
- const timelinePanelOpen = useEditorStore((state) => state.timelinePanelOpen)
41
- const selectedLayerId = useLayerStore((state) => state.selectedLayerId)
42
- const selectedLayer = useLayerStore((state) =>
43
- selectedLayerId
44
- ? (state.layers.find((layer) => layer.id === selectedLayerId) ?? null)
45
- : null
46
- )
47
- const setLayerBlendMode = useLayerStore((state) => state.setLayerBlendMode)
48
- const setLayerCompositeMode = useLayerStore(
49
- (state) => state.setLayerCompositeMode
50
- )
51
- const setLayerHue = useLayerStore((state) => state.setLayerHue)
52
- const setLayerOpacity = useLayerStore((state) => state.setLayerOpacity)
53
- const setLayerSaturation = useLayerStore((state) => state.setLayerSaturation)
54
- const updateLayerParam = useLayerStore((state) => state.updateLayerParam)
55
- const currentTime = useTimelineStore((state) => state.currentTime)
56
- const timelineTracks = useTimelineStore((state) => state.tracks)
57
- const upsertKeyframe = useTimelineStore((state) => state.upsertKeyframe)
58
- const assets = useAssetStore((state) => state.assets)
59
-
60
- const assetById = useMemo(
61
- () => new Map(assets.map((asset) => [asset.id, asset])),
62
- [assets]
63
- )
64
-
65
- const selectedAsset = selectedLayer
66
- ? getSelectedAsset(assetById, selectedLayer.assetId)
67
- : null
68
- const selectedDefinition = selectedLayer
69
- ? getLayerDefinition(selectedLayer.type)
70
- : null
71
- const selectedVisibleParams = useMemo(() => {
72
- if (!(selectedLayer && selectedDefinition)) {
73
- return [] as ParameterDefinition[]
74
- }
75
-
76
- return selectedDefinition.params.filter((param) =>
77
- isParamVisible(param, selectedLayer.params, [
78
- ...selectedDefinition.params,
79
- ])
80
- )
81
- }, [selectedDefinition, selectedLayer])
82
-
83
- const selectedLayerTracks = useMemo(
84
- () =>
85
- selectedLayer
86
- ? timelineTracks.filter((track) => track.layerId === selectedLayer.id)
87
- : [],
88
- [selectedLayer, timelineTracks]
89
- )
90
-
91
- const evaluatedSelectedLayer = useMemo(() => {
92
- if (
93
- !(timelinePanelOpen && selectedLayer && selectedLayerTracks.length > 0)
94
- ) {
95
- return null
96
- }
97
-
98
- return (
99
- evaluateTimelineForLayers(
100
- [selectedLayer],
101
- selectedLayerTracks,
102
- currentTime
103
- )[0] ?? null
104
- )
105
- }, [currentTime, selectedLayer, selectedLayerTracks, timelinePanelOpen])
106
-
107
- const displayedLayerState = useMemo(() => {
108
- if (!selectedLayer) {
109
- return null
110
- }
111
-
112
- if (!(timelinePanelOpen && evaluatedSelectedLayer)) {
113
- return {
114
- hue: selectedLayer.hue,
115
- opacity: selectedLayer.opacity,
116
- params: selectedLayer.params,
117
- saturation: selectedLayer.saturation,
118
- }
119
- }
120
-
121
- return {
122
- hue:
123
- typeof evaluatedSelectedLayer.properties.hue === "number"
124
- ? evaluatedSelectedLayer.properties.hue
125
- : selectedLayer.hue,
126
- opacity:
127
- typeof evaluatedSelectedLayer.properties.opacity === "number"
128
- ? evaluatedSelectedLayer.properties.opacity
129
- : selectedLayer.opacity,
130
- params: {
131
- ...selectedLayer.params,
132
- ...evaluatedSelectedLayer.params,
133
- },
134
- saturation:
135
- typeof evaluatedSelectedLayer.properties.saturation === "number"
136
- ? evaluatedSelectedLayer.properties.saturation
137
- : selectedLayer.saturation,
138
- }
139
- }, [evaluatedSelectedLayer, selectedLayer, timelinePanelOpen])
140
-
141
- const heightTransition = reduceMotion
142
- ? { duration: 0.12, ease: "easeOut" as const }
143
- : {
144
- damping: 34,
145
- mass: 0.9,
146
- stiffness: 340,
147
- type: "spring" as const,
148
- }
149
- const exitTransition = reduceMotion
150
- ? { duration: 0.1, ease: "easeOut" as const }
151
- : {
152
- damping: 34,
153
- mass: 0.8,
154
- stiffness: 380,
155
- type: "spring" as const,
156
- }
157
- const enterTransition = reduceMotion
158
- ? { duration: 0.12, ease: "easeOut" as const }
159
- : {
160
- damping: 34,
161
- delay: 0.08,
162
- mass: 0.82,
163
- stiffness: 380,
164
- type: "spring" as const,
165
- }
166
- const enterAnimation = reduceMotion
167
- ? { opacity: 1, transition: { duration: 0.12, ease: "easeOut" as const } }
168
- : {
169
- opacity: 1,
170
- transition: {
171
- opacity: { delay: 0.08, duration: 0.12 },
172
- y: enterTransition,
173
- },
174
- y: 0,
175
- }
176
- const exitAnimation = reduceMotion
177
- ? { opacity: 0, transition: { duration: 0.1, ease: "easeOut" as const } }
178
- : {
179
- opacity: 0,
180
- transition: {
181
- opacity: { duration: 0.1 },
182
- y: exitTransition,
183
- },
184
- y: -10,
185
- }
186
-
187
- const bindMeasuredView = useCallback((node: HTMLDivElement | null) => {
188
- viewResizeObserverRef.current?.disconnect()
189
- viewResizeObserverRef.current = null
190
-
191
- if (!node) {
192
- return
193
- }
194
-
195
- const updateHeight = () => {
196
- setPanelHeight(Math.ceil(node.getBoundingClientRect().height) + 2)
197
- }
198
-
199
- updateHeight()
200
-
201
- const observer = new ResizeObserver(() => {
202
- updateHeight()
203
- })
204
-
205
- observer.observe(node)
206
- viewResizeObserverRef.current = observer
207
- }, [])
208
-
209
- useEffect(() => {
210
- return () => {
211
- viewResizeObserverRef.current?.disconnect()
212
- }
213
- }, [])
214
-
215
- const handleToggleParamGroup = useCallback((groupId: string) => {
216
- setExpandedParamGroups((current) => ({
217
- ...current,
218
- [groupId]: !(current[groupId] ?? true),
219
- }))
220
- }, [])
221
-
222
- const handleTimelineKeyframe = useCallback(
223
- (
224
- binding: AnimatedPropertyBinding,
225
- layerId: string,
226
- value: ParameterValue
227
- ) => {
228
- upsertKeyframe({
229
- binding,
230
- layerId,
231
- value,
232
- })
233
- },
234
- [upsertKeyframe]
235
- )
236
-
237
- const handleTimelineAwareLayerAdjustment = useCallback(
238
- (
239
- binding: AnimatedPropertyBinding,
240
- value: ParameterValue,
241
- fallback: () => void
242
- ) => {
243
- if (
244
- selectedLayer &&
245
- timelinePanelOpen &&
246
- hasTrackForBinding(selectedLayerTracks, selectedLayer.id, binding)
247
- ) {
248
- upsertKeyframe({
249
- binding,
250
- layerId: selectedLayer.id,
251
- time: currentTime,
252
- value,
253
- })
254
- return
255
- }
256
-
257
- fallback()
258
- },
259
- [
260
- currentTime,
261
- selectedLayer,
262
- selectedLayerTracks,
263
- timelinePanelOpen,
264
- upsertKeyframe,
265
- ]
266
- )
267
-
268
- const handleTimelineAwareParamChange = useCallback(
269
- (key: string, value: ParameterValue) => {
270
- if (!selectedLayer) {
271
- return
272
- }
273
-
274
- const definition =
275
- selectedVisibleParams.find((param) => param.key === key) ?? null
276
- const binding = definition ? createParamTimelineBinding(definition) : null
277
-
278
- if (
279
- binding &&
280
- timelinePanelOpen &&
281
- hasTrackForBinding(selectedLayerTracks, selectedLayer.id, binding)
282
- ) {
283
- upsertKeyframe({
284
- binding,
285
- layerId: selectedLayer.id,
286
- time: currentTime,
287
- value,
288
- })
289
- return
290
- }
291
-
292
- updateLayerParam(selectedLayer.id, key, value)
293
- },
294
- [
295
- currentTime,
296
- selectedLayer,
297
- selectedLayerTracks,
298
- selectedVisibleParams,
299
- timelinePanelOpen,
300
- updateLayerParam,
301
- upsertKeyframe,
302
- ]
303
- )
304
-
305
- const selectedLayerContentProps = selectedLayer
306
- ? {
307
- blendMode: selectedLayer.blendMode,
308
- compositeMode: selectedLayer.compositeMode,
309
- definitionName: selectedDefinition?.defaultName ?? selectedLayer.type,
310
- expandedParamGroups,
311
- hue: displayedLayerState?.hue ?? selectedLayer.hue,
312
- layerId: selectedLayer.id,
313
- layerKind: selectedDefinition?.kind ?? "effect",
314
- layerName: selectedLayer.name,
315
- layerRuntimeError: selectedLayer.runtimeError,
316
- layerSubtitle:
317
- selectedAsset?.fileName ??
318
- (selectedLayer.type === "custom-shader" &&
319
- typeof selectedLayer.params.sourceFileName === "string"
320
- ? selectedLayer.params.sourceFileName
321
- : ""),
322
- layerType: selectedLayer.type,
323
- onToggleParamGroup: handleToggleParamGroup,
324
- onTimelineKeyframe: handleTimelineKeyframe,
325
- opacity: displayedLayerState?.opacity ?? selectedLayer.opacity,
326
- reduceMotion,
327
- saturation: displayedLayerState?.saturation ?? selectedLayer.saturation,
328
- setLayerBlendMode,
329
- setLayerCompositeMode,
330
- setLayerHue: (id: string, value: number) =>
331
- handleTimelineAwareLayerAdjustment(
332
- createLayerPropertyBinding("hue"),
333
- value,
334
- () => setLayerHue(id, value)
335
- ),
336
- setLayerOpacity: (id: string, value: number) =>
337
- handleTimelineAwareLayerAdjustment(
338
- createLayerPropertyBinding("opacity"),
339
- value,
340
- () => setLayerOpacity(id, value)
341
- ),
342
- setLayerSaturation: (id: string, value: number) =>
343
- handleTimelineAwareLayerAdjustment(
344
- createLayerPropertyBinding("saturation"),
345
- value,
346
- () => setLayerSaturation(id, value)
347
- ),
348
- timelinePanelOpen,
349
- updateLayerParam: (id: string, key: string, value: ParameterValue) => {
350
- if (id === selectedLayer.id) {
351
- handleTimelineAwareParamChange(key, value)
352
- }
353
- },
354
- values: displayedLayerState?.params ?? selectedLayer.params,
355
- visibleParams: selectedVisibleParams,
356
- }
357
- : null
358
-
359
- return (
360
- <aside
361
- className={cn(
362
- "pointer-events-none absolute top-[76px] right-4 z-20 w-[300px] translate-x-0 transition-[opacity,translate] duration-[220ms,260ms] ease-[ease-out,cubic-bezier(0.22,1,0.36,1)]",
363
- !rightSidebarVisible && "translate-x-[18px] opacity-0"
364
- )}
365
- >
366
- <div
367
- aria-hidden="true"
368
- className="pointer-events-none invisible absolute top-0 left-0 -z-1 w-full"
369
- >
370
- <div className="w-full" ref={bindMeasuredView}>
371
- {selectedLayerContentProps ? (
372
- <SelectedLayerPropertiesContent {...selectedLayerContentProps} />
373
- ) : (
374
- <EmptyPropertiesContent />
375
- )}
376
- </div>
377
- </div>
378
-
379
- <motion.div
380
- className={cn(
381
- "pointer-events-auto overflow-hidden rounded-[var(--ds-radius-panel)]",
382
- !rightSidebarVisible && "pointer-events-none"
383
- )}
384
- initial={false}
385
- {...(panelHeight === null ? {} : { animate: { height: panelHeight } })}
386
- transition={heightTransition}
387
- >
388
- <GlassPanel
389
- className="flex h-full min-h-0 flex-col gap-0 p-0"
390
- variant="panel"
391
- >
392
- <AnimatePresence initial={false} mode="wait">
393
- {selectedLayerContentProps ? (
394
- <motion.div
395
- animate={enterAnimation}
396
- className="flex h-full min-h-0 flex-col"
397
- exit={exitAnimation}
398
- initial={reduceMotion ? { opacity: 0 } : { opacity: 0, y: 10 }}
399
- key={selectedLayerContentProps.layerId}
400
- >
401
- <SelectedLayerPropertiesContent
402
- {...selectedLayerContentProps}
403
- />
404
- </motion.div>
405
- ) : (
406
- <motion.div
407
- animate={enterAnimation}
408
- className="flex h-full min-h-0 flex-col"
409
- exit={exitAnimation}
410
- initial={reduceMotion ? { opacity: 0 } : { opacity: 0, y: 10 }}
411
- key="empty"
412
- >
413
- <EmptyPropertiesContent />
414
- </motion.div>
415
- )}
416
- </AnimatePresence>
417
- </GlassPanel>
418
- </motion.div>
419
- </aside>
420
- )
421
- }
@@ -1,57 +0,0 @@
1
- import { cva, type VariantProps } from "class-variance-authority"
2
- import type { ButtonHTMLAttributes, ReactNode } from "react"
3
- import { cn } from "@/lib/cn"
4
-
5
- const buttonVariants = cva(
6
- "inline-flex origin-center items-center justify-center gap-2 whitespace-nowrap rounded-[var(--ds-radius-control)] border border-transparent font-[var(--ds-font-sans)] text-[12px] font-medium leading-4 text-decoration-none transition-[background-color,border-color,color,opacity,transform] duration-160 ease-[var(--ease-out-cubic)] will-change-transform disabled:cursor-not-allowed disabled:opacity-100 aria-disabled:cursor-not-allowed aria-disabled:opacity-100 active:scale-[0.98] data-[state=active]:scale-[0.98]",
7
- {
8
- variants: {
9
- variant: {
10
- primary:
11
- "bg-[var(--ds-color-text-primary)] text-[var(--ds-color-text-on-light)] hover:bg-white/82 active:bg-white/72 disabled:bg-white/18 disabled:text-black/45 aria-disabled:bg-white/18 aria-disabled:text-black/45",
12
- secondary:
13
- "bg-[var(--ds-color-surface-control)] border-[var(--ds-border-divider)] text-white/70 hover:bg-white/10 hover:border-[var(--ds-border-hover)] hover:text-white/80 active:bg-white/14 active:border-[var(--ds-border-active)] active:text-[var(--ds-color-text-primary)] data-[state=active]:bg-white/14 data-[state=active]:border-[var(--ds-border-active)] data-[state=active]:text-[var(--ds-color-text-primary)] disabled:bg-[var(--ds-color-surface-disabled)] disabled:border-[var(--ds-border-disabled)] disabled:text-[var(--ds-color-text-disabled)] aria-disabled:bg-[var(--ds-color-surface-disabled)] aria-disabled:border-[var(--ds-border-disabled)] aria-disabled:text-[var(--ds-color-text-disabled)]",
14
- ghost:
15
- "text-[var(--ds-color-text-secondary)] hover:text-[var(--ds-color-text-primary)] active:text-white/72 data-[state=active]:text-white/72 disabled:text-[var(--ds-color-text-disabled)] aria-disabled:text-[var(--ds-color-text-disabled)]",
16
- neutral:
17
- "bg-white/6 border-white/8 text-white/60 hover:bg-white/10 hover:border-white/12 hover:text-white/80 active:bg-white/14 active:border-white/14 active:text-[var(--ds-color-text-primary)] data-[state=active]:bg-white/14 data-[state=active]:border-white/14 data-[state=active]:text-[var(--ds-color-text-primary)] disabled:bg-[var(--ds-color-surface-disabled)] disabled:border-[var(--ds-border-disabled)] disabled:text-[var(--ds-color-text-disabled)] aria-disabled:bg-[var(--ds-color-surface-disabled)] aria-disabled:border-[var(--ds-border-disabled)] aria-disabled:text-[var(--ds-color-text-disabled)]",
18
- },
19
- size: {
20
- compact: "px-[14px] py-[6px]",
21
- default: "px-5 py-2",
22
- },
23
- fullWidth: {
24
- true: "w-full",
25
- },
26
- },
27
- defaultVariants: {
28
- variant: "secondary",
29
- size: "default",
30
- },
31
- })
32
-
33
- type CommonButtonProps = {
34
- children?: ReactNode
35
- } & VariantProps<typeof buttonVariants>
36
-
37
- type ButtonProps = CommonButtonProps &
38
- Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children">
39
-
40
- export function Button({
41
- children,
42
- className,
43
- fullWidth,
44
- size,
45
- variant,
46
- ...props
47
- }: ButtonProps) {
48
- return (
49
- <button
50
- className={cn(buttonVariants({ variant, size, fullWidth }), className)}
51
- type="button"
52
- {...props}
53
- >
54
- {children}
55
- </button>
56
- )
57
- }