@zekidev/ui 2.2.0 → 2.2.2
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/index.cjs +1505 -1853
- package/dist/index.js +378 -564
- package/dist/leaflet-map-inner-55BJSNG4.cjs +172 -0
- package/dist/leaflet-map-inner-DQIERSVT.js +172 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,190 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
-
var __esm = (fn, res) => function __init() {
|
|
4
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
5
|
-
};
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
// src/sections/map/leaflet-map-inner.tsx
|
|
12
|
-
var leaflet_map_inner_exports = {};
|
|
13
|
-
__export(leaflet_map_inner_exports, {
|
|
14
|
-
LeafletMapInner: () => LeafletMapInner
|
|
15
|
-
});
|
|
16
|
-
import "leaflet/dist/leaflet.css";
|
|
17
|
-
import { useEffect as useEffect5, useRef as useRef3, useState as useState13 } from "react";
|
|
18
|
-
import L from "leaflet";
|
|
19
|
-
import { jsx as jsx82, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
20
|
-
async function geocodeAddress(address) {
|
|
21
|
-
try {
|
|
22
|
-
const res = await fetch(
|
|
23
|
-
`https://nominatim.openstreetmap.org/search?format=json&limit=1&q=${encodeURIComponent(address)}`,
|
|
24
|
-
{ headers: { "Accept-Language": "en", "User-Agent": "LandingBuilder/1.0" } }
|
|
25
|
-
);
|
|
26
|
-
if (!res.ok) return null;
|
|
27
|
-
const data = await res.json();
|
|
28
|
-
if (!data.length) return null;
|
|
29
|
-
return [parseFloat(data[0].lat), parseFloat(data[0].lon)];
|
|
30
|
-
} catch {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
async function geocodeAll(locations) {
|
|
35
|
-
const result = [];
|
|
36
|
-
for (const loc of locations) {
|
|
37
|
-
if (loc.lat != null && loc.lng != null) {
|
|
38
|
-
result.push({ ...loc, coords: [loc.lat, loc.lng] });
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
if (loc.address) {
|
|
42
|
-
const coords = await geocodeAddress(loc.address);
|
|
43
|
-
if (coords) result.push({ ...loc, coords });
|
|
44
|
-
await new Promise((r) => setTimeout(r, 1e3));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
|
-
function buildPopup(loc) {
|
|
50
|
-
const parts = [];
|
|
51
|
-
parts.push(`<strong style="display:block;font-size:13px">${loc.name}</strong>`);
|
|
52
|
-
if (loc.address)
|
|
53
|
-
parts.push(`<span style="display:block;font-size:11px;color:#6b7280;margin-top:2px">${loc.address}</span>`);
|
|
54
|
-
if (loc.phone)
|
|
55
|
-
parts.push(`<span style="display:block;font-size:11px;margin-top:2px">${loc.phone}</span>`);
|
|
56
|
-
if (loc.hours)
|
|
57
|
-
parts.push(`<span style="display:block;font-size:11px;color:#6b7280;margin-top:2px">${loc.hours}</span>`);
|
|
58
|
-
if (loc.address)
|
|
59
|
-
parts.push(
|
|
60
|
-
`<a href="https://maps.google.com/?q=${encodeURIComponent(loc.address)}" target="_blank" rel="noopener noreferrer" style="display:block;font-size:11px;color:#2563eb;margin-top:4px">Ver en Google Maps \u2192</a>`
|
|
61
|
-
);
|
|
62
|
-
return parts.join("");
|
|
63
|
-
}
|
|
64
|
-
function LeafletMapInner({ locations, mapStyle = "standard", className }) {
|
|
65
|
-
const containerRef = useRef3(null);
|
|
66
|
-
const mapRef = useRef3(null);
|
|
67
|
-
const tileRef = useRef3(null);
|
|
68
|
-
const [loading, setLoading] = useState13(!!locations?.length);
|
|
69
|
-
useEffect5(() => {
|
|
70
|
-
if (!containerRef.current || mapRef.current) return;
|
|
71
|
-
const tile = TILES[mapStyle] ?? TILES.standard;
|
|
72
|
-
const map = L.map(containerRef.current, { scrollWheelZoom: false });
|
|
73
|
-
const tileLayer = L.tileLayer(tile.url, { attribution: tile.attribution, maxZoom: tile.maxZoom ?? 19 }).addTo(map);
|
|
74
|
-
map.setView([20, 0], 2);
|
|
75
|
-
mapRef.current = map;
|
|
76
|
-
tileRef.current = tileLayer;
|
|
77
|
-
return () => {
|
|
78
|
-
map.remove();
|
|
79
|
-
mapRef.current = null;
|
|
80
|
-
tileRef.current = null;
|
|
81
|
-
};
|
|
82
|
-
}, []);
|
|
83
|
-
useEffect5(() => {
|
|
84
|
-
if (!mapRef.current) return;
|
|
85
|
-
const tile = TILES[mapStyle] ?? TILES.standard;
|
|
86
|
-
tileRef.current?.remove();
|
|
87
|
-
tileRef.current = L.tileLayer(tile.url, { attribution: tile.attribution, maxZoom: tile.maxZoom ?? 19 }).addTo(mapRef.current);
|
|
88
|
-
}, [mapStyle]);
|
|
89
|
-
useEffect5(() => {
|
|
90
|
-
if (!locations?.length) {
|
|
91
|
-
setLoading(false);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
let cancelled = false;
|
|
95
|
-
setLoading(true);
|
|
96
|
-
geocodeAll(locations).then((geocoded) => {
|
|
97
|
-
if (cancelled || !mapRef.current) return;
|
|
98
|
-
mapRef.current.eachLayer((layer) => {
|
|
99
|
-
if (layer instanceof L.Marker) layer.remove();
|
|
100
|
-
});
|
|
101
|
-
geocoded.forEach((loc) => {
|
|
102
|
-
L.marker(loc.coords, { icon: markerIcon }).addTo(mapRef.current).bindPopup(buildPopup(loc));
|
|
103
|
-
});
|
|
104
|
-
if (geocoded.length === 1) {
|
|
105
|
-
mapRef.current.setView(geocoded[0].coords, 14);
|
|
106
|
-
} else if (geocoded.length > 1) {
|
|
107
|
-
mapRef.current.fitBounds(
|
|
108
|
-
geocoded.map((l) => l.coords),
|
|
109
|
-
{ padding: [48, 48] }
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
setLoading(false);
|
|
113
|
-
});
|
|
114
|
-
return () => {
|
|
115
|
-
cancelled = true;
|
|
116
|
-
};
|
|
117
|
-
}, [locations]);
|
|
118
|
-
return /* @__PURE__ */ jsxs58("div", { className: `relative ${className ?? ""}`, children: [
|
|
119
|
-
loading && /* @__PURE__ */ jsx82("div", { className: "absolute inset-0 z-[1000] flex items-center justify-center bg-muted/80 rounded-xl", children: /* @__PURE__ */ jsxs58("div", { className: "flex flex-col items-center gap-2 text-muted-foreground text-sm", children: [
|
|
120
|
-
/* @__PURE__ */ jsxs58("svg", { className: "animate-spin h-6 w-6", viewBox: "0 0 24 24", fill: "none", children: [
|
|
121
|
-
/* @__PURE__ */ jsx82("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
122
|
-
/* @__PURE__ */ jsx82("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z" })
|
|
123
|
-
] }),
|
|
124
|
-
"Geocoding addresses\u2026"
|
|
125
|
-
] }) }),
|
|
126
|
-
/* @__PURE__ */ jsx82("div", { ref: containerRef, style: { height: "100%", width: "100%" } })
|
|
127
|
-
] });
|
|
128
|
-
}
|
|
129
|
-
var OSM_ATTR, CARTO_ATTR, ESRI_ATTR, TILES, markerIcon;
|
|
130
|
-
var init_leaflet_map_inner = __esm({
|
|
131
|
-
"src/sections/map/leaflet-map-inner.tsx"() {
|
|
132
|
-
"use strict";
|
|
133
|
-
"use client";
|
|
134
|
-
OSM_ATTR = '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors';
|
|
135
|
-
CARTO_ATTR = `${OSM_ATTR} © <a href="https://carto.com/attributions">CARTO</a>`;
|
|
136
|
-
ESRI_ATTR = "Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community";
|
|
137
|
-
TILES = {
|
|
138
|
-
// OpenStreetMap
|
|
139
|
-
standard: {
|
|
140
|
-
url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
|
141
|
-
attribution: OSM_ATTR
|
|
142
|
-
},
|
|
143
|
-
// CartoDB Positron — clean, minimal, ideal for data overlays
|
|
144
|
-
light: {
|
|
145
|
-
url: "https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png",
|
|
146
|
-
attribution: CARTO_ATTR
|
|
147
|
-
},
|
|
148
|
-
// CartoDB Dark Matter
|
|
149
|
-
dark: {
|
|
150
|
-
url: "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png",
|
|
151
|
-
attribution: CARTO_ATTR
|
|
152
|
-
},
|
|
153
|
-
// CartoDB Voyager — colorful, modern
|
|
154
|
-
voyager: {
|
|
155
|
-
url: "https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png",
|
|
156
|
-
attribution: CARTO_ATTR
|
|
157
|
-
},
|
|
158
|
-
// OpenTopoMap — topographic with elevation contours
|
|
159
|
-
topo: {
|
|
160
|
-
url: "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png",
|
|
161
|
-
attribution: `${OSM_ATTR}, <a href="https://viewfinderpanoramas.org">SRTM</a> | Map style: © <a href="https://opentopomap.org">OpenTopoMap</a>`,
|
|
162
|
-
maxZoom: 17
|
|
163
|
-
},
|
|
164
|
-
// ESRI World Imagery — satellite/aerial photography
|
|
165
|
-
satellite: {
|
|
166
|
-
url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
|
|
167
|
-
attribution: ESRI_ATTR,
|
|
168
|
-
maxZoom: 18
|
|
169
|
-
},
|
|
170
|
-
// ESRI World Street Map — detailed street basemap
|
|
171
|
-
streets: {
|
|
172
|
-
url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}",
|
|
173
|
-
attribution: ESRI_ATTR,
|
|
174
|
-
maxZoom: 18
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
markerIcon = new L.Icon({
|
|
178
|
-
iconUrl: "https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon.png",
|
|
179
|
-
iconRetinaUrl: "https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon-2x.png",
|
|
180
|
-
shadowUrl: "https://unpkg.com/leaflet@1.9.4/dist/images/marker-shadow.png",
|
|
181
|
-
iconSize: [25, 41],
|
|
182
|
-
iconAnchor: [12, 41],
|
|
183
|
-
popupAnchor: [1, -34],
|
|
184
|
-
shadowSize: [41, 41]
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
});
|
|
1
|
+
"use client";
|
|
188
2
|
|
|
189
3
|
// src/lib/utils.ts
|
|
190
4
|
import { clsx } from "clsx";
|
|
@@ -4116,13 +3930,13 @@ function Banner(props) {
|
|
|
4116
3930
|
import { MapPin as MapPin3 } from "lucide-react";
|
|
4117
3931
|
|
|
4118
3932
|
// src/sections/map/leaflet-map.tsx
|
|
4119
|
-
import { lazy, Suspense, useEffect as
|
|
4120
|
-
import { jsx as
|
|
4121
|
-
var
|
|
4122
|
-
() =>
|
|
3933
|
+
import { lazy, Suspense, useEffect as useEffect5, useState as useState13 } from "react";
|
|
3934
|
+
import { jsx as jsx82 } from "react/jsx-runtime";
|
|
3935
|
+
var LeafletMapInner = lazy(
|
|
3936
|
+
() => import("./leaflet-map-inner-DQIERSVT.js").then((m) => ({ default: m.LeafletMapInner }))
|
|
4123
3937
|
);
|
|
4124
3938
|
function MapSkeleton({ className }) {
|
|
4125
|
-
return /* @__PURE__ */
|
|
3939
|
+
return /* @__PURE__ */ jsx82(
|
|
4126
3940
|
"div",
|
|
4127
3941
|
{
|
|
4128
3942
|
className: `bg-muted animate-pulse rounded-xl flex items-center justify-center text-muted-foreground text-sm ${className ?? ""}`,
|
|
@@ -4131,19 +3945,19 @@ function MapSkeleton({ className }) {
|
|
|
4131
3945
|
);
|
|
4132
3946
|
}
|
|
4133
3947
|
function LeafletMap({ locations, mapStyle, className }) {
|
|
4134
|
-
const [mounted, setMounted] =
|
|
4135
|
-
|
|
3948
|
+
const [mounted, setMounted] = useState13(false);
|
|
3949
|
+
useEffect5(() => {
|
|
4136
3950
|
setMounted(true);
|
|
4137
3951
|
}, []);
|
|
4138
|
-
if (!mounted) return /* @__PURE__ */
|
|
4139
|
-
return /* @__PURE__ */
|
|
3952
|
+
if (!mounted) return /* @__PURE__ */ jsx82(MapSkeleton, { className });
|
|
3953
|
+
return /* @__PURE__ */ jsx82(Suspense, { fallback: /* @__PURE__ */ jsx82(MapSkeleton, { className }), children: /* @__PURE__ */ jsx82(LeafletMapInner, { locations, mapStyle, className }) });
|
|
4140
3954
|
}
|
|
4141
3955
|
|
|
4142
3956
|
// src/sections/map/variants/map-pins.tsx
|
|
4143
|
-
import { jsx as
|
|
3957
|
+
import { jsx as jsx83, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
4144
3958
|
function MapPins({ title, subtitle, content, badge, locations, mapStyle, background }) {
|
|
4145
3959
|
const hasLocations = locations?.length > 0;
|
|
4146
|
-
return /* @__PURE__ */
|
|
3960
|
+
return /* @__PURE__ */ jsx83(
|
|
4147
3961
|
"section",
|
|
4148
3962
|
{
|
|
4149
3963
|
className: cn(
|
|
@@ -4156,11 +3970,11 @@ function MapPins({ title, subtitle, content, badge, locations, mapStyle, backgro
|
|
|
4156
3970
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4157
3971
|
background === "error" && "bg-error text-error-foreground"
|
|
4158
3972
|
),
|
|
4159
|
-
children: /* @__PURE__ */
|
|
4160
|
-
/* @__PURE__ */
|
|
4161
|
-
hasLocations ? /* @__PURE__ */
|
|
4162
|
-
/* @__PURE__ */
|
|
4163
|
-
/* @__PURE__ */
|
|
3973
|
+
children: /* @__PURE__ */ jsxs58("div", { className: "container mx-auto px-4", children: [
|
|
3974
|
+
/* @__PURE__ */ jsx83(SectionHeader, { title, subtitle, badge, content, background }),
|
|
3975
|
+
hasLocations ? /* @__PURE__ */ jsx83(LeafletMap, { locations, mapStyle, className: "h-96 w-full rounded-xl overflow-hidden shadow" }) : /* @__PURE__ */ jsxs58("div", { className: "h-96 bg-muted rounded-xl flex flex-col items-center justify-center gap-3 text-muted-foreground text-center px-6", children: [
|
|
3976
|
+
/* @__PURE__ */ jsx83(MapPin3, { className: "h-10 w-10 opacity-40" }),
|
|
3977
|
+
/* @__PURE__ */ jsx83("p", { className: "text-sm", children: "Agreg\xE1 ubicaciones en el Studio \u2014 las direcciones se geocodifican autom\xE1ticamente." })
|
|
4164
3978
|
] })
|
|
4165
3979
|
] })
|
|
4166
3980
|
}
|
|
@@ -4169,9 +3983,9 @@ function MapPins({ title, subtitle, content, badge, locations, mapStyle, backgro
|
|
|
4169
3983
|
|
|
4170
3984
|
// src/sections/map/variants/map-listing.tsx
|
|
4171
3985
|
import { MapPin as MapPin4, Phone as Phone3, Clock as Clock3, MapPinned } from "lucide-react";
|
|
4172
|
-
import { jsx as
|
|
3986
|
+
import { jsx as jsx84, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
4173
3987
|
function MapListing({ title, subtitle, content, badge, locations, background }) {
|
|
4174
|
-
return /* @__PURE__ */
|
|
3988
|
+
return /* @__PURE__ */ jsx84(
|
|
4175
3989
|
"section",
|
|
4176
3990
|
{
|
|
4177
3991
|
className: cn(
|
|
@@ -4184,23 +3998,23 @@ function MapListing({ title, subtitle, content, badge, locations, background })
|
|
|
4184
3998
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4185
3999
|
background === "error" && "bg-error text-error-foreground"
|
|
4186
4000
|
),
|
|
4187
|
-
children: /* @__PURE__ */
|
|
4188
|
-
/* @__PURE__ */
|
|
4189
|
-
/* @__PURE__ */
|
|
4190
|
-
/* @__PURE__ */
|
|
4191
|
-
/* @__PURE__ */
|
|
4192
|
-
/* @__PURE__ */
|
|
4001
|
+
children: /* @__PURE__ */ jsxs59("div", { className: "container mx-auto px-4", children: [
|
|
4002
|
+
/* @__PURE__ */ jsx84(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4003
|
+
/* @__PURE__ */ jsx84("div", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-3", children: locations.map((location, i) => /* @__PURE__ */ jsxs59("div", { className: "rounded-xl border bg-card p-6 shadow-sm", children: [
|
|
4004
|
+
/* @__PURE__ */ jsxs59("div", { className: "flex items-start gap-3 mb-3", children: [
|
|
4005
|
+
/* @__PURE__ */ jsx84(MapPin4, { className: "h-5 w-5 text-primary mt-0.5 shrink-0" }),
|
|
4006
|
+
/* @__PURE__ */ jsx84("h3", { className: "font-semibold text-lg", children: location.name })
|
|
4193
4007
|
] }),
|
|
4194
|
-
location.phone && /* @__PURE__ */
|
|
4195
|
-
/* @__PURE__ */
|
|
4196
|
-
/* @__PURE__ */
|
|
4008
|
+
location.phone && /* @__PURE__ */ jsxs59("div", { className: "flex items-center gap-2 text-sm text-muted-foreground mb-2", children: [
|
|
4009
|
+
/* @__PURE__ */ jsx84(Phone3, { className: "h-4 w-4 shrink-0" }),
|
|
4010
|
+
/* @__PURE__ */ jsx84("span", { children: location.phone })
|
|
4197
4011
|
] }),
|
|
4198
|
-
location.hours && /* @__PURE__ */
|
|
4199
|
-
/* @__PURE__ */
|
|
4200
|
-
/* @__PURE__ */
|
|
4012
|
+
location.hours && /* @__PURE__ */ jsxs59("div", { className: "flex items-center gap-2 text-sm text-muted-foreground mb-2", children: [
|
|
4013
|
+
/* @__PURE__ */ jsx84(Clock3, { className: "h-4 w-4 shrink-0" }),
|
|
4014
|
+
/* @__PURE__ */ jsx84("span", { children: location.hours })
|
|
4201
4015
|
] }),
|
|
4202
|
-
location.description && /* @__PURE__ */
|
|
4203
|
-
location.address && /* @__PURE__ */
|
|
4016
|
+
location.description && /* @__PURE__ */ jsx84("p", { className: "text-sm text-muted-foreground mt-3", children: location.description }),
|
|
4017
|
+
location.address && /* @__PURE__ */ jsxs59(
|
|
4204
4018
|
"a",
|
|
4205
4019
|
{
|
|
4206
4020
|
href: `https://maps.google.com/?q=${encodeURIComponent(location.address)}`,
|
|
@@ -4208,7 +4022,7 @@ function MapListing({ title, subtitle, content, badge, locations, background })
|
|
|
4208
4022
|
rel: "noopener noreferrer",
|
|
4209
4023
|
className: "inline-flex items-center gap-1 mt-4 text-sm font-medium text-primary hover:underline",
|
|
4210
4024
|
children: [
|
|
4211
|
-
/* @__PURE__ */
|
|
4025
|
+
/* @__PURE__ */ jsx84(MapPinned, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
4212
4026
|
location.address
|
|
4213
4027
|
]
|
|
4214
4028
|
}
|
|
@@ -4221,10 +4035,10 @@ function MapListing({ title, subtitle, content, badge, locations, background })
|
|
|
4221
4035
|
|
|
4222
4036
|
// src/sections/map/variants/map-split.tsx
|
|
4223
4037
|
import { MapPin as MapPin5, Phone as Phone4, Clock as Clock4, MapPinned as MapPinned2 } from "lucide-react";
|
|
4224
|
-
import { jsx as
|
|
4038
|
+
import { jsx as jsx85, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
4225
4039
|
function MapSplit({ title, subtitle, content, badge, locations, mapStyle, background }) {
|
|
4226
4040
|
const hasLocations = locations?.length > 0;
|
|
4227
|
-
return /* @__PURE__ */
|
|
4041
|
+
return /* @__PURE__ */ jsx85(
|
|
4228
4042
|
"section",
|
|
4229
4043
|
{
|
|
4230
4044
|
className: cn(
|
|
@@ -4237,28 +4051,28 @@ function MapSplit({ title, subtitle, content, badge, locations, mapStyle, backgr
|
|
|
4237
4051
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4238
4052
|
background === "error" && "bg-error text-error-foreground"
|
|
4239
4053
|
),
|
|
4240
|
-
children: /* @__PURE__ */
|
|
4241
|
-
/* @__PURE__ */
|
|
4242
|
-
/* @__PURE__ */
|
|
4243
|
-
/* @__PURE__ */
|
|
4244
|
-
/* @__PURE__ */
|
|
4245
|
-
/* @__PURE__ */
|
|
4054
|
+
children: /* @__PURE__ */ jsxs60("div", { className: "container mx-auto px-4", children: [
|
|
4055
|
+
/* @__PURE__ */ jsx85(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4056
|
+
/* @__PURE__ */ jsxs60("div", { className: "grid gap-0 lg:grid-cols-2 items-stretch overflow-hidden rounded-xl border shadow-sm divide-y lg:divide-y-0 lg:divide-x", children: [
|
|
4057
|
+
/* @__PURE__ */ jsx85("div", { className: "min-h-[450px]", children: hasLocations ? /* @__PURE__ */ jsx85(LeafletMap, { locations, mapStyle, className: "h-full min-h-[450px] w-full" }) : /* @__PURE__ */ jsxs60("div", { className: "w-full h-full min-h-[450px] bg-muted flex flex-col items-center justify-center gap-3 text-muted-foreground text-center px-6", children: [
|
|
4058
|
+
/* @__PURE__ */ jsx85(MapPin5, { className: "h-10 w-10 opacity-40" }),
|
|
4059
|
+
/* @__PURE__ */ jsx85("p", { className: "text-sm", children: "Agreg\xE1 ubicaciones en el Studio \u2014 las direcciones se geocodifican autom\xE1ticamente." })
|
|
4246
4060
|
] }) }),
|
|
4247
|
-
/* @__PURE__ */
|
|
4248
|
-
/* @__PURE__ */
|
|
4249
|
-
/* @__PURE__ */
|
|
4250
|
-
/* @__PURE__ */
|
|
4061
|
+
/* @__PURE__ */ jsx85("div", { className: "bg-card p-6 sm:p-8 overflow-y-auto max-h-[600px]", children: hasLocations ? /* @__PURE__ */ jsx85("div", { className: "space-y-6", children: locations.map((location, i) => /* @__PURE__ */ jsxs60("div", { className: "pb-6 border-b last:border-0 last:pb-0", children: [
|
|
4062
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex items-start gap-2 mb-2", children: [
|
|
4063
|
+
/* @__PURE__ */ jsx85(MapPin5, { className: "h-4 w-4 text-primary mt-1 shrink-0" }),
|
|
4064
|
+
/* @__PURE__ */ jsx85("h3", { className: "font-semibold", children: location.name })
|
|
4251
4065
|
] }),
|
|
4252
|
-
location.phone && /* @__PURE__ */
|
|
4253
|
-
/* @__PURE__ */
|
|
4254
|
-
/* @__PURE__ */
|
|
4066
|
+
location.phone && /* @__PURE__ */ jsxs60("div", { className: "flex items-center gap-2 text-sm text-muted-foreground mb-1", children: [
|
|
4067
|
+
/* @__PURE__ */ jsx85(Phone4, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
4068
|
+
/* @__PURE__ */ jsx85("span", { children: location.phone })
|
|
4255
4069
|
] }),
|
|
4256
|
-
location.hours && /* @__PURE__ */
|
|
4257
|
-
/* @__PURE__ */
|
|
4258
|
-
/* @__PURE__ */
|
|
4070
|
+
location.hours && /* @__PURE__ */ jsxs60("div", { className: "flex items-center gap-2 text-sm text-muted-foreground mb-1", children: [
|
|
4071
|
+
/* @__PURE__ */ jsx85(Clock4, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
4072
|
+
/* @__PURE__ */ jsx85("span", { children: location.hours })
|
|
4259
4073
|
] }),
|
|
4260
|
-
location.description && /* @__PURE__ */
|
|
4261
|
-
location.address && /* @__PURE__ */
|
|
4074
|
+
location.description && /* @__PURE__ */ jsx85("p", { className: "text-sm text-muted-foreground mt-2", children: location.description }),
|
|
4075
|
+
location.address && /* @__PURE__ */ jsxs60(
|
|
4262
4076
|
"a",
|
|
4263
4077
|
{
|
|
4264
4078
|
href: `https://maps.google.com/?q=${encodeURIComponent(location.address)}`,
|
|
@@ -4266,12 +4080,12 @@ function MapSplit({ title, subtitle, content, badge, locations, mapStyle, backgr
|
|
|
4266
4080
|
rel: "noopener noreferrer",
|
|
4267
4081
|
className: "inline-flex items-center gap-1 mt-3 text-sm font-medium text-primary hover:underline",
|
|
4268
4082
|
children: [
|
|
4269
|
-
/* @__PURE__ */
|
|
4083
|
+
/* @__PURE__ */ jsx85(MapPinned2, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
4270
4084
|
location.address
|
|
4271
4085
|
]
|
|
4272
4086
|
}
|
|
4273
4087
|
)
|
|
4274
|
-
] }, i)) }) : /* @__PURE__ */
|
|
4088
|
+
] }, i)) }) : /* @__PURE__ */ jsx85("p", { className: "text-sm text-muted-foreground", children: "No hay ubicaciones agregadas a\xFAn." }) })
|
|
4275
4089
|
] })
|
|
4276
4090
|
] })
|
|
4277
4091
|
}
|
|
@@ -4279,23 +4093,23 @@ function MapSplit({ title, subtitle, content, badge, locations, mapStyle, backgr
|
|
|
4279
4093
|
}
|
|
4280
4094
|
|
|
4281
4095
|
// src/sections/map/index.tsx
|
|
4282
|
-
import { jsx as
|
|
4096
|
+
import { jsx as jsx86 } from "react/jsx-runtime";
|
|
4283
4097
|
function MapSection(props) {
|
|
4284
4098
|
switch (props.variant) {
|
|
4285
4099
|
case "listing":
|
|
4286
|
-
return /* @__PURE__ */
|
|
4100
|
+
return /* @__PURE__ */ jsx86(MapListing, { ...props });
|
|
4287
4101
|
case "split":
|
|
4288
|
-
return /* @__PURE__ */
|
|
4102
|
+
return /* @__PURE__ */ jsx86(MapSplit, { ...props });
|
|
4289
4103
|
case "pins":
|
|
4290
4104
|
default:
|
|
4291
|
-
return /* @__PURE__ */
|
|
4105
|
+
return /* @__PURE__ */ jsx86(MapPins, { ...props });
|
|
4292
4106
|
}
|
|
4293
4107
|
}
|
|
4294
4108
|
|
|
4295
4109
|
// src/sections/iframe/variants/iframe-simple.tsx
|
|
4296
|
-
import { jsx as
|
|
4110
|
+
import { jsx as jsx87, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
4297
4111
|
function IframeSimple({ title, subtitle, content, badge, src, iframeTitle, height, background }) {
|
|
4298
|
-
return /* @__PURE__ */
|
|
4112
|
+
return /* @__PURE__ */ jsx87(
|
|
4299
4113
|
"section",
|
|
4300
4114
|
{
|
|
4301
4115
|
className: cn(
|
|
@@ -4308,9 +4122,9 @@ function IframeSimple({ title, subtitle, content, badge, src, iframeTitle, heigh
|
|
|
4308
4122
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4309
4123
|
background === "error" && "bg-error text-error-foreground"
|
|
4310
4124
|
),
|
|
4311
|
-
children: /* @__PURE__ */
|
|
4312
|
-
/* @__PURE__ */
|
|
4313
|
-
/* @__PURE__ */
|
|
4125
|
+
children: /* @__PURE__ */ jsxs61("div", { className: "container mx-auto px-4", children: [
|
|
4126
|
+
/* @__PURE__ */ jsx87(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4127
|
+
/* @__PURE__ */ jsx87(
|
|
4314
4128
|
"iframe",
|
|
4315
4129
|
{
|
|
4316
4130
|
src,
|
|
@@ -4327,9 +4141,9 @@ function IframeSimple({ title, subtitle, content, badge, src, iframeTitle, heigh
|
|
|
4327
4141
|
}
|
|
4328
4142
|
|
|
4329
4143
|
// src/sections/iframe/variants/iframe-card.tsx
|
|
4330
|
-
import { jsx as
|
|
4144
|
+
import { jsx as jsx88, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
4331
4145
|
function IframeCard({ title, subtitle, content, badge, src, iframeTitle, height, background }) {
|
|
4332
|
-
return /* @__PURE__ */
|
|
4146
|
+
return /* @__PURE__ */ jsx88(
|
|
4333
4147
|
"section",
|
|
4334
4148
|
{
|
|
4335
4149
|
className: cn(
|
|
@@ -4342,9 +4156,9 @@ function IframeCard({ title, subtitle, content, badge, src, iframeTitle, height,
|
|
|
4342
4156
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4343
4157
|
background === "error" && "bg-error text-error-foreground"
|
|
4344
4158
|
),
|
|
4345
|
-
children: /* @__PURE__ */
|
|
4346
|
-
/* @__PURE__ */
|
|
4347
|
-
/* @__PURE__ */
|
|
4159
|
+
children: /* @__PURE__ */ jsxs62("div", { className: "container mx-auto px-4", children: [
|
|
4160
|
+
/* @__PURE__ */ jsx88(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4161
|
+
/* @__PURE__ */ jsx88("div", { className: "rounded-xl overflow-hidden shadow-lg border", children: /* @__PURE__ */ jsx88(
|
|
4348
4162
|
"iframe",
|
|
4349
4163
|
{
|
|
4350
4164
|
src,
|
|
@@ -4361,10 +4175,10 @@ function IframeCard({ title, subtitle, content, badge, src, iframeTitle, height,
|
|
|
4361
4175
|
}
|
|
4362
4176
|
|
|
4363
4177
|
// src/sections/iframe/variants/iframe-responsive.tsx
|
|
4364
|
-
import { jsx as
|
|
4178
|
+
import { jsx as jsx89, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
4365
4179
|
function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, height, aspectRatio, background }) {
|
|
4366
4180
|
const isFixedHeight = !aspectRatio || aspectRatio === "auto";
|
|
4367
|
-
return /* @__PURE__ */
|
|
4181
|
+
return /* @__PURE__ */ jsx89(
|
|
4368
4182
|
"section",
|
|
4369
4183
|
{
|
|
4370
4184
|
className: cn(
|
|
@@ -4377,9 +4191,9 @@ function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, h
|
|
|
4377
4191
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4378
4192
|
background === "error" && "bg-error text-error-foreground"
|
|
4379
4193
|
),
|
|
4380
|
-
children: /* @__PURE__ */
|
|
4381
|
-
/* @__PURE__ */
|
|
4382
|
-
isFixedHeight ? /* @__PURE__ */
|
|
4194
|
+
children: /* @__PURE__ */ jsxs63("div", { className: "container mx-auto px-4", children: [
|
|
4195
|
+
/* @__PURE__ */ jsx89(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4196
|
+
isFixedHeight ? /* @__PURE__ */ jsx89(
|
|
4383
4197
|
"iframe",
|
|
4384
4198
|
{
|
|
4385
4199
|
src,
|
|
@@ -4389,7 +4203,7 @@ function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, h
|
|
|
4389
4203
|
allowFullScreen: true,
|
|
4390
4204
|
sandbox: "allow-scripts allow-same-origin allow-popups allow-forms"
|
|
4391
4205
|
}
|
|
4392
|
-
) : /* @__PURE__ */
|
|
4206
|
+
) : /* @__PURE__ */ jsx89(
|
|
4393
4207
|
"div",
|
|
4394
4208
|
{
|
|
4395
4209
|
className: cn(
|
|
@@ -4397,7 +4211,7 @@ function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, h
|
|
|
4397
4211
|
aspectRatio === "video" && "aspect-video",
|
|
4398
4212
|
aspectRatio === "square" && "aspect-square"
|
|
4399
4213
|
),
|
|
4400
|
-
children: /* @__PURE__ */
|
|
4214
|
+
children: /* @__PURE__ */ jsx89(
|
|
4401
4215
|
"iframe",
|
|
4402
4216
|
{
|
|
4403
4217
|
src,
|
|
@@ -4415,24 +4229,24 @@ function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, h
|
|
|
4415
4229
|
}
|
|
4416
4230
|
|
|
4417
4231
|
// src/sections/iframe/index.tsx
|
|
4418
|
-
import { jsx as
|
|
4232
|
+
import { jsx as jsx90 } from "react/jsx-runtime";
|
|
4419
4233
|
function IframeSection(props) {
|
|
4420
4234
|
switch (props.variant) {
|
|
4421
4235
|
case "card":
|
|
4422
|
-
return /* @__PURE__ */
|
|
4236
|
+
return /* @__PURE__ */ jsx90(IframeCard, { ...props });
|
|
4423
4237
|
case "responsive":
|
|
4424
|
-
return /* @__PURE__ */
|
|
4238
|
+
return /* @__PURE__ */ jsx90(IframeResponsive, { ...props });
|
|
4425
4239
|
case "simple":
|
|
4426
4240
|
default:
|
|
4427
|
-
return /* @__PURE__ */
|
|
4241
|
+
return /* @__PURE__ */ jsx90(IframeSimple, { ...props });
|
|
4428
4242
|
}
|
|
4429
4243
|
}
|
|
4430
4244
|
|
|
4431
4245
|
// src/sections/comparison/variants/comparison-table.tsx
|
|
4432
4246
|
import { Minus } from "lucide-react";
|
|
4433
|
-
import { jsx as
|
|
4247
|
+
import { jsx as jsx91, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
4434
4248
|
function ComparisonTable({ title, subtitle, content, badge, allFeatures, columns, background }) {
|
|
4435
|
-
return /* @__PURE__ */
|
|
4249
|
+
return /* @__PURE__ */ jsx91(
|
|
4436
4250
|
"section",
|
|
4437
4251
|
{
|
|
4438
4252
|
className: cn(
|
|
@@ -4445,46 +4259,46 @@ function ComparisonTable({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4445
4259
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4446
4260
|
background === "error" && "bg-error text-error-foreground"
|
|
4447
4261
|
),
|
|
4448
|
-
children: /* @__PURE__ */
|
|
4449
|
-
/* @__PURE__ */
|
|
4450
|
-
/* @__PURE__ */
|
|
4451
|
-
/* @__PURE__ */
|
|
4452
|
-
/* @__PURE__ */
|
|
4453
|
-
columns.map((col, i) => /* @__PURE__ */
|
|
4262
|
+
children: /* @__PURE__ */ jsxs64("div", { className: "container mx-auto px-4", children: [
|
|
4263
|
+
/* @__PURE__ */ jsx91(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4264
|
+
/* @__PURE__ */ jsx91("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs64("table", { className: "min-w-[600px] w-full border-collapse", children: [
|
|
4265
|
+
/* @__PURE__ */ jsx91("thead", { children: /* @__PURE__ */ jsxs64("tr", { children: [
|
|
4266
|
+
/* @__PURE__ */ jsx91("th", { className: "text-left p-4 font-semibold text-muted-foreground w-48", children: "Caracter\xEDsticas" }),
|
|
4267
|
+
columns.map((col, i) => /* @__PURE__ */ jsx91(
|
|
4454
4268
|
"th",
|
|
4455
4269
|
{
|
|
4456
4270
|
className: cn(
|
|
4457
4271
|
"p-4 text-center",
|
|
4458
4272
|
col.highlighted && "bg-primary/5 border-x border-primary"
|
|
4459
4273
|
),
|
|
4460
|
-
children: /* @__PURE__ */
|
|
4461
|
-
col.badge && /* @__PURE__ */
|
|
4462
|
-
/* @__PURE__ */
|
|
4463
|
-
col.price && /* @__PURE__ */
|
|
4274
|
+
children: /* @__PURE__ */ jsxs64("div", { className: "flex flex-col items-center gap-1", children: [
|
|
4275
|
+
col.badge && /* @__PURE__ */ jsx91(Badge, { variant: "secondary", className: "mb-1", children: col.badge }),
|
|
4276
|
+
/* @__PURE__ */ jsx91("span", { className: "font-bold text-lg", children: col.name }),
|
|
4277
|
+
col.price && /* @__PURE__ */ jsxs64("span", { className: "text-2xl font-bold", children: [
|
|
4464
4278
|
col.price,
|
|
4465
|
-
col.priceFrequency && /* @__PURE__ */
|
|
4279
|
+
col.priceFrequency && /* @__PURE__ */ jsxs64("span", { className: "text-sm font-normal text-muted-foreground", children: [
|
|
4466
4280
|
"/",
|
|
4467
4281
|
col.priceFrequency
|
|
4468
4282
|
] })
|
|
4469
4283
|
] }),
|
|
4470
|
-
col.description && /* @__PURE__ */
|
|
4284
|
+
col.description && /* @__PURE__ */ jsx91("p", { className: "text-sm text-muted-foreground", children: col.description })
|
|
4471
4285
|
] })
|
|
4472
4286
|
},
|
|
4473
4287
|
i
|
|
4474
4288
|
))
|
|
4475
4289
|
] }) }),
|
|
4476
|
-
/* @__PURE__ */
|
|
4477
|
-
/* @__PURE__ */
|
|
4290
|
+
/* @__PURE__ */ jsx91("tbody", { children: allFeatures.map((feature, fi) => /* @__PURE__ */ jsxs64("tr", { className: "border-t", children: [
|
|
4291
|
+
/* @__PURE__ */ jsx91("td", { className: "p-4 text-sm", children: feature }),
|
|
4478
4292
|
columns.map((col, ci) => {
|
|
4479
4293
|
const cell = col.cells?.[fi] ?? "";
|
|
4480
|
-
return /* @__PURE__ */
|
|
4294
|
+
return /* @__PURE__ */ jsx91(
|
|
4481
4295
|
"td",
|
|
4482
4296
|
{
|
|
4483
4297
|
className: cn(
|
|
4484
4298
|
"p-4 text-center",
|
|
4485
4299
|
col.highlighted && "bg-primary/5 border-x border-primary"
|
|
4486
4300
|
),
|
|
4487
|
-
children: cell ? /* @__PURE__ */
|
|
4301
|
+
children: cell ? /* @__PURE__ */ jsx91("span", { className: "text-base leading-none", children: cell }) : /* @__PURE__ */ jsx91(Minus, { className: "h-5 w-5 text-muted-foreground mx-auto" })
|
|
4488
4302
|
},
|
|
4489
4303
|
ci
|
|
4490
4304
|
);
|
|
@@ -4497,9 +4311,9 @@ function ComparisonTable({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4497
4311
|
}
|
|
4498
4312
|
|
|
4499
4313
|
// src/sections/comparison/variants/comparison-cards.tsx
|
|
4500
|
-
import { jsx as
|
|
4314
|
+
import { jsx as jsx92, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
4501
4315
|
function ComparisonCards({ title, subtitle, content, badge, allFeatures, columns, background }) {
|
|
4502
|
-
return /* @__PURE__ */
|
|
4316
|
+
return /* @__PURE__ */ jsx92(
|
|
4503
4317
|
"section",
|
|
4504
4318
|
{
|
|
4505
4319
|
className: cn(
|
|
@@ -4512,9 +4326,9 @@ function ComparisonCards({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4512
4326
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4513
4327
|
background === "error" && "bg-error text-error-foreground"
|
|
4514
4328
|
),
|
|
4515
|
-
children: /* @__PURE__ */
|
|
4516
|
-
/* @__PURE__ */
|
|
4517
|
-
/* @__PURE__ */
|
|
4329
|
+
children: /* @__PURE__ */ jsxs65("div", { className: "container mx-auto px-4", children: [
|
|
4330
|
+
/* @__PURE__ */ jsx92(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4331
|
+
/* @__PURE__ */ jsx92("div", { className: "flex flex-wrap justify-center gap-6 items-end", children: columns.map((col, i) => /* @__PURE__ */ jsxs65(
|
|
4518
4332
|
"div",
|
|
4519
4333
|
{
|
|
4520
4334
|
className: cn(
|
|
@@ -4522,32 +4336,32 @@ function ComparisonCards({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4522
4336
|
col.highlighted && "border-primary shadow-lg scale-105"
|
|
4523
4337
|
),
|
|
4524
4338
|
children: [
|
|
4525
|
-
col.badge && /* @__PURE__ */
|
|
4526
|
-
/* @__PURE__ */
|
|
4527
|
-
col.description && /* @__PURE__ */
|
|
4528
|
-
col.price && /* @__PURE__ */
|
|
4529
|
-
/* @__PURE__ */
|
|
4530
|
-
col.priceFrequency && /* @__PURE__ */
|
|
4339
|
+
col.badge && /* @__PURE__ */ jsx92(Badge, { variant: "secondary", className: "mb-3 self-start", children: col.badge }),
|
|
4340
|
+
/* @__PURE__ */ jsx92("h3", { className: "text-xl font-bold mb-1", children: col.name }),
|
|
4341
|
+
col.description && /* @__PURE__ */ jsx92("p", { className: "text-sm text-muted-foreground mb-4", children: col.description }),
|
|
4342
|
+
col.price && /* @__PURE__ */ jsxs65("div", { className: "mb-6", children: [
|
|
4343
|
+
/* @__PURE__ */ jsx92("span", { className: "text-4xl font-bold", children: col.price }),
|
|
4344
|
+
col.priceFrequency && /* @__PURE__ */ jsxs65("span", { className: "text-muted-foreground text-sm", children: [
|
|
4531
4345
|
"/",
|
|
4532
4346
|
col.priceFrequency
|
|
4533
4347
|
] })
|
|
4534
4348
|
] }),
|
|
4535
|
-
/* @__PURE__ */
|
|
4349
|
+
/* @__PURE__ */ jsx92("ul", { className: "space-y-2 mb-8 flex-1", children: allFeatures.map((feature, fi) => {
|
|
4536
4350
|
const cell = col.cells?.[fi] ?? "";
|
|
4537
4351
|
if (!cell) return null;
|
|
4538
|
-
return /* @__PURE__ */
|
|
4539
|
-
/* @__PURE__ */
|
|
4540
|
-
/* @__PURE__ */
|
|
4352
|
+
return /* @__PURE__ */ jsxs65("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4353
|
+
/* @__PURE__ */ jsx92("span", { className: "text-base leading-none shrink-0", children: cell }),
|
|
4354
|
+
/* @__PURE__ */ jsx92("span", { children: feature })
|
|
4541
4355
|
] }, fi);
|
|
4542
4356
|
}) }),
|
|
4543
|
-
col.cta?.label && /* @__PURE__ */
|
|
4357
|
+
col.cta?.label && /* @__PURE__ */ jsx92(
|
|
4544
4358
|
Button,
|
|
4545
4359
|
{
|
|
4546
4360
|
asChild: true,
|
|
4547
4361
|
variant: col.cta.variant ?? "default",
|
|
4548
4362
|
size: col.cta.size ?? "lg",
|
|
4549
4363
|
className: "w-full",
|
|
4550
|
-
children: /* @__PURE__ */
|
|
4364
|
+
children: /* @__PURE__ */ jsx92("a", { href: col.cta.href, children: col.cta.label })
|
|
4551
4365
|
}
|
|
4552
4366
|
)
|
|
4553
4367
|
]
|
|
@@ -4561,12 +4375,12 @@ function ComparisonCards({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4561
4375
|
|
|
4562
4376
|
// src/sections/comparison/variants/comparison-highlights.tsx
|
|
4563
4377
|
import { Check as Check2, Minus as Minus2 } from "lucide-react";
|
|
4564
|
-
import { jsx as
|
|
4378
|
+
import { jsx as jsx93, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
4565
4379
|
function ComparisonHighlights({ title, subtitle, content, badge, allFeatures, columns, background }) {
|
|
4566
4380
|
const hasValue = (col, fi) => !!(col.cells?.[fi] ?? "");
|
|
4567
4381
|
const sharedRows = allFeatures.filter((_, fi) => columns.every((col) => hasValue(col, fi)));
|
|
4568
4382
|
const differingRows = allFeatures.map((f, fi) => ({ f, fi })).filter(({ fi }) => !columns.every((col) => hasValue(col, fi)));
|
|
4569
|
-
return /* @__PURE__ */
|
|
4383
|
+
return /* @__PURE__ */ jsx93(
|
|
4570
4384
|
"section",
|
|
4571
4385
|
{
|
|
4572
4386
|
className: cn(
|
|
@@ -4579,27 +4393,27 @@ function ComparisonHighlights({ title, subtitle, content, badge, allFeatures, co
|
|
|
4579
4393
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4580
4394
|
background === "error" && "bg-error text-error-foreground"
|
|
4581
4395
|
),
|
|
4582
|
-
children: /* @__PURE__ */
|
|
4583
|
-
/* @__PURE__ */
|
|
4584
|
-
sharedRows.length > 0 && /* @__PURE__ */
|
|
4585
|
-
/* @__PURE__ */
|
|
4586
|
-
/* @__PURE__ */
|
|
4587
|
-
/* @__PURE__ */
|
|
4588
|
-
/* @__PURE__ */
|
|
4396
|
+
children: /* @__PURE__ */ jsxs66("div", { className: "container mx-auto px-4", children: [
|
|
4397
|
+
/* @__PURE__ */ jsx93(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4398
|
+
sharedRows.length > 0 && /* @__PURE__ */ jsxs66("div", { className: "mb-12", children: [
|
|
4399
|
+
/* @__PURE__ */ jsx93("h3", { className: "text-lg font-semibold mb-4", children: "Todos los planes incluyen" }),
|
|
4400
|
+
/* @__PURE__ */ jsx93("ul", { className: "grid sm:grid-cols-2 gap-2", children: sharedRows.map((feature, i) => /* @__PURE__ */ jsxs66("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4401
|
+
/* @__PURE__ */ jsx93(Check2, { className: "h-4 w-4 text-green-500 shrink-0" }),
|
|
4402
|
+
/* @__PURE__ */ jsx93("span", { children: feature })
|
|
4589
4403
|
] }, i)) })
|
|
4590
4404
|
] }),
|
|
4591
|
-
differingRows.length > 0 && /* @__PURE__ */
|
|
4592
|
-
/* @__PURE__ */
|
|
4593
|
-
/* @__PURE__ */
|
|
4594
|
-
/* @__PURE__ */
|
|
4595
|
-
/* @__PURE__ */
|
|
4596
|
-
columns.map((col, i) => /* @__PURE__ */
|
|
4405
|
+
differingRows.length > 0 && /* @__PURE__ */ jsxs66("div", { children: [
|
|
4406
|
+
/* @__PURE__ */ jsx93("h3", { className: "text-lg font-semibold mb-4", children: "Lo que cambia entre planes" }),
|
|
4407
|
+
/* @__PURE__ */ jsx93("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs66("table", { className: "min-w-[500px] w-full border-collapse text-sm", children: [
|
|
4408
|
+
/* @__PURE__ */ jsx93("thead", { children: /* @__PURE__ */ jsxs66("tr", { className: "border-b", children: [
|
|
4409
|
+
/* @__PURE__ */ jsx93("th", { className: "text-left p-3 text-muted-foreground font-medium w-48", children: "Caracter\xEDstica" }),
|
|
4410
|
+
columns.map((col, i) => /* @__PURE__ */ jsx93("th", { className: "p-3 text-center font-semibold", children: col.name }, i))
|
|
4597
4411
|
] }) }),
|
|
4598
|
-
/* @__PURE__ */
|
|
4599
|
-
/* @__PURE__ */
|
|
4412
|
+
/* @__PURE__ */ jsx93("tbody", { children: differingRows.map(({ f: feature, fi }) => /* @__PURE__ */ jsxs66("tr", { className: "border-b last:border-0", children: [
|
|
4413
|
+
/* @__PURE__ */ jsx93("td", { className: "p-3", children: feature }),
|
|
4600
4414
|
columns.map((col, ci) => {
|
|
4601
4415
|
const cell = col.cells?.[fi] ?? "";
|
|
4602
|
-
return /* @__PURE__ */
|
|
4416
|
+
return /* @__PURE__ */ jsx93("td", { className: "p-3 text-center", children: cell ? /* @__PURE__ */ jsx93("span", { className: "text-base leading-none", children: cell }) : /* @__PURE__ */ jsx93(Minus2, { className: "h-4 w-4 text-muted-foreground mx-auto" }) }, ci);
|
|
4603
4417
|
})
|
|
4604
4418
|
] }, fi)) })
|
|
4605
4419
|
] }) })
|
|
@@ -4610,22 +4424,22 @@ function ComparisonHighlights({ title, subtitle, content, badge, allFeatures, co
|
|
|
4610
4424
|
}
|
|
4611
4425
|
|
|
4612
4426
|
// src/sections/comparison/index.tsx
|
|
4613
|
-
import { jsx as
|
|
4427
|
+
import { jsx as jsx94 } from "react/jsx-runtime";
|
|
4614
4428
|
function Comparison(props) {
|
|
4615
4429
|
switch (props.variant) {
|
|
4616
4430
|
case "cards":
|
|
4617
|
-
return /* @__PURE__ */
|
|
4431
|
+
return /* @__PURE__ */ jsx94(ComparisonCards, { ...props });
|
|
4618
4432
|
case "highlights":
|
|
4619
|
-
return /* @__PURE__ */
|
|
4433
|
+
return /* @__PURE__ */ jsx94(ComparisonHighlights, { ...props });
|
|
4620
4434
|
case "table":
|
|
4621
4435
|
default:
|
|
4622
|
-
return /* @__PURE__ */
|
|
4436
|
+
return /* @__PURE__ */ jsx94(ComparisonTable, { ...props });
|
|
4623
4437
|
}
|
|
4624
4438
|
}
|
|
4625
4439
|
|
|
4626
4440
|
// src/sections/duplex/variants/duplex-image-left.tsx
|
|
4627
4441
|
import { Check as Check3 } from "lucide-react";
|
|
4628
|
-
import { jsx as
|
|
4442
|
+
import { jsx as jsx95, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
4629
4443
|
function DuplexImageLeft({
|
|
4630
4444
|
badge,
|
|
4631
4445
|
heading,
|
|
@@ -4638,7 +4452,7 @@ function DuplexImageLeft({
|
|
|
4638
4452
|
bullets,
|
|
4639
4453
|
background
|
|
4640
4454
|
}) {
|
|
4641
|
-
return /* @__PURE__ */
|
|
4455
|
+
return /* @__PURE__ */ jsx95(
|
|
4642
4456
|
"section",
|
|
4643
4457
|
{
|
|
4644
4458
|
className: cn(
|
|
@@ -4651,8 +4465,8 @@ function DuplexImageLeft({
|
|
|
4651
4465
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4652
4466
|
background === "error" && "bg-error text-error-foreground"
|
|
4653
4467
|
),
|
|
4654
|
-
children: /* @__PURE__ */
|
|
4655
|
-
/* @__PURE__ */
|
|
4468
|
+
children: /* @__PURE__ */ jsx95("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxs67("div", { className: "grid items-center gap-12 lg:grid-cols-2", children: [
|
|
4469
|
+
/* @__PURE__ */ jsx95("div", { children: videoUrl ? /* @__PURE__ */ jsx95(
|
|
4656
4470
|
"video",
|
|
4657
4471
|
{
|
|
4658
4472
|
src: videoUrl,
|
|
@@ -4662,32 +4476,32 @@ function DuplexImageLeft({
|
|
|
4662
4476
|
loop: true,
|
|
4663
4477
|
playsInline: true
|
|
4664
4478
|
}
|
|
4665
|
-
) : image?.url ? /* @__PURE__ */
|
|
4479
|
+
) : image?.url ? /* @__PURE__ */ jsx95(
|
|
4666
4480
|
"img",
|
|
4667
4481
|
{
|
|
4668
4482
|
src: image.url,
|
|
4669
4483
|
alt: image.alt ?? heading,
|
|
4670
4484
|
className: "w-full rounded-2xl shadow-lg object-cover"
|
|
4671
4485
|
}
|
|
4672
|
-
) : /* @__PURE__ */
|
|
4673
|
-
/* @__PURE__ */
|
|
4674
|
-
badge && /* @__PURE__ */
|
|
4675
|
-
/* @__PURE__ */
|
|
4676
|
-
body && /* @__PURE__ */
|
|
4677
|
-
content && /* @__PURE__ */
|
|
4486
|
+
) : /* @__PURE__ */ jsx95("div", { className: "w-full h-64 rounded-2xl bg-muted" }) }),
|
|
4487
|
+
/* @__PURE__ */ jsxs67("div", { children: [
|
|
4488
|
+
badge && /* @__PURE__ */ jsx95(Badge, { variant: "secondary", className: "mb-4", children: badge }),
|
|
4489
|
+
/* @__PURE__ */ jsx95("h2", { className: "text-2xl sm:text-3xl md:text-4xl font-bold", children: heading }),
|
|
4490
|
+
body && /* @__PURE__ */ jsx95("p", { className: "text-muted-foreground text-lg mt-4", children: body }),
|
|
4491
|
+
content && /* @__PURE__ */ jsx95(
|
|
4678
4492
|
"div",
|
|
4679
4493
|
{
|
|
4680
4494
|
className: "richtext-content mt-4 text-muted-foreground",
|
|
4681
4495
|
dangerouslySetInnerHTML: { __html: content }
|
|
4682
4496
|
}
|
|
4683
4497
|
),
|
|
4684
|
-
bullets && bullets.length > 0 && /* @__PURE__ */
|
|
4685
|
-
/* @__PURE__ */
|
|
4686
|
-
/* @__PURE__ */
|
|
4498
|
+
bullets && bullets.length > 0 && /* @__PURE__ */ jsx95("ul", { className: "mt-4 space-y-2", children: bullets.map((bullet, i) => /* @__PURE__ */ jsxs67("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4499
|
+
/* @__PURE__ */ jsx95(Check3, { className: "h-4 w-4 text-green-500 shrink-0" }),
|
|
4500
|
+
/* @__PURE__ */ jsx95("span", { children: bullet })
|
|
4687
4501
|
] }, i)) }),
|
|
4688
|
-
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */
|
|
4689
|
-
primaryCTA?.label && /* @__PURE__ */
|
|
4690
|
-
secondaryCTA?.label && /* @__PURE__ */
|
|
4502
|
+
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */ jsxs67("div", { className: "flex flex-wrap gap-3 mt-6", children: [
|
|
4503
|
+
primaryCTA?.label && /* @__PURE__ */ jsx95(Button, { asChild: true, variant: primaryCTA.variant ?? "default", size: primaryCTA.size ?? "lg", children: /* @__PURE__ */ jsx95("a", { href: primaryCTA.href, children: primaryCTA.label }) }),
|
|
4504
|
+
secondaryCTA?.label && /* @__PURE__ */ jsx95(Button, { asChild: true, variant: secondaryCTA.variant ?? "outline", size: secondaryCTA.size ?? "lg", children: /* @__PURE__ */ jsx95("a", { href: secondaryCTA.href, children: secondaryCTA.label }) })
|
|
4691
4505
|
] })
|
|
4692
4506
|
] })
|
|
4693
4507
|
] }) })
|
|
@@ -4697,7 +4511,7 @@ function DuplexImageLeft({
|
|
|
4697
4511
|
|
|
4698
4512
|
// src/sections/duplex/variants/duplex-image-right.tsx
|
|
4699
4513
|
import { Check as Check4 } from "lucide-react";
|
|
4700
|
-
import { jsx as
|
|
4514
|
+
import { jsx as jsx96, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
4701
4515
|
function DuplexImageRight({
|
|
4702
4516
|
badge,
|
|
4703
4517
|
heading,
|
|
@@ -4710,7 +4524,7 @@ function DuplexImageRight({
|
|
|
4710
4524
|
bullets,
|
|
4711
4525
|
background
|
|
4712
4526
|
}) {
|
|
4713
|
-
return /* @__PURE__ */
|
|
4527
|
+
return /* @__PURE__ */ jsx96(
|
|
4714
4528
|
"section",
|
|
4715
4529
|
{
|
|
4716
4530
|
className: cn(
|
|
@@ -4723,28 +4537,28 @@ function DuplexImageRight({
|
|
|
4723
4537
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4724
4538
|
background === "error" && "bg-error text-error-foreground"
|
|
4725
4539
|
),
|
|
4726
|
-
children: /* @__PURE__ */
|
|
4727
|
-
/* @__PURE__ */
|
|
4728
|
-
badge && /* @__PURE__ */
|
|
4729
|
-
/* @__PURE__ */
|
|
4730
|
-
body && /* @__PURE__ */
|
|
4731
|
-
content && /* @__PURE__ */
|
|
4540
|
+
children: /* @__PURE__ */ jsx96("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxs68("div", { className: "grid items-center gap-12 lg:grid-cols-2", children: [
|
|
4541
|
+
/* @__PURE__ */ jsxs68("div", { children: [
|
|
4542
|
+
badge && /* @__PURE__ */ jsx96(Badge, { variant: "secondary", className: "mb-4", children: badge }),
|
|
4543
|
+
/* @__PURE__ */ jsx96("h2", { className: "text-2xl sm:text-3xl md:text-4xl font-bold", children: heading }),
|
|
4544
|
+
body && /* @__PURE__ */ jsx96("p", { className: "text-muted-foreground text-lg mt-4", children: body }),
|
|
4545
|
+
content && /* @__PURE__ */ jsx96(
|
|
4732
4546
|
"div",
|
|
4733
4547
|
{
|
|
4734
4548
|
className: "richtext-content mt-4 text-muted-foreground",
|
|
4735
4549
|
dangerouslySetInnerHTML: { __html: content }
|
|
4736
4550
|
}
|
|
4737
4551
|
),
|
|
4738
|
-
bullets && bullets.length > 0 && /* @__PURE__ */
|
|
4739
|
-
/* @__PURE__ */
|
|
4740
|
-
/* @__PURE__ */
|
|
4552
|
+
bullets && bullets.length > 0 && /* @__PURE__ */ jsx96("ul", { className: "mt-4 space-y-2", children: bullets.map((bullet, i) => /* @__PURE__ */ jsxs68("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4553
|
+
/* @__PURE__ */ jsx96(Check4, { className: "h-4 w-4 text-green-500 shrink-0" }),
|
|
4554
|
+
/* @__PURE__ */ jsx96("span", { children: bullet })
|
|
4741
4555
|
] }, i)) }),
|
|
4742
|
-
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */
|
|
4743
|
-
primaryCTA?.label && /* @__PURE__ */
|
|
4744
|
-
secondaryCTA?.label && /* @__PURE__ */
|
|
4556
|
+
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */ jsxs68("div", { className: "flex flex-wrap gap-3 mt-6", children: [
|
|
4557
|
+
primaryCTA?.label && /* @__PURE__ */ jsx96(Button, { asChild: true, variant: primaryCTA.variant ?? "default", size: primaryCTA.size ?? "lg", children: /* @__PURE__ */ jsx96("a", { href: primaryCTA.href, children: primaryCTA.label }) }),
|
|
4558
|
+
secondaryCTA?.label && /* @__PURE__ */ jsx96(Button, { asChild: true, variant: secondaryCTA.variant ?? "outline", size: secondaryCTA.size ?? "lg", children: /* @__PURE__ */ jsx96("a", { href: secondaryCTA.href, children: secondaryCTA.label }) })
|
|
4745
4559
|
] })
|
|
4746
4560
|
] }),
|
|
4747
|
-
/* @__PURE__ */
|
|
4561
|
+
/* @__PURE__ */ jsx96("div", { children: videoUrl ? /* @__PURE__ */ jsx96(
|
|
4748
4562
|
"video",
|
|
4749
4563
|
{
|
|
4750
4564
|
src: videoUrl,
|
|
@@ -4754,14 +4568,14 @@ function DuplexImageRight({
|
|
|
4754
4568
|
loop: true,
|
|
4755
4569
|
playsInline: true
|
|
4756
4570
|
}
|
|
4757
|
-
) : image?.url ? /* @__PURE__ */
|
|
4571
|
+
) : image?.url ? /* @__PURE__ */ jsx96(
|
|
4758
4572
|
"img",
|
|
4759
4573
|
{
|
|
4760
4574
|
src: image.url,
|
|
4761
4575
|
alt: image.alt ?? heading,
|
|
4762
4576
|
className: "w-full rounded-2xl shadow-lg object-cover"
|
|
4763
4577
|
}
|
|
4764
|
-
) : /* @__PURE__ */
|
|
4578
|
+
) : /* @__PURE__ */ jsx96("div", { className: "w-full h-64 rounded-2xl bg-muted" }) })
|
|
4765
4579
|
] }) })
|
|
4766
4580
|
}
|
|
4767
4581
|
);
|
|
@@ -4769,7 +4583,7 @@ function DuplexImageRight({
|
|
|
4769
4583
|
|
|
4770
4584
|
// src/sections/duplex/variants/duplex-stacked.tsx
|
|
4771
4585
|
import { Check as Check5 } from "lucide-react";
|
|
4772
|
-
import { jsx as
|
|
4586
|
+
import { jsx as jsx97, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
4773
4587
|
function DuplexStacked({
|
|
4774
4588
|
badge,
|
|
4775
4589
|
heading,
|
|
@@ -4782,7 +4596,7 @@ function DuplexStacked({
|
|
|
4782
4596
|
bullets,
|
|
4783
4597
|
background
|
|
4784
4598
|
}) {
|
|
4785
|
-
return /* @__PURE__ */
|
|
4599
|
+
return /* @__PURE__ */ jsx97(
|
|
4786
4600
|
"section",
|
|
4787
4601
|
{
|
|
4788
4602
|
className: cn(
|
|
@@ -4795,28 +4609,28 @@ function DuplexStacked({
|
|
|
4795
4609
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4796
4610
|
background === "error" && "bg-error text-error-foreground"
|
|
4797
4611
|
),
|
|
4798
|
-
children: /* @__PURE__ */
|
|
4799
|
-
/* @__PURE__ */
|
|
4800
|
-
badge && /* @__PURE__ */
|
|
4801
|
-
/* @__PURE__ */
|
|
4802
|
-
body && /* @__PURE__ */
|
|
4803
|
-
content && /* @__PURE__ */
|
|
4612
|
+
children: /* @__PURE__ */ jsxs69("div", { className: "container mx-auto px-4", children: [
|
|
4613
|
+
/* @__PURE__ */ jsxs69("div", { className: "max-w-2xl mx-auto text-center mb-10", children: [
|
|
4614
|
+
badge && /* @__PURE__ */ jsx97(Badge, { variant: "secondary", className: "mb-4", children: badge }),
|
|
4615
|
+
/* @__PURE__ */ jsx97("h2", { className: "text-2xl sm:text-3xl md:text-4xl font-bold", children: heading }),
|
|
4616
|
+
body && /* @__PURE__ */ jsx97("p", { className: "text-muted-foreground text-lg mt-4", children: body }),
|
|
4617
|
+
content && /* @__PURE__ */ jsx97(
|
|
4804
4618
|
"div",
|
|
4805
4619
|
{
|
|
4806
4620
|
className: "richtext-content mt-4 text-muted-foreground",
|
|
4807
4621
|
dangerouslySetInnerHTML: { __html: content }
|
|
4808
4622
|
}
|
|
4809
4623
|
),
|
|
4810
|
-
bullets && bullets.length > 0 && /* @__PURE__ */
|
|
4811
|
-
/* @__PURE__ */
|
|
4812
|
-
/* @__PURE__ */
|
|
4624
|
+
bullets && bullets.length > 0 && /* @__PURE__ */ jsx97("ul", { className: "mt-4 space-y-2 text-left inline-block", children: bullets.map((bullet, i) => /* @__PURE__ */ jsxs69("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4625
|
+
/* @__PURE__ */ jsx97(Check5, { className: "h-4 w-4 text-green-500 shrink-0" }),
|
|
4626
|
+
/* @__PURE__ */ jsx97("span", { children: bullet })
|
|
4813
4627
|
] }, i)) }),
|
|
4814
|
-
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */
|
|
4815
|
-
primaryCTA?.label && /* @__PURE__ */
|
|
4816
|
-
secondaryCTA?.label && /* @__PURE__ */
|
|
4628
|
+
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */ jsxs69("div", { className: "flex flex-wrap justify-center gap-3 mt-6", children: [
|
|
4629
|
+
primaryCTA?.label && /* @__PURE__ */ jsx97(Button, { asChild: true, variant: primaryCTA.variant ?? "default", size: primaryCTA.size ?? "lg", children: /* @__PURE__ */ jsx97("a", { href: primaryCTA.href, children: primaryCTA.label }) }),
|
|
4630
|
+
secondaryCTA?.label && /* @__PURE__ */ jsx97(Button, { asChild: true, variant: secondaryCTA.variant ?? "outline", size: secondaryCTA.size ?? "lg", children: /* @__PURE__ */ jsx97("a", { href: secondaryCTA.href, children: secondaryCTA.label }) })
|
|
4817
4631
|
] })
|
|
4818
4632
|
] }),
|
|
4819
|
-
videoUrl ? /* @__PURE__ */
|
|
4633
|
+
videoUrl ? /* @__PURE__ */ jsx97(
|
|
4820
4634
|
"video",
|
|
4821
4635
|
{
|
|
4822
4636
|
src: videoUrl,
|
|
@@ -4826,7 +4640,7 @@ function DuplexStacked({
|
|
|
4826
4640
|
loop: true,
|
|
4827
4641
|
playsInline: true
|
|
4828
4642
|
}
|
|
4829
|
-
) : image?.url ? /* @__PURE__ */
|
|
4643
|
+
) : image?.url ? /* @__PURE__ */ jsx97(
|
|
4830
4644
|
"img",
|
|
4831
4645
|
{
|
|
4832
4646
|
src: image.url,
|
|
@@ -4840,23 +4654,23 @@ function DuplexStacked({
|
|
|
4840
4654
|
}
|
|
4841
4655
|
|
|
4842
4656
|
// src/sections/duplex/index.tsx
|
|
4843
|
-
import { jsx as
|
|
4657
|
+
import { jsx as jsx98 } from "react/jsx-runtime";
|
|
4844
4658
|
function Duplex(props) {
|
|
4845
4659
|
switch (props.variant) {
|
|
4846
4660
|
case "image-right":
|
|
4847
|
-
return /* @__PURE__ */
|
|
4661
|
+
return /* @__PURE__ */ jsx98(DuplexImageRight, { ...props });
|
|
4848
4662
|
case "stacked":
|
|
4849
|
-
return /* @__PURE__ */
|
|
4663
|
+
return /* @__PURE__ */ jsx98(DuplexStacked, { ...props });
|
|
4850
4664
|
case "image-left":
|
|
4851
4665
|
default:
|
|
4852
|
-
return /* @__PURE__ */
|
|
4666
|
+
return /* @__PURE__ */ jsx98(DuplexImageLeft, { ...props });
|
|
4853
4667
|
}
|
|
4854
4668
|
}
|
|
4855
4669
|
|
|
4856
4670
|
// src/sections/richtext/variants/richtext-centered.tsx
|
|
4857
|
-
import { jsx as
|
|
4671
|
+
import { jsx as jsx99, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
4858
4672
|
function RichtextCentered({ title, subtitle, badge, content, background }) {
|
|
4859
|
-
return /* @__PURE__ */
|
|
4673
|
+
return /* @__PURE__ */ jsx99(
|
|
4860
4674
|
"section",
|
|
4861
4675
|
{
|
|
4862
4676
|
className: cn(
|
|
@@ -4869,9 +4683,9 @@ function RichtextCentered({ title, subtitle, badge, content, background }) {
|
|
|
4869
4683
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4870
4684
|
background === "error" && "bg-error text-error-foreground"
|
|
4871
4685
|
),
|
|
4872
|
-
children: /* @__PURE__ */
|
|
4873
|
-
/* @__PURE__ */
|
|
4874
|
-
/* @__PURE__ */
|
|
4686
|
+
children: /* @__PURE__ */ jsxs70("div", { className: "container mx-auto px-4", children: [
|
|
4687
|
+
/* @__PURE__ */ jsx99(SectionHeader, { title, subtitle, badge, background }),
|
|
4688
|
+
/* @__PURE__ */ jsx99(
|
|
4875
4689
|
"div",
|
|
4876
4690
|
{
|
|
4877
4691
|
className: "richtext-content mx-auto max-w-2xl",
|
|
@@ -4884,9 +4698,9 @@ function RichtextCentered({ title, subtitle, badge, content, background }) {
|
|
|
4884
4698
|
}
|
|
4885
4699
|
|
|
4886
4700
|
// src/sections/richtext/variants/richtext-wide.tsx
|
|
4887
|
-
import { jsx as
|
|
4701
|
+
import { jsx as jsx100, jsxs as jsxs71 } from "react/jsx-runtime";
|
|
4888
4702
|
function RichtextWide({ title, subtitle, badge, content, background }) {
|
|
4889
|
-
return /* @__PURE__ */
|
|
4703
|
+
return /* @__PURE__ */ jsx100(
|
|
4890
4704
|
"section",
|
|
4891
4705
|
{
|
|
4892
4706
|
className: cn(
|
|
@@ -4899,9 +4713,9 @@ function RichtextWide({ title, subtitle, badge, content, background }) {
|
|
|
4899
4713
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4900
4714
|
background === "error" && "bg-error text-error-foreground"
|
|
4901
4715
|
),
|
|
4902
|
-
children: /* @__PURE__ */
|
|
4903
|
-
/* @__PURE__ */
|
|
4904
|
-
/* @__PURE__ */
|
|
4716
|
+
children: /* @__PURE__ */ jsxs71("div", { className: "container mx-auto px-4", children: [
|
|
4717
|
+
/* @__PURE__ */ jsx100(SectionHeader, { title, subtitle, badge, background }),
|
|
4718
|
+
/* @__PURE__ */ jsx100(
|
|
4905
4719
|
"div",
|
|
4906
4720
|
{
|
|
4907
4721
|
className: "richtext-content mx-auto max-w-4xl",
|
|
@@ -4914,9 +4728,9 @@ function RichtextWide({ title, subtitle, badge, content, background }) {
|
|
|
4914
4728
|
}
|
|
4915
4729
|
|
|
4916
4730
|
// src/sections/richtext/variants/richtext-two-column.tsx
|
|
4917
|
-
import { jsx as
|
|
4731
|
+
import { jsx as jsx101, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
4918
4732
|
function RichtextTwoColumn({ title, subtitle, badge, content, background }) {
|
|
4919
|
-
return /* @__PURE__ */
|
|
4733
|
+
return /* @__PURE__ */ jsx101(
|
|
4920
4734
|
"section",
|
|
4921
4735
|
{
|
|
4922
4736
|
className: cn(
|
|
@@ -4929,9 +4743,9 @@ function RichtextTwoColumn({ title, subtitle, badge, content, background }) {
|
|
|
4929
4743
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4930
4744
|
background === "error" && "bg-error text-error-foreground"
|
|
4931
4745
|
),
|
|
4932
|
-
children: /* @__PURE__ */
|
|
4933
|
-
/* @__PURE__ */
|
|
4934
|
-
/* @__PURE__ */
|
|
4746
|
+
children: /* @__PURE__ */ jsxs72("div", { className: "container mx-auto px-4", children: [
|
|
4747
|
+
/* @__PURE__ */ jsx101(SectionHeader, { title, subtitle, badge, background }),
|
|
4748
|
+
/* @__PURE__ */ jsx101(
|
|
4935
4749
|
"div",
|
|
4936
4750
|
{
|
|
4937
4751
|
className: "richtext-content [column-count:1] lg:[column-count:2] gap-8 [&>*]:break-inside-avoid",
|
|
@@ -4944,28 +4758,28 @@ function RichtextTwoColumn({ title, subtitle, badge, content, background }) {
|
|
|
4944
4758
|
}
|
|
4945
4759
|
|
|
4946
4760
|
// src/sections/richtext/index.tsx
|
|
4947
|
-
import { jsx as
|
|
4761
|
+
import { jsx as jsx102 } from "react/jsx-runtime";
|
|
4948
4762
|
function Richtext(props) {
|
|
4949
4763
|
switch (props.variant) {
|
|
4950
4764
|
case "wide":
|
|
4951
|
-
return /* @__PURE__ */
|
|
4765
|
+
return /* @__PURE__ */ jsx102(RichtextWide, { ...props });
|
|
4952
4766
|
case "two-column":
|
|
4953
|
-
return /* @__PURE__ */
|
|
4767
|
+
return /* @__PURE__ */ jsx102(RichtextTwoColumn, { ...props });
|
|
4954
4768
|
case "centered":
|
|
4955
4769
|
default:
|
|
4956
|
-
return /* @__PURE__ */
|
|
4770
|
+
return /* @__PURE__ */ jsx102(RichtextCentered, { ...props });
|
|
4957
4771
|
}
|
|
4958
4772
|
}
|
|
4959
4773
|
|
|
4960
4774
|
// src/sections/video/video-player.tsx
|
|
4961
|
-
import { jsx as
|
|
4775
|
+
import { jsx as jsx103 } from "react/jsx-runtime";
|
|
4962
4776
|
function VideoPlayer({ url, poster, autoplay, loop, muted, className, title }) {
|
|
4963
4777
|
const parsed = parseVideoUrl(url);
|
|
4964
4778
|
if (!parsed) {
|
|
4965
|
-
return /* @__PURE__ */
|
|
4779
|
+
return /* @__PURE__ */ jsx103("div", { className: `bg-muted flex items-center justify-center rounded-xl ${className ?? ""}`, children: /* @__PURE__ */ jsx103("p", { className: "text-muted-foreground text-sm", children: "URL de video no v\xE1lida" }) });
|
|
4966
4780
|
}
|
|
4967
4781
|
if (parsed.type === "native") {
|
|
4968
|
-
return /* @__PURE__ */
|
|
4782
|
+
return /* @__PURE__ */ jsx103(
|
|
4969
4783
|
"video",
|
|
4970
4784
|
{
|
|
4971
4785
|
src: parsed.embedUrl,
|
|
@@ -4980,7 +4794,7 @@ function VideoPlayer({ url, poster, autoplay, loop, muted, className, title }) {
|
|
|
4980
4794
|
);
|
|
4981
4795
|
}
|
|
4982
4796
|
const src = autoplay ? `${parsed.embedUrl}&autoplay=1&mute=1` : parsed.embedUrl;
|
|
4983
|
-
return /* @__PURE__ */
|
|
4797
|
+
return /* @__PURE__ */ jsx103(
|
|
4984
4798
|
"iframe",
|
|
4985
4799
|
{
|
|
4986
4800
|
src,
|
|
@@ -4993,9 +4807,9 @@ function VideoPlayer({ url, poster, autoplay, loop, muted, className, title }) {
|
|
|
4993
4807
|
}
|
|
4994
4808
|
|
|
4995
4809
|
// src/sections/video/variants/video-full.tsx
|
|
4996
|
-
import { jsx as
|
|
4810
|
+
import { jsx as jsx104, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
4997
4811
|
function VideoFull({ title, subtitle, content, badge, videoUrl, poster, autoplay, loop, muted, background }) {
|
|
4998
|
-
return /* @__PURE__ */
|
|
4812
|
+
return /* @__PURE__ */ jsx104(
|
|
4999
4813
|
"section",
|
|
5000
4814
|
{
|
|
5001
4815
|
className: cn(
|
|
@@ -5008,9 +4822,9 @@ function VideoFull({ title, subtitle, content, badge, videoUrl, poster, autoplay
|
|
|
5008
4822
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5009
4823
|
background === "error" && "bg-error text-error-foreground"
|
|
5010
4824
|
),
|
|
5011
|
-
children: /* @__PURE__ */
|
|
5012
|
-
/* @__PURE__ */
|
|
5013
|
-
/* @__PURE__ */
|
|
4825
|
+
children: /* @__PURE__ */ jsxs73("div", { className: "container mx-auto px-4", children: [
|
|
4826
|
+
/* @__PURE__ */ jsx104(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4827
|
+
/* @__PURE__ */ jsx104("div", { className: "aspect-video w-full overflow-hidden rounded-xl shadow-lg", children: /* @__PURE__ */ jsx104(
|
|
5014
4828
|
VideoPlayer,
|
|
5015
4829
|
{
|
|
5016
4830
|
url: videoUrl,
|
|
@@ -5028,9 +4842,9 @@ function VideoFull({ title, subtitle, content, badge, videoUrl, poster, autoplay
|
|
|
5028
4842
|
}
|
|
5029
4843
|
|
|
5030
4844
|
// src/sections/video/variants/video-contained.tsx
|
|
5031
|
-
import { jsx as
|
|
4845
|
+
import { jsx as jsx105, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
5032
4846
|
function VideoContained({ title, subtitle, content, badge, videoUrl, poster, autoplay, loop, muted, background }) {
|
|
5033
|
-
return /* @__PURE__ */
|
|
4847
|
+
return /* @__PURE__ */ jsx105(
|
|
5034
4848
|
"section",
|
|
5035
4849
|
{
|
|
5036
4850
|
className: cn(
|
|
@@ -5043,9 +4857,9 @@ function VideoContained({ title, subtitle, content, badge, videoUrl, poster, aut
|
|
|
5043
4857
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5044
4858
|
background === "error" && "bg-error text-error-foreground"
|
|
5045
4859
|
),
|
|
5046
|
-
children: /* @__PURE__ */
|
|
5047
|
-
/* @__PURE__ */
|
|
5048
|
-
/* @__PURE__ */
|
|
4860
|
+
children: /* @__PURE__ */ jsxs74("div", { className: "container mx-auto px-4", children: [
|
|
4861
|
+
/* @__PURE__ */ jsx105(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4862
|
+
/* @__PURE__ */ jsx105("div", { className: "max-w-4xl mx-auto", children: /* @__PURE__ */ jsx105("div", { className: "aspect-video w-full overflow-hidden rounded-xl shadow-lg", children: /* @__PURE__ */ jsx105(
|
|
5049
4863
|
VideoPlayer,
|
|
5050
4864
|
{
|
|
5051
4865
|
url: videoUrl,
|
|
@@ -5063,9 +4877,9 @@ function VideoContained({ title, subtitle, content, badge, videoUrl, poster, aut
|
|
|
5063
4877
|
}
|
|
5064
4878
|
|
|
5065
4879
|
// src/sections/video/variants/video-with-text.tsx
|
|
5066
|
-
import { jsx as
|
|
4880
|
+
import { jsx as jsx106, jsxs as jsxs75 } from "react/jsx-runtime";
|
|
5067
4881
|
function VideoWithText({ title, subtitle, content, badge, videoUrl, poster, autoplay, loop, muted, background }) {
|
|
5068
|
-
return /* @__PURE__ */
|
|
4882
|
+
return /* @__PURE__ */ jsx106(
|
|
5069
4883
|
"section",
|
|
5070
4884
|
{
|
|
5071
4885
|
className: cn(
|
|
@@ -5078,8 +4892,8 @@ function VideoWithText({ title, subtitle, content, badge, videoUrl, poster, auto
|
|
|
5078
4892
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5079
4893
|
background === "error" && "bg-error text-error-foreground"
|
|
5080
4894
|
),
|
|
5081
|
-
children: /* @__PURE__ */
|
|
5082
|
-
/* @__PURE__ */
|
|
4895
|
+
children: /* @__PURE__ */ jsx106("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxs75("div", { className: "grid gap-12 items-center lg:grid-cols-2", children: [
|
|
4896
|
+
/* @__PURE__ */ jsx106("div", { className: "aspect-video overflow-hidden rounded-xl shadow-lg", children: /* @__PURE__ */ jsx106(
|
|
5083
4897
|
VideoPlayer,
|
|
5084
4898
|
{
|
|
5085
4899
|
url: videoUrl,
|
|
@@ -5091,30 +4905,30 @@ function VideoWithText({ title, subtitle, content, badge, videoUrl, poster, auto
|
|
|
5091
4905
|
className: "h-full w-full"
|
|
5092
4906
|
}
|
|
5093
4907
|
) }),
|
|
5094
|
-
/* @__PURE__ */
|
|
4908
|
+
/* @__PURE__ */ jsx106("div", { children: /* @__PURE__ */ jsx106(SectionHeader, { title, subtitle, badge, content, background, align: "left", className: "mb-0" }) })
|
|
5095
4909
|
] }) })
|
|
5096
4910
|
}
|
|
5097
4911
|
);
|
|
5098
4912
|
}
|
|
5099
4913
|
|
|
5100
4914
|
// src/sections/video/index.tsx
|
|
5101
|
-
import { jsx as
|
|
4915
|
+
import { jsx as jsx107 } from "react/jsx-runtime";
|
|
5102
4916
|
function VideoSection(props) {
|
|
5103
4917
|
switch (props.variant) {
|
|
5104
4918
|
case "contained":
|
|
5105
|
-
return /* @__PURE__ */
|
|
4919
|
+
return /* @__PURE__ */ jsx107(VideoContained, { ...props });
|
|
5106
4920
|
case "with-text":
|
|
5107
|
-
return /* @__PURE__ */
|
|
4921
|
+
return /* @__PURE__ */ jsx107(VideoWithText, { ...props });
|
|
5108
4922
|
case "full":
|
|
5109
4923
|
default:
|
|
5110
|
-
return /* @__PURE__ */
|
|
4924
|
+
return /* @__PURE__ */ jsx107(VideoFull, { ...props });
|
|
5111
4925
|
}
|
|
5112
4926
|
}
|
|
5113
4927
|
|
|
5114
4928
|
// src/sections/newsletter/newsletter-form.tsx
|
|
5115
|
-
import { useState as
|
|
4929
|
+
import { useState as useState14 } from "react";
|
|
5116
4930
|
import { CheckCircle, Loader2, Mail as Mail3 } from "lucide-react";
|
|
5117
|
-
import { Fragment, jsx as
|
|
4931
|
+
import { Fragment, jsx as jsx108, jsxs as jsxs76 } from "react/jsx-runtime";
|
|
5118
4932
|
var inputBase = "flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50";
|
|
5119
4933
|
function NewsletterForm({
|
|
5120
4934
|
buttonLabel = "Suscribirme",
|
|
@@ -5123,9 +4937,9 @@ function NewsletterForm({
|
|
|
5123
4937
|
layout = "stacked",
|
|
5124
4938
|
className
|
|
5125
4939
|
}) {
|
|
5126
|
-
const [email, setEmail] =
|
|
5127
|
-
const [status, setStatus] =
|
|
5128
|
-
const [errorMsg, setErrorMsg] =
|
|
4940
|
+
const [email, setEmail] = useState14("");
|
|
4941
|
+
const [status, setStatus] = useState14("idle");
|
|
4942
|
+
const [errorMsg, setErrorMsg] = useState14("");
|
|
5129
4943
|
const handleSubmit = async (e) => {
|
|
5130
4944
|
e.preventDefault();
|
|
5131
4945
|
setStatus("loading");
|
|
@@ -5148,12 +4962,12 @@ function NewsletterForm({
|
|
|
5148
4962
|
}
|
|
5149
4963
|
};
|
|
5150
4964
|
if (status === "success") {
|
|
5151
|
-
return /* @__PURE__ */
|
|
5152
|
-
/* @__PURE__ */
|
|
5153
|
-
/* @__PURE__ */
|
|
4965
|
+
return /* @__PURE__ */ jsxs76("div", { className: cn("flex items-center justify-center gap-3 py-2", className), children: [
|
|
4966
|
+
/* @__PURE__ */ jsx108(CheckCircle, { className: "h-5 w-5 shrink-0 text-green-500" }),
|
|
4967
|
+
/* @__PURE__ */ jsx108("p", { className: "text-sm font-medium", children: successMessage })
|
|
5154
4968
|
] });
|
|
5155
4969
|
}
|
|
5156
|
-
return /* @__PURE__ */
|
|
4970
|
+
return /* @__PURE__ */ jsxs76(
|
|
5157
4971
|
"form",
|
|
5158
4972
|
{
|
|
5159
4973
|
onSubmit: handleSubmit,
|
|
@@ -5162,9 +4976,9 @@ function NewsletterForm({
|
|
|
5162
4976
|
className
|
|
5163
4977
|
),
|
|
5164
4978
|
children: [
|
|
5165
|
-
/* @__PURE__ */
|
|
5166
|
-
/* @__PURE__ */
|
|
5167
|
-
/* @__PURE__ */
|
|
4979
|
+
/* @__PURE__ */ jsxs76("div", { className: cn("relative", layout === "inline" && "sm:flex-1"), children: [
|
|
4980
|
+
/* @__PURE__ */ jsx108(Mail3, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
4981
|
+
/* @__PURE__ */ jsx108(
|
|
5168
4982
|
"input",
|
|
5169
4983
|
{
|
|
5170
4984
|
type: "email",
|
|
@@ -5176,18 +4990,18 @@ function NewsletterForm({
|
|
|
5176
4990
|
}
|
|
5177
4991
|
)
|
|
5178
4992
|
] }),
|
|
5179
|
-
/* @__PURE__ */
|
|
5180
|
-
/* @__PURE__ */
|
|
4993
|
+
/* @__PURE__ */ jsx108(Button, { type: "submit", disabled: status === "loading", className: cn(layout === "inline" && "shrink-0"), children: status === "loading" ? /* @__PURE__ */ jsxs76(Fragment, { children: [
|
|
4994
|
+
/* @__PURE__ */ jsx108(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
5181
4995
|
"Enviando..."
|
|
5182
4996
|
] }) : buttonLabel }),
|
|
5183
|
-
status === "error" && /* @__PURE__ */
|
|
4997
|
+
status === "error" && /* @__PURE__ */ jsx108("p", { className: "text-sm text-destructive", children: errorMsg })
|
|
5184
4998
|
]
|
|
5185
4999
|
}
|
|
5186
5000
|
);
|
|
5187
5001
|
}
|
|
5188
5002
|
|
|
5189
5003
|
// src/sections/newsletter/variants/newsletter-centered.tsx
|
|
5190
|
-
import { jsx as
|
|
5004
|
+
import { jsx as jsx109, jsxs as jsxs77 } from "react/jsx-runtime";
|
|
5191
5005
|
function NewsletterCentered({
|
|
5192
5006
|
title,
|
|
5193
5007
|
subtitle,
|
|
@@ -5198,7 +5012,7 @@ function NewsletterCentered({
|
|
|
5198
5012
|
placeholder,
|
|
5199
5013
|
successMessage
|
|
5200
5014
|
}) {
|
|
5201
|
-
return /* @__PURE__ */
|
|
5015
|
+
return /* @__PURE__ */ jsx109(
|
|
5202
5016
|
"section",
|
|
5203
5017
|
{
|
|
5204
5018
|
className: cn(
|
|
@@ -5211,9 +5025,9 @@ function NewsletterCentered({
|
|
|
5211
5025
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5212
5026
|
background === "error" && "bg-error text-error-foreground"
|
|
5213
5027
|
),
|
|
5214
|
-
children: /* @__PURE__ */
|
|
5215
|
-
/* @__PURE__ */
|
|
5216
|
-
/* @__PURE__ */
|
|
5028
|
+
children: /* @__PURE__ */ jsxs77("div", { className: "container mx-auto px-4 text-center", children: [
|
|
5029
|
+
/* @__PURE__ */ jsx109(SectionHeader, { title, subtitle, badge, content, background }),
|
|
5030
|
+
/* @__PURE__ */ jsx109(
|
|
5217
5031
|
NewsletterForm,
|
|
5218
5032
|
{
|
|
5219
5033
|
buttonLabel,
|
|
@@ -5229,7 +5043,7 @@ function NewsletterCentered({
|
|
|
5229
5043
|
}
|
|
5230
5044
|
|
|
5231
5045
|
// src/sections/newsletter/variants/newsletter-card.tsx
|
|
5232
|
-
import { jsx as
|
|
5046
|
+
import { jsx as jsx110, jsxs as jsxs78 } from "react/jsx-runtime";
|
|
5233
5047
|
function NewsletterCard({
|
|
5234
5048
|
title,
|
|
5235
5049
|
subtitle,
|
|
@@ -5240,7 +5054,7 @@ function NewsletterCard({
|
|
|
5240
5054
|
placeholder,
|
|
5241
5055
|
successMessage
|
|
5242
5056
|
}) {
|
|
5243
|
-
return /* @__PURE__ */
|
|
5057
|
+
return /* @__PURE__ */ jsx110(
|
|
5244
5058
|
"section",
|
|
5245
5059
|
{
|
|
5246
5060
|
className: cn(
|
|
@@ -5253,9 +5067,9 @@ function NewsletterCard({
|
|
|
5253
5067
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5254
5068
|
background === "error" && "bg-error text-error-foreground"
|
|
5255
5069
|
),
|
|
5256
|
-
children: /* @__PURE__ */
|
|
5257
|
-
/* @__PURE__ */
|
|
5258
|
-
/* @__PURE__ */
|
|
5070
|
+
children: /* @__PURE__ */ jsx110("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxs78("div", { className: "mx-auto max-w-lg rounded-2xl border bg-card p-8 shadow-sm text-center", children: [
|
|
5071
|
+
/* @__PURE__ */ jsx110(SectionHeader, { title, subtitle, badge, content, background }),
|
|
5072
|
+
/* @__PURE__ */ jsx110(
|
|
5259
5073
|
NewsletterForm,
|
|
5260
5074
|
{
|
|
5261
5075
|
buttonLabel,
|
|
@@ -5270,7 +5084,7 @@ function NewsletterCard({
|
|
|
5270
5084
|
}
|
|
5271
5085
|
|
|
5272
5086
|
// src/sections/newsletter/variants/newsletter-inline.tsx
|
|
5273
|
-
import { jsx as
|
|
5087
|
+
import { jsx as jsx111, jsxs as jsxs79 } from "react/jsx-runtime";
|
|
5274
5088
|
function NewsletterInline({
|
|
5275
5089
|
title,
|
|
5276
5090
|
subtitle,
|
|
@@ -5281,7 +5095,7 @@ function NewsletterInline({
|
|
|
5281
5095
|
placeholder,
|
|
5282
5096
|
successMessage
|
|
5283
5097
|
}) {
|
|
5284
|
-
return /* @__PURE__ */
|
|
5098
|
+
return /* @__PURE__ */ jsx111(
|
|
5285
5099
|
"section",
|
|
5286
5100
|
{
|
|
5287
5101
|
className: cn(
|
|
@@ -5294,12 +5108,12 @@ function NewsletterInline({
|
|
|
5294
5108
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5295
5109
|
background === "error" && "bg-error text-error-foreground"
|
|
5296
5110
|
),
|
|
5297
|
-
children: /* @__PURE__ */
|
|
5298
|
-
/* @__PURE__ */
|
|
5299
|
-
badge && /* @__PURE__ */
|
|
5300
|
-
title && /* @__PURE__ */
|
|
5301
|
-
subtitle && /* @__PURE__ */
|
|
5302
|
-
content && /* @__PURE__ */
|
|
5111
|
+
children: /* @__PURE__ */ jsxs79("div", { className: "container mx-auto flex flex-col gap-6 px-4 lg:flex-row lg:items-center lg:justify-between max-w-4xl", children: [
|
|
5112
|
+
/* @__PURE__ */ jsxs79("div", { className: "flex flex-col gap-2", children: [
|
|
5113
|
+
badge && /* @__PURE__ */ jsx111(Badge, { variant: "outline", className: "w-fit", children: badge }),
|
|
5114
|
+
title && /* @__PURE__ */ jsx111("h2", { className: "text-2xl font-bold tracking-tight", children: title }),
|
|
5115
|
+
subtitle && /* @__PURE__ */ jsx111("p", { className: "text-muted-foreground", children: subtitle }),
|
|
5116
|
+
content && /* @__PURE__ */ jsx111(
|
|
5303
5117
|
"div",
|
|
5304
5118
|
{
|
|
5305
5119
|
className: "richtext-content mt-1",
|
|
@@ -5307,7 +5121,7 @@ function NewsletterInline({
|
|
|
5307
5121
|
}
|
|
5308
5122
|
)
|
|
5309
5123
|
] }),
|
|
5310
|
-
/* @__PURE__ */
|
|
5124
|
+
/* @__PURE__ */ jsx111(
|
|
5311
5125
|
NewsletterForm,
|
|
5312
5126
|
{
|
|
5313
5127
|
buttonLabel,
|
|
@@ -5323,16 +5137,16 @@ function NewsletterInline({
|
|
|
5323
5137
|
}
|
|
5324
5138
|
|
|
5325
5139
|
// src/sections/newsletter/newsletter-section.tsx
|
|
5326
|
-
import { jsx as
|
|
5140
|
+
import { jsx as jsx112 } from "react/jsx-runtime";
|
|
5327
5141
|
function Newsletter(props) {
|
|
5328
5142
|
switch (props.variant) {
|
|
5329
5143
|
case "card":
|
|
5330
|
-
return /* @__PURE__ */
|
|
5144
|
+
return /* @__PURE__ */ jsx112(NewsletterCard, { ...props });
|
|
5331
5145
|
case "inline":
|
|
5332
|
-
return /* @__PURE__ */
|
|
5146
|
+
return /* @__PURE__ */ jsx112(NewsletterInline, { ...props });
|
|
5333
5147
|
case "centered":
|
|
5334
5148
|
default:
|
|
5335
|
-
return /* @__PURE__ */
|
|
5149
|
+
return /* @__PURE__ */ jsx112(NewsletterCentered, { ...props });
|
|
5336
5150
|
}
|
|
5337
5151
|
}
|
|
5338
5152
|
|
|
@@ -5360,7 +5174,7 @@ function fileMeta(mimeType) {
|
|
|
5360
5174
|
}
|
|
5361
5175
|
|
|
5362
5176
|
// src/sections/downloads/variants/file-row.tsx
|
|
5363
|
-
import { jsx as
|
|
5177
|
+
import { jsx as jsx113, jsxs as jsxs80 } from "react/jsx-runtime";
|
|
5364
5178
|
var iconMap = {
|
|
5365
5179
|
"file-text": FileText,
|
|
5366
5180
|
"file-image": FileImage,
|
|
@@ -5372,21 +5186,21 @@ function FileRow({ item }) {
|
|
|
5372
5186
|
const IconComp = iconMap[icon];
|
|
5373
5187
|
const size = formatBytes(item.file.size);
|
|
5374
5188
|
const href = buildDownloadUrl(item.file);
|
|
5375
|
-
return /* @__PURE__ */
|
|
5376
|
-
/* @__PURE__ */
|
|
5377
|
-
/* @__PURE__ */
|
|
5378
|
-
/* @__PURE__ */
|
|
5379
|
-
size && /* @__PURE__ */
|
|
5189
|
+
return /* @__PURE__ */ jsxs80("div", { className: "flex items-center gap-3 py-3 border-b last:border-0", children: [
|
|
5190
|
+
/* @__PURE__ */ jsx113("div", { className: ["flex-shrink-0", color].join(" "), children: /* @__PURE__ */ jsx113(IconComp, { className: "h-5 w-5" }) }),
|
|
5191
|
+
/* @__PURE__ */ jsxs80("div", { className: "flex-1 min-w-0", children: [
|
|
5192
|
+
/* @__PURE__ */ jsx113("p", { className: "text-sm font-medium truncate", children: item.label }),
|
|
5193
|
+
size && /* @__PURE__ */ jsx113("p", { className: "text-xs text-muted-foreground mt-0.5", children: size })
|
|
5380
5194
|
] }),
|
|
5381
|
-
/* @__PURE__ */
|
|
5382
|
-
/* @__PURE__ */
|
|
5383
|
-
/* @__PURE__ */
|
|
5195
|
+
/* @__PURE__ */ jsx113(Button, { asChild: true, size: "sm", variant: "outline", className: "shrink-0 gap-1.5", children: /* @__PURE__ */ jsxs80("a", { href, download: true, target: "_blank", rel: "noopener noreferrer", children: [
|
|
5196
|
+
/* @__PURE__ */ jsx113(Download, { className: "h-3.5 w-3.5" }),
|
|
5197
|
+
/* @__PURE__ */ jsx113("span", { className: "hidden sm:inline", children: "Descargar" })
|
|
5384
5198
|
] }) })
|
|
5385
5199
|
] });
|
|
5386
5200
|
}
|
|
5387
5201
|
|
|
5388
5202
|
// src/sections/downloads/variants/downloads-grouped.tsx
|
|
5389
|
-
import { jsx as
|
|
5203
|
+
import { jsx as jsx114, jsxs as jsxs81 } from "react/jsx-runtime";
|
|
5390
5204
|
function DownloadsGrouped({
|
|
5391
5205
|
title,
|
|
5392
5206
|
subtitle,
|
|
@@ -5395,7 +5209,7 @@ function DownloadsGrouped({
|
|
|
5395
5209
|
background,
|
|
5396
5210
|
groups
|
|
5397
5211
|
}) {
|
|
5398
|
-
return /* @__PURE__ */
|
|
5212
|
+
return /* @__PURE__ */ jsx114(
|
|
5399
5213
|
"section",
|
|
5400
5214
|
{
|
|
5401
5215
|
className: cn(
|
|
@@ -5408,8 +5222,8 @@ function DownloadsGrouped({
|
|
|
5408
5222
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5409
5223
|
background === "error" && "bg-error text-error-foreground"
|
|
5410
5224
|
),
|
|
5411
|
-
children: /* @__PURE__ */
|
|
5412
|
-
/* @__PURE__ */
|
|
5225
|
+
children: /* @__PURE__ */ jsxs81("div", { className: "container mx-auto px-4", children: [
|
|
5226
|
+
/* @__PURE__ */ jsx114(
|
|
5413
5227
|
SectionHeader,
|
|
5414
5228
|
{
|
|
5415
5229
|
title,
|
|
@@ -5419,15 +5233,15 @@ function DownloadsGrouped({
|
|
|
5419
5233
|
background
|
|
5420
5234
|
}
|
|
5421
5235
|
),
|
|
5422
|
-
groups.length > 0 && /* @__PURE__ */
|
|
5236
|
+
groups.length > 0 && /* @__PURE__ */ jsx114("div", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-3", children: groups.map((group) => /* @__PURE__ */ jsxs81(
|
|
5423
5237
|
"div",
|
|
5424
5238
|
{
|
|
5425
5239
|
className: "rounded-xl border bg-card p-6 shadow-sm",
|
|
5426
5240
|
children: [
|
|
5427
|
-
/* @__PURE__ */
|
|
5428
|
-
/* @__PURE__ */
|
|
5429
|
-
group.files.map((file) => /* @__PURE__ */
|
|
5430
|
-
group.files.length === 0 && /* @__PURE__ */
|
|
5241
|
+
/* @__PURE__ */ jsx114("h3", { className: "text-base font-semibold mb-4", children: group.title }),
|
|
5242
|
+
/* @__PURE__ */ jsxs81("div", { children: [
|
|
5243
|
+
group.files.map((file) => /* @__PURE__ */ jsx114(FileRow, { item: file }, file._key)),
|
|
5244
|
+
group.files.length === 0 && /* @__PURE__ */ jsx114("p", { className: "text-sm text-muted-foreground", children: "Sin archivos." })
|
|
5431
5245
|
] })
|
|
5432
5246
|
]
|
|
5433
5247
|
},
|
|
@@ -5440,7 +5254,7 @@ function DownloadsGrouped({
|
|
|
5440
5254
|
|
|
5441
5255
|
// src/sections/downloads/variants/downloads-accordion.tsx
|
|
5442
5256
|
import { FolderOpen } from "lucide-react";
|
|
5443
|
-
import { jsx as
|
|
5257
|
+
import { jsx as jsx115, jsxs as jsxs82 } from "react/jsx-runtime";
|
|
5444
5258
|
function DownloadsAccordion({
|
|
5445
5259
|
title,
|
|
5446
5260
|
subtitle,
|
|
@@ -5449,7 +5263,7 @@ function DownloadsAccordion({
|
|
|
5449
5263
|
background,
|
|
5450
5264
|
groups
|
|
5451
5265
|
}) {
|
|
5452
|
-
return /* @__PURE__ */
|
|
5266
|
+
return /* @__PURE__ */ jsx115(
|
|
5453
5267
|
"section",
|
|
5454
5268
|
{
|
|
5455
5269
|
className: cn(
|
|
@@ -5462,8 +5276,8 @@ function DownloadsAccordion({
|
|
|
5462
5276
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5463
5277
|
background === "error" && "bg-error text-error-foreground"
|
|
5464
5278
|
),
|
|
5465
|
-
children: /* @__PURE__ */
|
|
5466
|
-
/* @__PURE__ */
|
|
5279
|
+
children: /* @__PURE__ */ jsxs82("div", { className: "container mx-auto px-4", children: [
|
|
5280
|
+
/* @__PURE__ */ jsx115(
|
|
5467
5281
|
SectionHeader,
|
|
5468
5282
|
{
|
|
5469
5283
|
title,
|
|
@@ -5473,16 +5287,16 @@ function DownloadsAccordion({
|
|
|
5473
5287
|
background
|
|
5474
5288
|
}
|
|
5475
5289
|
),
|
|
5476
|
-
groups.length > 0 && /* @__PURE__ */
|
|
5290
|
+
groups.length > 0 && /* @__PURE__ */ jsx115("div", { className: "mx-auto max-w-3xl", children: /* @__PURE__ */ jsx115(Accordion, { type: "multiple", className: "space-y-3", children: groups.map((group) => /* @__PURE__ */ jsxs82(
|
|
5477
5291
|
AccordionItem,
|
|
5478
5292
|
{
|
|
5479
5293
|
value: group._key,
|
|
5480
5294
|
className: "rounded-xl border bg-card px-6 shadow-sm",
|
|
5481
5295
|
children: [
|
|
5482
|
-
/* @__PURE__ */
|
|
5483
|
-
/* @__PURE__ */
|
|
5484
|
-
/* @__PURE__ */
|
|
5485
|
-
/* @__PURE__ */
|
|
5296
|
+
/* @__PURE__ */ jsx115(AccordionTrigger, { className: "text-base font-semibold gap-3 hover:no-underline", children: /* @__PURE__ */ jsxs82("div", { className: "flex items-center gap-2", children: [
|
|
5297
|
+
/* @__PURE__ */ jsx115(FolderOpen, { className: "h-4 w-4 text-muted-foreground shrink-0" }),
|
|
5298
|
+
/* @__PURE__ */ jsx115("span", { children: group.title }),
|
|
5299
|
+
/* @__PURE__ */ jsxs82("span", { className: "ml-1 text-xs font-normal text-muted-foreground", children: [
|
|
5486
5300
|
"(",
|
|
5487
5301
|
group.files.length,
|
|
5488
5302
|
" ",
|
|
@@ -5490,9 +5304,9 @@ function DownloadsAccordion({
|
|
|
5490
5304
|
")"
|
|
5491
5305
|
] })
|
|
5492
5306
|
] }) }),
|
|
5493
|
-
/* @__PURE__ */
|
|
5494
|
-
group.files.map((file) => /* @__PURE__ */
|
|
5495
|
-
group.files.length === 0 && /* @__PURE__ */
|
|
5307
|
+
/* @__PURE__ */ jsxs82(AccordionContent, { className: "pb-2", children: [
|
|
5308
|
+
group.files.map((file) => /* @__PURE__ */ jsx115(FileRow, { item: file }, file._key)),
|
|
5309
|
+
group.files.length === 0 && /* @__PURE__ */ jsx115("p", { className: "text-sm text-muted-foreground py-2", children: "Sin archivos." })
|
|
5496
5310
|
] })
|
|
5497
5311
|
]
|
|
5498
5312
|
},
|
|
@@ -5504,7 +5318,7 @@ function DownloadsAccordion({
|
|
|
5504
5318
|
}
|
|
5505
5319
|
|
|
5506
5320
|
// src/sections/downloads/variants/downloads-flat.tsx
|
|
5507
|
-
import { jsx as
|
|
5321
|
+
import { jsx as jsx116, jsxs as jsxs83 } from "react/jsx-runtime";
|
|
5508
5322
|
function DownloadsFlat({
|
|
5509
5323
|
title,
|
|
5510
5324
|
subtitle,
|
|
@@ -5513,7 +5327,7 @@ function DownloadsFlat({
|
|
|
5513
5327
|
background,
|
|
5514
5328
|
groups
|
|
5515
5329
|
}) {
|
|
5516
|
-
return /* @__PURE__ */
|
|
5330
|
+
return /* @__PURE__ */ jsx116(
|
|
5517
5331
|
"section",
|
|
5518
5332
|
{
|
|
5519
5333
|
className: cn(
|
|
@@ -5526,8 +5340,8 @@ function DownloadsFlat({
|
|
|
5526
5340
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5527
5341
|
background === "error" && "bg-error text-error-foreground"
|
|
5528
5342
|
),
|
|
5529
|
-
children: /* @__PURE__ */
|
|
5530
|
-
/* @__PURE__ */
|
|
5343
|
+
children: /* @__PURE__ */ jsxs83("div", { className: "container mx-auto px-4", children: [
|
|
5344
|
+
/* @__PURE__ */ jsx116(
|
|
5531
5345
|
SectionHeader,
|
|
5532
5346
|
{
|
|
5533
5347
|
title,
|
|
@@ -5537,14 +5351,14 @@ function DownloadsFlat({
|
|
|
5537
5351
|
background
|
|
5538
5352
|
}
|
|
5539
5353
|
),
|
|
5540
|
-
groups.length > 0 && /* @__PURE__ */
|
|
5541
|
-
/* @__PURE__ */
|
|
5542
|
-
/* @__PURE__ */
|
|
5543
|
-
/* @__PURE__ */
|
|
5354
|
+
groups.length > 0 && /* @__PURE__ */ jsx116("div", { className: "mx-auto max-w-3xl space-y-10", children: groups.map((group) => /* @__PURE__ */ jsxs83("div", { children: [
|
|
5355
|
+
/* @__PURE__ */ jsxs83("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
5356
|
+
/* @__PURE__ */ jsx116("h3", { className: "text-sm font-semibold uppercase tracking-wider text-muted-foreground", children: group.title }),
|
|
5357
|
+
/* @__PURE__ */ jsx116("div", { className: "flex-1 border-t" })
|
|
5544
5358
|
] }),
|
|
5545
|
-
/* @__PURE__ */
|
|
5546
|
-
group.files.map((file) => /* @__PURE__ */
|
|
5547
|
-
group.files.length === 0 && /* @__PURE__ */
|
|
5359
|
+
/* @__PURE__ */ jsxs83("div", { className: "rounded-xl border bg-card px-6 divide-y-0", children: [
|
|
5360
|
+
group.files.map((file) => /* @__PURE__ */ jsx116(FileRow, { item: file }, file._key)),
|
|
5361
|
+
group.files.length === 0 && /* @__PURE__ */ jsx116("p", { className: "text-sm text-muted-foreground py-4", children: "Sin archivos." })
|
|
5548
5362
|
] })
|
|
5549
5363
|
] }, group._key)) })
|
|
5550
5364
|
] })
|
|
@@ -5553,23 +5367,23 @@ function DownloadsFlat({
|
|
|
5553
5367
|
}
|
|
5554
5368
|
|
|
5555
5369
|
// src/sections/downloads/index.tsx
|
|
5556
|
-
import { jsx as
|
|
5370
|
+
import { jsx as jsx117 } from "react/jsx-runtime";
|
|
5557
5371
|
function Downloads(props) {
|
|
5558
5372
|
switch (props.variant) {
|
|
5559
5373
|
case "accordion":
|
|
5560
|
-
return /* @__PURE__ */
|
|
5374
|
+
return /* @__PURE__ */ jsx117(DownloadsAccordion, { ...props });
|
|
5561
5375
|
case "flat":
|
|
5562
|
-
return /* @__PURE__ */
|
|
5376
|
+
return /* @__PURE__ */ jsx117(DownloadsFlat, { ...props });
|
|
5563
5377
|
case "grouped":
|
|
5564
5378
|
default:
|
|
5565
|
-
return /* @__PURE__ */
|
|
5379
|
+
return /* @__PURE__ */ jsx117(DownloadsGrouped, { ...props });
|
|
5566
5380
|
}
|
|
5567
5381
|
}
|
|
5568
5382
|
|
|
5569
5383
|
// src/sections/event-registration/registration-form.tsx
|
|
5570
|
-
import { useState as
|
|
5384
|
+
import { useState as useState15, useRef as useRef3 } from "react";
|
|
5571
5385
|
import { CheckCircle as CheckCircle2, Loader2 as Loader22, ImageIcon, X as X3 } from "lucide-react";
|
|
5572
|
-
import { Fragment as Fragment2, jsx as
|
|
5386
|
+
import { Fragment as Fragment2, jsx as jsx118, jsxs as jsxs84 } from "react/jsx-runtime";
|
|
5573
5387
|
var inputBase2 = "flex w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50";
|
|
5574
5388
|
function DynamicField({
|
|
5575
5389
|
field,
|
|
@@ -5579,16 +5393,16 @@ function DynamicField({
|
|
|
5579
5393
|
onFileChange
|
|
5580
5394
|
}) {
|
|
5581
5395
|
const id = `field-${field.label}`;
|
|
5582
|
-
const fileInputRef =
|
|
5396
|
+
const fileInputRef = useRef3(null);
|
|
5583
5397
|
const previewUrl = fileValue ? URL.createObjectURL(fileValue) : value || null;
|
|
5584
|
-
const label = /* @__PURE__ */
|
|
5398
|
+
const label = /* @__PURE__ */ jsxs84("label", { htmlFor: id, className: "text-sm font-medium leading-none", children: [
|
|
5585
5399
|
field.label,
|
|
5586
|
-
field.required && /* @__PURE__ */
|
|
5400
|
+
field.required && /* @__PURE__ */ jsx118("span", { className: "ml-1 text-destructive", children: "*" })
|
|
5587
5401
|
] });
|
|
5588
5402
|
if (field.fieldType === "image") {
|
|
5589
|
-
return /* @__PURE__ */
|
|
5403
|
+
return /* @__PURE__ */ jsxs84("div", { className: "flex flex-col gap-1.5", children: [
|
|
5590
5404
|
label,
|
|
5591
|
-
/* @__PURE__ */
|
|
5405
|
+
/* @__PURE__ */ jsxs84(
|
|
5592
5406
|
"div",
|
|
5593
5407
|
{
|
|
5594
5408
|
className: cn(
|
|
@@ -5597,8 +5411,8 @@ function DynamicField({
|
|
|
5597
5411
|
),
|
|
5598
5412
|
onClick: () => fileInputRef.current?.click(),
|
|
5599
5413
|
children: [
|
|
5600
|
-
previewUrl ? /* @__PURE__ */
|
|
5601
|
-
/* @__PURE__ */
|
|
5414
|
+
previewUrl ? /* @__PURE__ */ jsxs84(Fragment2, { children: [
|
|
5415
|
+
/* @__PURE__ */ jsx118(
|
|
5602
5416
|
"img",
|
|
5603
5417
|
{
|
|
5604
5418
|
src: previewUrl,
|
|
@@ -5606,7 +5420,7 @@ function DynamicField({
|
|
|
5606
5420
|
className: "max-h-40 rounded object-contain"
|
|
5607
5421
|
}
|
|
5608
5422
|
),
|
|
5609
|
-
/* @__PURE__ */
|
|
5423
|
+
/* @__PURE__ */ jsx118(
|
|
5610
5424
|
"button",
|
|
5611
5425
|
{
|
|
5612
5426
|
type: "button",
|
|
@@ -5616,15 +5430,15 @@ function DynamicField({
|
|
|
5616
5430
|
onChange("");
|
|
5617
5431
|
},
|
|
5618
5432
|
className: "absolute right-2 top-2 rounded-full bg-background/80 p-1 hover:bg-destructive/10",
|
|
5619
|
-
children: /* @__PURE__ */
|
|
5433
|
+
children: /* @__PURE__ */ jsx118(X3, { className: "h-4 w-4 text-destructive" })
|
|
5620
5434
|
}
|
|
5621
5435
|
)
|
|
5622
|
-
] }) : /* @__PURE__ */
|
|
5623
|
-
/* @__PURE__ */
|
|
5624
|
-
/* @__PURE__ */
|
|
5625
|
-
/* @__PURE__ */
|
|
5436
|
+
] }) : /* @__PURE__ */ jsxs84(Fragment2, { children: [
|
|
5437
|
+
/* @__PURE__ */ jsx118(ImageIcon, { className: "h-8 w-8 text-muted-foreground" }),
|
|
5438
|
+
/* @__PURE__ */ jsx118("p", { className: "text-sm text-muted-foreground", children: field.placeholder ?? "Hac\xE9 click para seleccionar una imagen" }),
|
|
5439
|
+
/* @__PURE__ */ jsx118("p", { className: "text-xs text-muted-foreground", children: "JPG, PNG, WEBP \xB7 m\xE1x. 10 MB" })
|
|
5626
5440
|
] }),
|
|
5627
|
-
/* @__PURE__ */
|
|
5441
|
+
/* @__PURE__ */ jsx118(
|
|
5628
5442
|
"input",
|
|
5629
5443
|
{
|
|
5630
5444
|
ref: fileInputRef,
|
|
@@ -5646,9 +5460,9 @@ function DynamicField({
|
|
|
5646
5460
|
] });
|
|
5647
5461
|
}
|
|
5648
5462
|
if (field.fieldType === "textarea") {
|
|
5649
|
-
return /* @__PURE__ */
|
|
5463
|
+
return /* @__PURE__ */ jsxs84("div", { className: "flex flex-col gap-1.5", children: [
|
|
5650
5464
|
label,
|
|
5651
|
-
/* @__PURE__ */
|
|
5465
|
+
/* @__PURE__ */ jsx118(
|
|
5652
5466
|
"textarea",
|
|
5653
5467
|
{
|
|
5654
5468
|
id,
|
|
@@ -5663,9 +5477,9 @@ function DynamicField({
|
|
|
5663
5477
|
] });
|
|
5664
5478
|
}
|
|
5665
5479
|
if (field.fieldType === "select") {
|
|
5666
|
-
return /* @__PURE__ */
|
|
5480
|
+
return /* @__PURE__ */ jsxs84("div", { className: "flex flex-col gap-1.5", children: [
|
|
5667
5481
|
label,
|
|
5668
|
-
/* @__PURE__ */
|
|
5482
|
+
/* @__PURE__ */ jsxs84(
|
|
5669
5483
|
"select",
|
|
5670
5484
|
{
|
|
5671
5485
|
id,
|
|
@@ -5674,17 +5488,17 @@ function DynamicField({
|
|
|
5674
5488
|
required: field.required,
|
|
5675
5489
|
className: cn(inputBase2, "h-10"),
|
|
5676
5490
|
children: [
|
|
5677
|
-
/* @__PURE__ */
|
|
5678
|
-
(field.options ?? []).map((opt) => /* @__PURE__ */
|
|
5491
|
+
/* @__PURE__ */ jsx118("option", { value: "", children: field.placeholder ?? "Seleccion\xE1 una opci\xF3n" }),
|
|
5492
|
+
(field.options ?? []).map((opt) => /* @__PURE__ */ jsx118("option", { value: opt, children: opt }, opt))
|
|
5679
5493
|
]
|
|
5680
5494
|
}
|
|
5681
5495
|
)
|
|
5682
5496
|
] });
|
|
5683
5497
|
}
|
|
5684
5498
|
if (field.fieldType === "date") {
|
|
5685
|
-
return /* @__PURE__ */
|
|
5499
|
+
return /* @__PURE__ */ jsxs84("div", { className: "flex flex-col gap-1.5", children: [
|
|
5686
5500
|
label,
|
|
5687
|
-
/* @__PURE__ */
|
|
5501
|
+
/* @__PURE__ */ jsx118(
|
|
5688
5502
|
DatePicker,
|
|
5689
5503
|
{
|
|
5690
5504
|
id,
|
|
@@ -5696,9 +5510,9 @@ function DynamicField({
|
|
|
5696
5510
|
)
|
|
5697
5511
|
] });
|
|
5698
5512
|
}
|
|
5699
|
-
return /* @__PURE__ */
|
|
5513
|
+
return /* @__PURE__ */ jsxs84("div", { className: "flex flex-col gap-1.5", children: [
|
|
5700
5514
|
label,
|
|
5701
|
-
/* @__PURE__ */
|
|
5515
|
+
/* @__PURE__ */ jsx118(
|
|
5702
5516
|
"input",
|
|
5703
5517
|
{
|
|
5704
5518
|
id,
|
|
@@ -5731,12 +5545,12 @@ function RegistrationForm({
|
|
|
5731
5545
|
successMessage = "\xA1Tu registro fue enviado con \xE9xito!",
|
|
5732
5546
|
className
|
|
5733
5547
|
}) {
|
|
5734
|
-
const [values, setValues] =
|
|
5548
|
+
const [values, setValues] = useState15(
|
|
5735
5549
|
() => Object.fromEntries(fields.map((f) => [f.label, ""]))
|
|
5736
5550
|
);
|
|
5737
|
-
const [fileValues, setFileValues] =
|
|
5738
|
-
const [status, setStatus] =
|
|
5739
|
-
const [errorMsg, setErrorMsg] =
|
|
5551
|
+
const [fileValues, setFileValues] = useState15({});
|
|
5552
|
+
const [status, setStatus] = useState15("idle");
|
|
5553
|
+
const [errorMsg, setErrorMsg] = useState15("");
|
|
5740
5554
|
const handleChange = (label, val) => setValues((prev) => ({ ...prev, [label]: val }));
|
|
5741
5555
|
const handleFileChange = (label, file) => setFileValues((prev) => ({ ...prev, [label]: file }));
|
|
5742
5556
|
const handleSubmit = async (e) => {
|
|
@@ -5771,13 +5585,13 @@ function RegistrationForm({
|
|
|
5771
5585
|
}
|
|
5772
5586
|
};
|
|
5773
5587
|
if (status === "success") {
|
|
5774
|
-
return /* @__PURE__ */
|
|
5775
|
-
/* @__PURE__ */
|
|
5776
|
-
/* @__PURE__ */
|
|
5588
|
+
return /* @__PURE__ */ jsxs84("div", { className: cn("flex flex-col items-center gap-4 py-8 text-center", className), children: [
|
|
5589
|
+
/* @__PURE__ */ jsx118(CheckCircle2, { className: "h-14 w-14 text-green-500" }),
|
|
5590
|
+
/* @__PURE__ */ jsx118("p", { className: "text-lg font-semibold", children: successMessage })
|
|
5777
5591
|
] });
|
|
5778
5592
|
}
|
|
5779
|
-
return /* @__PURE__ */
|
|
5780
|
-
fields.map((field) => /* @__PURE__ */
|
|
5593
|
+
return /* @__PURE__ */ jsxs84("form", { onSubmit: handleSubmit, className: cn("grid gap-4", className), children: [
|
|
5594
|
+
fields.map((field) => /* @__PURE__ */ jsx118(
|
|
5781
5595
|
DynamicField,
|
|
5782
5596
|
{
|
|
5783
5597
|
field,
|
|
@@ -5788,16 +5602,16 @@ function RegistrationForm({
|
|
|
5788
5602
|
},
|
|
5789
5603
|
field.label
|
|
5790
5604
|
)),
|
|
5791
|
-
status === "error" && /* @__PURE__ */
|
|
5792
|
-
/* @__PURE__ */
|
|
5793
|
-
/* @__PURE__ */
|
|
5605
|
+
status === "error" && /* @__PURE__ */ jsx118("p", { className: "rounded-md bg-destructive/10 px-4 py-2 text-sm text-destructive", children: errorMsg }),
|
|
5606
|
+
/* @__PURE__ */ jsx118(Button, { type: "submit", disabled: status === "loading", className: "mt-2 w-full", size: "lg", children: status === "loading" ? /* @__PURE__ */ jsxs84(Fragment2, { children: [
|
|
5607
|
+
/* @__PURE__ */ jsx118(Loader22, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
5794
5608
|
"Enviando..."
|
|
5795
5609
|
] }) : buttonLabel })
|
|
5796
5610
|
] });
|
|
5797
5611
|
}
|
|
5798
5612
|
|
|
5799
5613
|
// src/sections/event-registration/variants/registration-centered.tsx
|
|
5800
|
-
import { jsx as
|
|
5614
|
+
import { jsx as jsx119, jsxs as jsxs85 } from "react/jsx-runtime";
|
|
5801
5615
|
function RegistrationCentered({
|
|
5802
5616
|
title,
|
|
5803
5617
|
subtitle,
|
|
@@ -5809,7 +5623,7 @@ function RegistrationCentered({
|
|
|
5809
5623
|
buttonLabel,
|
|
5810
5624
|
successMessage
|
|
5811
5625
|
}) {
|
|
5812
|
-
return /* @__PURE__ */
|
|
5626
|
+
return /* @__PURE__ */ jsx119(
|
|
5813
5627
|
"section",
|
|
5814
5628
|
{
|
|
5815
5629
|
className: cn(
|
|
@@ -5822,9 +5636,9 @@ function RegistrationCentered({
|
|
|
5822
5636
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5823
5637
|
background === "error" && "bg-error text-error-foreground"
|
|
5824
5638
|
),
|
|
5825
|
-
children: /* @__PURE__ */
|
|
5826
|
-
/* @__PURE__ */
|
|
5827
|
-
/* @__PURE__ */
|
|
5639
|
+
children: /* @__PURE__ */ jsxs85("div", { className: "container mx-auto px-4", children: [
|
|
5640
|
+
/* @__PURE__ */ jsx119(SectionHeader, { title, subtitle, badge, content, background }),
|
|
5641
|
+
/* @__PURE__ */ jsx119(
|
|
5828
5642
|
RegistrationForm,
|
|
5829
5643
|
{
|
|
5830
5644
|
formId,
|
|
@@ -5841,7 +5655,7 @@ function RegistrationCentered({
|
|
|
5841
5655
|
}
|
|
5842
5656
|
|
|
5843
5657
|
// src/sections/event-registration/variants/registration-card.tsx
|
|
5844
|
-
import { jsx as
|
|
5658
|
+
import { jsx as jsx120, jsxs as jsxs86 } from "react/jsx-runtime";
|
|
5845
5659
|
function RegistrationCard({
|
|
5846
5660
|
title,
|
|
5847
5661
|
subtitle,
|
|
@@ -5853,7 +5667,7 @@ function RegistrationCard({
|
|
|
5853
5667
|
buttonLabel,
|
|
5854
5668
|
successMessage
|
|
5855
5669
|
}) {
|
|
5856
|
-
return /* @__PURE__ */
|
|
5670
|
+
return /* @__PURE__ */ jsx120(
|
|
5857
5671
|
"section",
|
|
5858
5672
|
{
|
|
5859
5673
|
className: cn(
|
|
@@ -5866,9 +5680,9 @@ function RegistrationCard({
|
|
|
5866
5680
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5867
5681
|
background === "error" && "bg-error text-error-foreground"
|
|
5868
5682
|
),
|
|
5869
|
-
children: /* @__PURE__ */
|
|
5870
|
-
/* @__PURE__ */
|
|
5871
|
-
/* @__PURE__ */
|
|
5683
|
+
children: /* @__PURE__ */ jsxs86("div", { className: "container mx-auto px-4", children: [
|
|
5684
|
+
/* @__PURE__ */ jsx120(SectionHeader, { title, subtitle, badge, content, background }),
|
|
5685
|
+
/* @__PURE__ */ jsx120("div", { className: "mx-auto max-w-xl rounded-2xl border bg-card p-8 shadow-sm", children: /* @__PURE__ */ jsx120(
|
|
5872
5686
|
RegistrationForm,
|
|
5873
5687
|
{
|
|
5874
5688
|
formId,
|
|
@@ -5884,7 +5698,7 @@ function RegistrationCard({
|
|
|
5884
5698
|
}
|
|
5885
5699
|
|
|
5886
5700
|
// src/sections/event-registration/variants/registration-split.tsx
|
|
5887
|
-
import { jsx as
|
|
5701
|
+
import { jsx as jsx121, jsxs as jsxs87 } from "react/jsx-runtime";
|
|
5888
5702
|
function RegistrationSplit({
|
|
5889
5703
|
title,
|
|
5890
5704
|
subtitle,
|
|
@@ -5896,7 +5710,7 @@ function RegistrationSplit({
|
|
|
5896
5710
|
successMessage,
|
|
5897
5711
|
image
|
|
5898
5712
|
}) {
|
|
5899
|
-
return /* @__PURE__ */
|
|
5713
|
+
return /* @__PURE__ */ jsx121(
|
|
5900
5714
|
"section",
|
|
5901
5715
|
{
|
|
5902
5716
|
className: cn(
|
|
@@ -5909,14 +5723,14 @@ function RegistrationSplit({
|
|
|
5909
5723
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5910
5724
|
background === "error" && "bg-error text-error-foreground"
|
|
5911
5725
|
),
|
|
5912
|
-
children: /* @__PURE__ */
|
|
5913
|
-
/* @__PURE__ */
|
|
5914
|
-
badge && /* @__PURE__ */
|
|
5915
|
-
title && /* @__PURE__ */
|
|
5916
|
-
subtitle && /* @__PURE__ */
|
|
5917
|
-
image && /* @__PURE__ */
|
|
5726
|
+
children: /* @__PURE__ */ jsxs87("div", { className: "container mx-auto grid items-center gap-12 px-4 lg:grid-cols-2", children: [
|
|
5727
|
+
/* @__PURE__ */ jsxs87("div", { className: "flex flex-col gap-6", children: [
|
|
5728
|
+
badge && /* @__PURE__ */ jsx121(Badge, { variant: "outline", className: "w-fit", children: badge }),
|
|
5729
|
+
title && /* @__PURE__ */ jsx121("h2", { className: "text-3xl font-bold tracking-tight lg:text-4xl", children: title }),
|
|
5730
|
+
subtitle && /* @__PURE__ */ jsx121("p", { className: "text-lg text-muted-foreground", children: subtitle }),
|
|
5731
|
+
image && /* @__PURE__ */ jsx121("div", { className: "aspect-video w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx121("img", { src: image.url, alt: image.alt ?? title ?? "", className: "h-full w-full object-cover" }) })
|
|
5918
5732
|
] }),
|
|
5919
|
-
/* @__PURE__ */
|
|
5733
|
+
/* @__PURE__ */ jsx121("div", { className: "rounded-2xl border bg-card p-8 shadow-sm", children: /* @__PURE__ */ jsx121(
|
|
5920
5734
|
RegistrationForm,
|
|
5921
5735
|
{
|
|
5922
5736
|
formId,
|
|
@@ -5932,16 +5746,16 @@ function RegistrationSplit({
|
|
|
5932
5746
|
}
|
|
5933
5747
|
|
|
5934
5748
|
// src/sections/event-registration/event-registration-section.tsx
|
|
5935
|
-
import { jsx as
|
|
5749
|
+
import { jsx as jsx122 } from "react/jsx-runtime";
|
|
5936
5750
|
function EventRegistration(props) {
|
|
5937
5751
|
switch (props.variant) {
|
|
5938
5752
|
case "card":
|
|
5939
|
-
return /* @__PURE__ */
|
|
5753
|
+
return /* @__PURE__ */ jsx122(RegistrationCard, { ...props });
|
|
5940
5754
|
case "split":
|
|
5941
|
-
return /* @__PURE__ */
|
|
5755
|
+
return /* @__PURE__ */ jsx122(RegistrationSplit, { ...props });
|
|
5942
5756
|
case "centered":
|
|
5943
5757
|
default:
|
|
5944
|
-
return /* @__PURE__ */
|
|
5758
|
+
return /* @__PURE__ */ jsx122(RegistrationCentered, { ...props });
|
|
5945
5759
|
}
|
|
5946
5760
|
}
|
|
5947
5761
|
export {
|