Upload 16 files
Browse files- .gitattributes +1 -0
- Dockerfile +26 -0
- LICENSE +21 -0
- README.md +117 -5
- bun.lockb +3 -0
- components.json +20 -0
- eslint.config.js +29 -0
- index.html +18 -0
- nginx.conf +32 -0
- package-lock.json +0 -0
- package.json +84 -0
- postcss.config.js +6 -0
- tailwind.config.ts +56 -0
- tsconfig.app.json +30 -0
- tsconfig.json +19 -0
- tsconfig.node.json +22 -0
- vite.config.ts +27 -0
.gitattributes
CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
bun.lockb filter=lfs diff=lfs merge=lfs -text
|
Dockerfile
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Build stage
|
2 |
+
FROM node:20-slim AS builder
|
3 |
+
|
4 |
+
# Set working directory
|
5 |
+
WORKDIR /app
|
6 |
+
|
7 |
+
# Copy package files
|
8 |
+
COPY package*.json ./
|
9 |
+
|
10 |
+
# Install dependencies
|
11 |
+
RUN npm install
|
12 |
+
|
13 |
+
# Copy project files
|
14 |
+
COPY . .
|
15 |
+
|
16 |
+
# Build the app
|
17 |
+
RUN npm run build
|
18 |
+
|
19 |
+
# Install serve
|
20 |
+
RUN npm install -g serve
|
21 |
+
|
22 |
+
# Expose port 7860 (default for Hugging Face Spaces)
|
23 |
+
EXPOSE 7860
|
24 |
+
|
25 |
+
# Start server
|
26 |
+
CMD ["serve", "-s", "dist", "-l", "7860"]
|
LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2025 Hugging Face
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
README.md
CHANGED
@@ -1,10 +1,122 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
-
colorTo:
|
6 |
sdk: docker
|
7 |
pinned: false
|
8 |
---
|
9 |
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
+
title: AI Deadlines
|
3 |
+
emoji: ⚡
|
4 |
+
colorFrom: gray
|
5 |
+
colorTo: blue
|
6 |
sdk: docker
|
7 |
pinned: false
|
8 |
---
|
9 |
|
10 |
+
# AI Conference Deadlines
|
11 |
+
|
12 |
+
A web app to quickly see submission deadlines to top AI conferences, such as NeurIPS and ICLR.
|
13 |
+
|
14 |
+
This helps researchers in quickly seeing when to submit their paper.
|
15 |
+
|
16 |
+
Note: papers can be submitted at any time to [hf.co/papers](https://hf.co/papers) at [hf.co/papers/submit](https://hf.co/papers/submit), assuming the paper is available on [Arxiv](https://arxiv.org/).
|
17 |
+
|
18 |
+
The benefit of hf.co/papers is that it allows people to quickly find related artifacts, such as models, datasets and demos. See [this paper page](https://huggingface.co/papers/2502.04328) as a nice example - it has 3 models, 1 dataset and 1 demo linked.
|
19 |
+
|
20 |
+
## Project info
|
21 |
+
|
22 |
+
This project is entirely based on the awesome https://github.com/paperswithcode/ai-deadlines. As that repository is no longer maintained, we decided to make an up-to-date version along with a new UI. It was bootstrapped using [Lovable](https://lovable.dev/) and [Cursor](https://www.cursor.com/).
|
23 |
+
|
24 |
+
New data is fetched from https://github.com/ccfddl/ccf-deadlines/tree/main/conference/AI thanks to [this comment](https://github.com/paperswithcode/ai-deadlines/issues/723#issuecomment-2603420945).
|
25 |
+
|
26 |
+
A CRON job (set up as a [Github action](.github/workflows/update-conferences.yml)) automatically updates the data present at src/data/conferences.yml.
|
27 |
+
|
28 |
+
**URL**: https://huggingface.co/spaces/huggingface/ai-deadlines
|
29 |
+
|
30 |
+
## Contribute
|
31 |
+
|
32 |
+
Contributions are very welcome!
|
33 |
+
|
34 |
+
To keep things minimal, we mainly focus on top-tier conferences in AI.
|
35 |
+
|
36 |
+
To add or update a deadline:
|
37 |
+
- Fork the repository
|
38 |
+
- Update [src/data/conferences.yml](src/data/conferences.yml)
|
39 |
+
- Make sure it has the `title`, `year`, `id`, `link`, `deadline`, `timezone`, `date`, `place`, `tags` attributes
|
40 |
+
+ See available timezone strings [here](https://momentjs.com/timezone/).
|
41 |
+
- Optionally add a `note` and `abstract_deadline` in case the conference has a separate mandatory abstract deadline
|
42 |
+
- Optionally add `hindex` (refers to h5-index from [here](https://scholar.google.com/citations?view_op=top_venues&vq=eng))
|
43 |
+
- Example:
|
44 |
+
```yaml
|
45 |
+
- title: BestConf
|
46 |
+
year: 2022
|
47 |
+
id: bestconf22 # title as lower case + last two digits of year
|
48 |
+
full_name: Best Conference for Anything # full conference name
|
49 |
+
link: link-to-website.com
|
50 |
+
deadline: YYYY-MM-DD HH:SS
|
51 |
+
abstract_deadline: YYYY-MM-DD HH:SS
|
52 |
+
timezone: Asia/Seoul
|
53 |
+
place: Incheon, South Korea
|
54 |
+
date: September, 18-22, 2022
|
55 |
+
start: YYYY-MM-DD
|
56 |
+
end: YYYY-MM-DD
|
57 |
+
paperslink: link-to-full-paper-list.com
|
58 |
+
pwclink: link-to-papers-with-code.com
|
59 |
+
hindex: 100.0
|
60 |
+
tags:
|
61 |
+
- machine learning
|
62 |
+
note: Important
|
63 |
+
```
|
64 |
+
- Send a pull request to update [src/data/conferences.yml](src/data/conferences.yml).
|
65 |
+
|
66 |
+
## How to run locally
|
67 |
+
|
68 |
+
If you want to work locally using your own IDE, you can clone this repo and push changes.
|
69 |
+
|
70 |
+
The only requirement is having Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating)
|
71 |
+
|
72 |
+
Follow these steps:
|
73 |
+
|
74 |
+
```sh
|
75 |
+
# Step 1: Clone the repository using the project's Git URL.
|
76 |
+
git clone https://github.com/huggingface/ai-deadlines
|
77 |
+
|
78 |
+
# Step 2: Navigate to the project directory.
|
79 |
+
cd ai-deadlines
|
80 |
+
|
81 |
+
# Step 3: Install the necessary dependencies.
|
82 |
+
npm i
|
83 |
+
|
84 |
+
# Step 4: Start the development server with auto-reloading and an instant preview.
|
85 |
+
npm run dev
|
86 |
+
```
|
87 |
+
|
88 |
+
This runs the app at http://localhost:8080/.
|
89 |
+
|
90 |
+
## Deploy with Docker
|
91 |
+
|
92 |
+
First build the Docker image as follows:
|
93 |
+
|
94 |
+
```bash
|
95 |
+
docker build -t ai-deadlines .
|
96 |
+
```
|
97 |
+
|
98 |
+
Next it can be run as follows:
|
99 |
+
|
100 |
+
```bash
|
101 |
+
docker run -it -p 7860:7860 ai-deadlines
|
102 |
+
```
|
103 |
+
|
104 |
+
You can see it in your web browser at http://localhost:7860/.
|
105 |
+
|
106 |
+
## Technologies used
|
107 |
+
|
108 |
+
This project is built with:
|
109 |
+
|
110 |
+
- Vite
|
111 |
+
- TypeScript
|
112 |
+
- React
|
113 |
+
- shadcn-ui
|
114 |
+
- Tailwind CSS
|
115 |
+
|
116 |
+
## License
|
117 |
+
|
118 |
+
This project is licensed under [MIT](LICENSE).
|
119 |
+
|
120 |
+
## Maintainers
|
121 |
+
|
122 |
+
Feel free to just open an issue. Otherwise contact @nielsrogge
|
bun.lockb
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8aed47f0742531b071bb89d8db0682d87080d3c05c3bfa8e241ba082d7be898f
|
3 |
+
size 198351
|
components.json
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"$schema": "https://ui.shadcn.com/schema.json",
|
3 |
+
"style": "default",
|
4 |
+
"rsc": false,
|
5 |
+
"tsx": true,
|
6 |
+
"tailwind": {
|
7 |
+
"config": "tailwind.config.ts",
|
8 |
+
"css": "src/index.css",
|
9 |
+
"baseColor": "slate",
|
10 |
+
"cssVariables": true,
|
11 |
+
"prefix": ""
|
12 |
+
},
|
13 |
+
"aliases": {
|
14 |
+
"components": "@/components",
|
15 |
+
"utils": "@/lib/utils",
|
16 |
+
"ui": "@/components/ui",
|
17 |
+
"lib": "@/lib",
|
18 |
+
"hooks": "@/hooks"
|
19 |
+
}
|
20 |
+
}
|
eslint.config.js
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import js from "@eslint/js";
|
2 |
+
import globals from "globals";
|
3 |
+
import reactHooks from "eslint-plugin-react-hooks";
|
4 |
+
import reactRefresh from "eslint-plugin-react-refresh";
|
5 |
+
import tseslint from "typescript-eslint";
|
6 |
+
|
7 |
+
export default tseslint.config(
|
8 |
+
{ ignores: ["dist"] },
|
9 |
+
{
|
10 |
+
extends: [js.configs.recommended, ...tseslint.configs.recommended],
|
11 |
+
files: ["**/*.{ts,tsx}"],
|
12 |
+
languageOptions: {
|
13 |
+
ecmaVersion: 2020,
|
14 |
+
globals: globals.browser,
|
15 |
+
},
|
16 |
+
plugins: {
|
17 |
+
"react-hooks": reactHooks,
|
18 |
+
"react-refresh": reactRefresh,
|
19 |
+
},
|
20 |
+
rules: {
|
21 |
+
...reactHooks.configs.recommended.rules,
|
22 |
+
"react-refresh/only-export-components": [
|
23 |
+
"warn",
|
24 |
+
{ allowConstantExport: true },
|
25 |
+
],
|
26 |
+
"@typescript-eslint/no-unused-vars": "off",
|
27 |
+
},
|
28 |
+
}
|
29 |
+
);
|
index.html
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8" />
|
5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
6 |
+
<title>ai-deadlines-hub</title>
|
7 |
+
<meta name="description" content="Lovable Generated Project" />
|
8 |
+
<meta name="author" content="Lovable" />
|
9 |
+
<meta property="og:image" content="/og-image.png" />
|
10 |
+
</head>
|
11 |
+
|
12 |
+
<body>
|
13 |
+
<div id="root"></div>
|
14 |
+
<!-- IMPORTANT: DO NOT REMOVE THIS SCRIPT TAG OR THIS VERY COMMENT! -->
|
15 |
+
<script src="https://cdn.gpteng.co/gptengineer.js" type="module"></script>
|
16 |
+
<script type="module" src="/src/main.tsx"></script>
|
17 |
+
</body>
|
18 |
+
</html>
|
nginx.conf
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
server {
|
2 |
+
listen 7860;
|
3 |
+
server_name _;
|
4 |
+
root /usr/share/nginx/html;
|
5 |
+
index index.html;
|
6 |
+
|
7 |
+
# Specify client body temp path
|
8 |
+
client_body_temp_path /tmp/nginx/client_temp;
|
9 |
+
proxy_temp_path /tmp/nginx/proxy_temp;
|
10 |
+
fastcgi_temp_path /tmp/nginx/fastcgi_temp;
|
11 |
+
uwsgi_temp_path /tmp/nginx/uwsgi_temp;
|
12 |
+
scgi_temp_path /tmp/nginx/scgi_temp;
|
13 |
+
|
14 |
+
# Enable gzip compression
|
15 |
+
gzip on;
|
16 |
+
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
|
17 |
+
|
18 |
+
location / {
|
19 |
+
try_files $uri $uri/ /index.html;
|
20 |
+
}
|
21 |
+
|
22 |
+
# Cache static assets
|
23 |
+
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
|
24 |
+
expires 30d;
|
25 |
+
add_header Cache-Control "public, no-transform";
|
26 |
+
}
|
27 |
+
|
28 |
+
# Security headers
|
29 |
+
add_header X-Frame-Options "SAMEORIGIN";
|
30 |
+
add_header X-XSS-Protection "1; mode=block";
|
31 |
+
add_header X-Content-Type-Options "nosniff";
|
32 |
+
}
|
package-lock.json
ADDED
The diff for this file is too large to render.
See raw diff
|
|
package.json
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "vite_react_shadcn_ts",
|
3 |
+
"private": true,
|
4 |
+
"version": "0.0.0",
|
5 |
+
"type": "module",
|
6 |
+
"scripts": {
|
7 |
+
"dev": "vite",
|
8 |
+
"build": "vite build",
|
9 |
+
"build:dev": "vite build --mode development",
|
10 |
+
"lint": "eslint .",
|
11 |
+
"preview": "vite preview"
|
12 |
+
},
|
13 |
+
"dependencies": {
|
14 |
+
"@hookform/resolvers": "^3.9.0",
|
15 |
+
"@radix-ui/react-accordion": "^1.2.0",
|
16 |
+
"@radix-ui/react-alert-dialog": "^1.1.1",
|
17 |
+
"@radix-ui/react-aspect-ratio": "^1.1.0",
|
18 |
+
"@radix-ui/react-avatar": "^1.1.0",
|
19 |
+
"@radix-ui/react-checkbox": "^1.1.1",
|
20 |
+
"@radix-ui/react-collapsible": "^1.1.0",
|
21 |
+
"@radix-ui/react-context-menu": "^2.2.1",
|
22 |
+
"@radix-ui/react-dialog": "^1.1.2",
|
23 |
+
"@radix-ui/react-dropdown-menu": "^2.1.1",
|
24 |
+
"@radix-ui/react-hover-card": "^1.1.1",
|
25 |
+
"@radix-ui/react-label": "^2.1.0",
|
26 |
+
"@radix-ui/react-menubar": "^1.1.1",
|
27 |
+
"@radix-ui/react-navigation-menu": "^1.2.0",
|
28 |
+
"@radix-ui/react-popover": "^1.1.1",
|
29 |
+
"@radix-ui/react-progress": "^1.1.0",
|
30 |
+
"@radix-ui/react-radio-group": "^1.2.0",
|
31 |
+
"@radix-ui/react-scroll-area": "^1.1.0",
|
32 |
+
"@radix-ui/react-select": "^2.1.1",
|
33 |
+
"@radix-ui/react-separator": "^1.1.0",
|
34 |
+
"@radix-ui/react-slider": "^1.2.0",
|
35 |
+
"@radix-ui/react-slot": "^1.1.0",
|
36 |
+
"@radix-ui/react-switch": "^1.1.0",
|
37 |
+
"@radix-ui/react-tabs": "^1.1.0",
|
38 |
+
"@radix-ui/react-toast": "^1.2.1",
|
39 |
+
"@radix-ui/react-toggle": "^1.1.0",
|
40 |
+
"@radix-ui/react-toggle-group": "^1.1.0",
|
41 |
+
"@radix-ui/react-tooltip": "^1.1.4",
|
42 |
+
"@tanstack/react-query": "^5.56.2",
|
43 |
+
"class-variance-authority": "^0.7.1",
|
44 |
+
"clsx": "^2.1.1",
|
45 |
+
"cmdk": "^1.0.0",
|
46 |
+
"date-fns": "^3.6.0",
|
47 |
+
"embla-carousel-react": "^8.3.0",
|
48 |
+
"input-otp": "^1.2.4",
|
49 |
+
"lucide-react": "^0.462.0",
|
50 |
+
"next-themes": "^0.3.0",
|
51 |
+
"react": "^18.3.1",
|
52 |
+
"react-day-picker": "^8.10.1",
|
53 |
+
"react-dom": "^18.3.1",
|
54 |
+
"react-hook-form": "^7.53.0",
|
55 |
+
"react-resizable-panels": "^2.1.3",
|
56 |
+
"react-router-dom": "^6.26.2",
|
57 |
+
"recharts": "^2.12.7",
|
58 |
+
"sonner": "^1.5.0",
|
59 |
+
"tailwind-merge": "^2.5.2",
|
60 |
+
"tailwindcss-animate": "^1.0.7",
|
61 |
+
"vaul": "^0.9.3",
|
62 |
+
"zod": "^3.23.8"
|
63 |
+
},
|
64 |
+
"devDependencies": {
|
65 |
+
"@eslint/js": "^9.9.0",
|
66 |
+
"@modyfi/vite-plugin-yaml": "^1.1.1",
|
67 |
+
"@tailwindcss/typography": "^0.5.15",
|
68 |
+
"@types/node": "^22.5.5",
|
69 |
+
"@types/react": "^18.3.3",
|
70 |
+
"@types/react-dom": "^18.3.0",
|
71 |
+
"@vitejs/plugin-react-swc": "^3.5.0",
|
72 |
+
"autoprefixer": "^10.4.20",
|
73 |
+
"eslint": "^9.9.0",
|
74 |
+
"eslint-plugin-react-hooks": "^5.1.0-rc.0",
|
75 |
+
"eslint-plugin-react-refresh": "^0.4.9",
|
76 |
+
"globals": "^15.9.0",
|
77 |
+
"lovable-tagger": "^1.1.3",
|
78 |
+
"postcss": "^8.4.47",
|
79 |
+
"tailwindcss": "^3.4.11",
|
80 |
+
"typescript": "^5.5.3",
|
81 |
+
"typescript-eslint": "^8.0.1",
|
82 |
+
"vite": "^5.4.1"
|
83 |
+
}
|
84 |
+
}
|
postcss.config.js
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
export default {
|
2 |
+
plugins: {
|
3 |
+
tailwindcss: {},
|
4 |
+
autoprefixer: {},
|
5 |
+
},
|
6 |
+
}
|
tailwind.config.ts
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import type { Config } from "tailwindcss";
|
3 |
+
|
4 |
+
export default {
|
5 |
+
darkMode: ["class"],
|
6 |
+
content: [
|
7 |
+
"./pages/**/*.{ts,tsx}",
|
8 |
+
"./components/**/*.{ts,tsx}",
|
9 |
+
"./app/**/*.{ts,tsx}",
|
10 |
+
"./src/**/*.{ts,tsx}",
|
11 |
+
],
|
12 |
+
prefix: "",
|
13 |
+
theme: {
|
14 |
+
container: {
|
15 |
+
center: true,
|
16 |
+
padding: "2rem",
|
17 |
+
screens: {
|
18 |
+
"2xl": "1400px",
|
19 |
+
},
|
20 |
+
},
|
21 |
+
extend: {
|
22 |
+
colors: {
|
23 |
+
border: "hsl(var(--border))",
|
24 |
+
input: "hsl(var(--input))",
|
25 |
+
ring: "hsl(var(--ring))",
|
26 |
+
background: "hsl(var(--background))",
|
27 |
+
foreground: "hsl(var(--foreground))",
|
28 |
+
primary: {
|
29 |
+
DEFAULT: "#0284C7", // Darker Ocean Blue
|
30 |
+
light: "#7DD3FC", // Adjusted Light Blue
|
31 |
+
dark: "#075985", // Deeper Dark Blue
|
32 |
+
},
|
33 |
+
neutral: {
|
34 |
+
DEFAULT: "#6B7280",
|
35 |
+
light: "#F9FAFB",
|
36 |
+
dark: "#111827",
|
37 |
+
},
|
38 |
+
},
|
39 |
+
keyframes: {
|
40 |
+
"fade-in": {
|
41 |
+
"0%": { opacity: "0", transform: "translateY(10px)" },
|
42 |
+
"100%": { opacity: "1", transform: "translateY(0)" },
|
43 |
+
},
|
44 |
+
"slide-in": {
|
45 |
+
"0%": { transform: "translateX(-100%)" },
|
46 |
+
"100%": { transform: "translateX(0)" },
|
47 |
+
},
|
48 |
+
},
|
49 |
+
animation: {
|
50 |
+
"fade-in": "fade-in 0.5s ease-out",
|
51 |
+
"slide-in": "slide-in 0.3s ease-out",
|
52 |
+
},
|
53 |
+
},
|
54 |
+
},
|
55 |
+
plugins: [require("tailwindcss-animate")],
|
56 |
+
} satisfies Config;
|
tsconfig.app.json
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"compilerOptions": {
|
3 |
+
"target": "ES2020",
|
4 |
+
"useDefineForClassFields": true,
|
5 |
+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
6 |
+
"module": "ESNext",
|
7 |
+
"skipLibCheck": true,
|
8 |
+
|
9 |
+
/* Bundler mode */
|
10 |
+
"moduleResolution": "bundler",
|
11 |
+
"allowImportingTsExtensions": true,
|
12 |
+
"isolatedModules": true,
|
13 |
+
"moduleDetection": "force",
|
14 |
+
"noEmit": true,
|
15 |
+
"jsx": "react-jsx",
|
16 |
+
|
17 |
+
/* Linting */
|
18 |
+
"strict": false,
|
19 |
+
"noUnusedLocals": false,
|
20 |
+
"noUnusedParameters": false,
|
21 |
+
"noImplicitAny": false,
|
22 |
+
"noFallthroughCasesInSwitch": false,
|
23 |
+
|
24 |
+
"baseUrl": ".",
|
25 |
+
"paths": {
|
26 |
+
"@/*": ["./src/*"]
|
27 |
+
}
|
28 |
+
},
|
29 |
+
"include": ["src"]
|
30 |
+
}
|
tsconfig.json
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"files": [],
|
3 |
+
"references": [
|
4 |
+
{ "path": "./tsconfig.app.json" },
|
5 |
+
{ "path": "./tsconfig.node.json" }
|
6 |
+
],
|
7 |
+
"compilerOptions": {
|
8 |
+
"baseUrl": ".",
|
9 |
+
"paths": {
|
10 |
+
"@/*": ["./src/*"]
|
11 |
+
},
|
12 |
+
"noImplicitAny": false,
|
13 |
+
"noUnusedParameters": false,
|
14 |
+
"skipLibCheck": true,
|
15 |
+
"allowJs": true,
|
16 |
+
"noUnusedLocals": false,
|
17 |
+
"strictNullChecks": false
|
18 |
+
}
|
19 |
+
}
|
tsconfig.node.json
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"compilerOptions": {
|
3 |
+
"target": "ES2022",
|
4 |
+
"lib": ["ES2023"],
|
5 |
+
"module": "ESNext",
|
6 |
+
"skipLibCheck": true,
|
7 |
+
|
8 |
+
/* Bundler mode */
|
9 |
+
"moduleResolution": "bundler",
|
10 |
+
"allowImportingTsExtensions": true,
|
11 |
+
"isolatedModules": true,
|
12 |
+
"moduleDetection": "force",
|
13 |
+
"noEmit": true,
|
14 |
+
|
15 |
+
/* Linting */
|
16 |
+
"strict": true,
|
17 |
+
"noUnusedLocals": false,
|
18 |
+
"noUnusedParameters": false,
|
19 |
+
"noFallthroughCasesInSwitch": true
|
20 |
+
},
|
21 |
+
"include": ["vite.config.ts"]
|
22 |
+
}
|
vite.config.ts
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import { defineConfig } from "vite";
|
3 |
+
import react from "@vitejs/plugin-react-swc";
|
4 |
+
import path from "path";
|
5 |
+
import { componentTagger } from "lovable-tagger";
|
6 |
+
import yaml from "@modyfi/vite-plugin-yaml";
|
7 |
+
|
8 |
+
// https://vitejs.dev/config/
|
9 |
+
export default defineConfig(({ mode }) => ({
|
10 |
+
server: {
|
11 |
+
host: "::",
|
12 |
+
port: 8080,
|
13 |
+
},
|
14 |
+
plugins: [
|
15 |
+
react(),
|
16 |
+
mode === 'development' &&
|
17 |
+
componentTagger(),
|
18 |
+
yaml({
|
19 |
+
include: 'src/data/**/*.yml'
|
20 |
+
}),
|
21 |
+
].filter(Boolean),
|
22 |
+
resolve: {
|
23 |
+
alias: {
|
24 |
+
"@": path.resolve(__dirname, "./src"),
|
25 |
+
},
|
26 |
+
},
|
27 |
+
}));
|