@hotelcard/ui 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs ADDED
@@ -0,0 +1,309 @@
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/icons/HeartIcon.tsx
182
+ import { jsx as jsx4 } from "react/jsx-runtime";
183
+ var HeartIcon = ({ filled = false, className = "", size = 24 }) => /* @__PURE__ */ jsx4(
184
+ "svg",
185
+ {
186
+ width: size,
187
+ height: size,
188
+ viewBox: "0 0 24 24",
189
+ className,
190
+ fill: filled ? "currentColor" : "none",
191
+ stroke: "currentColor",
192
+ strokeWidth: 2,
193
+ strokeLinecap: "round",
194
+ strokeLinejoin: "round",
195
+ children: /* @__PURE__ */ jsx4("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" })
196
+ }
197
+ );
198
+ HeartIcon.displayName = "HeartIcon";
199
+
200
+ // src/components/icons/StarIcon.tsx
201
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
202
+ var StarIcon2 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ jsxs4(
203
+ "svg",
204
+ {
205
+ xmlns: "http://www.w3.org/2000/svg",
206
+ width: size,
207
+ height: size,
208
+ viewBox: "0 0 9 9",
209
+ fill: "none",
210
+ className,
211
+ children: [
212
+ /* @__PURE__ */ jsx5("g", { clipPath: "url(#clip0_star_icon)", children: /* @__PURE__ */ jsx5(
213
+ "path",
214
+ {
215
+ 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",
216
+ fill: filled ? "#1F2937" : "#D1D5DB"
217
+ }
218
+ ) }),
219
+ /* @__PURE__ */ jsx5("defs", { children: /* @__PURE__ */ jsx5("clipPath", { id: "clip0_star_icon", children: /* @__PURE__ */ jsx5("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
220
+ ]
221
+ }
222
+ );
223
+ StarIcon2.displayName = "StarIcon";
224
+
225
+ // src/components/icons/ChevronLeftIcon.tsx
226
+ import { jsx as jsx6 } from "react/jsx-runtime";
227
+ var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx6(
228
+ "svg",
229
+ {
230
+ xmlns: "http://www.w3.org/2000/svg",
231
+ width: size,
232
+ height: size,
233
+ viewBox: "0 0 24 24",
234
+ fill: "none",
235
+ stroke: "currentColor",
236
+ strokeWidth: 2,
237
+ strokeLinecap: "round",
238
+ strokeLinejoin: "round",
239
+ className,
240
+ children: /* @__PURE__ */ jsx6("polyline", { points: "15 18 9 12 15 6" })
241
+ }
242
+ );
243
+ ChevronLeftIcon.displayName = "ChevronLeftIcon";
244
+
245
+ // src/components/icons/ChevronRightIcon.tsx
246
+ import { jsx as jsx7 } from "react/jsx-runtime";
247
+ var ChevronRightIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ jsx7(
248
+ "svg",
249
+ {
250
+ xmlns: "http://www.w3.org/2000/svg",
251
+ width: size,
252
+ height: size,
253
+ viewBox: "0 0 24 24",
254
+ fill: "none",
255
+ stroke: "currentColor",
256
+ strokeWidth: 2,
257
+ strokeLinecap: "round",
258
+ strokeLinejoin: "round",
259
+ className,
260
+ children: /* @__PURE__ */ jsx7("polyline", { points: "9 18 15 12 9 6" })
261
+ }
262
+ );
263
+ ChevronRightIcon.displayName = "ChevronRightIcon";
264
+
265
+ // src/components/icons/PinIcon.tsx
266
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
267
+ var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ jsxs5(
268
+ "svg",
269
+ {
270
+ xmlns: "http://www.w3.org/2000/svg",
271
+ width: size,
272
+ height: size,
273
+ viewBox: "0 0 16 16",
274
+ fill: "none",
275
+ className,
276
+ children: [
277
+ /* @__PURE__ */ jsx8(
278
+ "path",
279
+ {
280
+ fillRule: "evenodd",
281
+ clipRule: "evenodd",
282
+ 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",
283
+ fill: "currentColor"
284
+ }
285
+ ),
286
+ /* @__PURE__ */ jsx8(
287
+ "path",
288
+ {
289
+ fillRule: "evenodd",
290
+ clipRule: "evenodd",
291
+ 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",
292
+ fill: "currentColor"
293
+ }
294
+ )
295
+ ]
296
+ }
297
+ );
298
+ PinIcon.displayName = "PinIcon";
299
+ export {
300
+ Badge,
301
+ Button,
302
+ ChevronLeftIcon,
303
+ ChevronRightIcon,
304
+ HeartIcon,
305
+ PinIcon,
306
+ Rating,
307
+ StarIcon2 as StarIcon
308
+ };
309
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Button/Button.tsx","../src/components/Badge/Badge.tsx","../src/components/Rating/Rating.tsx","../src/components/icons/HeartIcon.tsx","../src/components/icons/StarIcon.tsx","../src/components/icons/ChevronLeftIcon.tsx","../src/components/icons/ChevronRightIcon.tsx","../src/components/icons/PinIcon.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { ButtonProps } from \"./Button.types\";\nimport './Button.css';\n\n// CSS class prefix to avoid conflicts\nconst cx = (className: string) => `hc-btn-${className}`;\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(({\n variant = 'primary',\n size = 'medium',\n leftIcon,\n rightIcon,\n children,\n className = '',\n disabled,\n iconOnly = false,\n style,\n ...props\n}, ref) => {\n\n // Build className based on variant, size, and state\n const getButtonClasses = () => {\n const classes: string[] = [cx('button')];\n\n // Link variant\n if (variant === 'link') {\n classes.push(cx('link'));\n classes.push(cx(size));\n return classes.join(' ');\n }\n\n // Icon-only variant\n if (iconOnly) {\n classes.push(cx('icon-only'));\n classes.push(cx(size));\n classes.push(cx(variant));\n return classes.join(' ');\n }\n\n // Standard button\n classes.push(cx('standard'));\n classes.push(cx(size));\n classes.push(cx(variant));\n\n return classes.join(' ');\n };\n\n return (\n <button\n ref={ref}\n style={style}\n className={`${getButtonClasses()} ${className}`}\n disabled={disabled}\n {...props}\n >\n {iconOnly ? (\n children\n ) : (\n <>\n {leftIcon && (\n <span className={cx('icon-wrapper')}>\n {leftIcon}\n </span>\n )}\n <span className={cx('text-wrapper')}>{children}</span>\n {rightIcon && (\n <span className={cx('icon-wrapper')}>\n {rightIcon}\n </span>\n )}\n </>\n )}\n </button>\n );\n});\n\nButton.displayName = 'Button';\n\nexport { Button };\n","import { BadgeProps } from './Badge.types';\nimport './Badge.css';\n\n// CSS class prefix to avoid conflicts\nconst cx = (className: string) => `hc-badge-${className}`;\n\nconst Badge: React.FC<BadgeProps> = ({\n color = 'primary',\n size = 'large',\n style = 'heavy',\n icon = false,\n children,\n className = ''\n}) => {\n // Build color-style variant class name\n const colorStyleKey = `${color}${style.charAt(0).toUpperCase()}${style.slice(1)}`;\n\n // Build badge classes\n const badgeClasses = [\n cx('badge'),\n cx(`badge--${size}`),\n cx(`badge--${colorStyleKey}`),\n className\n ].filter(Boolean).join(' ');\n\n // Build icon classes\n const iconClasses = [\n cx('icon'),\n cx(`icon--${size}`)\n ].join(' ');\n\n // Build text classes\n const textClasses = [\n cx('text'),\n size === 'large' && icon ? cx('text--largeWithIcon') : ''\n ].filter(Boolean).join(' ');\n\n return (\n <div className={badgeClasses}>\n {icon && (\n <div className={iconClasses}>\n {/* Icon implementation would go here */}\n </div>\n )}\n\n <div className={textClasses}>\n {children}\n </div>\n </div>\n );\n};\n\nBadge.displayName = 'Badge';\n\nexport { Badge };\n","import { RatingProps } from './Rating.types';\nimport './Rating.css';\n\n// CSS class prefix to avoid conflicts\nconst cx = (className: string) => `hc-rating-${className}`;\n\n// Full star icon (filled)\nconst StarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <g clipPath=\"url(#clip0_full)\">\n <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\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_full\">\n <rect width=\"24\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n);\n\n// Half star icon\nconst HalfStarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <defs>\n <clipPath id=\"half\">\n <rect x=\"0\" y=\"0\" width=\"12\" height=\"24\" />\n </clipPath>\n </defs>\n <path\n clipPath=\"url(#half)\"\n 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\"\n fill=\"#FBB041\"\n />\n <path\n 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\"\n fill=\"#9A5A00\"\n />\n </svg>\n);\n\n// Empty star icon (outline only)\nconst EmptyStarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <g clipPath=\"url(#clip0_empty)\">\n <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\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_empty\">\n <rect width=\"24\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n);\n\nconst Rating: React.FC<RatingProps> = ({\n variant = 'stars',\n value,\n maxValue = 5,\n showValue = false,\n name,\n date,\n quote,\n size = 'medium',\n className = ''\n}) => {\n // Ensure value is between 0 and maxValue\n const clampedValue = Math.min(Math.max(0, value), maxValue);\n\n // Calculate full, half, and empty stars\n const fullStars = Math.floor(clampedValue);\n const hasHalfStar = clampedValue % 1 >= 0.5;\n const emptyStars = maxValue - fullStars - (hasHalfStar ? 1 : 0);\n\n const renderStars = () => {\n const starClasses = [\n cx('star'),\n cx(`star--${size}`)\n ].filter(Boolean).join(' ');\n\n const stars = [];\n\n // Full stars\n for (let i = 0; i < fullStars; i++) {\n stars.push(\n <span key={`full-${i}`} className={starClasses}>\n <StarIcon />\n </span>\n );\n }\n\n // Half star\n if (hasHalfStar) {\n stars.push(\n <span key=\"half\" className={starClasses}>\n <HalfStarIcon />\n </span>\n );\n }\n\n // Empty stars\n for (let i = 0; i < emptyStars; i++) {\n stars.push(\n <span key={`empty-${i}`} className={starClasses}>\n <EmptyStarIcon />\n </span>\n );\n }\n\n return stars;\n };\n\n // Stars only variant\n if (variant === 'stars') {\n const containerClasses = [cx('starsContainer'), className].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n <div className={cx('starContainer')}>\n {renderStars()}\n </div>\n {showValue && (\n <span className={cx('valueDisplay')}>\n {clampedValue.toLocaleString('de-CH')}\n </span>\n )}\n </div>\n );\n }\n\n // Result variant - single character display\n if (variant === 'result') {\n const containerClasses = [cx('resultContainer'), className].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n <span className={cx('resultChar')}>N</span>\n <div>\n {renderStars()}\n </div>\n </div>\n );\n }\n\n // Block variant - full review block\n const containerClasses = [cx('blockContainer'), className].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n <div className={cx('blockHeader')}>\n <div className={cx('blockHeaderLeft')}>\n {name && <span className={cx('blockName')}>{name}</span>}\n <div>\n {renderStars()}\n </div>\n </div>\n {date && <span className={cx('blockDate')}>{date}</span>}\n </div>\n {quote && <p className={cx('blockQuote')}>{quote}</p>}\n </div>\n );\n};\n\nRating.displayName = 'Rating';\n\nexport { Rating };\n","interface HeartIconProps {\n filled?: boolean;\n className?: string;\n size?: number;\n}\n\nexport const HeartIcon = ({ filled = false, className = '', size = 24 }: HeartIconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n className={className}\n fill={filled ? 'currentColor' : 'none'}\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <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\" />\n </svg>\n);\n\nHeartIcon.displayName = 'HeartIcon';\n","interface StarIconProps {\n filled?: boolean;\n className?: string;\n size?: number;\n}\n\n// Small filled star for hotel category display\nexport const StarIcon = ({ filled = true, className = '', size = 9 }: StarIconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n className={className}\n >\n <g clipPath=\"url(#clip0_star_icon)\">\n <path\n 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\"\n fill={filled ? '#1F2937' : '#D1D5DB'}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_star_icon\">\n <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(0.800049 0.199951)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nStarIcon.displayName = 'StarIcon';\n","interface ChevronLeftIconProps {\n className?: string;\n size?: number;\n}\n\nexport const ChevronLeftIcon = ({ className = '', size = 20 }: ChevronLeftIconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n);\n\nChevronLeftIcon.displayName = 'ChevronLeftIcon';\n","interface ChevronRightIconProps {\n className?: string;\n size?: number;\n}\n\nexport const ChevronRightIcon = ({ className = '', size = 20 }: ChevronRightIconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\nChevronRightIcon.displayName = 'ChevronRightIcon';\n","interface PinIconProps {\n className?: string;\n size?: number;\n}\n\nexport const PinIcon = ({ className = '', size = 16 }: PinIconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n 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\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n 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\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nPinIcon.displayName = 'PinIcon';\n"],"mappings":"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","names":["jsx","jsxs","cx","jsx","jsxs","cx","containerClasses","jsx","jsx","jsxs","StarIcon","jsx","jsx","jsx","jsxs"]}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@hotelcard/ui",
3
+ "version": "0.0.2",
4
+ "description": "HotelCard shared UI components",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "sideEffects": [
12
+ "**/*.css"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsup src/index.ts --format cjs,esm --dts --external react",
16
+ "dev": "tsup src/index.ts --format cjs,esm --dts --external react --watch",
17
+ "clean": "rm -rf dist",
18
+ "prepublishOnly": "pnpm build"
19
+ },
20
+ "peerDependencies": {
21
+ "react": "^18.0.0",
22
+ "react-dom": "^18.0.0"
23
+ },
24
+ "devDependencies": {
25
+ "@types/react": "^18.0.0",
26
+ "esbuild-css-modules-plugin": "^3.1.5",
27
+ "react": "^18.0.0",
28
+ "react-dom": "^18.0.0",
29
+ "tsup": "^8.0.0",
30
+ "typescript": "^5.3.0"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/hotelcard/hotelcard-monorepo"
38
+ },
39
+ "license": "MIT",
40
+ "keywords": [
41
+ "hotelcard",
42
+ "ui",
43
+ "react",
44
+ "components"
45
+ ]
46
+ }