initial top filter menu #2
							
								
								
									
										17
									
								
								components.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								components.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
			
		||||
{
 | 
			
		||||
  "$schema": "https://ui.shadcn.com/schema.json",
 | 
			
		||||
  "style": "default",
 | 
			
		||||
  "rsc": true,
 | 
			
		||||
  "tsx": true,
 | 
			
		||||
  "tailwind": {
 | 
			
		||||
    "config": "tailwind.config.ts",
 | 
			
		||||
    "css": "src/styles/globals.css",
 | 
			
		||||
    "baseColor": "slate",
 | 
			
		||||
    "cssVariables": true,
 | 
			
		||||
    "prefix": ""
 | 
			
		||||
  },
 | 
			
		||||
  "aliases": {
 | 
			
		||||
    "components": "~/components",
 | 
			
		||||
    "utils": "~/lib/utils"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										64
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										64
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -10,12 +10,17 @@
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@t3-oss/env-nextjs": "^0.10.1",
 | 
			
		||||
        "@vercel/postgres": "^0.8.0",
 | 
			
		||||
        "class-variance-authority": "^0.7.0",
 | 
			
		||||
        "clsx": "^2.1.1",
 | 
			
		||||
        "drizzle-orm": "^0.29.4",
 | 
			
		||||
        "geist": "^1.3.0",
 | 
			
		||||
        "lucide-react": "^0.379.0",
 | 
			
		||||
        "next": "^15.0.0-rc.0",
 | 
			
		||||
        "postgres": "^3.4.3",
 | 
			
		||||
        "react": "^19.0.0-rc-935180c7e0-20240524",
 | 
			
		||||
        "react-dom": "^19.0.0-rc-935180c7e0-20240524",
 | 
			
		||||
        "tailwind-merge": "^2.3.0",
 | 
			
		||||
        "tailwindcss-animate": "^1.0.7",
 | 
			
		||||
        "zod": "^3.23.8"
 | 
			
		||||
      },
 | 
			
		||||
      "devDependencies": {
 | 
			
		||||
@ -53,7 +58,6 @@
 | 
			
		||||
      "version": "7.24.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz",
 | 
			
		||||
      "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "regenerator-runtime": "^0.14.0"
 | 
			
		||||
      },
 | 
			
		||||
@ -2532,6 +2536,25 @@
 | 
			
		||||
        "node": ">= 6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/class-variance-authority": {
 | 
			
		||||
      "version": "0.7.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz",
 | 
			
		||||
      "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "clsx": "2.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "url": "https://joebell.co.uk"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/class-variance-authority/node_modules/clsx": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/cli-color": {
 | 
			
		||||
      "version": "2.0.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz",
 | 
			
		||||
@ -2553,6 +2576,14 @@
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/clsx": {
 | 
			
		||||
      "version": "2.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/color": {
 | 
			
		||||
      "version": "4.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
 | 
			
		||||
@ -5087,6 +5118,14 @@
 | 
			
		||||
        "es5-ext": "~0.10.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/lucide-react": {
 | 
			
		||||
      "version": "0.379.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.379.0.tgz",
 | 
			
		||||
      "integrity": "sha512-KcdeVPqmhRldldAAgptb8FjIunM2x2Zy26ZBh1RsEUcdLIvsEmbcw7KpzFYUy5BbpGeWhPu9Z9J5YXfStiXwhg==",
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "react": "^16.5.1 || ^17.0.0 || ^18.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/memoizee": {
 | 
			
		||||
      "version": "0.4.17",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz",
 | 
			
		||||
@ -6101,8 +6140,7 @@
 | 
			
		||||
    "node_modules/regenerator-runtime": {
 | 
			
		||||
      "version": "0.14.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
 | 
			
		||||
      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
 | 
			
		||||
      "dev": true
 | 
			
		||||
      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/regexp.prototype.flags": {
 | 
			
		||||
      "version": "1.5.2",
 | 
			
		||||
@ -6793,6 +6831,18 @@
 | 
			
		||||
        "url": "https://github.com/sponsors/ljharb"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tailwind-merge": {
 | 
			
		||||
      "version": "2.3.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz",
 | 
			
		||||
      "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@babel/runtime": "^7.24.1"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "type": "github",
 | 
			
		||||
        "url": "https://github.com/sponsors/dcastil"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tailwindcss": {
 | 
			
		||||
      "version": "3.4.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz",
 | 
			
		||||
@ -6830,6 +6880,14 @@
 | 
			
		||||
        "node": ">=14.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tailwindcss-animate": {
 | 
			
		||||
      "version": "1.0.7",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz",
 | 
			
		||||
      "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==",
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "tailwindcss": ">=3.0.0 || insiders"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tapable": {
 | 
			
		||||
      "version": "2.2.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
 | 
			
		||||
 | 
			
		||||
@ -14,12 +14,17 @@
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@t3-oss/env-nextjs": "^0.10.1",
 | 
			
		||||
    "@vercel/postgres": "^0.8.0",
 | 
			
		||||
    "class-variance-authority": "^0.7.0",
 | 
			
		||||
    "clsx": "^2.1.1",
 | 
			
		||||
    "drizzle-orm": "^0.29.4",
 | 
			
		||||
    "geist": "^1.3.0",
 | 
			
		||||
    "lucide-react": "^0.379.0",
 | 
			
		||||
    "next": "^15.0.0-rc.0",
 | 
			
		||||
    "postgres": "^3.4.3",
 | 
			
		||||
    "react": "^19.0.0-rc-935180c7e0-20240524",
 | 
			
		||||
    "react-dom": "^19.0.0-rc-935180c7e0-20240524",
 | 
			
		||||
    "tailwind-merge": "^2.3.0",
 | 
			
		||||
    "tailwindcss-animate": "^1.0.7",
 | 
			
		||||
    "zod": "^3.23.8"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								src/lib/utils.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/lib/utils.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
import { type ClassValue, clsx } from "clsx"
 | 
			
		||||
import { twMerge } from "tailwind-merge"
 | 
			
		||||
 | 
			
		||||
export function cn(...inputs: ClassValue[]) {
 | 
			
		||||
  return twMerge(clsx(inputs))
 | 
			
		||||
}
 | 
			
		||||
@ -1,3 +1,76 @@
 | 
			
		||||
@tailwind base;
 | 
			
		||||
@tailwind components;
 | 
			
		||||
@tailwind utilities;
 | 
			
		||||
  @tailwind components;
 | 
			
		||||
  @tailwind utilities;
 | 
			
		||||
 | 
			
		||||
  @layer base {
 | 
			
		||||
    :root {
 | 
			
		||||
      --background: 0 0% 100%;
 | 
			
		||||
      --foreground: 222.2 84% 4.9%;
 | 
			
		||||
 | 
			
		||||
      --card: 0 0% 100%;
 | 
			
		||||
      --card-foreground: 222.2 84% 4.9%;
 | 
			
		||||
 | 
			
		||||
      --popover: 0 0% 100%;
 | 
			
		||||
      --popover-foreground: 222.2 84% 4.9%;
 | 
			
		||||
 | 
			
		||||
      --primary: 222.2 47.4% 11.2%;
 | 
			
		||||
      --primary-foreground: 210 40% 98%;
 | 
			
		||||
 | 
			
		||||
      --secondary: 210 40% 96.1%;
 | 
			
		||||
      --secondary-foreground: 222.2 47.4% 11.2%;
 | 
			
		||||
 | 
			
		||||
      --muted: 210 40% 96.1%;
 | 
			
		||||
      --muted-foreground: 215.4 16.3% 46.9%;
 | 
			
		||||
 | 
			
		||||
      --accent: 210 40% 96.1%;
 | 
			
		||||
      --accent-foreground: 222.2 47.4% 11.2%;
 | 
			
		||||
 | 
			
		||||
      --destructive: 0 84.2% 60.2%;
 | 
			
		||||
      --destructive-foreground: 210 40% 98%;
 | 
			
		||||
 | 
			
		||||
      --border: 214.3 31.8% 91.4%;
 | 
			
		||||
      --input: 214.3 31.8% 91.4%;
 | 
			
		||||
      --ring: 222.2 84% 4.9%;
 | 
			
		||||
 | 
			
		||||
      --radius: 0.5rem;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .dark {
 | 
			
		||||
      --background: 222.2 84% 4.9%;
 | 
			
		||||
      --foreground: 210 40% 98%;
 | 
			
		||||
 | 
			
		||||
      --card: 222.2 84% 4.9%;
 | 
			
		||||
      --card-foreground: 210 40% 98%;
 | 
			
		||||
 | 
			
		||||
      --popover: 222.2 84% 4.9%;
 | 
			
		||||
      --popover-foreground: 210 40% 98%;
 | 
			
		||||
 | 
			
		||||
      --primary: 210 40% 98%;
 | 
			
		||||
      --primary-foreground: 222.2 47.4% 11.2%;
 | 
			
		||||
 | 
			
		||||
      --secondary: 217.2 32.6% 17.5%;
 | 
			
		||||
      --secondary-foreground: 210 40% 98%;
 | 
			
		||||
 | 
			
		||||
      --muted: 217.2 32.6% 17.5%;
 | 
			
		||||
      --muted-foreground: 215 20.2% 65.1%;
 | 
			
		||||
 | 
			
		||||
      --accent: 217.2 32.6% 17.5%;
 | 
			
		||||
      --accent-foreground: 210 40% 98%;
 | 
			
		||||
 | 
			
		||||
      --destructive: 0 62.8% 30.6%;
 | 
			
		||||
      --destructive-foreground: 210 40% 98%;
 | 
			
		||||
 | 
			
		||||
      --border: 217.2 32.6% 17.5%;
 | 
			
		||||
      --input: 217.2 32.6% 17.5%;
 | 
			
		||||
      --ring: 212.7 26.8% 83.9%;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @layer base {
 | 
			
		||||
    * {
 | 
			
		||||
      @apply border-border;
 | 
			
		||||
    }
 | 
			
		||||
    body {
 | 
			
		||||
      @apply bg-background text-foreground;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@ -1,14 +1,80 @@
 | 
			
		||||
import { type Config } from "tailwindcss";
 | 
			
		||||
import { fontFamily } from "tailwindcss/defaultTheme";
 | 
			
		||||
import type { Config } from "tailwindcss"
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  content: ["./src/**/*.tsx"],
 | 
			
		||||
const config = {
 | 
			
		||||
  darkMode: ["class"],
 | 
			
		||||
  content: [
 | 
			
		||||
    './pages/**/*.{ts,tsx}',
 | 
			
		||||
    './components/**/*.{ts,tsx}',
 | 
			
		||||
    './app/**/*.{ts,tsx}',
 | 
			
		||||
    './src/**/*.{ts,tsx}',
 | 
			
		||||
	],
 | 
			
		||||
  prefix: "",
 | 
			
		||||
  theme: {
 | 
			
		||||
    container: {
 | 
			
		||||
      center: true,
 | 
			
		||||
      padding: "2rem",
 | 
			
		||||
      screens: {
 | 
			
		||||
        "2xl": "1400px",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    extend: {
 | 
			
		||||
      fontFamily: {
 | 
			
		||||
        sans: ["var(--font-geist-sans)", ...fontFamily.sans],
 | 
			
		||||
      colors: {
 | 
			
		||||
        border: "hsl(var(--border))",
 | 
			
		||||
        input: "hsl(var(--input))",
 | 
			
		||||
        ring: "hsl(var(--ring))",
 | 
			
		||||
        background: "hsl(var(--background))",
 | 
			
		||||
        foreground: "hsl(var(--foreground))",
 | 
			
		||||
        primary: {
 | 
			
		||||
          DEFAULT: "hsl(var(--primary))",
 | 
			
		||||
          foreground: "hsl(var(--primary-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        secondary: {
 | 
			
		||||
          DEFAULT: "hsl(var(--secondary))",
 | 
			
		||||
          foreground: "hsl(var(--secondary-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        destructive: {
 | 
			
		||||
          DEFAULT: "hsl(var(--destructive))",
 | 
			
		||||
          foreground: "hsl(var(--destructive-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        muted: {
 | 
			
		||||
          DEFAULT: "hsl(var(--muted))",
 | 
			
		||||
          foreground: "hsl(var(--muted-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        accent: {
 | 
			
		||||
          DEFAULT: "hsl(var(--accent))",
 | 
			
		||||
          foreground: "hsl(var(--accent-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        popover: {
 | 
			
		||||
          DEFAULT: "hsl(var(--popover))",
 | 
			
		||||
          foreground: "hsl(var(--popover-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        card: {
 | 
			
		||||
          DEFAULT: "hsl(var(--card))",
 | 
			
		||||
          foreground: "hsl(var(--card-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      borderRadius: {
 | 
			
		||||
        lg: "var(--radius)",
 | 
			
		||||
        md: "calc(var(--radius) - 2px)",
 | 
			
		||||
        sm: "calc(var(--radius) - 4px)",
 | 
			
		||||
      },
 | 
			
		||||
      keyframes: {
 | 
			
		||||
        "accordion-down": {
 | 
			
		||||
          from: { height: "0" },
 | 
			
		||||
          to: { height: "var(--radix-accordion-content-height)" },
 | 
			
		||||
        },
 | 
			
		||||
        "accordion-up": {
 | 
			
		||||
          from: { height: "var(--radix-accordion-content-height)" },
 | 
			
		||||
          to: { height: "0" },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      animation: {
 | 
			
		||||
        "accordion-down": "accordion-down 0.2s ease-out",
 | 
			
		||||
        "accordion-up": "accordion-up 0.2s ease-out",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  plugins: [],
 | 
			
		||||
} satisfies Config;
 | 
			
		||||
  plugins: [require("tailwindcss-animate")],
 | 
			
		||||
} satisfies Config
 | 
			
		||||
 | 
			
		||||
export default config
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user