@hotelcard/ui 0.0.6 → 0.0.8

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.cjs CHANGED
@@ -42,7 +42,12 @@ __export(index_exports, {
42
42
  Rating: () => Rating,
43
43
  ReviewCard: () => ReviewCard,
44
44
  SectionHeader: () => SectionHeader,
45
- StarIcon: () => StarIcon4
45
+ StarIcon: () => StarIcon4,
46
+ calculateDiscount: () => calculateDiscount,
47
+ formatDate: () => formatDate,
48
+ formatDateRange: () => formatDateRange,
49
+ formatPrice: () => formatPrice,
50
+ useDebounce: () => useDebounce
46
51
  });
47
52
  module.exports = __toCommonJS(index_exports);
48
53
 
@@ -1482,6 +1487,47 @@ var PinIcon = ({ className = "", size = 16 }) => /* @__PURE__ */ (0, import_jsx_
1482
1487
  }
1483
1488
  );
1484
1489
  PinIcon.displayName = "PinIcon";
1490
+
1491
+ // src/hooks/useDebounce.ts
1492
+ var import_react8 = require("react");
1493
+ var useDebounce = (value, delay) => {
1494
+ const [debouncedValue, setDebouncedValue] = (0, import_react8.useState)(value);
1495
+ (0, import_react8.useEffect)(() => {
1496
+ const timer = setTimeout(() => setDebouncedValue(value), delay);
1497
+ return () => clearTimeout(timer);
1498
+ }, [value, delay]);
1499
+ return debouncedValue;
1500
+ };
1501
+
1502
+ // src/utils/formatPrice.ts
1503
+ var formatPrice = (amount, currency = "CHF", locale = "de-CH") => {
1504
+ return new Intl.NumberFormat(locale, {
1505
+ style: "currency",
1506
+ currency,
1507
+ minimumFractionDigits: 0,
1508
+ maximumFractionDigits: 0
1509
+ }).format(amount);
1510
+ };
1511
+
1512
+ // src/utils/formatDate.ts
1513
+ var import_date_fns = require("date-fns");
1514
+ var import_locale = require("date-fns/locale");
1515
+ var locales = { de: import_locale.de, en: import_locale.enUS, fr: import_locale.fr, it: import_locale.it };
1516
+ var formatDate = (date, formatStr = "dd. MMM yyyy", locale = "de") => {
1517
+ const d = typeof date === "string" ? (0, import_date_fns.parseISO)(date) : date;
1518
+ return (0, import_date_fns.format)(d, formatStr, { locale: locales[locale] || import_locale.de });
1519
+ };
1520
+ var formatDateRange = (checkIn, checkOut, locale = "de") => {
1521
+ const start = formatDate(checkIn, "dd.", locale);
1522
+ const end = formatDate(checkOut, "dd. MMM yyyy", locale);
1523
+ return `${start} - ${end}`;
1524
+ };
1525
+
1526
+ // src/utils/calculateDiscount.ts
1527
+ var calculateDiscount = (originalPrice, discountedPrice) => {
1528
+ if (originalPrice <= 0) return 0;
1529
+ return Math.round((originalPrice - discountedPrice) / originalPrice * 100);
1530
+ };
1485
1531
  // Annotate the CommonJS export names for ESM import in node:
1486
1532
  0 && (module.exports = {
1487
1533
  Badge,
@@ -1506,6 +1552,11 @@ PinIcon.displayName = "PinIcon";
1506
1552
  Rating,
1507
1553
  ReviewCard,
1508
1554
  SectionHeader,
1509
- StarIcon
1555
+ StarIcon,
1556
+ calculateDiscount,
1557
+ formatDate,
1558
+ formatDateRange,
1559
+ formatPrice,
1560
+ useDebounce
1510
1561
  });
1511
1562
  //# sourceMappingURL=index.cjs.map
