@hotelcard/ui 0.0.3 → 0.0.5

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/dist/index.mjs DELETED
@@ -1,1042 +0,0 @@
1
- // src/components/Button/Button.tsx
2
- import { forwardRef } from "react";
3
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
- var cx = (className) => `hc-btn-${className}`;
5
- var Button = forwardRef(({
6
- variant = "primary",
7
- size = "medium",
8
- leftIcon,
9
- rightIcon,
10
- children,
11
- className = "",
12
- disabled,
13
- iconOnly = false,
14
- style,
15
- ...props
16
- }, ref) => {
17
- const getButtonClasses = () => {
18
- const classes = [cx("button")];
19
- if (variant === "link") {
20
- classes.push(cx("link"));
21
- classes.push(cx(size));
22
- return classes.join(" ");
23
- }
24
- if (iconOnly) {
25
- classes.push(cx("icon-only"));
26
- classes.push(cx(size));
27
- classes.push(cx(variant));
28
- return classes.join(" ");
29
- }
30
- classes.push(cx("standard"));
31
- classes.push(cx(size));
32
- classes.push(cx(variant));
33
- return classes.join(" ");
34
- };
35
- return /* @__PURE__ */ jsx(
36
- "button",
37
- {
38
- ref,
39
- style,
40
- className: `${getButtonClasses()} ${className}`,
41
- disabled,
42
- ...props,
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 })
47
- ] })
48
- }
49
- );
50
- });
51
- Button.displayName = "Button";
52
-
53
- // src/components/Badge/Badge.tsx
54
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
55
- var cx2 = (className) => `hc-badge-${className}`;
56
- var Badge = ({
57
- color = "primary",
58
- size = "large",
59
- style = "heavy",
60
- icon = false,
61
- children,
62
- className = ""
63
- }) => {
64
- const colorStyleKey = `${color}${style.charAt(0).toUpperCase()}${style.slice(1)}`;
65
- const badgeClasses = [
66
- cx2("badge"),
67
- cx2(`badge--${size}`),
68
- cx2(`badge--${colorStyleKey}`),
69
- className
70
- ].filter(Boolean).join(" ");
71
- const iconClasses = [
72
- cx2("icon"),
73
- cx2(`icon--${size}`)
74
- ].join(" ");
75
- const textClasses = [
76
- cx2("text"),
77
- size === "large" && icon ? cx2("text--largeWithIcon") : ""
78
- ].filter(Boolean).join(" ");
79
- return /* @__PURE__ */ jsxs2("div", { className: badgeClasses, children: [
80
- icon && /* @__PURE__ */ jsx2("div", { className: iconClasses }),
81
- /* @__PURE__ */ jsx2("div", { className: textClasses, children })
82
- ] });
83
- };
84
- Badge.displayName = "Badge";
85
-
86
- // src/components/Rating/Rating.tsx
87
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
88
- var cx3 = (className) => `hc-rating-${className}`;
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" }) }) })
92
- ] });
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(
96
- "path",
97
- {
98
- clipPath: "url(#half)",
99
- 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",
100
- fill: "#FBB041"
101
- }
102
- ),
103
- /* @__PURE__ */ jsx3(
104
- "path",
105
- {
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",
107
- fill: "#9A5A00"
108
- }
109
- )
110
- ] });
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" }) }) })
114
- ] });
115
- var Rating = ({
116
- variant = "stars",
117
- value,
118
- maxValue = 5,
119
- showValue = false,
120
- name,
121
- date,
122
- quote,
123
- size = "medium",
124
- className = ""
125
- }) => {
126
- const clampedValue = Math.min(Math.max(0, value), maxValue);
127
- const fullStars = Math.floor(clampedValue);
128
- const hasHalfStar = clampedValue % 1 >= 0.5;
129
- const emptyStars = maxValue - fullStars - (hasHalfStar ? 1 : 0);
130
- const renderStars = () => {
131
- const starClasses = [
132
- cx3("star"),
133
- cx3(`star--${size}`)
134
- ].filter(Boolean).join(" ");
135
- const stars = [];
136
- for (let i = 0; i < fullStars; i++) {
137
- stars.push(
138
- /* @__PURE__ */ jsx3("span", { className: starClasses, children: /* @__PURE__ */ jsx3(StarIcon, {}) }, `full-${i}`)
139
- );
140
- }
141
- if (hasHalfStar) {
142
- stars.push(
143
- /* @__PURE__ */ jsx3("span", { className: starClasses, children: /* @__PURE__ */ jsx3(HalfStarIcon, {}) }, "half")
144
- );
145
- }
146
- for (let i = 0; i < emptyStars; i++) {
147
- stars.push(
148
- /* @__PURE__ */ jsx3("span", { className: starClasses, children: /* @__PURE__ */ jsx3(EmptyStarIcon, {}) }, `empty-${i}`)
149
- );
150
- }
151
- return stars;
152
- };
153
- if (variant === "stars") {
154
- const containerClasses2 = [cx3("starsContainer"), className].filter(Boolean).join(" ");
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") })
158
- ] });
159
- }
160
- if (variant === "result") {
161
- const containerClasses2 = [cx3("resultContainer"), className].filter(Boolean).join(" ");
162
- return /* @__PURE__ */ jsxs3("div", { className: containerClasses2, children: [
163
- /* @__PURE__ */ jsx3("span", { className: cx3("resultChar"), children: "N" }),
164
- /* @__PURE__ */ jsx3("div", { children: renderStars() })
165
- ] });
166
- }
167
- const containerClasses = [cx3("blockContainer"), className].filter(Boolean).join(" ");
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() })
173
- ] }),
174
- date && /* @__PURE__ */ jsx3("span", { className: cx3("blockDate"), children: date })
175
- ] }),
176
- quote && /* @__PURE__ */ jsx3("p", { className: cx3("blockQuote"), children: quote })
177
- ] });
178
- };
179
- Rating.displayName = "Rating";
180
-
181
- // src/components/Divider/Divider.tsx
182
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
183
- var cx4 = (className) => `hc-divider-${className}`;
184
- var Divider = ({
185
- label,
186
- orientation = "horizontal",
187
- className = ""
188
- }) => {
189
- const isHorizontal = orientation === "horizontal";
190
- if (!label) {
191
- const lineClass2 = isHorizontal ? cx4("lineStandalone--horizontal") : cx4("lineStandalone--vertical");
192
- return /* @__PURE__ */ jsx4(
193
- "div",
194
- {
195
- className: [lineClass2, className].filter(Boolean).join(" "),
196
- role: "separator",
197
- "aria-orientation": orientation
198
- }
199
- );
200
- }
201
- const containerClass = isHorizontal ? cx4("container--horizontal") : cx4("container--vertical");
202
- const lineClass = isHorizontal ? cx4("line--horizontal") : cx4("line--vertical");
203
- const containerClasses = [
204
- cx4("container"),
205
- containerClass,
206
- className
207
- ].filter(Boolean).join(" ");
208
- return /* @__PURE__ */ jsxs4(
209
- "div",
210
- {
211
- className: containerClasses,
212
- role: "separator",
213
- "aria-orientation": orientation,
214
- "aria-label": typeof label === "string" ? label : void 0,
215
- children: [
216
- /* @__PURE__ */ jsx4("div", { className: lineClass }),
217
- /* @__PURE__ */ jsx4("span", { className: cx4("label"), children: label }),
218
- /* @__PURE__ */ jsx4("div", { className: lineClass })
219
- ]
220
- }
221
- );
222
- };
223
- Divider.displayName = "Divider";
224
-
225
- // src/components/Chip/Chip.tsx
226
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
227
- var cx5 = (className) => `hc-chip-${className}`;
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" }) }) })
231
- ] });
232
- var Chip = ({
233
- label,
234
- count,
235
- size = "small",
236
- state = "idle",
237
- removable = true,
238
- onClick,
239
- onRemove,
240
- className = "",
241
- disabled = false
242
- }) => {
243
- const effectiveState = disabled ? "disabled" : state;
244
- const chipClasses = [
245
- cx5("chip"),
246
- cx5(`chip--${size}`),
247
- cx5(`chip--${effectiveState}`),
248
- className
249
- ].filter(Boolean).join(" ");
250
- const labelClasses = [cx5("label"), cx5(`label--${size}`)].join(" ");
251
- const countBadgeClasses = [cx5("countBadge"), cx5(`countBadge--${size}`)].join(" ");
252
- const handleClick = () => {
253
- if (disabled) return;
254
- if (removable && onRemove) {
255
- onRemove();
256
- } else if (onClick) {
257
- onClick();
258
- }
259
- };
260
- const handleKeyDown = (e) => {
261
- if (disabled) return;
262
- if (e.key === "Enter" || e.key === " ") {
263
- e.preventDefault();
264
- if (removable && onRemove) {
265
- onRemove();
266
- } else if (onClick) {
267
- onClick();
268
- }
269
- }
270
- };
271
- return /* @__PURE__ */ jsxs5(
272
- "button",
273
- {
274
- type: "button",
275
- className: chipClasses,
276
- onClick: handleClick,
277
- onKeyDown: handleKeyDown,
278
- disabled,
279
- "aria-label": removable ? `Remove filter: ${label}` : label,
280
- children: [
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, {}) })
284
- ]
285
- }
286
- );
287
- };
288
- Chip.displayName = "Chip";
289
-
290
- // src/components/Checkbox/Checkbox.tsx
291
- import { useState } from "react";
292
- import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
293
- var cx6 = (className) => `hc-checkbox-${className}`;
294
- var Checkbox = ({
295
- label,
296
- checked,
297
- defaultChecked = false,
298
- onChange,
299
- disabled = false,
300
- error = false,
301
- name,
302
- id,
303
- className = "",
304
- size = "medium"
305
- }) => {
306
- const [localChecked, setLocalChecked] = useState(defaultChecked);
307
- const [isFocused, setIsFocused] = useState(false);
308
- const actualChecked = checked !== void 0 ? checked : localChecked;
309
- const handleChange = (e) => {
310
- const newChecked = e.target.checked;
311
- if (checked === void 0) {
312
- setLocalChecked(newChecked);
313
- }
314
- onChange?.(newChecked);
315
- };
316
- const containerClasses = [
317
- cx6("container"),
318
- disabled && cx6("container--disabled"),
319
- className
320
- ].filter(Boolean).join(" ");
321
- const wrapperClasses = [
322
- cx6("wrapper"),
323
- cx6(`wrapper--${size}`)
324
- ].filter(Boolean).join(" ");
325
- const boxClasses = [
326
- cx6("box"),
327
- cx6(`box--${size}`),
328
- actualChecked && cx6("box--checked"),
329
- disabled && cx6("box--disabled"),
330
- error && !actualChecked && cx6("box--error"),
331
- isFocused && cx6("box--focused")
332
- ].filter(Boolean).join(" ");
333
- const inputClasses = [
334
- cx6("input"),
335
- disabled && cx6("input--disabled")
336
- ].filter(Boolean).join(" ");
337
- const checkmarkClasses = [
338
- cx6("checkmark"),
339
- cx6(`checkmark--${size}`),
340
- actualChecked && cx6("checkmark--checked")
341
- ].filter(Boolean).join(" ");
342
- const labelClasses = [
343
- cx6("label"),
344
- disabled && cx6("label--disabled"),
345
- error && !disabled && cx6("label--error")
346
- ].filter(Boolean).join(" ");
347
- return /* @__PURE__ */ jsxs6("label", { className: containerClasses, children: [
348
- /* @__PURE__ */ jsxs6("div", { className: wrapperClasses, children: [
349
- /* @__PURE__ */ jsx6("div", { className: boxClasses }),
350
- /* @__PURE__ */ jsx6(
351
- "input",
352
- {
353
- type: "checkbox",
354
- id,
355
- name,
356
- checked: actualChecked,
357
- onChange: handleChange,
358
- disabled,
359
- className: inputClasses,
360
- onFocus: () => setIsFocused(true),
361
- onBlur: () => setIsFocused(false),
362
- "aria-invalid": error
363
- }
364
- ),
365
- /* @__PURE__ */ jsx6(
366
- "svg",
367
- {
368
- className: checkmarkClasses,
369
- viewBox: "0 0 12 12",
370
- fill: "none",
371
- xmlns: "http://www.w3.org/2000/svg",
372
- children: /* @__PURE__ */ jsx6(
373
- "path",
374
- {
375
- d: "M2.5 6L5 8.5L9.5 3.5",
376
- stroke: "var(--content-action-highlight-inverse-idle, #ffffff)",
377
- strokeWidth: "2",
378
- strokeLinecap: "round",
379
- strokeLinejoin: "round"
380
- }
381
- )
382
- }
383
- )
384
- ] }),
385
- label && /* @__PURE__ */ jsx6("span", { className: labelClasses, children: label })
386
- ] });
387
- };
388
- Checkbox.displayName = "Checkbox";
389
-
390
- // src/components/RadioButton/RadioButton.tsx
391
- import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
392
- var cx7 = (className) => `hc-radio-${className}`;
393
- var RadioButton = ({
394
- id,
395
- checked,
396
- onChange,
397
- name,
398
- value,
399
- disabled = false,
400
- className = "",
401
- label,
402
- autoComplete
403
- }) => {
404
- const handleClick = () => {
405
- if (!disabled && !checked) {
406
- onChange(true);
407
- }
408
- };
409
- const handleKeyDown = (event) => {
410
- if (!disabled && (event.key === "Enter" || event.key === " ")) {
411
- event.preventDefault();
412
- if (!checked) {
413
- onChange(true);
414
- }
415
- }
416
- };
417
- const containerClasses = [
418
- cx7("container"),
419
- disabled && cx7("container--disabled"),
420
- className
421
- ].filter(Boolean).join(" ");
422
- const outerCircleClasses = [
423
- cx7("outerCircle"),
424
- checked && cx7("outerCircle--checked"),
425
- disabled && cx7("outerCircle--disabled")
426
- ].filter(Boolean).join(" ");
427
- const innerDotClasses = [
428
- cx7("innerDot"),
429
- checked && cx7("innerDot--checked")
430
- ].filter(Boolean).join(" ");
431
- return /* @__PURE__ */ jsxs7(
432
- "div",
433
- {
434
- role: "radio",
435
- "aria-checked": checked,
436
- tabIndex: disabled ? -1 : 0,
437
- onClick: handleClick,
438
- onKeyDown: handleKeyDown,
439
- className: containerClasses,
440
- "aria-disabled": disabled,
441
- children: [
442
- /* @__PURE__ */ jsxs7("div", { className: cx7("wrapper"), children: [
443
- /* @__PURE__ */ jsx7(
444
- "input",
445
- {
446
- id,
447
- type: "radio",
448
- name,
449
- value,
450
- checked,
451
- disabled,
452
- autoComplete,
453
- onChange: () => {
454
- },
455
- className: cx7("hiddenInput")
456
- }
457
- ),
458
- /* @__PURE__ */ jsx7("div", { className: outerCircleClasses }),
459
- /* @__PURE__ */ jsx7("div", { className: innerDotClasses })
460
- ] }),
461
- label && /* @__PURE__ */ jsx7("label", { htmlFor: id, className: cx7("label"), children: label })
462
- ]
463
- }
464
- );
465
- };
466
- RadioButton.displayName = "RadioButton";
467
-
468
- // src/components/SectionHeader/SectionHeader.tsx
469
- import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
470
- var cx8 = (className) => `hc-section-${className}`;
471
- var ChevronRightIcon = () => /* @__PURE__ */ jsx8(
472
- "svg",
473
- {
474
- xmlns: "http://www.w3.org/2000/svg",
475
- width: "16",
476
- height: "16",
477
- viewBox: "0 0 24 24",
478
- fill: "none",
479
- stroke: "currentColor",
480
- strokeWidth: "2",
481
- strokeLinecap: "round",
482
- strokeLinejoin: "round",
483
- children: /* @__PURE__ */ jsx8("polyline", { points: "9 18 15 12 9 6" })
484
- }
485
- );
486
- var SectionHeader = ({
487
- title,
488
- showAllLabel,
489
- onShowAllClick,
490
- className = ""
491
- }) => {
492
- const headerClasses = [cx8("header"), className].filter(Boolean).join(" ");
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, {})
498
- ] })
499
- ] });
500
- };
501
- SectionHeader.displayName = "SectionHeader";
502
-
503
- // src/components/Modal/Modal.tsx
504
- import { useEffect, useRef } from "react";
505
- import { createPortal } from "react-dom";
506
- import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
507
- var cx9 = (className) => `hc-modal-${className}`;
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(
509
- "path",
510
- {
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",
512
- fill: "currentColor"
513
- }
514
- ) });
515
- var Modal = ({
516
- isOpen,
517
- onClose,
518
- children,
519
- width = "var(--grid-tablet-device-width, 600px)",
520
- className = "",
521
- showCloseButton = true,
522
- disableBackdropClick = false
523
- }) => {
524
- const modalRef = useRef(null);
525
- useEffect(() => {
526
- const handleEscape = (e) => {
527
- if (e.key === "Escape" && isOpen) {
528
- onClose();
529
- }
530
- };
531
- if (isOpen) {
532
- document.addEventListener("keydown", handleEscape);
533
- document.body.style.overflow = "hidden";
534
- }
535
- return () => {
536
- document.removeEventListener("keydown", handleEscape);
537
- document.body.style.overflow = "";
538
- };
539
- }, [isOpen, onClose]);
540
- const handleBackdropClick = (e) => {
541
- if (e.target === e.currentTarget && !disableBackdropClick) {
542
- onClose();
543
- }
544
- };
545
- if (!isOpen) return null;
546
- const modalClasses = [cx9("content"), className].filter(Boolean).join(" ");
547
- const modalContent = /* @__PURE__ */ jsx9("div", { className: cx9("backdrop"), onClick: handleBackdropClick, children: /* @__PURE__ */ jsxs9(
548
- "div",
549
- {
550
- ref: modalRef,
551
- className: modalClasses,
552
- style: { maxWidth: width },
553
- children: [
554
- showCloseButton && /* @__PURE__ */ jsx9(
555
- "button",
556
- {
557
- className: cx9("closeButton"),
558
- onClick: onClose,
559
- "aria-label": "Close modal",
560
- children: /* @__PURE__ */ jsx9(CloseIcon2, {})
561
- }
562
- ),
563
- children
564
- ]
565
- }
566
- ) });
567
- if (typeof document !== "undefined") {
568
- return createPortal(modalContent, document.body);
569
- }
570
- return modalContent;
571
- };
572
- Modal.displayName = "Modal";
573
-
574
- // src/components/CompactCard/CompactCard.tsx
575
- import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
576
- var cx10 = (className) => `hc-compact-${className}`;
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_compact_star)", children: /* @__PURE__ */ jsx10(
579
- "path",
580
- {
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",
582
- fill: "#1F2937"
583
- }
584
- ) }),
585
- /* @__PURE__ */ jsx10("defs", { children: /* @__PURE__ */ jsx10("clipPath", { id: "clip0_compact_star", children: /* @__PURE__ */ jsx10("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
586
- ] });
587
- 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';
588
- var repeat = (n, renderFn) => Array.from({ length: n }, (_, i) => renderFn(i));
589
- var CompactCard = ({
590
- image,
591
- imageAlt = "",
592
- label,
593
- price,
594
- stars,
595
- isSuperior = false,
596
- badge,
597
- onClick,
598
- className = "",
599
- swissLodgeLabel = "Swiss Lodge"
600
- }) => {
601
- const hasRating = stars !== void 0 && stars > 0;
602
- const containerClasses = [
603
- cx10("card"),
604
- onClick && cx10("card--clickable"),
605
- className
606
- ].filter(Boolean).join(" ");
607
- const labelClasses = [
608
- cx10("label"),
609
- !hasRating && cx10("label--noRating")
610
- ].filter(Boolean).join(" ");
611
- const priceClasses = [
612
- cx10("price"),
613
- !hasRating && cx10("price--noRating")
614
- ].filter(Boolean).join(" ");
615
- const displayImage = image || PLACEHOLDER;
616
- const handleKeyDown = (e) => {
617
- if (onClick && (e.key === "Enter" || e.key === " ")) {
618
- e.preventDefault();
619
- onClick();
620
- }
621
- };
622
- return /* @__PURE__ */ jsxs10(
623
- "div",
624
- {
625
- className: containerClasses,
626
- onClick,
627
- onKeyDown: handleKeyDown,
628
- role: onClick ? "button" : void 0,
629
- tabIndex: onClick ? 0 : void 0,
630
- children: [
631
- /* @__PURE__ */ jsxs10("div", { className: cx10("imageContainer"), children: [
632
- /* @__PURE__ */ jsx10(
633
- "img",
634
- {
635
- src: displayImage,
636
- alt: imageAlt,
637
- className: cx10("image"),
638
- loading: "lazy"
639
- }
640
- ),
641
- /* @__PURE__ */ jsx10("div", { className: cx10("shadowOverlay") }),
642
- badge && /* @__PURE__ */ jsx10("div", { className: cx10("badgeWrapper"), children: /* @__PURE__ */ jsx10(
643
- "span",
644
- {
645
- className: `${cx10("badge")} ${badge.variant === "secondary" ? cx10("badge--secondary") : cx10("badge--primary")}`,
646
- children: badge.text
647
- }
648
- ) })
649
- ] }),
650
- /* @__PURE__ */ jsxs10("div", { className: cx10("textContainer"), children: [
651
- /* @__PURE__ */ jsx10("div", { className: cx10("starsRow"), children: stars !== void 0 && stars > 0 ? /* @__PURE__ */ jsx10(Fragment2, { children: stars === 6 ? /* @__PURE__ */ jsx10("span", { className: cx10("swissLodge"), children: swissLodgeLabel }) : /* @__PURE__ */ jsxs10(Fragment2, { children: [
652
- /* @__PURE__ */ jsx10("div", { className: cx10("starsContainer"), children: repeat(Math.floor(stars), (i) => /* @__PURE__ */ jsx10(StarIcon2, {}, i)) }),
653
- isSuperior && /* @__PURE__ */ jsx10("span", { className: cx10("superiorBadge"), children: "(s)" })
654
- ] }) }) : (
655
- // Empty space to maintain alignment
656
- /* @__PURE__ */ jsx10("div", { className: cx10("starsPlaceholder"), children: "\xA0" })
657
- ) }),
658
- label && /* @__PURE__ */ jsx10("div", { className: labelClasses, children: label }),
659
- price && /* @__PURE__ */ jsx10("div", { className: priceClasses, children: price })
660
- ] })
661
- ]
662
- }
663
- );
664
- };
665
- CompactCard.displayName = "CompactCard";
666
-
667
- // src/components/Dropdown/Dropdown.tsx
668
- import { useState as useState2, useRef as useRef2, useEffect as useEffect2 } from "react";
669
- import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
670
- var cx11 = (className) => `hc-dropdown-${className}`;
671
- var ChevronIcon = () => /* @__PURE__ */ jsx11("svg", { width: "12", height: "8", viewBox: "0 0 12 8", fill: "none", children: /* @__PURE__ */ jsx11(
672
- "path",
673
- {
674
- d: "M1 1L6 6L11 1",
675
- stroke: "currentColor",
676
- strokeWidth: "1.5",
677
- strokeLinecap: "round",
678
- strokeLinejoin: "round"
679
- }
680
- ) });
681
- var Dropdown = ({
682
- options = [],
683
- disabled = false,
684
- error = false,
685
- defaultValue,
686
- value,
687
- onChange,
688
- className = "",
689
- name,
690
- id,
691
- placeholder = "Select..."
692
- }) => {
693
- const [localValue, setLocalValue] = useState2(defaultValue || "");
694
- const [isOpen, setIsOpen] = useState2(false);
695
- const [isFocused, setIsFocused] = useState2(false);
696
- const dropdownRef = useRef2(null);
697
- const actualValue = value !== void 0 ? value : localValue;
698
- const selectedLabel = options.find((o) => o.value === actualValue)?.label || placeholder;
699
- useEffect2(() => {
700
- const handleClickOutside = (event) => {
701
- if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
702
- setIsOpen(false);
703
- }
704
- };
705
- document.addEventListener("mousedown", handleClickOutside);
706
- return () => document.removeEventListener("mousedown", handleClickOutside);
707
- }, []);
708
- const handleSelect = (selectedValue) => {
709
- if (value === void 0) {
710
- setLocalValue(selectedValue);
711
- }
712
- onChange?.(selectedValue);
713
- setIsOpen(false);
714
- };
715
- const handleKeyDown = (event) => {
716
- if (disabled) return;
717
- if (event.key === "Enter" || event.key === " ") {
718
- event.preventDefault();
719
- setIsOpen(!isOpen);
720
- } else if (event.key === "Escape") {
721
- setIsOpen(false);
722
- }
723
- };
724
- const containerClasses = [
725
- cx11("container"),
726
- disabled && cx11("container--disabled"),
727
- className
728
- ].filter(Boolean).join(" ");
729
- const buttonClasses = [
730
- cx11("button"),
731
- error && cx11("button--error"),
732
- isFocused && !error && cx11("button--focus"),
733
- disabled && cx11("button--disabled"),
734
- isOpen && cx11("button--open")
735
- ].filter(Boolean).join(" ");
736
- const chevronClasses = [
737
- cx11("chevron"),
738
- isOpen && cx11("chevron--open")
739
- ].filter(Boolean).join(" ");
740
- const listClasses = [
741
- cx11("list"),
742
- isOpen && cx11("list--open")
743
- ].filter(Boolean).join(" ");
744
- return /* @__PURE__ */ jsxs11("div", { ref: dropdownRef, className: containerClasses, children: [
745
- /* @__PURE__ */ jsxs11(
746
- "div",
747
- {
748
- className: buttonClasses,
749
- tabIndex: disabled ? -1 : 0,
750
- onClick: () => !disabled && setIsOpen(!isOpen),
751
- onKeyDown: handleKeyDown,
752
- onFocus: () => !disabled && setIsFocused(true),
753
- onBlur: () => setIsFocused(false),
754
- role: "combobox",
755
- "aria-haspopup": "listbox",
756
- "aria-expanded": isOpen,
757
- "aria-disabled": disabled,
758
- children: [
759
- /* @__PURE__ */ jsx11("span", { children: selectedLabel }),
760
- /* @__PURE__ */ jsx11("span", { className: chevronClasses, children: /* @__PURE__ */ jsx11(ChevronIcon, {}) })
761
- ]
762
- }
763
- ),
764
- /* @__PURE__ */ jsx11("ul", { role: "listbox", className: listClasses, children: options.map((option) => /* @__PURE__ */ jsx11(
765
- "li",
766
- {
767
- role: "option",
768
- "aria-selected": actualValue === option.value,
769
- onClick: () => handleSelect(option.value),
770
- className: `${cx11("option")} ${actualValue === option.value ? cx11("option--selected") : ""}`,
771
- children: option.label
772
- },
773
- option.value
774
- )) }),
775
- /* @__PURE__ */ jsxs11(
776
- "select",
777
- {
778
- id,
779
- name,
780
- value: actualValue,
781
- onChange: (e) => handleSelect(e.target.value),
782
- disabled,
783
- className: cx11("hiddenSelect"),
784
- children: [
785
- !actualValue && /* @__PURE__ */ jsx11("option", { value: "", children: placeholder }),
786
- options.map((opt) => /* @__PURE__ */ jsx11("option", { value: opt.value, children: opt.label }, opt.value))
787
- ]
788
- }
789
- )
790
- ] });
791
- };
792
- Dropdown.displayName = "Dropdown";
793
-
794
- // src/components/Input/Input.tsx
795
- import { useState as useState3, useRef as useRef3 } from "react";
796
- import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
797
- var cx12 = (className) => `hc-input-${className}`;
798
- var Input = ({
799
- label,
800
- placeholder = "Placeholder",
801
- helper,
802
- value,
803
- defaultValue = "",
804
- onChange,
805
- onFocus,
806
- onBlur,
807
- type = "text",
808
- error = false,
809
- disabled = false,
810
- leftIcon,
811
- rightIcon,
812
- prefix,
813
- className = "",
814
- inputClassName = "",
815
- wrapperClassName = "",
816
- name,
817
- id,
818
- required = false,
819
- autoComplete,
820
- autoFocus = false,
821
- readOnly = false,
822
- inputProps
823
- }) => {
824
- const [localValue, setLocalValue] = useState3(defaultValue);
825
- const [isFocused, setIsFocused] = useState3(false);
826
- const inputRef = useRef3(null);
827
- const actualValue = value !== void 0 ? value : localValue;
828
- const handleChange = (e) => {
829
- const newValue = e.target.value;
830
- if (value === void 0) {
831
- setLocalValue(newValue);
832
- }
833
- onChange?.(newValue);
834
- };
835
- const handleFocus = () => {
836
- setIsFocused(true);
837
- onFocus?.();
838
- };
839
- const handleBlur = () => {
840
- setIsFocused(false);
841
- onBlur?.();
842
- };
843
- const containerClasses = [cx12("container"), className].filter(Boolean).join(" ");
844
- const labelClasses = [
845
- cx12("label"),
846
- (disabled || readOnly) && cx12("label--disabled")
847
- ].filter(Boolean).join(" ");
848
- const wrapperClasses = [
849
- cx12("wrapper"),
850
- isFocused && cx12("wrapper--focus"),
851
- error && cx12("wrapper--error"),
852
- (disabled || readOnly) && cx12("wrapper--disabled"),
853
- wrapperClassName
854
- ].filter(Boolean).join(" ");
855
- const inputClasses = [
856
- cx12("input"),
857
- (disabled || readOnly) && cx12("input--disabled"),
858
- inputClassName
859
- ].filter(Boolean).join(" ");
860
- const helperClasses = [
861
- cx12("helper"),
862
- error && cx12("helper--error"),
863
- (disabled || readOnly) && cx12("helper--disabled")
864
- ].filter(Boolean).join(" ");
865
- return /* @__PURE__ */ jsxs12("div", { className: containerClasses, children: [
866
- label && /* @__PURE__ */ jsx12("label", { htmlFor: id, className: labelClasses, children: label }),
867
- /* @__PURE__ */ jsxs12(
868
- "div",
869
- {
870
- className: wrapperClasses,
871
- onClick: () => !disabled && !readOnly && inputRef.current?.focus(),
872
- children: [
873
- leftIcon && /* @__PURE__ */ jsx12("div", { className: cx12("icon"), children: leftIcon }),
874
- prefix && /* @__PURE__ */ jsx12("div", { className: cx12("prefix"), children: prefix }),
875
- /* @__PURE__ */ jsx12(
876
- "input",
877
- {
878
- ref: inputRef,
879
- type,
880
- id,
881
- name,
882
- value: actualValue,
883
- onChange: handleChange,
884
- onFocus: handleFocus,
885
- onBlur: handleBlur,
886
- placeholder,
887
- disabled,
888
- required,
889
- autoComplete,
890
- autoFocus,
891
- readOnly,
892
- className: inputClasses,
893
- ...inputProps
894
- }
895
- ),
896
- rightIcon && rightIcon
897
- ]
898
- }
899
- ),
900
- helper && /* @__PURE__ */ jsx12("div", { className: helperClasses, children: helper })
901
- ] });
902
- };
903
- Input.displayName = "Input";
904
-
905
- // src/components/icons/HeartIcon.tsx
906
- import { jsx as jsx13 } from "react/jsx-runtime";
907
- var HeartIcon = ({ filled = false, className = "", size = 24 }) => /* @__PURE__ */ jsx13(
908
- "svg",
909
- {
910
- width: size,
911
- height: size,
912
- viewBox: "0 0 24 24",
913
- className,
914
- fill: filled ? "currentColor" : "none",
915
- stroke: "currentColor",
916
- strokeWidth: 2,
917
- strokeLinecap: "round",
918
- strokeLinejoin: "round",
919
- children: /* @__PURE__ */ jsx13("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" })
920
- }
921
- );
922
- HeartIcon.displayName = "HeartIcon";
923
-
924
- // src/components/icons/StarIcon.tsx
925
- import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
926
- var StarIcon3 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ jsxs13(
927
- "svg",
928
- {
929
- xmlns: "http://www.w3.org/2000/svg",
930
- width: size,
931
- height: size,
932
- viewBox: "0 0 9 9",
933
- fill: "none",
934
- className,
935
- children: [
936
- /* @__PURE__ */ jsx14("g", { clipPath: "url(#clip0_star_icon)", children: /* @__PURE__ */ jsx14(
937
- "path",
938
- {
939
- 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",
940
- fill: filled ? "#1F2937" : "#D1D5DB"
941
- }
942
- ) }),
943
- /* @__PURE__ */ jsx14("defs", { children: /* @__PURE__ */ jsx14("clipPath", { id: "clip0_star_icon", children: /* @__PURE__ */ jsx14("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
944
- ]
945
- }
946
- );
947
- StarIcon3.displayName = "StarIcon";
948
-
949
- // src/components/icons/ChevronLeftIcon.tsx
950
- import { jsx as jsx15 } from "react/jsx-runtime";
951
- var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx15(
952
- "svg",
953
- {
954
- xmlns: "http://www.w3.org/2000/svg",
955
- width: size,
956
- height: size,
957
- viewBox: "0 0 24 24",
958
- fill: "none",
959
- stroke: "currentColor",
960
- strokeWidth: 2,
961
- strokeLinecap: "round",
962
- strokeLinejoin: "round",
963
- className,
964
- children: /* @__PURE__ */ jsx15("polyline", { points: "15 18 9 12 15 6" })
965
- }
966
- );
967
- ChevronLeftIcon.displayName = "ChevronLeftIcon";
968
-
969
- // src/components/icons/ChevronRightIcon.tsx
970
- import { jsx as jsx16 } from "react/jsx-runtime";
971
- var ChevronRightIcon2 = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx16(
972
- "svg",
973
- {
974
- xmlns: "http://www.w3.org/2000/svg",
975
- width: size,
976
- height: size,
977
- viewBox: "0 0 24 24",
978
- fill: "none",
979
- stroke: "currentColor",
980
- strokeWidth: 2,
981
- strokeLinecap: "round",
982
- strokeLinejoin: "round",
983
- className,
984
- children: /* @__PURE__ */ jsx16("polyline", { points: "9 18 15 12 9 6" })
985
- }
986
- );
987
- ChevronRightIcon2.displayName = "ChevronRightIcon";
988
-
989
- // src/components/icons/PinIcon.tsx
990
- import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
991
- var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ jsxs14(
992
- "svg",
993
- {
994
- xmlns: "http://www.w3.org/2000/svg",
995
- width: size,
996
- height: size,
997
- viewBox: "0 0 16 16",
998
- fill: "none",
999
- className,
1000
- children: [
1001
- /* @__PURE__ */ jsx17(
1002
- "path",
1003
- {
1004
- fillRule: "evenodd",
1005
- clipRule: "evenodd",
1006
- d: "M8 1.5C5.51472 1.5 3.5 3.51472 3.5 6C3.5 7.52671 4.48181 9.28285 5.83073 10.8739C6.48993 11.6504 7.18485 12.3259 7.73205 12.8316C7.8331 12.9249 7.92519 13.0096 8.00599 13.0857C8.08539 13.0108 8.17547 12.9276 8.27398 12.8362C8.81849 12.3312 9.51007 11.656 10.1655 10.8792C11.5093 9.28692 12.5 7.52773 12.5 6C12.5 3.51472 10.4853 1.5 8 1.5ZM8 14C7.57347 14.4982 7.57321 14.498 7.57291 14.4977L7.57178 14.4967L7.56899 14.4942L7.56002 14.4864C7.5525 14.4798 7.54197 14.4706 7.52861 14.4588C7.5019 14.4353 7.46403 14.4016 7.41618 14.3584C7.3205 14.272 7.18745 14.1481 7.02576 13.9917C6.70282 13.6792 6.26632 13.238 5.81302 12.7042C4.89319 11.6202 3 9.61329 3 6C3 3.23858 5.23858 1 8 1C10.7614 1 13 3.23858 13 6C13 9.61229 11.0969 11.6169 10.1732 12.6989C9.71743 13.2324 9.27901 13.6735 8.95477 13.9862C8.79239 14.1428 8.65889 14.267 8.56288 14.3537C8.51486 14.3971 8.47683 14.4309 8.45001 14.4545C8.43659 14.4664 8.42601 14.4757 8.41845 14.4823L8.40942 14.4902L8.40661 14.4927L8.40546 14.4937C8.40517 14.494 8.40492 14.4942 8 14ZM8 14L8.40492 14.4942C8.17766 14.6895 7.84451 14.6919 7.57291 14.4977L8 14Z",
1007
- fill: "currentColor"
1008
- }
1009
- ),
1010
- /* @__PURE__ */ jsx17(
1011
- "path",
1012
- {
1013
- fillRule: "evenodd",
1014
- clipRule: "evenodd",
1015
- d: "M8 4.5C7.17157 4.5 6.5 5.17157 6.5 6C6.5 6.82843 7.17157 7.5 8 7.5C8.82843 7.5 9.5 6.82843 9.5 6C9.5 5.17157 8.82843 4.5 8 4.5ZM6 6C6 4.89543 6.89543 4 8 4C9.10457 4 10 4.89543 10 6C10 7.10457 9.10457 8 8 8C6.89543 8 6 7.10457 6 6Z",
1016
- fill: "currentColor"
1017
- }
1018
- )
1019
- ]
1020
- }
1021
- );
1022
- PinIcon.displayName = "PinIcon";
1023
- export {
1024
- Badge,
1025
- Button,
1026
- Checkbox,
1027
- ChevronLeftIcon,
1028
- ChevronRightIcon2 as ChevronRightIcon,
1029
- Chip,
1030
- CompactCard,
1031
- Divider,
1032
- Dropdown,
1033
- HeartIcon,
1034
- Input,
1035
- Modal,
1036
- PinIcon,
1037
- RadioButton,
1038
- Rating,
1039
- SectionHeader,
1040
- StarIcon3 as StarIcon
1041
- };
1042
- //# sourceMappingURL=index.mjs.map