@zekidev/ui 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +377 -565
- package/dist/leaflet-map-inner-SOHFKEYD.js +171 -0
- package/package.json +27 -17
- package/dist/index.cjs +0 -6141
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 useEffect4, useRef as useRef2, useState as useState13 } from "react";
|
|
18
|
-
import L from "leaflet";
|
|
19
|
-
import { jsx as jsx81, jsxs as jsxs57 } 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 = useRef2(null);
|
|
66
|
-
const mapRef = useRef2(null);
|
|
67
|
-
const tileRef = useRef2(null);
|
|
68
|
-
const [loading, setLoading] = useState13(!!locations?.length);
|
|
69
|
-
useEffect4(() => {
|
|
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
|
-
useEffect4(() => {
|
|
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
|
-
useEffect4(() => {
|
|
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__ */ jsxs57("div", { className: `relative ${className ?? ""}`, children: [
|
|
119
|
-
loading && /* @__PURE__ */ jsx81("div", { className: "absolute inset-0 z-[1000] flex items-center justify-center bg-muted/80 rounded-xl", children: /* @__PURE__ */ jsxs57("div", { className: "flex flex-col items-center gap-2 text-muted-foreground text-sm", children: [
|
|
120
|
-
/* @__PURE__ */ jsxs57("svg", { className: "animate-spin h-6 w-6", viewBox: "0 0 24 24", fill: "none", children: [
|
|
121
|
-
/* @__PURE__ */ jsx81("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
122
|
-
/* @__PURE__ */ jsx81("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__ */ jsx81("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";
|
|
@@ -4016,13 +3828,13 @@ function Banner(props) {
|
|
|
4016
3828
|
import { MapPin as MapPin3 } from "lucide-react";
|
|
4017
3829
|
|
|
4018
3830
|
// src/sections/map/leaflet-map.tsx
|
|
4019
|
-
import { lazy, Suspense, useEffect as
|
|
4020
|
-
import { jsx as
|
|
4021
|
-
var
|
|
4022
|
-
() =>
|
|
3831
|
+
import { lazy, Suspense, useEffect as useEffect4, useState as useState13 } from "react";
|
|
3832
|
+
import { jsx as jsx81 } from "react/jsx-runtime";
|
|
3833
|
+
var LeafletMapInner = lazy(
|
|
3834
|
+
() => import("./leaflet-map-inner-SOHFKEYD.js").then((m) => ({ default: m.LeafletMapInner }))
|
|
4023
3835
|
);
|
|
4024
3836
|
function MapSkeleton({ className }) {
|
|
4025
|
-
return /* @__PURE__ */
|
|
3837
|
+
return /* @__PURE__ */ jsx81(
|
|
4026
3838
|
"div",
|
|
4027
3839
|
{
|
|
4028
3840
|
className: `bg-muted animate-pulse rounded-xl flex items-center justify-center text-muted-foreground text-sm ${className ?? ""}`,
|
|
@@ -4031,19 +3843,19 @@ function MapSkeleton({ className }) {
|
|
|
4031
3843
|
);
|
|
4032
3844
|
}
|
|
4033
3845
|
function LeafletMap({ locations, mapStyle, className }) {
|
|
4034
|
-
const [mounted, setMounted] =
|
|
4035
|
-
|
|
3846
|
+
const [mounted, setMounted] = useState13(false);
|
|
3847
|
+
useEffect4(() => {
|
|
4036
3848
|
setMounted(true);
|
|
4037
3849
|
}, []);
|
|
4038
|
-
if (!mounted) return /* @__PURE__ */
|
|
4039
|
-
return /* @__PURE__ */
|
|
3850
|
+
if (!mounted) return /* @__PURE__ */ jsx81(MapSkeleton, { className });
|
|
3851
|
+
return /* @__PURE__ */ jsx81(Suspense, { fallback: /* @__PURE__ */ jsx81(MapSkeleton, { className }), children: /* @__PURE__ */ jsx81(LeafletMapInner, { locations, mapStyle, className }) });
|
|
4040
3852
|
}
|
|
4041
3853
|
|
|
4042
3854
|
// src/sections/map/variants/map-pins.tsx
|
|
4043
|
-
import { jsx as
|
|
3855
|
+
import { jsx as jsx82, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
4044
3856
|
function MapPins({ title, subtitle, content, badge, locations, mapStyle, background }) {
|
|
4045
3857
|
const hasLocations = locations?.length > 0;
|
|
4046
|
-
return /* @__PURE__ */
|
|
3858
|
+
return /* @__PURE__ */ jsx82(
|
|
4047
3859
|
"section",
|
|
4048
3860
|
{
|
|
4049
3861
|
className: cn(
|
|
@@ -4056,11 +3868,11 @@ function MapPins({ title, subtitle, content, badge, locations, mapStyle, backgro
|
|
|
4056
3868
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4057
3869
|
background === "error" && "bg-error text-error-foreground"
|
|
4058
3870
|
),
|
|
4059
|
-
children: /* @__PURE__ */
|
|
4060
|
-
/* @__PURE__ */
|
|
4061
|
-
hasLocations ? /* @__PURE__ */
|
|
4062
|
-
/* @__PURE__ */
|
|
4063
|
-
/* @__PURE__ */
|
|
3871
|
+
children: /* @__PURE__ */ jsxs57("div", { className: "container mx-auto px-4", children: [
|
|
3872
|
+
/* @__PURE__ */ jsx82(SectionHeader, { title, subtitle, badge, content, background }),
|
|
3873
|
+
hasLocations ? /* @__PURE__ */ jsx82(LeafletMap, { locations, mapStyle, className: "h-96 w-full rounded-xl overflow-hidden shadow" }) : /* @__PURE__ */ jsxs57("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: [
|
|
3874
|
+
/* @__PURE__ */ jsx82(MapPin3, { className: "h-10 w-10 opacity-40" }),
|
|
3875
|
+
/* @__PURE__ */ jsx82("p", { className: "text-sm", children: "Agreg\xE1 ubicaciones en el Studio \u2014 las direcciones se geocodifican autom\xE1ticamente." })
|
|
4064
3876
|
] })
|
|
4065
3877
|
] })
|
|
4066
3878
|
}
|
|
@@ -4069,9 +3881,9 @@ function MapPins({ title, subtitle, content, badge, locations, mapStyle, backgro
|
|
|
4069
3881
|
|
|
4070
3882
|
// src/sections/map/variants/map-listing.tsx
|
|
4071
3883
|
import { MapPin as MapPin4, Phone as Phone3, Clock as Clock3, MapPinned } from "lucide-react";
|
|
4072
|
-
import { jsx as
|
|
3884
|
+
import { jsx as jsx83, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
4073
3885
|
function MapListing({ title, subtitle, content, badge, locations, background }) {
|
|
4074
|
-
return /* @__PURE__ */
|
|
3886
|
+
return /* @__PURE__ */ jsx83(
|
|
4075
3887
|
"section",
|
|
4076
3888
|
{
|
|
4077
3889
|
className: cn(
|
|
@@ -4084,23 +3896,23 @@ function MapListing({ title, subtitle, content, badge, locations, background })
|
|
|
4084
3896
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4085
3897
|
background === "error" && "bg-error text-error-foreground"
|
|
4086
3898
|
),
|
|
4087
|
-
children: /* @__PURE__ */
|
|
4088
|
-
/* @__PURE__ */
|
|
4089
|
-
/* @__PURE__ */
|
|
4090
|
-
/* @__PURE__ */
|
|
4091
|
-
/* @__PURE__ */
|
|
4092
|
-
/* @__PURE__ */
|
|
3899
|
+
children: /* @__PURE__ */ jsxs58("div", { className: "container mx-auto px-4", children: [
|
|
3900
|
+
/* @__PURE__ */ jsx83(SectionHeader, { title, subtitle, badge, content, background }),
|
|
3901
|
+
/* @__PURE__ */ jsx83("div", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-3", children: locations.map((location, i) => /* @__PURE__ */ jsxs58("div", { className: "rounded-xl border bg-card p-6 shadow-sm", children: [
|
|
3902
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-start gap-3 mb-3", children: [
|
|
3903
|
+
/* @__PURE__ */ jsx83(MapPin4, { className: "h-5 w-5 text-primary mt-0.5 shrink-0" }),
|
|
3904
|
+
/* @__PURE__ */ jsx83("h3", { className: "font-semibold text-lg", children: location.name })
|
|
4093
3905
|
] }),
|
|
4094
|
-
location.phone && /* @__PURE__ */
|
|
4095
|
-
/* @__PURE__ */
|
|
4096
|
-
/* @__PURE__ */
|
|
3906
|
+
location.phone && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 text-sm text-muted-foreground mb-2", children: [
|
|
3907
|
+
/* @__PURE__ */ jsx83(Phone3, { className: "h-4 w-4 shrink-0" }),
|
|
3908
|
+
/* @__PURE__ */ jsx83("span", { children: location.phone })
|
|
4097
3909
|
] }),
|
|
4098
|
-
location.hours && /* @__PURE__ */
|
|
4099
|
-
/* @__PURE__ */
|
|
4100
|
-
/* @__PURE__ */
|
|
3910
|
+
location.hours && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 text-sm text-muted-foreground mb-2", children: [
|
|
3911
|
+
/* @__PURE__ */ jsx83(Clock3, { className: "h-4 w-4 shrink-0" }),
|
|
3912
|
+
/* @__PURE__ */ jsx83("span", { children: location.hours })
|
|
4101
3913
|
] }),
|
|
4102
|
-
location.description && /* @__PURE__ */
|
|
4103
|
-
location.address && /* @__PURE__ */
|
|
3914
|
+
location.description && /* @__PURE__ */ jsx83("p", { className: "text-sm text-muted-foreground mt-3", children: location.description }),
|
|
3915
|
+
location.address && /* @__PURE__ */ jsxs58(
|
|
4104
3916
|
"a",
|
|
4105
3917
|
{
|
|
4106
3918
|
href: `https://maps.google.com/?q=${encodeURIComponent(location.address)}`,
|
|
@@ -4108,7 +3920,7 @@ function MapListing({ title, subtitle, content, badge, locations, background })
|
|
|
4108
3920
|
rel: "noopener noreferrer",
|
|
4109
3921
|
className: "inline-flex items-center gap-1 mt-4 text-sm font-medium text-primary hover:underline",
|
|
4110
3922
|
children: [
|
|
4111
|
-
/* @__PURE__ */
|
|
3923
|
+
/* @__PURE__ */ jsx83(MapPinned, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
4112
3924
|
location.address
|
|
4113
3925
|
]
|
|
4114
3926
|
}
|
|
@@ -4121,10 +3933,10 @@ function MapListing({ title, subtitle, content, badge, locations, background })
|
|
|
4121
3933
|
|
|
4122
3934
|
// src/sections/map/variants/map-split.tsx
|
|
4123
3935
|
import { MapPin as MapPin5, Phone as Phone4, Clock as Clock4, MapPinned as MapPinned2 } from "lucide-react";
|
|
4124
|
-
import { jsx as
|
|
3936
|
+
import { jsx as jsx84, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
4125
3937
|
function MapSplit({ title, subtitle, content, badge, locations, mapStyle, background }) {
|
|
4126
3938
|
const hasLocations = locations?.length > 0;
|
|
4127
|
-
return /* @__PURE__ */
|
|
3939
|
+
return /* @__PURE__ */ jsx84(
|
|
4128
3940
|
"section",
|
|
4129
3941
|
{
|
|
4130
3942
|
className: cn(
|
|
@@ -4137,28 +3949,28 @@ function MapSplit({ title, subtitle, content, badge, locations, mapStyle, backgr
|
|
|
4137
3949
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4138
3950
|
background === "error" && "bg-error text-error-foreground"
|
|
4139
3951
|
),
|
|
4140
|
-
children: /* @__PURE__ */
|
|
4141
|
-
/* @__PURE__ */
|
|
4142
|
-
/* @__PURE__ */
|
|
4143
|
-
/* @__PURE__ */
|
|
4144
|
-
/* @__PURE__ */
|
|
4145
|
-
/* @__PURE__ */
|
|
3952
|
+
children: /* @__PURE__ */ jsxs59("div", { className: "container mx-auto px-4", children: [
|
|
3953
|
+
/* @__PURE__ */ jsx84(SectionHeader, { title, subtitle, badge, content, background }),
|
|
3954
|
+
/* @__PURE__ */ jsxs59("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: [
|
|
3955
|
+
/* @__PURE__ */ jsx84("div", { className: "min-h-[450px]", children: hasLocations ? /* @__PURE__ */ jsx84(LeafletMap, { locations, mapStyle, className: "h-full min-h-[450px] w-full" }) : /* @__PURE__ */ jsxs59("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: [
|
|
3956
|
+
/* @__PURE__ */ jsx84(MapPin5, { className: "h-10 w-10 opacity-40" }),
|
|
3957
|
+
/* @__PURE__ */ jsx84("p", { className: "text-sm", children: "Agreg\xE1 ubicaciones en el Studio \u2014 las direcciones se geocodifican autom\xE1ticamente." })
|
|
4146
3958
|
] }) }),
|
|
4147
|
-
/* @__PURE__ */
|
|
4148
|
-
/* @__PURE__ */
|
|
4149
|
-
/* @__PURE__ */
|
|
4150
|
-
/* @__PURE__ */
|
|
3959
|
+
/* @__PURE__ */ jsx84("div", { className: "bg-card p-6 sm:p-8 overflow-y-auto max-h-[600px]", children: hasLocations ? /* @__PURE__ */ jsx84("div", { className: "space-y-6", children: locations.map((location, i) => /* @__PURE__ */ jsxs59("div", { className: "pb-6 border-b last:border-0 last:pb-0", children: [
|
|
3960
|
+
/* @__PURE__ */ jsxs59("div", { className: "flex items-start gap-2 mb-2", children: [
|
|
3961
|
+
/* @__PURE__ */ jsx84(MapPin5, { className: "h-4 w-4 text-primary mt-1 shrink-0" }),
|
|
3962
|
+
/* @__PURE__ */ jsx84("h3", { className: "font-semibold", children: location.name })
|
|
4151
3963
|
] }),
|
|
4152
|
-
location.phone && /* @__PURE__ */
|
|
4153
|
-
/* @__PURE__ */
|
|
4154
|
-
/* @__PURE__ */
|
|
3964
|
+
location.phone && /* @__PURE__ */ jsxs59("div", { className: "flex items-center gap-2 text-sm text-muted-foreground mb-1", children: [
|
|
3965
|
+
/* @__PURE__ */ jsx84(Phone4, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
3966
|
+
/* @__PURE__ */ jsx84("span", { children: location.phone })
|
|
4155
3967
|
] }),
|
|
4156
|
-
location.hours && /* @__PURE__ */
|
|
4157
|
-
/* @__PURE__ */
|
|
4158
|
-
/* @__PURE__ */
|
|
3968
|
+
location.hours && /* @__PURE__ */ jsxs59("div", { className: "flex items-center gap-2 text-sm text-muted-foreground mb-1", children: [
|
|
3969
|
+
/* @__PURE__ */ jsx84(Clock4, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
3970
|
+
/* @__PURE__ */ jsx84("span", { children: location.hours })
|
|
4159
3971
|
] }),
|
|
4160
|
-
location.description && /* @__PURE__ */
|
|
4161
|
-
location.address && /* @__PURE__ */
|
|
3972
|
+
location.description && /* @__PURE__ */ jsx84("p", { className: "text-sm text-muted-foreground mt-2", children: location.description }),
|
|
3973
|
+
location.address && /* @__PURE__ */ jsxs59(
|
|
4162
3974
|
"a",
|
|
4163
3975
|
{
|
|
4164
3976
|
href: `https://maps.google.com/?q=${encodeURIComponent(location.address)}`,
|
|
@@ -4166,12 +3978,12 @@ function MapSplit({ title, subtitle, content, badge, locations, mapStyle, backgr
|
|
|
4166
3978
|
rel: "noopener noreferrer",
|
|
4167
3979
|
className: "inline-flex items-center gap-1 mt-3 text-sm font-medium text-primary hover:underline",
|
|
4168
3980
|
children: [
|
|
4169
|
-
/* @__PURE__ */
|
|
3981
|
+
/* @__PURE__ */ jsx84(MapPinned2, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
4170
3982
|
location.address
|
|
4171
3983
|
]
|
|
4172
3984
|
}
|
|
4173
3985
|
)
|
|
4174
|
-
] }, i)) }) : /* @__PURE__ */
|
|
3986
|
+
] }, i)) }) : /* @__PURE__ */ jsx84("p", { className: "text-sm text-muted-foreground", children: "No hay ubicaciones agregadas a\xFAn." }) })
|
|
4175
3987
|
] })
|
|
4176
3988
|
] })
|
|
4177
3989
|
}
|
|
@@ -4179,23 +3991,23 @@ function MapSplit({ title, subtitle, content, badge, locations, mapStyle, backgr
|
|
|
4179
3991
|
}
|
|
4180
3992
|
|
|
4181
3993
|
// src/sections/map/index.tsx
|
|
4182
|
-
import { jsx as
|
|
3994
|
+
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
4183
3995
|
function MapSection(props) {
|
|
4184
3996
|
switch (props.variant) {
|
|
4185
3997
|
case "listing":
|
|
4186
|
-
return /* @__PURE__ */
|
|
3998
|
+
return /* @__PURE__ */ jsx85(MapListing, { ...props });
|
|
4187
3999
|
case "split":
|
|
4188
|
-
return /* @__PURE__ */
|
|
4000
|
+
return /* @__PURE__ */ jsx85(MapSplit, { ...props });
|
|
4189
4001
|
case "pins":
|
|
4190
4002
|
default:
|
|
4191
|
-
return /* @__PURE__ */
|
|
4003
|
+
return /* @__PURE__ */ jsx85(MapPins, { ...props });
|
|
4192
4004
|
}
|
|
4193
4005
|
}
|
|
4194
4006
|
|
|
4195
4007
|
// src/sections/iframe/variants/iframe-simple.tsx
|
|
4196
|
-
import { jsx as
|
|
4008
|
+
import { jsx as jsx86, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
4197
4009
|
function IframeSimple({ title, subtitle, content, badge, src, iframeTitle, height, background }) {
|
|
4198
|
-
return /* @__PURE__ */
|
|
4010
|
+
return /* @__PURE__ */ jsx86(
|
|
4199
4011
|
"section",
|
|
4200
4012
|
{
|
|
4201
4013
|
className: cn(
|
|
@@ -4208,9 +4020,9 @@ function IframeSimple({ title, subtitle, content, badge, src, iframeTitle, heigh
|
|
|
4208
4020
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4209
4021
|
background === "error" && "bg-error text-error-foreground"
|
|
4210
4022
|
),
|
|
4211
|
-
children: /* @__PURE__ */
|
|
4212
|
-
/* @__PURE__ */
|
|
4213
|
-
/* @__PURE__ */
|
|
4023
|
+
children: /* @__PURE__ */ jsxs60("div", { className: "container mx-auto px-4", children: [
|
|
4024
|
+
/* @__PURE__ */ jsx86(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4025
|
+
/* @__PURE__ */ jsx86(
|
|
4214
4026
|
"iframe",
|
|
4215
4027
|
{
|
|
4216
4028
|
src,
|
|
@@ -4227,9 +4039,9 @@ function IframeSimple({ title, subtitle, content, badge, src, iframeTitle, heigh
|
|
|
4227
4039
|
}
|
|
4228
4040
|
|
|
4229
4041
|
// src/sections/iframe/variants/iframe-card.tsx
|
|
4230
|
-
import { jsx as
|
|
4042
|
+
import { jsx as jsx87, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
4231
4043
|
function IframeCard({ title, subtitle, content, badge, src, iframeTitle, height, background }) {
|
|
4232
|
-
return /* @__PURE__ */
|
|
4044
|
+
return /* @__PURE__ */ jsx87(
|
|
4233
4045
|
"section",
|
|
4234
4046
|
{
|
|
4235
4047
|
className: cn(
|
|
@@ -4242,9 +4054,9 @@ function IframeCard({ title, subtitle, content, badge, src, iframeTitle, height,
|
|
|
4242
4054
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4243
4055
|
background === "error" && "bg-error text-error-foreground"
|
|
4244
4056
|
),
|
|
4245
|
-
children: /* @__PURE__ */
|
|
4246
|
-
/* @__PURE__ */
|
|
4247
|
-
/* @__PURE__ */
|
|
4057
|
+
children: /* @__PURE__ */ jsxs61("div", { className: "container mx-auto px-4", children: [
|
|
4058
|
+
/* @__PURE__ */ jsx87(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4059
|
+
/* @__PURE__ */ jsx87("div", { className: "rounded-xl overflow-hidden shadow-lg border", children: /* @__PURE__ */ jsx87(
|
|
4248
4060
|
"iframe",
|
|
4249
4061
|
{
|
|
4250
4062
|
src,
|
|
@@ -4261,10 +4073,10 @@ function IframeCard({ title, subtitle, content, badge, src, iframeTitle, height,
|
|
|
4261
4073
|
}
|
|
4262
4074
|
|
|
4263
4075
|
// src/sections/iframe/variants/iframe-responsive.tsx
|
|
4264
|
-
import { jsx as
|
|
4076
|
+
import { jsx as jsx88, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
4265
4077
|
function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, height, aspectRatio, background }) {
|
|
4266
4078
|
const isFixedHeight = !aspectRatio || aspectRatio === "auto";
|
|
4267
|
-
return /* @__PURE__ */
|
|
4079
|
+
return /* @__PURE__ */ jsx88(
|
|
4268
4080
|
"section",
|
|
4269
4081
|
{
|
|
4270
4082
|
className: cn(
|
|
@@ -4277,9 +4089,9 @@ function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, h
|
|
|
4277
4089
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4278
4090
|
background === "error" && "bg-error text-error-foreground"
|
|
4279
4091
|
),
|
|
4280
|
-
children: /* @__PURE__ */
|
|
4281
|
-
/* @__PURE__ */
|
|
4282
|
-
isFixedHeight ? /* @__PURE__ */
|
|
4092
|
+
children: /* @__PURE__ */ jsxs62("div", { className: "container mx-auto px-4", children: [
|
|
4093
|
+
/* @__PURE__ */ jsx88(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4094
|
+
isFixedHeight ? /* @__PURE__ */ jsx88(
|
|
4283
4095
|
"iframe",
|
|
4284
4096
|
{
|
|
4285
4097
|
src,
|
|
@@ -4289,7 +4101,7 @@ function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, h
|
|
|
4289
4101
|
allowFullScreen: true,
|
|
4290
4102
|
sandbox: "allow-scripts allow-same-origin allow-popups allow-forms"
|
|
4291
4103
|
}
|
|
4292
|
-
) : /* @__PURE__ */
|
|
4104
|
+
) : /* @__PURE__ */ jsx88(
|
|
4293
4105
|
"div",
|
|
4294
4106
|
{
|
|
4295
4107
|
className: cn(
|
|
@@ -4297,7 +4109,7 @@ function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, h
|
|
|
4297
4109
|
aspectRatio === "video" && "aspect-video",
|
|
4298
4110
|
aspectRatio === "square" && "aspect-square"
|
|
4299
4111
|
),
|
|
4300
|
-
children: /* @__PURE__ */
|
|
4112
|
+
children: /* @__PURE__ */ jsx88(
|
|
4301
4113
|
"iframe",
|
|
4302
4114
|
{
|
|
4303
4115
|
src,
|
|
@@ -4315,24 +4127,24 @@ function IframeResponsive({ title, subtitle, content, badge, src, iframeTitle, h
|
|
|
4315
4127
|
}
|
|
4316
4128
|
|
|
4317
4129
|
// src/sections/iframe/index.tsx
|
|
4318
|
-
import { jsx as
|
|
4130
|
+
import { jsx as jsx89 } from "react/jsx-runtime";
|
|
4319
4131
|
function IframeSection(props) {
|
|
4320
4132
|
switch (props.variant) {
|
|
4321
4133
|
case "card":
|
|
4322
|
-
return /* @__PURE__ */
|
|
4134
|
+
return /* @__PURE__ */ jsx89(IframeCard, { ...props });
|
|
4323
4135
|
case "responsive":
|
|
4324
|
-
return /* @__PURE__ */
|
|
4136
|
+
return /* @__PURE__ */ jsx89(IframeResponsive, { ...props });
|
|
4325
4137
|
case "simple":
|
|
4326
4138
|
default:
|
|
4327
|
-
return /* @__PURE__ */
|
|
4139
|
+
return /* @__PURE__ */ jsx89(IframeSimple, { ...props });
|
|
4328
4140
|
}
|
|
4329
4141
|
}
|
|
4330
4142
|
|
|
4331
4143
|
// src/sections/comparison/variants/comparison-table.tsx
|
|
4332
4144
|
import { Minus } from "lucide-react";
|
|
4333
|
-
import { jsx as
|
|
4145
|
+
import { jsx as jsx90, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
4334
4146
|
function ComparisonTable({ title, subtitle, content, badge, allFeatures, columns, background }) {
|
|
4335
|
-
return /* @__PURE__ */
|
|
4147
|
+
return /* @__PURE__ */ jsx90(
|
|
4336
4148
|
"section",
|
|
4337
4149
|
{
|
|
4338
4150
|
className: cn(
|
|
@@ -4345,46 +4157,46 @@ function ComparisonTable({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4345
4157
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4346
4158
|
background === "error" && "bg-error text-error-foreground"
|
|
4347
4159
|
),
|
|
4348
|
-
children: /* @__PURE__ */
|
|
4349
|
-
/* @__PURE__ */
|
|
4350
|
-
/* @__PURE__ */
|
|
4351
|
-
/* @__PURE__ */
|
|
4352
|
-
/* @__PURE__ */
|
|
4353
|
-
columns.map((col, i) => /* @__PURE__ */
|
|
4160
|
+
children: /* @__PURE__ */ jsxs63("div", { className: "container mx-auto px-4", children: [
|
|
4161
|
+
/* @__PURE__ */ jsx90(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4162
|
+
/* @__PURE__ */ jsx90("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs63("table", { className: "min-w-[600px] w-full border-collapse", children: [
|
|
4163
|
+
/* @__PURE__ */ jsx90("thead", { children: /* @__PURE__ */ jsxs63("tr", { children: [
|
|
4164
|
+
/* @__PURE__ */ jsx90("th", { className: "text-left p-4 font-semibold text-muted-foreground w-48", children: "Caracter\xEDsticas" }),
|
|
4165
|
+
columns.map((col, i) => /* @__PURE__ */ jsx90(
|
|
4354
4166
|
"th",
|
|
4355
4167
|
{
|
|
4356
4168
|
className: cn(
|
|
4357
4169
|
"p-4 text-center",
|
|
4358
4170
|
col.highlighted && "bg-primary/5 border-x border-primary"
|
|
4359
4171
|
),
|
|
4360
|
-
children: /* @__PURE__ */
|
|
4361
|
-
col.badge && /* @__PURE__ */
|
|
4362
|
-
/* @__PURE__ */
|
|
4363
|
-
col.price && /* @__PURE__ */
|
|
4172
|
+
children: /* @__PURE__ */ jsxs63("div", { className: "flex flex-col items-center gap-1", children: [
|
|
4173
|
+
col.badge && /* @__PURE__ */ jsx90(Badge, { variant: "secondary", className: "mb-1", children: col.badge }),
|
|
4174
|
+
/* @__PURE__ */ jsx90("span", { className: "font-bold text-lg", children: col.name }),
|
|
4175
|
+
col.price && /* @__PURE__ */ jsxs63("span", { className: "text-2xl font-bold", children: [
|
|
4364
4176
|
col.price,
|
|
4365
|
-
col.priceFrequency && /* @__PURE__ */
|
|
4177
|
+
col.priceFrequency && /* @__PURE__ */ jsxs63("span", { className: "text-sm font-normal text-muted-foreground", children: [
|
|
4366
4178
|
"/",
|
|
4367
4179
|
col.priceFrequency
|
|
4368
4180
|
] })
|
|
4369
4181
|
] }),
|
|
4370
|
-
col.description && /* @__PURE__ */
|
|
4182
|
+
col.description && /* @__PURE__ */ jsx90("p", { className: "text-sm text-muted-foreground", children: col.description })
|
|
4371
4183
|
] })
|
|
4372
4184
|
},
|
|
4373
4185
|
i
|
|
4374
4186
|
))
|
|
4375
4187
|
] }) }),
|
|
4376
|
-
/* @__PURE__ */
|
|
4377
|
-
/* @__PURE__ */
|
|
4188
|
+
/* @__PURE__ */ jsx90("tbody", { children: allFeatures.map((feature, fi) => /* @__PURE__ */ jsxs63("tr", { className: "border-t", children: [
|
|
4189
|
+
/* @__PURE__ */ jsx90("td", { className: "p-4 text-sm", children: feature }),
|
|
4378
4190
|
columns.map((col, ci) => {
|
|
4379
4191
|
const cell = col.cells?.[fi] ?? "";
|
|
4380
|
-
return /* @__PURE__ */
|
|
4192
|
+
return /* @__PURE__ */ jsx90(
|
|
4381
4193
|
"td",
|
|
4382
4194
|
{
|
|
4383
4195
|
className: cn(
|
|
4384
4196
|
"p-4 text-center",
|
|
4385
4197
|
col.highlighted && "bg-primary/5 border-x border-primary"
|
|
4386
4198
|
),
|
|
4387
|
-
children: cell ? /* @__PURE__ */
|
|
4199
|
+
children: cell ? /* @__PURE__ */ jsx90("span", { className: "text-base leading-none", children: cell }) : /* @__PURE__ */ jsx90(Minus, { className: "h-5 w-5 text-muted-foreground mx-auto" })
|
|
4388
4200
|
},
|
|
4389
4201
|
ci
|
|
4390
4202
|
);
|
|
@@ -4397,9 +4209,9 @@ function ComparisonTable({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4397
4209
|
}
|
|
4398
4210
|
|
|
4399
4211
|
// src/sections/comparison/variants/comparison-cards.tsx
|
|
4400
|
-
import { jsx as
|
|
4212
|
+
import { jsx as jsx91, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
4401
4213
|
function ComparisonCards({ title, subtitle, content, badge, allFeatures, columns, background }) {
|
|
4402
|
-
return /* @__PURE__ */
|
|
4214
|
+
return /* @__PURE__ */ jsx91(
|
|
4403
4215
|
"section",
|
|
4404
4216
|
{
|
|
4405
4217
|
className: cn(
|
|
@@ -4412,9 +4224,9 @@ function ComparisonCards({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4412
4224
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4413
4225
|
background === "error" && "bg-error text-error-foreground"
|
|
4414
4226
|
),
|
|
4415
|
-
children: /* @__PURE__ */
|
|
4416
|
-
/* @__PURE__ */
|
|
4417
|
-
/* @__PURE__ */
|
|
4227
|
+
children: /* @__PURE__ */ jsxs64("div", { className: "container mx-auto px-4", children: [
|
|
4228
|
+
/* @__PURE__ */ jsx91(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4229
|
+
/* @__PURE__ */ jsx91("div", { className: "flex flex-wrap justify-center gap-6 items-end", children: columns.map((col, i) => /* @__PURE__ */ jsxs64(
|
|
4418
4230
|
"div",
|
|
4419
4231
|
{
|
|
4420
4232
|
className: cn(
|
|
@@ -4422,32 +4234,32 @@ function ComparisonCards({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4422
4234
|
col.highlighted && "border-primary shadow-lg scale-105"
|
|
4423
4235
|
),
|
|
4424
4236
|
children: [
|
|
4425
|
-
col.badge && /* @__PURE__ */
|
|
4426
|
-
/* @__PURE__ */
|
|
4427
|
-
col.description && /* @__PURE__ */
|
|
4428
|
-
col.price && /* @__PURE__ */
|
|
4429
|
-
/* @__PURE__ */
|
|
4430
|
-
col.priceFrequency && /* @__PURE__ */
|
|
4237
|
+
col.badge && /* @__PURE__ */ jsx91(Badge, { variant: "secondary", className: "mb-3 self-start", children: col.badge }),
|
|
4238
|
+
/* @__PURE__ */ jsx91("h3", { className: "text-xl font-bold mb-1", children: col.name }),
|
|
4239
|
+
col.description && /* @__PURE__ */ jsx91("p", { className: "text-sm text-muted-foreground mb-4", children: col.description }),
|
|
4240
|
+
col.price && /* @__PURE__ */ jsxs64("div", { className: "mb-6", children: [
|
|
4241
|
+
/* @__PURE__ */ jsx91("span", { className: "text-4xl font-bold", children: col.price }),
|
|
4242
|
+
col.priceFrequency && /* @__PURE__ */ jsxs64("span", { className: "text-muted-foreground text-sm", children: [
|
|
4431
4243
|
"/",
|
|
4432
4244
|
col.priceFrequency
|
|
4433
4245
|
] })
|
|
4434
4246
|
] }),
|
|
4435
|
-
/* @__PURE__ */
|
|
4247
|
+
/* @__PURE__ */ jsx91("ul", { className: "space-y-2 mb-8 flex-1", children: allFeatures.map((feature, fi) => {
|
|
4436
4248
|
const cell = col.cells?.[fi] ?? "";
|
|
4437
4249
|
if (!cell) return null;
|
|
4438
|
-
return /* @__PURE__ */
|
|
4439
|
-
/* @__PURE__ */
|
|
4440
|
-
/* @__PURE__ */
|
|
4250
|
+
return /* @__PURE__ */ jsxs64("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4251
|
+
/* @__PURE__ */ jsx91("span", { className: "text-base leading-none shrink-0", children: cell }),
|
|
4252
|
+
/* @__PURE__ */ jsx91("span", { children: feature })
|
|
4441
4253
|
] }, fi);
|
|
4442
4254
|
}) }),
|
|
4443
|
-
col.cta?.label && /* @__PURE__ */
|
|
4255
|
+
col.cta?.label && /* @__PURE__ */ jsx91(
|
|
4444
4256
|
Button,
|
|
4445
4257
|
{
|
|
4446
4258
|
asChild: true,
|
|
4447
4259
|
variant: col.cta.variant ?? "default",
|
|
4448
4260
|
size: col.cta.size ?? "lg",
|
|
4449
4261
|
className: "w-full",
|
|
4450
|
-
children: /* @__PURE__ */
|
|
4262
|
+
children: /* @__PURE__ */ jsx91("a", { href: col.cta.href, children: col.cta.label })
|
|
4451
4263
|
}
|
|
4452
4264
|
)
|
|
4453
4265
|
]
|
|
@@ -4461,12 +4273,12 @@ function ComparisonCards({ title, subtitle, content, badge, allFeatures, columns
|
|
|
4461
4273
|
|
|
4462
4274
|
// src/sections/comparison/variants/comparison-highlights.tsx
|
|
4463
4275
|
import { Check as Check2, Minus as Minus2 } from "lucide-react";
|
|
4464
|
-
import { jsx as
|
|
4276
|
+
import { jsx as jsx92, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
4465
4277
|
function ComparisonHighlights({ title, subtitle, content, badge, allFeatures, columns, background }) {
|
|
4466
4278
|
const hasValue = (col, fi) => !!(col.cells?.[fi] ?? "");
|
|
4467
4279
|
const sharedRows = allFeatures.filter((_, fi) => columns.every((col) => hasValue(col, fi)));
|
|
4468
4280
|
const differingRows = allFeatures.map((f, fi) => ({ f, fi })).filter(({ fi }) => !columns.every((col) => hasValue(col, fi)));
|
|
4469
|
-
return /* @__PURE__ */
|
|
4281
|
+
return /* @__PURE__ */ jsx92(
|
|
4470
4282
|
"section",
|
|
4471
4283
|
{
|
|
4472
4284
|
className: cn(
|
|
@@ -4479,27 +4291,27 @@ function ComparisonHighlights({ title, subtitle, content, badge, allFeatures, co
|
|
|
4479
4291
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4480
4292
|
background === "error" && "bg-error text-error-foreground"
|
|
4481
4293
|
),
|
|
4482
|
-
children: /* @__PURE__ */
|
|
4483
|
-
/* @__PURE__ */
|
|
4484
|
-
sharedRows.length > 0 && /* @__PURE__ */
|
|
4485
|
-
/* @__PURE__ */
|
|
4486
|
-
/* @__PURE__ */
|
|
4487
|
-
/* @__PURE__ */
|
|
4488
|
-
/* @__PURE__ */
|
|
4294
|
+
children: /* @__PURE__ */ jsxs65("div", { className: "container mx-auto px-4", children: [
|
|
4295
|
+
/* @__PURE__ */ jsx92(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4296
|
+
sharedRows.length > 0 && /* @__PURE__ */ jsxs65("div", { className: "mb-12", children: [
|
|
4297
|
+
/* @__PURE__ */ jsx92("h3", { className: "text-lg font-semibold mb-4", children: "Todos los planes incluyen" }),
|
|
4298
|
+
/* @__PURE__ */ jsx92("ul", { className: "grid sm:grid-cols-2 gap-2", children: sharedRows.map((feature, i) => /* @__PURE__ */ jsxs65("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4299
|
+
/* @__PURE__ */ jsx92(Check2, { className: "h-4 w-4 text-green-500 shrink-0" }),
|
|
4300
|
+
/* @__PURE__ */ jsx92("span", { children: feature })
|
|
4489
4301
|
] }, i)) })
|
|
4490
4302
|
] }),
|
|
4491
|
-
differingRows.length > 0 && /* @__PURE__ */
|
|
4492
|
-
/* @__PURE__ */
|
|
4493
|
-
/* @__PURE__ */
|
|
4494
|
-
/* @__PURE__ */
|
|
4495
|
-
/* @__PURE__ */
|
|
4496
|
-
columns.map((col, i) => /* @__PURE__ */
|
|
4303
|
+
differingRows.length > 0 && /* @__PURE__ */ jsxs65("div", { children: [
|
|
4304
|
+
/* @__PURE__ */ jsx92("h3", { className: "text-lg font-semibold mb-4", children: "Lo que cambia entre planes" }),
|
|
4305
|
+
/* @__PURE__ */ jsx92("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs65("table", { className: "min-w-[500px] w-full border-collapse text-sm", children: [
|
|
4306
|
+
/* @__PURE__ */ jsx92("thead", { children: /* @__PURE__ */ jsxs65("tr", { className: "border-b", children: [
|
|
4307
|
+
/* @__PURE__ */ jsx92("th", { className: "text-left p-3 text-muted-foreground font-medium w-48", children: "Caracter\xEDstica" }),
|
|
4308
|
+
columns.map((col, i) => /* @__PURE__ */ jsx92("th", { className: "p-3 text-center font-semibold", children: col.name }, i))
|
|
4497
4309
|
] }) }),
|
|
4498
|
-
/* @__PURE__ */
|
|
4499
|
-
/* @__PURE__ */
|
|
4310
|
+
/* @__PURE__ */ jsx92("tbody", { children: differingRows.map(({ f: feature, fi }) => /* @__PURE__ */ jsxs65("tr", { className: "border-b last:border-0", children: [
|
|
4311
|
+
/* @__PURE__ */ jsx92("td", { className: "p-3", children: feature }),
|
|
4500
4312
|
columns.map((col, ci) => {
|
|
4501
4313
|
const cell = col.cells?.[fi] ?? "";
|
|
4502
|
-
return /* @__PURE__ */
|
|
4314
|
+
return /* @__PURE__ */ jsx92("td", { className: "p-3 text-center", children: cell ? /* @__PURE__ */ jsx92("span", { className: "text-base leading-none", children: cell }) : /* @__PURE__ */ jsx92(Minus2, { className: "h-4 w-4 text-muted-foreground mx-auto" }) }, ci);
|
|
4503
4315
|
})
|
|
4504
4316
|
] }, fi)) })
|
|
4505
4317
|
] }) })
|
|
@@ -4510,22 +4322,22 @@ function ComparisonHighlights({ title, subtitle, content, badge, allFeatures, co
|
|
|
4510
4322
|
}
|
|
4511
4323
|
|
|
4512
4324
|
// src/sections/comparison/index.tsx
|
|
4513
|
-
import { jsx as
|
|
4325
|
+
import { jsx as jsx93 } from "react/jsx-runtime";
|
|
4514
4326
|
function Comparison(props) {
|
|
4515
4327
|
switch (props.variant) {
|
|
4516
4328
|
case "cards":
|
|
4517
|
-
return /* @__PURE__ */
|
|
4329
|
+
return /* @__PURE__ */ jsx93(ComparisonCards, { ...props });
|
|
4518
4330
|
case "highlights":
|
|
4519
|
-
return /* @__PURE__ */
|
|
4331
|
+
return /* @__PURE__ */ jsx93(ComparisonHighlights, { ...props });
|
|
4520
4332
|
case "table":
|
|
4521
4333
|
default:
|
|
4522
|
-
return /* @__PURE__ */
|
|
4334
|
+
return /* @__PURE__ */ jsx93(ComparisonTable, { ...props });
|
|
4523
4335
|
}
|
|
4524
4336
|
}
|
|
4525
4337
|
|
|
4526
4338
|
// src/sections/duplex/variants/duplex-image-left.tsx
|
|
4527
4339
|
import { Check as Check3 } from "lucide-react";
|
|
4528
|
-
import { jsx as
|
|
4340
|
+
import { jsx as jsx94, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
4529
4341
|
function DuplexImageLeft({
|
|
4530
4342
|
badge,
|
|
4531
4343
|
heading,
|
|
@@ -4538,7 +4350,7 @@ function DuplexImageLeft({
|
|
|
4538
4350
|
bullets,
|
|
4539
4351
|
background
|
|
4540
4352
|
}) {
|
|
4541
|
-
return /* @__PURE__ */
|
|
4353
|
+
return /* @__PURE__ */ jsx94(
|
|
4542
4354
|
"section",
|
|
4543
4355
|
{
|
|
4544
4356
|
className: cn(
|
|
@@ -4551,8 +4363,8 @@ function DuplexImageLeft({
|
|
|
4551
4363
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4552
4364
|
background === "error" && "bg-error text-error-foreground"
|
|
4553
4365
|
),
|
|
4554
|
-
children: /* @__PURE__ */
|
|
4555
|
-
/* @__PURE__ */
|
|
4366
|
+
children: /* @__PURE__ */ jsx94("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxs66("div", { className: "grid items-center gap-12 lg:grid-cols-2", children: [
|
|
4367
|
+
/* @__PURE__ */ jsx94("div", { children: videoUrl ? /* @__PURE__ */ jsx94(
|
|
4556
4368
|
"video",
|
|
4557
4369
|
{
|
|
4558
4370
|
src: videoUrl,
|
|
@@ -4562,32 +4374,32 @@ function DuplexImageLeft({
|
|
|
4562
4374
|
loop: true,
|
|
4563
4375
|
playsInline: true
|
|
4564
4376
|
}
|
|
4565
|
-
) : image?.url ? /* @__PURE__ */
|
|
4377
|
+
) : image?.url ? /* @__PURE__ */ jsx94(
|
|
4566
4378
|
"img",
|
|
4567
4379
|
{
|
|
4568
4380
|
src: image.url,
|
|
4569
4381
|
alt: image.alt ?? heading,
|
|
4570
4382
|
className: "w-full rounded-2xl shadow-lg object-cover"
|
|
4571
4383
|
}
|
|
4572
|
-
) : /* @__PURE__ */
|
|
4573
|
-
/* @__PURE__ */
|
|
4574
|
-
badge && /* @__PURE__ */
|
|
4575
|
-
/* @__PURE__ */
|
|
4576
|
-
body && /* @__PURE__ */
|
|
4577
|
-
content && /* @__PURE__ */
|
|
4384
|
+
) : /* @__PURE__ */ jsx94("div", { className: "w-full h-64 rounded-2xl bg-muted" }) }),
|
|
4385
|
+
/* @__PURE__ */ jsxs66("div", { children: [
|
|
4386
|
+
badge && /* @__PURE__ */ jsx94(Badge, { variant: "secondary", className: "mb-4", children: badge }),
|
|
4387
|
+
/* @__PURE__ */ jsx94("h2", { className: "text-2xl sm:text-3xl md:text-4xl font-bold", children: heading }),
|
|
4388
|
+
body && /* @__PURE__ */ jsx94("p", { className: "text-muted-foreground text-lg mt-4", children: body }),
|
|
4389
|
+
content && /* @__PURE__ */ jsx94(
|
|
4578
4390
|
"div",
|
|
4579
4391
|
{
|
|
4580
4392
|
className: "richtext-content mt-4 text-muted-foreground",
|
|
4581
4393
|
dangerouslySetInnerHTML: { __html: content }
|
|
4582
4394
|
}
|
|
4583
4395
|
),
|
|
4584
|
-
bullets && bullets.length > 0 && /* @__PURE__ */
|
|
4585
|
-
/* @__PURE__ */
|
|
4586
|
-
/* @__PURE__ */
|
|
4396
|
+
bullets && bullets.length > 0 && /* @__PURE__ */ jsx94("ul", { className: "mt-4 space-y-2", children: bullets.map((bullet, i) => /* @__PURE__ */ jsxs66("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4397
|
+
/* @__PURE__ */ jsx94(Check3, { className: "h-4 w-4 text-green-500 shrink-0" }),
|
|
4398
|
+
/* @__PURE__ */ jsx94("span", { children: bullet })
|
|
4587
4399
|
] }, i)) }),
|
|
4588
|
-
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */
|
|
4589
|
-
primaryCTA?.label && /* @__PURE__ */
|
|
4590
|
-
secondaryCTA?.label && /* @__PURE__ */
|
|
4400
|
+
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */ jsxs66("div", { className: "flex flex-wrap gap-3 mt-6", children: [
|
|
4401
|
+
primaryCTA?.label && /* @__PURE__ */ jsx94(Button, { asChild: true, variant: primaryCTA.variant ?? "default", size: primaryCTA.size ?? "lg", children: /* @__PURE__ */ jsx94("a", { href: primaryCTA.href, children: primaryCTA.label }) }),
|
|
4402
|
+
secondaryCTA?.label && /* @__PURE__ */ jsx94(Button, { asChild: true, variant: secondaryCTA.variant ?? "outline", size: secondaryCTA.size ?? "lg", children: /* @__PURE__ */ jsx94("a", { href: secondaryCTA.href, children: secondaryCTA.label }) })
|
|
4591
4403
|
] })
|
|
4592
4404
|
] })
|
|
4593
4405
|
] }) })
|
|
@@ -4597,7 +4409,7 @@ function DuplexImageLeft({
|
|
|
4597
4409
|
|
|
4598
4410
|
// src/sections/duplex/variants/duplex-image-right.tsx
|
|
4599
4411
|
import { Check as Check4 } from "lucide-react";
|
|
4600
|
-
import { jsx as
|
|
4412
|
+
import { jsx as jsx95, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
4601
4413
|
function DuplexImageRight({
|
|
4602
4414
|
badge,
|
|
4603
4415
|
heading,
|
|
@@ -4610,7 +4422,7 @@ function DuplexImageRight({
|
|
|
4610
4422
|
bullets,
|
|
4611
4423
|
background
|
|
4612
4424
|
}) {
|
|
4613
|
-
return /* @__PURE__ */
|
|
4425
|
+
return /* @__PURE__ */ jsx95(
|
|
4614
4426
|
"section",
|
|
4615
4427
|
{
|
|
4616
4428
|
className: cn(
|
|
@@ -4623,28 +4435,28 @@ function DuplexImageRight({
|
|
|
4623
4435
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4624
4436
|
background === "error" && "bg-error text-error-foreground"
|
|
4625
4437
|
),
|
|
4626
|
-
children: /* @__PURE__ */
|
|
4627
|
-
/* @__PURE__ */
|
|
4628
|
-
badge && /* @__PURE__ */
|
|
4629
|
-
/* @__PURE__ */
|
|
4630
|
-
body && /* @__PURE__ */
|
|
4631
|
-
content && /* @__PURE__ */
|
|
4438
|
+
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: [
|
|
4439
|
+
/* @__PURE__ */ jsxs67("div", { children: [
|
|
4440
|
+
badge && /* @__PURE__ */ jsx95(Badge, { variant: "secondary", className: "mb-4", children: badge }),
|
|
4441
|
+
/* @__PURE__ */ jsx95("h2", { className: "text-2xl sm:text-3xl md:text-4xl font-bold", children: heading }),
|
|
4442
|
+
body && /* @__PURE__ */ jsx95("p", { className: "text-muted-foreground text-lg mt-4", children: body }),
|
|
4443
|
+
content && /* @__PURE__ */ jsx95(
|
|
4632
4444
|
"div",
|
|
4633
4445
|
{
|
|
4634
4446
|
className: "richtext-content mt-4 text-muted-foreground",
|
|
4635
4447
|
dangerouslySetInnerHTML: { __html: content }
|
|
4636
4448
|
}
|
|
4637
4449
|
),
|
|
4638
|
-
bullets && bullets.length > 0 && /* @__PURE__ */
|
|
4639
|
-
/* @__PURE__ */
|
|
4640
|
-
/* @__PURE__ */
|
|
4450
|
+
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: [
|
|
4451
|
+
/* @__PURE__ */ jsx95(Check4, { className: "h-4 w-4 text-green-500 shrink-0" }),
|
|
4452
|
+
/* @__PURE__ */ jsx95("span", { children: bullet })
|
|
4641
4453
|
] }, i)) }),
|
|
4642
|
-
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */
|
|
4643
|
-
primaryCTA?.label && /* @__PURE__ */
|
|
4644
|
-
secondaryCTA?.label && /* @__PURE__ */
|
|
4454
|
+
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */ jsxs67("div", { className: "flex flex-wrap gap-3 mt-6", children: [
|
|
4455
|
+
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 }) }),
|
|
4456
|
+
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 }) })
|
|
4645
4457
|
] })
|
|
4646
4458
|
] }),
|
|
4647
|
-
/* @__PURE__ */
|
|
4459
|
+
/* @__PURE__ */ jsx95("div", { children: videoUrl ? /* @__PURE__ */ jsx95(
|
|
4648
4460
|
"video",
|
|
4649
4461
|
{
|
|
4650
4462
|
src: videoUrl,
|
|
@@ -4654,14 +4466,14 @@ function DuplexImageRight({
|
|
|
4654
4466
|
loop: true,
|
|
4655
4467
|
playsInline: true
|
|
4656
4468
|
}
|
|
4657
|
-
) : image?.url ? /* @__PURE__ */
|
|
4469
|
+
) : image?.url ? /* @__PURE__ */ jsx95(
|
|
4658
4470
|
"img",
|
|
4659
4471
|
{
|
|
4660
4472
|
src: image.url,
|
|
4661
4473
|
alt: image.alt ?? heading,
|
|
4662
4474
|
className: "w-full rounded-2xl shadow-lg object-cover"
|
|
4663
4475
|
}
|
|
4664
|
-
) : /* @__PURE__ */
|
|
4476
|
+
) : /* @__PURE__ */ jsx95("div", { className: "w-full h-64 rounded-2xl bg-muted" }) })
|
|
4665
4477
|
] }) })
|
|
4666
4478
|
}
|
|
4667
4479
|
);
|
|
@@ -4669,7 +4481,7 @@ function DuplexImageRight({
|
|
|
4669
4481
|
|
|
4670
4482
|
// src/sections/duplex/variants/duplex-stacked.tsx
|
|
4671
4483
|
import { Check as Check5 } from "lucide-react";
|
|
4672
|
-
import { jsx as
|
|
4484
|
+
import { jsx as jsx96, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
4673
4485
|
function DuplexStacked({
|
|
4674
4486
|
badge,
|
|
4675
4487
|
heading,
|
|
@@ -4682,7 +4494,7 @@ function DuplexStacked({
|
|
|
4682
4494
|
bullets,
|
|
4683
4495
|
background
|
|
4684
4496
|
}) {
|
|
4685
|
-
return /* @__PURE__ */
|
|
4497
|
+
return /* @__PURE__ */ jsx96(
|
|
4686
4498
|
"section",
|
|
4687
4499
|
{
|
|
4688
4500
|
className: cn(
|
|
@@ -4695,28 +4507,28 @@ function DuplexStacked({
|
|
|
4695
4507
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4696
4508
|
background === "error" && "bg-error text-error-foreground"
|
|
4697
4509
|
),
|
|
4698
|
-
children: /* @__PURE__ */
|
|
4699
|
-
/* @__PURE__ */
|
|
4700
|
-
badge && /* @__PURE__ */
|
|
4701
|
-
/* @__PURE__ */
|
|
4702
|
-
body && /* @__PURE__ */
|
|
4703
|
-
content && /* @__PURE__ */
|
|
4510
|
+
children: /* @__PURE__ */ jsxs68("div", { className: "container mx-auto px-4", children: [
|
|
4511
|
+
/* @__PURE__ */ jsxs68("div", { className: "max-w-2xl mx-auto text-center mb-10", children: [
|
|
4512
|
+
badge && /* @__PURE__ */ jsx96(Badge, { variant: "secondary", className: "mb-4", children: badge }),
|
|
4513
|
+
/* @__PURE__ */ jsx96("h2", { className: "text-2xl sm:text-3xl md:text-4xl font-bold", children: heading }),
|
|
4514
|
+
body && /* @__PURE__ */ jsx96("p", { className: "text-muted-foreground text-lg mt-4", children: body }),
|
|
4515
|
+
content && /* @__PURE__ */ jsx96(
|
|
4704
4516
|
"div",
|
|
4705
4517
|
{
|
|
4706
4518
|
className: "richtext-content mt-4 text-muted-foreground",
|
|
4707
4519
|
dangerouslySetInnerHTML: { __html: content }
|
|
4708
4520
|
}
|
|
4709
4521
|
),
|
|
4710
|
-
bullets && bullets.length > 0 && /* @__PURE__ */
|
|
4711
|
-
/* @__PURE__ */
|
|
4712
|
-
/* @__PURE__ */
|
|
4522
|
+
bullets && bullets.length > 0 && /* @__PURE__ */ jsx96("ul", { className: "mt-4 space-y-2 text-left inline-block", children: bullets.map((bullet, i) => /* @__PURE__ */ jsxs68("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
4523
|
+
/* @__PURE__ */ jsx96(Check5, { className: "h-4 w-4 text-green-500 shrink-0" }),
|
|
4524
|
+
/* @__PURE__ */ jsx96("span", { children: bullet })
|
|
4713
4525
|
] }, i)) }),
|
|
4714
|
-
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */
|
|
4715
|
-
primaryCTA?.label && /* @__PURE__ */
|
|
4716
|
-
secondaryCTA?.label && /* @__PURE__ */
|
|
4526
|
+
(primaryCTA?.label || secondaryCTA?.label) && /* @__PURE__ */ jsxs68("div", { className: "flex flex-wrap justify-center gap-3 mt-6", children: [
|
|
4527
|
+
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 }) }),
|
|
4528
|
+
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 }) })
|
|
4717
4529
|
] })
|
|
4718
4530
|
] }),
|
|
4719
|
-
videoUrl ? /* @__PURE__ */
|
|
4531
|
+
videoUrl ? /* @__PURE__ */ jsx96(
|
|
4720
4532
|
"video",
|
|
4721
4533
|
{
|
|
4722
4534
|
src: videoUrl,
|
|
@@ -4726,7 +4538,7 @@ function DuplexStacked({
|
|
|
4726
4538
|
loop: true,
|
|
4727
4539
|
playsInline: true
|
|
4728
4540
|
}
|
|
4729
|
-
) : image?.url ? /* @__PURE__ */
|
|
4541
|
+
) : image?.url ? /* @__PURE__ */ jsx96(
|
|
4730
4542
|
"img",
|
|
4731
4543
|
{
|
|
4732
4544
|
src: image.url,
|
|
@@ -4740,23 +4552,23 @@ function DuplexStacked({
|
|
|
4740
4552
|
}
|
|
4741
4553
|
|
|
4742
4554
|
// src/sections/duplex/index.tsx
|
|
4743
|
-
import { jsx as
|
|
4555
|
+
import { jsx as jsx97 } from "react/jsx-runtime";
|
|
4744
4556
|
function Duplex(props) {
|
|
4745
4557
|
switch (props.variant) {
|
|
4746
4558
|
case "image-right":
|
|
4747
|
-
return /* @__PURE__ */
|
|
4559
|
+
return /* @__PURE__ */ jsx97(DuplexImageRight, { ...props });
|
|
4748
4560
|
case "stacked":
|
|
4749
|
-
return /* @__PURE__ */
|
|
4561
|
+
return /* @__PURE__ */ jsx97(DuplexStacked, { ...props });
|
|
4750
4562
|
case "image-left":
|
|
4751
4563
|
default:
|
|
4752
|
-
return /* @__PURE__ */
|
|
4564
|
+
return /* @__PURE__ */ jsx97(DuplexImageLeft, { ...props });
|
|
4753
4565
|
}
|
|
4754
4566
|
}
|
|
4755
4567
|
|
|
4756
4568
|
// src/sections/richtext/variants/richtext-centered.tsx
|
|
4757
|
-
import { jsx as
|
|
4569
|
+
import { jsx as jsx98, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
4758
4570
|
function RichtextCentered({ title, subtitle, badge, content, background }) {
|
|
4759
|
-
return /* @__PURE__ */
|
|
4571
|
+
return /* @__PURE__ */ jsx98(
|
|
4760
4572
|
"section",
|
|
4761
4573
|
{
|
|
4762
4574
|
className: cn(
|
|
@@ -4769,9 +4581,9 @@ function RichtextCentered({ title, subtitle, badge, content, background }) {
|
|
|
4769
4581
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4770
4582
|
background === "error" && "bg-error text-error-foreground"
|
|
4771
4583
|
),
|
|
4772
|
-
children: /* @__PURE__ */
|
|
4773
|
-
/* @__PURE__ */
|
|
4774
|
-
/* @__PURE__ */
|
|
4584
|
+
children: /* @__PURE__ */ jsxs69("div", { className: "container mx-auto px-4", children: [
|
|
4585
|
+
/* @__PURE__ */ jsx98(SectionHeader, { title, subtitle, badge, background }),
|
|
4586
|
+
/* @__PURE__ */ jsx98(
|
|
4775
4587
|
"div",
|
|
4776
4588
|
{
|
|
4777
4589
|
className: "richtext-content mx-auto max-w-2xl",
|
|
@@ -4784,9 +4596,9 @@ function RichtextCentered({ title, subtitle, badge, content, background }) {
|
|
|
4784
4596
|
}
|
|
4785
4597
|
|
|
4786
4598
|
// src/sections/richtext/variants/richtext-wide.tsx
|
|
4787
|
-
import { jsx as
|
|
4599
|
+
import { jsx as jsx99, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
4788
4600
|
function RichtextWide({ title, subtitle, badge, content, background }) {
|
|
4789
|
-
return /* @__PURE__ */
|
|
4601
|
+
return /* @__PURE__ */ jsx99(
|
|
4790
4602
|
"section",
|
|
4791
4603
|
{
|
|
4792
4604
|
className: cn(
|
|
@@ -4799,9 +4611,9 @@ function RichtextWide({ title, subtitle, badge, content, background }) {
|
|
|
4799
4611
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4800
4612
|
background === "error" && "bg-error text-error-foreground"
|
|
4801
4613
|
),
|
|
4802
|
-
children: /* @__PURE__ */
|
|
4803
|
-
/* @__PURE__ */
|
|
4804
|
-
/* @__PURE__ */
|
|
4614
|
+
children: /* @__PURE__ */ jsxs70("div", { className: "container mx-auto px-4", children: [
|
|
4615
|
+
/* @__PURE__ */ jsx99(SectionHeader, { title, subtitle, badge, background }),
|
|
4616
|
+
/* @__PURE__ */ jsx99(
|
|
4805
4617
|
"div",
|
|
4806
4618
|
{
|
|
4807
4619
|
className: "richtext-content mx-auto max-w-4xl",
|
|
@@ -4814,9 +4626,9 @@ function RichtextWide({ title, subtitle, badge, content, background }) {
|
|
|
4814
4626
|
}
|
|
4815
4627
|
|
|
4816
4628
|
// src/sections/richtext/variants/richtext-two-column.tsx
|
|
4817
|
-
import { jsx as
|
|
4629
|
+
import { jsx as jsx100, jsxs as jsxs71 } from "react/jsx-runtime";
|
|
4818
4630
|
function RichtextTwoColumn({ title, subtitle, badge, content, background }) {
|
|
4819
|
-
return /* @__PURE__ */
|
|
4631
|
+
return /* @__PURE__ */ jsx100(
|
|
4820
4632
|
"section",
|
|
4821
4633
|
{
|
|
4822
4634
|
className: cn(
|
|
@@ -4829,9 +4641,9 @@ function RichtextTwoColumn({ title, subtitle, badge, content, background }) {
|
|
|
4829
4641
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4830
4642
|
background === "error" && "bg-error text-error-foreground"
|
|
4831
4643
|
),
|
|
4832
|
-
children: /* @__PURE__ */
|
|
4833
|
-
/* @__PURE__ */
|
|
4834
|
-
/* @__PURE__ */
|
|
4644
|
+
children: /* @__PURE__ */ jsxs71("div", { className: "container mx-auto px-4", children: [
|
|
4645
|
+
/* @__PURE__ */ jsx100(SectionHeader, { title, subtitle, badge, background }),
|
|
4646
|
+
/* @__PURE__ */ jsx100(
|
|
4835
4647
|
"div",
|
|
4836
4648
|
{
|
|
4837
4649
|
className: "richtext-content [column-count:1] lg:[column-count:2] gap-8 [&>*]:break-inside-avoid",
|
|
@@ -4844,28 +4656,28 @@ function RichtextTwoColumn({ title, subtitle, badge, content, background }) {
|
|
|
4844
4656
|
}
|
|
4845
4657
|
|
|
4846
4658
|
// src/sections/richtext/index.tsx
|
|
4847
|
-
import { jsx as
|
|
4659
|
+
import { jsx as jsx101 } from "react/jsx-runtime";
|
|
4848
4660
|
function Richtext(props) {
|
|
4849
4661
|
switch (props.variant) {
|
|
4850
4662
|
case "wide":
|
|
4851
|
-
return /* @__PURE__ */
|
|
4663
|
+
return /* @__PURE__ */ jsx101(RichtextWide, { ...props });
|
|
4852
4664
|
case "two-column":
|
|
4853
|
-
return /* @__PURE__ */
|
|
4665
|
+
return /* @__PURE__ */ jsx101(RichtextTwoColumn, { ...props });
|
|
4854
4666
|
case "centered":
|
|
4855
4667
|
default:
|
|
4856
|
-
return /* @__PURE__ */
|
|
4668
|
+
return /* @__PURE__ */ jsx101(RichtextCentered, { ...props });
|
|
4857
4669
|
}
|
|
4858
4670
|
}
|
|
4859
4671
|
|
|
4860
4672
|
// src/sections/video/video-player.tsx
|
|
4861
|
-
import { jsx as
|
|
4673
|
+
import { jsx as jsx102 } from "react/jsx-runtime";
|
|
4862
4674
|
function VideoPlayer({ url, poster, autoplay, loop, muted, className, title }) {
|
|
4863
4675
|
const parsed = parseVideoUrl(url);
|
|
4864
4676
|
if (!parsed) {
|
|
4865
|
-
return /* @__PURE__ */
|
|
4677
|
+
return /* @__PURE__ */ jsx102("div", { className: `bg-muted flex items-center justify-center rounded-xl ${className ?? ""}`, children: /* @__PURE__ */ jsx102("p", { className: "text-muted-foreground text-sm", children: "URL de video no v\xE1lida" }) });
|
|
4866
4678
|
}
|
|
4867
4679
|
if (parsed.type === "native") {
|
|
4868
|
-
return /* @__PURE__ */
|
|
4680
|
+
return /* @__PURE__ */ jsx102(
|
|
4869
4681
|
"video",
|
|
4870
4682
|
{
|
|
4871
4683
|
src: parsed.embedUrl,
|
|
@@ -4880,7 +4692,7 @@ function VideoPlayer({ url, poster, autoplay, loop, muted, className, title }) {
|
|
|
4880
4692
|
);
|
|
4881
4693
|
}
|
|
4882
4694
|
const src = autoplay ? `${parsed.embedUrl}&autoplay=1&mute=1` : parsed.embedUrl;
|
|
4883
|
-
return /* @__PURE__ */
|
|
4695
|
+
return /* @__PURE__ */ jsx102(
|
|
4884
4696
|
"iframe",
|
|
4885
4697
|
{
|
|
4886
4698
|
src,
|
|
@@ -4893,9 +4705,9 @@ function VideoPlayer({ url, poster, autoplay, loop, muted, className, title }) {
|
|
|
4893
4705
|
}
|
|
4894
4706
|
|
|
4895
4707
|
// src/sections/video/variants/video-full.tsx
|
|
4896
|
-
import { jsx as
|
|
4708
|
+
import { jsx as jsx103, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
4897
4709
|
function VideoFull({ title, subtitle, content, badge, videoUrl, poster, autoplay, loop, muted, background }) {
|
|
4898
|
-
return /* @__PURE__ */
|
|
4710
|
+
return /* @__PURE__ */ jsx103(
|
|
4899
4711
|
"section",
|
|
4900
4712
|
{
|
|
4901
4713
|
className: cn(
|
|
@@ -4908,9 +4720,9 @@ function VideoFull({ title, subtitle, content, badge, videoUrl, poster, autoplay
|
|
|
4908
4720
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4909
4721
|
background === "error" && "bg-error text-error-foreground"
|
|
4910
4722
|
),
|
|
4911
|
-
children: /* @__PURE__ */
|
|
4912
|
-
/* @__PURE__ */
|
|
4913
|
-
/* @__PURE__ */
|
|
4723
|
+
children: /* @__PURE__ */ jsxs72("div", { className: "container mx-auto px-4", children: [
|
|
4724
|
+
/* @__PURE__ */ jsx103(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4725
|
+
/* @__PURE__ */ jsx103("div", { className: "aspect-video w-full overflow-hidden rounded-xl shadow-lg", children: /* @__PURE__ */ jsx103(
|
|
4914
4726
|
VideoPlayer,
|
|
4915
4727
|
{
|
|
4916
4728
|
url: videoUrl,
|
|
@@ -4928,9 +4740,9 @@ function VideoFull({ title, subtitle, content, badge, videoUrl, poster, autoplay
|
|
|
4928
4740
|
}
|
|
4929
4741
|
|
|
4930
4742
|
// src/sections/video/variants/video-contained.tsx
|
|
4931
|
-
import { jsx as
|
|
4743
|
+
import { jsx as jsx104, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
4932
4744
|
function VideoContained({ title, subtitle, content, badge, videoUrl, poster, autoplay, loop, muted, background }) {
|
|
4933
|
-
return /* @__PURE__ */
|
|
4745
|
+
return /* @__PURE__ */ jsx104(
|
|
4934
4746
|
"section",
|
|
4935
4747
|
{
|
|
4936
4748
|
className: cn(
|
|
@@ -4943,9 +4755,9 @@ function VideoContained({ title, subtitle, content, badge, videoUrl, poster, aut
|
|
|
4943
4755
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4944
4756
|
background === "error" && "bg-error text-error-foreground"
|
|
4945
4757
|
),
|
|
4946
|
-
children: /* @__PURE__ */
|
|
4947
|
-
/* @__PURE__ */
|
|
4948
|
-
/* @__PURE__ */
|
|
4758
|
+
children: /* @__PURE__ */ jsxs73("div", { className: "container mx-auto px-4", children: [
|
|
4759
|
+
/* @__PURE__ */ jsx104(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4760
|
+
/* @__PURE__ */ jsx104("div", { className: "max-w-4xl mx-auto", children: /* @__PURE__ */ jsx104("div", { className: "aspect-video w-full overflow-hidden rounded-xl shadow-lg", children: /* @__PURE__ */ jsx104(
|
|
4949
4761
|
VideoPlayer,
|
|
4950
4762
|
{
|
|
4951
4763
|
url: videoUrl,
|
|
@@ -4963,9 +4775,9 @@ function VideoContained({ title, subtitle, content, badge, videoUrl, poster, aut
|
|
|
4963
4775
|
}
|
|
4964
4776
|
|
|
4965
4777
|
// src/sections/video/variants/video-with-text.tsx
|
|
4966
|
-
import { jsx as
|
|
4778
|
+
import { jsx as jsx105, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
4967
4779
|
function VideoWithText({ title, subtitle, content, badge, videoUrl, poster, autoplay, loop, muted, background }) {
|
|
4968
|
-
return /* @__PURE__ */
|
|
4780
|
+
return /* @__PURE__ */ jsx105(
|
|
4969
4781
|
"section",
|
|
4970
4782
|
{
|
|
4971
4783
|
className: cn(
|
|
@@ -4978,8 +4790,8 @@ function VideoWithText({ title, subtitle, content, badge, videoUrl, poster, auto
|
|
|
4978
4790
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
4979
4791
|
background === "error" && "bg-error text-error-foreground"
|
|
4980
4792
|
),
|
|
4981
|
-
children: /* @__PURE__ */
|
|
4982
|
-
/* @__PURE__ */
|
|
4793
|
+
children: /* @__PURE__ */ jsx105("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxs74("div", { className: "grid gap-12 items-center lg:grid-cols-2", children: [
|
|
4794
|
+
/* @__PURE__ */ jsx105("div", { className: "aspect-video overflow-hidden rounded-xl shadow-lg", children: /* @__PURE__ */ jsx105(
|
|
4983
4795
|
VideoPlayer,
|
|
4984
4796
|
{
|
|
4985
4797
|
url: videoUrl,
|
|
@@ -4991,30 +4803,30 @@ function VideoWithText({ title, subtitle, content, badge, videoUrl, poster, auto
|
|
|
4991
4803
|
className: "h-full w-full"
|
|
4992
4804
|
}
|
|
4993
4805
|
) }),
|
|
4994
|
-
/* @__PURE__ */
|
|
4806
|
+
/* @__PURE__ */ jsx105("div", { children: /* @__PURE__ */ jsx105(SectionHeader, { title, subtitle, badge, content, background, align: "left", className: "mb-0" }) })
|
|
4995
4807
|
] }) })
|
|
4996
4808
|
}
|
|
4997
4809
|
);
|
|
4998
4810
|
}
|
|
4999
4811
|
|
|
5000
4812
|
// src/sections/video/index.tsx
|
|
5001
|
-
import { jsx as
|
|
4813
|
+
import { jsx as jsx106 } from "react/jsx-runtime";
|
|
5002
4814
|
function VideoSection(props) {
|
|
5003
4815
|
switch (props.variant) {
|
|
5004
4816
|
case "contained":
|
|
5005
|
-
return /* @__PURE__ */
|
|
4817
|
+
return /* @__PURE__ */ jsx106(VideoContained, { ...props });
|
|
5006
4818
|
case "with-text":
|
|
5007
|
-
return /* @__PURE__ */
|
|
4819
|
+
return /* @__PURE__ */ jsx106(VideoWithText, { ...props });
|
|
5008
4820
|
case "full":
|
|
5009
4821
|
default:
|
|
5010
|
-
return /* @__PURE__ */
|
|
4822
|
+
return /* @__PURE__ */ jsx106(VideoFull, { ...props });
|
|
5011
4823
|
}
|
|
5012
4824
|
}
|
|
5013
4825
|
|
|
5014
4826
|
// src/sections/newsletter/newsletter-form.tsx
|
|
5015
|
-
import { useState as
|
|
4827
|
+
import { useState as useState14 } from "react";
|
|
5016
4828
|
import { CheckCircle, Loader2, Mail as Mail3 } from "lucide-react";
|
|
5017
|
-
import { Fragment, jsx as
|
|
4829
|
+
import { Fragment, jsx as jsx107, jsxs as jsxs75 } from "react/jsx-runtime";
|
|
5018
4830
|
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";
|
|
5019
4831
|
function NewsletterForm({
|
|
5020
4832
|
buttonLabel = "Suscribirme",
|
|
@@ -5023,9 +4835,9 @@ function NewsletterForm({
|
|
|
5023
4835
|
layout = "stacked",
|
|
5024
4836
|
className
|
|
5025
4837
|
}) {
|
|
5026
|
-
const [email, setEmail] =
|
|
5027
|
-
const [status, setStatus] =
|
|
5028
|
-
const [errorMsg, setErrorMsg] =
|
|
4838
|
+
const [email, setEmail] = useState14("");
|
|
4839
|
+
const [status, setStatus] = useState14("idle");
|
|
4840
|
+
const [errorMsg, setErrorMsg] = useState14("");
|
|
5029
4841
|
const handleSubmit = async (e) => {
|
|
5030
4842
|
e.preventDefault();
|
|
5031
4843
|
setStatus("loading");
|
|
@@ -5048,12 +4860,12 @@ function NewsletterForm({
|
|
|
5048
4860
|
}
|
|
5049
4861
|
};
|
|
5050
4862
|
if (status === "success") {
|
|
5051
|
-
return /* @__PURE__ */
|
|
5052
|
-
/* @__PURE__ */
|
|
5053
|
-
/* @__PURE__ */
|
|
4863
|
+
return /* @__PURE__ */ jsxs75("div", { className: cn("flex items-center justify-center gap-3 py-2", className), children: [
|
|
4864
|
+
/* @__PURE__ */ jsx107(CheckCircle, { className: "h-5 w-5 shrink-0 text-green-500" }),
|
|
4865
|
+
/* @__PURE__ */ jsx107("p", { className: "text-sm font-medium", children: successMessage })
|
|
5054
4866
|
] });
|
|
5055
4867
|
}
|
|
5056
|
-
return /* @__PURE__ */
|
|
4868
|
+
return /* @__PURE__ */ jsxs75(
|
|
5057
4869
|
"form",
|
|
5058
4870
|
{
|
|
5059
4871
|
onSubmit: handleSubmit,
|
|
@@ -5062,9 +4874,9 @@ function NewsletterForm({
|
|
|
5062
4874
|
className
|
|
5063
4875
|
),
|
|
5064
4876
|
children: [
|
|
5065
|
-
/* @__PURE__ */
|
|
5066
|
-
/* @__PURE__ */
|
|
5067
|
-
/* @__PURE__ */
|
|
4877
|
+
/* @__PURE__ */ jsxs75("div", { className: cn("relative", layout === "inline" && "sm:flex-1"), children: [
|
|
4878
|
+
/* @__PURE__ */ jsx107(Mail3, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
4879
|
+
/* @__PURE__ */ jsx107(
|
|
5068
4880
|
"input",
|
|
5069
4881
|
{
|
|
5070
4882
|
type: "email",
|
|
@@ -5076,18 +4888,18 @@ function NewsletterForm({
|
|
|
5076
4888
|
}
|
|
5077
4889
|
)
|
|
5078
4890
|
] }),
|
|
5079
|
-
/* @__PURE__ */
|
|
5080
|
-
/* @__PURE__ */
|
|
4891
|
+
/* @__PURE__ */ jsx107(Button, { type: "submit", disabled: status === "loading", className: cn(layout === "inline" && "shrink-0"), children: status === "loading" ? /* @__PURE__ */ jsxs75(Fragment, { children: [
|
|
4892
|
+
/* @__PURE__ */ jsx107(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
5081
4893
|
"Enviando..."
|
|
5082
4894
|
] }) : buttonLabel }),
|
|
5083
|
-
status === "error" && /* @__PURE__ */
|
|
4895
|
+
status === "error" && /* @__PURE__ */ jsx107("p", { className: "text-sm text-destructive", children: errorMsg })
|
|
5084
4896
|
]
|
|
5085
4897
|
}
|
|
5086
4898
|
);
|
|
5087
4899
|
}
|
|
5088
4900
|
|
|
5089
4901
|
// src/sections/newsletter/variants/newsletter-centered.tsx
|
|
5090
|
-
import { jsx as
|
|
4902
|
+
import { jsx as jsx108, jsxs as jsxs76 } from "react/jsx-runtime";
|
|
5091
4903
|
function NewsletterCentered({
|
|
5092
4904
|
title,
|
|
5093
4905
|
subtitle,
|
|
@@ -5098,7 +4910,7 @@ function NewsletterCentered({
|
|
|
5098
4910
|
placeholder,
|
|
5099
4911
|
successMessage
|
|
5100
4912
|
}) {
|
|
5101
|
-
return /* @__PURE__ */
|
|
4913
|
+
return /* @__PURE__ */ jsx108(
|
|
5102
4914
|
"section",
|
|
5103
4915
|
{
|
|
5104
4916
|
className: cn(
|
|
@@ -5111,9 +4923,9 @@ function NewsletterCentered({
|
|
|
5111
4923
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5112
4924
|
background === "error" && "bg-error text-error-foreground"
|
|
5113
4925
|
),
|
|
5114
|
-
children: /* @__PURE__ */
|
|
5115
|
-
/* @__PURE__ */
|
|
5116
|
-
/* @__PURE__ */
|
|
4926
|
+
children: /* @__PURE__ */ jsxs76("div", { className: "container mx-auto px-4 text-center", children: [
|
|
4927
|
+
/* @__PURE__ */ jsx108(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4928
|
+
/* @__PURE__ */ jsx108(
|
|
5117
4929
|
NewsletterForm,
|
|
5118
4930
|
{
|
|
5119
4931
|
buttonLabel,
|
|
@@ -5129,7 +4941,7 @@ function NewsletterCentered({
|
|
|
5129
4941
|
}
|
|
5130
4942
|
|
|
5131
4943
|
// src/sections/newsletter/variants/newsletter-card.tsx
|
|
5132
|
-
import { jsx as
|
|
4944
|
+
import { jsx as jsx109, jsxs as jsxs77 } from "react/jsx-runtime";
|
|
5133
4945
|
function NewsletterCard({
|
|
5134
4946
|
title,
|
|
5135
4947
|
subtitle,
|
|
@@ -5140,7 +4952,7 @@ function NewsletterCard({
|
|
|
5140
4952
|
placeholder,
|
|
5141
4953
|
successMessage
|
|
5142
4954
|
}) {
|
|
5143
|
-
return /* @__PURE__ */
|
|
4955
|
+
return /* @__PURE__ */ jsx109(
|
|
5144
4956
|
"section",
|
|
5145
4957
|
{
|
|
5146
4958
|
className: cn(
|
|
@@ -5153,9 +4965,9 @@ function NewsletterCard({
|
|
|
5153
4965
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5154
4966
|
background === "error" && "bg-error text-error-foreground"
|
|
5155
4967
|
),
|
|
5156
|
-
children: /* @__PURE__ */
|
|
5157
|
-
/* @__PURE__ */
|
|
5158
|
-
/* @__PURE__ */
|
|
4968
|
+
children: /* @__PURE__ */ jsx109("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxs77("div", { className: "mx-auto max-w-lg rounded-2xl border bg-card p-8 shadow-sm text-center", children: [
|
|
4969
|
+
/* @__PURE__ */ jsx109(SectionHeader, { title, subtitle, badge, content, background }),
|
|
4970
|
+
/* @__PURE__ */ jsx109(
|
|
5159
4971
|
NewsletterForm,
|
|
5160
4972
|
{
|
|
5161
4973
|
buttonLabel,
|
|
@@ -5170,7 +4982,7 @@ function NewsletterCard({
|
|
|
5170
4982
|
}
|
|
5171
4983
|
|
|
5172
4984
|
// src/sections/newsletter/variants/newsletter-inline.tsx
|
|
5173
|
-
import { jsx as
|
|
4985
|
+
import { jsx as jsx110, jsxs as jsxs78 } from "react/jsx-runtime";
|
|
5174
4986
|
function NewsletterInline({
|
|
5175
4987
|
title,
|
|
5176
4988
|
subtitle,
|
|
@@ -5181,7 +4993,7 @@ function NewsletterInline({
|
|
|
5181
4993
|
placeholder,
|
|
5182
4994
|
successMessage
|
|
5183
4995
|
}) {
|
|
5184
|
-
return /* @__PURE__ */
|
|
4996
|
+
return /* @__PURE__ */ jsx110(
|
|
5185
4997
|
"section",
|
|
5186
4998
|
{
|
|
5187
4999
|
className: cn(
|
|
@@ -5194,12 +5006,12 @@ function NewsletterInline({
|
|
|
5194
5006
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5195
5007
|
background === "error" && "bg-error text-error-foreground"
|
|
5196
5008
|
),
|
|
5197
|
-
children: /* @__PURE__ */
|
|
5198
|
-
/* @__PURE__ */
|
|
5199
|
-
badge && /* @__PURE__ */
|
|
5200
|
-
title && /* @__PURE__ */
|
|
5201
|
-
subtitle && /* @__PURE__ */
|
|
5202
|
-
content && /* @__PURE__ */
|
|
5009
|
+
children: /* @__PURE__ */ jsxs78("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: [
|
|
5010
|
+
/* @__PURE__ */ jsxs78("div", { className: "flex flex-col gap-2", children: [
|
|
5011
|
+
badge && /* @__PURE__ */ jsx110(Badge, { variant: "outline", className: "w-fit", children: badge }),
|
|
5012
|
+
title && /* @__PURE__ */ jsx110("h2", { className: "text-2xl font-bold tracking-tight", children: title }),
|
|
5013
|
+
subtitle && /* @__PURE__ */ jsx110("p", { className: "text-muted-foreground", children: subtitle }),
|
|
5014
|
+
content && /* @__PURE__ */ jsx110(
|
|
5203
5015
|
"div",
|
|
5204
5016
|
{
|
|
5205
5017
|
className: "richtext-content mt-1",
|
|
@@ -5207,7 +5019,7 @@ function NewsletterInline({
|
|
|
5207
5019
|
}
|
|
5208
5020
|
)
|
|
5209
5021
|
] }),
|
|
5210
|
-
/* @__PURE__ */
|
|
5022
|
+
/* @__PURE__ */ jsx110(
|
|
5211
5023
|
NewsletterForm,
|
|
5212
5024
|
{
|
|
5213
5025
|
buttonLabel,
|
|
@@ -5223,16 +5035,16 @@ function NewsletterInline({
|
|
|
5223
5035
|
}
|
|
5224
5036
|
|
|
5225
5037
|
// src/sections/newsletter/newsletter-section.tsx
|
|
5226
|
-
import { jsx as
|
|
5038
|
+
import { jsx as jsx111 } from "react/jsx-runtime";
|
|
5227
5039
|
function Newsletter(props) {
|
|
5228
5040
|
switch (props.variant) {
|
|
5229
5041
|
case "card":
|
|
5230
|
-
return /* @__PURE__ */
|
|
5042
|
+
return /* @__PURE__ */ jsx111(NewsletterCard, { ...props });
|
|
5231
5043
|
case "inline":
|
|
5232
|
-
return /* @__PURE__ */
|
|
5044
|
+
return /* @__PURE__ */ jsx111(NewsletterInline, { ...props });
|
|
5233
5045
|
case "centered":
|
|
5234
5046
|
default:
|
|
5235
|
-
return /* @__PURE__ */
|
|
5047
|
+
return /* @__PURE__ */ jsx111(NewsletterCentered, { ...props });
|
|
5236
5048
|
}
|
|
5237
5049
|
}
|
|
5238
5050
|
|
|
@@ -5260,7 +5072,7 @@ function fileMeta(mimeType) {
|
|
|
5260
5072
|
}
|
|
5261
5073
|
|
|
5262
5074
|
// src/sections/downloads/variants/file-row.tsx
|
|
5263
|
-
import { jsx as
|
|
5075
|
+
import { jsx as jsx112, jsxs as jsxs79 } from "react/jsx-runtime";
|
|
5264
5076
|
var iconMap = {
|
|
5265
5077
|
"file-text": FileText,
|
|
5266
5078
|
"file-image": FileImage,
|
|
@@ -5272,21 +5084,21 @@ function FileRow({ item }) {
|
|
|
5272
5084
|
const IconComp = iconMap[icon];
|
|
5273
5085
|
const size = formatBytes(item.file.size);
|
|
5274
5086
|
const href = buildDownloadUrl(item.file);
|
|
5275
|
-
return /* @__PURE__ */
|
|
5276
|
-
/* @__PURE__ */
|
|
5277
|
-
/* @__PURE__ */
|
|
5278
|
-
/* @__PURE__ */
|
|
5279
|
-
size && /* @__PURE__ */
|
|
5087
|
+
return /* @__PURE__ */ jsxs79("div", { className: "flex items-center gap-3 py-3 border-b last:border-0", children: [
|
|
5088
|
+
/* @__PURE__ */ jsx112("div", { className: ["flex-shrink-0", color].join(" "), children: /* @__PURE__ */ jsx112(IconComp, { className: "h-5 w-5" }) }),
|
|
5089
|
+
/* @__PURE__ */ jsxs79("div", { className: "flex-1 min-w-0", children: [
|
|
5090
|
+
/* @__PURE__ */ jsx112("p", { className: "text-sm font-medium truncate", children: item.label }),
|
|
5091
|
+
size && /* @__PURE__ */ jsx112("p", { className: "text-xs text-muted-foreground mt-0.5", children: size })
|
|
5280
5092
|
] }),
|
|
5281
|
-
/* @__PURE__ */
|
|
5282
|
-
/* @__PURE__ */
|
|
5283
|
-
/* @__PURE__ */
|
|
5093
|
+
/* @__PURE__ */ jsx112(Button, { asChild: true, size: "sm", variant: "outline", className: "shrink-0 gap-1.5", children: /* @__PURE__ */ jsxs79("a", { href, download: true, target: "_blank", rel: "noopener noreferrer", children: [
|
|
5094
|
+
/* @__PURE__ */ jsx112(Download, { className: "h-3.5 w-3.5" }),
|
|
5095
|
+
/* @__PURE__ */ jsx112("span", { className: "hidden sm:inline", children: "Descargar" })
|
|
5284
5096
|
] }) })
|
|
5285
5097
|
] });
|
|
5286
5098
|
}
|
|
5287
5099
|
|
|
5288
5100
|
// src/sections/downloads/variants/downloads-grouped.tsx
|
|
5289
|
-
import { jsx as
|
|
5101
|
+
import { jsx as jsx113, jsxs as jsxs80 } from "react/jsx-runtime";
|
|
5290
5102
|
function DownloadsGrouped({
|
|
5291
5103
|
title,
|
|
5292
5104
|
subtitle,
|
|
@@ -5295,7 +5107,7 @@ function DownloadsGrouped({
|
|
|
5295
5107
|
background,
|
|
5296
5108
|
groups
|
|
5297
5109
|
}) {
|
|
5298
|
-
return /* @__PURE__ */
|
|
5110
|
+
return /* @__PURE__ */ jsx113(
|
|
5299
5111
|
"section",
|
|
5300
5112
|
{
|
|
5301
5113
|
className: cn(
|
|
@@ -5308,8 +5120,8 @@ function DownloadsGrouped({
|
|
|
5308
5120
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5309
5121
|
background === "error" && "bg-error text-error-foreground"
|
|
5310
5122
|
),
|
|
5311
|
-
children: /* @__PURE__ */
|
|
5312
|
-
/* @__PURE__ */
|
|
5123
|
+
children: /* @__PURE__ */ jsxs80("div", { className: "container mx-auto px-4", children: [
|
|
5124
|
+
/* @__PURE__ */ jsx113(
|
|
5313
5125
|
SectionHeader,
|
|
5314
5126
|
{
|
|
5315
5127
|
title,
|
|
@@ -5319,15 +5131,15 @@ function DownloadsGrouped({
|
|
|
5319
5131
|
background
|
|
5320
5132
|
}
|
|
5321
5133
|
),
|
|
5322
|
-
groups.length > 0 && /* @__PURE__ */
|
|
5134
|
+
groups.length > 0 && /* @__PURE__ */ jsx113("div", { className: "grid gap-6 sm:grid-cols-2 lg:grid-cols-3", children: groups.map((group) => /* @__PURE__ */ jsxs80(
|
|
5323
5135
|
"div",
|
|
5324
5136
|
{
|
|
5325
5137
|
className: "rounded-xl border bg-card p-6 shadow-sm",
|
|
5326
5138
|
children: [
|
|
5327
|
-
/* @__PURE__ */
|
|
5328
|
-
/* @__PURE__ */
|
|
5329
|
-
group.files.map((file) => /* @__PURE__ */
|
|
5330
|
-
group.files.length === 0 && /* @__PURE__ */
|
|
5139
|
+
/* @__PURE__ */ jsx113("h3", { className: "text-base font-semibold mb-4", children: group.title }),
|
|
5140
|
+
/* @__PURE__ */ jsxs80("div", { children: [
|
|
5141
|
+
group.files.map((file) => /* @__PURE__ */ jsx113(FileRow, { item: file }, file._key)),
|
|
5142
|
+
group.files.length === 0 && /* @__PURE__ */ jsx113("p", { className: "text-sm text-muted-foreground", children: "Sin archivos." })
|
|
5331
5143
|
] })
|
|
5332
5144
|
]
|
|
5333
5145
|
},
|
|
@@ -5340,7 +5152,7 @@ function DownloadsGrouped({
|
|
|
5340
5152
|
|
|
5341
5153
|
// src/sections/downloads/variants/downloads-accordion.tsx
|
|
5342
5154
|
import { FolderOpen } from "lucide-react";
|
|
5343
|
-
import { jsx as
|
|
5155
|
+
import { jsx as jsx114, jsxs as jsxs81 } from "react/jsx-runtime";
|
|
5344
5156
|
function DownloadsAccordion({
|
|
5345
5157
|
title,
|
|
5346
5158
|
subtitle,
|
|
@@ -5349,7 +5161,7 @@ function DownloadsAccordion({
|
|
|
5349
5161
|
background,
|
|
5350
5162
|
groups
|
|
5351
5163
|
}) {
|
|
5352
|
-
return /* @__PURE__ */
|
|
5164
|
+
return /* @__PURE__ */ jsx114(
|
|
5353
5165
|
"section",
|
|
5354
5166
|
{
|
|
5355
5167
|
className: cn(
|
|
@@ -5362,8 +5174,8 @@ function DownloadsAccordion({
|
|
|
5362
5174
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5363
5175
|
background === "error" && "bg-error text-error-foreground"
|
|
5364
5176
|
),
|
|
5365
|
-
children: /* @__PURE__ */
|
|
5366
|
-
/* @__PURE__ */
|
|
5177
|
+
children: /* @__PURE__ */ jsxs81("div", { className: "container mx-auto px-4", children: [
|
|
5178
|
+
/* @__PURE__ */ jsx114(
|
|
5367
5179
|
SectionHeader,
|
|
5368
5180
|
{
|
|
5369
5181
|
title,
|
|
@@ -5373,16 +5185,16 @@ function DownloadsAccordion({
|
|
|
5373
5185
|
background
|
|
5374
5186
|
}
|
|
5375
5187
|
),
|
|
5376
|
-
groups.length > 0 && /* @__PURE__ */
|
|
5188
|
+
groups.length > 0 && /* @__PURE__ */ jsx114("div", { className: "mx-auto max-w-3xl", children: /* @__PURE__ */ jsx114(Accordion, { type: "multiple", className: "space-y-3", children: groups.map((group) => /* @__PURE__ */ jsxs81(
|
|
5377
5189
|
AccordionItem,
|
|
5378
5190
|
{
|
|
5379
5191
|
value: group._key,
|
|
5380
5192
|
className: "rounded-xl border bg-card px-6 shadow-sm",
|
|
5381
5193
|
children: [
|
|
5382
|
-
/* @__PURE__ */
|
|
5383
|
-
/* @__PURE__ */
|
|
5384
|
-
/* @__PURE__ */
|
|
5385
|
-
/* @__PURE__ */
|
|
5194
|
+
/* @__PURE__ */ jsx114(AccordionTrigger, { className: "text-base font-semibold gap-3 hover:no-underline", children: /* @__PURE__ */ jsxs81("div", { className: "flex items-center gap-2", children: [
|
|
5195
|
+
/* @__PURE__ */ jsx114(FolderOpen, { className: "h-4 w-4 text-muted-foreground shrink-0" }),
|
|
5196
|
+
/* @__PURE__ */ jsx114("span", { children: group.title }),
|
|
5197
|
+
/* @__PURE__ */ jsxs81("span", { className: "ml-1 text-xs font-normal text-muted-foreground", children: [
|
|
5386
5198
|
"(",
|
|
5387
5199
|
group.files.length,
|
|
5388
5200
|
" ",
|
|
@@ -5390,9 +5202,9 @@ function DownloadsAccordion({
|
|
|
5390
5202
|
")"
|
|
5391
5203
|
] })
|
|
5392
5204
|
] }) }),
|
|
5393
|
-
/* @__PURE__ */
|
|
5394
|
-
group.files.map((file) => /* @__PURE__ */
|
|
5395
|
-
group.files.length === 0 && /* @__PURE__ */
|
|
5205
|
+
/* @__PURE__ */ jsxs81(AccordionContent, { className: "pb-2", children: [
|
|
5206
|
+
group.files.map((file) => /* @__PURE__ */ jsx114(FileRow, { item: file }, file._key)),
|
|
5207
|
+
group.files.length === 0 && /* @__PURE__ */ jsx114("p", { className: "text-sm text-muted-foreground py-2", children: "Sin archivos." })
|
|
5396
5208
|
] })
|
|
5397
5209
|
]
|
|
5398
5210
|
},
|
|
@@ -5404,7 +5216,7 @@ function DownloadsAccordion({
|
|
|
5404
5216
|
}
|
|
5405
5217
|
|
|
5406
5218
|
// src/sections/downloads/variants/downloads-flat.tsx
|
|
5407
|
-
import { jsx as
|
|
5219
|
+
import { jsx as jsx115, jsxs as jsxs82 } from "react/jsx-runtime";
|
|
5408
5220
|
function DownloadsFlat({
|
|
5409
5221
|
title,
|
|
5410
5222
|
subtitle,
|
|
@@ -5413,7 +5225,7 @@ function DownloadsFlat({
|
|
|
5413
5225
|
background,
|
|
5414
5226
|
groups
|
|
5415
5227
|
}) {
|
|
5416
|
-
return /* @__PURE__ */
|
|
5228
|
+
return /* @__PURE__ */ jsx115(
|
|
5417
5229
|
"section",
|
|
5418
5230
|
{
|
|
5419
5231
|
className: cn(
|
|
@@ -5426,8 +5238,8 @@ function DownloadsFlat({
|
|
|
5426
5238
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5427
5239
|
background === "error" && "bg-error text-error-foreground"
|
|
5428
5240
|
),
|
|
5429
|
-
children: /* @__PURE__ */
|
|
5430
|
-
/* @__PURE__ */
|
|
5241
|
+
children: /* @__PURE__ */ jsxs82("div", { className: "container mx-auto px-4", children: [
|
|
5242
|
+
/* @__PURE__ */ jsx115(
|
|
5431
5243
|
SectionHeader,
|
|
5432
5244
|
{
|
|
5433
5245
|
title,
|
|
@@ -5437,14 +5249,14 @@ function DownloadsFlat({
|
|
|
5437
5249
|
background
|
|
5438
5250
|
}
|
|
5439
5251
|
),
|
|
5440
|
-
groups.length > 0 && /* @__PURE__ */
|
|
5441
|
-
/* @__PURE__ */
|
|
5442
|
-
/* @__PURE__ */
|
|
5443
|
-
/* @__PURE__ */
|
|
5252
|
+
groups.length > 0 && /* @__PURE__ */ jsx115("div", { className: "mx-auto max-w-3xl space-y-10", children: groups.map((group) => /* @__PURE__ */ jsxs82("div", { children: [
|
|
5253
|
+
/* @__PURE__ */ jsxs82("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
5254
|
+
/* @__PURE__ */ jsx115("h3", { className: "text-sm font-semibold uppercase tracking-wider text-muted-foreground", children: group.title }),
|
|
5255
|
+
/* @__PURE__ */ jsx115("div", { className: "flex-1 border-t" })
|
|
5444
5256
|
] }),
|
|
5445
|
-
/* @__PURE__ */
|
|
5446
|
-
group.files.map((file) => /* @__PURE__ */
|
|
5447
|
-
group.files.length === 0 && /* @__PURE__ */
|
|
5257
|
+
/* @__PURE__ */ jsxs82("div", { className: "rounded-xl border bg-card px-6 divide-y-0", children: [
|
|
5258
|
+
group.files.map((file) => /* @__PURE__ */ jsx115(FileRow, { item: file }, file._key)),
|
|
5259
|
+
group.files.length === 0 && /* @__PURE__ */ jsx115("p", { className: "text-sm text-muted-foreground py-4", children: "Sin archivos." })
|
|
5448
5260
|
] })
|
|
5449
5261
|
] }, group._key)) })
|
|
5450
5262
|
] })
|
|
@@ -5453,23 +5265,23 @@ function DownloadsFlat({
|
|
|
5453
5265
|
}
|
|
5454
5266
|
|
|
5455
5267
|
// src/sections/downloads/index.tsx
|
|
5456
|
-
import { jsx as
|
|
5268
|
+
import { jsx as jsx116 } from "react/jsx-runtime";
|
|
5457
5269
|
function Downloads(props) {
|
|
5458
5270
|
switch (props.variant) {
|
|
5459
5271
|
case "accordion":
|
|
5460
|
-
return /* @__PURE__ */
|
|
5272
|
+
return /* @__PURE__ */ jsx116(DownloadsAccordion, { ...props });
|
|
5461
5273
|
case "flat":
|
|
5462
|
-
return /* @__PURE__ */
|
|
5274
|
+
return /* @__PURE__ */ jsx116(DownloadsFlat, { ...props });
|
|
5463
5275
|
case "grouped":
|
|
5464
5276
|
default:
|
|
5465
|
-
return /* @__PURE__ */
|
|
5277
|
+
return /* @__PURE__ */ jsx116(DownloadsGrouped, { ...props });
|
|
5466
5278
|
}
|
|
5467
5279
|
}
|
|
5468
5280
|
|
|
5469
5281
|
// src/sections/event-registration/registration-form.tsx
|
|
5470
|
-
import { useState as
|
|
5282
|
+
import { useState as useState15, useRef as useRef2 } from "react";
|
|
5471
5283
|
import { CheckCircle as CheckCircle2, Loader2 as Loader22, ImageIcon, X as X3 } from "lucide-react";
|
|
5472
|
-
import { Fragment as Fragment2, jsx as
|
|
5284
|
+
import { Fragment as Fragment2, jsx as jsx117, jsxs as jsxs83 } from "react/jsx-runtime";
|
|
5473
5285
|
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";
|
|
5474
5286
|
function DynamicField({
|
|
5475
5287
|
field,
|
|
@@ -5479,16 +5291,16 @@ function DynamicField({
|
|
|
5479
5291
|
onFileChange
|
|
5480
5292
|
}) {
|
|
5481
5293
|
const id = `field-${field.label}`;
|
|
5482
|
-
const fileInputRef =
|
|
5294
|
+
const fileInputRef = useRef2(null);
|
|
5483
5295
|
const previewUrl = fileValue ? URL.createObjectURL(fileValue) : value || null;
|
|
5484
|
-
const label = /* @__PURE__ */
|
|
5296
|
+
const label = /* @__PURE__ */ jsxs83("label", { htmlFor: id, className: "text-sm font-medium leading-none", children: [
|
|
5485
5297
|
field.label,
|
|
5486
|
-
field.required && /* @__PURE__ */
|
|
5298
|
+
field.required && /* @__PURE__ */ jsx117("span", { className: "ml-1 text-destructive", children: "*" })
|
|
5487
5299
|
] });
|
|
5488
5300
|
if (field.fieldType === "image") {
|
|
5489
|
-
return /* @__PURE__ */
|
|
5301
|
+
return /* @__PURE__ */ jsxs83("div", { className: "flex flex-col gap-1.5", children: [
|
|
5490
5302
|
label,
|
|
5491
|
-
/* @__PURE__ */
|
|
5303
|
+
/* @__PURE__ */ jsxs83(
|
|
5492
5304
|
"div",
|
|
5493
5305
|
{
|
|
5494
5306
|
className: cn(
|
|
@@ -5497,8 +5309,8 @@ function DynamicField({
|
|
|
5497
5309
|
),
|
|
5498
5310
|
onClick: () => fileInputRef.current?.click(),
|
|
5499
5311
|
children: [
|
|
5500
|
-
previewUrl ? /* @__PURE__ */
|
|
5501
|
-
/* @__PURE__ */
|
|
5312
|
+
previewUrl ? /* @__PURE__ */ jsxs83(Fragment2, { children: [
|
|
5313
|
+
/* @__PURE__ */ jsx117(
|
|
5502
5314
|
"img",
|
|
5503
5315
|
{
|
|
5504
5316
|
src: previewUrl,
|
|
@@ -5506,7 +5318,7 @@ function DynamicField({
|
|
|
5506
5318
|
className: "max-h-40 rounded object-contain"
|
|
5507
5319
|
}
|
|
5508
5320
|
),
|
|
5509
|
-
/* @__PURE__ */
|
|
5321
|
+
/* @__PURE__ */ jsx117(
|
|
5510
5322
|
"button",
|
|
5511
5323
|
{
|
|
5512
5324
|
type: "button",
|
|
@@ -5516,15 +5328,15 @@ function DynamicField({
|
|
|
5516
5328
|
onChange("");
|
|
5517
5329
|
},
|
|
5518
5330
|
className: "absolute right-2 top-2 rounded-full bg-background/80 p-1 hover:bg-destructive/10",
|
|
5519
|
-
children: /* @__PURE__ */
|
|
5331
|
+
children: /* @__PURE__ */ jsx117(X3, { className: "h-4 w-4 text-destructive" })
|
|
5520
5332
|
}
|
|
5521
5333
|
)
|
|
5522
|
-
] }) : /* @__PURE__ */
|
|
5523
|
-
/* @__PURE__ */
|
|
5524
|
-
/* @__PURE__ */
|
|
5525
|
-
/* @__PURE__ */
|
|
5334
|
+
] }) : /* @__PURE__ */ jsxs83(Fragment2, { children: [
|
|
5335
|
+
/* @__PURE__ */ jsx117(ImageIcon, { className: "h-8 w-8 text-muted-foreground" }),
|
|
5336
|
+
/* @__PURE__ */ jsx117("p", { className: "text-sm text-muted-foreground", children: field.placeholder ?? "Hac\xE9 click para seleccionar una imagen" }),
|
|
5337
|
+
/* @__PURE__ */ jsx117("p", { className: "text-xs text-muted-foreground", children: "JPG, PNG, WEBP \xB7 m\xE1x. 10 MB" })
|
|
5526
5338
|
] }),
|
|
5527
|
-
/* @__PURE__ */
|
|
5339
|
+
/* @__PURE__ */ jsx117(
|
|
5528
5340
|
"input",
|
|
5529
5341
|
{
|
|
5530
5342
|
ref: fileInputRef,
|
|
@@ -5546,9 +5358,9 @@ function DynamicField({
|
|
|
5546
5358
|
] });
|
|
5547
5359
|
}
|
|
5548
5360
|
if (field.fieldType === "textarea") {
|
|
5549
|
-
return /* @__PURE__ */
|
|
5361
|
+
return /* @__PURE__ */ jsxs83("div", { className: "flex flex-col gap-1.5", children: [
|
|
5550
5362
|
label,
|
|
5551
|
-
/* @__PURE__ */
|
|
5363
|
+
/* @__PURE__ */ jsx117(
|
|
5552
5364
|
"textarea",
|
|
5553
5365
|
{
|
|
5554
5366
|
id,
|
|
@@ -5563,9 +5375,9 @@ function DynamicField({
|
|
|
5563
5375
|
] });
|
|
5564
5376
|
}
|
|
5565
5377
|
if (field.fieldType === "select") {
|
|
5566
|
-
return /* @__PURE__ */
|
|
5378
|
+
return /* @__PURE__ */ jsxs83("div", { className: "flex flex-col gap-1.5", children: [
|
|
5567
5379
|
label,
|
|
5568
|
-
/* @__PURE__ */
|
|
5380
|
+
/* @__PURE__ */ jsxs83(
|
|
5569
5381
|
"select",
|
|
5570
5382
|
{
|
|
5571
5383
|
id,
|
|
@@ -5574,17 +5386,17 @@ function DynamicField({
|
|
|
5574
5386
|
required: field.required,
|
|
5575
5387
|
className: cn(inputBase2, "h-10"),
|
|
5576
5388
|
children: [
|
|
5577
|
-
/* @__PURE__ */
|
|
5578
|
-
(field.options ?? []).map((opt) => /* @__PURE__ */
|
|
5389
|
+
/* @__PURE__ */ jsx117("option", { value: "", children: field.placeholder ?? "Seleccion\xE1 una opci\xF3n" }),
|
|
5390
|
+
(field.options ?? []).map((opt) => /* @__PURE__ */ jsx117("option", { value: opt, children: opt }, opt))
|
|
5579
5391
|
]
|
|
5580
5392
|
}
|
|
5581
5393
|
)
|
|
5582
5394
|
] });
|
|
5583
5395
|
}
|
|
5584
5396
|
if (field.fieldType === "date") {
|
|
5585
|
-
return /* @__PURE__ */
|
|
5397
|
+
return /* @__PURE__ */ jsxs83("div", { className: "flex flex-col gap-1.5", children: [
|
|
5586
5398
|
label,
|
|
5587
|
-
/* @__PURE__ */
|
|
5399
|
+
/* @__PURE__ */ jsx117(
|
|
5588
5400
|
DatePicker,
|
|
5589
5401
|
{
|
|
5590
5402
|
id,
|
|
@@ -5596,9 +5408,9 @@ function DynamicField({
|
|
|
5596
5408
|
)
|
|
5597
5409
|
] });
|
|
5598
5410
|
}
|
|
5599
|
-
return /* @__PURE__ */
|
|
5411
|
+
return /* @__PURE__ */ jsxs83("div", { className: "flex flex-col gap-1.5", children: [
|
|
5600
5412
|
label,
|
|
5601
|
-
/* @__PURE__ */
|
|
5413
|
+
/* @__PURE__ */ jsx117(
|
|
5602
5414
|
"input",
|
|
5603
5415
|
{
|
|
5604
5416
|
id,
|
|
@@ -5631,12 +5443,12 @@ function RegistrationForm({
|
|
|
5631
5443
|
successMessage = "\xA1Tu registro fue enviado con \xE9xito!",
|
|
5632
5444
|
className
|
|
5633
5445
|
}) {
|
|
5634
|
-
const [values, setValues] =
|
|
5446
|
+
const [values, setValues] = useState15(
|
|
5635
5447
|
() => Object.fromEntries(fields.map((f) => [f.label, ""]))
|
|
5636
5448
|
);
|
|
5637
|
-
const [fileValues, setFileValues] =
|
|
5638
|
-
const [status, setStatus] =
|
|
5639
|
-
const [errorMsg, setErrorMsg] =
|
|
5449
|
+
const [fileValues, setFileValues] = useState15({});
|
|
5450
|
+
const [status, setStatus] = useState15("idle");
|
|
5451
|
+
const [errorMsg, setErrorMsg] = useState15("");
|
|
5640
5452
|
const handleChange = (label, val) => setValues((prev) => ({ ...prev, [label]: val }));
|
|
5641
5453
|
const handleFileChange = (label, file) => setFileValues((prev) => ({ ...prev, [label]: file }));
|
|
5642
5454
|
const handleSubmit = async (e) => {
|
|
@@ -5671,13 +5483,13 @@ function RegistrationForm({
|
|
|
5671
5483
|
}
|
|
5672
5484
|
};
|
|
5673
5485
|
if (status === "success") {
|
|
5674
|
-
return /* @__PURE__ */
|
|
5675
|
-
/* @__PURE__ */
|
|
5676
|
-
/* @__PURE__ */
|
|
5486
|
+
return /* @__PURE__ */ jsxs83("div", { className: cn("flex flex-col items-center gap-4 py-8 text-center", className), children: [
|
|
5487
|
+
/* @__PURE__ */ jsx117(CheckCircle2, { className: "h-14 w-14 text-green-500" }),
|
|
5488
|
+
/* @__PURE__ */ jsx117("p", { className: "text-lg font-semibold", children: successMessage })
|
|
5677
5489
|
] });
|
|
5678
5490
|
}
|
|
5679
|
-
return /* @__PURE__ */
|
|
5680
|
-
fields.map((field) => /* @__PURE__ */
|
|
5491
|
+
return /* @__PURE__ */ jsxs83("form", { onSubmit: handleSubmit, className: cn("grid gap-4", className), children: [
|
|
5492
|
+
fields.map((field) => /* @__PURE__ */ jsx117(
|
|
5681
5493
|
DynamicField,
|
|
5682
5494
|
{
|
|
5683
5495
|
field,
|
|
@@ -5688,16 +5500,16 @@ function RegistrationForm({
|
|
|
5688
5500
|
},
|
|
5689
5501
|
field.label
|
|
5690
5502
|
)),
|
|
5691
|
-
status === "error" && /* @__PURE__ */
|
|
5692
|
-
/* @__PURE__ */
|
|
5693
|
-
/* @__PURE__ */
|
|
5503
|
+
status === "error" && /* @__PURE__ */ jsx117("p", { className: "rounded-md bg-destructive/10 px-4 py-2 text-sm text-destructive", children: errorMsg }),
|
|
5504
|
+
/* @__PURE__ */ jsx117(Button, { type: "submit", disabled: status === "loading", className: "mt-2 w-full", size: "lg", children: status === "loading" ? /* @__PURE__ */ jsxs83(Fragment2, { children: [
|
|
5505
|
+
/* @__PURE__ */ jsx117(Loader22, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
5694
5506
|
"Enviando..."
|
|
5695
5507
|
] }) : buttonLabel })
|
|
5696
5508
|
] });
|
|
5697
5509
|
}
|
|
5698
5510
|
|
|
5699
5511
|
// src/sections/event-registration/variants/registration-centered.tsx
|
|
5700
|
-
import { jsx as
|
|
5512
|
+
import { jsx as jsx118, jsxs as jsxs84 } from "react/jsx-runtime";
|
|
5701
5513
|
function RegistrationCentered({
|
|
5702
5514
|
title,
|
|
5703
5515
|
subtitle,
|
|
@@ -5709,7 +5521,7 @@ function RegistrationCentered({
|
|
|
5709
5521
|
buttonLabel,
|
|
5710
5522
|
successMessage
|
|
5711
5523
|
}) {
|
|
5712
|
-
return /* @__PURE__ */
|
|
5524
|
+
return /* @__PURE__ */ jsx118(
|
|
5713
5525
|
"section",
|
|
5714
5526
|
{
|
|
5715
5527
|
className: cn(
|
|
@@ -5722,9 +5534,9 @@ function RegistrationCentered({
|
|
|
5722
5534
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5723
5535
|
background === "error" && "bg-error text-error-foreground"
|
|
5724
5536
|
),
|
|
5725
|
-
children: /* @__PURE__ */
|
|
5726
|
-
/* @__PURE__ */
|
|
5727
|
-
/* @__PURE__ */
|
|
5537
|
+
children: /* @__PURE__ */ jsxs84("div", { className: "container mx-auto px-4", children: [
|
|
5538
|
+
/* @__PURE__ */ jsx118(SectionHeader, { title, subtitle, badge, content, background }),
|
|
5539
|
+
/* @__PURE__ */ jsx118(
|
|
5728
5540
|
RegistrationForm,
|
|
5729
5541
|
{
|
|
5730
5542
|
formId,
|
|
@@ -5741,7 +5553,7 @@ function RegistrationCentered({
|
|
|
5741
5553
|
}
|
|
5742
5554
|
|
|
5743
5555
|
// src/sections/event-registration/variants/registration-card.tsx
|
|
5744
|
-
import { jsx as
|
|
5556
|
+
import { jsx as jsx119, jsxs as jsxs85 } from "react/jsx-runtime";
|
|
5745
5557
|
function RegistrationCard({
|
|
5746
5558
|
title,
|
|
5747
5559
|
subtitle,
|
|
@@ -5753,7 +5565,7 @@ function RegistrationCard({
|
|
|
5753
5565
|
buttonLabel,
|
|
5754
5566
|
successMessage
|
|
5755
5567
|
}) {
|
|
5756
|
-
return /* @__PURE__ */
|
|
5568
|
+
return /* @__PURE__ */ jsx119(
|
|
5757
5569
|
"section",
|
|
5758
5570
|
{
|
|
5759
5571
|
className: cn(
|
|
@@ -5766,9 +5578,9 @@ function RegistrationCard({
|
|
|
5766
5578
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5767
5579
|
background === "error" && "bg-error text-error-foreground"
|
|
5768
5580
|
),
|
|
5769
|
-
children: /* @__PURE__ */
|
|
5770
|
-
/* @__PURE__ */
|
|
5771
|
-
/* @__PURE__ */
|
|
5581
|
+
children: /* @__PURE__ */ jsxs85("div", { className: "container mx-auto px-4", children: [
|
|
5582
|
+
/* @__PURE__ */ jsx119(SectionHeader, { title, subtitle, badge, content, background }),
|
|
5583
|
+
/* @__PURE__ */ jsx119("div", { className: "mx-auto max-w-xl rounded-2xl border bg-card p-8 shadow-sm", children: /* @__PURE__ */ jsx119(
|
|
5772
5584
|
RegistrationForm,
|
|
5773
5585
|
{
|
|
5774
5586
|
formId,
|
|
@@ -5784,7 +5596,7 @@ function RegistrationCard({
|
|
|
5784
5596
|
}
|
|
5785
5597
|
|
|
5786
5598
|
// src/sections/event-registration/variants/registration-split.tsx
|
|
5787
|
-
import { jsx as
|
|
5599
|
+
import { jsx as jsx120, jsxs as jsxs86 } from "react/jsx-runtime";
|
|
5788
5600
|
function RegistrationSplit({
|
|
5789
5601
|
title,
|
|
5790
5602
|
subtitle,
|
|
@@ -5796,7 +5608,7 @@ function RegistrationSplit({
|
|
|
5796
5608
|
successMessage,
|
|
5797
5609
|
image
|
|
5798
5610
|
}) {
|
|
5799
|
-
return /* @__PURE__ */
|
|
5611
|
+
return /* @__PURE__ */ jsx120(
|
|
5800
5612
|
"section",
|
|
5801
5613
|
{
|
|
5802
5614
|
className: cn(
|
|
@@ -5809,14 +5621,14 @@ function RegistrationSplit({
|
|
|
5809
5621
|
background === "warning" && "bg-warning text-warning-foreground",
|
|
5810
5622
|
background === "error" && "bg-error text-error-foreground"
|
|
5811
5623
|
),
|
|
5812
|
-
children: /* @__PURE__ */
|
|
5813
|
-
/* @__PURE__ */
|
|
5814
|
-
badge && /* @__PURE__ */
|
|
5815
|
-
title && /* @__PURE__ */
|
|
5816
|
-
subtitle && /* @__PURE__ */
|
|
5817
|
-
image && /* @__PURE__ */
|
|
5624
|
+
children: /* @__PURE__ */ jsxs86("div", { className: "container mx-auto grid items-center gap-12 px-4 lg:grid-cols-2", children: [
|
|
5625
|
+
/* @__PURE__ */ jsxs86("div", { className: "flex flex-col gap-6", children: [
|
|
5626
|
+
badge && /* @__PURE__ */ jsx120(Badge, { variant: "outline", className: "w-fit", children: badge }),
|
|
5627
|
+
title && /* @__PURE__ */ jsx120("h2", { className: "text-3xl font-bold tracking-tight lg:text-4xl", children: title }),
|
|
5628
|
+
subtitle && /* @__PURE__ */ jsx120("p", { className: "text-lg text-muted-foreground", children: subtitle }),
|
|
5629
|
+
image && /* @__PURE__ */ jsx120("div", { className: "aspect-video w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsx120("img", { src: image.url, alt: image.alt ?? title ?? "", className: "h-full w-full object-cover" }) })
|
|
5818
5630
|
] }),
|
|
5819
|
-
/* @__PURE__ */
|
|
5631
|
+
/* @__PURE__ */ jsx120("div", { className: "rounded-2xl border bg-card p-8 shadow-sm", children: /* @__PURE__ */ jsx120(
|
|
5820
5632
|
RegistrationForm,
|
|
5821
5633
|
{
|
|
5822
5634
|
formId,
|
|
@@ -5832,16 +5644,16 @@ function RegistrationSplit({
|
|
|
5832
5644
|
}
|
|
5833
5645
|
|
|
5834
5646
|
// src/sections/event-registration/event-registration-section.tsx
|
|
5835
|
-
import { jsx as
|
|
5647
|
+
import { jsx as jsx121 } from "react/jsx-runtime";
|
|
5836
5648
|
function EventRegistration(props) {
|
|
5837
5649
|
switch (props.variant) {
|
|
5838
5650
|
case "card":
|
|
5839
|
-
return /* @__PURE__ */
|
|
5651
|
+
return /* @__PURE__ */ jsx121(RegistrationCard, { ...props });
|
|
5840
5652
|
case "split":
|
|
5841
|
-
return /* @__PURE__ */
|
|
5653
|
+
return /* @__PURE__ */ jsx121(RegistrationSplit, { ...props });
|
|
5842
5654
|
case "centered":
|
|
5843
5655
|
default:
|
|
5844
|
-
return /* @__PURE__ */
|
|
5656
|
+
return /* @__PURE__ */ jsx121(RegistrationCentered, { ...props });
|
|
5845
5657
|
}
|
|
5846
5658
|
}
|
|
5847
5659
|
export {
|