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
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # Create Fumadocs App
2
+
3
+ A CLI tool to create new Next.js documentation sites with Fumadocs.
4
+
5
+ ```bash
6
+ npx create-fumadocs-app
7
+ #or
8
+ pnpm create fumadocs-app
9
+ #or
10
+ yarn create fumadocs-app
11
+ ```
@@ -0,0 +1,437 @@
1
+ // src/create-app.ts
2
+ import path from "node:path";
3
+ import fs from "node:fs/promises";
4
+
5
+ // src/git.ts
6
+ import { execSync } from "node:child_process";
7
+ import { rmSync } from "node:fs";
8
+ import { join } from "node:path";
9
+ function isInGitRepository(cwd2) {
10
+ try {
11
+ execSync("git rev-parse --is-inside-work-tree", { stdio: "ignore", cwd: cwd2 });
12
+ return true;
13
+ } catch {
14
+ return false;
15
+ }
16
+ }
17
+ function isInMercurialRepository(cwd2) {
18
+ try {
19
+ execSync("hg --cwd . root", { stdio: "ignore", cwd: cwd2 });
20
+ return true;
21
+ } catch {
22
+ return false;
23
+ }
24
+ }
25
+ function isDefaultBranchSet(cwd2) {
26
+ try {
27
+ execSync("git config init.defaultBranch", { stdio: "ignore", cwd: cwd2 });
28
+ return true;
29
+ } catch {
30
+ return false;
31
+ }
32
+ }
33
+ function tryGitInit(root) {
34
+ let didInit = false;
35
+ try {
36
+ execSync("git --version", { stdio: "ignore" });
37
+ if (isInGitRepository(root) || isInMercurialRepository(root)) {
38
+ return false;
39
+ }
40
+ execSync("git init", { stdio: "ignore", cwd: root });
41
+ didInit = true;
42
+ if (!isDefaultBranchSet(root)) {
43
+ execSync("git checkout -b main", { stdio: "ignore", cwd: root });
44
+ }
45
+ execSync("git add -A", { stdio: "ignore", cwd: root });
46
+ execSync('git commit -m "Initial commit from Create Fumadocs App"', {
47
+ stdio: "ignore",
48
+ cwd: root
49
+ });
50
+ return true;
51
+ } catch {
52
+ if (didInit) {
53
+ try {
54
+ rmSync(join(root, ".git"), { recursive: true, force: true });
55
+ } catch {
56
+ }
57
+ }
58
+ return false;
59
+ }
60
+ }
61
+
62
+ // src/versions.js
63
+ var versions = { "@inditextech/weave-types": "0.1.0", "@inditextech/weave-sdk": "0.1.0", "@inditextech/weave-store-websockets": "0.1.0", "@inditextech/weave-store-azure-web-pubsub": "0.1.0", "@inditextech/weave-react": "0.1.0" };
64
+
65
+ // template/package.json
66
+ var package_default = {
67
+ name: "example-versions",
68
+ version: "0.0.0",
69
+ private: true,
70
+ description: "Used to track dependency versions in create-*-app",
71
+ license: "MIT",
72
+ dependencies: {
73
+ "@hookform/resolvers": "^4.1.3",
74
+ "@inditextech/weave-react": "0.0.0",
75
+ "@inditextech/weave-sdk": "0.0.0",
76
+ "@inditextech/weave-store-websockets": "0.0.0",
77
+ "@inditextech/weave-store-azure-web-pubsub": "0.0.0",
78
+ "@inditextech/weave-types": "0.0.0",
79
+ "@next/env": "^15.2.1",
80
+ "@radix-ui/react-accordion": "^1.2.3",
81
+ "@radix-ui/react-avatar": "^1.1.3",
82
+ "@radix-ui/react-checkbox": "^1.1.4",
83
+ "@radix-ui/react-dialog": "^1.1.6",
84
+ "@radix-ui/react-dropdown-menu": "^2.1.6",
85
+ "@radix-ui/react-label": "^2.1.2",
86
+ "@radix-ui/react-popover": "^1.1.6",
87
+ "@radix-ui/react-scroll-area": "^1.2.3",
88
+ "@radix-ui/react-select": "^2.1.6",
89
+ "@radix-ui/react-slider": "^1.2.3",
90
+ "@radix-ui/react-slot": "^1.1.2",
91
+ "@radix-ui/react-tabs": "^1.1.3",
92
+ "@radix-ui/react-tooltip": "^1.1.8",
93
+ "@react-three/fiber": "^8.18.0",
94
+ "@react-three/postprocessing": "^2.19.1",
95
+ "@tanstack/react-query": "^5.67.1",
96
+ "boring-avatars": "^1.11.2",
97
+ canvas: "^3.1.0",
98
+ "class-variance-authority": "^0.7.1",
99
+ clsx: "^2.1.1",
100
+ cmdk: "^1.0.0",
101
+ color: "^5.0.0",
102
+ "framer-motion": "^11.18.2",
103
+ konva: "^9.3.18",
104
+ motion: "^12.4.7",
105
+ next: "14.2.24",
106
+ "next-themes": "^0.4.6",
107
+ ogl: "^1.0.11",
108
+ "onnxruntime-web": "^1.21.0-dev.20250206-d981b153d3",
109
+ "pdf-lib": "^1.17.1",
110
+ "platform-detect": "^3.0.1",
111
+ postprocessing: "^6.37.1",
112
+ react: "18.2.0",
113
+ "react-dom": "18.2.0",
114
+ "react-hook-form": "^7.54.2",
115
+ "react-number-format": "^5.4.3",
116
+ sharp: "^0.33.5",
117
+ sonner: "^2.0.3",
118
+ "tailwind-merge": "^3.0.2",
119
+ "tailwindcss-animate": "^1.0.7",
120
+ three: "^0.167.1",
121
+ uuid: "^11.1.0",
122
+ vaul: "^1.1.2",
123
+ zod: "^3.24.2",
124
+ zustand: "^5.0.3"
125
+ },
126
+ devDependencies: {
127
+ "@eslint/eslintrc": "^3",
128
+ "@tailwindcss/postcss": "^4",
129
+ "@testing-library/dom": "^10.4.0",
130
+ "@testing-library/react": "^16.2.0",
131
+ "@types/node": "^20",
132
+ "@types/react": "^18",
133
+ "@types/react-dom": "^18",
134
+ "@vitejs/plugin-react": "^4.3.4",
135
+ "@vitest/coverage-v8": "^3.0.7",
136
+ eslint: "^8",
137
+ "eslint-config-next": "14.2.24",
138
+ "eslint-config-prettier": "^10.0.2",
139
+ jsdom: "^26.0.0",
140
+ "lucide-react": "^0.477.0",
141
+ tailwindcss: "^4",
142
+ typescript: "^5",
143
+ "vite-tsconfig-paths": "^5.1.4",
144
+ vitest: "^3.0.7"
145
+ }
146
+ };
147
+
148
+ // src/auto-install.ts
149
+ import { spawn } from "cross-spawn";
150
+ function getPackageManager() {
151
+ const userAgent = process.env.npm_config_user_agent ?? "";
152
+ if (userAgent.startsWith("yarn")) {
153
+ return "yarn";
154
+ }
155
+ if (userAgent.startsWith("pnpm")) {
156
+ return "pnpm";
157
+ }
158
+ if (userAgent.startsWith("bun")) {
159
+ return "bun";
160
+ }
161
+ return "npm";
162
+ }
163
+ function autoInstall(manager, dest) {
164
+ return new Promise((res, reject) => {
165
+ const installProcess = spawn(manager, ["install"], {
166
+ stdio: "ignore",
167
+ env: {
168
+ ...process.env,
169
+ NODE_ENV: "development",
170
+ DISABLE_OPENCOLLECTIVE: "1"
171
+ },
172
+ cwd: dest
173
+ });
174
+ installProcess.on("close", (code) => {
175
+ if (code !== 0) {
176
+ reject(new Error("Install failed"));
177
+ } else {
178
+ res();
179
+ }
180
+ });
181
+ });
182
+ }
183
+
184
+ // src/constants.ts
185
+ import { fileURLToPath } from "node:url";
186
+ var sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);
187
+ var cwd = process.cwd();
188
+
189
+ // src/create-app.ts
190
+ async function create(options) {
191
+ const {
192
+ installDeps = true,
193
+ initializeGit = true,
194
+ log = console.log
195
+ } = options;
196
+ const projectName = path.basename(options.outputDir);
197
+ const dest = path.resolve(cwd, options.outputDir);
198
+ function defaultRename(file) {
199
+ file = file.replace("example.gitignore", ".gitignore");
200
+ file = file.replace("example.env", ".env");
201
+ return file;
202
+ }
203
+ await copy(
204
+ path.join(sourceDir, `template/${options.template}`),
205
+ dest,
206
+ defaultRename
207
+ );
208
+ const packageJson = createPackageJson(projectName, options);
209
+ await fs.writeFile(
210
+ path.join(dest, "package.json"),
211
+ JSON.stringify(packageJson, null, 2)
212
+ );
213
+ const readMe = await getReadme(dest, projectName);
214
+ await fs.writeFile(path.join(dest, "README.md"), readMe);
215
+ if (installDeps) {
216
+ await autoInstall(options.packageManager, dest);
217
+ log("Installed dependencies");
218
+ }
219
+ if (initializeGit && tryGitInit(dest)) {
220
+ log("Initialized Git repository");
221
+ }
222
+ }
223
+ async function getReadme(dest, projectName) {
224
+ const template = await fs.readFile(path.join(dest, "README.md")).then((res) => res.toString());
225
+ return `# ${projectName}
226
+
227
+ ${template}`;
228
+ }
229
+ async function copy(from, to, rename = (s) => s) {
230
+ const stats = await fs.stat(from);
231
+ if (stats.isDirectory()) {
232
+ const files = await fs.readdir(from);
233
+ await Promise.all(
234
+ files.map(
235
+ (file) => copy(path.join(from, file), rename(path.join(to, file)))
236
+ )
237
+ );
238
+ } else {
239
+ await fs.mkdir(path.dirname(to), { recursive: true });
240
+ await fs.copyFile(from, to);
241
+ }
242
+ }
243
+ function createPackageJson(projectName, options) {
244
+ if (options.template === "+nextjs+azure-web-pubsub") {
245
+ return {
246
+ name: projectName,
247
+ version: "0.0.0",
248
+ private: true,
249
+ scripts: {
250
+ build: "next build",
251
+ dev: "next dev --experimental-https",
252
+ lint: "next lint",
253
+ start: "next start"
254
+ },
255
+ dependencies: {
256
+ ...pick(package_default.dependencies, [
257
+ "@hookform/resolvers",
258
+ "@next/env",
259
+ "@radix-ui/react-accordion",
260
+ "@radix-ui/react-avatar",
261
+ "@radix-ui/react-checkbox",
262
+ "@radix-ui/react-dialog",
263
+ "@radix-ui/react-dropdown-menu",
264
+ "@radix-ui/react-label",
265
+ "@radix-ui/react-popover",
266
+ "@radix-ui/react-scroll-area",
267
+ "@radix-ui/react-select",
268
+ "@radix-ui/react-slider",
269
+ "@radix-ui/react-slot",
270
+ "@radix-ui/react-tabs",
271
+ "@radix-ui/react-tooltip",
272
+ "@react-three/fiber",
273
+ "@react-three/postprocessing",
274
+ "@tanstack/react-query",
275
+ "boring-avatars",
276
+ "canvas",
277
+ "class-variance-authority",
278
+ "clsx",
279
+ "cmdk",
280
+ "color",
281
+ "framer-motion",
282
+ "konva",
283
+ "motion",
284
+ "next",
285
+ "next-themes",
286
+ "ogl",
287
+ "onnxruntime-web",
288
+ "pdf-lib",
289
+ "platform-detect",
290
+ "postprocessing",
291
+ "react",
292
+ "react-dom",
293
+ "react-hook-form",
294
+ "react-number-format",
295
+ "sharp",
296
+ "sonner",
297
+ "tailwind-merge",
298
+ "tailwindcss-animate",
299
+ "three",
300
+ "uuid",
301
+ "vaul",
302
+ "zod",
303
+ "zustand"
304
+ ]),
305
+ ...pick(versions, [
306
+ "@inditextech/weave-react",
307
+ "@inditextech/weave-types",
308
+ "@inditextech/weave-sdk",
309
+ "@inditextech/weave-store-azure-web-pubsub"
310
+ ])
311
+ },
312
+ devDependencies: {
313
+ ...pick(package_default.devDependencies, [
314
+ "@eslint/eslintrc",
315
+ "@tailwindcss/postcss",
316
+ "@testing-library/dom",
317
+ "@testing-library/react",
318
+ "@types/node",
319
+ "@types/react",
320
+ "@types/react-dom",
321
+ "@vitejs/plugin-react",
322
+ "eslint",
323
+ "eslint-config-next",
324
+ "eslint-config-prettier",
325
+ "jsdom",
326
+ "lucide-react",
327
+ "tailwindcss",
328
+ "typescript",
329
+ "vite-tsconfig-paths"
330
+ ])
331
+ }
332
+ };
333
+ }
334
+ return {
335
+ name: projectName,
336
+ version: "0.0.0",
337
+ private: true,
338
+ scripts: {
339
+ build: "next build",
340
+ dev: "next dev --experimental-https",
341
+ lint: "next lint",
342
+ start: "next start"
343
+ },
344
+ dependencies: {
345
+ ...pick(package_default.dependencies, [
346
+ "@hookform/resolvers",
347
+ "@next/env",
348
+ "@radix-ui/react-accordion",
349
+ "@radix-ui/react-avatar",
350
+ "@radix-ui/react-checkbox",
351
+ "@radix-ui/react-dialog",
352
+ "@radix-ui/react-dropdown-menu",
353
+ "@radix-ui/react-label",
354
+ "@radix-ui/react-popover",
355
+ "@radix-ui/react-scroll-area",
356
+ "@radix-ui/react-select",
357
+ "@radix-ui/react-slider",
358
+ "@radix-ui/react-slot",
359
+ "@radix-ui/react-tabs",
360
+ "@radix-ui/react-tooltip",
361
+ "@react-three/fiber",
362
+ "@react-three/postprocessing",
363
+ "@tanstack/react-query",
364
+ "boring-avatars",
365
+ "canvas",
366
+ "class-variance-authority",
367
+ "clsx",
368
+ "cmdk",
369
+ "color",
370
+ "framer-motion",
371
+ "konva",
372
+ "motion",
373
+ "next",
374
+ "next-themes",
375
+ "ogl",
376
+ "onnxruntime-web",
377
+ "pdf-lib",
378
+ "platform-detect",
379
+ "postprocessing",
380
+ "react",
381
+ "react-dom",
382
+ "react-hook-form",
383
+ "react-number-format",
384
+ "sharp",
385
+ "sonner",
386
+ "tailwind-merge",
387
+ "tailwindcss-animate",
388
+ "three",
389
+ "uuid",
390
+ "vaul",
391
+ "zod",
392
+ "zustand"
393
+ ]),
394
+ ...pick(versions, [
395
+ "@inditextech/weave-react",
396
+ "@inditextech/weave-types",
397
+ "@inditextech/weave-sdk",
398
+ "@inditextech/weave-store-websockets"
399
+ ])
400
+ },
401
+ devDependencies: {
402
+ ...pick(package_default.devDependencies, [
403
+ "@eslint/eslintrc",
404
+ "@tailwindcss/postcss",
405
+ "@testing-library/dom",
406
+ "@testing-library/react",
407
+ "@types/node",
408
+ "@types/react",
409
+ "@types/react-dom",
410
+ "@vitejs/plugin-react",
411
+ "eslint",
412
+ "eslint-config-next",
413
+ "eslint-config-prettier",
414
+ "jsdom",
415
+ "lucide-react",
416
+ "tailwindcss",
417
+ "typescript",
418
+ "vite-tsconfig-paths"
419
+ ])
420
+ }
421
+ };
422
+ }
423
+ function pick(obj, keys) {
424
+ const result = {};
425
+ for (const key of keys) {
426
+ if (key in obj) {
427
+ result[key] = obj[key];
428
+ }
429
+ }
430
+ return result;
431
+ }
432
+
433
+ export {
434
+ getPackageManager,
435
+ cwd,
436
+ create
437
+ };
@@ -0,0 +1,14 @@
1
+ type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';
2
+
3
+ type Template = '+nextjs+websockets' | '+nextjs+azure-web-pubsub';
4
+ interface Options {
5
+ outputDir: string;
6
+ template: Template;
7
+ packageManager: PackageManager;
8
+ installDeps?: boolean;
9
+ initializeGit?: boolean;
10
+ log?: (message: string) => void;
11
+ }
12
+ declare function create(options: Options): Promise<void>;
13
+
14
+ export { type Options, type Template, create };
@@ -0,0 +1,6 @@
1
+ import {
2
+ create
3
+ } from "./chunk-HZJMO45D.js";
4
+ export {
5
+ create
6
+ };
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/index.js ADDED
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ create,
4
+ cwd,
5
+ getPackageManager
6
+ } from "./chunk-HZJMO45D.js";
7
+
8
+ // src/index.ts
9
+ import fs from "node:fs/promises";
10
+ import path from "node:path";
11
+ import {
12
+ cancel,
13
+ confirm,
14
+ group,
15
+ intro,
16
+ isCancel,
17
+ outro,
18
+ select,
19
+ spinner,
20
+ text
21
+ } from "@clack/prompts";
22
+ import pc from "picocolors";
23
+ var manager = getPackageManager();
24
+ async function main() {
25
+ intro(pc.bgCyan(pc.bold("Create Weave.js Frontend App")));
26
+ const options = await group(
27
+ {
28
+ name: () => text({
29
+ message: "Project name",
30
+ placeholder: "my-app",
31
+ defaultValue: "my-app"
32
+ }),
33
+ template: () => select({
34
+ message: "Choose a template",
35
+ initialValue: "+nextjs+websockets",
36
+ options: [
37
+ {
38
+ value: "+nextjs+websockets",
39
+ label: "Next.js: Weave.js Websockets Store",
40
+ hint: "recommended"
41
+ },
42
+ {
43
+ value: "+nextjs+azure-web-pubsub",
44
+ label: "Next.js: Weave.js Azure Web Pubsub Store"
45
+ }
46
+ ]
47
+ }),
48
+ installDeps: () => confirm({
49
+ message: `Do you want to install packages automatically? (detected as ${manager})`
50
+ })
51
+ },
52
+ {
53
+ onCancel: () => {
54
+ cancel("Installation Stopped.");
55
+ process.exit(0);
56
+ }
57
+ }
58
+ );
59
+ const projectName = options.name.toLowerCase().replace(/\s/, "-");
60
+ const dest = path.resolve(cwd, projectName);
61
+ const destDir = await fs.readdir(dest).catch(() => null);
62
+ if (destDir && destDir.length > 0) {
63
+ const del = await confirm({
64
+ message: `directory ${projectName} already exists, do you want to delete its files?`
65
+ });
66
+ if (isCancel(del)) {
67
+ cancel();
68
+ return;
69
+ }
70
+ if (del) {
71
+ const info2 = spinner();
72
+ info2.start(`Deleting files in ${projectName}`);
73
+ await Promise.all(
74
+ destDir.map((item) => {
75
+ return fs.rm(path.join(dest, item), {
76
+ recursive: true,
77
+ force: true
78
+ });
79
+ })
80
+ );
81
+ info2.stop(`Deleted files in ${projectName}`);
82
+ }
83
+ }
84
+ const info = spinner();
85
+ info.start(`Generating Project`);
86
+ await create({
87
+ packageManager: manager,
88
+ template: options.template,
89
+ outputDir: dest,
90
+ installDeps: options.installDeps,
91
+ log: (message) => {
92
+ info.message(message);
93
+ }
94
+ });
95
+ info.stop("Project Generated");
96
+ outro(pc.bgGreen(pc.bold("Done")));
97
+ console.log(pc.bold("\nOpen the project"));
98
+ console.log(pc.cyan(`cd ${projectName}`));
99
+ console.log(pc.bold("\nRun Development Server"));
100
+ console.log(pc.cyan("npm run dev | pnpm run dev | yarn dev"));
101
+ process.exit(0);
102
+ }
103
+ main().catch((e) => {
104
+ console.error(e);
105
+ throw e;
106
+ });
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "create-weave-frontend-app",
3
+ "version": "0.1.0",
4
+ "description": "Create a new frontend artifact for a site with Weave.js",
5
+ "keywords": [
6
+ "NextJs",
7
+ "next",
8
+ "react",
9
+ "Weave.js"
10
+ ],
11
+ "homepage": "https://inditextech.github.io/weavejs",
12
+ "repository": "github:InditexTech/weavejs",
13
+ "license": "Apache-2.0",
14
+ "author": "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>",
15
+ "type": "module",
16
+ "bin": "./dist/index.js",
17
+ "module": "./dist/create-app.js",
18
+ "types": "./dist/create-app.d.ts",
19
+ "files": [
20
+ "template/*",
21
+ "dist/*"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsup",
25
+ "bump:snapshot": "npm version $npm_package_version.$(date \"+%s\")",
26
+ "clean": "rimraf dist",
27
+ "dev": "tsup --watch",
28
+ "link": "npm link",
29
+ "lint:fix": "npm run lint -- --fix",
30
+ "lint": "eslint ./src",
31
+ "publish:snapshot": "npm publish",
32
+ "release:perform": "npm publish --access public",
33
+ "release:prepare": "npm run verify",
34
+ "test": "echo \"No tests defined\" && exit 0",
35
+ "types:check": "tsc --noEmit",
36
+ "verify": "npm run lint && npm run test && npm run build",
37
+ "version:development": "npm version $(npm version minor)-SNAPSHOT",
38
+ "version:release": "npm version $RELEASE_VERSION -m \"[npm-scripts] prepare release $RELEASE_VERSION\" --tag-version-prefix \"\""
39
+ },
40
+ "dependencies": {
41
+ "@clack/prompts": "^0.10.1",
42
+ "cross-spawn": "^7.0.6",
43
+ "picocolors": "^1.1.1"
44
+ },
45
+ "devDependencies": {
46
+ "@types/cross-spawn": "^6.0.6",
47
+ "@types/node": "22.14.1",
48
+ "fast-glob": "^3.3.3"
49
+ },
50
+ "engines": {
51
+ "node": "^18.12 || ^20.11 || ^22.11"
52
+ },
53
+ "publishConfig": {
54
+ "access": "public"
55
+ },
56
+ "nx": {
57
+ "implicitDependencies": [
58
+ "@inditextech/weave-react",
59
+ "@inditextech/weave-sdk",
60
+ "@inditextech/weave-store-azure-web-pubsub",
61
+ "@inditextech/weave-store-websockets",
62
+ "@inditextech/weave-types"
63
+ ]
64
+ }
65
+ }
@@ -0,0 +1,36 @@
1
+ # Weave.js Frontend start template
2
+
3
+ This is a Next.js application that was generated with **Create Weave.js Frontend**
4
+
5
+ ## Quickstart
6
+
7
+ If you skipped the automatic installation of the dependencies, run first this
8
+ command:
9
+
10
+ ```bash
11
+ npm install
12
+ # or
13
+ pnpm install
14
+ # or
15
+ yarn install
16
+ ```
17
+
18
+ Now, lets run the development server:
19
+
20
+ ```bash
21
+ npm run dev
22
+ # or
23
+ pnpm dev
24
+ # or
25
+ yarn dev
26
+ ```
27
+
28
+ ## Learn more
29
+
30
+ To learn more about Next.js and Weave.js, take a look at the following
31
+ resources:
32
+
33
+ - [Next.js](https://nextjs.org/) - learn about Next.js
34
+ - [Next.js documentation](https://nextjs.org/docs) - get started using Next.js
35
+ - [Weave.js](https://inditextech.github.io/weavejs) - learn about Weave.js
36
+ - [Weave.js repository](https://github.com/InditexTech/weavejs) - check out out code.
@@ -0,0 +1,8 @@
1
+ export const delImage = async (roomId: string, imageId: string) => {
2
+ const endpoint = `${process.env.NEXT_PUBLIC_API_ENDPOINT}/rooms/${roomId}/images/${imageId}`;
3
+ const response = await fetch(endpoint, {
4
+ method: 'DELETE',
5
+ });
6
+ const data = await response.json();
7
+ return data;
8
+ };