create-inox-app 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/README.md +110 -0
  2. package/dist/cli.js +22196 -0
  3. package/dist/prompt-Bp8saGVV.js +852 -0
  4. package/dist/templates/base/.gitignore.hbs +9 -0
  5. package/dist/templates/base/package.json.hbs +29 -0
  6. package/dist/templates/base/packages/typescript-config/base.json +17 -0
  7. package/dist/templates/base/packages/typescript-config/nextjs.json +8 -0
  8. package/dist/templates/base/packages/typescript-config/package.json +10 -0
  9. package/dist/templates/base/packages/typescript-config/react-library.json +7 -0
  10. package/dist/templates/base/turbo.json.hbs +32 -0
  11. package/dist/templates/ci/.gitlab-ci.yml.hbs +70 -0
  12. package/dist/templates/ci/scripts/build.sh.hbs +94 -0
  13. package/dist/templates/ci/scripts/prebuild.sh.hbs +11 -0
  14. package/dist/templates/claude-config/app/.agents/skills/agent-browser/SKILL.md +325 -0
  15. package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/authentication.md +202 -0
  16. package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/commands.md +259 -0
  17. package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/proxy-support.md +188 -0
  18. package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/session-management.md +193 -0
  19. package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/snapshot-refs.md +194 -0
  20. package/dist/templates/claude-config/app/.agents/skills/agent-browser/references/video-recording.md +173 -0
  21. package/dist/templates/claude-config/app/.agents/skills/agent-browser/templates/authenticated-session.sh +100 -0
  22. package/dist/templates/claude-config/app/.agents/skills/agent-browser/templates/capture-workflow.sh +69 -0
  23. package/dist/templates/claude-config/app/.agents/skills/agent-browser/templates/form-automation.sh +62 -0
  24. package/dist/templates/claude-config/app/.agents/skills/ai-elements/SKILL.md +150 -0
  25. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/agent.md +131 -0
  26. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/artifact.md +84 -0
  27. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/attachments.md +190 -0
  28. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/audio-player.md +134 -0
  29. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/canvas.md +32 -0
  30. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/chain-of-thought.md +81 -0
  31. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/checkpoint.md +163 -0
  32. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/code-block.md +170 -0
  33. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/commit.md +177 -0
  34. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/confirmation.md +252 -0
  35. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/connection.md +32 -0
  36. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/context.md +126 -0
  37. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/controls.md +30 -0
  38. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/conversation.md +210 -0
  39. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/edge.md +50 -0
  40. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/environment-variables.md +102 -0
  41. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/file-tree.md +72 -0
  42. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/image.md +143 -0
  43. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/inline-citation.md +293 -0
  44. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/jsx-preview.md +101 -0
  45. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/message.md +256 -0
  46. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/mic-selector.md +186 -0
  47. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/model-selector.md +112 -0
  48. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/node.md +71 -0
  49. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/open-in-chat.md +67 -0
  50. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/package-info.md +95 -0
  51. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/panel.md +31 -0
  52. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/persona.md +158 -0
  53. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/plan.md +79 -0
  54. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/prompt-input.md +555 -0
  55. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/queue.md +172 -0
  56. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/reasoning.md +219 -0
  57. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/sandbox.md +126 -0
  58. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/schema-display.md +102 -0
  59. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/shimmer.md +48 -0
  60. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/snippet.md +64 -0
  61. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/sources.md +193 -0
  62. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/speech-input.md +160 -0
  63. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/stack-trace.md +218 -0
  64. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/suggestion.md +121 -0
  65. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/task.md +215 -0
  66. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/terminal.md +103 -0
  67. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/test-results.md +157 -0
  68. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/tool.md +275 -0
  69. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/toolbar.md +30 -0
  70. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/transcription.md +120 -0
  71. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/voice-selector.md +241 -0
  72. package/dist/templates/claude-config/app/.agents/skills/ai-elements/references/web-preview.md +197 -0
  73. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/agent.tsx +61 -0
  74. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/artifact.tsx +111 -0
  75. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/attachments-inline.tsx +117 -0
  76. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/attachments-list.tsx +88 -0
  77. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/attachments.tsx +78 -0
  78. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
  79. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/audio-player.tsx +69 -0
  80. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/chain-of-thought.tsx +74 -0
  81. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/checkpoint.tsx +90 -0
  82. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
  83. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/code-block.tsx +115 -0
  84. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/commit.tsx +94 -0
  85. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/confirmation-accepted.tsx +35 -0
  86. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/confirmation-rejected.tsx +35 -0
  87. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
  88. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/confirmation.tsx +53 -0
  89. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/context.tsx +45 -0
  90. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/conversation.tsx +176 -0
  91. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/environment-variables.tsx +55 -0
  92. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/file-tree-basic.tsx +14 -0
  93. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/file-tree-expanded.tsx +17 -0
  94. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/file-tree-selection.tsx +20 -0
  95. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/file-tree.tsx +38 -0
  96. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/image.tsx +20 -0
  97. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/inline-citation.tsx +95 -0
  98. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/jsx-preview.tsx +99 -0
  99. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/message.tsx +324 -0
  100. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/mic-selector.tsx +46 -0
  101. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/model-selector.tsx +362 -0
  102. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
  103. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/package-info.tsx +46 -0
  104. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-command.tsx +96 -0
  105. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-glint.tsx +96 -0
  106. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-halo.tsx +96 -0
  107. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-mana.tsx +96 -0
  108. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-obsidian.tsx +96 -0
  109. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/persona-opal.tsx +96 -0
  110. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/plan.tsx +63 -0
  111. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/prompt-input-cursor.tsx +459 -0
  112. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/prompt-input-tooltip.tsx +40 -0
  113. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/prompt-input.tsx +247 -0
  114. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/queue-prompt-input.tsx +367 -0
  115. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/queue.tsx +276 -0
  116. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/reasoning.tsx +67 -0
  117. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/sandbox.tsx +166 -0
  118. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display-basic.tsx +7 -0
  119. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
  120. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
  121. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
  122. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/schema-display.tsx +110 -0
  123. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/shimmer-duration.tsx +29 -0
  124. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/shimmer-elements.tsx +39 -0
  125. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/shimmer.tsx +17 -0
  126. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
  127. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/snippet.tsx +25 -0
  128. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/sources-custom.tsx +34 -0
  129. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/sources.tsx +27 -0
  130. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/speech-input.tsx +79 -0
  131. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
  132. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
  133. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/stack-trace.tsx +54 -0
  134. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/suggestion-input.tsx +137 -0
  135. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/suggestion.tsx +28 -0
  136. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/task.tsx +60 -0
  137. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
  138. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
  139. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
  140. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/terminal.tsx +77 -0
  141. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
  142. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
  143. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
  144. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/test-results.tsx +78 -0
  145. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
  146. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
  147. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool-output-available.tsx +76 -0
  148. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool-output-error.tsx +45 -0
  149. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/tool.tsx +205 -0
  150. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/transcription.tsx +284 -0
  151. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/voice-selector.tsx +228 -0
  152. package/dist/templates/claude-config/app/.agents/skills/ai-elements/scripts/web-preview.tsx +99 -0
  153. package/dist/templates/claude-config/app/.agents/skills/ai-sdk/SKILL.md +78 -0
  154. package/dist/templates/claude-config/app/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
  155. package/dist/templates/claude-config/app/.agents/skills/ai-sdk/references/common-errors.md +439 -0
  156. package/dist/templates/claude-config/app/.agents/skills/ai-sdk/references/devtools.md +52 -0
  157. package/dist/templates/claude-config/app/.agents/skills/ai-sdk/references/type-safe-agents.md +200 -0
  158. package/dist/templates/claude-config/app/.agents/skills/better-auth-best-practices/SKILL.md +166 -0
  159. package/dist/templates/claude-config/app/.agents/skills/building-components/SKILL.md +37 -0
  160. package/dist/templates/claude-config/app/.agents/skills/building-components/references/accessibility.mdx +819 -0
  161. package/dist/templates/claude-config/app/.agents/skills/building-components/references/as-child.mdx +324 -0
  162. package/dist/templates/claude-config/app/.agents/skills/building-components/references/composition.mdx +239 -0
  163. package/dist/templates/claude-config/app/.agents/skills/building-components/references/data-attributes.mdx +413 -0
  164. package/dist/templates/claude-config/app/.agents/skills/building-components/references/definitions.mdx +258 -0
  165. package/dist/templates/claude-config/app/.agents/skills/building-components/references/design-tokens.mdx +57 -0
  166. package/dist/templates/claude-config/app/.agents/skills/building-components/references/docs.mdx +155 -0
  167. package/dist/templates/claude-config/app/.agents/skills/building-components/references/marketplaces.mdx +144 -0
  168. package/dist/templates/claude-config/app/.agents/skills/building-components/references/npm.mdx +166 -0
  169. package/dist/templates/claude-config/app/.agents/skills/building-components/references/polymorphism.mdx +583 -0
  170. package/dist/templates/claude-config/app/.agents/skills/building-components/references/principles.mdx +61 -0
  171. package/dist/templates/claude-config/app/.agents/skills/building-components/references/registry.mdx +169 -0
  172. package/dist/templates/claude-config/app/.agents/skills/building-components/references/state.mdx +99 -0
  173. package/dist/templates/claude-config/app/.agents/skills/building-components/references/styling.mdx +286 -0
  174. package/dist/templates/claude-config/app/.agents/skills/building-components/references/types.mdx +191 -0
  175. package/dist/templates/claude-config/app/.agents/skills/docker-expert/SKILL.md +409 -0
  176. package/dist/templates/claude-config/app/.agents/skills/email-and-password-best-practices/SKILL.md +224 -0
  177. package/dist/templates/claude-config/app/.agents/skills/find-skills/SKILL.md +133 -0
  178. package/dist/templates/claude-config/app/.agents/skills/frontend-design/LICENSE.txt +177 -0
  179. package/dist/templates/claude-config/app/.agents/skills/frontend-design/SKILL.md +42 -0
  180. package/dist/templates/claude-config/app/.agents/skills/git-commit/SKILL.md +124 -0
  181. package/dist/templates/claude-config/app/.agents/skills/gitlab-ci-patterns/SKILL.md +271 -0
  182. package/dist/templates/claude-config/app/.agents/skills/hono/SKILL.md +90 -0
  183. package/dist/templates/claude-config/app/.agents/skills/langfuse-observability/SKILL.md +139 -0
  184. package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/SKILL.md +127 -0
  185. package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/rules/context.md +157 -0
  186. package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/rules/pitfalls.md +118 -0
  187. package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/rules/structure.md +193 -0
  188. package/dist/templates/claude-config/app/.agents/skills/logging-best-practices/rules/wide-events.md +113 -0
  189. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/SKILL.md +153 -0
  190. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/async-patterns.md +87 -0
  191. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/bundling.md +180 -0
  192. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/data-patterns.md +297 -0
  193. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/debug-tricks.md +105 -0
  194. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/directives.md +73 -0
  195. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/error-handling.md +227 -0
  196. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/file-conventions.md +140 -0
  197. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/font.md +245 -0
  198. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/functions.md +108 -0
  199. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/hydration-error.md +91 -0
  200. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/image.md +173 -0
  201. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/metadata.md +301 -0
  202. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/parallel-routes.md +287 -0
  203. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/route-handlers.md +146 -0
  204. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
  205. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/runtime-selection.md +39 -0
  206. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/scripts.md +141 -0
  207. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/self-hosting.md +371 -0
  208. package/dist/templates/claude-config/app/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
  209. package/dist/templates/claude-config/app/.agents/skills/next-cache-components/SKILL.md +411 -0
  210. package/dist/templates/claude-config/app/.agents/skills/next-upgrade/SKILL.md +50 -0
  211. package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/SKILL.md +179 -0
  212. package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/CHEATSHEET.md +418 -0
  213. package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/MIGRATIONS.md +536 -0
  214. package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/PERFORMANCE.md +559 -0
  215. package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/POSTGRES.md +588 -0
  216. package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/QUERIES.md +764 -0
  217. package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/RELATIONS.md +624 -0
  218. package/dist/templates/claude-config/app/.agents/skills/postgres-drizzle/references/SCHEMA.md +554 -0
  219. package/dist/templates/claude-config/app/.agents/skills/skill-creator/LICENSE.txt +202 -0
  220. package/dist/templates/claude-config/app/.agents/skills/skill-creator/SKILL.md +356 -0
  221. package/dist/templates/claude-config/app/.agents/skills/skill-creator/references/output-patterns.md +82 -0
  222. package/dist/templates/claude-config/app/.agents/skills/skill-creator/references/workflows.md +28 -0
  223. package/dist/templates/claude-config/app/.agents/skills/skill-creator/scripts/init_skill.py +303 -0
  224. package/dist/templates/claude-config/app/.agents/skills/skill-creator/scripts/package_skill.py +113 -0
  225. package/dist/templates/claude-config/app/.agents/skills/skill-creator/scripts/quick_validate.py +95 -0
  226. package/dist/templates/claude-config/app/.agents/skills/streamdown/SKILL.md +164 -0
  227. package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/basic-streaming.tsx +34 -0
  228. package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/custom-security.tsx +38 -0
  229. package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/full-featured.tsx +60 -0
  230. package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/static-mode.tsx +17 -0
  231. package/dist/templates/claude-config/app/.agents/skills/streamdown/assets/examples/with-caret.tsx +39 -0
  232. package/dist/templates/claude-config/app/.agents/skills/streamdown/references/api.md +278 -0
  233. package/dist/templates/claude-config/app/.agents/skills/streamdown/references/features.md +201 -0
  234. package/dist/templates/claude-config/app/.agents/skills/streamdown/references/plugins.md +239 -0
  235. package/dist/templates/claude-config/app/.agents/skills/streamdown/references/security.md +192 -0
  236. package/dist/templates/claude-config/app/.agents/skills/streamdown/references/styling.md +166 -0
  237. package/dist/templates/claude-config/app/.agents/skills/tdd/SKILL.md +107 -0
  238. package/dist/templates/claude-config/app/.agents/skills/tdd/deep-modules.md +33 -0
  239. package/dist/templates/claude-config/app/.agents/skills/tdd/interface-design.md +31 -0
  240. package/dist/templates/claude-config/app/.agents/skills/tdd/mocking.md +60 -0
  241. package/dist/templates/claude-config/app/.agents/skills/tdd/refactoring.md +10 -0
  242. package/dist/templates/claude-config/app/.agents/skills/tdd/tests.md +61 -0
  243. package/dist/templates/claude-config/app/.agents/skills/turborepo/SKILL.md +914 -0
  244. package/dist/templates/claude-config/app/.agents/skills/turborepo/command/turborepo.md +70 -0
  245. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/best-practices/RULE.md +241 -0
  246. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/best-practices/dependencies.md +246 -0
  247. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/best-practices/packages.md +335 -0
  248. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/best-practices/structure.md +270 -0
  249. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/boundaries/RULE.md +126 -0
  250. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/caching/RULE.md +107 -0
  251. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/caching/gotchas.md +169 -0
  252. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/caching/remote-cache.md +127 -0
  253. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/ci/RULE.md +79 -0
  254. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/ci/github-actions.md +162 -0
  255. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/ci/patterns.md +145 -0
  256. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/ci/vercel.md +103 -0
  257. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/cli/RULE.md +100 -0
  258. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/cli/commands.md +297 -0
  259. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/configuration/RULE.md +211 -0
  260. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/configuration/global-options.md +191 -0
  261. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/configuration/gotchas.md +348 -0
  262. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/configuration/tasks.md +281 -0
  263. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/environment/RULE.md +96 -0
  264. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/environment/gotchas.md +141 -0
  265. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/environment/modes.md +101 -0
  266. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/filtering/RULE.md +148 -0
  267. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/filtering/patterns.md +152 -0
  268. package/dist/templates/claude-config/app/.agents/skills/turborepo/references/watch/RULE.md +99 -0
  269. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/AGENTS.md +917 -0
  270. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/SKILL.md +88 -0
  271. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +94 -0
  272. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/architecture-compound-components.md +108 -0
  273. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +84 -0
  274. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +94 -0
  275. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  276. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  277. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +103 -0
  278. package/dist/templates/claude-config/app/.agents/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  279. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/AGENTS.md +2883 -0
  280. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/SKILL.md +138 -0
  281. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  282. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  283. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  284. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +35 -0
  285. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  286. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +48 -0
  287. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +24 -0
  288. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  289. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  290. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +37 -0
  291. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +48 -0
  292. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +34 -0
  293. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +44 -0
  294. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +78 -0
  295. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +74 -0
  296. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  297. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  298. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +110 -0
  299. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  300. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  301. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +68 -0
  302. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  303. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  304. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  305. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  306. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +50 -0
  307. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  308. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  309. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  310. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  311. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +38 -0
  312. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +32 -0
  313. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  314. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +36 -0
  315. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +72 -0
  316. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +26 -0
  317. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  318. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  319. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  320. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  321. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  322. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  323. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +77 -0
  324. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +56 -0
  325. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +36 -0
  326. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  327. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  328. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  329. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  330. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  331. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  332. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  333. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  334. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  335. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  336. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  337. package/dist/templates/claude-config/app/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  338. package/dist/templates/claude-config/app/.agents/skills/web-design-guidelines/SKILL.md +40 -0
  339. package/dist/templates/claude-config/app/.agents/skills/workflow/SKILL.md +181 -0
  340. package/dist/templates/claude-config/app/.claude/commands/council.md +7 -0
  341. package/dist/templates/claude-config/app/.claude/commands/deslop.md +25 -0
  342. package/dist/templates/claude-config/app/.claude/commands/diagram.md +101 -0
  343. package/dist/templates/claude-config/app/.claude/commands/fix-merge.md +47 -0
  344. package/dist/templates/claude-config/app/.claude/commands/you-might-not-need-an-effect.md +10 -0
  345. package/dist/templates/claude-config/app/.claude/hooks/post-tool-use-tracker.sh +187 -0
  346. package/dist/templates/claude-config/app/.claude/hooks/skill-activation-prompt.sh +5 -0
  347. package/dist/templates/claude-config/app/.claude/hooks/skill-activation-prompt.ts +134 -0
  348. package/dist/templates/claude-config/app/.claude/rules/comments.md +12 -0
  349. package/dist/templates/claude-config/app/.claude/rules/typescript.md +31 -0
  350. package/dist/templates/claude-config/app/.claude/settings.json.hbs +74 -0
  351. package/dist/templates/claude-config/app/.claude/skills/skill-rules.json.hbs +309 -0
  352. package/dist/templates/claude-config/app/AGENTS.md.hbs +185 -0
  353. package/dist/templates/claude-config/app/CLAUDE.md.hbs +5 -0
  354. package/dist/templates/claude-config/kustomize/.agents/skills/git-commit/SKILL.md +124 -0
  355. package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/SKILL.md +534 -0
  356. package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  357. package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  358. package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  359. package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/references/deployment-spec.md +780 -0
  360. package/dist/templates/claude-config/kustomize/.agents/skills/k8s-manifest-generator/references/service-spec.md +748 -0
  361. package/dist/templates/claude-config/kustomize/.claude/settings.json +42 -0
  362. package/dist/templates/claude-config/kustomize/.claude/skills/git-commit/SKILL.md +124 -0
  363. package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/SKILL.md +534 -0
  364. package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  365. package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  366. package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  367. package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/references/deployment-spec.md +780 -0
  368. package/dist/templates/claude-config/kustomize/.claude/skills/k8s-manifest-generator/references/service-spec.md +748 -0
  369. package/dist/templates/docker/.dockerignore.hbs +8 -0
  370. package/dist/templates/docker/Dockerfile.hbs +81 -0
  371. package/dist/templates/docker/docker-compose.yml.hbs +55 -0
  372. package/dist/templates/kustomize/base/deployments/app.yaml.hbs +44 -0
  373. package/dist/templates/kustomize/base/ingress/app.yaml.hbs +20 -0
  374. package/dist/templates/kustomize/base/jobs/app-jobs.yaml.hbs +43 -0
  375. package/dist/templates/kustomize/base/kustomization.yaml.hbs +13 -0
  376. package/dist/templates/kustomize/base/secrets/regcred.yaml.hbs +7 -0
  377. package/dist/templates/kustomize/base/services/app.yaml.hbs +12 -0
  378. package/dist/templates/kustomize/overlays/{{env}}/configs/app.config.env.hbs +21 -0
  379. package/dist/templates/kustomize/overlays/{{env}}/configs/paradedb.config.env.hbs +3 -0
  380. package/dist/templates/kustomize/overlays/{{env}}/deployments/paradedb.yaml.hbs +28 -0
  381. package/dist/templates/kustomize/overlays/{{env}}/deployments/redis.yaml.hbs +18 -0
  382. package/dist/templates/kustomize/overlays/{{env}}/kustomization.yaml.hbs +36 -0
  383. package/dist/templates/kustomize/overlays/{{env}}/patch-operation/ingress-host.yaml.hbs +15 -0
  384. package/dist/templates/kustomize/overlays/{{env}}/services/paradedb.yaml.hbs +11 -0
  385. package/dist/templates/kustomize/overlays/{{env}}/services/redis.yaml.hbs +11 -0
  386. package/dist/templates/kustomize/overlays/{{env}}/storage/paradedb-pvc.yaml.hbs +10 -0
  387. package/dist/templates/presets/ai-chat-app/apps/web/.env.example +11 -0
  388. package/dist/templates/presets/ai-chat-app/apps/web/app/api/auth/[...all]/route.ts +5 -0
  389. package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/input-guardrail.ts +47 -0
  390. package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/route.ts +266 -0
  391. package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/sessions/[id]/messages/route.ts +38 -0
  392. package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/sessions/[id]/route.ts +59 -0
  393. package/dist/templates/presets/ai-chat-app/apps/web/app/api/chat/sessions/route.ts +24 -0
  394. package/dist/templates/presets/ai-chat-app/apps/web/app/api/health/route.ts +21 -0
  395. package/dist/templates/presets/ai-chat-app/apps/web/app/chat/[id]/page.tsx +54 -0
  396. package/dist/templates/presets/ai-chat-app/apps/web/app/chat/layout.tsx +23 -0
  397. package/dist/templates/presets/ai-chat-app/apps/web/app/chat/page.tsx +9 -0
  398. package/dist/templates/presets/ai-chat-app/apps/web/app/error.tsx +20 -0
  399. package/dist/templates/presets/ai-chat-app/apps/web/app/global-error.tsx +42 -0
  400. package/dist/templates/presets/ai-chat-app/apps/web/app/globals.css +187 -0
  401. package/dist/templates/presets/ai-chat-app/apps/web/app/layout.tsx.hbs +30 -0
  402. package/dist/templates/presets/ai-chat-app/apps/web/app/login/login-form.tsx +96 -0
  403. package/dist/templates/presets/ai-chat-app/apps/web/app/login/page.tsx +14 -0
  404. package/dist/templates/presets/ai-chat-app/apps/web/app/not-found.tsx +15 -0
  405. package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/code-block.tsx +518 -0
  406. package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/context.tsx +356 -0
  407. package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/conversation.tsx +150 -0
  408. package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/environment-variables.tsx +303 -0
  409. package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/message.tsx +295 -0
  410. package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/prompt-input.tsx +1179 -0
  411. package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/sources.tsx +54 -0
  412. package/dist/templates/presets/ai-chat-app/apps/web/components/ai-elements/tool.tsx +157 -0
  413. package/dist/templates/presets/ai-chat-app/apps/web/components/app-sidebar.tsx +110 -0
  414. package/dist/templates/presets/ai-chat-app/apps/web/components/chat-sessions-provider.tsx +89 -0
  415. package/dist/templates/presets/ai-chat-app/apps/web/components/chat-sidebar-list.tsx +174 -0
  416. package/dist/templates/presets/ai-chat-app/apps/web/components/chat-view.tsx +156 -0
  417. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/accordion.tsx +72 -0
  418. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/alert-dialog.tsx +162 -0
  419. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/alert.tsx +73 -0
  420. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/aspect-ratio.tsx +22 -0
  421. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/avatar.tsx +93 -0
  422. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/badge.tsx +49 -0
  423. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/breadcrumb.tsx +103 -0
  424. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/button-group.tsx +78 -0
  425. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/button.tsx +60 -0
  426. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/calendar.tsx +185 -0
  427. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/card.tsx +92 -0
  428. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/carousel.tsx +231 -0
  429. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/chart.tsx +325 -0
  430. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/checkbox.tsx +28 -0
  431. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/collapsible.tsx +17 -0
  432. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/combobox.tsx +273 -0
  433. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/command.tsx +181 -0
  434. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/context-menu.tsx +245 -0
  435. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/dialog.tsx +135 -0
  436. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/direction.tsx +3 -0
  437. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/drawer.tsx +120 -0
  438. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/dropdown-menu.tsx +258 -0
  439. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/empty.tsx +94 -0
  440. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/field.tsx +224 -0
  441. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/hover-card.tsx +46 -0
  442. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/input-group.tsx +146 -0
  443. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/input-otp.tsx +86 -0
  444. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/input.tsx +20 -0
  445. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/item.tsx +188 -0
  446. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/kbd.tsx +26 -0
  447. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/label.tsx +20 -0
  448. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/menubar.tsx +270 -0
  449. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/native-select.tsx +43 -0
  450. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/navigation-menu.tsx +161 -0
  451. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/pagination.tsx +118 -0
  452. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/popover.tsx +77 -0
  453. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/progress.tsx +66 -0
  454. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/radio-group.tsx +39 -0
  455. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/resizable.tsx +42 -0
  456. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/scroll-area.tsx +51 -0
  457. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/select.tsx +190 -0
  458. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/separator.tsx +21 -0
  459. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/sheet.tsx +125 -0
  460. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/sidebar.tsx +689 -0
  461. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/skeleton.tsx +13 -0
  462. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/slider.tsx +54 -0
  463. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/sonner.tsx +45 -0
  464. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/spinner.tsx +15 -0
  465. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/switch.tsx +32 -0
  466. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/table.tsx +89 -0
  467. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/tabs.tsx +75 -0
  468. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/textarea.tsx +18 -0
  469. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/toggle-group.tsx +87 -0
  470. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/toggle.tsx +44 -0
  471. package/dist/templates/presets/ai-chat-app/apps/web/components/ui/tooltip.tsx +54 -0
  472. package/dist/templates/presets/ai-chat-app/apps/web/components.json +20 -0
  473. package/dist/templates/presets/ai-chat-app/apps/web/drizzle.config.ts +10 -0
  474. package/dist/templates/presets/ai-chat-app/apps/web/env.ts +30 -0
  475. package/dist/templates/presets/ai-chat-app/apps/web/hooks/use-mobile.ts +19 -0
  476. package/dist/templates/presets/ai-chat-app/apps/web/instrumentation.ts +21 -0
  477. package/dist/templates/presets/ai-chat-app/apps/web/lib/auth-client.ts +3 -0
  478. package/dist/templates/presets/ai-chat-app/apps/web/lib/auth-session.ts +9 -0
  479. package/dist/templates/presets/ai-chat-app/apps/web/lib/auth.ts +16 -0
  480. package/dist/templates/presets/ai-chat-app/apps/web/lib/db/index.ts +11 -0
  481. package/dist/templates/presets/ai-chat-app/apps/web/lib/db/migrate.ts +53 -0
  482. package/dist/templates/presets/ai-chat-app/apps/web/lib/db/schema.ts +94 -0
  483. package/dist/templates/presets/ai-chat-app/apps/web/lib/db/seed.ts +123 -0
  484. package/dist/templates/presets/ai-chat-app/apps/web/lib/group-by-date.ts +34 -0
  485. package/dist/templates/presets/ai-chat-app/apps/web/lib/logger.ts +21 -0
  486. package/dist/templates/presets/ai-chat-app/apps/web/lib/openrouter.ts +7 -0
  487. package/dist/templates/presets/ai-chat-app/apps/web/lib/schemas/auth.ts +8 -0
  488. package/dist/templates/presets/ai-chat-app/apps/web/lib/utils.ts +4 -0
  489. package/dist/templates/presets/ai-chat-app/apps/web/next-env.d.ts +6 -0
  490. package/dist/templates/presets/ai-chat-app/apps/web/next.config.ts +14 -0
  491. package/dist/templates/presets/ai-chat-app/apps/web/package.json +70 -0
  492. package/dist/templates/presets/ai-chat-app/apps/web/postcss.config.mjs +7 -0
  493. package/dist/templates/presets/ai-chat-app/apps/web/proxy.ts +13 -0
  494. package/dist/templates/presets/ai-chat-app/apps/web/tsconfig.json +14 -0
  495. package/dist/templates/presets/blank/apps/web/.env.example +1 -0
  496. package/dist/templates/presets/blank/apps/web/app/api/health/route.ts +11 -0
  497. package/dist/templates/presets/blank/apps/web/app/globals.css +49 -0
  498. package/dist/templates/presets/blank/apps/web/app/layout.tsx.hbs +30 -0
  499. package/dist/templates/presets/blank/apps/web/app/page.tsx.hbs +10 -0
  500. package/dist/templates/presets/blank/apps/web/env.ts +10 -0
  501. package/dist/templates/presets/blank/apps/web/next-env.d.ts +2 -0
  502. package/dist/templates/presets/blank/apps/web/next.config.ts +9 -0
  503. package/dist/templates/presets/blank/apps/web/package.json.hbs +27 -0
  504. package/dist/templates/presets/blank/apps/web/postcss.config.mjs +7 -0
  505. package/dist/templates/presets/blank/apps/web/tsconfig.json +14 -0
  506. package/dist/templates/tooling/.oxfmtrc.json +6 -0
  507. package/dist/templates/tooling/.oxlintrc.json +20 -0
  508. package/dist/templates/tooling/commitlint.config.ts.hbs +3 -0
  509. package/dist/templates/tooling/lefthook.yml.hbs +25 -0
  510. package/package.json +47 -0
