@superblocksteam/vite-plugin-file-sync 2.0.115-next.0 → 2.0.115-next.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 (355) hide show
  1. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  2. package/dist/ai-service/agent/middleware.js +19 -0
  3. package/dist/ai-service/agent/middleware.js.map +1 -1
  4. package/dist/ai-service/agent/prompts/api-prompts.d.ts.map +1 -1
  5. package/dist/ai-service/agent/prompts/api-prompts.js +13 -17
  6. package/dist/ai-service/agent/prompts/api-prompts.js.map +1 -1
  7. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  8. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +22 -3
  9. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  10. package/dist/ai-service/agent/subagents/coding/prompt-builder.d.ts +16 -0
  11. package/dist/ai-service/agent/subagents/coding/prompt-builder.d.ts.map +1 -0
  12. package/dist/ai-service/agent/subagents/coding/prompt-builder.js +30 -0
  13. package/dist/ai-service/agent/subagents/coding/prompt-builder.js.map +1 -0
  14. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.d.ts +29 -0
  15. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.d.ts.map +1 -0
  16. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js +108 -0
  17. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js.map +1 -0
  18. package/dist/ai-service/agent/subagents/types.d.ts +9 -1
  19. package/dist/ai-service/agent/subagents/types.d.ts.map +1 -1
  20. package/dist/ai-service/agent/subagents/types.js +8 -0
  21. package/dist/ai-service/agent/subagents/types.js.map +1 -1
  22. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tool-message-utils.js +5 -0
  24. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  25. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +2 -1
  27. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
  28. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts +6 -0
  29. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts.map +1 -0
  30. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +138 -0
  31. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js.map +1 -0
  32. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  33. package/dist/ai-service/agent/tools/build-finalize.js +39 -15
  34. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  35. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +6 -3
  36. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
  37. package/dist/ai-service/agent/tools/build-manage-checklist.js +116 -49
  38. package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
  39. package/dist/ai-service/agent/tools/index.d.ts +2 -0
  40. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  41. package/dist/ai-service/agent/tools/index.js +2 -0
  42. package/dist/ai-service/agent/tools/index.js.map +1 -1
  43. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +3 -0
  44. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
  45. package/dist/ai-service/agent/tools/integrations/execute-request.js +330 -204
  46. package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
  47. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  48. package/dist/ai-service/agent/tools.js +40 -2
  49. package/dist/ai-service/agent/tools.js.map +1 -1
  50. package/dist/ai-service/agent/tools2/access-control.d.ts +1 -1
  51. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  52. package/dist/ai-service/agent/tools2/access-control.js +15 -4
  53. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  54. package/dist/ai-service/agent/tools2/registry.d.ts +3 -0
  55. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  56. package/dist/ai-service/agent/tools2/registry.js +50 -8
  57. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  58. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
  59. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +3 -2
  60. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
  61. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts.map +1 -1
  62. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js +2 -1
  63. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js.map +1 -1
  64. package/dist/ai-service/agent/tools2/tools/deploy-service.d.ts +16 -0
  65. package/dist/ai-service/agent/tools2/tools/deploy-service.d.ts.map +1 -0
  66. package/dist/ai-service/agent/tools2/tools/deploy-service.js +135 -0
  67. package/dist/ai-service/agent/tools2/tools/deploy-service.js.map +1 -0
  68. package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts +33 -0
  69. package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts.map +1 -0
  70. package/dist/ai-service/agent/tools2/tools/download-attachments.js +308 -0
  71. package/dist/ai-service/agent/tools2/tools/download-attachments.js.map +1 -0
  72. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  73. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +8 -4
  74. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  75. package/dist/ai-service/agent/tools2/tools/git.d.ts +57 -1
  76. package/dist/ai-service/agent/tools2/tools/git.d.ts.map +1 -1
  77. package/dist/ai-service/agent/tools2/tools/git.js +275 -8
  78. package/dist/ai-service/agent/tools2/tools/git.js.map +1 -1
  79. package/dist/ai-service/agent/tools2/tools/index.d.ts +2 -1
  80. package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -1
  81. package/dist/ai-service/agent/tools2/tools/index.js +2 -1
  82. package/dist/ai-service/agent/tools2/tools/index.js.map +1 -1
  83. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts +4 -1
  84. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -1
  85. package/dist/ai-service/agent/tools2/tools/list-attachments.js +20 -4
  86. package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
  87. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts +28 -0
  88. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts.map +1 -0
  89. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js +152 -0
  90. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js.map +1 -0
  91. package/dist/ai-service/agent/tools2/types.d.ts +1 -18
  92. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  93. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  94. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  95. package/dist/ai-service/agent/utils.js +22 -5
  96. package/dist/ai-service/agent/utils.js.map +1 -1
  97. package/dist/ai-service/app-interface/file-system-interface.d.ts +0 -4
  98. package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -1
  99. package/dist/ai-service/app-interface/file-system-interface.js +0 -21
  100. package/dist/ai-service/app-interface/file-system-interface.js.map +1 -1
  101. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts +11 -1
  102. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +1 -1
  103. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +29 -7
  104. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +1 -1
  105. package/dist/ai-service/app-interface/shell.d.ts +6 -0
  106. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  107. package/dist/ai-service/app-interface/shell.js +8 -0
  108. package/dist/ai-service/app-interface/shell.js.map +1 -1
  109. package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
  110. package/dist/ai-service/app-skills/helpers.js +4 -2
  111. package/dist/ai-service/app-skills/helpers.js.map +1 -1
  112. package/dist/ai-service/attachments/store.d.ts +18 -2
  113. package/dist/ai-service/attachments/store.d.ts.map +1 -1
  114. package/dist/ai-service/attachments/store.js +102 -9
  115. package/dist/ai-service/attachments/store.js.map +1 -1
  116. package/dist/ai-service/attachments/uploaded-content-part.d.ts +5 -2
  117. package/dist/ai-service/attachments/uploaded-content-part.d.ts.map +1 -1
  118. package/dist/ai-service/attachments/uploaded-content-part.js +32 -0
  119. package/dist/ai-service/attachments/uploaded-content-part.js.map +1 -1
  120. package/dist/ai-service/chat/chat-session-store.d.ts +2 -2
  121. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  122. package/dist/ai-service/chat/chat-session-store.js +45 -243
  123. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  124. package/dist/ai-service/chat/utils.d.ts +6 -0
  125. package/dist/ai-service/chat/utils.d.ts.map +1 -1
  126. package/dist/ai-service/chat/utils.js +47 -0
  127. package/dist/ai-service/chat/utils.js.map +1 -1
  128. package/dist/ai-service/features.d.ts +4 -0
  129. package/dist/ai-service/features.d.ts.map +1 -1
  130. package/dist/ai-service/features.js +4 -0
  131. package/dist/ai-service/features.js.map +1 -1
  132. package/dist/ai-service/index.d.ts +36 -11
  133. package/dist/ai-service/index.d.ts.map +1 -1
  134. package/dist/ai-service/index.js +228 -68
  135. package/dist/ai-service/index.js.map +1 -1
  136. package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
  137. package/dist/ai-service/llm/client.d.ts.map +1 -1
  138. package/dist/ai-service/llm/client.js +4 -2
  139. package/dist/ai-service/llm/client.js.map +1 -1
  140. package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -1
  141. package/dist/ai-service/llm/stream/observers/retry-notification.js +4 -2
  142. package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -1
  143. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts.map +1 -1
  144. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js +1 -16
  145. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js.map +1 -1
  146. package/dist/ai-service/prompt-builder-service/types.d.ts +2 -13
  147. package/dist/ai-service/prompt-builder-service/types.d.ts.map +1 -1
  148. package/dist/ai-service/prompt-builder-service/types.js.map +1 -1
  149. package/dist/ai-service/skills/system/_registry.generated.d.ts.map +1 -1
  150. package/dist/ai-service/skills/system/_registry.generated.js +6 -0
  151. package/dist/ai-service/skills/system/_registry.generated.js.map +1 -1
  152. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts +2 -0
  153. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts.map +1 -0
  154. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js +58 -0
  155. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js.map +1 -0
  156. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts +2 -0
  157. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts.map +1 -0
  158. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js +107 -0
  159. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js.map +1 -0
  160. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +2 -0
  161. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -0
  162. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +137 -0
  163. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -0
  164. package/dist/ai-service/state-machine/clark-fsm.d.ts +26 -13
  165. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  166. package/dist/ai-service/state-machine/clark-fsm.js +12 -7
  167. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  168. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  169. package/dist/ai-service/state-machine/handlers/agent-planning.js +51 -27
  170. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  171. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  172. package/dist/ai-service/state-machine/handlers/awaiting-user.js +15 -6
  173. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  174. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  175. package/dist/ai-service/state-machine/handlers/idle.js +4 -2
  176. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  177. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  178. package/dist/ai-service/state-machine/handlers/llm-generating.js +48 -15
  179. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  180. package/dist/ai-service/state-machine/handlers/post-processing.d.ts +1 -1
  181. package/dist/ai-service/state-machine/handlers/post-processing.d.ts.map +1 -1
  182. package/dist/ai-service/state-machine/handlers/post-processing.js +23 -151
  183. package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
  184. package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
  185. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +16 -8
  186. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
  187. package/dist/ai-service/state-machine/helpers/change-info.d.ts.map +1 -1
  188. package/dist/ai-service/state-machine/helpers/change-info.js +2 -15
  189. package/dist/ai-service/state-machine/helpers/change-info.js.map +1 -1
  190. package/dist/ai-service/state-machine/helpers/peer.d.ts +3 -3
  191. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  192. package/dist/ai-service/state-machine/helpers/peer.js +9 -23
  193. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  194. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +52 -0
  195. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -0
  196. package/dist/ai-service/state-machine/helpers/stable-peer.js +141 -0
  197. package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -0
  198. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  199. package/dist/ai-service/state-machine/mocks.js +0 -17
  200. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  201. package/dist/ai-service/types.d.ts +2 -21
  202. package/dist/ai-service/types.d.ts.map +1 -1
  203. package/dist/ai-service/types.js.map +1 -1
  204. package/dist/ai-service/util/archive-extractors.d.ts +52 -0
  205. package/dist/ai-service/util/archive-extractors.d.ts.map +1 -0
  206. package/dist/ai-service/util/archive-extractors.js +278 -0
  207. package/dist/ai-service/util/archive-extractors.js.map +1 -0
  208. package/dist/codegen.d.ts +1 -22
  209. package/dist/codegen.d.ts.map +1 -1
  210. package/dist/codegen.js +1 -117
  211. package/dist/codegen.js.map +1 -1
  212. package/dist/components-manager.d.ts +0 -6
  213. package/dist/components-manager.d.ts.map +1 -1
  214. package/dist/components-manager.js +0 -27
  215. package/dist/components-manager.js.map +1 -1
  216. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  217. package/dist/file-sync-vite-plugin.js +47 -94
  218. package/dist/file-sync-vite-plugin.js.map +1 -1
  219. package/dist/file-system-manager.d.ts +2 -15
  220. package/dist/file-system-manager.d.ts.map +1 -1
  221. package/dist/file-system-manager.js +16 -128
  222. package/dist/file-system-manager.js.map +1 -1
  223. package/dist/git-service/live-branch.d.ts.map +1 -1
  224. package/dist/git-service/live-branch.js +15 -1
  225. package/dist/git-service/live-branch.js.map +1 -1
  226. package/dist/lock-service/index.d.ts.map +1 -1
  227. package/dist/lock-service/index.js +8 -5
  228. package/dist/lock-service/index.js.map +1 -1
  229. package/dist/migration/get-fullstack-template-dir.d.ts +37 -0
  230. package/dist/migration/get-fullstack-template-dir.d.ts.map +1 -0
  231. package/dist/migration/get-fullstack-template-dir.js +99 -0
  232. package/dist/migration/get-fullstack-template-dir.js.map +1 -0
  233. package/dist/migration/migration-checklist.d.ts +60 -0
  234. package/dist/migration/migration-checklist.d.ts.map +1 -0
  235. package/dist/migration/migration-checklist.js +230 -0
  236. package/dist/migration/migration-checklist.js.map +1 -0
  237. package/dist/migration/migration-routes.d.ts +23 -0
  238. package/dist/migration/migration-routes.d.ts.map +1 -0
  239. package/dist/migration/migration-routes.js +533 -0
  240. package/dist/migration/migration-routes.js.map +1 -0
  241. package/dist/migration/restructure.d.ts +76 -0
  242. package/dist/migration/restructure.d.ts.map +1 -0
  243. package/dist/migration/restructure.js +446 -0
  244. package/dist/migration/restructure.js.map +1 -0
  245. package/dist/migration/translation-prompt.d.ts +22 -0
  246. package/dist/migration/translation-prompt.d.ts.map +1 -0
  247. package/dist/migration/translation-prompt.js +27 -0
  248. package/dist/migration/translation-prompt.js.map +1 -0
  249. package/dist/migration-templates/app-fullstack/client/App.tsx +17 -0
  250. package/dist/migration-templates/app-fullstack/client/components/common/sonner.tsx +20 -0
  251. package/dist/migration-templates/app-fullstack/client/components/hooks/use-active-page.ts +73 -0
  252. package/dist/migration-templates/app-fullstack/client/components/hooks/use-mobile.ts +21 -0
  253. package/dist/migration-templates/app-fullstack/client/components/ui/accordion.tsx +197 -0
  254. package/dist/migration-templates/app-fullstack/client/components/ui/area-chart.tsx +432 -0
  255. package/dist/migration-templates/app-fullstack/client/components/ui/aspect-ratio.tsx +45 -0
  256. package/dist/migration-templates/app-fullstack/client/components/ui/avatar.tsx +117 -0
  257. package/dist/migration-templates/app-fullstack/client/components/ui/badge.tsx +143 -0
  258. package/dist/migration-templates/app-fullstack/client/components/ui/bar-chart.tsx +390 -0
  259. package/dist/migration-templates/app-fullstack/client/components/ui/breadcrumb.tsx +259 -0
  260. package/dist/migration-templates/app-fullstack/client/components/ui/button.tsx +182 -0
  261. package/dist/migration-templates/app-fullstack/client/components/ui/calendar.tsx +300 -0
  262. package/dist/migration-templates/app-fullstack/client/components/ui/card.tsx +129 -0
  263. package/dist/migration-templates/app-fullstack/client/components/ui/chart.tsx +403 -0
  264. package/dist/migration-templates/app-fullstack/client/components/ui/chat.tsx +2303 -0
  265. package/dist/migration-templates/app-fullstack/client/components/ui/checkbox.tsx +97 -0
  266. package/dist/migration-templates/app-fullstack/client/components/ui/code-block-content.tsx +66 -0
  267. package/dist/migration-templates/app-fullstack/client/components/ui/date-range-picker.tsx +396 -0
  268. package/dist/migration-templates/app-fullstack/client/components/ui/dialog.tsx +223 -0
  269. package/dist/migration-templates/app-fullstack/client/components/ui/dropdown-menu.tsx +284 -0
  270. package/dist/migration-templates/app-fullstack/client/components/ui/file-dropzone.tsx +395 -0
  271. package/dist/migration-templates/app-fullstack/client/components/ui/file-input.tsx +166 -0
  272. package/dist/migration-templates/app-fullstack/client/components/ui/hover-card.tsx +162 -0
  273. package/dist/migration-templates/app-fullstack/client/components/ui/icon.tsx +133 -0
  274. package/dist/migration-templates/app-fullstack/client/components/ui/image.tsx +68 -0
  275. package/dist/migration-templates/app-fullstack/client/components/ui/input.tsx +219 -0
  276. package/dist/migration-templates/app-fullstack/client/components/ui/label.tsx +55 -0
  277. package/dist/migration-templates/app-fullstack/client/components/ui/line-chart.tsx +380 -0
  278. package/dist/migration-templates/app-fullstack/client/components/ui/link.tsx +139 -0
  279. package/dist/migration-templates/app-fullstack/client/components/ui/navigation-menu.tsx +345 -0
  280. package/dist/migration-templates/app-fullstack/client/components/ui/pagination.tsx +192 -0
  281. package/dist/migration-templates/app-fullstack/client/components/ui/pie-chart.tsx +295 -0
  282. package/dist/migration-templates/app-fullstack/client/components/ui/popover.tsx +162 -0
  283. package/dist/migration-templates/app-fullstack/client/components/ui/progress.tsx +69 -0
  284. package/dist/migration-templates/app-fullstack/client/components/ui/radar-chart.tsx +386 -0
  285. package/dist/migration-templates/app-fullstack/client/components/ui/radial-chart.tsx +402 -0
  286. package/dist/migration-templates/app-fullstack/client/components/ui/scroll-area.tsx +86 -0
  287. package/dist/migration-templates/app-fullstack/client/components/ui/select.tsx +229 -0
  288. package/dist/migration-templates/app-fullstack/client/components/ui/separator.tsx +62 -0
  289. package/dist/migration-templates/app-fullstack/client/components/ui/sheet.tsx +234 -0
  290. package/dist/migration-templates/app-fullstack/client/components/ui/sidebar.tsx +974 -0
  291. package/dist/migration-templates/app-fullstack/client/components/ui/skeleton.tsx +13 -0
  292. package/dist/migration-templates/app-fullstack/client/components/ui/slider.tsx +198 -0
  293. package/dist/migration-templates/app-fullstack/client/components/ui/switch.tsx +95 -0
  294. package/dist/migration-templates/app-fullstack/client/components/ui/table.tsx +145 -0
  295. package/dist/migration-templates/app-fullstack/client/components/ui/tabs.tsx +87 -0
  296. package/dist/migration-templates/app-fullstack/client/components/ui/textarea.tsx +148 -0
  297. package/dist/migration-templates/app-fullstack/client/components/ui/toggle-group.tsx +225 -0
  298. package/dist/migration-templates/app-fullstack/client/components/ui/toggle.tsx +150 -0
  299. package/dist/migration-templates/app-fullstack/client/components/ui/tooltip.tsx +175 -0
  300. package/dist/migration-templates/app-fullstack/client/hooks/useApi.ts +25 -0
  301. package/dist/migration-templates/app-fullstack/client/hooks/useApiData.ts +10 -0
  302. package/dist/migration-templates/app-fullstack/client/index.css +131 -0
  303. package/dist/migration-templates/app-fullstack/client/lib/executeApi.ts +9 -0
  304. package/dist/migration-templates/app-fullstack/client/lib/utils.ts +6 -0
  305. package/dist/migration-templates/app-fullstack/client/pages/Page1/index.tsx +3 -0
  306. package/dist/migration-templates/app-fullstack/client/root.tsx +17 -0
  307. package/dist/migration-templates/app-fullstack/client/router.tsx +48 -0
  308. package/dist/migration-templates/app-fullstack/client/types/node.d.ts +9 -0
  309. package/dist/migration-templates/app-fullstack/components.json +21 -0
  310. package/dist/migration-templates/app-fullstack/eslint.config.js +108 -0
  311. package/dist/migration-templates/app-fullstack/package.json +89 -0
  312. package/dist/migration-templates/app-fullstack/server/.gitkeep +0 -0
  313. package/dist/migration-templates/app-fullstack/server/apis/index.ts +22 -0
  314. package/dist/migration-templates/app-fullstack/server/index.ts +2 -0
  315. package/dist/migration-templates/app-fullstack/tsconfig.client.json +27 -0
  316. package/dist/migration-templates/app-fullstack/tsconfig.eslint.json +8 -0
  317. package/dist/migration-templates/app-fullstack/tsconfig.json +25 -0
  318. package/dist/migration-templates/app-fullstack/tsconfig.server.json +13 -0
  319. package/dist/migration-templates/app-fullstack/vite.config.ts +17 -0
  320. package/dist/parsing/imports.d.ts +0 -16
  321. package/dist/parsing/imports.d.ts.map +1 -1
  322. package/dist/parsing/imports.js +0 -68
  323. package/dist/parsing/imports.js.map +1 -1
  324. package/dist/parsing/jsx.d.ts +0 -2
  325. package/dist/parsing/jsx.d.ts.map +1 -1
  326. package/dist/parsing/jsx.js +0 -62
  327. package/dist/parsing/jsx.js.map +1 -1
  328. package/dist/socket-manager.d.ts.map +1 -1
  329. package/dist/socket-manager.js +109 -32
  330. package/dist/socket-manager.js.map +1 -1
  331. package/dist/source-tracker.d.ts +7 -85
  332. package/dist/source-tracker.d.ts.map +1 -1
  333. package/dist/source-tracker.js +19 -695
  334. package/dist/source-tracker.js.map +1 -1
  335. package/dist/sync-service/index.d.ts +79 -2
  336. package/dist/sync-service/index.d.ts.map +1 -1
  337. package/dist/sync-service/index.js +139 -10
  338. package/dist/sync-service/index.js.map +1 -1
  339. package/package.json +11 -9
  340. package/dist/ai-service/artifacts/bolt.d.ts +0 -8
  341. package/dist/ai-service/artifacts/bolt.d.ts.map +0 -1
  342. package/dist/ai-service/artifacts/bolt.js +0 -92
  343. package/dist/ai-service/artifacts/bolt.js.map +0 -1
  344. package/dist/ai-service/result-buffer/bolt.d.ts +0 -18
  345. package/dist/ai-service/result-buffer/bolt.d.ts.map +0 -1
  346. package/dist/ai-service/result-buffer/bolt.js +0 -100
  347. package/dist/ai-service/result-buffer/bolt.js.map +0 -1
  348. package/dist/ai-service/result-buffer/shared.d.ts +0 -17
  349. package/dist/ai-service/result-buffer/shared.d.ts.map +0 -1
  350. package/dist/ai-service/result-buffer/shared.js +0 -7
  351. package/dist/ai-service/result-buffer/shared.js.map +0 -1
  352. package/dist/inject-no-select.d.ts +0 -15
  353. package/dist/inject-no-select.d.ts.map +0 -1
  354. package/dist/inject-no-select.js +0 -175
  355. package/dist/inject-no-select.js.map +0 -1
