+>(({ className, ...props }, ref) => (
+ [role=checkbox]]:translate-y-[2px]",
+ className
+ )}
+ {...props}
+ />
+))
+TableCell.displayName = "TableCell"
+
+const TableCaption = React.forwardRef<
+ HTMLTableCaptionElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => (
+
+))
+TableCaption.displayName = "TableCaption"
+
+export {
+ Table,
+ TableHeader,
+ TableBody,
+ TableFooter,
+ TableHead,
+ TableRow,
+ TableCell,
+ TableCaption,
+}
diff --git a/frontend/src/contexts/ThemeContext.tsx b/frontend/src/contexts/ThemeContext.tsx
new file mode 100644
index 0000000000..0c42a29762
--- /dev/null
+++ b/frontend/src/contexts/ThemeContext.tsx
@@ -0,0 +1 @@
+// ThemeContext
diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts
new file mode 100644
index 0000000000..bd0c391ddd
--- /dev/null
+++ b/frontend/src/lib/utils.ts
@@ -0,0 +1,6 @@
+import { clsx, type ClassValue } from "clsx"
+import { twMerge } from "tailwind-merge"
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs))
+}
diff --git a/frontend/src/services/questionService.ts b/frontend/src/services/questionService.ts
new file mode 100644
index 0000000000..6866bac6b0
--- /dev/null
+++ b/frontend/src/services/questionService.ts
@@ -0,0 +1 @@
+// export your fetchers here
diff --git a/frontend/src/types/Question.ts b/frontend/src/types/Question.ts
new file mode 100644
index 0000000000..5aeedd83a0
--- /dev/null
+++ b/frontend/src/types/Question.ts
@@ -0,0 +1,4 @@
+export type Question = {
+ id: String;
+ title: String;
+};
diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts
new file mode 100644
index 0000000000..eba03bfab5
--- /dev/null
+++ b/frontend/tailwind.config.ts
@@ -0,0 +1,67 @@
+import type { Config } from "tailwindcss";
+
+const config: Config = {
+ darkMode: ["class"],
+ content: [
+ "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
+ "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
+ "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
+ ],
+ theme: {
+ extend: {
+ colors: {
+ background: {
+ DEFAULT: "var(--background)",
+ 100: "var(--background-100)",
+ 200: "var(--background-200)",
+ },
+ foreground: "var(--foreground)",
+ card: {
+ DEFAULT: "var(--card)",
+ foreground: "var(--card-foreground)",
+ },
+ popover: {
+ DEFAULT: "var(--popover)",
+ foreground: "var(--popover-foreground)",
+ },
+ primary: {
+ DEFAULT: "var(--primary)",
+ foreground: "var(--primary-foreground)",
+ },
+ secondary: {
+ DEFAULT: "var(--secondary)",
+ foreground: "var(--secondary-foreground)",
+ },
+ muted: {
+ DEFAULT: "var(--muted)",
+ foreground: "var(--muted-foreground)",
+ },
+ accent: {
+ DEFAULT: "var(--accent)",
+ foreground: "var(--accent-foreground)",
+ },
+ destructive: {
+ DEFAULT: "var(--destructive)",
+ foreground: "var(--destructive-foreground)",
+ },
+ border: "var(--border)",
+ input: "var(--input)",
+ ring: "var(--ring)",
+ chart: {
+ "1": "var(--chart-1)",
+ "2": "var(--chart-2)",
+ "3": "var(--chart-3)",
+ "4": "var(--chart-4)",
+ "5": "var(--chart-5)",
+ },
+ },
+ borderRadius: {
+ lg: "var(--radius)",
+ md: "calc(var(--radius) - 2px)",
+ sm: "calc(var(--radius) - 4px)",
+ },
+ },
+ },
+ plugins: [require("tailwindcss-animate")],
+};
+export default config;
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
new file mode 100644
index 0000000000..7b28589304
--- /dev/null
+++ b/frontend/tsconfig.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
|