@@ -0,0 +1,126 @@
1
+ # Context
2
+
3
+ A compound component system for displaying AI model context window usage, token consumption, and cost estimation.
4
+
5
+ The `Context` component provides a comprehensive view of AI model usage through a compound component system. It displays context window utilization, token consumption breakdown (input, output, reasoning, cache), and cost estimation in an interactive hover card interface.
6
+
7
+ See `scripts/context.tsx` for this example.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npx ai-elements@latest add context
13
+ ```
14
+
15
+ ## Features
16
+
17
+ - **Compound Component Architecture**: Flexible composition of context display elements
18
+ - **Visual Progress Indicator**: Circular SVG progress ring showing context usage percentage
19
+ - **Token Breakdown**: Detailed view of input, output, reasoning, and cached tokens
20
+ - **Cost Estimation**: Real-time cost calculation using the `tokenlens` library
21
+ - **Intelligent Formatting**: Automatic token count formatting (K, M, B suffixes)
22
+ - **Interactive Hover Card**: Detailed information revealed on hover
23
+ - **Context Provider Pattern**: Clean data flow through React Context API
24
+ - **TypeScript Support**: Full type definitions for all components
25
+ - **Accessible Design**: Proper ARIA labels and semantic HTML
26
+ - **Theme Integration**: Uses currentColor for automatic theme adaptation
27
+
28
+ ## Props
29
+
30
+ ### `<Context />`
31
+
32
+ | Prop | Type | Default | Description |
33
+ | ------------ | --------------------------- | ------- | ----------------------------------------------------------------------------------------- |
34
+ | `maxTokens` | `number` | - | The total context window size in tokens. |
35
+ | `usedTokens` | `number` | - | The number of tokens currently used. |
36
+ | `usage` | `LanguageModelUsage` | - | Detailed token usage breakdown from the AI SDK (input, output, reasoning, cached tokens). |
37
+ | `modelId` | `ModelId` | - | Model identifier for cost calculation (e.g., |
38
+ | `...props` | `ComponentProps<HoverCard>` | - | Any other props are spread to the HoverCard component. |
39
+
40
+ ### `<ContextTrigger />`
41
+
42
+ | Prop | Type | Default | Description |
43
+ | ---------- | ------------------------ | ------- | ------------------------------------------------------------------------------------------- |
44
+ | `children` | `React.ReactNode` | - | Custom trigger element. If not provided, renders a default button with percentage and icon. |
45
+ | `...props` | `ComponentProps<Button>` | - | Props spread to the default button element. |
46
+
47
+ ### `<ContextContent />`
48
+
49
+ | Prop | Type | Default | Description |
50
+ | ----------- | ---------------------------------- | ------- | -------------------------------------------------- |
51
+ | `className` | `string` | - | Additional CSS classes for the hover card content. |
52
+ | `...props` | `ComponentProps<HoverCardContent>` | - | Props spread to the HoverCardContent component. |
53
+
54
+ ### `<ContextContentHeader />`
55
+
56
+ | Prop | Type | Default | Description |
57
+ | ---------- | --------------------- | ------- | --------------------------------------------------------------------------------------------- |
58
+ | `children` | `React.ReactNode` | - | Custom header content. If not provided, renders percentage and token count with progress bar. |
59
+ | `...props` | `ComponentProps<div>` | - | Props spread to the header div element. |
60
+
61
+ ### `<ContextContentBody />`
62
+
63
+ | Prop | Type | Default | Description |
64
+ | ---------- | --------------------- | ------- | -------------------------------------------------------------- |
65
+ | `children` | `React.ReactNode` | - | Body content, typically containing usage breakdown components. |
66
+ | `...props` | `ComponentProps<div>` | - | Props spread to the body div element. |
67
+
68
+ ### `<ContextContentFooter />`
69
+
70
+ | Prop | Type | Default | Description |
71
+ | ---------- | --------------------- | ------- | ------------------------------------------------------------------------------------ |
72
+ | `children` | `React.ReactNode` | - | Custom footer content. If not provided, renders total cost when modelId is provided. |
73
+ | `...props` | `ComponentProps<div>` | - | Props spread to the footer div element. |
74
+
75
+ ### Usage Components
76
+
77
+ All usage components (`ContextInputUsage`, `ContextOutputUsage`, `ContextReasoningUsage`, `ContextCacheUsage`) share the same props:
78
+
79
+ | Prop | Type | Default | Description |
80
+ | ----------- | --------------------- | ------- | -------------------------------------------------------------------------------------------- |
81
+ | `children` | `React.ReactNode` | - | Custom content. If not provided, renders token count and cost for the respective usage type. |
82
+ | `className` | `string` | - | Additional CSS classes. |
83
+ | `...props` | `ComponentProps<div>` | - | Props spread to the div element. |
84
+
85
+ ## Component Architecture
86
+
87
+ The Context component uses a compound component pattern with React Context for data sharing:
88
+
89
+ 1. **`<Context>`** - Root provider component that holds all context data
90
+ 2. **`<ContextTrigger>`** - Interactive trigger element (default: button with percentage)
91
+ 3. **`<ContextContent>`** - Hover card content container
92
+ 4. **`<ContextContentHeader>`** - Header section with progress visualization
93
+ 5. **`<ContextContentBody>`** - Body section for usage breakdowns
94
+ 6. **`<ContextContentFooter>`** - Footer section for total cost
95
+ 7. **Usage Components** - Individual token usage displays (Input, Output, Reasoning, Cache)
96
+
97
+ ## Token Formatting
98
+
99
+ The component uses `Intl.NumberFormat` with compact notation for automatic formatting:
100
+
101
+ - Under 1,000: Shows exact count (e.g., "842")
102
+ - 1,000+: Shows with K suffix (e.g., "32K")
103
+ - 1,000,000+: Shows with M suffix (e.g., "1.5M")
104
+ - 1,000,000,000+: Shows with B suffix (e.g., "2.1B")
105
+
106
+ ## Cost Calculation
107
+
108
+ When a `modelId` is provided, the component automatically calculates costs using the `tokenlens` library:
109
+
110
+ - **Input tokens**: Cost based on model's input pricing
111
+ - **Output tokens**: Cost based on model's output pricing
112
+ - **Reasoning tokens**: Special pricing for reasoning-capable models
113
+ - **Cached tokens**: Reduced pricing for cached input tokens
114
+ - **Total cost**: Sum of all token type costs
115
+
116
+ Costs are formatted using `Intl.NumberFormat` with USD currency.
117
+
118
+ ## Styling
119
+
120
+ The component uses Tailwind CSS classes and follows your design system:
121
+
122
+ - Progress indicator uses `currentColor` for theme adaptation
123
+ - Hover card has customizable width and padding
124
+ - Footer has a secondary background for visual separation
125
+ - All text sizes use the `text-xs` class for consistency
126
+ - Muted foreground colors for secondary information
@@ -0,0 +1,30 @@
1
+ # Controls
2
+
3
+ A styled controls component for React Flow-based canvases with zoom and fit view functionality.
4
+
5
+ The `Controls` component provides interactive zoom and fit view controls for React Flow canvases. It includes a modern, themed design with backdrop blur and card styling.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npx ai-elements@latest add controls
11
+ ```
12
+
13
+ ## Features
14
+
15
+ - Zoom in/out controls
16
+ - Fit view button to center and scale content
17
+ - Rounded pill design with backdrop blur
18
+ - Theme-aware card background
19
+ - Subtle drop shadow for depth
20
+ - Full TypeScript support
21
+ - Compatible with all React Flow control features
22
+
23
+ ## Props
24
+
25
+ ### `<Controls />`
26
+
27
+ | Prop | Type | Default | Description |
28
+ | ----------- | --------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------- |
29
+ | `className` | `string` | - | Additional CSS classes to apply to the controls. |
30
+ | `...props` | `ComponentProps<typeof Controls>` | - | Any other props from @xyflow/react Controls component (showZoom, showFitView, showInteractive, position, etc.). |
@@ -0,0 +1,210 @@
1
+ # Conversation
2
+
3
+ Wraps messages and automatically scrolls to the bottom. Also includes a scroll button that appears when not at the bottom.
4
+
5
+ The `Conversation` component wraps messages and automatically scrolls to the bottom. Also includes a scroll button that appears when not at the bottom.
6
+
7
+ <Preview path="conversation" className="p-0" />
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npx ai-elements@latest add conversation
13
+ ```
14
+
15
+ ## Usage with AI SDK
16
+
17
+ Build a simple conversational UI with `Conversation` and [`PromptInput`](/components/prompt-input):
18
+
19
+ Add the following component to your frontend:
20
+
21
+ ```tsx title="app/page.tsx"
22
+ "use client";
23
+
24
+ import {
25
+ Conversation,
26
+ ConversationContent,
27
+ ConversationDownload,
28
+ ConversationEmptyState,
29
+ ConversationScrollButton,
30
+ } from "@/components/ai-elements/conversation";
31
+ import { Message, MessageContent, MessageResponse } from "@/components/ai-elements/message";
32
+ import {
33
+ Input,
34
+ PromptInputTextarea,
35
+ PromptInputSubmit,
36
+ } from "@/components/ai-elements/prompt-input";
37
+ import { MessageSquare } from "lucide-react";
38
+ import { useState } from "react";
39
+ import { useChat } from "@ai-sdk/react";
40
+
41
+ const ConversationDemo = () => {
42
+ const [input, setInput] = useState("");
43
+ const { messages, sendMessage, status } = useChat();
44
+
45
+ const handleSubmit = (e: React.FormEvent) => {
46
+ e.preventDefault();
47
+ if (input.trim()) {
48
+ sendMessage({ text: input });
49
+ setInput("");
50
+ }
51
+ };
52
+
53
+ return (
54
+ <div className="max-w-4xl mx-auto p-6 relative size-full rounded-lg border h-[600px]">
55
+ <div className="flex flex-col h-full">
56
+ <Conversation>
57
+ <ConversationContent>
58
+ {messages.length === 0 ? (
59
+ <ConversationEmptyState
60
+ icon={<MessageSquare className="size-12" />}
61
+ title="Start a conversation"
62
+ description="Type a message below to begin chatting"
63
+ />
64
+ ) : (
65
+ messages.map((message) => (
66
+ <Message from={message.role} key={message.id}>
67
+ <MessageContent>
68
+ {message.parts.map((part, i) => {
69
+ switch (part.type) {
70
+ case "text": // we don't use any reasoning or tool calls in this example
71
+ return (
72
+ <MessageResponse key={`${message.id}-${i}`}>
73
+ {part.text}
74
+ </MessageResponse>
75
+ );
76
+ default:
77
+ return null;
78
+ }
79
+ })}
80
+ </MessageContent>
81
+ </Message>
82
+ ))
83
+ )}
84
+ </ConversationContent>
85
+ <ConversationDownload messages={messages} />
86
+ <ConversationScrollButton />
87
+ </Conversation>
88
+
89
+ <Input onSubmit={handleSubmit} className="mt-4 w-full max-w-2xl mx-auto relative">
90
+ <PromptInputTextarea
91
+ value={input}
92
+ placeholder="Say something..."
93
+ onChange={(e) => setInput(e.currentTarget.value)}
94
+ className="pr-12"
95
+ />
96
+ <PromptInputSubmit
97
+ status={status === "streaming" ? "streaming" : "ready"}
98
+ disabled={!input.trim()}
99
+ className="absolute bottom-1 right-1"
100
+ />
101
+ </Input>
102
+ </div>
103
+ </div>
104
+ );
105
+ };
106
+
107
+ export default ConversationDemo;
108
+ ```
109
+
110
+ Add the following route to your backend:
111
+
112
+ ```tsx title="api/chat/route.ts"
113
+ import { streamText, UIMessage, convertToModelMessages } from "ai";
114
+
115
+ // Allow streaming responses up to 30 seconds
116
+ export const maxDuration = 30;
117
+
118
+ export async function POST(req: Request) {
119
+ const { messages }: { messages: UIMessage[] } = await req.json();
120
+
121
+ const result = streamText({
122
+ model: "openai/gpt-4o",
123
+ messages: await convertToModelMessages(messages),
124
+ });
125
+
126
+ return result.toUIMessageStreamResponse();
127
+ }
128
+ ```
129
+
130
+ ## Features
131
+
132
+ - Automatic scrolling to the bottom when new messages are added
133
+ - Smooth scrolling behavior with configurable animation
134
+ - Scroll button that appears when not at the bottom
135
+ - Download conversation as Markdown
136
+ - Responsive design with customizable padding and spacing
137
+ - Flexible content layout with consistent message spacing
138
+ - Accessible with proper ARIA roles for screen readers
139
+ - Customizable styling through className prop
140
+ - Support for any number of child message components
141
+
142
+ ## Props
143
+
144
+ ### `<Conversation />`
145
+
146
+ | Prop | Type | Default | Description |
147
+ | ------------ | ----------------------------------------------- | ---------- | -------------------------------------------------------------- | ----------------------------------------------------------- |
148
+ | `contextRef` | `React.Ref<StickToBottomContext>` | - | Optional ref to access the StickToBottom context object. |
149
+ | `instance` | `StickToBottomInstance` | - | Optional instance for controlling the StickToBottom component. |
150
+ | `children` | `((context: StickToBottomContext) => ReactNode) | ReactNode` | - | Render prop or ReactNode for custom rendering with context. |
151
+ | `...props` | `Omit<React.HTMLAttributes<HTMLDivElement>, ` | - | Any other props are spread to the root div. |
152
+
153
+ ### `<ConversationContent />`
154
+
155
+ | Prop | Type | Default | Description |
156
+ | ---------- | ----------------------------------------------- | ---------- | ------------------------------------------- | ----------------------------------------------------------- |
157
+ | `children` | `((context: StickToBottomContext) => ReactNode) | ReactNode` | - | Render prop or ReactNode for custom rendering with context. |
158
+ | `...props` | `Omit<React.HTMLAttributes<HTMLDivElement>, ` | - | Any other props are spread to the root div. |
159
+
160
+ ### `<ConversationEmptyState />`
161
+
162
+ | Prop | Type | Default | Description |
163
+ | ------------- | ----------------- | ------- | ----------------------------------------------------- |
164
+ | `title` | `string` | - | The title text to display. |
165
+ | `description` | `string` | - | The description text to display. |
166
+ | `icon` | `React.ReactNode` | - | Optional icon to display above the text. |
167
+ | `children` | `React.ReactNode` | - | Optional additional content to render below the text. |
168
+ | `...props` | `ComponentProps<` | - | Any other props are spread to the root div. |
169
+
170
+ ### `<ConversationScrollButton />`
171
+
172
+ | Prop | Type | Default | Description |
173
+ | ---------- | ------------------------------- | ------- | ------------------------------------------------------------------------ |
174
+ | `...props` | `ComponentProps<typeof Button>` | - | Any other props are spread to the underlying shadcn/ui Button component. |
175
+
176
+ ### `<ConversationDownload />`
177
+
178
+ A button that downloads the conversation as a Markdown file.
179
+
180
+ ```tsx
181
+ import { ConversationDownload } from "@/components/ai-elements/conversation";
182
+
183
+ <Conversation>
184
+ <ConversationContent>
185
+ {messages.map(...)}
186
+ </ConversationContent>
187
+ <ConversationDownload messages={messages} />
188
+ <ConversationScrollButton />
189
+ </Conversation>
190
+ ```
191
+
192
+ | Prop | Type | Default | Description |
193
+ | --------------- | --------------------------------------------------------- | -------- | ------------------------------------------------------------------------ |
194
+ | `messages` | `ConversationMessage[]` | Required | Array of messages to include in the download. |
195
+ | `filename` | `string` | - | The filename for the downloaded file. |
196
+ | `formatMessage` | `(message: ConversationMessage, index: number) => string` | - | Custom function to format each message in the output. |
197
+ | `...props` | `Omit<ComponentProps<typeof Button>, ` | - | Any other props are spread to the underlying shadcn/ui Button component. |
198
+
199
+ ### `messagesToMarkdown`
200
+
201
+ A utility function to convert messages to Markdown format. Useful for custom download implementations.
202
+
203
+ ```tsx
204
+ import { messagesToMarkdown } from "@/components/ai-elements/conversation";
205
+
206
+ const markdown = messagesToMarkdown(messages);
207
+
208
+ // With custom formatter
209
+ const customMarkdown = messagesToMarkdown(messages, (msg, i) => `[${msg.role}]: ${msg.content}`);
210
+ ```
@@ -0,0 +1,50 @@
1
+ # Edge
2
+
3
+ Customizable edge components for React Flow canvases with animated and temporary states.
4
+
5
+ The `Edge` component provides two pre-styled edge types for React Flow canvases: `Temporary` for dashed temporary connections and `Animated` for connections with animated indicators.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npx ai-elements@latest add edge
11
+ ```
12
+
13
+ ## Features
14
+
15
+ - Two distinct edge types: Temporary and Animated
16
+ - Temporary edges use dashed lines with ring color
17
+ - Animated edges include a moving circle indicator
18
+ - Automatic handle position calculation
19
+ - Smart offset calculation based on handle type and position
20
+ - Uses Bezier curves for smooth, natural-looking connections
21
+ - Fully compatible with React Flow's edge system
22
+ - Type-safe implementation with TypeScript
23
+
24
+ ## Edge Types
25
+
26
+ ### `Edge.Temporary`
27
+
28
+ A dashed edge style for temporary or preview connections. Uses a simple Bezier path with a dashed stroke pattern.
29
+
30
+ ### `Edge.Animated`
31
+
32
+ A solid edge with an animated circle that moves along the path. The animation repeats indefinitely with a 2-second duration, providing visual feedback for active connections.
33
+
34
+ ## Props
35
+
36
+ Both edge types accept standard React Flow `EdgeProps`:
37
+
38
+ | Prop | Type | Default | Description |
39
+ | ---------------- | --------------------- | ------- | --------------------------------------------------------- |
40
+ | `id` | `string` | - | Unique identifier for the edge. |
41
+ | `source` | `string` | - | ID of the source node. |
42
+ | `target` | `string` | - | ID of the target node. |
43
+ | `sourceX` | `number` | - | X coordinate of the source handle (Temporary only). |
44
+ | `sourceY` | `number` | - | Y coordinate of the source handle (Temporary only). |
45
+ | `targetX` | `number` | - | X coordinate of the target handle (Temporary only). |
46
+ | `targetY` | `number` | - | Y coordinate of the target handle (Temporary only). |
47
+ | `sourcePosition` | `Position` | - | Position of the source handle (Left, Right, Top, Bottom). |
48
+ | `targetPosition` | `Position` | - | Position of the target handle (Left, Right, Top, Bottom). |
49
+ | `markerEnd` | `string` | - | SVG marker ID for the edge end (Animated only). |
50
+ | `style` | `React.CSSProperties` | - | Custom styles for the edge (Animated only). |
@@ -0,0 +1,102 @@
1
+ # Environment Variables
2
+
3
+ Display environment variables with masking and copy functionality.
4
+
5
+ The `EnvironmentVariables` component displays environment variables with value masking, visibility toggle, and copy functionality.
6
+
7
+ See `scripts/environment-variables.tsx` for this example.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npx ai-elements@latest add environment-variables
13
+ ```
14
+
15
+ ## Features
16
+
17
+ - Value masking by default
18
+ - Toggle visibility switch
19
+ - Copy individual values
20
+ - Export format support (`export KEY="value"`)
21
+ - Required badge indicator
22
+
23
+ ## Props
24
+
25
+ ### `<EnvironmentVariables />`
26
+
27
+ | Prop | Type | Default | Description |
28
+ | -------------------- | -------------------------------------- | ------- | --------------------------------- |
29
+ | `showValues` | `boolean` | - | Controlled visibility state. |
30
+ | `defaultShowValues` | `boolean` | `false` | Default visibility state. |
31
+ | `onShowValuesChange` | `(show: boolean) => void` | - | Callback when visibility changes. |
32
+ | `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the container div. |
33
+
34
+ ### `<EnvironmentVariablesHeader />`
35
+
36
+ | Prop | Type | Default | Description |
37
+ | ---------- | -------------------------------------- | ------- | ------------------------- |
38
+ | `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the header div. |
39
+
40
+ ### `<EnvironmentVariablesTitle />`
41
+
42
+ | Prop | Type | Default | Description |
43
+ | ---------- | ------------------------------------------ | ------- | ------------------------- |
44
+ | `children` | `React.ReactNode` | - | Custom title text. |
45
+ | `...props` | `React.HTMLAttributes<HTMLHeadingElement>` | - | Spread to the h3 element. |
46
+
47
+ ### `<EnvironmentVariablesToggle />`
48
+
49
+ | Prop | Type | Default | Description |
50
+ | ---------- | ------------------------------------- | ------- | ------------------------------- |
51
+ | `...props` | `React.ComponentProps<typeof Switch>` | - | Spread to the Switch component. |
52
+
53
+ ### `<EnvironmentVariablesContent />`
54
+
55
+ | Prop | Type | Default | Description |
56
+ | ---------- | -------------------------------------- | ------- | -------------------------- |
57
+ | `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the content div. |
58
+
59
+ ### `<EnvironmentVariable />`
60
+
61
+ | Prop | Type | Default | Description |
62
+ | ---------- | -------------------------------------- | -------- | ---------------------- |
63
+ | `name` | `string` | Required | Variable name. |
64
+ | `value` | `string` | Required | Variable value. |
65
+ | `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the row div. |
66
+
67
+ ### `<EnvironmentVariableGroup />`
68
+
69
+ | Prop | Type | Default | Description |
70
+ | ---------- | -------------------------------------- | ------- | ------------------------ |
71
+ | `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the group div. |
72
+
73
+ ### `<EnvironmentVariableName />`
74
+
75
+ | Prop | Type | Default | Description |
76
+ | ---------- | --------------------------------------- | ------- | ------------------------------------------------------- |
77
+ | `children` | `React.ReactNode` | - | Custom name content. Defaults to the name from context. |
78
+ | `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
79
+
80
+ ### `<EnvironmentVariableValue />`
81
+
82
+ | Prop | Type | Default | Description |
83
+ | ---------- | --------------------------------------- | ------- | ------------------------------------------------------------------------- |
84
+ | `children` | `React.ReactNode` | - | Custom value content. Defaults to the masked/unmasked value from context. |
85
+ | `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
86
+
87
+ ### `<EnvironmentVariableCopyButton />`
88
+
89
+ | Prop | Type | Default | Description |
90
+ | ------------ | ------------------------------------- | ------- | ----------------------------------- |
91
+ | `copyFormat` | `unknown` | - | Format to copy. |
92
+ | `onCopy` | `() => void` | - | Callback after successful copy. |
93
+ | `onError` | `(error: Error) => void` | - | Callback if copying fails. |
94
+ | `timeout` | `number` | `2000` | Duration to show copied state (ms). |
95
+ | `...props` | `React.ComponentProps<typeof Button>` | - | Spread to the Button component. |
96
+
97
+ ### `<EnvironmentVariableRequired />`
98
+
99
+ | Prop | Type | Default | Description |
100
+ | ---------- | ------------------------------------ | ------- | ------------------------------ |
101
+ | `children` | `React.ReactNode` | - | Custom badge text. |
102
+ | `...props` | `React.ComponentProps<typeof Badge>` | - | Spread to the Badge component. |
@@ -0,0 +1,72 @@
1
+ # File Tree
2
+
3
+ Display hierarchical file and folder structure with expand/collapse functionality.
4
+
5
+ The `FileTree` component displays a hierarchical file system structure with expandable folders and file selection.
6
+
7
+ See `scripts/file-tree.tsx` for this example.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npx ai-elements@latest add file-tree
13
+ ```
14
+
15
+ ## Features
16
+
17
+ - Hierarchical folder structure
18
+ - Expand/collapse folders
19
+ - File selection with callback
20
+ - Keyboard accessible
21
+ - Customizable icons
22
+ - Controlled and uncontrolled modes
23
+
24
+ ## Examples
25
+
26
+ ### Basic Usage
27
+
28
+ See `scripts/file-tree-basic.tsx` for this example.
29
+
30
+ ### With Selection
31
+
32
+ See `scripts/file-tree-selection.tsx` for this example.
33
+
34
+ ### Default Expanded
35
+
36
+ See `scripts/file-tree-expanded.tsx` for this example.
37
+
38
+ ## Props
39
+
40
+ ### `<FileTree />`
41
+
42
+ | Prop | Type | Default | Description |
43
+ | ------------------ | --------------------------------- | ----------- | ---------------------------------------- |
44
+ | `expanded` | `Set<string>` | - | Controlled expanded paths. |
45
+ | `defaultExpanded` | `Set<string>` | `new Set()` | Default expanded paths. |
46
+ | `selectedPath` | `string` | - | Currently selected file/folder path. |
47
+ | `onSelect` | `(path: string) => void` | - | Callback when a file/folder is selected. |
48
+ | `onExpandedChange` | `(expanded: Set<string>) => void` | - | Callback when expanded paths change. |
49
+ | `className` | `string` | - | Additional CSS classes. |
50
+
51
+ ### `<FileTreeFolder />`
52
+
53
+ | Prop | Type | Default | Description |
54
+ | ----------- | -------- | ------- | ----------------------- |
55
+ | `path` | `string` | - | Unique folder path. |
56
+ | `name` | `string` | - | Display name. |
57
+ | `className` | `string` | - | Additional CSS classes. |
58
+
59
+ ### `<FileTreeFile />`
60
+
61
+ | Prop | Type | Default | Description |
62
+ | ----------- | ----------- | ------- | ----------------------- |
63
+ | `path` | `string` | - | Unique file path. |
64
+ | `name` | `string` | - | Display name. |
65
+ | `icon` | `ReactNode` | - | Custom file icon. |
66
+ | `className` | `string` | - | Additional CSS classes. |
67
+
68
+ ### Subcomponents
69
+
70
+ - `FileTreeIcon` - Icon wrapper
71
+ - `FileTreeName` - Name text
72
+ - `FileTreeActions` - Action buttons container (stops click propagation)