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,241 @@
1
+ import { Vector2d } from 'konva/lib/types';
2
+ import { create } from 'zustand';
3
+ import { ContextMenuOption } from '@/components/room-components/context-menu';
4
+ import { WeaveElementAttributes } from '@inditextech/weave-types';
5
+
6
+ type ShowcaseUser = {
7
+ name: string;
8
+ email: string;
9
+ };
10
+
11
+ type NodePropertiesAction = 'create' | 'update' | undefined;
12
+
13
+ type FinishUploadCallback = (imageURL: string) => void;
14
+
15
+ interface CollaborationRoomState {
16
+ fetchConnectionUrl: {
17
+ loading: boolean;
18
+ error: Error | null;
19
+ };
20
+ ui: {
21
+ show: boolean;
22
+ };
23
+ user: ShowcaseUser | undefined;
24
+ room: string | undefined;
25
+ contextMenu: {
26
+ show: boolean;
27
+ position: Vector2d;
28
+ options: ContextMenuOption[];
29
+ };
30
+ nodeProperties: {
31
+ action: NodePropertiesAction;
32
+ createProps: WeaveElementAttributes | undefined;
33
+ visible: boolean;
34
+ };
35
+ images: {
36
+ showSelectFile: boolean;
37
+ transforming: boolean;
38
+ uploading: boolean;
39
+ loading: boolean;
40
+ finishUploadCallback: FinishUploadCallback | null;
41
+ library: {
42
+ visible: boolean;
43
+ };
44
+ };
45
+ frames: {
46
+ library: {
47
+ visible: boolean;
48
+ };
49
+ };
50
+ colorToken: {
51
+ library: {
52
+ visible: boolean;
53
+ };
54
+ };
55
+ setShowUi: (newShowUI: boolean) => void;
56
+ setFetchConnectionUrlLoading: (newLoading: boolean) => void;
57
+ setFetchConnectionUrlError: (
58
+ newFetchConnectionUrlError: Error | null
59
+ ) => void;
60
+ setUser: (newUser: ShowcaseUser | undefined) => void;
61
+ setRoom: (newRoom: string | undefined) => void;
62
+ setContextMenuShow: (newContextMenuShow: boolean) => void;
63
+ setContextMenuPosition: (newContextMenuPosition: Vector2d) => void;
64
+ setContextMenuOptions: (newContextMenuOptions: ContextMenuOption[]) => void;
65
+ setTransformingImage: (newTransformingImage: boolean) => void;
66
+ setUploadingImage: (newUploadingImage: boolean) => void;
67
+ setShowSelectFileImage: (newShowSelectFileImage: boolean) => void;
68
+ setLoadingImage: (newLoadingImage: boolean) => void;
69
+ setFinishUploadCallbackImage: (
70
+ newFinishUploadCallbackImage: FinishUploadCallback | null
71
+ ) => void;
72
+ setNodePropertiesAction: (
73
+ newNodePropertiesAction: NodePropertiesAction
74
+ ) => void;
75
+ setNodePropertiesCreateProps: (
76
+ newNodePropertiesCreateProps: WeaveElementAttributes | undefined
77
+ ) => void;
78
+ setNodePropertiesVisible: (newNodePropertiesVisible: boolean) => void;
79
+ setImagesLibraryVisible: (newImagesLibraryVisible: boolean) => void;
80
+ setFramesLibraryVisible: (newFramesLibraryVisible: boolean) => void;
81
+ setColorTokensLibraryVisible: (newColorTokensLibraryVisible: boolean) => void;
82
+ }
83
+
84
+ export const useCollaborationRoom = create<CollaborationRoomState>()((set) => ({
85
+ ui: {
86
+ show: true,
87
+ },
88
+ fetchConnectionUrl: {
89
+ loading: false,
90
+ error: null,
91
+ },
92
+ user: undefined,
93
+ room: undefined,
94
+ contextMenu: {
95
+ show: false,
96
+ position: { x: 0, y: 0 },
97
+ options: [],
98
+ },
99
+ nodeProperties: {
100
+ action: undefined,
101
+ visible: false,
102
+ createProps: undefined,
103
+ },
104
+ images: {
105
+ showSelectFile: false,
106
+ transforming: false,
107
+ uploading: false,
108
+ loading: false,
109
+ finishUploadCallback: null,
110
+ library: {
111
+ visible: false,
112
+ },
113
+ },
114
+ frames: {
115
+ library: {
116
+ visible: false,
117
+ },
118
+ },
119
+ colorToken: {
120
+ library: {
121
+ visible: false,
122
+ },
123
+ },
124
+ setShowUi: (newShowUI) =>
125
+ set((state) => ({
126
+ ...state,
127
+ ui: { ...state.ui, show: newShowUI },
128
+ })),
129
+ setFetchConnectionUrlLoading: (newLoading) =>
130
+ set((state) => ({
131
+ ...state,
132
+ fetchConnectionUrl: { ...state.fetchConnectionUrl, loading: newLoading },
133
+ })),
134
+ setFetchConnectionUrlError: (newFetchConnectionUrlError) =>
135
+ set((state) => ({
136
+ ...state,
137
+ fetchConnectionUrl: {
138
+ ...state.fetchConnectionUrl,
139
+ error: newFetchConnectionUrlError,
140
+ },
141
+ })),
142
+ setUser: (newUser) => set((state) => ({ ...state, user: newUser })),
143
+ setRoom: (newRoom) => set((state) => ({ ...state, room: newRoom })),
144
+ setContextMenuShow: (newContextMenuShow) =>
145
+ set((state) => ({
146
+ ...state,
147
+ contextMenu: { ...state.contextMenu, show: newContextMenuShow },
148
+ })),
149
+ setContextMenuPosition: (newContextMenuPosition) =>
150
+ set((state) => ({
151
+ ...state,
152
+ contextMenu: { ...state.contextMenu, position: newContextMenuPosition },
153
+ })),
154
+ setContextMenuOptions: (newContextMenuOptions) =>
155
+ set((state) => ({
156
+ ...state,
157
+ contextMenu: { ...state.contextMenu, options: newContextMenuOptions },
158
+ })),
159
+ setTransformingImage: (newTransformingImage) =>
160
+ set((state) => ({
161
+ ...state,
162
+ images: { ...state.images, transforming: newTransformingImage },
163
+ })),
164
+ setUploadingImage: (newUploadingImage) =>
165
+ set((state) => ({
166
+ ...state,
167
+ images: { ...state.images, uploading: newUploadingImage },
168
+ })),
169
+ setShowSelectFileImage: (newShowSelectFileImage) =>
170
+ set((state) => ({
171
+ ...state,
172
+ images: { ...state.images, showSelectFile: newShowSelectFileImage },
173
+ })),
174
+ setLoadingImage: (newLoadingImage) =>
175
+ set((state) => ({
176
+ ...state,
177
+ images: { ...state.images, loading: newLoadingImage },
178
+ })),
179
+ setFinishUploadCallbackImage: (newFinishUploadCallbackImage) =>
180
+ set((state) => ({
181
+ ...state,
182
+ images: {
183
+ ...state.images,
184
+ finishUploadCallback: newFinishUploadCallbackImage,
185
+ },
186
+ })),
187
+ setNodePropertiesAction: (newNodePropertiesAction) =>
188
+ set((state) => ({
189
+ ...state,
190
+ nodeProperties: {
191
+ ...state.nodeProperties,
192
+ action: newNodePropertiesAction,
193
+ },
194
+ })),
195
+ setNodePropertiesCreateProps: (newNodePropertiesCreateProps) =>
196
+ set((state) => ({
197
+ ...state,
198
+ nodeProperties: {
199
+ ...state.nodeProperties,
200
+ createProps: newNodePropertiesCreateProps,
201
+ },
202
+ })),
203
+ setNodePropertiesVisible: (newNodePropertiesVisible) =>
204
+ set((state) => ({
205
+ ...state,
206
+ nodeProperties: {
207
+ ...state.nodeProperties,
208
+ visible: newNodePropertiesVisible,
209
+ },
210
+ })),
211
+ setImagesLibraryVisible: (newImagesLibraryVisible) =>
212
+ set((state) => ({
213
+ ...state,
214
+ images: {
215
+ ...state.images,
216
+ library: { ...state.images.library, visible: newImagesLibraryVisible },
217
+ },
218
+ })),
219
+ setFramesLibraryVisible: (newFramesLibraryVisible) =>
220
+ set((state) => ({
221
+ ...state,
222
+ frames: {
223
+ ...state.frames,
224
+ library: {
225
+ ...state.frames.library,
226
+ visible: newFramesLibraryVisible,
227
+ },
228
+ },
229
+ })),
230
+ setColorTokensLibraryVisible: (newColorTokensLibraryVisible) =>
231
+ set((state) => ({
232
+ ...state,
233
+ colorToken: {
234
+ ...state.colorToken,
235
+ library: {
236
+ ...state.colorToken.library,
237
+ visible: newColorTokensLibraryVisible,
238
+ },
239
+ },
240
+ })),
241
+ }));
@@ -0,0 +1,37 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2017",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "preserve",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "baseUrl": ".",
22
+ "paths": {
23
+ "@/*": ["./*"],
24
+ "konva": ["./node_modules/konva"],
25
+ "konva/lib/types": ["./node_modules/konva/lib/types"]
26
+ }
27
+ },
28
+ "include": [
29
+ "new-types.d.ts",
30
+ "next-env.d.ts",
31
+ "**/*.ts",
32
+ "**/*.tsx",
33
+ ".next/types/**/*.ts",
34
+ "next.config.mts"
35
+ ],
36
+ "exclude": ["node_modules"]
37
+ }
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from 'vitest/config'
2
+ import react from '@vitejs/plugin-react'
3
+ import tsconfigPaths from 'vite-tsconfig-paths'
4
+
5
+ export default defineConfig({
6
+ plugins: [tsconfigPaths(), react()],
7
+ test: {
8
+ environment: 'jsdom',
9
+ },
10
+ })
@@ -0,0 +1,39 @@
1
+ # Weave.js Frontend start template
2
+
3
+ This is a Next.js application 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
+ This App uses the Weave.js
19
+ [Azure Web Pubsub store](https://inditextech.github.io/weavejs/docs/main/build/stores/azure-web-pubsub-store). So before start the development server please setup on the `.env` file the configuration for your Azure Web Pubsub instance.
20
+
21
+ After configures, lets run the development server:
22
+
23
+ ```bash
24
+ npm run dev
25
+ # or
26
+ pnpm dev
27
+ # or
28
+ yarn dev
29
+ ```
30
+
31
+ ## Learn more
32
+
33
+ To learn more about Next.js and Weave.js, take a look at the following
34
+ resources:
35
+
36
+ - [Next.js](https://nextjs.org/) - learn about Next.js
37
+ - [Next.js documentation](https://nextjs.org/docs) - get started using Next.js
38
+ - [Weave.js](https://inditextech.github.io/weavejs) - learn about Weave.js
39
+ - [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
+ };
@@ -0,0 +1,15 @@
1
+ export const getImages = async (
2
+ roomId: string,
3
+ pageSize: number,
4
+ page: string | undefined
5
+ ) => {
6
+ let endpoint = `${process.env.NEXT_PUBLIC_API_ENDPOINT}/rooms/${roomId}/images?pageSize=${pageSize}`;
7
+
8
+ if (page) {
9
+ endpoint = `${endpoint}&page=${page}`;
10
+ }
11
+
12
+ const response = await fetch(endpoint);
13
+ const data = await response.json();
14
+ return data;
15
+ };
@@ -0,0 +1,14 @@
1
+ export const postImage = async (roomId: string, file: File) => {
2
+ const formData = new FormData();
3
+ formData.append('file', file);
4
+
5
+ const endpoint = `${process.env.NEXT_PUBLIC_API_ENDPOINT}/rooms/${roomId}/images`;
6
+ const response = await fetch(endpoint, {
7
+ method: 'POST',
8
+ body: formData,
9
+ });
10
+
11
+ const data = await response.json();
12
+
13
+ return data;
14
+ };
@@ -0,0 +1,10 @@
1
+ export const postRemoveBackground = async (roomId: string, imageId: string) => {
2
+ const endpoint = `${process.env.NEXT_PUBLIC_API_ENDPOINT}/rooms/${roomId}/images/${imageId}/remove-background`;
3
+ const response = await fetch(endpoint, {
4
+ method: 'POST',
5
+ });
6
+
7
+ const data = await response.json();
8
+
9
+ return data;
10
+ };
@@ -0,0 +1,10 @@
1
+ import { Error } from "@/components/error/error";
2
+ import { Suspense } from "react";
3
+
4
+ export default function ErrorPage() {
5
+ return (
6
+ <Suspense>
7
+ <Error />
8
+ </Suspense>
9
+ );
10
+ }
@@ -0,0 +1,193 @@
1
+ @import "tailwindcss";
2
+
3
+ @plugin "tailwindcss-animate";
4
+
5
+ @custom-variant dark (&:is(.dark *));
6
+
7
+ @theme {
8
+ --font-noto-sans: var(--font-noto-sans);
9
+ --font-noto-sans-mono: var(--font-noto-sans-mono);
10
+ }
11
+
12
+ .custom-scrollbar {
13
+ scrollbar-width: thin;
14
+ scrollbar-color: rgba(156, 163, 175, 0.5) transparent;
15
+ padding-right: 6px;
16
+ padding-left: 6px;
17
+ }
18
+
19
+ .custom-scrollbar::-webkit-scrollbar {
20
+ width: 6px;
21
+ }
22
+
23
+ .custom-scrollbar::-webkit-scrollbar-track {
24
+ background: transparent;
25
+ border-radius: 10px;
26
+ }
27
+
28
+ .custom-scrollbar::-webkit-scrollbar-thumb {
29
+ background-color: rgba(156, 163, 175, 0.5);
30
+ border-radius: 10px;
31
+ transition: background-color 0.5s ease;
32
+ border: 1px solid transparent;
33
+ background-clip: padding-box;
34
+ }
35
+
36
+ .custom-scrollbar::-webkit-scrollbar-thumb:hover {
37
+ background-color: rgba(107, 114, 128, 0.7);
38
+ }
39
+
40
+ .custom-scrollbar {
41
+ scrollbar-width: thin;
42
+ scrollbar-color: rgba(156, 163, 175, 0.5) transparent;
43
+ }
44
+
45
+ .scrollbar-gutter {
46
+ scrollbar-gutter: stable;
47
+ }
48
+
49
+ :root {
50
+ --background: oklch(1 0 0);
51
+ --foreground: oklch(0.141 0.005 285.823);
52
+ --card: oklch(1 0 0);
53
+ --card-foreground: oklch(0.141 0.005 285.823);
54
+ --popover: oklch(1 0 0);
55
+ --popover-foreground: oklch(0.141 0.005 285.823);
56
+ --primary: oklch(0.21 0.006 285.885);
57
+ --primary-foreground: oklch(0.985 0 0);
58
+ --secondary: oklch(0.967 0.001 286.375);
59
+ --secondary-foreground: oklch(0.21 0.006 285.885);
60
+ --muted: oklch(0.967 0.001 286.375);
61
+ --muted-foreground: oklch(0.552 0.016 285.938);
62
+ --accent: oklch(0.967 0.001 286.375);
63
+ --accent-foreground: oklch(0.21 0.006 285.885);
64
+ --destructive: oklch(0.577 0.245 27.325);
65
+ --destructive-foreground: oklch(0.577 0.245 27.325);
66
+ --border: oklch(0.92 0.004 286.32);
67
+ --input: oklch(0.92 0.004 286.32);
68
+ --ring: oklch(0.871 0.006 286.286);
69
+ --chart-1: oklch(0.646 0.222 41.116);
70
+ --chart-2: oklch(0.6 0.118 184.704);
71
+ --chart-3: oklch(0.398 0.07 227.392);
72
+ --chart-4: oklch(0.828 0.189 84.429);
73
+ --chart-5: oklch(0.769 0.188 70.08);
74
+ --radius: 0.625rem;
75
+ --sidebar: oklch(0.985 0 0);
76
+ --sidebar-foreground: oklch(0.141 0.005 285.823);
77
+ --sidebar-primary: oklch(0.21 0.006 285.885);
78
+ --sidebar-primary-foreground: oklch(0.985 0 0);
79
+ --sidebar-accent: oklch(0.967 0.001 286.375);
80
+ --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
81
+ --sidebar-border: oklch(0.92 0.004 286.32);
82
+ --sidebar-ring: oklch(0.871 0.006 286.286);
83
+ }
84
+
85
+ .dark {
86
+ --background: oklch(0.141 0.005 285.823);
87
+ --foreground: oklch(0.985 0 0);
88
+ --card: oklch(0.141 0.005 285.823);
89
+ --card-foreground: oklch(0.985 0 0);
90
+ --popover: oklch(0.141 0.005 285.823);
91
+ --popover-foreground: oklch(0.985 0 0);
92
+ --primary: oklch(0.985 0 0);
93
+ --primary-foreground: oklch(0.21 0.006 285.885);
94
+ --secondary: oklch(0.274 0.006 286.033);
95
+ --secondary-foreground: oklch(0.985 0 0);
96
+ --muted: oklch(0.274 0.006 286.033);
97
+ --muted-foreground: oklch(0.705 0.015 286.067);
98
+ --accent: oklch(0.274 0.006 286.033);
99
+ --accent-foreground: oklch(0.985 0 0);
100
+ --destructive: oklch(0.396 0.141 25.723);
101
+ --destructive-foreground: oklch(0.637 0.237 25.331);
102
+ --border: oklch(0.274 0.006 286.033);
103
+ --input: oklch(0.274 0.006 286.033);
104
+ --ring: oklch(0.442 0.017 285.786);
105
+ --chart-1: oklch(0.488 0.243 264.376);
106
+ --chart-2: oklch(0.696 0.17 162.48);
107
+ --chart-3: oklch(0.769 0.188 70.08);
108
+ --chart-4: oklch(0.627 0.265 303.9);
109
+ --chart-5: oklch(0.645 0.246 16.439);
110
+ --sidebar: oklch(0.21 0.006 285.885);
111
+ --sidebar-foreground: oklch(0.985 0 0);
112
+ --sidebar-primary: oklch(0.488 0.243 264.376);
113
+ --sidebar-primary-foreground: oklch(0.985 0 0);
114
+ --sidebar-accent: oklch(0.274 0.006 286.033);
115
+ --sidebar-accent-foreground: oklch(0.985 0 0);
116
+ --sidebar-border: oklch(0.274 0.006 286.033);
117
+ --sidebar-ring: oklch(0.442 0.017 285.786);
118
+ }
119
+
120
+ @theme inline {
121
+ --color-background: var(--background);
122
+ --color-foreground: var(--foreground);
123
+ --color-card: var(--card);
124
+ --color-card-foreground: var(--card-foreground);
125
+ --color-popover: var(--popover);
126
+ --color-popover-foreground: var(--popover-foreground);
127
+ --color-primary: var(--primary);
128
+ --color-primary-foreground: var(--primary-foreground);
129
+ --color-secondary: var(--secondary);
130
+ --color-secondary-foreground: var(--secondary-foreground);
131
+ --color-muted: var(--muted);
132
+ --color-muted-foreground: var(--muted-foreground);
133
+ --color-accent: var(--accent);
134
+ --color-accent-foreground: var(--accent-foreground);
135
+ --color-destructive: var(--destructive);
136
+ --color-destructive-foreground: var(--destructive-foreground);
137
+ --color-border: var(--border);
138
+ --color-input: var(--input);
139
+ --color-ring: var(--ring);
140
+ --color-chart-1: var(--chart-1);
141
+ --color-chart-2: var(--chart-2);
142
+ --color-chart-3: var(--chart-3);
143
+ --color-chart-4: var(--chart-4);
144
+ --color-chart-5: var(--chart-5);
145
+ --radius-sm: calc(var(--radius) - 4px);
146
+ --radius-md: calc(var(--radius) - 2px);
147
+ --radius-lg: var(--radius);
148
+ --radius-xl: calc(var(--radius) + 4px);
149
+ --color-sidebar: var(--sidebar);
150
+ --color-sidebar-foreground: var(--sidebar-foreground);
151
+ --color-sidebar-primary: var(--sidebar-primary);
152
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
153
+ --color-sidebar-accent: var(--sidebar-accent);
154
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
155
+ --color-sidebar-border: var(--sidebar-border);
156
+ --color-sidebar-ring: var(--sidebar-ring);
157
+ --spacing-1: 4px;
158
+ --spacing-2: 8px;
159
+ --spacing-3: 12px;
160
+ --spacing-4: 16px;
161
+ --spacing-5: 20px;
162
+ --spacing-6: 24px;
163
+ --spacing-7: 32px;
164
+ --spacing-8: 40px;
165
+ --spacing-9: 48px;
166
+ --spacing-10: 56px;
167
+ --spacing-11: 64px;
168
+ --spacing-12: 80px;
169
+ --spacing-13: 96px;
170
+ --spacing-14: 112px;
171
+ --spacing-15: 128px;
172
+ }
173
+
174
+ @layer base {
175
+ * {
176
+ @apply border-border outline-ring/50;
177
+ }
178
+ html {
179
+ @apply w-full h-full;
180
+ }
181
+ body {
182
+ @apply bg-background ring-0 text-foreground w-full h-full;
183
+ }
184
+ }
185
+
186
+ @layer base {
187
+ * {
188
+ @apply border-border outline-ring/50;
189
+ }
190
+ body {
191
+ @apply bg-background ring-0 text-foreground;
192
+ }
193
+ }
@@ -0,0 +1,46 @@
1
+ import type { Metadata, Viewport } from "next";
2
+ import { Noto_Sans, Noto_Sans_Mono } from "next/font/google";
3
+ import "./globals.css";
4
+ import { AppProviders } from "./providers";
5
+
6
+ const notoSans = Noto_Sans({
7
+ preload: true,
8
+ variable: "--font-noto-sans",
9
+ subsets: ["latin"],
10
+ });
11
+
12
+ const notoSansMono = Noto_Sans_Mono({
13
+ preload: true,
14
+ variable: "--font-noto-sans-mono",
15
+ subsets: ["latin"],
16
+ });
17
+
18
+ export const viewport: Viewport = {
19
+ width: "device-width",
20
+ initialScale: 1,
21
+ maximumScale: 1,
22
+ userScalable: false,
23
+ // Also supported but less commonly used
24
+ // interactiveWidget: 'resizes-visual',
25
+ };
26
+
27
+ export const metadata: Metadata = {
28
+ title: "WeaveJS Playground",
29
+ description: "This is a playground for WeaveJS",
30
+ };
31
+
32
+ export default function RootLayout({
33
+ children,
34
+ }: Readonly<{
35
+ children: React.ReactNode;
36
+ }>) {
37
+ return (
38
+ <html lang="en">
39
+ <body
40
+ className={`${notoSans.variable} ${notoSansMono.variable} antialiased`}
41
+ >
42
+ <AppProviders>{children}</AppProviders>
43
+ </body>
44
+ </html>
45
+ );
46
+ }
@@ -0,0 +1,7 @@
1
+ import { Home } from "@/components/home/home";
2
+
3
+ export default function HomePage() {
4
+ return (
5
+ <Home />
6
+ );
7
+ }
@@ -0,0 +1,18 @@
1
+ "use client"
2
+
3
+ import {
4
+ QueryClient,
5
+ QueryClientProvider,
6
+ } from "@tanstack/react-query";
7
+
8
+ type AppProvidersProps = {
9
+ children: React.ReactNode;
10
+ };
11
+
12
+ const queryClient = new QueryClient();
13
+
14
+ export function AppProviders({ children }: Readonly<AppProvidersProps>) {
15
+ return (
16
+ <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
17
+ )
18
+ }
@@ -0,0 +1,5 @@
1
+ import { Room } from "@/components/room/room";
2
+
3
+ export default function RoomPage() {
4
+ return <Room />;
5
+ }