@@ -0,0 +1,974 @@
1
+ /* eslint-disable react-refresh/only-export-components */
2
+ "use client";
3
+
4
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
5
+ import { Slot } from "@radix-ui/react-slot";
6
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
7
+ import type { VariantProps } from "class-variance-authority";
8
+ import { cva } from "class-variance-authority";
9
+ import { PanelLeftIcon } from "lucide-react";
10
+ import { XIcon } from "lucide-react";
11
+ import * as React from "react";
12
+
13
+ import { registerComponent } from "@superblocksteam/library";
14
+ import {
15
+ Prop,
16
+ Section,
17
+ PropsCategory,
18
+ type PropertiesPanelDefinition,
19
+ type EditorConfig,
20
+ } from "@superblocksteam/library";
21
+
22
+ import { useIsMobile } from "@/components/hooks/use-mobile";
23
+ import { Button } from "@/components/ui/button";
24
+ import { Input } from "@/components/ui/input";
25
+ import { Separator } from "@/components/ui/separator";
26
+ import { cn } from "@/lib/utils";
27
+
28
+ // Internal Sheet Components (for sidebar mobile view)
29
+ function SidebarSheet({
30
+ ...props
31
+ }: React.ComponentProps<typeof SheetPrimitive.Root>) {
32
+ return <SheetPrimitive.Root data-slot="sheet" {...props} />;
33
+ }
34
+
35
+ function SidebarSheetTrigger({
36
+ ...props
37
+ }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {
38
+ return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />;
39
+ }
40
+
41
+ function SidebarSheetClose({
42
+ ...props
43
+ }: React.ComponentProps<typeof SheetPrimitive.Close>) {
44
+ return <SheetPrimitive.Close data-slot="sheet-close" {...props} />;
45
+ }
46
+
47
+ function SidebarSheetPortal({
48
+ ...props
49
+ }: React.ComponentProps<typeof SheetPrimitive.Portal>) {
50
+ return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />;
51
+ }
52
+
53
+ function SidebarSheetOverlay({
54
+ className,
55
+ ...props
56
+ }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {
57
+ return (
58
+ <SheetPrimitive.Overlay
59
+ data-slot="sheet-overlay"
60
+ className={cn(
61
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
62
+ className,
63
+ )}
64
+ {...props}
65
+ />
66
+ );
67
+ }
68
+
69
+ function SidebarSheetContent({
70
+ className,
71
+ children,
72
+ side = "right",
73
+ ...props
74
+ }: React.ComponentProps<typeof SheetPrimitive.Content> & {
75
+ side?: "top" | "right" | "bottom" | "left";
76
+ }) {
77
+ return (
78
+ <SidebarSheetPortal>
79
+ <SidebarSheetOverlay />
80
+ <SheetPrimitive.Content
81
+ data-slot="sheet-content"
82
+ className={cn(
83
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
84
+ side === "right" &&
85
+ "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
86
+ side === "left" &&
87
+ "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
88
+ side === "top" &&
89
+ "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
90
+ side === "bottom" &&
91
+ "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
92
+ className,
93
+ )}
94
+ {...props}
95
+ >
96
+ {children}
97
+ <SheetPrimitive.Close className="ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none">
98
+ <XIcon className="size-4" />
99
+ <span className="sr-only">Close</span>
100
+ </SheetPrimitive.Close>
101
+ </SheetPrimitive.Content>
102
+ </SidebarSheetPortal>
103
+ );
104
+ }
105
+
106
+ function SidebarSheetHeader({
107
+ className,
108
+ ...props
109
+ }: React.ComponentProps<"div">) {
110
+ return (
111
+ <div
112
+ data-slot="sheet-header"
113
+ className={cn("flex flex-col gap-1.5 p-4", className)}
114
+ {...props}
115
+ />
116
+ );
117
+ }
118
+
119
+ function SidebarSheetFooter({
120
+ className,
121
+ ...props
122
+ }: React.ComponentProps<"div">) {
123
+ return (
124
+ <div
125
+ data-slot="sheet-footer"
126
+ className={cn("mt-auto flex flex-col gap-2 p-4", className)}
127
+ {...props}
128
+ />
129
+ );
130
+ }
131
+
132
+ function SidebarSheetTitle({
133
+ className,
134
+ ...props
135
+ }: React.ComponentProps<typeof SheetPrimitive.Title>) {
136
+ return (
137
+ <SheetPrimitive.Title
138
+ data-slot="sheet-title"
139
+ className={cn("text-foreground font-semibold", className)}
140
+ {...props}
141
+ />
142
+ );
143
+ }
144
+
145
+ function SidebarSheetDescription({
146
+ className,
147
+ ...props
148
+ }: React.ComponentProps<typeof SheetPrimitive.Description>) {
149
+ return (
150
+ <SheetPrimitive.Description
151
+ data-slot="sheet-description"
152
+ className={cn("text-muted-foreground text-sm", className)}
153
+ {...props}
154
+ />
155
+ );
156
+ }
157
+
158
+ // Internal Skeleton Component
159
+ function SidebarSkeleton({ className, ...props }: React.ComponentProps<"div">) {
160
+ return (
161
+ <div
162
+ data-slot="skeleton"
163
+ className={cn("bg-accent animate-pulse rounded-md", className)}
164
+ {...props}
165
+ />
166
+ );
167
+ }
168
+
169
+ // Internal Tooltip Components
170
+ function SidebarTooltipProvider({
171
+ delayDuration = 0,
172
+ ...props
173
+ }: React.ComponentProps<typeof TooltipPrimitive.Provider>) {
174
+ return (
175
+ <TooltipPrimitive.Provider
176
+ data-slot="tooltip-provider"
177
+ delayDuration={delayDuration}
178
+ {...props}
179
+ />
180
+ );
181
+ }
182
+
183
+ function SidebarTooltip({
184
+ ...props
185
+ }: React.ComponentProps<typeof TooltipPrimitive.Root>) {
186
+ return (
187
+ <SidebarTooltipProvider>
188
+ <TooltipPrimitive.Root data-slot="tooltip" {...props} />
189
+ </SidebarTooltipProvider>
190
+ );
191
+ }
192
+
193
+ function SidebarTooltipTrigger({
194
+ ...props
195
+ }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {
196
+ return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />;
197
+ }
198
+
199
+ function SidebarTooltipContent({
200
+ className,
201
+ sideOffset = 0,
202
+ children,
203
+ ...props
204
+ }: React.ComponentProps<typeof TooltipPrimitive.Content>) {
205
+ return (
206
+ <TooltipPrimitive.Portal>
207
+ <TooltipPrimitive.Content
208
+ data-slot="tooltip-content"
209
+ sideOffset={sideOffset}
210
+ className={cn(
211
+ "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
212
+ className,
213
+ )}
214
+ {...props}
215
+ >
216
+ {children}
217
+ <TooltipPrimitive.Arrow className="bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" />
218
+ </TooltipPrimitive.Content>
219
+ </TooltipPrimitive.Portal>
220
+ );
221
+ }
222
+
223
+ // Context
224
+ interface SidebarContextProps {
225
+ state: "expanded" | "collapsed";
226
+ open: boolean;
227
+ setOpen: (open: boolean) => void;
228
+ openMobile: boolean;
229
+ setOpenMobile: (open: boolean) => void;
230
+ isMobile: boolean;
231
+ toggleSidebar: () => void;
232
+ }
233
+
234
+ const SidebarContext = React.createContext<SidebarContextProps | null>(null);
235
+
236
+ function useSidebar() {
237
+ const context = React.useContext(SidebarContext);
238
+ if (!context) {
239
+ throw new Error("useSidebar must be used within a SidebarProvider.");
240
+ }
241
+ return context;
242
+ }
243
+
244
+ // Constants
245
+ const SIDEBAR_COOKIE_NAME = "sidebar_state";
246
+ const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
247
+ const SIDEBAR_WIDTH = "16rem";
248
+ const SIDEBAR_WIDTH_MOBILE = "18rem";
249
+ const SIDEBAR_WIDTH_ICON = "3rem";
250
+ const SIDEBAR_KEYBOARD_SHORTCUT = "b";
251
+
252
+ // Provider
253
+ function SidebarProvider({
254
+ defaultOpen = true,
255
+ open: openProp,
256
+ onOpenChange: setOpenProp,
257
+ className,
258
+ style,
259
+ children,
260
+ ...props
261
+ }: React.ComponentProps<"div"> & {
262
+ defaultOpen?: boolean;
263
+ open?: boolean;
264
+ onOpenChange?: (open: boolean) => void;
265
+ }) {
266
+ const isMobile = useIsMobile();
267
+ const [openMobile, setOpenMobile] = React.useState(false);
268
+
269
+ const [_open, _setOpen] = React.useState(defaultOpen);
270
+ const open = openProp ?? _open;
271
+ const setOpen = React.useCallback(
272
+ (value: boolean | ((value: boolean) => boolean)) => {
273
+ const openState = typeof value === "function" ? value(open) : value;
274
+ if (setOpenProp) {
275
+ setOpenProp(openState);
276
+ } else {
277
+ _setOpen(openState);
278
+ }
279
+
280
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
281
+ },
282
+ [setOpenProp, open],
283
+ );
284
+
285
+ const toggleSidebar = React.useCallback(() => {
286
+ return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);
287
+ }, [isMobile, setOpen, setOpenMobile]);
288
+
289
+ React.useEffect(() => {
290
+ const handleKeyDown = (event: KeyboardEvent) => {
291
+ if (
292
+ event.key === SIDEBAR_KEYBOARD_SHORTCUT &&
293
+ (event.metaKey || event.ctrlKey)
294
+ ) {
295
+ event.preventDefault();
296
+ toggleSidebar();
297
+ }
298
+ };
299
+ window.addEventListener("keydown", handleKeyDown);
300
+ return () => window.removeEventListener("keydown", handleKeyDown);
301
+ }, [toggleSidebar]);
302
+
303
+ const state = open ? "expanded" : "collapsed";
304
+ const contextValue = React.useMemo<SidebarContextProps>(
305
+ () => ({
306
+ state,
307
+ open,
308
+ setOpen,
309
+ isMobile,
310
+ openMobile,
311
+ setOpenMobile,
312
+ toggleSidebar,
313
+ }),
314
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],
315
+ );
316
+ return (
317
+ <SidebarContext.Provider value={contextValue}>
318
+ <SidebarTooltipProvider delayDuration={0}>
319
+ <div
320
+ data-slot="sidebar-wrapper"
321
+ style={
322
+ {
323
+ "--sidebar-width": SIDEBAR_WIDTH,
324
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
325
+ ...style,
326
+ } as React.CSSProperties
327
+ }
328
+ className={cn(
329
+ "group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",
330
+ className,
331
+ )}
332
+ {...props}
333
+ >
334
+ {children}
335
+ </div>
336
+ </SidebarTooltipProvider>
337
+ </SidebarContext.Provider>
338
+ );
339
+ }
340
+
341
+ // Sidebar Component
342
+ type SidebarProps = React.ComponentProps<"div"> & {
343
+ side?: "left" | "right";
344
+ variant?: "sidebar" | "floating" | "inset";
345
+ collapsible?: "offcanvas" | "icon" | "none";
346
+ };
347
+
348
+ function Sidebar({
349
+ side = "left",
350
+ variant = "sidebar",
351
+ collapsible = "offcanvas",
352
+ className,
353
+ children,
354
+ ...props
355
+ }: React.ComponentProps<"div"> & {
356
+ side?: "left" | "right";
357
+ variant?: "sidebar" | "floating" | "inset";
358
+ collapsible?: "offcanvas" | "icon" | "none";
359
+ }) {
360
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
361
+ if (collapsible === "none") {
362
+ return (
363
+ <div
364
+ data-slot="sidebar"
365
+ className={cn(
366
+ "bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",
367
+ className,
368
+ )}
369
+ {...props}
370
+ >
371
+ {children}
372
+ </div>
373
+ );
374
+ }
375
+ if (isMobile) {
376
+ return (
377
+ <SidebarSheet open={openMobile} onOpenChange={setOpenMobile} {...props}>
378
+ <SidebarSheetContent
379
+ data-sidebar="sidebar"
380
+ data-slot="sidebar"
381
+ data-mobile="true"
382
+ className="bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden"
383
+ style={
384
+ {
385
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE,
386
+ } as React.CSSProperties
387
+ }
388
+ side={side}
389
+ >
390
+ <SidebarSheetHeader className="sr-only">
391
+ <SidebarSheetTitle>Sidebar</SidebarSheetTitle>
392
+ <SidebarSheetDescription>
393
+ Displays the mobile sidebar.
394
+ </SidebarSheetDescription>
395
+ </SidebarSheetHeader>
396
+ <div className="flex h-full w-full flex-col">{children}</div>
397
+ </SidebarSheetContent>
398
+ </SidebarSheet>
399
+ );
400
+ }
401
+ return (
402
+ <div
403
+ className="group peer text-sidebar-foreground hidden md:block"
404
+ data-state={state}
405
+ data-collapsible={state === "collapsed" ? collapsible : ""}
406
+ data-variant={variant}
407
+ data-side={side}
408
+ data-slot="sidebar"
409
+ >
410
+ <div
411
+ data-slot="sidebar-gap"
412
+ className={cn(
413
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
414
+ "group-data-[collapsible=offcanvas]:w-0",
415
+ "group-data-[side=right]:rotate-180",
416
+ variant === "floating" || variant === "inset"
417
+ ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]"
418
+ : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)",
419
+ )}
420
+ />
421
+ <div
422
+ data-slot="sidebar-container"
423
+ className={cn(
424
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
425
+ side === "left"
426
+ ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]"
427
+ : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
428
+ variant === "floating" || variant === "inset"
429
+ ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]"
430
+ : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
431
+ className,
432
+ )}
433
+ {...props}
434
+ >
435
+ <div
436
+ data-sidebar="sidebar"
437
+ data-slot="sidebar-inner"
438
+ className="bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm"
439
+ >
440
+ {children}
441
+ </div>
442
+ </div>
443
+ </div>
444
+ );
445
+ }
446
+
447
+ function SidebarTrigger({
448
+ className,
449
+ onClick,
450
+ ...props
451
+ }: React.ComponentProps<typeof Button>) {
452
+ const { toggleSidebar } = useSidebar();
453
+ return (
454
+ <Button
455
+ data-sidebar="trigger"
456
+ data-slot="sidebar-trigger"
457
+ variant="ghost"
458
+ size="icon"
459
+ className={cn("size-7", className)}
460
+ onClick={(event) => {
461
+ onClick?.(event);
462
+ toggleSidebar();
463
+ }}
464
+ {...props}
465
+ >
466
+ <PanelLeftIcon />
467
+ <span className="sr-only">Toggle Sidebar</span>
468
+ </Button>
469
+ );
470
+ }
471
+
472
+ function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
473
+ const { toggleSidebar } = useSidebar();
474
+ return (
475
+ <button
476
+ data-sidebar="rail"
477
+ data-slot="sidebar-rail"
478
+ aria-label="Toggle Sidebar"
479
+ tabIndex={-1}
480
+ onClick={toggleSidebar}
481
+ title="Toggle Sidebar"
482
+ className={cn(
483
+ "hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex",
484
+ "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
485
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
486
+ "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full",
487
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
488
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
489
+ className,
490
+ )}
491
+ {...props}
492
+ />
493
+ );
494
+ }
495
+
496
+ function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
497
+ return (
498
+ <main
499
+ data-slot="sidebar-inset"
500
+ className={cn(
501
+ "bg-background relative flex w-full flex-1 flex-col",
502
+ "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
503
+ className,
504
+ )}
505
+ {...props}
506
+ />
507
+ );
508
+ }
509
+
510
+ function SidebarInput({
511
+ className,
512
+ ...props
513
+ }: React.ComponentProps<typeof Input>) {
514
+ return (
515
+ <Input
516
+ data-slot="sidebar-input"
517
+ data-sidebar="input"
518
+ className={cn("bg-background h-8 w-full shadow-none", className)}
519
+ {...props}
520
+ />
521
+ );
522
+ }
523
+
524
+ function SidebarHeader({ className, ...props }: React.ComponentProps<"div">) {
525
+ return (
526
+ <div
527
+ data-slot="sidebar-header"
528
+ data-sidebar="header"
529
+ className={cn("flex flex-col gap-2 p-2", className)}
530
+ {...props}
531
+ />
532
+ );
533
+ }
534
+
535
+ function SidebarFooter({ className, ...props }: React.ComponentProps<"div">) {
536
+ return (
537
+ <div
538
+ data-slot="sidebar-footer"
539
+ data-sidebar="footer"
540
+ className={cn("flex flex-col gap-2 p-2", className)}
541
+ {...props}
542
+ />
543
+ );
544
+ }
545
+
546
+ function SidebarSeparator({
547
+ className,
548
+ ...props
549
+ }: React.ComponentProps<typeof Separator>) {
550
+ return (
551
+ <Separator
552
+ data-slot="sidebar-separator"
553
+ data-sidebar="separator"
554
+ className={cn("bg-sidebar-border mx-2 w-auto", className)}
555
+ {...props}
556
+ />
557
+ );
558
+ }
559
+
560
+ function SidebarContent({ className, ...props }: React.ComponentProps<"div">) {
561
+ return (
562
+ <div
563
+ data-slot="sidebar-content"
564
+ data-sidebar="content"
565
+ className={cn(
566
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
567
+ className,
568
+ )}
569
+ {...props}
570
+ />
571
+ );
572
+ }
573
+
574
+ function SidebarGroup({ className, ...props }: React.ComponentProps<"div">) {
575
+ return (
576
+ <div
577
+ data-slot="sidebar-group"
578
+ data-sidebar="group"
579
+ className={cn("relative flex w-full min-w-0 flex-col p-2", className)}
580
+ {...props}
581
+ />
582
+ );
583
+ }
584
+
585
+ function SidebarGroupLabel({
586
+ className,
587
+ asChild = false,
588
+ ...props
589
+ }: React.ComponentPropsWithRef<"div"> & {
590
+ asChild?: boolean;
591
+ }) {
592
+ const Comp: any = asChild ? Slot : "div";
593
+ return (
594
+ <Comp
595
+ data-slot="sidebar-group-label"
596
+ data-sidebar="group-label"
597
+ className={cn(
598
+ "text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
599
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
600
+ className,
601
+ )}
602
+ {...props}
603
+ />
604
+ );
605
+ }
606
+
607
+ function SidebarGroupAction({
608
+ className,
609
+ asChild = false,
610
+ ...props
611
+ }: React.ComponentPropsWithRef<"button"> & {
612
+ asChild?: boolean;
613
+ }) {
614
+ const Comp: any = asChild ? Slot : "button";
615
+ return (
616
+ <Comp
617
+ data-slot="sidebar-group-action"
618
+ data-sidebar="group-action"
619
+ className={cn(
620
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
621
+ "after:absolute after:-inset-2 md:after:hidden",
622
+ "group-data-[collapsible=icon]:hidden",
623
+ className,
624
+ )}
625
+ {...props}
626
+ />
627
+ );
628
+ }
629
+
630
+ function SidebarGroupContent({
631
+ className,
632
+ ...props
633
+ }: React.ComponentProps<"div">) {
634
+ return (
635
+ <div
636
+ data-slot="sidebar-group-content"
637
+ data-sidebar="group-content"
638
+ className={cn("w-full text-sm", className)}
639
+ {...props}
640
+ />
641
+ );
642
+ }
643
+
644
+ function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) {
645
+ return (
646
+ <ul
647
+ data-slot="sidebar-menu"
648
+ data-sidebar="menu"
649
+ className={cn("flex w-full min-w-0 flex-col gap-1", className)}
650
+ {...props}
651
+ />
652
+ );
653
+ }
654
+
655
+ function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
656
+ return (
657
+ <li
658
+ data-slot="sidebar-menu-item"
659
+ data-sidebar="menu-item"
660
+ className={cn("group/menu-item relative", className)}
661
+ {...props}
662
+ />
663
+ );
664
+ }
665
+
666
+ const sidebarMenuButtonVariants = cva(
667
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
668
+ {
669
+ variants: {
670
+ variant: {
671
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
672
+ outline:
673
+ "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
674
+ },
675
+ size: {
676
+ default: "h-8 text-sm",
677
+ sm: "h-7 text-xs",
678
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
679
+ },
680
+ },
681
+ defaultVariants: {
682
+ variant: "default",
683
+ size: "default",
684
+ },
685
+ },
686
+ );
687
+
688
+ function SidebarMenuButton({
689
+ asChild = false,
690
+ isActive = false,
691
+ variant = "default",
692
+ size = "default",
693
+ tooltip,
694
+ className,
695
+ ...props
696
+ }: React.ComponentPropsWithRef<"button"> & {
697
+ asChild?: boolean;
698
+ isActive?: boolean;
699
+ tooltip?: any;
700
+ } & VariantProps<typeof sidebarMenuButtonVariants>) {
701
+ const Comp: any = asChild ? Slot : "button";
702
+ const { isMobile, state } = useSidebar();
703
+ const button = (
704
+ <Comp
705
+ data-slot="sidebar-menu-button"
706
+ data-sidebar="menu-button"
707
+ data-size={size}
708
+ data-active={isActive}
709
+ className={cn(
710
+ sidebarMenuButtonVariants({
711
+ variant,
712
+ size,
713
+ }),
714
+ className,
715
+ )}
716
+ {...props}
717
+ />
718
+ );
719
+ if (!tooltip) {
720
+ return button;
721
+ }
722
+ if (typeof tooltip === "string") {
723
+ tooltip = {
724
+ children: tooltip,
725
+ };
726
+ }
727
+ return (
728
+ <SidebarTooltip>
729
+ <SidebarTooltipTrigger asChild>{button}</SidebarTooltipTrigger>
730
+ <SidebarTooltipContent
731
+ side="right"
732
+ align="center"
733
+ hidden={state !== "collapsed" || isMobile}
734
+ {...tooltip}
735
+ />
736
+ </SidebarTooltip>
737
+ );
738
+ }
739
+
740
+ function SidebarMenuAction({
741
+ className,
742
+ asChild = false,
743
+ showOnHover = false,
744
+ ...props
745
+ }: React.ComponentPropsWithRef<"button"> & {
746
+ asChild?: boolean;
747
+ showOnHover?: boolean;
748
+ }) {
749
+ const Comp: any = asChild ? Slot : "button";
750
+ return (
751
+ <Comp
752
+ data-slot="sidebar-menu-action"
753
+ data-sidebar="menu-action"
754
+ className={cn(
755
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
756
+ "after:absolute after:-inset-2 md:after:hidden",
757
+ "peer-data-[size=sm]/menu-button:top-1",
758
+ "peer-data-[size=default]/menu-button:top-1.5",
759
+ "peer-data-[size=lg]/menu-button:top-2.5",
760
+ "group-data-[collapsible=icon]:hidden",
761
+ showOnHover &&
762
+ "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
763
+ className,
764
+ )}
765
+ {...props}
766
+ />
767
+ );
768
+ }
769
+
770
+ function SidebarMenuBadge({
771
+ className,
772
+ ...props
773
+ }: React.ComponentProps<"div">) {
774
+ return (
775
+ <div
776
+ data-slot="sidebar-menu-badge"
777
+ data-sidebar="menu-badge"
778
+ className={cn(
779
+ "text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none",
780
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
781
+ "peer-data-[size=sm]/menu-button:top-1",
782
+ "peer-data-[size=default]/menu-button:top-1.5",
783
+ "peer-data-[size=lg]/menu-button:top-2.5",
784
+ "group-data-[collapsible=icon]:hidden",
785
+ className,
786
+ )}
787
+ {...props}
788
+ />
789
+ );
790
+ }
791
+
792
+ function SidebarMenuSkeleton({
793
+ className,
794
+ showIcon = false,
795
+ ...props
796
+ }: React.ComponentProps<"div"> & {
797
+ showIcon?: boolean;
798
+ }) {
799
+ const [width] = React.useState(() => {
800
+ return `${Math.floor(Math.random() * 40) + 50}%`;
801
+ });
802
+ return (
803
+ <div
804
+ data-slot="sidebar-menu-skeleton"
805
+ data-sidebar="menu-skeleton"
806
+ className={cn("flex h-8 items-center gap-2 rounded-md px-2", className)}
807
+ {...props}
808
+ >
809
+ {showIcon && (
810
+ <SidebarSkeleton
811
+ className="size-4 rounded-md"
812
+ data-sidebar="menu-skeleton-icon"
813
+ />
814
+ )}
815
+ <SidebarSkeleton
816
+ className="h-4 max-w-(--skeleton-width) flex-1"
817
+ data-sidebar="menu-skeleton-text"
818
+ style={
819
+ {
820
+ "--skeleton-width": width,
821
+ } as React.CSSProperties
822
+ }
823
+ />
824
+ </div>
825
+ );
826
+ }
827
+
828
+ function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) {
829
+ return (
830
+ <ul
831
+ data-slot="sidebar-menu-sub"
832
+ data-sidebar="menu-sub"
833
+ className={cn(
834
+ "border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5",
835
+ "group-data-[collapsible=icon]:hidden",
836
+ className,
837
+ )}
838
+ {...props}
839
+ />
840
+ );
841
+ }
842
+
843
+ function SidebarMenuSubItem({
844
+ className,
845
+ ...props
846
+ }: React.ComponentProps<"li">) {
847
+ return (
848
+ <li
849
+ data-slot="sidebar-menu-sub-item"
850
+ data-sidebar="menu-sub-item"
851
+ className={cn("group/menu-sub-item relative", className)}
852
+ {...props}
853
+ />
854
+ );
855
+ }
856
+
857
+ function SidebarMenuSubButton({
858
+ asChild = false,
859
+ size = "md",
860
+ isActive = false,
861
+ className,
862
+ ...props
863
+ }: React.ComponentProps<"a"> & {
864
+ asChild?: boolean;
865
+ size?: "sm" | "md";
866
+ isActive?: boolean;
867
+ }) {
868
+ const Comp: any = asChild ? Slot : "a";
869
+ return (
870
+ <Comp
871
+ data-slot="sidebar-menu-sub-button"
872
+ data-sidebar="menu-sub-button"
873
+ data-size={size}
874
+ data-active={isActive}
875
+ className={cn(
876
+ "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
877
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
878
+ size === "sm" && "text-xs",
879
+ size === "md" && "text-sm",
880
+ "group-data-[collapsible=icon]:hidden",
881
+ className,
882
+ )}
883
+ {...props}
884
+ />
885
+ );
886
+ }
887
+
888
+ // Properties Definition
889
+ const propertiesDefinition: PropertiesPanelDefinition<SidebarProps> = {
890
+ general: Section.category(PropsCategory.Content).children({
891
+ side: Prop.string<"left" | "right">()
892
+
893
+ .propertiesPanel({
894
+ label: "Side",
895
+ controlType: "RADIO_BUTTON_GROUP",
896
+ description: "Which side the sidebar appears on",
897
+ options: [
898
+ { label: "Left", value: "left" },
899
+ { label: "Right", value: "right" },
900
+ ],
901
+ }),
902
+ variant: Prop.string<"sidebar" | "floating" | "inset">()
903
+
904
+ .propertiesPanel({
905
+ label: "Variant",
906
+ controlType: "DROP_DOWN",
907
+ description: "Visual style of the sidebar",
908
+ options: [
909
+ { label: "Sidebar", value: "sidebar" },
910
+ { label: "Floating", value: "floating" },
911
+ { label: "Inset", value: "inset" },
912
+ ],
913
+ }),
914
+ collapsible: Prop.string<"none" | "icon" | "offcanvas">()
915
+
916
+ .propertiesPanel({
917
+ label: "Collapsible behavior",
918
+ controlType: "DROP_DOWN",
919
+ description: "How the sidebar behaves when collapsed",
920
+ options: [
921
+ { label: "Off-canvas", value: "offcanvas" },
922
+ { label: "Icon only", value: "icon" },
923
+ { label: "None", value: "none" },
924
+ ],
925
+ }),
926
+ children: Prop.jsx(),
927
+ }),
928
+ };
929
+
930
+ // Editor Configuration
931
+ const editorConfig: EditorConfig = {
932
+ icon: "custom",
933
+ description:
934
+ "A flexible sidebar component for navigation and content organization",
935
+ };
936
+
937
+ // Registration
938
+ registerComponent(Sidebar, propertiesDefinition).editorConfig(editorConfig);
939
+
940
+ export {
941
+ Sidebar,
942
+ SidebarProvider,
943
+ SidebarTrigger,
944
+ SidebarRail,
945
+ SidebarInset,
946
+ SidebarInput,
947
+ SidebarHeader,
948
+ SidebarFooter,
949
+ SidebarSeparator,
950
+ SidebarContent,
951
+ SidebarGroup,
952
+ SidebarGroupLabel,
953
+ SidebarGroupAction,
954
+ SidebarGroupContent,
955
+ SidebarMenu,
956
+ SidebarMenuItem,
957
+ SidebarMenuButton,
958
+ SidebarMenuAction,
959
+ SidebarMenuBadge,
960
+ SidebarMenuSkeleton,
961
+ SidebarMenuSub,
962
+ SidebarMenuSubItem,
963
+ SidebarMenuSubButton,
964
+ SidebarSheetTrigger,
965
+ SidebarSheetClose,
966
+ SidebarSheetPortal,
967
+ SidebarSheetOverlay,
968
+ SidebarSheetContent,
969
+ SidebarSheetHeader,
970
+ SidebarSheetTitle,
971
+ SidebarSheetDescription,
972
+ SidebarSheetFooter,
973
+ useSidebar,
974
+ };