@muskanmeet/invoicing-design-system 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 (695) hide show
  1. package/.cache/replit/env/latest +78 -0
  2. package/.cache/replit/env/latest.json +1 -0
  3. package/.cache/replit/modules/nodejs-20.res +1 -0
  4. package/.cache/replit/modules/python-3.11.res +1 -0
  5. package/.cache/replit/modules/replit-rtld-loader.res +1 -0
  6. package/.cache/replit/modules/replit.res +1 -0
  7. package/.cache/replit/modules.stamp +0 -0
  8. package/.cache/replit/nix/dotreplitenv.json +1 -0
  9. package/.cache/replit/toolchain.json +1 -0
  10. package/.cache/typescript/5.9/package-lock.json +50 -0
  11. package/.cache/typescript/5.9/package.json +1 -0
  12. package/.config/nextjs-nodejs/config.json +7 -0
  13. package/.eslintrc.json +3 -0
  14. package/.local/.commit_message +31 -0
  15. package/.local/secondary_skills/LICENSE.txt +21 -0
  16. package/.local/secondary_skills/ad-creative/.fingerprint +1 -0
  17. package/.local/secondary_skills/ad-creative/SKILL.md +872 -0
  18. package/.local/secondary_skills/ai-recruiter/.fingerprint +1 -0
  19. package/.local/secondary_skills/ai-recruiter/SKILL.md +1087 -0
  20. package/.local/secondary_skills/ai-sdr/.fingerprint +1 -0
  21. package/.local/secondary_skills/ai-sdr/SKILL.md +204 -0
  22. package/.local/secondary_skills/ai-secretary/.fingerprint +1 -0
  23. package/.local/secondary_skills/ai-secretary/SKILL.md +1132 -0
  24. package/.local/secondary_skills/branding-generator/.fingerprint +1 -0
  25. package/.local/secondary_skills/branding-generator/SKILL.md +286 -0
  26. package/.local/secondary_skills/competitive-analysis/.fingerprint +1 -0
  27. package/.local/secondary_skills/competitive-analysis/SKILL.md +429 -0
  28. package/.local/secondary_skills/content-machine/.fingerprint +1 -0
  29. package/.local/secondary_skills/content-machine/SKILL.md +321 -0
  30. package/.local/secondary_skills/deep-research/.fingerprint +1 -0
  31. package/.local/secondary_skills/deep-research/SKILL.md +517 -0
  32. package/.local/secondary_skills/design-thinker/.fingerprint +1 -0
  33. package/.local/secondary_skills/design-thinker/SKILL.md +327 -0
  34. package/.local/secondary_skills/excel-generator/.fingerprint +1 -0
  35. package/.local/secondary_skills/excel-generator/SKILL.md +954 -0
  36. package/.local/secondary_skills/excel-generator/financial-models.md +289 -0
  37. package/.local/secondary_skills/file-converter/.fingerprint +1 -0
  38. package/.local/secondary_skills/file-converter/SKILL.md +823 -0
  39. package/.local/secondary_skills/flashcard-generator/.fingerprint +1 -0
  40. package/.local/secondary_skills/flashcard-generator/SKILL.md +233 -0
  41. package/.local/secondary_skills/geo/.fingerprint +1 -0
  42. package/.local/secondary_skills/geo/SKILL.md +378 -0
  43. package/.local/secondary_skills/geo/references/content-patterns.md +158 -0
  44. package/.local/secondary_skills/geo/references/platform-notes.md +128 -0
  45. package/.local/secondary_skills/geo/references/scorecard.md +113 -0
  46. package/.local/secondary_skills/geo/references/technical-checklist.md +257 -0
  47. package/.local/secondary_skills/github-solution-finder/.fingerprint +1 -0
  48. package/.local/secondary_skills/github-solution-finder/SKILL.md +174 -0
  49. package/.local/secondary_skills/infographic-builder/.fingerprint +1 -0
  50. package/.local/secondary_skills/infographic-builder/SKILL.md +317 -0
  51. package/.local/secondary_skills/infographic-builder/antv-syntax.md +470 -0
  52. package/.local/secondary_skills/infographic-builder/react-fallback.md +210 -0
  53. package/.local/secondary_skills/insurance-optimizer/.fingerprint +1 -0
  54. package/.local/secondary_skills/insurance-optimizer/SKILL.md +209 -0
  55. package/.local/secondary_skills/interview-prep/.fingerprint +1 -0
  56. package/.local/secondary_skills/interview-prep/SKILL.md +349 -0
  57. package/.local/secondary_skills/invoice-generator/.fingerprint +1 -0
  58. package/.local/secondary_skills/invoice-generator/SKILL.md +527 -0
  59. package/.local/secondary_skills/legal-contract/.fingerprint +1 -0
  60. package/.local/secondary_skills/legal-contract/SKILL.md +977 -0
  61. package/.local/secondary_skills/meal-planner/.fingerprint +1 -0
  62. package/.local/secondary_skills/meal-planner/SKILL.md +517 -0
  63. package/.local/secondary_skills/personal-shopper/.fingerprint +1 -0
  64. package/.local/secondary_skills/personal-shopper/SKILL.md +361 -0
  65. package/.local/secondary_skills/photo-editor/.fingerprint +1 -0
  66. package/.local/secondary_skills/photo-editor/SKILL.md +605 -0
  67. package/.local/secondary_skills/podcast-generator/.fingerprint +1 -0
  68. package/.local/secondary_skills/podcast-generator/SKILL.md +560 -0
  69. package/.local/secondary_skills/podcast-marketing/.fingerprint +1 -0
  70. package/.local/secondary_skills/podcast-marketing/SKILL.md +550 -0
  71. package/.local/secondary_skills/podcast-marketing/audio-processing.md +530 -0
  72. package/.local/secondary_skills/podcast-marketing/content-atoms.md +253 -0
  73. package/.local/secondary_skills/podcast-marketing/content-calendar.md +318 -0
  74. package/.local/secondary_skills/podcast-marketing/content-templates.md +325 -0
  75. package/.local/secondary_skills/podcast-marketing/quote-cards.md +238 -0
  76. package/.local/secondary_skills/podcast-marketing/rss-and-batch.md +359 -0
  77. package/.local/secondary_skills/podcast-marketing/video-clips.md +660 -0
  78. package/.local/secondary_skills/podcast-marketing/youtube-processing.md +328 -0
  79. package/.local/secondary_skills/product-manager/.fingerprint +1 -0
  80. package/.local/secondary_skills/product-manager/SKILL.md +272 -0
  81. package/.local/secondary_skills/programmatic-seo/.fingerprint +1 -0
  82. package/.local/secondary_skills/programmatic-seo/SKILL.md +1207 -0
  83. package/.local/secondary_skills/real-estate-analyzer/.fingerprint +1 -0
  84. package/.local/secondary_skills/real-estate-analyzer/SKILL.md +786 -0
  85. package/.local/secondary_skills/recipe-creator/.fingerprint +1 -0
  86. package/.local/secondary_skills/recipe-creator/SKILL.md +259 -0
  87. package/.local/secondary_skills/recreate-screenshot/.fingerprint +1 -0
  88. package/.local/secondary_skills/recreate-screenshot/SKILL.md +215 -0
  89. package/.local/secondary_skills/replit-migration-guardrails/.fingerprint +1 -0
  90. package/.local/secondary_skills/replit-migration-guardrails/SKILL.md +55 -0
  91. package/.local/secondary_skills/replit-migration-guardrails/references/base44.md +47 -0
  92. package/.local/secondary_skills/replit-migration-guardrails/references/vercel.md +78 -0
  93. package/.local/secondary_skills/resume-maker/.fingerprint +1 -0
  94. package/.local/secondary_skills/resume-maker/SKILL.md +790 -0
  95. package/.local/secondary_skills/seo-auditor/.fingerprint +1 -0
  96. package/.local/secondary_skills/seo-auditor/SKILL.md +448 -0
  97. package/.local/secondary_skills/skill-creator/.fingerprint +1 -0
  98. package/.local/secondary_skills/skill-creator/SKILL.md +214 -0
  99. package/.local/secondary_skills/skill-finder/.fingerprint +1 -0
  100. package/.local/secondary_skills/skill-finder/SKILL.md +299 -0
  101. package/.local/secondary_skills/stock-analyzer/.fingerprint +1 -0
  102. package/.local/secondary_skills/stock-analyzer/SKILL.md +798 -0
  103. package/.local/secondary_skills/storyboard/.fingerprint +1 -0
  104. package/.local/secondary_skills/storyboard/SKILL.md +558 -0
  105. package/.local/secondary_skills/supplier-research/.fingerprint +1 -0
  106. package/.local/secondary_skills/supplier-research/SKILL.md +213 -0
  107. package/.local/secondary_skills/tax-reviewer/.fingerprint +1 -0
  108. package/.local/secondary_skills/tax-reviewer/SKILL.md +131 -0
  109. package/.local/secondary_skills/travel-assistant/.fingerprint +1 -0
  110. package/.local/secondary_skills/travel-assistant/SKILL.md +667 -0
  111. package/.local/secondary_skills/video-editing/.fingerprint +1 -0
  112. package/.local/secondary_skills/video-editing/SKILL.md +705 -0
  113. package/.local/secondary_skills/video-editing/dead-space-and-chunking.md +1081 -0
  114. package/.local/secondary_skills/video-editing/operations.md +1719 -0
  115. package/.local/secondary_skills/video-editing/virality-scoring.md +1212 -0
  116. package/.local/secondary_skills/video-editing/voiceover.md +788 -0
  117. package/.local/secondary_skills/website-cloning/.fingerprint +1 -0
  118. package/.local/secondary_skills/website-cloning/SKILL.md +544 -0
  119. package/.local/secondary_skills/website-cloning/extraction.md +1207 -0
  120. package/.local/secondary_skills/website-cloning/pitfalls.md +297 -0
  121. package/.local/skills/LICENSE.txt +21 -0
  122. package/.local/skills/agent-inbox/.fingerprint +1 -0
  123. package/.local/skills/agent-inbox/SKILL.md +128 -0
  124. package/.local/skills/artifacts/.fingerprint +1 -0
  125. package/.local/skills/artifacts/SKILL.md +21 -0
  126. package/.local/skills/artifacts/artifacts/automation/artifact.yaml +40 -0
  127. package/.local/skills/artifacts/artifacts/automation/files/package.json.template +47 -0
  128. package/.local/skills/artifacts/artifacts/automation/files/scripts/build.sh +6 -0
  129. package/.local/skills/artifacts/artifacts/automation/files/scripts/inngest.sh +18 -0
  130. package/.local/skills/artifacts/artifacts/automation/files/src/global.d.ts +1 -0
  131. package/.local/skills/artifacts/artifacts/automation/files/src/mastra/agents/agent.ts +89 -0
  132. package/.local/skills/artifacts/artifacts/automation/files/src/mastra/index.ts +212 -0
  133. package/.local/skills/artifacts/artifacts/automation/files/src/mastra/inngest/client.ts +17 -0
  134. package/.local/skills/artifacts/artifacts/automation/files/src/mastra/inngest/index.ts +214 -0
  135. package/.local/skills/artifacts/artifacts/automation/files/src/mastra/storage/index.ts +8 -0
  136. package/.local/skills/artifacts/artifacts/automation/files/src/mastra/tools/exampleTool.ts +71 -0
  137. package/.local/skills/artifacts/artifacts/automation/files/src/mastra/workflows/workflow.ts +203 -0
  138. package/.local/skills/artifacts/artifacts/automation/files/src/triggers/cronTriggers.ts +61 -0
  139. package/.local/skills/artifacts/artifacts/automation/files/src/triggers/exampleConnectorTrigger.ts +153 -0
  140. package/.local/skills/artifacts/artifacts/automation/files/src/triggers/slackTriggers.ts +638 -0
  141. package/.local/skills/artifacts/artifacts/automation/files/src/triggers/telegramTriggers.ts +94 -0
  142. package/.local/skills/artifacts/artifacts/automation/files/tests/testCronAutomation.ts +86 -0
  143. package/.local/skills/artifacts/artifacts/automation/files/tests/testWebhookAutomation.ts +118 -0
  144. package/.local/skills/artifacts/artifacts/automation/files/tsconfig.json +26 -0
  145. package/.local/skills/artifacts/artifacts/data-visualization/artifact.yaml +48 -0
  146. package/.local/skills/artifacts/artifacts/expo/OWNERS +2 -0
  147. package/.local/skills/artifacts/artifacts/expo/artifact.yaml +47 -0
  148. package/.local/skills/artifacts/artifacts/expo/files/app/(tabs)/_layout.tsx +86 -0
  149. package/.local/skills/artifacts/artifacts/expo/files/app/(tabs)/index.tsx +28 -0
  150. package/.local/skills/artifacts/artifacts/expo/files/app/+not-found.tsx +45 -0
  151. package/.local/skills/artifacts/artifacts/expo/files/app/_layout.tsx +60 -0
  152. package/.local/skills/artifacts/artifacts/expo/files/app.json.template +38 -0
  153. package/.local/skills/artifacts/artifacts/expo/files/assets/images/icon.png +0 -0
  154. package/.local/skills/artifacts/artifacts/expo/files/babel.config.js +6 -0
  155. package/.local/skills/artifacts/artifacts/expo/files/components/ErrorBoundary.tsx +54 -0
  156. package/.local/skills/artifacts/artifacts/expo/files/components/ErrorFallback.tsx +278 -0
  157. package/.local/skills/artifacts/artifacts/expo/files/components/KeyboardAwareScrollViewCompat.tsx +29 -0
  158. package/.local/skills/artifacts/artifacts/expo/files/constants/colors.ts +59 -0
  159. package/.local/skills/artifacts/artifacts/expo/files/hooks/useColors.ts +24 -0
  160. package/.local/skills/artifacts/artifacts/expo/files/metro.config.js +3 -0
  161. package/.local/skills/artifacts/artifacts/expo/files/package.json.template +58 -0
  162. package/.local/skills/artifacts/artifacts/expo/files/scripts/build.js +573 -0
  163. package/.local/skills/artifacts/artifacts/expo/files/server/serve.js +135 -0
  164. package/.local/skills/artifacts/artifacts/expo/files/server/templates/landing-page.html +460 -0
  165. package/.local/skills/artifacts/artifacts/expo/files/tsconfig.json +23 -0
  166. package/.local/skills/artifacts/artifacts/mockup-sandbox/artifact.yaml +15 -0
  167. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/components.json +21 -0
  168. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/index.html +31 -0
  169. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/mockupPreviewPlugin.ts +199 -0
  170. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/package.json.template +75 -0
  171. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/public/favicon.svg +3 -0
  172. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/.generated/mockup-components.ts +3 -0
  173. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/App.tsx +146 -0
  174. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/accordion.tsx +55 -0
  175. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/alert-dialog.tsx +139 -0
  176. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/alert.tsx +59 -0
  177. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/aspect-ratio.tsx +5 -0
  178. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/avatar.tsx +50 -0
  179. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/badge.tsx +43 -0
  180. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/breadcrumb.tsx +115 -0
  181. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/button-group.tsx +83 -0
  182. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/button.tsx +65 -0
  183. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/calendar.tsx +213 -0
  184. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/card.tsx +76 -0
  185. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/carousel.tsx +260 -0
  186. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/chart.tsx +367 -0
  187. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/checkbox.tsx +28 -0
  188. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/collapsible.tsx +11 -0
  189. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/command.tsx +153 -0
  190. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/context-menu.tsx +198 -0
  191. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/dialog.tsx +120 -0
  192. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/drawer.tsx +116 -0
  193. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/dropdown-menu.tsx +201 -0
  194. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/empty.tsx +104 -0
  195. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/field.tsx +244 -0
  196. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/form.tsx +176 -0
  197. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/hover-card.tsx +27 -0
  198. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/input-group.tsx +168 -0
  199. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/input-otp.tsx +69 -0
  200. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/input.tsx +22 -0
  201. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/item.tsx +193 -0
  202. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/kbd.tsx +28 -0
  203. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/label.tsx +26 -0
  204. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/menubar.tsx +254 -0
  205. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/navigation-menu.tsx +128 -0
  206. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/pagination.tsx +117 -0
  207. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/popover.tsx +31 -0
  208. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/progress.tsx +28 -0
  209. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/radio-group.tsx +42 -0
  210. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/resizable.tsx +45 -0
  211. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/scroll-area.tsx +46 -0
  212. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/select.tsx +159 -0
  213. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/separator.tsx +29 -0
  214. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/sheet.tsx +140 -0
  215. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/sidebar.tsx +727 -0
  216. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/skeleton.tsx +15 -0
  217. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/slider.tsx +26 -0
  218. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/sonner.tsx +31 -0
  219. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/spinner.tsx +16 -0
  220. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/switch.tsx +27 -0
  221. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/table.tsx +120 -0
  222. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/tabs.tsx +53 -0
  223. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/textarea.tsx +22 -0
  224. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/toast.tsx +127 -0
  225. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/toaster.tsx +33 -0
  226. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/toggle-group.tsx +61 -0
  227. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/toggle.tsx +43 -0
  228. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/tooltip.tsx +32 -0
  229. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/hooks/use-mobile.tsx +19 -0
  230. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/hooks/use-toast.ts +189 -0
  231. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/index.css +158 -0
  232. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/lib/utils.ts +6 -0
  233. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/main.tsx +5 -0
  234. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/tsconfig.json +20 -0
  235. package/.local/skills/artifacts/artifacts/mockup-sandbox/files/vite.config.ts +72 -0
  236. package/.local/skills/artifacts/artifacts/react-vite/artifact.yaml +41 -0
  237. package/.local/skills/artifacts/artifacts/react-vite/files/components.json +20 -0
  238. package/.local/skills/artifacts/artifacts/react-vite/files/index.html.template +24 -0
  239. package/.local/skills/artifacts/artifacts/react-vite/files/package.json.template +77 -0
  240. package/.local/skills/artifacts/artifacts/react-vite/files/public/favicon.svg +3 -0
  241. package/.local/skills/artifacts/artifacts/react-vite/files/public/robots.txt +2 -0
  242. package/.local/skills/artifacts/artifacts/react-vite/files/src/App.tsx +42 -0
  243. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/accordion.tsx +55 -0
  244. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/alert-dialog.tsx +139 -0
  245. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/alert.tsx +59 -0
  246. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/aspect-ratio.tsx +5 -0
  247. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/avatar.tsx +50 -0
  248. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/badge.tsx +43 -0
  249. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/breadcrumb.tsx +115 -0
  250. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/button-group.tsx +83 -0
  251. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/button.tsx +65 -0
  252. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/calendar.tsx +213 -0
  253. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/card.tsx +76 -0
  254. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/carousel.tsx +260 -0
  255. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/chart.tsx +367 -0
  256. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/checkbox.tsx +28 -0
  257. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/collapsible.tsx +11 -0
  258. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/command.tsx +153 -0
  259. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/context-menu.tsx +198 -0
  260. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/dialog.tsx +120 -0
  261. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/drawer.tsx +116 -0
  262. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/dropdown-menu.tsx +201 -0
  263. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/empty.tsx +104 -0
  264. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/field.tsx +244 -0
  265. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/form.tsx +176 -0
  266. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/hover-card.tsx +27 -0
  267. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/input-group.tsx +168 -0
  268. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/input-otp.tsx +69 -0
  269. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/input.tsx +22 -0
  270. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/item.tsx +193 -0
  271. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/kbd.tsx +28 -0
  272. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/label.tsx +26 -0
  273. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/menubar.tsx +254 -0
  274. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/navigation-menu.tsx +128 -0
  275. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/pagination.tsx +117 -0
  276. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/popover.tsx +31 -0
  277. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/progress.tsx +28 -0
  278. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/radio-group.tsx +42 -0
  279. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/resizable.tsx +45 -0
  280. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/scroll-area.tsx +46 -0
  281. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/select.tsx +159 -0
  282. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/separator.tsx +29 -0
  283. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/sheet.tsx +140 -0
  284. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/sidebar.tsx +727 -0
  285. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/skeleton.tsx +15 -0
  286. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/slider.tsx +26 -0
  287. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/sonner.tsx +31 -0
  288. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/spinner.tsx +16 -0
  289. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/switch.tsx +27 -0
  290. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/table.tsx +120 -0
  291. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/tabs.tsx +53 -0
  292. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/textarea.tsx +22 -0
  293. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/toast.tsx +127 -0
  294. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/toaster.tsx +33 -0
  295. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/toggle-group.tsx +61 -0
  296. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/toggle.tsx +43 -0
  297. package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/tooltip.tsx +32 -0
  298. package/.local/skills/artifacts/artifacts/react-vite/files/src/hooks/use-mobile.tsx +19 -0
  299. package/.local/skills/artifacts/artifacts/react-vite/files/src/hooks/use-toast.ts +191 -0
  300. package/.local/skills/artifacts/artifacts/react-vite/files/src/index.css +393 -0
  301. package/.local/skills/artifacts/artifacts/react-vite/files/src/lib/utils.ts +6 -0
  302. package/.local/skills/artifacts/artifacts/react-vite/files/src/main.tsx +5 -0
  303. package/.local/skills/artifacts/artifacts/react-vite/files/src/pages/not-found.tsx +21 -0
  304. package/.local/skills/artifacts/artifacts/react-vite/files/tsconfig.json +22 -0
  305. package/.local/skills/artifacts/artifacts/react-vite/files/vite.config.ts +75 -0
  306. package/.local/skills/artifacts/artifacts/slides/artifact.yaml +33 -0
  307. package/.local/skills/artifacts/artifacts/slides/files/index.html.template +46 -0
  308. package/.local/skills/artifacts/artifacts/slides/files/package.json.template +30 -0
  309. package/.local/skills/artifacts/artifacts/slides/files/public/favicon.svg +3 -0
  310. package/.local/skills/artifacts/artifacts/slides/files/scripts/validate-slides.ts +193 -0
  311. package/.local/skills/artifacts/artifacts/slides/files/src/App.tsx +251 -0
  312. package/.local/skills/artifacts/artifacts/slides/files/src/data/slides-manifest.json +1 -0
  313. package/.local/skills/artifacts/artifacts/slides/files/src/data/slidesManifestSchema.ts +33 -0
  314. package/.local/skills/artifacts/artifacts/slides/files/src/index.css +48 -0
  315. package/.local/skills/artifacts/artifacts/slides/files/src/main.tsx +14 -0
  316. package/.local/skills/artifacts/artifacts/slides/files/src/slideLoader.ts +51 -0
  317. package/.local/skills/artifacts/artifacts/slides/files/tsconfig.json +17 -0
  318. package/.local/skills/artifacts/artifacts/slides/files/vite.config.ts +74 -0
  319. package/.local/skills/artifacts/artifacts/video-js/artifact.yaml +38 -0
  320. package/.local/skills/artifacts/artifacts/video-js/files/index.html.template +27 -0
  321. package/.local/skills/artifacts/artifacts/video-js/files/package.json.template +36 -0
  322. package/.local/skills/artifacts/artifacts/video-js/files/public/favicon.svg +3 -0
  323. package/.local/skills/artifacts/artifacts/video-js/files/scripts/validate-recording.sh +38 -0
  324. package/.local/skills/artifacts/artifacts/video-js/files/src/App.tsx +5 -0
  325. package/.local/skills/artifacts/artifacts/video-js/files/src/components/video/ReplitLoadingScene.tsx +105 -0
  326. package/.local/skills/artifacts/artifacts/video-js/files/src/components/video/VideoTemplate.tsx +30 -0
  327. package/.local/skills/artifacts/artifacts/video-js/files/src/components/video/index.ts +1 -0
  328. package/.local/skills/artifacts/artifacts/video-js/files/src/hooks/use-mobile.tsx +19 -0
  329. package/.local/skills/artifacts/artifacts/video-js/files/src/index.css +50 -0
  330. package/.local/skills/artifacts/artifacts/video-js/files/src/lib/utils.ts +6 -0
  331. package/.local/skills/artifacts/artifacts/video-js/files/src/lib/video/animations.ts +239 -0
  332. package/.local/skills/artifacts/artifacts/video-js/files/src/lib/video/hooks.ts +104 -0
  333. package/.local/skills/artifacts/artifacts/video-js/files/src/lib/video/index.ts +19 -0
  334. package/.local/skills/artifacts/artifacts/video-js/files/src/main.tsx +5 -0
  335. package/.local/skills/artifacts/artifacts/video-js/files/tsconfig.json +16 -0
  336. package/.local/skills/artifacts/artifacts/video-js/files/vite.config.ts +79 -0
  337. package/.local/skills/artifacts/bootstrap-legacy.js +115 -0
  338. package/.local/skills/artifacts/bootstrap.js +118 -0
  339. package/.local/skills/artifacts/references/multi-artifact-creation.md +94 -0
  340. package/.local/skills/canvas/.fingerprint +1 -0
  341. package/.local/skills/canvas/SKILL.md +534 -0
  342. package/.local/skills/canvas/__init__.py +1 -0
  343. package/.local/skills/code_review/.fingerprint +1 -0
  344. package/.local/skills/code_review/SKILL.md +82 -0
  345. package/.local/skills/database/.fingerprint +1 -0
  346. package/.local/skills/database/SKILL.md +351 -0
  347. package/.local/skills/database/references/database-migrations-on-publish.md +57 -0
  348. package/.local/skills/delegation/.fingerprint +1 -0
  349. package/.local/skills/delegation/SKILL.md +200 -0
  350. package/.local/skills/deployment/.fingerprint +1 -0
  351. package/.local/skills/deployment/SKILL.md +261 -0
  352. package/.local/skills/deployment/references/deployment-failure-debugging.md +243 -0
  353. package/.local/skills/deployment/references/deployment-logs.md +147 -0
  354. package/.local/skills/design/.fingerprint +1 -0
  355. package/.local/skills/design/SKILL.md +235 -0
  356. package/.local/skills/design-exploration/.fingerprint +1 -0
  357. package/.local/skills/design-exploration/SKILL.md +95 -0
  358. package/.local/skills/diagnostics/.fingerprint +1 -0
  359. package/.local/skills/diagnostics/SKILL.md +122 -0
  360. package/.local/skills/environment-secrets/.fingerprint +1 -0
  361. package/.local/skills/environment-secrets/SKILL.md +201 -0
  362. package/.local/skills/expo/.fingerprint +1 -0
  363. package/.local/skills/expo/OWNERS +2 -0
  364. package/.local/skills/expo/SKILL.md +298 -0
  365. package/.local/skills/expo/references/design_and_aesthetics.md +141 -0
  366. package/.local/skills/expo/references/device_features_and_permissions.md +48 -0
  367. package/.local/skills/expo/references/first_build.md +114 -0
  368. package/.local/skills/expo/references/react_context.md +54 -0
  369. package/.local/skills/external_apis/.fingerprint +1 -0
  370. package/.local/skills/external_apis/SKILL.md +25 -0
  371. package/.local/skills/external_apis/references/brave.md +116 -0
  372. package/.local/skills/external_apis/references/elevenlabs.md +44 -0
  373. package/.local/skills/external_apis/references/exa.md +34 -0
  374. package/.local/skills/external_apis/references/firecrawl.md +37 -0
  375. package/.local/skills/external_apis/references/nano_banana.md +33 -0
  376. package/.local/skills/follow-up-tasks/.fingerprint +1 -0
  377. package/.local/skills/follow-up-tasks/SKILL.md +80 -0
  378. package/.local/skills/image-search/.fingerprint +1 -0
  379. package/.local/skills/image-search/SKILL.md +150 -0
  380. package/.local/skills/integrations/.fingerprint +1 -0
  381. package/.local/skills/integrations/SKILL.md +205 -0
  382. package/.local/skills/media-generation/.fingerprint +1 -0
  383. package/.local/skills/media-generation/SKILL.md +170 -0
  384. package/.local/skills/media-generation/audio_generation.md +138 -0
  385. package/.local/skills/media-generation/video_generation.md +82 -0
  386. package/.local/skills/mockup-extract/.fingerprint +1 -0
  387. package/.local/skills/mockup-extract/SKILL.md +123 -0
  388. package/.local/skills/mockup-graduate/.fingerprint +1 -0
  389. package/.local/skills/mockup-graduate/SKILL.md +97 -0
  390. package/.local/skills/mockup-sandbox/.fingerprint +1 -0
  391. package/.local/skills/mockup-sandbox/SKILL.md +750 -0
  392. package/.local/skills/package-management/.fingerprint +1 -0
  393. package/.local/skills/package-management/SKILL.md +264 -0
  394. package/.local/skills/post_merge_setup/.fingerprint +1 -0
  395. package/.local/skills/post_merge_setup/SKILL.md +102 -0
  396. package/.local/skills/project_tasks/.fingerprint +1 -0
  397. package/.local/skills/project_tasks/SKILL.md +361 -0
  398. package/.local/skills/query-integration-data/.fingerprint +1 -0
  399. package/.local/skills/query-integration-data/SKILL.md +385 -0
  400. package/.local/skills/react-vite/.fingerprint +1 -0
  401. package/.local/skills/react-vite/SKILL.md +110 -0
  402. package/.local/skills/react-vite/references/frontend_general_rules.md +66 -0
  403. package/.local/skills/react-vite/references/seo.md +158 -0
  404. package/.local/skills/remove-image-background/.fingerprint +1 -0
  405. package/.local/skills/remove-image-background/SKILL.md +55 -0
  406. package/.local/skills/repl_setup/.fingerprint +1 -0
  407. package/.local/skills/repl_setup/SKILL.md +90 -0
  408. package/.local/skills/repl_setup/references/angular.md +103 -0
  409. package/.local/skills/repl_setup/references/react_vite.md +121 -0
  410. package/.local/skills/repl_setup/references/vue.md +102 -0
  411. package/.local/skills/replit-docs/.fingerprint +1 -0
  412. package/.local/skills/replit-docs/SKILL.md +81 -0
  413. package/.local/skills/revenuecat/.fingerprint +1 -0
  414. package/.local/skills/revenuecat/SKILL.md +133 -0
  415. package/.local/skills/revenuecat/references/initial-setup.md +566 -0
  416. package/.local/skills/revenuecat/references/replit-revenuecat-sdk-docs.md +279 -0
  417. package/.local/skills/revenuecat/references/subsequent-management.md +63 -0
  418. package/.local/skills/security_scan/.fingerprint +1 -0
  419. package/.local/skills/security_scan/SKILL.md +51 -0
  420. package/.local/skills/skill-authoring/.fingerprint +1 -0
  421. package/.local/skills/skill-authoring/SKILL.md +99 -0
  422. package/.local/skills/slides/.fingerprint +1 -0
  423. package/.local/skills/slides/SKILL.md +523 -0
  424. package/.local/skills/slides/references/brand_research.md +86 -0
  425. package/.local/skills/slides/references/export_failures.md +36 -0
  426. package/.local/skills/slides/references/exporting.md +49 -0
  427. package/.local/skills/slides/references/importing.md +40 -0
  428. package/.local/skills/slides/references/visual_qa.md +121 -0
  429. package/.local/skills/slides/templates/90s-board-deck.md +285 -0
  430. package/.local/skills/slides/templates/academic-lecture.md +437 -0
  431. package/.local/skills/slides/templates/adventure-outdoor.md +845 -0
  432. package/.local/skills/slides/templates/analytics-dashboard.md +407 -0
  433. package/.local/skills/slides/templates/annual-report-cover.md +592 -0
  434. package/.local/skills/slides/templates/apple-minimal.md +570 -0
  435. package/.local/skills/slides/templates/architecture-studio.md +339 -0
  436. package/.local/skills/slides/templates/arctic-expedition.md +582 -0
  437. package/.local/skills/slides/templates/arctic-minimal.md +364 -0
  438. package/.local/skills/slides/templates/art-deco.md +308 -0
  439. package/.local/skills/slides/templates/artisan-ceramics.md +659 -0
  440. package/.local/skills/slides/templates/artisan-food.md +709 -0
  441. package/.local/skills/slides/templates/artisanal-chalkboard.md +623 -0
  442. package/.local/skills/slides/templates/astronomy-log.md +562 -0
  443. package/.local/skills/slides/templates/aurora-expedition.md +754 -0
  444. package/.local/skills/slides/templates/automotive-electric.md +339 -0
  445. package/.local/skills/slides/templates/bauhaus-avant-garde.md +443 -0
  446. package/.local/skills/slides/templates/bioluminescent-sea.md +814 -0
  447. package/.local/skills/slides/templates/biophilic-urban.md +565 -0
  448. package/.local/skills/slides/templates/blackboard-chalk.md +517 -0
  449. package/.local/skills/slides/templates/blueprint.md +478 -0
  450. package/.local/skills/slides/templates/botanical-index.md +822 -0
  451. package/.local/skills/slides/templates/botanical-wellness.md +611 -0
  452. package/.local/skills/slides/templates/brand-book-page.md +466 -0
  453. package/.local/skills/slides/templates/brutalist-concrete.md +362 -0
  454. package/.local/skills/slides/templates/brutalist-studio.md +325 -0
  455. package/.local/skills/slides/templates/brutalist-web-punk.md +591 -0
  456. package/.local/skills/slides/templates/celestial-observatory.md +453 -0
  457. package/.local/skills/slides/templates/ceramics-artisan.md +740 -0
  458. package/.local/skills/slides/templates/cinema-verite.md +415 -0
  459. package/.local/skills/slides/templates/claymorphism.md +737 -0
  460. package/.local/skills/slides/templates/collage-zine.md +357 -0
  461. package/.local/skills/slides/templates/copper-sage.md +325 -0
  462. package/.local/skills/slides/templates/coral-reef.md +508 -0
  463. package/.local/skills/slides/templates/corporate-grid.md +331 -0
  464. package/.local/skills/slides/templates/corporate-memphis-flat.md +938 -0
  465. package/.local/skills/slides/templates/cosmos-explorer.md +998 -0
  466. package/.local/skills/slides/templates/cpg-coffee.md +850 -0
  467. package/.local/skills/slides/templates/craft-coffee-roast.md +693 -0
  468. package/.local/skills/slides/templates/creative-agency.md +244 -0
  469. package/.local/skills/slides/templates/creative-director.md +875 -0
  470. package/.local/skills/slides/templates/culinary-brand.md +698 -0
  471. package/.local/skills/slides/templates/de-stijl-construct.md +320 -0
  472. package/.local/skills/slides/templates/desert-dunes-photo.md +483 -0
  473. package/.local/skills/slides/templates/desert-mirror.md +577 -0
  474. package/.local/skills/slides/templates/desert-modernism.md +439 -0
  475. package/.local/skills/slides/templates/developer-api-docs.md +654 -0
  476. package/.local/skills/slides/templates/editorial-magazine.md +694 -0
  477. package/.local/skills/slides/templates/engineering-blueprint.md +730 -0
  478. package/.local/skills/slides/templates/executive-mono.md +363 -0
  479. package/.local/skills/slides/templates/expedition-peak.md +298 -0
  480. package/.local/skills/slides/templates/fashion-campaign.md +681 -0
  481. package/.local/skills/slides/templates/fashion-editorial.md +497 -0
  482. package/.local/skills/slides/templates/figma-geometric.md +420 -0
  483. package/.local/skills/slides/templates/film-noir.md +857 -0
  484. package/.local/skills/slides/templates/fitness-athletics.md +663 -0
  485. package/.local/skills/slides/templates/flat-vector.md +912 -0
  486. package/.local/skills/slides/templates/fluid-luxe.md +665 -0
  487. package/.local/skills/slides/templates/furniture-brand.md +505 -0
  488. package/.local/skills/slides/templates/gallery-modern.md +436 -0
  489. package/.local/skills/slides/templates/gaming-esports.md +410 -0
  490. package/.local/skills/slides/templates/geodesic-future.md +368 -0
  491. package/.local/skills/slides/templates/glass-artisan.md +666 -0
  492. package/.local/skills/slides/templates/glassmorphism.md +320 -0
  493. package/.local/skills/slides/templates/greenhouse-botanical.md +662 -0
  494. package/.local/skills/slides/templates/healthcare-clarity.md +468 -0
  495. package/.local/skills/slides/templates/holographic-drop.md +663 -0
  496. package/.local/skills/slides/templates/hospitality-resort.md +608 -0
  497. package/.local/skills/slides/templates/hypercar-launch.md +557 -0
  498. package/.local/skills/slides/templates/infographic-title.md +306 -0
  499. package/.local/skills/slides/templates/ink-wash.md +244 -0
  500. package/.local/skills/slides/templates/investor-memo.md +509 -0
  501. package/.local/skills/slides/templates/isometric-data.md +703 -0
  502. package/.local/skills/slides/templates/ivory-boardroom.md +439 -0
  503. package/.local/skills/slides/templates/japanese-minimal.md +308 -0
  504. package/.local/skills/slides/templates/jazz-blue-note.md +478 -0
  505. package/.local/skills/slides/templates/kinetic-type.md +206 -0
  506. package/.local/skills/slides/templates/lagoon-luxury.md +320 -0
  507. package/.local/skills/slides/templates/lavender-pastoral.md +577 -0
  508. package/.local/skills/slides/templates/linear-precise.md +460 -0
  509. package/.local/skills/slides/templates/lineart-sketch.md +930 -0
  510. package/.local/skills/slides/templates/lost-temple.md +689 -0
  511. package/.local/skills/slides/templates/luxury-fashion.md +269 -0
  512. package/.local/skills/slides/templates/luxury-watch.md +678 -0
  513. package/.local/skills/slides/templates/marble-elegance.md +673 -0
  514. package/.local/skills/slides/templates/mediterranean-travel.md +811 -0
  515. package/.local/skills/slides/templates/memphis-design.md +426 -0
  516. package/.local/skills/slides/templates/midnight-jazz.md +260 -0
  517. package/.local/skills/slides/templates/minimalist-poster.md +538 -0
  518. package/.local/skills/slides/templates/molten-craft.md +743 -0
  519. package/.local/skills/slides/templates/moroccan-tile.md +738 -0
  520. package/.local/skills/slides/templates/motorsport.md +782 -0
  521. package/.local/skills/slides/templates/mountain-drift.md +311 -0
  522. package/.local/skills/slides/templates/music-label.md +641 -0
  523. package/.local/skills/slides/templates/neo-tokyo.md +637 -0
  524. package/.local/skills/slides/templates/neobrutalism.md +334 -0
  525. package/.local/skills/slides/templates/newspaper-broadsheet.md +687 -0
  526. package/.local/skills/slides/templates/noir-fragrance.md +672 -0
  527. package/.local/skills/slides/templates/non-profit-impact.md +320 -0
  528. package/.local/skills/slides/templates/ocean-breeze.md +398 -0
  529. package/.local/skills/slides/templates/origami-couture.md +636 -0
  530. package/.local/skills/slides/templates/origami-paper.md +308 -0
  531. package/.local/skills/slides/templates/pastel-playground.md +1114 -0
  532. package/.local/skills/slides/templates/perfume-noir.md +646 -0
  533. package/.local/skills/slides/templates/prairie-storm.md +625 -0
  534. package/.local/skills/slides/templates/private-equity-dark.md +506 -0
  535. package/.local/skills/slides/templates/renaissance-florals.md +225 -0
  536. package/.local/skills/slides/templates/retro-print.md +880 -0
  537. package/.local/skills/slides/templates/retro-vinyl-sleeve.md +229 -0
  538. package/.local/skills/slides/templates/riso-zine.md +1094 -0
  539. package/.local/skills/slides/templates/risograph.md +1151 -0
  540. package/.local/skills/slides/templates/saas-product-launch.md +972 -0
  541. package/.local/skills/slides/templates/scandinavian.md +372 -0
  542. package/.local/skills/slides/templates/skater-culture.md +583 -0
  543. package/.local/skills/slides/templates/slate-modern.md +469 -0
  544. package/.local/skills/slides/templates/sneaker-drop.md +1006 -0
  545. package/.local/skills/slides/templates/social-campaign.md +321 -0
  546. package/.local/skills/slides/templates/stained-glass.md +574 -0
  547. package/.local/skills/slides/templates/strategy-one-pager.md +508 -0
  548. package/.local/skills/slides/templates/street-drop.md +677 -0
  549. package/.local/skills/slides/templates/street-mural.md +588 -0
  550. package/.local/skills/slides/templates/studio-noir.md +466 -0
  551. package/.local/skills/slides/templates/sustainability-esg.md +686 -0
  552. package/.local/skills/slides/templates/swiss-archive.md +648 -0
  553. package/.local/skills/slides/templates/swiss-typographic.md +364 -0
  554. package/.local/skills/slides/templates/tea-ceremony.md +456 -0
  555. package/.local/skills/slides/templates/tech-earbuds.md +870 -0
  556. package/.local/skills/slides/templates/terracotta-studio.md +235 -0
  557. package/.local/skills/slides/templates/thesis-defense.md +390 -0
  558. package/.local/skills/slides/templates/travel-aerial.md +648 -0
  559. package/.local/skills/slides/templates/treasury-policy.md +475 -0
  560. package/.local/skills/slides/templates/tropical-lush.md +332 -0
  561. package/.local/skills/slides/templates/underwater-dream.md +627 -0
  562. package/.local/skills/slides/templates/urban-golden.md +342 -0
  563. package/.local/skills/slides/templates/vintage-apothecary.md +552 -0
  564. package/.local/skills/slides/templates/vintage-ticket-stub.md +637 -0
  565. package/.local/skills/slides/templates/vinyl-crate.md +550 -0
  566. package/.local/skills/slides/templates/vision-editorial.md +612 -0
  567. package/.local/skills/slides/templates/volcanic-edge.md +347 -0
  568. package/.local/skills/slides/templates/watercolor-city.md +827 -0
  569. package/.local/skills/slides/templates/wine-spirits.md +203 -0
  570. package/.local/skills/slides/templates/wireframe-prototype.md +718 -0
  571. package/.local/skills/slides/templates/workspace-design.md +782 -0
  572. package/.local/skills/slides/templates/workspace-modern.md +406 -0
  573. package/.local/skills/slides/templates/zen-meditation.md +284 -0
  574. package/.local/skills/slides/templates/zen-void.md +244 -0
  575. package/.local/skills/stripe/.fingerprint +1 -0
  576. package/.local/skills/stripe/SKILL.md +455 -0
  577. package/.local/skills/stripe/references/code-templates.md +588 -0
  578. package/.local/skills/threat_modeling/.fingerprint +1 -0
  579. package/.local/skills/threat_modeling/SKILL.md +240 -0
  580. package/.local/skills/validation/.fingerprint +1 -0
  581. package/.local/skills/validation/SKILL.md +237 -0
  582. package/.local/skills/video-js/.fingerprint +1 -0
  583. package/.local/skills/video-js/SKILL.md +793 -0
  584. package/.local/skills/video-js/references/audio.md +237 -0
  585. package/.local/skills/video-js/references/finalize_playback.md +16 -0
  586. package/.local/skills/video-js/references/first_build.md +87 -0
  587. package/.local/skills/video-js/references/scene_selectors.md +428 -0
  588. package/.local/skills/web-search/.fingerprint +1 -0
  589. package/.local/skills/web-search/SKILL.md +110 -0
  590. package/.local/skills/whop/.fingerprint +1 -0
  591. package/.local/skills/whop/SKILL.md +104 -0
  592. package/.local/skills/whop/references/code-templates.md +66 -0
  593. package/.local/skills/whop/references/whop-api.mjs +22 -0
  594. package/.local/skills/whop/references/whop-mcp.mjs +40 -0
  595. package/.local/skills/whop/references/whopClient.ts +54 -0
  596. package/.local/skills/workflows/.fingerprint +1 -0
  597. package/.local/skills/workflows/SKILL.md +245 -0
  598. package/.local/state/replit/agent/.agent_state_037313043e76b5c652f276153ea014a68570e145.bin +0 -0
  599. package/.local/state/replit/agent/.agent_state_0f5361c2a53ab324b2a941a797f6494891be084c.bin +0 -0
  600. package/.local/state/replit/agent/.agent_state_4272443827dc90eac8c5b1963a34ee86da70bb99.bin +0 -0
  601. package/.local/state/replit/agent/.agent_state_4f14655950cbd611b228b4f0e1f664b66a56af24.bin +0 -0
  602. package/.local/state/replit/agent/.agent_state_ce28955a30856aa3d095b3568c322c8ec098993f.bin +0 -0
  603. package/.local/state/replit/agent/.agent_state_ec5347d04ebfbf6cf850fe04e15590d423e96d1d.bin +0 -0
  604. package/.local/state/replit/agent/.agent_state_f68f8c104d815ccc387290f0fba2c87c818d29f1.bin +0 -0
  605. package/.local/state/replit/agent/.agent_state_f87c1803a179510408c57c7a380c26f5c2197a30.bin +0 -0
  606. package/.local/state/replit/agent/.agent_state_main.bin +0 -0
  607. package/.local/state/replit/agent/.latest.json +1 -0
  608. package/.local/state/replit/agent/repl_state.bin +0 -0
  609. package/.local/state/scribe/scribe.db +0 -0
  610. package/.local/state/scribe/scribe.db-shm +0 -0
  611. package/.local/state/scribe/scribe.db-wal +0 -0
  612. package/.local/state/workflow-logs/2tfQP52ibxJTy4lpZ7_JX/start_application.shell.exec.0 +27 -0
  613. package/.local/state/workflow-logs/6QjtmQThaHrR_QHf4v8HA/validation.external.managed.0 +31 -0
  614. package/.local/state/workflow-logs/6QjtmQThaHrR_QHf4v8HA/validation.json +1 -0
  615. package/.local/state/workflow-logs/85n-z_SHy4JSGaUeJIcxy/start_application.shell.exec.0 +18 -0
  616. package/.local/state/workflow-logs/GIL2Ql5124lrEqGrfRO4k/start_application.shell.exec.0 +222 -0
  617. package/.local/state/workflow-logs/LiH2MjG_9FwFummNHhDtO/validation.external.managed.0 +45 -0
  618. package/.local/state/workflow-logs/LiH2MjG_9FwFummNHhDtO/validation.json +1 -0
  619. package/.local/state/workflow-logs/OKp1t-fEO5U_zQi1SKOQ-/start_application.shell.exec.0 +10 -0
  620. package/.local/state/workflow-logs/Tpp7d6Hu6CO1NKGo_eAi7/validation.external.managed.0 +43 -0
  621. package/.local/state/workflow-logs/Tpp7d6Hu6CO1NKGo_eAi7/validation.json +1 -0
  622. package/.local/state/workflow-logs/UDYycRqPV-N4B7whZP-yX/start_application.shell.exec.0 +252 -0
  623. package/.local/state/workflow-logs/V8Anmvz-HuvAztflZ8yCo/start_application.shell.exec.0 +87 -0
  624. package/.local/state/workflow-logs/a5fMnjr9tCwoaFY93pYuN/start_application.shell.exec.0 +2519 -0
  625. package/.local/state/workflow-logs/ggFzYcdHfIlW0owP2pb0U/start_application.shell.exec.0 +28 -0
  626. package/.local/state/workflow-logs/hIHNKfUtPX3jZs8qXw_Vt/validation.external.managed.0 +41 -0
  627. package/.local/state/workflow-logs/hIHNKfUtPX3jZs8qXw_Vt/validation.json +1 -0
  628. package/.local/state/workflow-logs/nbLvtuGJXB0wPmnruB3BE/start_application.shell.exec.0 +199 -0
  629. package/.local/state/workflow-logs/uDhN6S0ypUEh0MphXaFGY/start_application.shell.exec.0 +73 -0
  630. package/.local/state/workflow-logs/xZqU5CdTivcY6KEDEcVmD/start_application.shell.exec.0 +17 -0
  631. package/.local/tasks/breadcrumb-component.md +89 -0
  632. package/.local/tasks/calendar-component.md +93 -0
  633. package/.local/tasks/invoicing-design-system-app.md +39 -0
  634. package/.local/tasks/task-1.md +42 -0
  635. package/.local/tasks/task-7.md +92 -0
  636. package/.local/tasks/task-8.md +96 -0
  637. package/.replit +34 -0
  638. package/.upm/store.json +1 -0
  639. package/README.md +121 -0
  640. package/app/dashboard/page.tsx +10 -0
  641. package/app/design-system/page.tsx +802 -0
  642. package/app/invoices/page.tsx +10 -0
  643. package/app/layout.tsx +28 -0
  644. package/app/login/page.tsx +5 -0
  645. package/app/page.tsx +93 -0
  646. package/app/signup/page.tsx +5 -0
  647. package/attached_assets/Colors_1779781016394.png +0 -0
  648. package/attached_assets/Navy_1779781016404.png +0 -0
  649. package/attached_assets/Orange_1779781016405.png +0 -0
  650. package/attached_assets/Screenshot_2026-05-26_at_1.14.29_PM_1779781472515.png +0 -0
  651. package/attached_assets/Screenshot_2026-05-26_at_11.28.20_AM_1779775171071.png +0 -0
  652. package/attached_assets/Screenshot_2026-05-26_at_2.04.42_PM_1779784485318.png +0 -0
  653. package/attached_assets/Typography_1779781016406.png +0 -0
  654. package/design-system/components/avatar.tsx +46 -0
  655. package/design-system/components/badge.tsx +34 -0
  656. package/design-system/components/breadcrumb.tsx +149 -0
  657. package/design-system/components/button.tsx +57 -0
  658. package/design-system/components/calendar.tsx +77 -0
  659. package/design-system/components/card.tsx +62 -0
  660. package/design-system/components/checkbox.tsx +27 -0
  661. package/design-system/components/date-picker.tsx +153 -0
  662. package/design-system/components/dialog.tsx +106 -0
  663. package/design-system/components/dropdown-menu.tsx +88 -0
  664. package/design-system/components/form-field.tsx +78 -0
  665. package/design-system/components/input.tsx +25 -0
  666. package/design-system/components/label.tsx +25 -0
  667. package/design-system/components/popover.tsx +30 -0
  668. package/design-system/components/radio-group.tsx +35 -0
  669. package/design-system/components/select.tsx +84 -0
  670. package/design-system/components/separator.tsx +24 -0
  671. package/design-system/components/switch.tsx +28 -0
  672. package/design-system/components/table.tsx +80 -0
  673. package/design-system/components/tabs.tsx +54 -0
  674. package/design-system/components/textarea.tsx +25 -0
  675. package/design-system/components/toast.tsx +118 -0
  676. package/design-system/components/toaster.tsx +38 -0
  677. package/design-system/components/tooltip.tsx +27 -0
  678. package/design-system/hooks/index.ts +2 -0
  679. package/design-system/hooks/use-media-query.ts +27 -0
  680. package/design-system/hooks/use-toast.ts +91 -0
  681. package/design-system/index.ts +36 -0
  682. package/design-system/lib/cn.ts +6 -0
  683. package/design-system/styles.css +142 -0
  684. package/design-system/tokens/tokens.css +149 -0
  685. package/design-system/tokens/tokens.ts +190 -0
  686. package/next.config.mjs +6 -0
  687. package/package.json +46 -0
  688. package/postcss.config.mjs +6 -0
  689. package/screens/_shared/app-shell.tsx +145 -0
  690. package/screens/auth/auth-screen.tsx +156 -0
  691. package/screens/dashboard/dashboard-screen.tsx +207 -0
  692. package/screens/index.ts +17 -0
  693. package/screens/invoices/invoices-screen.tsx +317 -0
  694. package/tailwind.config.ts +110 -0
  695. package/tsconfig.json +26 -0
