@ctonti/ask-golf-veneto 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{app-0PjpnX92.d.mts → app-DRsYYNT9.d.mts} +1 -1
- package/dist/{app-DzCpb5z9.d.cts.map → app-DRsYYNT9.d.mts.map} +1 -1
- package/dist/browser.d.ts +5599 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +70787 -0
- package/dist/browser.js.map +1 -0
- package/dist/exports/client.d.mts +1 -1
- package/dist/index.d.mts +8 -3
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +9 -1
- package/dist/index.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/app-0PjpnX92.d.mts.map +0 -1
- package/dist/app-Daoze0po.cjs +0 -189
- package/dist/app-DzCpb5z9.d.cts +0 -16
- package/dist/catalog-englM86y.cjs +0 -362
- package/dist/exports/browser.cjs +0 -3
- package/dist/exports/browser.d.cts +0 -2
- package/dist/exports/browser.d.mts +0 -2
- package/dist/exports/browser.mjs +0 -2
- package/dist/exports/catalog.cjs +0 -5
- package/dist/exports/catalog.d.cts +0 -676
- package/dist/exports/catalog.d.cts.map +0 -1
- package/dist/exports/client.cjs +0 -10
- package/dist/exports/client.d.cts +0 -48
- package/dist/exports/client.d.cts.map +0 -1
- package/dist/exports/registry.cjs +0 -6
- package/dist/exports/registry.d.cts +0 -12
- package/dist/exports/registry.d.cts.map +0 -1
- package/dist/index.cjs +0 -6
- package/dist/index.d.cts +0 -3
- package/dist/plugin-B0vGrWcM.d.cts +0 -7
- package/dist/plugin-B0vGrWcM.d.cts.map +0 -1
- package/dist/plugin-BdhObzU8.cjs +0 -14
- package/dist/plugin-DYfnXStA.mjs +0 -11
- package/dist/plugin-DYfnXStA.mjs.map +0 -1
- package/dist/plugin-X9b5Ujac.d.mts +0 -7
- package/dist/plugin-X9b5Ujac.d.mts.map +0 -1
- package/dist/registry-E8Of7gsT.cjs +0 -1261
|
@@ -1,1261 +0,0 @@
|
|
|
1
|
-
//#region \0rolldown/runtime.js
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __copyProps = (to, from, except, desc) => {
|
|
9
|
-
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
-
key = keys[i];
|
|
11
|
-
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
-
get: ((k) => from[k]).bind(null, key),
|
|
13
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
-
value: mod,
|
|
20
|
-
enumerable: true
|
|
21
|
-
}) : target, mod));
|
|
22
|
-
//#endregion
|
|
23
|
-
const require_catalog = require("./catalog-englM86y.cjs");
|
|
24
|
-
let react = require("react");
|
|
25
|
-
react = __toESM(react, 1);
|
|
26
|
-
let react_jsx_runtime = require("react/jsx-runtime");
|
|
27
|
-
let _websolutespa_ask_ui = require("@websolutespa/ask-ui");
|
|
28
|
-
let _json_render_react = require("@json-render/react");
|
|
29
|
-
let sonner = require("sonner");
|
|
30
|
-
let react_dom_server = require("react-dom/server");
|
|
31
|
-
let _websolutespa_ask_ui_components_button = require("@websolutespa/ask-ui/components/button");
|
|
32
|
-
let _websolutespa_ask_ui_components_skeleton = require("@websolutespa/ask-ui/components/skeleton");
|
|
33
|
-
let lucide_react = require("lucide-react");
|
|
34
|
-
//#region src/blocks/root.tsx
|
|
35
|
-
const Root = ({ children }) => {
|
|
36
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
37
|
-
"data-type": "root",
|
|
38
|
-
className: (0, _websolutespa_ask_ui.cn)("flex flex-col py-8 gap-8 @md:gap-16 bg-background text-foreground"),
|
|
39
|
-
children
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
//#endregion
|
|
43
|
-
//#region src/blocks/link.tsx
|
|
44
|
-
const Link = ({ props }) => {
|
|
45
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_button.Button, {
|
|
46
|
-
"data-type": "link",
|
|
47
|
-
asChild: true,
|
|
48
|
-
variant: props.variant === "outline" ? "outline" : props.variant === "secondary" ? "secondary" : props.variant === "danger" ? "destructive" : "default",
|
|
49
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
|
|
50
|
-
href: props.href,
|
|
51
|
-
target: "_blank",
|
|
52
|
-
rel: "noopener noreferrer",
|
|
53
|
-
children: props.label
|
|
54
|
-
})
|
|
55
|
-
});
|
|
56
|
-
};
|
|
57
|
-
//#endregion
|
|
58
|
-
//#region src/blocks/hero-viaggio.tsx
|
|
59
|
-
const HeroViaggio = ({ props }) => {
|
|
60
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
61
|
-
"data-type": "hero-viaggio",
|
|
62
|
-
className: (0, _websolutespa_ask_ui.cn)("relative flex flex-col items-center justify-center py-16 @md:py-24 px-6 bg-primary text-primary-foreground overflow-hidden rounded-xl shadow-sm"),
|
|
63
|
-
children: [props.imageSrc && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
64
|
-
className: "absolute inset-0 z-0",
|
|
65
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
66
|
-
src: props.imageSrc,
|
|
67
|
-
alt: "",
|
|
68
|
-
className: "w-full h-full object-cover"
|
|
69
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute inset-0 bg-primary/80 mix-blend-multiply" })]
|
|
70
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
71
|
-
className: "relative z-10 flex flex-col items-center text-center max-w-4xl mx-auto space-y-6",
|
|
72
|
-
children: [
|
|
73
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
|
|
74
|
-
className: "font-heading text-[32px] @md:text-[56px] @lg:text-[72px] italic leading-tight",
|
|
75
|
-
children: props.title
|
|
76
|
-
}),
|
|
77
|
-
props.tagline && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
78
|
-
className: "font-sans text-primary-foreground/80 text-lg @md:text-xl max-w-2xl",
|
|
79
|
-
children: props.tagline
|
|
80
|
-
}),
|
|
81
|
-
props.stats && props.stats.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
82
|
-
className: "flex flex-wrap items-center justify-center gap-3 pt-6",
|
|
83
|
-
children: props.stats.map((stat, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
84
|
-
className: "bg-accent text-white font-sans text-sm font-medium rounded-full px-4 py-2",
|
|
85
|
-
children: [
|
|
86
|
-
stat.value,
|
|
87
|
-
" ",
|
|
88
|
-
stat.label
|
|
89
|
-
]
|
|
90
|
-
}, i))
|
|
91
|
-
})
|
|
92
|
-
]
|
|
93
|
-
})]
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
//#endregion
|
|
97
|
-
//#region src/blocks/hero-viaggio-skeleton.tsx
|
|
98
|
-
const HeroViaggioSkeleton = (_props) => {
|
|
99
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
100
|
-
"data-type": "hero-viaggio-skeleton",
|
|
101
|
-
className: "flex flex-col items-center justify-center py-16 @md:py-24 px-6 bg-primary/10 rounded-xl overflow-hidden",
|
|
102
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
103
|
-
className: "flex flex-col items-center w-full max-w-4xl space-y-6",
|
|
104
|
-
children: [
|
|
105
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-[40px] @md:h-[64px] @lg:h-[80px] w-3/4 max-w-2xl bg-primary/20 rounded-lg" }),
|
|
106
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-[24px] @md:h-[28px] w-2/3 max-w-xl bg-primary/20 rounded-lg" }),
|
|
107
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
108
|
-
className: "flex gap-3 pt-6",
|
|
109
|
-
children: [
|
|
110
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-9 w-24 bg-primary/20 rounded-full" }),
|
|
111
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-9 w-32 bg-primary/20 rounded-full" }),
|
|
112
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-9 w-28 bg-primary/20 rounded-full" })
|
|
113
|
-
]
|
|
114
|
-
})
|
|
115
|
-
]
|
|
116
|
-
})
|
|
117
|
-
});
|
|
118
|
-
};
|
|
119
|
-
//#endregion
|
|
120
|
-
//#region src/blocks/concept-card.tsx
|
|
121
|
-
const ICON_MAP = {
|
|
122
|
-
golf: lucide_react.Circle,
|
|
123
|
-
wine: lucide_react.Wine,
|
|
124
|
-
art: lucide_react.Palette,
|
|
125
|
-
nature: lucide_react.TreePine,
|
|
126
|
-
family: lucide_react.Users,
|
|
127
|
-
outdoor: lucide_react.Mountain,
|
|
128
|
-
food: lucide_react.UtensilsCrossed,
|
|
129
|
-
wellness: lucide_react.Heart,
|
|
130
|
-
culture: lucide_react.Landmark
|
|
131
|
-
};
|
|
132
|
-
const ConceptCard = ({ props }) => {
|
|
133
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
134
|
-
"data-type": "concept-card",
|
|
135
|
-
className: (0, _websolutespa_ask_ui.cn)("bg-card rounded-xl border border-border shadow-sm overflow-hidden flex flex-col p-6 @md:p-8 space-y-6 @md:space-y-0 @md:flex-row @md:gap-12"),
|
|
136
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
137
|
-
className: "flex-1 border-l-4 border-accent pl-6 flex flex-col justify-center",
|
|
138
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
139
|
-
className: "text-muted-foreground font-sans leading-relaxed",
|
|
140
|
-
children: props.debrief
|
|
141
|
-
})
|
|
142
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
143
|
-
className: "flex-1 flex flex-col justify-center space-y-6",
|
|
144
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h3", {
|
|
145
|
-
className: "font-heading italic text-foreground text-lg @md:text-xl leading-snug",
|
|
146
|
-
children: [
|
|
147
|
-
"“",
|
|
148
|
-
props.concept,
|
|
149
|
-
"”"
|
|
150
|
-
]
|
|
151
|
-
}), props.themes && props.themes.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
152
|
-
className: "flex flex-wrap gap-2",
|
|
153
|
-
children: props.themes.map((theme, i) => {
|
|
154
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
155
|
-
className: "flex items-center gap-1.5 bg-muted text-foreground text-xs font-medium px-3 py-1.5 rounded-full",
|
|
156
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ICON_MAP[theme.icon.toLowerCase()] || lucide_react.Circle, { className: "w-3.5 h-3.5 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: theme.label })]
|
|
157
|
-
}, i);
|
|
158
|
-
})
|
|
159
|
-
})]
|
|
160
|
-
})]
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
//#endregion
|
|
164
|
-
//#region src/blocks/concept-card-skeleton.tsx
|
|
165
|
-
const ConceptCardSkeleton = (_props) => {
|
|
166
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
167
|
-
"data-type": "concept-card-skeleton",
|
|
168
|
-
className: "bg-card rounded-xl border border-border shadow-sm p-6 @md:p-8 flex flex-col @md:flex-row gap-6 @md:gap-12",
|
|
169
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
170
|
-
className: "flex-1 border-l-4 border-muted pl-6 space-y-2",
|
|
171
|
-
children: [
|
|
172
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-full" }),
|
|
173
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-[90%]" }),
|
|
174
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-[80%]" })
|
|
175
|
-
]
|
|
176
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
177
|
-
className: "flex-1 space-y-6",
|
|
178
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
179
|
-
className: "space-y-2",
|
|
180
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-[70%]" })]
|
|
181
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
182
|
-
className: "flex gap-2",
|
|
183
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-7 w-20 rounded-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-7 w-24 rounded-full" })]
|
|
184
|
-
})]
|
|
185
|
-
})]
|
|
186
|
-
});
|
|
187
|
-
};
|
|
188
|
-
//#endregion
|
|
189
|
-
//#region src/blocks/day-plan.tsx
|
|
190
|
-
const LOGISTICS_ICON_MAP = {
|
|
191
|
-
car: lucide_react.Car,
|
|
192
|
-
train: lucide_react.Train,
|
|
193
|
-
ship: lucide_react.Ship
|
|
194
|
-
};
|
|
195
|
-
const DayPlan = ({ props }) => {
|
|
196
|
-
if (!props.sections) return null;
|
|
197
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
198
|
-
"data-type": "day-plan",
|
|
199
|
-
className: (0, _websolutespa_ask_ui.cn)("flex flex-col w-full shadow-sm"),
|
|
200
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
201
|
-
className: "bg-primary rounded-t-xl px-6 py-5 flex flex-col gap-2 relative overflow-hidden",
|
|
202
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
203
|
-
className: "flex items-center justify-between z-10",
|
|
204
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
205
|
-
className: "font-sans uppercase tracking-wider text-primary-foreground/60 text-xs font-semibold",
|
|
206
|
-
children: ["Giorno ", props.dayNumber]
|
|
207
|
-
}), props.location && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
208
|
-
className: "flex items-center gap-1 text-primary-foreground/80 text-sm",
|
|
209
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MapPin, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: props.location })]
|
|
210
|
-
})]
|
|
211
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
212
|
-
className: "font-heading text-primary-foreground text-2xl @md:text-3xl z-10 leading-tight",
|
|
213
|
-
children: props.title
|
|
214
|
-
})]
|
|
215
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
216
|
-
className: "bg-card rounded-b-xl px-6 py-2 border border-t-0 border-border",
|
|
217
|
-
children: [
|
|
218
|
-
props.sections.golf && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
219
|
-
className: "py-5 border-b border-border/50 last:border-0",
|
|
220
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
221
|
-
className: "flex items-center gap-2 mb-3",
|
|
222
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Flag, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
223
|
-
className: "font-sans font-semibold uppercase text-xs tracking-wider text-muted-foreground",
|
|
224
|
-
children: "Golf"
|
|
225
|
-
})]
|
|
226
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
227
|
-
className: "space-y-2",
|
|
228
|
-
children: [
|
|
229
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
230
|
-
className: "font-bold text-foreground",
|
|
231
|
-
children: props.sections.golf.clubName
|
|
232
|
-
}),
|
|
233
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
234
|
-
className: "flex gap-2",
|
|
235
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
236
|
-
className: "text-xs font-medium bg-muted px-2 py-0.5 rounded text-foreground",
|
|
237
|
-
children: [props.sections.golf.holes, " Holes"]
|
|
238
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
239
|
-
className: "text-xs font-medium bg-muted px-2 py-0.5 rounded text-foreground",
|
|
240
|
-
children: ["Par ", props.sections.golf.par]
|
|
241
|
-
})]
|
|
242
|
-
}),
|
|
243
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
244
|
-
className: "text-sm text-foreground/80 leading-relaxed",
|
|
245
|
-
children: props.sections.golf.description
|
|
246
|
-
}),
|
|
247
|
-
props.sections.golf.highlight && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
248
|
-
className: "text-sm italic text-accent font-serif mt-1",
|
|
249
|
-
children: props.sections.golf.highlight
|
|
250
|
-
})
|
|
251
|
-
]
|
|
252
|
-
})]
|
|
253
|
-
}),
|
|
254
|
-
props.sections.explore && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
255
|
-
className: "py-5 border-b border-border/50 last:border-0",
|
|
256
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
257
|
-
className: "flex items-center gap-2 mb-3",
|
|
258
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Compass, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
259
|
-
className: "font-sans font-semibold uppercase text-xs tracking-wider text-muted-foreground",
|
|
260
|
-
children: "Explore"
|
|
261
|
-
})]
|
|
262
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
|
|
263
|
-
className: "space-y-3",
|
|
264
|
-
children: props.sections.explore.attractions.map((attr, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
265
|
-
className: "flex flex-col @md:flex-row @md:items-center gap-1 @md:gap-3",
|
|
266
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
267
|
-
className: "font-medium text-foreground text-sm",
|
|
268
|
-
children: attr.name
|
|
269
|
-
}), attr.type && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
270
|
-
className: "text-[10px] uppercase tracking-wider font-semibold bg-accent/10 text-accent px-1.5 py-0.5 rounded w-fit",
|
|
271
|
-
children: attr.type
|
|
272
|
-
})]
|
|
273
|
-
}, i))
|
|
274
|
-
})]
|
|
275
|
-
}),
|
|
276
|
-
props.sections.dine && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
277
|
-
className: "py-5 border-b border-border/50 last:border-0",
|
|
278
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
279
|
-
className: "flex items-center gap-2 mb-3",
|
|
280
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.UtensilsCrossed, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
281
|
-
className: "font-sans font-semibold uppercase text-xs tracking-wider text-muted-foreground",
|
|
282
|
-
children: "Dine"
|
|
283
|
-
})]
|
|
284
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
285
|
-
className: "space-y-1.5",
|
|
286
|
-
children: [
|
|
287
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
288
|
-
className: "font-bold text-foreground text-sm flex items-center gap-2",
|
|
289
|
-
children: [props.sections.dine.restaurantName, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
290
|
-
className: "font-normal italic text-muted-foreground text-xs",
|
|
291
|
-
children: props.sections.dine.cuisine
|
|
292
|
-
})]
|
|
293
|
-
}),
|
|
294
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
295
|
-
className: "text-sm text-foreground/80",
|
|
296
|
-
children: props.sections.dine.description
|
|
297
|
-
}),
|
|
298
|
-
props.sections.dine.signatureDish && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
299
|
-
className: "text-sm text-accent italic mt-1",
|
|
300
|
-
children: ["★ ", props.sections.dine.signatureDish]
|
|
301
|
-
})
|
|
302
|
-
]
|
|
303
|
-
})]
|
|
304
|
-
}),
|
|
305
|
-
props.sections.wine && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
306
|
-
className: "py-5 border-b border-border/50 last:border-0",
|
|
307
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
308
|
-
className: "flex items-center gap-2 mb-3",
|
|
309
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Wine, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
310
|
-
className: "font-sans font-semibold uppercase text-xs tracking-wider text-muted-foreground",
|
|
311
|
-
children: "Wine"
|
|
312
|
-
})]
|
|
313
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
314
|
-
className: "space-y-2",
|
|
315
|
-
children: [
|
|
316
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
317
|
-
className: "font-bold text-foreground text-sm",
|
|
318
|
-
children: props.sections.wine.cantinaName
|
|
319
|
-
}),
|
|
320
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
321
|
-
className: "text-sm text-foreground/80",
|
|
322
|
-
children: props.sections.wine.description
|
|
323
|
-
}),
|
|
324
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
325
|
-
className: "flex flex-wrap gap-1.5 mt-2",
|
|
326
|
-
children: props.sections.wine.wines.map((wine, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
327
|
-
className: "text-xs bg-muted text-foreground px-2 py-1 rounded-md",
|
|
328
|
-
children: wine
|
|
329
|
-
}, i))
|
|
330
|
-
})
|
|
331
|
-
]
|
|
332
|
-
})]
|
|
333
|
-
}),
|
|
334
|
-
props.sections.stay && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
335
|
-
className: "py-5 border-b border-border/50 last:border-0",
|
|
336
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
337
|
-
className: "flex items-center gap-2 mb-3",
|
|
338
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Bed, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
339
|
-
className: "font-sans font-semibold uppercase text-xs tracking-wider text-muted-foreground",
|
|
340
|
-
children: "Stay"
|
|
341
|
-
})]
|
|
342
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
343
|
-
className: "space-y-1",
|
|
344
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
345
|
-
className: "flex items-center gap-2",
|
|
346
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
347
|
-
className: "font-bold text-foreground text-sm",
|
|
348
|
-
children: props.sections.stay.name
|
|
349
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
350
|
-
className: "text-[10px] uppercase tracking-wider font-semibold bg-primary/10 text-primary px-1.5 py-0.5 rounded",
|
|
351
|
-
children: props.sections.stay.type
|
|
352
|
-
})]
|
|
353
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
354
|
-
className: "text-sm text-foreground/80",
|
|
355
|
-
children: props.sections.stay.description
|
|
356
|
-
})]
|
|
357
|
-
})]
|
|
358
|
-
}),
|
|
359
|
-
props.sections.logistics && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
360
|
-
className: "py-5 border-b border-border/50 last:border-0",
|
|
361
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
362
|
-
className: "flex items-center gap-2 mb-3",
|
|
363
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Car, { className: "w-4 h-4 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
364
|
-
className: "font-sans font-semibold uppercase text-xs tracking-wider text-muted-foreground",
|
|
365
|
-
children: "Logistics"
|
|
366
|
-
})]
|
|
367
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
368
|
-
className: "flex flex-col @md:flex-row @md:items-center gap-2 @md:gap-4 text-sm",
|
|
369
|
-
children: [
|
|
370
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
371
|
-
className: "flex items-center gap-2 text-foreground font-medium",
|
|
372
|
-
children: [
|
|
373
|
-
props.sections.logistics.from,
|
|
374
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
375
|
-
className: "text-muted-foreground text-xs",
|
|
376
|
-
children: "→"
|
|
377
|
-
}),
|
|
378
|
-
props.sections.logistics.to
|
|
379
|
-
]
|
|
380
|
-
}),
|
|
381
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
382
|
-
className: "flex gap-2 items-center",
|
|
383
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
384
|
-
className: "text-xs bg-muted px-2 py-0.5 rounded flex items-center gap-1",
|
|
385
|
-
children: [props.sections.logistics.transportIcon && LOGISTICS_ICON_MAP[props.sections.logistics.transportIcon] && (() => {
|
|
386
|
-
const Icon = LOGISTICS_ICON_MAP[props.sections.logistics.transportIcon];
|
|
387
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: "w-3 h-3" });
|
|
388
|
-
})(), props.sections.logistics.time]
|
|
389
|
-
})
|
|
390
|
-
}),
|
|
391
|
-
props.sections.logistics.note && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
392
|
-
className: "text-xs text-muted-foreground italic",
|
|
393
|
-
children: props.sections.logistics.note
|
|
394
|
-
})
|
|
395
|
-
]
|
|
396
|
-
})]
|
|
397
|
-
}),
|
|
398
|
-
props.sections.curiosity && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
399
|
-
className: "py-5 border-b border-border/50 last:border-0",
|
|
400
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
401
|
-
className: "bg-accent/5 rounded-lg p-4 flex gap-3 items-start",
|
|
402
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Lightbulb, { className: "w-5 h-5 text-accent shrink-0 mt-0.5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
403
|
-
className: "text-sm italic text-foreground/90 leading-relaxed",
|
|
404
|
-
children: props.sections.curiosity.text
|
|
405
|
-
})]
|
|
406
|
-
})
|
|
407
|
-
})
|
|
408
|
-
]
|
|
409
|
-
})]
|
|
410
|
-
});
|
|
411
|
-
};
|
|
412
|
-
//#endregion
|
|
413
|
-
//#region src/blocks/day-plan-skeleton.tsx
|
|
414
|
-
const DayPlanSkeleton = (_props) => {
|
|
415
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
416
|
-
"data-type": "day-plan-skeleton",
|
|
417
|
-
className: "flex flex-col w-full shadow-sm rounded-xl overflow-hidden border border-border",
|
|
418
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
419
|
-
className: "bg-primary/10 px-6 py-5 space-y-3",
|
|
420
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
421
|
-
className: "flex justify-between",
|
|
422
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-3 w-20 bg-primary/20" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-24 bg-primary/20" })]
|
|
423
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-8 w-2/3 bg-primary/20" })]
|
|
424
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
425
|
-
className: "bg-card px-6 py-2",
|
|
426
|
-
children: [
|
|
427
|
-
1,
|
|
428
|
-
2,
|
|
429
|
-
3
|
|
430
|
-
].map((i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
431
|
-
className: "py-5 border-b border-border/50 last:border-0 space-y-3",
|
|
432
|
-
children: [
|
|
433
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
434
|
-
className: "flex items-center gap-2",
|
|
435
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "w-4 h-4 rounded-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-3 w-16" })]
|
|
436
|
-
}),
|
|
437
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-5 w-1/3" }),
|
|
438
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-full" }),
|
|
439
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-[90%]" })
|
|
440
|
-
]
|
|
441
|
-
}, i))
|
|
442
|
-
})]
|
|
443
|
-
});
|
|
444
|
-
};
|
|
445
|
-
//#endregion
|
|
446
|
-
//#region src/blocks/golf-club-spotlight.tsx
|
|
447
|
-
const GolfClubSpotlight = ({ props }) => {
|
|
448
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
449
|
-
"data-type": "golf-club-spotlight",
|
|
450
|
-
className: (0, _websolutespa_ask_ui.cn)("bg-card rounded-xl border border-border shadow-sm relative overflow-hidden flex flex-col @md:flex-row"),
|
|
451
|
-
children: [
|
|
452
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
453
|
-
className: "absolute top-0 right-0 bg-accent text-white text-[10px] font-bold uppercase tracking-widest px-4 py-1.5 rounded-bl-lg z-10",
|
|
454
|
-
children: "Network Golf in Veneto"
|
|
455
|
-
}),
|
|
456
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
457
|
-
className: "w-full @md:w-2/5 min-h-[250px] relative",
|
|
458
|
-
children: props.imageSrc ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
459
|
-
src: props.imageSrc,
|
|
460
|
-
alt: props.name,
|
|
461
|
-
className: "w-full h-full object-cover"
|
|
462
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
463
|
-
className: "w-full h-full bg-gradient-to-br from-primary/80 to-primary flex items-center justify-center p-8",
|
|
464
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Flag, { className: "w-16 h-16 text-white/20" })
|
|
465
|
-
})
|
|
466
|
-
}),
|
|
467
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
468
|
-
className: "w-full @md:w-3/5 p-6 @md:p-8 flex flex-col",
|
|
469
|
-
children: [
|
|
470
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
471
|
-
className: "font-heading text-3xl text-foreground mb-1 pr-12",
|
|
472
|
-
children: props.name
|
|
473
|
-
}),
|
|
474
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
475
|
-
className: "font-serif italic text-muted-foreground text-lg mb-6",
|
|
476
|
-
children: props.tagline
|
|
477
|
-
}),
|
|
478
|
-
props.stats && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
479
|
-
className: "grid grid-cols-2 @lg:grid-cols-3 gap-3 mb-6",
|
|
480
|
-
children: [
|
|
481
|
-
props.stats.holes && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
482
|
-
className: "flex items-center gap-2 bg-muted/50 p-2.5 rounded-lg border border-border/50",
|
|
483
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Circle, { className: "w-4 h-4 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
484
|
-
className: "flex flex-col",
|
|
485
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
486
|
-
className: "text-[10px] uppercase text-muted-foreground font-semibold",
|
|
487
|
-
children: "Holes"
|
|
488
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
489
|
-
className: "text-sm font-medium",
|
|
490
|
-
children: props.stats.holes
|
|
491
|
-
})]
|
|
492
|
-
})]
|
|
493
|
-
}),
|
|
494
|
-
props.stats.par && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
495
|
-
className: "flex items-center gap-2 bg-muted/50 p-2.5 rounded-lg border border-border/50",
|
|
496
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Target, { className: "w-4 h-4 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
497
|
-
className: "flex flex-col",
|
|
498
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
499
|
-
className: "text-[10px] uppercase text-muted-foreground font-semibold",
|
|
500
|
-
children: "Par"
|
|
501
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
502
|
-
className: "text-sm font-medium",
|
|
503
|
-
children: props.stats.par
|
|
504
|
-
})]
|
|
505
|
-
})]
|
|
506
|
-
}),
|
|
507
|
-
props.stats.distance && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
508
|
-
className: "flex items-center gap-2 bg-muted/50 p-2.5 rounded-lg border border-border/50",
|
|
509
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Ruler, { className: "w-4 h-4 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
510
|
-
className: "flex flex-col",
|
|
511
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
512
|
-
className: "text-[10px] uppercase text-muted-foreground font-semibold",
|
|
513
|
-
children: "Length"
|
|
514
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
515
|
-
className: "text-sm font-medium",
|
|
516
|
-
children: props.stats.distance
|
|
517
|
-
})]
|
|
518
|
-
})]
|
|
519
|
-
}),
|
|
520
|
-
props.stats.courses && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
521
|
-
className: "flex items-center gap-2 bg-muted/50 p-2.5 rounded-lg border border-border/50",
|
|
522
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MapPin, { className: "w-4 h-4 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
523
|
-
className: "flex flex-col",
|
|
524
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
525
|
-
className: "text-[10px] uppercase text-muted-foreground font-semibold",
|
|
526
|
-
children: "Courses"
|
|
527
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
528
|
-
className: "text-sm font-medium",
|
|
529
|
-
children: props.stats.courses
|
|
530
|
-
})]
|
|
531
|
-
})]
|
|
532
|
-
}),
|
|
533
|
-
props.stats.difficulty && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
534
|
-
className: "flex items-center gap-2 bg-muted/50 p-2.5 rounded-lg border border-border/50",
|
|
535
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Gauge, { className: "w-4 h-4 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
536
|
-
className: "flex flex-col",
|
|
537
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
538
|
-
className: "text-[10px] uppercase text-muted-foreground font-semibold",
|
|
539
|
-
children: "Difficulty"
|
|
540
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
541
|
-
className: "text-sm font-medium",
|
|
542
|
-
children: props.stats.difficulty
|
|
543
|
-
})]
|
|
544
|
-
})]
|
|
545
|
-
}),
|
|
546
|
-
props.stats.terrain && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
547
|
-
className: "flex items-center gap-2 bg-muted/50 p-2.5 rounded-lg border border-border/50",
|
|
548
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Mountain, { className: "w-4 h-4 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
549
|
-
className: "flex flex-col",
|
|
550
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
551
|
-
className: "text-[10px] uppercase text-muted-foreground font-semibold",
|
|
552
|
-
children: "Terrain"
|
|
553
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
554
|
-
className: "text-sm font-medium",
|
|
555
|
-
children: props.stats.terrain
|
|
556
|
-
})]
|
|
557
|
-
})]
|
|
558
|
-
})
|
|
559
|
-
]
|
|
560
|
-
}),
|
|
561
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
562
|
-
className: "text-sm text-foreground/80 leading-relaxed mb-6",
|
|
563
|
-
children: props.description
|
|
564
|
-
}),
|
|
565
|
-
props.attractions && props.attractions.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
566
|
-
className: "mb-6",
|
|
567
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
|
|
568
|
-
className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground mb-2",
|
|
569
|
-
children: "Nearby Attractions"
|
|
570
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
|
|
571
|
-
className: "text-sm space-y-1",
|
|
572
|
-
children: props.attractions.map((attr, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
573
|
-
className: "flex items-center gap-2 text-foreground/80",
|
|
574
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "w-1 h-1 rounded-full bg-accent" }), attr]
|
|
575
|
-
}, i))
|
|
576
|
-
})]
|
|
577
|
-
}),
|
|
578
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
579
|
-
className: "mt-auto pt-4 border-t border-border flex flex-wrap gap-4 text-xs text-muted-foreground",
|
|
580
|
-
children: [
|
|
581
|
-
props.address && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
582
|
-
className: "flex items-center gap-1.5",
|
|
583
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MapPin, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: props.address })]
|
|
584
|
-
}),
|
|
585
|
-
props.phone && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
586
|
-
className: "flex items-center gap-1.5",
|
|
587
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Phone, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: props.phone })]
|
|
588
|
-
}),
|
|
589
|
-
props.email && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
590
|
-
className: "flex items-center gap-1.5",
|
|
591
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Mail, { className: "w-3.5 h-3.5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: props.email })]
|
|
592
|
-
})
|
|
593
|
-
]
|
|
594
|
-
})
|
|
595
|
-
]
|
|
596
|
-
})
|
|
597
|
-
]
|
|
598
|
-
});
|
|
599
|
-
};
|
|
600
|
-
//#endregion
|
|
601
|
-
//#region src/blocks/golf-club-spotlight-skeleton.tsx
|
|
602
|
-
const GolfClubSpotlightSkeleton = (_props) => {
|
|
603
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
604
|
-
"data-type": "golf-club-spotlight-skeleton",
|
|
605
|
-
className: "bg-card rounded-xl border border-border shadow-sm flex flex-col @md:flex-row overflow-hidden",
|
|
606
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "w-full @md:w-2/5 min-h-[250px] rounded-none" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
607
|
-
className: "w-full @md:w-3/5 p-6 @md:p-8 space-y-6",
|
|
608
|
-
children: [
|
|
609
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-8 w-3/4 mb-2" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-5 w-1/2" })] }),
|
|
610
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
611
|
-
className: "grid grid-cols-2 @lg:grid-cols-3 gap-3",
|
|
612
|
-
children: [
|
|
613
|
-
1,
|
|
614
|
-
2,
|
|
615
|
-
3,
|
|
616
|
-
4,
|
|
617
|
-
5,
|
|
618
|
-
6
|
|
619
|
-
].map((i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-12 w-full rounded-lg" }, i))
|
|
620
|
-
}),
|
|
621
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
622
|
-
className: "space-y-2",
|
|
623
|
-
children: [
|
|
624
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-full" }),
|
|
625
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-[90%]" }),
|
|
626
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-[80%]" })
|
|
627
|
-
]
|
|
628
|
-
}),
|
|
629
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
630
|
-
className: "pt-4 border-t border-border flex gap-4",
|
|
631
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-24" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-24" })]
|
|
632
|
-
})
|
|
633
|
-
]
|
|
634
|
-
})]
|
|
635
|
-
});
|
|
636
|
-
};
|
|
637
|
-
//#endregion
|
|
638
|
-
//#region src/blocks/experience-grid.tsx
|
|
639
|
-
const CATEGORY_COLORS = {
|
|
640
|
-
wine: "bg-[#722F37] text-white",
|
|
641
|
-
food: "bg-[#D2691E] text-white",
|
|
642
|
-
art: "bg-[#4B0082] text-white",
|
|
643
|
-
nature: "bg-[#2E8B57] text-white",
|
|
644
|
-
family: "bg-[#4169E1] text-white",
|
|
645
|
-
outdoor: "bg-[#556B2F] text-white",
|
|
646
|
-
wellness: "bg-[#9370DB] text-white"
|
|
647
|
-
};
|
|
648
|
-
const ExperienceGrid = ({ props, children }) => {
|
|
649
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
650
|
-
"data-type": "experience-grid",
|
|
651
|
-
className: (0, _websolutespa_ask_ui.cn)("space-y-6"),
|
|
652
|
-
children: [props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
653
|
-
className: "font-heading text-2xl @md:text-3xl text-foreground",
|
|
654
|
-
children: props.title
|
|
655
|
-
}), props.experiences && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
656
|
-
className: "grid grid-cols-1 @md:grid-cols-2 @lg:grid-cols-3 gap-4",
|
|
657
|
-
children: props.experiences.map((exp, i) => {
|
|
658
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
659
|
-
className: "bg-card rounded-xl border border-border p-5 hover:shadow-md transition-shadow flex flex-col h-full relative overflow-hidden",
|
|
660
|
-
children: [
|
|
661
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
662
|
-
className: "mb-4",
|
|
663
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
664
|
-
className: (0, _websolutespa_ask_ui.cn)("text-[10px] uppercase font-bold tracking-wider px-2 py-1 rounded-md", CATEGORY_COLORS[exp.category?.toLowerCase()] || "bg-accent text-white"),
|
|
665
|
-
children: exp.category
|
|
666
|
-
})
|
|
667
|
-
}),
|
|
668
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
669
|
-
className: "font-semibold text-lg text-foreground mb-1 leading-tight",
|
|
670
|
-
children: exp.name
|
|
671
|
-
}),
|
|
672
|
-
exp.location && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
673
|
-
className: "flex items-center gap-1 text-xs text-muted-foreground mb-3",
|
|
674
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MapPin, { className: "w-3 h-3" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: exp.location })]
|
|
675
|
-
}),
|
|
676
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
677
|
-
className: "text-sm text-foreground/80 leading-relaxed mb-4 flex-grow",
|
|
678
|
-
children: exp.description
|
|
679
|
-
}),
|
|
680
|
-
exp.highlight && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
681
|
-
className: "mt-auto pt-3 border-t border-border/50",
|
|
682
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
683
|
-
className: "text-sm italic text-accent font-serif",
|
|
684
|
-
children: exp.highlight
|
|
685
|
-
})
|
|
686
|
-
})
|
|
687
|
-
]
|
|
688
|
-
}, i);
|
|
689
|
-
})
|
|
690
|
-
})]
|
|
691
|
-
});
|
|
692
|
-
};
|
|
693
|
-
//#endregion
|
|
694
|
-
//#region src/blocks/experience-grid-skeleton.tsx
|
|
695
|
-
const ExperienceGridSkeleton = (_props) => {
|
|
696
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
697
|
-
"data-type": "experience-grid-skeleton",
|
|
698
|
-
className: "space-y-6",
|
|
699
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-8 w-48" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
700
|
-
className: "grid grid-cols-1 @md:grid-cols-2 @lg:grid-cols-3 gap-4",
|
|
701
|
-
children: [
|
|
702
|
-
1,
|
|
703
|
-
2,
|
|
704
|
-
3
|
|
705
|
-
].map((i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
706
|
-
className: "bg-card rounded-xl border border-border p-5 h-48 flex flex-col gap-3",
|
|
707
|
-
children: [
|
|
708
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-5 w-20 rounded-md" }),
|
|
709
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-3/4" }),
|
|
710
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-3 w-1/3" }),
|
|
711
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
712
|
-
className: "space-y-2 flex-grow",
|
|
713
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-[80%]" })]
|
|
714
|
-
})
|
|
715
|
-
]
|
|
716
|
-
}, i))
|
|
717
|
-
})]
|
|
718
|
-
});
|
|
719
|
-
};
|
|
720
|
-
//#endregion
|
|
721
|
-
//#region src/blocks/route-strip.tsx
|
|
722
|
-
const TRANSPORT_ICONS = {
|
|
723
|
-
car: lucide_react.Car,
|
|
724
|
-
train: lucide_react.Train,
|
|
725
|
-
bus: lucide_react.Bus,
|
|
726
|
-
boat: lucide_react.Ship,
|
|
727
|
-
walk: lucide_react.Footprints,
|
|
728
|
-
flight: lucide_react.Plane
|
|
729
|
-
};
|
|
730
|
-
const RouteStrip = ({ props }) => {
|
|
731
|
-
if (!props.legs || props.legs.length === 0) return null;
|
|
732
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
733
|
-
"data-type": "route-strip",
|
|
734
|
-
className: (0, _websolutespa_ask_ui.cn)("bg-muted rounded-xl p-6 overflow-hidden"),
|
|
735
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
736
|
-
className: "hidden @md:flex items-center justify-between relative w-full pt-4 pb-2 px-4",
|
|
737
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute top-1/2 left-8 right-8 h-[2px] border-b-2 border-dashed border-border/60 -translate-y-1/2 z-0" }), props.legs.map((leg, i) => {
|
|
738
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
739
|
-
className: "relative z-10 flex flex-col items-center bg-muted px-4 group",
|
|
740
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
741
|
-
className: "flex items-center justify-center w-10 h-10 rounded-full bg-card border-2 border-primary/20 text-primary shadow-sm group-hover:border-primary transition-colors mb-3",
|
|
742
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TRANSPORT_ICONS[leg.transport?.toLowerCase()] || lucide_react.Car, { className: "w-5 h-5" })
|
|
743
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
744
|
-
className: "flex flex-col items-center text-center max-w-[120px]",
|
|
745
|
-
children: [
|
|
746
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
747
|
-
className: "text-xs font-bold text-foreground mb-0.5",
|
|
748
|
-
children: leg.from
|
|
749
|
-
}),
|
|
750
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
751
|
-
className: "text-[10px] text-muted-foreground mb-1",
|
|
752
|
-
children: ["to ", leg.to]
|
|
753
|
-
}),
|
|
754
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
755
|
-
className: "flex gap-1",
|
|
756
|
-
children: [leg.time && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
757
|
-
className: "bg-primary/10 text-primary text-[9px] px-1.5 py-0.5 rounded font-medium",
|
|
758
|
-
children: leg.time
|
|
759
|
-
}), leg.distance && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
760
|
-
className: "bg-primary/10 text-primary text-[9px] px-1.5 py-0.5 rounded font-medium",
|
|
761
|
-
children: leg.distance
|
|
762
|
-
})]
|
|
763
|
-
})
|
|
764
|
-
]
|
|
765
|
-
})]
|
|
766
|
-
}, i);
|
|
767
|
-
})]
|
|
768
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
769
|
-
className: "flex @md:hidden flex-col gap-6 relative pl-4 py-2",
|
|
770
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute top-4 bottom-4 left-[27px] w-[2px] border-l-2 border-dashed border-border/60 z-0" }), props.legs.map((leg, i) => {
|
|
771
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
772
|
-
className: "relative z-10 flex items-start gap-4",
|
|
773
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
774
|
-
className: "flex items-center justify-center w-8 h-8 rounded-full bg-card border-2 border-primary/20 text-primary shadow-sm shrink-0",
|
|
775
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TRANSPORT_ICONS[leg.transport?.toLowerCase()] || lucide_react.Car, { className: "w-4 h-4" })
|
|
776
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
777
|
-
className: "flex flex-col pt-1",
|
|
778
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
779
|
-
className: "flex items-center gap-1.5 mb-0.5",
|
|
780
|
-
children: [
|
|
781
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
782
|
-
className: "text-sm font-bold text-foreground",
|
|
783
|
-
children: leg.from
|
|
784
|
-
}),
|
|
785
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
786
|
-
className: "text-muted-foreground text-xs",
|
|
787
|
-
children: "→"
|
|
788
|
-
}),
|
|
789
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
790
|
-
className: "text-sm font-medium text-foreground/80",
|
|
791
|
-
children: leg.to
|
|
792
|
-
})
|
|
793
|
-
]
|
|
794
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
795
|
-
className: "flex gap-2 mt-1",
|
|
796
|
-
children: [leg.time && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
797
|
-
className: "bg-primary/10 text-primary text-[10px] px-2 py-0.5 rounded font-medium",
|
|
798
|
-
children: leg.time
|
|
799
|
-
}), leg.distance && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
800
|
-
className: "bg-primary/10 text-primary text-[10px] px-2 py-0.5 rounded font-medium",
|
|
801
|
-
children: leg.distance
|
|
802
|
-
})]
|
|
803
|
-
})]
|
|
804
|
-
})]
|
|
805
|
-
}, i);
|
|
806
|
-
})]
|
|
807
|
-
})]
|
|
808
|
-
});
|
|
809
|
-
};
|
|
810
|
-
//#endregion
|
|
811
|
-
//#region src/blocks/route-strip-skeleton.tsx
|
|
812
|
-
const RouteStripSkeleton = (_props) => {
|
|
813
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
814
|
-
"data-type": "route-strip-skeleton",
|
|
815
|
-
className: "bg-muted rounded-xl p-6",
|
|
816
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
817
|
-
className: "hidden @md:flex justify-between items-center relative w-full pt-4 pb-2 px-4",
|
|
818
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute top-1/2 left-8 right-8 h-[2px] bg-border/40 -translate-y-1/2" }), [
|
|
819
|
-
1,
|
|
820
|
-
2,
|
|
821
|
-
3
|
|
822
|
-
].map((i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
823
|
-
className: "z-10 flex flex-col items-center bg-muted px-4 gap-3",
|
|
824
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "w-10 h-10 rounded-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
825
|
-
className: "flex flex-col items-center gap-1",
|
|
826
|
-
children: [
|
|
827
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-3 w-16" }),
|
|
828
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-2 w-12" }),
|
|
829
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-20 rounded" })
|
|
830
|
-
]
|
|
831
|
-
})]
|
|
832
|
-
}, i))]
|
|
833
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
834
|
-
className: "flex @md:hidden flex-col gap-6 relative pl-4 py-2",
|
|
835
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute top-4 bottom-4 left-[27px] w-[2px] bg-border/40" }), [
|
|
836
|
-
1,
|
|
837
|
-
2,
|
|
838
|
-
3
|
|
839
|
-
].map((i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
840
|
-
className: "z-10 flex items-start gap-4",
|
|
841
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "w-8 h-8 rounded-full shrink-0" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
842
|
-
className: "flex flex-col gap-2 pt-1 w-full max-w-[200px]",
|
|
843
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-5 w-24 rounded" })]
|
|
844
|
-
})]
|
|
845
|
-
}, i))]
|
|
846
|
-
})]
|
|
847
|
-
});
|
|
848
|
-
};
|
|
849
|
-
//#endregion
|
|
850
|
-
//#region src/blocks/taste-card.tsx
|
|
851
|
-
const BADGE_ICONS = {
|
|
852
|
-
wine: lucide_react.Wine,
|
|
853
|
-
food: lucide_react.UtensilsCrossed,
|
|
854
|
-
experience: lucide_react.Sparkles
|
|
855
|
-
};
|
|
856
|
-
const TasteCard = ({ props }) => {
|
|
857
|
-
const Icon = BADGE_ICONS[props.type?.toLowerCase()] || lucide_react.Sparkles;
|
|
858
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
859
|
-
"data-type": "taste-card",
|
|
860
|
-
className: (0, _websolutespa_ask_ui.cn)("bg-card rounded-xl border border-border shadow-sm overflow-hidden flex flex-col @md:flex-row"),
|
|
861
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
862
|
-
className: "w-full @md:w-[40%] min-h-[200px] relative",
|
|
863
|
-
children: [props.imageSrc ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
864
|
-
src: props.imageSrc,
|
|
865
|
-
alt: props.name,
|
|
866
|
-
className: "w-full h-full object-cover"
|
|
867
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
868
|
-
className: "w-full h-full bg-gradient-to-br from-accent/20 to-accent/5 flex items-center justify-center p-8",
|
|
869
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: "w-12 h-12 text-accent/40" })
|
|
870
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
871
|
-
className: "absolute top-3 left-3 bg-white/90 backdrop-blur-sm px-2.5 py-1 rounded-md shadow-sm flex items-center gap-1.5 z-10",
|
|
872
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: "w-3.5 h-3.5 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
873
|
-
className: "text-[10px] font-bold uppercase tracking-widest text-foreground",
|
|
874
|
-
children: props.type
|
|
875
|
-
})]
|
|
876
|
-
})]
|
|
877
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
878
|
-
className: "w-full @md:w-[60%] p-5 @md:p-6 flex flex-col",
|
|
879
|
-
children: [
|
|
880
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
881
|
-
className: "font-heading text-xl text-foreground mb-1",
|
|
882
|
-
children: props.name
|
|
883
|
-
}),
|
|
884
|
-
props.location && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
885
|
-
className: "flex items-center gap-1 text-xs text-muted-foreground mb-4",
|
|
886
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MapPin, { className: "w-3 h-3" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: props.location })]
|
|
887
|
-
}),
|
|
888
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
889
|
-
className: "text-sm text-foreground/80 leading-relaxed mb-4",
|
|
890
|
-
children: props.description
|
|
891
|
-
}),
|
|
892
|
-
props.highlights && props.highlights.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
893
|
-
className: "flex flex-wrap gap-2 mb-4",
|
|
894
|
-
children: props.highlights.map((item, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
895
|
-
className: "bg-accent/10 text-accent text-xs font-medium px-3 py-1 rounded-full",
|
|
896
|
-
children: item
|
|
897
|
-
}, i))
|
|
898
|
-
}),
|
|
899
|
-
props.recommendation && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
900
|
-
className: "mt-auto bg-card border border-accent/20 border-l-2 border-l-accent rounded-r-lg p-3",
|
|
901
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
902
|
-
className: "text-xs italic text-foreground/90",
|
|
903
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
904
|
-
className: "font-semibold text-accent not-italic mr-1",
|
|
905
|
-
children: "Must try:"
|
|
906
|
-
}), props.recommendation]
|
|
907
|
-
})
|
|
908
|
-
})
|
|
909
|
-
]
|
|
910
|
-
})]
|
|
911
|
-
});
|
|
912
|
-
};
|
|
913
|
-
//#endregion
|
|
914
|
-
//#region src/blocks/taste-card-skeleton.tsx
|
|
915
|
-
const TasteCardSkeleton = (_props) => {
|
|
916
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
917
|
-
"data-type": "taste-card-skeleton",
|
|
918
|
-
className: "bg-card rounded-xl border border-border shadow-sm flex flex-col @md:flex-row overflow-hidden",
|
|
919
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "w-full @md:w-[40%] min-h-[200px] rounded-none" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
920
|
-
className: "w-full @md:w-[60%] p-5 @md:p-6 flex flex-col gap-4",
|
|
921
|
-
children: [
|
|
922
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-3/4 mb-2" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-3 w-1/3" })] }),
|
|
923
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
924
|
-
className: "space-y-2",
|
|
925
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-[90%]" })]
|
|
926
|
-
}),
|
|
927
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
928
|
-
className: "flex gap-2",
|
|
929
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-20 rounded-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-24 rounded-full" })]
|
|
930
|
-
}),
|
|
931
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-10 w-full mt-auto rounded-lg" })
|
|
932
|
-
]
|
|
933
|
-
})]
|
|
934
|
-
});
|
|
935
|
-
};
|
|
936
|
-
//#endregion
|
|
937
|
-
//#region src/blocks/stay-card.tsx
|
|
938
|
-
const StayCard = ({ props }) => {
|
|
939
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
940
|
-
"data-type": "stay-card",
|
|
941
|
-
className: (0, _websolutespa_ask_ui.cn)("bg-card rounded-xl border border-border shadow-sm overflow-hidden flex flex-col relative"),
|
|
942
|
-
children: [
|
|
943
|
-
props.priceRange && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
944
|
-
className: "absolute top-3 right-3 bg-white/90 backdrop-blur-sm px-2 py-1 rounded shadow-sm z-10 text-xs font-bold text-foreground",
|
|
945
|
-
children: props.priceRange
|
|
946
|
-
}),
|
|
947
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
948
|
-
className: "w-full aspect-video relative",
|
|
949
|
-
children: props.imageSrc ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
950
|
-
src: props.imageSrc,
|
|
951
|
-
alt: props.name,
|
|
952
|
-
className: "w-full h-full object-cover"
|
|
953
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
954
|
-
className: "w-full h-full bg-muted flex items-center justify-center",
|
|
955
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Bed, { className: "w-12 h-12 text-muted-foreground/30" })
|
|
956
|
-
})
|
|
957
|
-
}),
|
|
958
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
959
|
-
className: "p-5 flex flex-col flex-grow",
|
|
960
|
-
children: [
|
|
961
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
962
|
-
className: "flex items-center gap-2 mb-2",
|
|
963
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
964
|
-
className: "text-[10px] font-bold uppercase tracking-wider text-accent bg-accent/10 px-2 py-0.5 rounded",
|
|
965
|
-
children: props.type
|
|
966
|
-
}), props.stars && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
967
|
-
className: "flex text-yellow-500 text-xs tracking-tighter",
|
|
968
|
-
children: "★".repeat(props.stars)
|
|
969
|
-
})]
|
|
970
|
-
}),
|
|
971
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
972
|
-
className: "font-heading text-xl text-foreground leading-tight mb-1",
|
|
973
|
-
children: props.name
|
|
974
|
-
}),
|
|
975
|
-
props.location && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
976
|
-
className: "flex items-center gap-1 text-xs text-muted-foreground mb-4",
|
|
977
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MapPin, { className: "w-3 h-3" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: props.location })]
|
|
978
|
-
}),
|
|
979
|
-
props.features && props.features.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
980
|
-
className: "flex flex-wrap gap-2 mb-4",
|
|
981
|
-
children: props.features.map((feature, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
982
|
-
className: "flex items-center gap-1 text-[11px] font-medium text-foreground/70 bg-muted px-2 py-1 rounded",
|
|
983
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CheckCircle2, { className: "w-3 h-3 text-accent" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: feature })]
|
|
984
|
-
}, i))
|
|
985
|
-
}),
|
|
986
|
-
props.whyPerfect && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
987
|
-
className: "mt-auto bg-accent/5 border-l-2 border-accent rounded-r-lg p-3",
|
|
988
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
989
|
-
className: "text-sm italic text-foreground/80 leading-relaxed",
|
|
990
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
991
|
-
className: "font-semibold not-italic block text-xs text-foreground mb-0.5",
|
|
992
|
-
children: "Why it's perfect:"
|
|
993
|
-
}), props.whyPerfect]
|
|
994
|
-
})
|
|
995
|
-
})
|
|
996
|
-
]
|
|
997
|
-
})
|
|
998
|
-
]
|
|
999
|
-
});
|
|
1000
|
-
};
|
|
1001
|
-
//#endregion
|
|
1002
|
-
//#region src/blocks/stay-card-skeleton.tsx
|
|
1003
|
-
const StayCardSkeleton = (_props) => {
|
|
1004
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1005
|
-
"data-type": "stay-card-skeleton",
|
|
1006
|
-
className: "bg-card rounded-xl border border-border shadow-sm flex flex-col overflow-hidden",
|
|
1007
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "w-full aspect-video rounded-none" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1008
|
-
className: "p-5 flex flex-col gap-4",
|
|
1009
|
-
children: [
|
|
1010
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1011
|
-
className: "flex gap-2",
|
|
1012
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-5 w-16 rounded" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-5 w-12 rounded" })]
|
|
1013
|
-
}),
|
|
1014
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-3/4 mb-2" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-3 w-1/3" })] }),
|
|
1015
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1016
|
-
className: "flex flex-wrap gap-2",
|
|
1017
|
-
children: [
|
|
1018
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-20 rounded" }),
|
|
1019
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-24 rounded" }),
|
|
1020
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-6 w-16 rounded" })
|
|
1021
|
-
]
|
|
1022
|
-
}),
|
|
1023
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-20 w-full mt-2 rounded-lg" })
|
|
1024
|
-
]
|
|
1025
|
-
})]
|
|
1026
|
-
});
|
|
1027
|
-
};
|
|
1028
|
-
//#endregion
|
|
1029
|
-
//#region src/blocks/trip-summary.tsx
|
|
1030
|
-
const TripSummary = ({ props }) => {
|
|
1031
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1032
|
-
"data-type": "trip-summary",
|
|
1033
|
-
className: (0, _websolutespa_ask_ui.cn)("bg-primary text-primary-foreground rounded-xl px-6 py-12 @md:px-12 relative overflow-hidden"),
|
|
1034
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1035
|
-
className: "relative z-10 flex flex-col items-center max-w-4xl mx-auto space-y-10",
|
|
1036
|
-
children: [
|
|
1037
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
1038
|
-
className: "font-heading text-3xl @md:text-4xl text-center",
|
|
1039
|
-
children: props.title
|
|
1040
|
-
}),
|
|
1041
|
-
props.stats && props.stats.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1042
|
-
className: "flex flex-wrap justify-center gap-8 @md:gap-16 w-full",
|
|
1043
|
-
children: props.stats.map((stat, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1044
|
-
className: "flex flex-col items-center",
|
|
1045
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1046
|
-
className: "font-heading text-4xl @md:text-5xl italic text-accent mb-1",
|
|
1047
|
-
children: stat.value
|
|
1048
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1049
|
-
className: "text-xs uppercase tracking-widest font-semibold text-primary-foreground/70",
|
|
1050
|
-
children: stat.label
|
|
1051
|
-
})]
|
|
1052
|
-
}, i))
|
|
1053
|
-
}),
|
|
1054
|
-
props.highlights && props.highlights.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1055
|
-
className: "bg-primary-foreground/10 rounded-2xl p-6 @md:p-8 w-full max-w-2xl backdrop-blur-sm",
|
|
1056
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
|
|
1057
|
-
className: "grid grid-cols-1 @md:grid-cols-2 gap-y-4 gap-x-8",
|
|
1058
|
-
children: props.highlights.map((hl, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
1059
|
-
className: "flex items-start gap-3",
|
|
1060
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Check, { className: "w-5 h-5 text-accent shrink-0" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1061
|
-
className: "text-sm font-medium",
|
|
1062
|
-
children: hl
|
|
1063
|
-
})]
|
|
1064
|
-
}, i))
|
|
1065
|
-
})
|
|
1066
|
-
}),
|
|
1067
|
-
props.closingMessage && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
1068
|
-
className: "font-heading italic text-xl @md:text-2xl text-center text-primary-foreground/90 max-w-2xl",
|
|
1069
|
-
children: [
|
|
1070
|
-
"\"",
|
|
1071
|
-
props.closingMessage,
|
|
1072
|
-
"\""
|
|
1073
|
-
]
|
|
1074
|
-
}),
|
|
1075
|
-
props.ctaText && props.ctaUrl && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_button.Button, {
|
|
1076
|
-
asChild: true,
|
|
1077
|
-
variant: "outline",
|
|
1078
|
-
className: "border-primary-foreground text-foreground hover:bg-primary-foreground hover:text-primary rounded-full px-8 py-6 text-sm font-bold uppercase tracking-wider mt-4",
|
|
1079
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
|
|
1080
|
-
href: props.ctaUrl,
|
|
1081
|
-
children: props.ctaText
|
|
1082
|
-
})
|
|
1083
|
-
})
|
|
1084
|
-
]
|
|
1085
|
-
})
|
|
1086
|
-
});
|
|
1087
|
-
};
|
|
1088
|
-
//#endregion
|
|
1089
|
-
//#region src/blocks/trip-summary-skeleton.tsx
|
|
1090
|
-
const TripSummarySkeleton = (_props) => {
|
|
1091
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1092
|
-
"data-type": "trip-summary-skeleton",
|
|
1093
|
-
className: "bg-primary/90 rounded-xl px-6 py-12 @md:px-12",
|
|
1094
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1095
|
-
className: "flex flex-col items-center max-w-4xl mx-auto space-y-10",
|
|
1096
|
-
children: [
|
|
1097
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-10 w-2/3 max-w-md bg-primary-foreground/20" }),
|
|
1098
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1099
|
-
className: "flex flex-wrap justify-center gap-8 @md:gap-16 w-full",
|
|
1100
|
-
children: [
|
|
1101
|
-
1,
|
|
1102
|
-
2,
|
|
1103
|
-
3
|
|
1104
|
-
].map((i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1105
|
-
className: "flex flex-col items-center gap-2",
|
|
1106
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-12 w-16 bg-primary-foreground/20" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-3 w-20 bg-primary-foreground/20" })]
|
|
1107
|
-
}, i))
|
|
1108
|
-
}),
|
|
1109
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1110
|
-
className: "bg-primary-foreground/10 rounded-2xl p-6 @md:p-8 w-full max-w-2xl",
|
|
1111
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1112
|
-
className: "grid grid-cols-1 @md:grid-cols-2 gap-4",
|
|
1113
|
-
children: [
|
|
1114
|
-
1,
|
|
1115
|
-
2,
|
|
1116
|
-
3,
|
|
1117
|
-
4
|
|
1118
|
-
].map((i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1119
|
-
className: "flex gap-3",
|
|
1120
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "w-5 h-5 rounded-full bg-primary-foreground/30 shrink-0" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-full bg-primary-foreground/20" })]
|
|
1121
|
-
}, i))
|
|
1122
|
-
})
|
|
1123
|
-
}),
|
|
1124
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-8 w-3/4 max-w-lg bg-primary-foreground/20" }),
|
|
1125
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-12 w-48 rounded-full bg-primary-foreground/20 mt-4" })
|
|
1126
|
-
]
|
|
1127
|
-
})
|
|
1128
|
-
});
|
|
1129
|
-
};
|
|
1130
|
-
//#endregion
|
|
1131
|
-
//#region src/blocks/insider-tip.tsx
|
|
1132
|
-
const InsiderTip = ({ props }) => {
|
|
1133
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1134
|
-
"data-type": "insider-tip",
|
|
1135
|
-
className: (0, _websolutespa_ask_ui.cn)("bg-accent/5 border-l-4 border-accent rounded-r-xl px-5 py-4 @md:px-6 @md:py-5 flex gap-4"),
|
|
1136
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Lightbulb, { className: "w-6 h-6 text-accent shrink-0 mt-0.5" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1137
|
-
className: "flex flex-col space-y-1.5",
|
|
1138
|
-
children: [
|
|
1139
|
-
props.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
|
|
1140
|
-
className: "font-semibold text-foreground",
|
|
1141
|
-
children: props.title
|
|
1142
|
-
}),
|
|
1143
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1144
|
-
className: "font-sans text-sm text-foreground/90 leading-relaxed",
|
|
1145
|
-
children: props.text
|
|
1146
|
-
}),
|
|
1147
|
-
props.source && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1148
|
-
className: "text-xs italic text-muted-foreground mt-2",
|
|
1149
|
-
children: props.source
|
|
1150
|
-
})
|
|
1151
|
-
]
|
|
1152
|
-
})]
|
|
1153
|
-
});
|
|
1154
|
-
};
|
|
1155
|
-
//#endregion
|
|
1156
|
-
//#region src/blocks/insider-tip-skeleton.tsx
|
|
1157
|
-
const InsiderTipSkeleton = (_props) => {
|
|
1158
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1159
|
-
"data-type": "insider-tip-skeleton",
|
|
1160
|
-
className: "bg-muted/30 border-l-4 border-muted rounded-r-xl px-6 py-5 flex gap-4",
|
|
1161
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "w-6 h-6 rounded-full shrink-0" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1162
|
-
className: "flex flex-col w-full gap-2 pt-1",
|
|
1163
|
-
children: [
|
|
1164
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-5 w-1/3" }),
|
|
1165
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-full" }),
|
|
1166
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-4 w-[80%]" }),
|
|
1167
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_skeleton.Skeleton, { className: "h-3 w-1/4 mt-2" })
|
|
1168
|
-
]
|
|
1169
|
-
})]
|
|
1170
|
-
});
|
|
1171
|
-
};
|
|
1172
|
-
//#endregion
|
|
1173
|
-
//#region src/registry.ts
|
|
1174
|
-
const { registry, handlers, executeAction } = (0, _json_render_react.defineRegistry)(require_catalog.catalog, {
|
|
1175
|
-
components: {
|
|
1176
|
-
Root,
|
|
1177
|
-
Link,
|
|
1178
|
-
HeroViaggio,
|
|
1179
|
-
HeroViaggioSkeleton,
|
|
1180
|
-
ConceptCard,
|
|
1181
|
-
ConceptCardSkeleton,
|
|
1182
|
-
DayPlan,
|
|
1183
|
-
DayPlanSkeleton,
|
|
1184
|
-
GolfClubSpotlight,
|
|
1185
|
-
GolfClubSpotlightSkeleton,
|
|
1186
|
-
ExperienceGrid,
|
|
1187
|
-
ExperienceGridSkeleton,
|
|
1188
|
-
RouteStrip,
|
|
1189
|
-
RouteStripSkeleton,
|
|
1190
|
-
TasteCard,
|
|
1191
|
-
TasteCardSkeleton,
|
|
1192
|
-
StayCard,
|
|
1193
|
-
StayCardSkeleton,
|
|
1194
|
-
TripSummary,
|
|
1195
|
-
TripSummarySkeleton,
|
|
1196
|
-
InsiderTip,
|
|
1197
|
-
InsiderTipSkeleton
|
|
1198
|
-
},
|
|
1199
|
-
actions: {
|
|
1200
|
-
setState: async () => {},
|
|
1201
|
-
pushState: async () => {},
|
|
1202
|
-
removeState: async () => {},
|
|
1203
|
-
linkClick: async (params) => {
|
|
1204
|
-
const href = params?.href || "#";
|
|
1205
|
-
sonner.toast.info(`Navigating to: ${href}`);
|
|
1206
|
-
}
|
|
1207
|
-
}
|
|
1208
|
-
});
|
|
1209
|
-
/**
|
|
1210
|
-
* Render a single component to static HTML for layout builder previews.
|
|
1211
|
-
*/
|
|
1212
|
-
function renderPreview(componentName, props) {
|
|
1213
|
-
const Component = registry[componentName];
|
|
1214
|
-
if (!Component) return null;
|
|
1215
|
-
const elementProps = {
|
|
1216
|
-
props,
|
|
1217
|
-
emit: () => {},
|
|
1218
|
-
on: () => ({
|
|
1219
|
-
shouldPreventDefault: false,
|
|
1220
|
-
emit: () => {},
|
|
1221
|
-
bound: false
|
|
1222
|
-
}),
|
|
1223
|
-
element: {
|
|
1224
|
-
type: componentName,
|
|
1225
|
-
props
|
|
1226
|
-
},
|
|
1227
|
-
loading: false
|
|
1228
|
-
};
|
|
1229
|
-
return (0, react_dom_server.renderToStaticMarkup)(react.default.createElement(Component, elementProps));
|
|
1230
|
-
}
|
|
1231
|
-
//#endregion
|
|
1232
|
-
Object.defineProperty(exports, "__toESM", {
|
|
1233
|
-
enumerable: true,
|
|
1234
|
-
get: function() {
|
|
1235
|
-
return __toESM;
|
|
1236
|
-
}
|
|
1237
|
-
});
|
|
1238
|
-
Object.defineProperty(exports, "executeAction", {
|
|
1239
|
-
enumerable: true,
|
|
1240
|
-
get: function() {
|
|
1241
|
-
return executeAction;
|
|
1242
|
-
}
|
|
1243
|
-
});
|
|
1244
|
-
Object.defineProperty(exports, "handlers", {
|
|
1245
|
-
enumerable: true,
|
|
1246
|
-
get: function() {
|
|
1247
|
-
return handlers;
|
|
1248
|
-
}
|
|
1249
|
-
});
|
|
1250
|
-
Object.defineProperty(exports, "registry", {
|
|
1251
|
-
enumerable: true,
|
|
1252
|
-
get: function() {
|
|
1253
|
-
return registry;
|
|
1254
|
-
}
|
|
1255
|
-
});
|
|
1256
|
-
Object.defineProperty(exports, "renderPreview", {
|
|
1257
|
-
enumerable: true,
|
|
1258
|
-
get: function() {
|
|
1259
|
-
return renderPreview;
|
|
1260
|
-
}
|
|
1261
|
-
});
|