first commit

This commit is contained in:
Christian committed 2025-11-26 19:24:05 -03:00
commit 6e761464a6
25 files changed
+2103

No files matched your search

+24
View File
@@ -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?
+4
View File
@@ -0,0 +1,4 @@
{
"singleQuote": true,
"semi": false
}
+12
View File
@@ -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.
+33
View File
@@ -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 },
],
},
},
]
+24
View File
@@ -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
}
]
}
}
+17
View File
@@ -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>
+33
View File
@@ -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"
}
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

+1
View File
@@ -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
+49
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

+18
View File
@@ -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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

+12
View File
@@ -0,0 +1,12 @@
import './global.css'
import { Home } from './Home'
function App() {
return (
<div>
<Home />
</div>
)
}
export default App
+348
View File
@@ -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>
&copy; {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>
)
}
+12
View File
@@ -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>,
)
}
+55
View File
@@ -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>
)
}
+1
View File
@@ -0,0 +1 @@
@import 'tailwindcss';
+8
View File
@@ -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()],
})
+1452
View File
File diff suppressed because it is too large. Load diff