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,201 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
5
+ import { Check, ChevronRight, Circle } from "lucide-react";
6
+
7
+ import { cn } from "@/lib/utils";
8
+
9
+ const DropdownMenu = DropdownMenuPrimitive.Root;
10
+
11
+ const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
12
+
13
+ const DropdownMenuGroup = DropdownMenuPrimitive.Group;
14
+
15
+ const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
16
+
17
+ const DropdownMenuSub = DropdownMenuPrimitive.Sub;
18
+
19
+ const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
20
+
21
+ const DropdownMenuSubTrigger = React.forwardRef<
22
+ React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
23
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
24
+ inset?: boolean;
25
+ }
26
+ >(({ className, inset, children, ...props }, ref) => (
27
+ <DropdownMenuPrimitive.SubTrigger
28
+ ref={ref}
29
+ className={cn(
30
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
31
+ inset && "pl-8",
32
+ className
33
+ )}
34
+ {...props}
35
+ >
36
+ {children}
37
+ <ChevronRight className="ml-auto" />
38
+ </DropdownMenuPrimitive.SubTrigger>
39
+ ));
40
+ DropdownMenuSubTrigger.displayName =
41
+ DropdownMenuPrimitive.SubTrigger.displayName;
42
+
43
+ const DropdownMenuSubContent = React.forwardRef<
44
+ React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
45
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
46
+ >(({ className, ...props }, ref) => (
47
+ <DropdownMenuPrimitive.SubContent
48
+ ref={ref}
49
+ className={cn(
50
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
51
+ className
52
+ )}
53
+ {...props}
54
+ />
55
+ ));
56
+ DropdownMenuSubContent.displayName =
57
+ DropdownMenuPrimitive.SubContent.displayName;
58
+
59
+ const DropdownMenuContent = React.forwardRef<
60
+ React.ElementRef<typeof DropdownMenuPrimitive.Content>,
61
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
62
+ >(({ className, sideOffset = 4, ...props }, ref) => (
63
+ <DropdownMenuPrimitive.Portal>
64
+ <DropdownMenuPrimitive.Content
65
+ ref={ref}
66
+ sideOffset={sideOffset}
67
+ className={cn(
68
+ "z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
69
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
70
+ className
71
+ )}
72
+ {...props}
73
+ />
74
+ </DropdownMenuPrimitive.Portal>
75
+ ));
76
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
77
+
78
+ const DropdownMenuItem = React.forwardRef<
79
+ React.ElementRef<typeof DropdownMenuPrimitive.Item>,
80
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
81
+ inset?: boolean;
82
+ }
83
+ >(({ className, inset, ...props }, ref) => (
84
+ <DropdownMenuPrimitive.Item
85
+ ref={ref}
86
+ className={cn(
87
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
88
+ inset && "pl-8",
89
+ className
90
+ )}
91
+ {...props}
92
+ />
93
+ ));
94
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
95
+
96
+ const DropdownMenuCheckboxItem = React.forwardRef<
97
+ React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
98
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
99
+ >(({ className, children, checked, ...props }, ref) => (
100
+ <DropdownMenuPrimitive.CheckboxItem
101
+ ref={ref}
102
+ className={cn(
103
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
104
+ className
105
+ )}
106
+ checked={checked}
107
+ {...props}
108
+ >
109
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
110
+ <DropdownMenuPrimitive.ItemIndicator>
111
+ <Check className="h-4 w-4" />
112
+ </DropdownMenuPrimitive.ItemIndicator>
113
+ </span>
114
+ {children}
115
+ </DropdownMenuPrimitive.CheckboxItem>
116
+ ));
117
+ DropdownMenuCheckboxItem.displayName =
118
+ DropdownMenuPrimitive.CheckboxItem.displayName;
119
+
120
+ const DropdownMenuRadioItem = React.forwardRef<
121
+ React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
122
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
123
+ >(({ className, children, ...props }, ref) => (
124
+ <DropdownMenuPrimitive.RadioItem
125
+ ref={ref}
126
+ className={cn(
127
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
128
+ className
129
+ )}
130
+ {...props}
131
+ >
132
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
133
+ <DropdownMenuPrimitive.ItemIndicator>
134
+ <Circle className="h-2 w-2 fill-current" />
135
+ </DropdownMenuPrimitive.ItemIndicator>
136
+ </span>
137
+ {children}
138
+ </DropdownMenuPrimitive.RadioItem>
139
+ ));
140
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
141
+
142
+ const DropdownMenuLabel = React.forwardRef<
143
+ React.ElementRef<typeof DropdownMenuPrimitive.Label>,
144
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
145
+ inset?: boolean;
146
+ }
147
+ >(({ className, inset, ...props }, ref) => (
148
+ <DropdownMenuPrimitive.Label
149
+ ref={ref}
150
+ className={cn(
151
+ "px-2 py-1.5 text-sm font-semibold",
152
+ inset && "pl-8",
153
+ className
154
+ )}
155
+ {...props}
156
+ />
157
+ ));
158
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
159
+
160
+ const DropdownMenuSeparator = React.forwardRef<
161
+ React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
162
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
163
+ >(({ className, ...props }, ref) => (
164
+ <DropdownMenuPrimitive.Separator
165
+ ref={ref}
166
+ className={cn("-mx-1 my-1 h-px bg-muted", className)}
167
+ {...props}
168
+ />
169
+ ));
170
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
171
+
172
+ const DropdownMenuShortcut = ({
173
+ className,
174
+ ...props
175
+ }: React.HTMLAttributes<HTMLSpanElement>) => {
176
+ return (
177
+ <span
178
+ className={cn("ml-auto text-xs tracking-widest opacity-60", className)}
179
+ {...props}
180
+ />
181
+ );
182
+ };
183
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
184
+
185
+ export {
186
+ DropdownMenu,
187
+ DropdownMenuTrigger,
188
+ DropdownMenuContent,
189
+ DropdownMenuItem,
190
+ DropdownMenuCheckboxItem,
191
+ DropdownMenuRadioItem,
192
+ DropdownMenuLabel,
193
+ DropdownMenuSeparator,
194
+ DropdownMenuShortcut,
195
+ DropdownMenuGroup,
196
+ DropdownMenuPortal,
197
+ DropdownMenuSub,
198
+ DropdownMenuSubContent,
199
+ DropdownMenuSubTrigger,
200
+ DropdownMenuRadioGroup,
201
+ };
@@ -0,0 +1,167 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as LabelPrimitive from "@radix-ui/react-label"
5
+ import { Slot } from "@radix-ui/react-slot"
6
+ import {
7
+ Controller,
8
+ ControllerProps,
9
+ FieldPath,
10
+ FieldValues,
11
+ FormProvider,
12
+ useFormContext,
13
+ useFormState,
14
+ } from "react-hook-form"
15
+
16
+ import { cn } from "@/lib/utils"
17
+ import { Label } from "@/components/ui/label"
18
+
19
+ const Form = FormProvider
20
+
21
+ type FormFieldContextValue<
22
+ TFieldValues extends FieldValues = FieldValues,
23
+ TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
24
+ > = {
25
+ name: TName
26
+ }
27
+
28
+ const FormFieldContext = React.createContext<FormFieldContextValue>(
29
+ {} as FormFieldContextValue
30
+ )
31
+
32
+ const FormField = <
33
+ TFieldValues extends FieldValues = FieldValues,
34
+ TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
35
+ >({
36
+ ...props
37
+ }: ControllerProps<TFieldValues, TName>) => {
38
+ return (
39
+ <FormFieldContext.Provider value={{ name: props.name }}>
40
+ <Controller {...props} />
41
+ </FormFieldContext.Provider>
42
+ )
43
+ }
44
+
45
+ const useFormField = () => {
46
+ const fieldContext = React.useContext(FormFieldContext)
47
+ const itemContext = React.useContext(FormItemContext)
48
+ const { getFieldState } = useFormContext()
49
+ const formState = useFormState({ name: fieldContext.name })
50
+ const fieldState = getFieldState(fieldContext.name, formState)
51
+
52
+ if (!fieldContext) {
53
+ throw new Error("useFormField should be used within <FormField>")
54
+ }
55
+
56
+ const { id } = itemContext
57
+
58
+ return {
59
+ id,
60
+ name: fieldContext.name,
61
+ formItemId: `${id}-form-item`,
62
+ formDescriptionId: `${id}-form-item-description`,
63
+ formMessageId: `${id}-form-item-message`,
64
+ ...fieldState,
65
+ }
66
+ }
67
+
68
+ type FormItemContextValue = {
69
+ id: string
70
+ }
71
+
72
+ const FormItemContext = React.createContext<FormItemContextValue>(
73
+ {} as FormItemContextValue
74
+ )
75
+
76
+ function FormItem({ className, ...props }: React.ComponentProps<"div">) {
77
+ const id = React.useId()
78
+
79
+ return (
80
+ <FormItemContext.Provider value={{ id }}>
81
+ <div
82
+ data-slot="form-item"
83
+ className={cn("grid gap-2", className)}
84
+ {...props}
85
+ />
86
+ </FormItemContext.Provider>
87
+ )
88
+ }
89
+
90
+ function FormLabel({
91
+ className,
92
+ ...props
93
+ }: React.ComponentProps<typeof LabelPrimitive.Root>) {
94
+ const { error, formItemId } = useFormField()
95
+
96
+ return (
97
+ <Label
98
+ data-slot="form-label"
99
+ data-error={!!error}
100
+ className={cn("data-[error=true]:text-destructive-foreground", className)}
101
+ htmlFor={formItemId}
102
+ {...props}
103
+ />
104
+ )
105
+ }
106
+
107
+ function FormControl({ ...props }: React.ComponentProps<typeof Slot>) {
108
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField()
109
+
110
+ return (
111
+ <Slot
112
+ data-slot="form-control"
113
+ id={formItemId}
114
+ aria-describedby={
115
+ !error
116
+ ? `${formDescriptionId}`
117
+ : `${formDescriptionId} ${formMessageId}`
118
+ }
119
+ aria-invalid={!!error}
120
+ {...props}
121
+ />
122
+ )
123
+ }
124
+
125
+ function FormDescription({ className, ...props }: React.ComponentProps<"p">) {
126
+ const { formDescriptionId } = useFormField()
127
+
128
+ return (
129
+ <p
130
+ data-slot="form-description"
131
+ id={formDescriptionId}
132
+ className={cn("text-muted-foreground text-sm", className)}
133
+ {...props}
134
+ />
135
+ )
136
+ }
137
+
138
+ function FormMessage({ className, ...props }: React.ComponentProps<"p">) {
139
+ const { error, formMessageId } = useFormField()
140
+ const body = error ? String(error?.message) : props.children
141
+
142
+ if (!body) {
143
+ return null
144
+ }
145
+
146
+ return (
147
+ <p
148
+ data-slot="form-message"
149
+ id={formMessageId}
150
+ className={cn("text-destructive-foreground text-sm", className)}
151
+ {...props}
152
+ >
153
+ {body}
154
+ </p>
155
+ )
156
+ }
157
+
158
+ export {
159
+ useFormField,
160
+ Form,
161
+ FormItem,
162
+ FormLabel,
163
+ FormControl,
164
+ FormDescription,
165
+ FormMessage,
166
+ FormField,
167
+ }
@@ -0,0 +1,21 @@
1
+ import * as React from "react"
2
+
3
+ import { cn } from "@/lib/utils"
4
+
5
+ function Input({ className, type, ...props }: React.ComponentProps<"input">) {
6
+ return (
7
+ <input
8
+ type={type}
9
+ data-slot="input"
10
+ className={cn(
11
+ "border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
12
+ "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
13
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
14
+ className
15
+ )}
16
+ {...props}
17
+ />
18
+ )
19
+ }
20
+
21
+ export { Input }
@@ -0,0 +1,24 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as LabelPrimitive from "@radix-ui/react-label"
5
+
6
+ import { cn } from "@/lib/utils"
7
+
8
+ function Label({
9
+ className,
10
+ ...props
11
+ }: React.ComponentProps<typeof LabelPrimitive.Root>) {
12
+ return (
13
+ <LabelPrimitive.Root
14
+ data-slot="label"
15
+ className={cn(
16
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
17
+ className
18
+ )}
19
+ {...props}
20
+ />
21
+ )
22
+ }
23
+
24
+ export { Label }
@@ -0,0 +1,48 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as PopoverPrimitive from "@radix-ui/react-popover"
5
+
6
+ import { cn } from "@/lib/utils"
7
+
8
+ function Popover({
9
+ ...props
10
+ }: React.ComponentProps<typeof PopoverPrimitive.Root>) {
11
+ return <PopoverPrimitive.Root data-slot="popover" {...props} />
12
+ }
13
+
14
+ function PopoverTrigger({
15
+ ...props
16
+ }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {
17
+ return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} />
18
+ }
19
+
20
+ function PopoverContent({
21
+ className,
22
+ align = "center",
23
+ sideOffset = 4,
24
+ ...props
25
+ }: React.ComponentProps<typeof PopoverPrimitive.Content>) {
26
+ return (
27
+ <PopoverPrimitive.Portal>
28
+ <PopoverPrimitive.Content
29
+ data-slot="popover-content"
30
+ align={align}
31
+ sideOffset={sideOffset}
32
+ className={cn(
33
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-none border p-4 shadow-md outline-hidden",
34
+ className
35
+ )}
36
+ {...props}
37
+ />
38
+ </PopoverPrimitive.Portal>
39
+ )
40
+ }
41
+
42
+ function PopoverAnchor({
43
+ ...props
44
+ }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {
45
+ return <PopoverPrimitive.Anchor data-slot="popover-anchor" {...props} />
46
+ }
47
+
48
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }