@travelswitchhq/curated-search-react 1.0.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/Curated.tsx","../src/curated-search-widget.styles.ts"],"sourcesContent":["import CuratedSearchWidget from \"./Curated\";\r\nexport { CuratedSearchWidget };\r\nexport type { CuratedSearchWidgetProps, SSOUser } from \"./Curated\";\r\n","import { useState, useRef, useEffect, useMemo } from 'react'\r\nimport { JSEncrypt } from 'jsencrypt'\r\nimport { Button } from 'primereact/button'\r\nimport { Dropdown } from 'primereact/dropdown'\r\nimport { Calendar } from 'primereact/calendar'\r\nimport './App.css'\r\nimport { curatedSearchWidgetStyles } from './curated-search-widget.styles'\r\n\r\ninterface FormData {\r\n origin: string\r\n destination: string\r\n nationality: string\r\n departureDate: Date | null\r\n roomsGuests: string\r\n}\r\n\r\ntype CountryOption = {\r\n country_code: string\r\n country_name: string\r\n country_id: string\r\n}\r\n\r\ntype AirportResult = {\r\n id?: string\r\n ac?: string\r\n an?: string\r\n cc?: string\r\n cn?: string\r\n ct?: string\r\n}\r\n\r\ntype PackageSearchResult = {\r\n org_id?: string\r\n hybrid_package_keyword_id?: string\r\n search_keyword?: string\r\n search_keyword_type?: string\r\n package_count?: number\r\n SubSearchFormPackageResponse?: Array<{\r\n sub_hybrid_package_keyword_id?: string\r\n sub_search_keyword?: string\r\n sub_search_keyword_type?: string\r\n sub_package_count?: number\r\n }>\r\n}\r\n\r\nconst MIN_SEARCH_CHARS = 3\r\nconst MAX_ADULTS_PER_ROOM = 6\r\nconst MAX_CHILDREN_PER_ROOM = 4\r\nconst MAX_ROOMS = 6\r\nconst AIRPORT_SEARCH_URL = 'https://adminapi-go.dev.futuretravelplatform.com/api/Airport/GetList/EN'\r\nconst DESTINATION_SEARCH_URL = 'https://hybridpackageapi.dev.futuretravelplatform.com/HybridPackage/GetSearchForm'\r\nconst RSA_PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----\r\nMIICITANBgkqhkiG9w0BAQEFAAOCAg4AMIICCQKCAgB0rRSHGZK/FtK15IRfQxtl\r\ndN5ToPtfXGzTNBe1vGhow5xqp6BLubMKKPwCj3zOJiAm1Ip1VNqqYxWnaL8ZErBF\r\nrErtE0r7kn50QgGgJCpdrWJ4unhaoe1su207d9oY6D6OBH90v1aXA6ZjN7zTJmiq\r\nFJZOOTQE6t/XwNAOphq/B6Lcr1iQSQmSqaMozy4OQ4NvIzNTQn5tcs9qJBMsKFeU\r\ncSp8VK76JBNEqSuEHNmbV2d/IQ5XAqVUiAs34kH2xWRSbBmy0WK3c3QKGzC1MRWM\r\n9JauLN56TKUFOmUSjfWY3caJru6HxsiMTGKnvflXHfgA2aLAPxu72pIHoCTy5Hxj\r\nAUoKM7qXUn/kQj4Ci0M/0LRF4boqd37wpbyVNeXNvqm+dLjxklf/+NHMfNL2Wvb4\r\nekHUVI8nMVPgswIcQ7q/Njf9DC+LA+/duf8m9JDjI3J6r9y1gQugdkLETGzF2Gj1\r\nToU0Pocrg6CFHImqq2z+cOeWnURrV0f0I1UWWGCb79OZxZ5oDjM9uCLRsoe8+Npg\r\nACZNf4AbnM7OUNj5TEYs6t/tUYouvTB7gH452I3EH6KWBl+ZTgCg0RFkOMazNOjn\r\n4J0yfbaPvpVgKzF2WRyn63mTO2tdLRl5s9uqMFhXmCs6IzEqBpxMKL1aS6ONZLDG\r\n5qPtpCPJnUFQEBTVlSO15QIDAQAB\r\n-----END PUBLIC KEY-----`\r\n\r\n/** Public key used to encrypt SSO user payload for the \"to\" query parameter. Replace with your own key. */\r\nconst RSA_PUBLIC_KEY_SSO = `-----BEGIN PUBLIC KEY-----\r\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAv+PThexweK9V8axQRaB3\r\nJrhYm/y2JAhED2o7V4Kpi4PpwdkcsVuACwxPt8M51idar/lBNnm12yJAvMnSRAYP\r\nGv+iYCE5VV+XPzUZuu/ho3sARxO3bCSRx9Xk0JZkd0Q7Muvy3Z74N9lML+g4DAHH\r\n1SA+tQnvk2hLwna7vd6pHfmVDROEkTTqv0EF+0cVCUhwrXcEZ7NLrs3BPWLbxzus\r\njlYsutTU0oaCeeag+xX6vbb+LFjDBvxngdlPzApUU0z9T4r/Mqbdb73e2FMrPSHO\r\nrJo+bRQ1+GE0EoFxYTyYVyOrd9bpfUhcc/ziK8Bu2M8lQk9pFs+1DGb1wC1TWklf\r\nZCHX79BPP+tyLFugqmCLm+WprtNl+Cv93VQuwue6m9UATeiWHYrA9uZ0mWHvRPuD\r\nEaXCAvT3JUDqTnuV/mTu8cAr+HWMfB7wQ+XWyi6TVAfQovMawV89Gtk5q7Ep2L89\r\nMShfennamuIRODd7IuDLN24h8laBEKz0lPATsvyS3ITHG+DdwUjU+ptGYGzGI+ps\r\nYadkX8g5DSjQs8JZvCN22ktjGRLCudvS8e0IfgzRe6QQ90NmQ3dmtC4AsatHBeM5\r\nS7wetGyB9NHx52liu+AwZqiiLk8Yf/Y2/4394Z+kE/CYVFnCMEOxRhx/Fs3QRCm2\r\npiJcd0xNaTlQZ4IcB08NBMECAwEAAQ==\r\n-----END PUBLIC KEY-----`\r\n\r\nconst DEFAULT_ORIGIN_OPTIONS: AirportResult[] = [\r\n { ac: 'AUH', an: 'Abu Dhabi International Airport', cc: 'AE', cn: 'United Arab Emirates', ct: 'Abu Dhabi' },\r\n { ac: 'CAI', an: 'Cairo International Airport', cc: 'EG', cn: 'Egypt', ct: 'Cairo' },\r\n { ac: 'DXB', an: 'Dubai International Airport', cc: 'AE', cn: 'United Arab Emirates', ct: 'Dubai' },\r\n { ac: 'RUH', an: 'King Khalid International Airport', cc: 'SA', cn: 'Saudi Arabia', ct: 'Riyadh' },\r\n { ac: 'LOS', an: 'Murtala Muhammed International Airport', cc: 'NG', cn: 'Nigeria', ct: 'Lagos' },\r\n { ac: 'LON', an: 'London All Airports', cc: 'GB', cn: 'United Kingdom', ct: 'London' },\r\n { ac: 'PAR', an: 'All Airports', cc: 'FR', cn: 'France', ct: 'Paris' },\r\n { ac: 'NYC', an: 'All airports', cc: 'US', cn: 'United States Of America', ct: 'New York' },\r\n]\r\nconst SEARCH_CONTEXT = {\r\n orgId: '',\r\n affiliateId: '',\r\n langCode: 'EN',\r\n tokenDomain: ''\r\n}\r\n\r\nconst STYLE_ELEMENT_ID = \"thsw-curated-styles\";\r\nconst PRIMEICONS_LINK_ID = \"thsw-primeicons\";\r\n\r\n/** SSO/signed-in user details to encrypt and pass as the \"to\" query parameter on search redirect. Only email is required; ts is set internally. */\r\nexport type SSOUser = {\r\n email: string;\r\n firstName?: string;\r\n lastName?: string;\r\n cc?: string;\r\n phone?: string;\r\n};\r\n\r\nexport type CuratedSearchWidgetProps = {\r\n config?: {\r\n theme?: {\r\n primary?: string;\r\n secondary?: string;\r\n primaryLight?: string;\r\n };\r\n redirectionDomain?: string;\r\n fontName?: string;\r\n };\r\n /** When provided, user details are RSA-encrypted and sent as the \"to\" query parameter on search. */\r\n ssoUser?: SSOUser;\r\n minWidth?: number | string;\r\n};\r\n\r\nconst ensureStylesInjected = () => {\r\n if (typeof document === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (document.getElementById(STYLE_ELEMENT_ID)) {\r\n return;\r\n }\r\n\r\n const style = document.createElement(\"style\");\r\n style.id = STYLE_ELEMENT_ID;\r\n style.textContent = curatedSearchWidgetStyles;\r\n document.head.appendChild(style);\r\n};\r\n\r\nconst ensurePrimeIconsLoaded = () => {\r\n if (typeof document === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (document.getElementById(PRIMEICONS_LINK_ID)) {\r\n return;\r\n }\r\n\r\n const link = document.createElement(\"link\");\r\n link.id = PRIMEICONS_LINK_ID;\r\n link.rel = \"stylesheet\";\r\n link.href = \"https://unpkg.com/primeicons@7.0.0/primeicons.css\";\r\n document.head.appendChild(link);\r\n};\r\n\r\nconst CuratedSearchWidget = ({ config, ssoUser, minWidth }: CuratedSearchWidgetProps) => {\r\n const theme = config?.theme;\r\n const primaryColor = theme?.primary ?? \"#2c0a82\";\r\n const secondaryColor = theme?.secondary ?? \"#2c0a82\";\r\n const primaryLightColor = theme?.primaryLight ?? \"#f3e2ff\";\r\n const fontName = config?.fontName;\r\n const redirectionDomain = config?.redirectionDomain;\r\n const [formData, setFormData] = useState<FormData>({\r\n origin: '',\r\n destination: '',\r\n nationality: '',\r\n departureDate: new Date(),\r\n roomsGuests: '1 Room, 2 Adult'\r\n })\r\n\r\n const [isOriginDropdownOpen, setIsOriginDropdownOpen] = useState(false)\r\n const [isDestinationDropdownOpen, setIsDestinationDropdownOpen] = useState(false)\r\n const [isNationalityDropdownOpen, setIsNationalityDropdownOpen] = useState(false)\r\n const [originQuery, setOriginQuery] = useState('')\r\n const [destinationQuery, setDestinationQuery] = useState('')\r\n const [nationalityQuery, setNationalityQuery] = useState('')\r\n const [isRoomsGuestsMenuOpen, setIsRoomsGuestsMenuOpen] = useState(false)\r\n const [fieldErrors, setFieldErrors] = useState({\r\n origin: false,\r\n destination: false,\r\n nationality: false\r\n })\r\n const originDropdownRef = useRef<HTMLDivElement>(null)\r\n const destinationDropdownRef = useRef<HTMLDivElement>(null)\r\n const nationalityDropdownRef = useRef<HTMLDivElement>(null)\r\n const roomsGuestsMenuRef = useRef<HTMLDivElement>(null)\r\n\r\n interface Room {\r\n adults: number\r\n children: number\r\n childAges: number[]\r\n }\r\n\r\n const [rooms, setRooms] = useState<Room[]>([{ adults: 2, children: 0, childAges: [] }])\r\n const [originResults, setOriginResults] = useState<AirportResult[]>([])\r\n const [isOriginLoading, setIsOriginLoading] = useState(false)\r\n const [destinationResults, setDestinationResults] = useState<PackageSearchResult[]>([])\r\n const [isDestinationLoading, setIsDestinationLoading] = useState(false)\r\n const [selectedOrigin, setSelectedOrigin] = useState<AirportResult | null>(null)\r\n const [selectedDestination, setSelectedDestination] = useState<PackageSearchResult | null>(null)\r\n const [selectedNationality, setSelectedNationality] = useState<CountryOption | null>(null)\r\n\r\n const childAgeOptions = [\r\n { label: 'Under 1', value: 0 },\r\n ...Array.from({ length: 17 }, (_, i) => ({\r\n label: `${i + 1}`,\r\n value: i + 1\r\n }))\r\n ]\r\n\r\n const getAirportDisplayText = (option: AirportResult) => {\r\n const code = option.ac ?? ''\r\n const name = option.an ?? ''\r\n const city = option.ct ?? ''\r\n const country = option.cn ?? ''\r\n const labelParts = [city, country].filter(Boolean).join(', ')\r\n if (name && code) {\r\n return `${name} (${code})`\r\n }\r\n if (labelParts && code) {\r\n return `${labelParts} (${code})`\r\n }\r\n return name || labelParts || code || ''\r\n }\r\n\r\n const getDestinationDisplayText = (option: PackageSearchResult) => {\r\n return option.search_keyword ?? ''\r\n }\r\n\r\n const sortedDestinationResults = useMemo(() => {\r\n return [...destinationResults].sort((a, b) => (b.package_count ?? 0) - (a.package_count ?? 0))\r\n }, [destinationResults])\r\n\r\n const today = new Date()\r\n today.setHours(0, 0, 0, 0)\r\n\r\n const formatQueryDate = (date: Date | null) => {\r\n if (!date) {\r\n return ''\r\n }\r\n return date.toLocaleDateString('en-GB', {\r\n day: '2-digit',\r\n month: 'short',\r\n year: 'numeric'\r\n })\r\n }\r\n\r\n const nationalityOptions: CountryOption[] = [\r\n { country_code: 'AE', country_name: 'United Arab Emirates', country_id: 'AE' },\r\n { country_code: 'US', country_name: 'United States', country_id: 'US' },\r\n { country_code: 'GB', country_name: 'United Kingdom', country_id: 'GB' },\r\n { country_code: 'IN', country_name: 'India', country_id: 'IN' },\r\n { country_code: 'PK', country_name: 'Pakistan', country_id: 'PK' },\r\n { country_code: 'BD', country_name: 'Bangladesh', country_id: 'BD' },\r\n { country_code: 'EG', country_name: 'Egypt', country_id: 'EG' },\r\n { country_code: 'SA', country_name: 'Saudi Arabia', country_id: 'SA' },\r\n { country_code: 'KW', country_name: 'Kuwait', country_id: 'KW' },\r\n { country_code: 'QA', country_name: 'Qatar', country_id: 'QA' },\r\n { country_code: 'BH', country_name: 'Bahrain', country_id: 'BH' },\r\n { country_code: 'OM', country_name: 'Oman', country_id: 'OM' },\r\n { country_code: 'JO', country_name: 'Jordan', country_id: 'JO' },\r\n { country_code: 'LB', country_name: 'Lebanon', country_id: 'LB' }\r\n ]\r\n\r\n const themeStyle = useMemo(() => {\r\n const style: React.CSSProperties = {\r\n [\"--primary\" as string]: primaryColor,\r\n [\"--secondary\" as string]: secondaryColor,\r\n [\"--primary-light\" as string]: primaryLightColor\r\n };\r\n\r\n if (fontName) {\r\n (style as Record<string, string>)[\"--font-family\"] = fontName;\r\n }\r\n\r\n if (minWidth !== undefined) {\r\n style.minWidth = typeof minWidth === \"number\" ? `${minWidth}px` : minWidth;\r\n }\r\n\r\n return style;\r\n}, [primaryColor, secondaryColor, primaryLightColor, fontName, minWidth]);\r\n\r\nuseEffect(() => {\r\n ensureStylesInjected();\r\n ensurePrimeIconsLoaded();\r\n}, []);\r\n\r\n const filteredNationalityOptions =\r\n nationalityQuery.trim().length < MIN_SEARCH_CHARS\r\n ? nationalityOptions\r\n : nationalityOptions.filter((option) =>\r\n option.country_name.toLowerCase().includes(nationalityQuery.trim().toLowerCase())\r\n )\r\n\r\n const buildRequestToken = () => {\r\n if (!redirectionDomain) {\r\n return ''\r\n }\r\n const domainKey = `${redirectionDomain}~${new Date().getTime()}`\r\n const encryptor = new JSEncrypt()\r\n encryptor.setPublicKey(RSA_PUBLIC_KEY)\r\n return encryptor.encrypt(domainKey) || ''\r\n }\r\n\r\n const buildEncryptedSSOUser = (): string => {\r\n if (!ssoUser || !ssoUser.email?.trim()) {\r\n return ''\r\n }\r\n try {\r\n const payload = {\r\n ...ssoUser,\r\n ts: new Date().toISOString()\r\n }\r\n const encryptor = new JSEncrypt()\r\n encryptor.setPublicKey(RSA_PUBLIC_KEY_SSO)\r\n return encryptor.encrypt(JSON.stringify(payload)) || ''\r\n } catch {\r\n return ''\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const target = event.target as HTMLElement\r\n\r\n // Check if click is inside a PrimeReact Dropdown panel or overlay\r\n const isInsidePrimeDropdown =\r\n target.closest('.p-sw-dropdown-panel') !== null ||\r\n target.closest('.p-sw-dropdown-items-wrapper') !== null ||\r\n target.closest('.p-sw-dropdown-item') !== null ||\r\n target.closest('.p-component')?.classList.contains('p-sw-dropdown') !== false ||\r\n target.closest('[data-pc-section=\"panel\"]') !== null ||\r\n target.closest('[data-pc-name=\"sw-dropdown\"]') !== null\r\n\r\n // Always close the three custom sw-dropdowns (origin, destination, nationality) on outside click\r\n if (originDropdownRef.current && !originDropdownRef.current.contains(target)) {\r\n setIsOriginDropdownOpen(false)\r\n }\r\n if (destinationDropdownRef.current && !destinationDropdownRef.current.contains(target)) {\r\n setIsDestinationDropdownOpen(false)\r\n }\r\n if (nationalityDropdownRef.current && !nationalityDropdownRef.current.contains(target)) {\r\n setIsNationalityDropdownOpen(false)\r\n }\r\n\r\n // Close rooms & guests menu on outside click, but not if clicking inside PrimeReact Dropdown\r\n if (!isInsidePrimeDropdown && roomsGuestsMenuRef.current && !roomsGuestsMenuRef.current.contains(target)) {\r\n setIsRoomsGuestsMenuOpen(false)\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', handleClickOutside)\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n const totalAdults = rooms.reduce((sum, room) => sum + room.adults, 0)\r\n const totalChildren = rooms.reduce((sum, room) => sum + room.children, 0)\r\n const roomsText = rooms.length === 1 ? 'Room' : 'Rooms'\r\n const adultsText = totalAdults === 1 ? 'Adult' : 'Adults'\r\n const childrenText = totalChildren === 0 ? '' : totalChildren === 1 ? `, ${totalChildren} Child` : `, ${totalChildren} Children`\r\n const displayText = `${rooms.length} ${roomsText}, ${totalAdults} ${adultsText}${childrenText}`\r\n handleInputChange('roomsGuests', displayText)\r\n }, [rooms])\r\n\r\n useEffect(() => {\r\n const query = originQuery.trim()\r\n if (query.length < MIN_SEARCH_CHARS) {\r\n setOriginResults([])\r\n return\r\n }\r\n\r\n const controller = new AbortController()\r\n const runSearch = async () => {\r\n try {\r\n setIsOriginLoading(true)\r\n const headers: Record<string, string> = {}\r\n const token = buildRequestToken()\r\n if (token) {\r\n headers.token = token\r\n }\r\n const response = await fetch(`${AIRPORT_SEARCH_URL}/${encodeURIComponent(query)}`, {\r\n method: 'GET',\r\n headers,\r\n signal: controller.signal\r\n })\r\n if (!response.ok) {\r\n throw new Error('Origin search failed')\r\n }\r\n const data = await response.json()\r\n const results = Array.isArray(data)\r\n ? data\r\n : Array.isArray(data?.data)\r\n ? data.data\r\n : Array.isArray(data?.result)\r\n ? data.result\r\n : []\r\n setOriginResults(results as AirportResult[])\r\n } catch (error) {\r\n if (!(error instanceof DOMException && error.name === 'AbortError')) {\r\n setOriginResults([])\r\n }\r\n } finally {\r\n setIsOriginLoading(false)\r\n }\r\n }\r\n\r\n const timeoutId = window.setTimeout(runSearch, 300)\r\n return () => {\r\n controller.abort()\r\n window.clearTimeout(timeoutId)\r\n }\r\n }, [originQuery])\r\n\r\n useEffect(() => {\r\n const query = destinationQuery.trim()\r\n const shouldFetchOnOpen = isDestinationDropdownOpen && query.length === 0\r\n if (query.length < MIN_SEARCH_CHARS && !shouldFetchOnOpen) {\r\n setDestinationResults([])\r\n return\r\n }\r\n\r\n const controller = new AbortController()\r\n const runSearch = async () => {\r\n try {\r\n setIsDestinationLoading(true)\r\n const fromAirport =\r\n selectedOrigin?.ac ??\r\n ''\r\n const fromCountry =\r\n selectedOrigin?.cc ??\r\n ''\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json'\r\n }\r\n const token = buildRequestToken()\r\n if (token) {\r\n headers.token = token\r\n }\r\n const response = await fetch(DESTINATION_SEARCH_URL, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify({\r\n org_id: SEARCH_CONTEXT.orgId,\r\n affiliate_id: SEARCH_CONTEXT.affiliateId,\r\n lang_code: SEARCH_CONTEXT.langCode,\r\n from_airport: fromAirport,\r\n from_country: fromCountry,\r\n search_key: shouldFetchOnOpen ? '' : query\r\n }),\r\n signal: controller.signal\r\n })\r\n if (!response.ok) {\r\n throw new Error('Destination search failed')\r\n }\r\n const data = await response.json()\r\n const results = Array.isArray(data?.Result)\r\n ? data.Result\r\n : Array.isArray(data?.result)\r\n ? data.result\r\n : Array.isArray(data?.data)\r\n ? data.data\r\n : Array.isArray(data)\r\n ? data\r\n : []\r\n setDestinationResults(results as PackageSearchResult[])\r\n } catch (error) {\r\n if (!(error instanceof DOMException && error.name === 'AbortError')) {\r\n setDestinationResults([])\r\n }\r\n } finally {\r\n setIsDestinationLoading(false)\r\n }\r\n }\r\n\r\n const timeoutId = window.setTimeout(runSearch, 300)\r\n return () => {\r\n controller.abort()\r\n window.clearTimeout(timeoutId)\r\n }\r\n }, [destinationQuery, selectedOrigin, isDestinationDropdownOpen])\r\n\r\n const handleRemoveRoom = (roomIndex: number) => {\r\n if (rooms.length <= 1) {\r\n return\r\n }\r\n const updatedRooms = rooms.filter((_, index) => index !== roomIndex)\r\n setRooms(updatedRooms)\r\n }\r\n\r\n const handleAddRoom = () => {\r\n if (rooms.length >= MAX_ROOMS) {\r\n return\r\n }\r\n setRooms([...rooms, { adults: 1, children: 0, childAges: [] }])\r\n }\r\n\r\n const handleOriginQueryChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const value = event.target.value\r\n setOriginQuery(value)\r\n setSelectedOrigin(null)\r\n handleInputChange('origin', '')\r\n if (value.trim().length > 0) {\r\n setFieldErrors((prev) => ({ ...prev, origin: false }))\r\n }\r\n }\r\n\r\n const handleDestinationQueryChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const value = event.target.value\r\n setDestinationQuery(value)\r\n setSelectedDestination(null)\r\n handleInputChange('destination', '')\r\n if (value.trim().length > 0) {\r\n setFieldErrors((prev) => ({ ...prev, destination: false }))\r\n }\r\n }\r\n\r\n const handleNationalityQueryChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const value = event.target.value\r\n setNationalityQuery(value)\r\n setSelectedNationality(null)\r\n if (value.trim().length > 0) {\r\n setFieldErrors((prev) => ({ ...prev, nationality: false }))\r\n }\r\n }\r\n\r\n const handleOriginSelect = (option: AirportResult) => {\r\n const displayText = getAirportDisplayText(option)\r\n handleInputChange('origin', displayText)\r\n setOriginQuery(displayText)\r\n setSelectedOrigin(option)\r\n setIsOriginDropdownOpen(false)\r\n setFieldErrors((prev) => ({ ...prev, origin: false }))\r\n }\r\n\r\n const handleDestinationSelect = (option: PackageSearchResult) => {\r\n const displayText = getDestinationDisplayText(option)\r\n handleInputChange('destination', displayText)\r\n setDestinationQuery(displayText)\r\n setSelectedDestination(option)\r\n setIsDestinationDropdownOpen(false)\r\n setFieldErrors((prev) => ({ ...prev, destination: false }))\r\n }\r\n\r\n const handleNationalitySelect = (option: CountryOption) => {\r\n handleInputChange('nationality', option.country_name)\r\n setNationalityQuery(option.country_name)\r\n setSelectedNationality(option)\r\n setIsNationalityDropdownOpen(false)\r\n setFieldErrors((prev) => ({ ...prev, nationality: false }))\r\n }\r\n\r\n const handleInputChange = (field: keyof FormData, value: string | Date | null): void => {\r\n setFormData(prev => ({\r\n ...prev,\r\n [field]: value\r\n }))\r\n }\r\n const handleSearch = (): void => {\r\n const params = new URLSearchParams()\r\n params.set('trip', 'hybrid-package')\r\n params.set('nc', selectedNationality?.country_code ?? '')\r\n params.set('nn', selectedNationality?.country_name ?? nationalityQuery.trim())\r\n params.set('fc', selectedOrigin?.cc ?? '')\r\n params.set('fa', selectedOrigin?.ac ?? '')\r\n params.set('lc', SEARCH_CONTEXT.langCode)\r\n params.set('curr', 'AED')\r\n params.set('time', Date.now().toString())\r\n params.set('mgcc', selectedOrigin?.cc ?? '')\r\n params.set('tskId', selectedDestination?.hybrid_package_keyword_id ?? '')\r\n params.set('tskName', selectedDestination?.search_keyword ?? '')\r\n params.set('tskCatId', '')\r\n params.set('tskCatName', '')\r\n params.set('dd', formData.departureDate ? formatQueryDate(formData.departureDate) : '')\r\n params.set('hypid', '')\r\n params.set('hbdUrl', '')\r\n params.set('type', '')\r\n params.set('psid', '')\r\n params.set('room1', rooms[0]?.adults?.toString() ?? '2')\r\n\r\n if (ssoUser) {\r\n const encryptedTo = buildEncryptedSSOUser()\r\n if (encryptedTo) {\r\n params.set('to', encryptedTo)\r\n }\r\n }\r\n\r\n const queryString = `packages/listing?${params.toString()}`\r\n if (redirectionDomain) {\r\n const domainOnly = redirectionDomain.replace(/^https?:\\/\\//i, '').split('/')[0]\r\n const normalizedDomain = `https://${domainOnly}`\r\n const redirectUrl = `${normalizedDomain}/${queryString}`\r\n window.open(redirectUrl, '_blank', 'noopener,noreferrer')\r\n }\r\n }\r\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>): void => {\r\n e.preventDefault()\r\n const originValid = originQuery.trim().length > 0\r\n const destinationValid = destinationQuery.trim().length > 0\r\n const nationalityValid = nationalityQuery.trim().length > 0 && !!selectedNationality\r\n setFieldErrors({\r\n origin: !originValid,\r\n destination: !destinationValid,\r\n nationality: !nationalityValid\r\n })\r\n if (!originValid || !destinationValid || !nationalityValid) {\r\n return\r\n }\r\n handleSearch()\r\n }\r\n return (\r\n <div className=\"sw-container\" style={themeStyle}>\r\n <div className=\"sw-card-box\">\r\n <form className=\"sw-booking-form\" onSubmit={handleSubmit}>\r\n <div className={`sw-form-field sw-pos-rel br-left ${fieldErrors.origin ? 'sw-field-error' : ''}`}>\r\n <label htmlFor=\"origin\">Flying from</label>\r\n <div className=\"sw-custom-dropdown\" ref={originDropdownRef}>\r\n <div className=\"sw-custom-dropdown-trigger\">\r\n <input\r\n value={originQuery}\r\n onChange={handleOriginQueryChange}\r\n onFocus={() => setIsOriginDropdownOpen(true)}\r\n onClick={(event) => event.currentTarget.select()}\r\n onFocusCapture={(event) => event.currentTarget.select()}\r\n placeholder=\"Origin\"\r\n />\r\n </div>\r\n {isOriginDropdownOpen && (\r\n <div className=\"sw-dropdown\">\r\n <ul className=\"sw-dropdown-list\">\r\n {isOriginLoading && (\r\n <li className=\"sw-dropdown-list-item\">\r\n <div className=\"sw-dropdown-listBox\">\r\n <h4>Searching...</h4>\r\n </div>\r\n </li>\r\n )}\r\n {!isOriginLoading &&\r\n originQuery.trim().length >= MIN_SEARCH_CHARS &&\r\n originResults.length === 0 && (\r\n <li className=\"sw-dropdown-list-item\">\r\n <div className=\"sw-dropdown-listBox\">\r\n <h4>No results found</h4>\r\n </div>\r\n </li>\r\n )}\r\n {!isOriginLoading &&\r\n (originQuery.trim().length < MIN_SEARCH_CHARS\r\n ? DEFAULT_ORIGIN_OPTIONS\r\n : originResults\r\n ).map((option, index) => (\r\n <li\r\n key={`${option.ac ?? option.an ?? ''}-${index}`}\r\n className=\"sw-dropdown-list-item \"\r\n onClick={() => handleOriginSelect(option)}\r\n >\r\n <div className=\"sw-dropdown-list-card\">\r\n {(option.ac || option.an) && (\r\n <h6 className=\"sw-dropdown-item-badge sw-en-font\">\r\n {option.ac ?? option.an}\r\n </h6>\r\n )}\r\n <div>\r\n <h5 className=\"sw-fw500 sw-text-ellipsis\">\r\n {getAirportDisplayText(option)}\r\n </h5>\r\n <h6 className=\"sw-text-label sw-text-ellipsis\">\r\n {[option.ct ?? option.cn]\r\n .filter(Boolean)\r\n .join(', ')}\r\n </h6>\r\n </div>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n <div className={`sw-form-field sw-pos-rel ${fieldErrors.destination ? 'sw-field-error' : ''}`}>\r\n <label htmlFor=\"destination\">To City/Country/Category</label>\r\n <div className=\"sw-custom-dropdown\" ref={destinationDropdownRef}>\r\n <div className=\"sw-custom-dropdown-trigger\">\r\n <input\r\n value={destinationQuery}\r\n onChange={handleDestinationQueryChange}\r\n onFocus={() => setIsDestinationDropdownOpen(true)}\r\n onClick={(event) => event.currentTarget.select()}\r\n onFocusCapture={(event) => event.currentTarget.select()}\r\n placeholder=\"Destination\"\r\n />\r\n </div>\r\n {isDestinationDropdownOpen && (\r\n <div className=\"sw-dropdown\">\r\n <ul className=\"sw-dropdown-list\">\r\n {isDestinationLoading && (\r\n <li className=\"sw-dropdown-list-item\">\r\n <div className=\"sw-dropdown-listBox\">\r\n <div className=\"sw-dropdown-text\">\r\n <h4>Searching...</h4>\r\n </div>\r\n </div>\r\n </li>\r\n )}\r\n {!isDestinationLoading &&\r\n destinationQuery.trim().length >= MIN_SEARCH_CHARS &&\r\n destinationResults.length === 0 && (\r\n <li className=\"sw-dropdown-list-item\">\r\n <div className=\"sw-dropdown-listBox\">\r\n <div className=\"sw-dropdown-text\">\r\n <h4>No results found</h4>\r\n </div>\r\n </div>\r\n </li>\r\n )}\r\n {!isDestinationLoading && sortedDestinationResults.map((option, index) => (\r\n <li\r\n key={`${option.hybrid_package_keyword_id ?? option.search_keyword ?? index}`}\r\n className=\"sw-dropdown-list-item \"\r\n onClick={() => handleDestinationSelect(option)}\r\n >\r\n <div className=\"sw-dropdown-listBox\">\r\n <div>\r\n <h5 className=\"sw-fw500 sw-text-ellipsis\">\r\n {getDestinationDisplayText(option)}\r\n </h5>\r\n {option.package_count !== undefined && (\r\n <h6 className=\"sw-text-label sw-text-ellipsis\">\r\n {option.package_count} Curated Packages\r\n </h6>\r\n )}\r\n </div>\r\n {option.search_keyword_type && (\r\n <h6 className=\"sw-dropdown-item-badge sw-en-font\">\r\n {option.search_keyword_type}\r\n </h6>\r\n )}\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n <div className={`sw-form-field sw-pos-rel ${fieldErrors.nationality ? 'sw-field-error' : ''}`}>\r\n <label htmlFor=\"nationality\">Nationality</label>\r\n <div className=\"sw-custom-dropdown\" ref={nationalityDropdownRef}>\r\n <div\r\n className=\"sw-custom-dropdown-trigger\"\r\n >\r\n <input\r\n value={nationalityQuery}\r\n onChange={handleNationalityQueryChange}\r\n onFocus={() => setIsNationalityDropdownOpen(true)}\r\n onClick={(event) => event.currentTarget.select()}\r\n onFocusCapture={(event) => event.currentTarget.select()}\r\n placeholder=\"Type to search\"\r\n />\r\n </div>\r\n {isNationalityDropdownOpen && (\r\n <div className=\"sw-dropdown\">\r\n <ul className=\"sw-dropdown-list\">\r\n {filteredNationalityOptions.length === 0 && nationalityQuery.trim().length >= MIN_SEARCH_CHARS && (\r\n <li className=\"sw-dropdown-list-item\">\r\n <div className=\"sw-dropdown-listBox\">\r\n <div>\r\n <h5 className=\"sw-fw500 sw-text-ellipsis\">No results found</h5>\r\n </div>\r\n </div>\r\n </li>\r\n )}\r\n {filteredNationalityOptions.map((option) => (\r\n <li\r\n key={option.country_id}\r\n className=\"sw-dropdown-list-item \"\r\n onClick={() => handleNationalitySelect(option)}\r\n >\r\n <div className=\"sw-dropdown-listBox\">\r\n <div>\r\n <h5 className=\"sw-fw500 sw-text-ellipsis\">{option.country_name}\r\n </h5>\r\n </div>\r\n <h6 className=\"sw-dropdown-item-badge sw-en-font\">\r\n {option.country_code}\r\n </h6>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"sw-form-field sw-pos-rel sw-com-cal sw-calendar\">\r\n <label htmlFor=\"departure\">Departure Date</label>\r\n <Calendar\r\n id=\"departure\"\r\n appendTo=\"self\"\r\n value={formData.departureDate}\r\n onChange={(e) => handleInputChange('departureDate', e.value as Date | null)}\r\n dateFormat=\"dd M yy\"\r\n minDate={today}\r\n sw-placeholder=\"29 Jan 2026\"\r\n className=\"p-inputtext-sm\"\r\n />\r\n </div>\r\n <div className=\"sw-form-field\">\r\n <label htmlFor=\"rooms\">Rooms & Guests</label>\r\n <div className=\"sw-custom-dropdown\" ref={roomsGuestsMenuRef}>\r\n <div\r\n className=\"sw-custom-dropdown-trigger\"\r\n onClick={() => setIsRoomsGuestsMenuOpen(!isRoomsGuestsMenuOpen)}\r\n >\r\n <span>\r\n {formData.roomsGuests}\r\n </span>\r\n </div>\r\n {isRoomsGuestsMenuOpen && (\r\n <div className=\"sw-rooms-guests-menu\">\r\n <h3 className=\"sw-rooms-guests-title\">Number of Travellers</h3>\r\n {rooms.map((room, index) => (\r\n <div key={index} className=\"sw-room-section\">\r\n <div className=\"sw-room-header\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"><g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\"><g transform=\"translate(-4092.000000, -824.000000)\"><g transform=\"translate(4092.000000, 824.000000)\"><rect fill=\"#FFFFFF\" opacity=\"0\" x=\"0\" y=\"0\" width=\"24\" height=\"24\"></rect><g transform=\"translate(3.000000, 6.000000)\" fill=\"var(--primary)\" fillRule=\"nonzero\"><path d=\"M18.011072,5.62815523 L18.011072,1.13048375 C18.011072,0.514180505 17.4892314,0.012765343 16.8478226,0.012765343 L2.14333676,0.012765343 C1.50192802,0.012765343 0.980087404,0.514180505 0.980087404,1.13048375 L0.980087404,5.62820217 C0.42596144,5.70920578 0,6.17002527 0,6.72475451 L0,9.50863177 C0,9.70302166 0.164015424,9.86061733 0.366323907,9.86061733 L0.75877892,9.86061733 L0.75877892,11.5970794 C0.75877892,11.7914693 0.922794344,11.949065 1.12510283,11.949065 L1.78639075,11.949065 L1.78639075,12.6268014 C1.78639075,12.8211913 1.95040617,12.978787 2.15271465,12.978787 C2.35502314,12.978787 2.51903856,12.8211913 2.51903856,12.6268014 L2.51903856,11.949065 L16.4721697,11.949065 L16.4721697,12.6268014 C16.4721697,12.8211913 16.6361362,12.978787 16.8384936,12.978787 C17.0408509,12.978787 17.2048175,12.8211913 17.2048175,12.6268014 L17.2048175,11.949065 L17.8661054,11.949065 C18.0684627,11.949065 18.2324293,11.7914693 18.2324293,11.5970794 L18.2324293,9.86061733 L18.6248355,9.86061733 C18.8271928,9.86061733 18.9911594,9.70302166 18.9911594,9.50863177 L18.9911594,6.72475451 C18.9911594,6.17002527 18.5651979,5.70915884 18.011072,5.62815523 Z M1.71268638,1.13048375 C1.71268638,0.902350181 1.90586118,0.716736462 2.14328792,0.716736462 L16.8477738,0.716736462 C17.0852005,0.716736462 17.2783753,0.902350181 17.2783753,1.13048375 L17.2783753,5.61553069 L15.99209,5.61553069 C16.2480283,5.35079061 16.5083625,5.0723935 16.7779769,4.77451986 C16.8978869,4.64203249 16.897838,4.44492058 16.777928,4.31248014 C15.7181285,3.14210469 14.8307943,2.28950181 13.6130848,1.27151264 C13.4752494,1.1562491 13.2700591,1.1562491 13.1321748,1.27151264 C11.9144165,2.28954874 11.0271311,3.14215162 9.96738046,4.31248014 C9.84747044,4.44492058 9.84742159,4.64203249 9.96733162,4.77451986 C10.2369949,5.07244043 10.4972802,5.35083755 10.7532185,5.61553069 L8.23764781,5.61553069 C8.49358612,5.35079061 8.75396915,5.0723935 9.02358355,4.77451986 C9.14349357,4.64203249 9.14349357,4.44492058 9.0235347,4.31248014 C7.96388175,3.14229242 7.07654756,2.28968953 5.85869152,1.27151264 C5.72085604,1.1562491 5.51566581,1.1562491 5.37778149,1.27151264 C4.15992545,2.28968953 3.27259126,3.14229242 2.2129383,4.31248014 C2.09297943,4.44492058 2.09297943,4.64203249 2.21288946,4.77451986 C2.4825527,5.0723935 2.74288689,5.35079061 2.99882519,5.61553069 L1.71268638,5.61553069 L1.71268638,1.13048375 Z M11.7640283,5.61553069 C11.4269614,5.28306859 11.0864756,4.92981588 10.7309949,4.54352347 C11.6067044,3.59142599 12.3820411,2.84643682 13.3726787,2.00519134 C14.3633162,2.84638989 15.138653,3.59142599 16.0144113,4.54352347 C15.6589794,4.92981588 15.3184447,5.28306859 14.9813779,5.61553069 L11.7640283,5.61553069 Z M4.0096838,5.61553069 C3.67261697,5.28302166 3.33208226,4.92981588 2.97660154,4.54352347 C3.85216452,3.59161372 4.62764781,2.84648375 5.61833419,2.00519134 C6.60902057,2.84648375 7.38450386,3.59161372 8.26006684,4.54352347 C7.90463496,4.92981588 7.56410026,5.28302166 7.22698458,5.61553069 L4.0096838,5.61553069 Z M17.4997815,11.2450939 L1.49142674,11.2450939 L1.49142674,9.86061733 L17.4997815,9.86061733 L17.4997815,11.2450939 Z M18.2585116,9.15664621 L0.732647815,9.15664621 L0.732647815,6.72475451 C0.732647815,6.50131408 0.921866324,6.31950181 1.15445758,6.31950181 L17.8367018,6.31950181 C18.0692931,6.31950181 18.2585116,6.50131408 18.2585116,6.72475451 L18.2585116,9.15664621 Z\"></path></g></g></g></g></svg>\r\n Room {index + 1}\r\n </div>\r\n <div className=\"sw-room-controls-group\">\r\n <div className=\"sw-room-control-item\">\r\n <div className=\"sw-room-control-label\">\r\n <span>Adult (18+ years)</span>\r\n </div>\r\n <div className=\"sw-room-control-buttons\">\r\n <button\r\n type=\"button\"\r\n className={`sw-count-button ${room.adults === 1 ? 'sw-disabled' : 'active'}`}\r\n onClick={() => {\r\n const newRooms = [...rooms]\r\n newRooms[index].adults = Math.max(1, newRooms[index].adults - 1)\r\n setRooms(newRooms)\r\n }}\r\n disabled={room.adults === 1}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" fill=\"var(--sw-white)\" viewBox=\"0 -960 960 960\"><path d=\"M200-440v-80h560v80H200Z\"></path></svg>\r\n\r\n </button>\r\n <span className=\"sw-count-value\">{room.adults}</span>\r\n <button\r\n type=\"button\"\r\n className={`sw-count-button ${room.adults >= MAX_ADULTS_PER_ROOM ? 'sw-disabled' : 'sw-active'}`}\r\n onClick={() => {\r\n if (room.adults >= MAX_ADULTS_PER_ROOM) {\r\n return\r\n }\r\n const newRooms = [...rooms]\r\n newRooms[index].adults += 1\r\n setRooms(newRooms)\r\n }}\r\n disabled={room.adults >= MAX_ADULTS_PER_ROOM}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" fill=\"var(--sw-white)\" viewBox=\"0 -960 960 960\"><path d=\"M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z\"></path></svg>\r\n\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"sw-room-control-item\">\r\n <div className=\"sw-room-control-label\">\r\n <span>Child (0-17 years)</span>\r\n </div>\r\n <div className=\"sw-room-control-buttons\">\r\n <button\r\n type=\"button\"\r\n className={`sw-count-button ${room.children === 0 ? 'sw-disabled' : 'active'}`}\r\n onClick={() => {\r\n const newRooms = [...rooms]\r\n newRooms[index].children = Math.max(0, newRooms[index].children - 1)\r\n newRooms[index].childAges = newRooms[index].childAges.slice(0, -1)\r\n setRooms(newRooms)\r\n }}\r\n disabled={room.children === 0}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" fill=\"var(--sw-white)\" viewBox=\"0 -960 960 960\"><path d=\"M200-440v-80h560v80H200Z\"></path></svg>\r\n\r\n </button>\r\n <span className=\"sw-count-value\">{room.children}</span>\r\n <button\r\n type=\"button\"\r\n className={`sw-count-button ${room.children >= MAX_CHILDREN_PER_ROOM ? 'sw-disabled' : ''}`}\r\n onClick={() => {\r\n if (room.children >= MAX_CHILDREN_PER_ROOM) {\r\n return\r\n }\r\n const newRooms = [...rooms]\r\n newRooms[index].children += 1\r\n newRooms[index].childAges = [...newRooms[index].childAges, 0]\r\n setRooms(newRooms)\r\n }}\r\n disabled={room.children >= MAX_CHILDREN_PER_ROOM}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" fill=\"var(--sw-white)\" viewBox=\"0 -960 960 960\"><path d=\"M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z\"></path></svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n\r\n {room.children > 0 && (\r\n <div className=\"sw-room-controls-child\">\r\n {Array.from({ length: room.children }).map((_, childIndex) => (\r\n <span key={childIndex} className=\"sw-room-control-label\">\r\n Child {childIndex + 1}\r\n </span>\r\n ))}\r\n </div>\r\n )}\r\n <div className=\"sw-room-controls-child\">\r\n {Array.from({ length: room.children }).map((_, childIndex) => (\r\n <Dropdown\r\n key={childIndex}\r\n value={room.childAges[childIndex] ?? 0}\r\n options={childAgeOptions}\r\n onChange={(e) => {\r\n const newRooms = [...rooms]\r\n newRooms[index].childAges[childIndex] = e.value\r\n setRooms(newRooms)\r\n }}\r\n sw-placeholder=\"Age\"\r\n className=\"child-age-sw-dropdown\"\r\n appendTo=\"self\"\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n {rooms.length > 1 && index > 0 && (\r\n <button\r\n type=\"button\"\r\n className=\"sw-remove-room-button\"\r\n onClick={() => handleRemoveRoom(index)}\r\n aria-label={`Remove Room ${index + 1}`}\r\n >\r\n ×\r\n </button>\r\n )}\r\n </div>\r\n ))}\r\n\r\n <div className=\"sw-rooms-guests-footer\">\r\n {rooms.length < MAX_ROOMS && (\r\n <button\r\n type=\"button\"\r\n className=\"sw-add-room-button\"\r\n onClick={handleAddRoom}\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0 0h16v16H0z\"></path><path d=\"M15 7H9V1H7v6H1v2h6v6h2V9h6z\"></path></svg>\r\n Add another room\r\n </button>\r\n )}\r\n <div className=\"sw-rooms-guests-cta\">\r\n <button\r\n type=\"button\"\r\n className=\"sw-reset-button\"\r\n onClick={() => setRooms([{ adults: 2, children: 0, childAges: [] }])}\r\n >\r\n Reset\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"sw-apply-button\"\r\n onClick={() => setIsRoomsGuestsMenuOpen(false)}\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n <Button\r\n type=\"submit\"\r\n label=\"Search\"\r\n icon=\"pi pi-search\"\r\n className=\"sw-search-button br-right\"\r\n />\r\n </form>\r\n </div>\r\n </div>\r\n )\r\n}\r\nexport default CuratedSearchWidget\r\n","export const curatedSearchWidgetStyles = `\r\n:root{\r\n --sw-font-family: Montserrat, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\r\n --sw-en-font-family: Arial, sans-serif;\r\n --sw-label-color: #66797F;\r\n --sw-body-text: #0B1215;\r\n --sw-btn-radius: 8px;\r\n --sw-radius: var(--sw-size-md-1);\r\n --sw-primary-btn: #2C0A82;\r\n --sw-primary-button-text: #ffffff;\r\n --sw-button-primary-border: #2C0A82;\r\n --sw-form-border: #d8dcde;\r\n --sw-white: #ffffff;\r\n --sw-gray: #999;\r\n --sw-error: #f60b0b;\r\n --sw-widget-bg: #f5f5f8;\r\n --sw-widget-font-size: 1.4rem;\r\n --sw-widget-z-index-base: 1000;\r\n --sw-widget-transition: all 0.2s ease;\r\n --sw-widget-shadow: 0 var(--sw-size-sm) 8px rgba(0, 0, 0, 0.1);\r\n --sw-widget-shadow-hover: 0 4px var(--sw-size-md-1) rgba(0, 0, 0, 0.15);\r\n --sw-space-sm: 2px;\r\n --sw-space-md: 10px;\r\n --sw-space-lg: 20px;\r\n --sw-size-sm: 2px;\r\n --sw-size-md: 10px;\r\n --sw-size-md-1: 12px;\r\n --sw-size-md-2: 14px;\r\n --sw-size-md-3: 16px;\r\n --sw-size-md-4: 18px;\r\n --sw-size-lg: 20px;\r\n}\r\n.sw-container {\r\n contain: layout;\r\n position: relative;\r\n display: block;\r\n width: 100%;\r\n min-width: 1240px;\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n color: var(--sw-body-text);\r\n font-family: var(--sw-font-family);\r\n font-size: var(--sw-widget-font-size);\r\n font-weight: 400;\r\n line-height: 1.5;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n -webkit-tap-highlight-color: transparent;\r\n background: var(--sw-widget-bg);\r\n *,\r\n *::before,\r\n *::after {\r\n box-sizing: border-box;\r\n }\r\n}\r\n.sw-container button,\r\n.sw-container input {\r\n font-family: var(--sw-font-family);\r\n}\r\n.sw-container h1,\r\n.sw-container h2,\r\n.sw-container h3,\r\n.sw-container h4,\r\n.sw-container h5,\r\n.sw-container h6,\r\n.sw-container p {\r\n display: block;\r\n margin: 0;\r\n color: inherit;\r\n font-family: var(--sw-font-family);\r\n font-weight: normal;\r\n line-height: 1.4;\r\n}\r\n.sw-container h1 {\r\n font-size: 22px;\r\n}\r\n.sw-container h2 {\r\n font-size: 20px;\r\n}\r\n.sw-container h3 {\r\n font-size: 18px;\r\n}\r\n.sw-container h4 {\r\n font-size: 16px;\r\n}\r\n.sw-container h5 {\r\n font-size: 14px;\r\n}\r\n.sw-container h6,\r\n.sw-container small {\r\n font-size: 12px;\r\n}\r\n.sw-container .sw-fw500 {\r\n font-weight: 500 !important;\r\n}\r\n.sw-container .sw-flex {\r\n display: flex;\r\n}\r\n.sw-container .sw-align-center {\r\n display: flex;\r\n align-items: center;\r\n}\r\n.sw-container .sw-gap-5 {\r\n gap: 5px;\r\n}\r\n.sw-container .sw-gap-15 {\r\n gap: 15px;\r\n}\r\n.sw-container .sw-justify-between {\r\n justify-content: space-between;\r\n}\r\n.sw-container .enFont{\r\n font-family: var(--sw-en-font-family);\r\n}\r\n.sw-container .sw-text-ellipsis {\r\n display: -webkit-box;\r\n overflow: hidden;\r\n -webkit-box-orient: vertical;\r\n text-overflow: ellipsis;\r\n}\r\n.sw-container .sw-text-label {\r\n color: var(--sw-label-color);\r\n}\r\n.sw-booking-form {\r\n position: relative;\r\n display: grid;\r\n grid-template-columns: 1fr repeat(4, minmax(0, 1fr)) minmax(80px, 0.8fr);\r\n gap: var(--sw-space-sm);\r\n min-height: 55px;\r\n min-width: 0; \r\n border-radius: var(--sw-radius);\r\n overflow: visible; \r\n}\r\n.sw-card-box {\r\n position: relative;\r\n display: block;\r\n padding: 20px;\r\n background-color: var(--sw-white);\r\n border-radius: var(--sw-radius);\r\n}\r\n.sw-card-box .br-right{\r\n border-top-right-radius: var(--sw-radius);\r\n border-bottom-right-radius: var(--sw-radius);\r\n}\r\n.sw-card-box .br-left{\r\n border-top-left-radius: var(--sw-radius);\r\n border-bottom-left-radius: var(--sw-radius);\r\n}\r\n.sw-com-cal .p-disabled{\r\n opacity: 0.3;\r\n}\r\n.sw-form-field {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1 1 auto; \r\n gap: 3px;\r\n padding: 10px 15px;\r\n background-color: #f8f8f8;\r\n min-width: 0; \r\n overflow: visible; \r\n}\r\n.sw-form-field .p-calendar {\r\n position: unset;\r\n}\r\n.sw-form-field label {\r\n display: block;\r\n width: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n color: var(--sw-label-color);\r\n font-size: 12px;\r\n font-weight: 500;\r\n -webkit-box-orient: vertical;\r\n text-overflow: ellipsis;\r\n text-align: initial;\r\n}\r\n.p-button-label {\r\n flex: unset;\r\n}\r\n.sw-form-field input,\r\n.sw-form-field .p-inputtext {\r\n display: block;\r\n width: 100%;\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: 0;\r\n outline: none;\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--sw-body-text);\r\n font-size: 14px;\r\n font-weight: 500;\r\n}\r\n.sw-form-field input::placeholder,\r\n.sw-form-field .p-inputtext::placeholder {\r\n color: var(--sw-label-color) !important;\r\n}\r\n.sw-form-swap {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n z-index: 2;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 3px;\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: 50%;\r\n background-color: #fff;\r\n cursor: pointer;\r\n transform: translate(-50%, -50%);\r\n}\r\n.sw-srh-wrap.sw-srh-box.sw-pos-rel .sw-form-field.sw-pos-rel:last-child {\r\npadding-inline-start: 25px;\r\n}\r\n.sw-custom-dropdown {\r\n display: block;\r\n width: 100%;\r\n}\r\n.sw-dropdown-text{\r\n margin: 0 20px;\r\n padding: 10px 0;\r\n cursor: pointer;\r\n font-family: var(--sw-font-family);\r\n font-weight: 500;\r\n}\r\n.sw-custom-dropdown-trigger {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n flex: 1 1 auto; \r\n width: 100%;\r\n min-width: 0; \r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n outline: none;\r\n background: transparent;\r\n cursor: pointer;\r\n color: var(--sw-body-text);\r\n font-size: 14px;\r\n font-weight: 500;\r\n}\r\n.sw-custom-dropdown-trigger .sw-placeholder {\r\n color: var(--sw-label-color);\r\n}\r\n.sw-dropdown-arrow {\r\n margin-left: 8px;\r\n color: var(--sw-label-color);\r\n font-size: 10px;\r\n transition: transform 0.2s ease;\r\n}\r\n.sw-dropdown{\r\n position: absolute;\r\n top: calc(100% + 5px);\r\n left: 0;\r\n right: 0;\r\n z-index: calc(var(--sw-widget-z-index-base) + 5);\r\n display: block; \r\n visibility: visible; \r\n opacity: 1; \r\n}\r\n.sw-dropdown,\r\n.p-autocomplete-panel {\r\n width: 380px;\r\n max-height: 310px;\r\n margin: 0;\r\n padding: 0;\r\n overflow: auto;\r\n overflow-x: hidden;\r\n background: var(--sw-white);\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: var(--sw-radius);\r\n box-shadow: var(--sw-widget-shadow);\r\n}\r\n.sw-dropdown::-webkit-scrollbar {\r\n display: none;\r\n}\r\n.sw-dropdown-list-card,\r\n.sw-dropdown-list-box,\r\n.p-autocomplete-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 15px;\r\n margin: 0 20px;\r\n padding: 10px 0;\r\n cursor: pointer;\r\n font-family: var(--sw-font-family);\r\n}\r\n.p-autocomplete-item{\r\n font-size: 14px;\r\n font-weight: 400;\r\n}\r\n.p-autocomplete-item:hover{\r\n background-color: var(--primary-light);\r\n}\r\n.sw-dropdown-list-box {\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n.sw-dropdown-list-card {\r\n display: grid;\r\n grid-template-columns: 45px auto;\r\n}\r\n.sw-dropdown-item-badge {\r\n display: grid;\r\n place-items: center;\r\n width: fit-content;\r\n height: unset;\r\n margin: 0;\r\n padding: 4px 8px;\r\n background-color: #eaeaea;\r\n border-radius: 4px;\r\n font-weight: 500;\r\n}\r\n.sw-dropdown-listBox{\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n gap: 10px;\r\n margin: 0 20px;\r\n padding: 10px 0;\r\n}\r\n.sw-dropdown-list {\r\n display: block;\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n}\r\n.sw-dropdown-list-item {\r\n display: block;\r\n margin: 0;\r\n padding: 0;\r\n cursor: pointer;\r\n color: var(--sw-body-text);\r\n font-size: 14px;\r\n transition: background-color 0.2s ease;\r\n}\r\n.sw-current {\r\n font-weight: 500;\r\n}\r\n.sw-en-font {\r\n font-family: Arial, sans-serif; \r\n}\r\n.sw-bg-color-loc {\r\n color: var(--primary);\r\n}\r\n.sw-scale-rotate {\r\n transition: transform 0.2s ease;\r\n}\r\n.sw-custom-dropdown-item:hover {\r\n background-color: var(--secondary-light);\r\n}\r\n.sw-custom-dropdown-item:first-child {\r\n border-top-left-radius: var(--sw-btn-radius);\r\n border-top-right-radius: var(--sw-btn-radius);\r\n}\r\n.sw-custom-dropdown-item:last-child {\r\n border-bottom-left-radius: var(--sw-btn-radius);\r\n border-bottom-right-radius: var(--sw-btn-radius);\r\n}\r\n.sw-rooms-guests-menu {\r\n position: absolute;\r\n top: 100%;\r\n right: 0;\r\n z-index: var(--sw-widget-z-index-base);\r\n display: block;\r\n width: 75%;\r\n margin-top: 4px;\r\n padding: 20px;\r\n background: var(--sw-white);\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: var(--sw-radius);\r\n box-shadow: var(--sw-widget-shadow);\r\n}\r\n.sw-pos-rel {\r\n position: relative;\r\n}\r\n.sw-rooms-guests-title {\r\n margin: 0 0 15px 0 !important;\r\n font-size: 16px !important;\r\n font-weight: 500 !important;\r\n}\r\n.sw-room-section {\r\n display: grid;\r\n grid-template-columns: 1.2fr 3fr 4fr 50px;\r\n align-items: center;\r\n padding: 10px 0;\r\n}\r\n.sw-pb0 {\r\n padding-bottom: 0;\r\n}\r\n.sw-room-section:last-of-type {\r\n margin-bottom: 15px;\r\n}\r\n.sw-room-header {\r\n display: flex;\r\n align-items: center;\r\n gap: 5px;\r\n color: var(--primary);\r\n font-size: 14px;\r\n font-weight: 500;\r\n}\r\n.sw-room-controls-child {\r\n display: grid;\r\n grid-template-columns: repeat(4, minmax(0, 1fr));\r\n gap: var(--sw-space-lg);\r\n min-width: 0; \r\n}\r\n.sw-room-controls-child .p-dropdown {\r\n padding: 10px;\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: var(--sw-radius);\r\n}\r\n.sw-room-controls-child .p-dropdown-item {\r\n padding: 10px;\r\n font-size: 14px;\r\n}\r\n.sw-room-controls-child .p-dropdown-panel {\r\n background: var(--sw-white);\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: var(--sw-btn-radius);\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n}\r\n.sw-room-controls-group {\r\n display: grid;\r\n grid-template-columns: repeat(2, minmax(0, 1fr));\r\n justify-content: center;\r\n gap: var(--sw-space-md);\r\n min-width: 0; \r\n}\r\n.sw-room-control-item {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1 1 auto; \r\n justify-content: space-between;\r\n gap: var(--sw-space-sm);\r\n min-width: 0; \r\n}\r\n.sw-room-control-label {\r\n color: var(--sw-body-text);\r\n font-size: 14px;\r\n font-weight: 400;\r\n}\r\n.sw-room-control-buttons {\r\n display: grid;\r\n grid-template-columns: 36px 40px 36px;\r\n align-items: center;\r\n overflow: hidden;\r\n}\r\n.sw-count-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 36px;\r\n height: 36px;\r\n margin: 0;\r\n padding: 0;\r\n border: none;\r\n border-radius: 50%;\r\n background: var(--primary);\r\n cursor: pointer;\r\n color: var(--sw-white);\r\n font-size: 20px;\r\n font-weight: 500;\r\n transition: var(--sw-widget-transition);\r\n}\r\n.sw-count-button:focus-visible {\r\n outline: none;\r\n}\r\n.sw-count-button.sw-disabled {\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n}\r\n.sw-count-button:disabled {\r\n cursor: not-allowed;\r\n}\r\n.sw-count-value {\r\n min-width: 30px;\r\n text-align: center;\r\n color: var(--sw-body-text);\r\n font-size: 16px;\r\n font-weight: 500;\r\n}\r\n.sw-add-room-button {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n width: auto;\r\n height: 40px;\r\n margin: 0 !important;\r\n padding: 1rem;\r\n border: 1px solid var(--primary);\r\n border-radius: var(--sw-radius);\r\n background-color: transparent;\r\n cursor: pointer;\r\n color: var(--primary);\r\n font-size: 14px;\r\n font-weight: 500;\r\n svg{\r\n fill: var(--primary);\r\n }\r\n}\r\n.sw-rooms-guests-cta {\r\n display: flex;\r\n gap: 10px;\r\n}\r\n.sw-rooms-guests-footer {\r\n display: flex;\r\n justify-content: space-between;\r\n gap: 10px;\r\n margin-top: 15px;\r\n padding-top: 15px;\r\n border-top: 1px solid var(--sw-form-border);\r\n}\r\n.sw-reset-button {\r\n padding: 10px 20px;\r\n border: 1px solid var(--primary);\r\n border-radius: var(--sw-btn-radius);\r\n background: transparent;\r\n cursor: pointer;\r\n color: var(--primary);\r\n font-size: 14px;\r\n font-weight: 500;\r\n transition: all 0.2s ease;\r\n}\r\n.sw-apply-button {\r\n padding: 10px 20px;\r\n border: 1px solid var(--sw-button-primary-border);\r\n border-radius: var(--sw-btn-radius);\r\n background: var(--sw-primary-btn);\r\n cursor: pointer;\r\n color: var(--sw-primary-button-text);\r\n font-size: 14px;\r\n font-weight: 500;\r\n transition: all 0.2s ease;\r\n}\r\n.sw-search-button,\r\n.sw-search-button.p-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 10px;\r\n width: auto;\r\n height: 100%;\r\n min-height: 56px;\r\n margin: 0;\r\n padding: 0 15px;\r\n border: 1px solid var(--sw-button-primary-border);\r\n background-color: var(--sw-primary-btn);\r\n cursor: pointer;\r\n color: var(--sw-primary-button-text);\r\n font-size: 16px;\r\n font-weight: 400;\r\n transition: var(--sw-widget-transition);\r\n}\r\n.sw-search-button:focus-visible,\r\n.sw-search-button.p-button:focus-visible {\r\n outline: 2px solid var(--primary);\r\n outline-offset: 2px;\r\n}\r\n.sw-search-button .p-button-icon-left {\r\n margin: 0;\r\n}\r\n.sw-search-button svg,\r\n.sw-search-button .p-button-icon {\r\n flex-shrink: 0;\r\n}\r\n.p-calendar .p-datepicker { \r\n top: 100% !important;\r\n display: block;\r\n min-width: 100%;\r\n margin-top: 5px !important;\r\n padding: 15px;\r\n background-color: var(--sw-white);\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: var(--sw-radius);\r\n box-shadow: var(--sw-widget-shadow);\r\n}\r\n.sw-srh-wrap {\r\n display: flex;\r\n gap: 2px;\r\n}\r\n.sw-com-cal p{\r\n color: var(--sw-body-text);\r\n font-size: 14px;\r\n font-weight: 500;\r\n}\r\n.sw-com-cal .p-inputtext{\r\n visibility: hidden;\r\n height: 0;\r\n width: 0;\r\n ;\r\n}\r\n.sw-calendar .p-inputtext{\r\n visibility: visible;\r\n height: auto;\r\n width: auto;\r\n}\r\n.p-datepicker-header {\r\n padding-bottom: 15px;\r\n}\r\n.p-datepicker-prev[style=\"visibility: hidden;\"]::after,\r\n.p-datepicker-next[style=\"visibility: hidden;\"]::after {\r\n visibility: hidden !important;\r\n}\r\n.p-datepicker-prev,\r\n.p-datepicker-next {\r\n cursor: pointer;\r\n\r\n}\r\n.p-datepicker-prev::after,\r\n.p-datepicker-next::after {\r\n content: \"\";\r\n display: block;\r\n width: 14px;\r\n height: 14px;\r\n visibility: visible;\r\n background-image: url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'><path fill='%231b1a1f' d='m222.927 580.115 301.354 328.512c24.354 28.708 20.825 71.724-7.883 96.078s-71.724 20.825-96.078-7.883L19.576 559.963a67.9 67.9 0 0 1-13.784-20.022 68 68 0 0 1-5.977-29.488l.001-.063a68.34 68.34 0 0 1 7.265-29.134 68 68 0 0 1 1.384-2.6 67.6 67.6 0 0 1 10.102-13.687L429.966 21.113c25.592-27.611 68.721-29.247 96.331-3.656s29.247 68.721 3.656 96.331L224.088 443.784h730.46c37.647 0 68.166 30.519 68.166 68.166s-30.519 68.166-68.166 68.166z'/></svg>\");\r\n}\r\n.p-datepicker-header button {\r\n margin: 0;\r\n padding: 0 5px;\r\n border: 0;\r\n border-color: var(--sw-white);\r\n outline: none;\r\n background: transparent;\r\n color: var(--sw-body-text);\r\n font-size: 16px;\r\n font-weight: 500;\r\n line-height: 20px;\r\n}\r\n.p-datepicker-header button .p-icon {\r\n display: none;\r\n}\r\n.p-datepicker .p-datepicker-next {\r\n transform: rotate(180deg);\r\n}\r\n.p-datepicker .p-datepicker-header button {\r\n border: 0;\r\n border-color: var(--sw-white);\r\n outline: none;\r\n box-shadow: none !important;\r\n background: transparent;\r\n color: var(--sw-body-text);\r\n font-size: 16px;\r\n font-weight: 500;\r\n line-height: 20px;\r\n}\r\n.p-datepicker .p-datepicker-calendar-container th {\r\n padding: 10px 0;\r\n color: var(--sw-body-text);\r\n font-size: 14px;\r\n font-weight: 400;\r\n line-height: 1.4;\r\n}\r\n.p-datepicker .p-datepicker-calendar-container td {\r\n padding: 0;\r\n}\r\n.p-datepicker .p-datepicker-calendar-container td span {\r\n padding: 10px 0;\r\n border-radius: 0;\r\n font-size: 14px;\r\n width: 45px;\r\n height: 45px;\r\n}\r\n.p-datepicker-group-container .p-datepicker-group:not(:last-child) {\r\n border-inline-end: 1px solid var(--sw-form-border);\r\n padding-inline-end: 10px;\r\n margin-inline-end: 10px;\r\n}\r\n.p-datepicker-other-month span{\r\n opacity: 0;\r\n}\r\n.p-datepicker .p-highlight {\r\n position: relative;\r\n background: var(--primary) !important;\r\n color: var(--sw-white) !important;\r\n}\r\n.sw-product-tabs {\r\n position: relative;\r\n z-index: 1;\r\n}\r\n.sw-product-tabs .p-tabview-nav {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 10px;\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n}\r\n.sw-product-tabs .sw-product-list {\r\n position: relative;\r\n gap: 10px;\r\n padding: 0 10px 10px;\r\n border: 0 !important;\r\n border-radius: 0;\r\n cursor: pointer;\r\n}\r\n.p-tabview-selected .sw-product-list:before {\r\n content: \"\";\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n inset-inline-start: 0;\r\n width: 100%;\r\n border: 2px solid var(--primary) !important;\r\n border-radius: 40px;\r\n}\r\n.p-tabview-ink-bar {\r\n display: none;\r\n}\r\n.sw-advanced-search-options .p-accordion-header-link {\r\n display: flex;\r\n flex-direction: row-reverse;\r\n gap: 10px;\r\n width: fit-content;\r\n margin-top: 15px;\r\n color: var(--sw-body-text);\r\n font-size: 14px;\r\n}\r\n.sw-advanced-search-options .p-toggleable-content {\r\n margin-top: 20px;\r\n}\r\n.sw-advanced-search-options .p-accordion-content .sw-hsrh-advan-cont:not(:last-child) {\r\n margin-bottom: 16px;\r\n}\r\n.sw-advanced-search-options .p-accordion-header-link svg {\r\n transform: rotate(90deg);\r\n}\r\n.sw-advanced-search-options .p-accordion-header-link[aria-expanded=\"true\"] svg {\r\n transform: scale(-1);\r\n}\r\n.sw-material-checkbox {\r\n position: relative;\r\n display: inline-flex;\r\n gap: 10px;\r\n cursor: pointer;\r\n user-select: none;\r\n color: var(--sw-body-text);\r\n font-size: 14px;\r\n}\r\n.sw-material-checkbox input {\r\n display: none;\r\n}\r\n.sw-material-checkbox input:checked + .sw-checkmark {\r\n background-color: var(--primary);\r\n border-color: var(--primary);\r\n}\r\n.sw-material-checkbox input:checked + .sw-checkmark::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n left: 6px;\r\n display: block;\r\n width: 6px;\r\n height: 11px;\r\n border: solid #fff;\r\n border-width: 0 2px 2px 0;\r\n transform: rotate(45deg);\r\n}\r\n.sw-material-checkbox .sw-checkmark {\r\n position: relative;\r\n display: inline-block;\r\n width: 20px;\r\n min-width: 20px;\r\n height: 20px;\r\n background-color: #fff;\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: 4px;\r\n transition: background-color 0.3s, border-color 0.3s;\r\n}\r\n.sw-material-checkbox .sw-checkmark::after {\r\n content: \"\";\r\n position: absolute;\r\n display: none;\r\n}\r\n.sw-tab-checkbox {\r\n display: flex;\r\n cursor: pointer;\r\n -webkit-user-select: none;\r\n user-select: none;\r\n}\r\n.sw-tab-checkbox input {\r\n display: none;\r\n}\r\n.sw-tab-checkbox input:checked + .sw-tab-content,\r\n.sw-tab-checkbox input[type=radio]:checked + .sw-tab-content {\r\n border: 1px solid var(--primary);\r\n background-color: var(--primary-light);\r\n color: var(--primary);\r\n}\r\n.sw-tab-content {\r\n height: 40px;\r\n padding: 6px 15px;\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: var(--sw-radius);\r\n align-content: center;\r\n}\r\n@media print {\r\n .sw-container {\r\n display: none;\r\n }\r\n}\r\n.sw-dropdown,\r\n.sw-rooms-guests-menu,\r\n.p-calendar .p-datepicker {\r\n will-change: transform, opacity;\r\n transform: translateZ(0);\r\n}\r\n.sw-dropdown {\r\n -webkit-overflow-scrolling: touch;\r\n scroll-behavior: smooth;\r\n}\r\n.sw-container img {\r\n max-width: 100%;\r\n height: auto;\r\n}\r\n.sw-container svg {\r\n max-width: 100%;\r\n height: auto;\r\n}\r\n.sw-container {\r\n isolation: isolate;\r\n}\r\n.sw-srh-grid {\r\n display: grid;\r\n grid-template-columns: minmax(200px, 2fr) minmax(100px, 1fr) minmax(80px, 0.6fr) minmax(60px, 0.4fr);\r\n gap: var(--sw-space-sm, 2px);\r\n margin-top: 15px;\r\n border-radius: var(--sw-radius);\r\n min-width: 0; \r\n overflow: visible; \r\n}\r\n.sw-srh-wrap .sw-form-field {\r\n flex: 1 1 50%; \r\n min-width: 0; \r\n justify-content: center;\r\n}\r\n.sw-add-return-label label {\r\n color: var(--primary) !important;\r\n}\r\n.sw-srh-main-head {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 15px;\r\n}\r\n.sw-srh-head {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n.sw-srh-round-text {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n height: 40px;\r\n}\r\n.sw-remove-segment{\r\n fill: var(--primary);\r\n cursor: pointer;\r\n display: grid;\r\n place-content: center;\r\n position: absolute;\r\n z-index: 2;\r\n border-radius: 50%;\r\n inset-inline-end: 12px;\r\n border: 1px solid var(--primary);\r\n width: 22px;\r\n height: 22px;\r\n top: 19px;\r\n svg{\r\n width: 22px;\r\n height: 22px;\r\n }\r\n}\r\n.sw-srh-mc .sw-srh-wrap.sw-srh-box{\r\n position: relative;\r\n}\r\n.sw-srh-mc {\r\n grid-template-columns: 6.3fr 2.5fr 1.15fr !important;\r\n min-width: 0; \r\n}\r\n.sw-srh-mc .sw-com-cal .p-inputtext{\r\n visibility: visible !important;\r\n height: auto !important;\r\n width: auto !important;\r\n}\r\n.sw-srh-mc .sw-srh-wrap.sw-pos-rel:nth-child(3){\r\n flex-basis: 30%;\r\n}\r\n.sw-srh-mc .sw-srh-mc-foot {\r\n display: flex;\r\n align-items: flex-end;\r\n width: fit-content;\r\n grid-column-start: 2;\r\n}\r\n.sw-srh-mc .sw-srh-mc-foot button {\r\n display: flex;\r\n align-items: center;\r\n gap: 7px;\r\n margin-inline-start: 5px;\r\n padding: 8px 10px;\r\n border: 1px solid var(--primary);\r\n border-radius: 30px;\r\n background-color: transparent;\r\n color: var(--primary);\r\n font-size: 14px;\r\n}\r\n.sw-srh-mc .sw-srh-mc-foot button svg {\r\n fill: var(--primary);\r\n}\r\n.sw-srh-mc .sw-srh-add-btn {\r\n display: flex;\r\n align-items: center;\r\n gap: 7px;\r\n margin-inline-start: 5px;\r\n padding: 0.8rem 1rem;\r\n border-radius: 30px;\r\n color: var(--primary);\r\n font-size: 1.4rem;\r\n}\r\n.sw-srh-mc .sw-traveller {\r\n grid-row-start: 1;\r\n grid-column-start: 2;\r\n}\r\n.sw-srh-mc button {\r\n grid-row-start: 1;\r\n grid-column-start: 3;\r\n}\r\n.sw-srh-box {\r\n grid-column-start: 1;\r\n}\r\n.p-autocomplete-multiple-container {\r\n width: 100%;\r\n min-width: 270px;\r\n padding: 10px;\r\n padding-inline-end: 2rem;\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: var(--sw-radius);\r\n gap: 0.5rem;\r\n font-size: 14px;\r\n}\r\n.p-autocomplete-multiple-container .p-autocomplete-token {\r\n padding: 5px 8px;\r\n border-radius: 5px;\r\n background: var(--primary-light);\r\n gap: 5px;\r\n color: var(--primary);\r\n}\r\n.p-autocomplete-token .p-autocomplete-token-label{\r\n font-size: 12px;\r\n font-weight: 400;\r\n}\r\n.sw-fsrh-adv-cont {\r\n display: flex;\r\n align-items: center;\r\n gap: 20px;\r\n}\r\n.sw-fsrh-chk-main {\r\n display: flex;\r\n gap: 20px;\r\n font-size: 1.4rem;\r\n font-weight: 400;\r\n}\r\n.sw-srh-pax {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n.sw-srh-pax:not(:last-child) {\r\n margin-bottom: 15px;\r\n}\r\n.sw-srh-common-adult {\r\n width: 92px;\r\n}\r\n.sw-srh-pax h3 {\r\n font-size: 14px;\r\n}\r\n.sw-srh-pax p {\r\n color: var(--sw-label-color);\r\n font-size: 12px;\r\n}\r\n.sw-srh-button-wrapper button {\r\n width: 32px;\r\n height: 30px;\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: 8px;\r\n background-color: transparent;\r\n font-size: 14px;\r\n font-weight: 400;\r\n}\r\n.sw-srh-button-wrapper button.sw-active-button {\r\n background-color: var(--secondary);\r\n color: var(--sw-white);\r\n}\r\n.sw-traveller .sw-rooms-guests-menu {\r\n width: 500px;\r\n}\r\n.sw-srh-class {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: var(--sw-space-md, 10px);\r\n align-items: stretch; \r\n}\r\n.sw-srh-class .sw-tab-content {\r\n min-width: fit-content; \r\n display: block;\r\n}\r\n.sw-srh-class label {\r\n width: fit-content !important;\r\n}\r\n.sw-srh-class .sw-tab-checkbox input:checked + .sw-tab-content,\r\n.sw-srh-class .sw-tab-checkbox input[type=radio]:checked + .sw-tab-content {\r\n background-color: var(--primary);\r\n color: var(--sw-white);\r\n}\r\n.sw-srh-h-grid {\r\n position: relative;\r\n display: grid;\r\n grid-template-columns: 2.2fr 1.8fr 3fr 1.8fr 1.15fr;\r\n gap: var(--sw-space-sm, 2px);\r\n min-height: 55px;\r\n min-width: 0; \r\n overflow: visible; \r\n border-radius: var(--sw-radius);\r\n}\r\n.sw-srh-loc {\r\n display: block !important;\r\n padding: 15px 0 12px;\r\n border-bottom: 1px solid var(--sw-form-border);\r\n}\r\n.sw-srh-count-wrapper,\r\n.sw-srh-loc {\r\n display: flex;\r\n align-items: center;\r\n gap: 15px;\r\n margin: 0 20px;\r\n cursor: pointer;\r\n}\r\n.sw-hotel-search-form-icon {\r\n display: grid;\r\n place-content: center;\r\n width: 40px;\r\n height: 40px;\r\n background: #f4f5f5;\r\n border-radius: var(--sw-radius);\r\n}\r\n.sw-hotel-search-form-icon.sw-fill {\r\n background: var(--primary-light);\r\n}\r\n.sw-hsrh-advan-cont {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n}\r\n.sw-checkbox-wrap {\r\n cursor: pointer;\r\n}\r\n.sw-checkbox-wrap input {\r\n display: none;\r\n}\r\n.sw-checkbox-wrap input:checked + .sw-star-checkbox {\r\n padding: 8px 12px;\r\n border: 1px solid var(--primary-light);\r\n border-radius: 20px;\r\n background: var(--primary-light);\r\n gap: 5px;\r\n color: var(--primary);\r\n font-size: 14px;\r\n line-height: 1;\r\n}\r\n.sw-checkbox-wrap .sw-star-checkbox {\r\n display: flex;\r\n align-items: center;\r\n gap: 5px;\r\n padding: 8px 12px;\r\n border: 1px solid var(--sw-form-border);\r\n border-radius: 20px;\r\n font-size: 14px;\r\n line-height: 1;\r\n}\r\n.sw-star-checkbox-wrap input:checked + .sw-star-checkbox {\r\n padding: 7px 12px;\r\n border: 1px solid #fcf2e8;\r\n border-radius: 20px;\r\n background: #fcf2e8;\r\n color: #ffae43;\r\n}\r\n.sw-star-checkbox-wrap input:checked + .sw-star-checkbox svg path {\r\n fill: #ffae43;\r\n}\r\n.sw-hsrh-chk-main {\r\n display: flex;\r\n gap: var(--sw-space-md, 10px);\r\n font-size: 1.4rem;\r\n font-weight: 400;\r\n flex-wrap: wrap; \r\n}\r\n.sw-srh-class {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: var(--sw-space-md, 10px);\r\n align-items: stretch; \r\n}\r\n.sw-srh-class .sw-tab-content {\r\n flex: 0 1 auto; \r\n min-width: fit-content; \r\n}`;\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAqD;AACrD,uBAA0B;AAC1B,oBAAuB;AACvB,sBAAyB;AACzB,sBAAyB;;;ACJlB,IAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AD2mB7B;AA9jBZ,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAC9B,IAAM,YAAY;AAClB,IAAM,qBAAqB;AAC3B,IAAM,yBAAyB;AAC/B,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBvB,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAe3B,IAAM,yBAA0C;AAAA,EAC9C,EAAE,IAAI,OAAO,IAAI,mCAAmC,IAAI,MAAM,IAAI,wBAAwB,IAAI,YAAY;AAAA,EAC1G,EAAE,IAAI,OAAO,IAAI,+BAA+B,IAAI,MAAM,IAAI,SAAS,IAAI,QAAQ;AAAA,EACnF,EAAE,IAAI,OAAO,IAAI,+BAA+B,IAAI,MAAM,IAAI,wBAAwB,IAAI,QAAQ;AAAA,EAClG,EAAE,IAAI,OAAO,IAAI,qCAAqC,IAAI,MAAM,IAAI,gBAAgB,IAAI,SAAS;AAAA,EACjG,EAAE,IAAI,OAAO,IAAI,0CAA0C,IAAI,MAAM,IAAI,WAAW,IAAI,QAAQ;AAAA,EAChG,EAAE,IAAI,OAAO,IAAI,uBAAuB,IAAI,MAAM,IAAI,kBAAkB,IAAI,SAAS;AAAA,EACrF,EAAE,IAAI,OAAO,IAAI,gBAAgB,IAAI,MAAM,IAAI,UAAU,IAAI,QAAQ;AAAA,EACrE,EAAE,IAAI,OAAO,IAAI,gBAAgB,IAAI,MAAM,IAAI,4BAA4B,IAAI,WAAW;AAC5F;AACA,IAAM,iBAAiB;AAAA,EACrB,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,aAAa;AACf;AAEA,IAAM,mBAAmB;AACzB,IAAM,qBAAqB;AA0B3B,IAAM,uBAAuB,MAAM;AACjC,MAAI,OAAO,aAAa,aAAa;AACjC;AAAA,EACJ;AAEA,MAAI,SAAS,eAAe,gBAAgB,GAAG;AAC3C;AAAA,EACJ;AAEA,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,KAAK;AACX,QAAM,cAAc;AACpB,WAAS,KAAK,YAAY,KAAK;AACjC;AAEA,IAAM,yBAAyB,MAAM;AACnC,MAAI,OAAO,aAAa,aAAa;AACjC;AAAA,EACJ;AAEA,MAAI,SAAS,eAAe,kBAAkB,GAAG;AAC7C;AAAA,EACJ;AAEA,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,KAAK;AACV,OAAK,MAAM;AACX,OAAK,OAAO;AACZ,WAAS,KAAK,YAAY,IAAI;AAChC;AAEA,IAAM,sBAAsB,CAAC,EAAE,QAAQ,SAAS,SAAS,MAAgC;AACvF,QAAM,QAAQ,QAAQ;AACtB,QAAM,eAAe,OAAO,WAAW;AACvC,QAAM,iBAAiB,OAAO,aAAa;AAC3C,QAAM,oBAAoB,OAAO,gBAAgB;AACjD,QAAM,WAAW,QAAQ;AACzB,QAAM,oBAAoB,QAAQ;AAClC,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAmB;AAAA,IACjD,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,IACb,eAAe,oBAAI,KAAK;AAAA,IACxB,aAAa;AAAA,EACf,CAAC;AAED,QAAM,CAAC,sBAAsB,uBAAuB,QAAI,uBAAS,KAAK;AACtE,QAAM,CAAC,2BAA2B,4BAA4B,QAAI,uBAAS,KAAK;AAChF,QAAM,CAAC,2BAA2B,4BAA4B,QAAI,uBAAS,KAAK;AAChF,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAS,EAAE;AACjD,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAS,EAAE;AAC3D,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAS,EAAE;AAC3D,QAAM,CAAC,uBAAuB,wBAAwB,QAAI,uBAAS,KAAK;AACxE,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAS;AAAA,IAC7C,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,EACf,CAAC;AACD,QAAM,wBAAoB,qBAAuB,IAAI;AACrD,QAAM,6BAAyB,qBAAuB,IAAI;AAC1D,QAAM,6BAAyB,qBAAuB,IAAI;AAC1D,QAAM,yBAAqB,qBAAuB,IAAI;AAQtD,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACtF,QAAM,CAAC,eAAe,gBAAgB,QAAI,uBAA0B,CAAC,CAAC;AACtE,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,uBAAS,KAAK;AAC5D,QAAM,CAAC,oBAAoB,qBAAqB,QAAI,uBAAgC,CAAC,CAAC;AACtF,QAAM,CAAC,sBAAsB,uBAAuB,QAAI,uBAAS,KAAK;AACtE,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,uBAA+B,IAAI;AAC/E,QAAM,CAAC,qBAAqB,sBAAsB,QAAI,uBAAqC,IAAI;AAC/F,QAAM,CAAC,qBAAqB,sBAAsB,QAAI,uBAA+B,IAAI;AAEzF,QAAM,kBAAkB;AAAA,IACtB,EAAE,OAAO,WAAW,OAAO,EAAE;AAAA,IAC7B,GAAG,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,OAAO;AAAA,MACvC,OAAO,GAAG,IAAI,CAAC;AAAA,MACf,OAAO,IAAI;AAAA,IACb,EAAE;AAAA,EACJ;AAEA,QAAM,wBAAwB,CAAC,WAA0B;AACvD,UAAM,OAAO,OAAO,MAAM;AAC1B,UAAM,OAAO,OAAO,MAAM;AAC1B,UAAM,OAAO,OAAO,MAAM;AAC1B,UAAM,UAAU,OAAO,MAAM;AAC7B,UAAM,aAAa,CAAC,MAAM,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAC5D,QAAI,QAAQ,MAAM;AAChB,aAAO,GAAG,IAAI,KAAK,IAAI;AAAA,IACzB;AACA,QAAI,cAAc,MAAM;AACtB,aAAO,GAAG,UAAU,KAAK,IAAI;AAAA,IAC/B;AACA,WAAO,QAAQ,cAAc,QAAQ;AAAA,EACvC;AAEA,QAAM,4BAA4B,CAAC,WAAgC;AACjE,WAAO,OAAO,kBAAkB;AAAA,EAClC;AAEA,QAAM,+BAA2B,sBAAQ,MAAM;AAC7C,WAAO,CAAC,GAAG,kBAAkB,EAAE,KAAK,CAAC,GAAG,OAAO,EAAE,iBAAiB,MAAM,EAAE,iBAAiB,EAAE;AAAA,EAC/F,GAAG,CAAC,kBAAkB,CAAC;AAEvB,QAAM,QAAQ,oBAAI,KAAK;AACvB,QAAM,SAAS,GAAG,GAAG,GAAG,CAAC;AAEzB,QAAM,kBAAkB,CAAC,SAAsB;AAC7C,QAAI,CAAC,MAAM;AACT,aAAO;AAAA,IACT;AACA,WAAO,KAAK,mBAAmB,SAAS;AAAA,MACtC,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,QAAM,qBAAsC;AAAA,IAC1C,EAAE,cAAc,MAAM,cAAc,wBAAwB,YAAY,KAAK;AAAA,IAC7E,EAAE,cAAc,MAAM,cAAc,iBAAiB,YAAY,KAAK;AAAA,IACtE,EAAE,cAAc,MAAM,cAAc,kBAAkB,YAAY,KAAK;AAAA,IACvE,EAAE,cAAc,MAAM,cAAc,SAAS,YAAY,KAAK;AAAA,IAC9D,EAAE,cAAc,MAAM,cAAc,YAAY,YAAY,KAAK;AAAA,IACjE,EAAE,cAAc,MAAM,cAAc,cAAc,YAAY,KAAK;AAAA,IACnE,EAAE,cAAc,MAAM,cAAc,SAAS,YAAY,KAAK;AAAA,IAC9D,EAAE,cAAc,MAAM,cAAc,gBAAgB,YAAY,KAAK;AAAA,IACrE,EAAE,cAAc,MAAM,cAAc,UAAU,YAAY,KAAK;AAAA,IAC/D,EAAE,cAAc,MAAM,cAAc,SAAS,YAAY,KAAK;AAAA,IAC9D,EAAE,cAAc,MAAM,cAAc,WAAW,YAAY,KAAK;AAAA,IAChE,EAAE,cAAc,MAAM,cAAc,QAAQ,YAAY,KAAK;AAAA,IAC7D,EAAE,cAAc,MAAM,cAAc,UAAU,YAAY,KAAK;AAAA,IAC/D,EAAE,cAAc,MAAM,cAAc,WAAW,YAAY,KAAK;AAAA,EAClE;AAEA,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,UAAM,QAA6B;AAAA,MAC/B,CAAC,WAAqB,GAAG;AAAA,MACzB,CAAC,aAAuB,GAAG;AAAA,MAC3B,CAAC,iBAA2B,GAAG;AAAA,IACnC;AAEA,QAAI,UAAU;AACV,MAAC,MAAiC,eAAe,IAAI;AAAA,IACzD;AAEA,QAAI,aAAa,QAAW;AACxB,YAAM,WAAW,OAAO,aAAa,WAAW,GAAG,QAAQ,OAAO;AAAA,IACtE;AAEA,WAAO;AAAA,EACX,GAAG,CAAC,cAAc,gBAAgB,mBAAmB,UAAU,QAAQ,CAAC;AAExE,8BAAU,MAAM;AACZ,yBAAqB;AACrB,2BAAuB;AAAA,EAC3B,GAAG,CAAC,CAAC;AAEH,QAAM,6BACJ,iBAAiB,KAAK,EAAE,SAAS,mBAC7B,qBACA,mBAAmB;AAAA,IAAO,CAAC,WACzB,OAAO,aAAa,YAAY,EAAE,SAAS,iBAAiB,KAAK,EAAE,YAAY,CAAC;AAAA,EAClF;AAEN,QAAM,oBAAoB,MAAM;AAC9B,QAAI,CAAC,mBAAmB;AACtB,aAAO;AAAA,IACT;AACA,UAAM,YAAY,GAAG,iBAAiB,KAAI,oBAAI,KAAK,GAAE,QAAQ,CAAC;AAC9D,UAAM,YAAY,IAAI,2BAAU;AAChC,cAAU,aAAa,cAAc;AACrC,WAAO,UAAU,QAAQ,SAAS,KAAK;AAAA,EACzC;AAEA,QAAM,wBAAwB,MAAc;AAC1C,QAAI,CAAC,WAAW,CAAC,QAAQ,OAAO,KAAK,GAAG;AACtC,aAAO;AAAA,IACT;AACA,QAAI;AACF,YAAM,UAAU;AAAA,QACd,GAAG;AAAA,QACH,KAAI,oBAAI,KAAK,GAAE,YAAY;AAAA,MAC7B;AACA,YAAM,YAAY,IAAI,2BAAU;AAChC,gBAAU,aAAa,kBAAkB;AACzC,aAAO,UAAU,QAAQ,KAAK,UAAU,OAAO,CAAC,KAAK;AAAA,IACvD,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAEA,8BAAU,MAAM;AACd,UAAM,qBAAqB,CAAC,UAAsB;AAChD,YAAM,SAAS,MAAM;AAGrB,YAAM,wBACJ,OAAO,QAAQ,sBAAsB,MAAM,QAC3C,OAAO,QAAQ,8BAA8B,MAAM,QACnD,OAAO,QAAQ,qBAAqB,MAAM,QAC1C,OAAO,QAAQ,cAAc,GAAG,UAAU,SAAS,eAAe,MAAM,SACxE,OAAO,QAAQ,2BAA2B,MAAM,QAChD,OAAO,QAAQ,8BAA8B,MAAM;AAGrD,UAAI,kBAAkB,WAAW,CAAC,kBAAkB,QAAQ,SAAS,MAAM,GAAG;AAC5E,gCAAwB,KAAK;AAAA,MAC/B;AACA,UAAI,uBAAuB,WAAW,CAAC,uBAAuB,QAAQ,SAAS,MAAM,GAAG;AACtF,qCAA6B,KAAK;AAAA,MACpC;AACA,UAAI,uBAAuB,WAAW,CAAC,uBAAuB,QAAQ,SAAS,MAAM,GAAG;AACtF,qCAA6B,KAAK;AAAA,MACpC;AAGA,UAAI,CAAC,yBAAyB,mBAAmB,WAAW,CAAC,mBAAmB,QAAQ,SAAS,MAAM,GAAG;AACxG,iCAAyB,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,8BAAU,MAAM;AACd,UAAM,cAAc,MAAM,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AACpE,UAAM,gBAAgB,MAAM,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,UAAU,CAAC;AACxE,UAAM,YAAY,MAAM,WAAW,IAAI,SAAS;AAChD,UAAM,aAAa,gBAAgB,IAAI,UAAU;AACjD,UAAM,eAAe,kBAAkB,IAAI,KAAK,kBAAkB,IAAI,KAAK,aAAa,WAAW,KAAK,aAAa;AACrH,UAAM,cAAc,GAAG,MAAM,MAAM,IAAI,SAAS,KAAK,WAAW,IAAI,UAAU,GAAG,YAAY;AAC7F,sBAAkB,eAAe,WAAW;AAAA,EAC9C,GAAG,CAAC,KAAK,CAAC;AAEV,8BAAU,MAAM;AACd,UAAM,QAAQ,YAAY,KAAK;AAC/B,QAAI,MAAM,SAAS,kBAAkB;AACnC,uBAAiB,CAAC,CAAC;AACnB;AAAA,IACF;AAEA,UAAM,aAAa,IAAI,gBAAgB;AACvC,UAAM,YAAY,YAAY;AAC5B,UAAI;AACF,2BAAmB,IAAI;AACvB,cAAM,UAAkC,CAAC;AACzC,cAAM,QAAQ,kBAAkB;AAChC,YAAI,OAAO;AACT,kBAAQ,QAAQ;AAAA,QAClB;AACA,cAAM,WAAW,MAAM,MAAM,GAAG,kBAAkB,IAAI,mBAAmB,KAAK,CAAC,IAAI;AAAA,UACjF,QAAQ;AAAA,UACR;AAAA,UACA,QAAQ,WAAW;AAAA,QACrB,CAAC;AACD,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,IAAI,MAAM,sBAAsB;AAAA,QACxC;AACA,cAAM,OAAO,MAAM,SAAS,KAAK;AACjC,cAAM,UAAU,MAAM,QAAQ,IAAI,IAC9B,OACA,MAAM,QAAQ,MAAM,IAAI,IACtB,KAAK,OACL,MAAM,QAAQ,MAAM,MAAM,IACxB,KAAK,SACL,CAAC;AACT,yBAAiB,OAA0B;AAAA,MAC7C,SAAS,OAAO;AACd,YAAI,EAAE,iBAAiB,gBAAgB,MAAM,SAAS,eAAe;AACnE,2BAAiB,CAAC,CAAC;AAAA,QACrB;AAAA,MACF,UAAE;AACA,2BAAmB,KAAK;AAAA,MAC1B;AAAA,IACF;AAEA,UAAM,YAAY,OAAO,WAAW,WAAW,GAAG;AAClD,WAAO,MAAM;AACX,iBAAW,MAAM;AACjB,aAAO,aAAa,SAAS;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,8BAAU,MAAM;AACd,UAAM,QAAQ,iBAAiB,KAAK;AACpC,UAAM,oBAAoB,6BAA6B,MAAM,WAAW;AACxE,QAAI,MAAM,SAAS,oBAAoB,CAAC,mBAAmB;AACzD,4BAAsB,CAAC,CAAC;AACxB;AAAA,IACF;AAEA,UAAM,aAAa,IAAI,gBAAgB;AACvC,UAAM,YAAY,YAAY;AAC5B,UAAI;AACF,gCAAwB,IAAI;AAC5B,cAAM,cACJ,gBAAgB,MAChB;AACF,cAAM,cACJ,gBAAgB,MAChB;AACF,cAAM,UAAkC;AAAA,UACtC,gBAAgB;AAAA,QAClB;AACA,cAAM,QAAQ,kBAAkB;AAChC,YAAI,OAAO;AACT,kBAAQ,QAAQ;AAAA,QAClB;AACA,cAAM,WAAW,MAAM,MAAM,wBAAwB;AAAA,UACnD,QAAQ;AAAA,UACR;AAAA,UACA,MAAM,KAAK,UAAU;AAAA,YACnB,QAAQ,eAAe;AAAA,YACvB,cAAc,eAAe;AAAA,YAC7B,WAAW,eAAe;AAAA,YAC1B,cAAc;AAAA,YACd,cAAc;AAAA,YACd,YAAY,oBAAoB,KAAK;AAAA,UACvC,CAAC;AAAA,UACD,QAAQ,WAAW;AAAA,QACrB,CAAC;AACD,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,IAAI,MAAM,2BAA2B;AAAA,QAC7C;AACA,cAAM,OAAO,MAAM,SAAS,KAAK;AACjC,cAAM,UAAU,MAAM,QAAQ,MAAM,MAAM,IACtC,KAAK,SACL,MAAM,QAAQ,MAAM,MAAM,IACxB,KAAK,SACL,MAAM,QAAQ,MAAM,IAAI,IACtB,KAAK,OACL,MAAM,QAAQ,IAAI,IAChB,OACA,CAAC;AACX,8BAAsB,OAAgC;AAAA,MACxD,SAAS,OAAO;AACd,YAAI,EAAE,iBAAiB,gBAAgB,MAAM,SAAS,eAAe;AACnE,gCAAsB,CAAC,CAAC;AAAA,QAC1B;AAAA,MACF,UAAE;AACA,gCAAwB,KAAK;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,YAAY,OAAO,WAAW,WAAW,GAAG;AAClD,WAAO,MAAM;AACX,iBAAW,MAAM;AACjB,aAAO,aAAa,SAAS;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,kBAAkB,gBAAgB,yBAAyB,CAAC;AAEhE,QAAM,mBAAmB,CAAC,cAAsB;AAC9C,QAAI,MAAM,UAAU,GAAG;AACrB;AAAA,IACF;AACA,UAAM,eAAe,MAAM,OAAO,CAAC,GAAG,UAAU,UAAU,SAAS;AACnE,aAAS,YAAY;AAAA,EACvB;AAEA,QAAM,gBAAgB,MAAM;AAC1B,QAAI,MAAM,UAAU,WAAW;AAC7B;AAAA,IACF;AACA,aAAS,CAAC,GAAG,OAAO,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AAAA,EAChE;AAEA,QAAM,0BAA0B,CAAC,UAA+C;AAC9E,UAAM,QAAQ,MAAM,OAAO;AAC3B,mBAAe,KAAK;AACpB,sBAAkB,IAAI;AACtB,sBAAkB,UAAU,EAAE;AAC9B,QAAI,MAAM,KAAK,EAAE,SAAS,GAAG;AAC3B,qBAAe,CAAC,UAAU,EAAE,GAAG,MAAM,QAAQ,MAAM,EAAE;AAAA,IACvD;AAAA,EACF;AAEA,QAAM,+BAA+B,CAAC,UAA+C;AACnF,UAAM,QAAQ,MAAM,OAAO;AAC3B,wBAAoB,KAAK;AACzB,2BAAuB,IAAI;AAC3B,sBAAkB,eAAe,EAAE;AACnC,QAAI,MAAM,KAAK,EAAE,SAAS,GAAG;AAC3B,qBAAe,CAAC,UAAU,EAAE,GAAG,MAAM,aAAa,MAAM,EAAE;AAAA,IAC5D;AAAA,EACF;AAEA,QAAM,+BAA+B,CAAC,UAA+C;AACnF,UAAM,QAAQ,MAAM,OAAO;AAC3B,wBAAoB,KAAK;AACzB,2BAAuB,IAAI;AAC3B,QAAI,MAAM,KAAK,EAAE,SAAS,GAAG;AAC3B,qBAAe,CAAC,UAAU,EAAE,GAAG,MAAM,aAAa,MAAM,EAAE;AAAA,IAC5D;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,WAA0B;AACpD,UAAM,cAAc,sBAAsB,MAAM;AAChD,sBAAkB,UAAU,WAAW;AACvC,mBAAe,WAAW;AAC1B,sBAAkB,MAAM;AACxB,4BAAwB,KAAK;AAC7B,mBAAe,CAAC,UAAU,EAAE,GAAG,MAAM,QAAQ,MAAM,EAAE;AAAA,EACvD;AAEA,QAAM,0BAA0B,CAAC,WAAgC;AAC/D,UAAM,cAAc,0BAA0B,MAAM;AACpD,sBAAkB,eAAe,WAAW;AAC5C,wBAAoB,WAAW;AAC/B,2BAAuB,MAAM;AAC7B,iCAA6B,KAAK;AAClC,mBAAe,CAAC,UAAU,EAAE,GAAG,MAAM,aAAa,MAAM,EAAE;AAAA,EAC5D;AAEA,QAAM,0BAA0B,CAAC,WAA0B;AACzD,sBAAkB,eAAe,OAAO,YAAY;AACpD,wBAAoB,OAAO,YAAY;AACvC,2BAAuB,MAAM;AAC7B,iCAA6B,KAAK;AAClC,mBAAe,CAAC,UAAU,EAAE,GAAG,MAAM,aAAa,MAAM,EAAE;AAAA,EAC5D;AAEA,QAAM,oBAAoB,CAAC,OAAuB,UAAsC;AACtF,gBAAY,WAAS;AAAA,MACnB,GAAG;AAAA,MACH,CAAC,KAAK,GAAG;AAAA,IACX,EAAE;AAAA,EACJ;AACA,QAAM,eAAe,MAAY;AAC/B,UAAM,SAAS,IAAI,gBAAgB;AACnC,WAAO,IAAI,QAAQ,gBAAgB;AACnC,WAAO,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AACxD,WAAO,IAAI,MAAM,qBAAqB,gBAAgB,iBAAiB,KAAK,CAAC;AAC7E,WAAO,IAAI,MAAM,gBAAgB,MAAM,EAAE;AACzC,WAAO,IAAI,MAAM,gBAAgB,MAAM,EAAE;AACzC,WAAO,IAAI,MAAM,eAAe,QAAQ;AACxC,WAAO,IAAI,QAAQ,KAAK;AACxB,WAAO,IAAI,QAAQ,KAAK,IAAI,EAAE,SAAS,CAAC;AACxC,WAAO,IAAI,QAAQ,gBAAgB,MAAM,EAAE;AAC3C,WAAO,IAAI,SAAS,qBAAqB,6BAA6B,EAAE;AACxE,WAAO,IAAI,WAAW,qBAAqB,kBAAkB,EAAE;AAC/D,WAAO,IAAI,YAAY,EAAE;AACzB,WAAO,IAAI,cAAc,EAAE;AAC3B,WAAO,IAAI,MAAM,SAAS,gBAAgB,gBAAgB,SAAS,aAAa,IAAI,EAAE;AACtF,WAAO,IAAI,SAAS,EAAE;AACtB,WAAO,IAAI,UAAU,EAAE;AACvB,WAAO,IAAI,QAAQ,EAAE;AACrB,WAAO,IAAI,QAAQ,EAAE;AACrB,WAAO,IAAI,SAAS,MAAM,CAAC,GAAG,QAAQ,SAAS,KAAK,GAAG;AAEvD,QAAI,SAAS;AACX,YAAM,cAAc,sBAAsB;AAC1C,UAAI,aAAa;AACf,eAAO,IAAI,MAAM,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,UAAM,cAAc,oBAAoB,OAAO,SAAS,CAAC;AACzD,QAAI,mBAAmB;AACrB,YAAM,aAAa,kBAAkB,QAAQ,iBAAiB,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC;AAC9E,YAAM,mBAAmB,WAAW,UAAU;AAC9C,YAAM,cAAc,GAAG,gBAAgB,IAAI,WAAW;AACtD,aAAO,KAAK,aAAa,UAAU,qBAAqB;AAAA,IAC1D;AAAA,EACF;AACA,QAAM,eAAe,CAAC,MAA8C;AAClE,MAAE,eAAe;AACjB,UAAM,cAAc,YAAY,KAAK,EAAE,SAAS;AAChD,UAAM,mBAAmB,iBAAiB,KAAK,EAAE,SAAS;AAC1D,UAAM,mBAAmB,iBAAiB,KAAK,EAAE,SAAS,KAAK,CAAC,CAAC;AACjE,mBAAe;AAAA,MACb,QAAQ,CAAC;AAAA,MACT,aAAa,CAAC;AAAA,MACd,aAAa,CAAC;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,kBAAkB;AAC1D;AAAA,IACF;AACA,iBAAa;AAAA,EACf;AACA,SACE,4CAAC,SAAI,WAAU,gBAAe,OAAO,YACnC,sDAAC,SAAI,WAAU,eACb,uDAAC,UAAK,WAAU,mBAAkB,UAAU,cAC1C;AAAA,iDAAC,SAAI,WAAW,oCAAoC,YAAY,SAAS,mBAAmB,EAAE,IAC5F;AAAA,kDAAC,WAAM,SAAQ,UAAS,yBAAW;AAAA,MACnC,6CAAC,SAAI,WAAU,sBAAqB,KAAK,mBACvC;AAAA,oDAAC,SAAI,WAAU,8BACb;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,YACP,UAAU;AAAA,YACV,SAAS,MAAM,wBAAwB,IAAI;AAAA,YAC3C,SAAS,CAAC,UAAU,MAAM,cAAc,OAAO;AAAA,YAC/C,gBAAgB,CAAC,UAAU,MAAM,cAAc,OAAO;AAAA,YACtD,aAAY;AAAA;AAAA,QACd,GACF;AAAA,QACC,wBACC,4CAAC,SAAI,WAAU,eACb,uDAAC,QAAG,WAAU,oBACb;AAAA,6BACC,4CAAC,QAAG,WAAU,yBACZ,sDAAC,SAAI,WAAU,uBACb,sDAAC,QAAG,0BAAY,GAClB,GACF;AAAA,UAED,CAAC,mBACA,YAAY,KAAK,EAAE,UAAU,oBAC7B,cAAc,WAAW,KACvB,4CAAC,QAAG,WAAU,yBACZ,sDAAC,SAAI,WAAU,uBACb,sDAAC,QAAG,8BAAgB,GACtB,GACF;AAAA,UAEH,CAAC,oBACC,YAAY,KAAK,EAAE,SAAS,mBACzB,yBACA,eACF,IAAI,CAAC,QAAQ,UACf;AAAA,YAAC;AAAA;AAAA,cAEC,WAAU;AAAA,cACV,SAAS,MAAM,mBAAmB,MAAM;AAAA,cAExC,uDAAC,SAAI,WAAU,yBACX;AAAA,wBAAO,MAAM,OAAO,OACpB,4CAAC,QAAG,WAAU,qCACX,iBAAO,MAAM,OAAO,IACvB;AAAA,gBAEF,6CAAC,SACC;AAAA,8DAAC,QAAG,WAAU,6BACX,gCAAsB,MAAM,GAC/B;AAAA,kBACA,4CAAC,QAAG,WAAU,kCACX,WAAC,OAAO,MAAM,OAAO,EAAE,EACrB,OAAO,OAAO,EACd,KAAK,IAAI,GACd;AAAA,mBACF;AAAA,iBACF;AAAA;AAAA,YApBK,GAAG,OAAO,MAAM,OAAO,MAAM,EAAE,IAAI,KAAK;AAAA,UAqB/C,CACD;AAAA,WACD,GACF;AAAA,SAEJ;AAAA,OACF;AAAA,IACA,6CAAC,SAAI,WAAW,4BAA4B,YAAY,cAAc,mBAAmB,EAAE,IACzF;AAAA,kDAAC,WAAM,SAAQ,eAAc,sCAAwB;AAAA,MACrD,6CAAC,SAAI,WAAU,sBAAqB,KAAK,wBACvC;AAAA,oDAAC,SAAI,WAAU,8BACb;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,YACP,UAAU;AAAA,YACV,SAAS,MAAM,6BAA6B,IAAI;AAAA,YAChD,SAAS,CAAC,UAAU,MAAM,cAAc,OAAO;AAAA,YAC/C,gBAAgB,CAAC,UAAU,MAAM,cAAc,OAAO;AAAA,YACtD,aAAY;AAAA;AAAA,QACd,GACF;AAAA,QACC,6BACC,4CAAC,SAAI,WAAU,eACf,uDAAC,QAAG,WAAU,oBACb;AAAA,kCACC,4CAAC,QAAG,WAAU,yBACZ,sDAAC,SAAI,WAAU,uBACb,sDAAC,SAAI,WAAU,oBACb,sDAAC,QAAG,0BAAY,GAClB,GACF,GACF;AAAA,UAED,CAAC,wBACA,iBAAiB,KAAK,EAAE,UAAU,oBAClC,mBAAmB,WAAW,KAC5B,4CAAC,QAAG,WAAU,yBACZ,sDAAC,SAAI,WAAU,uBACb,sDAAC,SAAI,WAAU,oBACb,sDAAC,QAAG,8BAAgB,GACtB,GACF,GACF;AAAA,UAEH,CAAC,wBAAwB,yBAAyB,IAAI,CAAC,QAAQ,UAC9D;AAAA,YAAC;AAAA;AAAA,cAEC,WAAU;AAAA,cACV,SAAS,MAAM,wBAAwB,MAAM;AAAA,cAE7C,uDAAC,SAAI,WAAU,uBACb;AAAA,6DAAC,SACC;AAAA,8DAAC,QAAG,WAAU,6BACX,oCAA0B,MAAM,GACnC;AAAA,kBACC,OAAO,kBAAkB,UACxB,6CAAC,QAAG,WAAU,kCACX;AAAA,2BAAO;AAAA,oBAAc;AAAA,qBACxB;AAAA,mBAEJ;AAAA,gBACC,OAAO,uBACN,4CAAC,QAAG,WAAU,qCACX,iBAAO,qBACV;AAAA,iBAEJ;AAAA;AAAA,YApBK,GAAG,OAAO,6BAA6B,OAAO,kBAAkB,KAAK;AAAA,UAqB5E,CACD;AAAA,WACD,GACF;AAAA,SAEF;AAAA,OACF;AAAA,IACA,6CAAC,SAAI,WAAW,4BAA4B,YAAY,cAAc,mBAAmB,EAAE,IACzF;AAAA,kDAAC,WAAM,SAAQ,eAAc,yBAAW;AAAA,MACxC,6CAAC,SAAI,WAAU,sBAAqB,KAAK,wBACvC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YAEV;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV,SAAS,MAAM,6BAA6B,IAAI;AAAA,gBAChD,SAAS,CAAC,UAAU,MAAM,cAAc,OAAO;AAAA,gBAC/C,gBAAgB,CAAC,UAAU,MAAM,cAAc,OAAO;AAAA,gBACtD,aAAY;AAAA;AAAA,YACd;AAAA;AAAA,QACF;AAAA,QACC,6BACE,4CAAC,SAAI,WAAU,eACf,uDAAC,QAAG,WAAU,oBACb;AAAA,qCAA2B,WAAW,KAAK,iBAAiB,KAAK,EAAE,UAAU,oBAC5E,4CAAC,QAAG,WAAU,yBACZ,sDAAC,SAAI,WAAU,uBACb,sDAAC,SACC,sDAAC,QAAG,WAAU,6BAA4B,8BAAgB,GAC5D,GACF,GACF;AAAA,UAED,2BAA2B,IAAI,CAAC,WAC/B;AAAA,YAAC;AAAA;AAAA,cAEC,WAAU;AAAA,cACV,SAAS,MAAM,wBAAwB,MAAM;AAAA,cAE5C,uDAAC,SAAI,WAAU,uBACf;AAAA,4DAAC,SACC,sDAAC,QAAG,WAAU,6BAA6B,iBAAO,cAClD,GACF;AAAA,gBACA,4CAAC,QAAG,WAAU,qCACX,iBAAO,cACV;AAAA,iBACF;AAAA;AAAA,YAZM,OAAO;AAAA,UAad,CACD;AAAA,WACD,GACF;AAAA,SAEH;AAAA,OACF;AAAA,IACA,6CAAC,SAAI,WAAU,mDACb;AAAA,kDAAC,WAAM,SAAQ,aAAY,4BAAc;AAAA,MACzC;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,UAAS;AAAA,UACT,OAAO,SAAS;AAAA,UAChB,UAAU,CAAC,MAAM,kBAAkB,iBAAiB,EAAE,KAAoB;AAAA,UAC1E,YAAW;AAAA,UACX,SAAS;AAAA,UACT,kBAAe;AAAA,UACf,WAAU;AAAA;AAAA,MACZ;AAAA,OACF;AAAA,IACA,6CAAC,SAAI,WAAU,iBACb;AAAA,kDAAC,WAAM,SAAQ,SAAQ,4BAAc;AAAA,MACrC,6CAAC,SAAI,WAAU,sBAAqB,KAAK,oBACvC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS,MAAM,yBAAyB,CAAC,qBAAqB;AAAA,YAE9D,sDAAC,UACE,mBAAS,aACZ;AAAA;AAAA,QACF;AAAA,QACC,yBACC,6CAAC,SAAI,WAAU,wBACb;AAAA,sDAAC,QAAG,WAAU,yBAAwB,kCAAoB;AAAA,UACzD,MAAM,IAAI,CAAC,MAAM,UAChB,6CAAC,SAAgB,WAAU,mBACzB;AAAA,yDAAC,SAAI,WAAU,kBACb;AAAA,0DAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,SAAQ,OAAM,OAAM,8BAA6B,sDAAC,OAAE,QAAO,QAAO,aAAY,KAAI,MAAK,QAAO,UAAS,WAAU,sDAAC,OAAE,WAAU,wCAAuC,uDAAC,OAAE,WAAU,sCAAqC;AAAA,4DAAC,UAAK,MAAK,WAAU,SAAQ,KAAI,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK;AAAA,gBAAO,4CAAC,OAAE,WAAU,iCAAgC,MAAK,kBAAiB,UAAS,WAAU,sDAAC,UAAK,GAAE,0zGAAyzG,GAAO;AAAA,iBAAI,GAAI,GAAI,GAAI;AAAA,cAAM;AAAA,cAChwH,QAAQ;AAAA,eAChB;AAAA,YACA,6CAAC,SAAI,WAAU,0BACb;AAAA,2DAAC,SAAI,WAAU,wBACb;AAAA,4DAAC,SAAI,WAAU,yBACb,sDAAC,UAAK,+BAAiB,GACzB;AAAA,gBACA,6CAAC,SAAI,WAAU,2BACb;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,WAAW,mBAAmB,KAAK,WAAW,IAAI,gBAAgB,QAAQ;AAAA,sBAC1E,SAAS,MAAM;AACb,8BAAM,WAAW,CAAC,GAAG,KAAK;AAC1B,iCAAS,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,SAAS,KAAK,EAAE,SAAS,CAAC;AAC/D,iCAAS,QAAQ;AAAA,sBACnB;AAAA,sBACA,UAAU,KAAK,WAAW;AAAA,sBAEmE,sDAAC,SAAI,OAAM,8BAA6B,QAAO,MAAK,MAAK,mBAAkB,SAAQ,kBAAiB,sDAAC,UAAK,GAAE,4BAA2B,GAAO;AAAA;AAAA,kBAE7O;AAAA,kBACA,4CAAC,UAAK,WAAU,kBAAkB,eAAK,QAAO;AAAA,kBAC9C;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,WAAW,mBAAmB,KAAK,UAAU,sBAAsB,gBAAgB,WAAW;AAAA,sBAC9F,SAAS,MAAM;AACb,4BAAI,KAAK,UAAU,qBAAqB;AACtC;AAAA,wBACF;AACA,8BAAM,WAAW,CAAC,GAAG,KAAK;AAC1B,iCAAS,KAAK,EAAE,UAAU;AAC1B,iCAAS,QAAQ;AAAA,sBACnB;AAAA,sBACA,UAAU,KAAK,UAAU;AAAA,sBAEO,sDAAC,SAAI,OAAM,8BAA6B,QAAO,MAAK,MAAK,mBAAkB,SAAQ,kBAAiB,sDAAC,UAAK,GAAE,6DAA4D,GAAO;AAAA;AAAA,kBAEjN;AAAA,mBACF;AAAA,iBACF;AAAA,cACA,6CAAC,SAAI,WAAU,wBACb;AAAA,4DAAC,SAAI,WAAU,yBACb,sDAAC,UAAK,gCAAkB,GAC1B;AAAA,gBACA,6CAAC,SAAI,WAAU,2BACb;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,WAAW,mBAAmB,KAAK,aAAa,IAAI,gBAAgB,QAAQ;AAAA,sBAC5E,SAAS,MAAM;AACb,8BAAM,WAAW,CAAC,GAAG,KAAK;AAC1B,iCAAS,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,KAAK,EAAE,WAAW,CAAC;AACnE,iCAAS,KAAK,EAAE,YAAY,SAAS,KAAK,EAAE,UAAU,MAAM,GAAG,EAAE;AACjE,iCAAS,QAAQ;AAAA,sBACnB;AAAA,sBACA,UAAU,KAAK,aAAa;AAAA,sBAEoC,sDAAC,SAAI,OAAM,8BAA6B,QAAO,MAAK,MAAK,mBAAkB,SAAQ,kBAAiB,sDAAC,UAAK,GAAE,4BAA2B,GAAO;AAAA;AAAA,kBAEhN;AAAA,kBACA,4CAAC,UAAK,WAAU,kBAAkB,eAAK,UAAS;AAAA,kBAChD;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,WAAW,mBAAmB,KAAK,YAAY,wBAAwB,gBAAgB,EAAE;AAAA,sBACzF,SAAS,MAAM;AACb,4BAAI,KAAK,YAAY,uBAAuB;AAC1C;AAAA,wBACF;AACA,8BAAM,WAAW,CAAC,GAAG,KAAK;AAC1B,iCAAS,KAAK,EAAE,YAAY;AAC5B,iCAAS,KAAK,EAAE,YAAY,CAAC,GAAG,SAAS,KAAK,EAAE,WAAW,CAAC;AAC5D,iCAAS,QAAQ;AAAA,sBACnB;AAAA,sBACA,UAAU,KAAK,YAAY;AAAA,sBAEzB,sDAAC,SAAI,OAAM,8BAA6B,QAAO,MAAK,MAAK,mBAAkB,SAAQ,kBAAiB,sDAAC,UAAK,GAAE,6DAA4D,GAAO;AAAA;AAAA,kBACnL;AAAA,mBACF;AAAA,iBACF;AAAA,eACF;AAAA,YACA,6CAAC,SAEA;AAAA,mBAAK,WAAW,KACf,4CAAC,SAAI,WAAU,0BACZ,gBAAM,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,eAC7C,6CAAC,UAAsB,WAAU,yBAAwB;AAAA;AAAA,gBAChD,aAAa;AAAA,mBADX,UAEX,CACD,GACH;AAAA,cAEF,4CAAC,SAAI,WAAU,0BACZ,gBAAM,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,eAC7C;AAAA,gBAAC;AAAA;AAAA,kBAEC,OAAO,KAAK,UAAU,UAAU,KAAK;AAAA,kBACrC,SAAS;AAAA,kBACT,UAAU,CAAC,MAAM;AACf,0BAAM,WAAW,CAAC,GAAG,KAAK;AAC1B,6BAAS,KAAK,EAAE,UAAU,UAAU,IAAI,EAAE;AAC1C,6BAAS,QAAQ;AAAA,kBACnB;AAAA,kBACA,kBAAe;AAAA,kBACf,WAAU;AAAA,kBACV,UAAS;AAAA;AAAA,gBAVJ;AAAA,cAWP,CACD,GACH;AAAA,eACA;AAAA,YACC,MAAM,SAAS,KAAK,QAAQ,KAC3B;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS,MAAM,iBAAiB,KAAK;AAAA,gBACrC,cAAY,eAAe,QAAQ,CAAC;AAAA,gBACrC;AAAA;AAAA,YAED;AAAA,eAvHM,KAyHV,CACD;AAAA,UAED,6CAAC,SAAI,WAAU,0BACZ;AAAA,kBAAM,SAAS,aACd;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBAET;AAAA,+DAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,OAAM,8BAA6B;AAAA,gEAAC,UAAK,MAAK,QAAO,GAAE,iBAAgB;AAAA,oBAAO,4CAAC,UAAK,GAAE,gCAA+B;AAAA,qBAAO;AAAA,kBAAM;AAAA;AAAA;AAAA,YAEpL;AAAA,YAEF,6CAAC,SAAI,WAAU,uBACb;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAU;AAAA,kBACV,SAAS,MAAM,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AAAA,kBACpE;AAAA;AAAA,cAED;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAU;AAAA,kBACV,SAAS,MAAM,yBAAyB,KAAK;AAAA,kBAC9C;AAAA;AAAA,cAED;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,SAEJ;AAAA,OACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,MAAK;AAAA,QACL,WAAU;AAAA;AAAA,IACZ;AAAA,KACF,GACF,GACA;AAEN;AACA,IAAO,kBAAQ;","names":[]}
package/dist/index.css ADDED
@@ -0,0 +1,2 @@
1
+ /* src/App.css */
2
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,27 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /** SSO/signed-in user details to encrypt and pass as the "to" query parameter on search redirect. Only email is required; ts is set internally. */
4
+ type SSOUser = {
5
+ email: string;
6
+ firstName?: string;
7
+ lastName?: string;
8
+ cc?: string;
9
+ phone?: string;
10
+ };
11
+ type CuratedSearchWidgetProps = {
12
+ config?: {
13
+ theme?: {
14
+ primary?: string;
15
+ secondary?: string;
16
+ primaryLight?: string;
17
+ };
18
+ redirectionDomain?: string;
19
+ fontName?: string;
20
+ };
21
+ /** When provided, user details are RSA-encrypted and sent as the "to" query parameter on search. */
22
+ ssoUser?: SSOUser;
23
+ minWidth?: number | string;
24
+ };
25
+ declare const CuratedSearchWidget: ({ config, ssoUser, minWidth }: CuratedSearchWidgetProps) => react_jsx_runtime.JSX.Element;
26
+
27
+ export { CuratedSearchWidget, type CuratedSearchWidgetProps, type SSOUser };
@@ -0,0 +1,27 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /** SSO/signed-in user details to encrypt and pass as the "to" query parameter on search redirect. Only email is required; ts is set internally. */
4
+ type SSOUser = {
5
+ email: string;
6
+ firstName?: string;
7
+ lastName?: string;
8
+ cc?: string;
9
+ phone?: string;
10
+ };
11
+ type CuratedSearchWidgetProps = {
12
+ config?: {
13
+ theme?: {
14
+ primary?: string;
15
+ secondary?: string;
16
+ primaryLight?: string;
17
+ };
18
+ redirectionDomain?: string;
19
+ fontName?: string;
20
+ };
21
+ /** When provided, user details are RSA-encrypted and sent as the "to" query parameter on search. */
22
+ ssoUser?: SSOUser;
23
+ minWidth?: number | string;
24
+ };
25
+ declare const CuratedSearchWidget: ({ config, ssoUser, minWidth }: CuratedSearchWidgetProps) => react_jsx_runtime.JSX.Element;
26
+
27
+ export { CuratedSearchWidget, type CuratedSearchWidgetProps, type SSOUser };