Compare commits

...

10 Commits

Author SHA1 Message Date
Linus Flood 5f55687239 Merged in feat/lokalise-sync-020226 (pull request #3525)
Lokalise sync

* Lokalise sync
2026-02-02 10:35:04 +00:00
Matilda Haneling e30ce9ac30 Merged in fix/book-769-booking-widget-ui-bugs (pull request #3524)
Fix/book 769 booking widget ui bugs

* fixed text in serachList not wrapping properly

* fixed spacing on mobile searchList

* fixed close button icon color

* fix for issues with fixed vs sticky elements on scroll lock

Approved-by: Linus Flood
2026-02-02 10:26:48 +00:00
Matilda Landström 61c024dbda Merged in fix/correct-policies-link (pull request #3522)
Fix/correct policies link

* fix: add correct link

* fix: move route


Approved-by: Emma Zettervall
2026-02-02 09:22:08 +00:00
Emma Zettervall 2f73fce6f2 Merged in fix/LOY-391-fix-for-transaction-details-not-available (pull request #3513)
fix(LOY-391): uses transaction date if checkinDate does not exist

* fix(LOY-391): uses transaction date if checkinDate does not exist

* fix(LOY-391): changed date to datejs and fixed description for reward night and reward gift

* fix(LOY-391):use year transaction date

* fix(LOY-391): fixed date timezone and dt() instead of datejs()

* fix(LOY-391): small improv with year

* fix(LOY-391): utc fix

* fix(LOY-391): changed sorting order on transaction date

* fix(LOY-391): filter out transactions with 0 award points


Approved-by: Joakim Jäderberg
2026-01-30 14:59:14 +00:00
Anton Gunnarsson 76ee5e97bf Merged in chore/improve-my-stay-load-times (pull request #3514)
chore: Improve My Stay load times

* Restructure My Stay page to avoid data fetching waterfalls


Approved-by: Linus Flood
Approved-by: Matilda Landström
2026-01-30 14:29:49 +00:00
Anton Gunnarsson fd38542863 Merged in fix/sw-3703-fix-focus-in-lightbox-gallery (pull request #3521)
fix(SW-3703): Fix focus management in lightbox gallery

* Add keys to fix focus


Approved-by: Matilda Landström
2026-01-30 12:55:46 +00:00
Anton Gunnarsson cc60cf2903 Merged in chore/change-icons-to-rounded (pull request #3520)
chore: Change default icon style to rounded

* Change default icon style to rounded


Approved-by: Linus Flood
2026-01-30 10:13:03 +00:00
Erik Tiekstra 13b0d976ac fix(BOOK-391): Fixed typo in path to Futura PT font
* fix(BOOK-391): Now using correct Futura PT fonts

Approved-by: Linus Flood
2026-01-30 09:58:50 +00:00
Anton Gunnarsson 77eabac038 Merged in fix/loy-589-update-cancellation-labels (pull request #3495)
fix(LOY-589): Split cancellation label into two

* Split cancellation label into two

* Fix copy


Approved-by: Bianca Widstam
2026-01-30 08:29:35 +00:00
Matilda Landström 0919134f88 Merged in fix/LOY-597-upcoming-today (pull request #3517)
fix(LOY-597): Display "Today" for upcoming stay today

* fix(LOY-597): Display "Today" for upcoming stay today


Approved-by: Anton Gunnarsson
2026-01-30 08:03:28 +00:00
436 changed files with 3011 additions and 999 deletions
+5
View File
@@ -158,6 +158,11 @@ body.partner-sas {
white-space: nowrap;
border-width: 0;
}
/* When a select in the booking widget is open, react-aria sets overflow:hidden
which breaks sticky positioning. Override with clip which doesn't break sticky. */
body:has([data-booking-widget-open] [data-open]) {
overflow: clip !important;
}
@media screen and (min-width: 768px) {
:root {
+135 -1
View File
@@ -231,6 +231,12 @@
"value": "Særlige ønsker (valgfrit)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Antal"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Jeg accepterer booking- og annulleringsbetingelserne"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "Ved booking for mere end 2 gæster vil der blive opkrævet et ekstra gebyr pr. person. Se link for detaljer."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Ekstra gæst(er)"
}
],
"booking.approx": [
{
"type": 0,
@@ -953,6 +971,16 @@
"value": "Tilføj kode"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Læs mere om brug af "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1089,16 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Læs mere om booking med "
},
{
"type": 1,
"value": "reward"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2510,6 +2548,44 @@
"value": "Datoer"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Nuværende "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Reducer "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Øg "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -5783,7 +5859,7 @@
"myPages.myStay.ancillaries.reachedMaxItemsStepperMessage": [
{
"type": 0,
"value": "Maksimal antal nået for denne vare."
"value": "Maksimalt antal nået for denne vare."
}
],
"myPages.myStay.ancillaries.reachedMaxPointsMessage": [
@@ -7569,6 +7645,58 @@
"value": "Samlede ophold"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-point"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-point"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Point"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Point"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8629,6 +8757,12 @@
"value": "). Se tilgængelige priser nedenfor."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Se prisdetaljer"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+138
View File
@@ -231,6 +231,12 @@
"value": "Sonderwünsche (optional)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Menge"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Ich akzeptiere die Buchungs- und Stornierungsbedingungen"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "Bei Buchungen für mehr als 2 Gäste fällt eine zusätzliche Gebühr pro Person an. Siehe Link für Details."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Zusätzliche Gäste"
}
],
"booking.approx": [
{
"type": 0,
@@ -949,6 +967,16 @@
"value": "Code hinzufügen"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Mehr erfahren über die Verwendung von "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1057,6 +1085,20 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Mehr über Buchungen mit "
},
{
"type": 1,
"value": "reward"
},
{
"type": 0,
"value": "erfahren"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2522,6 +2564,44 @@
"value": "Daten"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Aktuell "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": "verringern"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Erhöhen "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -7570,6 +7650,58 @@
"value": "Aufenthalte insgesamt"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-Punkt"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-Punkte"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Punkt"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Punkte"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8634,6 +8766,12 @@
"value": "). Verfügbare Übernachtungspreise sind unten zu sehen."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Tarifdetails anzeigen"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+290
View File
@@ -231,6 +231,12 @@
"value": "Special requests (optional)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Quantity"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "I accept the booking and cancellation terms"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "When booking for more than 2 guests, an additional fee will apply per person. See link for details."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Extra guest(s)"
}
],
"booking.approx": [
{
"type": 0,
@@ -337,6 +355,12 @@
"value": "Change or cancel"
}
],
"booking.changeTitle": [
{
"type": 0,
"value": "Change"
}
],
"booking.codeVoucher": [
{
"type": 0,
@@ -953,6 +977,16 @@
"value": "Add code"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Read more about using "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1095,16 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Read more about booking with "
},
{
"type": 1,
"value": "reward"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2198,6 +2242,16 @@
"value": " points"
}
],
"common.pointsInLine": [
{
"type": 1,
"value": "points"
},
{
"type": 0,
"value": " points"
}
],
"common.pointsToSpend": [
{
"type": 0,
@@ -2510,6 +2564,44 @@
"value": "Dates"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Current "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Decrease "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Increase "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -3060,6 +3152,12 @@
"value": "When you confirm the booking the room will be guaranteed for late arrival. If you fail to arrive without cancelling in advance or if you cancel after 18:00 local time, you will be charged for one reward night."
}
],
"enterDetails.confirmBooking.rewardNightGuaranteeInfo": [
{
"type": 0,
"value": "When you complete the booking the room will be guaranteed for late arrival. The hotel will hold your booking, even if you arrive after 18:00. In case of a no-show, you will be charged for one reward night."
}
],
"enterDetails.details.description": [
{
"type": 0,
@@ -3344,6 +3442,40 @@
"value": "Select payment method"
}
],
"enterDetails.paymentStep.flexBookingTermsAndConditions": [
{
"type": 0,
"value": "To complete your booking, please accept the general "
},
{
"children": [
{
"type": 0,
"value": "Booking & Cancellation Terms"
}
],
"type": 8,
"value": "termsAndConditionsLink"
},
{
"type": 0,
"value": ", and acknowledge that your data will be processed in accordance with Scandic's "
},
{
"children": [
{
"type": 0,
"value": "Privacy policy"
}
],
"type": 8,
"value": "privacyPolicyLink"
},
{
"type": 0,
"value": "."
}
],
"enterDetails.priceChangeDialog.acceptButton": [
{
"type": 0,
@@ -5669,6 +5801,24 @@
"value": "!"
}
],
"myPages.l6progress.modal.title": [
{
"type": 0,
"value": "Level upgrade and membership year"
}
],
"myPages.l6progress.modal.youCanAlsoReach": [
{
"type": 0,
"value": "You can also reach Best Friend, our highest membership level, by staying 100 nights with us within a membership year."
}
],
"myPages.l6progress.modal.yourLevelDuring": [
{
"type": 0,
"value": "Your level during the current and next period is based on the points you earn during this 12-month period."
}
],
"myPages.leftToLevelUp": [
{
"type": 0,
@@ -6057,6 +6207,88 @@
"value": "Your membership"
}
],
"myPoints.pointTransactions.extrasToBooking": [
{
"type": 0,
"value": "Extras to your booking"
}
],
"myPoints.pointTransactions.formerScandicHotel": [
{
"type": 0,
"value": "Former Scandic Hotel"
}
],
"myPoints.pointTransactions.noTransactions": [
{
"type": 0,
"value": "No transactions available"
}
],
"myPoints.pointTransactions.pointShop": [
{
"type": 0,
"value": "Scandic Friends Point Shop"
}
],
"myPoints.pointTransactions.pointsActivity": [
{
"type": 0,
"value": "Point activity"
}
],
"myPoints.pointTransactions.pointsEarnedPriorMay2021": [
{
"type": 0,
"value": "Points earned prior to May 1, 2021"
}
],
"myPoints.pointTransactions.redGift": [
{
"type": 0,
"value": "Reward Gift"
}
],
"myPoints.pointTransactions.rewardNight": [
{
"type": 0,
"value": "Reward Night"
}
],
"myPoints.pointTransactions.scandicFriendsMastercard": [
{
"type": 0,
"value": "Scandic Friends Mastercard"
}
],
"myPoints.pointTransactions.showMoreTransactions": [
{
"type": 0,
"value": "Show more transactions"
}
],
"myPoints.pointTransactions.signUpBonus": [
{
"type": 0,
"value": "Sign up bonus"
}
],
"myPoints.pointTransactions.stayAt": [
{
"type": 0,
"value": "Stay at "
},
{
"type": 1,
"value": "hotelName"
}
],
"myPoints.pointTransactions.tuiPoints": [
{
"type": 0,
"value": "TUI Points"
}
],
"myStay.accessDenied.bookingNotFound": [
{
"type": 0,
@@ -7546,6 +7778,58 @@
"value": "Total stays"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB Point"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB Points"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Point"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Points"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8610,6 +8894,12 @@
"value": "). See available rates below."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "See rate details"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+142
View File
@@ -231,6 +231,12 @@
"value": "Erityistoiveet (valinnainen)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Määrä"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Hyväksyn varaus- ja peruutusehdot"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "Kun varaat yli 2 vieraalle, lisämaksu veloitetaan per henkilö. Katso lisätietoja linkistä."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Ylimääräinen vieras/vieraat"
}
],
"booking.approx": [
{
"type": 0,
@@ -953,6 +971,20 @@
"value": "Lisää koodi"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Lue lisää "
},
{
"type": 1,
"value": "codeVoucher"
},
{
"type": 0,
"value": ":n käytöstä"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1093,20 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Lue lisää "
},
{
"type": 1,
"value": "reward"
},
{
"type": 0,
"value": " varaamisesta"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2514,6 +2560,44 @@
"value": "Päivämäärät"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Nykyinen "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Vähennä "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Lisää "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -7586,6 +7670,58 @@
"value": "Majoitukset yhteensä"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-piste"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-pistettä"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Piste"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "pistettä"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8658,6 +8794,12 @@
"value": "). Katso saatavilla olevat hinnat alla."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Katso hinnan tiedot"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+134
View File
@@ -231,6 +231,12 @@
"value": "Spesielle ønsker (valgfritt)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Antall"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Jeg godtar bestillings- og avbestillingsvilkårene"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "Ved bestilling for mer enn 2 gjester vil det påløpe et tilleggsgebyr per person. Se lenke for detaljer."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Ekstra gjest(er)"
}
],
"booking.approx": [
{
"type": 0,
@@ -953,6 +971,16 @@
"value": "Legg til kode"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Les mer om bruk av "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1089,16 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Les mer om bestilling med "
},
{
"type": 1,
"value": "reward"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2510,6 +2548,44 @@
"value": "Datoer"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Gjeldende "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Reduser "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Øk "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -7582,6 +7658,58 @@
"value": "Totalt antall opphold"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-poeng"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-poeng"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Poeng"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Poeng"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8654,6 +8782,12 @@
"value": " ). Se tilgjengelige priser nedenfor."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Se prisdetaljer"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+135 -1
View File
@@ -231,6 +231,12 @@
"value": "Särskilda önskemål (valfritt)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Antal"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Jag accepterar boknings- och avbokningsvillkoren"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "När du bokar för fler än 2 gäster tillkommer en extra avgift per person. Se länk för detaljer."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Extra gäst(er)"
}
],
"booking.approx": [
{
"type": 0,
@@ -953,6 +971,16 @@
"value": "Lägg till kod"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Läs mer om att använda "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1089,16 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Läs mer om bokning med "
},
{
"type": 1,
"value": "reward"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2510,6 +2548,44 @@
"value": "Datum"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Aktuell "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Minska "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Öka "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -3845,7 +3921,7 @@
"findMyBooking.findYourStay": [
{
"type": 0,
"value": "Hitta ditt hotell"
"value": "Hitta din bokning"
}
],
"findMyBooking.manageBooking": [
@@ -7566,6 +7642,58 @@
"value": "Totalt antal vistelser"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-poäng"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-poäng"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Punkt"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Poäng"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8626,6 +8754,12 @@
"value": "). Se tillgängliga priser nedan."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Se bokningsvillkor"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
@@ -5,6 +5,7 @@ import { useTransition } from "react"
import { FormProvider, useForm } from "react-hook-form"
import { useIntl } from "react-intl"
import { sasPartnershipTermsAndConditions } from "@scandic-hotels/common/constants/routes/customerService"
import { profileEdit } from "@scandic-hotels/common/constants/routes/myPages"
import { Button } from "@scandic-hotels/design-system/Button"
import Checkbox from "@scandic-hotels/design-system/Form/Checkbox"
@@ -13,8 +14,6 @@ import Image from "@scandic-hotels/design-system/Image"
import Link from "@scandic-hotels/design-system/OldDSLink"
import { Typography } from "@scandic-hotels/design-system/Typography"
import { sasPartnershipTermsAndConditions } from "@/constants/webHrefs"
import styles from "./link-sas.module.css"
import type { LangParams } from "@/types/params"
+6
View File
@@ -88,6 +88,12 @@ body:has([data-booking-widget-open="true"]) #kindly-chat-api {
z-index: -1 !important;
}
/* When a select in the booking widget is open, react-aria sets overflow:hidden
which breaks sticky positioning. Override with clip which doesn't break sticky. */
body:has([data-booking-widget-open] [data-open]) {
overflow: clip !important;
}
@media screen and (min-width: 768px) {
:root {
--max-width-single-spacing: var(--Layout-Tablet-Margin-Margin-min);
@@ -26,14 +26,14 @@ export function PointTransactionRow({
focusRef: React.Ref<HTMLAnchorElement>
}) {
const intl = useIntl()
const { confirmationNumber, bookingUrl, checkinDate, awardPoints } =
const { confirmationNumber, bookingUrl, transactionDate, awardPoints } =
transaction.attributes
const balfwd = confirmationNumber === BALFWD
const nonTransactional = confirmationNumber === NON_TRANSACTIONAL
const day = checkinDate.split("-")[2].replace(/^0/, "")
const month = dt(checkinDate.split("-")[1]).locale(lang).format("MMM")
const date = dt.utc(transactionDate).locale(lang)
const day = date.format("D")
const month = date.format("MMM")
const formattedPoints = intl.formatNumber(Math.abs(awardPoints))
const calculatedPoints =
@@ -93,41 +93,52 @@ export function PointTransactionRow({
function getDescription(transaction: Transaction, intl: IntlShape) {
const hotelInformation = transaction.attributes.hotelInformation
const balfwd = transaction.attributes.confirmationNumber === BALFWD
const nonTransactional =
const isBalfwd = transaction.attributes.confirmationNumber === BALFWD
const isNonTransactional =
transaction.attributes.confirmationNumber === NON_TRANSACTIONAL
if (isNonTransactional && transaction.attributes.nights === 0) {
return intl.formatMessage({
id: "myPoints.pointTransactions.pointsActivity",
defaultMessage: "Point activity",
})
}
switch (transaction.type) {
case Transactions.rewardType.stay:
return nonTransactional && transaction.attributes.nights === 0
? intl.formatMessage({
id: "myPoints.pointTransactions.pointsActivity",
defaultMessage: "Point activity",
})
: hotelInformation?.name
? intl.formatMessage(
{
id: "myPoints.pointTransactions.stayAt",
defaultMessage: "Stay at {hotelName}",
},
{ hotelName: hotelInformation?.name }
)
: ""
if (hotelInformation?.name) {
return intl.formatMessage(
{
id: "myPoints.pointTransactions.stayAt",
defaultMessage: "Stay at {hotelName}",
},
{ hotelName: hotelInformation.name }
)
} else {
return ""
}
case Transactions.rewardType.stayAdj:
if (transaction.attributes.hotelOperaId === "ORS") {
return intl.formatMessage({
id: "earnAndBurn.journeyTable.formerScandicHotel",
id: "myPoints.pointTransactions.formerScandicHotel",
defaultMessage: "Former Scandic Hotel",
})
}
if (balfwd) {
if (isBalfwd) {
return intl.formatMessage({
id: "myPoints.pointTransactions.pointsEarnedPriorMay2021",
defaultMessage: "Points earned prior to May 1, 2021",
})
}
break
case Transactions.rewardType.redgift:
return intl.formatMessage({
id: "myPoints.pointTransactions.redGift",
defaultMessage: "Reward Gift",
})
case Transactions.rewardType.rewardNight:
return intl.formatMessage({
id: "myPoints.pointTransactions.rewardNight",
defaultMessage: "Reward Night",
})
case Transactions.rewardType.ancillary:
return intl.formatMessage({
id: "myPoints.pointTransactions.extrasToBooking",
@@ -157,5 +168,7 @@ function getDescription(transaction: Transaction, intl: IntlShape) {
id: "myPoints.pointTransactions.pointShop",
defaultMessage: "Scandic Friends Point Shop",
})
default:
return undefined
}
}
@@ -2,6 +2,7 @@
import { Fragment, useCallback, useRef } from "react"
import { useIntl } from "react-intl"
import { dt } from "@scandic-hotels/common/dt"
import useStickyPosition from "@scandic-hotels/common/hooks/useStickyPosition"
import { StickyElementNameEnum } from "@scandic-hotels/common/stores/sticky-position"
import { Divider } from "@scandic-hotels/design-system/Divider"
@@ -40,9 +41,9 @@ export function PointTransactionList() {
.flatMap((page) => page.data)
const groupedTransactions =
transactions?.reduce<Record<number, typeof transactions>>(
transactions?.reduce<Record<string, typeof transactions>>(
(acc, transaction) => {
const year = new Date(transaction.attributes.checkinDate).getFullYear()
const year = dt.utc(transaction.attributes.transactionDate).year()
if (!acc[year]) acc[year] = []
acc[year].push(transaction)
return acc
@@ -33,7 +33,6 @@
align-items: center;
}
/* Styles for new empty upcoming stays design */
.emptyUpcomingStaysContainer {
display: flex;
padding: var(--Space-x6);
@@ -1,11 +1,11 @@
import { useIntl } from "react-intl"
import { CancellationRuleEnum } from "@scandic-hotels/common/constants/booking"
import { changeOrCancelDateFormat } from "@scandic-hotels/common/constants/dateFormats"
import { dt } from "@scandic-hotels/common/dt"
import { useMyStayStore } from "@/stores/my-stay"
import { hasModifiableRate } from "@/components/HotelReservation/MyStay/utils"
import useLang from "@/hooks/useLang"
import Row from "./Row"
@@ -14,14 +14,19 @@ export default function ModifyBy() {
const intl = useIntl()
const lang = useLang()
const { checkInDate, isModifyable } = useMyStayStore((state) => ({
checkInDate: state.bookedRoom.checkInDate,
isModifyable: hasModifiableRate(
state.bookedRoom.rateDefinition.cancellationRule
),
}))
const { checkInDate, isFlexBooking, isChangeBooking } = useMyStayStore(
(state) => ({
checkInDate: state.bookedRoom.checkInDate,
isFlexBooking:
state.bookedRoom.rateDefinition.cancellationRule ===
CancellationRuleEnum.CancellableBefore6PM,
isChangeBooking:
state.bookedRoom.rateDefinition.cancellationRule ===
CancellationRuleEnum.Changeable,
})
)
if (!isModifyable) {
if (!isFlexBooking && !isChangeBooking) {
return null
}
@@ -38,14 +43,15 @@ export default function ModifyBy() {
}
)
return (
<Row
icon="refresh"
text={text}
title={intl.formatMessage({
const title = isChangeBooking
? intl.formatMessage({
id: "booking.changeTitle",
defaultMessage: "Change",
})
: intl.formatMessage({
id: "booking.changeOrCancel",
defaultMessage: "Change or cancel",
})}
/>
)
})
return <Row icon="refresh" text={text} title={title} />
}
@@ -27,6 +27,7 @@ import AdditionalInfoForm from "@/components/HotelReservation/FindMyBooking/Addi
import accessBooking, {
ACCESS_GRANTED,
ERROR_BAD_REQUEST,
ERROR_NOT_FOUND,
ERROR_UNAUTHORIZED,
} from "@/components/HotelReservation/MyStay/accessBooking"
import { Ancillaries } from "@/components/HotelReservation/MyStay/Ancillaries"
@@ -74,39 +75,23 @@ async function MyStay(props: {
notFound()
}
const { confirmationNumber, lastName } = parseRefId(refId)
const isLoggedIn = await isLoggedInUser()
const cookieStore = await cookies()
const bv = cookieStore.get("bv")?.value
let bookingConfirmation
if (isLoggedIn) {
bookingConfirmation = await getBookingConfirmation(refId)
} else if (bv) {
logger.debug(`MyStay: bv`, bv)
const {
firstName,
email,
confirmationNumber: bvConfirmationNo,
} = JSON.parse(bv) as AdditionalInfoCookieValue
if (firstName && email && bvConfirmationNo === confirmationNumber) {
bookingConfirmation = await findBooking(
confirmationNumber,
lastName,
firstName,
email
)
} else {
return (
<RenderAdditionalInfoForm
confirmationNumber={confirmationNumber}
lastName={lastName}
/>
)
}
} else {
const { confirmationNumber, lastName } = parseRefId(refId)
const isLoggedIn = await isLoggedInUser()
const [{ error, bookingConfirmation }, user] = await Promise.all([
getOrFindBookingConfirmation({
refId,
isLoggedIn,
confirmationNumber,
lastName,
bv,
}),
getProfileSafely(),
])
if (error === "MISSING_INFO") {
return (
<RenderAdditionalInfoForm
confirmationNumber={confirmationNumber}
@@ -121,208 +106,226 @@ async function MyStay(props: {
)
}
const { additionalData, booking, hotel, roomCategories } = bookingConfirmation
const { booking } = bookingConfirmation
const user = await getProfileSafely()
const { code } = accessBooking(booking.guest, lastName, user, bv)
const intl = await getIntl()
switch (code) {
case ACCESS_GRANTED.code:
return (
<MyStayPage
bookingConfirmation={bookingConfirmation}
user={user}
lang={lang}
isWebview={!!isWebview}
/>
)
case ERROR_NOT_FOUND.code:
return notFound()
case ERROR_BAD_REQUEST.code:
return (
<RenderAdditionalInfoForm
confirmationNumber={confirmationNumber}
lastName={lastName}
/>
)
case ERROR_UNAUTHORIZED.code: {
if (!bv) return notFound()
const access = accessBooking(booking.guest, lastName, user, bv)
if (access === ACCESS_GRANTED) {
const fromDate = dt(booking.checkInDate).format("YYYY-MM-DD")
const toDate = dt(booking.checkOutDate).format("YYYY-MM-DD")
const linkedReservationsPromise = getLinkedReservations(booking.refId)
const packagesInput = {
adults: booking.adults,
children: booking.childrenAges.length,
endDate: toDate,
hotelId: hotel.operaId,
lang,
startDate: fromDate,
packageCodes: [
BreakfastPackageEnum.ANCILLARY_REGULAR_BREAKFAST,
BreakfastPackageEnum.ANCILLARY_CHILD_PAYING_BREAKFAST,
BreakfastPackageEnum.FREE_CHILD_BREAKFAST,
],
}
const supportedCards = hotel.merchantInformationData.cards
const savedPaymentCardsInput = { supportedCards }
const hasBreakfastPackage = booking.packages.find(
(pkg) => pkg.code === BreakfastPackageEnum.REGULAR_BREAKFAST
)
const breakfastIncluded = booking.rateDefinition.breakfastIncluded
const shouldFetchBreakfastPackages =
!hasBreakfastPackage && !breakfastIncluded
if (shouldFetchBreakfastPackages) {
void getPackages(packagesInput)
}
const isOwnBooking = user?.email === booking.guest.email
if (user && isOwnBooking) {
void getSavedPaymentCardsSafely(savedPaymentCardsInput)
}
let breakfastPackages = null
if (shouldFetchBreakfastPackages) {
breakfastPackages = await getPackages(packagesInput)
}
let savedCreditCards = null
if (user && isOwnBooking) {
savedCreditCards = await getSavedPaymentCardsSafely(
savedPaymentCardsInput
return (
<RenderFindMyBookingForm
bv={bv}
lastName={lastName}
confirmationNumber={confirmationNumber}
/>
)
}
let ancillaryPackagesPromise = null
if (booking.showAncillaries) {
ancillaryPackagesPromise = getAncillaryPackages({
default:
const _exhaustiveCheck: never = code
throw new Error(`Unknown access code: ${code}`)
}
}
async function MyStayPage({
bookingConfirmation,
user,
lang,
isWebview,
}: {
bookingConfirmation: BookingConfirmation
user: SafeUser | null
lang: Lang
isWebview: boolean
}) {
const intl = await getIntl()
const { additionalData, booking, hotel, roomCategories } = bookingConfirmation
const fromDate = dt(booking.checkInDate).format("YYYY-MM-DD")
const toDate = dt(booking.checkOutDate).format("YYYY-MM-DD")
const packagesInput = {
adults: booking.adults,
children: booking.childrenAges.length,
endDate: toDate,
hotelId: hotel.operaId,
lang,
startDate: fromDate,
packageCodes: [
BreakfastPackageEnum.ANCILLARY_REGULAR_BREAKFAST,
BreakfastPackageEnum.ANCILLARY_CHILD_PAYING_BREAKFAST,
BreakfastPackageEnum.FREE_CHILD_BREAKFAST,
],
}
const supportedCards = hotel.merchantInformationData.cards
const savedPaymentCardsInput = { supportedCards }
const hasBreakfastPackage = booking.packages.find(
(pkg) => pkg.code === BreakfastPackageEnum.REGULAR_BREAKFAST
)
const breakfastIncluded = booking.rateDefinition.breakfastIncluded
const shouldFetchBreakfastPackages =
!hasBreakfastPackage && !breakfastIncluded
const isOwnBooking = user?.email === booking.guest.email
const shouldGetCards = user && isOwnBooking
const [breakfastPackages, savedCreditCards] = await Promise.all([
shouldFetchBreakfastPackages ? getPackages(packagesInput) : noop(),
shouldGetCards
? getSavedPaymentCardsSafely(savedPaymentCardsInput)
: noop(),
])
const imageSrc =
hotel.hotelContent.images.src ||
additionalData.gallery?.heroImages[0]?.src ||
hotel.galleryImages[0]?.src
const baseUrl = env.PUBLIC_URL || "https://www.scandichotels.com"
const promoUrl = new URL(`${baseUrl}/${lang}/`)
const hotelUrl = new URL(`${baseUrl}${bookingConfirmation.url}/`)
promoUrl.searchParams.set("hotel", hotel.operaId)
const maskedBookingConfirmation = maskBookingConfirmation(bookingConfirmation)
const maskedUser = isOwnBooking ? maskUser(user) : null
const hotelWithFilteredAlerts = {
...hotel,
specialAlerts: filterOverlappingDates(
hotel.specialAlerts,
dt.utc(fromDate),
dt.utc(toDate)
),
}
const linkedReservationsPromise = getLinkedReservations(booking.refId)
const ancillaryPackagesPromise = booking.showAncillaries
? getAncillaryPackages({
fromDate,
hotelId: hotel.operaId,
toDate,
})
}
: null
const imageSrc =
hotel.hotelContent.images.src ||
additionalData.gallery?.heroImages[0]?.src ||
hotel.galleryImages[0]?.src
const baseUrl = env.PUBLIC_URL || "https://www.scandichotels.com"
const promoUrl = new URL(`${baseUrl}/${lang}/`)
const hotelUrl = new URL(`${baseUrl}${bookingConfirmation.url}/`)
promoUrl.searchParams.set("hotel", hotel.operaId)
const maskedBookingConfirmation = {
...bookingConfirmation,
booking: {
...bookingConfirmation.booking,
guest: {
...bookingConfirmation.booking.guest,
email: maskValue.email(bookingConfirmation.booking.guest.email),
phoneNumber: maskValue.phone(
bookingConfirmation.booking.guest.phoneNumber ?? ""
),
},
},
} satisfies BookingConfirmation
const maskedUser =
user && isOwnBooking
? ({
...user,
email: maskValue.email(user.email),
phoneNumber: maskValue.phone(user.phoneNumber ?? ""),
} satisfies SafeUser)
: null
hotel.specialAlerts = filterOverlappingDates(
hotel.specialAlerts,
dt.utc(fromDate),
dt.utc(toDate)
)
return (
<MyStayProvider
bookingConfirmation={maskedBookingConfirmation}
breakfastPackages={breakfastPackages}
lang={lang}
linkedReservationsPromise={linkedReservationsPromise}
refId={booking.refId}
roomCategories={roomCategories}
savedCreditCards={savedCreditCards}
isLoggedIn={isLoggedIn}
>
<main className={styles.main}>
<div className={styles.imageContainer}>
<div className={styles.blurOverlay} />
{imageSrc && (
<Image
className={styles.image}
src={imageSrc}
alt={hotel.name}
fill
/>
)}
</div>
<div className={styles.content}>
<div className={styles.headerContainer}>
<Header cityName={hotel.cityName} name={hotel.name} />
<ReferenceCard />
</div>
{booking.showAncillaries && ancillaryPackagesPromise && (
<Ancillaries
ancillariesPromise={ancillaryPackagesPromise}
packages={breakfastPackages}
user={maskedUser}
savedCreditCards={savedCreditCards}
/>
)}
<SingleRoom user={maskedUser} />
<MultiRoom user={maskedUser} />
<BookingSummary hotelUrl={hotelUrl.toString()} hotel={hotel} />
{!isWebview && (
<Promo
title={intl.formatMessage({
id: "booking.bookNextStay.title",
defaultMessage: "Book your next stay",
})}
text={intl.formatMessage({
id: "booking.bookAnotherStayDescription",
defaultMessage:
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
})}
buttonText={intl.formatMessage({
id: "myStay.promo.bookNextStay.buttonText",
defaultMessage: "Explore Scandic hotels",
})}
href={promoUrl.toString()}
image={hotel.hotelContent.images}
/>
)}
</div>
</main>
</MyStayProvider>
)
}
if (access === ERROR_BAD_REQUEST) {
return (
<RenderAdditionalInfoForm
confirmationNumber={confirmationNumber}
lastName={lastName}
/>
)
}
if (access === ERROR_UNAUTHORIZED) {
if (bv) {
const { firstName, email } = JSON.parse(bv) as AdditionalInfoCookieValue
return (
<main className={styles.main}>
<div className={styles.form}>
<FindMyBooking
error={FindMyBookingErrorEnum.BOOKING_ACCESS_DENIED}
defaultValues={{
firstName,
lastName,
confirmationNumber,
email,
}}
return (
<MyStayProvider
bookingConfirmation={maskedBookingConfirmation}
breakfastPackages={breakfastPackages}
lang={lang}
linkedReservationsPromise={linkedReservationsPromise}
refId={booking.refId}
roomCategories={roomCategories}
savedCreditCards={savedCreditCards}
isLoggedIn={!!user}
>
<main className={styles.main}>
<div className={styles.imageContainer}>
<div className={styles.blurOverlay} />
{imageSrc && (
<Image
className={styles.image}
src={imageSrc}
alt={hotelWithFilteredAlerts.name}
fill
/>
)}
</div>
<div className={styles.content}>
<div className={styles.headerContainer}>
<Header
cityName={hotelWithFilteredAlerts.cityName}
name={hotelWithFilteredAlerts.name}
/>
<ReferenceCard />
</div>
</main>
)
} else {
}
}
{booking.showAncillaries && ancillaryPackagesPromise && (
<Ancillaries
ancillariesPromise={ancillaryPackagesPromise}
packages={breakfastPackages}
user={maskedUser}
savedCreditCards={savedCreditCards}
/>
)}
return notFound()
<SingleRoom user={maskedUser} />
<MultiRoom user={maskedUser} />
<BookingSummary
hotelUrl={hotelUrl.toString()}
hotel={hotelWithFilteredAlerts}
/>
{!isWebview && (
<Promo
title={intl.formatMessage({
id: "booking.bookNextStay.title",
defaultMessage: "Book your next stay",
})}
text={intl.formatMessage({
id: "booking.bookAnotherStayDescription",
defaultMessage:
"Get inspired and start dreaming beyond your next trip. Explore more Scandic destinations.",
})}
buttonText={intl.formatMessage({
id: "myStay.promo.bookNextStay.buttonText",
defaultMessage: "Explore Scandic hotels",
})}
href={promoUrl.toString()}
image={hotelWithFilteredAlerts.hotelContent.images}
/>
)}
</div>
</main>
</MyStayProvider>
)
}
function RenderFindMyBookingForm({
bv,
lastName,
confirmationNumber,
}: {
bv: string
lastName: string
confirmationNumber: string
}) {
const { firstName, email } = JSON.parse(bv) as AdditionalInfoCookieValue
return (
<main className={styles.main}>
<div className={styles.form}>
<FindMyBooking
error={FindMyBookingErrorEnum.BOOKING_ACCESS_DENIED}
defaultValues={{
firstName,
lastName,
confirmationNumber,
email,
}}
/>
</div>
</main>
)
}
function RenderAdditionalInfoForm({
@@ -343,3 +346,75 @@ function RenderAdditionalInfoForm({
</main>
)
}
function maskUser(user: SafeUser | null): SafeUser | null {
if (!user) return null
return {
...user,
email: maskValue.email(user.email),
phoneNumber: maskValue.phone(user.phoneNumber ?? ""),
}
}
function maskBookingConfirmation(
bookingConfirmation: BookingConfirmation
): BookingConfirmation {
return {
...bookingConfirmation,
booking: {
...bookingConfirmation.booking,
guest: {
...bookingConfirmation.booking.guest,
email: maskValue.email(bookingConfirmation.booking.guest.email),
phoneNumber: maskValue.phone(
bookingConfirmation.booking.guest.phoneNumber ?? ""
),
},
},
}
}
async function getOrFindBookingConfirmation({
refId,
confirmationNumber,
lastName,
isLoggedIn,
bv,
}: {
refId: string
confirmationNumber: string
lastName: string
isLoggedIn: boolean
bv?: string
}) {
if (isLoggedIn)
return { bookingConfirmation: await getBookingConfirmation(refId) } as const
if (!bv) return { error: "MISSING_INFO", bookingConfirmation: null } as const
logger.debug(`MyStay: bv`, bv)
const {
firstName,
email,
confirmationNumber: bvConfirmationNo,
} = JSON.parse(bv) as AdditionalInfoCookieValue
if (!firstName || !email || bvConfirmationNo !== confirmationNumber) {
return { error: "MISSING_INFO", bookingConfirmation: null } as const
}
return {
bookingConfirmation: await findBooking(
confirmationNumber,
lastName,
firstName,
email
),
} as const
}
// Helper function to handle conditional Promise.all calls
async function noop() {
return Promise.resolve(null)
}
@@ -1,4 +1,4 @@
import { scandicFriends } from "@scandic-hotels/common/constants/routes/myPages"
import { scandicFriends } from "@scandic-hotels/common/constants/routes/customerService"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import Link from "@scandic-hotels/design-system/OldDSLink"
import { Typography } from "@scandic-hotels/design-system/Typography"
-9
View File
@@ -2,15 +2,6 @@ import { Lang } from "@scandic-hotels/common/constants/language"
import type { LangRoute } from "@scandic-hotels/common/constants/routes/langRoute"
export const sasPartnershipTermsAndConditions: LangRoute = {
da: `/${Lang.da}/kundeservice/politikker/scandic-friends-betingelser/sas-eurobonus`,
de: `/${Lang.de}/kundenbetreuung/richtlinien/scandic-friends-allgemeine-geschaeftsbedingungen/sas-eurobonus`,
en: `/${Lang.en}/customer-service/policies/scandic-friends/sas-eurobonus`,
fi: `/${Lang.fi}/asiakaspalvelu/ehdot/scandic-friends/sas-eurobonus`,
no: `/${Lang.no}/kundeservice/betingelser/scandic-friends-betingelser/sas-eurobonus`,
sv: `/${Lang.sv}/kundservice/villkor/scandic-friends/sas-eurobonus`,
}
export const faq: LangRoute = {
da: `/${Lang.da}/scandic-friends/hjalp-og-service/faq`,
de: `/${Lang.de}/scandic-friends/hilfe-und-service/faq`,
+135 -1
View File
@@ -231,6 +231,12 @@
"value": "Særlige ønsker (valgfrit)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Antal"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Jeg accepterer booking- og annulleringsbetingelserne"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "Ved booking for mere end 2 gæster vil der blive opkrævet et ekstra gebyr pr. person. Se link for detaljer."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Ekstra gæst(er)"
}
],
"booking.approx": [
{
"type": 0,
@@ -953,6 +971,16 @@
"value": "Tilføj kode"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Læs mere om brug af "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1089,16 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Læs mere om booking med "
},
{
"type": 1,
"value": "reward"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2510,6 +2548,44 @@
"value": "Datoer"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Nuværende "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Reducer "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Øg "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -5783,7 +5859,7 @@
"myPages.myStay.ancillaries.reachedMaxItemsStepperMessage": [
{
"type": 0,
"value": "Maksimal antal nået for denne vare."
"value": "Maksimalt antal nået for denne vare."
}
],
"myPages.myStay.ancillaries.reachedMaxPointsMessage": [
@@ -7569,6 +7645,58 @@
"value": "Samlede ophold"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-point"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-point"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Point"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Point"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8629,6 +8757,12 @@
"value": "). Se tilgængelige priser nedenfor."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Se prisdetaljer"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+138
View File
@@ -231,6 +231,12 @@
"value": "Sonderwünsche (optional)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Menge"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Ich akzeptiere die Buchungs- und Stornierungsbedingungen"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "Bei Buchungen für mehr als 2 Gäste fällt eine zusätzliche Gebühr pro Person an. Siehe Link für Details."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Zusätzliche Gäste"
}
],
"booking.approx": [
{
"type": 0,
@@ -949,6 +967,16 @@
"value": "Code hinzufügen"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Mehr erfahren über die Verwendung von "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1057,6 +1085,20 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Mehr über Buchungen mit "
},
{
"type": 1,
"value": "reward"
},
{
"type": 0,
"value": "erfahren"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2522,6 +2564,44 @@
"value": "Daten"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Aktuell "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": "verringern"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Erhöhen "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -7570,6 +7650,58 @@
"value": "Aufenthalte insgesamt"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-Punkt"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-Punkte"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Punkt"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Punkte"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8634,6 +8766,12 @@
"value": "). Verfügbare Übernachtungspreise sind unten zu sehen."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Tarifdetails anzeigen"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+290
View File
@@ -231,6 +231,12 @@
"value": "Special requests (optional)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Quantity"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "I accept the booking and cancellation terms"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "When booking for more than 2 guests, an additional fee will apply per person. See link for details."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Extra guest(s)"
}
],
"booking.approx": [
{
"type": 0,
@@ -337,6 +355,12 @@
"value": "Change or cancel"
}
],
"booking.changeTitle": [
{
"type": 0,
"value": "Change"
}
],
"booking.codeVoucher": [
{
"type": 0,
@@ -953,6 +977,16 @@
"value": "Add code"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Read more about using "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1095,16 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Read more about booking with "
},
{
"type": 1,
"value": "reward"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2198,6 +2242,16 @@
"value": " points"
}
],
"common.pointsInLine": [
{
"type": 1,
"value": "points"
},
{
"type": 0,
"value": " points"
}
],
"common.pointsToSpend": [
{
"type": 0,
@@ -2510,6 +2564,44 @@
"value": "Dates"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Current "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Decrease "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Increase "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -3060,6 +3152,12 @@
"value": "When you confirm the booking the room will be guaranteed for late arrival. If you fail to arrive without cancelling in advance or if you cancel after 18:00 local time, you will be charged for one reward night."
}
],
"enterDetails.confirmBooking.rewardNightGuaranteeInfo": [
{
"type": 0,
"value": "When you complete the booking the room will be guaranteed for late arrival. The hotel will hold your booking, even if you arrive after 18:00. In case of a no-show, you will be charged for one reward night."
}
],
"enterDetails.details.description": [
{
"type": 0,
@@ -3344,6 +3442,40 @@
"value": "Select payment method"
}
],
"enterDetails.paymentStep.flexBookingTermsAndConditions": [
{
"type": 0,
"value": "To complete your booking, please accept the general "
},
{
"children": [
{
"type": 0,
"value": "Booking & Cancellation Terms"
}
],
"type": 8,
"value": "termsAndConditionsLink"
},
{
"type": 0,
"value": ", and acknowledge that your data will be processed in accordance with Scandic's "
},
{
"children": [
{
"type": 0,
"value": "Privacy policy"
}
],
"type": 8,
"value": "privacyPolicyLink"
},
{
"type": 0,
"value": "."
}
],
"enterDetails.priceChangeDialog.acceptButton": [
{
"type": 0,
@@ -5669,6 +5801,24 @@
"value": "!"
}
],
"myPages.l6progress.modal.title": [
{
"type": 0,
"value": "Level upgrade and membership year"
}
],
"myPages.l6progress.modal.youCanAlsoReach": [
{
"type": 0,
"value": "You can also reach Best Friend, our highest membership level, by staying 100 nights with us within a membership year."
}
],
"myPages.l6progress.modal.yourLevelDuring": [
{
"type": 0,
"value": "Your level during the current and next period is based on the points you earn during this 12-month period."
}
],
"myPages.leftToLevelUp": [
{
"type": 0,
@@ -6057,6 +6207,88 @@
"value": "Your membership"
}
],
"myPoints.pointTransactions.extrasToBooking": [
{
"type": 0,
"value": "Extras to your booking"
}
],
"myPoints.pointTransactions.formerScandicHotel": [
{
"type": 0,
"value": "Former Scandic Hotel"
}
],
"myPoints.pointTransactions.noTransactions": [
{
"type": 0,
"value": "No transactions available"
}
],
"myPoints.pointTransactions.pointShop": [
{
"type": 0,
"value": "Scandic Friends Point Shop"
}
],
"myPoints.pointTransactions.pointsActivity": [
{
"type": 0,
"value": "Point activity"
}
],
"myPoints.pointTransactions.pointsEarnedPriorMay2021": [
{
"type": 0,
"value": "Points earned prior to May 1, 2021"
}
],
"myPoints.pointTransactions.redGift": [
{
"type": 0,
"value": "Reward Gift"
}
],
"myPoints.pointTransactions.rewardNight": [
{
"type": 0,
"value": "Reward Night"
}
],
"myPoints.pointTransactions.scandicFriendsMastercard": [
{
"type": 0,
"value": "Scandic Friends Mastercard"
}
],
"myPoints.pointTransactions.showMoreTransactions": [
{
"type": 0,
"value": "Show more transactions"
}
],
"myPoints.pointTransactions.signUpBonus": [
{
"type": 0,
"value": "Sign up bonus"
}
],
"myPoints.pointTransactions.stayAt": [
{
"type": 0,
"value": "Stay at "
},
{
"type": 1,
"value": "hotelName"
}
],
"myPoints.pointTransactions.tuiPoints": [
{
"type": 0,
"value": "TUI Points"
}
],
"myStay.accessDenied.bookingNotFound": [
{
"type": 0,
@@ -7546,6 +7778,58 @@
"value": "Total stays"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB Point"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB Points"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Point"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Points"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8610,6 +8894,12 @@
"value": "). See available rates below."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "See rate details"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+142
View File
@@ -231,6 +231,12 @@
"value": "Erityistoiveet (valinnainen)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Määrä"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Hyväksyn varaus- ja peruutusehdot"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "Kun varaat yli 2 vieraalle, lisämaksu veloitetaan per henkilö. Katso lisätietoja linkistä."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Ylimääräinen vieras/vieraat"
}
],
"booking.approx": [
{
"type": 0,
@@ -953,6 +971,20 @@
"value": "Lisää koodi"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Lue lisää "
},
{
"type": 1,
"value": "codeVoucher"
},
{
"type": 0,
"value": ":n käytöstä"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1093,20 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Lue lisää "
},
{
"type": 1,
"value": "reward"
},
{
"type": 0,
"value": " varaamisesta"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2514,6 +2560,44 @@
"value": "Päivämäärät"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Nykyinen "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Vähennä "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Lisää "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -7586,6 +7670,58 @@
"value": "Majoitukset yhteensä"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-piste"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-pistettä"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Piste"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "pistettä"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8658,6 +8794,12 @@
"value": "). Katso saatavilla olevat hinnat alla."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Katso hinnan tiedot"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+134
View File
@@ -231,6 +231,12 @@
"value": "Spesielle ønsker (valgfritt)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Antall"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Jeg godtar bestillings- og avbestillingsvilkårene"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "Ved bestilling for mer enn 2 gjester vil det påløpe et tilleggsgebyr per person. Se lenke for detaljer."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Ekstra gjest(er)"
}
],
"booking.approx": [
{
"type": 0,
@@ -953,6 +971,16 @@
"value": "Legg til kode"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Les mer om bruk av "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1089,16 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Les mer om bestilling med "
},
{
"type": 1,
"value": "reward"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2510,6 +2548,44 @@
"value": "Datoer"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Gjeldende "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Reduser "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Øk "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -7582,6 +7658,58 @@
"value": "Totalt antall opphold"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-poeng"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-poeng"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Poeng"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Poeng"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8654,6 +8782,12 @@
"value": " ). Se tilgjengelige priser nedenfor."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Se prisdetaljer"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
+135 -1
View File
@@ -231,6 +231,12 @@
"value": "Särskilda önskemål (valfritt)"
}
],
"ancillaries.label.quantity": [
{
"type": 0,
"value": "Antal"
}
],
"ancillaries.unableToDisplayBreakfastPrices": [
{
"type": 0,
@@ -249,6 +255,18 @@
"value": "Jag accepterar boknings- och avbokningsvillkoren"
}
],
"booking.alert.extraBeds.text": [
{
"type": 0,
"value": "När du bokar för fler än 2 gäster tillkommer en extra avgift per person. Se länk för detaljer."
}
],
"booking.alert.extraguests": [
{
"type": 0,
"value": "Extra gäst(er)"
}
],
"booking.approx": [
{
"type": 0,
@@ -953,6 +971,16 @@
"value": "Lägg till kod"
}
],
"bookingWidget.bookingCode.readMore": [
{
"type": 0,
"value": "Läs mer om att använda "
},
{
"type": 1,
"value": "codeVoucher"
}
],
"bookingWidget.bookingCode.remember": [
{
"type": 0,
@@ -1061,6 +1089,16 @@
"value": "details"
}
],
"bookingWidget.reward.readMore": [
{
"type": 0,
"value": "Läs mer om bokning med "
},
{
"type": 1,
"value": "reward"
}
],
"bookingWidget.reward.rewardNight": [
{
"type": 0,
@@ -2510,6 +2548,44 @@
"value": "Datum"
}
],
"designSystem.stepper.ariaLabel.currentCount": [
{
"type": 0,
"value": "Aktuell "
},
{
"type": 1,
"value": "label"
},
{
"type": 0,
"value": " "
},
{
"type": 1,
"value": "count"
}
],
"designSystem.stepper.ariaLabel.decrease": [
{
"type": 0,
"value": "Minska "
},
{
"type": 1,
"value": "label"
}
],
"designSystem.stepper.ariaLabel.increase": [
{
"type": 0,
"value": "Öka "
},
{
"type": 1,
"value": "label"
}
],
"destination.backToCities": [
{
"type": 0,
@@ -3845,7 +3921,7 @@
"findMyBooking.findYourStay": [
{
"type": 0,
"value": "Hitta ditt hotell"
"value": "Hitta din bokning"
}
],
"findMyBooking.manageBooking": [
@@ -7566,6 +7642,58 @@
"value": "Totalt antal vistelser"
}
],
"price.numberOfEuroBonusPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "EB-poäng"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "EB-poäng"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfEuroBonusPoints"
}
],
"price.numberOfScandicPoints": [
{
"offset": 0,
"options": {
"one": {
"value": [
{
"type": 0,
"value": "Punkt"
}
]
},
"other": {
"value": [
{
"type": 0,
"value": "Poäng"
}
]
}
},
"pluralType": "cardinal",
"type": 6,
"value": "numberOfScandicPoints"
}
],
"price.numberOfVouchers": [
{
"offset": 0,
@@ -8626,6 +8754,12 @@
"value": "). Se tillgängliga priser nedan."
}
],
"selectRate.alert.reservationPolicies": [
{
"type": 0,
"value": "Se bokningsvillkor"
}
],
"selectRate.availableRooms.all": [
{
"offset": 0,
@@ -212,6 +212,12 @@ describe("getTimeAgoText", () => {
expect(result).toBe("")
})
it("should return Today for todays date", () => {
const todaysDate = dt().format("YYYY-MM-DD")
const result = getTimeAgoText(todaysDate, mockIntl)
expect(result).toBe("Today")
})
})
describe("boundary transitions", () => {
+7
View File
@@ -22,6 +22,13 @@ export function getTimeAgoText(checkoutDate: string, intl: IntlShape): string {
return ""
}
if (daysDiff === 0) {
return intl.formatMessage({
id: "nextStay.today",
defaultMessage: "Today",
})
}
if (daysDiff <= 30) {
// 1-30 days
return intl.formatMessage(
@@ -198,10 +198,15 @@ export function Room({
{isFlexBooking || isChangeBooking ? (
<li className={styles.listItem}>
<p className={styles.label}>
{intl.formatMessage({
id: "booking.changeOrCancel",
defaultMessage: "Change or cancel",
})}
{isChangeBooking
? intl.formatMessage({
id: "booking.changeTitle",
defaultMessage: "Change",
})
: intl.formatMessage({
id: "booking.changeOrCancel",
defaultMessage: "Change or cancel",
})}
</p>
<p>
{intl.formatMessage(
@@ -9,7 +9,7 @@
overflow-y: auto;
padding: var(--Space-x2) var(--Space-x3);
position: fixed;
top: calc(140px + max(var(--sitewide-alert-sticky-height), 25px));
top: calc(140px + max(var(--sitewide-alert-sticky-height), 15px));
width: 100%;
height: calc(100% - 200px);
z-index: 10010;
@@ -33,6 +33,7 @@
.text {
padding: 0 var(--Space-x1);
white-space: normal;
}
.textPlaceholderColor {
color: var(--UI-Text-Placeholder);
@@ -5,6 +5,7 @@ import { cx } from "class-variance-authority"
import { useSearchParams } from "next/navigation"
import { use, useEffect, useRef, useState } from "react"
import { FormProvider, useForm } from "react-hook-form"
import { useIntl } from "react-intl"
import { dt } from "@scandic-hotels/common/dt"
import { useScrollLock } from "@scandic-hotels/common/hooks/useScrollLock"
@@ -12,7 +13,7 @@ import useStickyPosition from "@scandic-hotels/common/hooks/useStickyPosition"
import { StickyElementNameEnum } from "@scandic-hotels/common/stores/sticky-position"
import { debounce } from "@scandic-hotels/common/utils/debounce"
import isValidJson from "@scandic-hotels/common/utils/isValidJson"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { IconButton } from "@scandic-hotels/design-system/IconButton"
import { trpc } from "@scandic-hotels/trpc/client"
import { SEARCH_TYPE_REDEMPTION } from "@scandic-hotels/trpc/constants/booking"
@@ -66,6 +67,7 @@ export default function BookingWidgetClient({
autoLock: false,
})
const shouldFetchAutoComplete = !!data.hotelId || !!data.city
const intl = useIntl()
const { data: destinationsData, isPending } =
trpc.autocomplete.destinations.useQuery(
@@ -257,13 +259,17 @@ export default function BookingWidgetClient({
/>
<div className={styles.backdrop} onClick={closeMobileSearch} />
<div className={formContainerClassNames}>
<button
<IconButton
className={styles.close}
onClick={closeMobileSearch}
type="button"
>
<MaterialIcon icon="close" />
</button>
variant="Muted"
emphasis
aria-label={intl.formatMessage({
id: "common.close",
defaultMessage: "Close",
})}
onPress={closeMobileSearch}
iconName="close"
/>
<Form
type={type}
onClose={closeMobileSearch}
@@ -6,7 +6,7 @@ import { useIntl } from "react-intl"
import { Lang } from "@scandic-hotels/common/constants/language"
import { dt } from "@scandic-hotels/common/dt"
import { Button } from "@scandic-hotels/design-system/Button"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { IconButton } from "@scandic-hotels/design-system/IconButton"
import { Typography } from "@scandic-hotels/design-system/Typography"
import useLang from "../../../../hooks/useLang"
@@ -72,9 +72,17 @@ export default function DatePickerRangeMobile({
return (
<div className={styles.container} ref={monthsRef}>
<header className={styles.header}>
<button className={styles.close} onClick={close} type="button">
<MaterialIcon icon="close" />
</button>
<IconButton
className={styles.close}
variant="Muted"
emphasis
aria-label={intl.formatMessage({
id: "common.close",
defaultMessage: "Close",
})}
onPress={close}
iconName="close"
/>
</header>
<DayPicker
classNames={{
@@ -5,6 +5,7 @@ import { useFormContext, useWatch } from "react-hook-form"
import { useIntl } from "react-intl"
import { Button } from "@scandic-hotels/design-system/Button"
import { IconButton } from "@scandic-hotels/design-system/IconButton"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { Typography } from "@scandic-hotels/design-system/Typography"
import { SEARCH_TYPE_REDEMPTION } from "@scandic-hotels/trpc/constants/booking"
@@ -114,9 +115,17 @@ export default function GuestsRoomsPickerDialog({
<>
<section className={styles.contentWrapper}>
<header className={styles.header}>
<button type="button" className={styles.close} onClick={onClose}>
<MaterialIcon icon="close" />
</button>
<IconButton
className={styles.close}
variant="Muted"
emphasis
aria-label={intl.formatMessage({
id: "common.close",
defaultMessage: "Close",
})}
onPress={onClose}
iconName="close"
/>
</header>
<div className={styles.contentContainer}>
@@ -35,7 +35,7 @@ export default function TermsAndConditions({
<span>
{intl.formatMessage({
id: "booking.acceptBookingTerms",
defaultMessage: "I accept the booking and cancellation terms.",
defaultMessage: "I accept the booking and cancellation terms",
})}
</span>
</Typography>
@@ -64,3 +64,12 @@ export const bookingTerms = {
no: `${policies[Lang.no]}/reservasjonsbetingelser`,
sv: `${policies[Lang.sv]}/bokningsvillkor`,
} as const satisfies LangRoute
export const sasPartnershipTermsAndConditions = {
da: `${scandicFriends[Lang.da]}/sas-eurobonus`,
de: `${scandicFriends[Lang.de]}/sas-eurobonus`,
en: `${scandicFriends[Lang.en]}/sas-eurobonus`,
fi: `${scandicFriends[Lang.fi]}/sas-eurobonus`,
no: `${scandicFriends[Lang.no]}/sas-eurobonus`,
sv: `${scandicFriends[Lang.sv]}/sas-eurobonus`,
} as const satisfies LangRoute
@@ -441,551 +441,504 @@ type IconMap = Record<
const _materialIcons = {
accessibility: {
outlined: { outlined: AccessibilityOutlined, filled: AccessibilityFilled },
rounded: { outlined: AccessibilityOutlined, filled: AccessibilityFilled },
},
accessible: {
outlined: { outlined: AccessibleOutlined, filled: AccessibleFilled },
rounded: { outlined: AccessibleOutlined, filled: AccessibleFilled },
},
acute: { outlined: { outlined: AcuteOutlined, filled: AcuteFilled } },
add: { outlined: { outlined: AddOutlined, filled: AddFilled } },
acute: { rounded: { outlined: AcuteOutlined, filled: AcuteFilled } },
add: { rounded: { outlined: AddOutlined, filled: AddFilled } },
add_circle: {
outlined: { outlined: AddCircleOutlined, filled: AddCircleFilled },
rounded: { outlined: AddCircleOutlined, filled: AddCircleFilled },
},
air: { outlined: { outlined: AirOutlined, filled: AirFilled } },
air: { rounded: { outlined: AirOutlined, filled: AirFilled } },
air_purifier_gen: {
outlined: {
outlined: AirPurifierGenOutlined,
filled: AirPurifierGenFilled,
},
rounded: { outlined: AirPurifierGenOutlined, filled: AirPurifierGenFilled },
},
airline_seat_recline_normal: {
outlined: {
rounded: {
outlined: AirlineSeatReclineNormalOutlined,
filled: AirlineSeatReclineNormalFilled,
},
},
airplane_ticket: {
outlined: {
outlined: AirplaneTicketOutlined,
filled: AirplaneTicketFilled,
},
rounded: { outlined: AirplaneTicketOutlined, filled: AirplaneTicketFilled },
},
apartment: {
outlined: { outlined: ApartmentOutlined, filled: ApartmentFilled },
rounded: { outlined: ApartmentOutlined, filled: ApartmentFilled },
},
apparel: { outlined: { outlined: ApparelOutlined, filled: ApparelFilled } },
apparel: { rounded: { outlined: ApparelOutlined, filled: ApparelFilled } },
arrow_back: {
outlined: { outlined: ArrowBackOutlined, filled: ArrowBackFilled },
rounded: { outlined: ArrowBackOutlined, filled: ArrowBackFilled },
},
arrow_back_ios: {
outlined: { outlined: ArrowBackIosOutlined, filled: ArrowBackIosFilled },
rounded: { outlined: ArrowBackIosOutlined, filled: ArrowBackIosFilled },
},
arrow_forward: {
outlined: { outlined: ArrowForwardOutlined, filled: ArrowForwardFilled },
rounded: { outlined: ArrowForwardOutlined, filled: ArrowForwardFilled },
},
arrow_forward_ios: {
outlined: {
rounded: {
outlined: ArrowForwardIosOutlined,
filled: ArrowForwardIosFilled,
},
},
arrow_right: {
outlined: { outlined: ArrowRightOutlined, filled: ArrowRightFilled },
rounded: { outlined: ArrowRightOutlined, filled: ArrowRightFilled },
},
arrow_upward: {
outlined: { outlined: ArrowUpwardOutlined, filled: ArrowUpwardFilled },
rounded: { outlined: ArrowUpwardOutlined, filled: ArrowUpwardFilled },
},
assistant_navigation: {
outlined: {
rounded: {
outlined: AssistantNavigationOutlined,
filled: AssistantNavigationFilled,
},
},
asterisk: {
outlined: { outlined: AsteriskOutlined, filled: AsteriskFilled },
},
asterisk: { rounded: { outlined: AsteriskOutlined, filled: AsteriskFilled } },
attractions: {
outlined: { outlined: AttractionsOutlined, filled: AttractionsFilled },
rounded: { outlined: AttractionsOutlined, filled: AttractionsFilled },
},
award_star: {
outlined: { outlined: AwardStarOutlined, filled: AwardStarFilled },
rounded: { outlined: AwardStarOutlined, filled: AwardStarFilled },
},
bakery_dining: {
outlined: { outlined: BakeryDiningOutlined, filled: BakeryDiningFilled },
rounded: { outlined: BakeryDiningOutlined, filled: BakeryDiningFilled },
},
balcony: { outlined: { outlined: BalconyOutlined, filled: BalconyFilled } },
bathroom: {
outlined: { outlined: BathroomOutlined, filled: BathroomFilled },
},
bathtub: { outlined: { outlined: BathtubOutlined, filled: BathtubFilled } },
balcony: { rounded: { outlined: BalconyOutlined, filled: BalconyFilled } },
bathroom: { rounded: { outlined: BathroomOutlined, filled: BathroomFilled } },
bathtub: { rounded: { outlined: BathtubOutlined, filled: BathtubFilled } },
beach_access: {
outlined: { outlined: BeachAccessOutlined, filled: BeachAccessFilled },
rounded: { outlined: BeachAccessOutlined, filled: BeachAccessFilled },
},
bed: { outlined: { outlined: BedOutlined, filled: BedFilled } },
bed: { rounded: { outlined: BedOutlined, filled: BedFilled } },
bedroom_parent: {
outlined: { outlined: BedroomParentOutlined, filled: BedroomParentFilled },
rounded: { outlined: BedroomParentOutlined, filled: BedroomParentFilled },
},
box: { outlined: { outlined: BoxOutlined, filled: BoxFilled } },
box: { rounded: { outlined: BoxOutlined, filled: BoxFilled } },
brunch_dining: {
outlined: { outlined: BrunchDiningOutlined, filled: BrunchDiningFilled },
rounded: { outlined: BrunchDiningOutlined, filled: BrunchDiningFilled },
},
business_center: {
outlined: {
outlined: BusinessCenterOutlined,
filled: BusinessCenterFilled,
},
rounded: { outlined: BusinessCenterOutlined, filled: BusinessCenterFilled },
},
calendar_add_on: {
outlined: { outlined: CalendarAddOnOutlined, filled: CalendarAddOnFilled },
rounded: { outlined: CalendarAddOnOutlined, filled: CalendarAddOnFilled },
},
calendar_clock: {
outlined: { outlined: CalendarClockOutlined, filled: CalendarClockFilled },
rounded: { outlined: CalendarClockOutlined, filled: CalendarClockFilled },
},
calendar_month: {
outlined: { outlined: CalendarMonthOutlined, filled: CalendarMonthFilled },
rounded: { outlined: CalendarMonthOutlined, filled: CalendarMonthFilled },
},
calendar_today: {
outlined: { outlined: CalendarTodayOutlined, filled: CalendarTodayFilled },
rounded: { outlined: CalendarTodayOutlined, filled: CalendarTodayFilled },
},
call: { outlined: { outlined: CallOutlined, filled: CallFilled } },
call: { rounded: { outlined: CallOutlined, filled: CallFilled } },
call_quality: {
outlined: { outlined: CallQualityOutlined, filled: CallQualityFilled },
rounded: { outlined: CallQualityOutlined, filled: CallQualityFilled },
},
camera: { outlined: { outlined: CameraOutlined, filled: CameraFilled } },
cancel: { outlined: { outlined: CancelOutlined, filled: CancelFilled } },
chair: { outlined: { outlined: ChairOutlined, filled: ChairFilled } },
check: { outlined: { outlined: CheckOutlined, filled: CheckFilled } },
camera: { rounded: { outlined: CameraOutlined, filled: CameraFilled } },
cancel: { rounded: { outlined: CancelOutlined, filled: CancelFilled } },
chair: { rounded: { outlined: ChairOutlined, filled: ChairFilled } },
check: { rounded: { outlined: CheckOutlined, filled: CheckFilled } },
check_box: {
outlined: { outlined: CheckBoxOutlined, filled: CheckBoxFilled },
rounded: { outlined: CheckBoxOutlined, filled: CheckBoxFilled },
},
check_circle: {
outlined: { outlined: CheckCircleOutlined, filled: CheckCircleFilled },
rounded: { outlined: CheckCircleOutlined, filled: CheckCircleFilled },
},
checked_bag: {
outlined: { outlined: CheckedBagOutlined, filled: CheckedBagFilled },
rounded: { outlined: CheckedBagOutlined, filled: CheckedBagFilled },
},
checkroom: {
outlined: { outlined: CheckroomOutlined, filled: CheckroomFilled },
rounded: { outlined: CheckroomOutlined, filled: CheckroomFilled },
},
chevron_left: {
outlined: { outlined: ChevronLeftOutlined, filled: ChevronLeftFilled },
rounded: { outlined: ChevronLeftOutlined, filled: ChevronLeftFilled },
},
chevron_right: {
outlined: { outlined: ChevronRightOutlined, filled: ChevronRightFilled },
rounded: { outlined: ChevronRightOutlined, filled: ChevronRightFilled },
},
close: { outlined: { outlined: CloseOutlined, filled: CloseFilled } },
coffee: { outlined: { outlined: CoffeeOutlined, filled: CoffeeFilled } },
close: { rounded: { outlined: CloseOutlined, filled: CloseFilled } },
coffee: { rounded: { outlined: CoffeeOutlined, filled: CoffeeFilled } },
coffee_maker: {
outlined: { outlined: CoffeeMakerOutlined, filled: CoffeeMakerFilled },
rounded: { outlined: CoffeeMakerOutlined, filled: CoffeeMakerFilled },
},
compare_arrows: {
outlined: { outlined: CompareArrowsOutlined, filled: CompareArrowsFilled },
},
computer: {
outlined: { outlined: ComputerOutlined, filled: ComputerFilled },
rounded: { outlined: CompareArrowsOutlined, filled: CompareArrowsFilled },
},
computer: { rounded: { outlined: ComputerOutlined, filled: ComputerFilled } },
concierge: {
outlined: { outlined: ConciergeOutlined, filled: ConciergeFilled },
rounded: { outlined: ConciergeOutlined, filled: ConciergeFilled },
},
confirmation_number: {
outlined: {
rounded: {
outlined: ConfirmationNumberOutlined,
filled: ConfirmationNumberFilled,
},
},
connected_tv: {
outlined: { outlined: ConnectedTvOutlined, filled: ConnectedTvFilled },
rounded: { outlined: ConnectedTvOutlined, filled: ConnectedTvFilled },
},
content_copy: {
outlined: { outlined: ContentCopyOutlined, filled: ContentCopyFilled },
},
contract: {
outlined: { outlined: ContractOutlined, filled: ContractFilled },
rounded: { outlined: ContentCopyOutlined, filled: ContentCopyFilled },
},
contract: { rounded: { outlined: ContractOutlined, filled: ContractFilled } },
cool_to_dry: {
outlined: { outlined: CoolToDryOutlined, filled: CoolToDryFilled },
rounded: { outlined: CoolToDryOutlined, filled: CoolToDryFilled },
},
countertops: {
outlined: { outlined: CountertopsOutlined, filled: CountertopsFilled },
rounded: { outlined: CountertopsOutlined, filled: CountertopsFilled },
},
credit_card: {
outlined: { outlined: CreditCardOutlined, filled: CreditCardFilled },
rounded: { outlined: CreditCardOutlined, filled: CreditCardFilled },
},
credit_card_heart: {
outlined: {
rounded: {
outlined: CreditCardHeartOutlined,
filled: CreditCardHeartFilled,
},
},
credit_score: {
outlined: { outlined: CreditScoreOutlined, filled: CreditScoreFilled },
},
curtains: {
outlined: { outlined: CurtainsOutlined, filled: CurtainsFilled },
rounded: { outlined: CreditScoreOutlined, filled: CreditScoreFilled },
},
curtains: { rounded: { outlined: CurtainsOutlined, filled: CurtainsFilled } },
curtains_closed: {
outlined: {
outlined: CurtainsClosedOutlined,
filled: CurtainsClosedFilled,
},
rounded: { outlined: CurtainsClosedOutlined, filled: CurtainsClosedFilled },
},
dangerous: {
outlined: { outlined: DangerousOutlined, filled: DangerousFilled },
rounded: { outlined: DangerousOutlined, filled: DangerousFilled },
},
deck: { outlined: { outlined: DeckOutlined, filled: DeckFilled } },
delete: { outlined: { outlined: DeleteOutlined, filled: DeleteFilled } },
desk: { outlined: { outlined: DeskOutlined, filled: DeskFilled } },
deck: { rounded: { outlined: DeckOutlined, filled: DeckFilled } },
delete: { rounded: { outlined: DeleteOutlined, filled: DeleteFilled } },
desk: { rounded: { outlined: DeskOutlined, filled: DeskFilled } },
device_thermostat: {
outlined: {
rounded: {
outlined: DeviceThermostatOutlined,
filled: DeviceThermostatFilled,
},
},
diamond: { outlined: { outlined: DiamondOutlined, filled: DiamondFilled } },
dining: { outlined: { outlined: DiningOutlined, filled: DiningFilled } },
diamond: { rounded: { outlined: DiamondOutlined, filled: DiamondFilled } },
dining: { rounded: { outlined: DiningOutlined, filled: DiningFilled } },
directions: {
outlined: { outlined: DirectionsOutlined, filled: DirectionsFilled },
rounded: { outlined: DirectionsOutlined, filled: DirectionsFilled },
},
directions_run: {
outlined: { outlined: DirectionsRunOutlined, filled: DirectionsRunFilled },
rounded: { outlined: DirectionsRunOutlined, filled: DirectionsRunFilled },
},
directions_subway: {
outlined: {
rounded: {
outlined: DirectionsSubwayOutlined,
filled: DirectionsSubwayFilled,
},
},
downhill_skiing: {
outlined: {
outlined: DownhillSkiingOutlined,
filled: DownhillSkiingFilled,
},
rounded: { outlined: DownhillSkiingOutlined, filled: DownhillSkiingFilled },
},
download: {
outlined: { outlined: DownloadOutlined, filled: DownloadFilled },
},
dresser: { outlined: { outlined: DresserOutlined, filled: DresserFilled } },
edit: { outlined: { outlined: EditOutlined, filled: EditFilled } },
download: { rounded: { outlined: DownloadOutlined, filled: DownloadFilled } },
dresser: { rounded: { outlined: DresserOutlined, filled: DresserFilled } },
edit: { rounded: { outlined: EditOutlined, filled: EditFilled } },
edit_calendar: {
outlined: { outlined: EditCalendarOutlined, filled: EditCalendarFilled },
rounded: { outlined: EditCalendarOutlined, filled: EditCalendarFilled },
},
edit_square: {
outlined: { outlined: EditSquareOutlined, filled: EditSquareFilled },
rounded: { outlined: EditSquareOutlined, filled: EditSquareFilled },
},
electric_bike: {
outlined: { outlined: ElectricBikeOutlined, filled: ElectricBikeFilled },
rounded: { outlined: ElectricBikeOutlined, filled: ElectricBikeFilled },
},
electric_car: {
outlined: { outlined: ElectricCarOutlined, filled: ElectricCarFilled },
},
elevator: {
outlined: { outlined: ElevatorOutlined, filled: ElevatorFilled },
rounded: { outlined: ElectricCarOutlined, filled: ElectricCarFilled },
},
elevator: { rounded: { outlined: ElevatorOutlined, filled: ElevatorFilled } },
emoji_transportation: {
outlined: {
rounded: {
outlined: EmojiTransportationOutlined,
filled: EmojiTransportationFilled,
},
},
error: { outlined: { outlined: ErrorOutlined, filled: ErrorFilled } },
exercise: {
outlined: { outlined: ExerciseOutlined, filled: ExerciseFilled },
},
error: { rounded: { outlined: ErrorOutlined, filled: ErrorFilled } },
exercise: { rounded: { outlined: ExerciseOutlined, filled: ExerciseFilled } },
family_restroom: {
outlined: {
outlined: FamilyRestroomOutlined,
filled: FamilyRestroomFilled,
},
rounded: { outlined: FamilyRestroomOutlined, filled: FamilyRestroomFilled },
},
fastfood: {
outlined: { outlined: FastfoodOutlined, filled: FastfoodFilled },
},
favorite: {
outlined: { outlined: FavoriteOutlined, filled: FavoriteFilled },
},
fax: { outlined: { outlined: FaxOutlined, filled: FaxFilled } },
fastfood: { rounded: { outlined: FastfoodOutlined, filled: FastfoodFilled } },
favorite: { rounded: { outlined: FavoriteOutlined, filled: FavoriteFilled } },
fax: { rounded: { outlined: FaxOutlined, filled: FaxFilled } },
featured_seasonal_and_gifts: {
outlined: {
rounded: {
outlined: FeaturedSeasonalAndGiftsOutlined,
filled: FeaturedSeasonalAndGiftsFilled,
},
},
festival: {
outlined: { outlined: FestivalOutlined, filled: FestivalFilled },
},
filter: { outlined: { outlined: FilterOutlined, filled: FilterFilled } },
festival: { rounded: { outlined: FestivalOutlined, filled: FestivalFilled } },
filter: { rounded: { outlined: FilterOutlined, filled: FilterFilled } },
filter_alt: {
outlined: { outlined: FilterAltOutlined, filled: FilterAltFilled },
rounded: { outlined: FilterAltOutlined, filled: FilterAltFilled },
},
floor_lamp: {
outlined: { outlined: FloorLampOutlined, filled: FloorLampFilled },
rounded: { outlined: FloorLampOutlined, filled: FloorLampFilled },
},
forest: { outlined: { outlined: ForestOutlined, filled: ForestFilled } },
forest: { rounded: { outlined: ForestOutlined, filled: ForestFilled } },
format_list_bulleted: {
outlined: {
rounded: {
outlined: FormatListBulletedOutlined,
filled: FormatListBulletedFilled,
},
},
garage: { outlined: { outlined: GarageOutlined, filled: GarageFilled } },
globe: { outlined: { outlined: GlobeOutlined, filled: GlobeFilled } },
garage: { rounded: { outlined: GarageOutlined, filled: GarageFilled } },
globe: { rounded: { outlined: GlobeOutlined, filled: GlobeFilled } },
golf_course: {
outlined: { outlined: GolfCourseOutlined, filled: GolfCourseFilled },
rounded: { outlined: GolfCourseOutlined, filled: GolfCourseFilled },
},
groups: { outlined: { outlined: GroupsOutlined, filled: GroupsFilled } },
groups: { rounded: { outlined: GroupsOutlined, filled: GroupsFilled } },
health_and_beauty: {
outlined: {
rounded: {
outlined: HealthAndBeautyOutlined,
filled: HealthAndBeautyFilled,
},
},
heat: { outlined: { outlined: HeatOutlined, filled: HeatFilled } },
hiking: { outlined: { outlined: HikingOutlined, filled: HikingFilled } },
home: { outlined: { outlined: HomeOutlined, filled: HomeFilled } },
hot_tub: { outlined: { outlined: HotTubOutlined, filled: HotTubFilled } },
heat: { rounded: { outlined: HeatOutlined, filled: HeatFilled } },
hiking: { rounded: { outlined: HikingOutlined, filled: HikingFilled } },
home: { rounded: { outlined: HomeOutlined, filled: HomeFilled } },
hot_tub: { rounded: { outlined: HotTubOutlined, filled: HotTubFilled } },
houseboat: {
outlined: { outlined: HouseboatOutlined, filled: HouseboatFilled },
rounded: { outlined: HouseboatOutlined, filled: HouseboatFilled },
},
hvac: { outlined: { outlined: HvacOutlined, filled: HvacFilled } },
id_card: { outlined: { outlined: IdCardOutlined, filled: IdCardFilled } },
hvac: { rounded: { outlined: HvacOutlined, filled: HvacFilled } },
id_card: { rounded: { outlined: IdCardOutlined, filled: IdCardFilled } },
imagesmode: {
outlined: { outlined: ImagesmodeOutlined, filled: ImagesmodeFilled },
rounded: { outlined: ImagesmodeOutlined, filled: ImagesmodeFilled },
},
info: { outlined: { outlined: InfoOutlined, filled: InfoFilled } },
iron: { outlined: { outlined: IronOutlined, filled: IronFilled } },
kayaking: {
outlined: { outlined: KayakingOutlined, filled: KayakingFilled },
},
kettle: { outlined: { outlined: KettleOutlined, filled: KettleFilled } },
info: { rounded: { outlined: InfoOutlined, filled: InfoFilled } },
iron: { rounded: { outlined: IronOutlined, filled: IronFilled } },
kayaking: { rounded: { outlined: KayakingOutlined, filled: KayakingFilled } },
kettle: { rounded: { outlined: KettleOutlined, filled: KettleFilled } },
keyboard_arrow_down: {
outlined: {
rounded: {
outlined: KeyboardArrowDownOutlined,
filled: KeyboardArrowDownFilled,
},
},
keyboard_arrow_right: {
outlined: {
rounded: {
outlined: KeyboardArrowRightOutlined,
filled: KeyboardArrowRightFilled,
},
},
keyboard_arrow_up: {
outlined: {
rounded: {
outlined: KeyboardArrowUpOutlined,
filled: KeyboardArrowUpFilled,
},
},
king_bed: { outlined: { outlined: KingBedOutlined, filled: KingBedFilled } },
kitchen: { outlined: { outlined: KitchenOutlined, filled: KitchenFilled } },
king_bed: { rounded: { outlined: KingBedOutlined, filled: KingBedFilled } },
kitchen: { rounded: { outlined: KitchenOutlined, filled: KitchenFilled } },
landscape: {
outlined: { outlined: LandscapeOutlined, filled: LandscapeFilled },
rounded: { outlined: LandscapeOutlined, filled: LandscapeFilled },
},
laundry: { outlined: { outlined: LaundryOutlined, filled: LaundryFilled } },
link: { outlined: { outlined: LinkOutlined, filled: LinkFilled } },
liquor: { outlined: { outlined: LiquorOutlined, filled: LiquorFilled } },
live_tv: { outlined: { outlined: LiveTvOutlined, filled: LiveTvFilled } },
laundry: { rounded: { outlined: LaundryOutlined, filled: LaundryFilled } },
link: { rounded: { outlined: LinkOutlined, filled: LinkFilled } },
liquor: { rounded: { outlined: LiquorOutlined, filled: LiquorFilled } },
live_tv: { rounded: { outlined: LiveTvOutlined, filled: LiveTvFilled } },
local_bar: {
outlined: { outlined: LocalBarOutlined, filled: LocalBarFilled },
rounded: { outlined: LocalBarOutlined, filled: LocalBarFilled },
},
local_cafe: {
outlined: { outlined: LocalCafeOutlined, filled: LocalCafeFilled },
rounded: { outlined: LocalCafeOutlined, filled: LocalCafeFilled },
},
local_convenience_store: {
outlined: {
rounded: {
outlined: LocalConvenienceStoreOutlined,
filled: LocalConvenienceStoreFilled,
},
},
local_drink: {
outlined: { outlined: LocalDrinkOutlined, filled: LocalDrinkFilled },
rounded: { outlined: LocalDrinkOutlined, filled: LocalDrinkFilled },
},
local_laundry_service: {
outlined: {
rounded: {
outlined: LocalLaundryServiceOutlined,
filled: LocalLaundryServiceFilled,
},
},
local_parking: {
outlined: { outlined: LocalParkingOutlined, filled: LocalParkingFilled },
rounded: { outlined: LocalParkingOutlined, filled: LocalParkingFilled },
},
location_city: {
outlined: { outlined: LocationCityOutlined, filled: LocationCityFilled },
rounded: { outlined: LocationCityOutlined, filled: LocationCityFilled },
},
location_on: {
outlined: { outlined: LocationOnOutlined, filled: LocationOnFilled },
rounded: { outlined: LocationOnOutlined, filled: LocationOnFilled },
},
lock: { outlined: { outlined: LockOutlined, filled: LockFilled } },
lock: { rounded: { outlined: LockOutlined, filled: LockFilled } },
lock_clock: {
outlined: { outlined: LockClockOutlined, filled: LockClockFilled },
rounded: { outlined: LockClockOutlined, filled: LockClockFilled },
},
loyalty: { outlined: { outlined: LoyaltyOutlined, filled: LoyaltyFilled } },
luggage: { outlined: { outlined: LuggageOutlined, filled: LuggageFilled } },
mail: { outlined: { outlined: MailOutlined, filled: MailFilled } },
map: { outlined: { outlined: MapOutlined, filled: MapFilled } },
loyalty: { rounded: { outlined: LoyaltyOutlined, filled: LoyaltyFilled } },
luggage: { rounded: { outlined: LuggageOutlined, filled: LuggageFilled } },
mail: { rounded: { outlined: MailOutlined, filled: MailFilled } },
map: { rounded: { outlined: MapOutlined, filled: MapFilled } },
meeting_room: {
outlined: { outlined: MeetingRoomOutlined, filled: MeetingRoomFilled },
rounded: { outlined: MeetingRoomOutlined, filled: MeetingRoomFilled },
},
microwave: {
outlined: { outlined: MicrowaveOutlined, filled: MicrowaveFilled },
rounded: { outlined: MicrowaveOutlined, filled: MicrowaveFilled },
},
mobile_charge: {
outlined: { outlined: MobileChargeOutlined, filled: MobileChargeFilled },
rounded: { outlined: MobileChargeOutlined, filled: MobileChargeFilled },
},
mode_fan: { outlined: { outlined: ModeFanOutlined, filled: ModeFanFilled } },
museum: { outlined: { outlined: MuseumOutlined, filled: MuseumFilled } },
mode_fan: { rounded: { outlined: ModeFanOutlined, filled: ModeFanFilled } },
museum: { rounded: { outlined: MuseumOutlined, filled: MuseumFilled } },
music_cast: {
outlined: { outlined: MusicCastOutlined, filled: MusicCastFilled },
rounded: { outlined: MusicCastOutlined, filled: MusicCastFilled },
},
music_note: {
outlined: { outlined: MusicNoteOutlined, filled: MusicNoteFilled },
rounded: { outlined: MusicNoteOutlined, filled: MusicNoteFilled },
},
nature: { outlined: { outlined: NatureOutlined, filled: NatureFilled } },
nature: { rounded: { outlined: NatureOutlined, filled: NatureFilled } },
night_shelter: {
outlined: { outlined: NightShelterOutlined, filled: NightShelterFilled },
rounded: { outlined: NightShelterOutlined, filled: NightShelterFilled },
},
nightlife: {
outlined: { outlined: NightlifeOutlined, filled: NightlifeFilled },
rounded: { outlined: NightlifeOutlined, filled: NightlifeFilled },
},
open_in_new: {
outlined: { outlined: OpenInNewOutlined, filled: OpenInNewFilled },
rounded: { outlined: OpenInNewOutlined, filled: OpenInNewFilled },
},
pan_zoom: { outlined: { outlined: PanZoomOutlined, filled: PanZoomFilled } },
panorama: {
outlined: { outlined: PanoramaOutlined, filled: PanoramaFilled },
},
pause: { outlined: { outlined: PauseOutlined, filled: PauseFilled } },
pan_zoom: { rounded: { outlined: PanZoomOutlined, filled: PanZoomFilled } },
panorama: { rounded: { outlined: PanoramaOutlined, filled: PanoramaFilled } },
pause: { rounded: { outlined: PauseOutlined, filled: PauseFilled } },
pedal_bike: {
outlined: { outlined: PedalBikeOutlined, filled: PedalBikeFilled },
rounded: { outlined: PedalBikeOutlined, filled: PedalBikeFilled },
},
person: { outlined: { outlined: PersonOutlined, filled: PersonFilled } },
pets: { outlined: { outlined: PetsOutlined, filled: PetsFilled } },
person: { rounded: { outlined: PersonOutlined, filled: PersonFilled } },
pets: { rounded: { outlined: PetsOutlined, filled: PetsFilled } },
phone_enabled: {
outlined: { outlined: PhoneEnabledOutlined, filled: PhoneEnabledFilled },
rounded: { outlined: PhoneEnabledOutlined, filled: PhoneEnabledFilled },
},
photo_camera: {
outlined: { outlined: PhotoCameraOutlined, filled: PhotoCameraFilled },
rounded: { outlined: PhotoCameraOutlined, filled: PhotoCameraFilled },
},
play_arrow: {
outlined: { outlined: PlayArrowOutlined, filled: PlayArrowFilled },
rounded: { outlined: PlayArrowOutlined, filled: PlayArrowFilled },
},
pool: { outlined: { outlined: PoolOutlined, filled: PoolFilled } },
print: { outlined: { outlined: PrintOutlined, filled: PrintFilled } },
radio: { outlined: { outlined: RadioOutlined, filled: RadioFilled } },
pool: { rounded: { outlined: PoolOutlined, filled: PoolFilled } },
print: { rounded: { outlined: PrintOutlined, filled: PrintFilled } },
radio: { rounded: { outlined: RadioOutlined, filled: RadioFilled } },
recommend: {
outlined: { outlined: RecommendOutlined, filled: RecommendFilled },
rounded: { outlined: RecommendOutlined, filled: RecommendFilled },
},
redeem: { outlined: { outlined: RedeemOutlined, filled: RedeemFilled } },
refresh: { outlined: { outlined: RefreshOutlined, filled: RefreshFilled } },
remove: { outlined: { outlined: RemoveOutlined, filled: RemoveFilled } },
redeem: { rounded: { outlined: RedeemOutlined, filled: RedeemFilled } },
refresh: { rounded: { outlined: RefreshOutlined, filled: RefreshFilled } },
remove: { rounded: { outlined: RemoveOutlined, filled: RemoveFilled } },
restaurant: {
outlined: { outlined: RestaurantOutlined, filled: RestaurantFilled },
rounded: { outlined: RestaurantOutlined, filled: RestaurantFilled },
},
room_service: {
outlined: { outlined: RoomServiceOutlined, filled: RoomServiceFilled },
rounded: { outlined: RoomServiceOutlined, filled: RoomServiceFilled },
},
router: { outlined: { outlined: RouterOutlined, filled: RouterFilled } },
sailing: { outlined: { outlined: SailingOutlined, filled: SailingFilled } },
sauna: { outlined: { outlined: SaunaOutlined, filled: SaunaFilled } },
scene: { outlined: { outlined: SceneOutlined, filled: SceneFilled } },
search: { outlined: { outlined: SearchOutlined, filled: SearchFilled } },
sell: { outlined: { outlined: SellOutlined, filled: SellFilled } },
router: { rounded: { outlined: RouterOutlined, filled: RouterFilled } },
sailing: { rounded: { outlined: SailingOutlined, filled: SailingFilled } },
sauna: { rounded: { outlined: SaunaOutlined, filled: SaunaFilled } },
scene: { rounded: { outlined: SceneOutlined, filled: SceneFilled } },
search: { rounded: { outlined: SearchOutlined, filled: SearchFilled } },
sell: { rounded: { outlined: SellOutlined, filled: SellFilled } },
shopping_bag: {
outlined: { outlined: ShoppingBagOutlined, filled: ShoppingBagFilled },
rounded: { outlined: ShoppingBagOutlined, filled: ShoppingBagFilled },
},
shower: { outlined: { outlined: ShowerOutlined, filled: ShowerFilled } },
shower: { rounded: { outlined: ShowerOutlined, filled: ShowerFilled } },
single_bed: {
outlined: { outlined: SingleBedOutlined, filled: SingleBedFilled },
rounded: { outlined: SingleBedOutlined, filled: SingleBedFilled },
},
skateboarding: {
outlined: { outlined: SkateboardingOutlined, filled: SkateboardingFilled },
rounded: { outlined: SkateboardingOutlined, filled: SkateboardingFilled },
},
smoke_free: {
outlined: { outlined: SmokeFreeOutlined, filled: SmokeFreeFilled },
rounded: { outlined: SmokeFreeOutlined, filled: SmokeFreeFilled },
},
smoking_rooms: {
outlined: { outlined: SmokingRoomsOutlined, filled: SmokingRoomsFilled },
rounded: { outlined: SmokingRoomsOutlined, filled: SmokingRoomsFilled },
},
spa: { outlined: { outlined: SpaOutlined, filled: SpaFilled } },
spa: { rounded: { outlined: SpaOutlined, filled: SpaFilled } },
sports_esports: {
outlined: { outlined: SportsEsportsOutlined, filled: SportsEsportsFilled },
rounded: { outlined: SportsEsportsOutlined, filled: SportsEsportsFilled },
},
sports_golf: {
outlined: { outlined: SportsGolfOutlined, filled: SportsGolfFilled },
rounded: { outlined: SportsGolfOutlined, filled: SportsGolfFilled },
},
sports_handball: {
outlined: {
outlined: SportsHandballOutlined,
filled: SportsHandballFilled,
},
rounded: { outlined: SportsHandballOutlined, filled: SportsHandballFilled },
},
sports_tennis: {
outlined: { outlined: SportsTennisOutlined, filled: SportsTennisFilled },
rounded: { outlined: SportsTennisOutlined, filled: SportsTennisFilled },
},
stairs: { outlined: { outlined: StairsOutlined, filled: StairsFilled } },
star: { outlined: { outlined: StarOutlined, filled: StarFilled } },
stairs: { rounded: { outlined: StairsOutlined, filled: StairsFilled } },
star: { rounded: { outlined: StarOutlined, filled: StarFilled } },
sticky_note_2: {
outlined: { outlined: StickyNote2Outlined, filled: StickyNote2Filled },
rounded: { outlined: StickyNote2Outlined, filled: StickyNote2Filled },
},
straighten: {
outlined: { outlined: StraightenOutlined, filled: StraightenFilled },
rounded: { outlined: StraightenOutlined, filled: StraightenFilled },
},
styler: { outlined: { outlined: StylerOutlined, filled: StylerFilled } },
styler: { rounded: { outlined: StylerOutlined, filled: StylerFilled } },
support_agent: {
outlined: { outlined: SupportAgentOutlined, filled: SupportAgentFilled },
rounded: { outlined: SupportAgentOutlined, filled: SupportAgentFilled },
},
swipe: { outlined: { outlined: SwipeOutlined, filled: SwipeFilled } },
swipe: { rounded: { outlined: SwipeOutlined, filled: SwipeFilled } },
sync_saved_locally: {
outlined: {
rounded: {
outlined: SyncSavedLocallyOutlined,
filled: SyncSavedLocallyFilled,
},
},
table_bar: {
outlined: { outlined: TableBarOutlined, filled: TableBarFilled },
rounded: { outlined: TableBarOutlined, filled: TableBarFilled },
},
theater_comedy: {
outlined: { outlined: TheaterComedyOutlined, filled: TheaterComedyFilled },
rounded: { outlined: TheaterComedyOutlined, filled: TheaterComedyFilled },
},
things_to_do: {
outlined: { outlined: ThingsToDoOutlined, filled: ThingsToDoFilled },
rounded: { outlined: ThingsToDoOutlined, filled: ThingsToDoFilled },
},
train: { outlined: { outlined: TrainOutlined, filled: TrainFilled } },
tram: { outlined: { outlined: TramOutlined, filled: TramFilled } },
train: { rounded: { outlined: TrainOutlined, filled: TrainFilled } },
tram: { rounded: { outlined: TramOutlined, filled: TramFilled } },
transit_ticket: {
outlined: { outlined: TransitTicketOutlined, filled: TransitTicketFilled },
rounded: { outlined: TransitTicketOutlined, filled: TransitTicketFilled },
},
travel: { outlined: { outlined: TravelOutlined, filled: TravelFilled } },
travel: { rounded: { outlined: TravelOutlined, filled: TravelFilled } },
travel_luggage_and_bags: {
outlined: {
rounded: {
outlined: TravelLuggageAndBagsOutlined,
filled: TravelLuggageAndBagsFilled,
},
},
trophy: { outlined: { outlined: TrophyOutlined, filled: TrophyFilled } },
tv_guide: { outlined: { outlined: TvGuideOutlined, filled: TvGuideFilled } },
trophy: { rounded: { outlined: TrophyOutlined, filled: TrophyFilled } },
tv_guide: { rounded: { outlined: TvGuideOutlined, filled: TvGuideFilled } },
tv_remote: {
outlined: { outlined: TvRemoteOutlined, filled: TvRemoteFilled },
rounded: { outlined: TvRemoteOutlined, filled: TvRemoteFilled },
},
upload: { outlined: { outlined: UploadOutlined, filled: UploadFilled } },
upload: { rounded: { outlined: UploadOutlined, filled: UploadFilled } },
visibility: {
outlined: { outlined: VisibilityOutlined, filled: VisibilityFilled },
rounded: { outlined: VisibilityOutlined, filled: VisibilityFilled },
},
visibility_off: {
outlined: { outlined: VisibilityOffOutlined, filled: VisibilityOffFilled },
rounded: { outlined: VisibilityOffOutlined, filled: VisibilityOffFilled },
},
volume_off: {
outlined: { outlined: VolumeOffOutlined, filled: VolumeOffFilled },
rounded: { outlined: VolumeOffOutlined, filled: VolumeOffFilled },
},
volume_up: {
outlined: { outlined: VolumeUpOutlined, filled: VolumeUpFilled },
rounded: { outlined: VolumeUpOutlined, filled: VolumeUpFilled },
},
ward: { outlined: { outlined: WardOutlined, filled: WardFilled } },
warning: { outlined: { outlined: WarningOutlined, filled: WarningFilled } },
ward: { rounded: { outlined: WardOutlined, filled: WardFilled } },
warning: { rounded: { outlined: WarningOutlined, filled: WarningFilled } },
water_full: {
outlined: { outlined: WaterFullOutlined, filled: WaterFullFilled },
rounded: { outlined: WaterFullOutlined, filled: WaterFullFilled },
},
wifi: { outlined: { outlined: WifiOutlined, filled: WifiFilled } },
yard: { outlined: { outlined: YardOutlined, filled: YardFilled } },
wifi: { rounded: { outlined: WifiOutlined, filled: WifiFilled } },
yard: { rounded: { outlined: YardOutlined, filled: YardFilled } },
} satisfies IconMap
export const materialIcons = _materialIcons as IconMap
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AccessibilityFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M480.08-734q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M372-80v-533H120v-60h720v60H588v533h-60v-260h-96v260z" />
<path d="M480.08-734q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M372-110v-503H150q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h660q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H588v503q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63Q528-97.25 528-110v-230h-96v230q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63Q372-97.25 372-110" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AccessibilityOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M480.08-734q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M372-80v-533H120v-60h720v60H588v533h-60v-260h-96v260z" />
<path d="M480.08-734q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M372-110v-503H150q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h660q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H588v503q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63Q528-97.25 528-110v-230h-96v230q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63Q372-97.25 372-110" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AccessibleFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M482.08-734q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M696-80v-209H482q-29.7 0-50.85-21.15T410-361v-247q0-29.7 21-50.85T482.49-680q22.17 0 38.34 9T559-636q42 49 92 82t109 35v60q-51 0-105-25t-104-67v183h133q29.7 0 50.85 21.15T756-296v216zm-300 0q-83 0-139.5-56.5T200-276q0-68 49.5-125.5T380-468v61q-54 5-86.5 44.5T261-276q0 58 38.5 97t96.5 39q47 0 87-32.5t44-86.5h61q-8 80-66 129.5T396-80" />
<path d="M396-80q-83 0-139.5-56.5T200-276q0-54 32.5-103t88.5-73q11-5 22-.5t16 15.5.5 22-15.5 16q-38 16-60.5 50.5T261-276q0 58 38.5 97t96.5 39q38 0 72.5-21.5T518-221q5-12 16.5-17t22.5 0 15.5 16-.5 22q-24 55-73 87.5T396-80m330 0q-13 0-21.5-8.5T696-110v-179H482q-30 0-51-21t-21-51v-247q0-30 21-51t51-21q23 0 39 9t38 35q37 43 79.5 74t91.5 40q13 2 21.5 11t8.5 22-9.5 21.5T729-461q-45-7-90.5-30.5T551-551v183h133q30 0 51 21t21 51v186q0 13-8.5 21.5T726-80M482-734q-30 0-51.5-21.5T409-807t21.5-51.5T482-880t51.5 21.5T555-807t-21.5 51.5T482-734" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AccessibleOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M482.08-734q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M696-80v-209H482q-29.7 0-50.85-21.15T410-361v-247q0-29.7 21-50.85T482.49-680q22.17 0 38.34 9T559-636q42 49 92 82t109 35v60q-51 0-105-25t-104-67v183h133q29.7 0 50.85 21.15T756-296v216zm-300 0q-83 0-139.5-56.5T200-276q0-68 49.5-125.5T380-468v61q-54 5-86.5 44.5T261-276q0 58 38.5 97t96.5 39q47 0 87-32.5t44-86.5h61q-8 80-66 129.5T396-80" />
<path d="M396-80q-83 0-139.5-56.5T200-276q0-54 32.5-103t88.5-73q11-5 22-.5t16 15.5.5 22-15.5 16q-38 16-60.5 50.5T261-276q0 58 38.5 97t96.5 39q38 0 72.5-21.5T518-221q5-12 16.5-17t22.5 0 15.5 16-.5 22q-24 55-73 87.5T396-80m330 0q-13 0-21.5-8.5T696-110v-179H482q-30 0-51-21t-21-51v-247q0-30 21-51t51-21q23 0 39 9t38 35q37 43 79.5 74t91.5 40q13 2 21.5 11t8.5 22-9.5 21.5T729-461q-45-7-90.5-30.5T551-551v183h133q30 0 51 21t21 51v186q0 13-8.5 21.5T726-80M482-734q-30 0-51.5-21.5T409-807t21.5-51.5T482-880t51.5 21.5T555-807t-21.5 51.5T482-734" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AcuteFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M600-160q-134 0-227-93t-93-227 93-227 227-93 227 93 93 227-93 227-227 93m102-177 42-42-114-114v-147h-60v172zM80-610v-60h160v60zM40-450v-60h200v60zm40 160v-60h160v60z" />
<path d="M600-160q-134 0-227-93t-93-227 93-227 227-93 227 93 93 227-93 227-227 93m30-333v-117q0-12-8.62-21-8.63-9-21.38-9t-21.37 8.5Q570-623 570-610v130q0 5.57 2 10.78 2 5.22 7 10.22l102 101q8.8 9 20.9 9t21.1-8.84 9-21-9-21.16zM110-610q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-670 110-670h100q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5zM70-450q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q57.25-510 70-510h140q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5zm40 160q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-350 110-350h100q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AcuteOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M600-160q-134 0-227-93t-93-227 93-227 227-93 227 93 93 227-93 227-227 93m-.24-60Q708-220 784-295.76q76-75.77 76-184Q860-588 784.24-664q-75.77-76-184-76Q492-740 416-664.24q-76 75.77-76 184Q340-372 415.76-296q75.77 76 184 76M702-337l42-42-114-114v-147h-60v172zM80-610v-60h160v60zM40-450v-60h200v60zm40 160v-60h160v60zm520-190" />
<path d="M600-160q-134 0-227-93t-93-227 93-227 227-93 227 93 93 227-93 227-227 93m-.24-60Q708-220 784-295.76q76-75.77 76-184Q860-588 784.24-664q-75.77-76-184-76Q492-740 416-664.24q-76 75.77-76 184Q340-372 415.76-296q75.77 76 184 76M630-493v-117q0-12-8.62-21-8.63-9-21.38-9t-21.37 8.5Q570-623 570-610v130q0 5.57 2 10.78 2 5.22 7 10.22l102 101q8.8 9 20.9 9t21.1-8.84 9-21-9-21.16zM110-610q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-670 110-670h100q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5zM70-450q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q57.25-510 70-510h140q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5zm40 160q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-350 110-350h100q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5zm490-190" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AddCircleFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M453-280h60v-166h167v-60H513v-174h-60v174H280v60h173zm27.27 200q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34T80-480.5t31.5-155.66 86-126.84 127.34-85.5T480.5-880t155.66 31.5T763-763t85.5 127T880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80" />
<path d="M453-446v136q0 12.75 8.68 21.37 8.67 8.63 21.5 8.63 12.82 0 21.32-8.63 8.5-8.62 8.5-21.37v-136h137q12.75 0 21.38-8.68 8.62-8.67 8.62-21.5 0-12.82-8.62-21.32-8.63-8.5-21.38-8.5H513v-144q0-12.75-8.68-21.38-8.67-8.62-21.5-8.62-12.82 0-21.32 8.62-8.5 8.63-8.5 21.38v144H310q-12.75 0-21.37 8.68-8.63 8.67-8.63 21.5 0 12.82 8.63 21.32 8.62 8.5 21.37 8.5zm27.27 366q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34T80-480.5t31.5-155.66 86-126.84 127.34-85.5T480.5-880t155.66 31.5T763-763t85.5 127T880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AddCircleOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M453-280h60v-166h167v-60H513v-174h-60v174H280v60h173zm27.27 200q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34T80-480.5t31.5-155.66 86-126.84 127.34-85.5T480.5-880t155.66 31.5T763-763t85.5 127T880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80m.23-60Q622-140 721-239.5t99-241T721.19-721 480-820q-141 0-240.5 98.81T140-480q0 141 99.5 240.5t241 99.5m-.5-340" />
<path d="M453-446v136q0 12.75 8.68 21.37 8.67 8.63 21.5 8.63 12.82 0 21.32-8.63 8.5-8.62 8.5-21.37v-136h137q12.75 0 21.38-8.68 8.62-8.67 8.62-21.5 0-12.82-8.62-21.32-8.63-8.5-21.38-8.5H513v-144q0-12.75-8.68-21.38-8.67-8.62-21.5-8.62-12.82 0-21.32 8.62-8.5 8.63-8.5 21.38v144H310q-12.75 0-21.37 8.68-8.63 8.67-8.63 21.5 0 12.82 8.63 21.32 8.62 8.5 21.37 8.5zm27.27 366q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34T80-480.5t31.5-155.66 86-126.84 127.34-85.5T480.5-880t155.66 31.5T763-763t85.5 127T880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80m.23-60Q622-140 721-239.5t99-241T721.19-721 480-820q-141 0-240.5 98.81T140-480q0 141 99.5 240.5t241 99.5m-.5-340" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AddFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M450-450H200v-60h250v-250h60v250h250v60H510v250h-60z" />
<path d="M450-450H230q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h220v-220q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v220h220q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H510v220q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AddOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M450-450H200v-60h250v-250h60v250h250v60H510v250h-60z" />
<path d="M450-450H230q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h220v-220q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v220h220q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H510v220q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AirFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M465-160q-54 0-85.5-28T348-273h68q0 26 11.5 39.5T465-220q27 0 38.5-12t11.5-41-11.5-42.5T465-329H80v-60h385q54 0 82 28t28 88q0 57-28 85t-82 28M80-568v-60h548q37 0 54-17.5t17-58.5-17-58.5-54-17.5q-38 0-55 20.5T556-708h-60q0-58 35-95t97-37q61 0 96 35.5T759-704t-35 100.5-96 35.5zm672 330v-60q35 0 51.5-19.5T820-374q0-38-18.5-55T748-446H80v-60h668q62 0 97 35t35 97q0 64-33 100t-95 36" />
<path d="M461-160q-38 0-69-22t-41-59q-3-13 6.5-23t23.5-10q10.64 0 18.82 7.5T413-248q6 14 19.73 21t28.27 7q22.95 0 38.48-15.54Q515-251.07 515-274.04q0-22.96-15.52-38.46Q483.95-328 461-328H110q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-388 110-388h351q47.5 0 80.75 33.25T575-274t-33.25 80.75T461-160M110-568q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-628 110-628h513q31.67 0 53.83-22.24 22.17-22.23 22.17-54Q699-736 676.83-758q-22.16-22-53.83-22-23 0-42 12t-26 33q-4 11-12.5 19t-19.5 8q-13.78 0-22.39-9.5T495-740q11-45 46.5-72.5T623-840q57 0 96.5 39.5T759-704t-39.5 96.5T623-568zm670 321q-13 2-22.5-6.5T748-276q0-11 8-19.5t19-12.5q22-7 33.5-26t11.5-42q0-30-21-51t-51-21H110q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-508 110-508h638q54.69 0 93.34 38.66Q880-430.69 880-376q0 47-27.5 83T780-247" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AirOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M465-160q-54 0-85.5-28T348-273h68q0 26 11.5 39.5T465-220q27 0 38.5-12t11.5-41-11.5-42.5T465-329H80v-60h385q54 0 82 28t28 88q0 57-28 85t-82 28M80-568v-60h548q37 0 54-17.5t17-58.5-17-58.5-54-17.5q-38 0-55 20.5T556-708h-60q0-58 35-95t97-37q61 0 96 35.5T759-704t-35 100.5-96 35.5zm672 330v-60q35 0 51.5-19.5T820-374q0-38-18.5-55T748-446H80v-60h668q62 0 97 35t35 97q0 64-33 100t-95 36" />
<path d="M461-160q-38 0-69-22t-41-59q-3-13 6.5-23t23.5-10q10.64 0 18.82 7.5T413-248q6 14 19.73 21t28.27 7q22.95 0 38.48-15.54Q515-251.07 515-274.04q0-22.96-15.52-38.46Q483.95-328 461-328H110q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-388 110-388h351q47.5 0 80.75 33.25T575-274t-33.25 80.75T461-160M110-568q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-628 110-628h513q31.67 0 53.83-22.24 22.17-22.23 22.17-54Q699-736 676.83-758q-22.16-22-53.83-22-23 0-42 12t-26 33q-4 11-12.5 19t-19.5 8q-13.78 0-22.39-9.5T495-740q11-45 46.5-72.5T623-840q57 0 96.5 39.5T759-704t-39.5 96.5T623-568zm670 321q-13 2-22.5-6.5T748-276q0-11 8-19.5t19-12.5q22-7 33.5-26t11.5-42q0-30-21-51t-51-21H110q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32Q97.25-508 110-508h638q54.69 0 93.34 38.66Q880-430.69 880-376q0 47-27.5 83T780-247" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AirPurifierGenFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M120-120v-610q0-46 32.5-78t77.5-32h170q46 0 78 32t32 78v90H390q-25 0-42.5 17.5T330-580v240q0 25 17.5 42.5T390-280h120v160zm581-141q-23 0-45.5-6T612-282l19-57q20 8 37.5 13t32.5 5q14 0 27.5-4t27.5-14q22-15 46-21t43-6q21 0 44 6t44 14l-19 57q-23-8-40.5-12.5T844-306q-15 0-31 5.5T781-284q-15 11-36 17t-44 6m-191-79H390v-240h120zm190-87q-23 0-45-6t-43-15l19-56q18 8 35.5 12.5T701-487q14 0 27.5-4.5T756-505q23-15 45-21t42-6q22 0 45.5 6t44.5 14l-20 57q-20-7-37.5-12t-31.5-5-29.5 5-32.5 17q-20 14-40.5 18.5T700-427m1-166q-22 0-45-6t-44-15l19-57q23 9 39.5 13.5T701-653t27.5-4 27.5-14q23-15 45.5-21t42.5-6q21 0 43.5 5.5T933-678l-19 57q-23-8-39.5-12.5T844-638t-29.5 4.5T781-616q-17 11-38 17t-42 6" />
<path d="M699.77-427q-14.77 0-29.61-3T640-438q-12-4-17.5-15t-1.5-23.22q4-10.78 15-16.28t23-1.5q11 3 21.69 5t20.81 2q13.5 0 27-4.5T756-505q23-15 44.94-21 21.95-6 42.06-6 14.52 0 30.02 2.5Q888.51-527 904-522q12.39 3.86 18.19 15.43Q928-495 923-483q-3.86 12.27-15.43 17.63Q896-460 884-464q-11-3-21.2-5.5-10.21-2.5-18.8-2.5-14 0-29.47 4.95Q799.07-462.1 782-450q-20 14-40.5 18.5t-41.73 4.5m1.09-166q-14.86 0-30.36-2.5T640-603q-11.73-3.86-16.87-15.43Q618-630 622-642.22 626-653 636.5-659t22.5-2 22.71 6q10.72 2 19.29 2 13.67 0 27.33-4Q742-661 756-671q23-15 45.5-21t42.18-6q14.32 0 29.82 2.5T905-688q11.73 3.71 16.87 14.86Q927-662 923-649.64 919-638 908-632t-23 2-22.21-6-18.82-2q-13.97 0-29.47 4.5T781-616q-17 11-37.89 17-20.9 6-42.25 6m.14 332q-15 0-30.5-2.5T640-271q-12-4-17.5-15.5t-1.5-23.72q4-10.78 15-16.28t23-1.5q11 4 21.5 5.5t20.1 1.5q14.4 0 27.7-3.94 13.29-3.94 27.7-14.06 21.54-14.9 45.88-20.95 24.35-6.05 43.07-6.05 14.05 0 29.55 2.5T905-356q12 4 17 15.5t1 23.86q-4 11.64-15 17.14t-23 1.5q-13-4-23-6t-18.36-2Q829-306 813-300.5T781-284q-15 11-36.2 17-21.19 6-43.8 6M150-120q-12.75 0-21.37-8.63Q120-137.25 120-150v-580q0-45.83 32.5-77.92Q185-840 230-840h170q45.83 0 77.92 32.08Q510-775.83 510-730v90H390q-24.75 0-42.37 17.62Q330-604.75 330-580v240q0 24.75 17.63 42.37Q365.25-280 390-280h120v130q0 12.75-8.62 21.37Q492.75-120 480-120zm360-220H390v-240h120z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AirPurifierGenOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M120-120v-610q0-45.83 32.5-77.92Q185-840 230-840h170q45.83 0 77.92 32.08Q510-775.83 510-730v610zm270-220h60v-240h-60zM180-180h270v-100h-60q-24.75 0-42.37-17.63Q330-315.25 330-340v-240q0-24.75 17.63-42.38Q365.25-640 390-640h60v-90q0-21.25-14.37-35.63Q421.25-780 400-780H230q-20 0-35 14.37-15 14.38-15 35.63zm520.35-247q-23.35 0-45.31-5.88T612-448l19-56q18 8 35.5 12.5T701-487q13.67 0 27.33-4.5Q742-496 756-505q23-15 44.94-21 21.95-6 42.06-6 22.12 0 45.56 6T933-512l-20 57q-20.4-6.8-37.7-11.9T844-472t-29.47 4.95Q799.07-462.1 782-450q-20 14-40.5 18.5t-41.15 4.5m.65-166q-22 0-45-6t-44-15l19-57q23 9 39.5 13.5T701-653q13.67 0 27.33-4Q742-661 756-671q23-15 45.5-21t42.5-6q21 0 43.37 5.42Q909.74-687.17 933-678l-19 57q-23-8-39.5-12.5T844-638t-29.5 4.5T781-616q-17 11-37.85 17-20.84 6-42.15 6m0 332q-22.91 0-45.38-5.88T612-282l19-57q20 8 37.59 13 17.6 5 32.41 5 13.67 0 27.33-4Q742-329 756-339q21.55-14.9 45.91-20.95Q826.26-366 845-366q21 0 44 6t44 14l-19 57q-23-8-40.39-12.5T844-306q-15.3 0-31.15 5.5T781-284q-15 11-36.2 17-21.19 6-43.8 6m-251 81v-560.5 10.5-10.5z" />
<path d="M120-730q0-45.83 32.5-77.92Q185-840 230-840h170q45.83 0 77.92 32.08Q510-775.83 510-730v580q0 12.75-8.62 21.37Q492.75-120 480-120H150q-12.75 0-21.37-8.63Q120-137.25 120-150zm270 390h60v-240h-60zM180-180h270v-100h-60q-24.75 0-42.37-17.63Q330-315.25 330-340v-240q0-24.75 17.63-42.38Q365.25-640 390-640h60v-90q0-21.25-14.37-35.63Q421.25-780 400-780H230q-20 0-35 14.37-15 14.38-15 35.63zm519.77-247q-14.77 0-29.61-3T640-438q-12-4-17.5-15t-1.5-23.22q4-10.78 15-16.28t23-1.5q11 3 21.69 5t20.81 2q13.5 0 27-4.5T756-505q23-15 44.94-21 21.95-6 42.06-6 14.52 0 30.02 2.5Q888.51-527 904-522q12.39 3.86 18.19 15.43Q928-495 923-483q-3.86 12.27-15.43 17.63Q896-460 884-464q-11-3-21.2-5.5-10.21-2.5-18.8-2.5-14 0-29.47 4.95Q799.07-462.1 782-450q-20 14-40.5 18.5t-41.73 4.5m1.09-166q-14.86 0-30.36-2.5T640-603q-11.73-3.86-16.87-15.43Q618-630 622-642.22 626-653 636.5-659t22.5-2 22.71 6q10.72 2 19.29 2 13.67 0 27.33-4Q742-661 756-671q23-15 45.5-21t42.18-6q14.32 0 29.82 2.5T905-688q11.73 3.71 16.87 14.86Q927-662 923-649.64 919-638 908-632t-23 2-22.21-6-18.82-2q-13.97 0-29.47 4.5T781-616q-17 11-37.89 17-20.9 6-42.25 6m.14 332q-15 0-30.5-2.5T640-271q-12-4-17.5-15.5t-1.5-23.72q4-10.78 15-16.28t23-1.5q11 4 21.5 5.5t20.1 1.5q14.4 0 27.7-3.94 13.29-3.94 27.7-14.06 21.54-14.9 45.88-20.95 24.35-6.05 43.07-6.05 14.05 0 29.55 2.5T905-356q12 4 17 15.5t1 23.86q-4 11.64-15 17.14t-23 1.5q-13-4-23-6t-18.36-2Q829-306 813-300.5T781-284q-15 11-36.2 17-21.19 6-43.8 6m-251 81v-560.5 10.5-10.5z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AirlineSeatReclineNormalFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M620-171H300q-24.75 0-42.37-17.63Q240-206.25 240-231v-461h60v461h320zM438-718q-34 0-57.5-23.5T357-799t23.5-57.5T438-880t57.5 23.5T519-799t-23.5 57.5T438-718M660-80v-191H415q-30.94 0-52.97-21.74T340-345v-228q0-40.74 28.39-68.87Q396.77-670 437.89-670q41.11 0 69.61 28.13T536-573v202h109q30.94 0 52.97 21.74T720-297v217z" />
<path d="M590-171H300q-24.75 0-42.37-17.63Q240-206.25 240-231v-431q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v431h290q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5M438-718q-34 0-57.5-23.5T357-799t23.5-57.5T438-880t57.5 23.5T519-799t-23.5 57.5T438-718m222 608v-161H415q-30.94 0-52.97-21.74T340-345v-228q0-40.74 28.39-68.87Q396.77-670 437.89-670q41.11 0 69.61 28.13T536-573v202h109q30.94 0 52.97 21.74T720-297v187q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63Q660-97.25 660-110" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AirlineSeatReclineNormalOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M620-171H300q-24.75 0-42.37-17.63Q240-206.25 240-231v-461h60v461h320zM438-718q-34 0-57.5-23.5T357-799t23.5-57.5T438-880t57.5 23.5T519-799t-23.5 57.5T438-718M660-80v-191H415q-30.94 0-52.97-21.74T340-345v-228q0-40.74 28.39-68.87Q396.77-670 437.89-670q41.11 0 69.61 28.13T536-573v202h109q30.94 0 52.97 21.74T720-297v217z" />
<path d="M590-171H300q-24.75 0-42.37-17.63Q240-206.25 240-231v-431q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v431h290q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5M438-718q-34 0-57.5-23.5T357-799t23.5-57.5T438-880t57.5 23.5T519-799t-23.5 57.5T438-718m222 608v-161H415q-30.94 0-52.97-21.74T340-345v-228q0-40.74 28.39-68.87Q396.77-670 437.89-670q41.11 0 69.61 28.13T536-573v202h109q30.94 0 52.97 21.74T720-297v187q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63Q660-97.25 660-110" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AirplaneTicketFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m348-325 368-101q17-5 25-16t3-28-18-23.5-29-2.5l-103 27-166-162-52 12 103 181-111 31-52-43-29 10zm472 165H140q-25 0-42.5-17.5T80-220v-153q37-8 61.5-37.5T166-480t-24.5-70T80-587v-153q0-25 17.5-42.5T140-800h680q25 0 42.5 17.5T880-740v520q0 25-17.5 42.5T820-160" />
<path d="m479-438-111 31-45-38q-1-1-15-2l-4 1q-7 2-9.5 9t.5 13l47 88q2 5 7.5 7.5t10.5.5l356-98q17-5 25-16t3-28-18-23.5-29-2.5l-103 27-156-152q-5-5-11.5-7t-12.5 0l-5 1q-13 3-17.5 15t1.5 23zM140-160q-25 0-42.5-17.5T80-220v-132q0-10 5.5-17.5T100-380q31-11 48.5-39.5T166-480q0-31-17.5-60T100-580q-9-3-14.5-10.5T80-608v-132q0-25 17.5-42.5T140-800h680q25 0 42.5 17.5T880-740v520q0 25-17.5 42.5T820-160z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AirplaneTicketOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m348-325 368-101q17-5 25-16t3-28-18-23.5-28.8-2.37L594-469 428-631l-52 12 103 181-111 31-52-43-29 10zm472 165H140q-24.75 0-42.37-17.63Q80-195.25 80-220v-153q37-8 61.5-37.5T166-480t-24.5-70T80-587v-153q0-24.75 17.63-42.38Q115.25-800 140-800h680q24.75 0 42.38 17.62Q880-764.75 880-740v520q0 24.75-17.62 42.37Q844.75-160 820-160m0-60v-520H140v109q39 26 62.5 65t23.5 86-23.5 86-62.5 65v109zM480-480" />
<path d="m479-438-111 31-45-38q-1-1-15-2l-4 1q-7 2-9.5 9t.5 13l47 88q2 5 7.5 7.5t10.5.5l356-98q17-5 25-16t3-28-18-23.5-28.8-2.37L594-469 438.23-620.59Q433-626 426.67-628q-6.34-2-12.67 0l-4.74 1q-13.26 3-17.76 15t1.5 23zM140-160q-24.75 0-42.37-17.63Q80-195.25 80-220v-132q0-10.19 5.5-17.59Q91-377 100-380q31-11 48.5-39.5t17.5-60-17.5-60.5-48.5-40q-9-3-14.5-10.41Q80-597.81 80-608v-132q0-24.75 17.63-42.38Q115.25-800 140-800h680q24.75 0 42.38 17.62Q880-764.75 880-740v520q0 24.75-17.62 42.37Q844.75-160 820-160zm0-60h680v-520H140v109q39 26 62.5 65t23.5 86-23.5 86-62.5 65zm340-260" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ApartmentFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M120-120v-555h165v-165h390v330h165v390H533v-165H427v165zm60-60h105v-105H180zm0-165h105v-105H180zm0-165h105v-105H180zm165 165h105v-105H345zm0-165h105v-105H345zm0-165h105v-105H345zm165 330h105v-105H510zm0-165h105v-105H510zm0-165h105v-105H510zm165 495h105v-105H675zm0-165h105v-105H675z" />
<path d="M180-120q-24.75 0-42.37-17.63Q120-155.25 120-180v-435q0-24.75 17.63-42.38Q155.25-675 180-675h105v-105q0-24.75 17.63-42.38Q320.25-840 345-840h270q24.75 0 42.38 17.62Q675-804.75 675-780v270h105q24.75 0 42.38 17.62Q840-474.75 840-450v270q0 24.75-17.62 42.37Q804.75-120 780-120H533v-165H427v165zm0-60h105v-105H180zm0-165h105v-105H180zm0-165h105v-105H180zm165 165h105v-105H345zm0-165h105v-105H345zm0-165h105v-105H345zm165 330h105v-105H510zm0-165h105v-105H510zm0-165h105v-105H510zm165 495h105v-105H675zm0-165h105v-105H675z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ApartmentOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M120-120v-555h165v-165h390v330h165v390H533v-165H427v165zm60-60h105v-105H180zm0-165h105v-105H180zm0-165h105v-105H180zm165 165h105v-105H345zm0-165h105v-105H345zm0-165h105v-105H345zm165 330h105v-105H510zm0-165h105v-105H510zm0-165h105v-105H510zm165 495h105v-105H675zm0-165h105v-105H675z" />
<path d="M180-120q-24.75 0-42.37-17.63Q120-155.25 120-180v-435q0-24.75 17.63-42.38Q155.25-675 180-675h105v-105q0-24.75 17.63-42.38Q320.25-840 345-840h270q24.75 0 42.38 17.62Q675-804.75 675-780v270h105q24.75 0 42.38 17.62Q840-474.75 840-450v270q0 24.75-17.62 42.37Q804.75-120 780-120H533v-165H427v165zm0-60h105v-105H180zm0-165h105v-105H180zm0-165h105v-105H180zm165 165h105v-105H345zm0-165h105v-105H345zm0-165h105v-105H345zm165 330h105v-105H510zm0-165h105v-105H510zm0-165h105v-105H510zm165 495h105v-105H675zm0-165h105v-105H675z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowBackFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m274-450 248 248-42 42-320-320 320-320 42 42-248 248h526v60z" />
<path d="m274-450 227 227q9 9 9 21t-9 21-21 9-21-9L181-459q-5-5-7-10t-2-11 2-11 7-10l278-278q9-9 21-9t21 9 9 21-9 21L274-510h496q13 0 21.5 8.5T800-480t-8.5 21.5T770-450z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowBackIosFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M400-80 0-480l400-400 56 57-343 343 343 343z" />
<path d="m113-480 315 315q11 11 11 27.5T428-109q-12 12-28.5 12T371-109L42-438q-9-9-13-20t-4-22 4-22 13-20l330-330q12-12 28-11.5t28 12.5q11 12 11.5 28T428-795z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowBackIosOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M400-80 0-480l400-400 56 57-343 343 343 343z" />
<path d="m113-480 315 315q11 11 11 27.5T428-109q-12 12-28.5 12T371-109L42-438q-9-9-13-20t-4-22 4-22 13-20l330-330q12-12 28-11.5t28 12.5q11 12 11.5 28T428-795z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowBackOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m274-450 248 248-42 42-320-320 320-320 42 42-248 248h526v60z" />
<path d="m274-450 227 227q9 9 9 21t-9 21-21 9-21-9L181-459q-5-5-7-10t-2-11 2-11 7-10l278-278q9-9 21-9t21 9 9 21-9 21L274-510h496q13 0 21.5 8.5T800-480t-8.5 21.5T770-450z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowForwardFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M686-450H160v-60h526L438-758l42-42 320 320-320 320-42-42z" />
<path d="M686-450H190q-13 0-21.5-8.5T160-480t8.5-21.5T190-510h496L459-737q-9-9-9-21t9-21 21-9 21 9l278 278q5 5 7 10t2 11-2 11-7 10L501-181q-9 9-21 9t-21-9-9-21 9-21z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowForwardIosFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m304-82-56-57 343-343-343-343 56-57 400 400z" />
<path d="M591-482 276-797q-11-11-11-27.5t11-28.5q12-12 28.5-12t28.5 12l329 329q9 9 13 20t4 22-4 22-13 20L332-110q-12 12-28 11.5T276-111q-11-12-11.5-28t11.5-28z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowForwardIosOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m304-82-56-57 343-343-343-343 56-57 400 400z" />
<path d="M591-482 276-797q-11-11-11-27.5t11-28.5q12-12 28.5-12t28.5 12l329 329q9 9 13 20t4 22-4 22-13 20L332-110q-12 12-28 11.5T276-111q-11-12-11.5-28t11.5-28z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowForwardOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M686-450H160v-60h526L438-758l42-42 320 320-320 320-42-42z" />
<path d="M686-450H190q-13 0-21.5-8.5T160-480t8.5-21.5T190-510h496L459-737q-9-9-9-21t9-21 21-9 21 9l278 278q5 5 7 10t2 11-2 11-7 10L501-181q-9 9-21 9t-21-9-9-21 9-21z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowRightFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M400-280v-400l200 200z" />
<path d="M415.32-301q-6.32 0-10.82-4.13-4.5-4.12-4.5-10.87v-328q0-6.75 4.64-10.88 4.63-4.12 10.81-4.12 1.55 0 10.55 5l158 158q3 3 5 7.06t2 8.94q0 4.87-2 8.94-2 4.06-5 7.06L426-306q-2 2-4.76 3.5-2.77 1.5-5.92 1.5" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowRightOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M400-280v-400l200 200z" />
<path d="M415.32-301q-6.32 0-10.82-4.13-4.5-4.12-4.5-10.87v-328q0-6.75 4.64-10.88 4.63-4.12 10.81-4.12 1.55 0 10.55 5l158 158q3 3 5 7.06t2 8.94q0 4.87-2 8.94-2 4.06-5 7.06L426-306q-2 2-4.76 3.5-2.77 1.5-5.92 1.5" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowUpwardFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M450-160v-526L202-438l-42-42 320-320 320 320-42 42-248-248v526z" />
<path d="M450-686 223-459q-9 9-21 9t-21-9-9-21 9-21l278-278q5-5 10-7t11-2 11 2 10 7l278 278q9 9 9 21t-9 21-21 9-21-9L510-686v496q0 13-8.5 21.5T480-160t-21.5-8.5T450-190z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const ArrowUpwardOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M450-160v-526L202-438l-42-42 320-320 320 320-42 42-248-248v526z" />
<path d="M450-686 223-459q-9 9-21 9t-21-9-9-21 9-21l278-278q5-5 10-7t11-2 11 2 10 7l278 278q9 9 9 21t-9 21-21 9-21-9L510-686v496q0 13-8.5 21.5T480-160t-21.5-8.5T450-190z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AssistantNavigationFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m321-292 159-72 159 72 5-5-164-397-164 397zM480-80q-82 0-155-31.5t-127.5-86-86-127.5T80-480q0-83 31.5-156t86-127T325-848.5 480-880q83 0 156 31.5T763-763t85.5 127T880-480q0 82-31.5 155T763-197.5t-127 86T480-80" />
<path d="M480-80q-82 0-155-31.5t-127.5-86-86-127.5T80-480q0-83 31.5-156t86-127T325-848.5 480-880q83 0 156 31.5T763-763t85.5 127T880-480q0 82-31.5 155T763-197.5t-127 86T480-80M346-303l128-58q3-2 6-2t6 2l128 58q9 5 16.5-2.5T634-323L494-660q-4-9-14-9t-14 9L326-323q-4 10 3.5 17.5T346-303" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AssistantNavigationOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m321-292 159-72 159 72 5-5-164-397-164 397zM480-80q-82 0-155-31.5t-127.5-86-86-127.5T80-480q0-83 31.5-156t86-127T325-848.5 480-880q83 0 156 31.5T763-763t85.5 127T880-480q0 82-31.5 155T763-197.5t-127 86T480-80m0-60q142 0 241-99.5T820-480q0-142-99-241t-241-99q-141 0-240.5 99T140-480q0 141 99.5 240.5T480-140m0-340" />
<path d="M480-80q-82 0-155-31.5t-127.5-86-86-127.5T80-480q0-83 31.5-156t86-127T325-848.5 480-880q83 0 156 31.5T763-763t85.5 127T880-480q0 82-31.5 155T763-197.5t-127 86T480-80m0-60q142 0 241-99.5T820-480q0-142-99-241t-241-99q-141 0-240.5 99T140-480q0 141 99.5 240.5T480-140M346-303l128-58q3-2 6-2t6 2l128 58q9 5 16.5-2.5T634-323L494-660q-4-9-14-9t-14 9L326-323q-4 10 3.5 17.5T346-303" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AsteriskFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M450-120v-288L247-205l-42-42 203-203H120v-60h289L205-714l42-42 203 203v-287h60v288l204-204 42 42-204 204h288v60H553l203 203-42 42-204-204v289z" />
<path d="M479.82-120q-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-258L268-226q-8.8 9-20.9 9t-21.1-8.84-9-21 9-21.16l182-182H150q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h259L226-693q-9-8.8-9-20.9t8.84-21.1 21-9 21.16 9l182 182v-257q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v258l183-183q8.8-9 20.9-9t21.1 8.84 9 21-9 21.16L552-510h258q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H553l182 182q9 8.8 9 20.9t-8.84 21.1-21 9-21.16-9L510-409v259q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AsteriskOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M450-120v-288L247-205l-42-42 203-203H120v-60h289L205-714l42-42 203 203v-287h60v288l204-204 42 42-204 204h288v60H553l203 203-42 42-204-204v289z" />
<path d="M479.82-120q-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-258L268-226q-8.8 9-20.9 9t-21.1-8.84-9-21 9-21.16l182-182H150q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h259L226-693q-9-8.8-9-20.9t8.84-21.1 21-9 21.16 9l182 182v-257q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v258l183-183q8.8-9 20.9-9t21.1 8.84 9 21-9 21.16L552-510h258q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H553l182 182q9 8.8 9 20.9t-8.84 21.1-21 9-21.16-9L510-409v259q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AttractionsFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m241-80 52-119q-17-12-30.5-23.5T235-248q-8 4-17.5 6t-17.5 2q-32 0-54.5-22.5T123-317q0-20 9.5-37.5T156-380q-7-25-11-50t-4-51q0-27 3.5-51.5T156-582q-14-10-23.5-26.5T123-645q0-32 22.5-54.5T200-722q8 0 17 2t17 6q35-36 76.5-60t92.5-37q5-32 26.5-50.5T480-880t51 19 26 50q51 13 96 34.5t79 59.5q7-2 14-3.5t14-1.5q32 0 54.5 22.5T837-645q0 22-9.5 38T804-582q8 26 11.5 50t3.5 51q0 26-3.5 50.5T804-381q17 11 25 29t8 35q0 32-22.5 54.5T760-240q-8 0-17.5-2t-16.5-6q-13 14-27 26t-30 23l51 119h-57l-42-92q-17 6-32 11t-32 10q-5 33-26.5 51T480-82t-50.5-18-26.5-51q-17-5-32.5-10T341-173l-44 93zm74-170 71-155q-14-16-21-34.5t-7-40.5q0-50 37.5-86t87.5-36 84.5 36 34.5 86q0 22-6.5 40.5T574-405l71 155q11-8 22.5-17.5T689-288q-2-6-4-13.5t-2-15.5q0-32 17.5-55t50.5-21q7-20 10.5-42.5T765-481q0-24-3.5-45.5T752-568q-30-4-49.5-26T683-645q0-9 1.5-16t4.5-15q-32-31-67-51t-79-32q-8 13-24.5 23T480-726t-38-10-25-23q-44 12-80.5 32T271-674q4 8 5 14.5t1 14.5q0 32-20.5 52.5T209-568q-7 20-10.5 41.5T195-481q0 23 3.5 45t10.5 42q32 6 50 28t18 49q0 9-1.5 16t-3.5 12q10 11 20.5 20.5T315-250m45 27q12 5 26.5 10.5T417-203q11-14 26-23.5t37-9.5 38.5 9.5T543-203q17-4 30.5-9t24.5-10l-65-151q-12 8-26 11.5t-28 3.5-28-4-26-12z" />
<path d="m257-116 36-83q-17-12-30.5-23.5T235-248q-8 4-17.5 6t-17.5 2q-32 0-54.5-22.5T123-317q0-20 9.5-37.5T156-380q-7-25-11-50t-4-51q0-27 3.5-51.5T156-582q-14-10-23.5-26.5T123-645q0-32 22.5-54.5T200-722q8 0 17 2t17 6q35-36 76.5-60t92.5-37q5-32 26.5-50.5T480-880t51 19 26 50q51 13 96 34.5t79 59.5q7-2 14-3.5t14-1.5q32 0 54.5 22.5T837-645q0 22-9.5 38T804-582q8 26 11.5 50t3.5 51q0 26-3.5 50.5T804-381q17 11 25 29t8 35q0 32-22.5 54.5T760-240q-8 0-17.5-2t-16.5-6q-13 14-27 26t-30 23l36 83q5 13-2.5 24.5T680-80q-8 0-14.5-4T656-95l-35-77q-17 6-32 11t-32 10q-5 33-26.5 51T480-82t-50.5-18-26.5-51q-17-5-32.5-10T341-173l-37 78q-3 7-9.5 11T280-80q-14 0-21-11.5t-2-24.5m58-134 71-155q-14-16-21-34.5t-7-40.5q0-50 37.5-86t87.5-36 84.5 36 34.5 86q0 22-6.5 40.5T574-405l71 155q11-8 22.5-17.5T689-288q-2-6-4-13.5t-2-15.5q0-32 17.5-55t50.5-21q7-20 10.5-42.5T765-481q0-24-3.5-45.5T752-568q-30-4-49.5-26T683-645q0-9 1.5-16t4.5-15q-32-31-67-51t-79-32q-8 13-24.5 23T480-726t-38-10-25-23q-44 12-80.5 32T271-674q4 8 5 14.5t1 14.5q0 32-20.5 52.5T209-568q-7 20-10.5 41.5T195-481q0 23 3.5 45t10.5 42q32 6 50 28t18 49q0 9-1.5 16t-3.5 12q10 11 20.5 20.5T315-250m45 27q12 5 26.5 10.5T417-203q11-14 26-23.5t37-9.5 38.5 9.5T543-203q17-4 30.5-9t24.5-10l-65-151q-12 8-26 11.5t-28 3.5-28-4-26-12z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AttractionsOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m241-80 52-119q-17-12-30.5-23.5T235-248q-8 4-17.5 6t-17.5 2q-32 0-54.5-22.5T123-317q0-20 9.5-37.5T156-380q-7-25-11-50t-4-51q0-27 3.5-51.5T156-582q-14-10-23.5-26.5T123-645q0-32 22.5-54.5T200-722q8 0 17 2t17 6q35-36 76.5-60t92.5-37q5-32 26.5-50.5T480-880t51 19 26 50q51 13 96 34.5t79 59.5q7-2 14-3.5t14-1.5q32 0 54.5 22.5T837-645q0 22-9.5 38T804-582q8 26 11.5 50t3.5 51q0 26-3.5 50.5T804-381q17 11 25 29t8 35q0 32-22.5 54.5T760-240q-8 0-17.5-2t-16.5-6q-13 14-27 26t-30 23l51 119h-57l-42-92q-17 6-32 11t-32 10q-5 33-26.5 51T480-82t-50.5-18-26.5-51q-17-5-32.5-10T341-173l-44 93zm74-170 71-155q-14-16-21-34.5t-7-40.5q0-50 37.5-86t87.5-36 84.5 36 34.5 86q0 22-6.5 40.5T574-405l71 155q11-8 22.5-17.5T689-288q-2-6-4-13.5t-2-15.5q0-27 18-49t50-28q7-20 10.5-42t3.5-45q0-24-3.5-45.5T752-568q-30-4-49.5-26T683-645q0-9 1.5-16t4.5-15q-32-31-67-51t-79-32q-8 13-24.5 23T480-726t-38-10-25-23q-44 12-80.5 32T271-674q4 8 5 14.5t1 14.5q0 32-20.5 52.5T209-568q-7 20-10.5 41.5T195-481q0 23 3.5 45t10.5 42q32 6 50 28t18 49q0 9-1.5 16t-3.5 12q10 11 20.5 20.5T315-250m45 27q12 5 26.5 10.5T417-203q11-14 26-23.5t37-9.5 38.5 9.5T543-203q17-4 30.5-9t24.5-10l-65-151q-12 8-26 11.5t-28 3.5-28-4-26-12zm120-195q26 0 44-18t18-44-18-44-44-18-44 18-18 44 18 44 44 18m0-62" />
<path d="m257-116 36-83q-17-12-30.5-23.5T235-248q-8 4-17.5 6t-17.5 2q-32 0-54.5-22.5T123-317q0-20 9.5-37.5T156-380q-7-25-11-50t-4-51q0-27 3.5-51.5T156-582q-14-10-23.5-26.5T123-645q0-32 22.5-54.5T200-722q8 0 17 2t17 6q35-36 76.5-60t92.5-37q5-32 26.5-50.5T480-880t51 19 26 50q51 13 96 34.5t79 59.5q7-2 14-3.5t14-1.5q32 0 54.5 22.5T837-645q0 22-9.5 38T804-582q8 26 11.5 50t3.5 51q0 26-3.5 50.5T804-381q17 11 25 29t8 35q0 32-22.5 54.5T760-240q-8 0-17.5-2t-16.5-6q-13 14-27 26t-30 23l36 83q5 13-2.5 24.5T680-80q-8 0-14.5-4T656-95l-35-77q-17 6-32 11t-32 10q-5 33-26.5 51T480-82t-50.5-18-26.5-51q-17-5-32.5-10T341-173l-37 78q-3 7-9.5 11T280-80q-14 0-21-11.5t-2-24.5m58-134 71-155q-14-16-21-34.5t-7-40.5q0-50 37.5-86t87.5-36 84.5 36 34.5 86q0 22-6.5 40.5T574-405l71 155q11-8 22.5-17.5T689-288q-2-6-4-13.5t-2-15.5q0-27 18-49t50-28q7-20 10.5-42t3.5-45q0-24-3.5-45.5T752-568q-30-4-49.5-26T683-645q0-9 1.5-16t4.5-15q-32-31-67-51t-79-32q-8 13-24.5 23T480-726t-38-10-25-23q-44 12-80.5 32T271-674q4 8 5 14.5t1 14.5q0 32-20.5 52.5T209-568q-7 20-10.5 41.5T195-481q0 23 3.5 45t10.5 42q32 6 50 28t18 49q0 9-1.5 16t-3.5 12q10 11 20.5 20.5T315-250m45 27q12 5 26.5 10.5T417-203q11-14 26-23.5t37-9.5 38.5 9.5T543-203q17-4 30.5-9t24.5-10l-65-151q-12 8-26 11.5t-28 3.5-28-4-26-12zm120-195q26 0 44-18t18-44-18-44-44-18-44 18-18 44 18 44 44 18m0-62" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AwardStarFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m363-310 117-71 117 71-31-133 104-90-137-11-53-126-53 126-137 11 104 90zM481-29 346-160H160v-186L26-480l134-134v-186h186l135-134 133 134h186v186l134 134-134 134v186H614z" />
<path d="m480-381 87 53q8 5 16-1t6-16l-23-98 77-67q8-7 4.5-16T634-536l-101-8-39-93q-4-9-14-9t-14 9l-39 93-101 8q-10 1-13.5 10t4.5 16l77 67-23 98q-2 10 6 16t16 1zM346-160H220q-25 0-42.5-17.5T160-220v-126l-92-92q-9-9-13-20t-4-22 4-22 13-20l92-92v-126q0-25 17.5-42.5T220-800h126l92-92q9-9 20.5-13t22.5-4 22 4.5 20 13.5l91 91h126q25 0 42.5 17.5T800-740v126l92 92q9 9 13 20t4 22-4 22-13 20l-92 92v126q0 25-17.5 42.5T740-160H614l-91 90q-9 8-20 12.5T481-53t-22-4.5T439-70z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const AwardStarOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="m363-310 117-71 117 71-31-133 104-90-137-11-53-126-53 126-137 11 104 90zM481-29 346-160H160v-186L26-480l134-134v-186h186l135-134 133 134h186v186l134 134-134 134v186H614zm0-84 107.92-107H740v-151l109-109-109-109v-151H589L481-849 371-740H220v151L111-480l109 109v151h150zm0-368" />
<path d="m480-381 87 53q8 5 16-1t6-16l-23-98 77-67q8-7 4.5-16T634-536l-101-8-39-93q-3.87-9-13.94-9-10.06 0-14.06 9l-39 93-101 8q-10 1-13.5 10t4.5 16l77 67-23 98q-2 10 6 16t16 1zM346.16-160H220q-24.75 0-42.37-17.63Q160-195.25 160-220v-125.59L68-438q-9-9-13-19.81-4-10.82-4-22Q51-491 55-502t13-20l92-92.41V-740q0-24.75 17.63-42.38Q195.25-800 220-800h125.59L438-892q9-9 20.5-13t22.7-4q11.19 0 22.02 4.7 10.82 4.69 19.78 13.3l91 91h126q24.75 0 42.38 17.62Q800-764.75 800-740v125.59L892-522q9 9 13 19.81 4 10.82 4 22 0 11.19-4 22.19t-13 20l-92 92.41V-220q0 24.75-17.62 42.37Q764.75-160 740-160H614l-91 90q-8.96 8.13-19.78 12.57Q492.39-53 481.2-53q-11.2 0-22.16-4.43Q448.07-61.87 439-70zM370-220l111 107 107.92-107H740v-151l109-109-109-109v-151H589L481-849 371-740H220v151L111-480l109 109v151zm111-261" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BalconyFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M330-500v-60h60v60zm240 0v-60h60v60zM120-80v-320h40v-160q0-66 25-124.5t68.5-102 102-68.5T480-880t124.5 25 102 68.5 68.5 102T800-560v160h40v320zm60-60h105v-200H180zm165 0h105v-200H345zM220-400h230v-418q-99 12-164.5 85T220-560zm290 0h230v-160q0-100-65.5-173T510-818zm0 260h105v-200H510zm165 0h105v-200H675z" />
<path d="M359.82-500q-12.82 0-21.32-8.68-8.5-8.67-8.5-21.5 0-12.82 8.68-21.32 8.67-8.5 21.5-8.5 12.82 0 21.32 8.68 8.5 8.67 8.5 21.5 0 12.82-8.68 21.32-8.67 8.5-21.5 8.5m240 0q-12.82 0-21.32-8.68-8.5-8.67-8.5-21.5 0-12.82 8.68-21.32 8.67-8.5 21.5-8.5 12.82 0 21.32 8.68 8.5 8.67 8.5 21.5 0 12.82-8.68 21.32-8.67 8.5-21.5 8.5M180-80q-24.75 0-42.37-17.63Q120-115.25 120-140v-200q0-20 11-35t29-22v-163q0-66 25-124.5t68.5-102 102-68.5T480-880t124.5 25 102 68.5 68.5 102T800-560v163q18 7 29 22t11 35v200q0 24.75-17.62 42.37Q804.75-80 780-80zm0-260v200h105v-200zm165 200h105v-200H345zM220-400h230v-418q-99 12-164.5 85T220-560zm290 0h230v-160q0-100-65.5-173T510-818zm0 260h105v-200H510zm165 0h105v-200H675z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BalconyOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M330-500v-60h60v60zm240 0v-60h60v60zM120-80v-320h40v-160q0-66 25-124.5t68.5-102 102-68.5T480-880t124.5 25 102 68.5 68.5 102T800-560v160h40v320zm60-60h105v-200H180zm165 0h105v-200H345zM220-400h230v-418q-99 12-164.5 85T220-560zm290 0h230v-160q0-100-65.5-173T510-818zm0 260h105v-200H510zm165 0h105v-200H675z" />
<path d="M359.82-500q-12.82 0-21.32-8.68-8.5-8.67-8.5-21.5 0-12.82 8.68-21.32 8.67-8.5 21.5-8.5 12.82 0 21.32 8.68 8.5 8.67 8.5 21.5 0 12.82-8.68 21.32-8.67 8.5-21.5 8.5m240 0q-12.82 0-21.32-8.68-8.5-8.67-8.5-21.5 0-12.82 8.68-21.32 8.67-8.5 21.5-8.5 12.82 0 21.32 8.68 8.5 8.67 8.5 21.5 0 12.82-8.68 21.32-8.67 8.5-21.5 8.5M180-80q-24.75 0-42.37-17.63Q120-115.25 120-140v-200q0-20 11-35t29-22v-163q0-66 25-124.5t68.5-102 102-68.5T480-880t124.5 25 102 68.5 68.5 102T800-560v163q18 7 29 22t11 35v200q0 24.75-17.62 42.37Q804.75-80 780-80zm0-260v200h105v-200zm165 200h105v-200H345zM220-400h230v-418q-99 12-164.5 85T220-560zm290 0h230v-160q0-100-65.5-173T510-818zm0 260h105v-200H510zm165 0h105v-200H675z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BathroomFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M353-244q16 0 27.5-11.5T392-283t-11.5-27.5T353-322t-27.5 11.5T314-283t11.5 27.5T353-244m127 0q16 0 27.5-11.5T519-283t-11.5-27.5T480-322t-27.5 11.5T441-283t11.5 27.5T480-244m127 0q16 0 27.5-11.5T646-283t-11.5-27.5T607-322t-27.5 11.5T568-283t11.5 27.5T607-244M353-370q16 0 27.5-11.5T392-409t-11.5-27.5T353-448t-27.5 11.5T314-409t11.5 27.5T353-370m127 0q16 0 27.5-11.5T519-409t-11.5-27.5T480-448t-27.5 11.5T441-409t11.5 27.5T480-370m127 0q16 0 27.5-11.5T646-409t-11.5-27.5T607-448t-27.5 11.5T568-409t11.5 27.5T607-370M280-496h400v-26q0-85-57.5-142.5T480-722t-142.5 57.5T280-522zM140-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h680q24 0 42 18t18 42v680q0 24-18 42t-42 18z" />
<path d="M353-244q16 0 27.5-11.5T392-283t-11.5-27.5T353-322t-27.5 11.5T314-283t11.5 27.5T353-244m127 0q16 0 27.5-11.5T519-283t-11.5-27.5T480-322t-27.5 11.5T441-283t11.5 27.5T480-244m127 0q16 0 27.5-11.5T646-283t-11.5-27.5T607-322t-27.5 11.5T568-283t11.5 27.5T607-244M353-370q16 0 27.5-11.5T392-409t-11.5-27.5T353-448t-27.5 11.5T314-409t11.5 27.5T353-370m127 0q16 0 27.5-11.5T519-409t-11.5-27.5T480-448t-27.5 11.5T441-409t11.5 27.5T480-370m127 0q16 0 27.5-11.5T646-409t-11.5-27.5T607-448t-27.5 11.5T568-409t11.5 27.5T607-370M480-722q-83 0-141.5 58.5T280-522q0 11 7.5 18.5T306-496h348q11 0 18.5-7.5T680-522q0-83-58.5-141.5T480-722M140-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h680q24 0 42 18t18 42v680q0 24-18 42t-42 18z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BathroomOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M353-244q16 0 27.5-11.5T392-283t-11.5-27.5T353-322t-27.5 11.5T314-283t11.5 27.5T353-244m127 0q16 0 27.5-11.5T519-283t-11.5-27.5T480-322t-27.5 11.5T441-283t11.5 27.5T480-244m127 0q16 0 27.5-11.5T646-283t-11.5-27.5T607-322t-27.5 11.5T568-283t11.5 27.5T607-244M353-370q16 0 27.5-11.5T392-409t-11.5-27.5T353-448t-27.5 11.5T314-409t11.5 27.5T353-370m127 0q16 0 27.5-11.5T519-409t-11.5-27.5T480-448t-27.5 11.5T441-409t11.5 27.5T480-370m127 0q16 0 27.5-11.5T646-409t-11.5-27.5T607-448t-27.5 11.5T568-409t11.5 27.5T607-370M280-496h400v-26q0-85-57.5-142.5T480-722t-142.5 57.5T280-522zm50-50q8-57 51.5-91.5T480-672t98.5 34.5T630-546zM140-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h680q24 0 42 18t18 42v680q0 24-18 42t-42 18zm0-60h680v-680H140zm0 0v-680z" />
<path d="M353-244q16 0 27.5-11.5T392-283t-11.5-27.5T353-322t-27.5 11.5T314-283t11.5 27.5T353-244m127 0q16 0 27.5-11.5T519-283t-11.5-27.5T480-322t-27.5 11.5T441-283t11.5 27.5T480-244m127 0q16 0 27.5-11.5T646-283t-11.5-27.5T607-322t-27.5 11.5T568-283t11.5 27.5T607-244M353-370q16 0 27.5-11.5T392-409t-11.5-27.5T353-448t-27.5 11.5T314-409t11.5 27.5T353-370m127 0q16 0 27.5-11.5T519-409t-11.5-27.5T480-448t-27.5 11.5T441-409t11.5 27.5T480-370m127 0q16 0 27.5-11.5T646-409t-11.5-27.5T607-448t-27.5 11.5T568-409t11.5 27.5T607-370M480-722q-83 0-141.5 58.5T280-522q0 11 7.48 18.5 7.47 7.5 18.52 7.5h348q11.05 0 18.53-7.48Q680-510.95 680-522q0-83-58.5-141.5T480-722m0 50q55 0 98.5 34.5T630-546H330q8-57 51.5-91.5T480-672M140-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h680q24 0 42 18t18 42v680q0 24-18 42t-42 18zm0-60h680v-680H140zm0 0v-680z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BathtubFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M273-599q-30 0-51.5-21.5T200-672t21.5-51.5T273-745t51.5 21.5T346-672t-21.5 51.5T273-599M186-80q-18 0-32-11.5T140-120q-25 0-42.5-17.5T80-180v-260h120v-28q0-35 25-60t60-25q19 0 36 7t30 21l52 59q7 8 14.5 14.5T433-440h307v-334q0-19-12.5-32.5T696-820q-10 0-19 2t-16 9l-52 52q5 17 1.5 34.5T598-689l-102-97q16-11 35-14t37 4l52-51q15-15 34.5-24t41.5-9q44 0 74 31t30 75v334h80v260q0 25-17.5 42.5T820-120q0 17-14 28.5T773-80z" />
<path d="M273.08-599q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M185.82-80Q168-80 154-91.5T140-120q-24.75 0-42.37-17.63Q80-155.25 80-180v-230q0-12.75 8.63-21.38Q97.25-440 110-440h90v-27.79Q200-503 225-528t60.38-25q18.62 0 35.62 7t30 21l52 59q7 8 14.5 14.5T433-440h307v-334q0-18.94-12.5-32.47T696-820q-9.88 0-18.94 2T661-809l-52 52q5 17 1.5 34.5T598-689l-102-97q16.43-10.93 35.22-13.96Q550-803 568-796l52-51q15-15 34.54-24t41.46-9q43.79 0 73.89 31Q800-818 800-774v334h50q12.75 0 21.38 8.62Q880-422.75 880-410v230q0 24.75-17.62 42.37Q844.75-120 820-120q0 17-14 28.5T773-80z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BathtubOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M273.08-599q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M185.82-80Q168-80 154-91.5T140-120q-24.75 0-42.37-17.63Q80-155.25 80-180v-260h120v-27.79Q200-503 225-528t60.38-25q18.62 0 35.62 7t30 21l52 59q7 8 14.5 14.5T433-440h307v-334q0-18.94-12.5-32.47T696-820q-9.88 0-18.94 2T661-809l-52 52q5 17 1.5 34.5T598-689l-102-97q16.43-10.93 35.22-13.96Q550-803 568-796l52-51q15-15 34.54-24t41.46-9q43.79 0 73.89 31Q800-818 800-774v334h80v260q0 24.75-17.62 42.37Q844.75-120 820-120q0 17-14 28.5T773-80zM140-180h680v-200H140zm0 0h680z" />
<path d="M273.08-599q-30.08 0-51.58-21.42t-21.5-51.5 21.42-51.58 51.5-21.5 51.58 21.42 21.5 51.5-21.42 51.58-51.5 21.5M185.82-80Q168-80 154-91.5T140-120q-24.75 0-42.37-17.63Q80-155.25 80-180v-230q0-12.75 8.63-21.38Q97.25-440 110-440h90v-27.79Q200-503 225-528t60.38-25q18.62 0 35.62 7t30 21l52 59q7 8 14.5 14.5T433-440h307v-334q0-18.94-12.5-32.47T696-820q-9.88 0-18.94 2T661-809l-52 52q5 17 1.5 34.5T598-689l-102-97q16.43-10.93 35.22-13.96Q550-803 568-796l52-51q15-15 34.54-24t41.46-9q43.79 0 73.89 31Q800-818 800-774v334h50q12.75 0 21.38 8.62Q880-422.75 880-410v230q0 24.75-17.62 42.37Q844.75-120 820-120q0 17-14 28.5T773-80zM140-180h680v-200H140zm0 0h680z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BeachAccessFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M795-128 532-391l46-46 263 263zm-570-46q-88-97-102-223t43-236q2 33 14.5 73.5T216-475t55 91 72 92zm159-159q-49-50-85-106.5t-54.5-109T226-645t22-68q24-26 69.5-27T418-723t113 53.5T636-585zm293-293q-44-40-90.5-72t-92-54.5T407-787t-76-13q111-60 239-46t225 102z" />
<path d="M772-151 555-368q-10-10-10-23t10-23 23-10 23 10l217 217q10 10 10 23t-10 23-23 10-23-10m-519-51q-12 12-27.5 11T200-205q-70-95-78.5-210.5T166-633q2 33 14.5 73.5T216-475t55 91 72 92zm131-131q-49-50-85-106.5t-54.5-109T226-645t22-68q24-26 69.5-27T418-723t113 53.5T636-585zm380-436q13 10 14 25.5T767-716l-90 90q-44-40-90.5-72t-92-54.5T407-787t-76-13q103-55 220-47.5T764-769" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BeachAccessOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M794-128 531-391l46-46 263 263zm-570-46q-53-58-78.5-128.5T120-446q0-78 29-152t88-133 133.5-88T523-848q73 0 143.5 25.5T794-744zm3-89 69-70q-16-22-32-47.5t-29.5-54-22.5-59-12-62.5q-27 74-18.5 151T227-263m117-115 246-248q-46-36-93.5-56.5t-90.5-27-76.5 0T278-685t-23 51.5 2.5 75 29 88T344-378m291-294 72-69q-66-42-143.5-49T412-768q30 3 59.5 12t58 21.5 55 28.5 50.5 34" />
<path d="M771-151 554-368q-10-10-10-23t10-23 23-10 23 10l217 217q10 10 10 23t-10 23-23 10-23-10m-572-54q-40-54-59.5-116T120-446q0-78 29-152t88-133 133.5-88T523-848q63 0 124.5 19T763-770q13 10 14 26t-11 28L252-202q-12 12-27.5 11T199-205m28-58 69-70q-16-22-32-47.5t-29.5-54-22.5-59-12-62.5q-27 74-18.5 151T227-263m117-115 246-248q-46-36-93.5-56.5t-90.5-27-76.5 0T278-685t-23 51.5 2.5 75 29 88T344-378m363-363q-66-42-143.5-49T412-768q30 3 59.5 12t58 21.5 55 28.5 50.5 34z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BedFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M80-200v-255q0-25 10-47t30-36v-116q0-45 30.5-75.5T226-760h180q22 0 41 10t33 27q14-17 32.5-27t40.5-10h180q45 0 76 30.5t31 75.5v116q20 14 30 36t10 47v255h-60v-80H140v80zm430-355h270v-99q0-20-13.5-33T733-700H550q-17 0-28.5 14T510-654zm-330 0h270v-99q0-18-11.5-32T410-700H226q-19 0-32.5 13.5T180-654z" />
<path d="M80-230v-225q0-25 10-47t30-36v-116q0-45 30.5-75.5T226-760h180q22 0 41 10t33 27q14-17 32.5-27t40.5-10h180q45 0 76 30.5t31 75.5v116q20 14 30 36t10 47v225q0 13-8.5 21.5T850-200t-21.5-8.5T820-230v-50H140v50q0 13-8.5 21.5T110-200t-21.5-8.5T80-230m430-325h270v-99q0-20-13.5-33T733-700H550q-17 0-28.5 14T510-654zm-330 0h270v-99q0-18-11.5-32T410-700H226q-19 0-32.5 13.5T180-654z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BedOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M80-200v-255q0-25 10-47t30-36v-116q0-45 30.5-75.5T226-760h180q22 0 41 10t33 27q14-17 32.5-27t40.5-10h180q45 0 76 30.5t31 75.5v116q20 14 30 36t10 47v255h-60v-80H140v80zm430-355h270v-99q0-20-13.5-33T733-700H550q-17 0-28.5 14T510-654zm-330 0h270v-99q0-18-11.5-32T410-700H226q-19 0-32.5 13.5T180-654zm-40 215h680v-115q0-17-11.5-28.5T780-495H180q-17 0-28.5 11.5T140-455zm680 0H140z" />
<path d="M80-230v-225q0-25 10-47t30-36v-116q0-45 30.5-75.5T226-760h180q22 0 41 10t33 27q14-17 32.5-27t40.5-10h180q45 0 76 30.5t31 75.5v116q20 14 30 36t10 47v225q0 13-8.5 21.5T850-200t-21.5-8.5T820-230v-50H140v50q0 13-8.5 21.5T110-200t-21.5-8.5T80-230m430-325h270v-99q0-20-13.5-33T733-700H550q-17 0-28.5 14T510-654zm-330 0h270v-99q0-18-11.5-32T410-700H226q-19 0-32.5 13.5T180-654zm-40 215h680v-115q0-17-11.5-28.5T780-495H180q-17 0-28.5 11.5T140-455zm680 0H140z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BedroomParentFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-282h64v-63h472v63h64v-176q0-18-13.5-38.5T732-528v-68q0-32-18.5-50.5T663-665H527q-16 0-28 5t-20 15q-8-10-20-15t-28-5H297q-32 0-50.5 18.5T228-596v68q-21 11-34.5 31.5T180-458zm64-113v-42q0-19 10.5-29.5T284-477h392q19 0 29.5 10.5T716-437v42zm34-132v-88h177v88zm227 0v-88h177v88zM140-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h680q24 0 42 18t18 42v680q0 24-18 42t-42 18z" />
<path d="M244-345h472v31.4q0 13.6 9.09 22.6 9.1 9 23 9 13.91 0 22.91-9.07 9-9.06 9-22.93v-144q0-18-13.5-38.5T732-528v-68q0-32-18.5-50.5T663-665H527q-16 0-28 5t-20 15q-8-10-20-15t-28-5H297q-32 0-50.5 18.5T228-596v68q-21 11-34.5 31.5T180-458v144q0 13.87 9.09 22.93 9.1 9.07 23 9.07 13.91 0 22.91-8.92 9-8.93 9-22.58zm0-50v-42q0-19 10.5-29.5t29.05-10.5h392.9q18.55 0 29.05 10.5T716-437v42zm34-132v-88h177v88zm227 0v-88h177v88zM140-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h680q24 0 42 18t18 42v680q0 24-18 42t-42 18z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BedroomParentOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-282h64v-63h472v63h64v-176q0-18-13.5-38.5T732-528v-68q0-32-18.5-50.5T663-665H527q-16 0-28 5t-20 15q-8-10-20-15t-28-5H297q-32 0-50.5 18.5T228-596v68q-21 11-34.5 31.5T180-458zm64-113v-42q0-19 10.5-29.5t29.05-10.5h392.9q18.55 0 29.05 10.5T716-437v42zm34-132v-88h177v88zm227 0v-88h177v88zM140-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h680q24 0 42 18t18 42v680q0 24-18 42t-42 18zm0-60h680v-680H140zm0 0v-680z" />
<path d="M244-345h472v31.4q0 13.6 9.09 22.6 9.1 9 23 9 13.91 0 22.91-9.07 9-9.06 9-22.93v-144q0-18-13.5-38.5T732-528v-68q0-32-18.5-50.5T663-665H527q-16 0-28 5t-20 15q-8-10-20-15t-28-5H297q-32 0-50.5 18.5T228-596v68q-21 11-34.5 31.5T180-458v144q0 13.87 9.09 22.93 9.1 9.07 23 9.07 13.91 0 22.91-8.92 9-8.93 9-22.58zm0-50v-42q0-19 10.5-29.5t29.05-10.5h392.9q18.55 0 29.05 10.5T716-437v42zm34-132v-88h177v88zm227 0v-88h177v88zM140-80q-24 0-42-18t-18-42v-680q0-24 18-42t42-18h680q24 0 42 18t18 42v680q0 24-18 42t-42 18zm0-60h680v-680H140zm0 0v-680z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BoxFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-120q-24.75 0-42.37-17.63Q120-155.25 120-180v-529q0-9.88 3-19.06t9-16.94l52-71q8-11 20.94-17.5T232-840h495q14.12 0 27.06 6.5T775-816l53 71q6 7.76 9 16.94t3 19.06v529q0 24.75-17.62 42.37Q804.75-120 780-120zm17-614h565l-36.41-46H233zm443 60H320v342l160-80 160 80z" />
<path d="M180-120q-24.75 0-42.37-17.63Q120-155.25 120-180v-529q0-9.88 3-19.06t9-16.94l52-71q8-11 20.94-17.5T232-840h495q14.12 0 27.06 6.5T775-816l53 71q6 7.76 9 16.94t3 19.06v529q0 24.75-17.62 42.37Q804.75-120 780-120zm17-614h565l-36.41-46H233zm443 60H320v293q0 17.5 14 26.25t29 .75l117-58 117 58q15 8 29-.75T640-381z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BoxOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-674v494h600v-494H640v342l-160-80-160 80v-342zm0 554q-24.75 0-42.37-17.63Q120-155.25 120-180v-529q0-9.88 3-19.06t9-16.94l52-71q8-11 20.94-17.5T232-840h495q14.12 0 27.06 6.5T775-816l53 71q6 7.76 9 16.94t3 19.06v529q0 24.75-17.62 42.37Q804.75-120 780-120zm17-614h565l-36.41-46H233zm183 60v245l100-50 100 50v-245zm-200 0h600z" />
<path d="M180-674v494h600v-494H640v293q0 17.5-14 26.25t-29 .75l-117-58-117 58q-15 8-29-.75T320-381v-293zm0 554q-24.75 0-42.37-17.63Q120-155.25 120-180v-529q0-9.88 3-19.06t9-16.94l52-71q8-11 20.94-17.5T232-840h495q14.12 0 27.06 6.5T775-816l53 71q6 7.76 9 16.94t3 19.06v529q0 24.75-17.62 42.37Q804.75-120 780-120zm17-614h565l-36.41-46H233zm183 60v245l100-50 100 50v-245zm-200 0h600z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BrunchDiningFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M110-80q-15 0-22.5-7.5T80-110v-50h570v50q0 15-7.5 22.5T620-80zM80-224v-50q0-15 7.5-22.5T110-304h182v-73h146v73h182q15 0 22.5 7.5T650-274v50zM744-80v-264q-31-26-53.5-69T668-510v-370h212v370q0 54-22.5 97T804-344v204h76v60zm-16-561h92v-179h-92z" />
<path d="M80-160h570v50q0 12.75-8.62 21.37Q632.75-80 620-80H110q-12.75 0-21.37-8.63Q80-97.25 80-110zm0-64v-50q0-12.75 8.63-21.38Q97.25-304 110-304h182v-43q0-12.75 8.63-21.38Q309.25-377 322-377h86q12.75 0 21.38 8.62Q438-359.75 438-347v43h182q12.75 0 21.38 8.62Q650-286.75 650-274v50zm664-120q-31-26-53.5-69T668-510v-340q0-12.75 8.63-21.38Q685.25-880 698-880h152q12.75 0 21.38 8.62Q880-862.75 880-850v340q0 54-22.5 97T804-344v204h46q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32Q862.75-80 850-80h-76q-12.75 0-21.37-8.63Q744-97.25 744-110zm-16-297h92v-179h-92z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BrunchDiningOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M110-80q-15 0-22.5-7.5T80-110v-50h570v50q0 15-7.5 22.5T620-80zM80-224v-50q0-15 7.5-22.5T110-304h182v-73h146v73h182q15 0 22.5 7.5T650-274v50zM744-80v-264q-31-26-53.5-69T668-510v-370h212v370q0 54-22.5 97T804-344v204h76v60zm-16-561h92v-179h-92zm46 244q23-20 34.5-50.5T820-510v-71h-92v71q0 32 11.5 62.5T774-397m0 0" />
<path d="M80-160h570v50q0 12.75-8.62 21.37Q632.75-80 620-80H110q-12.75 0-21.37-8.63Q80-97.25 80-110zm0-64v-50q0-12.75 8.63-21.38Q97.25-304 110-304h182v-43q0-12.75 8.63-21.38Q309.25-377 322-377h86q12.75 0 21.38 8.62Q438-359.75 438-347v43h182q12.75 0 21.38 8.62Q650-286.75 650-274v50zm664-120q-31-26-53.5-69T668-510v-340q0-12.75 8.63-21.38Q685.25-880 698-880h152q12.75 0 21.38 8.62Q880-862.75 880-850v340q0 54-22.5 97T804-344v204h46q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32Q862.75-80 850-80h-76q-12.75 0-21.37-8.63Q744-97.25 744-110zm-16-297h92v-179h-92zm46 244q23-20 34.5-50.25Q820-477.51 820-510v-71h-92v71q0 32.49 11.5 62.75Q751-417 774-397m0 0" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BusinessCenterFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M140-120q-24 0-42-18t-18-42v-191h311v60h180v-60h309v191q0 24-18 42t-42 18zm311-251v-60h60v60zM80-431v-229q0-24 18-42t42-18h180v-100q0-24 18-42t42-18h200q24 0 42 18t18 42v100h180q24 0 42 18t18 42v229H571v-60H391v60zm300-289h200v-100H380z" />
<path d="M451-371v-60h60v60zm-71-349h200v-100H380zM140-120q-24 0-42-18t-18-42v-191h311v30q0 12.75 8.64 21.37 8.64 8.63 21.41 8.63h120.18q12.77 0 21.27-8.63 8.5-8.62 8.5-21.37v-30h309v191q0 24-18 42t-42 18zM80-431v-229q0-24 18-42t42-18h180v-100q0-24 18-42t42-18h200q24 0 42 18t18 42v100h180q24 0 42 18t18 42v229H571v-30q0-12.75-8.64-21.38-8.64-8.62-21.41-8.62H420.77q-12.77 0-21.27 8.62-8.5 8.63-8.5 21.38v30z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const BusinessCenterOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M140-120q-24 0-42-18t-18-42v-480q0-24 18-42t42-18h180v-100q0-24 18-42t42-18h200q24 0 42 18t18 42v100h180q24 0 42 18t18 42v480q0 24-18 42t-42 18zm240-600h200v-100H380zm440 349H571v60H391v-60H140v191h680zm-369 0h60v-60h-60zm-311-60h251v-60h180v60h249v-229H140zm340 30" />
<path d="M140-120q-24 0-42-18t-18-42v-480q0-24 18-42t42-18h180v-100q0-24 18-42t42-18h200q24 0 42 18t18 42v100h180q24 0 42 18t18 42v480q0 24-18 42t-42 18zm240-600h200v-100H380zm440 349H571v30.18q0 12.82-8.64 21.32t-21.41 8.5H420.77q-12.77 0-21.27-8.63-8.5-8.62-8.5-21.37v-30H140v191h680zm-369 0h60v-60h-60zm-311-60h251v-30.18q0-12.82 8.64-21.32t21.41-8.5h120.18q12.77 0 21.27 8.62 8.5 8.63 8.5 21.38v30h249v-229H140zm340 30" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CalendarAddOnFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M700-80v-120H580v-60h120v-120h60v120h120v60H760v120zm-520-80q-24 0-42-18t-18-42v-540q0-24 18-42t42-18h65v-60h65v60h260v-60h65v60h65q24 0 42 18t18 42v302q-15-2-30-2t-30 2v-112H180v350h320q0 15 3 30t8 30z" />
<path d="M700-200h-90q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h90v-90q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v90h90q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5h-90v90q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63Q700-97.25 700-110zm-520 40q-24 0-42-18t-18-42v-540q0-24 18-42t42-18h65v-28q0-13.6 9.2-22.8T277-880q14.02 0 23.51 9.2T310-848v28h260v-28q0-13.6 9.2-22.8T602-880q14.03 0 23.51 9.2Q635-861.6 635-848v28h65q24 0 42 18t18 42v269q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-79H180v350h290q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CalendarAddOnOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M700-80v-120H580v-60h120v-120h60v120h120v60H760v120zm-520-80q-24 0-42-18t-18-42v-540q0-24 18-42t42-18h65v-60h65v60h260v-60h65v60h65q24 0 42 18t18 42v302q-15-2-30-2t-30 2v-112H180v350h320q0 15 3 30t8 30zm0-470h520v-130H180zm0 0v-130z" />
<path d="M700-200h-90q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h90v-90q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v90h90q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5h-90v90q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63Q700-97.25 700-110zm-520 40q-24 0-42-18t-18-42v-540q0-24 18-42t42-18h65v-28q0-13.6 9.2-22.8T277-880q14.02 0 23.51 9.2T310-848v28h260v-28q0-13.6 9.2-22.8T602-880q14.03 0 23.51 9.2Q635-861.6 635-848v28h65q24 0 42 18t18 42v269q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-79H180v350h290q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5zm0-470h520v-130H180zm0 0v-130z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CalendarClockFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v277q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-87H180v430h306q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32Q498.75-80 486-80zm551 40q-78.43 0-133.72-55.28Q542-150.57 542-229t55.28-133.72Q652.57-418 731-418t133.72 55.28Q920-307.43 920-229T864.72-95.28Q809.43-40 731-40m58.24-88L817-156l-75-75v-112h-39v126z" />
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-28q0-13.6 9.48-22.8t23.5-9.2 23.02 9.2 9 22.8v28h340v-28q0-13.6 9.48-22.8t23.5-9.2 23.02 9.2 9 22.8v28h65q24 0 42 18t18 42v277q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-87H180v430h306q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32Q498.75-80 486-80zm551 40q-78.43 0-133.72-55.28Q542-150.57 542-229t55.28-133.72Q652.57-418 731-418t133.72 55.28Q920-307.43 920-229T864.72-95.28Q809.43-40 731-40m11-191v-92.92q0-8.08-5.7-13.58T723-343q-8 0-14 5.7t-6 13.3v95q0 5.57 2 10.78 2 5.22 6 10.22l64 66q6 6 14 6t14-6 6-14-6-14z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CalendarClockOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-630h600v-130H180zm0 0v-130zm0 550q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v307q-14.17-7.29-29.08-12.14Q796-470 780-473v-97H180v430h319q6 17 14 31.5T532-80zm551 40q-78.43 0-133.72-55.28Q542-150.57 542-229t55.28-133.72Q652.57-418 731-418t133.72 55.28Q920-307.43 920-229T864.72-95.28Q809.43-40 731-40m58.24-88L817-156l-75-75v-112h-39v126z" />
<path d="M180-630h600v-130H180zm0 0v-130zm0 550q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-28q0-13.6 9.48-22.8t23.5-9.2 23.02 9.2 9 22.8v28h340v-28q0-13.6 9.48-22.8t23.5-9.2 23.02 9.2 9 22.8v28h65q24 0 42 18t18 42v277q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-87H180v430h306q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32Q498.75-80 486-80zm551 40q-78.43 0-133.72-55.28Q542-150.57 542-229t55.28-133.72Q652.57-418 731-418t133.72 55.28Q920-307.43 920-229T864.72-95.28Q809.43-40 731-40m11-191v-92.92q0-8.08-5.7-13.58T723-343q-8 0-14 5.7t-6 13.3v95q0 5.57 2 10.78 2 5.22 6 10.22l64 66q6 6 14 6t14-6 6-14-6-14z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CalendarMonthFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M480-400q-17 0-28.5-11.5T440-440t11.5-28.5T480-480t28.5 11.5T520-440t-11.5 28.5T480-400m-160 0q-17 0-28.5-11.5T280-440t11.5-28.5T320-480t28.5 11.5T360-440t-11.5 28.5T320-400m320 0q-17 0-28.5-11.5T600-440t11.5-28.5T640-480t28.5 11.5T680-440t-11.5 28.5T640-400M480-240q-17 0-28.5-11.5T440-280t11.5-28.5T480-320t28.5 11.5T520-280t-11.5 28.5T480-240m-160 0q-17 0-28.5-11.5T280-280t11.5-28.5T320-320t28.5 11.5T360-280t-11.5 28.5T320-240m320 0q-17 0-28.5-11.5T600-280t11.5-28.5T640-320t28.5 11.5T680-280t-11.5 28.5T640-240M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18zm0-60h600v-430H180z" />
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-28q0-13.6 9.2-22.8T277-880q14.02 0 23.51 9.2T310-848v28h340v-28q0-13.6 9.2-22.8T682-880q14.03 0 23.51 9.2Q715-861.6 715-848v28h65q24 0 42 18t18 42v620q0 24-18 42t-42 18zm0-60h600v-430H180zm300-260q-17 0-28.5-11.5T440-440t11.5-28.5T480-480t28.5 11.5T520-440t-11.5 28.5T480-400m-160 0q-17 0-28.5-11.5T280-440t11.5-28.5T320-480t28.5 11.5T360-440t-11.5 28.5T320-400m320 0q-17 0-28.5-11.5T600-440t11.5-28.5T640-480t28.5 11.5T680-440t-11.5 28.5T640-400M480-240q-17 0-28.5-11.5T440-280t11.5-28.5T480-320t28.5 11.5T520-280t-11.5 28.5T480-240m-160 0q-17 0-28.5-11.5T280-280t11.5-28.5T320-320t28.5 11.5T360-280t-11.5 28.5T320-240m320 0q-17 0-28.5-11.5T600-280t11.5-28.5T640-320t28.5 11.5T680-280t-11.5 28.5T640-240" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CalendarMonthOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18zm0-60h600v-430H180zm0-490h600v-130H180zm0 0v-130zm300 230q-17 0-28.5-11.5T440-440t11.5-28.5T480-480t28.5 11.5T520-440t-11.5 28.5T480-400m-160 0q-17 0-28.5-11.5T280-440t11.5-28.5T320-480t28.5 11.5T360-440t-11.5 28.5T320-400m320 0q-17 0-28.5-11.5T600-440t11.5-28.5T640-480t28.5 11.5T680-440t-11.5 28.5T640-400M480-240q-17 0-28.5-11.5T440-280t11.5-28.5T480-320t28.5 11.5T520-280t-11.5 28.5T480-240m-160 0q-17 0-28.5-11.5T280-280t11.5-28.5T320-320t28.5 11.5T360-280t-11.5 28.5T320-240m320 0q-17 0-28.5-11.5T600-280t11.5-28.5T640-320t28.5 11.5T680-280t-11.5 28.5T640-240" />
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-28q0-13.6 9.2-22.8T277-880q14.02 0 23.51 9.2T310-848v28h340v-28q0-13.6 9.2-22.8T682-880q14.03 0 23.51 9.2Q715-861.6 715-848v28h65q24 0 42 18t18 42v620q0 24-18 42t-42 18zm0-60h600v-430H180zm0-490h600v-130H180zm0 0v-130zm300 230q-17 0-28.5-11.5T440-440t11.5-28.5T480-480t28.5 11.5T520-440t-11.5 28.5T480-400m-160 0q-17 0-28.5-11.5T280-440t11.5-28.5T320-480t28.5 11.5T360-440t-11.5 28.5T320-400m320 0q-17 0-28.5-11.5T600-440t11.5-28.5T640-480t28.5 11.5T680-440t-11.5 28.5T640-400M480-240q-17 0-28.5-11.5T440-280t11.5-28.5T480-320t28.5 11.5T520-280t-11.5 28.5T480-240m-160 0q-17 0-28.5-11.5T280-280t11.5-28.5T320-320t28.5 11.5T360-280t-11.5 28.5T320-240m320 0q-17 0-28.5-11.5T600-280t11.5-28.5T640-320t28.5 11.5T680-280t-11.5 28.5T640-240" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CalendarTodayFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18zm0-60h600v-430H180z" />
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-28q0-13.6 9.2-22.8T277-880q14.02 0 23.51 9.2T310-848v28h340v-28q0-13.6 9.2-22.8T682-880q14.03 0 23.51 9.2Q715-861.6 715-848v28h65q24 0 42 18t18 42v620q0 24-18 42t-42 18zm0-60h600v-430H180z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CalendarTodayOutlined = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18zm0-60h600v-430H180zm0-490h600v-130H180zm0 0v-130z" />
<path d="M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-28q0-13.6 9.2-22.8T277-880q14.02 0 23.51 9.2T310-848v28h340v-28q0-13.6 9.2-22.8T682-880q14.03 0 23.51 9.2Q715-861.6 715-848v28h65q24 0 42 18t18 42v620q0 24-18 42t-42 18zm0-60h600v-430H180zm0-490h600v-130H180zm0 0v-130z" />
</svg>
)
@@ -3,7 +3,7 @@ import type { SVGProps } from "react"
const CallQualityFilled = (props: SVGProps<SVGSVGElement>) => (
<svg viewBox="0 -960 960 960" {...props}>
<path d="M755-80q-116 0-236.5-56T295-295 136-518.5 80-755q0-19.29 12.86-32.14Q105.71-800 125-800h140q14 0 24 10t14 25l26.93 125.64Q332-625 329.5-613.5t-10.73 19.73L219-493q26 44 55 82t64 72q37 38 78 69.5t86 55.5l95-98q10-11 23.15-15t25.85-2l119 26q15 4 25 16.04 10 12.05 10 26.96v135q0 19.29-12.86 32.14Q774.29-80 755-80M189-548l81-82-23-110H140q0 39 12 85.5T189-548m369 363q41 19 89 31t93 14v-107l-103-21zM189-548q-25-60-37-106.5T140-740h107l23 110zm369 363 79-83 103 21v107q-45-2-93-14t-89-31m131.89-315Q611-500 555.5-555.61q-55.5-55.6-55.5-134.5 0-78.89 55.61-134.39 55.6-55.5 134.5-55.5 78.89 0 134.39 55.61 55.5 55.6 55.5 134.5 0 78.89-55.61 134.39-55.6 55.5-134.5 55.5M670-570h40v-160h-40zm20-200q8 0 14-6t6-14-6-14-14-6-14 6-6 14 6 14 14 6" />
<path d="M755-80q-116 0-236.5-56T295-295 136-518.5 80-755q0-19.29 12.86-32.14Q105.71-800 125-800h140q14 0 24 10t14 25l26.93 125.64Q332-625 329.5-613.5t-10.73 19.73L219-493q26 44 55 82t64 72q37 38 78 69.5t86 55.5l95-98q10-11 23.15-15t25.85-2l119 26q15 4 25 16.04 10 12.05 10 26.96v135q0 19.29-12.86 32.14Q774.29-80 755-80m-65.11-420Q611-500 555.5-555.61q-55.5-55.6-55.5-134.5 0-78.89 55.61-134.39 55.6-55.5 134.5-55.5 78.89 0 134.39 55.61 55.5 55.6 55.5 134.5 0 78.89-55.61 134.39-55.6 55.5-134.5 55.5m.11-70q8 0 14-6t6-14v-120q0-8-6-14t-14-6-14 6-6 14v120q0 8 6 14t14 6m0-200q8 0 14-6t6-14-6-14-14-6-14 6-6 14 6 14 14 6" />
</svg>
)

Some files were not shown because too many files have changed in this diff Show More