create-weave-frontend-app 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 (272) hide show
  1. package/README.md +11 -0
  2. package/dist/chunk-HZJMO45D.js +437 -0
  3. package/dist/create-app.d.ts +14 -0
  4. package/dist/create-app.js +6 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +106 -0
  7. package/package.json +65 -0
  8. package/template/+nextjs+azure-web-pubsub/README.md +36 -0
  9. package/template/+nextjs+azure-web-pubsub/api/del-image.ts +8 -0
  10. package/template/+nextjs+azure-web-pubsub/api/get-images.ts +15 -0
  11. package/template/+nextjs+azure-web-pubsub/api/post-image.ts +14 -0
  12. package/template/+nextjs+azure-web-pubsub/api/post-remove-background.ts +10 -0
  13. package/template/+nextjs+azure-web-pubsub/app/error/page.tsx +10 -0
  14. package/template/+nextjs+azure-web-pubsub/app/favicon.ico +0 -0
  15. package/template/+nextjs+azure-web-pubsub/app/globals.css +193 -0
  16. package/template/+nextjs+azure-web-pubsub/app/layout.tsx +46 -0
  17. package/template/+nextjs+azure-web-pubsub/app/page.tsx +7 -0
  18. package/template/+nextjs+azure-web-pubsub/app/providers.tsx +18 -0
  19. package/template/+nextjs+azure-web-pubsub/app/room/[roomId]/page.tsx +5 -0
  20. package/template/+nextjs+azure-web-pubsub/assets/images/home.png +0 -0
  21. package/template/+nextjs+azure-web-pubsub/assets/images/logo.png +0 -0
  22. package/template/+nextjs+azure-web-pubsub/components/actions/align-elements-tool/align-elements-tool.ts +94 -0
  23. package/template/+nextjs+azure-web-pubsub/components/actions/color-token-tool/color-token-tool.ts +164 -0
  24. package/template/+nextjs+azure-web-pubsub/components/actions/color-token-tool/constants.ts +5 -0
  25. package/template/+nextjs+azure-web-pubsub/components/actions/color-token-tool/types.ts +12 -0
  26. package/template/+nextjs+azure-web-pubsub/components/error/error.tsx +62 -0
  27. package/template/+nextjs+azure-web-pubsub/components/error/errors.ts +35 -0
  28. package/template/+nextjs+azure-web-pubsub/components/home/home.tsx +92 -0
  29. package/template/+nextjs+azure-web-pubsub/components/home-components/home-showcase-animation.tsx +119 -0
  30. package/template/+nextjs+azure-web-pubsub/components/home-components/login-form.tsx +117 -0
  31. package/template/+nextjs+azure-web-pubsub/components/nodes/color-token/color-token.ts +171 -0
  32. package/template/+nextjs+azure-web-pubsub/components/room/room.layout.tsx +115 -0
  33. package/template/+nextjs+azure-web-pubsub/components/room/room.tsx +125 -0
  34. package/template/+nextjs+azure-web-pubsub/components/room-components/color-tokens-library/color-token.tsx +31 -0
  35. package/template/+nextjs+azure-web-pubsub/components/room-components/color-tokens-library/color-tokens-library.tsx +64 -0
  36. package/template/+nextjs+azure-web-pubsub/components/room-components/connected-users.tsx +152 -0
  37. package/template/+nextjs+azure-web-pubsub/components/room-components/connection-status.tsx +52 -0
  38. package/template/+nextjs+azure-web-pubsub/components/room-components/context-menu.tsx +152 -0
  39. package/template/+nextjs+azure-web-pubsub/components/room-components/frames-library/frames-library.image.tsx +48 -0
  40. package/template/+nextjs+azure-web-pubsub/components/room-components/frames-library/frames-library.presentation-image.tsx +61 -0
  41. package/template/+nextjs+azure-web-pubsub/components/room-components/frames-library/frames-library.tsx +316 -0
  42. package/template/+nextjs+azure-web-pubsub/components/room-components/frames-library/utils.ts +27 -0
  43. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-arrange.tsx +69 -0
  44. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-drawer.tsx +140 -0
  45. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-edit.tsx +80 -0
  46. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-selection.tsx +30 -0
  47. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-shortcut-element.tsx +24 -0
  48. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-tools.tsx +89 -0
  49. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-view.tsx +30 -0
  50. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-zoom.tsx +46 -0
  51. package/template/+nextjs+azure-web-pubsub/components/room-components/help/shortcut-element.tsx +42 -0
  52. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-context-menu.tsx +514 -0
  53. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-get-azure-web-pubsub-provider.ts +78 -0
  54. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-get-os.ts +12 -0
  55. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-get-weave-js-props.tsx +120 -0
  56. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-handle-route-params.ts +30 -0
  57. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-key-down.ts +29 -0
  58. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-keyboard-handler.tsx +557 -0
  59. package/template/+nextjs+azure-web-pubsub/components/room-components/images-library/images-library.tsx +146 -0
  60. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-color.tsx +101 -0
  61. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-font-family.tsx +99 -0
  62. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-number.tsx +61 -0
  63. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-text.tsx +51 -0
  64. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/number-input.tsx +107 -0
  65. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/appearance-properties.tsx +119 -0
  66. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/color-token-properties.tsx +108 -0
  67. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/crop-properties.tsx +156 -0
  68. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/fill-properties.tsx +115 -0
  69. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/frame-properties.tsx +100 -0
  70. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/image-properties.tsx +57 -0
  71. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/position-properties.tsx +156 -0
  72. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/size-properties.tsx +131 -0
  73. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/stroke-properties.tsx +327 -0
  74. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/text-properties.tsx +467 -0
  75. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/multiuse-overlay.tsx +127 -0
  76. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/node-properties.tsx +98 -0
  77. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/overlay-animation-wrapper.tsx +31 -0
  78. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/room-information-overlay.tsx +247 -0
  79. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/room-users-overlay.tsx +31 -0
  80. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/tools-overlay.tsx +289 -0
  81. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/variants.ts +58 -0
  82. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/zoom-handler-overlay.tsx +447 -0
  83. package/template/+nextjs+azure-web-pubsub/components/room-components/room-error.tsx +37 -0
  84. package/template/+nextjs+azure-web-pubsub/components/room-components/room-loader/room-loader.tsx +98 -0
  85. package/template/+nextjs+azure-web-pubsub/components/room-components/selection-information.tsx +74 -0
  86. package/template/+nextjs+azure-web-pubsub/components/room-components/toggle-icon-button.tsx +60 -0
  87. package/template/+nextjs+azure-web-pubsub/components/room-components/toolbar/toolbar-button.tsx +60 -0
  88. package/template/+nextjs+azure-web-pubsub/components/room-components/toolbar/toolbar-toggle-button.tsx +40 -0
  89. package/template/+nextjs+azure-web-pubsub/components/room-components/toolbar/toolbar.tsx +28 -0
  90. package/template/+nextjs+azure-web-pubsub/components/room-components/upload-file.tsx +130 -0
  91. package/template/+nextjs+azure-web-pubsub/components/room-components/with-instance-node.tsx +53 -0
  92. package/template/+nextjs+azure-web-pubsub/components/ui/accordion.tsx +66 -0
  93. package/template/+nextjs+azure-web-pubsub/components/ui/avatar.tsx +53 -0
  94. package/template/+nextjs+azure-web-pubsub/components/ui/button.tsx +58 -0
  95. package/template/+nextjs+azure-web-pubsub/components/ui/card.tsx +68 -0
  96. package/template/+nextjs+azure-web-pubsub/components/ui/checkbox.tsx +32 -0
  97. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/color-picker-component.tsx +69 -0
  98. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/context/color-picker-context.tsx +28 -0
  99. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/editor/color-picker-format-editor.tsx +34 -0
  100. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/index.ts +7 -0
  101. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-alpha.tsx +79 -0
  102. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-eyedropper.tsx +95 -0
  103. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-format-selector.tsx +50 -0
  104. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-hue.tsx +67 -0
  105. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-saturation.tsx +145 -0
  106. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/text-inputs/color-picker-alpha-percentage.tsx +60 -0
  107. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/text-inputs/color-picker-hexa.tsx +65 -0
  108. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/text-inputs/color-picker-rgba.tsx +62 -0
  109. package/template/+nextjs+azure-web-pubsub/components/ui/command.tsx +177 -0
  110. package/template/+nextjs+azure-web-pubsub/components/ui/dialog.tsx +135 -0
  111. package/template/+nextjs+azure-web-pubsub/components/ui/drawer.tsx +132 -0
  112. package/template/+nextjs+azure-web-pubsub/components/ui/dropdown-menu.tsx +201 -0
  113. package/template/+nextjs+azure-web-pubsub/components/ui/form.tsx +167 -0
  114. package/template/+nextjs+azure-web-pubsub/components/ui/input.tsx +21 -0
  115. package/template/+nextjs+azure-web-pubsub/components/ui/label.tsx +24 -0
  116. package/template/+nextjs+azure-web-pubsub/components/ui/popover.tsx +48 -0
  117. package/template/+nextjs+azure-web-pubsub/components/ui/reactbits/Backgrounds/Dither/Dither.tsx +350 -0
  118. package/template/+nextjs+azure-web-pubsub/components/ui/reactbits/Backgrounds/Threads/Threads.tsx +239 -0
  119. package/template/+nextjs+azure-web-pubsub/components/ui/reactbits/TextAnimations/RotatingText/RotatingText.tsx +276 -0
  120. package/template/+nextjs+azure-web-pubsub/components/ui/scroll-area.tsx +58 -0
  121. package/template/+nextjs+azure-web-pubsub/components/ui/select.tsx +185 -0
  122. package/template/+nextjs+azure-web-pubsub/components/ui/sheet.tsx +139 -0
  123. package/template/+nextjs+azure-web-pubsub/components/ui/sonner.tsx +25 -0
  124. package/template/+nextjs+azure-web-pubsub/components/ui/tabs.tsx +66 -0
  125. package/template/+nextjs+azure-web-pubsub/components/ui/tooltip.tsx +61 -0
  126. package/template/+nextjs+azure-web-pubsub/components/utils/constants.ts +118 -0
  127. package/template/+nextjs+azure-web-pubsub/components/utils/logo.tsx +34 -0
  128. package/template/+nextjs+azure-web-pubsub/components.json +21 -0
  129. package/template/+nextjs+azure-web-pubsub/example.env +2 -0
  130. package/template/+nextjs+azure-web-pubsub/example.gitignore +44 -0
  131. package/template/+nextjs+azure-web-pubsub/jsrepo.json +11 -0
  132. package/template/+nextjs+azure-web-pubsub/lib/utils.ts +43 -0
  133. package/template/+nextjs+azure-web-pubsub/new-types.d.ts +8 -0
  134. package/template/+nextjs+azure-web-pubsub/next-env.d.ts +5 -0
  135. package/template/+nextjs+azure-web-pubsub/next.config.js +52 -0
  136. package/template/+nextjs+azure-web-pubsub/postcss.config.mjs +5 -0
  137. package/template/+nextjs+azure-web-pubsub/store/store.ts +241 -0
  138. package/template/+nextjs+azure-web-pubsub/tsconfig.json +37 -0
  139. package/template/+nextjs+azure-web-pubsub/vitest.config.mts +10 -0
  140. package/template/+nextjs+websockets/README.md +39 -0
  141. package/template/+nextjs+websockets/api/del-image.ts +8 -0
  142. package/template/+nextjs+websockets/api/get-images.ts +15 -0
  143. package/template/+nextjs+websockets/api/post-image.ts +14 -0
  144. package/template/+nextjs+websockets/api/post-remove-background.ts +10 -0
  145. package/template/+nextjs+websockets/app/error/page.tsx +10 -0
  146. package/template/+nextjs+websockets/app/favicon.ico +0 -0
  147. package/template/+nextjs+websockets/app/globals.css +193 -0
  148. package/template/+nextjs+websockets/app/layout.tsx +46 -0
  149. package/template/+nextjs+websockets/app/page.tsx +7 -0
  150. package/template/+nextjs+websockets/app/providers.tsx +18 -0
  151. package/template/+nextjs+websockets/app/room/[roomId]/page.tsx +5 -0
  152. package/template/+nextjs+websockets/assets/images/home.png +0 -0
  153. package/template/+nextjs+websockets/assets/images/logo.png +0 -0
  154. package/template/+nextjs+websockets/components/actions/align-elements-tool/align-elements-tool.ts +94 -0
  155. package/template/+nextjs+websockets/components/actions/color-token-tool/color-token-tool.ts +164 -0
  156. package/template/+nextjs+websockets/components/actions/color-token-tool/constants.ts +5 -0
  157. package/template/+nextjs+websockets/components/actions/color-token-tool/types.ts +12 -0
  158. package/template/+nextjs+websockets/components/error/error.tsx +62 -0
  159. package/template/+nextjs+websockets/components/error/errors.ts +35 -0
  160. package/template/+nextjs+websockets/components/home/home.tsx +92 -0
  161. package/template/+nextjs+websockets/components/home-components/home-showcase-animation.tsx +119 -0
  162. package/template/+nextjs+websockets/components/home-components/login-form.tsx +117 -0
  163. package/template/+nextjs+websockets/components/nodes/color-token/color-token.ts +171 -0
  164. package/template/+nextjs+websockets/components/room/room.layout.tsx +115 -0
  165. package/template/+nextjs+websockets/components/room/room.tsx +125 -0
  166. package/template/+nextjs+websockets/components/room-components/color-tokens-library/color-token.tsx +31 -0
  167. package/template/+nextjs+websockets/components/room-components/color-tokens-library/color-tokens-library.tsx +64 -0
  168. package/template/+nextjs+websockets/components/room-components/connected-users.tsx +152 -0
  169. package/template/+nextjs+websockets/components/room-components/connection-status.tsx +52 -0
  170. package/template/+nextjs+websockets/components/room-components/context-menu.tsx +152 -0
  171. package/template/+nextjs+websockets/components/room-components/frames-library/frames-library.image.tsx +48 -0
  172. package/template/+nextjs+websockets/components/room-components/frames-library/frames-library.presentation-image.tsx +61 -0
  173. package/template/+nextjs+websockets/components/room-components/frames-library/frames-library.tsx +316 -0
  174. package/template/+nextjs+websockets/components/room-components/frames-library/utils.ts +27 -0
  175. package/template/+nextjs+websockets/components/room-components/help/help-arrange.tsx +69 -0
  176. package/template/+nextjs+websockets/components/room-components/help/help-drawer.tsx +140 -0
  177. package/template/+nextjs+websockets/components/room-components/help/help-edit.tsx +80 -0
  178. package/template/+nextjs+websockets/components/room-components/help/help-selection.tsx +30 -0
  179. package/template/+nextjs+websockets/components/room-components/help/help-shortcut-element.tsx +24 -0
  180. package/template/+nextjs+websockets/components/room-components/help/help-tools.tsx +89 -0
  181. package/template/+nextjs+websockets/components/room-components/help/help-view.tsx +30 -0
  182. package/template/+nextjs+websockets/components/room-components/help/help-zoom.tsx +46 -0
  183. package/template/+nextjs+websockets/components/room-components/help/shortcut-element.tsx +42 -0
  184. package/template/+nextjs+websockets/components/room-components/hooks/use-context-menu.tsx +514 -0
  185. package/template/+nextjs+websockets/components/room-components/hooks/use-get-os.ts +12 -0
  186. package/template/+nextjs+websockets/components/room-components/hooks/use-get-weave-js-props.tsx +120 -0
  187. package/template/+nextjs+websockets/components/room-components/hooks/use-get-websockets-provider.ts +79 -0
  188. package/template/+nextjs+websockets/components/room-components/hooks/use-handle-route-params.ts +30 -0
  189. package/template/+nextjs+websockets/components/room-components/hooks/use-key-down.ts +29 -0
  190. package/template/+nextjs+websockets/components/room-components/hooks/use-keyboard-handler.tsx +557 -0
  191. package/template/+nextjs+websockets/components/room-components/images-library/images-library.tsx +146 -0
  192. package/template/+nextjs+websockets/components/room-components/inputs/input-color.tsx +101 -0
  193. package/template/+nextjs+websockets/components/room-components/inputs/input-font-family.tsx +99 -0
  194. package/template/+nextjs+websockets/components/room-components/inputs/input-number.tsx +61 -0
  195. package/template/+nextjs+websockets/components/room-components/inputs/input-text.tsx +51 -0
  196. package/template/+nextjs+websockets/components/room-components/inputs/number-input.tsx +107 -0
  197. package/template/+nextjs+websockets/components/room-components/node-properties/appearance-properties.tsx +119 -0
  198. package/template/+nextjs+websockets/components/room-components/node-properties/color-token-properties.tsx +108 -0
  199. package/template/+nextjs+websockets/components/room-components/node-properties/crop-properties.tsx +156 -0
  200. package/template/+nextjs+websockets/components/room-components/node-properties/fill-properties.tsx +115 -0
  201. package/template/+nextjs+websockets/components/room-components/node-properties/frame-properties.tsx +100 -0
  202. package/template/+nextjs+websockets/components/room-components/node-properties/image-properties.tsx +57 -0
  203. package/template/+nextjs+websockets/components/room-components/node-properties/position-properties.tsx +156 -0
  204. package/template/+nextjs+websockets/components/room-components/node-properties/size-properties.tsx +131 -0
  205. package/template/+nextjs+websockets/components/room-components/node-properties/stroke-properties.tsx +327 -0
  206. package/template/+nextjs+websockets/components/room-components/node-properties/text-properties.tsx +467 -0
  207. package/template/+nextjs+websockets/components/room-components/overlay/multiuse-overlay.tsx +127 -0
  208. package/template/+nextjs+websockets/components/room-components/overlay/node-properties.tsx +98 -0
  209. package/template/+nextjs+websockets/components/room-components/overlay/overlay-animation-wrapper.tsx +31 -0
  210. package/template/+nextjs+websockets/components/room-components/overlay/room-information-overlay.tsx +247 -0
  211. package/template/+nextjs+websockets/components/room-components/overlay/room-users-overlay.tsx +31 -0
  212. package/template/+nextjs+websockets/components/room-components/overlay/tools-overlay.tsx +289 -0
  213. package/template/+nextjs+websockets/components/room-components/overlay/variants.ts +58 -0
  214. package/template/+nextjs+websockets/components/room-components/overlay/zoom-handler-overlay.tsx +447 -0
  215. package/template/+nextjs+websockets/components/room-components/room-error.tsx +37 -0
  216. package/template/+nextjs+websockets/components/room-components/room-loader/room-loader.tsx +98 -0
  217. package/template/+nextjs+websockets/components/room-components/selection-information.tsx +74 -0
  218. package/template/+nextjs+websockets/components/room-components/toggle-icon-button.tsx +60 -0
  219. package/template/+nextjs+websockets/components/room-components/toolbar/toolbar-button.tsx +60 -0
  220. package/template/+nextjs+websockets/components/room-components/toolbar/toolbar-toggle-button.tsx +40 -0
  221. package/template/+nextjs+websockets/components/room-components/toolbar/toolbar.tsx +28 -0
  222. package/template/+nextjs+websockets/components/room-components/upload-file.tsx +130 -0
  223. package/template/+nextjs+websockets/components/room-components/with-instance-node.tsx +53 -0
  224. package/template/+nextjs+websockets/components/ui/accordion.tsx +66 -0
  225. package/template/+nextjs+websockets/components/ui/avatar.tsx +53 -0
  226. package/template/+nextjs+websockets/components/ui/button.tsx +58 -0
  227. package/template/+nextjs+websockets/components/ui/card.tsx +68 -0
  228. package/template/+nextjs+websockets/components/ui/checkbox.tsx +32 -0
  229. package/template/+nextjs+websockets/components/ui/color-picker/color-picker-component.tsx +69 -0
  230. package/template/+nextjs+websockets/components/ui/color-picker/context/color-picker-context.tsx +28 -0
  231. package/template/+nextjs+websockets/components/ui/color-picker/editor/color-picker-format-editor.tsx +34 -0
  232. package/template/+nextjs+websockets/components/ui/color-picker/index.ts +7 -0
  233. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-alpha.tsx +79 -0
  234. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-eyedropper.tsx +95 -0
  235. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-format-selector.tsx +50 -0
  236. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-hue.tsx +67 -0
  237. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-saturation.tsx +145 -0
  238. package/template/+nextjs+websockets/components/ui/color-picker/text-inputs/color-picker-alpha-percentage.tsx +60 -0
  239. package/template/+nextjs+websockets/components/ui/color-picker/text-inputs/color-picker-hexa.tsx +65 -0
  240. package/template/+nextjs+websockets/components/ui/color-picker/text-inputs/color-picker-rgba.tsx +62 -0
  241. package/template/+nextjs+websockets/components/ui/command.tsx +177 -0
  242. package/template/+nextjs+websockets/components/ui/dialog.tsx +135 -0
  243. package/template/+nextjs+websockets/components/ui/drawer.tsx +132 -0
  244. package/template/+nextjs+websockets/components/ui/dropdown-menu.tsx +201 -0
  245. package/template/+nextjs+websockets/components/ui/form.tsx +167 -0
  246. package/template/+nextjs+websockets/components/ui/input.tsx +21 -0
  247. package/template/+nextjs+websockets/components/ui/label.tsx +24 -0
  248. package/template/+nextjs+websockets/components/ui/popover.tsx +48 -0
  249. package/template/+nextjs+websockets/components/ui/reactbits/Backgrounds/Dither/Dither.tsx +350 -0
  250. package/template/+nextjs+websockets/components/ui/reactbits/Backgrounds/Threads/Threads.tsx +239 -0
  251. package/template/+nextjs+websockets/components/ui/reactbits/TextAnimations/RotatingText/RotatingText.tsx +276 -0
  252. package/template/+nextjs+websockets/components/ui/scroll-area.tsx +58 -0
  253. package/template/+nextjs+websockets/components/ui/select.tsx +185 -0
  254. package/template/+nextjs+websockets/components/ui/sheet.tsx +139 -0
  255. package/template/+nextjs+websockets/components/ui/sonner.tsx +25 -0
  256. package/template/+nextjs+websockets/components/ui/tabs.tsx +66 -0
  257. package/template/+nextjs+websockets/components/ui/tooltip.tsx +61 -0
  258. package/template/+nextjs+websockets/components/utils/constants.ts +118 -0
  259. package/template/+nextjs+websockets/components/utils/logo.tsx +34 -0
  260. package/template/+nextjs+websockets/components.json +21 -0
  261. package/template/+nextjs+websockets/example.env +2 -0
  262. package/template/+nextjs+websockets/example.gitignore +44 -0
  263. package/template/+nextjs+websockets/jsrepo.json +11 -0
  264. package/template/+nextjs+websockets/lib/utils.ts +43 -0
  265. package/template/+nextjs+websockets/new-types.d.ts +8 -0
  266. package/template/+nextjs+websockets/next-env.d.ts +5 -0
  267. package/template/+nextjs+websockets/next.config.js +52 -0
  268. package/template/+nextjs+websockets/postcss.config.mjs +5 -0
  269. package/template/+nextjs+websockets/store/store.ts +241 -0
  270. package/template/+nextjs+websockets/tsconfig.json +37 -0
  271. package/template/+nextjs+websockets/vitest.config.mts +10 -0
  272. package/template/package.json +81 -0
