@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.
- package/.cache/replit/env/latest +78 -0
- package/.cache/replit/env/latest.json +1 -0
- package/.cache/replit/modules/nodejs-20.res +1 -0
- package/.cache/replit/modules/python-3.11.res +1 -0
- package/.cache/replit/modules/replit-rtld-loader.res +1 -0
- package/.cache/replit/modules/replit.res +1 -0
- package/.cache/replit/modules.stamp +0 -0
- package/.cache/replit/nix/dotreplitenv.json +1 -0
- package/.cache/replit/toolchain.json +1 -0
- package/.cache/typescript/5.9/package-lock.json +50 -0
- package/.cache/typescript/5.9/package.json +1 -0
- package/.config/nextjs-nodejs/config.json +7 -0
- package/.eslintrc.json +3 -0
- package/.local/.commit_message +31 -0
- package/.local/secondary_skills/LICENSE.txt +21 -0
- package/.local/secondary_skills/ad-creative/.fingerprint +1 -0
- package/.local/secondary_skills/ad-creative/SKILL.md +872 -0
- package/.local/secondary_skills/ai-recruiter/.fingerprint +1 -0
- package/.local/secondary_skills/ai-recruiter/SKILL.md +1087 -0
- package/.local/secondary_skills/ai-sdr/.fingerprint +1 -0
- package/.local/secondary_skills/ai-sdr/SKILL.md +204 -0
- package/.local/secondary_skills/ai-secretary/.fingerprint +1 -0
- package/.local/secondary_skills/ai-secretary/SKILL.md +1132 -0
- package/.local/secondary_skills/branding-generator/.fingerprint +1 -0
- package/.local/secondary_skills/branding-generator/SKILL.md +286 -0
- package/.local/secondary_skills/competitive-analysis/.fingerprint +1 -0
- package/.local/secondary_skills/competitive-analysis/SKILL.md +429 -0
- package/.local/secondary_skills/content-machine/.fingerprint +1 -0
- package/.local/secondary_skills/content-machine/SKILL.md +321 -0
- package/.local/secondary_skills/deep-research/.fingerprint +1 -0
- package/.local/secondary_skills/deep-research/SKILL.md +517 -0
- package/.local/secondary_skills/design-thinker/.fingerprint +1 -0
- package/.local/secondary_skills/design-thinker/SKILL.md +327 -0
- package/.local/secondary_skills/excel-generator/.fingerprint +1 -0
- package/.local/secondary_skills/excel-generator/SKILL.md +954 -0
- package/.local/secondary_skills/excel-generator/financial-models.md +289 -0
- package/.local/secondary_skills/file-converter/.fingerprint +1 -0
- package/.local/secondary_skills/file-converter/SKILL.md +823 -0
- package/.local/secondary_skills/flashcard-generator/.fingerprint +1 -0
- package/.local/secondary_skills/flashcard-generator/SKILL.md +233 -0
- package/.local/secondary_skills/geo/.fingerprint +1 -0
- package/.local/secondary_skills/geo/SKILL.md +378 -0
- package/.local/secondary_skills/geo/references/content-patterns.md +158 -0
- package/.local/secondary_skills/geo/references/platform-notes.md +128 -0
- package/.local/secondary_skills/geo/references/scorecard.md +113 -0
- package/.local/secondary_skills/geo/references/technical-checklist.md +257 -0
- package/.local/secondary_skills/github-solution-finder/.fingerprint +1 -0
- package/.local/secondary_skills/github-solution-finder/SKILL.md +174 -0
- package/.local/secondary_skills/infographic-builder/.fingerprint +1 -0
- package/.local/secondary_skills/infographic-builder/SKILL.md +317 -0
- package/.local/secondary_skills/infographic-builder/antv-syntax.md +470 -0
- package/.local/secondary_skills/infographic-builder/react-fallback.md +210 -0
- package/.local/secondary_skills/insurance-optimizer/.fingerprint +1 -0
- package/.local/secondary_skills/insurance-optimizer/SKILL.md +209 -0
- package/.local/secondary_skills/interview-prep/.fingerprint +1 -0
- package/.local/secondary_skills/interview-prep/SKILL.md +349 -0
- package/.local/secondary_skills/invoice-generator/.fingerprint +1 -0
- package/.local/secondary_skills/invoice-generator/SKILL.md +527 -0
- package/.local/secondary_skills/legal-contract/.fingerprint +1 -0
- package/.local/secondary_skills/legal-contract/SKILL.md +977 -0
- package/.local/secondary_skills/meal-planner/.fingerprint +1 -0
- package/.local/secondary_skills/meal-planner/SKILL.md +517 -0
- package/.local/secondary_skills/personal-shopper/.fingerprint +1 -0
- package/.local/secondary_skills/personal-shopper/SKILL.md +361 -0
- package/.local/secondary_skills/photo-editor/.fingerprint +1 -0
- package/.local/secondary_skills/photo-editor/SKILL.md +605 -0
- package/.local/secondary_skills/podcast-generator/.fingerprint +1 -0
- package/.local/secondary_skills/podcast-generator/SKILL.md +560 -0
- package/.local/secondary_skills/podcast-marketing/.fingerprint +1 -0
- package/.local/secondary_skills/podcast-marketing/SKILL.md +550 -0
- package/.local/secondary_skills/podcast-marketing/audio-processing.md +530 -0
- package/.local/secondary_skills/podcast-marketing/content-atoms.md +253 -0
- package/.local/secondary_skills/podcast-marketing/content-calendar.md +318 -0
- package/.local/secondary_skills/podcast-marketing/content-templates.md +325 -0
- package/.local/secondary_skills/podcast-marketing/quote-cards.md +238 -0
- package/.local/secondary_skills/podcast-marketing/rss-and-batch.md +359 -0
- package/.local/secondary_skills/podcast-marketing/video-clips.md +660 -0
- package/.local/secondary_skills/podcast-marketing/youtube-processing.md +328 -0
- package/.local/secondary_skills/product-manager/.fingerprint +1 -0
- package/.local/secondary_skills/product-manager/SKILL.md +272 -0
- package/.local/secondary_skills/programmatic-seo/.fingerprint +1 -0
- package/.local/secondary_skills/programmatic-seo/SKILL.md +1207 -0
- package/.local/secondary_skills/real-estate-analyzer/.fingerprint +1 -0
- package/.local/secondary_skills/real-estate-analyzer/SKILL.md +786 -0
- package/.local/secondary_skills/recipe-creator/.fingerprint +1 -0
- package/.local/secondary_skills/recipe-creator/SKILL.md +259 -0
- package/.local/secondary_skills/recreate-screenshot/.fingerprint +1 -0
- package/.local/secondary_skills/recreate-screenshot/SKILL.md +215 -0
- package/.local/secondary_skills/replit-migration-guardrails/.fingerprint +1 -0
- package/.local/secondary_skills/replit-migration-guardrails/SKILL.md +55 -0
- package/.local/secondary_skills/replit-migration-guardrails/references/base44.md +47 -0
- package/.local/secondary_skills/replit-migration-guardrails/references/vercel.md +78 -0
- package/.local/secondary_skills/resume-maker/.fingerprint +1 -0
- package/.local/secondary_skills/resume-maker/SKILL.md +790 -0
- package/.local/secondary_skills/seo-auditor/.fingerprint +1 -0
- package/.local/secondary_skills/seo-auditor/SKILL.md +448 -0
- package/.local/secondary_skills/skill-creator/.fingerprint +1 -0
- package/.local/secondary_skills/skill-creator/SKILL.md +214 -0
- package/.local/secondary_skills/skill-finder/.fingerprint +1 -0
- package/.local/secondary_skills/skill-finder/SKILL.md +299 -0
- package/.local/secondary_skills/stock-analyzer/.fingerprint +1 -0
- package/.local/secondary_skills/stock-analyzer/SKILL.md +798 -0
- package/.local/secondary_skills/storyboard/.fingerprint +1 -0
- package/.local/secondary_skills/storyboard/SKILL.md +558 -0
- package/.local/secondary_skills/supplier-research/.fingerprint +1 -0
- package/.local/secondary_skills/supplier-research/SKILL.md +213 -0
- package/.local/secondary_skills/tax-reviewer/.fingerprint +1 -0
- package/.local/secondary_skills/tax-reviewer/SKILL.md +131 -0
- package/.local/secondary_skills/travel-assistant/.fingerprint +1 -0
- package/.local/secondary_skills/travel-assistant/SKILL.md +667 -0
- package/.local/secondary_skills/video-editing/.fingerprint +1 -0
- package/.local/secondary_skills/video-editing/SKILL.md +705 -0
- package/.local/secondary_skills/video-editing/dead-space-and-chunking.md +1081 -0
- package/.local/secondary_skills/video-editing/operations.md +1719 -0
- package/.local/secondary_skills/video-editing/virality-scoring.md +1212 -0
- package/.local/secondary_skills/video-editing/voiceover.md +788 -0
- package/.local/secondary_skills/website-cloning/.fingerprint +1 -0
- package/.local/secondary_skills/website-cloning/SKILL.md +544 -0
- package/.local/secondary_skills/website-cloning/extraction.md +1207 -0
- package/.local/secondary_skills/website-cloning/pitfalls.md +297 -0
- package/.local/skills/LICENSE.txt +21 -0
- package/.local/skills/agent-inbox/.fingerprint +1 -0
- package/.local/skills/agent-inbox/SKILL.md +128 -0
- package/.local/skills/artifacts/.fingerprint +1 -0
- package/.local/skills/artifacts/SKILL.md +21 -0
- package/.local/skills/artifacts/artifacts/automation/artifact.yaml +40 -0
- package/.local/skills/artifacts/artifacts/automation/files/package.json.template +47 -0
- package/.local/skills/artifacts/artifacts/automation/files/scripts/build.sh +6 -0
- package/.local/skills/artifacts/artifacts/automation/files/scripts/inngest.sh +18 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/global.d.ts +1 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/mastra/agents/agent.ts +89 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/mastra/index.ts +212 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/mastra/inngest/client.ts +17 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/mastra/inngest/index.ts +214 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/mastra/storage/index.ts +8 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/mastra/tools/exampleTool.ts +71 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/mastra/workflows/workflow.ts +203 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/triggers/cronTriggers.ts +61 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/triggers/exampleConnectorTrigger.ts +153 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/triggers/slackTriggers.ts +638 -0
- package/.local/skills/artifacts/artifacts/automation/files/src/triggers/telegramTriggers.ts +94 -0
- package/.local/skills/artifacts/artifacts/automation/files/tests/testCronAutomation.ts +86 -0
- package/.local/skills/artifacts/artifacts/automation/files/tests/testWebhookAutomation.ts +118 -0
- package/.local/skills/artifacts/artifacts/automation/files/tsconfig.json +26 -0
- package/.local/skills/artifacts/artifacts/data-visualization/artifact.yaml +48 -0
- package/.local/skills/artifacts/artifacts/expo/OWNERS +2 -0
- package/.local/skills/artifacts/artifacts/expo/artifact.yaml +47 -0
- package/.local/skills/artifacts/artifacts/expo/files/app/(tabs)/_layout.tsx +86 -0
- package/.local/skills/artifacts/artifacts/expo/files/app/(tabs)/index.tsx +28 -0
- package/.local/skills/artifacts/artifacts/expo/files/app/+not-found.tsx +45 -0
- package/.local/skills/artifacts/artifacts/expo/files/app/_layout.tsx +60 -0
- package/.local/skills/artifacts/artifacts/expo/files/app.json.template +38 -0
- package/.local/skills/artifacts/artifacts/expo/files/assets/images/icon.png +0 -0
- package/.local/skills/artifacts/artifacts/expo/files/babel.config.js +6 -0
- package/.local/skills/artifacts/artifacts/expo/files/components/ErrorBoundary.tsx +54 -0
- package/.local/skills/artifacts/artifacts/expo/files/components/ErrorFallback.tsx +278 -0
- package/.local/skills/artifacts/artifacts/expo/files/components/KeyboardAwareScrollViewCompat.tsx +29 -0
- package/.local/skills/artifacts/artifacts/expo/files/constants/colors.ts +59 -0
- package/.local/skills/artifacts/artifacts/expo/files/hooks/useColors.ts +24 -0
- package/.local/skills/artifacts/artifacts/expo/files/metro.config.js +3 -0
- package/.local/skills/artifacts/artifacts/expo/files/package.json.template +58 -0
- package/.local/skills/artifacts/artifacts/expo/files/scripts/build.js +573 -0
- package/.local/skills/artifacts/artifacts/expo/files/server/serve.js +135 -0
- package/.local/skills/artifacts/artifacts/expo/files/server/templates/landing-page.html +460 -0
- package/.local/skills/artifacts/artifacts/expo/files/tsconfig.json +23 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/artifact.yaml +15 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/components.json +21 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/index.html +31 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/mockupPreviewPlugin.ts +199 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/package.json.template +75 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/public/favicon.svg +3 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/.generated/mockup-components.ts +3 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/App.tsx +146 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/accordion.tsx +55 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/alert-dialog.tsx +139 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/alert.tsx +59 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/aspect-ratio.tsx +5 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/avatar.tsx +50 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/badge.tsx +43 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/breadcrumb.tsx +115 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/button-group.tsx +83 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/button.tsx +65 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/calendar.tsx +213 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/card.tsx +76 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/carousel.tsx +260 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/chart.tsx +367 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/checkbox.tsx +28 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/collapsible.tsx +11 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/command.tsx +153 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/context-menu.tsx +198 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/dialog.tsx +120 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/drawer.tsx +116 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/dropdown-menu.tsx +201 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/empty.tsx +104 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/field.tsx +244 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/form.tsx +176 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/hover-card.tsx +27 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/input-group.tsx +168 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/input-otp.tsx +69 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/input.tsx +22 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/item.tsx +193 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/kbd.tsx +28 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/label.tsx +26 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/menubar.tsx +254 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/navigation-menu.tsx +128 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/pagination.tsx +117 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/popover.tsx +31 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/progress.tsx +28 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/radio-group.tsx +42 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/resizable.tsx +45 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/scroll-area.tsx +46 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/select.tsx +159 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/separator.tsx +29 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/sheet.tsx +140 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/sidebar.tsx +727 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/skeleton.tsx +15 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/slider.tsx +26 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/sonner.tsx +31 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/spinner.tsx +16 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/switch.tsx +27 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/table.tsx +120 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/tabs.tsx +53 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/textarea.tsx +22 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/toast.tsx +127 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/toaster.tsx +33 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/toggle-group.tsx +61 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/toggle.tsx +43 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/components/ui/tooltip.tsx +32 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/hooks/use-mobile.tsx +19 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/hooks/use-toast.ts +189 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/index.css +158 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/lib/utils.ts +6 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/src/main.tsx +5 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/tsconfig.json +20 -0
- package/.local/skills/artifacts/artifacts/mockup-sandbox/files/vite.config.ts +72 -0
- package/.local/skills/artifacts/artifacts/react-vite/artifact.yaml +41 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/components.json +20 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/index.html.template +24 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/package.json.template +77 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/public/favicon.svg +3 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/public/robots.txt +2 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/App.tsx +42 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/accordion.tsx +55 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/alert-dialog.tsx +139 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/alert.tsx +59 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/aspect-ratio.tsx +5 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/avatar.tsx +50 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/badge.tsx +43 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/breadcrumb.tsx +115 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/button-group.tsx +83 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/button.tsx +65 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/calendar.tsx +213 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/card.tsx +76 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/carousel.tsx +260 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/chart.tsx +367 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/checkbox.tsx +28 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/collapsible.tsx +11 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/command.tsx +153 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/context-menu.tsx +198 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/dialog.tsx +120 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/drawer.tsx +116 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/dropdown-menu.tsx +201 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/empty.tsx +104 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/field.tsx +244 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/form.tsx +176 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/hover-card.tsx +27 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/input-group.tsx +168 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/input-otp.tsx +69 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/input.tsx +22 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/item.tsx +193 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/kbd.tsx +28 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/label.tsx +26 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/menubar.tsx +254 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/navigation-menu.tsx +128 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/pagination.tsx +117 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/popover.tsx +31 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/progress.tsx +28 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/radio-group.tsx +42 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/resizable.tsx +45 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/scroll-area.tsx +46 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/select.tsx +159 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/separator.tsx +29 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/sheet.tsx +140 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/sidebar.tsx +727 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/skeleton.tsx +15 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/slider.tsx +26 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/sonner.tsx +31 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/spinner.tsx +16 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/switch.tsx +27 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/table.tsx +120 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/tabs.tsx +53 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/textarea.tsx +22 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/toast.tsx +127 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/toaster.tsx +33 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/toggle-group.tsx +61 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/toggle.tsx +43 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/components/ui/tooltip.tsx +32 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/hooks/use-mobile.tsx +19 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/hooks/use-toast.ts +191 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/index.css +393 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/lib/utils.ts +6 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/main.tsx +5 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/src/pages/not-found.tsx +21 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/tsconfig.json +22 -0
- package/.local/skills/artifacts/artifacts/react-vite/files/vite.config.ts +75 -0
- package/.local/skills/artifacts/artifacts/slides/artifact.yaml +33 -0
- package/.local/skills/artifacts/artifacts/slides/files/index.html.template +46 -0
- package/.local/skills/artifacts/artifacts/slides/files/package.json.template +30 -0
- package/.local/skills/artifacts/artifacts/slides/files/public/favicon.svg +3 -0
- package/.local/skills/artifacts/artifacts/slides/files/scripts/validate-slides.ts +193 -0
- package/.local/skills/artifacts/artifacts/slides/files/src/App.tsx +251 -0
- package/.local/skills/artifacts/artifacts/slides/files/src/data/slides-manifest.json +1 -0
- package/.local/skills/artifacts/artifacts/slides/files/src/data/slidesManifestSchema.ts +33 -0
- package/.local/skills/artifacts/artifacts/slides/files/src/index.css +48 -0
- package/.local/skills/artifacts/artifacts/slides/files/src/main.tsx +14 -0
- package/.local/skills/artifacts/artifacts/slides/files/src/slideLoader.ts +51 -0
- package/.local/skills/artifacts/artifacts/slides/files/tsconfig.json +17 -0
- package/.local/skills/artifacts/artifacts/slides/files/vite.config.ts +74 -0
- package/.local/skills/artifacts/artifacts/video-js/artifact.yaml +38 -0
- package/.local/skills/artifacts/artifacts/video-js/files/index.html.template +27 -0
- package/.local/skills/artifacts/artifacts/video-js/files/package.json.template +36 -0
- package/.local/skills/artifacts/artifacts/video-js/files/public/favicon.svg +3 -0
- package/.local/skills/artifacts/artifacts/video-js/files/scripts/validate-recording.sh +38 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/App.tsx +5 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/components/video/ReplitLoadingScene.tsx +105 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/components/video/VideoTemplate.tsx +30 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/components/video/index.ts +1 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/hooks/use-mobile.tsx +19 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/index.css +50 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/lib/utils.ts +6 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/lib/video/animations.ts +239 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/lib/video/hooks.ts +104 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/lib/video/index.ts +19 -0
- package/.local/skills/artifacts/artifacts/video-js/files/src/main.tsx +5 -0
- package/.local/skills/artifacts/artifacts/video-js/files/tsconfig.json +16 -0
- package/.local/skills/artifacts/artifacts/video-js/files/vite.config.ts +79 -0
- package/.local/skills/artifacts/bootstrap-legacy.js +115 -0
- package/.local/skills/artifacts/bootstrap.js +118 -0
- package/.local/skills/artifacts/references/multi-artifact-creation.md +94 -0
- package/.local/skills/canvas/.fingerprint +1 -0
- package/.local/skills/canvas/SKILL.md +534 -0
- package/.local/skills/canvas/__init__.py +1 -0
- package/.local/skills/code_review/.fingerprint +1 -0
- package/.local/skills/code_review/SKILL.md +82 -0
- package/.local/skills/database/.fingerprint +1 -0
- package/.local/skills/database/SKILL.md +351 -0
- package/.local/skills/database/references/database-migrations-on-publish.md +57 -0
- package/.local/skills/delegation/.fingerprint +1 -0
- package/.local/skills/delegation/SKILL.md +200 -0
- package/.local/skills/deployment/.fingerprint +1 -0
- package/.local/skills/deployment/SKILL.md +261 -0
- package/.local/skills/deployment/references/deployment-failure-debugging.md +243 -0
- package/.local/skills/deployment/references/deployment-logs.md +147 -0
- package/.local/skills/design/.fingerprint +1 -0
- package/.local/skills/design/SKILL.md +235 -0
- package/.local/skills/design-exploration/.fingerprint +1 -0
- package/.local/skills/design-exploration/SKILL.md +95 -0
- package/.local/skills/diagnostics/.fingerprint +1 -0
- package/.local/skills/diagnostics/SKILL.md +122 -0
- package/.local/skills/environment-secrets/.fingerprint +1 -0
- package/.local/skills/environment-secrets/SKILL.md +201 -0
- package/.local/skills/expo/.fingerprint +1 -0
- package/.local/skills/expo/OWNERS +2 -0
- package/.local/skills/expo/SKILL.md +298 -0
- package/.local/skills/expo/references/design_and_aesthetics.md +141 -0
- package/.local/skills/expo/references/device_features_and_permissions.md +48 -0
- package/.local/skills/expo/references/first_build.md +114 -0
- package/.local/skills/expo/references/react_context.md +54 -0
- package/.local/skills/external_apis/.fingerprint +1 -0
- package/.local/skills/external_apis/SKILL.md +25 -0
- package/.local/skills/external_apis/references/brave.md +116 -0
- package/.local/skills/external_apis/references/elevenlabs.md +44 -0
- package/.local/skills/external_apis/references/exa.md +34 -0
- package/.local/skills/external_apis/references/firecrawl.md +37 -0
- package/.local/skills/external_apis/references/nano_banana.md +33 -0
- package/.local/skills/follow-up-tasks/.fingerprint +1 -0
- package/.local/skills/follow-up-tasks/SKILL.md +80 -0
- package/.local/skills/image-search/.fingerprint +1 -0
- package/.local/skills/image-search/SKILL.md +150 -0
- package/.local/skills/integrations/.fingerprint +1 -0
- package/.local/skills/integrations/SKILL.md +205 -0
- package/.local/skills/media-generation/.fingerprint +1 -0
- package/.local/skills/media-generation/SKILL.md +170 -0
- package/.local/skills/media-generation/audio_generation.md +138 -0
- package/.local/skills/media-generation/video_generation.md +82 -0
- package/.local/skills/mockup-extract/.fingerprint +1 -0
- package/.local/skills/mockup-extract/SKILL.md +123 -0
- package/.local/skills/mockup-graduate/.fingerprint +1 -0
- package/.local/skills/mockup-graduate/SKILL.md +97 -0
- package/.local/skills/mockup-sandbox/.fingerprint +1 -0
- package/.local/skills/mockup-sandbox/SKILL.md +750 -0
- package/.local/skills/package-management/.fingerprint +1 -0
- package/.local/skills/package-management/SKILL.md +264 -0
- package/.local/skills/post_merge_setup/.fingerprint +1 -0
- package/.local/skills/post_merge_setup/SKILL.md +102 -0
- package/.local/skills/project_tasks/.fingerprint +1 -0
- package/.local/skills/project_tasks/SKILL.md +361 -0
- package/.local/skills/query-integration-data/.fingerprint +1 -0
- package/.local/skills/query-integration-data/SKILL.md +385 -0
- package/.local/skills/react-vite/.fingerprint +1 -0
- package/.local/skills/react-vite/SKILL.md +110 -0
- package/.local/skills/react-vite/references/frontend_general_rules.md +66 -0
- package/.local/skills/react-vite/references/seo.md +158 -0
- package/.local/skills/remove-image-background/.fingerprint +1 -0
- package/.local/skills/remove-image-background/SKILL.md +55 -0
- package/.local/skills/repl_setup/.fingerprint +1 -0
- package/.local/skills/repl_setup/SKILL.md +90 -0
- package/.local/skills/repl_setup/references/angular.md +103 -0
- package/.local/skills/repl_setup/references/react_vite.md +121 -0
- package/.local/skills/repl_setup/references/vue.md +102 -0
- package/.local/skills/replit-docs/.fingerprint +1 -0
- package/.local/skills/replit-docs/SKILL.md +81 -0
- package/.local/skills/revenuecat/.fingerprint +1 -0
- package/.local/skills/revenuecat/SKILL.md +133 -0
- package/.local/skills/revenuecat/references/initial-setup.md +566 -0
- package/.local/skills/revenuecat/references/replit-revenuecat-sdk-docs.md +279 -0
- package/.local/skills/revenuecat/references/subsequent-management.md +63 -0
- package/.local/skills/security_scan/.fingerprint +1 -0
- package/.local/skills/security_scan/SKILL.md +51 -0
- package/.local/skills/skill-authoring/.fingerprint +1 -0
- package/.local/skills/skill-authoring/SKILL.md +99 -0
- package/.local/skills/slides/.fingerprint +1 -0
- package/.local/skills/slides/SKILL.md +523 -0
- package/.local/skills/slides/references/brand_research.md +86 -0
- package/.local/skills/slides/references/export_failures.md +36 -0
- package/.local/skills/slides/references/exporting.md +49 -0
- package/.local/skills/slides/references/importing.md +40 -0
- package/.local/skills/slides/references/visual_qa.md +121 -0
- package/.local/skills/slides/templates/90s-board-deck.md +285 -0
- package/.local/skills/slides/templates/academic-lecture.md +437 -0
- package/.local/skills/slides/templates/adventure-outdoor.md +845 -0
- package/.local/skills/slides/templates/analytics-dashboard.md +407 -0
- package/.local/skills/slides/templates/annual-report-cover.md +592 -0
- package/.local/skills/slides/templates/apple-minimal.md +570 -0
- package/.local/skills/slides/templates/architecture-studio.md +339 -0
- package/.local/skills/slides/templates/arctic-expedition.md +582 -0
- package/.local/skills/slides/templates/arctic-minimal.md +364 -0
- package/.local/skills/slides/templates/art-deco.md +308 -0
- package/.local/skills/slides/templates/artisan-ceramics.md +659 -0
- package/.local/skills/slides/templates/artisan-food.md +709 -0
- package/.local/skills/slides/templates/artisanal-chalkboard.md +623 -0
- package/.local/skills/slides/templates/astronomy-log.md +562 -0
- package/.local/skills/slides/templates/aurora-expedition.md +754 -0
- package/.local/skills/slides/templates/automotive-electric.md +339 -0
- package/.local/skills/slides/templates/bauhaus-avant-garde.md +443 -0
- package/.local/skills/slides/templates/bioluminescent-sea.md +814 -0
- package/.local/skills/slides/templates/biophilic-urban.md +565 -0
- package/.local/skills/slides/templates/blackboard-chalk.md +517 -0
- package/.local/skills/slides/templates/blueprint.md +478 -0
- package/.local/skills/slides/templates/botanical-index.md +822 -0
- package/.local/skills/slides/templates/botanical-wellness.md +611 -0
- package/.local/skills/slides/templates/brand-book-page.md +466 -0
- package/.local/skills/slides/templates/brutalist-concrete.md +362 -0
- package/.local/skills/slides/templates/brutalist-studio.md +325 -0
- package/.local/skills/slides/templates/brutalist-web-punk.md +591 -0
- package/.local/skills/slides/templates/celestial-observatory.md +453 -0
- package/.local/skills/slides/templates/ceramics-artisan.md +740 -0
- package/.local/skills/slides/templates/cinema-verite.md +415 -0
- package/.local/skills/slides/templates/claymorphism.md +737 -0
- package/.local/skills/slides/templates/collage-zine.md +357 -0
- package/.local/skills/slides/templates/copper-sage.md +325 -0
- package/.local/skills/slides/templates/coral-reef.md +508 -0
- package/.local/skills/slides/templates/corporate-grid.md +331 -0
- package/.local/skills/slides/templates/corporate-memphis-flat.md +938 -0
- package/.local/skills/slides/templates/cosmos-explorer.md +998 -0
- package/.local/skills/slides/templates/cpg-coffee.md +850 -0
- package/.local/skills/slides/templates/craft-coffee-roast.md +693 -0
- package/.local/skills/slides/templates/creative-agency.md +244 -0
- package/.local/skills/slides/templates/creative-director.md +875 -0
- package/.local/skills/slides/templates/culinary-brand.md +698 -0
- package/.local/skills/slides/templates/de-stijl-construct.md +320 -0
- package/.local/skills/slides/templates/desert-dunes-photo.md +483 -0
- package/.local/skills/slides/templates/desert-mirror.md +577 -0
- package/.local/skills/slides/templates/desert-modernism.md +439 -0
- package/.local/skills/slides/templates/developer-api-docs.md +654 -0
- package/.local/skills/slides/templates/editorial-magazine.md +694 -0
- package/.local/skills/slides/templates/engineering-blueprint.md +730 -0
- package/.local/skills/slides/templates/executive-mono.md +363 -0
- package/.local/skills/slides/templates/expedition-peak.md +298 -0
- package/.local/skills/slides/templates/fashion-campaign.md +681 -0
- package/.local/skills/slides/templates/fashion-editorial.md +497 -0
- package/.local/skills/slides/templates/figma-geometric.md +420 -0
- package/.local/skills/slides/templates/film-noir.md +857 -0
- package/.local/skills/slides/templates/fitness-athletics.md +663 -0
- package/.local/skills/slides/templates/flat-vector.md +912 -0
- package/.local/skills/slides/templates/fluid-luxe.md +665 -0
- package/.local/skills/slides/templates/furniture-brand.md +505 -0
- package/.local/skills/slides/templates/gallery-modern.md +436 -0
- package/.local/skills/slides/templates/gaming-esports.md +410 -0
- package/.local/skills/slides/templates/geodesic-future.md +368 -0
- package/.local/skills/slides/templates/glass-artisan.md +666 -0
- package/.local/skills/slides/templates/glassmorphism.md +320 -0
- package/.local/skills/slides/templates/greenhouse-botanical.md +662 -0
- package/.local/skills/slides/templates/healthcare-clarity.md +468 -0
- package/.local/skills/slides/templates/holographic-drop.md +663 -0
- package/.local/skills/slides/templates/hospitality-resort.md +608 -0
- package/.local/skills/slides/templates/hypercar-launch.md +557 -0
- package/.local/skills/slides/templates/infographic-title.md +306 -0
- package/.local/skills/slides/templates/ink-wash.md +244 -0
- package/.local/skills/slides/templates/investor-memo.md +509 -0
- package/.local/skills/slides/templates/isometric-data.md +703 -0
- package/.local/skills/slides/templates/ivory-boardroom.md +439 -0
- package/.local/skills/slides/templates/japanese-minimal.md +308 -0
- package/.local/skills/slides/templates/jazz-blue-note.md +478 -0
- package/.local/skills/slides/templates/kinetic-type.md +206 -0
- package/.local/skills/slides/templates/lagoon-luxury.md +320 -0
- package/.local/skills/slides/templates/lavender-pastoral.md +577 -0
- package/.local/skills/slides/templates/linear-precise.md +460 -0
- package/.local/skills/slides/templates/lineart-sketch.md +930 -0
- package/.local/skills/slides/templates/lost-temple.md +689 -0
- package/.local/skills/slides/templates/luxury-fashion.md +269 -0
- package/.local/skills/slides/templates/luxury-watch.md +678 -0
- package/.local/skills/slides/templates/marble-elegance.md +673 -0
- package/.local/skills/slides/templates/mediterranean-travel.md +811 -0
- package/.local/skills/slides/templates/memphis-design.md +426 -0
- package/.local/skills/slides/templates/midnight-jazz.md +260 -0
- package/.local/skills/slides/templates/minimalist-poster.md +538 -0
- package/.local/skills/slides/templates/molten-craft.md +743 -0
- package/.local/skills/slides/templates/moroccan-tile.md +738 -0
- package/.local/skills/slides/templates/motorsport.md +782 -0
- package/.local/skills/slides/templates/mountain-drift.md +311 -0
- package/.local/skills/slides/templates/music-label.md +641 -0
- package/.local/skills/slides/templates/neo-tokyo.md +637 -0
- package/.local/skills/slides/templates/neobrutalism.md +334 -0
- package/.local/skills/slides/templates/newspaper-broadsheet.md +687 -0
- package/.local/skills/slides/templates/noir-fragrance.md +672 -0
- package/.local/skills/slides/templates/non-profit-impact.md +320 -0
- package/.local/skills/slides/templates/ocean-breeze.md +398 -0
- package/.local/skills/slides/templates/origami-couture.md +636 -0
- package/.local/skills/slides/templates/origami-paper.md +308 -0
- package/.local/skills/slides/templates/pastel-playground.md +1114 -0
- package/.local/skills/slides/templates/perfume-noir.md +646 -0
- package/.local/skills/slides/templates/prairie-storm.md +625 -0
- package/.local/skills/slides/templates/private-equity-dark.md +506 -0
- package/.local/skills/slides/templates/renaissance-florals.md +225 -0
- package/.local/skills/slides/templates/retro-print.md +880 -0
- package/.local/skills/slides/templates/retro-vinyl-sleeve.md +229 -0
- package/.local/skills/slides/templates/riso-zine.md +1094 -0
- package/.local/skills/slides/templates/risograph.md +1151 -0
- package/.local/skills/slides/templates/saas-product-launch.md +972 -0
- package/.local/skills/slides/templates/scandinavian.md +372 -0
- package/.local/skills/slides/templates/skater-culture.md +583 -0
- package/.local/skills/slides/templates/slate-modern.md +469 -0
- package/.local/skills/slides/templates/sneaker-drop.md +1006 -0
- package/.local/skills/slides/templates/social-campaign.md +321 -0
- package/.local/skills/slides/templates/stained-glass.md +574 -0
- package/.local/skills/slides/templates/strategy-one-pager.md +508 -0
- package/.local/skills/slides/templates/street-drop.md +677 -0
- package/.local/skills/slides/templates/street-mural.md +588 -0
- package/.local/skills/slides/templates/studio-noir.md +466 -0
- package/.local/skills/slides/templates/sustainability-esg.md +686 -0
- package/.local/skills/slides/templates/swiss-archive.md +648 -0
- package/.local/skills/slides/templates/swiss-typographic.md +364 -0
- package/.local/skills/slides/templates/tea-ceremony.md +456 -0
- package/.local/skills/slides/templates/tech-earbuds.md +870 -0
- package/.local/skills/slides/templates/terracotta-studio.md +235 -0
- package/.local/skills/slides/templates/thesis-defense.md +390 -0
- package/.local/skills/slides/templates/travel-aerial.md +648 -0
- package/.local/skills/slides/templates/treasury-policy.md +475 -0
- package/.local/skills/slides/templates/tropical-lush.md +332 -0
- package/.local/skills/slides/templates/underwater-dream.md +627 -0
- package/.local/skills/slides/templates/urban-golden.md +342 -0
- package/.local/skills/slides/templates/vintage-apothecary.md +552 -0
- package/.local/skills/slides/templates/vintage-ticket-stub.md +637 -0
- package/.local/skills/slides/templates/vinyl-crate.md +550 -0
- package/.local/skills/slides/templates/vision-editorial.md +612 -0
- package/.local/skills/slides/templates/volcanic-edge.md +347 -0
- package/.local/skills/slides/templates/watercolor-city.md +827 -0
- package/.local/skills/slides/templates/wine-spirits.md +203 -0
- package/.local/skills/slides/templates/wireframe-prototype.md +718 -0
- package/.local/skills/slides/templates/workspace-design.md +782 -0
- package/.local/skills/slides/templates/workspace-modern.md +406 -0
- package/.local/skills/slides/templates/zen-meditation.md +284 -0
- package/.local/skills/slides/templates/zen-void.md +244 -0
- package/.local/skills/stripe/.fingerprint +1 -0
- package/.local/skills/stripe/SKILL.md +455 -0
- package/.local/skills/stripe/references/code-templates.md +588 -0
- package/.local/skills/threat_modeling/.fingerprint +1 -0
- package/.local/skills/threat_modeling/SKILL.md +240 -0
- package/.local/skills/validation/.fingerprint +1 -0
- package/.local/skills/validation/SKILL.md +237 -0
- package/.local/skills/video-js/.fingerprint +1 -0
- package/.local/skills/video-js/SKILL.md +793 -0
- package/.local/skills/video-js/references/audio.md +237 -0
- package/.local/skills/video-js/references/finalize_playback.md +16 -0
- package/.local/skills/video-js/references/first_build.md +87 -0
- package/.local/skills/video-js/references/scene_selectors.md +428 -0
- package/.local/skills/web-search/.fingerprint +1 -0
- package/.local/skills/web-search/SKILL.md +110 -0
- package/.local/skills/whop/.fingerprint +1 -0
- package/.local/skills/whop/SKILL.md +104 -0
- package/.local/skills/whop/references/code-templates.md +66 -0
- package/.local/skills/whop/references/whop-api.mjs +22 -0
- package/.local/skills/whop/references/whop-mcp.mjs +40 -0
- package/.local/skills/whop/references/whopClient.ts +54 -0
- package/.local/skills/workflows/.fingerprint +1 -0
- package/.local/skills/workflows/SKILL.md +245 -0
- package/.local/state/replit/agent/.agent_state_037313043e76b5c652f276153ea014a68570e145.bin +0 -0
- package/.local/state/replit/agent/.agent_state_0f5361c2a53ab324b2a941a797f6494891be084c.bin +0 -0
- package/.local/state/replit/agent/.agent_state_4272443827dc90eac8c5b1963a34ee86da70bb99.bin +0 -0
- package/.local/state/replit/agent/.agent_state_4f14655950cbd611b228b4f0e1f664b66a56af24.bin +0 -0
- package/.local/state/replit/agent/.agent_state_ce28955a30856aa3d095b3568c322c8ec098993f.bin +0 -0
- package/.local/state/replit/agent/.agent_state_ec5347d04ebfbf6cf850fe04e15590d423e96d1d.bin +0 -0
- package/.local/state/replit/agent/.agent_state_f68f8c104d815ccc387290f0fba2c87c818d29f1.bin +0 -0
- package/.local/state/replit/agent/.agent_state_f87c1803a179510408c57c7a380c26f5c2197a30.bin +0 -0
- package/.local/state/replit/agent/.agent_state_main.bin +0 -0
- package/.local/state/replit/agent/.latest.json +1 -0
- package/.local/state/replit/agent/repl_state.bin +0 -0
- package/.local/state/scribe/scribe.db +0 -0
- package/.local/state/scribe/scribe.db-shm +0 -0
- package/.local/state/scribe/scribe.db-wal +0 -0
- package/.local/state/workflow-logs/2tfQP52ibxJTy4lpZ7_JX/start_application.shell.exec.0 +27 -0
- package/.local/state/workflow-logs/6QjtmQThaHrR_QHf4v8HA/validation.external.managed.0 +31 -0
- package/.local/state/workflow-logs/6QjtmQThaHrR_QHf4v8HA/validation.json +1 -0
- package/.local/state/workflow-logs/85n-z_SHy4JSGaUeJIcxy/start_application.shell.exec.0 +18 -0
- package/.local/state/workflow-logs/GIL2Ql5124lrEqGrfRO4k/start_application.shell.exec.0 +222 -0
- package/.local/state/workflow-logs/LiH2MjG_9FwFummNHhDtO/validation.external.managed.0 +45 -0
- package/.local/state/workflow-logs/LiH2MjG_9FwFummNHhDtO/validation.json +1 -0
- package/.local/state/workflow-logs/OKp1t-fEO5U_zQi1SKOQ-/start_application.shell.exec.0 +10 -0
- package/.local/state/workflow-logs/Tpp7d6Hu6CO1NKGo_eAi7/validation.external.managed.0 +43 -0
- package/.local/state/workflow-logs/Tpp7d6Hu6CO1NKGo_eAi7/validation.json +1 -0
- package/.local/state/workflow-logs/UDYycRqPV-N4B7whZP-yX/start_application.shell.exec.0 +252 -0
- package/.local/state/workflow-logs/V8Anmvz-HuvAztflZ8yCo/start_application.shell.exec.0 +87 -0
- package/.local/state/workflow-logs/a5fMnjr9tCwoaFY93pYuN/start_application.shell.exec.0 +2519 -0
- package/.local/state/workflow-logs/ggFzYcdHfIlW0owP2pb0U/start_application.shell.exec.0 +28 -0
- package/.local/state/workflow-logs/hIHNKfUtPX3jZs8qXw_Vt/validation.external.managed.0 +41 -0
- package/.local/state/workflow-logs/hIHNKfUtPX3jZs8qXw_Vt/validation.json +1 -0
- package/.local/state/workflow-logs/nbLvtuGJXB0wPmnruB3BE/start_application.shell.exec.0 +199 -0
- package/.local/state/workflow-logs/uDhN6S0ypUEh0MphXaFGY/start_application.shell.exec.0 +73 -0
- package/.local/state/workflow-logs/xZqU5CdTivcY6KEDEcVmD/start_application.shell.exec.0 +17 -0
- package/.local/tasks/breadcrumb-component.md +89 -0
- package/.local/tasks/calendar-component.md +93 -0
- package/.local/tasks/invoicing-design-system-app.md +39 -0
- package/.local/tasks/task-1.md +42 -0
- package/.local/tasks/task-7.md +92 -0
- package/.local/tasks/task-8.md +96 -0
- package/.replit +34 -0
- package/.upm/store.json +1 -0
- package/README.md +121 -0
- package/app/dashboard/page.tsx +10 -0
- package/app/design-system/page.tsx +802 -0
- package/app/invoices/page.tsx +10 -0
- package/app/layout.tsx +28 -0
- package/app/login/page.tsx +5 -0
- package/app/page.tsx +93 -0
- package/app/signup/page.tsx +5 -0
- package/attached_assets/Colors_1779781016394.png +0 -0
- package/attached_assets/Navy_1779781016404.png +0 -0
- package/attached_assets/Orange_1779781016405.png +0 -0
- package/attached_assets/Screenshot_2026-05-26_at_1.14.29_PM_1779781472515.png +0 -0
- package/attached_assets/Screenshot_2026-05-26_at_11.28.20_AM_1779775171071.png +0 -0
- package/attached_assets/Screenshot_2026-05-26_at_2.04.42_PM_1779784485318.png +0 -0
- package/attached_assets/Typography_1779781016406.png +0 -0
- package/design-system/components/avatar.tsx +46 -0
- package/design-system/components/badge.tsx +34 -0
- package/design-system/components/breadcrumb.tsx +149 -0
- package/design-system/components/button.tsx +57 -0
- package/design-system/components/calendar.tsx +77 -0
- package/design-system/components/card.tsx +62 -0
- package/design-system/components/checkbox.tsx +27 -0
- package/design-system/components/date-picker.tsx +153 -0
- package/design-system/components/dialog.tsx +106 -0
- package/design-system/components/dropdown-menu.tsx +88 -0
- package/design-system/components/form-field.tsx +78 -0
- package/design-system/components/input.tsx +25 -0
- package/design-system/components/label.tsx +25 -0
- package/design-system/components/popover.tsx +30 -0
- package/design-system/components/radio-group.tsx +35 -0
- package/design-system/components/select.tsx +84 -0
- package/design-system/components/separator.tsx +24 -0
- package/design-system/components/switch.tsx +28 -0
- package/design-system/components/table.tsx +80 -0
- package/design-system/components/tabs.tsx +54 -0
- package/design-system/components/textarea.tsx +25 -0
- package/design-system/components/toast.tsx +118 -0
- package/design-system/components/toaster.tsx +38 -0
- package/design-system/components/tooltip.tsx +27 -0
- package/design-system/hooks/index.ts +2 -0
- package/design-system/hooks/use-media-query.ts +27 -0
- package/design-system/hooks/use-toast.ts +91 -0
- package/design-system/index.ts +36 -0
- package/design-system/lib/cn.ts +6 -0
- package/design-system/styles.css +142 -0
- package/design-system/tokens/tokens.css +149 -0
- package/design-system/tokens/tokens.ts +190 -0
- package/next.config.mjs +6 -0
- package/package.json +46 -0
- package/postcss.config.mjs +6 -0
- package/screens/_shared/app-shell.tsx +145 -0
- package/screens/auth/auth-screen.tsx +156 -0
- package/screens/dashboard/dashboard-screen.tsx +207 -0
- package/screens/index.ts +17 -0
- package/screens/invoices/invoices-screen.tsx +317 -0
- package/tailwind.config.ts +110 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7e929b5cbcb7b807bfcc4dacaf2876c2
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: recipe-creator
|
|
3
|
+
description: Create recipes, suggest meals from ingredients, and handle dietary substitutions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Recipe Creator
|
|
7
|
+
|
|
8
|
+
Create recipes, suggest meals from available ingredients, handle dietary restrictions and conversions, explain cooking techniques, recommend dish pairings, and repurpose leftovers. All output is delivered as structured data in a full-stack web application with database persistence.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User wants a recipe for a specific dish ("make me a mushroom risotto")
|
|
13
|
+
- User has ingredients and wants meal ideas ("what can I make with chicken, rice, and tomatoes?")
|
|
14
|
+
|
|
15
|
+
- User needs recipes for dietary restrictions ("I need a gluten-free dinner recipe")
|
|
16
|
+
- User wants to scale a recipe up or down ("scale this to 8 servings")
|
|
17
|
+
|
|
18
|
+
- User wants meal prep or batch cooking plans
|
|
19
|
+
- User wants recipes created for a meal plan (even if the plan was generated by the meal-planner skill)
|
|
20
|
+
|
|
21
|
+
- User asks to "fill in" or "build out" recipes referenced in a meal plan
|
|
22
|
+
- User asks about ingredient substitutions ("I don't have buttermilk, what can I use?", "make this dairy-free")
|
|
23
|
+
|
|
24
|
+
- User asks about cooking techniques ("how do I deglaze a pan?", "what's the right way to sear meat?")
|
|
25
|
+
- User wants to convert an existing recipe ("turn this into a vegan version", "make this keto-friendly")
|
|
26
|
+
|
|
27
|
+
- User asks what pairs well with a dish ("what goes well with risotto?", "what side dish for grilled chicken?")
|
|
28
|
+
- User wants to repurpose leftovers ("I have leftover risotto, what can I do with it?")
|
|
29
|
+
|
|
30
|
+
## When NOT to Use
|
|
31
|
+
|
|
32
|
+
- Fitness-goal-driven meal planning with calorie targets, macro splits, or weekly periodization (use meal-planner skill — but come back here to create the actual recipes)
|
|
33
|
+
- Health data analysis (use personal-health skill)
|
|
34
|
+
|
|
35
|
+
**Overlap with meal-planner:** The meal-planner skill designs *what* to eat and *when*. This skill creates the *recipes themselves* — structured data with ingredients, steps, timers, nutrition, and images. If a meal plan references meals that don't have full recipes yet, use this skill to create them and link via `recipeId`.
|
|
36
|
+
|
|
37
|
+
## Architecture: Full-Stack Recipe Web App
|
|
38
|
+
|
|
39
|
+
All recipes are stored in a **database** and served through an **API**, displayed in a **React web app**. This means:
|
|
40
|
+
|
|
41
|
+
- Recipes persist across conversations — the user's collection grows over time
|
|
42
|
+
- New recipes are added via API calls; the frontend renders them automatically
|
|
43
|
+
|
|
44
|
+
- No hardcoded components per recipe — recipes are structured data, not custom React components
|
|
45
|
+
|
|
46
|
+
### Data Model
|
|
47
|
+
|
|
48
|
+
**recipes table:**
|
|
49
|
+
|
|
50
|
+
- id, title, description, heroImage
|
|
51
|
+
- prepTime, cookTime, totalTime, difficulty
|
|
52
|
+
|
|
53
|
+
- baseServings
|
|
54
|
+
- ingredients (jsonb): array of `{ name, qty, unit, stepIndex[], shared? }`
|
|
55
|
+
|
|
56
|
+
- steps (jsonb): array of `{ title, text, timerSeconds?, timerLabel?, image? }`
|
|
57
|
+
- prepTimeline (jsonb): array of `{ label, start, end, type }`
|
|
58
|
+
|
|
59
|
+
- nutrition (jsonb): `{ calories, protein, carbs, fat }` per serving
|
|
60
|
+
- tags (text[]), allergens (text[])
|
|
61
|
+
|
|
62
|
+
- notes (jsonb): array of `{ label, text }`
|
|
63
|
+
- createdAt
|
|
64
|
+
|
|
65
|
+
**meal_plans table:**
|
|
66
|
+
|
|
67
|
+
- id, title, description
|
|
68
|
+
- days (jsonb): array of `{ label, meals: [{ slot, recipeId?, mealName, mealDescription, time, nutrition }] }`
|
|
69
|
+
|
|
70
|
+
- shoppingList (jsonb): array of `{ item, qty, usedIn[] }`
|
|
71
|
+
- prepTips (jsonb): array of `{ label, text }`
|
|
72
|
+
|
|
73
|
+
- prepTimeline (jsonb): array of `{ label, start, end, type }`
|
|
74
|
+
- createdAt
|
|
75
|
+
|
|
76
|
+
### Frontend Pages
|
|
77
|
+
|
|
78
|
+
1. **Home / Collection** — Grid of recipe cards with hero images, title, cook time, difficulty. Search bar and tag filters.
|
|
79
|
+
1. **Recipe Detail** — Full recipe page with:
|
|
80
|
+
|
|
81
|
+
- Hero image
|
|
82
|
+
- Metadata bar (prep/cook/total time, difficulty, servings adjuster)
|
|
83
|
+
|
|
84
|
+
- Smart-scaling ingredient list with checkboxes
|
|
85
|
+
- Step-by-step instructions with inline images
|
|
86
|
+
|
|
87
|
+
- Prep timeline (visual Gantt-style)
|
|
88
|
+
- Nutrition panel (per serving, updates with serving size)
|
|
89
|
+
|
|
90
|
+
- "Start Cooking Mode" button
|
|
91
|
+
- Notes section (storage, substitutions, allergens)
|
|
92
|
+
|
|
93
|
+
1. **Cooking Mode** — Full-screen step-by-step walkthrough:
|
|
94
|
+
|
|
95
|
+
- One step at a time, large readable text
|
|
96
|
+
- Built-in countdown timers
|
|
97
|
+
|
|
98
|
+
- Step images inline
|
|
99
|
+
- Prev/Next navigation
|
|
100
|
+
|
|
101
|
+
- Wake lock to prevent screen dimming
|
|
102
|
+
|
|
103
|
+
1. **Meal Plan** — Visual meal plan with:
|
|
104
|
+
|
|
105
|
+
- Day-by-day layout with meal slots
|
|
106
|
+
- Links to individual recipes
|
|
107
|
+
|
|
108
|
+
- Weekend prep session timeline
|
|
109
|
+
- Combined shopping list with checkable items and cross-references
|
|
110
|
+
|
|
111
|
+
- Nutrition totals
|
|
112
|
+
|
|
113
|
+
1. **Dashboard summary** — Recipe count, total cook time saved, most-used ingredients, etc.
|
|
114
|
+
|
|
115
|
+
### API Endpoints
|
|
116
|
+
|
|
117
|
+
- `GET /api/recipes` — List all recipes (supports `?search=` and `?tags=`)
|
|
118
|
+
- `GET /api/recipes/:id` — Get single recipe
|
|
119
|
+
|
|
120
|
+
- `POST /api/recipes` — Create recipe
|
|
121
|
+
- `PUT /api/recipes/:id` — Update recipe
|
|
122
|
+
|
|
123
|
+
- `DELETE /api/recipes/:id` — Delete recipe
|
|
124
|
+
- `GET /api/recipes/dashboard` — Summary stats
|
|
125
|
+
|
|
126
|
+
- `GET /api/meal-plans` — List meal plans
|
|
127
|
+
- `GET /api/meal-plans/:id` — Get single meal plan
|
|
128
|
+
|
|
129
|
+
- `POST /api/meal-plans` — Create meal plan
|
|
130
|
+
- `DELETE /api/meal-plans/:id` — Delete meal plan
|
|
131
|
+
|
|
132
|
+
### Build Workflow
|
|
133
|
+
|
|
134
|
+
1. Write the OpenAPI spec with all endpoints above
|
|
135
|
+
1. Run codegen to generate React hooks and Zod schemas
|
|
136
|
+
|
|
137
|
+
1. Write DB schema and push to database
|
|
138
|
+
1. Create the web app artifact and launch design subagent
|
|
139
|
+
|
|
140
|
+
1. Implement API routes
|
|
141
|
+
1. Seed the database with user's requested recipes (structured data, not components)
|
|
142
|
+
|
|
143
|
+
1. Generate hero images for each recipe using `generateImage`
|
|
144
|
+
1. Test end-to-end
|
|
145
|
+
|
|
146
|
+
### Adding New Recipes (Ongoing)
|
|
147
|
+
|
|
148
|
+
When the user requests new recipes in future conversations:
|
|
149
|
+
|
|
150
|
+
1. Generate the recipe data (ingredients, steps, nutrition, etc.)
|
|
151
|
+
1. Generate a hero image
|
|
152
|
+
|
|
153
|
+
1. POST the recipe to the API
|
|
154
|
+
1. The frontend automatically displays it in the collection
|
|
155
|
+
|
|
156
|
+
No new components need to be written. The recipe is just data.
|
|
157
|
+
|
|
158
|
+
## Recipe Generation
|
|
159
|
+
|
|
160
|
+
### Recipe Card Features
|
|
161
|
+
|
|
162
|
+
1. **Generated hero image** — Use `generateImage` to create a photorealistic hero image. Style: overhead or 45-degree angle, natural lighting, styled surface.
|
|
163
|
+
1. **Step images** — For key technique steps, generate images showing what that step should look like.
|
|
164
|
+
|
|
165
|
+
1. **Serving size adjuster with smart scaling** — Dynamic recalculation with intelligent unit conversion:
|
|
166
|
+
|
|
167
|
+
```javascript
|
|
168
|
+
|
|
169
|
+
const unitUpgrades = {
|
|
170
|
+
|
|
171
|
+
tsp: { threshold: 3, to: "Tbsp", factor: 1/3 },
|
|
172
|
+
|
|
173
|
+
Tbsp: { threshold: 4, to: "cup", factor: 1/16 },
|
|
174
|
+
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
1. **Cooking mode** — Step-by-step walkthrough with countdown timers, wake lock, large text.
|
|
180
|
+
1. **Prep timeline** — Visual Gantt chart showing overlapping tasks, color-coded by type.
|
|
181
|
+
|
|
182
|
+
1. **Nutrition panel** — Per-serving values that update with serving size.
|
|
183
|
+
|
|
184
|
+
### "What Can I Make?" Logic
|
|
185
|
+
|
|
186
|
+
Think in **formula + flavor profile**, not recipe lookup:
|
|
187
|
+
|
|
188
|
+
1. Bucket ingredients: protein / starch / veg / aromatic / fat / acid
|
|
189
|
+
1. Match a base formula (stir-fry, braise, grain bowl, frittata, soup, sheet-pan roast)
|
|
190
|
+
|
|
191
|
+
1. Assign a flavor direction based on what's in the pantry
|
|
192
|
+
1. Every savory dish needs fat + acid + salt to taste finished
|
|
193
|
+
|
|
194
|
+
1. Rank suggestions by fewest missing ingredients
|
|
195
|
+
|
|
196
|
+
### Ratios — Cook Without a Recipe
|
|
197
|
+
|
|
198
|
+
From Ruhlman's *Ratio*. **All by weight**:
|
|
199
|
+
|
|
200
|
+
| Thing | Ratio | Notes |
|
|
201
|
+
|
|
202
|
+
|-------|-------|-------|
|
|
203
|
+
|
|
204
|
+
| Bread dough | 5 flour : 3 water (+yeast, salt 2%) | 60% hydration = sandwich, 75%+ = ciabatta |
|
|
205
|
+
|
|
206
|
+
| Pasta dough | 3 flour : 2 egg | ~100g flour per person |
|
|
207
|
+
|
|
208
|
+
| Pie dough | 3 flour : 2 fat : 1 water | Fat cold, water iced |
|
|
209
|
+
|
|
210
|
+
| Cookie | 1 sugar : 2 fat : 3 flour | Base for shortbread -> choc chip |
|
|
211
|
+
|
|
212
|
+
| Pancake | 2 flour : 2 liquid : 1 egg : 1/2 fat | Thinner = crepe |
|
|
213
|
+
|
|
214
|
+
| Vinaigrette | 3 oil : 1 acid | Mustard to emulsify |
|
|
215
|
+
|
|
216
|
+
| Custard | 1 egg : 2 liquid | Creme brulee, quiche, bread pudding |
|
|
217
|
+
|
|
218
|
+
| Stock | 3 water : 2 bones | Simmer, never boil |
|
|
219
|
+
|
|
220
|
+
| Rice | 1 rice : 1.5 water by volume | Less for jasmine, more for brown |
|
|
221
|
+
|
|
222
|
+
### Substitutions
|
|
223
|
+
|
|
224
|
+
| Out of | Use | Conversion |
|
|
225
|
+
|
|
226
|
+
|--------|-----|------------|
|
|
227
|
+
|
|
228
|
+
| Buttermilk | Milk + acid | 1 cup milk + 1 Tbsp lemon juice, sit 5 min |
|
|
229
|
+
|
|
230
|
+
| 1 egg (binding) | Flax/chia | 1 Tbsp ground + 3 Tbsp water, gel 5 min |
|
|
231
|
+
|
|
232
|
+
| Butter (baking) | Oil | Use 80% of butter weight |
|
|
233
|
+
|
|
234
|
+
| Heavy cream | Coconut cream | 1:1, faint coconut taste |
|
|
235
|
+
|
|
236
|
+
| Cake flour | AP flour | 1 cup AP - 2 Tbsp + 2 Tbsp cornstarch |
|
|
237
|
+
|
|
238
|
+
| Fresh herbs | Dried | Use 1/3 the amount, add early |
|
|
239
|
+
|
|
240
|
+
### Nutrition — Live USDA Lookup
|
|
241
|
+
|
|
242
|
+
Use the USDA FoodData Central API (`fdc.nal.usda.gov`) when available. Fallback: protein ~4 kcal/g, carbs ~4 kcal/g, fat ~9 kcal/g. Flag as "estimated" when using fallback.
|
|
243
|
+
|
|
244
|
+
### Best Practices
|
|
245
|
+
|
|
246
|
+
- **Visual/audio cues over times** — "onions translucent" beats "5 min"
|
|
247
|
+
- **Salt in layers** — season at each stage
|
|
248
|
+
|
|
249
|
+
- **Rest meat** — 5 min for steaks, 15+ for roasts
|
|
250
|
+
- Ingredients listed in order of use
|
|
251
|
+
|
|
252
|
+
- Flag top-9 allergens
|
|
253
|
+
|
|
254
|
+
## Limitations
|
|
255
|
+
|
|
256
|
+
- Nutrition from USDA API uses generic entries — brand variance exists
|
|
257
|
+
- Baking ratios assume weight measurement; volume introduces 10-20% error
|
|
258
|
+
|
|
259
|
+
- Not medical dietary advice
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5351a5df563f1a485ea6372d812fb6fd
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: recreate-screenshot
|
|
3
|
+
description: Recreate a UI from a screenshot or image with pixel-perfect accuracy.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Recreate Screenshot
|
|
7
|
+
|
|
8
|
+
Recreate a UI screen from a screenshot or image reference. The goal is pixel-perfect accuracy — the rendered output should be visually indistinguishable from the source image.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User pastes a screenshot and says "build this", "recreate this", "make this", "replicate this UI"
|
|
13
|
+
- User uploads a design mockup image and wants it implemented
|
|
14
|
+
- User shares a reference image from another app and wants an exact visual match
|
|
15
|
+
- User provides a Figma screenshot, Dribbble shot, or any visual reference to reproduce
|
|
16
|
+
|
|
17
|
+
## When NOT to Use
|
|
18
|
+
|
|
19
|
+
- User wants a *functional app inspired by* a design — that's general development, not screenshot recreation
|
|
20
|
+
- User wants to *clone a live website* by URL — use the website-cloning skill instead
|
|
21
|
+
- User wants to *redesign or improve* an existing component — use design-exploration instead
|
|
22
|
+
- User describes a UI in words without providing an image — that's standard design work
|
|
23
|
+
|
|
24
|
+
## Phase 1: Analyze the Screenshot
|
|
25
|
+
|
|
26
|
+
Before writing any code, study the image systematically. Extract every visual detail.
|
|
27
|
+
|
|
28
|
+
### Layout Analysis
|
|
29
|
+
|
|
30
|
+
- Identify the overall layout structure: single column, sidebar + content, grid, split-screen
|
|
31
|
+
- Map the visual hierarchy: what draws the eye first, second, third
|
|
32
|
+
- Note the container structure: full-width vs constrained, nested containers, card groups
|
|
33
|
+
- Identify repeating patterns: card grids, list items, nav items, form groups
|
|
34
|
+
|
|
35
|
+
### Color Extraction
|
|
36
|
+
|
|
37
|
+
Extract exact colors from the image — do not approximate.
|
|
38
|
+
|
|
39
|
+
- **Primary background** — the dominant background color
|
|
40
|
+
- **Secondary backgrounds** — card backgrounds, section backgrounds, sidebar fills
|
|
41
|
+
- **Primary accent** — buttons, links, active states
|
|
42
|
+
- **Text colors** — headings vs body vs muted/secondary text (these are almost always different)
|
|
43
|
+
- **Border and divider colors** — often subtle grays
|
|
44
|
+
- **Gradient start/end colors** — if any gradients are visible
|
|
45
|
+
- **Shadow colors** — note opacity and spread if box-shadows are present
|
|
46
|
+
|
|
47
|
+
Record all colors as hex values. If the image shows a dark theme, note that explicitly.
|
|
48
|
+
|
|
49
|
+
### Typography Analysis
|
|
50
|
+
|
|
51
|
+
- **Font classification** — is it sans-serif (most common), serif, monospace, or display/decorative?
|
|
52
|
+
- **Heading sizes** — estimate px sizes for h1, h2, h3 relative to surrounding elements
|
|
53
|
+
- **Body text size** — typically 14-16px
|
|
54
|
+
- **Font weights** — identify bold (700), semibold (600), medium (500), regular (400), light (300) usage
|
|
55
|
+
- **Letter spacing** — is it tight (negative), normal, or wide (uppercase labels often have wide spacing)
|
|
56
|
+
- **Line height** — compact (1.2-1.3) for headings, relaxed (1.5-1.7) for body text
|
|
57
|
+
- **Text transforms** — any uppercase labels, capitalized nav items
|
|
58
|
+
|
|
59
|
+
### Component Inventory
|
|
60
|
+
|
|
61
|
+
Catalog every visible component:
|
|
62
|
+
|
|
63
|
+
- **Buttons** — size, border-radius, fill vs outline vs ghost, icon placement, shadow
|
|
64
|
+
- **Cards** — padding, border-radius, border vs shadow vs both, background
|
|
65
|
+
- **Input fields** — height, border style, border-radius, placeholder style, focus state (if visible)
|
|
66
|
+
- **Navigation** — horizontal vs vertical, active indicator style, icon + label vs label only
|
|
67
|
+
- **Lists** — spacing between items, divider style, icon/avatar placement
|
|
68
|
+
- **Modals/sheets** — overlay darkness, container radius, close button style
|
|
69
|
+
- **Tags/badges** — size, radius (pill vs rounded-rect), color coding
|
|
70
|
+
- **Avatars/images** — exact dimensions, border-radius (circle vs rounded), border/ring
|
|
71
|
+
|
|
72
|
+
### Spacing System
|
|
73
|
+
|
|
74
|
+
- **Container padding** — page-level horizontal padding
|
|
75
|
+
- **Section spacing** — vertical gap between major sections
|
|
76
|
+
- **Card internal padding** — consistent padding within cards
|
|
77
|
+
- **Element gaps** — space between items in a list, grid gap, button groups
|
|
78
|
+
- **Margin patterns** — consistent spacing multiples (4px, 8px, 12px, 16px, 24px, 32px)
|
|
79
|
+
|
|
80
|
+
## Phase 2: Build
|
|
81
|
+
|
|
82
|
+
### Setup
|
|
83
|
+
|
|
84
|
+
Build the component using the project's existing framework. If the project uses React + Vite, build a React component. If Expo, build a React Native component. Match the stack.
|
|
85
|
+
|
|
86
|
+
If there is no existing project context, or the user wants a standalone prototype, use the mockup sandbox (see the mockup-sandbox skill). Create the component as a self-contained mockup that can be embedded on the canvas.
|
|
87
|
+
|
|
88
|
+
### Construction Rules
|
|
89
|
+
|
|
90
|
+
Follow these rules with zero exceptions:
|
|
91
|
+
|
|
92
|
+
**Layout fidelity:**
|
|
93
|
+
|
|
94
|
+
- If the screenshot shows a column layout, build a column layout — do not reorganize
|
|
95
|
+
- If elements are positioned absolutely in the reference, use absolute positioning
|
|
96
|
+
- Match the exact number of grid columns, the exact flex direction, the exact alignment
|
|
97
|
+
- If the screenshot shows content clipped at the bottom (implying scroll), add scroll behavior
|
|
98
|
+
|
|
99
|
+
**Color fidelity:**
|
|
100
|
+
|
|
101
|
+
- Use the exact hex colors extracted in Phase 1
|
|
102
|
+
- Define all colors as CSS custom properties or theme tokens at the top of the file
|
|
103
|
+
- Do not substitute "close enough" colors — `#1A1A2E` is not `#1B1B30`
|
|
104
|
+
- If there are gradients, match both the colors and the direction
|
|
105
|
+
|
|
106
|
+
**Typography fidelity:**
|
|
107
|
+
|
|
108
|
+
- Match font sizes, weights, and spacing as closely as possible
|
|
109
|
+
- Use Google Fonts if the exact font is identifiable; otherwise pick the closest match in the same classification (geometric sans, humanist sans, transitional serif, etc.)
|
|
110
|
+
- Match bold, medium, and regular weights exactly as shown
|
|
111
|
+
|
|
112
|
+
**Component fidelity:**
|
|
113
|
+
|
|
114
|
+
- Every button must match: size, color, border-radius, label text, shadow, icon placement
|
|
115
|
+
- Every card must match: padding, background, border/shadow, internal layout
|
|
116
|
+
- Every input field must match: height, border style, placeholder text, border-radius
|
|
117
|
+
- Every list item must match: spacing, icon placement, divider style, text alignment
|
|
118
|
+
|
|
119
|
+
**Content fidelity:**
|
|
120
|
+
|
|
121
|
+
- Use the exact text visible in the screenshot — do not invent new copy
|
|
122
|
+
- If text is partially obscured, use realistic placeholder text that matches the visible length
|
|
123
|
+
- For images, use placeholder images at the exact same dimensions
|
|
124
|
+
- For avatars, use generated avatars (DiceBear or similar) at the correct size
|
|
125
|
+
- For icons, use the closest match from lucide-react or the project's icon library
|
|
126
|
+
|
|
127
|
+
**Interaction states:**
|
|
128
|
+
|
|
129
|
+
- Add hover states to all interactive elements (buttons, links, cards if they appear clickable)
|
|
130
|
+
- Add pressed/active state styling to buttons
|
|
131
|
+
- Add focus-visible styles to form elements
|
|
132
|
+
- If the screenshot implies scroll behavior, implement it with proper overflow handling
|
|
133
|
+
- Make the layout responsive to the container it's rendered in
|
|
134
|
+
|
|
135
|
+
### What to Build
|
|
136
|
+
|
|
137
|
+
Build a **complete, self-contained screen**:
|
|
138
|
+
|
|
139
|
+
- Do not leave sections commented out or marked "TODO"
|
|
140
|
+
- Do not add elements not present in the screenshot
|
|
141
|
+
- Do not remove elements that are present in the screenshot
|
|
142
|
+
- Do not add navigation to pages that aren't shown
|
|
143
|
+
- If the screenshot shows a mobile viewport, build it at that viewport width
|
|
144
|
+
|
|
145
|
+
## Phase 3: Validate
|
|
146
|
+
|
|
147
|
+
After building, compare your output against the source image.
|
|
148
|
+
|
|
149
|
+
### Visual Checklist
|
|
150
|
+
|
|
151
|
+
Go through each category and verify:
|
|
152
|
+
|
|
153
|
+
- [ ] **Layout structure** matches exactly — same columns, same flex direction, same alignment
|
|
154
|
+
- [ ] **Background colors** match for page, sections, cards, and sidebars
|
|
155
|
+
- [ ] **Text colors** match for headings, body, muted text, and links
|
|
156
|
+
- [ ] **Accent/brand color** matches on buttons, active states, and highlights
|
|
157
|
+
- [ ] **Font sizes** match the visual hierarchy in the screenshot
|
|
158
|
+
- [ ] **Font weights** match — headings are the right boldness, body is the right weight
|
|
159
|
+
- [ ] **Spacing** matches — padding inside cards, gaps between elements, section margins
|
|
160
|
+
- [ ] **Border radius** matches on every element — buttons, cards, inputs, avatars
|
|
161
|
+
- [ ] **Shadows** match — present where they should be, absent where they shouldn't
|
|
162
|
+
- [ ] **Icons** are the right size and in the right position
|
|
163
|
+
- [ ] **Content** matches — text, image placeholders, avatar placeholders are all present
|
|
164
|
+
|
|
165
|
+
### Iteration
|
|
166
|
+
|
|
167
|
+
If any item on the checklist is off, fix it before presenting to the user. Common issues:
|
|
168
|
+
|
|
169
|
+
- Colors are slightly off — re-examine the screenshot, extract again
|
|
170
|
+
- Spacing feels wrong — check padding and gap values against the reference
|
|
171
|
+
- Font weight is wrong — try adjacent weights (500 vs 600, 600 vs 700)
|
|
172
|
+
- Border radius is wrong — common values: 4px, 6px, 8px, 12px, 16px, 9999px (pill)
|
|
173
|
+
- Cards look flat when they should have depth — add box-shadow
|
|
174
|
+
- Layout doesn't match at the right viewport — check if you're building at the correct width
|
|
175
|
+
|
|
176
|
+
## Working with Subagents
|
|
177
|
+
|
|
178
|
+
For complex screenshots with many components, delegate to a DESIGN subagent:
|
|
179
|
+
|
|
180
|
+
- Include the screenshot image in the subagent prompt
|
|
181
|
+
- Pass the full color extraction, typography analysis, and component inventory from Phase 1
|
|
182
|
+
- Specify the exact target file path and dimensions
|
|
183
|
+
- Include the construction rules from Phase 2 in the brief
|
|
184
|
+
- Tell the subagent to mark the iframe as "live" when complete
|
|
185
|
+
|
|
186
|
+
For multiple screenshots (e.g., recreating several screens of an app), fan out with one DESIGN subagent per screen and coordinate via the canvas.
|
|
187
|
+
|
|
188
|
+
## Common Patterns
|
|
189
|
+
|
|
190
|
+
### Dark UI
|
|
191
|
+
|
|
192
|
+
Dark UIs are not just "white on black." Look for:
|
|
193
|
+
|
|
194
|
+
- Layered dark backgrounds (e.g., `#0A0A0F` page, `#12121A` cards, `#1A1A26` hover)
|
|
195
|
+
- Subtle borders (1px solid rgba(255,255,255,0.06-0.1))
|
|
196
|
+
- Muted text colors (not pure white — usually `#A0A0B0` or similar)
|
|
197
|
+
- Glow effects on accent colors (box-shadow with the accent color at low opacity)
|
|
198
|
+
|
|
199
|
+
### Gradient Backgrounds
|
|
200
|
+
|
|
201
|
+
- Extract both start and end colors
|
|
202
|
+
- Note the direction (most common: top-to-bottom, left-to-right, diagonal)
|
|
203
|
+
- For mesh gradients or complex gradients, approximate with radial gradients
|
|
204
|
+
|
|
205
|
+
### Glass/Blur Effects
|
|
206
|
+
|
|
207
|
+
- Use `backdrop-filter: blur(12-24px)` with a semi-transparent background
|
|
208
|
+
- Often combined with a subtle border (1px solid rgba(255,255,255,0.1))
|
|
209
|
+
- Background opacity typically 60-80%
|
|
210
|
+
|
|
211
|
+
### Sidebar + Content Layouts
|
|
212
|
+
|
|
213
|
+
- Sidebar is usually fixed width (240-280px) with its own background
|
|
214
|
+
- Content area fills remaining space
|
|
215
|
+
- On mobile, sidebar typically collapses to a hamburger menu
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7c804fd963081ace0044184e2a2c74fa
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: replit-migration-guardrails
|
|
3
|
+
description: Rules for migrating external projects (Lovable, Base44, v0/Vercel, Bolt) to Replit. Use Replit's built-in DB, auth, secrets, and integrations — not Supabase / Firebase / cookie-session / raw API keys. Base44 imports get a call-by-call map in `.local/secondary_skills/replit-migration-guardrails/references/base44.md`; v0/Vercel imports get a Next.js migration guide in `.local/secondary_skills/replit-migration-guardrails/references/vercel.md`.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Migration guardrails
|
|
7
|
+
|
|
8
|
+
Rules for migrating Lovable / Base44 / v0 / Vercel / Bolt imports to
|
|
9
|
+
Replit. Base44 imports get a call-by-call map in
|
|
10
|
+
`.local/secondary_skills/replit-migration-guardrails/references/base44.md`;
|
|
11
|
+
v0/Vercel imports get a Next.js migration guide in
|
|
12
|
+
`.local/secondary_skills/replit-migration-guardrails/references/vercel.md`.
|
|
13
|
+
Security reasoning:
|
|
14
|
+
<https://blog.replit.com/defense-in-depth-how-replit-secures-every-layer-of-the-vibe-coding-stack>.
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
1. **Database:** Replit PostgreSQL via the `javascript_database`
|
|
19
|
+
blueprint. Not Supabase, Firebase, PlanetScale, etc. Reason: the
|
|
20
|
+
blog post's frontend/backend separation argument — RLS-only apps
|
|
21
|
+
are the vulnerability class Replit is built to avoid. Schema in
|
|
22
|
+
`shared/schema.ts`, `IStorage` in `server/storage.ts`, routes
|
|
23
|
+
under `/api/*`, then `npm run db:push`.
|
|
24
|
+
|
|
25
|
+
2. **Auth:** `javascript_log_in_with_replit` blueprint (Replit Auth).
|
|
26
|
+
If the user explicitly asks for Clerk, use the `clerk-auth` skill.
|
|
27
|
+
Never hand-roll cookie sessions or design login/signup/reset forms.
|
|
28
|
+
Don't use the strings "Replit" or "Replit Auth" in UI; just "Log in".
|
|
29
|
+
|
|
30
|
+
3. **Secrets:** Live in Replit's secret store. Use the
|
|
31
|
+
`environment-secrets` skill's `ask_secrets` tool to request
|
|
32
|
+
user-supplied keys, and `check_secrets` to see what's already
|
|
33
|
+
set. Never paste keys into code or `.env.*`. Never expose via
|
|
34
|
+
`VITE_*` (that ships to the browser). Scrape nothing from the
|
|
35
|
+
imported `.env`; re-request through `ask_secrets`.
|
|
36
|
+
|
|
37
|
+
4. **Integrations:** For AI, use **AI Integrations** via the
|
|
38
|
+
`integrations` skill (OpenAI / Anthropic / Gemini env vars
|
|
39
|
+
auto-provisioned, no key from the user). For object storage, use
|
|
40
|
+
`javascript_object_storage`. For payments, `javascript_stripe` /
|
|
41
|
+
`javascript_paypal`. For email / SMS / Slack / Notion / etc.,
|
|
42
|
+
search the `integrations` skill first. Only fall back to
|
|
43
|
+
`ask_secrets` if no integration exists. Never call external APIs
|
|
44
|
+
from the browser.
|
|
45
|
+
|
|
46
|
+
## Talk to the user like a non-technical user
|
|
47
|
+
|
|
48
|
+
Keep user-facing messages short. Just tell them a migration is
|
|
49
|
+
running; no enumeration of what surfaces were found, no step-by-step
|
|
50
|
+
plan, no tool / library / file / blueprint names.
|
|
51
|
+
|
|
52
|
+
One-liner format: what the app is, that you're migrating it, rough
|
|
53
|
+
time, whether they need to do anything (ideally "nothing right now").
|
|
54
|
+
|
|
55
|
+
The per-source reference in `references/` has a filled-in template.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Base44 → Replit
|
|
2
|
+
|
|
3
|
+
## Shim files to read first
|
|
4
|
+
|
|
5
|
+
- `src/api/base44Client.js`, `src/api/entities.js`, `src/api/integrations.js`
|
|
6
|
+
- `src/lib/app-params.js`, `src/lib/AuthContext.jsx`
|
|
7
|
+
- `src/components/ProtectedRoute.jsx`, `UserNotRegisteredError.jsx`
|
|
8
|
+
- `vite.config.js`
|
|
9
|
+
|
|
10
|
+
Grep `base44.entities.*`, `base44.integrations.Core.*`, `base44.auth.*`
|
|
11
|
+
to enumerate what's actually used.
|
|
12
|
+
|
|
13
|
+
## Layout
|
|
14
|
+
|
|
15
|
+
Flat `src/` at repo root → move under `client/src/`, add `server/` +
|
|
16
|
+
`shared/` (FULLSTACK_JS layout). Follow the `fullstack-js` skill.
|
|
17
|
+
|
|
18
|
+
## Replacements
|
|
19
|
+
|
|
20
|
+
| Base44 | Replit |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| `base44.entities.*` | `javascript_database` + drizzle + `/api/*` routes |
|
|
23
|
+
| `base44.auth.*` | `javascript_log_in_with_replit` blueprint |
|
|
24
|
+
| `InvokeLLM` / `GenerateImage` / `ExtractDataFromUploadedFile` | AI Integrations (OpenAI) |
|
|
25
|
+
| `UploadFile` | `javascript_object_storage` blueprint |
|
|
26
|
+
| `SendEmail` / `SendSMS` | `integrations` skill, else stub |
|
|
27
|
+
| `base44.appLogs.*` | delete |
|
|
28
|
+
|
|
29
|
+
## Cleanup
|
|
30
|
+
|
|
31
|
+
Drop `@base44/sdk` + `@base44/vite-plugin`. Delete
|
|
32
|
+
`base44Client.js`, `entities.js`, `integrations.js`, `app-params.js`,
|
|
33
|
+
`NavigationTracker.jsx`, `VisualEditAgent.jsx`,
|
|
34
|
+
`UserNotRegisteredError.jsx`.
|
|
35
|
+
|
|
36
|
+
## First message
|
|
37
|
+
|
|
38
|
+
One short, non-technical line. Just tell the user a migration is
|
|
39
|
+
running. No surface enumeration, no plan bullets, no tool / library
|
|
40
|
+
names. Template:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
I've pulled in your Base44 project — looks like *a small business dashboard for tracking revenue, expenses, and customers*. I'll get it running on Replit; this usually takes a few minutes. Nothing needed from you right now.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If you genuinely need a user-supplied secret later, batch it into
|
|
47
|
+
one request via the environment-secrets skill.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Vercel (v0) → Replit
|
|
2
|
+
|
|
3
|
+
## Locate the app & detect package manager
|
|
4
|
+
|
|
5
|
+
- Check root `package.json` for a `next` dependency and for `app/` or `pages/` directories.
|
|
6
|
+
- If not at root, search common monorepo paths: `apps/web`, `packages/frontend`.
|
|
7
|
+
- Detect the package manager from the lockfile: `package-lock.json`→npm,
|
|
8
|
+
`pnpm-lock.yaml`→pnpm, `yarn.lock`→yarn, `bun.lockb`→bun.
|
|
9
|
+
|
|
10
|
+
## Working directory
|
|
11
|
+
|
|
12
|
+
If Next.js lives in a subdirectory, every subsequent command runs from
|
|
13
|
+
there. Update `deploy_config_tool` to `cd` into it:
|
|
14
|
+
|
|
15
|
+
- build: `["bash", "-c", "cd <dir> && <pkg-mgr> run build"]`
|
|
16
|
+
- start: `["bash", "-c", "cd <dir> && <pkg-mgr> run start"]`
|
|
17
|
+
|
|
18
|
+
## Ports & scripts
|
|
19
|
+
|
|
20
|
+
- dev: `next dev -p 5000 -H 0.0.0.0`
|
|
21
|
+
- start: `next start -p 5000 -H 0.0.0.0`
|
|
22
|
+
|
|
23
|
+
## Dev workflow
|
|
24
|
+
|
|
25
|
+
Vercel imports initialize with `BEST_EFFORT_FALLBACK`, which does not
|
|
26
|
+
create a workflow for you. Configure one yourself with
|
|
27
|
+
`configure_workflow_tool` before `restart_workflow` — the feedback
|
|
28
|
+
and verification steps depend on it. Use the same subdirectory/pkg
|
|
29
|
+
manager pattern as the build/start commands, e.g.
|
|
30
|
+
`["bash", "-c", "cd <dir> && <pkg-mgr> run dev"]`.
|
|
31
|
+
|
|
32
|
+
## Replit compatibility rules
|
|
33
|
+
|
|
34
|
+
- **instrumentation.ts/js**: comment out if it blocks startup, leave a
|
|
35
|
+
one-line explanatory comment.
|
|
36
|
+
- **Build errors → source, not artifacts**: when an error cites a file
|
|
37
|
+
path, confirm whether it's source or compiled output before editing.
|
|
38
|
+
Errors in compiled artifacts (Tailwind/CSS bundles, generated JS,
|
|
39
|
+
type-gen output) point to a source cause — grep the source tree for
|
|
40
|
+
the offending symbol or pattern and fix it there. Don't mask the
|
|
41
|
+
error at the bundler/compiler layer (PostCSS rule-stripping, custom
|
|
42
|
+
loader hacks, `null-loader`).
|
|
43
|
+
- **External allowlists (preflight)**: grep source for image URLs
|
|
44
|
+
passed to `next/image` and whitelist each external hostname under
|
|
45
|
+
`images.remotePatterns` in `next.config.mjs`. Add `'*.replit.dev'`
|
|
46
|
+
and `'*.replit.app'` to `allowedDevOrigins`. Skipping these produces
|
|
47
|
+
runtime errors later.
|
|
48
|
+
- **Binary asset spot-check**: v0 and similar JSON-serialized project
|
|
49
|
+
exports can ship images/fonts as base64 text files that pass HTTP
|
|
50
|
+
200 checks but fail to render. After clone, run
|
|
51
|
+
`file public/**/*.{png,jpg,webp,woff,woff2,ttf}` (or wherever assets
|
|
52
|
+
live) — any binary asset reported as ASCII/UTF-8 text needs
|
|
53
|
+
`base64 -d` back to binary in place.
|
|
54
|
+
- **Verify the running app, not just the build**: a 200 response and a
|
|
55
|
+
clean build log don't mean the page renders. Fetch the page
|
|
56
|
+
(`curl -s <URL> | head`) and confirm the HTML contains real app
|
|
57
|
+
content. Repetitive rebuild or reload loops in dev-server logs mean
|
|
58
|
+
the app is cycling — don't blame the Replit proxy.
|
|
59
|
+
|
|
60
|
+
## Secrets
|
|
61
|
+
|
|
62
|
+
Always request env vars referenced by `process.env.*` (DATABASE_URL,
|
|
63
|
+
API keys, etc.) through the `environment-secrets` skill so they land
|
|
64
|
+
in the Replit Secrets store. Never ask the user to paste secret
|
|
65
|
+
values into chat, don't commit them to the repo, and don't scrape
|
|
66
|
+
`.env` into code.
|
|
67
|
+
|
|
68
|
+
## First message
|
|
69
|
+
|
|
70
|
+
One short, non-technical line. Don't enumerate steps or mention tools
|
|
71
|
+
/ library names. Template:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
I've pulled in your Vercel project — looks like *a Next.js app for <feature>*. I'll get it running on Replit; this usually takes a few minutes. Nothing needed from you right now.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
If you genuinely need a user-supplied secret later, batch it into one
|
|
78
|
+
request via the `environment-secrets` skill.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
e99b27af31fbdcf8f70692ce4abff738
|