@chronowl/widget 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/favicon.svg +1 -21
- package/dist/index.js +1 -1
- package/dist/index.mjs +57 -36
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/favicon.svg
CHANGED
|
@@ -1,21 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0
|
|
2
|
-
<!-- Cuerpo del buho -->
|
|
3
|
-
<circle cx="32" cy="34" r="22" fill="#2C3E50"/>
|
|
4
|
-
<!-- Orejas -->
|
|
5
|
-
<path d="M14 18 L20 28 L10 28Z" fill="#2C3E50"/>
|
|
6
|
-
<path d="M50 18 L54 28 L44 28Z" fill="#2C3E50"/>
|
|
7
|
-
<!-- Ojos - fondo -->
|
|
8
|
-
<circle cx="24" cy="32" r="8" fill="#E8F4F8"/>
|
|
9
|
-
<circle cx="40" cy="32" r="8" fill="#E8F4F8"/>
|
|
10
|
-
<!-- Ojos - pupila -->
|
|
11
|
-
<circle cx="24" cy="32" r="4" fill="#1A252F"/>
|
|
12
|
-
<circle cx="40" cy="32" r="4" fill="#1A252F"/>
|
|
13
|
-
<!-- Ojos - brillo -->
|
|
14
|
-
<circle cx="22" cy="30" r="1.5" fill="#FFFFFF"/>
|
|
15
|
-
<circle cx="38" cy="30" r="1.5" fill="#FFFFFF"/>
|
|
16
|
-
<!-- Pico -->
|
|
17
|
-
<path d="M29 40 L32 46 L35 40Z" fill="#F39C12"/>
|
|
18
|
-
<!-- Patas -->
|
|
19
|
-
<path d="M24 54 L22 58 M24 54 L24 58 M24 54 L26 58" stroke="#F39C12" stroke-width="1.5" stroke-linecap="round"/>
|
|
20
|
-
<path d="M40 54 L38 58 M40 54 L40 58 M40 54 L42 58" stroke="#F39C12" stroke-width="1.5" stroke-linecap="round"/>
|
|
21
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="64" viewBox="0 -960 960 960" width="64" fill="#2C3E50"><path d="M480-80q-134 0-227-93t-93-227v-200q0-122 96-201t224-79q128 0 224 79t96 201v520H480Zm0-80h80q-19-25-29.5-55.5T520-280v-42q-10 1-20 1.5t-20 .5q-67 0-129.5-23.5T240-415v15q0 100 70 170t170 70Zm120-120q0 50 35 85t85 35v-255q-26 26-56 44.5T600-340v60ZM440-560q0-66-45-111t-109-48q-22 24-34 54t-12 65q0 89 72.5 144.5T480-400q95 0 167.5-55.5T720-600q0-35-12-65.5T674-720q-64 2-109 48t-45 112h-80Zm-128.5-11.5Q300-583 300-600t11.5-28.5Q323-640 340-640t28.5 11.5Q380-617 380-600t-11.5 28.5Q357-560 340-560t-28.5-11.5Zm280 0Q580-583 580-600t11.5-28.5Q603-640 620-640t28.5 11.5Q660-617 660-600t-11.5 28.5Q637-560 620-560t-28.5-11.5ZM370-778q34 14 62 37t48 52q20-29 47.5-52t61.5-37q-25-11-52.5-16.5T480-800q-29 0-56.5 5.5T370-778Zm430 618H520h280Zm-320 0q-100 0-170-70t-70-170q0 100 70 170t170 70h80-80Zm120-120q0 50 35 85t85 35q-50 0-85-35t-35-85ZM480-689Z"/></svg>
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),d=require("react"),ke={"display-lg":"text-display-lg","display-md":"text-display-md","display-sm":"text-display-sm","headline-lg":"text-headline-lg","headline-md":"text-headline-md","headline-sm":"text-headline-sm","title-lg":"text-title-lg","title-md":"text-title-md","title-sm":"text-title-sm","body-lg":"text-body-lg","body-md":"text-body-md","body-sm":"text-body-sm","label-lg":"text-label-lg","label-md":"text-label-md","label-sm":"text-label-sm"},Fe={"display-lg":"h1","display-md":"h1","display-sm":"h2","headline-lg":"h2","headline-md":"h3","headline-sm":"h4","title-lg":"h5","title-md":"h6","title-sm":"h6","body-lg":"p","body-md":"p","body-sm":"p","label-lg":"span","label-md":"span","label-sm":"small"},Ee={left:"text-left",center:"text-center",right:"text-right"};function c({variant:a="body-md",as:r,color:t,truncate:n=!1,align:s,children:i,className:l="",...o}){const u=r||Fe[a];return e.jsx(u,{className:["font-sans",ke[a],s?Ee[s]:"",n?"truncate":"",l].filter(Boolean).join(" "),style:t?{color:t}:void 0,...o,children:i})}const Le={sm:"h-8 px-3 text-label-md min-w-[44px]",md:"h-10 px-5 text-label-lg min-w-[44px]",lg:"h-12 px-6 text-label-lg min-w-[44px]"},Me={filled:{primary:"bg-primary text-primary-on hover:bg-tertiary active:bg-tertiary shadow-elevation-1 hover:shadow-elevation-2",secondary:"bg-secondary text-secondary-on hover:bg-secondary-container active:bg-secondary-container shadow-elevation-1",error:"bg-error text-error-on hover:bg-red-800 active:bg-red-900 shadow-elevation-1",success:"bg-success text-success-on hover:bg-green-700 active:bg-green-800 shadow-elevation-1",warning:"bg-warning text-warning-on hover:bg-yellow-600 active:bg-yellow-700 shadow-elevation-1"},tonal:{primary:"bg-primary-container text-primary-on-container hover:bg-secondary-container",secondary:"bg-secondary-container text-secondary-on-container hover:bg-secondary",error:"bg-error-container text-error-on-container hover:bg-red-200",success:"bg-success-container text-success-on-container hover:bg-green-200",warning:"bg-warning-container text-warning-on-container hover:bg-yellow-200"},outlined:{primary:"border border-primary text-primary hover:bg-primary-container",secondary:"border border-neutral-variant text-neutral hover:bg-surface-variant",error:"border border-error text-error hover:bg-error-container",success:"border border-success text-success hover:bg-success-container",warning:"border border-warning text-warning hover:bg-warning-container"},text:{primary:"text-primary hover:bg-primary-container",secondary:"text-neutral hover:bg-surface-variant",error:"text-error hover:bg-error-container",success:"text-success hover:bg-success-container",warning:"text-warning hover:bg-warning-container"}},y=d.forwardRef(({variant:a="filled",color:r="primary",size:t="md",fullWidth:n=!1,loading:s=!1,icon:i,iconPosition:l="start",disabled:o,children:u,className:h="",...b},m)=>{var L;const p=o||s,C="inline-flex items-center justify-center gap-2 font-sans font-bold rounded-full transition-all duration-medium-1 ease-standard focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary select-none cursor-pointer",N=p?"opacity-40 pointer-events-none cursor-not-allowed":"",v=n?"w-full":"",E=[C,Le[t],((L=Me[a])==null?void 0:L[r])??"",N,v,h].filter(Boolean).join(" ");return e.jsx("button",{ref:m,className:E,disabled:p,...b,children:s?e.jsxs("svg",{className:"animate-spin h-4 w-4",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}):e.jsxs(e.Fragment,{children:[i&&l==="start"&&e.jsx("span",{className:"inline-flex shrink-0",children:i}),u&&e.jsx("span",{children:u}),i&&l==="end"&&e.jsx("span",{className:"inline-flex shrink-0",children:i})]})})});y.displayName="Button";const Be={sm:16,md:20,lg:24},De={calendar:"M19 4h-1V2h-2v2H8V2H6v2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V10h14v10zm0-12H5V6h14v2z",clock:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm.5-13H11v6l5.2 3.2.8-1.3-4.5-2.7V7z",check:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z",close:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z","chevron-left":"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z","chevron-right":"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6-6-6z","chevron-down":"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z",search:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z",user:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z",mail:"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z",phone:"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z",notes:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z",alert:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z",info:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z",star:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27z",location:"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z",edit:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z",trash:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z","arrow-left":"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z","arrow-right":"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z",spinner:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z",owl:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-1-3h6l-1 3H10zm5-5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm3-5c-2.76 0-5 1.12-5 2.5h10C17 8.12 14.76 7 12 7z"};function f({name:a,size:r="md",color:t,className:n="",...s}){const i=Be[r],l=De[a];return e.jsx("svg",{width:i,height:i,viewBox:"0 0 24 24",fill:t||"currentColor",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",className:n,...s,children:e.jsx("path",{d:l})})}function H({title:a="ChronOwl",subtitle:r,onBack:t,actions:n}){return e.jsxs("header",{className:"flex items-center gap-3 px-4 py-3 bg-surface border-b border-neutral-variant/30",children:[t&&e.jsx(y,{variant:"text",size:"sm",onClick:t,"aria-label":"Volver",className:"shrink-0 -ml-2",children:e.jsx(f,{name:"arrow-left",size:"md"})}),e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-primary flex items-center justify-center shrink-0",children:e.jsx(f,{name:"owl",size:"sm",color:"#FFFFFF"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx(c,{variant:"title-md",as:"h1",truncate:!0,className:"text-surface-on",children:a}),r&&e.jsx(c,{variant:"body-sm",as:"p",truncate:!0,className:"text-surface-on-variant",children:r})]})]}),n&&e.jsx("div",{className:"flex items-center gap-1 shrink-0",children:n})]})}function X({steps:a,currentStep:r,onStepClick:t}){return e.jsx("nav",{"aria-label":"Progreso de reserva",className:"px-4 py-3",children:e.jsx("ol",{className:"flex items-center w-full",children:a.map((n,s)=>{const i=s<r,l=s===r,o=t&&i;return e.jsxs("li",{className:["flex items-center",s<a.length-1?"flex-1":""].join(" "),children:[e.jsxs("button",{type:"button",disabled:!o,onClick:()=>o&&t(s),"aria-current":l?"step":void 0,className:["flex items-center gap-2 group",o?"cursor-pointer":"cursor-default","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary rounded"].join(" "),children:[e.jsx("span",{className:["flex items-center justify-center w-7 h-7 rounded-full text-label-sm font-bold shrink-0","transition-all duration-medium-1 ease-standard",i?"bg-primary text-primary-on":l?"bg-primary text-primary-on ring-2 ring-primary/30 ring-offset-2":"bg-surface-variant text-surface-on-variant"].join(" "),children:i?"✓":s+1}),e.jsx(c,{variant:"label-md",as:"span",className:["hidden sm:inline",l?"text-primary font-bold":i?"text-surface-on":"text-surface-on-variant"].join(" "),children:n})]}),s<a.length-1&&e.jsx("div",{className:["flex-1 h-0.5 mx-2","transition-colors duration-medium-1 ease-standard",i?"bg-primary":"bg-neutral-variant/40"].join(" ")})]},n)})})})}function W({companyName:a,poweredBy:r=!0}){return e.jsx("footer",{className:"px-4 py-3 border-t border-neutral-variant/30 bg-surface",children:e.jsxs("div",{className:"flex items-center justify-between",children:[a&&e.jsxs(c,{variant:"body-sm",className:"text-surface-on-variant",children:["© ",a]}),r&&e.jsxs("div",{className:"flex items-center gap-1 ml-auto",children:[e.jsx(f,{name:"owl",size:"sm",color:"#7F8C8D"}),e.jsx(c,{variant:"label-sm",className:"text-surface-on-variant",children:"Powered by ChronOwl"})]})]})})}function Z({steps:a,currentStep:r,onStepClick:t,onBack:n,title:s="ChronOwl",children:i,footer:l}){return e.jsxs("div",{className:"chronowl-widget flex flex-col w-full max-w-[480px] mx-auto min-h-[400px] max-h-[90vh] bg-surface rounded-xl shadow-elevation-3 overflow-hidden font-sans",children:[e.jsxs("div",{className:"shrink-0",children:[e.jsx(H,{title:s,subtitle:"Reserva tu cita",onBack:r>0?n:void 0}),e.jsx(X,{steps:a,currentStep:r,onStepClick:t})]}),e.jsx("main",{className:"flex-1 overflow-y-auto px-4 py-4",children:i}),e.jsx("div",{className:"shrink-0",children:l||e.jsx(W,{poweredBy:!0})})]})}const Te={0:"shadow-elevation-0",1:"shadow-elevation-1",2:"shadow-elevation-2",3:"shadow-elevation-3",4:"shadow-elevation-4",5:"shadow-elevation-5"},$e={sm:"p-3",md:"p-4",lg:"p-6"};function ee({elevation:a=1,outlined:r=!1,padding:t="md",children:n,className:s="",...i}){return e.jsx("div",{className:["bg-surface rounded-md font-sans","transition-shadow duration-medium-1 ease-standard",r?"border border-neutral-variant":Te[a],$e[t],s].filter(Boolean).join(" "),...i,children:n})}function ae({service:a,selected:r=!1,onSelect:t}){return e.jsx("button",{type:"button",onClick:()=>t(a),"aria-pressed":r,className:"w-full text-left focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary rounded-md",children:e.jsx(ee,{elevation:r?2:1,className:["transition-all duration-medium-1 ease-standard cursor-pointer","hover:shadow-elevation-2",r?"ring-2 ring-primary bg-primary-container":"hover:bg-surface-variant"].join(" "),children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx(c,{variant:"title-sm",className:r?"text-primary-on-container":"text-surface-on",children:a.name}),e.jsx(c,{variant:"body-sm",className:["mt-1",r?"text-primary-on-container/70":"text-surface-on-variant"].join(" "),truncate:!0,children:a.description}),e.jsxs("div",{className:"flex items-center gap-3 mt-2",children:[e.jsxs("span",{className:"inline-flex items-center gap-1 text-body-sm text-surface-on-variant",children:[e.jsx(f,{name:"clock",size:"sm"}),a.duration," min"]}),a.category&&e.jsx("span",{className:"text-body-sm text-surface-on-variant",children:a.category})]})]}),e.jsxs("div",{className:"text-right shrink-0",children:[e.jsxs(c,{variant:"title-md",className:"text-primary",children:[a.currency,a.price]}),r&&e.jsx("span",{className:"inline-flex mt-1",children:e.jsx(f,{name:"check",size:"sm",color:"#2C3E50"})})]})]})})})}const Ie={sm:"h-4 w-4 border-2",md:"h-6 w-6 border-2",lg:"h-10 w-10 border-3"};function Y({size:a="md",color:r,className:t="",...n}){return e.jsx("div",{role:"progressbar","aria-label":"Cargando",className:["inline-block rounded-full border-solid border-current border-r-transparent animate-spin",Ie[a],t].filter(Boolean).join(" "),style:r?{borderColor:r,borderRightColor:"transparent"}:void 0,...n})}function O({message:a="Cargando...",size:r="md"}){return e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 gap-4",children:[e.jsx(Y,{size:r}),e.jsx(c,{variant:"body-md",className:"text-surface-on-variant",children:a})]})}function U({icon:a="calendar",title:r,description:t,action:n}){return e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 px-4 text-center",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-surface-variant flex items-center justify-center mb-4",children:e.jsx(f,{name:a,size:"lg",color:"#7F8C8D"})}),e.jsx(c,{variant:"title-md",className:"text-surface-on mb-2",children:r}),t&&e.jsx(c,{variant:"body-md",className:"text-surface-on-variant mb-6 max-w-xs",children:t}),n&&e.jsx(y,{variant:"tonal",onClick:n.onClick,children:n.label})]})}function re({services:a,selectedServiceId:r,onSelectService:t,loading:n=!1}){return n?e.jsx(O,{message:"Cargando servicios..."}):a.length===0?e.jsx(U,{icon:"info",title:"Sin servicios disponibles",description:"No hay servicios configurados en este momento."}):e.jsxs("div",{className:"w-full",children:[e.jsx(c,{variant:"title-sm",className:"mb-3 px-1 text-surface-on",children:"Selecciona un servicio"}),e.jsx("div",{className:"flex flex-col gap-3",children:a.map(s=>e.jsx(ae,{service:s,selected:s.id===r,onSelect:t},s.id))})]})}const Ae=["Lu","Ma","Mi","Ju","Vi","Sa","Do"],K=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"];function J(a){return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`}function Q(a,r){return a.getFullYear()===r.getFullYear()&&a.getMonth()===r.getMonth()&&a.getDate()===r.getDate()}function te({selectedDate:a,onSelectDate:r,minDate:t,maxDate:n,disabledDates:s=[],availableDates:i=[]}){const l=new Date,[o,u]=d.useState((a==null?void 0:a.getMonth())??l.getMonth()),[h,b]=d.useState((a==null?void 0:a.getFullYear())??l.getFullYear()),m=d.useMemo(()=>new Set(s),[s]),p=d.useMemo(()=>new Set(i),[i]),C=new Date(h,o+1,0).getDate(),N=(new Date(h,o,1).getDay()+6)%7,v=()=>{o===0?(u(11),b(h-1)):u(o-1)},E=()=>{o===11?(u(0),b(h+1)):u(o+1)},L=x=>{const S=new Date(h,o,x),k=J(S);if(m.has(k)||t&&S<new Date(t.getFullYear(),t.getMonth(),t.getDate())||n&&S>n)return!0;const F=new Date(l.getFullYear(),l.getMonth(),l.getDate());return S<F},g=x=>{if(p.size===0)return!0;const S=J(new Date(h,o,x));return p.has(S)},j=[];for(let x=0;x<N;x++)j.push(null);for(let x=1;x<=C;x++)j.push(x);return e.jsxs("div",{className:"w-full max-w-[320px] mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx(y,{variant:"text",size:"sm",onClick:v,"aria-label":"Mes anterior",children:e.jsx(f,{name:"chevron-left",size:"md"})}),e.jsxs(c,{variant:"title-sm",className:"text-surface-on",children:[K[o]," ",h]}),e.jsx(y,{variant:"text",size:"sm",onClick:E,"aria-label":"Mes siguiente",children:e.jsx(f,{name:"chevron-right",size:"md"})})]}),e.jsx("div",{className:"grid grid-cols-7 gap-0.5 mb-1",children:Ae.map(x=>e.jsx("div",{className:"text-center text-label-sm text-surface-on-variant py-1",children:x},x))}),e.jsx("div",{className:"grid grid-cols-7 gap-0.5",children:j.map((x,S)=>{if(x===null)return e.jsx("div",{},`empty-${S}`);const k=new Date(h,o,x),F=L(x),M=g(x)&&!F,D=a?Q(k,a):!1,R=Q(k,l);return e.jsx("button",{type:"button",disabled:F,onClick:()=>M&&r(k),"aria-pressed":D,"aria-label":`${x} de ${K[o]}${F?", no disponible":""}`,className:["aspect-square flex items-center justify-center rounded-full","text-body-sm font-sans min-h-[36px] min-w-[36px]","transition-all duration-short-2 ease-standard","focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-primary",D?"bg-primary text-primary-on font-bold":R&&!F?"border border-primary text-primary font-bold":M?"text-surface-on hover:bg-primary-container cursor-pointer":"text-surface-on-variant opacity-30 cursor-not-allowed"].join(" "),children:x},x)})})]})}function ne({selectedDate:a,onSelectDate:r,minDate:t,maxDate:n,disabledDates:s,availableDates:i}){return e.jsxs("div",{className:"w-full",children:[e.jsx(c,{variant:"title-sm",className:"mb-3 px-1 text-surface-on",children:"Selecciona una fecha"}),e.jsx("div",{className:"bg-surface rounded-md shadow-elevation-1 p-4",children:e.jsx(te,{selectedDate:a,onSelectDate:r,minDate:t,maxDate:n,disabledDates:s,availableDates:i})}),a&&e.jsxs(c,{variant:"body-sm",className:"mt-2 px-1 text-surface-on-variant text-center",children:["Fecha seleccionada:"," ",e.jsx("span",{className:"font-bold text-primary",children:a.toLocaleDateString("es-ES",{weekday:"long",day:"numeric",month:"long"})})]})]})}function se({slots:a,selectedSlotId:r,onSelectSlot:t,columns:n=4}){const s=a.filter(o=>parseInt(o.startTime.split(":")[0],10)<12),i=a.filter(o=>parseInt(o.startTime.split(":")[0],10)>=12),l=o=>e.jsx("div",{className:"grid gap-2",style:{gridTemplateColumns:`repeat(${n}, 1fr)`},children:o.map(u=>{const h=u.id===r;return e.jsx("button",{type:"button",disabled:!u.available,onClick:()=>u.available&&t(u),"aria-pressed":h,className:["py-2 px-2 rounded-sm text-label-lg font-sans text-center","transition-all duration-short-2 ease-standard","min-h-[44px] min-w-[44px]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",h?"bg-primary text-primary-on shadow-elevation-1":u.available?"bg-surface border border-neutral-variant/40 text-surface-on hover:bg-primary-container hover:border-primary/30":"bg-surface-variant text-surface-on-variant opacity-30 cursor-not-allowed"].join(" "),children:u.startTime},u.id)})});return e.jsxs("div",{className:"w-full space-y-4",children:[s.length>0&&e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"mb-2 text-surface-on-variant",children:"Mañana"}),l(s)]}),i.length>0&&e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"mb-2 text-surface-on-variant",children:"Tarde"}),l(i)]})]})}const B=d.forwardRef(({label:a,error:r,helperText:t,leadingIcon:n,trailingIcon:s,fullWidth:i=!0,className:l="",id:o,...u},h)=>{const b=d.useId(),m=o??b,p=!!r,C=["relative",i?"w-full":"inline-flex"].join(" "),N=["peer w-full h-12 px-4 rounded-xs bg-surface border font-sans text-body-lg","text-surface-on placeholder-transparent","transition-all duration-medium-1 ease-standard","focus:outline-none focus:ring-2",n?"pl-11":"",s?"pr-11":"",p?"border-error focus:ring-error focus:border-error":"border-neutral-variant focus:ring-primary focus:border-primary","disabled:opacity-40 disabled:cursor-not-allowed",l].filter(Boolean).join(" "),v=["absolute left-4 top-1/2 -translate-y-1/2 text-body-lg font-sans pointer-events-none","transition-all duration-medium-1 ease-standard origin-left","peer-focus:top-0 peer-focus:text-label-sm peer-focus:bg-surface peer-focus:px-1 peer-focus:-translate-y-1/2 peer-focus:scale-90","peer-[:not(:placeholder-shown)]:top-0 peer-[:not(:placeholder-shown)]:text-label-sm peer-[:not(:placeholder-shown)]:bg-surface peer-[:not(:placeholder-shown)]:px-1 peer-[:not(:placeholder-shown)]:-translate-y-1/2 peer-[:not(:placeholder-shown)]:scale-90",n?"left-11":"",p?"text-error peer-focus:text-error":"text-surface-on-variant peer-focus:text-primary"].filter(Boolean).join(" ");return e.jsxs("div",{className:C,children:[e.jsxs("div",{className:"relative",children:[n&&e.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-surface-on-variant",children:n}),e.jsx("input",{ref:h,id:m,className:N,placeholder:a||" ","aria-invalid":p,"aria-describedby":r?`${m}-error`:t?`${m}-helper`:void 0,...u}),a&&e.jsx("label",{htmlFor:m,className:v,children:a}),s&&e.jsx("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 text-surface-on-variant",children:s})]}),(r||t)&&e.jsx("p",{id:r?`${m}-error`:`${m}-helper`,className:["mt-1 px-4 text-body-sm",p?"text-error":"text-surface-on-variant"].join(" "),children:r||t})]})});B.displayName="Input";function Pe(a){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a)}function He(a){return/^[\d\s\-+()]{7,20}$/.test(a)}function We(a,r="es-ES"){return a.toLocaleDateString(r,{weekday:"long",day:"numeric",month:"long",year:"numeric"})}function Oe(a,r="es-ES"){return a.toLocaleDateString(r,{weekday:"short",day:"numeric",month:"short"})}function ie(a){return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`}function le({onSubmit:a,loading:r=!1,initialValues:t}){const[n,s]=d.useState((t==null?void 0:t.clientName)??""),[i,l]=d.useState((t==null?void 0:t.clientEmail)??""),[o,u]=d.useState((t==null?void 0:t.clientPhone)??""),[h,b]=d.useState((t==null?void 0:t.notes)??""),[m,p]=d.useState({}),C=()=>{const v={};return n.trim()||(v.clientName="El nombre es requerido"),i.trim()?Pe(i)||(v.clientEmail="Email no válido"):v.clientEmail="El email es requerido",o.trim()?He(o)||(v.clientPhone="Teléfono no válido"):v.clientPhone="El teléfono es requerido",p(v),Object.keys(v).length===0},N=v=>{v.preventDefault(),C()&&a({clientName:n.trim(),clientEmail:i.trim(),clientPhone:o.trim(),notes:h.trim()||void 0})};return e.jsxs("form",{onSubmit:N,noValidate:!0,className:"w-full",children:[e.jsx(c,{variant:"title-sm",className:"mb-4 text-surface-on",children:"Tus datos"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(B,{label:"Nombre completo",type:"text",value:n,onChange:v=>s(v.target.value),error:m.clientName,leadingIcon:e.jsx(f,{name:"user",size:"sm"}),autoComplete:"name",maxLength:100,required:!0}),e.jsx(B,{label:"Email",type:"email",value:i,onChange:v=>l(v.target.value),error:m.clientEmail,leadingIcon:e.jsx(f,{name:"mail",size:"sm"}),autoComplete:"email",maxLength:254,required:!0}),e.jsx(B,{label:"Teléfono",type:"tel",value:o,onChange:v=>u(v.target.value),error:m.clientPhone,leadingIcon:e.jsx(f,{name:"phone",size:"sm"}),autoComplete:"tel",maxLength:20,required:!0}),e.jsx(B,{label:"Notas (opcional)",type:"text",value:h,onChange:v=>b(v.target.value),leadingIcon:e.jsx(f,{name:"notes",size:"sm"}),maxLength:500})]}),e.jsx(y,{type:"submit",variant:"filled",color:"primary",size:"lg",fullWidth:!0,loading:r,className:"mt-6",children:"Confirmar reserva"})]})}function T({orientation:a="horizontal",inset:r=!1,className:t="",...n}){const s=a==="horizontal";return e.jsx("hr",{role:"separator","aria-orientation":a,className:["border-0 bg-neutral-variant",s?"h-px w-full":"w-px h-full",r&&s?"mx-4":"",r&&!s?"my-4":"",t].filter(Boolean).join(" "),...n})}const Re={confirmed:"bg-success-container text-success-on-container",pending:"bg-warning-container text-warning-on-container",cancelled:"bg-error-container text-error-on-container",completed:"bg-primary-container text-primary-on-container",info:"bg-secondary-container text-secondary-on-container"},qe={sm:"text-label-sm px-2 py-0.5",md:"text-label-md px-3 py-1",lg:"text-label-lg px-4 py-1.5"};function oe({variant:a,size:r="md",icon:t,children:n,className:s="",...i}){return e.jsxs("span",{className:["inline-flex items-center gap-1.5 font-sans font-bold rounded-full whitespace-nowrap",Re[a],qe[r],s].filter(Boolean).join(" "),...i,children:[t&&e.jsx("span",{className:"inline-flex shrink-0",children:t}),n]})}const Ye={confirmed:"check",pending:"clock",cancelled:"close",completed:"check",info:"info"};function V({status:a,label:r}){return e.jsx(oe,{variant:a,icon:e.jsx(f,{name:Ye[a],size:"sm"}),children:r})}function ce({open:a,onClose:r,confirmation:t,onNewBooking:n}){const s=d.useRef(null);return d.useEffect(()=>{const i=s.current;i&&(a?i.showModal():i.close())},[a]),d.useEffect(()=>{const i=s.current;if(!i)return;const l=()=>r();return i.addEventListener("close",l),()=>i.removeEventListener("close",l)},[r]),t?e.jsx("dialog",{ref:s,className:["w-[90vw] max-w-md rounded-xl bg-surface shadow-elevation-5 p-0","backdrop:bg-scrim/40 backdrop:backdrop-blur-sm","animate-in fade-in slide-in-from-bottom-4"].join(" "),"aria-labelledby":"confirmation-title",children:e.jsxs("div",{className:"p-6",children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx("div",{className:"w-16 h-16 rounded-full bg-success-container flex items-center justify-center",children:e.jsx(f,{name:"check",size:"lg",color:"#27AE60"})})}),e.jsx(c,{variant:"headline-sm",as:"h2",align:"center",id:"confirmation-title",className:"text-surface-on mb-1",children:"¡Reserva confirmada!"}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-4",children:"Tu cita ha sido agendada exitosamente."}),e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx(V,{status:t.status,label:"Confirmada"})}),e.jsx(T,{className:"my-4"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(f,{name:"star",size:"sm",color:"#7F8C8D"}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"text-surface-on-variant",children:"Servicio"}),e.jsx(c,{variant:"body-md",className:"text-surface-on",children:t.service.name})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(f,{name:"calendar",size:"sm",color:"#7F8C8D"}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"text-surface-on-variant",children:"Fecha"}),e.jsx(c,{variant:"body-md",className:"text-surface-on",children:new Date(t.date).toLocaleDateString("es-ES",{weekday:"long",day:"numeric",month:"long",year:"numeric"})})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(f,{name:"clock",size:"sm",color:"#7F8C8D"}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"text-surface-on-variant",children:"Hora"}),e.jsxs(c,{variant:"body-md",className:"text-surface-on",children:[t.timeSlot.startTime," - ",t.timeSlot.endTime]})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(f,{name:"user",size:"sm",color:"#7F8C8D"}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"text-surface-on-variant",children:"Cliente"}),e.jsx(c,{variant:"body-md",className:"text-surface-on",children:t.clientName}),e.jsx(c,{variant:"body-sm",className:"text-surface-on-variant",children:t.clientEmail})]})]})]}),e.jsx(T,{className:"my-4"}),e.jsxs(c,{variant:"body-sm",align:"center",className:"text-surface-on-variant mb-4",children:["ID de reserva: ",e.jsx("span",{className:"font-bold",children:t.id})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(y,{variant:"filled",fullWidth:!0,onClick:r,children:"Cerrar"}),n&&e.jsx(y,{variant:"tonal",fullWidth:!0,onClick:n,children:"Nueva reserva"})]})]})}):null}function de({open:a,onClose:r,title:t="Ha ocurrido un error",message:n,onRetry:s}){const i=d.useRef(null);return d.useEffect(()=>{const l=i.current;l&&(a?l.showModal():l.close())},[a]),d.useEffect(()=>{const l=i.current;if(!l)return;const o=()=>r();return l.addEventListener("close",o),()=>l.removeEventListener("close",o)},[r]),e.jsx("dialog",{ref:i,className:["w-[90vw] max-w-sm rounded-xl bg-surface shadow-elevation-5 p-0","backdrop:bg-scrim/40 backdrop:backdrop-blur-sm"].join(" "),"aria-labelledby":"error-title",children:e.jsxs("div",{className:"p-6",children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx("div",{className:"w-14 h-14 rounded-full bg-error-container flex items-center justify-center",children:e.jsx(f,{name:"alert",size:"lg",color:"#C0392B"})})}),e.jsx(c,{variant:"title-lg",as:"h2",align:"center",id:"error-title",className:"text-surface-on mb-2",children:t}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-6",children:n}),e.jsxs("div",{className:"flex flex-col gap-2",children:[s&&e.jsx(y,{variant:"filled",fullWidth:!0,onClick:s,children:"Reintentar"}),e.jsx(y,{variant:s?"tonal":"filled",fullWidth:!0,onClick:r,children:"Cerrar"})]})]})})}const Ue=["Servicio","Fecha y hora","Datos","Confirmación"],Ve={service:0,datetime:1,form:2,confirmation:3};function me({services:a,onFetchSlots:r,onSubmitBooking:t,companyName:n="ChronOwl",title:s=n}){const[i,l]=d.useState("service"),[o,u]=d.useState(null),[h,b]=d.useState(),[m,p]=d.useState(null),[C,N]=d.useState([]),[v,E]=d.useState(!1),[L,g]=d.useState(!1),[j,x]=d.useState(null),[S,k]=d.useState(!1),[F,M]=d.useState(null),D=Ve[i],R=d.useCallback(()=>{i==="datetime"?(l("service"),b(void 0),p(null),N([])):i==="form"&&l("datetime")},[i]),ge=d.useCallback(w=>{const $=["service","datetime","form","confirmation"];w<D&&l($[w])},[D]),be=d.useCallback(w=>{u(w)},[]),ye=d.useCallback(()=>{o&&(l("datetime"),b(void 0),p(null),N([]))},[o]),je=d.useCallback(async w=>{if(b(w),p(null),!o)return;const $=`${w.getFullYear()}-${String(w.getMonth()+1).padStart(2,"0")}-${String(w.getDate()).padStart(2,"0")}`;E(!0);try{const q=await r(o.id,$);N(q)}catch{M("No se pudieron cargar los horarios. Intenta de nuevo."),N([])}finally{E(!1)}},[o,r]),Ne=d.useCallback(w=>{p(w)},[]),Se=d.useCallback(()=>{h&&m&&l("form")},[h,m]),we=d.useCallback(async w=>{if(!o||!h||!m)return;const $=`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-${String(h.getDate()).padStart(2,"0")}`,q={serviceId:o.id,date:$,timeSlotId:m.id,...w};g(!0);try{const ze=await t(q);x(ze),k(!0),l("confirmation")}catch{M("No se pudo completar la reserva. Por favor, intenta de nuevo.")}finally{g(!1)}},[o,h,m,t]),G=d.useCallback(()=>{l("service"),u(null),b(void 0),p(null),N([]),x(null),k(!1)},[]),Ce=()=>{switch(i){case"service":return e.jsxs("div",{children:[e.jsx(re,{services:a,selectedServiceId:o==null?void 0:o.id,onSelectService:be}),o&&e.jsx("div",{className:"mt-6",children:e.jsx(y,{variant:"filled",fullWidth:!0,size:"lg",onClick:ye,icon:e.jsx(f,{name:"arrow-right",size:"sm"}),iconPosition:"end",children:"Continuar"})})]});case"datetime":return e.jsxs("div",{className:"space-y-6",children:[o&&e.jsxs("div",{className:"bg-primary-container rounded-sm px-4 py-3",children:[e.jsx(c,{variant:"label-md",className:"text-primary-on-container/70",children:"Servicio seleccionado"}),e.jsxs(c,{variant:"title-sm",className:"text-primary-on-container",children:[o.name," — ",o.currency,o.price]})]}),e.jsx(ne,{selectedDate:h,onSelectDate:je}),h&&e.jsxs(e.Fragment,{children:[e.jsx(T,{}),v?e.jsx(O,{message:"Buscando horarios...",size:"sm"}):e.jsx(se,{slots:C,selectedSlotId:m==null?void 0:m.id,onSelectSlot:Ne,columns:4})]}),m&&e.jsx("div",{className:"mt-4",children:e.jsx(y,{variant:"filled",fullWidth:!0,size:"lg",onClick:Se,icon:e.jsx(f,{name:"arrow-right",size:"sm"}),iconPosition:"end",children:"Continuar"})})]});case"form":return e.jsxs("div",{className:"space-y-4",children:[o&&h&&m&&e.jsxs("div",{className:"bg-primary-container rounded-sm px-4 py-3 space-y-1",children:[e.jsx(c,{variant:"label-md",className:"text-primary-on-container/70",children:"Resumen de tu reserva"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{name:"star",size:"sm",color:"#2C3E50"}),e.jsx(c,{variant:"body-sm",className:"text-primary-on-container",children:o.name})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{name:"calendar",size:"sm",color:"#2C3E50"}),e.jsx(c,{variant:"body-sm",className:"text-primary-on-container",children:h.toLocaleDateString("es-ES",{weekday:"short",day:"numeric",month:"short"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{name:"clock",size:"sm",color:"#2C3E50"}),e.jsxs(c,{variant:"body-sm",className:"text-primary-on-container",children:[m.startTime," - ",m.endTime]})]})]}),e.jsx(T,{}),e.jsx(le,{onSubmit:we,loading:L})]});case"confirmation":return e.jsxs("div",{className:"flex flex-col items-center justify-center py-8",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-success-container flex items-center justify-center mb-4",children:e.jsx(f,{name:"check",size:"lg",color:"#27AE60"})}),e.jsx(c,{variant:"headline-sm",align:"center",className:"text-surface-on mb-2",children:"¡Reserva confirmada!"}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-6",children:"Revisa tu email para los detalles."}),e.jsx(y,{variant:"tonal",onClick:G,children:"Nueva reserva"})]})}};return e.jsxs(e.Fragment,{children:[e.jsx(Z,{steps:Ue,currentStep:D,onStepClick:ge,onBack:R,title:s,footer:void 0,children:Ce()}),e.jsx(ce,{open:S,onClose:()=>k(!1),confirmation:j,onNewBooking:G}),e.jsx(de,{open:!!F,onClose:()=>M(null),message:F??"",onRetry:()=>M(null)})]})}function ue({services:a,onFetchSlots:r,onSubmitBooking:t,theme:n="light",companyName:s,className:i=""}){return e.jsx("div",{className:["chronowl-root w-full max-w-[480px]",n==="dark"?"chronowl-dark":"chronowl-light",i].filter(Boolean).join(" "),style:{width:"100%",maxWidth:480},"data-theme":n,children:e.jsx(me,{services:a,onFetchSlots:r,onSubmitBooking:t,companyName:s})})}function xe({htmlFor:a,required:r,children:t,className:n="",...s}){return e.jsxs("label",{htmlFor:a,className:["block text-label-lg text-surface-on font-sans mb-1",n].filter(Boolean).join(" "),...s,children:[t,r&&e.jsx("span",{className:"text-error ml-0.5","aria-label":"requerido",children:"*"})]})}function _e({label:a,htmlFor:r,error:t,helperText:n,required:s,children:i}){return e.jsxs("div",{className:"mb-4 w-full",children:[e.jsx(xe,{htmlFor:r,required:s,children:a}),i,t&&e.jsx(c,{variant:"body-sm",className:"mt-1 px-1 text-error",children:t}),!t&&n&&e.jsx(c,{variant:"body-sm",className:"mt-1 px-1 text-surface-on-variant",children:n})]})}function Ge({slots:a,selectedSlotId:r,onSelectSlot:t,loading:n=!1}){return n?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx(Y,{size:"md"}),e.jsx(c,{variant:"body-md",className:"ml-3 text-surface-on-variant",children:"Cargando horarios..."})]}):a.length===0?e.jsx(c,{variant:"body-md",className:"text-center py-8 text-surface-on-variant",children:"No hay horarios disponibles para esta fecha."}):e.jsxs("div",{className:"w-full",children:[e.jsx(c,{variant:"title-sm",className:"mb-3 text-surface-on",children:"Selecciona un horario"}),e.jsx("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-2",children:a.map(s=>{const i=s.id===r,l=s.available;return e.jsx("button",{type:"button",disabled:!l,onClick:()=>l&&t(s),"aria-pressed":i,"aria-label":`${s.startTime} - ${s.endTime}${l?"":", no disponible"}`,className:["py-2.5 px-3 rounded-sm text-label-lg font-sans text-center","transition-all duration-medium-1 ease-standard","min-h-[44px] min-w-[44px]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",i?"bg-primary text-primary-on shadow-elevation-1":l?"bg-surface-variant text-surface-on hover:bg-primary-container hover:text-primary-on-container":"bg-surface-variant text-surface-on-variant opacity-40 cursor-not-allowed"].join(" "),children:s.startTime},s.id)})})]})}function he({slot:a,selected:r=!1,onSelect:t}){return e.jsxs("button",{type:"button",disabled:!a.available,onClick:()=>a.available&&t(a),"aria-pressed":r,"aria-label":`${a.startTime} a ${a.endTime}${a.available?"":", no disponible"}`,className:["flex flex-col items-center justify-center py-3 px-4 rounded-sm","min-h-[56px] min-w-[44px]","transition-all duration-medium-1 ease-standard","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",r?"bg-primary text-primary-on shadow-elevation-1":a.available?"bg-surface-variant text-surface-on hover:bg-primary-container hover:text-primary-on-container border border-transparent hover:border-primary/20":"bg-surface-variant text-surface-on-variant opacity-40 cursor-not-allowed line-through"].join(" "),children:[e.jsx(c,{variant:"label-lg",as:"span",className:"inherit",children:a.startTime}),e.jsx(c,{variant:"body-sm",as:"span",className:"opacity-70",children:a.endTime})]})}const fe=d.forwardRef(({icon:a,iconPosition:r="start",...t},n)=>e.jsx(B,{ref:n,leadingIcon:r==="start"?a:void 0,trailingIcon:r==="end"?a:void 0,...t}));fe.displayName="InputWithIcon";function Ke({children:a,orientation:r="horizontal",fullWidth:t=!1}){return e.jsx("div",{className:["flex gap-3",r==="vertical"?"flex-col":"flex-row items-center",t?"w-full [&>*]:flex-1":""].filter(Boolean).join(" "),role:"group",children:a})}function Je({slots:a,selectedSlotId:r,onSelectSlot:t,loading:n=!1}){if(n)return e.jsx(O,{message:"Buscando horarios disponibles..."});const s=a.filter(i=>i.available);return a.length===0||s.length===0?e.jsx(U,{icon:"clock",title:"Sin horarios disponibles",description:"No hay horarios disponibles para la fecha seleccionada. Intenta con otra fecha."}):e.jsxs("div",{className:"w-full",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3 px-1",children:[e.jsx(c,{variant:"title-sm",className:"text-surface-on",children:"Horarios disponibles"}),e.jsxs(c,{variant:"label-sm",className:"text-surface-on-variant",children:[s.length," disponible",s.length!==1?"s":""]})]}),e.jsx("div",{className:"grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 gap-2",children:a.map(i=>e.jsx(he,{slot:i,selected:i.id===r,onSelect:t},i.id))})]})}function _({header:a,footer:r,children:t}){return e.jsxs("div",{className:"chronowl-widget flex flex-col w-full max-w-[480px] mx-auto min-h-[400px] max-h-[90vh] bg-surface rounded-xl shadow-elevation-3 overflow-hidden font-sans",children:[a&&e.jsx("div",{className:"shrink-0",children:a}),e.jsx("main",{className:"flex-1 overflow-y-auto px-4 py-4",children:t}),r&&e.jsx("div",{className:"shrink-0",children:r})]})}function Qe({children:a,maxWidth:r="480px"}){return e.jsx("div",{className:"flex items-center justify-center min-h-screen p-4 bg-scrim/40",children:e.jsx("div",{className:"w-full bg-surface rounded-xl shadow-elevation-5 overflow-hidden font-sans",style:{maxWidth:r},children:a})})}function Xe({confirmation:a,onNewBooking:r,onClose:t,companyName:n}){return e.jsx(_,{header:e.jsx(H,{title:"ChronOwl",subtitle:"Reserva confirmada"}),footer:e.jsx(W,{companyName:n,poweredBy:!0}),children:e.jsxs("div",{className:"flex flex-col items-center py-4",children:[e.jsx("div",{className:"w-20 h-20 rounded-full bg-success-container flex items-center justify-center mb-5 animate-bounce",children:e.jsx(f,{name:"check",size:"lg",color:"#27AE60"})}),e.jsx(c,{variant:"headline-sm",align:"center",className:"text-surface-on mb-1",children:"¡Reserva confirmada!"}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-4",children:"Tu cita ha sido agendada exitosamente."}),e.jsx(V,{status:a.status,label:"Confirmada"}),e.jsx(T,{className:"my-5 w-full"}),e.jsxs("div",{className:"w-full space-y-4 bg-surface-variant rounded-md p-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-primary-container flex items-center justify-center shrink-0",children:e.jsx(f,{name:"star",size:"sm",color:"#2C3E50"})}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-sm",className:"text-surface-on-variant",children:"Servicio"}),e.jsx(c,{variant:"body-lg",className:"text-surface-on font-bold",children:a.service.name}),e.jsxs(c,{variant:"body-sm",className:"text-surface-on-variant",children:[a.service.duration," min — ",a.service.currency,a.service.price]})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-primary-container flex items-center justify-center shrink-0",children:e.jsx(f,{name:"calendar",size:"sm",color:"#2C3E50"})}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-sm",className:"text-surface-on-variant",children:"Fecha y hora"}),e.jsx(c,{variant:"body-lg",className:"text-surface-on font-bold",children:new Date(a.date).toLocaleDateString("es-ES",{weekday:"long",day:"numeric",month:"long",year:"numeric"})}),e.jsxs(c,{variant:"body-sm",className:"text-surface-on-variant",children:[a.timeSlot.startTime," - ",a.timeSlot.endTime]})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-primary-container flex items-center justify-center shrink-0",children:e.jsx(f,{name:"user",size:"sm",color:"#2C3E50"})}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-sm",className:"text-surface-on-variant",children:"Cliente"}),e.jsx(c,{variant:"body-lg",className:"text-surface-on font-bold",children:a.clientName}),e.jsx(c,{variant:"body-sm",className:"text-surface-on-variant",children:a.clientEmail})]})]})]}),e.jsxs(c,{variant:"body-sm",align:"center",className:"text-surface-on-variant mt-4",children:["ID de reserva: ",e.jsx("span",{className:"font-bold font-mono",children:a.id})]}),e.jsx(c,{variant:"body-sm",align:"center",className:"text-surface-on-variant mt-1 mb-6",children:"Te hemos enviado un email de confirmación."}),e.jsxs("div",{className:"w-full space-y-2",children:[r&&e.jsx(y,{variant:"filled",fullWidth:!0,size:"lg",onClick:r,children:"Nueva reserva"}),t&&e.jsx(y,{variant:"tonal",fullWidth:!0,size:"lg",onClick:t,children:"Cerrar"})]})]})})}function Ze({title:a="Sin disponibilidad",message:r="No hay horarios disponibles en este momento. Por favor, intenta más tarde.",onRetry:t,onBack:n,companyName:s}){return e.jsx(_,{header:e.jsx(H,{title:"ChronOwl",onBack:n}),footer:e.jsx(W,{companyName:s,poweredBy:!0}),children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 px-4",children:[e.jsx("div",{className:"w-20 h-20 rounded-full bg-error-container flex items-center justify-center mb-5",children:e.jsx(f,{name:"alert",size:"lg",color:"#C0392B"})}),e.jsx(c,{variant:"headline-sm",align:"center",className:"text-surface-on mb-2",children:a}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-8 max-w-xs",children:r}),e.jsxs("div",{className:"flex items-center gap-2 mb-8 opacity-30",children:[e.jsx(f,{name:"calendar",size:"lg",color:"#7F8C8D"}),e.jsx(f,{name:"close",size:"md",color:"#C0392B"}),e.jsx(f,{name:"clock",size:"lg",color:"#7F8C8D"})]}),e.jsxs("div",{className:"w-full max-w-xs space-y-3",children:[t&&e.jsx(y,{variant:"filled",fullWidth:!0,size:"lg",onClick:t,icon:e.jsx(f,{name:"spinner",size:"sm"}),iconPosition:"start",children:"Reintentar"}),n&&e.jsx(y,{variant:"tonal",fullWidth:!0,size:"lg",onClick:n,icon:e.jsx(f,{name:"arrow-left",size:"sm"}),iconPosition:"start",children:"Volver al inicio"})]})]})})}const ea={primary:"#2C3E50",onPrimary:"#FFFFFF",primaryContainer:"#E8F4F8",onPrimaryContainer:"#2C3E50",secondary:"#E8F4F8",onSecondary:"#2C3E50",secondaryContainer:"#D1E8F0",onSecondaryContainer:"#1A252F",tertiary:"#1A252F",onTertiary:"#FFFFFF",tertiaryContainer:"#34495E",onTertiaryContainer:"#E8F4F8",neutral:"#7F8C8D",onNeutral:"#FFFFFF",neutralVariant:"#BDC3C7",onNeutralVariant:"#2C3E50",surface:"#FFFFFF",onSurface:"#2C3E50",surfaceVariant:"#F0F3F5",onSurfaceVariant:"#7F8C8D",surfaceDim:"#E0E3E5",surfaceBright:"#FFFFFF",surfaceContainerLowest:"#FFFFFF",surfaceContainerLow:"#F8F9FA",surfaceContainer:"#F0F3F5",surfaceContainerHigh:"#E8EBEE",surfaceContainerHighest:"#E0E3E5",outline:"#BDC3C7",outlineVariant:"#E0E3E5",error:"#C0392B",onError:"#FFFFFF",errorContainer:"#FADBD8",onErrorContainer:"#78281F",warning:"#F39C12",onWarning:"#FFFFFF",warningContainer:"#FEF5E7",onWarningContainer:"#7E5109",success:"#27AE60",onSuccess:"#FFFFFF",successContainer:"#D5F5E3",onSuccessContainer:"#1E8449",inverseSurface:"#2C3E50",inverseOnSurface:"#FFFFFF",inversePrimary:"#A3C4D4",scrim:"#000000",shadow:"#000000"},aa={displayLarge:{fontSize:"57px",lineHeight:"64px",fontWeight:700,letterSpacing:"-0.25px"},displayMedium:{fontSize:"45px",lineHeight:"52px",fontWeight:700,letterSpacing:"0px"},displaySmall:{fontSize:"36px",lineHeight:"44px",fontWeight:700,letterSpacing:"0px"},headlineLarge:{fontSize:"32px",lineHeight:"40px",fontWeight:700,letterSpacing:"0px"},headlineMedium:{fontSize:"28px",lineHeight:"36px",fontWeight:700,letterSpacing:"0px"},headlineSmall:{fontSize:"24px",lineHeight:"32px",fontWeight:700,letterSpacing:"0px"},titleLarge:{fontSize:"22px",lineHeight:"28px",fontWeight:700,letterSpacing:"0px"},titleMedium:{fontSize:"18px",lineHeight:"24px",fontWeight:700,letterSpacing:"0.15px"},titleSmall:{fontSize:"14px",lineHeight:"20px",fontWeight:700,letterSpacing:"0.1px"},bodyLarge:{fontSize:"16px",lineHeight:"24px",fontWeight:400,letterSpacing:"0.15px"},bodyMedium:{fontSize:"14px",lineHeight:"20px",fontWeight:400,letterSpacing:"0.25px"},bodySmall:{fontSize:"12px",lineHeight:"16px",fontWeight:400,letterSpacing:"0.4px"},labelLarge:{fontSize:"14px",lineHeight:"20px",fontWeight:700,letterSpacing:"0.1px"},labelMedium:{fontSize:"12px",lineHeight:"16px",fontWeight:700,letterSpacing:"0.5px"},labelSmall:{fontSize:"11px",lineHeight:"16px",fontWeight:700,letterSpacing:"0.5px"}},ra="'Inter', 'Roboto', system-ui, sans-serif",ta={size0:"0px",size1:"4px",size2:"8px",size3:"12px",size4:"16px",size5:"24px",size6:"32px",size7:"40px",size8:"48px"},na={size0:0,size1:4,size2:8,size3:12,size4:16,size5:24,size6:32,size7:40,size8:48},sa={level0:"none",level1:"0 1px 3px rgba(44, 62, 80, 0.12)",level2:"0 3px 6px rgba(44, 62, 80, 0.16)",level3:"0 6px 10px rgba(44, 62, 80, 0.2)",level4:"0 8px 16px rgba(44, 62, 80, 0.24)",level5:"0 12px 28px rgba(44, 62, 80, 0.3)"},ve={short1:"50ms",short2:"100ms",medium1:"200ms",medium2:"300ms",long1:"400ms",long2:"500ms"},pe={standard:"cubic-bezier(0.2, 0, 0, 1)",emphasized:"cubic-bezier(0.2, 0, 0, 1)",decelerate:"cubic-bezier(0.05, 0.7, 0.1, 1)",accelerate:"cubic-bezier(0.3, 0, 0.8, 0.15)"},ia={duration:ve,easing:pe},la={extraSmall:"4px",small:"8px",medium:"12px",large:"16px",extraLarge:"28px",full:"999px"},I={services:a=>`/api/services/${a}`,availability:(a,r,t)=>`/api/availability/${a}/${r}/${t}`,bookings:"/api/bookings",bookingDetail:(a,r)=>`/api/bookings/${a}/${r}`,cancelBooking:(a,r)=>`/api/bookings/${a}/${r}/cancel`},oa="",ca=3e4;let z={baseUrl:oa,saasId:""};function da(a){if(a.baseUrl!==void 0){const r=a.baseUrl;r&&!r.startsWith("https://")&&!r.includes("localhost")&&!r.includes("127.0.0.1")&&console.warn("[ChronOwl] La URL del API no usa HTTPS. Las API keys se enviarán en texto plano.")}z={...z,...a}}async function P(a,r){if(!z.baseUrl)throw new Error('[ChronOwl] API URL no configurada. Llama a configureApi({ baseUrl: "..." }) primero.');const t=`${z.baseUrl}${a}`,n={"Content-Type":"application/json"};z.apiKey&&(n["x-api-key"]=z.apiKey);const s=new AbortController,i=setTimeout(()=>s.abort(),ca);try{const l=await fetch(t,{...r,headers:{...n,...r==null?void 0:r.headers},signal:s.signal}),o=await l.json();if(!l.ok||!o.success)throw new Error(o.error||`Error ${l.status}`);return o.data}catch(l){throw l.name==="AbortError"?new Error("La solicitud tardó demasiado. Intenta de nuevo."):l}finally{clearTimeout(i)}}const A={async getServices(a){const r=a||z.saasId;return P(I.services(r))},async getAvailability(a,r,t){const n=t||z.saasId;return P(I.availability(n,a,r))},async createBooking(a){return P(I.bookings,{method:"POST",body:JSON.stringify({...a,saasId:a.saasId||z.saasId})})},async cancelBooking(a,r){const t=r||z.saasId;return P(I.cancelBooking(t,a),{method:"PATCH"})}};function ma(a){const[r,t]=d.useState([]),[n,s]=d.useState(!0),[i,l]=d.useState(null),o=d.useCallback(async()=>{s(!0),l(null);try{const u=await A.getServices(a);t(u)}catch(u){l(u instanceof Error?u.message:"Error al cargar servicios")}finally{s(!1)}},[a]);return d.useEffect(()=>{a&&o()},[a,o]),{services:r,loading:n,error:i,refetch:o}}function ua(a){const[r,t]=d.useState([]),[n,s]=d.useState(!1),[i,l]=d.useState(null),o=d.useCallback(async(h,b)=>{s(!0),l(null);try{const m=ie(b),p=await A.getAvailability(h,m,a);t(p)}catch(m){l(m instanceof Error?m.message:"Error al cargar horarios"),t([])}finally{s(!1)}},[a]),u=d.useCallback(()=>{t([]),l(null)},[]);return{slots:r,loading:n,error:i,fetchSlots:o,clearSlots:u}}function xa(a){const[r,t]=d.useState(null),[n,s]=d.useState(!1),[i,l]=d.useState(null),o=d.useCallback(async b=>{s(!0),l(null);try{const m=await A.createBooking({...b,saasId:a});return t(m),m}catch(m){const p=m instanceof Error?m.message:"Error al crear reserva";return l(p),null}finally{s(!1)}},[a]),u=d.useCallback(async b=>{s(!0),l(null);try{await A.cancelBooking(b,a),t(null)}catch(m){l(m instanceof Error?m.message:"Error al cancelar reserva")}finally{s(!1)}},[a]),h=d.useCallback(()=>{t(null),l(null)},[]);return{booking:r,loading:n,error:i,createBooking:o,cancelBooking:u,reset:h}}function ha({initialValues:a,validationRules:r={},onSubmit:t}){const[n,s]=d.useState(a),[i,l]=d.useState({}),[o,u]=d.useState({}),[h,b]=d.useState(!1),m=d.useCallback((g,j)=>{const x=r[g];if(x)return x(j,n)},[r,n]),p=d.useCallback(()=>{const g={};let j=!0;for(const x of Object.keys(n)){const S=m(x,n[x]);S&&(g[x]=S,j=!1)}return l(g),j},[n,m]),C=d.useCallback((g,j)=>{if(s(x=>({...x,[g]:j})),o[g]){const x=m(g,j);l(S=>({...S,[g]:x}))}},[o,m]),N=d.useCallback(g=>{u(x=>({...x,[g]:!0}));const j=m(g,n[g]);l(x=>({...x,[g]:j}))},[n,m]),v=d.useCallback(async()=>{const g={};for(const j of Object.keys(n))g[j]=!0;if(u(g),!!p()){b(!0);try{await t(n)}finally{b(!1)}}},[n,p,t]),E=d.useCallback(()=>{s(a),l({}),u({})},[a]),L=Object.values(i).every(g=>!g);return{values:n,errors:i,touched:o,isValid:L,isSubmitting:h,handleChange:C,handleBlur:N,handleSubmit:v,reset:E}}function fa(...a){return a.filter(Boolean).join(" ")}function va(a,r="$"){return`${r}${a.toLocaleString()}`}function pa(a){if(a<60)return`${a} min`;const r=Math.floor(a/60),t=a%60;return t>0?`${r}h ${t}min`:`${r}h`}const ga=["Servicio","Fecha y hora","Datos","Confirmación"],ba={xs:320,sm:480,md:768,lg:1024,xl:1200},ya={es:{steps:["Servicio","Fecha y hora","Datos","Confirmación"],selectService:"Selecciona un servicio",selectDate:"Selecciona una fecha",selectTime:"Selecciona un horario",yourData:"Tus datos",confirm:"Confirmar reserva",continue:"Continuar",back:"Volver",close:"Cerrar",newBooking:"Nueva reserva",loading:"Cargando...",noSlots:"No hay horarios disponibles",noServices:"No hay servicios disponibles",bookingConfirmed:"Reserva confirmada",bookingError:"Error al crear la reserva",required:"Este campo es requerido",invalidEmail:"Email no válido",poweredBy:"Powered by ChronOwl"},en:{steps:["Service","Date & Time","Details","Confirmation"],selectService:"Select a service",selectDate:"Select a date",selectTime:"Select a time slot",yourData:"Your details",confirm:"Confirm booking",continue:"Continue",back:"Back",close:"Close",newBooking:"New booking",loading:"Loading...",noSlots:"No available time slots",noServices:"No services available",bookingConfirmed:"Booking confirmed",bookingError:"Error creating booking",required:"This field is required",invalidEmail:"Invalid email",poweredBy:"Powered by ChronOwl"}};exports.API_ENDPOINTS=I;exports.AvailabilityGrid=Je;exports.AvailabilitySlot=he;exports.BOOKING_STEPS=ga;exports.BREAKPOINTS=ba;exports.Badge=oe;exports.BookingForm=le;exports.BookingPage=me;exports.BookingPageTemplate=Z;exports.Button=y;exports.ButtonGroup=Ke;exports.Calendar=ne;exports.Card=ee;exports.CenteredLayout=Qe;exports.ChronOwlWidget=ue;exports.ConfirmationBadge=V;exports.ConfirmationModal=ce;exports.ConfirmationPage=Xe;exports.DateSelector=te;exports.Divider=T;exports.EmptyState=U;exports.ErrorModal=de;exports.ErrorPage=Ze;exports.Footer=W;exports.FormGroup=_e;exports.Header=H;exports.Icon=f;exports.Input=B;exports.InputWithIcon=fe;exports.LOCALE=ya;exports.Label=xe;exports.LoadingState=O;exports.MainLayout=_;exports.ServiceCard=ae;exports.ServiceList=re;exports.Spinner=Y;exports.Stepper=X;exports.TimeSelector=Ge;exports.TimeSlotSelector=se;exports.Typography=c;exports.chronowlApi=A;exports.cn=fa;exports.colors=ea;exports.configureApi=da;exports.corners=la;exports.dateToString=ie;exports.default=ue;exports.duration=ve;exports.easing=pe;exports.elevation=sa;exports.fontFamily=ra;exports.formatCurrency=va;exports.formatDate=We;exports.formatDateShort=Oe;exports.formatDuration=pa;exports.motion=ia;exports.spacing=ta;exports.spacingValues=na;exports.typescale=aa;exports.useAvailability=ua;exports.useBooking=xa;exports.useForm=ha;exports.useServices=ma;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),d=require("react"),ze={"display-lg":"text-display-lg","display-md":"text-display-md","display-sm":"text-display-sm","headline-lg":"text-headline-lg","headline-md":"text-headline-md","headline-sm":"text-headline-sm","title-lg":"text-title-lg","title-md":"text-title-md","title-sm":"text-title-sm","body-lg":"text-body-lg","body-md":"text-body-md","body-sm":"text-body-sm","label-lg":"text-label-lg","label-md":"text-label-md","label-sm":"text-label-sm"},Fe={"display-lg":"h1","display-md":"h1","display-sm":"h2","headline-lg":"h2","headline-md":"h3","headline-sm":"h4","title-lg":"h5","title-md":"h6","title-sm":"h6","body-lg":"p","body-md":"p","body-sm":"p","label-lg":"span","label-md":"span","label-sm":"small"},Ee={left:"text-left",center:"text-center",right:"text-right"};function c({variant:a="body-md",as:r,color:t,truncate:n=!1,align:s,children:i,className:l="",...o}){const u=r||Fe[a];return e.jsx(u,{className:["font-sans",ze[a],s?Ee[s]:"",n?"truncate":"",l].filter(Boolean).join(" "),style:t?{color:t}:void 0,...o,children:i})}const Le={sm:"h-8 px-3 text-label-md min-w-[44px]",md:"h-10 px-5 text-label-lg min-w-[44px]",lg:"h-12 px-6 text-label-lg min-w-[44px]"},Me={filled:{primary:"bg-primary text-primary-on hover:bg-tertiary active:bg-tertiary shadow-elevation-1 hover:shadow-elevation-2",secondary:"bg-secondary text-secondary-on hover:bg-secondary-container active:bg-secondary-container shadow-elevation-1",error:"bg-error text-error-on hover:bg-red-800 active:bg-red-900 shadow-elevation-1",success:"bg-success text-success-on hover:bg-green-700 active:bg-green-800 shadow-elevation-1",warning:"bg-warning text-warning-on hover:bg-yellow-600 active:bg-yellow-700 shadow-elevation-1"},tonal:{primary:"bg-primary-container text-primary-on-container hover:bg-secondary-container",secondary:"bg-secondary-container text-secondary-on-container hover:bg-secondary",error:"bg-error-container text-error-on-container hover:bg-red-200",success:"bg-success-container text-success-on-container hover:bg-green-200",warning:"bg-warning-container text-warning-on-container hover:bg-yellow-200"},outlined:{primary:"border border-primary text-primary hover:bg-primary-container",secondary:"border border-neutral-variant text-neutral hover:bg-surface-variant",error:"border border-error text-error hover:bg-error-container",success:"border border-success text-success hover:bg-success-container",warning:"border border-warning text-warning hover:bg-warning-container"},text:{primary:"text-primary hover:bg-primary-container",secondary:"text-neutral hover:bg-surface-variant",error:"text-error hover:bg-error-container",success:"text-success hover:bg-success-container",warning:"text-warning hover:bg-warning-container"}},y=d.forwardRef(({variant:a="filled",color:r="primary",size:t="md",fullWidth:n=!1,loading:s=!1,icon:i,iconPosition:l="start",disabled:o,children:u,className:h="",...b},m)=>{var L;const v=o||s,C="inline-flex items-center justify-center gap-2 font-sans font-bold rounded-full transition-all duration-medium-1 ease-standard focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary select-none cursor-pointer",N=v?"opacity-40 pointer-events-none cursor-not-allowed":"",p=n?"w-full":"",E=[C,Le[t],((L=Me[a])==null?void 0:L[r])??"",N,p,h].filter(Boolean).join(" ");return e.jsx("button",{ref:m,className:E,disabled:v,...b,children:s?e.jsxs("svg",{className:"animate-spin h-4 w-4",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}):e.jsxs(e.Fragment,{children:[i&&l==="start"&&e.jsx("span",{className:"inline-flex shrink-0",children:i}),u&&e.jsx("span",{children:u}),i&&l==="end"&&e.jsx("span",{className:"inline-flex shrink-0",children:i})]})})});y.displayName="Button";const Be={sm:16,md:20,lg:24},De={calendar:"M19 4h-1V2h-2v2H8V2H6v2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V10h14v10zm0-12H5V6h14v2z",clock:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm.5-13H11v6l5.2 3.2.8-1.3-4.5-2.7V7z",check:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z",close:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z","chevron-left":"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z","chevron-right":"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6-6-6z","chevron-down":"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z",search:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z",user:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z",mail:"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z",phone:"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z",notes:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z",alert:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z",info:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z",star:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27z",location:"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z",edit:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z",trash:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z","arrow-left":"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z","arrow-right":"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z",spinner:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z",owl:"OWL_MULTIPATH"};function f({name:a,size:r="md",color:t,className:n="",...s}){const i=Be[r],l=t||"currentColor";if(a==="owl")return e.jsx("span",{className:`material-symbols-outlined ${n}`,style:{fontSize:`${i}px`,color:l,fontVariationSettings:"'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24",lineHeight:1,display:"inline-flex",alignItems:"center",justifyContent:"center",width:i,height:i},"aria-hidden":"true",children:"owl"});const o=De[a];return e.jsx("svg",{width:i,height:i,viewBox:"0 0 24 24",fill:l,xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",className:n,...s,children:e.jsx("path",{d:o})})}function H({title:a="ChronOwl",subtitle:r,onBack:t,actions:n}){return e.jsxs("header",{className:"flex items-center gap-3 px-4 py-3 bg-surface border-b border-neutral-variant/30",children:[t&&e.jsx(y,{variant:"text",size:"sm",onClick:t,"aria-label":"Volver",className:"shrink-0 -ml-2",children:e.jsx(f,{name:"arrow-left",size:"md"})}),e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-primary flex items-center justify-center shrink-0",children:e.jsx(f,{name:"owl",size:"sm",color:"#FFFFFF"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx(c,{variant:"title-md",as:"h1",truncate:!0,className:"text-surface-on",children:a}),r&&e.jsx(c,{variant:"body-sm",as:"p",truncate:!0,className:"text-surface-on-variant",children:r})]})]}),n&&e.jsx("div",{className:"flex items-center gap-1 shrink-0",children:n})]})}function X({steps:a,currentStep:r,onStepClick:t}){return e.jsx("nav",{"aria-label":"Progreso de reserva",className:"px-4 py-3",children:e.jsx("ol",{className:"flex items-center w-full",children:a.map((n,s)=>{const i=s<r,l=s===r,o=t&&i;return e.jsxs("li",{className:["flex items-center",s<a.length-1?"flex-1":""].join(" "),children:[e.jsxs("button",{type:"button",disabled:!o,onClick:()=>o&&t(s),"aria-current":l?"step":void 0,className:["flex items-center gap-2 group",o?"cursor-pointer":"cursor-default","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary rounded"].join(" "),children:[e.jsx("span",{className:["flex items-center justify-center w-7 h-7 rounded-full text-label-sm font-bold shrink-0","transition-all duration-medium-1 ease-standard",i?"bg-primary text-primary-on":l?"bg-primary text-primary-on ring-2 ring-primary/30 ring-offset-2":"bg-surface-variant text-surface-on-variant"].join(" "),children:i?"✓":s+1}),e.jsx(c,{variant:"label-md",as:"span",className:["hidden sm:inline",l?"text-primary font-bold":i?"text-surface-on":"text-surface-on-variant"].join(" "),children:n})]}),s<a.length-1&&e.jsx("div",{className:["flex-1 h-0.5 mx-2","transition-colors duration-medium-1 ease-standard",i?"bg-primary":"bg-neutral-variant/40"].join(" ")})]},n)})})})}function W({companyName:a,poweredBy:r=!0}){return e.jsx("footer",{className:"px-4 py-3 border-t border-neutral-variant/30 bg-surface",children:e.jsxs("div",{className:"flex items-center justify-between",children:[a&&e.jsxs(c,{variant:"body-sm",className:"text-surface-on-variant",children:["© ",a]}),r&&e.jsxs("div",{className:"flex items-center gap-1 ml-auto",children:[e.jsx(f,{name:"owl",size:"sm",color:"#7F8C8D"}),e.jsx(c,{variant:"label-sm",className:"text-surface-on-variant",children:"Powered by ChronOwl"})]})]})})}function Z({steps:a,currentStep:r,onStepClick:t,onBack:n,title:s="ChronOwl",children:i,footer:l}){return e.jsxs("div",{className:"chronowl-widget flex flex-col w-full max-w-[480px] mx-auto min-h-[400px] max-h-[90vh] bg-surface rounded-xl shadow-elevation-3 overflow-hidden font-sans",children:[e.jsxs("div",{className:"shrink-0",children:[e.jsx(H,{title:s,subtitle:"Reserva tu cita",onBack:r>0?n:void 0}),e.jsx(X,{steps:a,currentStep:r,onStepClick:t})]}),e.jsx("main",{className:"flex-1 overflow-y-auto px-4 py-4",children:i}),e.jsx("div",{className:"shrink-0",children:l||e.jsx(W,{poweredBy:!0})})]})}const Te={0:"shadow-elevation-0",1:"shadow-elevation-1",2:"shadow-elevation-2",3:"shadow-elevation-3",4:"shadow-elevation-4",5:"shadow-elevation-5"},$e={sm:"p-3",md:"p-4",lg:"p-6"};function ee({elevation:a=1,outlined:r=!1,padding:t="md",children:n,className:s="",...i}){return e.jsx("div",{className:["bg-surface rounded-md font-sans","transition-shadow duration-medium-1 ease-standard",r?"border border-neutral-variant":Te[a],$e[t],s].filter(Boolean).join(" "),...i,children:n})}function ae({service:a,selected:r=!1,onSelect:t}){return e.jsx("button",{type:"button",onClick:()=>t(a),"aria-pressed":r,className:"w-full text-left focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary rounded-md",children:e.jsx(ee,{elevation:r?2:1,className:["transition-all duration-medium-1 ease-standard cursor-pointer","hover:shadow-elevation-2",r?"ring-2 ring-primary bg-primary-container":"hover:bg-surface-variant"].join(" "),children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx(c,{variant:"title-sm",className:r?"text-primary-on-container":"text-surface-on",children:a.name}),e.jsx(c,{variant:"body-sm",className:["mt-1",r?"text-primary-on-container/70":"text-surface-on-variant"].join(" "),truncate:!0,children:a.description}),e.jsxs("div",{className:"flex items-center gap-3 mt-2",children:[e.jsxs("span",{className:"inline-flex items-center gap-1 text-body-sm text-surface-on-variant",children:[e.jsx(f,{name:"clock",size:"sm"}),a.duration," min"]}),a.category&&e.jsx("span",{className:"text-body-sm text-surface-on-variant",children:a.category})]})]}),e.jsxs("div",{className:"text-right shrink-0",children:[e.jsxs(c,{variant:"title-md",className:"text-primary",children:[a.currency,a.price]}),r&&e.jsx("span",{className:"inline-flex mt-1",children:e.jsx(f,{name:"check",size:"sm",color:"#2C3E50"})})]})]})})})}const Ie={sm:"h-4 w-4 border-2",md:"h-6 w-6 border-2",lg:"h-10 w-10 border-3"};function U({size:a="md",color:r,className:t="",...n}){return e.jsx("div",{role:"progressbar","aria-label":"Cargando",className:["inline-block rounded-full border-solid border-current border-r-transparent animate-spin",Ie[a],t].filter(Boolean).join(" "),style:r?{borderColor:r,borderRightColor:"transparent"}:void 0,...n})}function O({message:a="Cargando...",size:r="md"}){return e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 gap-4",children:[e.jsx(U,{size:r}),e.jsx(c,{variant:"body-md",className:"text-surface-on-variant",children:a})]})}function V({icon:a="calendar",title:r,description:t,action:n}){return e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 px-4 text-center",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-surface-variant flex items-center justify-center mb-4",children:e.jsx(f,{name:a,size:"lg",color:"#7F8C8D"})}),e.jsx(c,{variant:"title-md",className:"text-surface-on mb-2",children:r}),t&&e.jsx(c,{variant:"body-md",className:"text-surface-on-variant mb-6 max-w-xs",children:t}),n&&e.jsx(y,{variant:"tonal",onClick:n.onClick,children:n.label})]})}function re({services:a,selectedServiceId:r,onSelectService:t,loading:n=!1}){return n?e.jsx(O,{message:"Cargando servicios..."}):a.length===0?e.jsx(V,{icon:"info",title:"Sin servicios disponibles",description:"No hay servicios configurados en este momento."}):e.jsxs("div",{className:"w-full",children:[e.jsx(c,{variant:"title-sm",className:"mb-3 px-1 text-surface-on",children:"Selecciona un servicio"}),e.jsx("div",{className:"flex flex-col gap-3",children:a.map(s=>e.jsx(ae,{service:s,selected:s.id===r,onSelect:t},s.id))})]})}const Ae=["Lu","Ma","Mi","Ju","Vi","Sa","Do"],K=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"];function J(a){return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`}function Q(a,r){return a.getFullYear()===r.getFullYear()&&a.getMonth()===r.getMonth()&&a.getDate()===r.getDate()}function te({selectedDate:a,onSelectDate:r,minDate:t,maxDate:n,disabledDates:s=[],availableDates:i=[]}){const l=new Date,[o,u]=d.useState((a==null?void 0:a.getMonth())??l.getMonth()),[h,b]=d.useState((a==null?void 0:a.getFullYear())??l.getFullYear()),m=d.useMemo(()=>new Set(s),[s]),v=d.useMemo(()=>new Set(i),[i]),C=new Date(h,o+1,0).getDate(),N=(new Date(h,o,1).getDay()+6)%7,p=()=>{o===0?(u(11),b(h-1)):u(o-1)},E=()=>{o===11?(u(0),b(h+1)):u(o+1)},L=x=>{const S=new Date(h,o,x),z=J(S);if(m.has(z)||t&&S<new Date(t.getFullYear(),t.getMonth(),t.getDate())||n&&S>n)return!0;const F=new Date(l.getFullYear(),l.getMonth(),l.getDate());return S<F},g=x=>{if(v.size===0)return!0;const S=J(new Date(h,o,x));return v.has(S)},j=[];for(let x=0;x<N;x++)j.push(null);for(let x=1;x<=C;x++)j.push(x);return e.jsxs("div",{className:"w-full max-w-[320px] mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx(y,{variant:"text",size:"sm",onClick:p,"aria-label":"Mes anterior",children:e.jsx(f,{name:"chevron-left",size:"md"})}),e.jsxs(c,{variant:"title-sm",className:"text-surface-on",children:[K[o]," ",h]}),e.jsx(y,{variant:"text",size:"sm",onClick:E,"aria-label":"Mes siguiente",children:e.jsx(f,{name:"chevron-right",size:"md"})})]}),e.jsx("div",{className:"grid grid-cols-7 gap-0.5 mb-1",children:Ae.map(x=>e.jsx("div",{className:"text-center text-label-sm text-surface-on-variant py-1",children:x},x))}),e.jsx("div",{className:"grid grid-cols-7 gap-0.5",children:j.map((x,S)=>{if(x===null)return e.jsx("div",{},`empty-${S}`);const z=new Date(h,o,x),F=L(x),M=g(x)&&!F,D=a?Q(z,a):!1,R=Q(z,l);return e.jsx("button",{type:"button",disabled:F,onClick:()=>M&&r(z),"aria-pressed":D,"aria-label":`${x} de ${K[o]}${F?", no disponible":""}`,className:["aspect-square flex items-center justify-center rounded-full","text-body-sm font-sans min-h-[36px] min-w-[36px]","transition-all duration-short-2 ease-standard","focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-primary",D?"bg-primary text-primary-on font-bold":R&&!F?"border border-primary text-primary font-bold":M?"text-surface-on hover:bg-primary-container cursor-pointer":"text-surface-on-variant opacity-30 cursor-not-allowed"].join(" "),children:x},x)})})]})}function ne({selectedDate:a,onSelectDate:r,minDate:t,maxDate:n,disabledDates:s,availableDates:i}){return e.jsxs("div",{className:"w-full",children:[e.jsx(c,{variant:"title-sm",className:"mb-3 px-1 text-surface-on",children:"Selecciona una fecha"}),e.jsx("div",{className:"bg-surface rounded-md shadow-elevation-1 p-4",children:e.jsx(te,{selectedDate:a,onSelectDate:r,minDate:t,maxDate:n,disabledDates:s,availableDates:i})}),a&&e.jsxs(c,{variant:"body-sm",className:"mt-2 px-1 text-surface-on-variant text-center",children:["Fecha seleccionada:"," ",e.jsx("span",{className:"font-bold text-primary",children:a.toLocaleDateString("es-ES",{weekday:"long",day:"numeric",month:"long"})})]})]})}function se({slots:a,selectedSlotId:r,onSelectSlot:t,columns:n=4}){const s=a.filter(o=>parseInt(o.startTime.split(":")[0],10)<12),i=a.filter(o=>parseInt(o.startTime.split(":")[0],10)>=12),l=o=>e.jsx("div",{className:"grid gap-2",style:{gridTemplateColumns:`repeat(${n}, 1fr)`},children:o.map(u=>{const h=u.id===r;return e.jsx("button",{type:"button",disabled:!u.available,onClick:()=>u.available&&t(u),"aria-pressed":h,className:["py-2 px-2 rounded-sm text-label-lg font-sans text-center","transition-all duration-short-2 ease-standard","min-h-[44px] min-w-[44px]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",h?"bg-primary text-primary-on shadow-elevation-1":u.available?"bg-surface border border-neutral-variant/40 text-surface-on hover:bg-primary-container hover:border-primary/30":"bg-surface-variant text-surface-on-variant opacity-30 cursor-not-allowed"].join(" "),children:u.startTime},u.id)})});return e.jsxs("div",{className:"w-full space-y-4",children:[s.length>0&&e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"mb-2 text-surface-on-variant",children:"Mañana"}),l(s)]}),i.length>0&&e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"mb-2 text-surface-on-variant",children:"Tarde"}),l(i)]})]})}const B=d.forwardRef(({label:a,error:r,helperText:t,leadingIcon:n,trailingIcon:s,fullWidth:i=!0,className:l="",id:o,...u},h)=>{const b=d.useId(),m=o??b,v=!!r,C=["relative",i?"w-full":"inline-flex"].join(" "),N=["peer w-full h-12 px-4 rounded-xs bg-surface border font-sans text-body-lg","text-surface-on placeholder-transparent","transition-all duration-medium-1 ease-standard","focus:outline-none focus:ring-2",n?"pl-11":"",s?"pr-11":"",v?"border-error focus:ring-error focus:border-error":"border-neutral-variant focus:ring-primary focus:border-primary","disabled:opacity-40 disabled:cursor-not-allowed",l].filter(Boolean).join(" "),p=["absolute left-4 top-1/2 -translate-y-1/2 text-body-lg font-sans pointer-events-none","transition-all duration-medium-1 ease-standard origin-left","peer-focus:top-0 peer-focus:text-label-sm peer-focus:bg-surface peer-focus:px-1 peer-focus:-translate-y-1/2 peer-focus:scale-90","peer-[:not(:placeholder-shown)]:top-0 peer-[:not(:placeholder-shown)]:text-label-sm peer-[:not(:placeholder-shown)]:bg-surface peer-[:not(:placeholder-shown)]:px-1 peer-[:not(:placeholder-shown)]:-translate-y-1/2 peer-[:not(:placeholder-shown)]:scale-90",n?"left-11":"",v?"text-error peer-focus:text-error":"text-surface-on-variant peer-focus:text-primary"].filter(Boolean).join(" ");return e.jsxs("div",{className:C,children:[e.jsxs("div",{className:"relative",children:[n&&e.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-surface-on-variant",children:n}),e.jsx("input",{ref:h,id:m,className:N,placeholder:a||" ","aria-invalid":v,"aria-describedby":r?`${m}-error`:t?`${m}-helper`:void 0,...u}),a&&e.jsx("label",{htmlFor:m,className:p,children:a}),s&&e.jsx("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 text-surface-on-variant",children:s})]}),(r||t)&&e.jsx("p",{id:r?`${m}-error`:`${m}-helper`,className:["mt-1 px-4 text-body-sm",v?"text-error":"text-surface-on-variant"].join(" "),children:r||t})]})});B.displayName="Input";function Pe(a){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a)}function He(a){return/^[\d\s\-+()]{7,20}$/.test(a)}function We(a,r="es-ES"){return a.toLocaleDateString(r,{weekday:"long",day:"numeric",month:"long",year:"numeric"})}function Oe(a,r="es-ES"){return a.toLocaleDateString(r,{weekday:"short",day:"numeric",month:"short"})}function ie(a){return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`}function le({onSubmit:a,loading:r=!1,initialValues:t}){const[n,s]=d.useState((t==null?void 0:t.clientName)??""),[i,l]=d.useState((t==null?void 0:t.clientEmail)??""),[o,u]=d.useState((t==null?void 0:t.clientPhone)??""),[h,b]=d.useState((t==null?void 0:t.notes)??""),[m,v]=d.useState({}),C=()=>{const p={};return n.trim()||(p.clientName="El nombre es requerido"),i.trim()?Pe(i)||(p.clientEmail="Email no válido"):p.clientEmail="El email es requerido",o.trim()?He(o)||(p.clientPhone="Teléfono no válido"):p.clientPhone="El teléfono es requerido",v(p),Object.keys(p).length===0},N=p=>{p.preventDefault(),C()&&a({clientName:n.trim(),clientEmail:i.trim(),clientPhone:o.trim(),notes:h.trim()||void 0})};return e.jsxs("form",{onSubmit:N,noValidate:!0,className:"w-full",children:[e.jsx(c,{variant:"title-sm",className:"mb-4 text-surface-on",children:"Tus datos"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(B,{label:"Nombre completo",type:"text",value:n,onChange:p=>s(p.target.value),error:m.clientName,leadingIcon:e.jsx(f,{name:"user",size:"sm"}),autoComplete:"name",maxLength:100,required:!0}),e.jsx(B,{label:"Email",type:"email",value:i,onChange:p=>l(p.target.value),error:m.clientEmail,leadingIcon:e.jsx(f,{name:"mail",size:"sm"}),autoComplete:"email",maxLength:254,required:!0}),e.jsx(B,{label:"Teléfono",type:"tel",value:o,onChange:p=>u(p.target.value),error:m.clientPhone,leadingIcon:e.jsx(f,{name:"phone",size:"sm"}),autoComplete:"tel",maxLength:20,required:!0}),e.jsx(B,{label:"Notas (opcional)",type:"text",value:h,onChange:p=>b(p.target.value),leadingIcon:e.jsx(f,{name:"notes",size:"sm"}),maxLength:500})]}),e.jsx(y,{type:"submit",variant:"filled",color:"primary",size:"lg",fullWidth:!0,loading:r,className:"mt-6",children:"Confirmar reserva"})]})}function T({orientation:a="horizontal",inset:r=!1,className:t="",...n}){const s=a==="horizontal";return e.jsx("hr",{role:"separator","aria-orientation":a,className:["border-0 bg-neutral-variant",s?"h-px w-full":"w-px h-full",r&&s?"mx-4":"",r&&!s?"my-4":"",t].filter(Boolean).join(" "),...n})}const Re={confirmed:"bg-success-container text-success-on-container",pending:"bg-warning-container text-warning-on-container",cancelled:"bg-error-container text-error-on-container",completed:"bg-primary-container text-primary-on-container",info:"bg-secondary-container text-secondary-on-container"},qe={sm:"text-label-sm px-2 py-0.5",md:"text-label-md px-3 py-1",lg:"text-label-lg px-4 py-1.5"};function oe({variant:a,size:r="md",icon:t,children:n,className:s="",...i}){return e.jsxs("span",{className:["inline-flex items-center gap-1.5 font-sans font-bold rounded-full whitespace-nowrap",Re[a],qe[r],s].filter(Boolean).join(" "),...i,children:[t&&e.jsx("span",{className:"inline-flex shrink-0",children:t}),n]})}const Ue={confirmed:"check",pending:"clock",cancelled:"close",completed:"check",info:"info"};function Y({status:a,label:r}){return e.jsx(oe,{variant:a,icon:e.jsx(f,{name:Ue[a],size:"sm"}),children:r})}function ce({open:a,onClose:r,confirmation:t,onNewBooking:n}){const s=d.useRef(null);return d.useEffect(()=>{const i=s.current;i&&(a?i.showModal():i.close())},[a]),d.useEffect(()=>{const i=s.current;if(!i)return;const l=()=>r();return i.addEventListener("close",l),()=>i.removeEventListener("close",l)},[r]),t?e.jsx("dialog",{ref:s,className:["w-[90vw] max-w-md rounded-xl bg-surface shadow-elevation-5 p-0","backdrop:bg-scrim/40 backdrop:backdrop-blur-sm","animate-in fade-in slide-in-from-bottom-4"].join(" "),"aria-labelledby":"confirmation-title",children:e.jsxs("div",{className:"p-6",children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx("div",{className:"w-16 h-16 rounded-full bg-success-container flex items-center justify-center",children:e.jsx(f,{name:"check",size:"lg",color:"#27AE60"})})}),e.jsx(c,{variant:"headline-sm",as:"h2",align:"center",id:"confirmation-title",className:"text-surface-on mb-1",children:"¡Reserva confirmada!"}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-4",children:"Tu cita ha sido agendada exitosamente."}),e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx(Y,{status:t.status,label:"Confirmada"})}),e.jsx(T,{className:"my-4"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(f,{name:"star",size:"sm",color:"#7F8C8D"}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"text-surface-on-variant",children:"Servicio"}),e.jsx(c,{variant:"body-md",className:"text-surface-on",children:t.service.name})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(f,{name:"calendar",size:"sm",color:"#7F8C8D"}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"text-surface-on-variant",children:"Fecha"}),e.jsx(c,{variant:"body-md",className:"text-surface-on",children:new Date(t.date).toLocaleDateString("es-ES",{weekday:"long",day:"numeric",month:"long",year:"numeric"})})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(f,{name:"clock",size:"sm",color:"#7F8C8D"}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"text-surface-on-variant",children:"Hora"}),e.jsxs(c,{variant:"body-md",className:"text-surface-on",children:[t.timeSlot.startTime," - ",t.timeSlot.endTime]})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(f,{name:"user",size:"sm",color:"#7F8C8D"}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-md",className:"text-surface-on-variant",children:"Cliente"}),e.jsx(c,{variant:"body-md",className:"text-surface-on",children:t.clientName}),e.jsx(c,{variant:"body-sm",className:"text-surface-on-variant",children:t.clientEmail})]})]})]}),e.jsx(T,{className:"my-4"}),e.jsxs(c,{variant:"body-sm",align:"center",className:"text-surface-on-variant mb-4",children:["ID de reserva: ",e.jsx("span",{className:"font-bold",children:t.id})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(y,{variant:"filled",fullWidth:!0,onClick:r,children:"Cerrar"}),n&&e.jsx(y,{variant:"tonal",fullWidth:!0,onClick:n,children:"Nueva reserva"})]})]})}):null}function de({open:a,onClose:r,title:t="Ha ocurrido un error",message:n,onRetry:s}){const i=d.useRef(null);return d.useEffect(()=>{const l=i.current;l&&(a?l.showModal():l.close())},[a]),d.useEffect(()=>{const l=i.current;if(!l)return;const o=()=>r();return l.addEventListener("close",o),()=>l.removeEventListener("close",o)},[r]),e.jsx("dialog",{ref:i,className:["w-[90vw] max-w-sm rounded-xl bg-surface shadow-elevation-5 p-0","backdrop:bg-scrim/40 backdrop:backdrop-blur-sm"].join(" "),"aria-labelledby":"error-title",children:e.jsxs("div",{className:"p-6",children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx("div",{className:"w-14 h-14 rounded-full bg-error-container flex items-center justify-center",children:e.jsx(f,{name:"alert",size:"lg",color:"#C0392B"})})}),e.jsx(c,{variant:"title-lg",as:"h2",align:"center",id:"error-title",className:"text-surface-on mb-2",children:t}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-6",children:n}),e.jsxs("div",{className:"flex flex-col gap-2",children:[s&&e.jsx(y,{variant:"filled",fullWidth:!0,onClick:s,children:"Reintentar"}),e.jsx(y,{variant:s?"tonal":"filled",fullWidth:!0,onClick:r,children:"Cerrar"})]})]})})}const Ve=["Servicio","Fecha y hora","Datos","Confirmación"],Ye={service:0,datetime:1,form:2,confirmation:3};function me({services:a,onFetchSlots:r,onSubmitBooking:t,companyName:n="ChronOwl",title:s=n}){const[i,l]=d.useState("service"),[o,u]=d.useState(null),[h,b]=d.useState(),[m,v]=d.useState(null),[C,N]=d.useState([]),[p,E]=d.useState(!1),[L,g]=d.useState(!1),[j,x]=d.useState(null),[S,z]=d.useState(!1),[F,M]=d.useState(null),D=Ye[i],R=d.useCallback(()=>{i==="datetime"?(l("service"),b(void 0),v(null),N([])):i==="form"&&l("datetime")},[i]),ge=d.useCallback(w=>{const $=["service","datetime","form","confirmation"];w<D&&l($[w])},[D]),be=d.useCallback(w=>{u(w)},[]),ye=d.useCallback(()=>{o&&(l("datetime"),b(void 0),v(null),N([]))},[o]),je=d.useCallback(async w=>{if(b(w),v(null),!o)return;const $=`${w.getFullYear()}-${String(w.getMonth()+1).padStart(2,"0")}-${String(w.getDate()).padStart(2,"0")}`;E(!0);try{const q=await r(o.id,$);N(q)}catch{M("No se pudieron cargar los horarios. Intenta de nuevo."),N([])}finally{E(!1)}},[o,r]),Ne=d.useCallback(w=>{v(w)},[]),Se=d.useCallback(()=>{h&&m&&l("form")},[h,m]),we=d.useCallback(async w=>{if(!o||!h||!m)return;const $=`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-${String(h.getDate()).padStart(2,"0")}`,q={serviceId:o.id,date:$,timeSlotId:m.id,...w};g(!0);try{const ke=await t(q);x(ke),z(!0),l("confirmation")}catch{M("No se pudo completar la reserva. Por favor, intenta de nuevo.")}finally{g(!1)}},[o,h,m,t]),G=d.useCallback(()=>{l("service"),u(null),b(void 0),v(null),N([]),x(null),z(!1)},[]),Ce=()=>{switch(i){case"service":return e.jsxs("div",{children:[e.jsx(re,{services:a,selectedServiceId:o==null?void 0:o.id,onSelectService:be}),o&&e.jsx("div",{className:"mt-6",children:e.jsx(y,{variant:"filled",fullWidth:!0,size:"lg",onClick:ye,icon:e.jsx(f,{name:"arrow-right",size:"sm"}),iconPosition:"end",children:"Continuar"})})]});case"datetime":return e.jsxs("div",{className:"space-y-6",children:[o&&e.jsxs("div",{className:"bg-primary-container rounded-sm px-4 py-3",children:[e.jsx(c,{variant:"label-md",className:"text-primary-on-container/70",children:"Servicio seleccionado"}),e.jsxs(c,{variant:"title-sm",className:"text-primary-on-container",children:[o.name," — ",o.currency,o.price]})]}),e.jsx(ne,{selectedDate:h,onSelectDate:je}),h&&e.jsxs(e.Fragment,{children:[e.jsx(T,{}),p?e.jsx(O,{message:"Buscando horarios...",size:"sm"}):e.jsx(se,{slots:C,selectedSlotId:m==null?void 0:m.id,onSelectSlot:Ne,columns:4})]}),m&&e.jsx("div",{className:"mt-4",children:e.jsx(y,{variant:"filled",fullWidth:!0,size:"lg",onClick:Se,icon:e.jsx(f,{name:"arrow-right",size:"sm"}),iconPosition:"end",children:"Continuar"})})]});case"form":return e.jsxs("div",{className:"space-y-4",children:[o&&h&&m&&e.jsxs("div",{className:"bg-primary-container rounded-sm px-4 py-3 space-y-1",children:[e.jsx(c,{variant:"label-md",className:"text-primary-on-container/70",children:"Resumen de tu reserva"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{name:"star",size:"sm",color:"#2C3E50"}),e.jsx(c,{variant:"body-sm",className:"text-primary-on-container",children:o.name})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{name:"calendar",size:"sm",color:"#2C3E50"}),e.jsx(c,{variant:"body-sm",className:"text-primary-on-container",children:h.toLocaleDateString("es-ES",{weekday:"short",day:"numeric",month:"short"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{name:"clock",size:"sm",color:"#2C3E50"}),e.jsxs(c,{variant:"body-sm",className:"text-primary-on-container",children:[m.startTime," - ",m.endTime]})]})]}),e.jsx(T,{}),e.jsx(le,{onSubmit:we,loading:L})]});case"confirmation":return e.jsxs("div",{className:"flex flex-col items-center justify-center py-8",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-success-container flex items-center justify-center mb-4",children:e.jsx(f,{name:"check",size:"lg",color:"#27AE60"})}),e.jsx(c,{variant:"headline-sm",align:"center",className:"text-surface-on mb-2",children:"¡Reserva confirmada!"}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-6",children:"Revisa tu email para los detalles."}),e.jsx(y,{variant:"tonal",onClick:G,children:"Nueva reserva"})]})}};return e.jsxs(e.Fragment,{children:[e.jsx(Z,{steps:Ve,currentStep:D,onStepClick:ge,onBack:R,title:s,footer:void 0,children:Ce()}),e.jsx(ce,{open:S,onClose:()=>z(!1),confirmation:j,onNewBooking:G}),e.jsx(de,{open:!!F,onClose:()=>M(null),message:F??"",onRetry:()=>M(null)})]})}function ue({services:a,onFetchSlots:r,onSubmitBooking:t,theme:n="light",companyName:s,className:i=""}){return e.jsx("div",{className:["chronowl-root w-full max-w-[480px]",n==="dark"?"chronowl-dark":"chronowl-light",i].filter(Boolean).join(" "),style:{width:"100%",maxWidth:480},"data-theme":n,children:e.jsx(me,{services:a,onFetchSlots:r,onSubmitBooking:t,companyName:s})})}function xe({htmlFor:a,required:r,children:t,className:n="",...s}){return e.jsxs("label",{htmlFor:a,className:["block text-label-lg text-surface-on font-sans mb-1",n].filter(Boolean).join(" "),...s,children:[t,r&&e.jsx("span",{className:"text-error ml-0.5","aria-label":"requerido",children:"*"})]})}function _e({label:a,htmlFor:r,error:t,helperText:n,required:s,children:i}){return e.jsxs("div",{className:"mb-4 w-full",children:[e.jsx(xe,{htmlFor:r,required:s,children:a}),i,t&&e.jsx(c,{variant:"body-sm",className:"mt-1 px-1 text-error",children:t}),!t&&n&&e.jsx(c,{variant:"body-sm",className:"mt-1 px-1 text-surface-on-variant",children:n})]})}function Ge({slots:a,selectedSlotId:r,onSelectSlot:t,loading:n=!1}){return n?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx(U,{size:"md"}),e.jsx(c,{variant:"body-md",className:"ml-3 text-surface-on-variant",children:"Cargando horarios..."})]}):a.length===0?e.jsx(c,{variant:"body-md",className:"text-center py-8 text-surface-on-variant",children:"No hay horarios disponibles para esta fecha."}):e.jsxs("div",{className:"w-full",children:[e.jsx(c,{variant:"title-sm",className:"mb-3 text-surface-on",children:"Selecciona un horario"}),e.jsx("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-2",children:a.map(s=>{const i=s.id===r,l=s.available;return e.jsx("button",{type:"button",disabled:!l,onClick:()=>l&&t(s),"aria-pressed":i,"aria-label":`${s.startTime} - ${s.endTime}${l?"":", no disponible"}`,className:["py-2.5 px-3 rounded-sm text-label-lg font-sans text-center","transition-all duration-medium-1 ease-standard","min-h-[44px] min-w-[44px]","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",i?"bg-primary text-primary-on shadow-elevation-1":l?"bg-surface-variant text-surface-on hover:bg-primary-container hover:text-primary-on-container":"bg-surface-variant text-surface-on-variant opacity-40 cursor-not-allowed"].join(" "),children:s.startTime},s.id)})})]})}function he({slot:a,selected:r=!1,onSelect:t}){return e.jsxs("button",{type:"button",disabled:!a.available,onClick:()=>a.available&&t(a),"aria-pressed":r,"aria-label":`${a.startTime} a ${a.endTime}${a.available?"":", no disponible"}`,className:["flex flex-col items-center justify-center py-3 px-4 rounded-sm","min-h-[56px] min-w-[44px]","transition-all duration-medium-1 ease-standard","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",r?"bg-primary text-primary-on shadow-elevation-1":a.available?"bg-surface-variant text-surface-on hover:bg-primary-container hover:text-primary-on-container border border-transparent hover:border-primary/20":"bg-surface-variant text-surface-on-variant opacity-40 cursor-not-allowed line-through"].join(" "),children:[e.jsx(c,{variant:"label-lg",as:"span",className:"inherit",children:a.startTime}),e.jsx(c,{variant:"body-sm",as:"span",className:"opacity-70",children:a.endTime})]})}const fe=d.forwardRef(({icon:a,iconPosition:r="start",...t},n)=>e.jsx(B,{ref:n,leadingIcon:r==="start"?a:void 0,trailingIcon:r==="end"?a:void 0,...t}));fe.displayName="InputWithIcon";function Ke({children:a,orientation:r="horizontal",fullWidth:t=!1}){return e.jsx("div",{className:["flex gap-3",r==="vertical"?"flex-col":"flex-row items-center",t?"w-full [&>*]:flex-1":""].filter(Boolean).join(" "),role:"group",children:a})}function Je({slots:a,selectedSlotId:r,onSelectSlot:t,loading:n=!1}){if(n)return e.jsx(O,{message:"Buscando horarios disponibles..."});const s=a.filter(i=>i.available);return a.length===0||s.length===0?e.jsx(V,{icon:"clock",title:"Sin horarios disponibles",description:"No hay horarios disponibles para la fecha seleccionada. Intenta con otra fecha."}):e.jsxs("div",{className:"w-full",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3 px-1",children:[e.jsx(c,{variant:"title-sm",className:"text-surface-on",children:"Horarios disponibles"}),e.jsxs(c,{variant:"label-sm",className:"text-surface-on-variant",children:[s.length," disponible",s.length!==1?"s":""]})]}),e.jsx("div",{className:"grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 gap-2",children:a.map(i=>e.jsx(he,{slot:i,selected:i.id===r,onSelect:t},i.id))})]})}function _({header:a,footer:r,children:t}){return e.jsxs("div",{className:"chronowl-widget flex flex-col w-full max-w-[480px] mx-auto min-h-[400px] max-h-[90vh] bg-surface rounded-xl shadow-elevation-3 overflow-hidden font-sans",children:[a&&e.jsx("div",{className:"shrink-0",children:a}),e.jsx("main",{className:"flex-1 overflow-y-auto px-4 py-4",children:t}),r&&e.jsx("div",{className:"shrink-0",children:r})]})}function Qe({children:a,maxWidth:r="480px"}){return e.jsx("div",{className:"flex items-center justify-center min-h-screen p-4 bg-scrim/40",children:e.jsx("div",{className:"w-full bg-surface rounded-xl shadow-elevation-5 overflow-hidden font-sans",style:{maxWidth:r},children:a})})}function Xe({confirmation:a,onNewBooking:r,onClose:t,companyName:n}){return e.jsx(_,{header:e.jsx(H,{title:"ChronOwl",subtitle:"Reserva confirmada"}),footer:e.jsx(W,{companyName:n,poweredBy:!0}),children:e.jsxs("div",{className:"flex flex-col items-center py-4",children:[e.jsx("div",{className:"w-20 h-20 rounded-full bg-success-container flex items-center justify-center mb-5 animate-bounce",children:e.jsx(f,{name:"check",size:"lg",color:"#27AE60"})}),e.jsx(c,{variant:"headline-sm",align:"center",className:"text-surface-on mb-1",children:"¡Reserva confirmada!"}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-4",children:"Tu cita ha sido agendada exitosamente."}),e.jsx(Y,{status:a.status,label:"Confirmada"}),e.jsx(T,{className:"my-5 w-full"}),e.jsxs("div",{className:"w-full space-y-4 bg-surface-variant rounded-md p-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-primary-container flex items-center justify-center shrink-0",children:e.jsx(f,{name:"star",size:"sm",color:"#2C3E50"})}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-sm",className:"text-surface-on-variant",children:"Servicio"}),e.jsx(c,{variant:"body-lg",className:"text-surface-on font-bold",children:a.service.name}),e.jsxs(c,{variant:"body-sm",className:"text-surface-on-variant",children:[a.service.duration," min — ",a.service.currency,a.service.price]})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-primary-container flex items-center justify-center shrink-0",children:e.jsx(f,{name:"calendar",size:"sm",color:"#2C3E50"})}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-sm",className:"text-surface-on-variant",children:"Fecha y hora"}),e.jsx(c,{variant:"body-lg",className:"text-surface-on font-bold",children:new Date(a.date).toLocaleDateString("es-ES",{weekday:"long",day:"numeric",month:"long",year:"numeric"})}),e.jsxs(c,{variant:"body-sm",className:"text-surface-on-variant",children:[a.timeSlot.startTime," - ",a.timeSlot.endTime]})]})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-primary-container flex items-center justify-center shrink-0",children:e.jsx(f,{name:"user",size:"sm",color:"#2C3E50"})}),e.jsxs("div",{children:[e.jsx(c,{variant:"label-sm",className:"text-surface-on-variant",children:"Cliente"}),e.jsx(c,{variant:"body-lg",className:"text-surface-on font-bold",children:a.clientName}),e.jsx(c,{variant:"body-sm",className:"text-surface-on-variant",children:a.clientEmail})]})]})]}),e.jsxs(c,{variant:"body-sm",align:"center",className:"text-surface-on-variant mt-4",children:["ID de reserva: ",e.jsx("span",{className:"font-bold font-mono",children:a.id})]}),e.jsx(c,{variant:"body-sm",align:"center",className:"text-surface-on-variant mt-1 mb-6",children:"Te hemos enviado un email de confirmación."}),e.jsxs("div",{className:"w-full space-y-2",children:[r&&e.jsx(y,{variant:"filled",fullWidth:!0,size:"lg",onClick:r,children:"Nueva reserva"}),t&&e.jsx(y,{variant:"tonal",fullWidth:!0,size:"lg",onClick:t,children:"Cerrar"})]})]})})}function Ze({title:a="Sin disponibilidad",message:r="No hay horarios disponibles en este momento. Por favor, intenta más tarde.",onRetry:t,onBack:n,companyName:s}){return e.jsx(_,{header:e.jsx(H,{title:"ChronOwl",onBack:n}),footer:e.jsx(W,{companyName:s,poweredBy:!0}),children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 px-4",children:[e.jsx("div",{className:"w-20 h-20 rounded-full bg-error-container flex items-center justify-center mb-5",children:e.jsx(f,{name:"alert",size:"lg",color:"#C0392B"})}),e.jsx(c,{variant:"headline-sm",align:"center",className:"text-surface-on mb-2",children:a}),e.jsx(c,{variant:"body-md",align:"center",className:"text-surface-on-variant mb-8 max-w-xs",children:r}),e.jsxs("div",{className:"flex items-center gap-2 mb-8 opacity-30",children:[e.jsx(f,{name:"calendar",size:"lg",color:"#7F8C8D"}),e.jsx(f,{name:"close",size:"md",color:"#C0392B"}),e.jsx(f,{name:"clock",size:"lg",color:"#7F8C8D"})]}),e.jsxs("div",{className:"w-full max-w-xs space-y-3",children:[t&&e.jsx(y,{variant:"filled",fullWidth:!0,size:"lg",onClick:t,icon:e.jsx(f,{name:"spinner",size:"sm"}),iconPosition:"start",children:"Reintentar"}),n&&e.jsx(y,{variant:"tonal",fullWidth:!0,size:"lg",onClick:n,icon:e.jsx(f,{name:"arrow-left",size:"sm"}),iconPosition:"start",children:"Volver al inicio"})]})]})})}const ea={primary:"#2C3E50",onPrimary:"#FFFFFF",primaryContainer:"#E8F4F8",onPrimaryContainer:"#2C3E50",secondary:"#E8F4F8",onSecondary:"#2C3E50",secondaryContainer:"#D1E8F0",onSecondaryContainer:"#1A252F",tertiary:"#1A252F",onTertiary:"#FFFFFF",tertiaryContainer:"#34495E",onTertiaryContainer:"#E8F4F8",neutral:"#7F8C8D",onNeutral:"#FFFFFF",neutralVariant:"#BDC3C7",onNeutralVariant:"#2C3E50",surface:"#FFFFFF",onSurface:"#2C3E50",surfaceVariant:"#F0F3F5",onSurfaceVariant:"#7F8C8D",surfaceDim:"#E0E3E5",surfaceBright:"#FFFFFF",surfaceContainerLowest:"#FFFFFF",surfaceContainerLow:"#F8F9FA",surfaceContainer:"#F0F3F5",surfaceContainerHigh:"#E8EBEE",surfaceContainerHighest:"#E0E3E5",outline:"#BDC3C7",outlineVariant:"#E0E3E5",error:"#C0392B",onError:"#FFFFFF",errorContainer:"#FADBD8",onErrorContainer:"#78281F",warning:"#F39C12",onWarning:"#FFFFFF",warningContainer:"#FEF5E7",onWarningContainer:"#7E5109",success:"#27AE60",onSuccess:"#FFFFFF",successContainer:"#D5F5E3",onSuccessContainer:"#1E8449",inverseSurface:"#2C3E50",inverseOnSurface:"#FFFFFF",inversePrimary:"#A3C4D4",scrim:"#000000",shadow:"#000000"},aa={displayLarge:{fontSize:"57px",lineHeight:"64px",fontWeight:700,letterSpacing:"-0.25px"},displayMedium:{fontSize:"45px",lineHeight:"52px",fontWeight:700,letterSpacing:"0px"},displaySmall:{fontSize:"36px",lineHeight:"44px",fontWeight:700,letterSpacing:"0px"},headlineLarge:{fontSize:"32px",lineHeight:"40px",fontWeight:700,letterSpacing:"0px"},headlineMedium:{fontSize:"28px",lineHeight:"36px",fontWeight:700,letterSpacing:"0px"},headlineSmall:{fontSize:"24px",lineHeight:"32px",fontWeight:700,letterSpacing:"0px"},titleLarge:{fontSize:"22px",lineHeight:"28px",fontWeight:700,letterSpacing:"0px"},titleMedium:{fontSize:"18px",lineHeight:"24px",fontWeight:700,letterSpacing:"0.15px"},titleSmall:{fontSize:"14px",lineHeight:"20px",fontWeight:700,letterSpacing:"0.1px"},bodyLarge:{fontSize:"16px",lineHeight:"24px",fontWeight:400,letterSpacing:"0.15px"},bodyMedium:{fontSize:"14px",lineHeight:"20px",fontWeight:400,letterSpacing:"0.25px"},bodySmall:{fontSize:"12px",lineHeight:"16px",fontWeight:400,letterSpacing:"0.4px"},labelLarge:{fontSize:"14px",lineHeight:"20px",fontWeight:700,letterSpacing:"0.1px"},labelMedium:{fontSize:"12px",lineHeight:"16px",fontWeight:700,letterSpacing:"0.5px"},labelSmall:{fontSize:"11px",lineHeight:"16px",fontWeight:700,letterSpacing:"0.5px"}},ra="'Inter', 'Roboto', system-ui, sans-serif",ta={size0:"0px",size1:"4px",size2:"8px",size3:"12px",size4:"16px",size5:"24px",size6:"32px",size7:"40px",size8:"48px"},na={size0:0,size1:4,size2:8,size3:12,size4:16,size5:24,size6:32,size7:40,size8:48},sa={level0:"none",level1:"0 1px 3px rgba(44, 62, 80, 0.12)",level2:"0 3px 6px rgba(44, 62, 80, 0.16)",level3:"0 6px 10px rgba(44, 62, 80, 0.2)",level4:"0 8px 16px rgba(44, 62, 80, 0.24)",level5:"0 12px 28px rgba(44, 62, 80, 0.3)"},pe={short1:"50ms",short2:"100ms",medium1:"200ms",medium2:"300ms",long1:"400ms",long2:"500ms"},ve={standard:"cubic-bezier(0.2, 0, 0, 1)",emphasized:"cubic-bezier(0.2, 0, 0, 1)",decelerate:"cubic-bezier(0.05, 0.7, 0.1, 1)",accelerate:"cubic-bezier(0.3, 0, 0.8, 0.15)"},ia={duration:pe,easing:ve},la={extraSmall:"4px",small:"8px",medium:"12px",large:"16px",extraLarge:"28px",full:"999px"},I={services:a=>`/api/services/${a}`,availability:(a,r,t)=>`/api/availability/${a}/${r}/${t}`,bookings:"/api/bookings",bookingDetail:(a,r)=>`/api/bookings/${a}/${r}`,cancelBooking:(a,r)=>`/api/bookings/${a}/${r}/cancel`},oa="",ca=3e4;let k={baseUrl:oa,saasId:""};function da(a){if(a.baseUrl!==void 0){const r=a.baseUrl;r&&!r.startsWith("https://")&&!r.includes("localhost")&&!r.includes("127.0.0.1")&&console.warn("[ChronOwl] La URL del API no usa HTTPS. Las API keys se enviarán en texto plano.")}k={...k,...a}}async function P(a,r){if(!k.baseUrl)throw new Error('[ChronOwl] API URL no configurada. Llama a configureApi({ baseUrl: "..." }) primero.');const t=`${k.baseUrl}${a}`,n={"Content-Type":"application/json"};k.apiKey&&(n["x-api-key"]=k.apiKey);const s=new AbortController,i=setTimeout(()=>s.abort(),ca);try{const l=await fetch(t,{...r,headers:{...n,...r==null?void 0:r.headers},signal:s.signal}),o=await l.json();if(!l.ok||!o.success)throw new Error(o.error||`Error ${l.status}`);return o.data}catch(l){throw l.name==="AbortError"?new Error("La solicitud tardó demasiado. Intenta de nuevo."):l}finally{clearTimeout(i)}}const A={async getServices(a){const r=a||k.saasId;return P(I.services(r))},async getAvailability(a,r,t){const n=t||k.saasId;return P(I.availability(n,a,r))},async createBooking(a){return P(I.bookings,{method:"POST",body:JSON.stringify({...a,saasId:a.saasId||k.saasId})})},async cancelBooking(a,r){const t=r||k.saasId;return P(I.cancelBooking(t,a),{method:"PATCH"})}};function ma(a){const[r,t]=d.useState([]),[n,s]=d.useState(!0),[i,l]=d.useState(null),o=d.useCallback(async()=>{s(!0),l(null);try{const u=await A.getServices(a);t(u)}catch(u){l(u instanceof Error?u.message:"Error al cargar servicios")}finally{s(!1)}},[a]);return d.useEffect(()=>{a&&o()},[a,o]),{services:r,loading:n,error:i,refetch:o}}function ua(a){const[r,t]=d.useState([]),[n,s]=d.useState(!1),[i,l]=d.useState(null),o=d.useCallback(async(h,b)=>{s(!0),l(null);try{const m=ie(b),v=await A.getAvailability(h,m,a);t(v)}catch(m){l(m instanceof Error?m.message:"Error al cargar horarios"),t([])}finally{s(!1)}},[a]),u=d.useCallback(()=>{t([]),l(null)},[]);return{slots:r,loading:n,error:i,fetchSlots:o,clearSlots:u}}function xa(a){const[r,t]=d.useState(null),[n,s]=d.useState(!1),[i,l]=d.useState(null),o=d.useCallback(async b=>{s(!0),l(null);try{const m=await A.createBooking({...b,saasId:a});return t(m),m}catch(m){const v=m instanceof Error?m.message:"Error al crear reserva";return l(v),null}finally{s(!1)}},[a]),u=d.useCallback(async b=>{s(!0),l(null);try{await A.cancelBooking(b,a),t(null)}catch(m){l(m instanceof Error?m.message:"Error al cancelar reserva")}finally{s(!1)}},[a]),h=d.useCallback(()=>{t(null),l(null)},[]);return{booking:r,loading:n,error:i,createBooking:o,cancelBooking:u,reset:h}}function ha({initialValues:a,validationRules:r={},onSubmit:t}){const[n,s]=d.useState(a),[i,l]=d.useState({}),[o,u]=d.useState({}),[h,b]=d.useState(!1),m=d.useCallback((g,j)=>{const x=r[g];if(x)return x(j,n)},[r,n]),v=d.useCallback(()=>{const g={};let j=!0;for(const x of Object.keys(n)){const S=m(x,n[x]);S&&(g[x]=S,j=!1)}return l(g),j},[n,m]),C=d.useCallback((g,j)=>{if(s(x=>({...x,[g]:j})),o[g]){const x=m(g,j);l(S=>({...S,[g]:x}))}},[o,m]),N=d.useCallback(g=>{u(x=>({...x,[g]:!0}));const j=m(g,n[g]);l(x=>({...x,[g]:j}))},[n,m]),p=d.useCallback(async()=>{const g={};for(const j of Object.keys(n))g[j]=!0;if(u(g),!!v()){b(!0);try{await t(n)}finally{b(!1)}}},[n,v,t]),E=d.useCallback(()=>{s(a),l({}),u({})},[a]),L=Object.values(i).every(g=>!g);return{values:n,errors:i,touched:o,isValid:L,isSubmitting:h,handleChange:C,handleBlur:N,handleSubmit:p,reset:E}}function fa(...a){return a.filter(Boolean).join(" ")}function pa(a,r="$"){return`${r}${a.toLocaleString()}`}function va(a){if(a<60)return`${a} min`;const r=Math.floor(a/60),t=a%60;return t>0?`${r}h ${t}min`:`${r}h`}const ga=["Servicio","Fecha y hora","Datos","Confirmación"],ba={xs:320,sm:480,md:768,lg:1024,xl:1200},ya={es:{steps:["Servicio","Fecha y hora","Datos","Confirmación"],selectService:"Selecciona un servicio",selectDate:"Selecciona una fecha",selectTime:"Selecciona un horario",yourData:"Tus datos",confirm:"Confirmar reserva",continue:"Continuar",back:"Volver",close:"Cerrar",newBooking:"Nueva reserva",loading:"Cargando...",noSlots:"No hay horarios disponibles",noServices:"No hay servicios disponibles",bookingConfirmed:"Reserva confirmada",bookingError:"Error al crear la reserva",required:"Este campo es requerido",invalidEmail:"Email no válido",poweredBy:"Powered by ChronOwl"},en:{steps:["Service","Date & Time","Details","Confirmation"],selectService:"Select a service",selectDate:"Select a date",selectTime:"Select a time slot",yourData:"Your details",confirm:"Confirm booking",continue:"Continue",back:"Back",close:"Close",newBooking:"New booking",loading:"Loading...",noSlots:"No available time slots",noServices:"No services available",bookingConfirmed:"Booking confirmed",bookingError:"Error creating booking",required:"This field is required",invalidEmail:"Invalid email",poweredBy:"Powered by ChronOwl"}};exports.API_ENDPOINTS=I;exports.AvailabilityGrid=Je;exports.AvailabilitySlot=he;exports.BOOKING_STEPS=ga;exports.BREAKPOINTS=ba;exports.Badge=oe;exports.BookingForm=le;exports.BookingPage=me;exports.BookingPageTemplate=Z;exports.Button=y;exports.ButtonGroup=Ke;exports.Calendar=ne;exports.Card=ee;exports.CenteredLayout=Qe;exports.ChronOwlWidget=ue;exports.ConfirmationBadge=Y;exports.ConfirmationModal=ce;exports.ConfirmationPage=Xe;exports.DateSelector=te;exports.Divider=T;exports.EmptyState=V;exports.ErrorModal=de;exports.ErrorPage=Ze;exports.Footer=W;exports.FormGroup=_e;exports.Header=H;exports.Icon=f;exports.Input=B;exports.InputWithIcon=fe;exports.LOCALE=ya;exports.Label=xe;exports.LoadingState=O;exports.MainLayout=_;exports.ServiceCard=ae;exports.ServiceList=re;exports.Spinner=U;exports.Stepper=X;exports.TimeSelector=Ge;exports.TimeSlotSelector=se;exports.Typography=c;exports.chronowlApi=A;exports.cn=fa;exports.colors=ea;exports.configureApi=da;exports.corners=la;exports.dateToString=ie;exports.default=ue;exports.duration=pe;exports.easing=ve;exports.elevation=sa;exports.fontFamily=ra;exports.formatCurrency=pa;exports.formatDate=We;exports.formatDateShort=Oe;exports.formatDuration=va;exports.motion=ia;exports.spacing=ta;exports.spacingValues=na;exports.typescale=aa;exports.useAvailability=ua;exports.useBooking=xa;exports.useForm=ha;exports.useServices=ma;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsx as e, jsxs as s, Fragment as
|
|
2
|
-
import { forwardRef as
|
|
1
|
+
import { jsx as e, jsxs as s, Fragment as Y } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as q, useState as p, useMemo as J, useId as he, useRef as ee, useEffect as I, useCallback as N } from "react";
|
|
3
3
|
const fe = {
|
|
4
4
|
"display-lg": "text-display-lg",
|
|
5
5
|
"display-md": "text-display-md",
|
|
@@ -97,7 +97,7 @@ const ge = {
|
|
|
97
97
|
success: "text-success hover:bg-success-container",
|
|
98
98
|
warning: "text-warning hover:bg-warning-container"
|
|
99
99
|
}
|
|
100
|
-
}, S =
|
|
100
|
+
}, S = q(
|
|
101
101
|
({
|
|
102
102
|
variant: r = "filled",
|
|
103
103
|
color: a = "primary",
|
|
@@ -149,7 +149,7 @@ const ge = {
|
|
|
149
149
|
)
|
|
150
150
|
]
|
|
151
151
|
}
|
|
152
|
-
) : /* @__PURE__ */ s(
|
|
152
|
+
) : /* @__PURE__ */ s(Y, { children: [
|
|
153
153
|
l && o === "start" && /* @__PURE__ */ e("span", { className: "inline-flex shrink-0", children: l }),
|
|
154
154
|
u && /* @__PURE__ */ e("span", { children: u }),
|
|
155
155
|
l && o === "end" && /* @__PURE__ */ e("span", { className: "inline-flex shrink-0", children: l })
|
|
@@ -183,22 +183,43 @@ const xe = {
|
|
|
183
183
|
"arrow-left": "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z",
|
|
184
184
|
"arrow-right": "M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z",
|
|
185
185
|
spinner: "M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z",
|
|
186
|
-
owl: "
|
|
186
|
+
owl: "OWL_MULTIPATH"
|
|
187
187
|
};
|
|
188
188
|
function v({ name: r, size: a = "md", color: n, className: t = "", ...i }) {
|
|
189
|
-
const l = xe[a], o =
|
|
189
|
+
const l = xe[a], o = n || "currentColor";
|
|
190
|
+
if (r === "owl")
|
|
191
|
+
return /* @__PURE__ */ e(
|
|
192
|
+
"span",
|
|
193
|
+
{
|
|
194
|
+
className: `material-symbols-outlined ${t}`,
|
|
195
|
+
style: {
|
|
196
|
+
fontSize: `${l}px`,
|
|
197
|
+
color: o,
|
|
198
|
+
fontVariationSettings: "'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24",
|
|
199
|
+
lineHeight: 1,
|
|
200
|
+
display: "inline-flex",
|
|
201
|
+
alignItems: "center",
|
|
202
|
+
justifyContent: "center",
|
|
203
|
+
width: l,
|
|
204
|
+
height: l
|
|
205
|
+
},
|
|
206
|
+
"aria-hidden": "true",
|
|
207
|
+
children: "owl"
|
|
208
|
+
}
|
|
209
|
+
);
|
|
210
|
+
const c = ye[r];
|
|
190
211
|
return /* @__PURE__ */ e(
|
|
191
212
|
"svg",
|
|
192
213
|
{
|
|
193
214
|
width: l,
|
|
194
215
|
height: l,
|
|
195
216
|
viewBox: "0 0 24 24",
|
|
196
|
-
fill:
|
|
217
|
+
fill: o,
|
|
197
218
|
xmlns: "http://www.w3.org/2000/svg",
|
|
198
219
|
"aria-hidden": "true",
|
|
199
220
|
className: t,
|
|
200
221
|
...i,
|
|
201
|
-
children: /* @__PURE__ */ e("path", { d:
|
|
222
|
+
children: /* @__PURE__ */ e("path", { d: c })
|
|
202
223
|
}
|
|
203
224
|
);
|
|
204
225
|
}
|
|
@@ -542,21 +563,21 @@ function Me({
|
|
|
542
563
|
/* @__PURE__ */ e("div", { className: "grid grid-cols-7 gap-0.5 mb-1", children: Le.map((h) => /* @__PURE__ */ e("div", { className: "text-center text-label-sm text-surface-on-variant py-1", children: h }, h)) }),
|
|
543
564
|
/* @__PURE__ */ e("div", { className: "grid grid-cols-7 gap-0.5", children: w.map((h, C) => {
|
|
544
565
|
if (h === null) return /* @__PURE__ */ e("div", {}, `empty-${C}`);
|
|
545
|
-
const L = new Date(f, c, h), M = D(h),
|
|
566
|
+
const L = new Date(f, c, h), M = D(h), T = x(h) && !M, B = r ? Z(L, r) : !1, R = Z(L, o);
|
|
546
567
|
return /* @__PURE__ */ e(
|
|
547
568
|
"button",
|
|
548
569
|
{
|
|
549
570
|
type: "button",
|
|
550
571
|
disabled: M,
|
|
551
|
-
onClick: () =>
|
|
552
|
-
"aria-pressed":
|
|
572
|
+
onClick: () => T && a(L),
|
|
573
|
+
"aria-pressed": B,
|
|
553
574
|
"aria-label": `${h} de ${Q[c]}${M ? ", no disponible" : ""}`,
|
|
554
575
|
className: [
|
|
555
576
|
"aspect-square flex items-center justify-center rounded-full",
|
|
556
577
|
"text-body-sm font-sans min-h-[36px] min-w-[36px]",
|
|
557
578
|
"transition-all duration-short-2 ease-standard",
|
|
558
579
|
"focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-primary",
|
|
559
|
-
|
|
580
|
+
B ? "bg-primary text-primary-on font-bold" : R && !M ? "border border-primary text-primary font-bold" : T ? "text-surface-on hover:bg-primary-container cursor-pointer" : "text-surface-on-variant opacity-30 cursor-not-allowed"
|
|
560
581
|
].join(" "),
|
|
561
582
|
children: h
|
|
562
583
|
},
|
|
@@ -642,7 +663,7 @@ function De({
|
|
|
642
663
|
] })
|
|
643
664
|
] });
|
|
644
665
|
}
|
|
645
|
-
const $ =
|
|
666
|
+
const $ = q(
|
|
646
667
|
({
|
|
647
668
|
label: r,
|
|
648
669
|
error: a,
|
|
@@ -708,10 +729,10 @@ const $ = U(
|
|
|
708
729
|
}
|
|
709
730
|
);
|
|
710
731
|
$.displayName = "Input";
|
|
711
|
-
function
|
|
732
|
+
function Te(r) {
|
|
712
733
|
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r);
|
|
713
734
|
}
|
|
714
|
-
function
|
|
735
|
+
function Be(r) {
|
|
715
736
|
return /^[\d\s\-+()]{7,20}$/.test(r);
|
|
716
737
|
}
|
|
717
738
|
function ar(r, a = "es-ES") {
|
|
@@ -735,7 +756,7 @@ function $e(r) {
|
|
|
735
756
|
function He({ onSubmit: r, loading: a = !1, initialValues: n }) {
|
|
736
757
|
const [t, i] = p((n == null ? void 0 : n.clientName) ?? ""), [l, o] = p((n == null ? void 0 : n.clientEmail) ?? ""), [c, u] = p((n == null ? void 0 : n.clientPhone) ?? ""), [f, y] = p((n == null ? void 0 : n.notes) ?? ""), [m, b] = p({}), k = () => {
|
|
737
758
|
const g = {};
|
|
738
|
-
return t.trim() || (g.clientName = "El nombre es requerido"), l.trim() ?
|
|
759
|
+
return t.trim() || (g.clientName = "El nombre es requerido"), l.trim() ? Te(l) || (g.clientEmail = "Email no válido") : g.clientEmail = "El email es requerido", c.trim() ? Be(c) || (g.clientPhone = "Teléfono no válido") : g.clientPhone = "El teléfono es requerido", b(g), Object.keys(g).length === 0;
|
|
739
760
|
};
|
|
740
761
|
return /* @__PURE__ */ s("form", { onSubmit: (g) => {
|
|
741
762
|
g.preventDefault(), k() && r({
|
|
@@ -1026,25 +1047,25 @@ function Re({
|
|
|
1026
1047
|
}
|
|
1027
1048
|
);
|
|
1028
1049
|
}
|
|
1029
|
-
const
|
|
1050
|
+
const Ue = ["Servicio", "Fecha y hora", "Datos", "Confirmación"], Ye = {
|
|
1030
1051
|
service: 0,
|
|
1031
1052
|
datetime: 1,
|
|
1032
1053
|
form: 2,
|
|
1033
1054
|
confirmation: 3
|
|
1034
1055
|
};
|
|
1035
|
-
function
|
|
1056
|
+
function qe({
|
|
1036
1057
|
services: r,
|
|
1037
1058
|
onFetchSlots: a,
|
|
1038
1059
|
onSubmitBooking: n,
|
|
1039
1060
|
companyName: t = "ChronOwl",
|
|
1040
1061
|
title: i = t
|
|
1041
1062
|
}) {
|
|
1042
|
-
const [l, o] = p("service"), [c, u] = p(null), [f, y] = p(), [m, b] = p(null), [k, z] = p([]), [g, j] = p(!1), [D, x] = p(!1), [w, h] = p(null), [C, L] = p(!1), [M,
|
|
1063
|
+
const [l, o] = p("service"), [c, u] = p(null), [f, y] = p(), [m, b] = p(null), [k, z] = p([]), [g, j] = p(!1), [D, x] = p(!1), [w, h] = p(null), [C, L] = p(!1), [M, T] = p(null), B = Ye[l], R = N(() => {
|
|
1043
1064
|
l === "datetime" ? (o("service"), y(void 0), b(null), z([])) : l === "form" && o("datetime");
|
|
1044
1065
|
}, [l]), ie = N((F) => {
|
|
1045
1066
|
const H = ["service", "datetime", "form", "confirmation"];
|
|
1046
|
-
F <
|
|
1047
|
-
}, [
|
|
1067
|
+
F < B && o(H[F]);
|
|
1068
|
+
}, [B]), se = N((F) => {
|
|
1048
1069
|
u(F);
|
|
1049
1070
|
}, []), le = N(() => {
|
|
1050
1071
|
c && (o("datetime"), y(void 0), b(null), z([]));
|
|
@@ -1054,10 +1075,10 @@ function Ue({
|
|
|
1054
1075
|
const H = `${F.getFullYear()}-${String(F.getMonth() + 1).padStart(2, "0")}-${String(F.getDate()).padStart(2, "0")}`;
|
|
1055
1076
|
j(!0);
|
|
1056
1077
|
try {
|
|
1057
|
-
const
|
|
1058
|
-
z(
|
|
1078
|
+
const U = await a(c.id, H);
|
|
1079
|
+
z(U);
|
|
1059
1080
|
} catch {
|
|
1060
|
-
|
|
1081
|
+
T("No se pudieron cargar los horarios. Intenta de nuevo."), z([]);
|
|
1061
1082
|
} finally {
|
|
1062
1083
|
j(!1);
|
|
1063
1084
|
}
|
|
@@ -1070,7 +1091,7 @@ function Ue({
|
|
|
1070
1091
|
}, [f, m]), me = N(
|
|
1071
1092
|
async (F) => {
|
|
1072
1093
|
if (!c || !f || !m) return;
|
|
1073
|
-
const H = `${f.getFullYear()}-${String(f.getMonth() + 1).padStart(2, "0")}-${String(f.getDate()).padStart(2, "0")}`,
|
|
1094
|
+
const H = `${f.getFullYear()}-${String(f.getMonth() + 1).padStart(2, "0")}-${String(f.getDate()).padStart(2, "0")}`, U = {
|
|
1074
1095
|
serviceId: c.id,
|
|
1075
1096
|
date: H,
|
|
1076
1097
|
timeSlotId: m.id,
|
|
@@ -1078,10 +1099,10 @@ function Ue({
|
|
|
1078
1099
|
};
|
|
1079
1100
|
x(!0);
|
|
1080
1101
|
try {
|
|
1081
|
-
const ue = await n(
|
|
1102
|
+
const ue = await n(U);
|
|
1082
1103
|
h(ue), L(!0), o("confirmation");
|
|
1083
1104
|
} catch {
|
|
1084
|
-
|
|
1105
|
+
T("No se pudo completar la reserva. Por favor, intenta de nuevo.");
|
|
1085
1106
|
} finally {
|
|
1086
1107
|
x(!1);
|
|
1087
1108
|
}
|
|
@@ -1090,12 +1111,12 @@ function Ue({
|
|
|
1090
1111
|
), G = N(() => {
|
|
1091
1112
|
o("service"), u(null), y(void 0), b(null), z([]), h(null), L(!1);
|
|
1092
1113
|
}, []);
|
|
1093
|
-
return /* @__PURE__ */ s(
|
|
1114
|
+
return /* @__PURE__ */ s(Y, { children: [
|
|
1094
1115
|
/* @__PURE__ */ e(
|
|
1095
1116
|
we,
|
|
1096
1117
|
{
|
|
1097
|
-
steps:
|
|
1098
|
-
currentStep:
|
|
1118
|
+
steps: Ue,
|
|
1119
|
+
currentStep: B,
|
|
1099
1120
|
onStepClick: ie,
|
|
1100
1121
|
onBack: R,
|
|
1101
1122
|
title: i,
|
|
@@ -1143,7 +1164,7 @@ function Ue({
|
|
|
1143
1164
|
onSelectDate: oe
|
|
1144
1165
|
}
|
|
1145
1166
|
),
|
|
1146
|
-
f && /* @__PURE__ */ s(
|
|
1167
|
+
f && /* @__PURE__ */ s(Y, { children: [
|
|
1147
1168
|
/* @__PURE__ */ e(A, {}),
|
|
1148
1169
|
g ? /* @__PURE__ */ e(K, { message: "Buscando horarios...", size: "sm" }) : /* @__PURE__ */ e(
|
|
1149
1170
|
De,
|
|
@@ -1220,9 +1241,9 @@ function Ue({
|
|
|
1220
1241
|
Re,
|
|
1221
1242
|
{
|
|
1222
1243
|
open: !!M,
|
|
1223
|
-
onClose: () =>
|
|
1244
|
+
onClose: () => T(null),
|
|
1224
1245
|
message: M ?? "",
|
|
1225
|
-
onRetry: () =>
|
|
1246
|
+
onRetry: () => T(null)
|
|
1226
1247
|
}
|
|
1227
1248
|
)
|
|
1228
1249
|
] });
|
|
@@ -1246,7 +1267,7 @@ function tr({
|
|
|
1246
1267
|
style: { width: "100%", maxWidth: 480 },
|
|
1247
1268
|
"data-theme": t,
|
|
1248
1269
|
children: /* @__PURE__ */ e(
|
|
1249
|
-
|
|
1270
|
+
qe,
|
|
1250
1271
|
{
|
|
1251
1272
|
services: r,
|
|
1252
1273
|
onFetchSlots: a,
|
|
@@ -1347,7 +1368,7 @@ function _e({ slot: r, selected: a = !1, onSelect: n }) {
|
|
|
1347
1368
|
}
|
|
1348
1369
|
);
|
|
1349
1370
|
}
|
|
1350
|
-
const Ke =
|
|
1371
|
+
const Ke = q(
|
|
1351
1372
|
({ icon: r, iconPosition: a = "start", ...n }, t) => /* @__PURE__ */ e(
|
|
1352
1373
|
$,
|
|
1353
1374
|
{
|
|
@@ -1994,7 +2015,7 @@ export {
|
|
|
1994
2015
|
Lr as BREAKPOINTS,
|
|
1995
2016
|
We as Badge,
|
|
1996
2017
|
He as BookingForm,
|
|
1997
|
-
|
|
2018
|
+
qe as BookingPage,
|
|
1998
2019
|
we as BookingPageTemplate,
|
|
1999
2020
|
S as Button,
|
|
2000
2021
|
lr as ButtonGroup,
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root,.chronowl-light{--co-primary: #2C3E50;--co-on-primary: #FFFFFF;--co-primary-container: #E8F4F8;--co-on-primary-container: #2C3E50;--co-secondary: #E8F4F8;--co-on-secondary: #2C3E50;--co-secondary-container: #D1E8F0;--co-on-secondary-container: #1A252F;--co-tertiary: #1A252F;--co-on-tertiary: #FFFFFF;--co-tertiary-container: #34495E;--co-on-tertiary-container: #E8F4F8;--co-neutral: #7F8C8D;--co-on-neutral: #FFFFFF;--co-neutral-variant: #BDC3C7;--co-on-neutral-variant: #2C3E50;--co-surface: #FFFFFF;--co-on-surface: #2C3E50;--co-surface-variant: #F0F3F5;--co-on-surface-variant: #7F8C8D;--co-surface-dim: #E0E3E5;--co-surface-bright: #FFFFFF;--co-surface-container-lowest: #FFFFFF;--co-surface-container-low: #F8F9FA;--co-surface-container: #F0F3F5;--co-surface-container-high: #E8EBEE;--co-surface-container-highest: #E0E3E5;--co-outline: #BDC3C7;--co-outline-variant: #E0E3E5;--co-error: #C0392B;--co-on-error: #FFFFFF;--co-error-container: #FADBD8;--co-on-error-container: #78281F;--co-warning: #F39C12;--co-on-warning: #FFFFFF;--co-warning-container: #FEF5E7;--co-on-warning-container: #7E5109;--co-success: #27AE60;--co-on-success: #FFFFFF;--co-success-container: #D5F5E3;--co-on-success-container: #1E8449;--co-inverse-surface: #2C3E50;--co-inverse-on-surface: #FFFFFF;--co-inverse-primary: #A3C4D4;--co-scrim: #000000;--co-shadow: #000000;--co-font-family: "Inter", "Roboto", system-ui, sans-serif;--co-elevation-0: none;--co-elevation-1: 0 1px 3px rgba(44, 62, 80, .12);--co-elevation-2: 0 3px 6px rgba(44, 62, 80, .16);--co-elevation-3: 0 6px 10px rgba(44, 62, 80, .2);--co-elevation-4: 0 8px 16px rgba(44, 62, 80, .24);--co-elevation-5: 0 12px 28px rgba(44, 62, 80, .3);--co-space-0: 0px;--co-space-1: 4px;--co-space-2: 8px;--co-space-3: 12px;--co-space-4: 16px;--co-space-5: 24px;--co-space-6: 32px;--co-space-7: 40px;--co-space-8: 48px;--co-corner-xs: 4px;--co-corner-sm: 8px;--co-corner-md: 12px;--co-corner-lg: 16px;--co-corner-xl: 28px;--co-corner-full: 999px;--co-duration-short-1: 50ms;--co-duration-short-2: .1s;--co-duration-medium-1: .2s;--co-duration-medium-2: .3s;--co-duration-long-1: .4s;--co-duration-long-2: .5s;--co-easing-standard: cubic-bezier(.2, 0, 0, 1);--co-easing-emphasized: cubic-bezier(.2, 0, 0, 1);--co-easing-decelerate: cubic-bezier(.05, .7, .1, 1);--co-easing-accelerate: cubic-bezier(.3, 0, .8, .15)}.chronowl-dark{--co-primary: #A3C4D4;--co-on-primary: #1A252F;--co-primary-container: #2C3E50;--co-on-primary-container: #E8F4F8;--co-secondary: #34495E;--co-on-secondary: #E8F4F8;--co-secondary-container: #1A252F;--co-on-secondary-container: #D1E8F0;--co-tertiary: #E8F4F8;--co-on-tertiary: #1A252F;--co-neutral: #95A5A6;--co-on-neutral: #1A252F;--co-neutral-variant: #5D6D7E;--co-on-neutral-variant: #E8F4F8;--co-surface: #1A252F;--co-on-surface: #E8F4F8;--co-surface-variant: #2C3E50;--co-on-surface-variant: #95A5A6;--co-surface-dim: #141C23;--co-surface-bright: #34495E;--co-surface-container-lowest: #0F161B;--co-surface-container-low: #1A252F;--co-surface-container: #212F3C;--co-surface-container-high: #2C3E50;--co-surface-container-highest: #34495E;--co-outline: #5D6D7E;--co-outline-variant: #34495E;--co-error: #E74C3C;--co-on-error: #FFFFFF;--co-error-container: #78281F;--co-on-error-container: #FADBD8;--co-warning: #F5B041;--co-on-warning: #1A252F;--co-warning-container: #7E5109;--co-on-warning-container: #FEF5E7;--co-success: #2ECC71;--co-on-success: #1A252F;--co-success-container: #1E8449;--co-on-success-container: #D5F5E3;--co-inverse-surface: #E8F4F8;--co-inverse-on-surface: #1A252F;--co-inverse-primary: #2C3E50;--co-elevation-1: 0 1px 3px rgba(0, 0, 0, .3);--co-elevation-2: 0 3px 6px rgba(0, 0, 0, .4);--co-elevation-3: 0 6px 10px rgba(0, 0, 0, .45);--co-elevation-4: 0 8px 16px rgba(0, 0, 0, .5);--co-elevation-5: 0 12px 28px rgba(0, 0, 0, .6)}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,Roboto,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.chronowl-root{font-family:var(--co-font-family);color:var(--co-on-surface);background-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}.chronowl-root *,.chronowl-root *:before,.chronowl-root *:after{box-sizing:border-box}.chronowl-root :focus-visible{outline:2px solid var(--co-primary);outline-offset:2px}.chronowl-root{scroll-behavior:smooth}.chronowl-root ::-webkit-scrollbar{width:4px}.chronowl-root ::-webkit-scrollbar-track{background:transparent}.chronowl-root ::-webkit-scrollbar-thumb{background-color:var(--co-neutral-variant);border-radius:var(--co-corner-full)}.container{width:100%}@media (min-width: 320px){.container{max-width:320px}}@media (min-width: 480px){.container{max-width:480px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1200px){.container{max-width:1200px}}@media (min-width: 1536px){.container{max-width:1536px}}.chronowl-widget{container-name:chronowl}@keyframes chronowl-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes chronowl-slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes chronowl-scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes chronowl-pulse{0%,to{opacity:1}50%{opacity:.6}}.chronowl-root dialog::backdrop{background-color:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.chronowl-root dialog[open]{animation:chronowl-scale-in var(--co-duration-medium-2) var(--co-easing-decelerate) both}@container chronowl (max-width: 360px){.chronowl-widget{font-size:14px}}@container chronowl (min-width: 480px){.chronowl-widget{font-size:16px}}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.left-11{left:2.75rem}.left-3{left:.75rem}.left-4{left:1rem}.right-3{right:.75rem}.top-1\/2{top:50%}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.-ml-2{margin-left:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.h-0\.5{height:.125rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-full{height:100%}.h-px{height:1px}.max-h-\[90vh\]{max-height:90vh}.min-h-\[36px\]{min-height:36px}.min-h-\[400px\]{min-height:400px}.min-h-\[44px\]{min-height:44px}.min-h-\[56px\]{min-height:56px}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[90vw\]{width:90vw}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[36px\]{min-width:36px}.min-w-\[44px\]{min-width:44px}.max-w-\[320px\]{max-width:320px}.max-w-\[480px\]{max-width:480px}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.origin-left{transform-origin:left}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:999px}.rounded-md{border-radius:12px}.rounded-sm{border-radius:8px}.rounded-xl{border-radius:28px}.rounded-xs{border-radius:4px}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-current{border-color:currentColor}.border-error{--tw-border-opacity: 1;border-color:rgb(192 57 43 / var(--tw-border-opacity, 1))}.border-neutral-variant{--tw-border-opacity: 1;border-color:rgb(189 195 199 / var(--tw-border-opacity, 1))}.border-neutral-variant\/30{border-color:#bdc3c74d}.border-neutral-variant\/40{border-color:#bdc3c766}.border-primary{--tw-border-opacity: 1;border-color:rgb(44 62 80 / var(--tw-border-opacity, 1))}.border-success{--tw-border-opacity: 1;border-color:rgb(39 174 96 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-warning{--tw-border-opacity: 1;border-color:rgb(243 156 18 / var(--tw-border-opacity, 1))}.border-r-transparent{border-right-color:transparent}.bg-error{--tw-bg-opacity: 1;background-color:rgb(192 57 43 / var(--tw-bg-opacity, 1))}.bg-error-container{--tw-bg-opacity: 1;background-color:rgb(250 219 216 / var(--tw-bg-opacity, 1))}.bg-neutral-variant{--tw-bg-opacity: 1;background-color:rgb(189 195 199 / var(--tw-bg-opacity, 1))}.bg-neutral-variant\/40{background-color:#bdc3c766}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(44 62 80 / var(--tw-bg-opacity, 1))}.bg-primary-container,.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(232 244 248 / var(--tw-bg-opacity, 1))}.bg-secondary-container{--tw-bg-opacity: 1;background-color:rgb(209 232 240 / var(--tw-bg-opacity, 1))}.bg-success{--tw-bg-opacity: 1;background-color:rgb(39 174 96 / var(--tw-bg-opacity, 1))}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-surface-variant{--tw-bg-opacity: 1;background-color:rgb(240 243 245 / var(--tw-bg-opacity, 1))}.bg-warning{--tw-bg-opacity: 1;background-color:rgb(243 156 18 / var(--tw-bg-opacity, 1))}.p-0{padding:0}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pl-11{padding-left:2.75rem}.pr-11{padding-right:2.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:Inter,Roboto,system-ui,sans-serif}.text-body-lg{font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:400}.text-body-md{font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}.text-body-sm{font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}.text-display-lg{font-size:57px;line-height:64px;letter-spacing:-.25px;font-weight:700}.text-display-md{font-size:45px;line-height:52px;letter-spacing:0px;font-weight:700}.text-display-sm{font-size:36px;line-height:44px;letter-spacing:0px;font-weight:700}.text-headline-lg{font-size:32px;line-height:40px;letter-spacing:0px;font-weight:700}.text-headline-md{font-size:28px;line-height:36px;letter-spacing:0px;font-weight:700}.text-headline-sm{font-size:24px;line-height:32px;letter-spacing:0px;font-weight:700}.text-label-lg{font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:700}.text-label-md{font-size:12px;line-height:16px;letter-spacing:.5px;font-weight:700}.text-label-sm{font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:700}.text-title-lg{font-size:22px;line-height:28px;letter-spacing:0px;font-weight:700}.text-title-md{font-size:18px;line-height:24px;letter-spacing:.15px;font-weight:700}.text-title-sm{font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:700}.font-bold{font-weight:700}.text-error{--tw-text-opacity: 1;color:rgb(192 57 43 / var(--tw-text-opacity, 1))}.text-error-on{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-error-on-container{--tw-text-opacity: 1;color:rgb(120 40 31 / var(--tw-text-opacity, 1))}.text-neutral{--tw-text-opacity: 1;color:rgb(127 140 141 / var(--tw-text-opacity, 1))}.text-primary{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.text-primary-on{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-primary-on-container{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.text-primary-on-container\/70{color:#2c3e50b3}.text-secondary-on{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.text-secondary-on-container{--tw-text-opacity: 1;color:rgb(26 37 47 / var(--tw-text-opacity, 1))}.text-success{--tw-text-opacity: 1;color:rgb(39 174 96 / var(--tw-text-opacity, 1))}.text-success-on{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-surface-on{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.text-surface-on-variant{--tw-text-opacity: 1;color:rgb(127 140 141 / var(--tw-text-opacity, 1))}.text-warning{--tw-text-opacity: 1;color:rgb(243 156 18 / var(--tw-text-opacity, 1))}.text-warning-on{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.placeholder-transparent::-moz-placeholder{color:transparent}.placeholder-transparent::placeholder{color:transparent}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-0{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-1{--tw-shadow: 0 1px 3px rgba(44, 62, 80, .12);--tw-shadow-colored: 0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-2{--tw-shadow: 0 3px 6px rgba(44, 62, 80, .16);--tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-3{--tw-shadow: 0 6px 10px rgba(44, 62, 80, .2);--tw-shadow-colored: 0 6px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-4{--tw-shadow: 0 8px 16px rgba(44, 62, 80, .24);--tw-shadow-colored: 0 8px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-5{--tw-shadow: 0 12px 28px rgba(44, 62, 80, .3);--tw-shadow-colored: 0 12px 28px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-opacity: 1;--tw-ring-color: rgb(44 62 80 / var(--tw-ring-opacity, 1))}.ring-primary\/30{--tw-ring-color: rgb(44 62 80 / .3)}.ring-offset-2{--tw-ring-offset-width: 2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-medium-1{transition-duration:.2s}.duration-short-2{transition-duration:.1s}.ease-standard{transition-timing-function:cubic-bezier(.2,0,0,1)}.chronowl-root ::-moz-selection{background-color:var(--co-primary-container);color:var(--co-on-primary-container)}.chronowl-root ::selection{background-color:var(--co-primary-container);color:var(--co-on-primary-container)}.backdrop\:backdrop-blur-sm::backdrop{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.hover\:border-primary\/20:hover{border-color:#2c3e5033}.hover\:border-primary\/30:hover{border-color:#2c3e504d}.hover\:bg-error-container:hover{--tw-bg-opacity: 1;background-color:rgb(250 219 216 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-container:hover{--tw-bg-opacity: 1;background-color:rgb(232 244 248 / var(--tw-bg-opacity, 1))}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-800:hover{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(232 244 248 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary-container:hover{--tw-bg-opacity: 1;background-color:rgb(209 232 240 / var(--tw-bg-opacity, 1))}.hover\:bg-surface-variant:hover{--tw-bg-opacity: 1;background-color:rgb(240 243 245 / var(--tw-bg-opacity, 1))}.hover\:bg-tertiary:hover{--tw-bg-opacity: 1;background-color:rgb(26 37 47 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-600:hover{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity, 1))}.hover\:text-primary-on-container:hover{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.hover\:shadow-elevation-2:hover{--tw-shadow: 0 3px 6px rgba(44, 62, 80, .16);--tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-error:focus{--tw-border-opacity: 1;border-color:rgb(192 57 43 / var(--tw-border-opacity, 1))}.focus\:border-primary:focus{--tw-border-opacity: 1;border-color:rgb(44 62 80 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-error:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(192 57 43 / var(--tw-ring-opacity, 1))}.focus\:ring-primary:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(44 62 80 / var(--tw-ring-opacity, 1))}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-1:focus-visible{outline-offset:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-primary:focus-visible{outline-color:#2c3e50}.active\:bg-green-800:active{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity, 1))}.active\:bg-red-900:active{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.active\:bg-secondary-container:active{--tw-bg-opacity: 1;background-color:rgb(209 232 240 / var(--tw-bg-opacity, 1))}.active\:bg-tertiary:active{--tw-bg-opacity: 1;background-color:rgb(26 37 47 / var(--tw-bg-opacity, 1))}.active\:bg-yellow-700:active{--tw-bg-opacity: 1;background-color:rgb(161 98 7 / var(--tw-bg-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.peer:focus~.peer-focus\:top-0{top:0}.peer:focus~.peer-focus\:-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.peer:focus~.peer-focus\:px-1{padding-left:.25rem;padding-right:.25rem}.peer:focus~.peer-focus\:text-label-sm{font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:700}.peer:focus~.peer-focus\:text-error{--tw-text-opacity: 1;color:rgb(192 57 43 / var(--tw-text-opacity, 1))}.peer:focus~.peer-focus\:text-primary{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:top-0{top:0}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:top-0{top:0}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:px-1{padding-left:.25rem;padding-right:.25rem}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:px-1{padding-left:.25rem;padding-right:.25rem}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:text-label-sm{font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:700}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:text-label-sm{font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:700}@media (min-width: 480px){.sm\:inline{display:inline}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 768px){.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}.\[\&\>\*\]\:flex-1>*{flex:1 1 0%}
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=owl&display=swap";:root,.chronowl-light{--co-primary: #2C3E50;--co-on-primary: #FFFFFF;--co-primary-container: #E8F4F8;--co-on-primary-container: #2C3E50;--co-secondary: #E8F4F8;--co-on-secondary: #2C3E50;--co-secondary-container: #D1E8F0;--co-on-secondary-container: #1A252F;--co-tertiary: #1A252F;--co-on-tertiary: #FFFFFF;--co-tertiary-container: #34495E;--co-on-tertiary-container: #E8F4F8;--co-neutral: #7F8C8D;--co-on-neutral: #FFFFFF;--co-neutral-variant: #BDC3C7;--co-on-neutral-variant: #2C3E50;--co-surface: #FFFFFF;--co-on-surface: #2C3E50;--co-surface-variant: #F0F3F5;--co-on-surface-variant: #7F8C8D;--co-surface-dim: #E0E3E5;--co-surface-bright: #FFFFFF;--co-surface-container-lowest: #FFFFFF;--co-surface-container-low: #F8F9FA;--co-surface-container: #F0F3F5;--co-surface-container-high: #E8EBEE;--co-surface-container-highest: #E0E3E5;--co-outline: #BDC3C7;--co-outline-variant: #E0E3E5;--co-error: #C0392B;--co-on-error: #FFFFFF;--co-error-container: #FADBD8;--co-on-error-container: #78281F;--co-warning: #F39C12;--co-on-warning: #FFFFFF;--co-warning-container: #FEF5E7;--co-on-warning-container: #7E5109;--co-success: #27AE60;--co-on-success: #FFFFFF;--co-success-container: #D5F5E3;--co-on-success-container: #1E8449;--co-inverse-surface: #2C3E50;--co-inverse-on-surface: #FFFFFF;--co-inverse-primary: #A3C4D4;--co-scrim: #000000;--co-shadow: #000000;--co-font-family: "Inter", "Roboto", system-ui, sans-serif;--co-elevation-0: none;--co-elevation-1: 0 1px 3px rgba(44, 62, 80, .12);--co-elevation-2: 0 3px 6px rgba(44, 62, 80, .16);--co-elevation-3: 0 6px 10px rgba(44, 62, 80, .2);--co-elevation-4: 0 8px 16px rgba(44, 62, 80, .24);--co-elevation-5: 0 12px 28px rgba(44, 62, 80, .3);--co-space-0: 0px;--co-space-1: 4px;--co-space-2: 8px;--co-space-3: 12px;--co-space-4: 16px;--co-space-5: 24px;--co-space-6: 32px;--co-space-7: 40px;--co-space-8: 48px;--co-corner-xs: 4px;--co-corner-sm: 8px;--co-corner-md: 12px;--co-corner-lg: 16px;--co-corner-xl: 28px;--co-corner-full: 999px;--co-duration-short-1: 50ms;--co-duration-short-2: .1s;--co-duration-medium-1: .2s;--co-duration-medium-2: .3s;--co-duration-long-1: .4s;--co-duration-long-2: .5s;--co-easing-standard: cubic-bezier(.2, 0, 0, 1);--co-easing-emphasized: cubic-bezier(.2, 0, 0, 1);--co-easing-decelerate: cubic-bezier(.05, .7, .1, 1);--co-easing-accelerate: cubic-bezier(.3, 0, .8, .15)}.chronowl-dark{--co-primary: #A3C4D4;--co-on-primary: #1A252F;--co-primary-container: #2C3E50;--co-on-primary-container: #E8F4F8;--co-secondary: #34495E;--co-on-secondary: #E8F4F8;--co-secondary-container: #1A252F;--co-on-secondary-container: #D1E8F0;--co-tertiary: #E8F4F8;--co-on-tertiary: #1A252F;--co-neutral: #95A5A6;--co-on-neutral: #1A252F;--co-neutral-variant: #5D6D7E;--co-on-neutral-variant: #E8F4F8;--co-surface: #1A252F;--co-on-surface: #E8F4F8;--co-surface-variant: #2C3E50;--co-on-surface-variant: #95A5A6;--co-surface-dim: #141C23;--co-surface-bright: #34495E;--co-surface-container-lowest: #0F161B;--co-surface-container-low: #1A252F;--co-surface-container: #212F3C;--co-surface-container-high: #2C3E50;--co-surface-container-highest: #34495E;--co-outline: #5D6D7E;--co-outline-variant: #34495E;--co-error: #E74C3C;--co-on-error: #FFFFFF;--co-error-container: #78281F;--co-on-error-container: #FADBD8;--co-warning: #F5B041;--co-on-warning: #1A252F;--co-warning-container: #7E5109;--co-on-warning-container: #FEF5E7;--co-success: #2ECC71;--co-on-success: #1A252F;--co-success-container: #1E8449;--co-on-success-container: #D5F5E3;--co-inverse-surface: #E8F4F8;--co-inverse-on-surface: #1A252F;--co-inverse-primary: #2C3E50;--co-elevation-1: 0 1px 3px rgba(0, 0, 0, .3);--co-elevation-2: 0 3px 6px rgba(0, 0, 0, .4);--co-elevation-3: 0 6px 10px rgba(0, 0, 0, .45);--co-elevation-4: 0 8px 16px rgba(0, 0, 0, .5);--co-elevation-5: 0 12px 28px rgba(0, 0, 0, .6)}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,Roboto,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.chronowl-root{font-family:var(--co-font-family);color:var(--co-on-surface);background-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}.chronowl-root *,.chronowl-root *:before,.chronowl-root *:after{box-sizing:border-box}.chronowl-root :focus-visible{outline:2px solid var(--co-primary);outline-offset:2px}.chronowl-root{scroll-behavior:smooth}.chronowl-root ::-webkit-scrollbar{width:4px}.chronowl-root ::-webkit-scrollbar-track{background:transparent}.chronowl-root ::-webkit-scrollbar-thumb{background-color:var(--co-neutral-variant);border-radius:var(--co-corner-full)}.container{width:100%}@media (min-width: 320px){.container{max-width:320px}}@media (min-width: 480px){.container{max-width:480px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1200px){.container{max-width:1200px}}@media (min-width: 1536px){.container{max-width:1536px}}.chronowl-widget{container-name:chronowl}@keyframes chronowl-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes chronowl-slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes chronowl-scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes chronowl-pulse{0%,to{opacity:1}50%{opacity:.6}}.chronowl-root dialog::backdrop{background-color:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.chronowl-root dialog[open]{animation:chronowl-scale-in var(--co-duration-medium-2) var(--co-easing-decelerate) both}@container chronowl (max-width: 360px){.chronowl-widget{font-size:14px}}@container chronowl (min-width: 480px){.chronowl-widget{font-size:16px}}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.left-11{left:2.75rem}.left-3{left:.75rem}.left-4{left:1rem}.right-3{right:.75rem}.top-1\/2{top:50%}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.-ml-2{margin-left:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.h-0\.5{height:.125rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-full{height:100%}.h-px{height:1px}.max-h-\[90vh\]{max-height:90vh}.min-h-\[36px\]{min-height:36px}.min-h-\[400px\]{min-height:400px}.min-h-\[44px\]{min-height:44px}.min-h-\[56px\]{min-height:56px}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[90vw\]{width:90vw}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[36px\]{min-width:36px}.min-w-\[44px\]{min-width:44px}.max-w-\[320px\]{max-width:320px}.max-w-\[480px\]{max-width:480px}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.origin-left{transform-origin:left}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:999px}.rounded-md{border-radius:12px}.rounded-sm{border-radius:8px}.rounded-xl{border-radius:28px}.rounded-xs{border-radius:4px}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-current{border-color:currentColor}.border-error{--tw-border-opacity: 1;border-color:rgb(192 57 43 / var(--tw-border-opacity, 1))}.border-neutral-variant{--tw-border-opacity: 1;border-color:rgb(189 195 199 / var(--tw-border-opacity, 1))}.border-neutral-variant\/30{border-color:#bdc3c74d}.border-neutral-variant\/40{border-color:#bdc3c766}.border-primary{--tw-border-opacity: 1;border-color:rgb(44 62 80 / var(--tw-border-opacity, 1))}.border-success{--tw-border-opacity: 1;border-color:rgb(39 174 96 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-warning{--tw-border-opacity: 1;border-color:rgb(243 156 18 / var(--tw-border-opacity, 1))}.border-r-transparent{border-right-color:transparent}.bg-error{--tw-bg-opacity: 1;background-color:rgb(192 57 43 / var(--tw-bg-opacity, 1))}.bg-error-container{--tw-bg-opacity: 1;background-color:rgb(250 219 216 / var(--tw-bg-opacity, 1))}.bg-neutral-variant{--tw-bg-opacity: 1;background-color:rgb(189 195 199 / var(--tw-bg-opacity, 1))}.bg-neutral-variant\/40{background-color:#bdc3c766}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(44 62 80 / var(--tw-bg-opacity, 1))}.bg-primary-container,.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(232 244 248 / var(--tw-bg-opacity, 1))}.bg-secondary-container{--tw-bg-opacity: 1;background-color:rgb(209 232 240 / var(--tw-bg-opacity, 1))}.bg-success{--tw-bg-opacity: 1;background-color:rgb(39 174 96 / var(--tw-bg-opacity, 1))}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-surface-variant{--tw-bg-opacity: 1;background-color:rgb(240 243 245 / var(--tw-bg-opacity, 1))}.bg-warning{--tw-bg-opacity: 1;background-color:rgb(243 156 18 / var(--tw-bg-opacity, 1))}.p-0{padding:0}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pl-11{padding-left:2.75rem}.pr-11{padding-right:2.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:Inter,Roboto,system-ui,sans-serif}.text-body-lg{font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:400}.text-body-md{font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}.text-body-sm{font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}.text-display-lg{font-size:57px;line-height:64px;letter-spacing:-.25px;font-weight:700}.text-display-md{font-size:45px;line-height:52px;letter-spacing:0px;font-weight:700}.text-display-sm{font-size:36px;line-height:44px;letter-spacing:0px;font-weight:700}.text-headline-lg{font-size:32px;line-height:40px;letter-spacing:0px;font-weight:700}.text-headline-md{font-size:28px;line-height:36px;letter-spacing:0px;font-weight:700}.text-headline-sm{font-size:24px;line-height:32px;letter-spacing:0px;font-weight:700}.text-label-lg{font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:700}.text-label-md{font-size:12px;line-height:16px;letter-spacing:.5px;font-weight:700}.text-label-sm{font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:700}.text-title-lg{font-size:22px;line-height:28px;letter-spacing:0px;font-weight:700}.text-title-md{font-size:18px;line-height:24px;letter-spacing:.15px;font-weight:700}.text-title-sm{font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:700}.font-bold{font-weight:700}.text-error{--tw-text-opacity: 1;color:rgb(192 57 43 / var(--tw-text-opacity, 1))}.text-error-on{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-error-on-container{--tw-text-opacity: 1;color:rgb(120 40 31 / var(--tw-text-opacity, 1))}.text-neutral{--tw-text-opacity: 1;color:rgb(127 140 141 / var(--tw-text-opacity, 1))}.text-primary{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.text-primary-on{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-primary-on-container{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.text-primary-on-container\/70{color:#2c3e50b3}.text-secondary-on{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.text-secondary-on-container{--tw-text-opacity: 1;color:rgb(26 37 47 / var(--tw-text-opacity, 1))}.text-success{--tw-text-opacity: 1;color:rgb(39 174 96 / var(--tw-text-opacity, 1))}.text-success-on{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-surface-on{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.text-surface-on-variant{--tw-text-opacity: 1;color:rgb(127 140 141 / var(--tw-text-opacity, 1))}.text-warning{--tw-text-opacity: 1;color:rgb(243 156 18 / var(--tw-text-opacity, 1))}.text-warning-on{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.placeholder-transparent::-moz-placeholder{color:transparent}.placeholder-transparent::placeholder{color:transparent}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-0{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-1{--tw-shadow: 0 1px 3px rgba(44, 62, 80, .12);--tw-shadow-colored: 0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-2{--tw-shadow: 0 3px 6px rgba(44, 62, 80, .16);--tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-3{--tw-shadow: 0 6px 10px rgba(44, 62, 80, .2);--tw-shadow-colored: 0 6px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-4{--tw-shadow: 0 8px 16px rgba(44, 62, 80, .24);--tw-shadow-colored: 0 8px 16px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-5{--tw-shadow: 0 12px 28px rgba(44, 62, 80, .3);--tw-shadow-colored: 0 12px 28px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-opacity: 1;--tw-ring-color: rgb(44 62 80 / var(--tw-ring-opacity, 1))}.ring-primary\/30{--tw-ring-color: rgb(44 62 80 / .3)}.ring-offset-2{--tw-ring-offset-width: 2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-medium-1{transition-duration:.2s}.duration-short-2{transition-duration:.1s}.ease-standard{transition-timing-function:cubic-bezier(.2,0,0,1)}.chronowl-root ::-moz-selection{background-color:var(--co-primary-container);color:var(--co-on-primary-container)}.chronowl-root ::selection{background-color:var(--co-primary-container);color:var(--co-on-primary-container)}.backdrop\:backdrop-blur-sm::backdrop{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.hover\:border-primary\/20:hover{border-color:#2c3e5033}.hover\:border-primary\/30:hover{border-color:#2c3e504d}.hover\:bg-error-container:hover{--tw-bg-opacity: 1;background-color:rgb(250 219 216 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-container:hover{--tw-bg-opacity: 1;background-color:rgb(232 244 248 / var(--tw-bg-opacity, 1))}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-800:hover{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(232 244 248 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary-container:hover{--tw-bg-opacity: 1;background-color:rgb(209 232 240 / var(--tw-bg-opacity, 1))}.hover\:bg-surface-variant:hover{--tw-bg-opacity: 1;background-color:rgb(240 243 245 / var(--tw-bg-opacity, 1))}.hover\:bg-tertiary:hover{--tw-bg-opacity: 1;background-color:rgb(26 37 47 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-600:hover{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity, 1))}.hover\:text-primary-on-container:hover{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.hover\:shadow-elevation-2:hover{--tw-shadow: 0 3px 6px rgba(44, 62, 80, .16);--tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-error:focus{--tw-border-opacity: 1;border-color:rgb(192 57 43 / var(--tw-border-opacity, 1))}.focus\:border-primary:focus{--tw-border-opacity: 1;border-color:rgb(44 62 80 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-error:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(192 57 43 / var(--tw-ring-opacity, 1))}.focus\:ring-primary:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(44 62 80 / var(--tw-ring-opacity, 1))}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-1:focus-visible{outline-offset:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-primary:focus-visible{outline-color:#2c3e50}.active\:bg-green-800:active{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity, 1))}.active\:bg-red-900:active{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.active\:bg-secondary-container:active{--tw-bg-opacity: 1;background-color:rgb(209 232 240 / var(--tw-bg-opacity, 1))}.active\:bg-tertiary:active{--tw-bg-opacity: 1;background-color:rgb(26 37 47 / var(--tw-bg-opacity, 1))}.active\:bg-yellow-700:active{--tw-bg-opacity: 1;background-color:rgb(161 98 7 / var(--tw-bg-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.peer:focus~.peer-focus\:top-0{top:0}.peer:focus~.peer-focus\:-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.peer:focus~.peer-focus\:px-1{padding-left:.25rem;padding-right:.25rem}.peer:focus~.peer-focus\:text-label-sm{font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:700}.peer:focus~.peer-focus\:text-error{--tw-text-opacity: 1;color:rgb(192 57 43 / var(--tw-text-opacity, 1))}.peer:focus~.peer-focus\:text-primary{--tw-text-opacity: 1;color:rgb(44 62 80 / var(--tw-text-opacity, 1))}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:top-0{top:0}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:top-0{top:0}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:scale-90{--tw-scale-x: .9;--tw-scale-y: .9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:px-1{padding-left:.25rem;padding-right:.25rem}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:px-1{padding-left:.25rem;padding-right:.25rem}.peer:not(:-moz-placeholder)~.peer-\[\:not\(\:-moz-placeholder\)\]\:text-label-sm{font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:700}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:text-label-sm{font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:700}@media (min-width: 480px){.sm\:inline{display:inline}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 768px){.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}.\[\&\>\*\]\:flex-1>*{flex:1 1 0%}
|