create-weave-frontend-app 0.12.1 → 0.13.1

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 (182) hide show
  1. package/dist/{create-app-D7Fjv6Q-.js → create-app-DjQDgLXy.js} +9 -6
  2. package/dist/create-app-DjQDgLXy.js.map +1 -0
  3. package/dist/create-app.js +1 -1
  4. package/dist/index.js +1 -1
  5. package/package.json +1 -1
  6. package/template/+nextjs+azure-web-pubsub/app/error/page.tsx +2 -2
  7. package/template/+nextjs+azure-web-pubsub/app/favicon.ico.license +3 -0
  8. package/template/+nextjs+azure-web-pubsub/app/globals.css +8 -4
  9. package/template/+nextjs+azure-web-pubsub/app/layout.tsx +4 -20
  10. package/template/+nextjs+azure-web-pubsub/app/page.tsx +2 -4
  11. package/template/+nextjs+azure-web-pubsub/app/providers.tsx +4 -7
  12. package/template/+nextjs+azure-web-pubsub/app/rooms/[roomId]/page.tsx +1 -1
  13. package/template/+nextjs+azure-web-pubsub/assets/images/logo.png +0 -0
  14. package/template/+nextjs+azure-web-pubsub/components/error/error.tsx +6 -6
  15. package/template/+nextjs+azure-web-pubsub/components/home/home.tsx +32 -30
  16. package/template/+nextjs+azure-web-pubsub/components/home-components/login-form.tsx +17 -10
  17. package/template/+nextjs+azure-web-pubsub/components/nodes/color-token/color-token.ts +28 -25
  18. package/template/+nextjs+azure-web-pubsub/components/room/room.layout.tsx +35 -14
  19. package/template/+nextjs+azure-web-pubsub/components/room/room.tsx +24 -2
  20. package/template/+nextjs+azure-web-pubsub/components/room-components/color-tokens-library/color-token.tsx +1 -4
  21. package/template/+nextjs+azure-web-pubsub/components/room-components/color-tokens-library/color-tokens-library.tsx +21 -17
  22. package/template/+nextjs+azure-web-pubsub/components/room-components/connected-users.tsx +21 -15
  23. package/template/+nextjs+azure-web-pubsub/components/room-components/connection-status.tsx +10 -8
  24. package/template/+nextjs+azure-web-pubsub/components/room-components/context-menu.tsx +2 -3
  25. package/template/+nextjs+azure-web-pubsub/components/room-components/elements-tree/elements-tree.tsx +31 -26
  26. package/template/+nextjs+azure-web-pubsub/components/room-components/frames-library/frames-library.image.tsx +28 -10
  27. package/template/+nextjs+azure-web-pubsub/components/room-components/frames-library/frames-library.presentation-image.tsx +4 -4
  28. package/template/+nextjs+azure-web-pubsub/components/room-components/frames-library/frames-library.tsx +175 -97
  29. package/template/+nextjs+azure-web-pubsub/components/room-components/frames-library/utils.ts +1 -1
  30. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-drawer.tsx +2 -2
  31. package/template/+nextjs+azure-web-pubsub/components/room-components/help/help-shortcut-element.tsx +1 -1
  32. package/template/+nextjs+azure-web-pubsub/components/room-components/help/shortcut-element.tsx +3 -24
  33. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-context-menu.tsx +27 -26
  34. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-copy-paste.tsx +6 -2
  35. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/{use-get-azure-web-pubsub-provider.ts → use-get-azure-web-pubsub-provider.tsx} +1 -1
  36. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-get-os.ts +2 -2
  37. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-key-down.ts +17 -8
  38. package/template/+nextjs+azure-web-pubsub/components/room-components/hooks/use-keyboard-handler.tsx +19 -101
  39. package/template/+nextjs+azure-web-pubsub/components/room-components/images-library/images-library.tsx +89 -65
  40. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-color.tsx +16 -9
  41. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-font-family.tsx +12 -6
  42. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-number.tsx +1 -1
  43. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-select.tsx +7 -7
  44. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/input-text.tsx +2 -2
  45. package/template/+nextjs+azure-web-pubsub/components/room-components/inputs/number-input.tsx +2 -3
  46. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/appearance-properties.tsx +44 -44
  47. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/color-token-properties.tsx +20 -23
  48. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/crop-properties.tsx +65 -65
  49. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/fill-properties.tsx +23 -23
  50. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/frame-properties.tsx +106 -106
  51. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/image-properties.tsx +18 -13
  52. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/position-properties.tsx +35 -35
  53. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/size-properties.tsx +35 -35
  54. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/stroke-properties.tsx +206 -209
  55. package/template/+nextjs+azure-web-pubsub/components/room-components/node-properties/text-properties.tsx +329 -334
  56. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/divider.tsx +29 -2
  57. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/node-properties.tsx +38 -17
  58. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/overlay-animation-wrapper.tsx +1 -1
  59. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/room-header.tsx +325 -137
  60. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/room-users-overlay.tsx +2 -2
  61. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/tools-overlay.tsx +95 -261
  62. package/template/+nextjs+azure-web-pubsub/components/room-components/overlay/zoom-toolbar.tsx +19 -22
  63. package/template/+nextjs+azure-web-pubsub/components/room-components/room-error.tsx +7 -8
  64. package/template/+nextjs+azure-web-pubsub/components/room-components/room-loader/room-loader.tsx +7 -7
  65. package/template/+nextjs+azure-web-pubsub/components/room-components/selection-information.tsx +1 -1
  66. package/template/+nextjs+azure-web-pubsub/components/room-components/sidebar-selector.tsx +120 -0
  67. package/template/+nextjs+azure-web-pubsub/components/room-components/toggle-icon-button.tsx +15 -15
  68. package/template/+nextjs+azure-web-pubsub/components/room-components/toolbar/toolbar-button.tsx +61 -40
  69. package/template/+nextjs+azure-web-pubsub/components/room-components/toolbar/toolbar-toggle-button.tsx +1 -1
  70. package/template/+nextjs+azure-web-pubsub/components/room-components/toolbar/toolbar.tsx +6 -1
  71. package/template/+nextjs+azure-web-pubsub/components/room-components/user-form.tsx +7 -13
  72. package/template/+nextjs+azure-web-pubsub/components/ui/button.tsx +4 -4
  73. package/template/+nextjs+azure-web-pubsub/components/ui/card.tsx +1 -1
  74. package/template/+nextjs+azure-web-pubsub/components/ui/checkbox.tsx +1 -1
  75. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-alpha.tsx +3 -3
  76. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-eyedropper.tsx +1 -1
  77. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-format-selector.tsx +3 -3
  78. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/selector/color-picker-hue.tsx +2 -2
  79. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/text-inputs/color-picker-alpha-percentage.tsx +1 -1
  80. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/text-inputs/color-picker-hexa.tsx +2 -2
  81. package/template/+nextjs+azure-web-pubsub/components/ui/color-picker/text-inputs/color-picker-rgba.tsx +1 -1
  82. package/template/+nextjs+azure-web-pubsub/components/ui/command.tsx +1 -1
  83. package/template/+nextjs+azure-web-pubsub/components/ui/dialog.tsx +1 -1
  84. package/template/+nextjs+azure-web-pubsub/components/ui/input.tsx +20 -15
  85. package/template/+nextjs+azure-web-pubsub/components/ui/scroll-area.tsx +15 -15
  86. package/template/+nextjs+azure-web-pubsub/components/ui/tabs.tsx +1 -1
  87. package/template/+nextjs+azure-web-pubsub/components/ui/tooltip.tsx +2 -2
  88. package/template/+nextjs+azure-web-pubsub/components/ui/tree-view.tsx +9 -7
  89. package/template/+nextjs+azure-web-pubsub/components/utils/constants.ts +6 -6
  90. package/template/+nextjs+azure-web-pubsub/components/utils/logo.tsx +1 -1
  91. package/template/+nextjs+azure-web-pubsub/lib/constants.ts +4 -0
  92. package/template/+nextjs+azure-web-pubsub/lib/utils.ts +10 -10
  93. package/template/+nextjs+websockets/app/error/page.tsx +2 -2
  94. package/template/+nextjs+websockets/app/favicon.ico.license +3 -0
  95. package/template/+nextjs+websockets/app/globals.css +8 -4
  96. package/template/+nextjs+websockets/app/layout.tsx +4 -20
  97. package/template/+nextjs+websockets/app/page.tsx +2 -4
  98. package/template/+nextjs+websockets/app/providers.tsx +4 -7
  99. package/template/+nextjs+websockets/app/rooms/[roomId]/page.tsx +1 -1
  100. package/template/+nextjs+websockets/assets/images/logo.png +0 -0
  101. package/template/+nextjs+websockets/components/error/error.tsx +6 -6
  102. package/template/+nextjs+websockets/components/home/home.tsx +32 -30
  103. package/template/+nextjs+websockets/components/home-components/login-form.tsx +17 -10
  104. package/template/+nextjs+websockets/components/nodes/color-token/color-token.ts +28 -25
  105. package/template/+nextjs+websockets/components/room/room.layout.tsx +35 -14
  106. package/template/+nextjs+websockets/components/room/room.tsx +26 -4
  107. package/template/+nextjs+websockets/components/room-components/color-tokens-library/color-token.tsx +1 -4
  108. package/template/+nextjs+websockets/components/room-components/color-tokens-library/color-tokens-library.tsx +21 -17
  109. package/template/+nextjs+websockets/components/room-components/connected-users.tsx +21 -15
  110. package/template/+nextjs+websockets/components/room-components/connection-status.tsx +10 -19
  111. package/template/+nextjs+websockets/components/room-components/context-menu.tsx +2 -3
  112. package/template/+nextjs+websockets/components/room-components/elements-tree/elements-tree.tsx +31 -26
  113. package/template/+nextjs+websockets/components/room-components/frames-library/frames-library.image.tsx +28 -10
  114. package/template/+nextjs+websockets/components/room-components/frames-library/frames-library.presentation-image.tsx +4 -4
  115. package/template/+nextjs+websockets/components/room-components/frames-library/frames-library.tsx +175 -97
  116. package/template/+nextjs+websockets/components/room-components/frames-library/utils.ts +1 -1
  117. package/template/+nextjs+websockets/components/room-components/help/help-drawer.tsx +2 -2
  118. package/template/+nextjs+websockets/components/room-components/help/help-shortcut-element.tsx +1 -1
  119. package/template/+nextjs+websockets/components/room-components/help/shortcut-element.tsx +3 -24
  120. package/template/+nextjs+websockets/components/room-components/hooks/use-context-menu.tsx +27 -26
  121. package/template/+nextjs+websockets/components/room-components/hooks/use-copy-paste.tsx +6 -2
  122. package/template/+nextjs+websockets/components/room-components/hooks/use-get-os.ts +2 -2
  123. package/template/+nextjs+websockets/components/room-components/hooks/use-key-down.ts +17 -8
  124. package/template/+nextjs+websockets/components/room-components/hooks/use-keyboard-handler.tsx +19 -101
  125. package/template/+nextjs+websockets/components/room-components/images-library/images-library.tsx +89 -65
  126. package/template/+nextjs+websockets/components/room-components/inputs/input-color.tsx +16 -9
  127. package/template/+nextjs+websockets/components/room-components/inputs/input-font-family.tsx +12 -6
  128. package/template/+nextjs+websockets/components/room-components/inputs/input-number.tsx +1 -1
  129. package/template/+nextjs+websockets/components/room-components/inputs/input-select.tsx +7 -7
  130. package/template/+nextjs+websockets/components/room-components/inputs/input-text.tsx +2 -2
  131. package/template/+nextjs+websockets/components/room-components/inputs/number-input.tsx +2 -3
  132. package/template/+nextjs+websockets/components/room-components/node-properties/appearance-properties.tsx +44 -44
  133. package/template/+nextjs+websockets/components/room-components/node-properties/color-token-properties.tsx +20 -23
  134. package/template/+nextjs+websockets/components/room-components/node-properties/crop-properties.tsx +65 -65
  135. package/template/+nextjs+websockets/components/room-components/node-properties/fill-properties.tsx +23 -23
  136. package/template/+nextjs+websockets/components/room-components/node-properties/frame-properties.tsx +106 -106
  137. package/template/+nextjs+websockets/components/room-components/node-properties/image-properties.tsx +18 -13
  138. package/template/+nextjs+websockets/components/room-components/node-properties/position-properties.tsx +35 -35
  139. package/template/+nextjs+websockets/components/room-components/node-properties/size-properties.tsx +35 -35
  140. package/template/+nextjs+websockets/components/room-components/node-properties/stroke-properties.tsx +206 -209
  141. package/template/+nextjs+websockets/components/room-components/node-properties/text-properties.tsx +329 -334
  142. package/template/+nextjs+websockets/components/room-components/overlay/divider.tsx +29 -2
  143. package/template/+nextjs+websockets/components/room-components/overlay/node-properties.tsx +38 -17
  144. package/template/+nextjs+websockets/components/room-components/overlay/overlay-animation-wrapper.tsx +1 -1
  145. package/template/+nextjs+websockets/components/room-components/overlay/room-header.tsx +325 -137
  146. package/template/+nextjs+websockets/components/room-components/overlay/room-users-overlay.tsx +2 -2
  147. package/template/+nextjs+websockets/components/room-components/overlay/tools-overlay.tsx +95 -261
  148. package/template/+nextjs+websockets/components/room-components/overlay/zoom-toolbar.tsx +19 -22
  149. package/template/+nextjs+websockets/components/room-components/room-error.tsx +7 -8
  150. package/template/+nextjs+websockets/components/room-components/room-loader/room-loader.tsx +7 -7
  151. package/template/+nextjs+websockets/components/room-components/selection-information.tsx +1 -1
  152. package/template/+nextjs+websockets/components/room-components/sidebar-selector.tsx +120 -0
  153. package/template/+nextjs+websockets/components/room-components/toggle-icon-button.tsx +15 -15
  154. package/template/+nextjs+websockets/components/room-components/toolbar/toolbar-button.tsx +61 -40
  155. package/template/+nextjs+websockets/components/room-components/toolbar/toolbar-toggle-button.tsx +1 -1
  156. package/template/+nextjs+websockets/components/room-components/toolbar/toolbar.tsx +6 -1
  157. package/template/+nextjs+websockets/components/room-components/user-form.tsx +7 -13
  158. package/template/+nextjs+websockets/components/ui/button.tsx +4 -4
  159. package/template/+nextjs+websockets/components/ui/card.tsx +1 -1
  160. package/template/+nextjs+websockets/components/ui/checkbox.tsx +1 -1
  161. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-alpha.tsx +3 -3
  162. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-eyedropper.tsx +1 -1
  163. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-format-selector.tsx +3 -3
  164. package/template/+nextjs+websockets/components/ui/color-picker/selector/color-picker-hue.tsx +2 -2
  165. package/template/+nextjs+websockets/components/ui/color-picker/text-inputs/color-picker-alpha-percentage.tsx +1 -1
  166. package/template/+nextjs+websockets/components/ui/color-picker/text-inputs/color-picker-hexa.tsx +2 -2
  167. package/template/+nextjs+websockets/components/ui/color-picker/text-inputs/color-picker-rgba.tsx +1 -1
  168. package/template/+nextjs+websockets/components/ui/command.tsx +1 -1
  169. package/template/+nextjs+websockets/components/ui/dialog.tsx +1 -1
  170. package/template/+nextjs+websockets/components/ui/input.tsx +20 -15
  171. package/template/+nextjs+websockets/components/ui/scroll-area.tsx +15 -15
  172. package/template/+nextjs+websockets/components/ui/tabs.tsx +1 -1
  173. package/template/+nextjs+websockets/components/ui/tooltip.tsx +2 -2
  174. package/template/+nextjs+websockets/components/ui/tree-view.tsx +9 -7
  175. package/template/+nextjs+websockets/components/utils/constants.ts +6 -6
  176. package/template/+nextjs+websockets/components/utils/logo.tsx +1 -1
  177. package/template/+nextjs+websockets/lib/constants.ts +4 -0
  178. package/template/+nextjs+websockets/lib/utils.ts +10 -10
  179. package/template/package.json +1 -0
  180. package/dist/create-app-D7Fjv6Q-.js.map +0 -1
  181. package/template/+nextjs+azure-web-pubsub/components/room-components/with-instance-node.tsx +0 -53
  182. package/template/+nextjs+websockets/components/room-components/with-instance-node.tsx +0 -53
