first commit
No files matched your search
@@ -0,0 +1,24 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
.DS_Store
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"semi": false
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# React + Vite
|
||||||
|
|
||||||
|
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
||||||
|
|
||||||
|
Currently, two official plugins are available:
|
||||||
|
|
||||||
|
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
|
||||||
|
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
|
||||||
|
|
||||||
|
## Expanding the ESLint configuration
|
||||||
|
|
||||||
|
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import js from '@eslint/js'
|
||||||
|
import globals from 'globals'
|
||||||
|
import reactHooks from 'eslint-plugin-react-hooks'
|
||||||
|
import reactRefresh from 'eslint-plugin-react-refresh'
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{ ignores: ['dist'] },
|
||||||
|
{
|
||||||
|
files: ['**/*.{js,jsx}'],
|
||||||
|
languageOptions: {
|
||||||
|
ecmaVersion: 2020,
|
||||||
|
globals: globals.browser,
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 'latest',
|
||||||
|
ecmaFeatures: { jsx: true },
|
||||||
|
sourceType: 'module',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
plugins: {
|
||||||
|
'react-hooks': reactHooks,
|
||||||
|
'react-refresh': reactRefresh,
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
...js.configs.recommended.rules,
|
||||||
|
...reactHooks.configs.recommended.rules,
|
||||||
|
'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
|
||||||
|
'react-refresh/only-export-components': [
|
||||||
|
'warn',
|
||||||
|
{ allowConstantExport: true },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"es2021": true
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:react/recommended",
|
||||||
|
"plugin:prettier/recommended"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": 12,
|
||||||
|
"sourceType": "module"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"prettier/prettier": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"semi": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/png" href="/logo.png" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Site Estetica
|
||||||
|
</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="root"></div>
|
||||||
|
<script type="module" src="/src/Main.jsx"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"name": "estetica",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
||||||
|
"preview": "vite preview",
|
||||||
|
"format": "prettier --write ."
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@tailwindcss/vite": "^4.1.8",
|
||||||
|
"eslint-config-prettier": "^10.1.5",
|
||||||
|
"eslint-plugin-prettier": "^5.4.1",
|
||||||
|
"prettier": "^3.5.3",
|
||||||
|
"react": "^19.1.0",
|
||||||
|
"react-dom": "^19.1.0",
|
||||||
|
"tailwindcss": "^4.1.8"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@eslint/js": "^9.25.0",
|
||||||
|
"@types/react": "^19.1.2",
|
||||||
|
"@types/react-dom": "^19.1.2",
|
||||||
|
"@vitejs/plugin-react-swc": "^3.9.0",
|
||||||
|
"eslint": "^9.28.0",
|
||||||
|
"eslint-plugin-react-hooks": "^5.2.0",
|
||||||
|
"eslint-plugin-react-refresh": "^0.4.19",
|
||||||
|
"globals": "^16.0.0",
|
||||||
|
"vite": "^6.3.5"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 200 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 72 KiB |
@@ -0,0 +1 @@
|
|||||||
|
/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-pink-50:oklch(97.1% .014 343.198);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) oLine truncated
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
(function(){const sl=document.createElement("link").relList;if(sl&&sl.supports&&sl.supports("modulepreload"))return;for(const Z of document.querySelectorAll('link[rel="modulepreload"]'))m(Z);new MutationObserver(Z=>{for(const W of Z)if(W.type==="childList")for(const vl of W.addedNodes)vl.tagName==="LINK"&&vl.rel==="modulepreload"&&m(vl)}).observe(document,{childList:!0,subtree:!0});function I(Z){const W={};return Z.integrity&&(W.integrity=Z.integrity),Z.referrerPolicy&&(W.referrerPolicy=Z.referrerPolicy),Z.crossOrigin==="use-credentials"?W.credentials="include":Z.crossOrigin==="anonymous"?W.credentials="omit":W.credentials="same-origin",W}function m(Z){if(Z.ep)return;Z.ep=!0;const W=I(Z);fetch(Z.href,W)}})();function Dv(M){return M&&M.__esModule&&Object.prototype.hasOwnProperty.call(M,"default")?M.default:M}var kf={exports:{}},ye={};/**
|
||||||
|
* @license React
|
||||||
|
* react-jsx-runtime.production.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var Wd;function Nv(){if(Wd)return ye;Wd=1;var M=Symbol.for("react.transitional.element"),sl=Symbol.for("react.fragment");function I(m,Z,W){var vl=null;if(W!==void 0&&(vl=""+W),Z.key!==void 0&&(vl=""+Z.key),"key"in Z){W={};for(var Hl in Z)Hl!=="key"&&(W[Hl]=Z[Hl])}else W=Z;return Z=W.ref,{$$typeof:M,type:m,key:vl,ref:Z!==void 0?Z:null,props:W}}return ye.Fragment=sl,ye.jsx=I,ye.jsxs=I,ye}var kd;function pv(){return kd||(kd=1,kf.exports=Nv()),kf.exports}var z=pv(),$f={exports:{}},me={},Ff={exports:{}},If={};/**
|
||||||
|
* @license React
|
||||||
|
* scheduler.production.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var $d;function Uv(){return $d||($d=1,function(M){function sl(S,O){var q=S.length;S.push(O);l:for(;0<q;){var al=q-1>>>1,s=S[al];if(0<Z(s,O))S[al]=O,S[q]=s,q=al;else break l}}function I(S){return S.length===0?null:S[0]}function m(S){if(S.length===0)return null;var O=S[0],q=S.pop();if(q!==O){S[0]=q;l:for(var al=0,s=S.length,E=s>>>1;al<E;){var _=2*(al+1)-1,x=S[_],R=_+1,J=S[R];if(0>Z(x,q))R<s&&0>Z(J,x)?(S[al]=J,S[R]=q,al=R):(S[al]=x,S[_]=q,al=_);else if(R<s&&0>Z(J,q))S[al]=J,S[R]=q,al=R;else break l}}return O}function Z(S,O){var q=S.sortIndex-O.sortIndex;return q!==0?q:S.id-O.id}if(M.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var W=performance;M.unstable_now=function(){return W.now()}}else{var vl=Date,Hl=vl.now();M.unstable_now=function(){return vl.now()-Hl}}var U=[],A=[],p=1,cl=null,el=3,jl=!1,ql=!1,ot=!1,Bl=!1,oa=typeof setTimeout=="function"?setTimeout:null,zt=typeof clearTimeout=="function"?clearTimeout:null,_l=typeof setImmediate<"u"?setImmediate:null;function rt(S){for(var O=I(A);O!==null;){if(O.callback===null)m(A);else if(O.startTime<=S)m(A),O.sortIndex=O.expirationTime,sl(U,O);else break;O=I(A)}}function K(S){if(ot=!1,rt(S),!ql)if(I(U)!==null)ql=!0,Vl||(Vl=!0,Dl());else{var O=I(A);O!==null&&Nl(K,O.startTime-S)}}var Vl=!1,Ll=-1,Kl=5,mt=-1;function Ra(){return Bl?!0:!(M.unstable_now()-mt<Kl)}function xt(){if(Bl=!1,Vl){var S=M.unstable_now();mt=S;var O=!0;try{l:{ql=!1,ot&&(ot=!1,zt(Ll),Ll=-1),jl=!0;var q=el;try{t:{for(rt(S),cl=I(U);cl!==null&&!(cl.expirationTime>S&&Ra());){var al=cl.callback;if(typeof al=="function"){cl.callback=null,el=cl.priorityLevel;var s=al(cl.expirationTime<=S);if(S=M.unstable_now(),typeof s=="function"){cl.callback=s,rt(S),O=!0;break t}cl===I(U)&&m(U),rt(S)}else m(U);cl=I(U)}if(cl!==null)O=!0;else{var E=I(A);E!==null&&Nl(K,E.startTime-S),O=!1}}break l}finally{cl=null,el=q,jl=!1}O=void 0}}finally{O?Dl():Vl=!1}}}var Dl;if(typeof _l=="function")Dl=function(){_l(xt)};else if(typeof MessageChannel<"u"){var ra=new MessageChannel,va=ra.port2;ra.port1.onmessage=xt,Dl=function(){va.postMessage(null)}}else Dl=function(){oa(xt,0)};function Nl(S,O){Ll=oa(function(){S(M.unstable_now())},O)}M.unstable_IdlePriority=5,M.unstable_ImmediatePriority=1,M.unstable_LowPriority=4,M.unstable_NormalPriority=3,M.unstable_Profiling=null,M.unstable_UserBlockingPriority=2,M.unstable_cancelCallback=function(S){S.callback=null},M.unstable_forceFrameRate=function(S){0>S||125<S?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Kl=0<S?Math.floor(1e3/S):5},M.unstable_getCurrentPriorityLevel=function(){return el},M.unstable_next=function(S){switch(el){case 1:case 2:case 3:var O=3;break;default:O=el}var q=el;el=O;try{return S()}finally{el=q}},M.unstable_requestPaint=function(){Bl=!0},M.unstable_runWithPriority=function(S,O){switch(S){case 1:case 2:case 3:case 4:case 5:break;default:S=3}var q=el;el=S;try{return O()}finally{el=q}},M.unstable_scheduleCallback=function(S,O,q){var al=M.unstable_now();switch(typeof q=="object"&&q!==null?(q=q.delay,q=typeof q=="number"&&0<q?al+q:al):q=al,S){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=q+s,S={id:p++,callback:O,priorityLevel:S,startTime:q,expirationTime:s,sortIndex:-1},q>al?(S.sortIndex=q,sl(A,S),I(U)===null&&S===I(A)&&(ot?(zt(Ll),Ll=-1):ot=!0,Nl(K,q-al))):(S.sortIndex=s,sl(U,S),ql||jl||(ql=!0,Vl||(Vl=!0,Dl()))),S},M.unstable_shouldYield=Ra,M.unstable_wrapCallback=function(S){var O=el;return function(){var q=el;el=O;try{return S.apply(this,arguments)}finally{el=q}}}}(If)),If}var Fd;function Rv(){return Fd||(Fd=1,Ff.exports=Uv()),Ff.exports}var Pf={exports:{}},G={};/**
|
||||||
|
* @license React
|
||||||
|
* react.production.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var Id;function Hv(){if(Id)return G;Id=1;var M=Symbol.for("react.transitional.element"),sl=Symbol.for("react.portal"),I=Symbol.for("react.fragment"),m=Symbol.for("react.strict_mode"),Z=Symbol.for("react.profiler"),W=Symbol.for("react.consumer"),vl=Symbol.for("react.context"),Hl=Symbol.for("react.forward_ref"),U=Symbol.for("react.suspense"),A=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),cl=Symbol.iterator;function el(s){return s===null||typeof s!="object"?null:(s=cl&&s[cl]||s["@@iterator"],typeof s=="function"?s:null)}var jl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ql=Object.assign,ot={};function Bl(s,E,_){this.props=s,this.context=E,this.refs=ot,this.updater=_||jl}Bl.prototype.isReactComponent={},Bl.prototype.setState=function(s,E){if(typeof s!="object"&&typeof s!="function"&&s!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,s,E,"setState")},Bl.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,"forceUpdate")};function oa(){}oa.prototype=Bl.prototype;function zt(s,E,_){this.props=s,this.context=E,this.refs=ot,this.updater=_||jl}var _l=zt.prototype=new oa;_l.constructor=zt,ql(_l,Bl.prototype),_l.isPureReactComponent=!0;var rt=Array.isArray,K={H:null,A:null,T:null,S:null,V:null},Vl=Object.prototype.hasOwnProperty;function Ll(s,E,_,x,R,J){return _=J.ref,{$$typeof:M,type:s,key:E,ref:_!==void 0?_:null,props:J}}function Kl(s,E){return Ll(s.type,E,void 0,void 0,void 0,s.props)}function mt(s){return typeof s=="object"&&s!==null&&s.$$typeof===M}function Ra(s){var E={"=":"=0",":":"=2"};return"$"+s.replace(/[=:]/g,function(_){return E[_]})}var xt=/\/+/g;function Dl(s,E){return typeof s=="object"&&s!==null&&s.key!=null?Ra(""+s.key):E.toString(36)}function ra(){}function va(s){switch(s.status){case"fulfilled":return s.value;case"rejected":throw s.reason;default:switch(typeof s.status=="string"?s.then(ra,ra):(s.status="pending",s.then(function(E){s.status==="pending"&&(s.status="fulfilled",s.value=E)},function(E){s.status==="pending"&&(s.status="rejected",s.reason=E)})),s.status){case"fulfilled":return s.value;case"rejected":throw s.reason}}throw s}function Nl(s,E,_,x,R){var J=typeof s;(J==="undefined"||J==="boolean")&&(s=null);var B=!1;if(s===null)B=!0;else switch(J){case"bigint":case"string":case"number":B=!0;break;case"object":switch(s.$$typeof){case M:case sl:B=!0;break;case p:return B=s._init,Nl(B(s._payload),E,_,x,R)}}if(B)return R=R(s),B=x===""?"."+Dl(s,0):x,rt(R)?(_="",B!=null&&(_=B.replace(xt,"$&/")+"/"),Nl(R,E,_,"",function(Qt){return Qt})):R!=null&&(mt(R)&&(R=Kl(R,_+(R.key==null||s&&s.key===R.key?"":(""+R.key).replace(xt,"$&/")+"/")+B)),E.push(R)),1;B=0;var Jl=x===""?".":x+":";if(rt(s))for(var fl=0;fl<s.length;fl++)x=s[fl],J=Jl+Dl(x,fl),B+=Nl(x,E,_,J,R);else if(fl=el(s),typeof fl=="function")for(s=fl.call(s),fl=0;!(x=s.next()).done;)x=x.value,J=Jl+Dl(x,fl++),B+=Nl(x,E,_,J,R);else if(J==="object"){if(typeof s.then=="function")return Nl(va(s),E,_,x,R);throw E=String(s),Error("Objects are not valid as a React child (found: "+(E==="[object Object]"?"object with keys {"+Object.keys(s).join(", ")+"}":E)+"). If you meant to render a collection of children, use an array instead.")}return B}function S(s,E,_){if(s==null)return s;var x=[],R=0;return Nl(s,x,"","",function(J){return E.call(_,J,R++)}),x}function O(s){if(s._status===-1){var E=s._result;E=E(),E.then(function(_){(s._status===0||s._status===-1)&&(s._status=1,s._result=_)},function(_){(s._status===0||s._status===-1)&&(s._status=2,s._result=_)}),s._status===-1&&(s._status=0,s._result=E)}if(s._status===1)return s._result.default;throw s._result}var q=typeof reportError=="function"?reportError:function(s){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var E=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof s=="object"&&s!==null&&typeof s.message=="string"?String(s.message):String(s),error:s});if(!window.dispatchEvent(E))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",s);return}console.error(s)};function al(){}return G.Children={map:S,forEach:function(s,E,_){S(s,function(){E.apply(this,arguments)},_)},count:function(s){var E=0;return S(s,function(){E++}),E},toArray:function(s){return S(s,function(E){return E})||[]},only:function(s){if(!mt(s))throw Error("React.Children.only expected to receive a single React element child.");return s}},G.Component=Bl,G.Fragment=I,G.Profiler=Z,G.PureComponent=zt,G.StrictMode=m,G.Suspense=U,G.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=K,G.__COMPILER_RUNTIME={__proto__:null,c:function(s){return K.H.useMemoCache(s)}},G.cache=function(s){return function(){return s.apply(null,arguments)}},G.cloneElement=function(s,E,_){if(s==null)throw Error("The argument must be a React element, but you passed "Line truncated
|
||||||
|
* @license React
|
||||||
|
* react-dom.production.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var lo;function jv(){if(lo)return Rl;lo=1;var M=ti();function sl(U){var A="https://react.dev/errors/"+U;if(1<arguments.length){A+="?args[]="+encodeURIComponent(arguments[1]);for(var p=2;p<arguments.length;p++)A+="&args[]="+encodeURIComponent(arguments[p])}return"Minified React error #"+U+"; visit "+A+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function I(){}var m={d:{f:I,r:function(){throw Error(sl(522))},D:I,C:I,L:I,m:I,X:I,S:I,M:I},p:0,findDOMNode:null},Z=Symbol.for("react.portal");function W(U,A,p){var cl=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Z,key:cl==null?null:""+cl,children:U,containerInfo:A,implementation:p}}var vl=M.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function Hl(U,A){if(U==="font")return"";if(typeof A=="string")return A==="use-credentials"?A:""}return Rl.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=m,Rl.createPortal=function(U,A){var p=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!A||A.nodeType!==1&&A.nodeType!==9&&A.nodeType!==11)throw Error(sl(299));return W(U,A,null,p)},Rl.flushSync=function(U){var A=vl.T,p=m.p;try{if(vl.T=null,m.p=2,U)return U()}finally{vl.T=A,m.p=p,m.d.f()}},Rl.preconnect=function(U,A){typeof U=="string"&&(A?(A=A.crossOrigin,A=typeof A=="string"?A==="use-credentials"?A:"":void 0):A=null,m.d.C(U,A))},Rl.prefetchDNS=function(U){typeof U=="string"&&m.d.D(U)},Rl.preinit=function(U,A){if(typeof U=="string"&&A&&typeof A.as=="string"){var p=A.as,cl=Hl(p,A.crossOrigin),el=typeof A.integrity=="string"?A.integrity:void 0,jl=typeof A.fetchPriority=="string"?A.fetchPriority:void 0;p==="style"?m.d.S(U,typeof A.precedence=="string"?A.precedence:void 0,{crossOrigin:cl,integrity:el,fetchPriority:jl}):p==="script"&&m.d.X(U,{crossOrigin:cl,integrity:el,fetchPriority:jl,nonce:typeof A.nonce=="string"?A.nonce:void 0})}},Rl.preinitModule=function(U,A){if(typeof U=="string")if(typeof A=="object"&&A!==null){if(A.as==null||A.as==="script"){var p=Hl(A.as,A.crossOrigin);m.d.M(U,{crossOrigin:p,integrity:typeof A.integrity=="string"?A.integrity:void 0,nonce:typeof A.nonce=="string"?A.nonce:void 0})}}else A==null&&m.d.M(U)},Rl.preload=function(U,A){if(typeof U=="string"&&typeof A=="object"&&A!==null&&typeof A.as=="string"){var p=A.as,cl=Hl(p,A.crossOrigin);m.d.L(U,p,{crossOrigin:cl,integrity:typeof A.integrity=="string"?A.integrity:void 0,nonce:typeof A.nonce=="string"?A.nonce:void 0,type:typeof A.type=="string"?A.type:void 0,fetchPriority:typeof A.fetchPriority=="string"?A.fetchPriority:void 0,referrerPolicy:typeof A.referrerPolicy=="string"?A.referrerPolicy:void 0,imageSrcSet:typeof A.imageSrcSet=="string"?A.imageSrcSet:void 0,imageSizes:typeof A.imageSizes=="string"?A.imageSizes:void 0,media:typeof A.media=="string"?A.media:void 0})}},Rl.preloadModule=function(U,A){if(typeof U=="string")if(A){var p=Hl(A.as,A.crossOrigin);m.d.m(U,{as:typeof A.as=="string"&&A.as!=="script"?A.as:void 0,crossOrigin:p,integrity:typeof A.integrity=="string"?A.integrity:void 0})}else m.d.m(U)},Rl.requestFormReset=function(U){m.d.r(U)},Rl.unstable_batchedUpdates=function(U,A){return U(A)},Rl.useFormState=function(U,A,p){return vl.H.useFormState(U,A,p)},Rl.useFormStatus=function(){return vl.H.useHostTransitionStatus()},Rl.version="19.1.0",Rl}var to;function qv(){if(to)return li.exports;to=1;function M(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(M)}catch(sl){console.error(sl)}}return M(),li.exports=jv(),li.exports}/**
|
||||||
|
* @license React
|
||||||
|
* react-dom-client.production.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var ao;function Yv(){if(ao)return me;ao=1;var M=Rv(),sl=ti(),I=qv();function m(l){var t="https://react.dev/errors/"+l;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var a=2;a<arguments.length;a++)t+="&args[]="+encodeURIComponent(arguments[a])}return"Minified React error #"+l+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Z(l){return!(!l||l.nodeType!==1&&l.nodeType!==9&&l.nodeType!==11)}function W(l){var t=l,a=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,(t.flags&4098)!==0&&(a=t.return),l=t.return;while(l)}return t.tag===3?a:null}function vl(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function Hl(l){if(W(l)!==l)throw Error(m(188))}function U(l){var t=l.alternate;if(!t){if(t=W(l),t===null)throw Error(m(188));return t!==l?null:l}for(var a=l,u=t;;){var e=a.return;if(e===null)break;var n=e.alternate;if(n===null){if(u=e.return,u!==null){a=u;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===a)return Hl(e),l;if(n===u)return Hl(e),t;n=n.sibling}throw Error(m(188))}if(a.return!==u.return)a=e,u=n;else{for(var c=!1,f=e.child;f;){if(f===a){c=!0,a=e,u=n;break}if(f===u){c=!0,u=e,a=n;break}f=f.sibling}if(!c){for(f=n.child;f;){if(f===a){c=!0,a=n,u=e;break}if(f===u){c=!0,u=n,a=e;break}f=f.sibling}if(!c)throw Error(m(189))}}if(a.alternate!==u)throw Error(m(190))}if(a.tag!==3)throw Error(m(188));return a.stateNode.current===a?l:t}function A(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=A(l),t!==null)return t;l=l.sibling}return null}var p=Object.assign,cl=Symbol.for("react.element"),el=Symbol.for("react.transitional.element"),jl=Symbol.for("react.portal"),ql=Symbol.for("react.fragment"),ot=Symbol.for("react.strict_mode"),Bl=Symbol.for("react.profiler"),oa=Symbol.for("react.provider"),zt=Symbol.for("react.consumer"),_l=Symbol.for("react.context"),rt=Symbol.for("react.forward_ref"),K=Symbol.for("react.suspense"),Vl=Symbol.for("react.suspense_list"),Ll=Symbol.for("react.memo"),Kl=Symbol.for("react.lazy"),mt=Symbol.for("react.activity"),Ra=Symbol.for("react.memo_cache_sentinel"),xt=Symbol.iterator;function Dl(l){return l===null||typeof l!="object"?null:(l=xt&&l[xt]||l["@@iterator"],typeof l=="function"?l:null)}var ra=Symbol.for("react.client.reference");function va(l){if(l==null)return null;if(typeof l=="function")return l.$$typeof===ra?null:l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case ql:return"Fragment";case Bl:return"Profiler";case ot:return"StrictMode";case K:return"Suspense";case Vl:return"SuspenseList";case mt:return"Activity"}if(typeof l=="object")switch(l.$$typeof){case jl:return"Portal";case _l:return(l.displayName||"Context")+".Provider";case zt:return(l._context.displayName||"Context")+".Consumer";case rt:var t=l.render;return l=l.displayName,l||(l=t.displayName||t.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case Ll:return t=l.displayName||null,t!==null?t:va(l.type)||"Memo";case Kl:t=l._payload,l=l._init;try{return va(l(t))}catch{}}return null}var Nl=Array.isArray,S=sl.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,O=I.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,q={pending:!1,data:null,method:null,action:null},al=[],s=-1;function E(l){return{current:l}}function _(l){0>s||(l.current=al[s],al[s]=null,s--)}function x(l,t){s++,al[s]=l.current,l.current=t}var R=E(null),J=E(null),B=E(null),Jl=E(null);function fl(l,t){switch(x(B,t),x(J,l),x(R,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?Ad(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=Ad(t),l=zd(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}_(R),x(R,l)}function Qt(){_(R),_(J),_(B)}function Hn(l){l.memoizedState!==null&&x(Jl,l);var t=R.current,a=zd(t,l.type);t!==a&&(x(J,l),x(R,a))}function ge(l){J.current===l&&(_(R),_(J)),Jl.current===l&&(_(Jl),de._currentValue=q)}var jn=Object.prototype.hasOwnProperty,qn=M.unstable_scheduleCallback,Yn=M.unstable_cancelCallback,no=M.unstable_shouldYield,co=M.unstable_requestPaint,gt=M.unstable_now,fo=M.unstable_getCurrentPriorityLevel,ai=M.unstable_ImmediatePriority,ui=M.unstable_UserBlockingPriority,Se=M.unstable_NormalPriority,io=M.unstable_LowPriority,ei=M.unstable_IdlePriority,so=M.log,oo=M.unstable_setDisableYieldValue,Su=null,wl=null;function Zt(l){if(typeof so=="function"&&oo(l),wl&&typeof wl.setStrictMode=="function")try{wl.setStrictMode(Su,l)}catch{}}var Wl=Math.clz32?Math.clz32:ho,ro=Math.log,vo=Math.LN2;function ho(l){return l>>>=0,l===0?32:31-(ro(l)/vo|0)|0}var be=256,Te=4194304;function ha(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:casLine truncated
|
||||||
|
at`)?" (<anonymous>)":-1<a.stack.indexOf("@")?"@unknown:0:0":""}return`
|
||||||
|
`+Cn+l+yi}var Vn=!1;function Ln(l,t){if(!l||Vn)return"";Vn=!0;var a=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var u={DetermineComponentFrameRoot:function(){try{if(t){var T=function(){throw Error()};if(Object.defineProperty(T.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(T,[])}catch(y){var h=y}Reflect.construct(l,[],T)}else{try{T.call()}catch(y){h=y}l.call(T.prototype)}}else{try{throw Error()}catch(y){h=y}(T=l())&&typeof T.catch=="function"&&T.catch(function(){})}}catch(y){if(y&&h&&typeof y.stack=="string")return[y.stack,h.stack]}return[null,null]}};u.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var e=Object.getOwnPropertyDescriptor(u.DetermineComponentFrameRoot,"name");e&&e.configurable&&Object.defineProperty(u.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var n=u.DetermineComponentFrameRoot(),c=n[0],f=n[1];if(c&&f){var i=c.split(`
|
||||||
|
`),v=f.split(`
|
||||||
|
`);for(e=u=0;u<i.length&&!i[u].includes("DetermineComponentFrameRoot");)u++;for(;e<v.length&&!v[e].includes("DetermineComponentFrameRoot");)e++;if(u===i.length||e===v.length)for(u=i.length-1,e=v.length-1;1<=u&&0<=e&&i[u]!==v[e];)e--;for(;1<=u&&0<=e;u--,e--)if(i[u]!==v[e]){if(u!==1||e!==1)do if(u--,e--,0>e||i[u]!==v[e]){var g=`
|
||||||
|
`+i[u].replace(" at new "," at ");return l.displayName&&g.includes("<anonymous>")&&(g=g.replace("<anonymous>",l.displayName)),g}while(1<=u&&0<=e);break}}}finally{Vn=!1,Error.prepareStackTrace=a}return(a=l?l.displayName||l.name:"")?Ga(a):""}function Ao(l){switch(l.tag){case 26:case 27:case 5:return Ga(l.type);case 16:return Ga("Lazy");case 13:return Ga("Suspense");case 19:return Ga("SuspenseList");case 0:case 15:return Ln(l.type,!1);case 11:return Ln(l.type.render,!1);case 1:return Ln(l.type,!0);case 31:return Ga("Activity");default:return""}}function mi(l){try{var t="";do t+=Ao(l),l=l.return;while(l);return t}catch(a){return`
|
||||||
|
Error generating stack: `+a.message+`
|
||||||
|
`+a.stack}}function at(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function gi(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function zo(l){var t=gi(l)?"checked":"value",a=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),u=""+l[t];if(!l.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var e=a.get,n=a.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){u=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:a.enumerable}),{getValue:function(){return u},setValue:function(c){u=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function xe(l){l._valueTracker||(l._valueTracker=zo(l))}function Si(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var a=t.getValue(),u="";return l&&(u=gi(l)?l.checked?"true":"false":l.value),l=u,l!==a?(t.setValue(l),!0):!1}function Oe(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var xo=/[\n"\\]/g;function ut(l){return l.replace(xo,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Kn(l,t,a,u,e,n,c,f){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+at(t)):l.value!==""+at(t)&&(l.value=""+at(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?Jn(l,c,at(t)):a!=null?Jn(l,c,at(a)):u!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?l.name=""+at(f):l.removeAttribute("name")}function bi(l,t,a,u,e,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;a=a!=null?""+at(a):"",t=t!=null?""+at(t):a,f||t===l.value||(l.value=t),l.defaultValue=t}u=u??e,u=typeof u!="function"&&typeof u!="symbol"&&!!u,l.checked=f?l.checked:!!u,l.defaultChecked=!!u,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function Jn(l,t,a){t==="number"&&Oe(l.ownerDocument)===l||l.defaultValue===""+a||(l.defaultValue=""+a)}function Xa(l,t,a,u){if(l=l.options,t){t={};for(var e=0;e<a.length;e++)t["$"+a[e]]=!0;for(a=0;a<l.length;a++)e=t.hasOwnProperty("$"+l[a].value),l[a].selected!==e&&(l[a].selected=e),e&&u&&(l[a].defaultSelected=!0)}else{for(a=""+at(a),t=null,e=0;e<l.length;e++){if(l[e].value===a){l[e].selected=!0,u&&(l[e].defaultSelected=!0);return}t!==null||l[e].disabled||(t=l[e])}t!==null&&(t.selected=!0)}}function Ti(l,t,a){if(t!=null&&(t=""+at(t),t!==l.value&&(l.value=t),a==null)){l.defaultValue!==t&&(l.defaultValue=t);return}l.defaultValue=a!=null?""+at(a):""}function Ei(l,t,a,u){if(t==null){if(u!=null){if(a!=null)throw Error(m(92));if(Nl(u)){if(1<u.length)throw Error(m(93));u=u[0]}a=u}a==null&&(a=""),t=a}a=at(t),l.defaultValue=a,u=l.textContent,u===a&&u!==""&&u!==null&&(l.value=u)}function Qa(l,t){if(t){var a=l.firstChild;if(a&&a===l.lastChild&&a.nodeType===3){a.nodeValue=t;return}}l.textContent=t}var Oo=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Ai(l,t,a){var u=t.indexOf("--")===0;a==null||typeof a=="boolean"||a===""?u?l.setProperty(t,""):t==="float"?l.cssFloat="":l[t]="":u?l.setProperty(t,a):typeof a!="number"||a===0||Oo.has(t)?t==="float"?l.cssFloat=a:l[t]=(""+a).trim():l[t]=a+"px"}function zi(l,t,a){if(t!=null&&typeof t!="object")throw Error(m(62));if(l=l.style,a!=null){for(var u in a)!a.hasOwnProperty(u)||t!=null&&t.hasOwnProperty(u)||(u.indexOf("--")===0?l.setProperty(u,""):u==="float"?l.cssFloat="":l[u]="");for(var e in t)u=t[e],t.hasOwnProperty(e)&&a[e]!==u&&Ai(l,e,u)}else for(var n in t)t.hasOwnProperty(n)&&Ai(l,n,t[n])}function wn(l){if(l.indexOf("-")===-1)return!1;switch(l){case"annotation-xml":case"
Line truncated
|
||||||
|
`).replace($r,"")}function Ed(l,t){return t=Td(t),Td(l)===t}function bn(){}function ll(l,t,a,u,e,n){switch(a){case"children":typeof u=="string"?t==="body"||t==="textarea"&&u===""||Qa(l,u):(typeof u=="number"||typeof u=="bigint")&&t!=="body"&&Qa(l,""+u);break;case"className":ze(l,"class",u);break;case"tabIndex":ze(l,"tabindex",u);break;case"dir":case"role":case"viewBox":case"width":case"height":ze(l,a,u);break;case"style":zi(l,u,n);break;case"data":if(t!=="object"){ze(l,"data",u);break}case"src":case"href":if(u===""&&(t!=="a"||a!=="href")){l.removeAttribute(a);break}if(u==null||typeof u=="function"||typeof u=="symbol"||typeof u=="boolean"){l.removeAttribute(a);break}u=Me(""+u),l.setAttribute(a,u);break;case"action":case"formAction":if(typeof u=="function"){l.setAttribute(a,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof n=="function"&&(a==="formAction"?(t!=="input"&&ll(l,t,"name",e.name,e,null),ll(l,t,"formEncType",e.formEncType,e,null),ll(l,t,"formMethod",e.formMethod,e,null),ll(l,t,"formTarget",e.formTarget,e,null)):(ll(l,t,"encType",e.encType,e,null),ll(l,t,"method",e.method,e,null),ll(l,t,"target",e.target,e,null)));if(u==null||typeof u=="symbol"||typeof u=="boolean"){l.removeAttribute(a);break}u=Me(""+u),l.setAttribute(a,u);break;case"onClick":u!=null&&(l.onclick=bn);break;case"onScroll":u!=null&&V("scroll",l);break;case"onScrollEnd":u!=null&&V("scrollend",l);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(m(61));if(a=u.__html,a!=null){if(e.children!=null)throw Error(m(60));l.innerHTML=a}}break;case"multiple":l.multiple=u&&typeof u!="function"&&typeof u!="symbol";break;case"muted":l.muted=u&&typeof u!="function"&&typeof u!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(u==null||typeof u=="function"||typeof u=="boolean"||typeof u=="symbol"){l.removeAttribute("xlink:href");break}a=Me(""+u),l.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":u!=null&&typeof u!="function"&&typeof u!="symbol"?l.setAttribute(a,""+u):l.removeAttribute(a);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":u&&typeof u!="function"&&typeof u!="symbol"?l.setAttribute(a,""):l.removeAttribute(a);break;case"capture":case"download":u===!0?l.setAttribute(a,""):u!==!1&&u!=null&&typeof u!="function"&&typeof u!="symbol"?l.setAttribute(a,u):l.removeAttribute(a);break;case"cols":case"rows":case"size":case"span":u!=null&&typeof u!="function"&&typeof u!="symbol"&&!isNaN(u)&&1<=u?l.setAttribute(a,u):l.removeAttribute(a);break;case"rowSpan":case"start":u==null||typeof u=="function"||typeof u=="symbol"||isNaN(u)?l.removeAttribute(a):l.setAttribute(a,u);break;case"popover":V("beforetoggle",l),V("toggle",l),Ae(l,"popover",u);break;case"xlinkActuate":Ot(l,"http://www.w3.org/1999/xlink","xlink:actuate",u);break;case"xlinkArcrole":Ot(l,"http://www.w3.org/1999/xlink","xlink:arcrole",u);break;case"xlinkRole":Ot(l,"http://www.w3.org/1999/xlink","xlink:role",u);break;case"xlinkShow":Ot(l,"http://www.w3.org/1999/xlink","xlink:show",u);break;case"xlinkTitle":Ot(l,"http://www.w3.org/1999/xlink","xlink:title",u);break;case"xlinkType":Ot(l,"http://www.w3.org/1999/xlink","xlink:type",u);break;case"xmlBase":Ot(l,"http://www.w3.org/XML/1998/namespace","xml:base",u);break;case"xmlLang":Ot(l,"http://www.w3.org/XML/1998/namespace","xml:lang",u);break;case"xmlSpace":Ot(l,"http://www.w3.org/XML/1998/namespace","xml:space",u);break;case"is":Ae(l,"is",u);break;case"innerText":case"textContent":break;default:(!(2<a.length)||a[0]!=="o"&&a[0]!=="O"||a[1]!=="n"&&a[1]!=="N")&&(a=Mo.get(a)||a,Ae(l,a,u))}}function Rf(l,t,a,u,e,n){switch(a){case"style":zi(l,u,n);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(m(61));if(a=u.__html,a!=null){if(e.children!=null)throw Error(m(60));l.innerHTML=a}}break;case"children":typeof u=="string"?Qa(l,u):(typeof u=="number"||typeof u=="bigint")&&Qa(l,""+u);break;case"onScroll":u!=null&&V("scroll",l);break;case"onScrollEnd":u!=null&&V("scrollend",l);break;case"onClick":u!=null&&(l.onclick=bn);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":
Line truncated
|
||||||
|
After Width: | Height: | Size: 200 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 198 KiB |
@@ -0,0 +1,18 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/png" href="/logo.png" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Site Estetica
|
||||||
|
</title>
|
||||||
|
<script type="module" crossorigin src="/assets/index-CYfNluKs.js"></script>
|
||||||
|
<link rel="stylesheet" crossorigin href="/assets/index-BoGj1Tz0.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="root"></div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 72 KiB |
@@ -0,0 +1,12 @@
|
|||||||
|
import './global.css'
|
||||||
|
import { Home } from './Home'
|
||||||
|
|
||||||
|
function App() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Home />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default App
|
||||||
@@ -0,0 +1,348 @@
|
|||||||
|
export function Home() {
|
||||||
|
const currentYear = new Date().getFullYear()
|
||||||
|
const currentDate = new Date().toLocaleDateString('en-US', {
|
||||||
|
year: 'numeric',
|
||||||
|
month: 'long',
|
||||||
|
day: 'numeric',
|
||||||
|
})
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="min-h-screen bg-white">
|
||||||
|
{/* Header */}
|
||||||
|
<header className="bg-white shadow-sm border-b">
|
||||||
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||||
|
<div className="flex justify-between items-center h-16">
|
||||||
|
{/* Logo */}
|
||||||
|
<div className="flex items-center">
|
||||||
|
<div className="text-2xl font-bold text-rose-600">
|
||||||
|
Aesthetic Salon
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Navigation */}
|
||||||
|
<nav className="hidden md:flex space-x-8">
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="text-gray-700 hover:text-rose-600 transition-colors font-medium"
|
||||||
|
>
|
||||||
|
Home
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="text-gray-700 hover:text-rose-600 transition-colors font-medium"
|
||||||
|
>
|
||||||
|
About Us
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="text-gray-700 hover:text-rose-600 transition-colors font-medium"
|
||||||
|
>
|
||||||
|
Privacy Policy
|
||||||
|
</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
{/* Mobile menu button */}
|
||||||
|
<div className="md:hidden">
|
||||||
|
<button className="text-gray-700 hover:text-rose-600">
|
||||||
|
<svg
|
||||||
|
className="h-6 w-6"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth={2}
|
||||||
|
d="M4 6h16M4 12h16M4 18h16"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{/* Hero Section */}
|
||||||
|
<section className="bg-gradient-to-r from-rose-50 to-pink-50 py-20">
|
||||||
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
||||||
|
<h1 className="text-4xl md:text-6xl font-bold text-gray-900 mb-6">
|
||||||
|
Transform Your Beauty
|
||||||
|
</h1>
|
||||||
|
<p className="text-xl text-gray-600 mb-8 max-w-3xl mx-auto">
|
||||||
|
Experience luxury aesthetic treatments in our state-of-the-art
|
||||||
|
salon. We offer premium beauty services to enhance your natural
|
||||||
|
radiance.
|
||||||
|
</p>
|
||||||
|
<button className="bg-rose-600 hover:bg-rose-700 text-white px-8 py-3 text-lg rounded-md font-medium transition-colors">
|
||||||
|
Book Appointment
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Services Section */}
|
||||||
|
<section className="py-20 bg-white">
|
||||||
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||||
|
<div className="text-center mb-16">
|
||||||
|
<h2 className="text-3xl md:text-4xl font-bold text-gray-900 mb-4">
|
||||||
|
Our Premium Services
|
||||||
|
</h2>
|
||||||
|
<p className="text-lg text-gray-600 max-w-2xl mx-auto">
|
||||||
|
Discover our range of professional aesthetic treatments designed
|
||||||
|
to enhance your natural beauty
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid md:grid-cols-3 gap-8">
|
||||||
|
{/* Service 1 */}
|
||||||
|
<div className="text-center group">
|
||||||
|
<div className="mb-6 overflow-hidden rounded-lg shadow-lg">
|
||||||
|
<img
|
||||||
|
src="/image2.png?height=300&width=400"
|
||||||
|
alt="Facial Treatments"
|
||||||
|
className="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-300"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<h3 className="text-2xl font-semibold text-gray-900 mb-4">
|
||||||
|
Facial Treatments
|
||||||
|
</h3>
|
||||||
|
<p className="text-gray-600 leading-relaxed">
|
||||||
|
Rejuvenate your skin with our advanced facial treatments. From
|
||||||
|
deep cleansing to anti-aging therapies, our expert aestheticians
|
||||||
|
use premium products to give you a radiant, youthful glow.
|
||||||
|
Experience the ultimate in skincare luxury with personalized
|
||||||
|
treatments tailored to your skin type.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Service 2 */}
|
||||||
|
<div className="text-center group">
|
||||||
|
<div className="mb-6 overflow-hidden rounded-lg shadow-lg">
|
||||||
|
<img
|
||||||
|
src="/image.png?height=300&width=400"
|
||||||
|
alt="Body Contouring"
|
||||||
|
className="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-300"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<h3 className="text-2xl font-semibold text-gray-900 mb-4">
|
||||||
|
Body Contouring
|
||||||
|
</h3>
|
||||||
|
<p className="text-gray-600 leading-relaxed">
|
||||||
|
Sculpt and tone your body with our non-invasive contouring
|
||||||
|
treatments. Using cutting-edge technology, we help you achieve
|
||||||
|
your desired silhouette safely and effectively. Our certified
|
||||||
|
professionals provide customized treatment plans to target
|
||||||
|
specific areas and deliver remarkable results.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Service 3 */}
|
||||||
|
<div className="text-center group">
|
||||||
|
<div className="mb-6 overflow-hidden rounded-lg shadow-lg">
|
||||||
|
<img
|
||||||
|
src="/image3.png?height=300&width=400"
|
||||||
|
alt="Laser Treatments"
|
||||||
|
className="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-300"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<h3 className="text-2xl font-semibold text-gray-900 mb-4">
|
||||||
|
Laser Treatments
|
||||||
|
</h3>
|
||||||
|
<p className="text-gray-600 leading-relaxed">
|
||||||
|
Experience the power of advanced laser technology for hair
|
||||||
|
removal, skin resurfacing, and pigmentation correction. Our
|
||||||
|
state-of-the-art equipment ensures safe, precise, and effective
|
||||||
|
treatments with minimal downtime. Achieve smooth, flawless skin
|
||||||
|
with our comprehensive laser solutions.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{/* Footer */}
|
||||||
|
<footer className="bg-gray-900 text-white py-16">
|
||||||
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||||
|
<div className="grid md:grid-cols-3 gap-12">
|
||||||
|
{/* Contact Info & Map */}
|
||||||
|
<div>
|
||||||
|
<h3 className="text-xl font-semibold mb-6">Visit Our Salon</h3>
|
||||||
|
<div className="space-y-4 mb-6">
|
||||||
|
<div className="flex items-start space-x-3">
|
||||||
|
<svg
|
||||||
|
className="h-5 w-5 text-rose-400 mt-1 flex-shrink-0"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth={2}
|
||||||
|
d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth={2}
|
||||||
|
d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<div>
|
||||||
|
<p className="text-gray-300">123 Beauty Avenue</p>
|
||||||
|
<p className="text-gray-300">Luxury District, City 12345</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center space-x-3">
|
||||||
|
<svg
|
||||||
|
className="h-5 w-5 text-rose-400 flex-shrink-0"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth={2}
|
||||||
|
d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<p className="text-gray-300">(555) 123-4567</p>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center space-x-3">
|
||||||
|
<svg
|
||||||
|
className="h-5 w-5 text-rose-400 flex-shrink-0"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth={2}
|
||||||
|
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<p className="text-gray-300">Mon-Sat: 9AM-7PM</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Google Maps Placeholder */}
|
||||||
|
<div className="bg-gray-800 rounded-lg p-4 text-center">
|
||||||
|
<svg
|
||||||
|
className="h-12 w-12 text-rose-400 mx-auto mb-2"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth={2}
|
||||||
|
d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth={2}
|
||||||
|
d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<p className="text-gray-400 text-sm">Interactive Google Maps</p>
|
||||||
|
<p className="text-gray-500 text-xs">Click to view location</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Contact Form */}
|
||||||
|
<div className="md:col-span-2">
|
||||||
|
<h3 className="text-xl font-semibold mb-6">Get In Touch</h3>
|
||||||
|
<form className="space-y-4">
|
||||||
|
<div className="grid md:grid-cols-2 gap-4">
|
||||||
|
<div>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
placeholder="Your Name"
|
||||||
|
className="w-full px-3 py-2 bg-gray-800 border border-gray-700 rounded-md text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-rose-500 focus:border-transparent"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<input
|
||||||
|
type="email"
|
||||||
|
placeholder="Your Email"
|
||||||
|
className="w-full px-3 py-2 bg-gray-800 border border-gray-700 rounded-md text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-rose-500 focus:border-transparent"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
placeholder="Subject"
|
||||||
|
className="w-full px-3 py-2 bg-gray-800 border border-gray-700 rounded-md text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-rose-500 focus:border-transparent"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<textarea
|
||||||
|
placeholder="Your Message"
|
||||||
|
rows={4}
|
||||||
|
className="w-full px-3 py-2 bg-gray-800 border border-gray-700 rounded-md text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-rose-500 focus:border-transparent resize-vertical"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
className="bg-rose-600 hover:bg-rose-700 text-white px-8 py-2 rounded-md font-medium transition-colors flex items-center"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
className="h-4 w-4 mr-2"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
strokeWidth={2}
|
||||||
|
d="M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
Send Message
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Copyright */}
|
||||||
|
<div className="border-t border-gray-800 mt-12 pt-8 text-center">
|
||||||
|
<div className="flex flex-col md:flex-row justify-between items-center space-y-4 md:space-y-0">
|
||||||
|
<div className="text-gray-400">
|
||||||
|
<p>
|
||||||
|
© {currentYear} Aesthetic Salon. All rights reserved.
|
||||||
|
</p>
|
||||||
|
<p className="text-sm">Last updated: {currentDate}</p>
|
||||||
|
</div>
|
||||||
|
<div className="flex space-x-6">
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="text-gray-400 hover:text-rose-400 transition-colors"
|
||||||
|
>
|
||||||
|
Privacy Policy
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="text-gray-400 hover:text-rose-400 transition-colors"
|
||||||
|
>
|
||||||
|
Terms of Service
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="text-gray-400 hover:text-rose-400 transition-colors"
|
||||||
|
>
|
||||||
|
Contact
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import ReactDOM from 'react-dom/client'
|
||||||
|
import App from './App.jsx'
|
||||||
|
import { StrictMode } from 'react'
|
||||||
|
const rootElement = document.getElementById('root')
|
||||||
|
if (!rootElement.innerHTML) {
|
||||||
|
const root = ReactDOM.createRoot(rootElement)
|
||||||
|
root.render(
|
||||||
|
<StrictMode>
|
||||||
|
<App />
|
||||||
|
</StrictMode>,
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
export default function Policy() {
|
||||||
|
return (
|
||||||
|
<div className="bg-white shadow-md rounded-lg p-4 w-full md:w-1/2 lg:w-1/3 xl:w-1/4">
|
||||||
|
<h2>Política de Privacidade</h2>
|
||||||
|
<p>
|
||||||
|
Nossa política de privacidade visa proteger a confiabilidade e segurança
|
||||||
|
dos usuários que acessam nosso site. Aqui você encontrará informações
|
||||||
|
importantes sobre como coletamos, armazenamos e utilizamos os dados
|
||||||
|
fornecidos por nossos visitantes.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Coleta de Dados</h3>
|
||||||
|
<p>
|
||||||
|
Nós coletamos dados de forma anônima, através da análise de logs e uso
|
||||||
|
de cookies. Essa informação é utilizada para melhorar a experiência do
|
||||||
|
usuário e garantir a segurança do site.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Uso dos Dados</h3>
|
||||||
|
<p>
|
||||||
|
Nossos usuários têm o direito de saber como seus dados são utilizados.
|
||||||
|
Nós apenas coletamos informações necessárias para funcionamento do site,
|
||||||
|
como endereços IP e históricos de acessos.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Segurança dos Dados</h3>
|
||||||
|
<p>
|
||||||
|
Nossa equipe trabalha incansavelmente para garantir que os dados sejam
|
||||||
|
armazenados e protegidos de forma segura. Nós usamos técnicas avançadas
|
||||||
|
para prevenir acesso não autorizado e garantir a integridade dos dados.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Privacidade dos Menores</h3>
|
||||||
|
<p>
|
||||||
|
Nós nos preocupamos com a privacidade e segurança dos menores que
|
||||||
|
acessam nosso site. Nossa política visa proteger os dados de nossos
|
||||||
|
visitantes menores, garantindo que eles sejam coletados e armazenados de
|
||||||
|
forma adequada.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Alterações na Política</h3>
|
||||||
|
<p>
|
||||||
|
Nossa política pode ser alterada a qualquer momento. É responsabilidade
|
||||||
|
do usuário verificar as alterações na política de privacidade antes de
|
||||||
|
continuar utilizando o site.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Se você tiver alguma dúvida ou inquietação sobre nossa política de
|
||||||
|
privacidade, por favor entre em contato conosco através do formulário de
|
||||||
|
contato no site.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
@import 'tailwindcss';
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import { defineConfig } from 'vite'
|
||||||
|
import react from '@vitejs/plugin-react-swc'
|
||||||
|
import tailwindcss from '@tailwindcss/vite'
|
||||||
|
|
||||||
|
// https://vite.dev/config/
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [react(), tailwindcss()],
|
||||||
|
})
|
||||||