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