@hotelcard/ui 0.0.4 → 0.0.6
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.
Potentially problematic release.
This version of @hotelcard/ui might be problematic. Click here for more details.
- package/README.md +147 -626
- package/dist/index.cjs +1511 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +630 -0
- package/dist/index.css.map +1 -1
- package/dist/{index.d.mts → index.d.cts} +100 -1
- package/dist/index.d.ts +100 -1
- package/dist/index.js +475 -226
- package/dist/index.js.map +1 -1
- package/package.json +19 -4
- package/dist/index.mjs +0 -1169
- package/dist/index.mjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,51 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/index.ts
|
|
21
|
-
var index_exports = {};
|
|
22
|
-
__export(index_exports, {
|
|
23
|
-
Badge: () => Badge,
|
|
24
|
-
Button: () => Button,
|
|
25
|
-
Card: () => Card,
|
|
26
|
-
Checkbox: () => Checkbox,
|
|
27
|
-
ChevronLeftIcon: () => ChevronLeftIcon,
|
|
28
|
-
ChevronRightIcon: () => ChevronRightIcon2,
|
|
29
|
-
Chip: () => Chip,
|
|
30
|
-
CompactCard: () => CompactCard,
|
|
31
|
-
Divider: () => Divider,
|
|
32
|
-
Dropdown: () => Dropdown,
|
|
33
|
-
HeartIcon: () => HeartIcon,
|
|
34
|
-
Input: () => Input,
|
|
35
|
-
Modal: () => Modal,
|
|
36
|
-
PinIcon: () => PinIcon,
|
|
37
|
-
RadioButton: () => RadioButton,
|
|
38
|
-
Rating: () => Rating,
|
|
39
|
-
SectionHeader: () => SectionHeader,
|
|
40
|
-
StarIcon: () => StarIcon4
|
|
41
|
-
});
|
|
42
|
-
module.exports = __toCommonJS(index_exports);
|
|
43
|
-
|
|
44
1
|
// src/components/Button/Button.tsx
|
|
45
|
-
|
|
46
|
-
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
47
4
|
var cx = (className) => `hc-btn-${className}`;
|
|
48
|
-
var Button =
|
|
5
|
+
var Button = forwardRef(({
|
|
49
6
|
variant = "primary",
|
|
50
7
|
size = "medium",
|
|
51
8
|
leftIcon,
|
|
@@ -75,7 +32,7 @@ var Button = (0, import_react.forwardRef)(({
|
|
|
75
32
|
classes.push(cx(variant));
|
|
76
33
|
return classes.join(" ");
|
|
77
34
|
};
|
|
78
|
-
return /* @__PURE__ */
|
|
35
|
+
return /* @__PURE__ */ jsx(
|
|
79
36
|
"button",
|
|
80
37
|
{
|
|
81
38
|
ref,
|
|
@@ -83,10 +40,10 @@ var Button = (0, import_react.forwardRef)(({
|
|
|
83
40
|
className: `${getButtonClasses()} ${className}`,
|
|
84
41
|
disabled,
|
|
85
42
|
...props,
|
|
86
|
-
children: iconOnly ? children : /* @__PURE__ */
|
|
87
|
-
leftIcon && /* @__PURE__ */
|
|
88
|
-
/* @__PURE__ */
|
|
89
|
-
rightIcon && /* @__PURE__ */
|
|
43
|
+
children: iconOnly ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
44
|
+
leftIcon && /* @__PURE__ */ jsx("span", { className: cx("icon-wrapper"), children: leftIcon }),
|
|
45
|
+
/* @__PURE__ */ jsx("span", { className: cx("text-wrapper"), children }),
|
|
46
|
+
rightIcon && /* @__PURE__ */ jsx("span", { className: cx("icon-wrapper"), children: rightIcon })
|
|
90
47
|
] })
|
|
91
48
|
}
|
|
92
49
|
);
|
|
@@ -94,7 +51,7 @@ var Button = (0, import_react.forwardRef)(({
|
|
|
94
51
|
Button.displayName = "Button";
|
|
95
52
|
|
|
96
53
|
// src/components/Badge/Badge.tsx
|
|
97
|
-
|
|
54
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
98
55
|
var cx2 = (className) => `hc-badge-${className}`;
|
|
99
56
|
var Badge = ({
|
|
100
57
|
color = "primary",
|
|
@@ -119,23 +76,23 @@ var Badge = ({
|
|
|
119
76
|
cx2("text"),
|
|
120
77
|
size === "large" && icon ? cx2("text--largeWithIcon") : ""
|
|
121
78
|
].filter(Boolean).join(" ");
|
|
122
|
-
return /* @__PURE__ */ (
|
|
123
|
-
icon && /* @__PURE__ */ (
|
|
124
|
-
/* @__PURE__ */ (
|
|
79
|
+
return /* @__PURE__ */ jsxs2("div", { className: badgeClasses, children: [
|
|
80
|
+
icon && /* @__PURE__ */ jsx2("div", { className: iconClasses }),
|
|
81
|
+
/* @__PURE__ */ jsx2("div", { className: textClasses, children })
|
|
125
82
|
] });
|
|
126
83
|
};
|
|
127
84
|
Badge.displayName = "Badge";
|
|
128
85
|
|
|
129
86
|
// src/components/Rating/Rating.tsx
|
|
130
|
-
|
|
87
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
131
88
|
var cx3 = (className) => `hc-rating-${className}`;
|
|
132
|
-
var StarIcon = () => /* @__PURE__ */ (
|
|
133
|
-
/* @__PURE__ */ (
|
|
134
|
-
/* @__PURE__ */ (
|
|
89
|
+
var StarIcon = () => /* @__PURE__ */ jsxs3("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: [
|
|
90
|
+
/* @__PURE__ */ jsx3("g", { clipPath: "url(#clip0_full)", children: /* @__PURE__ */ jsx3("path", { d: "M12.0004 0.5C12.393 0.5 12.7551 0.723172 12.9339 1.07325L16.1402 7.38333L23.1155 8.49482C23.5037 8.55608 23.8265 8.83176 23.9487 9.20809C24.0708 9.58442 23.9705 9.99576 23.6957 10.2758L18.7008 15.2863L19.8045 22.2834C19.8656 22.6728 19.7042 23.0667 19.3857 23.2986C19.0673 23.5305 18.6441 23.5655 18.2951 23.3861L12.0004 20.1742L5.70561 23.3861C5.35663 23.5655 4.93349 23.5305 4.61504 23.2986C4.29659 23.0667 4.13519 22.6772 4.19626 22.2834L5.29555 15.2863L0.305106 10.2758C0.0259198 9.99576 -0.0700504 9.58442 0.0520935 9.20809C0.174237 8.83176 0.492684 8.55608 0.885289 8.49482L7.86058 7.38333L11.0712 1.07325C11.2501 0.723172 11.6121 0.5 12.0047 0.5H12.0004Z", fill: "#FBB041" }) }),
|
|
91
|
+
/* @__PURE__ */ jsx3("defs", { children: /* @__PURE__ */ jsx3("clipPath", { id: "clip0_full", children: /* @__PURE__ */ jsx3("rect", { width: "24", height: "24", fill: "white" }) }) })
|
|
135
92
|
] });
|
|
136
|
-
var HalfStarIcon = () => /* @__PURE__ */ (
|
|
137
|
-
/* @__PURE__ */ (
|
|
138
|
-
/* @__PURE__ */ (
|
|
93
|
+
var HalfStarIcon = () => /* @__PURE__ */ jsxs3("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: [
|
|
94
|
+
/* @__PURE__ */ jsx3("defs", { children: /* @__PURE__ */ jsx3("clipPath", { id: "half", children: /* @__PURE__ */ jsx3("rect", { x: "0", y: "0", width: "12", height: "24" }) }) }),
|
|
95
|
+
/* @__PURE__ */ jsx3(
|
|
139
96
|
"path",
|
|
140
97
|
{
|
|
141
98
|
clipPath: "url(#half)",
|
|
@@ -143,7 +100,7 @@ var HalfStarIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("svg", {
|
|
|
143
100
|
fill: "#FBB041"
|
|
144
101
|
}
|
|
145
102
|
),
|
|
146
|
-
/* @__PURE__ */ (
|
|
103
|
+
/* @__PURE__ */ jsx3(
|
|
147
104
|
"path",
|
|
148
105
|
{
|
|
149
106
|
d: "M12.0004 0.5C12.393 0.5 12.7551 0.723172 12.9339 1.07325L16.1402 7.38333L23.1155 8.49482C23.5037 8.55608 23.8265 8.83176 23.9487 9.20809C24.0708 9.58442 23.9705 9.99576 23.6957 10.2758L18.7008 15.2863L19.8045 22.2834C19.8656 22.6728 19.7042 23.0667 19.3857 23.2986C19.0673 23.5305 18.6441 23.5655 18.2951 23.3861L12.0004 20.1742L5.70561 23.3861C5.35663 23.5655 4.93349 23.5305 4.61504 23.2986C4.29659 23.0667 4.13519 22.6772 4.19626 22.2834L5.29555 15.2863L0.305106 10.2758C0.0259198 9.99576 -0.0700504 9.58442 0.0520935 9.20809C0.174237 8.83176 0.492684 8.55608 0.885289 8.49482L7.86058 7.38333L11.0712 1.07325C11.2501 0.723172 11.6121 0.5 12.0047 0.5H12.0004ZM12.0004 3.86071L9.47898 8.81426C9.3263 9.11182 9.04275 9.32187 8.71122 9.37438L3.23656 10.2496L7.15389 14.1835C7.38945 14.4198 7.49851 14.7568 7.44616 15.0893L6.58243 20.5811L11.5249 18.0606C11.8215 17.9074 12.1749 17.9074 12.4759 18.0606L17.4183 20.5811L16.5546 15.0893C16.5023 14.7568 16.6113 14.4198 16.8469 14.1835L20.7642 10.2496L15.2895 9.37438C14.958 9.32187 14.6745 9.11182 14.5218 8.81426L12.0004 3.86071Z",
|
|
@@ -151,9 +108,9 @@ var HalfStarIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("svg", {
|
|
|
151
108
|
}
|
|
152
109
|
)
|
|
153
110
|
] });
|
|
154
|
-
var EmptyStarIcon = () => /* @__PURE__ */ (
|
|
155
|
-
/* @__PURE__ */ (
|
|
156
|
-
/* @__PURE__ */ (
|
|
111
|
+
var EmptyStarIcon = () => /* @__PURE__ */ jsxs3("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: [
|
|
112
|
+
/* @__PURE__ */ jsx3("g", { clipPath: "url(#clip0_empty)", children: /* @__PURE__ */ jsx3("path", { d: "M12.0004 0.5C12.393 0.5 12.7551 0.723172 12.9339 1.07325L16.1402 7.38333L23.1155 8.49482C23.5037 8.55608 23.8265 8.83176 23.9487 9.20809C24.0708 9.58442 23.9705 9.99576 23.6957 10.2758L18.7008 15.2863L19.8045 22.2834C19.8656 22.6728 19.7042 23.0667 19.3857 23.2986C19.0673 23.5305 18.6441 23.5655 18.2951 23.3861L12.0004 20.1742L5.70561 23.3861C5.35663 23.5655 4.93349 23.5305 4.61504 23.2986C4.29659 23.0667 4.13519 22.6772 4.19626 22.2834L5.29555 15.2863L0.305106 10.2758C0.0259198 9.99576 -0.0700504 9.58442 0.0520935 9.20809C0.174237 8.83176 0.492684 8.55608 0.885289 8.49482L7.86058 7.38333L11.0712 1.07325C11.2501 0.723172 11.6121 0.5 12.0047 0.5H12.0004ZM12.0004 3.86071L9.47898 8.81426C9.3263 9.11182 9.04275 9.32187 8.71122 9.37438L3.23656 10.2496L7.15389 14.1835C7.38945 14.4198 7.49851 14.7568 7.44616 15.0893L6.58243 20.5811L11.5249 18.0606C11.8215 17.9074 12.1749 17.9074 12.4759 18.0606L17.4183 20.5811L16.5546 15.0893C16.5023 14.7568 16.6113 14.4198 16.8469 14.1835L20.7642 10.2496L15.2895 9.37438C14.958 9.32187 14.6745 9.11182 14.5218 8.81426L12.0004 3.86071Z", fill: "#9A5A00" }) }),
|
|
113
|
+
/* @__PURE__ */ jsx3("defs", { children: /* @__PURE__ */ jsx3("clipPath", { id: "clip0_empty", children: /* @__PURE__ */ jsx3("rect", { width: "24", height: "24", fill: "white" }) }) })
|
|
157
114
|
] });
|
|
158
115
|
var Rating = ({
|
|
159
116
|
variant = "stars",
|
|
@@ -178,51 +135,51 @@ var Rating = ({
|
|
|
178
135
|
const stars = [];
|
|
179
136
|
for (let i = 0; i < fullStars; i++) {
|
|
180
137
|
stars.push(
|
|
181
|
-
/* @__PURE__ */ (
|
|
138
|
+
/* @__PURE__ */ jsx3("span", { className: starClasses, children: /* @__PURE__ */ jsx3(StarIcon, {}) }, `full-${i}`)
|
|
182
139
|
);
|
|
183
140
|
}
|
|
184
141
|
if (hasHalfStar) {
|
|
185
142
|
stars.push(
|
|
186
|
-
/* @__PURE__ */ (
|
|
143
|
+
/* @__PURE__ */ jsx3("span", { className: starClasses, children: /* @__PURE__ */ jsx3(HalfStarIcon, {}) }, "half")
|
|
187
144
|
);
|
|
188
145
|
}
|
|
189
146
|
for (let i = 0; i < emptyStars; i++) {
|
|
190
147
|
stars.push(
|
|
191
|
-
/* @__PURE__ */ (
|
|
148
|
+
/* @__PURE__ */ jsx3("span", { className: starClasses, children: /* @__PURE__ */ jsx3(EmptyStarIcon, {}) }, `empty-${i}`)
|
|
192
149
|
);
|
|
193
150
|
}
|
|
194
151
|
return stars;
|
|
195
152
|
};
|
|
196
153
|
if (variant === "stars") {
|
|
197
154
|
const containerClasses2 = [cx3("starsContainer"), className].filter(Boolean).join(" ");
|
|
198
|
-
return /* @__PURE__ */ (
|
|
199
|
-
/* @__PURE__ */ (
|
|
200
|
-
showValue && /* @__PURE__ */ (
|
|
155
|
+
return /* @__PURE__ */ jsxs3("div", { className: containerClasses2, children: [
|
|
156
|
+
/* @__PURE__ */ jsx3("div", { className: cx3("starContainer"), children: renderStars() }),
|
|
157
|
+
showValue && /* @__PURE__ */ jsx3("span", { className: cx3("valueDisplay"), children: clampedValue.toLocaleString("de-CH") })
|
|
201
158
|
] });
|
|
202
159
|
}
|
|
203
160
|
if (variant === "result") {
|
|
204
161
|
const containerClasses2 = [cx3("resultContainer"), className].filter(Boolean).join(" ");
|
|
205
|
-
return /* @__PURE__ */ (
|
|
206
|
-
/* @__PURE__ */ (
|
|
207
|
-
/* @__PURE__ */ (
|
|
162
|
+
return /* @__PURE__ */ jsxs3("div", { className: containerClasses2, children: [
|
|
163
|
+
/* @__PURE__ */ jsx3("span", { className: cx3("resultChar"), children: "N" }),
|
|
164
|
+
/* @__PURE__ */ jsx3("div", { children: renderStars() })
|
|
208
165
|
] });
|
|
209
166
|
}
|
|
210
167
|
const containerClasses = [cx3("blockContainer"), className].filter(Boolean).join(" ");
|
|
211
|
-
return /* @__PURE__ */ (
|
|
212
|
-
/* @__PURE__ */ (
|
|
213
|
-
/* @__PURE__ */ (
|
|
214
|
-
name && /* @__PURE__ */ (
|
|
215
|
-
/* @__PURE__ */ (
|
|
168
|
+
return /* @__PURE__ */ jsxs3("div", { className: containerClasses, children: [
|
|
169
|
+
/* @__PURE__ */ jsxs3("div", { className: cx3("blockHeader"), children: [
|
|
170
|
+
/* @__PURE__ */ jsxs3("div", { className: cx3("blockHeaderLeft"), children: [
|
|
171
|
+
name && /* @__PURE__ */ jsx3("span", { className: cx3("blockName"), children: name }),
|
|
172
|
+
/* @__PURE__ */ jsx3("div", { children: renderStars() })
|
|
216
173
|
] }),
|
|
217
|
-
date && /* @__PURE__ */ (
|
|
174
|
+
date && /* @__PURE__ */ jsx3("span", { className: cx3("blockDate"), children: date })
|
|
218
175
|
] }),
|
|
219
|
-
quote && /* @__PURE__ */ (
|
|
176
|
+
quote && /* @__PURE__ */ jsx3("p", { className: cx3("blockQuote"), children: quote })
|
|
220
177
|
] });
|
|
221
178
|
};
|
|
222
179
|
Rating.displayName = "Rating";
|
|
223
180
|
|
|
224
181
|
// src/components/Divider/Divider.tsx
|
|
225
|
-
|
|
182
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
226
183
|
var cx4 = (className) => `hc-divider-${className}`;
|
|
227
184
|
var Divider = ({
|
|
228
185
|
label,
|
|
@@ -232,7 +189,7 @@ var Divider = ({
|
|
|
232
189
|
const isHorizontal = orientation === "horizontal";
|
|
233
190
|
if (!label) {
|
|
234
191
|
const lineClass2 = isHorizontal ? cx4("lineStandalone--horizontal") : cx4("lineStandalone--vertical");
|
|
235
|
-
return /* @__PURE__ */ (
|
|
192
|
+
return /* @__PURE__ */ jsx4(
|
|
236
193
|
"div",
|
|
237
194
|
{
|
|
238
195
|
className: [lineClass2, className].filter(Boolean).join(" "),
|
|
@@ -248,7 +205,7 @@ var Divider = ({
|
|
|
248
205
|
containerClass,
|
|
249
206
|
className
|
|
250
207
|
].filter(Boolean).join(" ");
|
|
251
|
-
return /* @__PURE__ */ (
|
|
208
|
+
return /* @__PURE__ */ jsxs4(
|
|
252
209
|
"div",
|
|
253
210
|
{
|
|
254
211
|
className: containerClasses,
|
|
@@ -256,9 +213,9 @@ var Divider = ({
|
|
|
256
213
|
"aria-orientation": orientation,
|
|
257
214
|
"aria-label": typeof label === "string" ? label : void 0,
|
|
258
215
|
children: [
|
|
259
|
-
/* @__PURE__ */ (
|
|
260
|
-
/* @__PURE__ */ (
|
|
261
|
-
/* @__PURE__ */ (
|
|
216
|
+
/* @__PURE__ */ jsx4("div", { className: lineClass }),
|
|
217
|
+
/* @__PURE__ */ jsx4("span", { className: cx4("label"), children: label }),
|
|
218
|
+
/* @__PURE__ */ jsx4("div", { className: lineClass })
|
|
262
219
|
]
|
|
263
220
|
}
|
|
264
221
|
);
|
|
@@ -266,11 +223,11 @@ var Divider = ({
|
|
|
266
223
|
Divider.displayName = "Divider";
|
|
267
224
|
|
|
268
225
|
// src/components/Chip/Chip.tsx
|
|
269
|
-
|
|
226
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
270
227
|
var cx5 = (className) => `hc-chip-${className}`;
|
|
271
|
-
var CloseIcon = () => /* @__PURE__ */ (
|
|
272
|
-
/* @__PURE__ */ (
|
|
273
|
-
/* @__PURE__ */ (
|
|
228
|
+
var CloseIcon = () => /* @__PURE__ */ jsxs5("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: [
|
|
229
|
+
/* @__PURE__ */ jsx5("g", { clipPath: "url(#clip0_chip_close)", children: /* @__PURE__ */ jsx5("path", { d: "M12 2.25C14.5859 2.25 17.0658 3.27723 18.8943 5.10571C20.7228 6.93419 21.75 9.41414 21.75 12C21.75 14.5859 20.7228 17.0658 18.8943 18.8943C17.0658 20.7228 14.5859 21.75 12 21.75C9.41414 21.75 6.93419 20.7228 5.10571 18.8943C3.27723 17.0658 2.25 14.5859 2.25 12C2.25 9.41414 3.27723 6.93419 5.10571 5.10571C6.93419 3.27723 9.41414 2.25 12 2.25ZM12 24C15.1826 24 18.2348 22.7357 20.4853 20.4853C22.7357 18.2348 24 15.1826 24 12C24 8.8174 22.7357 5.76516 20.4853 3.51472C18.2348 1.26428 15.1826 0 12 0C8.8174 0 5.76516 1.26428 3.51472 3.51472C1.26428 5.76516 0 8.8174 0 12C0 15.1826 1.26428 18.2348 3.51472 20.4853C5.76516 22.7357 8.8174 24 12 24ZM7.82812 7.82812C7.3875 8.26875 7.3875 8.98125 7.82812 9.41719L10.4062 11.9953L7.82812 14.5734C7.3875 15.0141 7.3875 15.7266 7.82812 16.1625C8.26875 16.5984 8.98125 16.6031 9.41719 16.1625L11.9953 13.5844L14.5734 16.1625C15.0141 16.6031 15.7266 16.6031 16.1625 16.1625C16.5984 15.7219 16.6031 15.0094 16.1625 14.5734L13.5844 11.9953L16.1625 9.41719C16.6031 8.97656 16.6031 8.26406 16.1625 7.82812C15.7219 7.39219 15.0094 7.3875 14.5734 7.82812L11.9953 10.4062L9.41719 7.82812C8.97656 7.3875 8.26406 7.3875 7.82812 7.82812Z", fill: "currentColor" }) }),
|
|
230
|
+
/* @__PURE__ */ jsx5("defs", { children: /* @__PURE__ */ jsx5("clipPath", { id: "clip0_chip_close", children: /* @__PURE__ */ jsx5("rect", { width: "24", height: "24", fill: "white" }) }) })
|
|
274
231
|
] });
|
|
275
232
|
var Chip = ({
|
|
276
233
|
label,
|
|
@@ -311,7 +268,7 @@ var Chip = ({
|
|
|
311
268
|
}
|
|
312
269
|
}
|
|
313
270
|
};
|
|
314
|
-
return /* @__PURE__ */ (
|
|
271
|
+
return /* @__PURE__ */ jsxs5(
|
|
315
272
|
"button",
|
|
316
273
|
{
|
|
317
274
|
type: "button",
|
|
@@ -321,9 +278,9 @@ var Chip = ({
|
|
|
321
278
|
disabled,
|
|
322
279
|
"aria-label": removable ? `Remove filter: ${label}` : label,
|
|
323
280
|
children: [
|
|
324
|
-
/* @__PURE__ */ (
|
|
325
|
-
count !== void 0 && /* @__PURE__ */ (
|
|
326
|
-
removable && /* @__PURE__ */ (
|
|
281
|
+
/* @__PURE__ */ jsx5("span", { className: labelClasses, children: label }),
|
|
282
|
+
count !== void 0 && /* @__PURE__ */ jsx5("span", { className: countBadgeClasses, children: count }),
|
|
283
|
+
removable && /* @__PURE__ */ jsx5("span", { className: cx5("closeIcon"), "aria-hidden": "true", children: /* @__PURE__ */ jsx5(CloseIcon, {}) })
|
|
327
284
|
]
|
|
328
285
|
}
|
|
329
286
|
);
|
|
@@ -331,8 +288,8 @@ var Chip = ({
|
|
|
331
288
|
Chip.displayName = "Chip";
|
|
332
289
|
|
|
333
290
|
// src/components/Checkbox/Checkbox.tsx
|
|
334
|
-
|
|
335
|
-
|
|
291
|
+
import { useState } from "react";
|
|
292
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
336
293
|
var cx6 = (className) => `hc-checkbox-${className}`;
|
|
337
294
|
var Checkbox = ({
|
|
338
295
|
label,
|
|
@@ -346,8 +303,8 @@ var Checkbox = ({
|
|
|
346
303
|
className = "",
|
|
347
304
|
size = "medium"
|
|
348
305
|
}) => {
|
|
349
|
-
const [localChecked, setLocalChecked] =
|
|
350
|
-
const [isFocused, setIsFocused] =
|
|
306
|
+
const [localChecked, setLocalChecked] = useState(defaultChecked);
|
|
307
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
351
308
|
const actualChecked = checked !== void 0 ? checked : localChecked;
|
|
352
309
|
const handleChange = (e) => {
|
|
353
310
|
const newChecked = e.target.checked;
|
|
@@ -387,10 +344,10 @@ var Checkbox = ({
|
|
|
387
344
|
disabled && cx6("label--disabled"),
|
|
388
345
|
error && !disabled && cx6("label--error")
|
|
389
346
|
].filter(Boolean).join(" ");
|
|
390
|
-
return /* @__PURE__ */ (
|
|
391
|
-
/* @__PURE__ */ (
|
|
392
|
-
/* @__PURE__ */ (
|
|
393
|
-
/* @__PURE__ */ (
|
|
347
|
+
return /* @__PURE__ */ jsxs6("label", { className: containerClasses, children: [
|
|
348
|
+
/* @__PURE__ */ jsxs6("div", { className: wrapperClasses, children: [
|
|
349
|
+
/* @__PURE__ */ jsx6("div", { className: boxClasses }),
|
|
350
|
+
/* @__PURE__ */ jsx6(
|
|
394
351
|
"input",
|
|
395
352
|
{
|
|
396
353
|
type: "checkbox",
|
|
@@ -405,14 +362,14 @@ var Checkbox = ({
|
|
|
405
362
|
"aria-invalid": error
|
|
406
363
|
}
|
|
407
364
|
),
|
|
408
|
-
/* @__PURE__ */ (
|
|
365
|
+
/* @__PURE__ */ jsx6(
|
|
409
366
|
"svg",
|
|
410
367
|
{
|
|
411
368
|
className: checkmarkClasses,
|
|
412
369
|
viewBox: "0 0 12 12",
|
|
413
370
|
fill: "none",
|
|
414
371
|
xmlns: "http://www.w3.org/2000/svg",
|
|
415
|
-
children: /* @__PURE__ */ (
|
|
372
|
+
children: /* @__PURE__ */ jsx6(
|
|
416
373
|
"path",
|
|
417
374
|
{
|
|
418
375
|
d: "M2.5 6L5 8.5L9.5 3.5",
|
|
@@ -425,13 +382,13 @@ var Checkbox = ({
|
|
|
425
382
|
}
|
|
426
383
|
)
|
|
427
384
|
] }),
|
|
428
|
-
label && /* @__PURE__ */ (
|
|
385
|
+
label && /* @__PURE__ */ jsx6("span", { className: labelClasses, children: label })
|
|
429
386
|
] });
|
|
430
387
|
};
|
|
431
388
|
Checkbox.displayName = "Checkbox";
|
|
432
389
|
|
|
433
390
|
// src/components/RadioButton/RadioButton.tsx
|
|
434
|
-
|
|
391
|
+
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
435
392
|
var cx7 = (className) => `hc-radio-${className}`;
|
|
436
393
|
var RadioButton = ({
|
|
437
394
|
id,
|
|
@@ -471,7 +428,7 @@ var RadioButton = ({
|
|
|
471
428
|
cx7("innerDot"),
|
|
472
429
|
checked && cx7("innerDot--checked")
|
|
473
430
|
].filter(Boolean).join(" ");
|
|
474
|
-
return /* @__PURE__ */ (
|
|
431
|
+
return /* @__PURE__ */ jsxs7(
|
|
475
432
|
"div",
|
|
476
433
|
{
|
|
477
434
|
role: "radio",
|
|
@@ -482,8 +439,8 @@ var RadioButton = ({
|
|
|
482
439
|
className: containerClasses,
|
|
483
440
|
"aria-disabled": disabled,
|
|
484
441
|
children: [
|
|
485
|
-
/* @__PURE__ */ (
|
|
486
|
-
/* @__PURE__ */ (
|
|
442
|
+
/* @__PURE__ */ jsxs7("div", { className: cx7("wrapper"), children: [
|
|
443
|
+
/* @__PURE__ */ jsx7(
|
|
487
444
|
"input",
|
|
488
445
|
{
|
|
489
446
|
id,
|
|
@@ -498,10 +455,10 @@ var RadioButton = ({
|
|
|
498
455
|
className: cx7("hiddenInput")
|
|
499
456
|
}
|
|
500
457
|
),
|
|
501
|
-
/* @__PURE__ */ (
|
|
502
|
-
/* @__PURE__ */ (
|
|
458
|
+
/* @__PURE__ */ jsx7("div", { className: outerCircleClasses }),
|
|
459
|
+
/* @__PURE__ */ jsx7("div", { className: innerDotClasses })
|
|
503
460
|
] }),
|
|
504
|
-
label && /* @__PURE__ */ (
|
|
461
|
+
label && /* @__PURE__ */ jsx7("label", { htmlFor: id, className: cx7("label"), children: label })
|
|
505
462
|
]
|
|
506
463
|
}
|
|
507
464
|
);
|
|
@@ -509,9 +466,9 @@ var RadioButton = ({
|
|
|
509
466
|
RadioButton.displayName = "RadioButton";
|
|
510
467
|
|
|
511
468
|
// src/components/SectionHeader/SectionHeader.tsx
|
|
512
|
-
|
|
469
|
+
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
513
470
|
var cx8 = (className) => `hc-section-${className}`;
|
|
514
|
-
var ChevronRightIcon = () => /* @__PURE__ */ (
|
|
471
|
+
var ChevronRightIcon = () => /* @__PURE__ */ jsx8(
|
|
515
472
|
"svg",
|
|
516
473
|
{
|
|
517
474
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -523,7 +480,7 @@ var ChevronRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
|
523
480
|
strokeWidth: "2",
|
|
524
481
|
strokeLinecap: "round",
|
|
525
482
|
strokeLinejoin: "round",
|
|
526
|
-
children: /* @__PURE__ */ (
|
|
483
|
+
children: /* @__PURE__ */ jsx8("polyline", { points: "9 18 15 12 9 6" })
|
|
527
484
|
}
|
|
528
485
|
);
|
|
529
486
|
var SectionHeader = ({
|
|
@@ -533,22 +490,22 @@ var SectionHeader = ({
|
|
|
533
490
|
className = ""
|
|
534
491
|
}) => {
|
|
535
492
|
const headerClasses = [cx8("header"), className].filter(Boolean).join(" ");
|
|
536
|
-
return /* @__PURE__ */ (
|
|
537
|
-
/* @__PURE__ */ (
|
|
538
|
-
showAllLabel && onShowAllClick && /* @__PURE__ */ (
|
|
539
|
-
/* @__PURE__ */ (
|
|
540
|
-
/* @__PURE__ */ (
|
|
493
|
+
return /* @__PURE__ */ jsxs8("div", { className: headerClasses, children: [
|
|
494
|
+
/* @__PURE__ */ jsx8("h2", { className: cx8("title"), children: title }),
|
|
495
|
+
showAllLabel && onShowAllClick && /* @__PURE__ */ jsxs8("button", { className: cx8("showAllButton"), onClick: onShowAllClick, children: [
|
|
496
|
+
/* @__PURE__ */ jsx8("span", { children: showAllLabel }),
|
|
497
|
+
/* @__PURE__ */ jsx8(ChevronRightIcon, {})
|
|
541
498
|
] })
|
|
542
499
|
] });
|
|
543
500
|
};
|
|
544
501
|
SectionHeader.displayName = "SectionHeader";
|
|
545
502
|
|
|
546
503
|
// src/components/Modal/Modal.tsx
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
504
|
+
import { useEffect, useRef } from "react";
|
|
505
|
+
import { createPortal } from "react-dom";
|
|
506
|
+
import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
550
507
|
var cx9 = (className) => `hc-modal-${className}`;
|
|
551
|
-
var CloseIcon2 = () => /* @__PURE__ */ (
|
|
508
|
+
var CloseIcon2 = () => /* @__PURE__ */ jsx9("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 18 18", fill: "none", children: /* @__PURE__ */ jsx9(
|
|
552
509
|
"path",
|
|
553
510
|
{
|
|
554
511
|
d: "M0.330469 1.91953C-0.110156 1.47891 -0.110156 0.766406 0.330469 0.330469C0.771094 -0.105469 1.48359 -0.110156 1.91953 0.330469L8.99766 7.40859L16.0758 0.330469C16.5164 -0.110156 17.2289 -0.110156 17.6648 0.330469C18.1008 0.771094 18.1055 1.48359 17.6648 1.91953L10.5867 8.99766L17.6648 16.0758C18.1055 16.5164 18.1055 17.2289 17.6648 17.6648C17.2242 18.1008 16.5117 18.1055 16.0758 17.6648L8.99766 10.5867L1.91953 17.6648C1.47891 18.1055 0.766406 18.1055 0.330469 17.6648C-0.105469 17.2242 -0.110156 16.5117 0.330469 16.0758L7.40859 8.99766L0.330469 1.91953Z",
|
|
@@ -564,8 +521,8 @@ var Modal = ({
|
|
|
564
521
|
showCloseButton = true,
|
|
565
522
|
disableBackdropClick = false
|
|
566
523
|
}) => {
|
|
567
|
-
const modalRef =
|
|
568
|
-
|
|
524
|
+
const modalRef = useRef(null);
|
|
525
|
+
useEffect(() => {
|
|
569
526
|
const handleEscape = (e) => {
|
|
570
527
|
if (e.key === "Escape" && isOpen) {
|
|
571
528
|
onClose();
|
|
@@ -587,20 +544,20 @@ var Modal = ({
|
|
|
587
544
|
};
|
|
588
545
|
if (!isOpen) return null;
|
|
589
546
|
const modalClasses = [cx9("content"), className].filter(Boolean).join(" ");
|
|
590
|
-
const modalContent = /* @__PURE__ */ (
|
|
547
|
+
const modalContent = /* @__PURE__ */ jsx9("div", { className: cx9("backdrop"), onClick: handleBackdropClick, children: /* @__PURE__ */ jsxs9(
|
|
591
548
|
"div",
|
|
592
549
|
{
|
|
593
550
|
ref: modalRef,
|
|
594
551
|
className: modalClasses,
|
|
595
552
|
style: { maxWidth: width },
|
|
596
553
|
children: [
|
|
597
|
-
showCloseButton && /* @__PURE__ */ (
|
|
554
|
+
showCloseButton && /* @__PURE__ */ jsx9(
|
|
598
555
|
"button",
|
|
599
556
|
{
|
|
600
557
|
className: cx9("closeButton"),
|
|
601
558
|
onClick: onClose,
|
|
602
559
|
"aria-label": "Close modal",
|
|
603
|
-
children: /* @__PURE__ */ (
|
|
560
|
+
children: /* @__PURE__ */ jsx9(CloseIcon2, {})
|
|
604
561
|
}
|
|
605
562
|
),
|
|
606
563
|
children
|
|
@@ -608,26 +565,26 @@ var Modal = ({
|
|
|
608
565
|
}
|
|
609
566
|
) });
|
|
610
567
|
if (typeof document !== "undefined") {
|
|
611
|
-
return
|
|
568
|
+
return createPortal(modalContent, document.body);
|
|
612
569
|
}
|
|
613
570
|
return modalContent;
|
|
614
571
|
};
|
|
615
572
|
Modal.displayName = "Modal";
|
|
616
573
|
|
|
617
574
|
// src/components/Card/Card.tsx
|
|
618
|
-
|
|
575
|
+
import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
619
576
|
var cx10 = (className) => `hc-card-${className}`;
|
|
620
|
-
var StarIcon2 = () => /* @__PURE__ */ (
|
|
621
|
-
/* @__PURE__ */ (
|
|
577
|
+
var StarIcon2 = () => /* @__PURE__ */ jsxs10("svg", { xmlns: "http://www.w3.org/2000/svg", width: "9", height: "9", viewBox: "0 0 9 9", fill: "none", children: [
|
|
578
|
+
/* @__PURE__ */ jsx10("g", { clipPath: "url(#clip0_card_star)", children: /* @__PURE__ */ jsx10(
|
|
622
579
|
"path",
|
|
623
580
|
{
|
|
624
581
|
d: "M4.80018 0.366577C4.93104 0.366577 5.05173 0.440968 5.11135 0.557659L6.18011 2.66102L8.50521 3.03152C8.63462 3.05194 8.74222 3.14383 8.78294 3.26927C8.82365 3.39472 8.79021 3.53183 8.6986 3.62518L7.03366 5.29533L7.40155 7.6277C7.42191 7.75752 7.3681 7.88879 7.26195 7.9661C7.15581 8.04341 7.01476 8.05508 6.89843 7.99528L4.80018 6.92463L2.70192 7.99528C2.58559 8.05508 2.44454 8.04341 2.33839 7.9661C2.23225 7.88879 2.17844 7.75898 2.1988 7.6277L2.56523 5.29533L0.901751 3.62518C0.808689 3.53183 0.776699 3.39472 0.817413 3.26927C0.858128 3.14383 0.964277 3.05194 1.09515 3.03152L3.42024 2.66102L4.49045 0.557659C4.55007 0.440968 4.67076 0.366577 4.80163 0.366577H4.80018Z",
|
|
625
582
|
fill: "#1F2937"
|
|
626
583
|
}
|
|
627
584
|
) }),
|
|
628
|
-
/* @__PURE__ */ (
|
|
585
|
+
/* @__PURE__ */ jsx10("defs", { children: /* @__PURE__ */ jsx10("clipPath", { id: "clip0_card_star", children: /* @__PURE__ */ jsx10("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
|
|
629
586
|
] });
|
|
630
|
-
var CommentIcon = () => /* @__PURE__ */ (
|
|
587
|
+
var CommentIcon = () => /* @__PURE__ */ jsx10("svg", { width: "24", height: "24", viewBox: "0 0 36 38", fill: "#478EFA", className: cx10("ratingSvg"), children: /* @__PURE__ */ jsx10("path", { d: "M4 0C1.79086 0 0 1.79086 0 4V32V38L9 32H32C34.2091 32 36 30.2091 36 28V0H4Z" }) });
|
|
631
588
|
var PLACEHOLDER = 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="100" height="100" fill="%23e5e7eb"%3E%3Crect width="100" height="100" /%3E%3C/svg%3E';
|
|
632
589
|
var repeat = (n, renderFn) => Array.from({ length: n }, (_, i) => renderFn(i));
|
|
633
590
|
var Card = ({
|
|
@@ -684,13 +641,13 @@ var Card = ({
|
|
|
684
641
|
};
|
|
685
642
|
const renderRatingInfo = () => {
|
|
686
643
|
if (!ratingInfo) return null;
|
|
687
|
-
return /* @__PURE__ */ (
|
|
688
|
-
/* @__PURE__ */ (
|
|
689
|
-
/* @__PURE__ */ (
|
|
690
|
-
/* @__PURE__ */ (
|
|
644
|
+
return /* @__PURE__ */ jsxs10("span", { className: cx10("ratingInfo"), children: [
|
|
645
|
+
/* @__PURE__ */ jsx10(CommentIcon, {}),
|
|
646
|
+
/* @__PURE__ */ jsx10("span", { className: cx10("ratingLabel"), children: ratingInfo.label }),
|
|
647
|
+
/* @__PURE__ */ jsx10("span", { className: cx10("ratingValue"), children: ratingInfo.value })
|
|
691
648
|
] });
|
|
692
649
|
};
|
|
693
|
-
return /* @__PURE__ */ (
|
|
650
|
+
return /* @__PURE__ */ jsxs10(
|
|
694
651
|
"div",
|
|
695
652
|
{
|
|
696
653
|
className: containerClasses,
|
|
@@ -699,8 +656,8 @@ var Card = ({
|
|
|
699
656
|
role: onClick ? "button" : void 0,
|
|
700
657
|
tabIndex: onClick ? 0 : void 0,
|
|
701
658
|
children: [
|
|
702
|
-
/* @__PURE__ */ (
|
|
703
|
-
/* @__PURE__ */ (
|
|
659
|
+
/* @__PURE__ */ jsxs10("div", { className: cx10("imageContainer"), children: [
|
|
660
|
+
/* @__PURE__ */ jsx10(
|
|
704
661
|
"img",
|
|
705
662
|
{
|
|
706
663
|
src: displayImage,
|
|
@@ -709,8 +666,8 @@ var Card = ({
|
|
|
709
666
|
loading: "lazy"
|
|
710
667
|
}
|
|
711
668
|
),
|
|
712
|
-
/* @__PURE__ */ (
|
|
713
|
-
badge && /* @__PURE__ */ (
|
|
669
|
+
/* @__PURE__ */ jsx10("div", { className: cx10("shadowOverlay") }),
|
|
670
|
+
badge && /* @__PURE__ */ jsx10("div", { className: cx10("badgeWrapper"), children: /* @__PURE__ */ jsx10(
|
|
714
671
|
Badge,
|
|
715
672
|
{
|
|
716
673
|
color: badge.variant || "primary",
|
|
@@ -719,20 +676,20 @@ var Card = ({
|
|
|
719
676
|
}
|
|
720
677
|
) })
|
|
721
678
|
] }),
|
|
722
|
-
/* @__PURE__ */ (
|
|
723
|
-
/* @__PURE__ */ (
|
|
724
|
-
/* @__PURE__ */ (
|
|
725
|
-
repeat(Math.floor(stars), (i) => /* @__PURE__ */ (
|
|
726
|
-
isSuperior && /* @__PURE__ */ (
|
|
679
|
+
/* @__PURE__ */ jsxs10("div", { className: cx10("textContainer"), children: [
|
|
680
|
+
/* @__PURE__ */ jsx10("div", { className: starsRowClasses, children: stars !== void 0 && stars > 0 ? /* @__PURE__ */ jsx10(Fragment2, { children: stars === 6 ? /* @__PURE__ */ jsx10("span", { className: cx10("swissLodge"), children: swissLodgeLabel }) : /* @__PURE__ */ jsx10(Fragment2, { children: isDesktop ? /* @__PURE__ */ jsxs10(Fragment2, { children: [
|
|
681
|
+
/* @__PURE__ */ jsxs10("div", { className: cx10("starsContainer"), children: [
|
|
682
|
+
repeat(Math.floor(stars), (i) => /* @__PURE__ */ jsx10(StarIcon2, {}, i)),
|
|
683
|
+
isSuperior && /* @__PURE__ */ jsx10("span", { className: cx10("superiorBadge"), children: "(s)" })
|
|
727
684
|
] }),
|
|
728
|
-
/* @__PURE__ */ (
|
|
729
|
-
] }) : /* @__PURE__ */ (
|
|
730
|
-
/* @__PURE__ */ (
|
|
731
|
-
isSuperior && /* @__PURE__ */ (
|
|
685
|
+
/* @__PURE__ */ jsx10("div", { children: renderRatingInfo() })
|
|
686
|
+
] }) : /* @__PURE__ */ jsxs10(Fragment2, { children: [
|
|
687
|
+
/* @__PURE__ */ jsx10("div", { className: cx10("starsContainer"), children: repeat(Math.floor(stars), (i) => /* @__PURE__ */ jsx10(StarIcon2, {}, i)) }),
|
|
688
|
+
isSuperior && /* @__PURE__ */ jsx10("span", { className: cx10("superiorBadge"), children: "(s)" }),
|
|
732
689
|
renderRatingInfo()
|
|
733
|
-
] }) }) }) : /* @__PURE__ */ (
|
|
734
|
-
label && /* @__PURE__ */ (
|
|
735
|
-
price && /* @__PURE__ */ (
|
|
690
|
+
] }) }) }) : /* @__PURE__ */ jsx10("div", { className: cx10("starsPlaceholder"), children: "\xA0" }) }),
|
|
691
|
+
label && /* @__PURE__ */ jsx10("div", { className: labelClasses, children: label }),
|
|
692
|
+
price && /* @__PURE__ */ jsx10("div", { className: priceClasses, children: price })
|
|
736
693
|
] })
|
|
737
694
|
]
|
|
738
695
|
}
|
|
@@ -741,17 +698,17 @@ var Card = ({
|
|
|
741
698
|
Card.displayName = "Card";
|
|
742
699
|
|
|
743
700
|
// src/components/CompactCard/CompactCard.tsx
|
|
744
|
-
|
|
701
|
+
import { Fragment as Fragment3, jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
745
702
|
var cx11 = (className) => `hc-compact-${className}`;
|
|
746
|
-
var StarIcon3 = () => /* @__PURE__ */ (
|
|
747
|
-
/* @__PURE__ */ (
|
|
703
|
+
var StarIcon3 = () => /* @__PURE__ */ jsxs11("svg", { xmlns: "http://www.w3.org/2000/svg", width: "9", height: "9", viewBox: "0 0 9 9", fill: "none", children: [
|
|
704
|
+
/* @__PURE__ */ jsx11("g", { clipPath: "url(#clip0_compact_star)", children: /* @__PURE__ */ jsx11(
|
|
748
705
|
"path",
|
|
749
706
|
{
|
|
750
707
|
d: "M4.80018 0.366577C4.93104 0.366577 5.05173 0.440968 5.11135 0.557659L6.18011 2.66102L8.50521 3.03152C8.63462 3.05194 8.74222 3.14383 8.78294 3.26927C8.82365 3.39472 8.79021 3.53183 8.6986 3.62518L7.03366 5.29533L7.40155 7.6277C7.42191 7.75752 7.3681 7.88879 7.26195 7.9661C7.15581 8.04341 7.01476 8.05508 6.89843 7.99528L4.80018 6.92463L2.70192 7.99528C2.58559 8.05508 2.44454 8.04341 2.33839 7.9661C2.23225 7.88879 2.17844 7.75898 2.1988 7.6277L2.56523 5.29533L0.901751 3.62518C0.808689 3.53183 0.776699 3.39472 0.817413 3.26927C0.858128 3.14383 0.964277 3.05194 1.09515 3.03152L3.42024 2.66102L4.49045 0.557659C4.55007 0.440968 4.67076 0.366577 4.80163 0.366577H4.80018Z",
|
|
751
708
|
fill: "#1F2937"
|
|
752
709
|
}
|
|
753
710
|
) }),
|
|
754
|
-
/* @__PURE__ */ (
|
|
711
|
+
/* @__PURE__ */ jsx11("defs", { children: /* @__PURE__ */ jsx11("clipPath", { id: "clip0_compact_star", children: /* @__PURE__ */ jsx11("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
|
|
755
712
|
] });
|
|
756
713
|
var PLACEHOLDER2 = 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="100" height="100" fill="%23e5e7eb"%3E%3Crect width="100" height="100" /%3E%3C/svg%3E';
|
|
757
714
|
var repeat2 = (n, renderFn) => Array.from({ length: n }, (_, i) => renderFn(i));
|
|
@@ -788,7 +745,7 @@ var CompactCard = ({
|
|
|
788
745
|
onClick();
|
|
789
746
|
}
|
|
790
747
|
};
|
|
791
|
-
return /* @__PURE__ */ (
|
|
748
|
+
return /* @__PURE__ */ jsxs11(
|
|
792
749
|
"div",
|
|
793
750
|
{
|
|
794
751
|
className: containerClasses,
|
|
@@ -797,8 +754,8 @@ var CompactCard = ({
|
|
|
797
754
|
role: onClick ? "button" : void 0,
|
|
798
755
|
tabIndex: onClick ? 0 : void 0,
|
|
799
756
|
children: [
|
|
800
|
-
/* @__PURE__ */ (
|
|
801
|
-
/* @__PURE__ */ (
|
|
757
|
+
/* @__PURE__ */ jsxs11("div", { className: cx11("imageContainer"), children: [
|
|
758
|
+
/* @__PURE__ */ jsx11(
|
|
802
759
|
"img",
|
|
803
760
|
{
|
|
804
761
|
src: displayImage,
|
|
@@ -807,8 +764,8 @@ var CompactCard = ({
|
|
|
807
764
|
loading: "lazy"
|
|
808
765
|
}
|
|
809
766
|
),
|
|
810
|
-
/* @__PURE__ */ (
|
|
811
|
-
badge && /* @__PURE__ */ (
|
|
767
|
+
/* @__PURE__ */ jsx11("div", { className: cx11("shadowOverlay") }),
|
|
768
|
+
badge && /* @__PURE__ */ jsx11("div", { className: cx11("badgeWrapper"), children: /* @__PURE__ */ jsx11(
|
|
812
769
|
"span",
|
|
813
770
|
{
|
|
814
771
|
className: `${cx11("badge")} ${badge.variant === "secondary" ? cx11("badge--secondary") : cx11("badge--primary")}`,
|
|
@@ -816,16 +773,16 @@ var CompactCard = ({
|
|
|
816
773
|
}
|
|
817
774
|
) })
|
|
818
775
|
] }),
|
|
819
|
-
/* @__PURE__ */ (
|
|
820
|
-
/* @__PURE__ */ (
|
|
821
|
-
/* @__PURE__ */ (
|
|
822
|
-
isSuperior && /* @__PURE__ */ (
|
|
776
|
+
/* @__PURE__ */ jsxs11("div", { className: cx11("textContainer"), children: [
|
|
777
|
+
/* @__PURE__ */ jsx11("div", { className: cx11("starsRow"), children: stars !== void 0 && stars > 0 ? /* @__PURE__ */ jsx11(Fragment3, { children: stars === 6 ? /* @__PURE__ */ jsx11("span", { className: cx11("swissLodge"), children: swissLodgeLabel }) : /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
778
|
+
/* @__PURE__ */ jsx11("div", { className: cx11("starsContainer"), children: repeat2(Math.floor(stars), (i) => /* @__PURE__ */ jsx11(StarIcon3, {}, i)) }),
|
|
779
|
+
isSuperior && /* @__PURE__ */ jsx11("span", { className: cx11("superiorBadge"), children: "(s)" })
|
|
823
780
|
] }) }) : (
|
|
824
781
|
// Empty space to maintain alignment
|
|
825
|
-
/* @__PURE__ */ (
|
|
782
|
+
/* @__PURE__ */ jsx11("div", { className: cx11("starsPlaceholder"), children: "\xA0" })
|
|
826
783
|
) }),
|
|
827
|
-
label && /* @__PURE__ */ (
|
|
828
|
-
price && /* @__PURE__ */ (
|
|
784
|
+
label && /* @__PURE__ */ jsx11("div", { className: labelClasses, children: label }),
|
|
785
|
+
price && /* @__PURE__ */ jsx11("div", { className: priceClasses, children: price })
|
|
829
786
|
] })
|
|
830
787
|
]
|
|
831
788
|
}
|
|
@@ -834,10 +791,10 @@ var CompactCard = ({
|
|
|
834
791
|
CompactCard.displayName = "CompactCard";
|
|
835
792
|
|
|
836
793
|
// src/components/Dropdown/Dropdown.tsx
|
|
837
|
-
|
|
838
|
-
|
|
794
|
+
import { useState as useState2, useRef as useRef2, useEffect as useEffect2 } from "react";
|
|
795
|
+
import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
839
796
|
var cx12 = (className) => `hc-dropdown-${className}`;
|
|
840
|
-
var ChevronIcon = () => /* @__PURE__ */ (
|
|
797
|
+
var ChevronIcon = () => /* @__PURE__ */ jsx12("svg", { width: "12", height: "8", viewBox: "0 0 12 8", fill: "none", children: /* @__PURE__ */ jsx12(
|
|
841
798
|
"path",
|
|
842
799
|
{
|
|
843
800
|
d: "M1 1L6 6L11 1",
|
|
@@ -859,13 +816,13 @@ var Dropdown = ({
|
|
|
859
816
|
id,
|
|
860
817
|
placeholder = "Select..."
|
|
861
818
|
}) => {
|
|
862
|
-
const [localValue, setLocalValue] = (
|
|
863
|
-
const [isOpen, setIsOpen] = (
|
|
864
|
-
const [isFocused, setIsFocused] = (
|
|
865
|
-
const dropdownRef = (
|
|
819
|
+
const [localValue, setLocalValue] = useState2(defaultValue || "");
|
|
820
|
+
const [isOpen, setIsOpen] = useState2(false);
|
|
821
|
+
const [isFocused, setIsFocused] = useState2(false);
|
|
822
|
+
const dropdownRef = useRef2(null);
|
|
866
823
|
const actualValue = value !== void 0 ? value : localValue;
|
|
867
824
|
const selectedLabel = options.find((o) => o.value === actualValue)?.label || placeholder;
|
|
868
|
-
(
|
|
825
|
+
useEffect2(() => {
|
|
869
826
|
const handleClickOutside = (event) => {
|
|
870
827
|
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
871
828
|
setIsOpen(false);
|
|
@@ -910,8 +867,8 @@ var Dropdown = ({
|
|
|
910
867
|
cx12("list"),
|
|
911
868
|
isOpen && cx12("list--open")
|
|
912
869
|
].filter(Boolean).join(" ");
|
|
913
|
-
return /* @__PURE__ */ (
|
|
914
|
-
/* @__PURE__ */ (
|
|
870
|
+
return /* @__PURE__ */ jsxs12("div", { ref: dropdownRef, className: containerClasses, children: [
|
|
871
|
+
/* @__PURE__ */ jsxs12(
|
|
915
872
|
"div",
|
|
916
873
|
{
|
|
917
874
|
className: buttonClasses,
|
|
@@ -925,12 +882,12 @@ var Dropdown = ({
|
|
|
925
882
|
"aria-expanded": isOpen,
|
|
926
883
|
"aria-disabled": disabled,
|
|
927
884
|
children: [
|
|
928
|
-
/* @__PURE__ */ (
|
|
929
|
-
/* @__PURE__ */ (
|
|
885
|
+
/* @__PURE__ */ jsx12("span", { children: selectedLabel }),
|
|
886
|
+
/* @__PURE__ */ jsx12("span", { className: chevronClasses, children: /* @__PURE__ */ jsx12(ChevronIcon, {}) })
|
|
930
887
|
]
|
|
931
888
|
}
|
|
932
889
|
),
|
|
933
|
-
/* @__PURE__ */ (
|
|
890
|
+
/* @__PURE__ */ jsx12("ul", { role: "listbox", className: listClasses, children: options.map((option) => /* @__PURE__ */ jsx12(
|
|
934
891
|
"li",
|
|
935
892
|
{
|
|
936
893
|
role: "option",
|
|
@@ -941,7 +898,7 @@ var Dropdown = ({
|
|
|
941
898
|
},
|
|
942
899
|
option.value
|
|
943
900
|
)) }),
|
|
944
|
-
/* @__PURE__ */ (
|
|
901
|
+
/* @__PURE__ */ jsxs12(
|
|
945
902
|
"select",
|
|
946
903
|
{
|
|
947
904
|
id,
|
|
@@ -951,8 +908,8 @@ var Dropdown = ({
|
|
|
951
908
|
disabled,
|
|
952
909
|
className: cx12("hiddenSelect"),
|
|
953
910
|
children: [
|
|
954
|
-
!actualValue && /* @__PURE__ */ (
|
|
955
|
-
options.map((opt) => /* @__PURE__ */ (
|
|
911
|
+
!actualValue && /* @__PURE__ */ jsx12("option", { value: "", children: placeholder }),
|
|
912
|
+
options.map((opt) => /* @__PURE__ */ jsx12("option", { value: opt.value, children: opt.label }, opt.value))
|
|
956
913
|
]
|
|
957
914
|
}
|
|
958
915
|
)
|
|
@@ -961,8 +918,8 @@ var Dropdown = ({
|
|
|
961
918
|
Dropdown.displayName = "Dropdown";
|
|
962
919
|
|
|
963
920
|
// src/components/Input/Input.tsx
|
|
964
|
-
|
|
965
|
-
|
|
921
|
+
import { useState as useState3, useRef as useRef3 } from "react";
|
|
922
|
+
import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
966
923
|
var cx13 = (className) => `hc-input-${className}`;
|
|
967
924
|
var Input = ({
|
|
968
925
|
label,
|
|
@@ -990,9 +947,9 @@ var Input = ({
|
|
|
990
947
|
readOnly = false,
|
|
991
948
|
inputProps
|
|
992
949
|
}) => {
|
|
993
|
-
const [localValue, setLocalValue] = (
|
|
994
|
-
const [isFocused, setIsFocused] = (
|
|
995
|
-
const inputRef = (
|
|
950
|
+
const [localValue, setLocalValue] = useState3(defaultValue);
|
|
951
|
+
const [isFocused, setIsFocused] = useState3(false);
|
|
952
|
+
const inputRef = useRef3(null);
|
|
996
953
|
const actualValue = value !== void 0 ? value : localValue;
|
|
997
954
|
const handleChange = (e) => {
|
|
998
955
|
const newValue = e.target.value;
|
|
@@ -1031,17 +988,17 @@ var Input = ({
|
|
|
1031
988
|
error && cx13("helper--error"),
|
|
1032
989
|
(disabled || readOnly) && cx13("helper--disabled")
|
|
1033
990
|
].filter(Boolean).join(" ");
|
|
1034
|
-
return /* @__PURE__ */ (
|
|
1035
|
-
label && /* @__PURE__ */ (
|
|
1036
|
-
/* @__PURE__ */ (
|
|
991
|
+
return /* @__PURE__ */ jsxs13("div", { className: containerClasses, children: [
|
|
992
|
+
label && /* @__PURE__ */ jsx13("label", { htmlFor: id, className: labelClasses, children: label }),
|
|
993
|
+
/* @__PURE__ */ jsxs13(
|
|
1037
994
|
"div",
|
|
1038
995
|
{
|
|
1039
996
|
className: wrapperClasses,
|
|
1040
997
|
onClick: () => !disabled && !readOnly && inputRef.current?.focus(),
|
|
1041
998
|
children: [
|
|
1042
|
-
leftIcon && /* @__PURE__ */ (
|
|
1043
|
-
prefix && /* @__PURE__ */ (
|
|
1044
|
-
/* @__PURE__ */ (
|
|
999
|
+
leftIcon && /* @__PURE__ */ jsx13("div", { className: cx13("icon"), children: leftIcon }),
|
|
1000
|
+
prefix && /* @__PURE__ */ jsx13("div", { className: cx13("prefix"), children: prefix }),
|
|
1001
|
+
/* @__PURE__ */ jsx13(
|
|
1045
1002
|
"input",
|
|
1046
1003
|
{
|
|
1047
1004
|
ref: inputRef,
|
|
@@ -1066,14 +1023,302 @@ var Input = ({
|
|
|
1066
1023
|
]
|
|
1067
1024
|
}
|
|
1068
1025
|
),
|
|
1069
|
-
helper && /* @__PURE__ */ (
|
|
1026
|
+
helper && /* @__PURE__ */ jsx13("div", { className: helperClasses, children: helper })
|
|
1070
1027
|
] });
|
|
1071
1028
|
};
|
|
1072
1029
|
Input.displayName = "Input";
|
|
1073
1030
|
|
|
1031
|
+
// src/components/Block/Block.tsx
|
|
1032
|
+
import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1033
|
+
var cx14 = (className) => `hc-block-${className}`;
|
|
1034
|
+
var Block = ({
|
|
1035
|
+
variant = "icon",
|
|
1036
|
+
visual,
|
|
1037
|
+
label,
|
|
1038
|
+
description,
|
|
1039
|
+
style = "primary",
|
|
1040
|
+
onClick,
|
|
1041
|
+
showArrow = true,
|
|
1042
|
+
className = ""
|
|
1043
|
+
}) => {
|
|
1044
|
+
if (variant === "icon") {
|
|
1045
|
+
const containerClasses2 = [
|
|
1046
|
+
cx14("icon"),
|
|
1047
|
+
onClick && cx14("icon--clickable"),
|
|
1048
|
+
className
|
|
1049
|
+
].filter(Boolean).join(" ");
|
|
1050
|
+
const iconContainerClass = style === "primary" ? cx14("icon-container--primary") : cx14("icon-container--secondary");
|
|
1051
|
+
return /* @__PURE__ */ jsxs14(
|
|
1052
|
+
"div",
|
|
1053
|
+
{
|
|
1054
|
+
className: containerClasses2,
|
|
1055
|
+
onClick,
|
|
1056
|
+
role: onClick ? "button" : void 0,
|
|
1057
|
+
tabIndex: onClick ? 0 : void 0,
|
|
1058
|
+
children: [
|
|
1059
|
+
/* @__PURE__ */ jsx14("div", { className: iconContainerClass, children: visual }),
|
|
1060
|
+
/* @__PURE__ */ jsxs14("div", { className: cx14("text-container"), children: [
|
|
1061
|
+
/* @__PURE__ */ jsx14("div", { className: cx14("icon-label"), children: label }),
|
|
1062
|
+
description && /* @__PURE__ */ jsx14("div", { className: cx14("icon-description"), children: description })
|
|
1063
|
+
] })
|
|
1064
|
+
]
|
|
1065
|
+
}
|
|
1066
|
+
);
|
|
1067
|
+
}
|
|
1068
|
+
const containerClasses = [
|
|
1069
|
+
cx14("image"),
|
|
1070
|
+
onClick && cx14("image--clickable"),
|
|
1071
|
+
className
|
|
1072
|
+
].filter(Boolean).join(" ");
|
|
1073
|
+
return /* @__PURE__ */ jsxs14(
|
|
1074
|
+
"div",
|
|
1075
|
+
{
|
|
1076
|
+
className: containerClasses,
|
|
1077
|
+
onClick,
|
|
1078
|
+
role: onClick ? "button" : void 0,
|
|
1079
|
+
tabIndex: onClick ? 0 : void 0,
|
|
1080
|
+
children: [
|
|
1081
|
+
/* @__PURE__ */ jsx14("div", { className: cx14("image-container"), children: visual }),
|
|
1082
|
+
/* @__PURE__ */ jsxs14("div", { className: cx14("footer"), children: [
|
|
1083
|
+
/* @__PURE__ */ jsx14("span", { className: cx14("image-label"), children: label }),
|
|
1084
|
+
showArrow && /* @__PURE__ */ jsx14("span", { className: cx14("arrow"), children: "\u2192" })
|
|
1085
|
+
] })
|
|
1086
|
+
]
|
|
1087
|
+
}
|
|
1088
|
+
);
|
|
1089
|
+
};
|
|
1090
|
+
Block.displayName = "Block";
|
|
1091
|
+
|
|
1092
|
+
// src/components/ReviewCard/ReviewCard.tsx
|
|
1093
|
+
import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1094
|
+
var cx15 = (className) => `hc-review-${className}`;
|
|
1095
|
+
var ReviewCard = ({
|
|
1096
|
+
name,
|
|
1097
|
+
date,
|
|
1098
|
+
rating,
|
|
1099
|
+
quote,
|
|
1100
|
+
className
|
|
1101
|
+
}) => {
|
|
1102
|
+
const containerClasses = [cx15("container"), className].filter(Boolean).join(" ");
|
|
1103
|
+
return /* @__PURE__ */ jsxs15("div", { className: containerClasses, children: [
|
|
1104
|
+
/* @__PURE__ */ jsx15("div", { className: cx15("name"), children: name }),
|
|
1105
|
+
/* @__PURE__ */ jsxs15("div", { className: cx15("frame"), children: [
|
|
1106
|
+
/* @__PURE__ */ jsx15("div", { className: cx15("stars"), children: /* @__PURE__ */ jsx15(Rating, { variant: "stars", value: rating, size: "medium" }) }),
|
|
1107
|
+
/* @__PURE__ */ jsx15("div", { className: cx15("quote"), children: quote })
|
|
1108
|
+
] }),
|
|
1109
|
+
/* @__PURE__ */ jsx15("div", { className: cx15("date"), children: date })
|
|
1110
|
+
] });
|
|
1111
|
+
};
|
|
1112
|
+
ReviewCard.displayName = "ReviewCard";
|
|
1113
|
+
|
|
1114
|
+
// src/components/FAQ/FAQ.tsx
|
|
1115
|
+
import { useState as useState4 } from "react";
|
|
1116
|
+
import { jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1117
|
+
var cx16 = (className) => `hc-faq-${className}`;
|
|
1118
|
+
var ChevronIcon2 = ({ isOpen }) => {
|
|
1119
|
+
const iconClasses = [
|
|
1120
|
+
cx16("chevron"),
|
|
1121
|
+
isOpen && cx16("chevron--open")
|
|
1122
|
+
].filter(Boolean).join(" ");
|
|
1123
|
+
return /* @__PURE__ */ jsx16(
|
|
1124
|
+
"svg",
|
|
1125
|
+
{
|
|
1126
|
+
width: "24",
|
|
1127
|
+
height: "24",
|
|
1128
|
+
viewBox: "0 0 24 24",
|
|
1129
|
+
fill: "none",
|
|
1130
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1131
|
+
className: iconClasses,
|
|
1132
|
+
children: /* @__PURE__ */ jsx16(
|
|
1133
|
+
"path",
|
|
1134
|
+
{
|
|
1135
|
+
d: "M6 9L12 15L18 9",
|
|
1136
|
+
stroke: "currentColor",
|
|
1137
|
+
strokeWidth: "2",
|
|
1138
|
+
strokeLinecap: "round",
|
|
1139
|
+
strokeLinejoin: "round"
|
|
1140
|
+
}
|
|
1141
|
+
)
|
|
1142
|
+
}
|
|
1143
|
+
);
|
|
1144
|
+
};
|
|
1145
|
+
var FAQ = ({
|
|
1146
|
+
items,
|
|
1147
|
+
defaultOpenIndex = null,
|
|
1148
|
+
allowMultiple = false,
|
|
1149
|
+
className
|
|
1150
|
+
}) => {
|
|
1151
|
+
const [openIndices, setOpenIndices] = useState4(
|
|
1152
|
+
defaultOpenIndex !== null ? /* @__PURE__ */ new Set([defaultOpenIndex]) : /* @__PURE__ */ new Set()
|
|
1153
|
+
);
|
|
1154
|
+
const toggleItem = (index) => {
|
|
1155
|
+
setOpenIndices((prev) => {
|
|
1156
|
+
const newSet = new Set(prev);
|
|
1157
|
+
if (newSet.has(index)) {
|
|
1158
|
+
newSet.delete(index);
|
|
1159
|
+
} else {
|
|
1160
|
+
if (!allowMultiple) {
|
|
1161
|
+
newSet.clear();
|
|
1162
|
+
}
|
|
1163
|
+
newSet.add(index);
|
|
1164
|
+
}
|
|
1165
|
+
return newSet;
|
|
1166
|
+
});
|
|
1167
|
+
};
|
|
1168
|
+
const containerClasses = [cx16("container"), className].filter(Boolean).join(" ");
|
|
1169
|
+
return /* @__PURE__ */ jsx16("div", { className: containerClasses, children: items.map((item, index) => {
|
|
1170
|
+
const isOpen = openIndices.has(index);
|
|
1171
|
+
const answerClasses = isOpen ? cx16("answer--open") : cx16("answer");
|
|
1172
|
+
return /* @__PURE__ */ jsxs16("div", { className: cx16("item"), children: [
|
|
1173
|
+
/* @__PURE__ */ jsx16(
|
|
1174
|
+
Button,
|
|
1175
|
+
{
|
|
1176
|
+
variant: "link",
|
|
1177
|
+
size: "medium",
|
|
1178
|
+
className: cx16("question-btn"),
|
|
1179
|
+
onClick: () => toggleItem(index),
|
|
1180
|
+
"aria-expanded": isOpen,
|
|
1181
|
+
"aria-controls": `faq-answer-${index}`,
|
|
1182
|
+
rightIcon: /* @__PURE__ */ jsx16("div", { className: cx16("icon-container"), children: /* @__PURE__ */ jsx16(ChevronIcon2, { isOpen }) }),
|
|
1183
|
+
children: /* @__PURE__ */ jsx16("span", { className: cx16("question-text"), children: item.question })
|
|
1184
|
+
}
|
|
1185
|
+
),
|
|
1186
|
+
/* @__PURE__ */ jsx16("div", { id: `faq-answer-${index}`, className: answerClasses, children: /* @__PURE__ */ jsx16("p", { className: cx16("answer-text"), children: item.answer }) })
|
|
1187
|
+
] }, index);
|
|
1188
|
+
}) });
|
|
1189
|
+
};
|
|
1190
|
+
FAQ.displayName = "FAQ";
|
|
1191
|
+
|
|
1192
|
+
// src/components/Benefits/Benefits.tsx
|
|
1193
|
+
import { jsx as jsx17, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1194
|
+
var cx17 = (className) => `hc-benefits-${className}`;
|
|
1195
|
+
var Benefits = ({
|
|
1196
|
+
title = "Ihre Vorteile mit HotelCard",
|
|
1197
|
+
subtitle = "Mit HotelCard sparen Sie bei jedem Aufenthalt",
|
|
1198
|
+
benefits = [
|
|
1199
|
+
{
|
|
1200
|
+
title: "\xDCber 500 Hotels",
|
|
1201
|
+
description: "Grosse Auswahl in der ganzen Schweiz"
|
|
1202
|
+
},
|
|
1203
|
+
{
|
|
1204
|
+
title: "Bis zu 50% Rabatt",
|
|
1205
|
+
description: "Exklusive Mitglieder-Preise"
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
title: "Kein Buchungszwang",
|
|
1209
|
+
description: "Buchen Sie, wann Sie m\xF6chten"
|
|
1210
|
+
},
|
|
1211
|
+
{
|
|
1212
|
+
title: "Kostenlose Stornierung",
|
|
1213
|
+
description: "Flexible Buchungsbedingungen"
|
|
1214
|
+
}
|
|
1215
|
+
],
|
|
1216
|
+
contactTitle = "Haben Sie Fragen?",
|
|
1217
|
+
contactDescription = "Unser Kundenservice hilft Ihnen gerne weiter",
|
|
1218
|
+
contactButtonText = "Kontakt aufnehmen",
|
|
1219
|
+
onContactClick,
|
|
1220
|
+
className
|
|
1221
|
+
}) => {
|
|
1222
|
+
const sectionClasses = [cx17("section"), className].filter(Boolean).join(" ");
|
|
1223
|
+
return /* @__PURE__ */ jsx17("section", { className: sectionClasses, children: /* @__PURE__ */ jsxs17("div", { className: cx17("container"), children: [
|
|
1224
|
+
/* @__PURE__ */ jsxs17("div", { className: cx17("header"), children: [
|
|
1225
|
+
/* @__PURE__ */ jsx17("h2", { className: cx17("title"), children: title }),
|
|
1226
|
+
subtitle && /* @__PURE__ */ jsx17("p", { className: cx17("subtitle"), children: subtitle })
|
|
1227
|
+
] }),
|
|
1228
|
+
/* @__PURE__ */ jsx17("div", { className: cx17("grid"), children: benefits.map((benefit, index) => /* @__PURE__ */ jsxs17("div", { className: cx17("item"), children: [
|
|
1229
|
+
/* @__PURE__ */ jsx17("h3", { className: cx17("item-title"), children: benefit.title }),
|
|
1230
|
+
benefit.description && /* @__PURE__ */ jsx17("p", { className: cx17("item-description"), children: benefit.description })
|
|
1231
|
+
] }, index)) }),
|
|
1232
|
+
contactTitle && /* @__PURE__ */ jsxs17("div", { className: cx17("contact-card"), children: [
|
|
1233
|
+
/* @__PURE__ */ jsx17("h3", { className: cx17("contact-title"), children: contactTitle }),
|
|
1234
|
+
contactDescription && /* @__PURE__ */ jsx17("p", { className: cx17("contact-description"), children: contactDescription }),
|
|
1235
|
+
contactButtonText && /* @__PURE__ */ jsx17(
|
|
1236
|
+
Button,
|
|
1237
|
+
{
|
|
1238
|
+
variant: "secondary",
|
|
1239
|
+
size: "medium",
|
|
1240
|
+
onClick: onContactClick,
|
|
1241
|
+
className: cx17("contact-btn"),
|
|
1242
|
+
children: contactButtonText
|
|
1243
|
+
}
|
|
1244
|
+
)
|
|
1245
|
+
] })
|
|
1246
|
+
] }) });
|
|
1247
|
+
};
|
|
1248
|
+
Benefits.displayName = "Benefits";
|
|
1249
|
+
|
|
1250
|
+
// src/components/Pin/Pin.tsx
|
|
1251
|
+
import { forwardRef as forwardRef2 } from "react";
|
|
1252
|
+
import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1253
|
+
var cx18 = (className) => `hc-pin-${className}`;
|
|
1254
|
+
var HeartIcon = ({ className }) => /* @__PURE__ */ jsx18(
|
|
1255
|
+
"svg",
|
|
1256
|
+
{
|
|
1257
|
+
className,
|
|
1258
|
+
width: "16",
|
|
1259
|
+
height: "16",
|
|
1260
|
+
viewBox: "0 0 16 16",
|
|
1261
|
+
fill: "currentColor",
|
|
1262
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1263
|
+
children: /* @__PURE__ */ jsx18("path", { d: "M8 14.2333L6.96667 13.2933C3.6 10.24 1.33333 8.18667 1.33333 5.66667C1.33333 3.61333 2.94667 2 5 2C6.16 2 7.27333 2.54 8 3.39333C8.72667 2.54 9.84 2 11 2C13.0533 2 14.6667 3.61333 14.6667 5.66667C14.6667 8.18667 12.4 10.24 9.03333 13.2933L8 14.2333Z" })
|
|
1264
|
+
}
|
|
1265
|
+
);
|
|
1266
|
+
var HomeIcon = ({ className }) => /* @__PURE__ */ jsx18(
|
|
1267
|
+
"svg",
|
|
1268
|
+
{
|
|
1269
|
+
className,
|
|
1270
|
+
width: "16",
|
|
1271
|
+
height: "16",
|
|
1272
|
+
viewBox: "0 0 16 16",
|
|
1273
|
+
fill: "currentColor",
|
|
1274
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1275
|
+
children: /* @__PURE__ */ jsx18("path", { d: "M6.66667 13.3333V9.33333H9.33333V13.3333H12.6667V8H14.6667L8 2L1.33333 8H3.33333V13.3333H6.66667Z" })
|
|
1276
|
+
}
|
|
1277
|
+
);
|
|
1278
|
+
var Pin = forwardRef2(
|
|
1279
|
+
({
|
|
1280
|
+
variant = "price",
|
|
1281
|
+
viewed = false,
|
|
1282
|
+
currency = "CHF",
|
|
1283
|
+
price = 0,
|
|
1284
|
+
showFavorite = false,
|
|
1285
|
+
disabled = false,
|
|
1286
|
+
onClick,
|
|
1287
|
+
className = ""
|
|
1288
|
+
}, ref) => {
|
|
1289
|
+
const styleVariant = viewed ? "secondary" : "primary";
|
|
1290
|
+
const pinClasses = [
|
|
1291
|
+
cx18("pin"),
|
|
1292
|
+
cx18(styleVariant),
|
|
1293
|
+
variant === "hotel" && cx18("hotel"),
|
|
1294
|
+
className
|
|
1295
|
+
].filter(Boolean).join(" ");
|
|
1296
|
+
const formattedPrice = typeof price === "number" ? Math.round(price).toString() : price;
|
|
1297
|
+
return /* @__PURE__ */ jsxs18(
|
|
1298
|
+
"button",
|
|
1299
|
+
{
|
|
1300
|
+
ref,
|
|
1301
|
+
type: "button",
|
|
1302
|
+
className: pinClasses,
|
|
1303
|
+
disabled,
|
|
1304
|
+
onClick,
|
|
1305
|
+
children: [
|
|
1306
|
+
/* @__PURE__ */ jsx18("div", { className: cx18("body"), children: variant === "price" ? /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
1307
|
+
/* @__PURE__ */ jsx18("span", { className: cx18("currency"), children: currency }),
|
|
1308
|
+
/* @__PURE__ */ jsx18("span", { className: cx18("price"), children: formattedPrice }),
|
|
1309
|
+
showFavorite && /* @__PURE__ */ jsx18("div", { className: cx18("favorite-container"), children: /* @__PURE__ */ jsx18(HeartIcon, { className: cx18("favorite-icon") }) })
|
|
1310
|
+
] }) : /* @__PURE__ */ jsx18(HomeIcon, { className: cx18("hotel-icon") }) }),
|
|
1311
|
+
/* @__PURE__ */ jsx18("div", { className: cx18("pointer"), children: /* @__PURE__ */ jsx18("div", { className: cx18("pointer-inner") }) })
|
|
1312
|
+
]
|
|
1313
|
+
}
|
|
1314
|
+
);
|
|
1315
|
+
}
|
|
1316
|
+
);
|
|
1317
|
+
Pin.displayName = "Pin";
|
|
1318
|
+
|
|
1074
1319
|
// src/components/icons/HeartIcon.tsx
|
|
1075
|
-
|
|
1076
|
-
var
|
|
1320
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1321
|
+
var HeartIcon2 = ({ filled = false, className = "", size = 24 }) => /* @__PURE__ */ jsx19(
|
|
1077
1322
|
"svg",
|
|
1078
1323
|
{
|
|
1079
1324
|
width: size,
|
|
@@ -1085,14 +1330,14 @@ var HeartIcon = ({ filled = false, className = "", size = 24 }) => /* @__PURE__
|
|
|
1085
1330
|
strokeWidth: 2,
|
|
1086
1331
|
strokeLinecap: "round",
|
|
1087
1332
|
strokeLinejoin: "round",
|
|
1088
|
-
children: /* @__PURE__ */ (
|
|
1333
|
+
children: /* @__PURE__ */ jsx19("path", { d: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" })
|
|
1089
1334
|
}
|
|
1090
1335
|
);
|
|
1091
|
-
|
|
1336
|
+
HeartIcon2.displayName = "HeartIcon";
|
|
1092
1337
|
|
|
1093
1338
|
// src/components/icons/StarIcon.tsx
|
|
1094
|
-
|
|
1095
|
-
var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ (
|
|
1339
|
+
import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1340
|
+
var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ jsxs19(
|
|
1096
1341
|
"svg",
|
|
1097
1342
|
{
|
|
1098
1343
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1102,22 +1347,22 @@ var StarIcon4 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */
|
|
|
1102
1347
|
fill: "none",
|
|
1103
1348
|
className,
|
|
1104
1349
|
children: [
|
|
1105
|
-
/* @__PURE__ */ (
|
|
1350
|
+
/* @__PURE__ */ jsx20("g", { clipPath: "url(#clip0_star_icon)", children: /* @__PURE__ */ jsx20(
|
|
1106
1351
|
"path",
|
|
1107
1352
|
{
|
|
1108
1353
|
d: "M4.80018 0.366577C4.93104 0.366577 5.05173 0.440968 5.11135 0.557659L6.18011 2.66102L8.50521 3.03152C8.63462 3.05194 8.74222 3.14383 8.78294 3.26927C8.82365 3.39472 8.79021 3.53183 8.6986 3.62518L7.03366 5.29533L7.40155 7.6277C7.42191 7.75752 7.3681 7.88879 7.26195 7.9661C7.15581 8.04341 7.01476 8.05508 6.89843 7.99528L4.80018 6.92463L2.70192 7.99528C2.58559 8.05508 2.44454 8.04341 2.33839 7.9661C2.23225 7.88879 2.17844 7.75898 2.1988 7.6277L2.56523 5.29533L0.901751 3.62518C0.808689 3.53183 0.776699 3.39472 0.817413 3.26927C0.858128 3.14383 0.964277 3.05194 1.09515 3.03152L3.42024 2.66102L4.49045 0.557659C4.55007 0.440968 4.67076 0.366577 4.80163 0.366577H4.80018Z",
|
|
1109
1354
|
fill: filled ? "#1F2937" : "#D1D5DB"
|
|
1110
1355
|
}
|
|
1111
1356
|
) }),
|
|
1112
|
-
/* @__PURE__ */ (
|
|
1357
|
+
/* @__PURE__ */ jsx20("defs", { children: /* @__PURE__ */ jsx20("clipPath", { id: "clip0_star_icon", children: /* @__PURE__ */ jsx20("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
|
|
1113
1358
|
]
|
|
1114
1359
|
}
|
|
1115
1360
|
);
|
|
1116
1361
|
StarIcon4.displayName = "StarIcon";
|
|
1117
1362
|
|
|
1118
1363
|
// src/components/icons/ChevronLeftIcon.tsx
|
|
1119
|
-
|
|
1120
|
-
var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ (
|
|
1364
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1365
|
+
var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx21(
|
|
1121
1366
|
"svg",
|
|
1122
1367
|
{
|
|
1123
1368
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1130,14 +1375,14 @@ var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, imp
|
|
|
1130
1375
|
strokeLinecap: "round",
|
|
1131
1376
|
strokeLinejoin: "round",
|
|
1132
1377
|
className,
|
|
1133
|
-
children: /* @__PURE__ */ (
|
|
1378
|
+
children: /* @__PURE__ */ jsx21("polyline", { points: "15 18 9 12 15 6" })
|
|
1134
1379
|
}
|
|
1135
1380
|
);
|
|
1136
1381
|
ChevronLeftIcon.displayName = "ChevronLeftIcon";
|
|
1137
1382
|
|
|
1138
1383
|
// src/components/icons/ChevronRightIcon.tsx
|
|
1139
|
-
|
|
1140
|
-
var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ (
|
|
1384
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1385
|
+
var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx22(
|
|
1141
1386
|
"svg",
|
|
1142
1387
|
{
|
|
1143
1388
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1150,14 +1395,14 @@ var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, i
|
|
|
1150
1395
|
strokeLinecap: "round",
|
|
1151
1396
|
strokeLinejoin: "round",
|
|
1152
1397
|
className,
|
|
1153
|
-
children: /* @__PURE__ */ (
|
|
1398
|
+
children: /* @__PURE__ */ jsx22("polyline", { points: "9 18 15 12 9 6" })
|
|
1154
1399
|
}
|
|
1155
1400
|
);
|
|
1156
1401
|
ChevronRightIcon2.displayName = "ChevronRightIcon";
|
|
1157
1402
|
|
|
1158
1403
|
// src/components/icons/PinIcon.tsx
|
|
1159
|
-
|
|
1160
|
-
var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ (
|
|
1404
|
+
import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1405
|
+
var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ jsxs20(
|
|
1161
1406
|
"svg",
|
|
1162
1407
|
{
|
|
1163
1408
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1167,7 +1412,7 @@ var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx_
|
|
|
1167
1412
|
fill: "none",
|
|
1168
1413
|
className,
|
|
1169
1414
|
children: [
|
|
1170
|
-
/* @__PURE__ */ (
|
|
1415
|
+
/* @__PURE__ */ jsx23(
|
|
1171
1416
|
"path",
|
|
1172
1417
|
{
|
|
1173
1418
|
fillRule: "evenodd",
|
|
@@ -1176,7 +1421,7 @@ var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx_
|
|
|
1176
1421
|
fill: "currentColor"
|
|
1177
1422
|
}
|
|
1178
1423
|
),
|
|
1179
|
-
/* @__PURE__ */ (
|
|
1424
|
+
/* @__PURE__ */ jsx23(
|
|
1180
1425
|
"path",
|
|
1181
1426
|
{
|
|
1182
1427
|
fillRule: "evenodd",
|
|
@@ -1189,25 +1434,29 @@ var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx_
|
|
|
1189
1434
|
}
|
|
1190
1435
|
);
|
|
1191
1436
|
PinIcon.displayName = "PinIcon";
|
|
1192
|
-
|
|
1193
|
-
0 && (module.exports = {
|
|
1437
|
+
export {
|
|
1194
1438
|
Badge,
|
|
1439
|
+
Benefits,
|
|
1440
|
+
Block,
|
|
1195
1441
|
Button,
|
|
1196
1442
|
Card,
|
|
1197
1443
|
Checkbox,
|
|
1198
1444
|
ChevronLeftIcon,
|
|
1199
|
-
ChevronRightIcon,
|
|
1445
|
+
ChevronRightIcon2 as ChevronRightIcon,
|
|
1200
1446
|
Chip,
|
|
1201
1447
|
CompactCard,
|
|
1202
1448
|
Divider,
|
|
1203
1449
|
Dropdown,
|
|
1204
|
-
|
|
1450
|
+
FAQ,
|
|
1451
|
+
HeartIcon2 as HeartIcon,
|
|
1205
1452
|
Input,
|
|
1206
1453
|
Modal,
|
|
1454
|
+
Pin,
|
|
1207
1455
|
PinIcon,
|
|
1208
1456
|
RadioButton,
|
|
1209
1457
|
Rating,
|
|
1458
|
+
ReviewCard,
|
|
1210
1459
|
SectionHeader,
|
|
1211
|
-
StarIcon
|
|
1212
|
-
}
|
|
1460
|
+
StarIcon4 as StarIcon
|
|
1461
|
+
};
|
|
1213
1462
|
//# sourceMappingURL=index.js.map
|