@homlista-devs/ui 1.0.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/README.md ADDED
@@ -0,0 +1,295 @@
1
+ <div align="center">
2
+
3
+ # 🏡 HomLista Design System
4
+
5
+ **A world-class, production-ready design system for modern React applications**
6
+
7
+ [![npm version](https://img.shields.io/npm/v/@homlista/ui.svg)](https://www.npmjs.com/package/@homlista/ui)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
9
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue)](https://www.typescriptlang.org/)
10
+ [![Tests](https://img.shields.io/badge/tests-43%20passing-success)](https://github.com/team-homlista/ui)
11
+ [![Coverage](https://img.shields.io/badge/coverage-80%25+-success)](https://github.com/team-homlista/ui)
12
+ [![Bundle Size](https://img.shields.io/badge/gzip-25.5kB-success)](https://github.com/team-homlista/ui)
13
+
14
+ [Documentation](https://team-homlista.github.io/ui) • [Storybook](https://team-homlista.github.io/ui/storybook) • [NPM](https://www.npmjs.com/package/@homlista/ui) • [GitHub](https://github.com/team-homlista/ui)
15
+
16
+ </div>
17
+
18
+ ---
19
+
20
+ ## ✨ Features
21
+
22
+ <table>
23
+ <tr>
24
+ <td width="50%">
25
+
26
+ ### 🎨 **Theming**
27
+ - 4 built-in themes (light, dark, corporate, minimal)
28
+ - CSS custom properties for easy customization
29
+ - Dynamic theme switching
30
+ - Full Tailwind CSS v4 integration
31
+
32
+ ### 🧩 **Architecture**
33
+ - Feature-Sliced Design principles
34
+ - Clean, maintainable codebase
35
+ - Effector for state management
36
+ - Tree-shakeable exports
37
+
38
+ </td>
39
+ <td width="50%">
40
+
41
+ ### ♿ **Accessibility**
42
+ - WCAG 2.1 AA compliant
43
+ - Keyboard navigation support
44
+ - Screen reader compatible
45
+ - Focus management
46
+
47
+ ### 🚀 **Developer Experience**
48
+ - Full TypeScript support
49
+ - Comprehensive Storybook docs
50
+ - 43 automated tests
51
+ - ESM + CJS support
52
+
53
+ </td>
54
+ </tr>
55
+ </table>
56
+
57
+ ## Installation
58
+
59
+ ```bash
60
+ npm install @homlista/ui
61
+ # or
62
+ yarn add @homlista/ui
63
+ # or
64
+ pnpm add @homlista/ui
65
+ ```
66
+
67
+ ## Quick Start
68
+
69
+ ### 1. Import the CSS
70
+
71
+ First, import the design system styles in your application entry point:
72
+
73
+ ```tsx
74
+ // In your main.tsx or App.tsx
75
+ import '@homlista/ui/styles.css';
76
+ ```
77
+
78
+ ### 2. Use Components
79
+
80
+ ```tsx
81
+ import { Button, ThemeProvider } from '@homlista/ui';
82
+
83
+ function App() {
84
+ return (
85
+ <ThemeProvider>
86
+ <Button variant="default">Hello World</Button>
87
+ </ThemeProvider>
88
+ );
89
+ }
90
+ ```
91
+
92
+ **Note**: The `ThemeProvider` is optional. If you don't need dynamic theme switching, you can use components directly.
93
+
94
+ ## Theme Customization
95
+
96
+ ### Using CSS Custom Properties (Recommended)
97
+
98
+ Your design system uses CSS custom properties for theming. Simply override the CSS variables in your application:
99
+
100
+ ```css
101
+ /* Light theme (default) */
102
+ :root {
103
+ --background: 0 0% 100%;
104
+ --foreground: 222.2 84% 4.9%;
105
+ --primary: 221.2 83.2% 53.3%;
106
+ /* ... other variables */
107
+ }
108
+
109
+ /* Dark theme */
110
+ .dark {
111
+ --background: 222.2 84% 4.9%;
112
+ --foreground: 210 40% 98%;
113
+ --primary: 217.2 91.2% 59.8%;
114
+ /* ... other variables */
115
+ }
116
+ ```
117
+
118
+ ### Dynamic Theme Switching
119
+
120
+ ```tsx
121
+ // Toggle dark mode
122
+ const toggleTheme = () => {
123
+ document.documentElement.classList.toggle('dark');
124
+ };
125
+ ```
126
+
127
+ ## Components
128
+
129
+ ### Button
130
+
131
+ ```tsx
132
+ import { Button } from '@homlista:ui/design-system';
133
+
134
+ <Button variant="primary" size="md">
135
+ Click me
136
+ </Button>
137
+ ```
138
+
139
+ #### Button Props
140
+
141
+ | Prop | Type | Default | Description |
142
+ |------|------|---------|-------------|
143
+ | `variant` | `'primary' \| 'secondary' \| 'success' \| 'warning' \| 'error' \| 'info'` | `'primary'` | Visual style variant |
144
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Size of the button |
145
+ | `children` | `ReactNode` | - | Button content |
146
+ | `disabled` | `boolean` | `false` | Whether the button is disabled |
147
+
148
+ ### PropertyCard
149
+
150
+ ```tsx
151
+ import { PropertyCard } from '@homlista/ui';
152
+
153
+ const property = {
154
+ id: '1',
155
+ title: 'Casa de lujo en Cancún',
156
+ price: { amount: 8500000, currency: 'MXN' },
157
+ location: { city: 'Cancún', state: 'Quintana Roo' },
158
+ coordinates: { lat: 21.1619, lng: -86.8515 },
159
+ images: ['/path/to/image1.jpg', '/path/to/image2.jpg'],
160
+ transactionTypes: [{ type: 'Venta', variant: 'primary' }],
161
+ features: { bedrooms: 4, bathrooms: 3, parking: 2, area: 280 },
162
+ amenities: ['alberca', 'jardín', 'terraza'],
163
+ href: '/properties/1',
164
+ };
165
+
166
+ <PropertyCard
167
+ property={property}
168
+ onLike={(id, liked) => console.log(`Property ${id} ${liked ? 'liked' : 'unliked'}`)}
169
+ onImageClick={(index, id) => console.log(`Image ${index} clicked for ${id}`)}
170
+ />
171
+ ```
172
+
173
+ #### PropertyCard Props
174
+
175
+ | Prop | Type | Default | Description |
176
+ |------|------|---------|-------------|
177
+ | `property` | `PropertyCardData` | - | Property data object |
178
+ | `className` | `string` | - | Additional CSS classes |
179
+ | `onLike` | `(propertyId: string, isLiked: boolean) => void` | - | Like button click handler |
180
+ | `onImageClick` | `(imageIndex: number, propertyId: string) => void` | - | Image click handler |
181
+ | `showLikeButton` | `boolean` | `true` | Whether to show the like button |
182
+ | `showNavigation` | `boolean` | `true` | Whether to show image navigation |
183
+ | `imageAspectRatio` | `'4/3' \| '16/9' \| '1/1'` | `'4/3'` | Aspect ratio of property images |
184
+
185
+ #### PropertyCardData Type
186
+
187
+ ```typescript
188
+ interface PropertyCardData {
189
+ id: string;
190
+ title: string;
191
+ price: PropertyPrice;
192
+ location: PropertyLocation;
193
+ coordinates: PropertyCoordinates;
194
+ images: string[];
195
+ transactionTypes: PropertyTransactionType[];
196
+ features: PropertyFeatures;
197
+ amenities: string[];
198
+ href?: string;
199
+ }
200
+ ```
201
+
202
+ ## Development
203
+
204
+ ### Setup
205
+
206
+ ```bash
207
+ npm install
208
+ ```
209
+
210
+ ### Development Server
211
+
212
+ ```bash
213
+ npm run dev
214
+ ```
215
+
216
+ ### Storybook
217
+
218
+ ```bash
219
+ npm run storybook
220
+ ```
221
+
222
+ ### Building the Library
223
+
224
+ ```bash
225
+ npm run build:lib
226
+ ```
227
+
228
+ ### Testing
229
+
230
+ ```bash
231
+ npm test
232
+ ```
233
+
234
+ ## Architecture
235
+
236
+ This design system follows the **Feature-Sliced Design** architecture:
237
+
238
+ ```
239
+ src/
240
+ ├── features/ # Feature modules
241
+ │ ├── button/ # Button feature
242
+ │ ├── card/ # Card components
243
+ │ ├── modal/ # Modal components
244
+ │ ├── text/ # Text components
245
+ │ ├── theme/ # Theme management (optional)
246
+ │ └── property-card/ # Property-specific components
247
+ ├── shared/ # Shared code
248
+ │ ├── lib/ # Shared utilities (cn, design-system.ts)
249
+ │ ├── types/ # TypeScript types
250
+ │ └── config/ # Configuration & tokens
251
+ ├── entities/ # Business entities
252
+ ├── widgets/ # Composite components
253
+ ├── pages/ # Page components
254
+ └── lib/ # Application libraries
255
+ ```
256
+
257
+ ## Design Tokens
258
+
259
+ The design system uses CSS custom properties for theming. All components automatically adapt to theme changes through these variables:
260
+
261
+ ```css
262
+ /* Available CSS Custom Properties */
263
+ --background: 0 0% 100%;
264
+ --foreground: 222.2 84% 4.9%;
265
+ --primary: 221.2 83.2% 53.3%;
266
+ --secondary: 210 40% 96%;
267
+ --success: 142.1 70.6% 45.3%;
268
+ --warning: 38 92% 50.2%;
269
+ --error: 0 84.2% 60.2%;
270
+ --info: 199.2 89.1% 50.2%;
271
+ --border: 214.3 31.8% 91.4%;
272
+ --radius: 0.5rem;
273
+ /* ... and many more */
274
+ ```
275
+
276
+ ### Token Categories
277
+
278
+ - **Colors**: Brand, semantic, and neutral color palettes
279
+ - **Typography**: Font families, sizes, weights, and spacing
280
+ - **Spacing**: Consistent spacing scale (0.25rem increments)
281
+ - **Shadows**: Elevation system for depth
282
+ - **Border Radius**: Consistent corner rounding
283
+ - **Breakpoints**: Responsive design breakpoints
284
+
285
+ ## Contributing
286
+
287
+ 1. Follow the existing code style and architecture patterns
288
+ 2. Add Storybook stories for new components
289
+ 3. Write tests for new functionality
290
+ 4. Update documentation as needed
291
+ 5. Ensure TypeScript types are properly exported
292
+
293
+ ## License
294
+
295
+ MIT
@@ -0,0 +1,83 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("react"),gr=require("effector-react"),be=require("effector");function hr(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const M=hr(A);var ge={exports:{}},ue={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var Se;function xr(){if(Se)return ue;Se=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(o,n,i){var l=null;if(i!==void 0&&(l=""+i),n.key!==void 0&&(l=""+n.key),"key"in n){i={};for(var c in n)c!=="key"&&(i[c]=n[c])}else i=n;return n=i.ref,{$$typeof:e,type:o,key:l,ref:n!==void 0?n:null,props:i}}return ue.Fragment=t,ue.jsx=r,ue.jsxs=r,ue}var me={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var Te;function br(){return Te||(Te=1,process.env.NODE_ENV!=="production"&&(function(){function e(s){if(s==null)return null;if(typeof s=="function")return s.$$typeof===te?null:s.displayName||s.name||null;if(typeof s=="string")return s;switch(s){case P:return"Fragment";case Y:return"Profiler";case O:return"StrictMode";case $:return"Suspense";case U:return"SuspenseList";case re:return"Activity"}if(typeof s=="object")switch(typeof s.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),s.$$typeof){case E:return"Portal";case V:return s.displayName||"Context";case W:return(s._context.displayName||"Context")+".Consumer";case L:var h=s.render;return s=s.displayName,s||(s=h.displayName||h.name||"",s=s!==""?"ForwardRef("+s+")":"ForwardRef"),s;case g:return h=s.displayName||null,h!==null?h:e(s.type)||"Memo";case z:h=s._payload,s=s._init;try{return e(s(h))}catch{}}return null}function t(s){return""+s}function r(s){try{t(s);var h=!1}catch{h=!0}if(h){h=console;var b=h.error,j=typeof Symbol=="function"&&Symbol.toStringTag&&s[Symbol.toStringTag]||s.constructor.name||"Object";return b.call(h,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",j),t(s)}}function o(s){if(s===P)return"<>";if(typeof s=="object"&&s!==null&&s.$$typeof===z)return"<...>";try{var h=e(s);return h?"<"+h+">":"<...>"}catch{return"<...>"}}function n(){var s=F.A;return s===null?null:s.getOwner()}function i(){return Error("react-stack-top-frame")}function l(s){if(G.call(s,"key")){var h=Object.getOwnPropertyDescriptor(s,"key").get;if(h&&h.isReactWarning)return!1}return s.key!==void 0}function c(s,h){function b(){k||(k=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",h))}b.isReactWarning=!0,Object.defineProperty(s,"key",{get:b,configurable:!0})}function d(){var s=e(this.type);return R[s]||(R[s]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),s=this.props.ref,s!==void 0?s:null}function p(s,h,b,j,D,oe){var v=b.ref;return s={$$typeof:N,type:s,key:h,props:b,_owner:j},(v!==void 0?v:null)!==null?Object.defineProperty(s,"ref",{enumerable:!1,get:d}):Object.defineProperty(s,"ref",{enumerable:!1,value:null}),s._store={},Object.defineProperty(s._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(s,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(s,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:D}),Object.defineProperty(s,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:oe}),Object.freeze&&(Object.freeze(s.props),Object.freeze(s)),s}function y(s,h,b,j,D,oe){var v=h.children;if(v!==void 0)if(j)if(Z(v)){for(j=0;j<v.length;j++)C(v[j]);Object.freeze&&Object.freeze(v)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else C(v);if(G.call(h,"key")){v=e(s);var B=Object.keys(h).filter(function(ne){return ne!=="key"});j=0<B.length?"{key: someKey, "+B.join(": ..., ")+": ...}":"{key: someKey}",de[v+j]||(B=0<B.length?"{"+B.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ let props = %s;
19
+ <%s {...props} />
20
+ React keys must be passed directly to JSX without using spread:
21
+ let props = %s;
22
+ <%s key={someKey} {...props} />`,j,v,B,v),de[v+j]=!0)}if(v=null,b!==void 0&&(r(b),v=""+b),l(h)&&(r(h.key),v=""+h.key),"key"in h){b={};for(var q in h)q!=="key"&&(b[q]=h[q])}else b=h;return v&&c(b,typeof s=="function"?s.displayName||s.name||"Unknown":s),p(s,v,b,n(),D,oe)}function C(s){S(s)?s._store&&(s._store.validated=1):typeof s=="object"&&s!==null&&s.$$typeof===z&&(s._payload.status==="fulfilled"?S(s._payload.value)&&s._payload.value._store&&(s._payload.value._store.validated=1):s._store&&(s._store.validated=1))}function S(s){return typeof s=="object"&&s!==null&&s.$$typeof===N}var _=A,N=Symbol.for("react.transitional.element"),E=Symbol.for("react.portal"),P=Symbol.for("react.fragment"),O=Symbol.for("react.strict_mode"),Y=Symbol.for("react.profiler"),W=Symbol.for("react.consumer"),V=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),$=Symbol.for("react.suspense"),U=Symbol.for("react.suspense_list"),g=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),re=Symbol.for("react.activity"),te=Symbol.for("react.client.reference"),F=_.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,G=Object.prototype.hasOwnProperty,Z=Array.isArray,I=console.createTask?console.createTask:function(){return null};_={react_stack_bottom_frame:function(s){return s()}};var k,R={},f=_.react_stack_bottom_frame.bind(_,i)(),ce=I(o(i)),de={};me.Fragment=P,me.jsx=function(s,h,b){var j=1e4>F.recentlyCreatedOwnerStacks++;return y(s,h,b,!1,j?Error("react-stack-top-frame"):f,j?I(o(s)):ce)},me.jsxs=function(s,h,b){var j=1e4>F.recentlyCreatedOwnerStacks++;return y(s,h,b,!0,j?Error("react-stack-top-frame"):f,j?I(o(s)):ce)}})()),me}var _e;function vr(){return _e||(_e=1,process.env.NODE_ENV==="production"?ge.exports=xr():ge.exports=br()),ge.exports}var a=vr();function Pe(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function yr(...e){return t=>{let r=!1;const o=e.map(n=>{const i=Pe(n,t);return!r&&typeof i=="function"&&(r=!0),i});if(r)return()=>{for(let n=0;n<o.length;n++){const i=o[n];typeof i=="function"?i():Pe(e[n],null)}}}}function wr(e){const t=jr(e),r=M.forwardRef((o,n)=>{const{children:i,...l}=o,c=M.Children.toArray(i),d=c.find(Nr);if(d){const p=d.props.children,y=c.map(C=>C===d?M.Children.count(p)>1?M.Children.only(null):M.isValidElement(p)?p.props.children:null:C);return a.jsx(t,{...l,ref:n,children:M.isValidElement(p)?M.cloneElement(p,void 0,y):null})}return a.jsx(t,{...l,ref:n,children:i})});return r.displayName=`${e}.Slot`,r}var kr=wr("Slot");function jr(e){const t=M.forwardRef((r,o)=>{const{children:n,...i}=r;if(M.isValidElement(n)){const l=Er(n),c=Rr(i,n.props);return n.type!==M.Fragment&&(c.ref=o?yr(o,l):l),M.cloneElement(n,c)}return M.Children.count(n)>1?M.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Cr=Symbol("radix.slottable");function Nr(e){return M.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Cr}function Rr(e,t){const r={...t};for(const o in t){const n=e[o],i=t[o];/^on[A-Z]/.test(o)?n&&i?r[o]=(...c)=>{const d=i(...c);return n(...c),d}:n&&(r[o]=n):o==="style"?r[o]={...n,...i}:o==="className"&&(r[o]=[n,i].filter(Boolean).join(" "))}return{...e,...r}}function Er(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}function Ve(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t<n;t++)e[t]&&(r=Ve(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function Fe(){for(var e,t,r=0,o="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=Ve(e))&&(o&&(o+=" "),o+=t);return o}const Ee="-",Sr=e=>{const t=_r(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:l=>{const c=l.split(Ee);return c[0]===""&&c.length!==1&&c.shift(),Ge(c,t)||Tr(l)},getConflictingClassGroupIds:(l,c)=>{const d=r[l]||[];return c&&o[l]?[...d,...o[l]]:d}}},Ge=(e,t)=>{if(e.length===0)return t.classGroupId;const r=e[0],o=t.nextPart.get(r),n=o?Ge(e.slice(1),o):void 0;if(n)return n;if(t.validators.length===0)return;const i=e.join(Ee);return t.validators.find(({validator:l})=>l(i))?.classGroupId},Ae=/^\[(.+)\]$/,Tr=e=>{if(Ae.test(e)){const t=Ae.exec(e)[1],r=t?.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}},_r=e=>{const{theme:t,classGroups:r}=e,o={nextPart:new Map,validators:[]};for(const n in r)Ce(r[n],o,n,t);return o},Ce=(e,t,r,o)=>{e.forEach(n=>{if(typeof n=="string"){const i=n===""?t:ze(t,n);i.classGroupId=r;return}if(typeof n=="function"){if(Pr(n)){Ce(n(o),t,r,o);return}t.validators.push({validator:n,classGroupId:r});return}Object.entries(n).forEach(([i,l])=>{Ce(l,ze(t,i),r,o)})})},ze=(e,t)=>{let r=e;return t.split(Ee).forEach(o=>{r.nextPart.has(o)||r.nextPart.set(o,{nextPart:new Map,validators:[]}),r=r.nextPart.get(o)}),r},Pr=e=>e.isThemeGetter,Ar=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,o=new Map;const n=(i,l)=>{r.set(i,l),t++,t>e&&(t=0,o=r,r=new Map)};return{get(i){let l=r.get(i);if(l!==void 0)return l;if((l=o.get(i))!==void 0)return n(i,l),l},set(i,l){r.has(i)?r.set(i,l):n(i,l)}}},Ne="!",Re=":",zr=Re.length,Mr=e=>{const{prefix:t,experimentalParseClassName:r}=e;let o=n=>{const i=[];let l=0,c=0,d=0,p;for(let N=0;N<n.length;N++){let E=n[N];if(l===0&&c===0){if(E===Re){i.push(n.slice(d,N)),d=N+zr;continue}if(E==="/"){p=N;continue}}E==="["?l++:E==="]"?l--:E==="("?c++:E===")"&&c--}const y=i.length===0?n:n.substring(d),C=Ir(y),S=C!==y,_=p&&p>d?p-d:void 0;return{modifiers:i,hasImportantModifier:S,baseClassName:C,maybePostfixModifierPosition:_}};if(t){const n=t+Re,i=o;o=l=>l.startsWith(n)?i(l.substring(n.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:l,maybePostfixModifierPosition:void 0}}if(r){const n=o;o=i=>r({className:i,parseClassName:n})}return o},Ir=e=>e.endsWith(Ne)?e.substring(0,e.length-1):e.startsWith(Ne)?e.substring(1):e,Or=e=>{const t=Object.fromEntries(e.orderSensitiveModifiers.map(o=>[o,!0]));return o=>{if(o.length<=1)return o;const n=[];let i=[];return o.forEach(l=>{l[0]==="["||t[l]?(n.push(...i.sort(),l),i=[]):i.push(l)}),n.push(...i.sort()),n}},Lr=e=>({cache:Ar(e.cacheSize),parseClassName:Mr(e),sortModifiers:Or(e),...Sr(e)}),$r=/\s+/,Vr=(e,t)=>{const{parseClassName:r,getClassGroupId:o,getConflictingClassGroupIds:n,sortModifiers:i}=t,l=[],c=e.trim().split($r);let d="";for(let p=c.length-1;p>=0;p-=1){const y=c[p],{isExternal:C,modifiers:S,hasImportantModifier:_,baseClassName:N,maybePostfixModifierPosition:E}=r(y);if(C){d=y+(d.length>0?" "+d:d);continue}let P=!!E,O=o(P?N.substring(0,E):N);if(!O){if(!P){d=y+(d.length>0?" "+d:d);continue}if(O=o(N),!O){d=y+(d.length>0?" "+d:d);continue}P=!1}const Y=i(S).join(":"),W=_?Y+Ne:Y,V=W+O;if(l.includes(V))continue;l.push(V);const L=n(O,P);for(let $=0;$<L.length;++$){const U=L[$];l.push(W+U)}d=y+(d.length>0?" "+d:d)}return d};function Fr(){let e=0,t,r,o="";for(;e<arguments.length;)(t=arguments[e++])&&(r=We(t))&&(o&&(o+=" "),o+=r);return o}const We=e=>{if(typeof e=="string")return e;let t,r="";for(let o=0;o<e.length;o++)e[o]&&(t=We(e[o]))&&(r&&(r+=" "),r+=t);return r};function Gr(e,...t){let r,o,n,i=l;function l(d){const p=t.reduce((y,C)=>C(y),e());return r=Lr(p),o=r.cache.get,n=r.cache.set,i=c,c(d)}function c(d){const p=o(d);if(p)return p;const y=Vr(d,r);return n(d,y),y}return function(){return i(Fr.apply(null,arguments))}}const T=e=>{const t=r=>r[e]||[];return t.isThemeGetter=!0,t},Ue=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,De=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Wr=/^\d+\/\d+$/,Ur=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Dr=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Br=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Hr=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Yr=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,se=e=>Wr.test(e),x=e=>!!e&&!Number.isNaN(Number(e)),J=e=>!!e&&Number.isInteger(Number(e)),we=e=>e.endsWith("%")&&x(e.slice(0,-1)),H=e=>Ur.test(e),qr=()=>!0,Jr=e=>Dr.test(e)&&!Br.test(e),Be=()=>!1,Xr=e=>Hr.test(e),Zr=e=>Yr.test(e),Qr=e=>!u(e)&&!m(e),Kr=e=>ie(e,qe,Be),u=e=>Ue.test(e),Q=e=>ie(e,Je,Jr),ke=e=>ie(e,nt,x),Me=e=>ie(e,He,Be),et=e=>ie(e,Ye,Zr),he=e=>ie(e,Xe,Xr),m=e=>De.test(e),fe=e=>le(e,Je),rt=e=>le(e,st),Ie=e=>le(e,He),tt=e=>le(e,qe),ot=e=>le(e,Ye),xe=e=>le(e,Xe,!0),ie=(e,t,r)=>{const o=Ue.exec(e);return o?o[1]?t(o[1]):r(o[2]):!1},le=(e,t,r=!1)=>{const o=De.exec(e);return o?o[1]?t(o[1]):r:!1},He=e=>e==="position"||e==="percentage",Ye=e=>e==="image"||e==="url",qe=e=>e==="length"||e==="size"||e==="bg-size",Je=e=>e==="length",nt=e=>e==="number",st=e=>e==="family-name",Xe=e=>e==="shadow",at=()=>{const e=T("color"),t=T("font"),r=T("text"),o=T("font-weight"),n=T("tracking"),i=T("leading"),l=T("breakpoint"),c=T("container"),d=T("spacing"),p=T("radius"),y=T("shadow"),C=T("inset-shadow"),S=T("text-shadow"),_=T("drop-shadow"),N=T("blur"),E=T("perspective"),P=T("aspect"),O=T("ease"),Y=T("animate"),W=()=>["auto","avoid","all","avoid-page","page","left","right","column"],V=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],L=()=>[...V(),m,u],$=()=>["auto","hidden","clip","visible","scroll"],U=()=>["auto","contain","none"],g=()=>[m,u,d],z=()=>[se,"full","auto",...g()],re=()=>[J,"none","subgrid",m,u],te=()=>["auto",{span:["full",J,m,u]},J,m,u],F=()=>[J,"auto",m,u],G=()=>["auto","min","max","fr",m,u],Z=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],I=()=>["start","end","center","stretch","center-safe","end-safe"],k=()=>["auto",...g()],R=()=>[se,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...g()],f=()=>[e,m,u],ce=()=>[...V(),Ie,Me,{position:[m,u]}],de=()=>["no-repeat",{repeat:["","x","y","space","round"]}],s=()=>["auto","cover","contain",tt,Kr,{size:[m,u]}],h=()=>[we,fe,Q],b=()=>["","none","full",p,m,u],j=()=>["",x,fe,Q],D=()=>["solid","dashed","dotted","double"],oe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],v=()=>[x,we,Ie,Me],B=()=>["","none",N,m,u],q=()=>["none",x,m,u],ne=()=>["none",x,m,u],ye=()=>[x,m,u],pe=()=>[se,"full",...g()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[H],breakpoint:[H],color:[qr],container:[H],"drop-shadow":[H],ease:["in","out","in-out"],font:[Qr],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[H],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[H],shadow:[H],spacing:["px",x],text:[H],"text-shadow":[H],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",se,u,m,P]}],container:["container"],columns:[{columns:[x,u,m,c]}],"break-after":[{"break-after":W()}],"break-before":[{"break-before":W()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:L()}],overflow:[{overflow:$()}],"overflow-x":[{"overflow-x":$()}],"overflow-y":[{"overflow-y":$()}],overscroll:[{overscroll:U()}],"overscroll-x":[{"overscroll-x":U()}],"overscroll-y":[{"overscroll-y":U()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:z()}],"inset-x":[{"inset-x":z()}],"inset-y":[{"inset-y":z()}],start:[{start:z()}],end:[{end:z()}],top:[{top:z()}],right:[{right:z()}],bottom:[{bottom:z()}],left:[{left:z()}],visibility:["visible","invisible","collapse"],z:[{z:[J,"auto",m,u]}],basis:[{basis:[se,"full","auto",c,...g()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[x,se,"auto","initial","none",u]}],grow:[{grow:["",x,m,u]}],shrink:[{shrink:["",x,m,u]}],order:[{order:[J,"first","last","none",m,u]}],"grid-cols":[{"grid-cols":re()}],"col-start-end":[{col:te()}],"col-start":[{"col-start":F()}],"col-end":[{"col-end":F()}],"grid-rows":[{"grid-rows":re()}],"row-start-end":[{row:te()}],"row-start":[{"row-start":F()}],"row-end":[{"row-end":F()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":G()}],"auto-rows":[{"auto-rows":G()}],gap:[{gap:g()}],"gap-x":[{"gap-x":g()}],"gap-y":[{"gap-y":g()}],"justify-content":[{justify:[...Z(),"normal"]}],"justify-items":[{"justify-items":[...I(),"normal"]}],"justify-self":[{"justify-self":["auto",...I()]}],"align-content":[{content:["normal",...Z()]}],"align-items":[{items:[...I(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...I(),{baseline:["","last"]}]}],"place-content":[{"place-content":Z()}],"place-items":[{"place-items":[...I(),"baseline"]}],"place-self":[{"place-self":["auto",...I()]}],p:[{p:g()}],px:[{px:g()}],py:[{py:g()}],ps:[{ps:g()}],pe:[{pe:g()}],pt:[{pt:g()}],pr:[{pr:g()}],pb:[{pb:g()}],pl:[{pl:g()}],m:[{m:k()}],mx:[{mx:k()}],my:[{my:k()}],ms:[{ms:k()}],me:[{me:k()}],mt:[{mt:k()}],mr:[{mr:k()}],mb:[{mb:k()}],ml:[{ml:k()}],"space-x":[{"space-x":g()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":g()}],"space-y-reverse":["space-y-reverse"],size:[{size:R()}],w:[{w:[c,"screen",...R()]}],"min-w":[{"min-w":[c,"screen","none",...R()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[l]},...R()]}],h:[{h:["screen","lh",...R()]}],"min-h":[{"min-h":["screen","lh","none",...R()]}],"max-h":[{"max-h":["screen","lh",...R()]}],"font-size":[{text:["base",r,fe,Q]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,m,ke]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",we,u]}],"font-family":[{font:[rt,u,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,m,u]}],"line-clamp":[{"line-clamp":[x,"none",m,ke]}],leading:[{leading:[i,...g()]}],"list-image":[{"list-image":["none",m,u]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",m,u]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:f()}],"text-color":[{text:f()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...D(),"wavy"]}],"text-decoration-thickness":[{decoration:[x,"from-font","auto",m,Q]}],"text-decoration-color":[{decoration:f()}],"underline-offset":[{"underline-offset":[x,"auto",m,u]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:g()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",m,u]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",m,u]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ce()}],"bg-repeat":[{bg:de()}],"bg-size":[{bg:s()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},J,m,u],radial:["",m,u],conic:[J,m,u]},ot,et]}],"bg-color":[{bg:f()}],"gradient-from-pos":[{from:h()}],"gradient-via-pos":[{via:h()}],"gradient-to-pos":[{to:h()}],"gradient-from":[{from:f()}],"gradient-via":[{via:f()}],"gradient-to":[{to:f()}],rounded:[{rounded:b()}],"rounded-s":[{"rounded-s":b()}],"rounded-e":[{"rounded-e":b()}],"rounded-t":[{"rounded-t":b()}],"rounded-r":[{"rounded-r":b()}],"rounded-b":[{"rounded-b":b()}],"rounded-l":[{"rounded-l":b()}],"rounded-ss":[{"rounded-ss":b()}],"rounded-se":[{"rounded-se":b()}],"rounded-ee":[{"rounded-ee":b()}],"rounded-es":[{"rounded-es":b()}],"rounded-tl":[{"rounded-tl":b()}],"rounded-tr":[{"rounded-tr":b()}],"rounded-br":[{"rounded-br":b()}],"rounded-bl":[{"rounded-bl":b()}],"border-w":[{border:j()}],"border-w-x":[{"border-x":j()}],"border-w-y":[{"border-y":j()}],"border-w-s":[{"border-s":j()}],"border-w-e":[{"border-e":j()}],"border-w-t":[{"border-t":j()}],"border-w-r":[{"border-r":j()}],"border-w-b":[{"border-b":j()}],"border-w-l":[{"border-l":j()}],"divide-x":[{"divide-x":j()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":j()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...D(),"hidden","none"]}],"divide-style":[{divide:[...D(),"hidden","none"]}],"border-color":[{border:f()}],"border-color-x":[{"border-x":f()}],"border-color-y":[{"border-y":f()}],"border-color-s":[{"border-s":f()}],"border-color-e":[{"border-e":f()}],"border-color-t":[{"border-t":f()}],"border-color-r":[{"border-r":f()}],"border-color-b":[{"border-b":f()}],"border-color-l":[{"border-l":f()}],"divide-color":[{divide:f()}],"outline-style":[{outline:[...D(),"none","hidden"]}],"outline-offset":[{"outline-offset":[x,m,u]}],"outline-w":[{outline:["",x,fe,Q]}],"outline-color":[{outline:f()}],shadow:[{shadow:["","none",y,xe,he]}],"shadow-color":[{shadow:f()}],"inset-shadow":[{"inset-shadow":["none",C,xe,he]}],"inset-shadow-color":[{"inset-shadow":f()}],"ring-w":[{ring:j()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:f()}],"ring-offset-w":[{"ring-offset":[x,Q]}],"ring-offset-color":[{"ring-offset":f()}],"inset-ring-w":[{"inset-ring":j()}],"inset-ring-color":[{"inset-ring":f()}],"text-shadow":[{"text-shadow":["none",S,xe,he]}],"text-shadow-color":[{"text-shadow":f()}],opacity:[{opacity:[x,m,u]}],"mix-blend":[{"mix-blend":[...oe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":oe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[x]}],"mask-image-linear-from-pos":[{"mask-linear-from":v()}],"mask-image-linear-to-pos":[{"mask-linear-to":v()}],"mask-image-linear-from-color":[{"mask-linear-from":f()}],"mask-image-linear-to-color":[{"mask-linear-to":f()}],"mask-image-t-from-pos":[{"mask-t-from":v()}],"mask-image-t-to-pos":[{"mask-t-to":v()}],"mask-image-t-from-color":[{"mask-t-from":f()}],"mask-image-t-to-color":[{"mask-t-to":f()}],"mask-image-r-from-pos":[{"mask-r-from":v()}],"mask-image-r-to-pos":[{"mask-r-to":v()}],"mask-image-r-from-color":[{"mask-r-from":f()}],"mask-image-r-to-color":[{"mask-r-to":f()}],"mask-image-b-from-pos":[{"mask-b-from":v()}],"mask-image-b-to-pos":[{"mask-b-to":v()}],"mask-image-b-from-color":[{"mask-b-from":f()}],"mask-image-b-to-color":[{"mask-b-to":f()}],"mask-image-l-from-pos":[{"mask-l-from":v()}],"mask-image-l-to-pos":[{"mask-l-to":v()}],"mask-image-l-from-color":[{"mask-l-from":f()}],"mask-image-l-to-color":[{"mask-l-to":f()}],"mask-image-x-from-pos":[{"mask-x-from":v()}],"mask-image-x-to-pos":[{"mask-x-to":v()}],"mask-image-x-from-color":[{"mask-x-from":f()}],"mask-image-x-to-color":[{"mask-x-to":f()}],"mask-image-y-from-pos":[{"mask-y-from":v()}],"mask-image-y-to-pos":[{"mask-y-to":v()}],"mask-image-y-from-color":[{"mask-y-from":f()}],"mask-image-y-to-color":[{"mask-y-to":f()}],"mask-image-radial":[{"mask-radial":[m,u]}],"mask-image-radial-from-pos":[{"mask-radial-from":v()}],"mask-image-radial-to-pos":[{"mask-radial-to":v()}],"mask-image-radial-from-color":[{"mask-radial-from":f()}],"mask-image-radial-to-color":[{"mask-radial-to":f()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":V()}],"mask-image-conic-pos":[{"mask-conic":[x]}],"mask-image-conic-from-pos":[{"mask-conic-from":v()}],"mask-image-conic-to-pos":[{"mask-conic-to":v()}],"mask-image-conic-from-color":[{"mask-conic-from":f()}],"mask-image-conic-to-color":[{"mask-conic-to":f()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ce()}],"mask-repeat":[{mask:de()}],"mask-size":[{mask:s()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",m,u]}],filter:[{filter:["","none",m,u]}],blur:[{blur:B()}],brightness:[{brightness:[x,m,u]}],contrast:[{contrast:[x,m,u]}],"drop-shadow":[{"drop-shadow":["","none",_,xe,he]}],"drop-shadow-color":[{"drop-shadow":f()}],grayscale:[{grayscale:["",x,m,u]}],"hue-rotate":[{"hue-rotate":[x,m,u]}],invert:[{invert:["",x,m,u]}],saturate:[{saturate:[x,m,u]}],sepia:[{sepia:["",x,m,u]}],"backdrop-filter":[{"backdrop-filter":["","none",m,u]}],"backdrop-blur":[{"backdrop-blur":B()}],"backdrop-brightness":[{"backdrop-brightness":[x,m,u]}],"backdrop-contrast":[{"backdrop-contrast":[x,m,u]}],"backdrop-grayscale":[{"backdrop-grayscale":["",x,m,u]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[x,m,u]}],"backdrop-invert":[{"backdrop-invert":["",x,m,u]}],"backdrop-opacity":[{"backdrop-opacity":[x,m,u]}],"backdrop-saturate":[{"backdrop-saturate":[x,m,u]}],"backdrop-sepia":[{"backdrop-sepia":["",x,m,u]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":g()}],"border-spacing-x":[{"border-spacing-x":g()}],"border-spacing-y":[{"border-spacing-y":g()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",m,u]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[x,"initial",m,u]}],ease:[{ease:["linear","initial",O,m,u]}],delay:[{delay:[x,m,u]}],animate:[{animate:["none",Y,m,u]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[E,m,u]}],"perspective-origin":[{"perspective-origin":L()}],rotate:[{rotate:q()}],"rotate-x":[{"rotate-x":q()}],"rotate-y":[{"rotate-y":q()}],"rotate-z":[{"rotate-z":q()}],scale:[{scale:ne()}],"scale-x":[{"scale-x":ne()}],"scale-y":[{"scale-y":ne()}],"scale-z":[{"scale-z":ne()}],"scale-3d":["scale-3d"],skew:[{skew:ye()}],"skew-x":[{"skew-x":ye()}],"skew-y":[{"skew-y":ye()}],transform:[{transform:[m,u,"","none","gpu","cpu"]}],"transform-origin":[{origin:L()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:pe()}],"translate-x":[{"translate-x":pe()}],"translate-y":[{"translate-y":pe()}],"translate-z":[{"translate-z":pe()}],"translate-none":["translate-none"],accent:[{accent:f()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:f()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",m,u]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":g()}],"scroll-mx":[{"scroll-mx":g()}],"scroll-my":[{"scroll-my":g()}],"scroll-ms":[{"scroll-ms":g()}],"scroll-me":[{"scroll-me":g()}],"scroll-mt":[{"scroll-mt":g()}],"scroll-mr":[{"scroll-mr":g()}],"scroll-mb":[{"scroll-mb":g()}],"scroll-ml":[{"scroll-ml":g()}],"scroll-p":[{"scroll-p":g()}],"scroll-px":[{"scroll-px":g()}],"scroll-py":[{"scroll-py":g()}],"scroll-ps":[{"scroll-ps":g()}],"scroll-pe":[{"scroll-pe":g()}],"scroll-pt":[{"scroll-pt":g()}],"scroll-pr":[{"scroll-pr":g()}],"scroll-pb":[{"scroll-pb":g()}],"scroll-pl":[{"scroll-pl":g()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",m,u]}],fill:[{fill:["none",...f()]}],"stroke-w":[{stroke:[x,fe,Q,ke]}],stroke:[{stroke:["none",...f()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},it=Gr(at);function w(...e){return it(Fe(e))}const Oe=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Le=Fe,lt=(e,t)=>r=>{var o;if(t?.variants==null)return Le(e,r?.class,r?.className);const{variants:n,defaultVariants:i}=t,l=Object.keys(n).map(p=>{const y=r?.[p],C=i?.[p];if(y===null)return null;const S=Oe(y)||Oe(C);return n[p][S]}),c=r&&Object.entries(r).reduce((p,y)=>{let[C,S]=y;return S===void 0||(p[C]=S),p},{}),d=t==null||(o=t.compoundVariants)===null||o===void 0?void 0:o.reduce((p,y)=>{let{class:C,className:S,..._}=y;return Object.entries(_).every(N=>{let[E,P]=N;return Array.isArray(P)?P.includes({...i,...c}[E]):{...i,...c}[E]===P})?[...p,C,S]:p},[]);return Le(e,l,d,r?.class,r?.className)},ct=lt("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),ae=M.forwardRef(({className:e,variant:t,size:r,asChild:o=!1,disabled:n,...i},l)=>{const c=o?kr:"button";return a.jsx(c,{className:w(ct({variant:t,size:r,className:e})),ref:l,type:i.type||"button",disabled:n,"aria-disabled":n?"true":void 0,...i})});ae.displayName="Button";const dt=e=>{switch(e){case"h1":return"text-4xl font-bold leading-tight tracking-tight";case"h2":return"text-3xl font-bold leading-tight tracking-tight";case"h3":return"text-2xl font-semibold leading-tight tracking-normal";case"h4":return"text-xl font-semibold leading-snug tracking-normal";case"h5":return"text-lg font-medium leading-snug tracking-normal";case"h6":return"text-base font-medium leading-normal tracking-normal";case"body":return"text-base font-normal leading-normal";case"body-sm":return"text-sm font-normal leading-normal";case"body-lg":return"text-lg font-normal leading-relaxed";case"caption":return"text-xs font-normal leading-normal tracking-wide";case"label":return"text-sm font-medium leading-normal tracking-wide";default:return"text-base font-normal leading-normal"}},ut=e=>{switch(e){case"primary":return"text-foreground";case"secondary":return"text-muted-foreground";case"muted":return"text-muted-foreground";case"error":return"text-destructive";case"success":return"text-success";case"warning":return"text-warning";default:return"text-foreground"}},mt=e=>{switch(e){case"light":return"font-light";case"normal":return"font-normal";case"medium":return"font-medium";case"semibold":return"font-semibold";case"bold":return"font-bold";default:return""}},ft=e=>{switch(e){case"left":return"text-left";case"center":return"text-center";case"right":return"text-right";case"justify":return"text-justify";default:return"text-left"}},K=({variant:e="body",color:t="primary",weight:r,align:o="left",truncate:n=!1,children:i,className:l,as:c,...d})=>{const p=c||pt(e),y=w("m-0",dt(e),ut(t),mt(r),ft(o),n&&"truncate",l);return a.jsx(p,{className:y,...d,children:i})};function pt(e){switch(e){case"h1":return"h1";case"h2":return"h2";case"h3":return"h3";case"h4":return"h4";case"h5":return"h5";case"h6":return"h6";default:return"p"}}const gt=e=>{switch(e){case"sm":return"p-4";case"md":return"p-6";case"lg":return"p-8";default:return"p-0"}},ht=e=>{switch(e){case"sm":return"shadow-sm";case"md":return"shadow-md";case"lg":return"shadow-lg";default:return"shadow-none"}},xt=e=>{switch(e){case"sm":return"rounded-sm";case"md":return"rounded-md";case"lg":return"rounded-lg";default:return"rounded-none"}},Ze=({children:e,title:t,subtitle:r,className:o,padding:n="md",shadow:i="md",borderRadius:l="md",onClick:c})=>{const d=!!c,p=w("bg-card",gt(n),ht(i),xt(l),"transition-all duration-200 ease-in-out",d&&"cursor-pointer hover:-translate-y-0.5 hover:shadow-lg active:translate-y-0",o);return a.jsxs("div",{className:p,onClick:c,children:[(t||r)&&a.jsxs("div",{className:"mb-4",children:[t&&a.jsx("div",{className:"mb-2",children:a.jsx(K,{variant:"h3",children:t})}),r&&a.jsx("div",{className:"text-muted-foreground",children:a.jsx(K,{variant:"body-sm",color:"muted",children:r})})]}),a.jsx("div",{className:"flex-1",children:e})]})},bt=({children:e})=>a.jsx("div",{className:"mt-4 pt-4 border-t border-border",children:e}),vt=Object.assign(Ze,{Footer:bt}),yt=e=>{switch(e){case"sm":return"max-w-md";case"md":return"max-w-2xl";case"lg":return"max-w-4xl";case"xl":return"max-w-6xl";default:return"max-w-2xl"}},Qe=({isOpen:e,onClose:t,title:r,children:o,size:n="md",showCloseButton:i=!0,closeOnOverlayClick:l=!0,closeOnEscape:c=!0})=>{const d=A.useRef(null);if(A.useEffect(()=>{if(!e||!c)return;const N=E=>{E.key==="Escape"&&t()};return document.addEventListener("keydown",N),()=>document.removeEventListener("keydown",N)},[e,c,t]),A.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="unset",()=>{document.body.style.overflow="unset"}),[e]),A.useEffect(()=>{e&&d.current&&d.current.focus()},[e]),!e)return null;const p=w("fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4"),y=w("bg-card rounded-lg shadow-xl w-full max-h-[90vh] overflow-hidden flex flex-col",yt(n)),C=w("p-6 border-b border-border flex items-center justify-between"),S=w("p-6 overflow-y-auto flex-1"),_=w("bg-none border-none text-xl cursor-pointer text-muted-foreground p-1 rounded-sm flex items-center justify-center hover:bg-accent hover:text-accent-foreground focus:outline-2 focus:outline-primary focus:outline-offset-2");return a.jsx("div",{className:p,onClick:l?t:void 0,children:a.jsxs("div",{ref:d,className:y,onClick:N=>N.stopPropagation(),tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":r?"modal-title":void 0,children:[(r||i)&&a.jsxs("div",{className:C,children:[r&&a.jsx(K,{variant:"h3",className:"text-foreground",children:r}),i&&a.jsx("button",{onClick:t,"aria-label":"Close modal",className:_,children:"×"})]}),a.jsx("div",{className:S,children:o})]})})},Ke=({children:e,actions:t,...r})=>a.jsxs(Qe,{...r,children:[a.jsx("div",{className:"p-6 overflow-y-auto flex-1",children:e}),t&&a.jsx("div",{className:"p-6 border-t border-border flex justify-end gap-3",children:t})]}),wt=({isOpen:e,onClose:t,onConfirm:r,title:o,message:n,confirmText:i="Confirm",cancelText:l="Cancel"})=>a.jsx(Ke,{isOpen:e,onClose:t,title:o,actions:a.jsxs(a.Fragment,{children:[a.jsx(ae,{variant:"secondary",onClick:t,children:l}),a.jsx(ae,{variant:"default",onClick:r,children:i})]}),children:a.jsx(K,{children:n})});/**
23
+ * @license lucide-react v0.547.0 - ISC
24
+ *
25
+ * This source code is licensed under the ISC license.
26
+ * See the LICENSE file in the root directory of this source tree.
27
+ */const kt=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),jt=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,r,o)=>o?o.toUpperCase():r.toLowerCase()),$e=e=>{const t=jt(e);return t.charAt(0).toUpperCase()+t.slice(1)},er=(...e)=>e.filter((t,r,o)=>!!t&&t.trim()!==""&&o.indexOf(t)===r).join(" ").trim(),Ct=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0};/**
28
+ * @license lucide-react v0.547.0 - ISC
29
+ *
30
+ * This source code is licensed under the ISC license.
31
+ * See the LICENSE file in the root directory of this source tree.
32
+ */var Nt={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
33
+ * @license lucide-react v0.547.0 - ISC
34
+ *
35
+ * This source code is licensed under the ISC license.
36
+ * See the LICENSE file in the root directory of this source tree.
37
+ */const Rt=A.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:o,className:n="",children:i,iconNode:l,...c},d)=>A.createElement("svg",{ref:d,...Nt,width:t,height:t,stroke:e,strokeWidth:o?Number(r)*24/Number(t):r,className:er("lucide",n),...!i&&!Ct(c)&&{"aria-hidden":"true"},...c},[...l.map(([p,y])=>A.createElement(p,y)),...Array.isArray(i)?i:[i]]));/**
38
+ * @license lucide-react v0.547.0 - ISC
39
+ *
40
+ * This source code is licensed under the ISC license.
41
+ * See the LICENSE file in the root directory of this source tree.
42
+ */const X=(e,t)=>{const r=A.forwardRef(({className:o,...n},i)=>A.createElement(Rt,{ref:i,iconNode:t,className:er(`lucide-${kt($e(e))}`,`lucide-${e}`,o),...n}));return r.displayName=$e(e),r};/**
43
+ * @license lucide-react v0.547.0 - ISC
44
+ *
45
+ * This source code is licensed under the ISC license.
46
+ * See the LICENSE file in the root directory of this source tree.
47
+ */const Et=[["path",{d:"M10 4 8 6",key:"1rru8s"}],["path",{d:"M17 19v2",key:"ts1sot"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"M7 19v2",key:"12npes"}],["path",{d:"M9 5 7.621 3.621A2.121 2.121 0 0 0 4 5v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5",key:"14ym8i"}]],St=X("bath",Et);/**
48
+ * @license lucide-react v0.547.0 - ISC
49
+ *
50
+ * This source code is licensed under the ISC license.
51
+ * See the LICENSE file in the root directory of this source tree.
52
+ */const Tt=[["path",{d:"M2 4v16",key:"vw9hq8"}],["path",{d:"M2 8h18a2 2 0 0 1 2 2v10",key:"1dgv2r"}],["path",{d:"M2 17h20",key:"18nfp3"}],["path",{d:"M6 8v9",key:"1yriud"}]],_t=X("bed",Tt);/**
53
+ * @license lucide-react v0.547.0 - ISC
54
+ *
55
+ * This source code is licensed under the ISC license.
56
+ * See the LICENSE file in the root directory of this source tree.
57
+ */const Pt=[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]],At=X("car",Pt);/**
58
+ * @license lucide-react v0.547.0 - ISC
59
+ *
60
+ * This source code is licensed under the ISC license.
61
+ * See the LICENSE file in the root directory of this source tree.
62
+ */const zt=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],Mt=X("chevron-left",zt);/**
63
+ * @license lucide-react v0.547.0 - ISC
64
+ *
65
+ * This source code is licensed under the ISC license.
66
+ * See the LICENSE file in the root directory of this source tree.
67
+ */const It=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],Ot=X("chevron-right",It);/**
68
+ * @license lucide-react v0.547.0 - ISC
69
+ *
70
+ * This source code is licensed under the ISC license.
71
+ * See the LICENSE file in the root directory of this source tree.
72
+ */const Lt=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]],$t=X("grid-3x3",Lt);/**
73
+ * @license lucide-react v0.547.0 - ISC
74
+ *
75
+ * This source code is licensed under the ISC license.
76
+ * See the LICENSE file in the root directory of this source tree.
77
+ */const Vt=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]],Ft=X("heart",Vt);/**
78
+ * @license lucide-react v0.547.0 - ISC
79
+ *
80
+ * This source code is licensed under the ISC license.
81
+ * See the LICENSE file in the root directory of this source tree.
82
+ */const Gt=[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]],Wt=X("maximize",Gt),Ut=e=>{switch(e.variant||Dt(e.type)){case"primary":return"bg-primary text-primary-foreground";case"secondary":return"bg-secondary text-secondary-foreground";case"success":return"bg-success text-success-foreground";case"warning":return"bg-warning text-warning-foreground";case"error":return"bg-error text-error-foreground";case"info":return"bg-info text-info-foreground";default:return"bg-secondary text-secondary-foreground"}},Dt=e=>{switch(e){case"Venta":return"primary";case"Desarrollo":return"success";case"Renta":return"info";case"Remate":return"warning";default:return"secondary"}},Bt=({property:e,className:t,onLike:r,onImageClick:o,showLikeButton:n=!0,showNavigation:i=!0})=>{const[l,c]=A.useState(0),[d,p]=A.useState(!1),y=()=>{c(k=>k===e.images.length-1?0:k+1)},C=()=>{c(k=>k===0?e.images.length-1:k-1)},S=k=>{k.preventDefault(),k.stopPropagation();const R=!d;p(R),r?.(e.id,R)},_=k=>{k.preventDefault(),k.stopPropagation(),o?.(l,e.id)},N=(k,R)=>`$${k.toLocaleString()} ${R}`,E=w("relative overflow-hidden bg-card rounded-2xl shadow-md transition-all duration-300 ease-out cursor-pointer hover:-translate-y-1 hover:shadow-xl",t),P=w("relative overflow-hidden"),O=w("w-full h-full object-cover transition-transform duration-300 hover:scale-105"),Y=w("absolute top-4 left-4 flex flex-wrap gap-1 z-10"),W=w("px-2 py-1 rounded-lg text-xs font-medium uppercase tracking-wide"),V=w("absolute top-4 right-4 z-10 bg-background/90 backdrop-blur-sm border border-border/20 text-foreground rounded-full w-10 h-10 flex items-center justify-center cursor-pointer transition-all duration-200 hover:bg-background hover:scale-105"),L=w("absolute top-1/2 -translate-y-1/2 z-10 bg-background/90 backdrop-blur-sm border border-border/20 text-foreground w-10 h-10 rounded-full p-0 flex items-center justify-center cursor-pointer transition-all duration-200 hover:bg-background hover:scale-105"),$=w("absolute bottom-4 left-1/2 -translate-x-1/2 flex gap-1 z-10"),U=w("w-2 h-2 rounded-full border-none cursor-pointer transition-all duration-200 hover:scale-120"),g=w("p-6"),z=w("text-lg font-bold text-foreground mb-2 line-clamp-2 leading-tight"),re=w("text-xl font-bold text-primary mb-2"),te=w("text-base text-muted-foreground mb-4"),F=w("flex items-center gap-4 mb-4"),G=w("flex items-center gap-1 text-sm text-muted-foreground"),Z=w("text-sm text-muted-foreground line-clamp-2"),I=a.jsxs("div",{className:E,children:[a.jsxs("div",{className:w(P,"aspect-[4/3] bg-red-500"),children:[a.jsx("img",{src:e.images[l],alt:e.title,className:O,onClick:o?_:void 0}),a.jsx("div",{className:Y,children:e.transactionTypes.map((k,R)=>a.jsx("span",{className:w(W,Ut(k)),children:k.type},R))}),n&&a.jsx("button",{onClick:S,className:V,"aria-label":d?"Unlike property":"Like property",children:a.jsx(Ft,{size:20,fill:d?"currentColor":"none",className:d?"text-destructive":""})}),i&&e.images.length>1&&a.jsxs(a.Fragment,{children:[a.jsx(ae,{onClick:k=>{k.preventDefault(),k.stopPropagation(),C()},className:w(L,"left-4"),"aria-label":"Previous image",children:a.jsx(Mt,{size:20})}),a.jsx(ae,{onClick:k=>{k.preventDefault(),k.stopPropagation(),y()},className:w(L,"right-4"),"aria-label":"Next image",children:a.jsx(Ot,{size:20})}),a.jsx("div",{className:$,children:e.images.map((k,R)=>a.jsx("button",{className:w(U,R===l?"bg-background":"bg-background/50"),onClick:f=>{f.preventDefault(),f.stopPropagation(),c(R)},"aria-label":`Go to image ${R+1}`,"aria-current":R===l},R))})]})]}),a.jsxs("div",{className:g,children:[a.jsx("h3",{className:z,children:e.title}),a.jsx("p",{className:re,children:N(e.price.amount,e.price.currency)}),a.jsxs("p",{className:te,children:[e.location.city,", ",e.location.state]}),a.jsxs("div",{className:F,children:[a.jsxs("div",{className:G,children:[a.jsx(_t,{size:16}),a.jsx("span",{children:e.features.bedrooms})]}),a.jsxs("div",{className:G,children:[a.jsx(St,{size:16}),a.jsx("span",{children:e.features.bathrooms})]}),a.jsxs("div",{className:G,children:[a.jsx(At,{size:16}),a.jsx("span",{children:e.features.parking})]}),a.jsxs("div",{className:G,children:[a.jsx(Wt,{size:16}),a.jsxs("span",{children:[e.features.area," m²"]})]})]}),e.amenities.length>0&&a.jsx("p",{className:Z,children:e.amenities.join(", ")})]})]});return e.href?a.jsx("a",{href:e.href,className:"no-underline text-inherit",children:I}):I},rr=A.forwardRef(({images:e,transactionType:t,totalPhotos:r,onViewAllClick:o,onImageClick:n,className:i},l)=>{const c=e.slice(0,5);c.length>=5;const d=p=>{n?.(p)};return a.jsxs("div",{ref:l,className:w("w-full h-full grid grid-cols-2 gap-2",i),children:[a.jsx("div",{className:"relative col-span-1 row-span-2 rounded-2xl overflow-hidden group cursor-pointer",children:c[0]?a.jsxs(a.Fragment,{children:[a.jsx("img",{src:c[0],alt:"Property main view",className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",onClick:()=>d(0)}),t&&a.jsx("div",{className:"absolute top-4 left-4 bg-white rounded-full px-4 py-2 shadow-md",children:a.jsx("span",{className:"text-sm font-medium text-foreground",children:t})})]}):a.jsx("div",{className:"w-full h-full bg-muted flex items-center justify-center",children:a.jsx("span",{className:"text-muted-foreground",children:"No image"})})}),a.jsx("div",{className:"relative col-span-1 row-span-1 rounded-2xl overflow-hidden group cursor-pointer",children:c[1]?a.jsx("img",{src:c[1],alt:"Property view 2",className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",onClick:()=>d(1)}):a.jsx("div",{className:"w-full h-full bg-muted"})}),a.jsx("div",{className:"relative col-span-1 row-span-1 rounded-2xl overflow-hidden group cursor-pointer",children:c[2]?a.jsx("img",{src:c[2],alt:"Property view 3",className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",onClick:()=>d(2)}):a.jsx("div",{className:"w-full h-full bg-muted"})}),a.jsx("div",{className:"relative col-span-1 row-span-1 rounded-2xl overflow-hidden group cursor-pointer",children:c[3]?a.jsx("img",{src:c[3],alt:"Property view 4",className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",onClick:()=>d(3)}):a.jsx("div",{className:"w-full h-full bg-muted"})}),a.jsx("div",{className:"relative col-span-1 row-span-1 rounded-2xl overflow-hidden group cursor-pointer",children:c[4]?a.jsxs(a.Fragment,{children:[a.jsx("img",{src:c[4],alt:"Property view 5",className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",onClick:()=>d(4)}),r&&r>5&&a.jsx("div",{className:"absolute bottom-4 right-4",children:a.jsxs("button",{onClick:p=>{p.stopPropagation(),o?.()},className:"flex items-center gap-2 bg-white rounded-full px-4 py-2 shadow-md hover:shadow-lg transition-all duration-200 hover:scale-105",children:[a.jsx($t,{className:"w-4 h-4 text-foreground"}),a.jsxs("span",{className:"text-sm font-medium text-foreground",children:["Ver las ",r," fotos"]})]})})]}):a.jsx("div",{className:"w-full h-full bg-muted"})})]})});rr.displayName="PropertyGallery";const Ht=e=>{switch(e){case"sm":return"p-4";case"md":return"p-6";case"lg":return"p-8";default:return"p-0"}},ve=({children:e,header:t,sidebar:r,footer:o,padding:n="md"})=>{const i=w("min-h-screen flex flex-col"),l=w("bg-card border-b border-border z-10"),c=w("flex flex-1"),d=w("w-70 bg-card border-r border-border p-6"),p=w("flex-1 flex flex-col"),y=w("flex-1 mx-auto w-full max-w-7xl",Ht(n));return a.jsxs("div",{className:i,children:[t&&a.jsx("header",{className:l,children:t}),a.jsxs("div",{className:c,children:[r&&a.jsx("aside",{className:d,children:r}),a.jsx("div",{className:p,children:a.jsx("main",{className:y,children:e})})]}),o&&a.jsx("footer",{className:"bg-card border-t border-border mt-auto",children:o})]})},Yt=({children:e,header:t,sidebar:r})=>a.jsx(ve,{header:t,sidebar:r,padding:"lg",children:a.jsx("div",{className:"max-w-screen-2xl",children:e})}),qt=({children:e,title:t,subtitle:r})=>a.jsx(ve,{padding:"lg",children:a.jsxs("div",{className:"max-w-md mx-auto",children:[a.jsxs("div",{className:"text-center mb-8",children:[t&&a.jsx(K,{variant:"h2",className:"mb-2",children:t}),r&&a.jsx(K,{variant:"body",color:"muted",children:r})]}),e]})}),Jt=({children:e,header:t,footer:r})=>a.jsx(ve,{header:t,footer:r,padding:"none",children:e}),Xt={name:"light",colors:{primary:"#007bff",secondary:"#6c757d",success:"#28a745",warning:"#ffc107",error:"#dc3545",info:"#17a2b8",background:"#ffffff",surface:"#f8f9fa",text:"#212529",textSecondary:"#6c757d",border:"#dee2e6",borderLight:"#e9ecef"},shapes:{borderRadius:{small:"4px",medium:"8px",large:"12px",round:"50%"},borderWidth:{thin:"1px",medium:"2px",thick:"3px"}},typography:{fontFamily:'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:{xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem",xxl:"1.5rem"},fontWeight:{light:300,regular:400,medium:500,bold:700},lineHeight:{tight:1.25,normal:1.5,relaxed:1.75}},spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem",xxl:"3rem"},shadows:{none:"none",small:"0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)",medium:"0 3px 6px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.12)",large:"0 10px 20px rgba(0, 0, 0, 0.15), 0 3px 6px rgba(0, 0, 0, 0.10)",xl:"0 15px 25px rgba(0, 0, 0, 0.15), 0 5px 10px rgba(0, 0, 0, 0.05)"}},Zt={name:"dark",colors:{primary:"#0d6efd",secondary:"#6c757d",success:"#198754",warning:"#fd7e14",error:"#dc3545",info:"#0dcaf0",background:"#121212",surface:"#1e1e1e",text:"#ffffff",textSecondary:"#adb5bd",border:"#495057",borderLight:"#343a40"},shapes:{borderRadius:{small:"4px",medium:"8px",large:"12px",round:"50%"},borderWidth:{thin:"1px",medium:"2px",thick:"3px"}},typography:{fontFamily:'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:{xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem",xxl:"1.5rem"},fontWeight:{light:300,regular:400,medium:500,bold:700},lineHeight:{tight:1.25,normal:1.5,relaxed:1.75}},spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem",xxl:"3rem"},shadows:{none:"none",small:"0 1px 3px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.4)",medium:"0 3px 6px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.3)",large:"0 10px 20px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3)",xl:"0 15px 25px rgba(0, 0, 0, 0.4), 0 5px 10px rgba(0, 0, 0, 0.3)"}},Qt={name:"corporate",colors:{primary:"#1a365d",secondary:"#2d3748",success:"#38a169",warning:"#d69e2e",error:"#e53e3e",info:"#3182ce",background:"#f7fafc",surface:"#ffffff",text:"#1a202c",textSecondary:"#4a5568",border:"#e2e8f0",borderLight:"#edf2f7"},shapes:{borderRadius:{small:"2px",medium:"4px",large:"6px",round:"50%"},borderWidth:{thin:"1px",medium:"2px",thick:"3px"}},typography:{fontFamily:'Georgia, "Times New Roman", serif',fontSize:{xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem",xxl:"1.5rem"},fontWeight:{light:300,regular:400,medium:500,bold:700},lineHeight:{tight:1.25,normal:1.5,relaxed:1.75}},spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem",xxl:"3rem"},shadows:{none:"none",small:"0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06)",medium:"0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.06)",large:"0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.05)",xl:"0 20px 25px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.04)"}},Kt={name:"minimal",colors:{primary:"#000000",secondary:"#666666",success:"#00aa00",warning:"#ffaa00",error:"#aa0000",info:"#00aaaa",background:"#ffffff",surface:"#fafafa",text:"#000000",textSecondary:"#666666",border:"#cccccc",borderLight:"#e0e0e0"},shapes:{borderRadius:{small:"0px",medium:"0px",large:"0px",round:"50%"},borderWidth:{thin:"1px",medium:"2px",thick:"3px"}},typography:{fontFamily:"Helvetica, Arial, sans-serif",fontSize:{xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem",xxl:"1.5rem"},fontWeight:{light:300,regular:400,medium:500,bold:700},lineHeight:{tight:1.25,normal:1.5,relaxed:1.75}},spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem",xxl:"3rem"},shadows:{none:"none",small:"none",medium:"none",large:"none",xl:"none"}},je={light:Xt,dark:Zt,corporate:Qt,minimal:Kt},tr=be.createEvent(),or=be.createEvent(),nr=be.createEvent(),ee=be.createStore(je.light).on(tr,(e,t)=>je[t]||e).on(or,(e,t)=>t).on(nr,()=>je.light);ee.map(e=>e.name);ee.map(e=>e.colors);ee.map(e=>e.shapes);ee.map(e=>e.typography);ee.map(e=>e.spacing);ee.map(e=>e.shadows);const sr=A.createContext(null),eo=()=>{const e=A.useContext(sr);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e},ro=({children:e})=>{const r={theme:gr.useUnit(ee)};return a.jsx(sr.Provider,{value:r,children:e})},to={spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem","2xl":"3rem","3xl":"4rem"},radius:{none:"0",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},typography:{fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}]},fontWeight:{thin:"100",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"}},shadows:{none:"none",xs:"0 1px 2px 0 rgb(0 0 0 / 0.05)",sm:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",DEFAULT:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",md:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",lg:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",xl:"0 25px 50px -12px rgb(0 0 0 / 0.25)"},zIndex:{dropdown:1e3,sticky:1020,fixed:1030,modalBackdrop:1040,modal:1050,popover:1060,tooltip:1070,toast:1080},duration:{instant:"0ms",fast:"150ms",normal:"300ms",slow:"500ms"},easing:{linear:"linear",in:"ease-in",out:"ease-out",inOut:"ease-in-out"}},ar={button:{size:{sm:"h-9 px-3 text-sm",md:"h-10 px-4 py-2",lg:"h-11 px-8",icon:"h-10 w-10"},variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"}},input:{size:{sm:"h-9 px-3 text-sm",md:"h-10 px-3 py-2",lg:"h-11 px-3 py-2"}},card:{variant:{default:"bg-card text-card-foreground",elevated:"bg-card text-card-foreground shadow-lg",outlined:"bg-card text-card-foreground border-2"}}},ir={sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"},lr={withOpacity:(e,t)=>t!==void 0?`hsl(var(${e}) / ${t})`:`hsl(var(${e}))`,get:e=>`hsl(var(--${e}))`},cr={generateId:(e="ds")=>`${e}-${Math.random().toString(36).substr(2,9)}`,focus:{visible:"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",within:"focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2"},sr:{only:"absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0",not:"not-sr-only"}},dr={icon:{xs:"w-3 h-3",sm:"w-4 h-4",md:"w-5 h-5",lg:"w-6 h-6",xl:"w-8 h-8"},avatar:{xs:"w-6 h-6",sm:"w-8 h-8",md:"w-10 h-10",lg:"w-12 h-12",xl:"w-16 h-16"}},ur={fade:{in:"animate-in fade-in duration-200",out:"animate-out fade-out duration-200"},slide:{inFromLeft:"animate-in slide-in-from-left duration-200",inFromRight:"animate-in slide-in-from-right duration-200",inFromTop:"animate-in slide-in-from-top duration-200",inFromBottom:"animate-in slide-in-from-bottom duration-200"},scale:{in:"animate-in scale-in duration-200",out:"animate-out scale-out duration-200"}},mr={container:{responsive:"container mx-auto px-4 sm:px-6 lg:px-8",fluid:"w-full max-w-none",centered:"container mx-auto px-4 flex items-center justify-center min-h-screen"},grid:{responsive:"grid gap-4 sm:gap-6 lg:gap-8",cols:{1:"grid-cols-1",2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",5:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5",6:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6"}},flex:{center:"flex items-center justify-center",between:"flex items-center justify-between",start:"flex items-center justify-start",end:"flex items-center justify-end",col:"flex flex-col",colCenter:"flex flex-col items-center justify-center"}},fr={isDark:()=>typeof window>"u"?!1:document.documentElement.classList.contains("dark"),toggle:()=>{typeof window>"u"||document.documentElement.classList.toggle("dark")},set:e=>{typeof window>"u"||document.documentElement.classList.toggle("dark",e==="dark")}},pr={debounce:(e,t)=>{let r;return(...o)=>{clearTimeout(r),r=setTimeout(()=>e(...o),t)}},throttle:(e,t)=>{let r;return(...o)=>{r||(e(...o),r=!0,setTimeout(()=>r=!1,t))}}};exports.AuthLayout=qt;exports.Button=ae;exports.Card=Ze;exports.CompoundCard=vt;exports.ConfirmModal=wt;exports.DashboardLayout=Yt;exports.MarketingLayout=Jt;exports.Modal=Qe;exports.ModalWithActions=Ke;exports.PageLayout=ve;exports.PropertyCard=Bt;exports.PropertyGallery=rr;exports.Text=K;exports.ThemeProvider=ro;exports.a11y=cr;exports.accessibilityUtils=cr;exports.animationUtils=ur;exports.animations=ur;exports.breakpoints=ir;exports.cn=w;exports.colorUtils=lr;exports.colors=lr;exports.componentSizes=dr;exports.componentVariants=ar;exports.designSystem=to;exports.layout=mr;exports.layoutUtils=mr;exports.performance=pr;exports.performanceUtils=pr;exports.resetTheme=nr;exports.responsiveBreakpoints=ir;exports.setCustomTheme=or;exports.setTheme=tr;exports.sizes=dr;exports.theme=fr;exports.themeUtils=fr;exports.useTheme=eo;exports.variants=ar;
83
+ //# sourceMappingURL=design-system.cjs.js.map