mirror of
https://github.com/trushildhokiya/allininx-2.git
synced 2025-03-15 11:38:40 +00:00
commit -3
This commit is contained in:
parent
bdfe11f039
commit
33d251cec0
7
next/.dockerignore
Normal file
7
next/.dockerignore
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
**/.git
|
||||||
|
**/node_modules
|
||||||
|
**/idea
|
||||||
|
**/.next
|
||||||
|
**/aws
|
||||||
|
**/.husky
|
||||||
|
**/venv
|
73
next/.eslintrc.json
Normal file
73
next/.eslintrc.json
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"plugin:@typescript-eslint/recommended-requiring-type-checking"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"*.ts",
|
||||||
|
"*.tsx"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"project": "tsconfig.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"parserOptions": {
|
||||||
|
"project": "./tsconfig.json"
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"@typescript-eslint", "import"
|
||||||
|
],
|
||||||
|
"extends": [
|
||||||
|
"next/core-web-vitals",
|
||||||
|
"plugin:@typescript-eslint/recommended"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"@typescript-eslint/consistent-type-imports": "warn",
|
||||||
|
"@typescript-eslint/no-unused-vars": "off",
|
||||||
|
"@typescript-eslint/no-unsafe-return": "off",
|
||||||
|
"@typescript-eslint/no-unsafe-member-access": "off",
|
||||||
|
"@typescript-eslint/no-unsafe-call": "off",
|
||||||
|
"@typescript-eslint/no-unsafe-assignment": "off",
|
||||||
|
"@typescript-eslint/no-unsafe-argument": "off",
|
||||||
|
"@typescript-eslint/ban-ts-comment": "off",
|
||||||
|
"@typescript-eslint/no-restricted-imports": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"name": "react-i18next",
|
||||||
|
"importNames": [
|
||||||
|
"useTranslation"
|
||||||
|
],
|
||||||
|
"message": "Import useTranslation from next-i18next instead."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"import/no-unresolved": "error",
|
||||||
|
// "import/no-named-as-default-member": "off",
|
||||||
|
"import/order": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"groups": [
|
||||||
|
"builtin", // Built-in imports (come from NodeJS native) go first
|
||||||
|
"external", // <- External imports
|
||||||
|
"internal", // <- Absolute imports
|
||||||
|
["sibling", "parent"], // <- Relative imports, the sibling and parent types they can be mingled together
|
||||||
|
"index", // <- index imports
|
||||||
|
"unknown" // <- unknown
|
||||||
|
],
|
||||||
|
"newlines-between": "always",
|
||||||
|
"alphabetize": {
|
||||||
|
/* sort in ascending order. Options: ["ignore", "asc", "desc"] */
|
||||||
|
"order": "asc",
|
||||||
|
/* ignore case. Options: [true, false] */
|
||||||
|
"caseInsensitive": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
53
next/.gitignore
vendored
Normal file
53
next/.gitignore
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
/node_modules
|
||||||
|
/.pnp
|
||||||
|
.pnp.js
|
||||||
|
|
||||||
|
# testing
|
||||||
|
/coverage
|
||||||
|
|
||||||
|
# database
|
||||||
|
/prisma/db.sqlite
|
||||||
|
/prisma/db.sqlite-journal
|
||||||
|
/db/db.sqlite
|
||||||
|
|
||||||
|
# next.js
|
||||||
|
/.next/
|
||||||
|
/out/
|
||||||
|
next-env.d.ts
|
||||||
|
|
||||||
|
# production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.DS_Store
|
||||||
|
*.pem
|
||||||
|
|
||||||
|
# debug
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables
|
||||||
|
.env*
|
||||||
|
|
||||||
|
# vercel
|
||||||
|
.vercel
|
||||||
|
|
||||||
|
# typescript
|
||||||
|
*.tsbuildinfo
|
||||||
|
.idea
|
||||||
|
.swc
|
||||||
|
|
||||||
|
# extracted language files
|
||||||
|
/public/locales/$LOCALES
|
||||||
|
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Sentry Auth Token
|
||||||
|
.sentryclirc
|
||||||
|
/volumes/
|
39
next/Dockerfile
Normal file
39
next/Dockerfile
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Use the official Node.js image as the base image
|
||||||
|
FROM node:19-alpine
|
||||||
|
|
||||||
|
ARG NODE_ENV
|
||||||
|
|
||||||
|
ENV NODE_ENV=$NODE_ENV
|
||||||
|
|
||||||
|
# Needed for the wait-for-db script
|
||||||
|
RUN apk add --no-cache netcat-openbsd
|
||||||
|
|
||||||
|
# Set the working directory
|
||||||
|
WORKDIR /next
|
||||||
|
|
||||||
|
# Copy package.json and package-lock.json to the working directory
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
# Copy the wait-for-db.sh script
|
||||||
|
COPY wait-for-db.sh /usr/local/bin/wait-for-db.sh
|
||||||
|
RUN chmod +x /usr/local/bin/wait-for-db.sh
|
||||||
|
|
||||||
|
# Copy the rest of the application code
|
||||||
|
COPY . .
|
||||||
|
COPY entrypoint.sh /
|
||||||
|
|
||||||
|
# Ensure correct line endings after these files are edited by windows
|
||||||
|
RUN apk add --no-cache dos2unix netcat-openbsd \
|
||||||
|
&& dos2unix /entrypoint.sh
|
||||||
|
|
||||||
|
|
||||||
|
# Expose the port the app will run on
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
ENTRYPOINT ["sh", "/entrypoint.sh"]
|
||||||
|
|
||||||
|
# Start the application
|
||||||
|
CMD ["npm", "run", "dev"]
|
28
next/entrypoint.sh
Normal file
28
next/entrypoint.sh
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
cd /next
|
||||||
|
dos2unix wait-for-db.sh
|
||||||
|
|
||||||
|
# copy .env file if not exists
|
||||||
|
[ ! -f .env ] && [ -f .env.example ] && cp .env.example .env
|
||||||
|
cp .env .env.temp
|
||||||
|
dos2unix .env.temp
|
||||||
|
cat .env.temp > .env
|
||||||
|
rm .env.temp
|
||||||
|
|
||||||
|
source .env
|
||||||
|
|
||||||
|
# Ensure DB is available before running Prisma commands
|
||||||
|
./wait-for-db.sh agentgpt_db 3307
|
||||||
|
|
||||||
|
# Run Prisma commands
|
||||||
|
if [[ ! -f "/app/prisma/${DATABASE_URL:5}" ]]; then
|
||||||
|
npx prisma migrate deploy --name init
|
||||||
|
npx prisma db push
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generate Prisma client
|
||||||
|
npx prisma generate
|
||||||
|
|
||||||
|
# run cmd
|
||||||
|
exec "$@"
|
19
next/jest.config.cjs
Normal file
19
next/jest.config.cjs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
const nextJest = require("next/jest");
|
||||||
|
|
||||||
|
const createJestConfig = nextJest({
|
||||||
|
// Provide the path to your Next.js app to load next.config.js and .env files in your test environment
|
||||||
|
dir: "./",
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add any custom config to be passed to Jest
|
||||||
|
/** @type {import('jest').Config} */
|
||||||
|
const customJestConfig = {
|
||||||
|
// Add more setup options before each test is run
|
||||||
|
// setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
|
||||||
|
// if using TypeScript with a baseUrl set to the root directory then you need the below for alias' to work
|
||||||
|
moduleDirectories: ["node_modules", "<rootDir>/"],
|
||||||
|
testEnvironment: "jest-environment-jsdom",
|
||||||
|
};
|
||||||
|
|
||||||
|
// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async
|
||||||
|
module.exports = createJestConfig(customJestConfig);
|
36
next/next-i18next.config.js
Normal file
36
next/next-i18next.config.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
module.exports = {
|
||||||
|
i18n: {
|
||||||
|
defaultLocale: "en",
|
||||||
|
locales: [
|
||||||
|
"en",
|
||||||
|
"hu",
|
||||||
|
"fr",
|
||||||
|
"de",
|
||||||
|
"it",
|
||||||
|
"ja",
|
||||||
|
"lt",
|
||||||
|
"zh",
|
||||||
|
"zhtw",
|
||||||
|
"ko",
|
||||||
|
"pl",
|
||||||
|
"pt",
|
||||||
|
"ro",
|
||||||
|
"ru",
|
||||||
|
"uk",
|
||||||
|
"es",
|
||||||
|
"nl",
|
||||||
|
"sk",
|
||||||
|
"hr",
|
||||||
|
"tr",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
localePath: typeof window === "undefined" ? "./public/locales" : "/locales",
|
||||||
|
debug: false,
|
||||||
|
reloadOnPrerender: process.env.NODE_ENV === "development",
|
||||||
|
defaultNS: "common",
|
||||||
|
ns: ["common", "help", "settings", "chat", "agent", "errors", "languages", "drawer", "indexPage"],
|
||||||
|
react: {
|
||||||
|
useSuspense: false,
|
||||||
|
},
|
||||||
|
saveMissing: true,
|
||||||
|
};
|
47
next/next.config.mjs
Normal file
47
next/next.config.mjs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import nextI18NextConfig from "./next-i18next.config.js";
|
||||||
|
|
||||||
|
// @ts-check
|
||||||
|
/**
|
||||||
|
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation.
|
||||||
|
* This is especially useful for Docker builds.
|
||||||
|
*/
|
||||||
|
!process.env.SKIP_ENV_VALIDATION && (await import("./src/env/server.mjs"));
|
||||||
|
|
||||||
|
/** @type {import("next").NextConfig} */
|
||||||
|
const config = {
|
||||||
|
reactStrictMode: true,
|
||||||
|
/* If trying out the experimental appDir, comment the i18n config out
|
||||||
|
* @see https://github.com/vercel/next.js/issues/41980 */
|
||||||
|
i18n: nextI18NextConfig.i18n,
|
||||||
|
webpack: function(config, options) {
|
||||||
|
config.experiments = { asyncWebAssembly: true, layers: true };
|
||||||
|
config.watchOptions = {
|
||||||
|
poll: 1000,
|
||||||
|
aggregateTimeout: 300
|
||||||
|
};
|
||||||
|
config.module.rules.push({
|
||||||
|
test: /\.svg$/i,
|
||||||
|
issuer: /\.[jt]sx?$/,
|
||||||
|
use: ['@svgr/webpack'],
|
||||||
|
})
|
||||||
|
return config;
|
||||||
|
},
|
||||||
|
rewrites() {
|
||||||
|
return {
|
||||||
|
beforeFiles: [
|
||||||
|
{
|
||||||
|
source: '/:path*',
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: 'host',
|
||||||
|
value: 'reworkd.ai',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
destination: '/landing-page',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
33492
next/package-lock.json
generated
Normal file
33492
next/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
107
next/package.json
Normal file
107
next/package.json
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
{
|
||||||
|
"name": "agent-gpt",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"private": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0 <19.0.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "next build --no-lint",
|
||||||
|
"dev": "next dev",
|
||||||
|
"postinstall": "prisma generate",
|
||||||
|
"lint": "cross-env SKIP_ENV_VALIDATION=1 next lint --fix",
|
||||||
|
"start": "next start",
|
||||||
|
"prepare": "cd .. && husky install next/.husky",
|
||||||
|
"test": "cross-env SKIP_ENV_VALIDATION=1 jest"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@headlessui/react": "^1.7.14",
|
||||||
|
"@next-auth/prisma-adapter": "^1.0.5",
|
||||||
|
"@prisma/client": "^4.9.0",
|
||||||
|
"@privy-io/react-auth": "^2.0.8",
|
||||||
|
"@radix-ui/react-switch": "^1.0.2",
|
||||||
|
"@radix-ui/react-toast": "^1.1.4",
|
||||||
|
"@radix-ui/react-tooltip": "^1.0.5",
|
||||||
|
"@react-pdf/renderer": "^3.1.9",
|
||||||
|
"@sid-hq/sid": "^3.1.0",
|
||||||
|
"@splinetool/react-spline": "^2.2.6",
|
||||||
|
"@tailwindcss/forms": "^0.5.3",
|
||||||
|
"@tanstack/react-query": "^4.29.14",
|
||||||
|
"@trpc/client": "^10.21.1",
|
||||||
|
"@trpc/next": "^10.21.1",
|
||||||
|
"@trpc/react-query": "^10.21.1",
|
||||||
|
"@trpc/server": "^10.9.0",
|
||||||
|
"@types/lodash": "^4.14.194",
|
||||||
|
"@uiball/loaders": "^1.3.0",
|
||||||
|
"@vercel/analytics": "^1.0.1",
|
||||||
|
"@vercel/edge": "^0.3.4",
|
||||||
|
"axios": "^0.26.0",
|
||||||
|
"cheerio": "^1.0.0-rc.12",
|
||||||
|
"clsx": "^1.2.1",
|
||||||
|
"cobe": "^0.6.3",
|
||||||
|
"cookies-next": "^2.1.2",
|
||||||
|
"framer-motion": "^10.12.8",
|
||||||
|
"gray-matter": "^4.0.3",
|
||||||
|
"html-to-image": "^1.11.11",
|
||||||
|
"i18next": "^22.4.15",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"lucide-react": "^0.473.0",
|
||||||
|
"motion": "^12.0.1",
|
||||||
|
"next": "^13.5.6",
|
||||||
|
"next-auth": "4.20.1",
|
||||||
|
"next-i18next": "^13.2.2",
|
||||||
|
"nextjs-google-analytics": "^2.3.3",
|
||||||
|
"openai": "^4.14.2",
|
||||||
|
"react": "18.2.0",
|
||||||
|
"react-dom": "18.2.0",
|
||||||
|
"react-i18next": "^12.3.1",
|
||||||
|
"react-icons": "^4.11.0",
|
||||||
|
"react-markdown": "^8.0.7",
|
||||||
|
"react-type-animation": "^3.1.0",
|
||||||
|
"rehype-highlight": "^6.0.0",
|
||||||
|
"remark-gfm": "^3.0.1",
|
||||||
|
"simplex-noise": "^4.0.3",
|
||||||
|
"superjson": "1.9.1",
|
||||||
|
"tailwind-merge": "^2.6.0",
|
||||||
|
"tailwindcss-radix": "^2.8.0",
|
||||||
|
"uuid": "^9.0.1",
|
||||||
|
"viem": "^2.23.2",
|
||||||
|
"zod": "^3.22.2",
|
||||||
|
"zustand": "^4.3.7"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@svgr/webpack": "^8.0.1",
|
||||||
|
"@tailwindcss/typography": "^0.5.9",
|
||||||
|
"@testing-library/jest-dom": "^5.16.5",
|
||||||
|
"@testing-library/react": "^14.0.0",
|
||||||
|
"@types/node": "^18.11.18",
|
||||||
|
"@types/prettier": "^2.7.3",
|
||||||
|
"@types/react": "^18.0.26",
|
||||||
|
"@types/react-dom": "^18.2.7",
|
||||||
|
"@types/uuid": "^9.0.5",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.59.8",
|
||||||
|
"@typescript-eslint/parser": "^5.59.1",
|
||||||
|
"autoprefixer": "^10.4.7",
|
||||||
|
"cross-env": "^7.0.3",
|
||||||
|
"eslint": "^8.43.0",
|
||||||
|
"eslint-config-next": "13.4.1",
|
||||||
|
"eslint-plugin-import": "^2.27.5",
|
||||||
|
"husky": "^8.0.3",
|
||||||
|
"jest": "^29.3.1",
|
||||||
|
"jest-environment-jsdom": "^29.7.0",
|
||||||
|
"lint-staged": "^13.2.1",
|
||||||
|
"postcss": "^8.4.24",
|
||||||
|
"prettier": "^2.8.8",
|
||||||
|
"prettier-plugin-tailwindcss": "^0.2.8",
|
||||||
|
"prisma": "^4.9.0",
|
||||||
|
"tailwindcss": "^3.3.2",
|
||||||
|
"typescript": "^5.1.3"
|
||||||
|
},
|
||||||
|
"ct3aMetadata": {
|
||||||
|
"initVersion": "7.4.0"
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"*.js": "eslint --cache --fix",
|
||||||
|
"*.{js,css,md}": "prettier --write"
|
||||||
|
}
|
||||||
|
}
|
6
next/postcss.config.cjs
Normal file
6
next/postcss.config.cjs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
tailwindcss: {},
|
||||||
|
autoprefixer: {},
|
||||||
|
},
|
||||||
|
};
|
5
next/prettier.config.cjs
Normal file
5
next/prettier.config.cjs
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/** @type {import("prettier").Config} */
|
||||||
|
module.exports = {
|
||||||
|
plugins: [require.resolve("prettier-plugin-tailwindcss")],
|
||||||
|
printWidth: 100
|
||||||
|
};
|
290
next/tailwind.config.cjs
Normal file
290
next/tailwind.config.cjs
Normal file
@ -0,0 +1,290 @@
|
|||||||
|
/** @type {import("tailwindcss").Config} */
|
||||||
|
const defaultTheme = require("tailwindcss/defaultTheme");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
content: [
|
||||||
|
"./src/**/*.{js,ts,jsx,tsx}",
|
||||||
|
"./node_modules/@tremor/**/*.{js,ts,jsx,tsx}",
|
||||||
|
],
|
||||||
|
darkMode: "class",
|
||||||
|
theme: {
|
||||||
|
transparent: "transparent",
|
||||||
|
current: "currentColor",
|
||||||
|
screens: {
|
||||||
|
"xs": "300px",
|
||||||
|
"xmd": "850px",
|
||||||
|
"sm-h": { "raw": "(min-height: 700px)" },
|
||||||
|
"md-h": { "raw": "(min-height: 800px)" },
|
||||||
|
"lg-h": { "raw": "(min-height: 1000px)" },
|
||||||
|
|
||||||
|
...defaultTheme.screens
|
||||||
|
},
|
||||||
|
extend: {
|
||||||
|
animation: {
|
||||||
|
ripple: "ripple var(--duration,2s) ease calc(var(--i, 0)*.2s) infinite",
|
||||||
|
},
|
||||||
|
keyframes: {
|
||||||
|
ripple: {
|
||||||
|
"0%, 100%": {
|
||||||
|
transform: "translate(-50%, -50%) scale(1)",
|
||||||
|
},
|
||||||
|
"50%": {
|
||||||
|
transform: "translate(-50%, -50%) scale(0.9)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
typography: (theme) => ({
|
||||||
|
DEFAULT: {
|
||||||
|
css: {
|
||||||
|
color: theme('colors.gray.900'), // Change color as per your need
|
||||||
|
a: {
|
||||||
|
color: theme('colors.blue.500'), // Change color as per your need
|
||||||
|
'&:hover': {
|
||||||
|
color: theme('colors.blue.600'), // Change color as per your need
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'h1,h2,h3,h4': {
|
||||||
|
color: theme('colors.white'), // This is where you change your heading color
|
||||||
|
},
|
||||||
|
'b,strong': {
|
||||||
|
color: theme('colors.gray.500'), // This is where you change your bold text color
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
backgroundImage: {
|
||||||
|
'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', // Add bg-gradient-radial for radial gradients
|
||||||
|
},
|
||||||
|
boxShadow: {
|
||||||
|
"xs": "0px 0px 0px 0.75px rgba(0, 0, 0, 0.05), 0px 2px 4px rgba(0, 0, 0, 0.05)",
|
||||||
|
// light
|
||||||
|
"tremor-input": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
||||||
|
"tremor-card": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
|
||||||
|
"tremor-dropdown": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
||||||
|
// dark
|
||||||
|
"dark-tremor-input": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
||||||
|
"dark-tremor-card": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
|
||||||
|
"dark-tremor-dropdown": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
|
||||||
|
|
||||||
|
"depth-1": "0 2px 4px 0 rgba(0, 0, 0, 0.05), 0 0 0 0.75px rgba(0, 0, 0, 0.05), 0 0 12px -2px rgba(0, 0, 0, 0.05)",
|
||||||
|
"depth-2": "0 0 0 0.75px rgba(0, 0, 0, 0.05), 0 8px 32px 0 rgba(39, 40, 51, 0.05), 0 4px 16px 0 rgba(39, 40, 51, 0.05)",
|
||||||
|
"depth-3": "0 0 0 0.75px rgba(0, 0, 0, 0.05), 0 8px 32px 0 rgba(39, 40, 51, 0.05), 0 4px 16px 0 rgba(39, 40, 51, 0.05), 0 8px 24px -4px rgba(0, 0, 0, 0.20)"
|
||||||
|
},
|
||||||
|
borderRadius: {
|
||||||
|
"tremor-small": "0.375rem",
|
||||||
|
"tremor-default": "0.5rem",
|
||||||
|
"tremor-full": "9999px",
|
||||||
|
},
|
||||||
|
fontSize: {
|
||||||
|
"tremor-label": ["0.75rem"],
|
||||||
|
"tremor-default": ["0.875rem", { lineHeight: "1.25rem" }],
|
||||||
|
"tremor-title": ["1.125rem", { lineHeight: "1.75rem" }],
|
||||||
|
"tremor-metric": ["1.875rem", { lineHeight: "2.25rem" }],
|
||||||
|
},
|
||||||
|
fontFamily: {
|
||||||
|
inter: ["Inter", ...defaultTheme.fontFamily.sans]
|
||||||
|
},
|
||||||
|
|
||||||
|
colors: {
|
||||||
|
slate: {
|
||||||
|
1: "#FBFCFD",
|
||||||
|
2: "#F8F9FA",
|
||||||
|
3: "#F1F3F5",
|
||||||
|
4: "#ECEEF0",
|
||||||
|
5: "#E6E8EB",
|
||||||
|
6: "#DFE3E6",
|
||||||
|
7: "#D7DBDF",
|
||||||
|
8: "#C1C8CD",
|
||||||
|
9: "#889096",
|
||||||
|
10: "#7E868C",
|
||||||
|
11: "#687076",
|
||||||
|
12: "#11181C",
|
||||||
|
},
|
||||||
|
// light mode
|
||||||
|
tremor: {
|
||||||
|
brand: {
|
||||||
|
faint: "#eff6ff", // blue-50
|
||||||
|
muted: "#bfdbfe", // blue-200
|
||||||
|
subtle: "#60a5fa", // blue-400
|
||||||
|
DEFAULT: "#3b82f6", // blue-500
|
||||||
|
emphasis: "#1d4ed8", // blue-700
|
||||||
|
inverted: "#ffffff", // white
|
||||||
|
},
|
||||||
|
background: {
|
||||||
|
muted: "#f9fafb", // gray-50
|
||||||
|
subtle: "#f3f4f6", // gray-100
|
||||||
|
DEFAULT: "#ffffff", // white
|
||||||
|
emphasis: "#374151", // gray-700
|
||||||
|
},
|
||||||
|
border: {
|
||||||
|
DEFAULT: "#e5e7eb", // gray-200
|
||||||
|
},
|
||||||
|
ring: {
|
||||||
|
DEFAULT: "#e5e7eb", // gray-200
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
subtle: "#9ca3af", // gray-400
|
||||||
|
DEFAULT: "#6b7280", // gray-500
|
||||||
|
emphasis: "#374151", // gray-700
|
||||||
|
strong: "#111827", // gray-900
|
||||||
|
inverted: "#ffffff", // white
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// dark mode
|
||||||
|
"dark-tremor": {
|
||||||
|
brand: {
|
||||||
|
faint: "#0B1229", // custom
|
||||||
|
muted: "#172554", // blue-950
|
||||||
|
subtle: "#1e40af", // blue-800
|
||||||
|
DEFAULT: "#3b82f6", // blue-500
|
||||||
|
emphasis: "#60a5fa", // blue-400
|
||||||
|
inverted: "#030712", // gray-950
|
||||||
|
},
|
||||||
|
background: {
|
||||||
|
muted: "#131A2B", // custom
|
||||||
|
subtle: "#1f2937", // gray-800
|
||||||
|
DEFAULT: "#111827", // gray-900
|
||||||
|
emphasis: "#d1d5db", // gray-300
|
||||||
|
},
|
||||||
|
border: {
|
||||||
|
DEFAULT: "#1f2937", // gray-800
|
||||||
|
},
|
||||||
|
ring: {
|
||||||
|
DEFAULT: "#1f2937", // gray-800
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
subtle: "#4b5563", // gray-600
|
||||||
|
DEFAULT: "#6b7280", // gray-600
|
||||||
|
emphasis: "#e5e7eb", // gray-200
|
||||||
|
strong: "#f9fafb", // gray-50
|
||||||
|
inverted: "#000000", // black
|
||||||
|
},
|
||||||
|
},
|
||||||
|
blue: {
|
||||||
|
base: {
|
||||||
|
dark: "hsl(199, 89%, 48%)",
|
||||||
|
light: "hsl(199, 89%, 48%)",
|
||||||
|
},
|
||||||
|
hover: {
|
||||||
|
dark: "hsl(199, 80%, 30%)",
|
||||||
|
light: "hsl(199, 90%, 40%)",
|
||||||
|
},
|
||||||
|
focusVisible: {
|
||||||
|
dark: "hsl(208, 79%, 51%)",
|
||||||
|
light: "hsl(208, 79%, 55%)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
amber: {
|
||||||
|
base: {
|
||||||
|
dark: "hsl(39, 100%, 50%)",
|
||||||
|
light: "hsl(45, 100%, 50%)",
|
||||||
|
},
|
||||||
|
hover: {
|
||||||
|
dark: "hsl(39, 100%, 40%)",
|
||||||
|
light: "hsl(45, 100%, 45%)",
|
||||||
|
},
|
||||||
|
focusVisible: {
|
||||||
|
dark: "hsl(39, 85%, 30%)",
|
||||||
|
light: "hsl(45, 85%, 35%)",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
red: {
|
||||||
|
base: {
|
||||||
|
dark: "hsl(3, 100%, 61%)",
|
||||||
|
light: "hsl(3, 100%, 59%)",
|
||||||
|
},
|
||||||
|
hover: {
|
||||||
|
dark: "hsl(3, 100% 45%)",
|
||||||
|
light: "hsl(3, 100%, 40%)",
|
||||||
|
},
|
||||||
|
focusVisible: {
|
||||||
|
dark: "hsl(3, 85%, 40%)",
|
||||||
|
light: "hsl(3, 85%, 35%)",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
green: {
|
||||||
|
base: {
|
||||||
|
dark: "hsl(143, 71%, 45%)",
|
||||||
|
light: "hsl(143, 71%, 40%)",
|
||||||
|
},
|
||||||
|
hover: {
|
||||||
|
dark: "hsl(143, 65%, 40%)",
|
||||||
|
light: "hsl(143, 71%, 33%)",
|
||||||
|
},
|
||||||
|
focusVisible: {
|
||||||
|
dark: "hsl(143, 65%, 35%)",
|
||||||
|
light: "hsl(143, 71%, 30%)",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
shade: {
|
||||||
|
100: {
|
||||||
|
dark: "hsl(0, 0%, 100%)",
|
||||||
|
light: "hsl(0, 0%, 0%)",
|
||||||
|
},
|
||||||
|
200: {
|
||||||
|
dark: "hsl(240, 3%, 69%)",
|
||||||
|
light: "hsl(240, 2%, 30%)",
|
||||||
|
},
|
||||||
|
300: {
|
||||||
|
dark: "hsl(240, 2%, 49%)",
|
||||||
|
light: "hsl(240, 2%, 57%)",
|
||||||
|
},
|
||||||
|
400: {
|
||||||
|
dark: "hsl(240, 1%, 33%)",
|
||||||
|
light: "hsl(240, 3%, 69%)",
|
||||||
|
},
|
||||||
|
500: {
|
||||||
|
dark: "hsl(240, 1%, 27%)",
|
||||||
|
light: "hsl(240, 5%, 79%)",
|
||||||
|
},
|
||||||
|
600: {
|
||||||
|
dark: "hsl(240, 2%, 22%)",
|
||||||
|
light: "hsl(240, 6%, 83%)",
|
||||||
|
},
|
||||||
|
700: {
|
||||||
|
dark: "hsl(240, 3%, 15%)",
|
||||||
|
light: "hsl(240, 11%, 91%)",
|
||||||
|
},
|
||||||
|
800: {
|
||||||
|
dark: "hsl(240, 6%, 10%)",
|
||||||
|
light: "hsl(240, 24%, 96%)",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
safelist: [
|
||||||
|
{
|
||||||
|
pattern:
|
||||||
|
/^(bg-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/,
|
||||||
|
variants: ["hover", "ui-selected"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern:
|
||||||
|
/^(text-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/,
|
||||||
|
variants: ["hover", "ui-selected"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern:
|
||||||
|
/^(border-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/,
|
||||||
|
variants: ["hover", "ui-selected"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern:
|
||||||
|
/^(ring-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern:
|
||||||
|
/^(stroke-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern:
|
||||||
|
/^(fill-(?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(?:50|100|200|300|400|500|600|700|800|900|950))$/,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
plugins: [
|
||||||
|
require('@tailwindcss/typography'),
|
||||||
|
require('@tailwindcss/forms'),
|
||||||
|
require("tailwindcss-radix"),
|
||||||
|
]
|
||||||
|
};
|
29
next/tsconfig.json
Normal file
29
next/tsconfig.json
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"target": "es2017",
|
||||||
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"incremental": true,
|
||||||
|
"noUncheckedIndexedAccess": true
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"next-env.d.ts",
|
||||||
|
"**/*.ts",
|
||||||
|
"**/*.tsx",
|
||||||
|
"**/*.cjs",
|
||||||
|
"**/*.mjs",
|
||||||
|
"**/*.js"
|
||||||
|
],
|
||||||
|
"exclude": ["node_modules", "venv"]
|
||||||
|
}
|
11
next/wait-for-db.sh
Normal file
11
next/wait-for-db.sh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
host="$1"
|
||||||
|
port="$2"
|
||||||
|
|
||||||
|
until echo "SELECT 1;" | nc "$host" "$port" > /dev/null 2>&1; do
|
||||||
|
>&2 echo "Database is unavailable - Sleeping..."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
>&2 echo "Database is available! Continuing..."
|
Loading…
x
Reference in New Issue
Block a user