@@ -1 +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/Divider/Divider.tsx","../src/components/Chip/Chip.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/RadioButton/RadioButton.tsx","../src/components/SectionHeader/SectionHeader.tsx","../src/components/Modal/Modal.tsx","../src/components/Card/Card.tsx","../src/components/CompactCard/CompactCard.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Input/Input.tsx","../src/components/Block/Block.tsx","../src/components/ReviewCard/ReviewCard.tsx","../src/components/FAQ/FAQ.tsx","../src/components/Benefits/Benefits.tsx","../src/components/Pin/Pin.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.6\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// Divider\nexport { Divider } from './components/Divider';\nexport type { DividerProps } from './components/Divider';\n\n// Chip\nexport { Chip } from './components/Chip';\nexport type { ChipProps, ChipSize, ChipState } from './components/Chip';\n\n// Checkbox\nexport { Checkbox } from './components/Checkbox';\nexport type { CheckboxProps, CheckboxSize } from './components/Checkbox';\n\n// RadioButton\nexport { RadioButton } from './components/RadioButton';\nexport type { RadioButtonProps } from './components/RadioButton';\n\n// SectionHeader\nexport { SectionHeader } from './components/SectionHeader';\nexport type { SectionHeaderProps } from './components/SectionHeader';\n\n// Modal\nexport { Modal } from './components/Modal';\nexport type { ModalProps } from './components/Modal';\n\n// Card\nexport { Card } from './components/Card';\nexport type { CardProps, CardBadge, CardRatingInfo } from './components/Card';\n\n// CompactCard\nexport { CompactCard } from './components/CompactCard';\nexport type { CompactCardProps, CompactCardBadge } from './components/CompactCard';\n\n// Dropdown\nexport { Dropdown } from './components/Dropdown';\nexport type { DropdownProps, DropdownOption } from './components/Dropdown';\n\n// Input\nexport { Input } from './components/Input';\nexport type { InputProps, InputType } from './components/Input';\n\n// Block\nexport { Block } from './components/Block';\nexport type { BlockProps } from './components/Block';\n\n// ReviewCard\nexport { ReviewCard } from './components/ReviewCard';\nexport type { ReviewCardProps } from './components/ReviewCard';\n\n// FAQ\nexport { FAQ } from './components/FAQ';\nexport type { FAQProps, FAQItem } from './components/FAQ';\n\n// Benefits\nexport { Benefits } from './components/Benefits';\nexport type { BenefitsProps, BenefitItem } from './components/Benefits';\n\n// Pin\nexport { Pin } from './components/Pin';\nexport type { PinProps } from './components/Pin';\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","import { DividerProps } from './Divider.types';\nimport './Divider.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-divider-${className}`;\n\nconst Divider: React.FC<DividerProps> = ({\n label,\n orientation = 'horizontal',\n className = ''\n}) => {\n const isHorizontal = orientation === 'horizontal';\n\n if (!label) {\n // Clean variant - just the line\n const lineClass = isHorizontal\n ? cx('lineStandalone--horizontal')\n : cx('lineStandalone--vertical');\n\n return (\n <div\n className={[lineClass, className].filter(Boolean).join(' ')}\n role=\"separator\"\n aria-orientation={orientation}\n />\n );\n }\n\n // Label variant - line with text in the middle\n const containerClass = isHorizontal\n ? cx('container--horizontal')\n : cx('container--vertical');\n\n const lineClass = isHorizontal\n ? cx('line--horizontal')\n : cx('line--vertical');\n\n const containerClasses = [\n cx('container'),\n containerClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div\n className={containerClasses}\n role=\"separator\"\n aria-orientation={orientation}\n aria-label={typeof label === 'string' ? label : undefined}\n >\n <div className={lineClass} />\n <span className={cx('label')}>{label}</span>\n <div className={lineClass} />\n </div>\n );\n};\n\nDivider.displayName = 'Divider';\n\nexport { Divider };\n","import { ChipProps } from './Chip.types';\nimport './Chip.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-chip-${className}`;\n\n// Close icon SVG\nconst CloseIcon = () => (\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_chip_close)\">\n <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\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_chip_close\">\n <rect width=\"24\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n);\n\nconst Chip: React.FC<ChipProps> = ({\n label,\n count,\n size = 'small',\n state = 'idle',\n removable = true,\n onClick,\n onRemove,\n className = '',\n disabled = false,\n}) => {\n // Determine effective state\n const effectiveState = disabled ? 'disabled' : state;\n\n // Build chip classes\n const chipClasses = [\n cx('chip'),\n cx(`chip--${size}`),\n cx(`chip--${effectiveState}`),\n className,\n ].filter(Boolean).join(' ');\n\n // Build label classes\n const labelClasses = [cx('label'), cx(`label--${size}`)].join(' ');\n\n // Build count badge classes\n const countBadgeClasses = [cx('countBadge'), cx(`countBadge--${size}`)].join(' ');\n\n const handleClick = () => {\n if (disabled) return;\n\n if (removable && onRemove) {\n onRemove();\n } else if (onClick) {\n onClick();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (removable && onRemove) {\n onRemove();\n } else if (onClick) {\n onClick();\n }\n }\n };\n\n return (\n <button\n type=\"button\"\n className={chipClasses}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-label={removable ? `Remove filter: ${label}` : label}\n >\n <span className={labelClasses}>{label}</span>\n\n {count !== undefined && <span className={countBadgeClasses}>{count}</span>}\n\n {removable && (\n <span className={cx('closeIcon')} aria-hidden=\"true\">\n <CloseIcon />\n </span>\n )}\n </button>\n );\n};\n\nChip.displayName = 'Chip';\n\nexport { Chip };\n","import { useState } from 'react';\nimport { CheckboxProps } from './Checkbox.types';\nimport './Checkbox.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-checkbox-${className}`;\n\nconst Checkbox: React.FC<CheckboxProps> = ({\n label,\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n error = false,\n name,\n id,\n className = '',\n size = 'medium',\n}) => {\n const [localChecked, setLocalChecked] = useState(defaultChecked);\n const [isFocused, setIsFocused] = useState(false);\n\n const actualChecked = checked !== undefined ? checked : localChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newChecked = e.target.checked;\n if (checked === undefined) {\n setLocalChecked(newChecked);\n }\n onChange?.(newChecked);\n };\n\n // Build container classes\n const containerClasses = [\n cx('container'),\n disabled && cx('container--disabled'),\n className,\n ].filter(Boolean).join(' ');\n\n // Build checkbox wrapper classes\n const wrapperClasses = [\n cx('wrapper'),\n cx(`wrapper--${size}`),\n ].filter(Boolean).join(' ');\n\n // Build checkbox box classes\n const boxClasses = [\n cx('box'),\n cx(`box--${size}`),\n actualChecked && cx('box--checked'),\n disabled && cx('box--disabled'),\n error && !actualChecked && cx('box--error'),\n isFocused && cx('box--focused'),\n ].filter(Boolean).join(' ');\n\n // Build input classes\n const inputClasses = [\n cx('input'),\n disabled && cx('input--disabled'),\n ].filter(Boolean).join(' ');\n\n // Build checkmark classes\n const checkmarkClasses = [\n cx('checkmark'),\n cx(`checkmark--${size}`),\n actualChecked && cx('checkmark--checked'),\n ].filter(Boolean).join(' ');\n\n // Build label classes\n const labelClasses = [\n cx('label'),\n disabled && cx('label--disabled'),\n error && !disabled && cx('label--error'),\n ].filter(Boolean).join(' ');\n\n return (\n <label className={containerClasses}>\n <div className={wrapperClasses}>\n <div className={boxClasses} />\n <input\n type=\"checkbox\"\n id={id}\n name={name}\n checked={actualChecked}\n onChange={handleChange}\n disabled={disabled}\n className={inputClasses}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n aria-invalid={error}\n />\n <svg\n className={checkmarkClasses}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.5 6L5 8.5L9.5 3.5\"\n stroke=\"var(--content-action-highlight-inverse-idle, #ffffff)\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n {label && <span className={labelClasses}>{label}</span>}\n </label>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox };\n","import React from 'react';\nimport { RadioButtonProps } from './RadioButton.types';\nimport './RadioButton.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-radio-${className}`;\n\nconst RadioButton: React.FC<RadioButtonProps> = ({\n id,\n checked,\n onChange,\n name,\n value,\n disabled = false,\n className = '',\n label,\n autoComplete,\n}) => {\n const handleClick = () => {\n if (!disabled && !checked) {\n onChange(true);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n if (!checked) {\n onChange(true);\n }\n }\n };\n\n // Build container classes\n const containerClasses = [\n cx('container'),\n disabled && cx('container--disabled'),\n className,\n ].filter(Boolean).join(' ');\n\n // Build outer circle classes\n const outerCircleClasses = [\n cx('outerCircle'),\n checked && cx('outerCircle--checked'),\n disabled && cx('outerCircle--disabled'),\n ].filter(Boolean).join(' ');\n\n // Build inner dot classes\n const innerDotClasses = [\n cx('innerDot'),\n checked && cx('innerDot--checked'),\n ].filter(Boolean).join(' ');\n\n return (\n <div\n role=\"radio\"\n aria-checked={checked}\n tabIndex={disabled ? -1 : 0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={containerClasses}\n aria-disabled={disabled}\n >\n {/* Radio button visual wrapper */}\n <div className={cx('wrapper')}>\n {/* Hidden input for form submission */}\n <input\n id={id}\n type=\"radio\"\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n autoComplete={autoComplete}\n onChange={() => {}} // Controlled by parent onClick\n className={cx('hiddenInput')}\n />\n\n {/* Outer circle */}\n <div className={outerCircleClasses} />\n\n {/* Inner dot - only visible when checked */}\n <div className={innerDotClasses} />\n </div>\n\n {label && (\n <label htmlFor={id} className={cx('label')}>\n {label}\n </label>\n )}\n </div>\n );\n};\n\nRadioButton.displayName = 'RadioButton';\n\nexport { RadioButton };\n","import { SectionHeaderProps } from './SectionHeader.types';\nimport './SectionHeader.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-section-${className}`;\n\n// Chevron right icon\nconst ChevronRightIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\nconst SectionHeader: React.FC<SectionHeaderProps> = ({\n title,\n showAllLabel,\n onShowAllClick,\n className = '',\n}) => {\n const headerClasses = [cx('header'), className].filter(Boolean).join(' ');\n\n return (\n <div className={headerClasses}>\n <h2 className={cx('title')}>{title}</h2>\n {showAllLabel && onShowAllClick && (\n <button className={cx('showAllButton')} onClick={onShowAllClick}>\n <span>{showAllLabel}</span>\n <ChevronRightIcon />\n </button>\n )}\n </div>\n );\n};\n\nSectionHeader.displayName = 'SectionHeader';\n\nexport { SectionHeader };\n","import React, { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ModalProps } from './Modal.types';\nimport './Modal.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-modal-${className}`;\n\n// Close icon SVG\nconst CloseIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n 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\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n width = 'var(--grid-tablet-device-width, 600px)',\n className = '',\n showCloseButton = true,\n disableBackdropClick = false,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n // Handle escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n document.body.style.overflow = 'hidden';\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.body.style.overflow = '';\n };\n }, [isOpen, onClose]);\n\n // Handle click outside\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !disableBackdropClick) {\n onClose();\n }\n };\n\n if (!isOpen) return null;\n\n const modalClasses = [cx('content'), className].filter(Boolean).join(' ');\n\n const modalContent = (\n <div className={cx('backdrop')} onClick={handleBackdropClick}>\n <div\n ref={modalRef}\n className={modalClasses}\n style={{ maxWidth: width }}\n >\n {showCloseButton && (\n <button\n className={cx('closeButton')}\n onClick={onClose}\n aria-label=\"Close modal\"\n >\n <CloseIcon />\n </button>\n )}\n {children}\n </div>\n </div>\n );\n\n // Check if we're in a browser environment\n if (typeof document !== 'undefined') {\n return createPortal(modalContent, document.body);\n }\n\n return modalContent;\n};\n\nModal.displayName = 'Modal';\n\nexport { Modal };\n","import React from 'react';\nimport { CardProps } from './Card.types';\nimport { Badge } from '../Badge';\nimport './Card.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-card-${className}`;\n\n// Star icon - 9x9\nconst StarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\">\n <g clipPath=\"url(#clip0_card_star)\">\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=\"#1F2937\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_card_star\">\n <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(0.800049 0.199951)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\n// Comment bubble icon for rating info\nconst CommentIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 36 38\" fill=\"#478EFA\" className={cx('ratingSvg')}>\n <path d=\"M4 0C1.79086 0 0 1.79086 0 4V32V38L9 32H32C34.2091 32 36 30.2091 36 28V0H4Z\" />\n </svg>\n);\n\n// Default placeholder image\nconst PLACEHOLDER =\n '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';\n\n// Helper to repeat elements\nconst repeat = (n: number, renderFn: (i: number) => React.ReactNode) =>\n Array.from({ length: n }, (_, i) => renderFn(i));\n\nconst Card: React.FC<CardProps> = ({\n image,\n imageAlt = '',\n label,\n price,\n stars,\n isSuperior = false,\n badge,\n onClick,\n className = '',\n variant = 'mobile',\n hasRating,\n withPadding = false,\n withHeight = false,\n ratingInfo,\n context,\n swissLodgeLabel = 'Swiss Lodge',\n}) => {\n const isDesktop = variant === 'desktop';\n\n // Build dynamic class names\n const containerClasses = [\n cx('card'),\n cx(`card--${variant}`),\n onClick && cx('card--clickable'),\n withPadding && cx('card--withPadding'),\n withHeight && cx('card--withHeight'),\n className,\n ].filter(Boolean).join(' ');\n\n const starsRowClasses = [\n cx('starsRow'),\n context === 'hotel-deals' && cx('starsRow--fixed'),\n ].filter(Boolean).join(' ');\n\n const labelClasses = [\n cx('label'),\n isDesktop ? cx('label--desktop') : cx('label--mobile'),\n context === 'hotel-deals' && cx('label--hotelDeals'),\n !isDesktop && context !== 'hotel-deals' && cx('label--mobileOverflow'),\n !hasRating && cx('label--noRating'),\n ].filter(Boolean).join(' ');\n\n const priceClasses = [\n cx('price'),\n context === 'hotel-deals' && hasRating && cx('price--hotelDealsWithRating'),\n context === 'hotel-deals' && !hasRating && cx('price--hotelDealsNoRating'),\n context !== 'hotel-deals' && !hasRating && cx('price--noRating'),\n context !== 'hotel-deals' && hasRating && cx('price--regularWithRating'),\n ].filter(Boolean).join(' ');\n\n const displayImage = image || PLACEHOLDER;\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n // Render rating info section\n const renderRatingInfo = () => {\n if (!ratingInfo) return null;\n return (\n <span className={cx('ratingInfo')}>\n <CommentIcon />\n <span className={cx('ratingLabel')}>{ratingInfo.label}</span>\n <span className={cx('ratingValue')}>{ratingInfo.value}</span>\n </span>\n );\n };\n\n return (\n <div\n className={containerClasses}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={cx('imageContainer')}>\n <img\n src={displayImage}\n alt={imageAlt}\n className={cx('image')}\n loading=\"lazy\"\n />\n <div className={cx('shadowOverlay')} />\n {badge && (\n <div className={cx('badgeWrapper')}>\n <Badge\n color={badge.variant || 'primary'}\n size={isDesktop ? 'large' : 'small'}\n >\n {badge.text}\n </Badge>\n </div>\n )}\n </div>\n\n <div className={cx('textContainer')}>\n {/* Stars row */}\n <div className={starsRowClasses}>\n {stars !== undefined && stars > 0 ? (\n <>\n {/* Swiss Lodge (rating = 6) */}\n {stars === 6 ? (\n <span className={cx('swissLodge')}>{swissLodgeLabel}</span>\n ) : (\n <>\n {isDesktop ? (\n <>\n <div className={cx('starsContainer')}>\n {repeat(Math.floor(stars), (i) => (\n <StarIcon key={i} />\n ))}\n {isSuperior && (\n <span className={cx('superiorBadge')}>(s)</span>\n )}\n </div>\n <div>{renderRatingInfo()}</div>\n </>\n ) : (\n <>\n <div className={cx('starsContainer')}>\n {repeat(Math.floor(stars), (i) => (\n <StarIcon key={i} />\n ))}\n </div>\n {isSuperior && (\n <span className={cx('superiorBadge')}>(s)</span>\n )}\n {renderRatingInfo()}\n </>\n )}\n </>\n )}\n </>\n ) : (\n <div className={cx('starsPlaceholder')}>&nbsp;</div>\n )}\n </div>\n {label && <div className={labelClasses}>{label}</div>}\n {price && <div className={priceClasses}>{price}</div>}\n </div>\n </div>\n );\n};\n\nCard.displayName = 'Card';\n\nexport { Card };\n","import React from 'react';\nimport { CompactCardProps } from './CompactCard.types';\nimport './CompactCard.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-compact-${className}`;\n\n// Star icon - 9x9 matching hotelcard-ui exactly\nconst StarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\">\n <g clipPath=\"url(#clip0_compact_star)\">\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=\"#1F2937\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_compact_star\">\n <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(0.800049 0.199951)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\n// Default placeholder if no image\nconst PLACEHOLDER =\n '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';\n\n// Helper to repeat elements\nconst repeat = (n: number, renderFn: (i: number) => React.ReactNode) =>\n Array.from({ length: n }, (_, i) => renderFn(i));\n\nconst CompactCard: React.FC<CompactCardProps> = ({\n image,\n imageAlt = '',\n label,\n price,\n stars,\n isSuperior = false,\n badge,\n onClick,\n className = '',\n swissLodgeLabel = 'Swiss Lodge',\n}) => {\n // Determine if stars are present for layout adjustments\n const hasRating = stars !== undefined && stars > 0;\n\n // Build dynamic class names\n const containerClasses = [\n cx('card'),\n onClick && cx('card--clickable'),\n className,\n ].filter(Boolean).join(' ');\n\n const labelClasses = [\n cx('label'),\n !hasRating && cx('label--noRating'),\n ].filter(Boolean).join(' ');\n\n const priceClasses = [\n cx('price'),\n !hasRating && cx('price--noRating'),\n ].filter(Boolean).join(' ');\n\n // Display image or placeholder\n const displayImage = image || PLACEHOLDER;\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n return (\n <div\n className={containerClasses}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={cx('imageContainer')}>\n <img\n src={displayImage}\n alt={imageAlt}\n className={cx('image')}\n loading=\"lazy\"\n />\n <div className={cx('shadowOverlay')} />\n {badge && (\n <div className={cx('badgeWrapper')}>\n <span\n className={`${cx('badge')} ${\n badge.variant === 'secondary' ? cx('badge--secondary') : cx('badge--primary')\n }`}\n >\n {badge.text}\n </span>\n </div>\n )}\n </div>\n\n <div className={cx('textContainer')}>\n {/* Always render stars row to maintain alignment */}\n <div className={cx('starsRow')}>\n {stars !== undefined && stars > 0 ? (\n <>\n {/* Check for Swiss Lodge (rating = 6) */}\n {stars === 6 ? (\n <span className={cx('swissLodge')}>{swissLodgeLabel}</span>\n ) : (\n <>\n <div className={cx('starsContainer')}>\n {repeat(Math.floor(stars), (i) => (\n <StarIcon key={i} />\n ))}\n </div>\n {isSuperior && <span className={cx('superiorBadge')}>(s)</span>}\n </>\n )}\n </>\n ) : (\n // Empty space to maintain alignment\n <div className={cx('starsPlaceholder')}>&nbsp;</div>\n )}\n </div>\n {label && <div className={labelClasses}>{label}</div>}\n {price && <div className={priceClasses}>{price}</div>}\n </div>\n </div>\n );\n};\n\nCompactCard.displayName = 'CompactCard';\n\nexport { CompactCard };\n","import React, { useState, useRef, useEffect } from 'react';\nimport { DropdownProps } from './Dropdown.types';\nimport './Dropdown.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-dropdown-${className}`;\n\n// Chevron icon\nconst ChevronIcon = () => (\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\">\n <path\n d=\"M1 1L6 6L11 1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst Dropdown: React.FC<DropdownProps> = ({\n options = [],\n disabled = false,\n error = false,\n defaultValue,\n value,\n onChange,\n className = '',\n name,\n id,\n placeholder = 'Select...',\n}) => {\n const [localValue, setLocalValue] = useState(defaultValue || '');\n const [isOpen, setIsOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const actualValue = value !== undefined ? value : localValue;\n const selectedLabel = options.find((o) => o.value === actualValue)?.label || placeholder;\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const handleSelect = (selectedValue: string) => {\n if (value === undefined) {\n setLocalValue(selectedValue);\n }\n onChange?.(selectedValue);\n setIsOpen(false);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (disabled) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setIsOpen(!isOpen);\n } else if (event.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n // Build container classes\n const containerClasses = [\n cx('container'),\n disabled && cx('container--disabled'),\n className,\n ].filter(Boolean).join(' ');\n\n // Build button classes\n const buttonClasses = [\n cx('button'),\n error && cx('button--error'),\n isFocused && !error && cx('button--focus'),\n disabled && cx('button--disabled'),\n isOpen && cx('button--open'),\n ].filter(Boolean).join(' ');\n\n // Build chevron classes\n const chevronClasses = [\n cx('chevron'),\n isOpen && cx('chevron--open'),\n ].filter(Boolean).join(' ');\n\n // Build dropdown list classes\n const listClasses = [\n cx('list'),\n isOpen && cx('list--open'),\n ].filter(Boolean).join(' ');\n\n return (\n <div ref={dropdownRef} className={containerClasses}>\n <div\n className={buttonClasses}\n tabIndex={disabled ? -1 : 0}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n onFocus={() => !disabled && setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={disabled}\n >\n <span>{selectedLabel}</span>\n <span className={chevronClasses}>\n <ChevronIcon />\n </span>\n </div>\n\n <ul role=\"listbox\" className={listClasses}>\n {options.map((option) => (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={actualValue === option.value}\n onClick={() => handleSelect(option.value)}\n className={`${cx('option')} ${\n actualValue === option.value ? cx('option--selected') : ''\n }`}\n >\n {option.label}\n </li>\n ))}\n </ul>\n\n {/* Hidden native select for form compatibility */}\n <select\n id={id}\n name={name}\n value={actualValue}\n onChange={(e) => handleSelect(e.target.value)}\n disabled={disabled}\n className={cx('hiddenSelect')}\n >\n {!actualValue && <option value=\"\">{placeholder}</option>}\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n );\n};\n\nDropdown.displayName = 'Dropdown';\n\nexport { Dropdown };\n","import React, { useState, useRef } from 'react';\nimport { InputProps } from './Input.types';\nimport './Input.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-input-${className}`;\n\nconst Input: React.FC<InputProps> = ({\n label,\n placeholder = 'Placeholder',\n helper,\n value,\n defaultValue = '',\n onChange,\n onFocus,\n onBlur,\n type = 'text',\n error = false,\n disabled = false,\n leftIcon,\n rightIcon,\n prefix,\n className = '',\n inputClassName = '',\n wrapperClassName = '',\n name,\n id,\n required = false,\n autoComplete,\n autoFocus = false,\n readOnly = false,\n inputProps,\n}) => {\n const [localValue, setLocalValue] = useState(defaultValue);\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const actualValue = value !== undefined ? value : localValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (value === undefined) {\n setLocalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n onFocus?.();\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n onBlur?.();\n };\n\n // Build container classes\n const containerClasses = [cx('container'), className].filter(Boolean).join(' ');\n\n // Build label classes\n const labelClasses = [\n cx('label'),\n (disabled || readOnly) && cx('label--disabled'),\n ].filter(Boolean).join(' ');\n\n // Build wrapper classes\n const wrapperClasses = [\n cx('wrapper'),\n isFocused && cx('wrapper--focus'),\n error && cx('wrapper--error'),\n (disabled || readOnly) && cx('wrapper--disabled'),\n wrapperClassName,\n ].filter(Boolean).join(' ');\n\n // Build input classes\n const inputClasses = [\n cx('input'),\n (disabled || readOnly) && cx('input--disabled'),\n inputClassName,\n ].filter(Boolean).join(' ');\n\n // Build helper classes\n const helperClasses = [\n cx('helper'),\n error && cx('helper--error'),\n (disabled || readOnly) && cx('helper--disabled'),\n ].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n {label && (\n <label htmlFor={id} className={labelClasses}>\n {label}\n </label>\n )}\n\n <div\n className={wrapperClasses}\n onClick={() => !disabled && !readOnly && inputRef.current?.focus()}\n >\n {leftIcon && <div className={cx('icon')}>{leftIcon}</div>}\n\n {prefix && <div className={cx('prefix')}>{prefix}</div>}\n\n <input\n ref={inputRef}\n type={type}\n id={id}\n name={name}\n value={actualValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n readOnly={readOnly}\n className={inputClasses}\n {...inputProps}\n />\n\n {rightIcon && rightIcon}\n </div>\n\n {helper && <div className={helperClasses}>{helper}</div>}\n </div>\n );\n};\n\nInput.displayName = 'Input';\n\nexport { Input };\n","import { ReactNode } from 'react';\nimport './Block.css';\n\nconst cx = (className: string) => `hc-block-${className}`;\n\nexport interface BlockProps {\n /** Type of block to render */\n variant?: 'icon' | 'image';\n /** Icon or image to display */\n visual?: ReactNode;\n /** Label/title text */\n label: string;\n /** Description text (for icon variant) */\n description?: string;\n /** Style variant for icon blocks */\n style?: 'primary' | 'secondary';\n /** Click handler */\n onClick?: () => void;\n /** Whether to show arrow (for image variant) */\n showArrow?: boolean;\n /** Additional CSS class names */\n className?: string;\n}\n\nconst Block: React.FC<BlockProps> = ({\n variant = 'icon',\n visual,\n label,\n description,\n style = 'primary',\n onClick,\n showArrow = true,\n className = ''\n}) => {\n if (variant === 'icon') {\n const containerClasses = [\n cx('icon'),\n onClick && cx('icon--clickable'),\n className\n ].filter(Boolean).join(' ');\n\n const iconContainerClass = style === 'primary'\n ? cx('icon-container--primary')\n : cx('icon-container--secondary');\n\n return (\n <div\n className={containerClasses}\n onClick={onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={iconContainerClass}>\n {visual}\n </div>\n <div className={cx('text-container')}>\n <div className={cx('icon-label')}>{label}</div>\n {description && <div className={cx('icon-description')}>{description}</div>}\n </div>\n </div>\n );\n }\n\n // Image Block variant\n const containerClasses = [\n cx('image'),\n onClick && cx('image--clickable'),\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div\n className={containerClasses}\n onClick={onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={cx('image-container')}>\n {visual}\n </div>\n <div className={cx('footer')}>\n <span className={cx('image-label')}>{label}</span>\n {showArrow && (\n <span className={cx('arrow')}>→</span>\n )}\n </div>\n </div>\n );\n};\n\nBlock.displayName = 'Block';\n\nexport { Block };\n","import { Rating } from '../Rating';\nimport './ReviewCard.css';\n\nconst cx = (className: string) => `hc-review-${className}`;\n\nexport interface ReviewCardProps {\n /** Reviewer's name */\n name: string;\n /** Review date */\n date: string;\n /** Rating value (1-5) */\n rating: number;\n /** Review text/quote */\n quote: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst ReviewCard: React.FC<ReviewCardProps> = ({\n name,\n date,\n rating,\n quote,\n className\n}) => {\n const containerClasses = [cx('container'), className].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n <div className={cx('name')}>{name}</div>\n <div className={cx('frame')}>\n <div className={cx('stars')}>\n <Rating variant=\"stars\" value={rating} size=\"medium\" />\n </div>\n <div className={cx('quote')}>{quote}</div>\n </div>\n <div className={cx('date')}>{date}</div>\n </div>\n );\n};\n\nReviewCard.displayName = 'ReviewCard';\n\nexport { ReviewCard };\n","import { useState } from 'react';\nimport { Button } from '../Button';\nimport './FAQ.css';\n\nconst cx = (className: string) => `hc-faq-${className}`;\n\nexport interface FAQItem {\n question: string;\n answer: string;\n}\n\nexport interface FAQProps {\n items: FAQItem[];\n defaultOpenIndex?: number | null;\n allowMultiple?: boolean;\n className?: string;\n}\n\nconst ChevronIcon = ({ isOpen }: { isOpen: boolean }) => {\n const iconClasses = [\n cx('chevron'),\n isOpen && cx('chevron--open')\n ].filter(Boolean).join(' ');\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={iconClasses}\n >\n <path\n d=\"M6 9L12 15L18 9\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst FAQ: React.FC<FAQProps> = ({\n items,\n defaultOpenIndex = null,\n allowMultiple = false,\n className\n}) => {\n const [openIndices, setOpenIndices] = useState<Set<number>>(\n defaultOpenIndex !== null ? new Set([defaultOpenIndex]) : new Set()\n );\n\n const toggleItem = (index: number) => {\n setOpenIndices(prev => {\n const newSet = new Set(prev);\n if (newSet.has(index)) {\n newSet.delete(index);\n } else {\n if (!allowMultiple) {\n newSet.clear();\n }\n newSet.add(index);\n }\n return newSet;\n });\n };\n\n const containerClasses = [cx('container'), className].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n {items.map((item, index) => {\n const isOpen = openIndices.has(index);\n const answerClasses = isOpen\n ? cx('answer--open')\n : cx('answer');\n\n return (\n <div key={index} className={cx('item')}>\n <Button\n variant=\"link\"\n size=\"medium\"\n className={cx('question-btn')}\n onClick={() => toggleItem(index)}\n aria-expanded={isOpen}\n aria-controls={`faq-answer-${index}`}\n rightIcon={\n <div className={cx('icon-container')}>\n <ChevronIcon isOpen={isOpen} />\n </div>\n }\n >\n <span className={cx('question-text')}>{item.question}</span>\n </Button>\n <div id={`faq-answer-${index}`} className={answerClasses}>\n <p className={cx('answer-text')}>{item.answer}</p>\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nFAQ.displayName = 'FAQ';\n\nexport { FAQ };\n","import { Button } from '../Button';\nimport './Benefits.css';\n\nconst cx = (className: string) => `hc-benefits-${className}`;\n\nexport interface BenefitItem {\n icon?: string;\n title: string;\n description?: string;\n}\n\nexport interface BenefitsProps {\n title?: string;\n subtitle?: string;\n benefits?: BenefitItem[];\n contactTitle?: string;\n contactDescription?: string;\n contactButtonText?: string;\n onContactClick?: () => void;\n className?: string;\n}\n\nconst Benefits: React.FC<BenefitsProps> = ({\n title = 'Ihre Vorteile mit HotelCard',\n subtitle = 'Mit HotelCard sparen Sie bei jedem Aufenthalt',\n benefits = [\n {\n title: 'Über 500 Hotels',\n description: 'Grosse Auswahl in der ganzen Schweiz'\n },\n {\n title: 'Bis zu 50% Rabatt',\n description: 'Exklusive Mitglieder-Preise'\n },\n {\n title: 'Kein Buchungszwang',\n description: 'Buchen Sie, wann Sie möchten'\n },\n {\n title: 'Kostenlose Stornierung',\n description: 'Flexible Buchungsbedingungen'\n }\n ],\n contactTitle = 'Haben Sie Fragen?',\n contactDescription = 'Unser Kundenservice hilft Ihnen gerne weiter',\n contactButtonText = 'Kontakt aufnehmen',\n onContactClick,\n className\n}) => {\n const sectionClasses = [cx('section'), className].filter(Boolean).join(' ');\n\n return (\n <section className={sectionClasses}>\n <div className={cx('container')}>\n <div className={cx('header')}>\n <h2 className={cx('title')}>{title}</h2>\n {subtitle && <p className={cx('subtitle')}>{subtitle}</p>}\n </div>\n\n <div className={cx('grid')}>\n {benefits.map((benefit, index) => (\n <div key={index} className={cx('item')}>\n <h3 className={cx('item-title')}>{benefit.title}</h3>\n {benefit.description && (\n <p className={cx('item-description')}>{benefit.description}</p>\n )}\n </div>\n ))}\n </div>\n\n {contactTitle && (\n <div className={cx('contact-card')}>\n <h3 className={cx('contact-title')}>{contactTitle}</h3>\n {contactDescription && (\n <p className={cx('contact-description')}>{contactDescription}</p>\n )}\n {contactButtonText && (\n <Button\n variant=\"secondary\"\n size=\"medium\"\n onClick={onContactClick}\n className={cx('contact-btn')}\n >\n {contactButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </section>\n );\n};\n\nBenefits.displayName = 'Benefits';\n\nexport { Benefits };\n","import React, { forwardRef } from 'react';\nimport './Pin.css';\n\nconst cx = (className: string) => `hc-pin-${className}`;\n\nexport interface PinProps {\n /** Pin variant - 'price' shows currency/price, 'hotel' shows house icon */\n variant?: 'price' | 'hotel';\n /** Whether the hotel has been viewed (secondary style) */\n viewed?: boolean;\n /** Currency code to display */\n currency?: string;\n /** Price to display */\n price?: number | string;\n /** Whether to show the favorite (heart) icon */\n showFavorite?: boolean;\n /** Whether the pin is disabled */\n disabled?: boolean;\n /** Click handler */\n onClick?: () => void;\n /** Additional class name */\n className?: string;\n}\n\n// Heart filled icon for favorites\nconst HeartIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M8 14.2333L6.96667 13.2933C3.6 10.24 1.33333 8.18667 1.33333 5.66667C1.33333 3.61333 2.94667 2 5 2C6.16 2 7.27333 2.54 8 3.39333C8.72667 2.54 9.84 2 11 2C13.0533 2 14.6667 3.61333 14.6667 5.66667C14.6667 8.18667 12.4 10.24 9.03333 13.2933L8 14.2333Z\" />\n </svg>\n);\n\n// Home/Hotel icon for hotel variant\nconst HomeIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M6.66667 13.3333V9.33333H9.33333V13.3333H12.6667V8H14.6667L8 2L1.33333 8H3.33333V13.3333H6.66667Z\" />\n </svg>\n);\n\n/**\n * Pin Component\n *\n * Map marker pin with price or hotel icon variants.\n * Used for displaying hotel markers on maps.\n *\n * @example\n * // Price pin (default)\n * <Pin price={150} currency=\"CHF\" showFavorite />\n *\n * // Viewed price pin (secondary style)\n * <Pin price={150} viewed showFavorite />\n *\n * // Hotel pin (for clusters)\n * <Pin variant=\"hotel\" />\n */\nconst Pin = forwardRef<HTMLButtonElement, PinProps>(\n (\n {\n variant = 'price',\n viewed = false,\n currency = 'CHF',\n price = 0,\n showFavorite = false,\n disabled = false,\n onClick,\n className = '',\n },\n ref\n ) => {\n // Determine style variant based on viewed state\n const styleVariant = viewed ? 'secondary' : 'primary';\n\n // Build class names\n const pinClasses = [\n cx('pin'),\n cx(styleVariant),\n variant === 'hotel' && cx('hotel'),\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Format price for display\n const formattedPrice =\n typeof price === 'number' ? Math.round(price).toString() : price;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={pinClasses}\n disabled={disabled}\n onClick={onClick}\n >\n {/* Main body pill */}\n <div className={cx('body')}>\n {variant === 'price' ? (\n <>\n <span className={cx('currency')}>{currency}</span>\n <span className={cx('price')}>{formattedPrice}</span>\n {showFavorite && (\n <div className={cx('favorite-container')}>\n <HeartIcon className={cx('favorite-icon')} />\n </div>\n )}\n </>\n ) : (\n <HomeIcon className={cx('hotel-icon')} />\n )}\n </div>\n\n {/* Pointer arrow at bottom */}\n <div className={cx('pointer')}>\n <div className={cx('pointer-inner')} />\n </div>\n </button>\n );\n }\n);\n\nPin.displayName = 'Pin';\n\nexport { Pin };\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":["ChevronRightIcon","HeartIcon","StarIcon","import_jsx_runtime","cx","import_jsx_runtime","cx","containerClasses","import_jsx_runtime","cx","lineClass","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","import_jsx_runtime","cx","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","CloseIcon","import_jsx_runtime","cx","StarIcon","import_jsx_runtime","cx","StarIcon","PLACEHOLDER","repeat","import_react","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","import_jsx_runtime","cx","containerClasses","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","ChevronIcon","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","import_jsx_runtime","HeartIcon","import_jsx_runtime","StarIcon","import_jsx_runtime","import_jsx_runtime","ChevronRightIcon","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/Button/Button.tsx","../src/components/Badge/Badge.tsx","../src/components/Rating/Rating.tsx","../src/components/Divider/Divider.tsx","../src/components/Chip/Chip.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/RadioButton/RadioButton.tsx","../src/components/SectionHeader/SectionHeader.tsx","../src/components/Modal/Modal.tsx","../src/components/Card/Card.tsx","../src/components/CompactCard/CompactCard.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Input/Input.tsx","../src/components/Block/Block.tsx","../src/components/ReviewCard/ReviewCard.tsx","../src/components/FAQ/FAQ.tsx","../src/components/Benefits/Benefits.tsx","../src/components/Pin/Pin.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","../src/hooks/useDebounce.ts","../src/utils/formatPrice.ts","../src/utils/formatDate.ts","../src/utils/calculateDiscount.ts"],"sourcesContent":["// @hotelcard/ui - Shared UI Components\n// Version: 0.0.7\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// Divider\nexport { Divider } from './components/Divider';\nexport type { DividerProps } from './components/Divider';\n\n// Chip\nexport { Chip } from './components/Chip';\nexport type { ChipProps, ChipSize, ChipState } from './components/Chip';\n\n// Checkbox\nexport { Checkbox } from './components/Checkbox';\nexport type { CheckboxProps, CheckboxSize } from './components/Checkbox';\n\n// RadioButton\nexport { RadioButton } from './components/RadioButton';\nexport type { RadioButtonProps } from './components/RadioButton';\n\n// SectionHeader\nexport { SectionHeader } from './components/SectionHeader';\nexport type { SectionHeaderProps } from './components/SectionHeader';\n\n// Modal\nexport { Modal } from './components/Modal';\nexport type { ModalProps } from './components/Modal';\n\n// Card\nexport { Card } from './components/Card';\nexport type { CardProps, CardBadge, CardRatingInfo } from './components/Card';\n\n// CompactCard\nexport { CompactCard } from './components/CompactCard';\nexport type { CompactCardProps, CompactCardBadge } from './components/CompactCard';\n\n// Dropdown\nexport { Dropdown } from './components/Dropdown';\nexport type { DropdownProps, DropdownOption } from './components/Dropdown';\n\n// Input\nexport { Input } from './components/Input';\nexport type { InputProps, InputType } from './components/Input';\n\n// Block\nexport { Block } from './components/Block';\nexport type { BlockProps } from './components/Block';\n\n// ReviewCard\nexport { ReviewCard } from './components/ReviewCard';\nexport type { ReviewCardProps } from './components/ReviewCard';\n\n// FAQ\nexport { FAQ } from './components/FAQ';\nexport type { FAQProps, FAQItem } from './components/FAQ';\n\n// Benefits\nexport { Benefits } from './components/Benefits';\nexport type { BenefitsProps, BenefitItem } from './components/Benefits';\n\n// Pin\nexport { Pin } from './components/Pin';\nexport type { PinProps } from './components/Pin';\n\n// =================================================================\n// ICONS\n// =================================================================\n\nexport { HeartIcon, StarIcon, ChevronLeftIcon, ChevronRightIcon, PinIcon } from './components/icons';\n\n// =================================================================\n// HOOKS\n// =================================================================\n\nexport { useDebounce } from './hooks';\n\n// =================================================================\n// UTILS\n// =================================================================\n\nexport { formatPrice } from './utils';\nexport { formatDate, formatDateRange } from './utils';\nexport { calculateDiscount } from './utils';\n\n// =================================================================\n// TYPES\n// =================================================================\n\nexport type { Hotel } from './types';\nexport type { Booking } from './types';\nexport type { User, Address, Membership } from './types';\nexport type { SearchParams, SearchFilters } from './types';\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","import { DividerProps } from './Divider.types';\nimport './Divider.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-divider-${className}`;\n\nconst Divider: React.FC<DividerProps> = ({\n label,\n orientation = 'horizontal',\n className = ''\n}) => {\n const isHorizontal = orientation === 'horizontal';\n\n if (!label) {\n // Clean variant - just the line\n const lineClass = isHorizontal\n ? cx('lineStandalone--horizontal')\n : cx('lineStandalone--vertical');\n\n return (\n <div\n className={[lineClass, className].filter(Boolean).join(' ')}\n role=\"separator\"\n aria-orientation={orientation}\n />\n );\n }\n\n // Label variant - line with text in the middle\n const containerClass = isHorizontal\n ? cx('container--horizontal')\n : cx('container--vertical');\n\n const lineClass = isHorizontal\n ? cx('line--horizontal')\n : cx('line--vertical');\n\n const containerClasses = [\n cx('container'),\n containerClass,\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div\n className={containerClasses}\n role=\"separator\"\n aria-orientation={orientation}\n aria-label={typeof label === 'string' ? label : undefined}\n >\n <div className={lineClass} />\n <span className={cx('label')}>{label}</span>\n <div className={lineClass} />\n </div>\n );\n};\n\nDivider.displayName = 'Divider';\n\nexport { Divider };\n","import { ChipProps } from './Chip.types';\nimport './Chip.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-chip-${className}`;\n\n// Close icon SVG\nconst CloseIcon = () => (\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_chip_close)\">\n <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\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_chip_close\">\n <rect width=\"24\" height=\"24\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n);\n\nconst Chip: React.FC<ChipProps> = ({\n label,\n count,\n size = 'small',\n state = 'idle',\n removable = true,\n onClick,\n onRemove,\n className = '',\n disabled = false,\n}) => {\n // Determine effective state\n const effectiveState = disabled ? 'disabled' : state;\n\n // Build chip classes\n const chipClasses = [\n cx('chip'),\n cx(`chip--${size}`),\n cx(`chip--${effectiveState}`),\n className,\n ].filter(Boolean).join(' ');\n\n // Build label classes\n const labelClasses = [cx('label'), cx(`label--${size}`)].join(' ');\n\n // Build count badge classes\n const countBadgeClasses = [cx('countBadge'), cx(`countBadge--${size}`)].join(' ');\n\n const handleClick = () => {\n if (disabled) return;\n\n if (removable && onRemove) {\n onRemove();\n } else if (onClick) {\n onClick();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (removable && onRemove) {\n onRemove();\n } else if (onClick) {\n onClick();\n }\n }\n };\n\n return (\n <button\n type=\"button\"\n className={chipClasses}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-label={removable ? `Remove filter: ${label}` : label}\n >\n <span className={labelClasses}>{label}</span>\n\n {count !== undefined && <span className={countBadgeClasses}>{count}</span>}\n\n {removable && (\n <span className={cx('closeIcon')} aria-hidden=\"true\">\n <CloseIcon />\n </span>\n )}\n </button>\n );\n};\n\nChip.displayName = 'Chip';\n\nexport { Chip };\n","import { useState } from 'react';\nimport { CheckboxProps } from './Checkbox.types';\nimport './Checkbox.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-checkbox-${className}`;\n\nconst Checkbox: React.FC<CheckboxProps> = ({\n label,\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n error = false,\n name,\n id,\n className = '',\n size = 'medium',\n}) => {\n const [localChecked, setLocalChecked] = useState(defaultChecked);\n const [isFocused, setIsFocused] = useState(false);\n\n const actualChecked = checked !== undefined ? checked : localChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newChecked = e.target.checked;\n if (checked === undefined) {\n setLocalChecked(newChecked);\n }\n onChange?.(newChecked);\n };\n\n // Build container classes\n const containerClasses = [\n cx('container'),\n disabled && cx('container--disabled'),\n className,\n ].filter(Boolean).join(' ');\n\n // Build checkbox wrapper classes\n const wrapperClasses = [\n cx('wrapper'),\n cx(`wrapper--${size}`),\n ].filter(Boolean).join(' ');\n\n // Build checkbox box classes\n const boxClasses = [\n cx('box'),\n cx(`box--${size}`),\n actualChecked && cx('box--checked'),\n disabled && cx('box--disabled'),\n error && !actualChecked && cx('box--error'),\n isFocused && cx('box--focused'),\n ].filter(Boolean).join(' ');\n\n // Build input classes\n const inputClasses = [\n cx('input'),\n disabled && cx('input--disabled'),\n ].filter(Boolean).join(' ');\n\n // Build checkmark classes\n const checkmarkClasses = [\n cx('checkmark'),\n cx(`checkmark--${size}`),\n actualChecked && cx('checkmark--checked'),\n ].filter(Boolean).join(' ');\n\n // Build label classes\n const labelClasses = [\n cx('label'),\n disabled && cx('label--disabled'),\n error && !disabled && cx('label--error'),\n ].filter(Boolean).join(' ');\n\n return (\n <label className={containerClasses}>\n <div className={wrapperClasses}>\n <div className={boxClasses} />\n <input\n type=\"checkbox\"\n id={id}\n name={name}\n checked={actualChecked}\n onChange={handleChange}\n disabled={disabled}\n className={inputClasses}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n aria-invalid={error}\n />\n <svg\n className={checkmarkClasses}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.5 6L5 8.5L9.5 3.5\"\n stroke=\"var(--content-action-highlight-inverse-idle, #ffffff)\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n {label && <span className={labelClasses}>{label}</span>}\n </label>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox };\n","import React from 'react';\nimport { RadioButtonProps } from './RadioButton.types';\nimport './RadioButton.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-radio-${className}`;\n\nconst RadioButton: React.FC<RadioButtonProps> = ({\n id,\n checked,\n onChange,\n name,\n value,\n disabled = false,\n className = '',\n label,\n autoComplete,\n}) => {\n const handleClick = () => {\n if (!disabled && !checked) {\n onChange(true);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n if (!checked) {\n onChange(true);\n }\n }\n };\n\n // Build container classes\n const containerClasses = [\n cx('container'),\n disabled && cx('container--disabled'),\n className,\n ].filter(Boolean).join(' ');\n\n // Build outer circle classes\n const outerCircleClasses = [\n cx('outerCircle'),\n checked && cx('outerCircle--checked'),\n disabled && cx('outerCircle--disabled'),\n ].filter(Boolean).join(' ');\n\n // Build inner dot classes\n const innerDotClasses = [\n cx('innerDot'),\n checked && cx('innerDot--checked'),\n ].filter(Boolean).join(' ');\n\n return (\n <div\n role=\"radio\"\n aria-checked={checked}\n tabIndex={disabled ? -1 : 0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={containerClasses}\n aria-disabled={disabled}\n >\n {/* Radio button visual wrapper */}\n <div className={cx('wrapper')}>\n {/* Hidden input for form submission */}\n <input\n id={id}\n type=\"radio\"\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n autoComplete={autoComplete}\n onChange={() => {}} // Controlled by parent onClick\n className={cx('hiddenInput')}\n />\n\n {/* Outer circle */}\n <div className={outerCircleClasses} />\n\n {/* Inner dot - only visible when checked */}\n <div className={innerDotClasses} />\n </div>\n\n {label && (\n <label htmlFor={id} className={cx('label')}>\n {label}\n </label>\n )}\n </div>\n );\n};\n\nRadioButton.displayName = 'RadioButton';\n\nexport { RadioButton };\n","import { SectionHeaderProps } from './SectionHeader.types';\nimport './SectionHeader.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-section-${className}`;\n\n// Chevron right icon\nconst ChevronRightIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\nconst SectionHeader: React.FC<SectionHeaderProps> = ({\n title,\n showAllLabel,\n onShowAllClick,\n className = '',\n}) => {\n const headerClasses = [cx('header'), className].filter(Boolean).join(' ');\n\n return (\n <div className={headerClasses}>\n <h2 className={cx('title')}>{title}</h2>\n {showAllLabel && onShowAllClick && (\n <button className={cx('showAllButton')} onClick={onShowAllClick}>\n <span>{showAllLabel}</span>\n <ChevronRightIcon />\n </button>\n )}\n </div>\n );\n};\n\nSectionHeader.displayName = 'SectionHeader';\n\nexport { SectionHeader };\n","import React, { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ModalProps } from './Modal.types';\nimport './Modal.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-modal-${className}`;\n\n// Close icon SVG\nconst CloseIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n 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\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n width = 'var(--grid-tablet-device-width, 600px)',\n className = '',\n showCloseButton = true,\n disableBackdropClick = false,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n // Handle escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n document.body.style.overflow = 'hidden';\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.body.style.overflow = '';\n };\n }, [isOpen, onClose]);\n\n // Handle click outside\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !disableBackdropClick) {\n onClose();\n }\n };\n\n if (!isOpen) return null;\n\n const modalClasses = [cx('content'), className].filter(Boolean).join(' ');\n\n const modalContent = (\n <div className={cx('backdrop')} onClick={handleBackdropClick}>\n <div\n ref={modalRef}\n className={modalClasses}\n style={{ maxWidth: width }}\n >\n {showCloseButton && (\n <button\n className={cx('closeButton')}\n onClick={onClose}\n aria-label=\"Close modal\"\n >\n <CloseIcon />\n </button>\n )}\n {children}\n </div>\n </div>\n );\n\n // Check if we're in a browser environment\n if (typeof document !== 'undefined') {\n return createPortal(modalContent, document.body);\n }\n\n return modalContent;\n};\n\nModal.displayName = 'Modal';\n\nexport { Modal };\n","import React from 'react';\nimport { CardProps } from './Card.types';\nimport { Badge } from '../Badge';\nimport './Card.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-card-${className}`;\n\n// Star icon - 9x9\nconst StarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\">\n <g clipPath=\"url(#clip0_card_star)\">\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=\"#1F2937\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_card_star\">\n <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(0.800049 0.199951)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\n// Comment bubble icon for rating info\nconst CommentIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 36 38\" fill=\"#478EFA\" className={cx('ratingSvg')}>\n <path d=\"M4 0C1.79086 0 0 1.79086 0 4V32V38L9 32H32C34.2091 32 36 30.2091 36 28V0H4Z\" />\n </svg>\n);\n\n// Default placeholder image\nconst PLACEHOLDER =\n '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';\n\n// Helper to repeat elements\nconst repeat = (n: number, renderFn: (i: number) => React.ReactNode) =>\n Array.from({ length: n }, (_, i) => renderFn(i));\n\nconst Card: React.FC<CardProps> = ({\n image,\n imageAlt = '',\n label,\n price,\n stars,\n isSuperior = false,\n badge,\n onClick,\n className = '',\n variant = 'mobile',\n hasRating,\n withPadding = false,\n withHeight = false,\n ratingInfo,\n context,\n swissLodgeLabel = 'Swiss Lodge',\n}) => {\n const isDesktop = variant === 'desktop';\n\n // Build dynamic class names\n const containerClasses = [\n cx('card'),\n cx(`card--${variant}`),\n onClick && cx('card--clickable'),\n withPadding && cx('card--withPadding'),\n withHeight && cx('card--withHeight'),\n className,\n ].filter(Boolean).join(' ');\n\n const starsRowClasses = [\n cx('starsRow'),\n context === 'hotel-deals' && cx('starsRow--fixed'),\n ].filter(Boolean).join(' ');\n\n const labelClasses = [\n cx('label'),\n isDesktop ? cx('label--desktop') : cx('label--mobile'),\n context === 'hotel-deals' && cx('label--hotelDeals'),\n !isDesktop && context !== 'hotel-deals' && cx('label--mobileOverflow'),\n !hasRating && cx('label--noRating'),\n ].filter(Boolean).join(' ');\n\n const priceClasses = [\n cx('price'),\n context === 'hotel-deals' && hasRating && cx('price--hotelDealsWithRating'),\n context === 'hotel-deals' && !hasRating && cx('price--hotelDealsNoRating'),\n context !== 'hotel-deals' && !hasRating && cx('price--noRating'),\n context !== 'hotel-deals' && hasRating && cx('price--regularWithRating'),\n ].filter(Boolean).join(' ');\n\n const displayImage = image || PLACEHOLDER;\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n // Render rating info section\n const renderRatingInfo = () => {\n if (!ratingInfo) return null;\n return (\n <span className={cx('ratingInfo')}>\n <CommentIcon />\n <span className={cx('ratingLabel')}>{ratingInfo.label}</span>\n <span className={cx('ratingValue')}>{ratingInfo.value}</span>\n </span>\n );\n };\n\n return (\n <div\n className={containerClasses}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={cx('imageContainer')}>\n <img\n src={displayImage}\n alt={imageAlt}\n className={cx('image')}\n loading=\"lazy\"\n />\n <div className={cx('shadowOverlay')} />\n {badge && (\n <div className={cx('badgeWrapper')}>\n <Badge\n color={badge.variant || 'primary'}\n size={isDesktop ? 'large' : 'small'}\n >\n {badge.text}\n </Badge>\n </div>\n )}\n </div>\n\n <div className={cx('textContainer')}>\n {/* Stars row */}\n <div className={starsRowClasses}>\n {stars !== undefined && stars > 0 ? (\n <>\n {/* Swiss Lodge (rating = 6) */}\n {stars === 6 ? (\n <span className={cx('swissLodge')}>{swissLodgeLabel}</span>\n ) : (\n <>\n {isDesktop ? (\n <>\n <div className={cx('starsContainer')}>\n {repeat(Math.floor(stars), (i) => (\n <StarIcon key={i} />\n ))}\n {isSuperior && (\n <span className={cx('superiorBadge')}>(s)</span>\n )}\n </div>\n <div>{renderRatingInfo()}</div>\n </>\n ) : (\n <>\n <div className={cx('starsContainer')}>\n {repeat(Math.floor(stars), (i) => (\n <StarIcon key={i} />\n ))}\n </div>\n {isSuperior && (\n <span className={cx('superiorBadge')}>(s)</span>\n )}\n {renderRatingInfo()}\n </>\n )}\n </>\n )}\n </>\n ) : (\n <div className={cx('starsPlaceholder')}>&nbsp;</div>\n )}\n </div>\n {label && <div className={labelClasses}>{label}</div>}\n {price && <div className={priceClasses}>{price}</div>}\n </div>\n </div>\n );\n};\n\nCard.displayName = 'Card';\n\nexport { Card };\n","import React from 'react';\nimport { CompactCardProps } from './CompactCard.types';\nimport './CompactCard.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-compact-${className}`;\n\n// Star icon - 9x9 matching hotelcard-ui exactly\nconst StarIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\">\n <g clipPath=\"url(#clip0_compact_star)\">\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=\"#1F2937\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_compact_star\">\n <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(0.800049 0.199951)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\n// Default placeholder if no image\nconst PLACEHOLDER =\n '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';\n\n// Helper to repeat elements\nconst repeat = (n: number, renderFn: (i: number) => React.ReactNode) =>\n Array.from({ length: n }, (_, i) => renderFn(i));\n\nconst CompactCard: React.FC<CompactCardProps> = ({\n image,\n imageAlt = '',\n label,\n price,\n stars,\n isSuperior = false,\n badge,\n onClick,\n className = '',\n swissLodgeLabel = 'Swiss Lodge',\n}) => {\n // Determine if stars are present for layout adjustments\n const hasRating = stars !== undefined && stars > 0;\n\n // Build dynamic class names\n const containerClasses = [\n cx('card'),\n onClick && cx('card--clickable'),\n className,\n ].filter(Boolean).join(' ');\n\n const labelClasses = [\n cx('label'),\n !hasRating && cx('label--noRating'),\n ].filter(Boolean).join(' ');\n\n const priceClasses = [\n cx('price'),\n !hasRating && cx('price--noRating'),\n ].filter(Boolean).join(' ');\n\n // Display image or placeholder\n const displayImage = image || PLACEHOLDER;\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n return (\n <div\n className={containerClasses}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={cx('imageContainer')}>\n <img\n src={displayImage}\n alt={imageAlt}\n className={cx('image')}\n loading=\"lazy\"\n />\n <div className={cx('shadowOverlay')} />\n {badge && (\n <div className={cx('badgeWrapper')}>\n <span\n className={`${cx('badge')} ${\n badge.variant === 'secondary' ? cx('badge--secondary') : cx('badge--primary')\n }`}\n >\n {badge.text}\n </span>\n </div>\n )}\n </div>\n\n <div className={cx('textContainer')}>\n {/* Always render stars row to maintain alignment */}\n <div className={cx('starsRow')}>\n {stars !== undefined && stars > 0 ? (\n <>\n {/* Check for Swiss Lodge (rating = 6) */}\n {stars === 6 ? (\n <span className={cx('swissLodge')}>{swissLodgeLabel}</span>\n ) : (\n <>\n <div className={cx('starsContainer')}>\n {repeat(Math.floor(stars), (i) => (\n <StarIcon key={i} />\n ))}\n </div>\n {isSuperior && <span className={cx('superiorBadge')}>(s)</span>}\n </>\n )}\n </>\n ) : (\n // Empty space to maintain alignment\n <div className={cx('starsPlaceholder')}>&nbsp;</div>\n )}\n </div>\n {label && <div className={labelClasses}>{label}</div>}\n {price && <div className={priceClasses}>{price}</div>}\n </div>\n </div>\n );\n};\n\nCompactCard.displayName = 'CompactCard';\n\nexport { CompactCard };\n","import React, { useState, useRef, useEffect } from 'react';\nimport { DropdownProps } from './Dropdown.types';\nimport './Dropdown.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-dropdown-${className}`;\n\n// Chevron icon\nconst ChevronIcon = () => (\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\">\n <path\n d=\"M1 1L6 6L11 1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst Dropdown: React.FC<DropdownProps> = ({\n options = [],\n disabled = false,\n error = false,\n defaultValue,\n value,\n onChange,\n className = '',\n name,\n id,\n placeholder = 'Select...',\n}) => {\n const [localValue, setLocalValue] = useState(defaultValue || '');\n const [isOpen, setIsOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const actualValue = value !== undefined ? value : localValue;\n const selectedLabel = options.find((o) => o.value === actualValue)?.label || placeholder;\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const handleSelect = (selectedValue: string) => {\n if (value === undefined) {\n setLocalValue(selectedValue);\n }\n onChange?.(selectedValue);\n setIsOpen(false);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (disabled) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setIsOpen(!isOpen);\n } else if (event.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n // Build container classes\n const containerClasses = [\n cx('container'),\n disabled && cx('container--disabled'),\n className,\n ].filter(Boolean).join(' ');\n\n // Build button classes\n const buttonClasses = [\n cx('button'),\n error && cx('button--error'),\n isFocused && !error && cx('button--focus'),\n disabled && cx('button--disabled'),\n isOpen && cx('button--open'),\n ].filter(Boolean).join(' ');\n\n // Build chevron classes\n const chevronClasses = [\n cx('chevron'),\n isOpen && cx('chevron--open'),\n ].filter(Boolean).join(' ');\n\n // Build dropdown list classes\n const listClasses = [\n cx('list'),\n isOpen && cx('list--open'),\n ].filter(Boolean).join(' ');\n\n return (\n <div ref={dropdownRef} className={containerClasses}>\n <div\n className={buttonClasses}\n tabIndex={disabled ? -1 : 0}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n onFocus={() => !disabled && setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={disabled}\n >\n <span>{selectedLabel}</span>\n <span className={chevronClasses}>\n <ChevronIcon />\n </span>\n </div>\n\n <ul role=\"listbox\" className={listClasses}>\n {options.map((option) => (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={actualValue === option.value}\n onClick={() => handleSelect(option.value)}\n className={`${cx('option')} ${\n actualValue === option.value ? cx('option--selected') : ''\n }`}\n >\n {option.label}\n </li>\n ))}\n </ul>\n\n {/* Hidden native select for form compatibility */}\n <select\n id={id}\n name={name}\n value={actualValue}\n onChange={(e) => handleSelect(e.target.value)}\n disabled={disabled}\n className={cx('hiddenSelect')}\n >\n {!actualValue && <option value=\"\">{placeholder}</option>}\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n );\n};\n\nDropdown.displayName = 'Dropdown';\n\nexport { Dropdown };\n","import React, { useState, useRef } from 'react';\nimport { InputProps } from './Input.types';\nimport './Input.css';\n\n// CSS class prefix\nconst cx = (className: string) => `hc-input-${className}`;\n\nconst Input: React.FC<InputProps> = ({\n label,\n placeholder = 'Placeholder',\n helper,\n value,\n defaultValue = '',\n onChange,\n onFocus,\n onBlur,\n type = 'text',\n error = false,\n disabled = false,\n leftIcon,\n rightIcon,\n prefix,\n className = '',\n inputClassName = '',\n wrapperClassName = '',\n name,\n id,\n required = false,\n autoComplete,\n autoFocus = false,\n readOnly = false,\n inputProps,\n}) => {\n const [localValue, setLocalValue] = useState(defaultValue);\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const actualValue = value !== undefined ? value : localValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (value === undefined) {\n setLocalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n onFocus?.();\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n onBlur?.();\n };\n\n // Build container classes\n const containerClasses = [cx('container'), className].filter(Boolean).join(' ');\n\n // Build label classes\n const labelClasses = [\n cx('label'),\n (disabled || readOnly) && cx('label--disabled'),\n ].filter(Boolean).join(' ');\n\n // Build wrapper classes\n const wrapperClasses = [\n cx('wrapper'),\n isFocused && cx('wrapper--focus'),\n error && cx('wrapper--error'),\n (disabled || readOnly) && cx('wrapper--disabled'),\n wrapperClassName,\n ].filter(Boolean).join(' ');\n\n // Build input classes\n const inputClasses = [\n cx('input'),\n (disabled || readOnly) && cx('input--disabled'),\n inputClassName,\n ].filter(Boolean).join(' ');\n\n // Build helper classes\n const helperClasses = [\n cx('helper'),\n error && cx('helper--error'),\n (disabled || readOnly) && cx('helper--disabled'),\n ].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n {label && (\n <label htmlFor={id} className={labelClasses}>\n {label}\n </label>\n )}\n\n <div\n className={wrapperClasses}\n onClick={() => !disabled && !readOnly && inputRef.current?.focus()}\n >\n {leftIcon && <div className={cx('icon')}>{leftIcon}</div>}\n\n {prefix && <div className={cx('prefix')}>{prefix}</div>}\n\n <input\n ref={inputRef}\n type={type}\n id={id}\n name={name}\n value={actualValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n readOnly={readOnly}\n className={inputClasses}\n {...inputProps}\n />\n\n {rightIcon && rightIcon}\n </div>\n\n {helper && <div className={helperClasses}>{helper}</div>}\n </div>\n );\n};\n\nInput.displayName = 'Input';\n\nexport { Input };\n","import { ReactNode } from 'react';\nimport './Block.css';\n\nconst cx = (className: string) => `hc-block-${className}`;\n\nexport interface BlockProps {\n /** Type of block to render */\n variant?: 'icon' | 'image';\n /** Icon or image to display */\n visual?: ReactNode;\n /** Label/title text */\n label: string;\n /** Description text (for icon variant) */\n description?: string;\n /** Style variant for icon blocks */\n style?: 'primary' | 'secondary';\n /** Click handler */\n onClick?: () => void;\n /** Whether to show arrow (for image variant) */\n showArrow?: boolean;\n /** Additional CSS class names */\n className?: string;\n}\n\nconst Block: React.FC<BlockProps> = ({\n variant = 'icon',\n visual,\n label,\n description,\n style = 'primary',\n onClick,\n showArrow = true,\n className = ''\n}) => {\n if (variant === 'icon') {\n const containerClasses = [\n cx('icon'),\n onClick && cx('icon--clickable'),\n className\n ].filter(Boolean).join(' ');\n\n const iconContainerClass = style === 'primary'\n ? cx('icon-container--primary')\n : cx('icon-container--secondary');\n\n return (\n <div\n className={containerClasses}\n onClick={onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={iconContainerClass}>\n {visual}\n </div>\n <div className={cx('text-container')}>\n <div className={cx('icon-label')}>{label}</div>\n {description && <div className={cx('icon-description')}>{description}</div>}\n </div>\n </div>\n );\n }\n\n // Image Block variant\n const containerClasses = [\n cx('image'),\n onClick && cx('image--clickable'),\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div\n className={containerClasses}\n onClick={onClick}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <div className={cx('image-container')}>\n {visual}\n </div>\n <div className={cx('footer')}>\n <span className={cx('image-label')}>{label}</span>\n {showArrow && (\n <span className={cx('arrow')}>→</span>\n )}\n </div>\n </div>\n );\n};\n\nBlock.displayName = 'Block';\n\nexport { Block };\n","import { Rating } from '../Rating';\nimport './ReviewCard.css';\n\nconst cx = (className: string) => `hc-review-${className}`;\n\nexport interface ReviewCardProps {\n /** Reviewer's name */\n name: string;\n /** Review date */\n date: string;\n /** Rating value (1-5) */\n rating: number;\n /** Review text/quote */\n quote: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst ReviewCard: React.FC<ReviewCardProps> = ({\n name,\n date,\n rating,\n quote,\n className\n}) => {\n const containerClasses = [cx('container'), className].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n <div className={cx('name')}>{name}</div>\n <div className={cx('frame')}>\n <div className={cx('stars')}>\n <Rating variant=\"stars\" value={rating} size=\"medium\" />\n </div>\n <div className={cx('quote')}>{quote}</div>\n </div>\n <div className={cx('date')}>{date}</div>\n </div>\n );\n};\n\nReviewCard.displayName = 'ReviewCard';\n\nexport { ReviewCard };\n","import { useState } from 'react';\nimport { Button } from '../Button';\nimport './FAQ.css';\n\nconst cx = (className: string) => `hc-faq-${className}`;\n\nexport interface FAQItem {\n question: string;\n answer: string;\n}\n\nexport interface FAQProps {\n items: FAQItem[];\n defaultOpenIndex?: number | null;\n allowMultiple?: boolean;\n className?: string;\n}\n\nconst ChevronIcon = ({ isOpen }: { isOpen: boolean }) => {\n const iconClasses = [\n cx('chevron'),\n isOpen && cx('chevron--open')\n ].filter(Boolean).join(' ');\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={iconClasses}\n >\n <path\n d=\"M6 9L12 15L18 9\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nconst FAQ: React.FC<FAQProps> = ({\n items,\n defaultOpenIndex = null,\n allowMultiple = false,\n className\n}) => {\n const [openIndices, setOpenIndices] = useState<Set<number>>(\n defaultOpenIndex !== null ? new Set([defaultOpenIndex]) : new Set()\n );\n\n const toggleItem = (index: number) => {\n setOpenIndices(prev => {\n const newSet = new Set(prev);\n if (newSet.has(index)) {\n newSet.delete(index);\n } else {\n if (!allowMultiple) {\n newSet.clear();\n }\n newSet.add(index);\n }\n return newSet;\n });\n };\n\n const containerClasses = [cx('container'), className].filter(Boolean).join(' ');\n\n return (\n <div className={containerClasses}>\n {items.map((item, index) => {\n const isOpen = openIndices.has(index);\n const answerClasses = isOpen\n ? cx('answer--open')\n : cx('answer');\n\n return (\n <div key={index} className={cx('item')}>\n <Button\n variant=\"link\"\n size=\"medium\"\n className={cx('question-btn')}\n onClick={() => toggleItem(index)}\n aria-expanded={isOpen}\n aria-controls={`faq-answer-${index}`}\n rightIcon={\n <div className={cx('icon-container')}>\n <ChevronIcon isOpen={isOpen} />\n </div>\n }\n >\n <span className={cx('question-text')}>{item.question}</span>\n </Button>\n <div id={`faq-answer-${index}`} className={answerClasses}>\n <p className={cx('answer-text')}>{item.answer}</p>\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nFAQ.displayName = 'FAQ';\n\nexport { FAQ };\n","import { Button } from '../Button';\nimport './Benefits.css';\n\nconst cx = (className: string) => `hc-benefits-${className}`;\n\nexport interface BenefitItem {\n icon?: string;\n title: string;\n description?: string;\n}\n\nexport interface BenefitsProps {\n title?: string;\n subtitle?: string;\n benefits?: BenefitItem[];\n contactTitle?: string;\n contactDescription?: string;\n contactButtonText?: string;\n onContactClick?: () => void;\n className?: string;\n}\n\nconst Benefits: React.FC<BenefitsProps> = ({\n title = 'Ihre Vorteile mit HotelCard',\n subtitle = 'Mit HotelCard sparen Sie bei jedem Aufenthalt',\n benefits = [\n {\n title: 'Über 500 Hotels',\n description: 'Grosse Auswahl in der ganzen Schweiz'\n },\n {\n title: 'Bis zu 50% Rabatt',\n description: 'Exklusive Mitglieder-Preise'\n },\n {\n title: 'Kein Buchungszwang',\n description: 'Buchen Sie, wann Sie möchten'\n },\n {\n title: 'Kostenlose Stornierung',\n description: 'Flexible Buchungsbedingungen'\n }\n ],\n contactTitle = 'Haben Sie Fragen?',\n contactDescription = 'Unser Kundenservice hilft Ihnen gerne weiter',\n contactButtonText = 'Kontakt aufnehmen',\n onContactClick,\n className\n}) => {\n const sectionClasses = [cx('section'), className].filter(Boolean).join(' ');\n\n return (\n <section className={sectionClasses}>\n <div className={cx('container')}>\n <div className={cx('header')}>\n <h2 className={cx('title')}>{title}</h2>\n {subtitle && <p className={cx('subtitle')}>{subtitle}</p>}\n </div>\n\n <div className={cx('grid')}>\n {benefits.map((benefit, index) => (\n <div key={index} className={cx('item')}>\n <h3 className={cx('item-title')}>{benefit.title}</h3>\n {benefit.description && (\n <p className={cx('item-description')}>{benefit.description}</p>\n )}\n </div>\n ))}\n </div>\n\n {contactTitle && (\n <div className={cx('contact-card')}>\n <h3 className={cx('contact-title')}>{contactTitle}</h3>\n {contactDescription && (\n <p className={cx('contact-description')}>{contactDescription}</p>\n )}\n {contactButtonText && (\n <Button\n variant=\"secondary\"\n size=\"medium\"\n onClick={onContactClick}\n className={cx('contact-btn')}\n >\n {contactButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </section>\n );\n};\n\nBenefits.displayName = 'Benefits';\n\nexport { Benefits };\n","import React, { forwardRef } from 'react';\nimport './Pin.css';\n\nconst cx = (className: string) => `hc-pin-${className}`;\n\nexport interface PinProps {\n /** Pin variant - 'price' shows currency/price, 'hotel' shows house icon */\n variant?: 'price' | 'hotel';\n /** Whether the hotel has been viewed (secondary style) */\n viewed?: boolean;\n /** Currency code to display */\n currency?: string;\n /** Price to display */\n price?: number | string;\n /** Whether to show the favorite (heart) icon */\n showFavorite?: boolean;\n /** Whether the pin is disabled */\n disabled?: boolean;\n /** Click handler */\n onClick?: () => void;\n /** Additional class name */\n className?: string;\n}\n\n// Heart filled icon for favorites\nconst HeartIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M8 14.2333L6.96667 13.2933C3.6 10.24 1.33333 8.18667 1.33333 5.66667C1.33333 3.61333 2.94667 2 5 2C6.16 2 7.27333 2.54 8 3.39333C8.72667 2.54 9.84 2 11 2C13.0533 2 14.6667 3.61333 14.6667 5.66667C14.6667 8.18667 12.4 10.24 9.03333 13.2933L8 14.2333Z\" />\n </svg>\n);\n\n// Home/Hotel icon for hotel variant\nconst HomeIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M6.66667 13.3333V9.33333H9.33333V13.3333H12.6667V8H14.6667L8 2L1.33333 8H3.33333V13.3333H6.66667Z\" />\n </svg>\n);\n\n/**\n * Pin Component\n *\n * Map marker pin with price or hotel icon variants.\n * Used for displaying hotel markers on maps.\n *\n * @example\n * // Price pin (default)\n * <Pin price={150} currency=\"CHF\" showFavorite />\n *\n * // Viewed price pin (secondary style)\n * <Pin price={150} viewed showFavorite />\n *\n * // Hotel pin (for clusters)\n * <Pin variant=\"hotel\" />\n */\nconst Pin = forwardRef<HTMLButtonElement, PinProps>(\n (\n {\n variant = 'price',\n viewed = false,\n currency = 'CHF',\n price = 0,\n showFavorite = false,\n disabled = false,\n onClick,\n className = '',\n },\n ref\n ) => {\n // Determine style variant based on viewed state\n const styleVariant = viewed ? 'secondary' : 'primary';\n\n // Build class names\n const pinClasses = [\n cx('pin'),\n cx(styleVariant),\n variant === 'hotel' && cx('hotel'),\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Format price for display\n const formattedPrice =\n typeof price === 'number' ? Math.round(price).toString() : price;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={pinClasses}\n disabled={disabled}\n onClick={onClick}\n >\n {/* Main body pill */}\n <div className={cx('body')}>\n {variant === 'price' ? (\n <>\n <span className={cx('currency')}>{currency}</span>\n <span className={cx('price')}>{formattedPrice}</span>\n {showFavorite && (\n <div className={cx('favorite-container')}>\n <HeartIcon className={cx('favorite-icon')} />\n </div>\n )}\n </>\n ) : (\n <HomeIcon className={cx('hotel-icon')} />\n )}\n </div>\n\n {/* Pointer arrow at bottom */}\n <div className={cx('pointer')}>\n <div className={cx('pointer-inner')} />\n </div>\n </button>\n );\n }\n);\n\nPin.displayName = 'Pin';\n\nexport { Pin };\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","import { useState, useEffect } from 'react';\n\nexport const useDebounce = <T>(value: T, delay: number): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n};\n","export const formatPrice = (\n amount: number,\n currency: string = 'CHF',\n locale: string = 'de-CH'\n): string => {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n }).format(amount);\n};\n","import { format, parseISO, type Locale } from 'date-fns';\nimport { de, enUS, fr, it } from 'date-fns/locale';\n\nconst locales: Record<string, Locale> = { de, en: enUS, fr, it };\n\nexport const formatDate = (\n date: string | Date,\n formatStr: string = 'dd. MMM yyyy',\n locale: string = 'de'\n): string => {\n const d = typeof date === 'string' ? parseISO(date) : date;\n return format(d, formatStr, { locale: locales[locale] || de });\n};\n\nexport const formatDateRange = (\n checkIn: string | Date,\n checkOut: string | Date,\n locale: string = 'de'\n): string => {\n const start = formatDate(checkIn, 'dd.', locale);\n const end = formatDate(checkOut, 'dd. MMM yyyy', locale);\n return `${start} - ${end}`;\n};\n","export const calculateDiscount = (\n originalPrice: number,\n discountedPrice: number\n): number => {\n if (originalPrice <= 0) return 0;\n return Math.round(((originalPrice - discountedPrice) / originalPrice) * 100);\n};\n"],"mappings":"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","names":["ChevronRightIcon","HeartIcon","StarIcon","import_jsx_runtime","cx","import_jsx_runtime","cx","containerClasses","import_jsx_runtime","cx","lineClass","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","import_jsx_runtime","cx","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","CloseIcon","import_jsx_runtime","cx","StarIcon","import_jsx_runtime","cx","StarIcon","PLACEHOLDER","repeat","import_react","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","import_jsx_runtime","cx","containerClasses","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","ChevronIcon","import_jsx_runtime","cx","import_react","import_jsx_runtime","cx","import_jsx_runtime","HeartIcon","import_jsx_runtime","StarIcon","import_jsx_runtime","import_jsx_runtime","ChevronRightIcon","import_jsx_runtime","import_react"]}