@@ -0,0 +1,239 @@
1
+ // Animation presets for consistent motion language
2
+
3
+ import type { Transition, Variants } from 'framer-motion';
4
+
5
+ // Spring presets
6
+ export const springs = {
7
+ snappy: { type: 'spring', stiffness: 400, damping: 30 } as Transition,
8
+ bouncy: { type: 'spring', stiffness: 300, damping: 15 } as Transition,
9
+ gentle: { type: 'spring', stiffness: 100, damping: 20 } as Transition,
10
+ stiff: { type: 'spring', stiffness: 600, damping: 40 } as Transition,
11
+ wobbly: { type: 'spring', stiffness: 200, damping: 10 } as Transition,
12
+ smooth: { type: 'spring', stiffness: 120, damping: 25 } as Transition,
13
+ poppy: { type: 'spring', stiffness: 500, damping: 22 } as Transition,
14
+ } as const;
15
+
16
+ // Easing presets
17
+ export const easings = {
18
+ easeOut: { ease: [0.16, 1, 0.3, 1] } as Transition,
19
+ circOut: { ease: 'circOut' } as Transition,
20
+ easeInOut: { ease: [0.4, 0, 0.2, 1] } as Transition,
21
+ backOut: { ease: 'backOut' } as Transition,
22
+ expoOut: { ease: [0.16, 1, 0.3, 1] } as Transition,
23
+ } as const;
24
+
25
+ // Scene transitions for AnimatePresence
26
+ export const sceneTransitions = {
27
+ fadeBlur: {
28
+ initial: { opacity: 0, filter: 'blur(20px)' },
29
+ animate: { opacity: 1, filter: 'blur(0px)' },
30
+ exit: { opacity: 0, filter: 'blur(20px)' },
31
+ transition: { duration: 0.8, ease: 'circOut' },
32
+ },
33
+ scaleFade: {
34
+ initial: { opacity: 0, scale: 0.95 },
35
+ animate: { opacity: 1, scale: 1 },
36
+ exit: { opacity: 0, scale: 1.05, filter: 'blur(10px)' },
37
+ transition: { duration: 0.8, ease: 'circOut' },
38
+ },
39
+ slideLeft: {
40
+ initial: { opacity: 0, x: 100 },
41
+ animate: { opacity: 1, x: 0 },
42
+ exit: { opacity: 0, x: -100 },
43
+ transition: { duration: 0.6, ease: 'circOut' },
44
+ },
45
+ slideRight: {
46
+ initial: { opacity: 0, x: -100 },
47
+ animate: { opacity: 1, x: 0 },
48
+ exit: { opacity: 0, x: 100 },
49
+ transition: { duration: 0.6, ease: 'circOut' },
50
+ },
51
+ slideUp: {
52
+ initial: { opacity: 0, y: 50 },
53
+ animate: { opacity: 1, y: 0 },
54
+ exit: { opacity: 0, y: -50 },
55
+ transition: { duration: 0.6, ease: 'circOut' },
56
+ },
57
+ wipe: {
58
+ initial: { clipPath: 'inset(0 100% 0 0)' },
59
+ animate: { clipPath: 'inset(0 0% 0 0)' },
60
+ exit: { clipPath: 'inset(0 0 0 100%)' },
61
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] },
62
+ },
63
+ zoomThrough: {
64
+ initial: { opacity: 0, scale: 0.5 },
65
+ animate: { opacity: 1, scale: 1 },
66
+ exit: { opacity: 0, scale: 1.5 },
67
+ transition: { duration: 1, ease: 'circOut' },
68
+ },
69
+ crossDissolve: {
70
+ initial: { opacity: 0 },
71
+ animate: { opacity: 1 },
72
+ exit: { opacity: 0 },
73
+ transition: { duration: 0.6, ease: [0.4, 0, 0.2, 1] },
74
+ },
75
+ clipCircle: {
76
+ initial: { clipPath: 'circle(0% at 50% 50%)' },
77
+ animate: { clipPath: 'circle(100% at 50% 50%)' },
78
+ exit: { clipPath: 'circle(0% at 50% 50%)' },
79
+ transition: { duration: 1, ease: [0.4, 0, 0.2, 1] },
80
+ },
81
+ clipPolygon: {
82
+ initial: { clipPath: 'polygon(50% 0%, 50% 0%, 50% 100%, 50% 100%)' },
83
+ animate: { clipPath: 'polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)' },
84
+ exit: { clipPath: 'polygon(50% 0%, 50% 0%, 50% 100%, 50% 100%)' },
85
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] },
86
+ },
87
+ perspectiveFlip: {
88
+ initial: { opacity: 0, rotateY: -90, transformPerspective: 1200 },
89
+ animate: { opacity: 1, rotateY: 0, transformPerspective: 1200 },
90
+ exit: { opacity: 0, rotateY: 90, transformPerspective: 1200 },
91
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] },
92
+ },
93
+ morphExpand: {
94
+ initial: { opacity: 0, scale: 0.3, borderRadius: '50%' },
95
+ animate: { opacity: 1, scale: 1, borderRadius: '0%' },
96
+ exit: { opacity: 0, scale: 2.5, filter: 'blur(30px)' },
97
+ transition: { duration: 1, ease: [0.16, 1, 0.3, 1] },
98
+ },
99
+ splitHorizontal: {
100
+ initial: { clipPath: 'inset(50% 0 50% 0)' },
101
+ animate: { clipPath: 'inset(0% 0 0% 0)' },
102
+ exit: { clipPath: 'inset(50% 0 50% 0)' },
103
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] },
104
+ },
105
+ splitVertical: {
106
+ initial: { clipPath: 'inset(0 50% 0 50%)' },
107
+ animate: { clipPath: 'inset(0 0% 0 0%)' },
108
+ exit: { clipPath: 'inset(0 50% 0 50%)' },
109
+ transition: { duration: 0.8, ease: [0.4, 0, 0.2, 1] },
110
+ },
111
+ pushLeft: {
112
+ initial: { x: '100%' },
113
+ animate: { x: 0 },
114
+ exit: { x: '-100%' },
115
+ transition: { duration: 0.7, ease: [0.4, 0, 0.2, 1] },
116
+ },
117
+ pushRight: {
118
+ initial: { x: '-100%' },
119
+ animate: { x: 0 },
120
+ exit: { x: '100%' },
121
+ transition: { duration: 0.7, ease: [0.4, 0, 0.2, 1] },
122
+ },
123
+ } as const;
124
+
125
+ // Element animations
126
+ export const elementAnimations = {
127
+ popIn: {
128
+ initial: { opacity: 0, scale: 0 },
129
+ animate: { opacity: 1, scale: 1 },
130
+ transition: { type: 'spring', stiffness: 300, damping: 20 },
131
+ },
132
+ fadeUp: {
133
+ initial: { opacity: 0, y: 20 },
134
+ animate: { opacity: 1, y: 0 },
135
+ transition: { duration: 0.5, ease: 'circOut' },
136
+ },
137
+ fadeDown: {
138
+ initial: { opacity: 0, y: -20 },
139
+ animate: { opacity: 1, y: 0 },
140
+ transition: { duration: 0.5, ease: 'circOut' },
141
+ },
142
+ slideInLeft: {
143
+ initial: { opacity: 0, x: -30 },
144
+ animate: { opacity: 1, x: 0 },
145
+ transition: { duration: 0.5, ease: 'circOut' },
146
+ },
147
+ slideInRight: {
148
+ initial: { opacity: 0, x: 30 },
149
+ animate: { opacity: 1, x: 0 },
150
+ transition: { duration: 0.5, ease: 'circOut' },
151
+ },
152
+ blurIn: {
153
+ initial: { opacity: 0, filter: 'blur(20px)' },
154
+ animate: { opacity: 1, filter: 'blur(0px)' },
155
+ transition: { duration: 0.6, ease: 'circOut' },
156
+ },
157
+ elasticScale: {
158
+ initial: { opacity: 0, scale: 0 },
159
+ animate: { opacity: 1, scale: 1 },
160
+ transition: { type: 'spring', stiffness: 500, damping: 15 },
161
+ },
162
+ perspectiveRotateIn: {
163
+ initial: { opacity: 0, rotateX: -60, transformPerspective: 1000 },
164
+ animate: { opacity: 1, rotateX: 0, transformPerspective: 1000 },
165
+ transition: { duration: 0.8, ease: [0.16, 1, 0.3, 1] },
166
+ },
167
+ pulse: {
168
+ animate: {
169
+ scale: [1, 1.05, 1],
170
+ transition: { repeat: Infinity, duration: 2 },
171
+ },
172
+ },
173
+ float: {
174
+ animate: {
175
+ y: [0, -10, 0],
176
+ transition: { repeat: Infinity, duration: 3, ease: 'easeInOut' },
177
+ },
178
+ },
179
+ } as const;
180
+
181
+ // Character-level animation variants for kinetic typography
182
+ export const charVariants: Variants = {
183
+ hidden: { opacity: 0, y: 40, rotateX: -40, transformPerspective: 800 },
184
+ visible: {
185
+ opacity: 1,
186
+ y: 0,
187
+ rotateX: 0,
188
+ transformPerspective: 800,
189
+ transition: { type: 'spring', stiffness: 400, damping: 25 },
190
+ },
191
+ };
192
+
193
+ export const charContainerVariants: Variants = {
194
+ hidden: {},
195
+ visible: {
196
+ transition: { staggerChildren: 0.03, delayChildren: 0.1 },
197
+ },
198
+ };
199
+
200
+ // Stagger configs
201
+ export const staggerConfigs = {
202
+ fast: { staggerChildren: 0.05, delayChildren: 0 },
203
+ medium: { staggerChildren: 0.1, delayChildren: 0.1 },
204
+ slow: { staggerChildren: 0.2, delayChildren: 0.2 },
205
+ reverse: { staggerChildren: 0.1, staggerDirection: -1 },
206
+ charFast: { staggerChildren: 0.02, delayChildren: 0 },
207
+ charMedium: { staggerChildren: 0.04, delayChildren: 0.1 },
208
+ } as const;
209
+
210
+ // Common variants
211
+ export const containerVariants: Variants = {
212
+ hidden: { opacity: 0 },
213
+ visible: {
214
+ opacity: 1,
215
+ transition: staggerConfigs.medium,
216
+ },
217
+ };
218
+
219
+ export const itemVariants: Variants = {
220
+ hidden: { opacity: 0, y: 20 },
221
+ visible: {
222
+ opacity: 1,
223
+ y: 0,
224
+ transition: { duration: 0.5, ease: 'circOut' },
225
+ },
226
+ };
227
+
228
+ // Utilities
229
+ export function staggerDelay(index: number, baseDelay: number = 0.1): number {
230
+ return index * baseDelay;
231
+ }
232
+
233
+ export function customSpring(stiffness: number, damping: number): Transition {
234
+ return { type: 'spring', stiffness, damping };
235
+ }
236
+
237
+ export function withDelay(transition: Transition, delay: number): Transition {
238
+ return { ...transition, delay };
239
+ }
@@ -0,0 +1,104 @@
1
+ // Video player hook - handles recording lifecycle, scene advancement, and looping
2
+
3
+ import { useState, useEffect, useRef } from 'react';
4
+
5
+ declare global {
6
+ interface Window {
7
+ startRecording?: () => Promise<void>;
8
+ stopRecording?: () => void;
9
+ }
10
+ }
11
+
12
+ export interface SceneDurations {
13
+ [key: string]: number;
14
+ }
15
+
16
+ export interface UseVideoPlayerOptions {
17
+ durations: SceneDurations;
18
+ onVideoEnd?: () => void;
19
+ loop?: boolean;
20
+ }
21
+
22
+ export interface UseVideoPlayerReturn {
23
+ currentScene: number;
24
+ totalScenes: number;
25
+ currentSceneKey: string;
26
+ hasEnded: boolean;
27
+ }
28
+
29
+ export function useVideoPlayer(options: UseVideoPlayerOptions): UseVideoPlayerReturn {
30
+ const { durations, onVideoEnd, loop = true } = options;
31
+
32
+ // Captured once on mount -- durations must be a static object
33
+ const sceneKeys = useRef(Object.keys(durations)).current;
34
+ const totalScenes = sceneKeys.length;
35
+ const durationsArray = useRef(Object.values(durations)).current;
36
+
37
+ const [currentScene, setCurrentScene] = useState(0);
38
+ const [hasEnded, setHasEnded] = useState(false);
39
+
40
+ // Start recording on mount
41
+ useEffect(() => {
42
+ window.startRecording?.();
43
+ }, []);
44
+
45
+ // Scene advancement -- loops independently of recording
46
+ useEffect(() => {
47
+ if (hasEnded && !loop) return;
48
+
49
+ const currentDuration = durationsArray[currentScene];
50
+
51
+ const timer = setTimeout(() => {
52
+ // Last scene just finished playing
53
+ if (currentScene >= totalScenes - 1) {
54
+ if (!hasEnded) {
55
+ window.stopRecording?.();
56
+ setHasEnded(true);
57
+ onVideoEnd?.();
58
+ }
59
+ if (loop) {
60
+ setCurrentScene(0);
61
+ }
62
+ } else {
63
+ setCurrentScene(prev => prev + 1);
64
+ }
65
+ }, currentDuration);
66
+
67
+ return () => clearTimeout(timer);
68
+ }, [currentScene, totalScenes, durationsArray, hasEnded, loop, onVideoEnd]);
69
+
70
+ return {
71
+ currentScene,
72
+ totalScenes,
73
+ currentSceneKey: sceneKeys[currentScene],
74
+ hasEnded,
75
+ };
76
+ }
77
+
78
+ export function useSceneTimer(events: Array<{ time: number; callback: () => void }>) {
79
+ const firedRef = useRef<Set<number>>(new Set());
80
+ const callbacksRef = useRef<Array<() => void>>([]);
81
+
82
+ useEffect(() => {
83
+ callbacksRef.current = events.map(e => e.callback);
84
+ }, [events]);
85
+
86
+ const scheduleKey = events.map((event, i) => `${i}:${event.time}`).join('|');
87
+
88
+ useEffect(() => {
89
+ firedRef.current = new Set();
90
+
91
+ const timers = events.map(({ time }, index) => {
92
+ return setTimeout(() => {
93
+ if (!firedRef.current.has(index)) {
94
+ firedRef.current.add(index);
95
+ callbacksRef.current[index]?.();
96
+ }
97
+ }, time);
98
+ });
99
+
100
+ return () => {
101
+ timers.forEach(timer => clearTimeout(timer));
102
+ };
103
+ }, [scheduleKey]);
104
+ }
@@ -0,0 +1,19 @@
1
+ // Video template library - hook and animation presets
2
+
3
+ export { useVideoPlayer, useSceneTimer } from './hooks';
4
+ export type { SceneDurations, UseVideoPlayerOptions, UseVideoPlayerReturn } from './hooks';
5
+
6
+ export {
7
+ springs,
8
+ easings,
9
+ sceneTransitions,
10
+ elementAnimations,
11
+ charVariants,
12
+ charContainerVariants,
13
+ staggerConfigs,
14
+ containerVariants,
15
+ itemVariants,
16
+ staggerDelay,
17
+ customSpring,
18
+ withDelay,
19
+ } from './animations';
@@ -0,0 +1,5 @@
1
+ import { createRoot } from "react-dom/client";
2
+ import App from "./App";
3
+ import "./index.css";
4
+
5
+ createRoot(document.getElementById("root")!).render(<App />);
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "include": ["src/**/*"],
4
+ "exclude": ["node_modules", "build", "dist", "**/*.test.ts"],
5
+ "compilerOptions": {
6
+ "noEmit": true,
7
+ "jsx": "preserve",
8
+ "resolveJsonModule": true,
9
+ "allowImportingTsExtensions": true,
10
+ "moduleResolution": "bundler",
11
+ "types": ["node", "vite/client"],
12
+ "paths": {
13
+ "@/*": ["./src/*"]
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,79 @@
1
+ import { defineConfig } from "vite";
2
+ import react from "@vitejs/plugin-react";
3
+ import tailwindcss from "@tailwindcss/vite";
4
+ import path from "path";
5
+ import runtimeErrorOverlay from "@replit/vite-plugin-runtime-error-modal";
6
+
7
+ const rawPort = process.env.PORT;
8
+
9
+ if (!rawPort) {
10
+ throw new Error(
11
+ "PORT environment variable is required but was not provided.",
12
+ );
13
+ }
14
+
15
+ const port = Number(rawPort);
16
+
17
+ if (Number.isNaN(port) || port <= 0) {
18
+ throw new Error(`Invalid PORT value: "${rawPort}"`);
19
+ }
20
+
21
+ const basePath = process.env.BASE_PATH;
22
+
23
+ if (!basePath) {
24
+ throw new Error(
25
+ "BASE_PATH environment variable is required but was not provided.",
26
+ );
27
+ }
28
+
29
+ export default defineConfig({
30
+ base: basePath,
31
+ plugins: [
32
+ react(),
33
+ runtimeErrorOverlay(),
34
+ tailwindcss(),
35
+ ...(process.env.NODE_ENV !== "production" &&
36
+ process.env.REPL_ID !== undefined
37
+ ? [
38
+ await import("@replit/vite-plugin-cartographer").then((m) =>
39
+ m.cartographer({
40
+ root: path.resolve(import.meta.dirname, ".."),
41
+ }),
42
+ ),
43
+ await import("@replit/vite-plugin-dev-banner").then((m) =>
44
+ m.devBanner(),
45
+ ),
46
+ ]
47
+ : []),
48
+ ],
49
+ resolve: {
50
+ alias: {
51
+ "@": path.resolve(import.meta.dirname, "src"),
52
+ "@assets": path.resolve(import.meta.dirname, "..", "..", "attached_assets"),
53
+ },
54
+ },
55
+ css: {
56
+ postcss: {
57
+ plugins: [],
58
+ },
59
+ },
60
+ root: path.resolve(import.meta.dirname),
61
+ build: {
62
+ outDir: path.resolve(import.meta.dirname, "dist/public"),
63
+ emptyOutDir: true,
64
+ },
65
+ server: {
66
+ port,
67
+ strictPort: true,
68
+ host: "0.0.0.0",
69
+ allowedHosts: true,
70
+ fs: {
71
+ strict: true,
72
+ },
73
+ },
74
+ preview: {
75
+ port,
76
+ host: "0.0.0.0",
77
+ allowedHosts: true,
78
+ },
79
+ });
@@ -0,0 +1,115 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { parseArgs as parseNodeArgs } from 'node:util';
4
+
5
+ const TEMPLATE_SUFFIX = '.template';
6
+ const HTML_FILE_EXTENSIONS = new Set(['.html', '.htm']);
7
+ const TOKEN_VALUES = {
8
+ __REPLIT_ARTIFACT_SLUG__: (slug) => slug,
9
+ __REPLIT_ARTIFACT_TITLE__: (_, title) => title,
10
+ __REPLIT_ARTIFACT_PACKAGE_NAME__: (slug) => slug,
11
+ };
12
+
13
+ function escapeHtml(value) {
14
+ return value
15
+ .replaceAll('&', '&amp;')
16
+ .replaceAll('<', '&lt;')
17
+ .replaceAll('>', '&gt;')
18
+ .replaceAll('"', '&quot;')
19
+ .replaceAll("'", '&#39;');
20
+ }
21
+
22
+ function parseArgs(argv) {
23
+ const { values, positionals } = parseNodeArgs({
24
+ args: argv.slice(2),
25
+ allowPositionals: true,
26
+ options: {
27
+ slug: { type: 'string' },
28
+ title: { type: 'string' },
29
+ },
30
+ });
31
+ const [artifactType] = positionals;
32
+ const slug = values.slug;
33
+ const title = values.title;
34
+
35
+ if (!artifactType || !slug || !title) {
36
+ console.error(
37
+ 'Usage: node bootstrap-legacy.js <artifactType> --slug=<slug> --title=<title>',
38
+ );
39
+ process.exit(1);
40
+ }
41
+
42
+ return { artifactType, slug, title };
43
+ }
44
+
45
+ function interpolate(content, slug, title, { isHtml }) {
46
+ let rendered = content;
47
+ for (const [token, resolver] of Object.entries(TOKEN_VALUES)) {
48
+ const value = resolver(slug, title);
49
+ const replacement = isHtml ? escapeHtml(value) : value;
50
+ rendered = rendered.replaceAll(token, replacement);
51
+ }
52
+ return rendered;
53
+ }
54
+
55
+ function copyDir(src, dest, slug, title) {
56
+ fs.mkdirSync(dest, { recursive: true });
57
+
58
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
59
+ const srcPath = path.join(src, entry.name);
60
+ let destName = entry.name;
61
+
62
+ if (entry.isDirectory()) {
63
+ copyDir(srcPath, path.join(dest, destName), slug, title);
64
+ continue;
65
+ }
66
+
67
+ const isTemplate = destName.endsWith(TEMPLATE_SUFFIX);
68
+ if (isTemplate) {
69
+ destName = destName.slice(0, -TEMPLATE_SUFFIX.length);
70
+ }
71
+
72
+ const destPath = path.join(dest, destName);
73
+
74
+ if (isTemplate) {
75
+ const raw = fs.readFileSync(srcPath, 'utf8');
76
+ const isHtml = HTML_FILE_EXTENSIONS.has(path.extname(destName).toLowerCase());
77
+ fs.writeFileSync(destPath, interpolate(raw, slug, title, { isHtml }));
78
+ continue;
79
+ }
80
+
81
+ fs.copyFileSync(srcPath, destPath);
82
+ }
83
+ }
84
+
85
+ function main() {
86
+ const { artifactType, slug, title } = parseArgs(process.argv);
87
+ const workspaceRoot = process.cwd();
88
+
89
+ let artifactFilesDir = artifactType;
90
+ if (artifactType === 'data-visualization') {
91
+ artifactFilesDir = 'react-vite';
92
+ }
93
+
94
+ const filesDir = path.join(import.meta.dirname, 'artifacts', artifactFilesDir, 'files');
95
+ const destDir = path.join(workspaceRoot, 'artifacts', slug);
96
+
97
+ if (!fs.existsSync(filesDir)) {
98
+ console.error(`Error: missing template directory for ${artifactFilesDir}`);
99
+ process.exit(1);
100
+ }
101
+
102
+ if (fs.existsSync(destDir)) {
103
+ console.error(`Error: artifacts/${slug}/ already exists`);
104
+ process.exit(1);
105
+ }
106
+
107
+ console.log(`Bootstrapping ${artifactType} artifact: ${slug}`);
108
+
109
+ copyDir(filesDir, destDir, slug, title);
110
+ console.log(` Copied files to artifacts/${slug}/`);
111
+
112
+ console.log('Done.');
113
+ }
114
+
115
+ main();
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { parseArgs: parseNodeArgs } = require('node:util');
6
+
7
+ const TEMPLATE_SUFFIX = '.template';
8
+ const HTML_FILE_EXTENSIONS = new Set(['.html', '.htm']);
9
+ const TOKEN_VALUES = {
10
+ __REPLIT_ARTIFACT_SLUG__: (slug) => slug,
11
+ __REPLIT_ARTIFACT_TITLE__: (_, title) => title,
12
+ __REPLIT_ARTIFACT_PACKAGE_NAME__: (slug) => `@workspace/${slug}`,
13
+ };
14
+
15
+ function escapeHtml(value) {
16
+ return value
17
+ .replaceAll('&', '&amp;')
18
+ .replaceAll('<', '&lt;')
19
+ .replaceAll('>', '&gt;')
20
+ .replaceAll('"', '&quot;')
21
+ .replaceAll("'", '&#39;');
22
+ }
23
+
24
+ function parseArgs(argv) {
25
+ const { values, positionals } = parseNodeArgs({
26
+ args: argv.slice(2),
27
+ allowPositionals: true,
28
+ options: {
29
+ slug: { type: 'string' },
30
+ title: { type: 'string' },
31
+ },
32
+ });
33
+ const [artifactType] = positionals;
34
+ const slug = values.slug;
35
+ const title = values.title;
36
+
37
+ if (!artifactType || !slug || !title) {
38
+ console.error(
39
+ 'Usage: node bootstrap.js <artifactType> --slug=<slug> --title=<title>',
40
+ );
41
+ process.exit(1);
42
+ }
43
+
44
+ return { artifactType, slug, title };
45
+ }
46
+
47
+ function interpolate(content, slug, title, { isHtml }) {
48
+ let rendered = content;
49
+ for (const [token, resolver] of Object.entries(TOKEN_VALUES)) {
50
+ const value = resolver(slug, title);
51
+ const replacement = isHtml ? escapeHtml(value) : value;
52
+ rendered = rendered.replaceAll(token, replacement);
53
+ }
54
+ return rendered;
55
+ }
56
+
57
+ function copyDir(src, dest, slug, title) {
58
+ fs.mkdirSync(dest, { recursive: true });
59
+
60
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
61
+ const srcPath = path.join(src, entry.name);
62
+ let destName = entry.name;
63
+
64
+ if (entry.isDirectory()) {
65
+ copyDir(srcPath, path.join(dest, destName), slug, title);
66
+ continue;
67
+ }
68
+
69
+ const isTemplate = destName.endsWith(TEMPLATE_SUFFIX);
70
+ if (isTemplate) {
71
+ destName = destName.slice(0, -TEMPLATE_SUFFIX.length);
72
+ }
73
+
74
+ const destPath = path.join(dest, destName);
75
+
76
+ if (isTemplate) {
77
+ const raw = fs.readFileSync(srcPath, 'utf8');
78
+ const isHtml = HTML_FILE_EXTENSIONS.has(path.extname(destName).toLowerCase());
79
+ fs.writeFileSync(destPath, interpolate(raw, slug, title, { isHtml }));
80
+ continue;
81
+ }
82
+
83
+ fs.copyFileSync(srcPath, destPath);
84
+ }
85
+ }
86
+
87
+ function main() {
88
+ const { artifactType, slug, title } = parseArgs(process.argv);
89
+ const workspaceRoot = process.cwd();
90
+
91
+
92
+ let artifactFilesDir = artifactType;
93
+ if (artifactType === 'data-visualization') {
94
+ artifactFilesDir = 'react-vite';
95
+ }
96
+
97
+ const filesDir = path.join(__dirname, 'artifacts', artifactFilesDir, 'files');
98
+ const destDir = path.join(workspaceRoot, 'artifacts', slug);
99
+
100
+ if (!fs.existsSync(filesDir)) {
101
+ console.error(`Error: missing template directory for ${artifactFilesDir}`);
102
+ process.exit(1);
103
+ }
104
+
105
+ if (fs.existsSync(destDir)) {
106
+ console.error(`Error: artifacts/${slug}/ already exists`);
107
+ process.exit(1);
108
+ }
109
+
110
+ console.log(`Bootstrapping ${artifactType} artifact: ${slug}`);
111
+
112
+ copyDir(filesDir, destDir, slug, title);
113
+ console.log(` Copied files to artifacts/${slug}/`);
114
+
115
+ console.log('Done.');
116
+ }
117
+
118
+ main();