@@ -76,11 +76,11 @@ function tryGitInit(root) {
76
76
  //#endregion
77
77
  //#region src/versions.js
78
78
  const versions = {
79
- "@inditextech/weave-types": "0.12.1",
80
- "@inditextech/weave-sdk": "0.12.1",
81
- "@inditextech/weave-store-websockets": "0.12.1",
82
- "@inditextech/weave-store-azure-web-pubsub": "0.12.1",
83
- "@inditextech/weave-react": "0.12.1"
79
+ "@inditextech/weave-types": "0.13.1",
80
+ "@inditextech/weave-sdk": "0.13.1",
81
+ "@inditextech/weave-store-websockets": "0.13.1",
82
+ "@inditextech/weave-store-azure-web-pubsub": "0.13.1",
83
+ "@inditextech/weave-react": "0.13.1"
84
84
  };
85
85
 
86
86
  //#endregion
@@ -114,6 +114,7 @@ var dependencies = {
114
114
  "@react-three/postprocessing": "^2.19.1",
115
115
  "@tanstack/react-query": "^5.67.1",
116
116
  "boring-avatars": "^1.11.2",
117
+ "change-case": "^5.4.4",
117
118
  "class-variance-authority": "^0.7.1",
118
119
  "clsx": "^2.1.1",
119
120
  "cmdk": "^1.0.0",
@@ -263,6 +264,7 @@ function createPackageJson(projectName, options) {
263
264
  "@react-three/postprocessing",
264
265
  "@tanstack/react-query",
265
266
  "boring-avatars",
267
+ "change-case",
266
268
  "class-variance-authority",
267
269
  "clsx",
268
270
  "cmdk",
@@ -350,6 +352,7 @@ function createPackageJson(projectName, options) {
350
352
  "@react-three/postprocessing",
351
353
  "@tanstack/react-query",
352
354
  "boring-avatars",
355
+ "change-case",
353
356
  "class-variance-authority",
354
357
  "clsx",
355
358
  "cmdk",
@@ -428,4 +431,4 @@ function pick(obj, keys) {
428
431
 
429
432
  //#endregion
430
433
  export { create, cwd, getPackageManager };
431
- //# sourceMappingURL=create-app-D7Fjv6Q-.js.map
434
+ //# sourceMappingURL=create-app-DjQDgLXy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app-DjQDgLXy.js","names":["cwd: string","root: string","manager: PackageManager","dest: string","options: Options","file: string","dest: string","projectName: string","from: string","to: string","rename: (s: string) => string","obj: T","keys: K[]","result: Partial<T>"],"sources":["../src/git.ts","../src/versions.js","../template/package.json","../src/auto-install.ts","../src/constants.ts","../src/create-app.ts"],"sourcesContent":["import { execSync } from 'node:child_process';\nimport { rmSync } from 'node:fs';\nimport { join } from 'node:path';\n\n/*\nInitialize a Git repo on the project.\n\nBased on https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/git.ts\n*/\n\nfunction isInGitRepository(cwd: string): boolean {\n try {\n execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isInMercurialRepository(cwd: string): boolean {\n try {\n execSync('hg --cwd . root', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isDefaultBranchSet(cwd: string): boolean {\n try {\n execSync('git config init.defaultBranch', { stdio: 'ignore', cwd });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function tryGitInit(root: string): boolean {\n let didInit = false;\n\n try {\n execSync('git --version', { stdio: 'ignore' });\n if (isInGitRepository(root) || isInMercurialRepository(root)) {\n return false;\n }\n\n execSync('git init', { stdio: 'ignore', cwd: root });\n didInit = true;\n\n if (!isDefaultBranchSet(root)) {\n execSync('git checkout -b main', { stdio: 'ignore', cwd: root });\n }\n\n execSync('git add -A', { stdio: 'ignore', cwd: root });\n execSync('git commit -m \"Initial commit from Create Fumadocs App\"', {\n stdio: 'ignore',\n cwd: root,\n });\n return true;\n } catch {\n if (didInit) {\n try {\n rmSync(join(root, '.git'), { recursive: true, force: true });\n } catch {\n // do nothing\n }\n }\n\n return false;\n }\n}\n","export const versions = {\"@inditextech/weave-types\":\"0.13.1\",\"@inditextech/weave-sdk\":\"0.13.1\",\"@inditextech/weave-store-websockets\":\"0.13.1\",\"@inditextech/weave-store-azure-web-pubsub\":\"0.13.1\",\"@inditextech/weave-react\":\"0.13.1\"}","{\n \"name\": \"example-versions\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"description\": \"Used to track dependency versions in create-*-app\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@hookform/resolvers\": \"^4.1.3\",\n \"@inditextech/weave-react\": \"0.0.0\",\n \"@inditextech/weave-sdk\": \"0.0.0\",\n \"@inditextech/weave-store-websockets\": \"0.0.0\",\n \"@inditextech/weave-store-azure-web-pubsub\": \"0.0.0\",\n \"@next/env\": \"^15.2.1\",\n \"@radix-ui/react-accordion\": \"^1.2.3\",\n \"@radix-ui/react-avatar\": \"^1.1.3\",\n \"@radix-ui/react-checkbox\": \"^1.1.4\",\n \"@radix-ui/react-dialog\": \"^1.1.6\",\n \"@radix-ui/react-dropdown-menu\": \"^2.1.6\",\n \"@radix-ui/react-label\": \"^2.1.2\",\n \"@radix-ui/react-popover\": \"^1.1.6\",\n \"@radix-ui/react-scroll-area\": \"^1.2.3\",\n \"@radix-ui/react-select\": \"^2.1.6\",\n \"@radix-ui/react-slider\": \"^1.2.3\",\n \"@radix-ui/react-slot\": \"^1.1.2\",\n \"@radix-ui/react-tabs\": \"^1.1.3\",\n \"@radix-ui/react-tooltip\": \"^1.1.8\",\n \"@react-three/fiber\": \"^8.18.0\",\n \"@react-three/postprocessing\": \"^2.19.1\",\n \"@tanstack/react-query\": \"^5.67.1\",\n \"boring-avatars\": \"^1.11.2\",\n \"change-case\": \"^5.4.4\",\n \"class-variance-authority\": \"^0.7.1\",\n \"clsx\": \"^2.1.1\",\n \"cmdk\": \"^1.0.0\",\n \"color\": \"^5.0.0\",\n \"framer-motion\": \"^11.18.2\",\n \"konva\": \"^9.3.18\",\n \"motion\": \"^12.4.7\",\n \"next\": \"14.2.28\",\n \"next-themes\": \"^0.4.6\",\n \"ogl\": \"^1.0.11\",\n \"onnxruntime-web\": \"^1.21.0-dev.20250206-d981b153d3\",\n \"pdf-lib\": \"^1.17.1\",\n \"platform-detect\": \"^3.0.1\",\n \"postprocessing\": \"^6.37.1\",\n \"react\": \"18.2.0\",\n \"react-dom\": \"18.2.0\",\n \"react-hook-form\": \"^7.54.2\",\n \"react-number-format\": \"^5.4.3\",\n \"sharp\": \"^0.33.5\",\n \"sonner\": \"^2.0.3\",\n \"tailwind-merge\": \"^3.0.2\",\n \"tailwindcss-animate\": \"^1.0.7\",\n \"three\": \"^0.167.1\",\n \"uuid\": \"^11.1.0\",\n \"vaul\": \"^1.1.2\",\n \"zod\": \"^3.24.2\",\n \"zustand\": \"^5.0.3\"\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"^3\",\n \"@tailwindcss/postcss\": \"^4\",\n \"@testing-library/dom\": \"^10.4.0\",\n \"@testing-library/react\": \"^16.2.0\",\n \"@types/node\": \"^20\",\n \"@types/react\": \"^18\",\n \"@types/react-dom\": \"^18\",\n \"@vitejs/plugin-react\": \"^4.3.4\",\n \"@vitest/coverage-v8\": \"^3.0.7\",\n \"eslint\": \"^8\",\n \"eslint-config-next\": \"14.2.24\",\n \"eslint-config-prettier\": \"^10.0.2\",\n \"jsdom\": \"^26.0.0\",\n \"lucide-react\": \"^0.477.0\",\n \"tailwindcss\": \"^4\",\n \"typescript\": \"^5\",\n \"vite-tsconfig-paths\": \"^5.1.4\",\n \"vitest\": \"^3.0.7\"\n }\n}\n","import { spawn } from 'cross-spawn';\n\nexport type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\n\nexport function getPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent ?? '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n\n return 'npm';\n}\n\nexport function autoInstall(\n manager: PackageManager,\n dest: string,\n): Promise<void> {\n return new Promise((res, reject) => {\n const installProcess = spawn(manager, ['install'], {\n stdio: 'ignore',\n env: {\n ...process.env,\n NODE_ENV: 'development',\n DISABLE_OPENCOLLECTIVE: '1',\n },\n cwd: dest,\n });\n\n installProcess.on('close', (code) => {\n if (code !== 0) {\n reject(new Error('Install failed'));\n } else {\n res();\n }\n });\n });\n}\n","import { fileURLToPath } from 'node:url';\n\nexport const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);\nexport const cwd = process.cwd();\n","import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport { tryGitInit } from '@/git';\nimport { versions as localVersions } from '@/versions';\nimport versionPkg from './../template/package.json';\nimport type { PackageManager } from './auto-install';\nimport { autoInstall } from './auto-install';\nimport { cwd, sourceDir } from './constants';\n\nexport type Template = '+nextjs+websockets' | '+nextjs+azure-web-pubsub';\n\nexport interface Options {\n outputDir: string;\n template: Template;\n packageManager: PackageManager;\n installDeps?: boolean;\n initializeGit?: boolean;\n log?: (message: string) => void;\n}\n\nexport async function create(options: Options): Promise<void> {\n const {\n installDeps = true,\n initializeGit = true,\n log = console.log,\n } = options;\n const projectName = path.basename(options.outputDir);\n const dest = path.resolve(cwd, options.outputDir);\n\n function defaultRename(file: string): string {\n file = file.replace('example.gitignore', '.gitignore');\n file = file.replace('example.env', '.env');\n\n return file;\n }\n\n await copy(\n path.join(sourceDir, `template/${options.template}`),\n dest,\n defaultRename\n );\n\n const packageJson = createPackageJson(projectName, options);\n await fs.writeFile(\n path.join(dest, 'package.json'),\n JSON.stringify(packageJson, null, 2)\n );\n\n const readMe = await getReadme(dest, projectName);\n await fs.writeFile(path.join(dest, 'README.md'), readMe);\n\n if (installDeps) {\n await autoInstall(options.packageManager, dest);\n log('Installed dependencies');\n }\n\n if (initializeGit && tryGitInit(dest)) {\n log('Initialized Git repository');\n }\n}\n\nasync function getReadme(dest: string, projectName: string): Promise<string> {\n const template = await fs\n .readFile(path.join(dest, 'README.md'))\n .then((res) => res.toString());\n\n return `# ${projectName}\\n\\n${template}`;\n}\n\nasync function copy(\n from: string,\n to: string,\n rename: (s: string) => string = (s) => s\n): Promise<void> {\n const stats = await fs.stat(from);\n\n if (stats.isDirectory()) {\n const files = await fs.readdir(from);\n\n await Promise.all(\n files.map((file) =>\n copy(path.join(from, file), rename(path.join(to, file)))\n )\n );\n } else {\n await fs.mkdir(path.dirname(to), { recursive: true });\n await fs.copyFile(from, to);\n }\n}\n\nfunction createPackageJson(projectName: string, options: Options): object {\n if (options.template === '+nextjs+azure-web-pubsub') {\n const dependencies = {\n ...pick(versionPkg.dependencies, [\n '@hookform/resolvers',\n '@next/env',\n '@radix-ui/react-accordion',\n '@radix-ui/react-avatar',\n '@radix-ui/react-checkbox',\n '@radix-ui/react-dialog',\n '@radix-ui/react-dropdown-menu',\n '@radix-ui/react-label',\n '@radix-ui/react-popover',\n '@radix-ui/react-scroll-area',\n '@radix-ui/react-select',\n '@radix-ui/react-slider',\n '@radix-ui/react-slot',\n '@radix-ui/react-tabs',\n '@radix-ui/react-tooltip',\n '@react-three/fiber',\n '@react-three/postprocessing',\n '@tanstack/react-query',\n 'boring-avatars',\n 'change-case',\n 'class-variance-authority',\n 'clsx',\n 'cmdk',\n 'color',\n 'framer-motion',\n 'konva',\n 'motion',\n 'next',\n 'next-themes',\n 'ogl',\n 'onnxruntime-web',\n 'pdf-lib',\n 'platform-detect',\n 'postprocessing',\n 'react',\n 'react-dom',\n 'react-hook-form',\n 'react-number-format',\n 'sharp',\n 'sonner',\n 'tailwind-merge',\n 'tailwindcss-animate',\n 'three',\n 'uuid',\n 'vaul',\n 'zod',\n 'zustand',\n ]),\n ...pick(localVersions, [\n '@inditextech/weave-react',\n '@inditextech/weave-sdk',\n '@inditextech/weave-store-azure-web-pubsub',\n ]),\n };\n\n const devDependencies = {\n ...pick(versionPkg.devDependencies, [\n '@eslint/eslintrc',\n '@tailwindcss/postcss',\n '@testing-library/dom',\n '@testing-library/react',\n '@types/node',\n '@types/react',\n '@types/react-dom',\n '@vitejs/plugin-react',\n 'eslint',\n 'eslint-config-next',\n 'eslint-config-prettier',\n 'jsdom',\n 'lucide-react',\n 'tailwindcss',\n 'typescript',\n 'vite-tsconfig-paths',\n ]),\n };\n\n return {\n name: projectName,\n version: '0.0.0',\n private: true,\n scripts: {\n build: 'next build',\n dev: 'next dev --experimental-https',\n lint: 'next lint',\n start: 'next start',\n },\n dependencies: sortObjectKeys(dependencies),\n devDependencies: sortObjectKeys(devDependencies),\n };\n }\n\n const dependencies = {\n ...pick(versionPkg.dependencies, [\n '@hookform/resolvers',\n '@next/env',\n '@radix-ui/react-accordion',\n '@radix-ui/react-avatar',\n '@radix-ui/react-checkbox',\n '@radix-ui/react-dialog',\n '@radix-ui/react-dropdown-menu',\n '@radix-ui/react-label',\n '@radix-ui/react-popover',\n '@radix-ui/react-scroll-area',\n '@radix-ui/react-select',\n '@radix-ui/react-slider',\n '@radix-ui/react-slot',\n '@radix-ui/react-tabs',\n '@radix-ui/react-tooltip',\n '@react-three/fiber',\n '@react-three/postprocessing',\n '@tanstack/react-query',\n 'boring-avatars',\n 'change-case',\n 'class-variance-authority',\n 'clsx',\n 'cmdk',\n 'color',\n 'framer-motion',\n 'konva',\n 'motion',\n 'next',\n 'next-themes',\n 'ogl',\n 'onnxruntime-web',\n 'pdf-lib',\n 'platform-detect',\n 'postprocessing',\n 'react',\n 'react-dom',\n 'react-hook-form',\n 'react-number-format',\n 'sharp',\n 'sonner',\n 'tailwind-merge',\n 'tailwindcss-animate',\n 'three',\n 'uuid',\n 'vaul',\n 'zod',\n 'zustand',\n ]),\n ...pick(localVersions, [\n '@inditextech/weave-react',\n '@inditextech/weave-sdk',\n '@inditextech/weave-store-websockets',\n ]),\n };\n\n const devDependencies = {\n ...pick(versionPkg.devDependencies, [\n '@eslint/eslintrc',\n '@tailwindcss/postcss',\n '@testing-library/dom',\n '@testing-library/react',\n '@types/node',\n '@types/react',\n '@types/react-dom',\n '@vitejs/plugin-react',\n 'eslint',\n 'eslint-config-next',\n 'eslint-config-prettier',\n 'jsdom',\n 'lucide-react',\n 'tailwindcss',\n 'typescript',\n 'vite-tsconfig-paths',\n ]),\n };\n\n return {\n name: projectName,\n version: '0.0.0',\n private: true,\n scripts: {\n build: 'next build',\n dev: 'next dev --experimental-https',\n lint: 'next lint',\n start: 'next start',\n },\n dependencies: sortObjectKeys(dependencies),\n devDependencies: sortObjectKeys(devDependencies),\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction sortObjectKeys<T extends Record<string, any>>(obj: T): T {\n const sortedEntries = Object.keys(obj)\n .sort()\n .map((key) => [key, obj[key]] as [keyof T, T[keyof T]]);\n\n return Object.fromEntries(sortedEntries) as T;\n}\n\nfunction pick<T extends object, K extends keyof T>(\n obj: T,\n keys: K[]\n): Pick<T, K> {\n const result: Partial<T> = {};\n\n for (const key of keys) {\n if (key in obj) {\n result[key] = obj[key];\n }\n }\n\n return result as Pick<T, K>;\n}\n"],"mappings":"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BH,SAA0B;AACxE,KAAI,QAAQ,aAAa,4BAA4B;EACnD,MAAM,iBAAe;GACnB,GAAG,KAAK,gBAAW,cAAc;IAC/B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,EAAC;GACF,GAAG,KAAK,UAAe;IACrB;IACA;IACA;GACD,EAAC;EACH;EAED,MAAM,oBAAkB,EACtB,GAAG,KAAK,gBAAW,iBAAiB;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,EAAC,CACH;AAED,SAAO;GACL,MAAM;GACN,SAAS;GACT,SAAS;GACT,SAAS;IACP,OAAO;IACP,KAAK;IACL,MAAM;IACN,OAAO;GACR;GACD,cAAc,eAAe,eAAa;GAC1C,iBAAiB,eAAe,kBAAgB;EACjD;CACF;CAED,MAAM,iBAAe;EACnB,GAAG,KAAK,gBAAW,cAAc;GAC/B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,EAAC;EACF,GAAG,KAAK,UAAe;GACrB;GACA;GACA;EACD,EAAC;CACH;CAED,MAAM,oBAAkB,EACtB,GAAG,KAAK,gBAAW,iBAAiB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,EAAC,CACH;AAED,QAAO;EACL,MAAM;EACN,SAAS;EACT,SAAS;EACT,SAAS;GACP,OAAO;GACP,KAAK;GACL,MAAM;GACN,OAAO;EACR;EACD,cAAc,eAAe,eAAa;EAC1C,iBAAiB,eAAe,kBAAgB;CACjD;AACF;AAGD,SAAS,eAA8CO,KAAW;CAChE,MAAM,gBAAgB,OAAO,KAAK,IAAI,CACnC,MAAM,CACN,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAK,EAA0B;AAEzD,QAAO,OAAO,YAAY,cAAc;AACzC;AAED,SAAS,KACPA,KACAC,MACY;CACZ,MAAMC,SAAqB,CAAE;AAE7B,MAAK,MAAM,OAAO,KAChB,KAAI,OAAO,IACT,QAAO,OAAO,IAAI;AAItB,QAAO;AACR"}
@@ -1,3 +1,3 @@
1
- import { create } from "./create-app-D7Fjv6Q-.js";
1
+ import { create } from "./create-app-DjQDgLXy.js";
2
2
 
3
3
  export { create };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { create, cwd, getPackageManager } from "./create-app-D7Fjv6Q-.js";
2
+ import { create, cwd, getPackageManager } from "./create-app-DjQDgLXy.js";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs/promises";
5
5
  import { cancel, confirm, group, intro, isCancel, outro, select, spinner, text } from "@clack/prompts";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-weave-frontend-app",
3
- "version": "0.12.1",
3
+ "version": "0.13.1",
4
4
  "description": "Create a new frontend artifact for a site with Weave.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -1,5 +1,5 @@
1
- import { Error } from "@/components/error/error";
2
- import { Suspense } from "react";
1
+ import { Error } from '@/components/error/error';
2
+ import { Suspense } from 'react';
3
3
 
4
4
  export default function ErrorPage() {
5
5
  return (
@@ -0,0 +1,3 @@
1
+ SPDX-FileCopyrightText: 2025 2025 INDUSTRIA DE DISEÑO TEXTIL S.A. (INDITEX S.A.)
2
+
3
+ SPDX-License-Identifier: Apache-2.0
@@ -1,13 +1,17 @@
1
- @import 'tailwindcss';
1
+ /*
2
+ * SPDX-FileCopyrightText: 2025 2025 INDUSTRIA DE DISEÑO TEXTIL S.A. (INDITEX S.A.)
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ @import "tailwindcss";
2
8
 
3
9
  @plugin "tailwindcss-animate";
4
10
 
5
11
  @custom-variant dark (&:is(.dark *));
6
12
 
7
13
  @theme {
8
- --questrial: var(--questrial);
9
- --font-noto-sans: var(--font-noto-sans);
10
- --font-noto-sans-mono: var(--font-noto-sans-mono);
14
+ --inter: var(--inter);
11
15
  }
12
16
 
13
17
  .custom-scrollbar {
@@ -1,24 +1,12 @@
1
1
  import type { Metadata, Viewport } from 'next';
2
- import { Questrial, Noto_Sans, Noto_Sans_Mono } from 'next/font/google';
2
+ import { Inter } from 'next/font/google';
3
3
  import './globals.css';
4
4
  import { AppProviders } from './providers';
5
5
 
6
- const questrial = Questrial({
6
+ const inter = Inter({
7
7
  weight: '400',
8
8
  preload: true,
9
- variable: '--questrial',
10
- subsets: ['latin'],
11
- });
12
-
13
- const notoSans = Noto_Sans({
14
- preload: true,
15
- variable: '--font-noto-sans',
16
- subsets: ['latin'],
17
- });
18
-
19
- const notoSansMono = Noto_Sans_Mono({
20
- preload: true,
21
- variable: '--font-noto-sans-mono',
9
+ variable: '--inter',
22
10
  subsets: ['latin'],
23
11
  });
24
12
 
@@ -43,11 +31,7 @@ export default function RootLayout({
43
31
  }>) {
44
32
  return (
45
33
  <html lang="en">
46
- <body
47
- contentEditable="true"
48
- suppressContentEditableWarning={true}
49
- className={`${questrial.variable} ${notoSans.variable} ${notoSansMono.variable} antialiased`}
50
- >
34
+ <body className={`${inter.variable} antialiased`}>
51
35
  <AppProviders>{children}</AppProviders>
52
36
  </body>
53
37
  </html>
@@ -1,7 +1,5 @@
1
- import { Home } from "@/components/home/home";
1
+ import { Home } from '@/components/home/home';
2
2
 
3
3
  export default function HomePage() {
4
- return (
5
- <Home />
6
- );
4
+ return <Home />;
7
5
  }
@@ -1,9 +1,6 @@
1
- "use client"
1
+ 'use client';
2
2
 
3
- import {
4
- QueryClient,
5
- QueryClientProvider,
6
- } from "@tanstack/react-query";
3
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
7
4
 
8
5
  type AppProvidersProps = {
9
6
  children: React.ReactNode;
@@ -14,5 +11,5 @@ const queryClient = new QueryClient();
14
11
  export function AppProviders({ children }: Readonly<AppProvidersProps>) {
15
12
  return (
16
13
  <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
17
- )
18
- }
14
+ );
15
+ }
@@ -1,4 +1,4 @@
1
- import { Room } from "@/components/room/room";
1
+ import { Room } from '@/components/room/room';
2
2
 
3
3
  export default function RoomPage() {
4
4
  return <Room />;
@@ -53,10 +53,10 @@ export const Error = () => {
53
53
  transition={{ duration: 0.5, delay: 0.2 }}
54
54
  className="flex flex-col items-end justify-center"
55
55
  >
56
- <h1 className="text-3xl font-questrial text-foreground uppercase">
56
+ <h1 className="text-3xl font-inter text-foreground uppercase">
57
57
  WHITEBOARD
58
58
  </h1>
59
- <h2 className="text-2xl font-questrial font-extralight text-muted-foreground uppercase">
59
+ <h2 className="text-2xl font-inter font-extralight text-muted-foreground uppercase">
60
60
  SHOWCASE
61
61
  </h2>
62
62
  </motion.div>
@@ -65,24 +65,24 @@ export const Error = () => {
65
65
  </motion.section>
66
66
  <div className="max-w-[520px] w-full flex flex-col items-center justify-between gap-0">
67
67
  <div className="w-full z-1 flex flex-col gap-2 items-center justify-center bg-transparent">
68
- <Card className="w-full shadow-lg border-0 py-8 gap-0">
68
+ <Card className="w-full shadow-none border-0 py-8 gap-0">
69
69
  <CardHeader className="flex flex-col items-center text-center gap-0">
70
70
  <div className="rounded-full bg-destructive/10 p-3">
71
71
  <AlertCircle className="h-10 w-10 text-destructive" />
72
72
  </div>
73
- <h3 className="text-xl font-questrial font-extralight text-muted-foreground mt-2">
73
+ <h3 className="text-xl font-inter font-extralight text-muted-foreground mt-2">
74
74
  An error has occurred
75
75
  </h3>
76
76
  </CardHeader>
77
77
 
78
78
  <CardContent className="text-center py-6 pb-8">
79
79
  <p>
80
- <span className="font-questrial">{description}</span>
80
+ <span className="font-inter">{description}</span>
81
81
  </p>
82
82
  </CardContent>
83
83
 
84
84
  <CardFooter className="flex flex-col">
85
- <Button asChild className="font-questrial uppercase">
85
+ <Button asChild className="font-inter uppercase">
86
86
  <Link href={href}>{action}</Link>
87
87
  </Button>
88
88
  </CardFooter>
@@ -6,12 +6,14 @@ import { motion } from 'motion/react';
6
6
  import { Logo } from '@/components/utils/logo';
7
7
  import LoginForm from '../home-components/login-form';
8
8
  import Dither from '../ui/reactbits/Backgrounds/Dither/Dither';
9
- import RotatingText from '../ui/reactbits/TextAnimations/RotatingText/RotatingText';
9
+ import { Button } from '../ui/button';
10
+ import { Github, Book } from 'lucide-react';
11
+ import { DOCUMENTATION_URL, GITHUB_URL } from '@/lib/constants';
10
12
 
11
13
  export const Home = () => {
12
14
  return (
13
15
  <>
14
- <main className="w-full h-full flex justify-center items-center relative">
16
+ <main className="w-full h-full flex justify-center items-center relative p-[40px]">
15
17
  <div className="absolute top-0 left-0 right-0 bottom-0">
16
18
  <Dither
17
19
  waveColor={[0.5, 0.5, 0.5]}
@@ -32,7 +34,7 @@ export const Home = () => {
32
34
  className="relative flex h-full w-full flex-col items-center justify-center"
33
35
  >
34
36
  <div className="max-w-[520px] w-full flex flex-col items-center justify-between gap-0">
35
- <div className="w-full flex justify-between items-center gap-2 md:left-8 md:top-8 bg-background p-8 py-6 rounded-xl">
37
+ <div className="w-full flex justify-between items-center gap-2 md:left-8 md:top-8 bg-background p-8 py-6 border border-[#c9c9c9]">
36
38
  <Logo />
37
39
  <motion.div
38
40
  initial={{ opacity: 0, y: -20 }}
@@ -40,38 +42,38 @@ export const Home = () => {
40
42
  transition={{ duration: 0.5, delay: 0.2 }}
41
43
  className="flex flex-col items-end justify-center"
42
44
  >
43
- <h1 className="text-3xl font-questrial text-foreground uppercase">
44
- WHITEBOARD
45
+ <h1 className="text-3xl font-inter font-bold text-foreground uppercase">
46
+ BOILERPLATE
45
47
  </h1>
46
- <h2 className="text-2xl font-questrial font-extralight text-muted-foreground uppercase">
47
- SHOWCASE
48
- </h2>
49
48
  </motion.div>
50
49
  </div>
51
- <div className="w-full flex gap-1 items-center justify-center bg-transparent">
52
- <RotatingText
53
- texts={[
54
- 'collaborative',
55
- 'easy to use',
56
- 'extensible',
57
- 'visual',
58
- 'open source',
59
- ]}
60
- mainClassName="font-questrial leading-[100px] w-full h-full text-black overflow-hidden justify-center items-center text-3xl"
61
- staggerFrom={'last'}
62
- initial={{ y: '100%' }}
63
- animate={{ y: 0 }}
64
- exit={{ y: '-120%' }}
65
- staggerDuration={0.025}
66
- splitBy="characters"
67
- splitLevelClassName="overflow-hidden pb-0.5 sm:pb-1 md:pb-1"
68
- transition={{ type: 'spring', damping: 30, stiffness: 400 }}
69
- rotationInterval={2000}
70
- />
71
- </div>
72
- <div className="w-full flex flex-col gap-2 items-center justify-center bg-background p-8 py-10 rounded-xl">
50
+ <div className="w-full flex flex-col gap-2 items-center justify-center bg-background p-[32px] border border-[#c9c9c9] mt-[32px]">
73
51
  <LoginForm />
74
52
  </div>
53
+ <div className="w-full flex gap-2 items-center justify-center bg-background p-8 py-2 mt-4">
54
+ <Button
55
+ variant="link"
56
+ onClick={() => {
57
+ window.open(GITHUB_URL, '_blank', 'noopener,noreferrer');
58
+ }}
59
+ className="cursor-pointer font-inter font-light"
60
+ >
61
+ <Github strokeWidth={1} /> GITHUB
62
+ </Button>
63
+ <Button
64
+ variant="link"
65
+ onClick={() => {
66
+ window.open(
67
+ DOCUMENTATION_URL,
68
+ '_blank',
69
+ 'noopener,noreferrer'
70
+ );
71
+ }}
72
+ className="cursor-pointer font-inter font-light"
73
+ >
74
+ <Book strokeWidth={1} /> DOCUMENTATION
75
+ </Button>
76
+ </div>
75
77
  </div>
76
78
  </motion.section>
77
79
  </main>
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import React from 'react';
4
+ import * as changeCase from 'change-case';
4
5
  import { motion } from 'motion/react';
5
6
  import { useRouter } from 'next/navigation';
6
7
  import { z } from 'zod';
@@ -48,12 +49,18 @@ function LoginForm() {
48
49
  });
49
50
 
50
51
  function onSubmit(values: z.infer<typeof formSchema>) {
51
- setRoom(values.roomId);
52
- setUser({
52
+ const roomIdMapped = changeCase.kebabCase(values.roomId);
53
+ const userMapped = {
53
54
  name: values.username,
54
55
  email: `${values.username}@weavejs.com`,
55
- });
56
- router.push(`/rooms/${values.roomId}?userName=${values.username}`);
56
+ };
57
+ setRoom(roomIdMapped);
58
+ setUser(userMapped);
59
+ sessionStorage.setItem(
60
+ `weave.js_${roomIdMapped}`,
61
+ JSON.stringify(userMapped)
62
+ );
63
+ router.push(`/rooms/${roomIdMapped}`);
57
64
  }
58
65
 
59
66
  return (
@@ -73,13 +80,13 @@ function LoginForm() {
73
80
  name="roomId"
74
81
  render={({ field }) => (
75
82
  <FormItem>
76
- <FormLabel className="font-questrial font-light">
83
+ <FormLabel className="text-[#757575] font-inter font-light">
77
84
  Room name
78
85
  </FormLabel>
79
86
  <FormControl>
80
87
  <Input
81
88
  placeholder="room name to join"
82
- className="font-questrial rounded-md"
89
+ className="font-inter font-light rounded-none border-black"
83
90
  {...field}
84
91
  />
85
92
  </FormControl>
@@ -91,14 +98,14 @@ function LoginForm() {
91
98
  control={form.control}
92
99
  name="username"
93
100
  render={({ field }) => (
94
- <FormItem>
95
- <FormLabel className="font-questrial font-light">
101
+ <FormItem className="mb-0">
102
+ <FormLabel className="text-[#757575] font-inter font-light">
96
103
  Username
97
104
  </FormLabel>
98
105
  <FormControl>
99
106
  <Input
100
107
  placeholder="your username"
101
- className="font-questrial rounded-md"
108
+ className="font-inter font-light rounded-none border-black"
102
109
  {...field}
103
110
  />
104
111
  </FormControl>
@@ -109,7 +116,7 @@ function LoginForm() {
109
116
  <div className="w-full flex justify-center items-center">
110
117
  <Button
111
118
  type="submit"
112
- className="cursor-pointer font-questrial rounded-md mt-8"
119
+ className="cursor-pointer font-inter rounded-none mt-[32px]"
113
120
  >
114
121
  ENTER
115
122
  </Button>
@@ -1,17 +1,17 @@
1
- import { WeaveNode } from '@inditextech/weave-sdk';
1
+ import { WeaveNode } from "@inditextech/weave-sdk";
2
2
  import {
3
3
  WeaveElementAttributes,
4
4
  WeaveElementInstance,
5
- } from '@inditextech/weave-types';
6
- import Konva from 'konva';
7
- import { Noto_Sans_Mono } from 'next/font/google';
5
+ } from "@inditextech/weave-types";
6
+ import Konva from "konva";
7
+ import { Inter } from "next/font/google";
8
8
 
9
- export const COLOR_TOKEN_NODE_TYPE = 'color-token';
9
+ export const COLOR_TOKEN_NODE_TYPE = "color-token";
10
10
 
11
- const notoSansMono = Noto_Sans_Mono({
11
+ const inter = Inter({
12
12
  preload: true,
13
- variable: '--font-noto-sans-mono',
14
- subsets: ['latin'],
13
+ variable: "--inter",
14
+ subsets: ["latin"],
15
15
  });
16
16
 
17
17
  export class ColorTokenNode extends WeaveNode {
@@ -20,34 +20,35 @@ export class ColorTokenNode extends WeaveNode {
20
20
  onRender(props: WeaveElementAttributes) {
21
21
  const { id } = props;
22
22
 
23
- const colorTokenColor = props.colorToken ?? '#DEFFA0';
23
+ const colorTokenColor = props.colorToken ?? "#DEFFA0";
24
24
 
25
25
  const colorTokenParams = {
26
26
  ...props,
27
27
  };
28
28
  delete colorTokenParams.zIndex;
29
29
 
30
- const colorToken = new Konva.Group({
30
+ const colorTokenNode = new Konva.Group({
31
31
  ...colorTokenParams,
32
32
  width: colorTokenParams.width,
33
33
  height: colorTokenParams.height,
34
- name: 'node',
34
+ name: "node",
35
35
  });
36
36
 
37
37
  const internalRect = new Konva.Rect({
38
38
  groupId: id,
39
+ id: `${id}-colorToken`,
39
40
  x: 0,
40
41
  y: 0,
41
- fill: '#FFFFFFFF',
42
+ fill: "#FFFFFFFF",
42
43
  width: colorTokenParams.width,
43
44
  height: colorTokenParams.height,
44
45
  draggable: false,
45
- listening: true,
46
- stroke: 'black',
46
+ stroke: "black",
47
47
  strokeWidth: 2,
48
+ name: "node",
48
49
  });
49
50
 
50
- colorToken.add(internalRect);
51
+ colorTokenNode.add(internalRect);
51
52
 
52
53
  const internalRect2 = new Konva.Rect({
53
54
  id: `${id}-colorToken-1`,
@@ -57,10 +58,11 @@ export class ColorTokenNode extends WeaveNode {
57
58
  fill: colorTokenColor,
58
59
  width: colorTokenParams.width - 2,
59
60
  height: (colorTokenParams.height ?? 0) - 60,
61
+ listening: false,
60
62
  draggable: false,
61
63
  });
62
64
 
63
- colorToken.add(internalRect2);
65
+ colorTokenNode.add(internalRect2);
64
66
 
65
67
  const internalText = new Konva.Text({
66
68
  id: `${id}-colorToken-code`,
@@ -68,23 +70,24 @@ export class ColorTokenNode extends WeaveNode {
68
70
  x: 20,
69
71
  y: 260,
70
72
  fontSize: 20,
71
- fontFamily: notoSansMono.style.fontFamily,
72
- fill: '#CCCCCCFF',
73
+ fontFamily: inter.style.fontFamily,
74
+ fill: "#CCCCCCFF",
73
75
  strokeEnabled: false,
74
- stroke: '#000000FF',
76
+ stroke: "#000000FF",
75
77
  strokeWidth: 1,
76
78
  text: `${colorTokenColor}`,
77
79
  width: (colorTokenParams.width ?? 0) - 40,
78
80
  height: 20,
79
- align: 'left',
81
+ align: "left",
82
+ listening: false,
80
83
  draggable: false,
81
84
  });
82
85
 
83
- colorToken.add(internalText);
86
+ colorTokenNode.add(internalText);
84
87
 
85
- this.setupDefaultNodeEvents(colorToken);
88
+ this.setupDefaultNodeEvents(colorTokenNode);
86
89
 
87
- return colorToken;
90
+ return colorTokenNode;
88
91
  }
89
92
 
90
93
  onUpdate(
@@ -101,7 +104,7 @@ export class ColorTokenNode extends WeaveNode {
101
104
  zIndex: nodeInstanceZIndex,
102
105
  });
103
106
 
104
- const colorTokenColor = colorToken ?? '#DEFFA0';
107
+ const colorTokenColor = colorToken ?? "#DEFFA0";
105
108
 
106
109
  const colorTokenNode1 = colorTokenNode.findOne(`#${id}-colorToken-1`);
107
110
  if (colorTokenNode1) {
@@ -111,7 +114,7 @@ export class ColorTokenNode extends WeaveNode {
111
114
  }
112
115
  const colorTokenCode = colorTokenNode.findOne(`#${id}-colorToken-code`);
113
116
  if (colorTokenCode) {
114
- colorTokenCode.setAttr('text', `${colorTokenColor}`);
117
+ colorTokenCode.setAttr("text", `${colorTokenColor}`);
115
118
  }
116
119
  }
117
120
  }