@@ -0,0 +1,131 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+ import { WeaveStateElement } from '@inditextech/weave-types';
5
+ import { InputNumber } from '../inputs/input-number';
6
+ import { useWeave } from '@inditextech/weave-react';
7
+ import { useCollaborationRoom } from '@/store/store';
8
+
9
+ export function SizeProperties() {
10
+ const instance = useWeave((state) => state.instance);
11
+ const node = useWeave((state) => state.selection.node);
12
+ const actualAction = useWeave((state) => state.actions.actual);
13
+
14
+ const nodePropertiesAction = useCollaborationRoom(
15
+ (state) => state.nodeProperties.action
16
+ );
17
+
18
+ const nodeCreateProps = useCollaborationRoom(
19
+ (state) => state.nodeProperties.createProps
20
+ );
21
+
22
+ const [actualNode, setActualNode] = React.useState<
23
+ WeaveStateElement | undefined
24
+ >(node);
25
+
26
+ React.useEffect(() => {
27
+ if (!instance) return;
28
+ if (actualAction && nodePropertiesAction === 'create') {
29
+ setActualNode({
30
+ key: 'creating',
31
+ type: 'undefined',
32
+ props: {
33
+ ...nodeCreateProps,
34
+ },
35
+ });
36
+ }
37
+ if (node && nodePropertiesAction === 'update') {
38
+ setActualNode(node);
39
+ }
40
+ if (!actualAction && !node) {
41
+ setActualNode(undefined);
42
+ }
43
+ }, [instance, actualAction, node, nodePropertiesAction, nodeCreateProps]);
44
+
45
+ const updateElement = React.useCallback(
46
+ (updatedNode: WeaveStateElement) => {
47
+ if (!instance) return;
48
+ if (actualAction && nodePropertiesAction === 'create') {
49
+ instance.updatePropsAction(actualAction, updatedNode.props);
50
+ }
51
+ if (nodePropertiesAction === 'update') {
52
+ instance.updateNode(updatedNode);
53
+ }
54
+ },
55
+ [instance, actualAction, nodePropertiesAction]
56
+ );
57
+
58
+ if (!instance || !actualNode || !nodePropertiesAction) {
59
+ return null;
60
+ }
61
+
62
+ if (!actualAction && !actualNode) return null;
63
+
64
+ if (
65
+ actualAction &&
66
+ !['selectionTool', 'rectangleTool', 'imageTool'].includes(actualAction)
67
+ ) {
68
+ return null;
69
+ }
70
+
71
+ return (
72
+ <div className="border-b border-zinc-200">
73
+ <div className="w-full flex justify-between items-center gap-3 p-4 py-3">
74
+ <div className="cursor-pointer hover:no-underline items-center py-0">
75
+ <span className="text-xs font-noto-sans-mono font-light">Size</span>
76
+ </div>
77
+ </div>
78
+ <div className="px-4 pb-4">
79
+ <div className="grid grid-cols-1 gap-3 w-full">
80
+ <div className="w-full flex gap-3">
81
+ <InputNumber
82
+ label="Width (px)"
83
+ value={actualNode.props.width ?? 0}
84
+ onChange={(value) => {
85
+ const updatedNode: WeaveStateElement = {
86
+ ...actualNode,
87
+ props: {
88
+ ...actualNode.props,
89
+ width: value,
90
+ },
91
+ };
92
+ updateElement(updatedNode);
93
+ }}
94
+ />
95
+ <InputNumber
96
+ label="Height (px)"
97
+ value={actualNode.props.height ?? 0}
98
+ onChange={(value) => {
99
+ const updatedNode: WeaveStateElement = {
100
+ ...actualNode,
101
+ props: {
102
+ ...actualNode.props,
103
+ height: value,
104
+ },
105
+ };
106
+ updateElement(updatedNode);
107
+ }}
108
+ />
109
+ </div>
110
+ {['update'].includes(nodePropertiesAction) && (
111
+ <InputNumber
112
+ label="Scale (%)"
113
+ value={(actualNode.props.scaleX ?? 1) * 100}
114
+ onChange={(value) => {
115
+ const updatedNode: WeaveStateElement = {
116
+ ...actualNode,
117
+ props: {
118
+ ...actualNode.props,
119
+ scaleX: value / 100,
120
+ scaleY: value / 100,
121
+ },
122
+ };
123
+ updateElement(updatedNode);
124
+ }}
125
+ />
126
+ )}
127
+ </div>
128
+ </div>
129
+ </div>
130
+ );
131
+ }
@@ -0,0 +1,327 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+ import { WeaveStateElement } from '@inditextech/weave-types';
5
+ import {
6
+ Eye,
7
+ EyeOff,
8
+ Hexagon,
9
+ Slash,
10
+ Spline,
11
+ Tally1,
12
+ Tally2,
13
+ Tally3,
14
+ } from 'lucide-react';
15
+ import { InputColor } from '../inputs/input-color';
16
+ import { InputNumber } from '../inputs/input-number';
17
+ import { ToggleIconButton } from '../toggle-icon-button';
18
+ import { useWeave } from '@inditextech/weave-react';
19
+ import { useCollaborationRoom } from '@/store/store';
20
+
21
+ export function StrokeProperties() {
22
+ const instance = useWeave((state) => state.instance);
23
+ const node = useWeave((state) => state.selection.node);
24
+ const actualAction = useWeave((state) => state.actions.actual);
25
+
26
+ const nodePropertiesAction = useCollaborationRoom(
27
+ (state) => state.nodeProperties.action
28
+ );
29
+
30
+ const nodeCreateProps = useCollaborationRoom(
31
+ (state) => state.nodeProperties.createProps
32
+ );
33
+
34
+ const [actualNode, setActualNode] = React.useState<
35
+ WeaveStateElement | undefined
36
+ >(node);
37
+
38
+ React.useEffect(() => {
39
+ if (!instance) return;
40
+ if (actualAction && nodePropertiesAction === 'create') {
41
+ setActualNode({
42
+ key: 'creating',
43
+ type: 'undefined',
44
+ props: {
45
+ ...nodeCreateProps,
46
+ },
47
+ });
48
+ }
49
+ if (node && nodePropertiesAction === 'update') {
50
+ setActualNode(node);
51
+ }
52
+ if (!actualAction && !node) {
53
+ setActualNode(undefined);
54
+ }
55
+ }, [instance, actualAction, node, nodePropertiesAction, nodeCreateProps]);
56
+
57
+ const updateElement = React.useCallback(
58
+ (updatedNode: WeaveStateElement) => {
59
+ if (!instance) return;
60
+ if (actualAction && nodePropertiesAction === 'create') {
61
+ instance.updatePropsAction(actualAction, updatedNode.props);
62
+ }
63
+ if (nodePropertiesAction === 'update') {
64
+ instance.updateNode(updatedNode);
65
+ }
66
+ },
67
+ [instance, actualAction, nodePropertiesAction]
68
+ );
69
+
70
+ if (!instance || !actualAction || !actualNode) {
71
+ return null;
72
+ }
73
+
74
+ if (!actualAction && !actualNode) return null;
75
+
76
+ if (['colorTokenTool', 'frameTool'].includes(actualAction)) return null;
77
+
78
+ if (['text', 'colorToken', 'frame'].includes(actualNode.type)) {
79
+ return null;
80
+ }
81
+
82
+ return (
83
+ <div className="border-b border-zinc-200">
84
+ <div className="w-full flex justify-between items-center gap-3 p-4 py-3">
85
+ <div className="cursor-pointer hover:no-underline items-center py-0">
86
+ <span className="text-xs font-noto-sans-mono font-light">Stroke</span>
87
+ </div>
88
+ <ToggleIconButton
89
+ kind="toggle"
90
+ icon={<Eye size={12} />}
91
+ pressedIcon={<EyeOff size={12} />}
92
+ pressed={actualNode.props.strokeEnabled ?? true}
93
+ onClick={(e) => {
94
+ e.stopPropagation();
95
+ const updatedNode: WeaveStateElement = {
96
+ ...actualNode,
97
+ props: {
98
+ ...actualNode.props,
99
+ strokeEnabled: !(actualNode.props.strokeEnabled ?? true),
100
+ },
101
+ };
102
+ updateElement(updatedNode);
103
+ }}
104
+ />
105
+ </div>
106
+ <div className="px-4 pb-4">
107
+ <div className="grid grid-cols-2 gap-3 w-full">
108
+ <InputColor
109
+ label="Color (#RGBA)"
110
+ value={`${(actualNode.props.stroke ?? '#000000FF').replace(
111
+ '#',
112
+ ''
113
+ )}`}
114
+ onChange={(value) => {
115
+ const updatedNode: WeaveStateElement = {
116
+ ...actualNode,
117
+ props: {
118
+ ...actualNode.props,
119
+ stroke: `#${value}`,
120
+ },
121
+ };
122
+ updateElement(updatedNode);
123
+ }}
124
+ />
125
+ <InputNumber
126
+ label="Width (px)"
127
+ value={actualNode.props.strokeWidth ?? 1}
128
+ onChange={(value) => {
129
+ const updatedNode: WeaveStateElement = {
130
+ ...actualNode,
131
+ props: {
132
+ ...actualNode.props,
133
+ strokeWidth: value,
134
+ },
135
+ };
136
+ updateElement(updatedNode);
137
+ }}
138
+ />
139
+ {(['line'].includes(actualNode.type) ||
140
+ ['brushTool', 'penTool'].includes(actualAction)) && (
141
+ <>
142
+ <div className="col-span-2">
143
+ <InputNumber
144
+ label="Tension"
145
+ value={actualNode.props.tension ?? 0}
146
+ onChange={(value) => {
147
+ const updatedNode: WeaveStateElement = {
148
+ ...actualNode,
149
+ props: {
150
+ ...actualNode.props,
151
+ tension: value,
152
+ },
153
+ };
154
+ updateElement(updatedNode);
155
+ }}
156
+ />
157
+ </div>
158
+ <div className="w-full flex justify-between items-center gap-4 col-span-2">
159
+ <div className="text-[11px] text-zinc-600 font-noto-sans-mono font-light text-nowrap">
160
+ Line join
161
+ </div>
162
+ <div className="w-full flex justify-end items-center gap-1">
163
+ <ToggleIconButton
164
+ kind="switch"
165
+ icon={<Tally1 size={16} />}
166
+ pressed={(actualNode.props.lineJoin ?? 'miter') === 'miter'}
167
+ onClick={() => {
168
+ const updatedNode: WeaveStateElement = {
169
+ ...actualNode,
170
+ props: {
171
+ ...actualNode.props,
172
+ lineJoin: 'miter',
173
+ },
174
+ };
175
+ updateElement(updatedNode);
176
+ }}
177
+ />
178
+ <ToggleIconButton
179
+ kind="switch"
180
+ icon={<Tally2 size={16} />}
181
+ pressed={(actualNode.props.lineJoin ?? 'miter') === 'round'}
182
+ onClick={() => {
183
+ const updatedNode: WeaveStateElement = {
184
+ ...actualNode,
185
+ props: {
186
+ ...actualNode.props,
187
+ lineJoin: 'round',
188
+ },
189
+ };
190
+ updateElement(updatedNode);
191
+ }}
192
+ />
193
+ <ToggleIconButton
194
+ kind="switch"
195
+ icon={<Tally3 size={16} />}
196
+ pressed={(actualNode.props.lineJoin ?? 'miter') === 'bevel'}
197
+ onClick={() => {
198
+ const updatedNode: WeaveStateElement = {
199
+ ...actualNode,
200
+ props: {
201
+ ...actualNode.props,
202
+ lineJoin: 'bevel',
203
+ },
204
+ };
205
+ updateElement(updatedNode);
206
+ }}
207
+ />
208
+ </div>
209
+ </div>
210
+ <div className="w-full flex justify-between items-center gap-4 col-span-2">
211
+ <div className="text-[11px] text-zinc-600 font-noto-sans-mono font-light text-nowrap">
212
+ Line cap
213
+ </div>
214
+ <div className="w-full flex justify-end items-center gap-1">
215
+ <ToggleIconButton
216
+ kind="switch"
217
+ icon={<Tally1 size={16} />}
218
+ pressed={(actualNode.props.lineCap ?? 'butt') === 'butt'}
219
+ onClick={() => {
220
+ const updatedNode: WeaveStateElement = {
221
+ ...actualNode,
222
+ props: {
223
+ ...actualNode.props,
224
+ lineCap: 'butt',
225
+ },
226
+ };
227
+ updateElement(updatedNode);
228
+ }}
229
+ />
230
+ <ToggleIconButton
231
+ kind="switch"
232
+ icon={<Tally2 size={16} />}
233
+ pressed={(actualNode.props.lineCap ?? 'butt') === 'round'}
234
+ onClick={() => {
235
+ const updatedNode: WeaveStateElement = {
236
+ ...actualNode,
237
+ props: {
238
+ ...actualNode.props,
239
+ lineCap: 'round',
240
+ },
241
+ };
242
+ updateElement(updatedNode);
243
+ }}
244
+ />
245
+ <ToggleIconButton
246
+ kind="switch"
247
+ icon={<Tally3 size={16} />}
248
+ pressed={(actualNode.props.lineCap ?? 'butt') === 'square'}
249
+ onClick={() => {
250
+ const updatedNode: WeaveStateElement = {
251
+ ...actualNode,
252
+ props: {
253
+ ...actualNode.props,
254
+ lineCap: 'square',
255
+ },
256
+ };
257
+ updateElement(updatedNode);
258
+ }}
259
+ />
260
+ </div>
261
+ </div>
262
+ <div className="w-full flex justify-between items-center gap-4 col-span-2">
263
+ <div className="text-[11px] text-zinc-600 font-noto-sans-mono font-light text-nowrap">
264
+ Open / Closed
265
+ </div>
266
+ <div className="w-full flex justify-end items-center gap-1">
267
+ <ToggleIconButton
268
+ kind="switch"
269
+ icon={<Slash size={16} />}
270
+ pressed={(actualNode.props.closed ?? false) === false}
271
+ onClick={() => {
272
+ const updatedNode: WeaveStateElement = {
273
+ ...actualNode,
274
+ props: {
275
+ ...actualNode.props,
276
+ closed: false,
277
+ },
278
+ };
279
+ updateElement(updatedNode);
280
+ }}
281
+ />
282
+ <ToggleIconButton
283
+ kind="switch"
284
+ icon={<Hexagon size={16} />}
285
+ pressed={(actualNode.props.closed ?? false) === true}
286
+ onClick={() => {
287
+ const updatedNode: WeaveStateElement = {
288
+ ...actualNode,
289
+ props: {
290
+ ...actualNode.props,
291
+ closed: true,
292
+ },
293
+ };
294
+ updateElement(updatedNode);
295
+ }}
296
+ />
297
+ </div>
298
+ </div>
299
+ <div className="w-full flex justify-between items-center gap-4 col-span-2">
300
+ <div className="text-[11px] text-zinc-600 font-noto-sans-mono font-light text-nowrap">
301
+ Bezier
302
+ </div>
303
+ <div className="w-full flex justify-end items-center gap-1">
304
+ <ToggleIconButton
305
+ kind="switch"
306
+ icon={<Spline size={16} />}
307
+ pressed={(actualNode.props.bezier ?? false) === true}
308
+ onClick={() => {
309
+ const updatedNode: WeaveStateElement = {
310
+ ...actualNode,
311
+ props: {
312
+ ...actualNode.props,
313
+ bezier: !(actualNode.props.bezier ?? false),
314
+ },
315
+ };
316
+ updateElement(updatedNode);
317
+ }}
318
+ />
319
+ </div>
320
+ </div>
321
+ </>
322
+ )}
323
+ </div>
324
+ </div>
325
+ </div>
326
+ );
327
+ }