@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/README.md +410 -0
- package/dist/index.css +362 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +166 -0
- package/dist/index.d.ts +166 -0
- package/dist/index.js +343 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +309 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +46 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ButtonHTMLAttributes, ReactNode } from 'react';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
|
|
6
|
+
/**
|
|
7
|
+
* The visual style variant of the button
|
|
8
|
+
* @default 'primary'
|
|
9
|
+
*/
|
|
10
|
+
variant?: 'primary' | 'secondary' | 'link';
|
|
11
|
+
/**
|
|
12
|
+
* The size of the button
|
|
13
|
+
* @default 'medium'
|
|
14
|
+
*/
|
|
15
|
+
size?: 'small' | 'medium';
|
|
16
|
+
/**
|
|
17
|
+
* Icon to display on the left side of the button text
|
|
18
|
+
*/
|
|
19
|
+
leftIcon?: ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* Icon to display on the right side of the button text
|
|
22
|
+
*/
|
|
23
|
+
rightIcon?: ReactNode;
|
|
24
|
+
/**
|
|
25
|
+
* The content to display inside the button
|
|
26
|
+
*/
|
|
27
|
+
children?: ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Whether the button is disabled
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the button should be icon-only (no text, just icon)
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
37
|
+
iconOnly?: boolean;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
41
|
+
|
|
42
|
+
interface BadgeProps {
|
|
43
|
+
/**
|
|
44
|
+
* The color of the badge
|
|
45
|
+
* @default 'primary'
|
|
46
|
+
*/
|
|
47
|
+
color?: 'primary' | 'secondary' | 'neutral' | 'success' | 'warning';
|
|
48
|
+
/**
|
|
49
|
+
* The size of the badge
|
|
50
|
+
* @default 'large'
|
|
51
|
+
*/
|
|
52
|
+
size?: 'small' | 'large';
|
|
53
|
+
/**
|
|
54
|
+
* The style variant of the badge
|
|
55
|
+
* @default 'heavy'
|
|
56
|
+
*/
|
|
57
|
+
style?: 'heavy' | 'light';
|
|
58
|
+
/**
|
|
59
|
+
* Whether to display an icon (not implemented yet)
|
|
60
|
+
*/
|
|
61
|
+
icon?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* The content to display inside the badge
|
|
64
|
+
*/
|
|
65
|
+
children: ReactNode;
|
|
66
|
+
/**
|
|
67
|
+
* Additional CSS class names
|
|
68
|
+
*/
|
|
69
|
+
className?: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
declare const Badge: React.FC<BadgeProps>;
|
|
73
|
+
|
|
74
|
+
interface RatingProps {
|
|
75
|
+
/**
|
|
76
|
+
* Rating variant
|
|
77
|
+
* @default 'stars'
|
|
78
|
+
*/
|
|
79
|
+
variant?: 'block' | 'result' | 'stars';
|
|
80
|
+
/**
|
|
81
|
+
* Rating value (0-5)
|
|
82
|
+
*/
|
|
83
|
+
value: number;
|
|
84
|
+
/**
|
|
85
|
+
* Maximum rating value
|
|
86
|
+
* @default 5
|
|
87
|
+
*/
|
|
88
|
+
maxValue?: number;
|
|
89
|
+
/**
|
|
90
|
+
* Show numeric value
|
|
91
|
+
* @default false
|
|
92
|
+
*/
|
|
93
|
+
showValue?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Name/title text (for block variant)
|
|
96
|
+
*/
|
|
97
|
+
name?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Date text (for block variant)
|
|
100
|
+
*/
|
|
101
|
+
date?: string;
|
|
102
|
+
/**
|
|
103
|
+
* Quote text (for block variant)
|
|
104
|
+
*/
|
|
105
|
+
quote?: string;
|
|
106
|
+
/**
|
|
107
|
+
* Size of the rating
|
|
108
|
+
* @default 'medium'
|
|
109
|
+
*/
|
|
110
|
+
size?: 'small' | 'medium' | 'large';
|
|
111
|
+
/**
|
|
112
|
+
* Additional CSS class names
|
|
113
|
+
*/
|
|
114
|
+
className?: string;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare const Rating: React.FC<RatingProps>;
|
|
118
|
+
|
|
119
|
+
interface HeartIconProps {
|
|
120
|
+
filled?: boolean;
|
|
121
|
+
className?: string;
|
|
122
|
+
size?: number;
|
|
123
|
+
}
|
|
124
|
+
declare const HeartIcon: {
|
|
125
|
+
({ filled, className, size }: HeartIconProps): react_jsx_runtime.JSX.Element;
|
|
126
|
+
displayName: string;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
interface StarIconProps {
|
|
130
|
+
filled?: boolean;
|
|
131
|
+
className?: string;
|
|
132
|
+
size?: number;
|
|
133
|
+
}
|
|
134
|
+
declare const StarIcon: {
|
|
135
|
+
({ filled, className, size }: StarIconProps): react_jsx_runtime.JSX.Element;
|
|
136
|
+
displayName: string;
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
interface ChevronLeftIconProps {
|
|
140
|
+
className?: string;
|
|
141
|
+
size?: number;
|
|
142
|
+
}
|
|
143
|
+
declare const ChevronLeftIcon: {
|
|
144
|
+
({ className, size }: ChevronLeftIconProps): react_jsx_runtime.JSX.Element;
|
|
145
|
+
displayName: string;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
interface ChevronRightIconProps {
|
|
149
|
+
className?: string;
|
|
150
|
+
size?: number;
|
|
151
|
+
}
|
|
152
|
+
declare const ChevronRightIcon: {
|
|
153
|
+
({ className, size }: ChevronRightIconProps): react_jsx_runtime.JSX.Element;
|
|
154
|
+
displayName: string;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
interface PinIconProps {
|
|
158
|
+
className?: string;
|
|
159
|
+
size?: number;
|
|
160
|
+
}
|
|
161
|
+
declare const PinIcon: {
|
|
162
|
+
({ className, size }: PinIconProps): react_jsx_runtime.JSX.Element;
|
|
163
|
+
displayName: string;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
export { Badge, type BadgeProps, Button, type ButtonProps, ChevronLeftIcon, ChevronRightIcon, HeartIcon, PinIcon, Rating, type RatingProps, StarIcon };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,343 @@
|
|
|
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
|
+
ChevronLeftIcon: () => ChevronLeftIcon,
|
|
26
|
+
ChevronRightIcon: () => ChevronRightIcon,
|
|
27
|
+
HeartIcon: () => HeartIcon,
|
|
28
|
+
PinIcon: () => PinIcon,
|
|
29
|
+
Rating: () => Rating,
|
|
30
|
+
StarIcon: () => StarIcon2
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(index_exports);
|
|
33
|
+
|
|
34
|
+
// src/components/Button/Button.tsx
|
|
35
|
+
var import_react = require("react");
|
|
36
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
37
|
+
var cx = (className) => `hc-btn-${className}`;
|
|
38
|
+
var Button = (0, import_react.forwardRef)(({
|
|
39
|
+
variant = "primary",
|
|
40
|
+
size = "medium",
|
|
41
|
+
leftIcon,
|
|
42
|
+
rightIcon,
|
|
43
|
+
children,
|
|
44
|
+
className = "",
|
|
45
|
+
disabled,
|
|
46
|
+
iconOnly = false,
|
|
47
|
+
style,
|
|
48
|
+
...props
|
|
49
|
+
}, ref) => {
|
|
50
|
+
const getButtonClasses = () => {
|
|
51
|
+
const classes = [cx("button")];
|
|
52
|
+
if (variant === "link") {
|
|
53
|
+
classes.push(cx("link"));
|
|
54
|
+
classes.push(cx(size));
|
|
55
|
+
return classes.join(" ");
|
|
56
|
+
}
|
|
57
|
+
if (iconOnly) {
|
|
58
|
+
classes.push(cx("icon-only"));
|
|
59
|
+
classes.push(cx(size));
|
|
60
|
+
classes.push(cx(variant));
|
|
61
|
+
return classes.join(" ");
|
|
62
|
+
}
|
|
63
|
+
classes.push(cx("standard"));
|
|
64
|
+
classes.push(cx(size));
|
|
65
|
+
classes.push(cx(variant));
|
|
66
|
+
return classes.join(" ");
|
|
67
|
+
};
|
|
68
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
69
|
+
"button",
|
|
70
|
+
{
|
|
71
|
+
ref,
|
|
72
|
+
style,
|
|
73
|
+
className: `${getButtonClasses()} ${className}`,
|
|
74
|
+
disabled,
|
|
75
|
+
...props,
|
|
76
|
+
children: iconOnly ? children : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
77
|
+
leftIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: cx("icon-wrapper"), children: leftIcon }),
|
|
78
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: cx("text-wrapper"), children }),
|
|
79
|
+
rightIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: cx("icon-wrapper"), children: rightIcon })
|
|
80
|
+
] })
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
});
|
|
84
|
+
Button.displayName = "Button";
|
|
85
|
+
|
|
86
|
+
// src/components/Badge/Badge.tsx
|
|
87
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
88
|
+
var cx2 = (className) => `hc-badge-${className}`;
|
|
89
|
+
var Badge = ({
|
|
90
|
+
color = "primary",
|
|
91
|
+
size = "large",
|
|
92
|
+
style = "heavy",
|
|
93
|
+
icon = false,
|
|
94
|
+
children,
|
|
95
|
+
className = ""
|
|
96
|
+
}) => {
|
|
97
|
+
const colorStyleKey = `${color}${style.charAt(0).toUpperCase()}${style.slice(1)}`;
|
|
98
|
+
const badgeClasses = [
|
|
99
|
+
cx2("badge"),
|
|
100
|
+
cx2(`badge--${size}`),
|
|
101
|
+
cx2(`badge--${colorStyleKey}`),
|
|
102
|
+
className
|
|
103
|
+
].filter(Boolean).join(" ");
|
|
104
|
+
const iconClasses = [
|
|
105
|
+
cx2("icon"),
|
|
106
|
+
cx2(`icon--${size}`)
|
|
107
|
+
].join(" ");
|
|
108
|
+
const textClasses = [
|
|
109
|
+
cx2("text"),
|
|
110
|
+
size === "large" && icon ? cx2("text--largeWithIcon") : ""
|
|
111
|
+
].filter(Boolean).join(" ");
|
|
112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: badgeClasses, children: [
|
|
113
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: iconClasses }),
|
|
114
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: textClasses, children })
|
|
115
|
+
] });
|
|
116
|
+
};
|
|
117
|
+
Badge.displayName = "Badge";
|
|
118
|
+
|
|
119
|
+
// src/components/Rating/Rating.tsx
|
|
120
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
121
|
+
var cx3 = (className) => `hc-rating-${className}`;
|
|
122
|
+
var StarIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: [
|
|
123
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("g", { clipPath: "url(#clip0_full)", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("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" }) }),
|
|
124
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("clipPath", { id: "clip0_full", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("rect", { width: "24", height: "24", fill: "white" }) }) })
|
|
125
|
+
] });
|
|
126
|
+
var HalfStarIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: [
|
|
127
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("clipPath", { id: "half", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("rect", { x: "0", y: "0", width: "12", height: "24" }) }) }),
|
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
129
|
+
"path",
|
|
130
|
+
{
|
|
131
|
+
clipPath: "url(#half)",
|
|
132
|
+
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",
|
|
133
|
+
fill: "#FBB041"
|
|
134
|
+
}
|
|
135
|
+
),
|
|
136
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
137
|
+
"path",
|
|
138
|
+
{
|
|
139
|
+
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",
|
|
140
|
+
fill: "#9A5A00"
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
] });
|
|
144
|
+
var EmptyStarIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: [
|
|
145
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("g", { clipPath: "url(#clip0_empty)", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("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" }) }),
|
|
146
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("clipPath", { id: "clip0_empty", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("rect", { width: "24", height: "24", fill: "white" }) }) })
|
|
147
|
+
] });
|
|
148
|
+
var Rating = ({
|
|
149
|
+
variant = "stars",
|
|
150
|
+
value,
|
|
151
|
+
maxValue = 5,
|
|
152
|
+
showValue = false,
|
|
153
|
+
name,
|
|
154
|
+
date,
|
|
155
|
+
quote,
|
|
156
|
+
size = "medium",
|
|
157
|
+
className = ""
|
|
158
|
+
}) => {
|
|
159
|
+
const clampedValue = Math.min(Math.max(0, value), maxValue);
|
|
160
|
+
const fullStars = Math.floor(clampedValue);
|
|
161
|
+
const hasHalfStar = clampedValue % 1 >= 0.5;
|
|
162
|
+
const emptyStars = maxValue - fullStars - (hasHalfStar ? 1 : 0);
|
|
163
|
+
const renderStars = () => {
|
|
164
|
+
const starClasses = [
|
|
165
|
+
cx3("star"),
|
|
166
|
+
cx3(`star--${size}`)
|
|
167
|
+
].filter(Boolean).join(" ");
|
|
168
|
+
const stars = [];
|
|
169
|
+
for (let i = 0; i < fullStars; i++) {
|
|
170
|
+
stars.push(
|
|
171
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: starClasses, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(StarIcon, {}) }, `full-${i}`)
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
if (hasHalfStar) {
|
|
175
|
+
stars.push(
|
|
176
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: starClasses, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HalfStarIcon, {}) }, "half")
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
for (let i = 0; i < emptyStars; i++) {
|
|
180
|
+
stars.push(
|
|
181
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: starClasses, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(EmptyStarIcon, {}) }, `empty-${i}`)
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
return stars;
|
|
185
|
+
};
|
|
186
|
+
if (variant === "stars") {
|
|
187
|
+
const containerClasses2 = [cx3("starsContainer"), className].filter(Boolean).join(" ");
|
|
188
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: containerClasses2, children: [
|
|
189
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cx3("starContainer"), children: renderStars() }),
|
|
190
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cx3("valueDisplay"), children: clampedValue.toLocaleString("de-CH") })
|
|
191
|
+
] });
|
|
192
|
+
}
|
|
193
|
+
if (variant === "result") {
|
|
194
|
+
const containerClasses2 = [cx3("resultContainer"), className].filter(Boolean).join(" ");
|
|
195
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: containerClasses2, children: [
|
|
196
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cx3("resultChar"), children: "N" }),
|
|
197
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { children: renderStars() })
|
|
198
|
+
] });
|
|
199
|
+
}
|
|
200
|
+
const containerClasses = [cx3("blockContainer"), className].filter(Boolean).join(" ");
|
|
201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: containerClasses, children: [
|
|
202
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: cx3("blockHeader"), children: [
|
|
203
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: cx3("blockHeaderLeft"), children: [
|
|
204
|
+
name && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cx3("blockName"), children: name }),
|
|
205
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { children: renderStars() })
|
|
206
|
+
] }),
|
|
207
|
+
date && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cx3("blockDate"), children: date })
|
|
208
|
+
] }),
|
|
209
|
+
quote && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: cx3("blockQuote"), children: quote })
|
|
210
|
+
] });
|
|
211
|
+
};
|
|
212
|
+
Rating.displayName = "Rating";
|
|
213
|
+
|
|
214
|
+
// src/components/icons/HeartIcon.tsx
|
|
215
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
216
|
+
var HeartIcon = ({ filled = false, className = "", size = 24 }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
217
|
+
"svg",
|
|
218
|
+
{
|
|
219
|
+
width: size,
|
|
220
|
+
height: size,
|
|
221
|
+
viewBox: "0 0 24 24",
|
|
222
|
+
className,
|
|
223
|
+
fill: filled ? "currentColor" : "none",
|
|
224
|
+
stroke: "currentColor",
|
|
225
|
+
strokeWidth: 2,
|
|
226
|
+
strokeLinecap: "round",
|
|
227
|
+
strokeLinejoin: "round",
|
|
228
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("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" })
|
|
229
|
+
}
|
|
230
|
+
);
|
|
231
|
+
HeartIcon.displayName = "HeartIcon";
|
|
232
|
+
|
|
233
|
+
// src/components/icons/StarIcon.tsx
|
|
234
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
235
|
+
var StarIcon2 = ({ filled = true, className = "", size = 9 }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
236
|
+
"svg",
|
|
237
|
+
{
|
|
238
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
239
|
+
width: size,
|
|
240
|
+
height: size,
|
|
241
|
+
viewBox: "0 0 9 9",
|
|
242
|
+
fill: "none",
|
|
243
|
+
className,
|
|
244
|
+
children: [
|
|
245
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { clipPath: "url(#clip0_star_icon)", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
246
|
+
"path",
|
|
247
|
+
{
|
|
248
|
+
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",
|
|
249
|
+
fill: filled ? "#1F2937" : "#D1D5DB"
|
|
250
|
+
}
|
|
251
|
+
) }),
|
|
252
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("clipPath", { id: "clip0_star_icon", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { width: "8", height: "8", fill: "white", transform: "translate(0.800049 0.199951)" }) }) })
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
);
|
|
256
|
+
StarIcon2.displayName = "StarIcon";
|
|
257
|
+
|
|
258
|
+
// src/components/icons/ChevronLeftIcon.tsx
|
|
259
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
260
|
+
var ChevronLeftIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
261
|
+
"svg",
|
|
262
|
+
{
|
|
263
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
264
|
+
width: size,
|
|
265
|
+
height: size,
|
|
266
|
+
viewBox: "0 0 24 24",
|
|
267
|
+
fill: "none",
|
|
268
|
+
stroke: "currentColor",
|
|
269
|
+
strokeWidth: 2,
|
|
270
|
+
strokeLinecap: "round",
|
|
271
|
+
strokeLinejoin: "round",
|
|
272
|
+
className,
|
|
273
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "15 18 9 12 15 6" })
|
|
274
|
+
}
|
|
275
|
+
);
|
|
276
|
+
ChevronLeftIcon.displayName = "ChevronLeftIcon";
|
|
277
|
+
|
|
278
|
+
// src/components/icons/ChevronRightIcon.tsx
|
|
279
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
280
|
+
var ChevronRightIcon = ({ className = "", size = 20 }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
281
|
+
"svg",
|
|
282
|
+
{
|
|
283
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
284
|
+
width: size,
|
|
285
|
+
height: size,
|
|
286
|
+
viewBox: "0 0 24 24",
|
|
287
|
+
fill: "none",
|
|
288
|
+
stroke: "currentColor",
|
|
289
|
+
strokeWidth: 2,
|
|
290
|
+
strokeLinecap: "round",
|
|
291
|
+
strokeLinejoin: "round",
|
|
292
|
+
className,
|
|
293
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "9 18 15 12 9 6" })
|
|
294
|
+
}
|
|
295
|
+
);
|
|
296
|
+
ChevronRightIcon.displayName = "ChevronRightIcon";
|
|
297
|
+
|
|
298
|
+
// src/components/icons/PinIcon.tsx
|
|
299
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
300
|
+
var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
301
|
+
"svg",
|
|
302
|
+
{
|
|
303
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
304
|
+
width: size,
|
|
305
|
+
height: size,
|
|
306
|
+
viewBox: "0 0 16 16",
|
|
307
|
+
fill: "none",
|
|
308
|
+
className,
|
|
309
|
+
children: [
|
|
310
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
311
|
+
"path",
|
|
312
|
+
{
|
|
313
|
+
fillRule: "evenodd",
|
|
314
|
+
clipRule: "evenodd",
|
|
315
|
+
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",
|
|
316
|
+
fill: "currentColor"
|
|
317
|
+
}
|
|
318
|
+
),
|
|
319
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
320
|
+
"path",
|
|
321
|
+
{
|
|
322
|
+
fillRule: "evenodd",
|
|
323
|
+
clipRule: "evenodd",
|
|
324
|
+
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",
|
|
325
|
+
fill: "currentColor"
|
|
326
|
+
}
|
|
327
|
+
)
|
|
328
|
+
]
|
|
329
|
+
}
|
|
330
|
+
);
|
|
331
|
+
PinIcon.displayName = "PinIcon";
|
|
332
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
333
|
+
0 && (module.exports = {
|
|
334
|
+
Badge,
|
|
335
|
+
Button,
|
|
336
|
+
ChevronLeftIcon,
|
|
337
|
+
ChevronRightIcon,
|
|
338
|
+
HeartIcon,
|
|
339
|
+
PinIcon,
|
|
340
|
+
Rating,
|
|
341
|
+
StarIcon
|
|
342
|
+
});
|
|
343
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../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":["// @hotelcard/ui - Shared UI Components\n// Version: 0.0.2\n\n// =================================================================\n// COMPONENTS\n// =================================================================\n\n// Button\nexport { Button } from './components/Button';\nexport type { ButtonProps } from './components/Button';\n\n// Badge\nexport { Badge } from './components/Badge';\nexport type { BadgeProps } from './components/Badge';\n\n// Rating\nexport { Rating } from './components/Rating';\nexport type { RatingProps } from './components/Rating';\n\n// =================================================================\n// ICONS\n// =================================================================\n\nexport { HeartIcon, StarIcon, ChevronLeftIcon, ChevronRightIcon, PinIcon } from './components/icons';\n","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":["StarIcon","import_jsx_runtime","cx","import_jsx_runtime","cx","containerClasses","import_jsx_runtime","import_jsx_runtime","StarIcon","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}
|