Created CategoryFilter component with the following features: - Client component with 'use client' directive and framer-motion animations - Props: categories, selectedCategory, onCategoryChange, className - Uses lucide-react Tag icon - Responsive design: horizontal scrollable on mobile, grid layout on desktop - Active category highlighted with bg-[#697565] text-white - Includes 'All' option to clear filter - Follows established patterns from SearchBar and ContactForm - Consistent styling with bg-zinc-900/50 and border-zinc-800 - Smooth transitions and hover states Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
88 lines
1015 B
Plaintext
88 lines
1015 B
Plaintext
# Dependencies
|
|
node_modules
|
|
.pnp
|
|
.pnp.js
|
|
|
|
# Testing
|
|
coverage
|
|
|
|
# Production
|
|
dist
|
|
dist-ssr
|
|
build
|
|
|
|
# Environment files
|
|
.env
|
|
.env.local
|
|
.env.development.local
|
|
.env.test.local
|
|
.env.production.local
|
|
*.local
|
|
|
|
# Logs
|
|
logs
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
pnpm-debug.log*
|
|
lerna-debug.log*
|
|
|
|
# Editor directories and files
|
|
.vscode/*
|
|
!.vscode/extensions.json
|
|
!.vscode/settings.json
|
|
.idea
|
|
.DS_Store
|
|
*.suo
|
|
*.ntvs*
|
|
*.njsproj
|
|
*.sln
|
|
*.sw?
|
|
|
|
# TypeScript
|
|
*.tsbuildinfo
|
|
|
|
# Cache
|
|
.eslintcache
|
|
.cache
|
|
.parcel-cache
|
|
.next
|
|
.nuxt
|
|
.vuepress/dist
|
|
.temp
|
|
.docusaurus
|
|
.serverless/
|
|
.fusebox/
|
|
.dynamodb/
|
|
.tern-port
|
|
.yarn/cache
|
|
.yarn/unplugged
|
|
.yarn/build-state.yml
|
|
.yarn/install-state.gz
|
|
.pnp.*
|
|
|
|
# Supabase
|
|
supabase/.branches/
|
|
supabase/.temp/
|
|
|
|
# PWA files
|
|
**/public/workbox-*.js
|
|
**/public/sw.js
|
|
**/public/fallback-*.js
|
|
|
|
# Misc
|
|
.sass-cache/
|
|
.project
|
|
.classpath
|
|
.settings/
|
|
*.sublime-workspace
|
|
*.sublime-project
|
|
.history/
|
|
|
|
# Source images (originals before optimization)
|
|
source-images/
|
|
|
|
# Auto Claude data directory
|
|
.auto-claude/
|