first commit
This commit is contained in:
66
README.md
Normal file
66
README.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# SmartTiket - React + Tailwind CSS v4 + Google Fonts
|
||||
|
||||
This is a clean, modern, and highly-optimized setup for **SmartTiket** using React 19, Vite 6, Tailwind CSS v4, and Google Fonts.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Tech Stack & Configuration
|
||||
|
||||
* **React 19 & Vite 6**: Fast hot module replacement (HMR) and ultra-fast builds.
|
||||
* **Tailwind CSS v4**: Built using the new `@tailwindcss/vite` plugin. Configuration is handled entirely inside the CSS file utilizing the `@theme` directive.
|
||||
* **Google Fonts**:
|
||||
* **Outfit** (Headers & Display)
|
||||
* **Plus Jakarta Sans** (Body text)
|
||||
* **Lucide React**: Lightweight, beautiful icon set pre-installed.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 How to Run
|
||||
|
||||
Follow these simple steps in your terminal to start the development server:
|
||||
|
||||
### 1. Install Dependencies
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. Run the Development Server
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 3. Open in Browser
|
||||
Visit the local URL shown in your terminal (usually `http://localhost:5173`) to view the successful setup screen.
|
||||
|
||||
---
|
||||
|
||||
## 📂 Project Structure
|
||||
|
||||
```text
|
||||
smart_tiket/
|
||||
├── src/
|
||||
│ ├── App.jsx # Main React Component & Welcome Screen
|
||||
│ ├── index.css # Tailwind CSS v4 imports + custom @theme configuration
|
||||
│ └── main.jsx # React 19 mounting entry point
|
||||
├── index.html # HTML Shell importing custom Google Fonts
|
||||
├── package.json # Dependencies (React, Vite, Tailwind v4, Lucide)
|
||||
├── vite.config.js # Vite 6 config with official React & Tailwind plugins
|
||||
└── README.md # Documentation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Customizing the Design System
|
||||
|
||||
To add more custom fonts, colors, or transitions, open **`src/index.css`** and declare them inside the `@theme` block:
|
||||
|
||||
```css
|
||||
@theme {
|
||||
/* Extending font family */
|
||||
--font-custom: 'My Font', sans-serif;
|
||||
|
||||
/* Custom Tailwind v4 colors */
|
||||
--color-gold: #fbbf24;
|
||||
}
|
||||
```
|
||||
You can now immediately use `font-custom` and `bg-gold` / `text-gold` inside any React component!
|
||||
19
index.html
Normal file
19
index.html
Normal file
@@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>SmartTiket - Modern Ticket Platform</title>
|
||||
|
||||
<!-- Google Fonts Preconnect -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
|
||||
<!-- Google Fonts Imports: Outfit & Plus Jakarta Sans -->
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap" rel="stylesheet" />
|
||||
</head>
|
||||
<body class="bg-slate-950 text-slate-100 antialiased font-sans">
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/main.jsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
24
package.json
Normal file
24
package.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "smart-tiket",
|
||||
"private": true,
|
||||
"version": "0.1.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"lucide-react": "^0.475.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/vite": "^4.0.0",
|
||||
"@types/react": "^19.0.8",
|
||||
"@types/react-dom": "^19.0.3",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"tailwindcss": "^4.0.0",
|
||||
"vite": "^6.1.0"
|
||||
}
|
||||
}
|
||||
89
src/App.jsx
Normal file
89
src/App.jsx
Normal file
@@ -0,0 +1,89 @@
|
||||
import { useState } from 'react'
|
||||
import { CheckCircle2, Terminal, ArrowRight, Layers, Sparkles } from 'lucide-react'
|
||||
|
||||
export default function App() {
|
||||
const [count, setCount] = useState(0)
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-slate-950 flex flex-col items-center justify-center relative overflow-hidden px-4 selection:bg-indigo-500 selection:text-white">
|
||||
{/* Background Glowing Effects */}
|
||||
<div className="absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[500px] h-[500px] bg-indigo-500/10 rounded-full blur-[120px] pointer-events-none" />
|
||||
<div className="absolute bottom-1/4 left-1/3 w-[300px] h-[300px] bg-emerald-500/10 rounded-full blur-[100px] pointer-events-none" />
|
||||
|
||||
{/* Main Glassmorphic Container */}
|
||||
<div className="relative max-w-lg w-full bg-slate-900/60 backdrop-blur-xl border border-slate-800/80 rounded-3xl p-8 sm:p-10 shadow-2xl transition-all duration-300 hover:border-slate-700/60">
|
||||
|
||||
{/* Status Badge */}
|
||||
<div className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-xs font-semibold tracking-wide mb-8 animate-pulse">
|
||||
<CheckCircle2 className="w-3.5 h-3.5" />
|
||||
<span>SETUP SUCCESSFUL</span>
|
||||
</div>
|
||||
|
||||
{/* Heading using Google Font 'Outfit' */}
|
||||
<h1 className="font-display text-4xl sm:text-5xl font-bold tracking-tight text-white leading-tight mb-4">
|
||||
Smart<span className="bg-gradient-to-r from-indigo-400 via-purple-400 to-emerald-400 bg-clip-text text-transparent">Tiket</span>
|
||||
</h1>
|
||||
|
||||
{/* Body using Google Font 'Plus Jakarta Sans' */}
|
||||
<p className="font-sans text-slate-400 text-base sm:text-lg leading-relaxed mb-8">
|
||||
Welcome to your new development environment. React 19, Tailwind CSS v4, and Google Fonts are successfully configured and ready.
|
||||
</p>
|
||||
|
||||
{/* Feature Checkmarks */}
|
||||
<div className="space-y-4 mb-8">
|
||||
<div className="flex items-center gap-3 text-slate-300">
|
||||
<div className="w-5 h-5 rounded-md bg-indigo-500/10 border border-indigo-500/20 flex items-center justify-center">
|
||||
<Sparkles className="w-3.5 h-3.5 text-indigo-400" />
|
||||
</div>
|
||||
<span className="font-sans text-sm font-medium">React 19 & Vite 6 Setup</span>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-3 text-slate-300">
|
||||
<div className="w-5 h-5 rounded-md bg-indigo-500/10 border border-indigo-500/20 flex items-center justify-center">
|
||||
<Layers className="w-3.5 h-3.5 text-indigo-400" />
|
||||
</div>
|
||||
<span className="font-sans text-sm font-medium">Tailwind CSS v4 & Nesting Integration</span>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center gap-3 text-slate-300">
|
||||
<div className="w-5 h-5 rounded-md bg-indigo-500/10 border border-indigo-500/20 flex items-center justify-center">
|
||||
<CheckCircle2 className="w-3.5 h-3.5 text-indigo-400" />
|
||||
</div>
|
||||
<span className="font-sans text-sm font-medium">Outfit & Plus Jakarta Sans Google Fonts</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Interactive React Verification State */}
|
||||
<div className="p-4 rounded-2xl bg-slate-950/60 border border-slate-800/80 flex items-center justify-between gap-4 mb-8">
|
||||
<div className="text-left">
|
||||
<p className="font-sans text-xs text-slate-500 uppercase tracking-wider font-semibold">Test React State</p>
|
||||
<p className="font-display text-lg font-bold text-white mt-0.5">Clicked {count} times</p>
|
||||
</div>
|
||||
<button
|
||||
onClick={() => setCount(c => c + 1)}
|
||||
className="px-4 py-2 bg-indigo-600 hover:bg-indigo-500 active:scale-95 text-white text-sm font-semibold rounded-xl transition-all duration-200 cursor-pointer shadow-lg shadow-indigo-600/20"
|
||||
>
|
||||
Increment
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{/* Console / Start Instructions */}
|
||||
<div className="bg-slate-950 border border-slate-900 rounded-2xl p-4 font-mono text-xs text-slate-400 flex items-start gap-3">
|
||||
<Terminal className="w-4 h-4 text-emerald-400 shrink-0 mt-0.5" />
|
||||
<div className="text-left space-y-1">
|
||||
<p className="text-slate-500"># Next steps to start coding:</p>
|
||||
<p>1. Open workspace directory</p>
|
||||
<p>2. Run <span className="text-indigo-400">npm install</span></p>
|
||||
<p>3. Run <span className="text-emerald-400">npm run dev</span></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{/* Footer */}
|
||||
<footer className="mt-12 text-slate-600 font-sans text-xs tracking-wide">
|
||||
© {new Date().getFullYear()} SmartTiket Setup • Built with Google DeepMind Antigravity
|
||||
</footer>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
18
src/index.css
Normal file
18
src/index.css
Normal file
@@ -0,0 +1,18 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
@theme {
|
||||
/* Set Up Custom Google Fonts */
|
||||
--font-sans: 'Plus Jakarta Sans', ui-sans-serif, system-ui, -apple-system, sans-serif;
|
||||
--font-display: 'Outfit', ui-sans-serif, system-ui, -apple-system, sans-serif;
|
||||
|
||||
/* Custom Neon/Vibrant Gradients or Colors if needed later */
|
||||
--color-brand-neon: #10B981;
|
||||
--color-brand-electric: #6366F1;
|
||||
}
|
||||
|
||||
/* Custom baseline styling if desired */
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
min-height: 100vh;
|
||||
}
|
||||
10
src/main.jsx
Normal file
10
src/main.jsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import React from 'react'
|
||||
import { createRoot } from 'react-dom/client'
|
||||
import App from './App.jsx'
|
||||
import './index.css'
|
||||
|
||||
createRoot(document.getElementById('root')).render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
</React.StrictMode>,
|
||||
)
|
||||
11
vite.config.js
Normal file
11
vite.config.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
import tailwindcss from '@tailwindcss/vite'
|
||||
|
||||
// https://vite.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
react(),
|
||||
tailwindcss(),
|
||||
],
|
||||
})
|
||||
Reference in New Issue
Block a user