@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,325 @@
|
|
|
1
|
+
# Content Templates
|
|
2
|
+
|
|
3
|
+
Detailed templates and examples for each marketing content type generated from podcast episodes.
|
|
4
|
+
|
|
5
|
+
## Critical Rules
|
|
6
|
+
|
|
7
|
+
1. **Generate each content piece in a SEPARATE LLM call.** Never batch multiple outputs with separators (e.g., "---SEPARATOR---"). This causes content bleeding between files and quality degradation.
|
|
8
|
+
2. **Anti-repetition: Each platform must lead with a different atom.** Before generating content, assign atoms to platforms (see SKILL.md Step 2). Pass only the assigned atom(s) to each generation call.
|
|
9
|
+
|
|
10
|
+
3. **Validate constraints before saving.** Count characters (Twitter), words (blog), and check that no quote appears in more than 2 outputs.
|
|
11
|
+
|
|
12
|
+
## Twitter/X Thread Template
|
|
13
|
+
|
|
14
|
+
Structure a 5-8 tweet thread. Each tweet should stand alone while building a narrative arc.
|
|
15
|
+
|
|
16
|
+
**Tweet 1 — The Hook:**
|
|
17
|
+
|
|
18
|
+
Lead with the most surprising, contrarian, or counter-intuitive point. Frame as a revelation or challenge to conventional wisdom.
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
|
|
22
|
+
Most people think [common belief].
|
|
23
|
+
|
|
24
|
+
But @GuestName just explained why that's completely wrong.
|
|
25
|
+
|
|
26
|
+
A thread on [topic] 🧵
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Tweets 2-6 — Key Insights:**
|
|
31
|
+
|
|
32
|
+
One insight per tweet. Use the guest's own phrasing when it's punchy. Add brief context when needed.
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
|
|
36
|
+
1/ "[Direct quote from guest]"
|
|
37
|
+
|
|
38
|
+
This matters because [one-sentence context].
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Final Tweet — CTA:**
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
|
|
46
|
+
Full conversation with @GuestName on [Podcast Name]:
|
|
47
|
+
|
|
48
|
+
[Episode link]
|
|
49
|
+
|
|
50
|
+
If this resonated, RT tweet 1 so others find it.
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Rules:**
|
|
55
|
+
|
|
56
|
+
- **HARD LIMIT: Under 280 characters per tweet (including URLs and spaces).** Validate by counting `len(tweet_text)` for each tweet. If over 280, rewrite or split into two tweets.
|
|
57
|
+
- No hashtags except in the final tweet (1-2 max)
|
|
58
|
+
|
|
59
|
+
- Use line breaks for readability
|
|
60
|
+
- Numbers and lists perform well — use "3 things I learned" framing when appropriate
|
|
61
|
+
|
|
62
|
+
- If a direct quote exceeds ~200 chars, paraphrase it shorter or split the quote across tweet + reply
|
|
63
|
+
|
|
64
|
+
**Validation script:**
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
|
|
68
|
+
def validate_thread(tweets: list[str]) -> list[str]:
|
|
69
|
+
|
|
70
|
+
errors = []
|
|
71
|
+
|
|
72
|
+
for i, tweet in enumerate(tweets, 1):
|
|
73
|
+
|
|
74
|
+
if len(tweet) > 280:
|
|
75
|
+
|
|
76
|
+
errors.append(f"Tweet {i} is {len(tweet)} chars (max 280): {tweet[:50]}...")
|
|
77
|
+
|
|
78
|
+
return errors
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## LinkedIn Post Template
|
|
83
|
+
|
|
84
|
+
Single long-form post. Professional but not corporate — LinkedIn rewards personal perspective and storytelling.
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
|
|
88
|
+
[Bold opening statement or question that challenges assumptions]
|
|
89
|
+
|
|
90
|
+
I just had a conversation with [Guest Name] about [topic], and one thing completely shifted my thinking:
|
|
91
|
+
|
|
92
|
+
[Key insight \#1 — 2-3 sentences expanding on it]
|
|
93
|
+
|
|
94
|
+
[Key insight \#2 — 2-3 sentences]
|
|
95
|
+
|
|
96
|
+
[Key insight \#3 — brief]
|
|
97
|
+
|
|
98
|
+
The biggest takeaway? [One-sentence summary of the most actionable point].
|
|
99
|
+
|
|
100
|
+
What's your experience with [topic]? I'd love to hear how others are thinking about this.
|
|
101
|
+
|
|
102
|
+
🎙️ Full episode: [link]
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Rules:**
|
|
107
|
+
|
|
108
|
+
- 1,200-1,500 characters total
|
|
109
|
+
- First line is crucial — it appears above the "see more" fold
|
|
110
|
+
|
|
111
|
+
- Use line breaks between paragraphs (LinkedIn penalizes walls of text)
|
|
112
|
+
- End with an open question to drive comments
|
|
113
|
+
|
|
114
|
+
- Avoid corporate jargon — write like a real person
|
|
115
|
+
|
|
116
|
+
## Instagram Caption Template
|
|
117
|
+
|
|
118
|
+
Casual, scroll-stopping, designed for the feed or carousel format.
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
|
|
122
|
+
[Attention-grabbing first line — question, bold claim, or "did you know"]
|
|
123
|
+
|
|
124
|
+
[2-3 sentences about the key insight, written conversationally]
|
|
125
|
+
|
|
126
|
+
[Pull quote from the guest if applicable]
|
|
127
|
+
|
|
128
|
+
🎧 New episode out now — link in bio
|
|
129
|
+
|
|
130
|
+
#Podcast \#[TopicHashtag] \#[NicheHashtag] \#[GuestNameHashtag] \#[BrandHashtag]
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Rules:**
|
|
135
|
+
|
|
136
|
+
- 300-500 characters for the main copy (before hashtags)
|
|
137
|
+
- Front-load the hook — first line shows in feed preview
|
|
138
|
+
|
|
139
|
+
- 3-5 hashtags max (mix of broad and niche)
|
|
140
|
+
- Mention the guest's handle if they have one
|
|
141
|
+
|
|
142
|
+
## Blog Post Template
|
|
143
|
+
|
|
144
|
+
800-1,200 words. Optimized for SEO and readability.
|
|
145
|
+
|
|
146
|
+
```markdown
|
|
147
|
+
|
|
148
|
+
# [Compelling Title — Not Just the Episode Title]
|
|
149
|
+
|
|
150
|
+
[Opening paragraph: Lead with the most compelling insight. Do NOT start with
|
|
151
|
+
|
|
152
|
+
"In this episode of..." or "I recently spoke with...". Start with the idea.]
|
|
153
|
+
|
|
154
|
+
## [Subheading for Key Topic 1]
|
|
155
|
+
|
|
156
|
+
[2-3 paragraphs expanding on the first major takeaway. Include context,
|
|
157
|
+
|
|
158
|
+
examples from the conversation, and why this matters to the reader.]
|
|
159
|
+
|
|
160
|
+
> "[Pull quote from the transcript]" — [Speaker Name]
|
|
161
|
+
|
|
162
|
+
## [Subheading for Key Topic 2]
|
|
163
|
+
|
|
164
|
+
[2-3 paragraphs on the second takeaway.]
|
|
165
|
+
|
|
166
|
+
## [Subheading for Key Topic 3 (optional)]
|
|
167
|
+
|
|
168
|
+
[1-2 paragraphs on a third point if warranted.]
|
|
169
|
+
|
|
170
|
+
## Key Takeaways
|
|
171
|
+
|
|
172
|
+
- [Takeaway 1 — stated as an actionable insight]
|
|
173
|
+
- [Takeaway 2]
|
|
174
|
+
|
|
175
|
+
- [Takeaway 3]
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
*Listen to the full conversation with [Guest Name] on [Podcast Name]:
|
|
180
|
+
|
|
181
|
+
[Episode Link]*
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Rules:**
|
|
186
|
+
|
|
187
|
+
- Title should be SEO-friendly and curiosity-driven (not just the episode name)
|
|
188
|
+
- Subheadings break up the text every 200-300 words
|
|
189
|
+
|
|
190
|
+
- Include 1-2 pull quotes as blockquotes
|
|
191
|
+
- End with a bulleted takeaway section for skimmers
|
|
192
|
+
|
|
193
|
+
- Final CTA links to the episode
|
|
194
|
+
|
|
195
|
+
## Email Newsletter Template
|
|
196
|
+
|
|
197
|
+
Subject line + preview text + body. Designed for high open rates and click-through.
|
|
198
|
+
|
|
199
|
+
```text
|
|
200
|
+
|
|
201
|
+
Subject: [Curiosity-driven, under 50 chars]
|
|
202
|
+
|
|
203
|
+
Preview: [Complements subject, under 90 chars]
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
Hey [FirstName],
|
|
208
|
+
|
|
209
|
+
[1-2 sentence hook — why should the reader care about this episode RIGHT NOW?
|
|
210
|
+
|
|
211
|
+
Tie to a current trend, common frustration, or timely question.]
|
|
212
|
+
|
|
213
|
+
This week on [Podcast Name], [Guest Name] shared [brief description of the
|
|
214
|
+
|
|
215
|
+
conversation's focus — 1 sentence].
|
|
216
|
+
|
|
217
|
+
Here's what stood out:
|
|
218
|
+
|
|
219
|
+
**[Insight 1 headline]**
|
|
220
|
+
|
|
221
|
+
[2-3 sentences expanding]
|
|
222
|
+
|
|
223
|
+
**[Insight 2 headline]**
|
|
224
|
+
|
|
225
|
+
[2-3 sentences expanding]
|
|
226
|
+
|
|
227
|
+
> "[Pull quote]" — [Speaker]
|
|
228
|
+
|
|
229
|
+
[CTA Button: "Listen to the Full Episode →"]
|
|
230
|
+
|
|
231
|
+
[Optional: 1-sentence personal note or teaser for next episode]
|
|
232
|
+
|
|
233
|
+
[Sign-off]
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Subject line patterns that work:**
|
|
238
|
+
|
|
239
|
+
- Question format: "Is [common practice] actually hurting you?"
|
|
240
|
+
- Contrarian: "[Guest] says we're all wrong about [topic]"
|
|
241
|
+
|
|
242
|
+
- Curiosity gap: "The one thing [experts] won't tell you about [topic]"
|
|
243
|
+
- Direct value: "3 [topic] lessons from [Guest Name]"
|
|
244
|
+
|
|
245
|
+
## Show Notes Template
|
|
246
|
+
|
|
247
|
+
Structured for podcast hosting platforms and websites.
|
|
248
|
+
|
|
249
|
+
```markdown
|
|
250
|
+
|
|
251
|
+
# [Episode Title]
|
|
252
|
+
|
|
253
|
+
**Episode [Number] | [Date] | [Duration]**
|
|
254
|
+
|
|
255
|
+
[1-paragraph episode description — what the listener will learn and why it
|
|
256
|
+
|
|
257
|
+
matters. Written in second person: "you'll discover...", "you'll learn..."]
|
|
258
|
+
|
|
259
|
+
## Guest
|
|
260
|
+
|
|
261
|
+
[Guest Name] — [1-2 sentence bio with credentials and relevant links]
|
|
262
|
+
|
|
263
|
+
## Timestamps
|
|
264
|
+
|
|
265
|
+
- [00:00] Introduction and guest background
|
|
266
|
+
- [03:15] [Topic 1]
|
|
267
|
+
|
|
268
|
+
- [12:40] [Topic 2]
|
|
269
|
+
- [25:00] [Topic 3]
|
|
270
|
+
|
|
271
|
+
- [38:20] Key takeaways and rapid-fire questions
|
|
272
|
+
- [45:00] Where to find [Guest Name]
|
|
273
|
+
|
|
274
|
+
## Key Takeaways
|
|
275
|
+
|
|
276
|
+
1. [Takeaway 1 — actionable, specific]
|
|
277
|
+
2. [Takeaway 2]
|
|
278
|
+
|
|
279
|
+
3. [Takeaway 3]
|
|
280
|
+
|
|
281
|
+
## Links & Resources
|
|
282
|
+
|
|
283
|
+
- [Resource mentioned in episode](url)
|
|
284
|
+
- [Guest's website/social](url)
|
|
285
|
+
|
|
286
|
+
- [Book/tool/article referenced](url)
|
|
287
|
+
|
|
288
|
+
## Subscribe
|
|
289
|
+
|
|
290
|
+
[Links to Apple Podcasts, Spotify, etc.]
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## Pull Quotes Template
|
|
295
|
+
|
|
296
|
+
Select quotes that work as standalone shareable graphics.
|
|
297
|
+
|
|
298
|
+
**Selection criteria:**
|
|
299
|
+
|
|
300
|
+
- Makes sense without any context
|
|
301
|
+
- Surprising, insightful, or emotionally resonant
|
|
302
|
+
|
|
303
|
+
- Under 150 characters (fits on a social graphic)
|
|
304
|
+
- Attributable to a specific speaker
|
|
305
|
+
|
|
306
|
+
**Format:**
|
|
307
|
+
|
|
308
|
+
```text
|
|
309
|
+
|
|
310
|
+
1. "[Quote text]" — [Speaker Name] | Timestamp: [HH:MM:SS]
|
|
311
|
+
2. "[Quote text]" — [Speaker Name] | Timestamp: [HH:MM:SS]
|
|
312
|
+
|
|
313
|
+
...
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**Quote categories to look for:**
|
|
318
|
+
|
|
319
|
+
- **Contrarian takes** — challenges popular beliefs
|
|
320
|
+
- **Actionable advice** — specific, implementable tips
|
|
321
|
+
|
|
322
|
+
- **Emotional moments** — vulnerability, humor, passion
|
|
323
|
+
- **Sound bites** — catchy, memorable phrasing
|
|
324
|
+
|
|
325
|
+
- **Data points** — surprising statistics or numbers mentioned
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# Quote Cards
|
|
2
|
+
|
|
3
|
+
Generate visually appealing quote card images for social media from podcast pull quotes.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Design Specifications](#design-specifications)
|
|
8
|
+
- [Output Dimensions](#output-dimensions)
|
|
9
|
+
|
|
10
|
+
- [Generation Methods](#generation-methods)
|
|
11
|
+
- [Text Layout Rules](#text-layout-rules)
|
|
12
|
+
|
|
13
|
+
## Design Specifications
|
|
14
|
+
|
|
15
|
+
Each quote card should include:
|
|
16
|
+
|
|
17
|
+
1. **Quote text** — formatted for visual impact with line breaks at natural pauses
|
|
18
|
+
2. **Speaker attribution** — name and title/role
|
|
19
|
+
|
|
20
|
+
3. **Podcast branding** — show name or logo
|
|
21
|
+
4. **Background** — gradient, solid color, or subtle pattern (not a busy photo)
|
|
22
|
+
|
|
23
|
+
### Style Guidelines
|
|
24
|
+
|
|
25
|
+
- **Typography**: Use a bold, readable font for the quote. Sans-serif for modern feel, serif for authority/editorial feel.
|
|
26
|
+
- **Contrast**: Ensure strong contrast between text and background (WCAG AA minimum).
|
|
27
|
+
|
|
28
|
+
- **Whitespace**: Generous margins (at least 10% of canvas on all sides). The quote should breathe.
|
|
29
|
+
- **Hierarchy**: Quote text is largest, attribution is smaller, branding is smallest.
|
|
30
|
+
|
|
31
|
+
- **Color**: Pull from the podcast's brand palette if available. If not, use the tone of the episode to guide color choice (warm tones for personal stories, cool tones for technical content, bold tones for controversial takes).
|
|
32
|
+
|
|
33
|
+
## Output Dimensions
|
|
34
|
+
|
|
35
|
+
Generate each quote card in three sizes:
|
|
36
|
+
|
|
37
|
+
| Platform | Dimensions | Aspect Ratio | Use |
|
|
38
|
+
|
|
39
|
+
|----------|-----------|-------------|-----|
|
|
40
|
+
|
|
41
|
+
| Instagram Feed | 1080 x 1080 | 1:1 | Feed posts, carousels |
|
|
42
|
+
|
|
43
|
+
| Twitter/LinkedIn | 1200 x 675 | 16:9 | Tweet images, LinkedIn posts |
|
|
44
|
+
|
|
45
|
+
| Stories/Reels | 1080 x 1920 | 9:16 | Instagram Stories, TikTok |
|
|
46
|
+
|
|
47
|
+
## Generation Methods
|
|
48
|
+
|
|
49
|
+
### Method 1: Pillow (Python)
|
|
50
|
+
|
|
51
|
+
Use Pillow for programmatic generation. Best for batch processing and consistent branding.
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
|
|
55
|
+
from PIL import Image, ImageDraw, ImageFont
|
|
56
|
+
|
|
57
|
+
import textwrap
|
|
58
|
+
|
|
59
|
+
def generate_quote_card(
|
|
60
|
+
|
|
61
|
+
quote_text: str,
|
|
62
|
+
|
|
63
|
+
speaker_name: str,
|
|
64
|
+
|
|
65
|
+
speaker_title: str,
|
|
66
|
+
|
|
67
|
+
podcast_name: str,
|
|
68
|
+
|
|
69
|
+
output_path: str,
|
|
70
|
+
|
|
71
|
+
width: int = 1080,
|
|
72
|
+
|
|
73
|
+
height: int = 1080,
|
|
74
|
+
|
|
75
|
+
bg_color: str = "#1a1a2e",
|
|
76
|
+
|
|
77
|
+
accent_color: str = "#e94560",
|
|
78
|
+
|
|
79
|
+
text_color: str = "#ffffff",
|
|
80
|
+
|
|
81
|
+
subtitle_color: str = "#a0a0b0",
|
|
82
|
+
|
|
83
|
+
):
|
|
84
|
+
|
|
85
|
+
img = Image.new("RGB", (width, height), bg_color)
|
|
86
|
+
|
|
87
|
+
draw = ImageDraw.Draw(img)
|
|
88
|
+
|
|
89
|
+
margin_x = int(width * 0.12)
|
|
90
|
+
|
|
91
|
+
margin_y = int(height * 0.15)
|
|
92
|
+
|
|
93
|
+
max_text_width = width - 2 * margin_x
|
|
94
|
+
|
|
95
|
+
try:
|
|
96
|
+
|
|
97
|
+
font_quote = ImageFont.truetype(
|
|
98
|
+
|
|
99
|
+
"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf",
|
|
100
|
+
|
|
101
|
+
int(width * 0.042),
|
|
102
|
+
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
font_speaker = ImageFont.truetype(
|
|
106
|
+
|
|
107
|
+
"/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
|
|
108
|
+
|
|
109
|
+
int(width * 0.028),
|
|
110
|
+
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
font_brand = ImageFont.truetype(
|
|
114
|
+
|
|
115
|
+
"/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
|
|
116
|
+
|
|
117
|
+
int(width * 0.022),
|
|
118
|
+
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
except OSError:
|
|
122
|
+
|
|
123
|
+
font_quote = ImageFont.load_default()
|
|
124
|
+
|
|
125
|
+
font_speaker = font_quote
|
|
126
|
+
|
|
127
|
+
font_brand = font_quote
|
|
128
|
+
|
|
129
|
+
draw.text(
|
|
130
|
+
|
|
131
|
+
(margin_x, margin_y - int(height * 0.08)),
|
|
132
|
+
|
|
133
|
+
"\u201c",
|
|
134
|
+
|
|
135
|
+
fill=accent_color,
|
|
136
|
+
|
|
137
|
+
font=ImageFont.truetype(
|
|
138
|
+
|
|
139
|
+
"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf",
|
|
140
|
+
|
|
141
|
+
int(width * 0.12),
|
|
142
|
+
|
|
143
|
+
) if font_quote != ImageFont.load_default() else font_quote,
|
|
144
|
+
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
chars_per_line = int(max_text_width / (width * 0.025))
|
|
148
|
+
|
|
149
|
+
wrapped = textwrap.fill(quote_text, width=chars_per_line)
|
|
150
|
+
|
|
151
|
+
lines = wrapped.split("\n")
|
|
152
|
+
|
|
153
|
+
y = margin_y + int(height * 0.05)
|
|
154
|
+
|
|
155
|
+
line_height = int(width * 0.058)
|
|
156
|
+
|
|
157
|
+
for line in lines:
|
|
158
|
+
|
|
159
|
+
draw.text((margin_x, y), line, fill=text_color, font=font_quote)
|
|
160
|
+
|
|
161
|
+
y += line_height
|
|
162
|
+
|
|
163
|
+
y += int(height * 0.04)
|
|
164
|
+
|
|
165
|
+
draw.line(
|
|
166
|
+
|
|
167
|
+
[(margin_x, y), (margin_x + int(width * 0.08), y)],
|
|
168
|
+
|
|
169
|
+
fill=accent_color,
|
|
170
|
+
|
|
171
|
+
width=3,
|
|
172
|
+
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
y += int(height * 0.03)
|
|
176
|
+
|
|
177
|
+
draw.text((margin_x, y), speaker_name, fill=text_color, font=font_speaker)
|
|
178
|
+
|
|
179
|
+
y += int(height * 0.04)
|
|
180
|
+
|
|
181
|
+
if speaker_title:
|
|
182
|
+
|
|
183
|
+
draw.text(
|
|
184
|
+
|
|
185
|
+
(margin_x, y), speaker_title, fill=subtitle_color, font=font_speaker
|
|
186
|
+
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
y += int(height * 0.04)
|
|
190
|
+
|
|
191
|
+
brand_bbox = draw.textbbox((0, 0), podcast_name, font=font_brand)
|
|
192
|
+
|
|
193
|
+
brand_width = brand_bbox[2] - brand_bbox[0]
|
|
194
|
+
|
|
195
|
+
draw.text(
|
|
196
|
+
|
|
197
|
+
(width - margin_x - brand_width, height - margin_y),
|
|
198
|
+
|
|
199
|
+
podcast_name,
|
|
200
|
+
|
|
201
|
+
fill=subtitle_color,
|
|
202
|
+
|
|
203
|
+
font=font_brand,
|
|
204
|
+
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
img.save(output_path, quality=95)
|
|
208
|
+
|
|
209
|
+
return output_path
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Method 2: AI Image Generation
|
|
214
|
+
|
|
215
|
+
For higher visual quality, use the `generate_image` tool to create unique, branded quote card backgrounds, then overlay the text programmatically. This produces more visually distinctive cards but takes longer.
|
|
216
|
+
|
|
217
|
+
Prompt pattern:
|
|
218
|
+
|
|
219
|
+
```text
|
|
220
|
+
|
|
221
|
+
Abstract background for a quote card. [Color palette description].
|
|
222
|
+
|
|
223
|
+
Subtle gradient with soft geometric shapes. No text. Modern, clean, editorial feel.
|
|
224
|
+
|
|
225
|
+
Dimensions: [width]x[height].
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Text Layout Rules
|
|
230
|
+
|
|
231
|
+
- **Maximum quote length**: 150 characters for single-size cards. For longer quotes (up to 250 chars), reduce font size by 20%.
|
|
232
|
+
- **Line breaks**: Break at natural pauses, not mid-phrase. Prioritize semantic breaks:
|
|
233
|
+
|
|
234
|
+
- Good: "Culture eats strategy\nfor breakfast"
|
|
235
|
+
- Bad: "Culture eats\nstrategy for breakfast"
|
|
236
|
+
|
|
237
|
+
- **Emphasis**: Use ALL CAPS for one key word/phrase if the quote has a clear punchline. Don't overdo it.
|
|
238
|
+
- **Attribution format**: "— Speaker Name" on one line, title/role on the next.
|