final changes
This commit is contained in:
@@ -1,9 +0,0 @@
|
|||||||
# GEMINI_API_KEY: Required for Gemini AI API calls.
|
|
||||||
# AI Studio automatically injects this at runtime from user secrets.
|
|
||||||
# Users configure this via the Secrets panel in the AI Studio UI.
|
|
||||||
GEMINI_API_KEY="MY_GEMINI_API_KEY"
|
|
||||||
|
|
||||||
# APP_URL: The URL where this applet is hosted.
|
|
||||||
# AI Studio automatically injects this at runtime with the Cloud Run service URL.
|
|
||||||
# Used for self-referential links, OAuth callbacks, and API endpoints.
|
|
||||||
APP_URL="MY_APP_URL"
|
|
||||||
20
README.md
20
README.md
@@ -1,20 +0,0 @@
|
|||||||
<div align="center">
|
|
||||||
<img width="1200" height="475" alt="GHBanner" src="https://github.com/user-attachments/assets/0aa67016-6eaf-458a-adb2-6e31a0763ed6" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
# Run and deploy your AI Studio app
|
|
||||||
|
|
||||||
This contains everything you need to run your app locally.
|
|
||||||
|
|
||||||
View your app in AI Studio: https://ai.studio/apps/895b5e6f-2f53-4698-8c85-254822f236ac
|
|
||||||
|
|
||||||
## Run Locally
|
|
||||||
|
|
||||||
**Prerequisites:** Node.js
|
|
||||||
|
|
||||||
|
|
||||||
1. Install dependencies:
|
|
||||||
`npm install`
|
|
||||||
2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key
|
|
||||||
3. Run the app:
|
|
||||||
`npm run dev`
|
|
||||||
BIN
assets/banner-faleiros-tv-1-1024x320.jpg
Normal file
BIN
assets/banner-faleiros-tv-1-1024x320.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 228 KiB |
13
index.html
13
index.html
@@ -15,7 +15,7 @@
|
|||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<header class="sticky top-0 z-50 bg-white/95 backdrop-blur-sm border-b border-gray-100 py-4 px-6 md:px-12 flex justify-between items-center">
|
<header class="sticky top-0 z-50 bg-white/95 backdrop-blur-sm border-b border-gray-100 py-4 px-6 md:px-12 flex justify-between items-center">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<img src="/logo-faleiros-tv.png" alt="Faleiros TV" class="h-10 md:h-12" />
|
<img src="assets/logo-faleiros-tv.png" alt="Faleiros TV" class="h-10 md:h-12" />
|
||||||
</div>
|
</div>
|
||||||
<nav class="hidden md:flex space-x-8">
|
<nav class="hidden md:flex space-x-8">
|
||||||
<a href="#inicio" class="text-[#2D3748] hover:text-[#00AEEF] font-medium transition-colors">Início</a>
|
<a href="#inicio" class="text-[#2D3748] hover:text-[#00AEEF] font-medium transition-colors">Início</a>
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
<section id="inicio" class="relative bg-gray-900 py-24 md:py-32 px-6 md:px-12 flex items-center justify-center min-h-[600px]">
|
<section id="inicio" class="relative bg-gray-900 py-24 md:py-32 px-6 md:px-12 flex items-center justify-center min-h-[600px]">
|
||||||
<div class="absolute inset-0 overflow-hidden">
|
<div class="absolute inset-0 overflow-hidden">
|
||||||
<img
|
<img
|
||||||
src="/banner-faleiros-tv-1.jpg"
|
src="assets/banner-faleiros-tv-1-1024x320.jpg"
|
||||||
alt="Assistência Técnica"
|
alt="Assistência Técnica"
|
||||||
class="w-full h-full object-cover"
|
class="w-full h-full object-cover"
|
||||||
/>
|
/>
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
<!-- Service 1 -->
|
<!-- Service 1 -->
|
||||||
<div class="bg-white rounded-xl border border-gray-100 shadow-sm hover:shadow-md transition-shadow overflow-hidden flex flex-col">
|
<div class="bg-white rounded-xl border border-gray-100 shadow-sm hover:shadow-md transition-shadow overflow-hidden flex flex-col">
|
||||||
<div class="h-48 overflow-hidden">
|
<div class="h-48 overflow-hidden">
|
||||||
<img src="/instalação-de-tv.jpg" alt="Conserto de TVs" class="w-full h-full object-cover" />
|
<img src="assets/instalação-de-tv.jpg" alt="Conserto de TVs" class="w-full h-full object-cover" />
|
||||||
</div>
|
</div>
|
||||||
<div class="p-8 flex-grow flex flex-col">
|
<div class="p-8 flex-grow flex flex-col">
|
||||||
<h3 class="text-xl font-bold text-[#2D3748] mb-4">Conserto de TVs</h3>
|
<h3 class="text-xl font-bold text-[#2D3748] mb-4">Conserto de TVs</h3>
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
<!-- Service 2 -->
|
<!-- Service 2 -->
|
||||||
<div class="bg-white rounded-xl border border-gray-100 shadow-sm hover:shadow-md transition-shadow overflow-hidden flex flex-col">
|
<div class="bg-white rounded-xl border border-gray-100 shadow-sm hover:shadow-md transition-shadow overflow-hidden flex flex-col">
|
||||||
<div class="h-48 overflow-hidden">
|
<div class="h-48 overflow-hidden">
|
||||||
<img src="/conserto-microondas.png" alt="Conserto de Micro-ondas" class="w-full h-full object-cover" />
|
<img src="assets/conserto-microondas.png" alt="Conserto de Micro-ondas" class="w-full h-full object-cover" />
|
||||||
</div>
|
</div>
|
||||||
<div class="p-8 flex-grow flex flex-col">
|
<div class="p-8 flex-grow flex flex-col">
|
||||||
<h3 class="text-xl font-bold text-[#2D3748] mb-4">Conserto de Micro-ondas</h3>
|
<h3 class="text-xl font-bold text-[#2D3748] mb-4">Conserto de Micro-ondas</h3>
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
<!-- Service 3 -->
|
<!-- Service 3 -->
|
||||||
<div class="bg-white rounded-xl border border-gray-100 shadow-sm hover:shadow-md transition-shadow overflow-hidden flex flex-col">
|
<div class="bg-white rounded-xl border border-gray-100 shadow-sm hover:shadow-md transition-shadow overflow-hidden flex flex-col">
|
||||||
<div class="h-48 overflow-hidden">
|
<div class="h-48 overflow-hidden">
|
||||||
<img src="/conserto-eletrodomesticos.png" alt="Eletrodomésticos" class="w-full h-full object-cover" />
|
<img src="assets/conserto-eletrodomesticos.png" alt="Eletrodomésticos" class="w-full h-full object-cover" />
|
||||||
</div>
|
</div>
|
||||||
<div class="p-8 flex-grow flex flex-col">
|
<div class="p-8 flex-grow flex flex-col">
|
||||||
<h3 class="text-xl font-bold text-[#2D3748] mb-4">Eletrodomésticos</h3>
|
<h3 class="text-xl font-bold text-[#2D3748] mb-4">Eletrodomésticos</h3>
|
||||||
@@ -117,7 +117,6 @@
|
|||||||
<!-- Interruption Banner -->
|
<!-- Interruption Banner -->
|
||||||
<section class="relative bg-[#0A2540] py-16 px-6 md:px-12 overflow-hidden">
|
<section class="relative bg-[#0A2540] py-16 px-6 md:px-12 overflow-hidden">
|
||||||
<div class="absolute inset-0 opacity-20">
|
<div class="absolute inset-0 opacity-20">
|
||||||
<!-- Imagem removida para teste -->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="relative z-10 max-w-5xl mx-auto text-center px-4">
|
<div class="relative z-10 max-w-5xl mx-auto text-center px-4">
|
||||||
<h2 class="text-2xl md:text-3xl lg:text-4xl font-bold text-white mb-8 whitespace-normal md:whitespace-nowrap">
|
<h2 class="text-2xl md:text-3xl lg:text-4xl font-bold text-white mb-8 whitespace-normal md:whitespace-nowrap">
|
||||||
@@ -229,7 +228,7 @@
|
|||||||
<footer class="bg-[#1A202C] text-gray-300 py-16 px-6 md:px-12">
|
<footer class="bg-[#1A202C] text-gray-300 py-16 px-6 md:px-12">
|
||||||
<div class="max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-12 gap-8 lg:gap-12">
|
<div class="max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-12 gap-8 lg:gap-12">
|
||||||
<div class="md:col-span-12 lg:col-span-5">
|
<div class="md:col-span-12 lg:col-span-5">
|
||||||
<img src="/logo-faleiros-tv-negativada.png" alt="Faleiros TV" class="h-12 mb-6" />
|
<img src="assets/logo-faleiros-tv-negativada.png" alt="Faleiros TV" class="h-12 mb-6" />
|
||||||
<p class="text-gray-400 leading-relaxed max-w-sm">
|
<p class="text-gray-400 leading-relaxed max-w-sm">
|
||||||
Assistência técnica especializada em TVs e eletrodomésticos.<br />
|
Assistência técnica especializada em TVs e eletrodomésticos.<br />
|
||||||
Qualidade, transparência e garantia em cada serviço prestado.
|
Qualidade, transparência e garantia em cada serviço prestado.
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "",
|
|
||||||
"description": "",
|
|
||||||
"requestFramePermissions": []
|
|
||||||
}
|
|
||||||
34
package.json
34
package.json
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "react-example",
|
|
||||||
"private": true,
|
|
||||||
"version": "0.0.0",
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite --port=3000 --host=0.0.0.0",
|
|
||||||
"build": "vite build",
|
|
||||||
"preview": "vite preview",
|
|
||||||
"clean": "rm -rf dist",
|
|
||||||
"lint": "tsc --noEmit"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@google/genai": "^1.29.0",
|
|
||||||
"@tailwindcss/vite": "^4.1.14",
|
|
||||||
"@vitejs/plugin-react": "^5.0.4",
|
|
||||||
"lucide-react": "^0.546.0",
|
|
||||||
"react": "^19.0.0",
|
|
||||||
"react-dom": "^19.0.0",
|
|
||||||
"vite": "^6.2.0",
|
|
||||||
"express": "^4.21.2",
|
|
||||||
"dotenv": "^17.2.3",
|
|
||||||
"motion": "^12.23.24"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/node": "^22.14.0",
|
|
||||||
"autoprefixer": "^10.4.21",
|
|
||||||
"tailwindcss": "^4.1.14",
|
|
||||||
"tsx": "^4.21.0",
|
|
||||||
"typescript": "~5.8.2",
|
|
||||||
"vite": "^6.2.0",
|
|
||||||
"@types/express": "^4.17.21"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
@import "tailwindcss";
|
|
||||||
|
|
||||||
html {
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
import './index.css';
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "ES2022",
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"useDefineForClassFields": false,
|
|
||||||
"module": "ESNext",
|
|
||||||
"lib": [
|
|
||||||
"ES2022",
|
|
||||||
"DOM",
|
|
||||||
"DOM.Iterable"
|
|
||||||
],
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"moduleResolution": "bundler",
|
|
||||||
"isolatedModules": true,
|
|
||||||
"moduleDetection": "force",
|
|
||||||
"allowJs": true,
|
|
||||||
"jsx": "react-jsx",
|
|
||||||
"paths": {
|
|
||||||
"@/*": [
|
|
||||||
"./*"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"allowImportingTsExtensions": true,
|
|
||||||
"noEmit": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import tailwindcss from '@tailwindcss/vite';
|
|
||||||
import react from '@vitejs/plugin-react';
|
|
||||||
import path from 'path';
|
|
||||||
import {defineConfig, loadEnv} from 'vite';
|
|
||||||
|
|
||||||
export default defineConfig(({mode}) => {
|
|
||||||
const env = loadEnv(mode, '.', '');
|
|
||||||
return {
|
|
||||||
plugins: [react(), tailwindcss()],
|
|
||||||
define: {
|
|
||||||
'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY),
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
'@': path.resolve(__dirname, '.'),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
server: {
|
|
||||||
// HMR is disabled in AI Studio via DISABLE_HMR env var.
|
|
||||||
// Do not modifyâfile watching is disabled to prevent flickering during agent edits.
|
|
||||||
hmr: process.env.DISABLE_HMR !== 'true',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user