diff --git a/packages/visual-editor/THIRD-PARTY-NOTICES b/packages/visual-editor/THIRD-PARTY-NOTICES index 75c99153f..9025874e3 100644 --- a/packages/visual-editor/THIRD-PARTY-NOTICES +++ b/packages/visual-editor/THIRD-PARTY-NOTICES @@ -299,6 +299,131 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------- +The following npm package may be included in this product: + + - @mapbox/maki@8.2.0 + +This package contains the following license: + +CC0 1.0 Universal + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator and +subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later +claims of infringement build upon, modify, incorporate in other works, reuse +and redistribute as freely as possible in any form whatsoever and for any +purposes, including without limitation commercial purposes. These owners may +contribute to the Commons to promote the ideal of a free culture and the +further production of creative, cultural and scientific works, or to gain +reputation or greater distribution for their Work in part through the use and +efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with a +Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or her +Copyright and Related Rights in the Work and the meaning and intended legal +effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not limited +to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, communicate, + and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + + iii. publicity and privacy rights pertaining to a person's image or likeness + depicted in a Work; + + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + + v. rights protecting the extraction, dissemination, use and reuse of data in + a Work; + + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation thereof, + including any amended or successor version of such directive); and + + vii. other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time +extensions), (iii) in any current or future medium and for any number of +copies, and (iv) for any purpose whatsoever, including without limitation +commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes +the Waiver for the benefit of each member of the public at large and to the +detriment of Affirmer's heirs and successors, fully intending that such Waiver +shall not be subject to revocation, rescission, cancellation, termination, or +any other legal or equitable action to disrupt the quiet enjoyment of the Work +by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account +Affirmer's express Statement of Purpose. In addition, to the extent the Waiver +is so judged Affirmer hereby grants to each affected person a royalty-free, +non transferable, non sublicensable, non exclusive, irrevocable and +unconditional license to exercise Affirmer's Copyright and Related Rights in +the Work (i) in all territories worldwide, (ii) for the maximum duration +provided by applicable law or treaty (including future time extensions), (iii) +in any current or future medium and for any number of copies, and (iv) for any +purpose whatsoever, including without limitation commercial, advertising or +promotional purposes (the "License"). The License shall be deemed effective as +of the date CC0 was applied by Affirmer to the Work. Should any part of the +License for any reason be judged legally invalid or ineffective under +applicable law, such partial invalidity or ineffectiveness shall not +invalidate the remainder of the License, and in such case Affirmer hereby +affirms that he or she will not (i) exercise any of his or her remaining +Copyright and Related Rights in the Work or (ii) assert any associated claims +and causes of action with respect to the Work, in either case contrary to +Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + + b. Affirmer offers the Work as-is and makes no representations or warranties + of any kind concerning the Work, express, implied, statutory or otherwise, + including without limitation warranties of title, merchantability, fitness + for a particular purpose, non infringement, or the absence of latent or + other defects, accuracy, or the present or absence of errors, whether or not + discoverable, all to the greatest extent permissible under applicable law. + + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without limitation + any person's Copyright and Related Rights in the Work. Further, Affirmer + disclaims responsibility for obtaining any necessary consents, permissions + or other rights required for any use of the Work. + + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to this + CC0 or use of the Work. + +For more information, please see + + +----------- + The following npm package may be included in this product: - handlebars@4.7.8 diff --git a/packages/visual-editor/locales/platform/cs/visual-editor.json b/packages/visual-editor/locales/platform/cs/visual-editor.json index 2d65cb42d..5828f4174 100644 --- a/packages/visual-editor/locales/platform/cs/visual-editor.json +++ b/packages/visual-editor/locales/platform/cs/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -maily", "enableLanguageSelector": "Povolit volič jazyků", "endDate": "Datum ukončení", + "entityType": "Typ entity", "expandedFooterLinks": "Rozšířené odkazy zápatí", "expandFooter": "Rozbalte zápatí", "facebookLink": "Facebook odkaz", @@ -230,6 +231,7 @@ "hours": "Hodiny", "hoursColumn": "Sloupec hodin", "html": "HTML", + "icon": "Ikona", "icons": "ikony", "image": "Obraz", "imageConstrain": "Omezení obrázku", @@ -326,16 +328,21 @@ "yearsOfExperience": "Léta zkušeností" }, "fillContainer": "Naplňte nádobu", + "financialProfessionals": "Finanční profesionálové", "fixed": "Opravené", "fixedWidth": "Pevná šířka", "friday": "pátek", "fullWidth": "Plná šířka", "gallery": "Galerie", + "healthcareFacilities": "Zdravotnická zařízení", + "healthcareProfessionals": "Zdravotníci", "hide": "Skrýt", + "hotels": "hotely", "hour12": "12 hodin", "hour24": "24 hodin", "hoursStatus": "Stav hodin", "hoursTable": "Tabulka hodin", + "icon": "Ikona", "image": "Obraz", "immersive": "Pohlcující", "includeOpenNow": "Zahrňte tlačítko Open Now", @@ -347,6 +354,7 @@ "left_direction": "Vlevo", "light": "Světlo", "link": "Odkaz", + "locations": "Místa", "long": "Dlouho", "mapStartingLocation": "Počáteční umístění mapy", "matchOtherSections": "Porovnejte jiné sekce ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigace (den)", "navigationNight": "Navigace (noc)", "no": "Žádný", + "none": "Žádný", "normal": "Normální", "one": "Jeden", "phone": "Telefon", "regular": "Normální", + "restaurants": "Restaurace", "right_direction": "Správné", "satellite": "Satelit", "saturday": "sobota", @@ -392,6 +402,9 @@ "phoneNumber": "Telefonní číslo", "phoneNumberFormat": "Formát telefonního čísla", "phoneNumbers": "Telefonní čísla", + "pinColor": "Barva špendlíku", + "pinIcon": "Ikona špendlíku", + "pinStyles": "Styly umístění", "pinterestLink": "Pinterest Link", "presetImage": "Přednastavený obrázek", "primaryCTA": "Primární CTA", diff --git a/packages/visual-editor/locales/platform/da/visual-editor.json b/packages/visual-editor/locales/platform/da/visual-editor.json index 66eae96cd..9de526928 100644 --- a/packages/visual-editor/locales/platform/da/visual-editor.json +++ b/packages/visual-editor/locales/platform/da/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -mails", "enableLanguageSelector": "Aktivér sprogvælger", "endDate": "Slutdato", + "entityType": "Enhedstype", "expandedFooterLinks": "Udvidede sidefodslink", "expandFooter": "Udvid sidefod", "facebookLink": "Facebook -link", @@ -230,6 +231,7 @@ "hours": "Timer", "hoursColumn": "Timersøjle", "html": "HTML", + "icon": "Ikon", "icons": "Ikoner", "image": "Billede", "imageConstrain": "Billedbegrænsning", @@ -326,16 +328,21 @@ "yearsOfExperience": "Års erfaring" }, "fillContainer": "Fyld beholderen", + "financialProfessionals": "Finansielle fagfolk", "fixed": "Fast", "fixedWidth": "Fast bredde", "friday": "fredag", "fullWidth": "Fuld bredde", "gallery": "Galleri", + "healthcareFacilities": "Sundhedsfaciliteter", + "healthcareProfessionals": "Sundhedspersonale", "hide": "Skjule", + "hotels": "Hoteller", "hour12": "12-timers", "hour24": "24-timer", "hoursStatus": "Timer Status", "hoursTable": "Timer tabel", + "icon": "Ikon", "image": "Billede", "immersive": "Fordybende", "includeOpenNow": "Inkluder åbent nu -knap", @@ -347,6 +354,7 @@ "left_direction": "Venstre", "light": "Lys", "link": "Forbindelse", + "locations": "Steder", "long": "Lang", "mapStartingLocation": "Kortstartplacering", "matchOtherSections": "Match andre sektioner ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigation (dag)", "navigationNight": "Navigation (nat)", "no": "Ingen", + "none": "Ingen", "normal": "Normal", "one": "En", "phone": "Telefon", "regular": "Normal", + "restaurants": "Restauranter", "right_direction": "Højre", "satellite": "Satellit", "saturday": "lørdag", @@ -392,6 +402,9 @@ "phoneNumber": "Telefonnummer", "phoneNumberFormat": "Telefonnummerformat", "phoneNumbers": "Telefonnumre", + "pinColor": "Pin farve", + "pinIcon": "Pin ikon", + "pinStyles": "Placeringsstile", "pinterestLink": "Pinterest -link", "presetImage": "Forudindstillet billede", "primaryCTA": "Primær CTA", diff --git a/packages/visual-editor/locales/platform/de/visual-editor.json b/packages/visual-editor/locales/platform/de/visual-editor.json index 540413c7d..27fd07457 100644 --- a/packages/visual-editor/locales/platform/de/visual-editor.json +++ b/packages/visual-editor/locales/platform/de/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E-Mails", "enableLanguageSelector": "Sprachauswahl aktivieren", "endDate": "Enddatum", + "entityType": "Entitätstyp", "expandedFooterLinks": "Erweiterte Footer-Links", "expandFooter": "Footer erweitern", "facebookLink": "Facebook-Link", @@ -230,6 +231,7 @@ "hours": "Öffnungszeiten", "hoursColumn": "Spalte für Öffnungszeiten", "html": "HTML", + "icon": "Symbol", "icons": "Icons", "image": "Bild", "imageConstrain": "Bildbegrenzung", @@ -326,16 +328,21 @@ "yearsOfExperience": "Berufserfahrung (Jahre)" }, "fillContainer": "An Container anpassen", + "financialProfessionals": "Finanzprofis", "fixed": "Fixiert", "fixedWidth": "Feste Breite", "friday": "Freitag", "fullWidth": "Volle Breite", "gallery": "Galerie", + "healthcareFacilities": "Gesundheitseinrichtungen", + "healthcareProfessionals": "Fachkräfte im Gesundheitswesen", "hide": "Ausblenden", + "hotels": "Hotels", "hour12": "12-Stunden-Format", "hour24": "24-Stunden-Format", "hoursStatus": "Öffnungszeiten-Status", "hoursTable": "Öffnungszeiten-Tabelle", + "icon": "Symbol", "image": "Bild", "immersive": "Immersiv", "includeOpenNow": "„Jetzt geöffnet“ anzeigen", @@ -347,6 +354,7 @@ "left_direction": "Links", "light": "Hell", "link": "Link", + "locations": "Standorte", "long": "Lang", "mapStartingLocation": "Karten-Startpunkt", "matchOtherSections": "An andere Module anpassen ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigation (Tag)", "navigationNight": "Navigation (Nacht)", "no": "Nein", + "none": "Keiner", "normal": "Normal", "one": "Eins", "phone": "Telefon", "regular": "Regulär", + "restaurants": "Restaurants", "right_direction": "Rechts", "satellite": "Satellit", "saturday": "Samstag", @@ -392,6 +402,9 @@ "phoneNumber": "Telefonnummer", "phoneNumberFormat": "Telefonnummer-Format", "phoneNumbers": "Telefonnummern", + "pinColor": "Pin-Farbe", + "pinIcon": "Pin-Symbol", + "pinStyles": "Standortstile", "pinterestLink": "Pinterest-Link", "presetImage": "Voreingestelltes Bild", "primaryCTA": "Primärer CTA", diff --git a/packages/visual-editor/locales/platform/en-GB/visual-editor.json b/packages/visual-editor/locales/platform/en-GB/visual-editor.json index b4827b64d..ed7b1a5a0 100644 --- a/packages/visual-editor/locales/platform/en-GB/visual-editor.json +++ b/packages/visual-editor/locales/platform/en-GB/visual-editor.json @@ -212,6 +212,7 @@ "emails": "Emails", "enableLanguageSelector": "Enable Language Selector", "endDate": "End Date", + "entityType": "Entity Type", "expandedFooterLinks": "Expanded Footer Links", "expandFooter": "Expand Footer", "facebookLink": "Facebook Link", @@ -230,6 +231,7 @@ "hours": "Hours", "hoursColumn": "Hours Column", "html": "HTML", + "icon": "Icon", "icons": "Icons", "image": "Image", "imageConstrain": "Image Constrain", @@ -326,16 +328,21 @@ "yearsOfExperience": "Years of Experience" }, "fillContainer": "Fill Container", + "financialProfessionals": "Financial Professionals", "fixed": "Fixed", "fixedWidth": "Fixed Width", "friday": "Friday", "fullWidth": "Full Width", "gallery": "Gallery", + "healthcareFacilities": "Healthcare Facilities", + "healthcareProfessionals": "Healthcare Professionals", "hide": "Hide", + "hotels": "Hotels", "hour12": "12-hour", "hour24": "24-hour", "hoursStatus": "Hours Status", "hoursTable": "Hours Table", + "icon": "Icon", "image": "Image", "immersive": "Immersive", "includeOpenNow": "Include Open Now Button", @@ -347,6 +354,7 @@ "left_direction": "Left", "light": "Light", "link": "Link", + "locations": "Locations", "long": "Long", "mapStartingLocation": "Map Starting Location", "matchOtherSections": "Match Other Sections ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigation (Day)", "navigationNight": "Navigation (Night)", "no": "No", + "none": "None", "normal": "Normal", "one": "One", "phone": "Phone", "regular": "Regular", + "restaurants": "Restaurants", "right_direction": "Right", "satellite": "Satellite", "saturday": "Saturday", @@ -392,6 +402,9 @@ "phoneNumber": "Phone Number", "phoneNumberFormat": "Phone Number Format", "phoneNumbers": "Phone Numbers", + "pinColor": "Pin Color", + "pinIcon": "Pin Icon", + "pinStyles": "Location styles", "pinterestLink": "Pinterest Link", "presetImage": "Preset Image", "primaryCTA": "Primary CTA", diff --git a/packages/visual-editor/locales/platform/en/visual-editor.json b/packages/visual-editor/locales/platform/en/visual-editor.json index 79c90dbcc..44e940eaf 100644 --- a/packages/visual-editor/locales/platform/en/visual-editor.json +++ b/packages/visual-editor/locales/platform/en/visual-editor.json @@ -212,6 +212,7 @@ "emails": "Emails", "enableLanguageSelector": "Enable Language Selector", "endDate": "End Date", + "entityType": "Entity Type", "expandedFooterLinks": "Expanded Footer Links", "expandFooter": "Expand Footer", "facebookLink": "Facebook Link", @@ -230,6 +231,7 @@ "hours": "Hours", "hoursColumn": "Hours Column", "html": "HTML", + "icon": "Icon", "icons": "Icons", "image": "Image", "imageConstrain": "Image Constrain", @@ -326,16 +328,21 @@ "yearsOfExperience": "Years of Experience" }, "fillContainer": "Fill Container", + "financialProfessionals": "Financial Professionals", "fixed": "Fixed", "fixedWidth": "Fixed Width", "friday": "Friday", "fullWidth": "Full Width", "gallery": "Gallery", + "healthcareFacilities": "Healthcare Facilities", + "healthcareProfessionals": "Healthcare Professionals", "hide": "Hide", + "hotels": "Hotels", "hour12": "12-hour", "hour24": "24-hour", "hoursStatus": "Hours Status", "hoursTable": "Hours Table", + "icon": "Icon", "image": "Image", "immersive": "Immersive", "includeOpenNow": "Include Open Now Button", @@ -347,6 +354,7 @@ "left_direction": "Left", "light": "Light", "link": "Link", + "locations": "Locations", "long": "Long", "mapStartingLocation": "Map Starting Location", "matchOtherSections": "Match Other Sections ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigation (Day)", "navigationNight": "Navigation (Night)", "no": "No", + "none": "None", "normal": "Normal", "one": "One", "phone": "Phone", "regular": "Regular", + "restaurants": "Restaurants", "right_direction": "Right", "satellite": "Satellite", "saturday": "Saturday", @@ -392,6 +402,9 @@ "phoneNumber": "Phone Number", "phoneNumberFormat": "Phone Number Format", "phoneNumbers": "Phone Numbers", + "pinColor": "Pin Color", + "pinIcon": "Pin Icon", + "pinStyles": "Location styles", "pinterestLink": "Pinterest Link", "presetImage": "Preset Image", "primaryCTA": "Primary CTA", diff --git a/packages/visual-editor/locales/platform/es/visual-editor.json b/packages/visual-editor/locales/platform/es/visual-editor.json index 8bee9b4b1..3c440af85 100644 --- a/packages/visual-editor/locales/platform/es/visual-editor.json +++ b/packages/visual-editor/locales/platform/es/visual-editor.json @@ -212,6 +212,7 @@ "emails": "Correos electrónicos", "enableLanguageSelector": "Habilitar el selector de idiomas", "endDate": "Fecha de finalización", + "entityType": "Tipo de entidad", "expandedFooterLinks": "Enlaces de pie de página expandidos", "expandFooter": "Expandir el pie de página", "facebookLink": "Enlace de Facebook", @@ -230,6 +231,7 @@ "hours": "Horas", "hoursColumn": "Columna de horas", "html": "HTML", + "icon": "Icono", "icons": "Iconos", "image": "Imagen", "imageConstrain": "Restricción de imagen", @@ -326,16 +328,21 @@ "yearsOfExperience": "Años de experiencia" }, "fillContainer": "Llenar el contenedor", + "financialProfessionals": "Profesionales financieros", "fixed": "Fijado", "fixedWidth": "Ancho fijo", "friday": "Viernes", "fullWidth": "Ancho completo", "gallery": "Galería", + "healthcareFacilities": "Instalaciones sanitarias", + "healthcareProfessionals": "Profesionales de la salud", "hide": "Esconder", + "hotels": "Hoteles", "hour12": "De 12 horas", "hour24": "Las 24 horas", "hoursStatus": "Estado de horas", "hoursTable": "Tabla de horas", + "icon": "Icono", "image": "Imagen", "immersive": "Inmersivo", "includeOpenNow": "Incluir el botón Abrir ahora", @@ -347,6 +354,7 @@ "left_direction": "Izquierda", "light": "Luz", "link": "Enlace", + "locations": "Ubicaciones", "long": "Largo", "mapStartingLocation": "Ubicación de inicio del mapa", "matchOtherSections": "Haga coincidir otras secciones ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navegación (día)", "navigationNight": "Navegación (noche)", "no": "No", + "none": "Ninguno", "normal": "Normal", "one": "Uno", "phone": "Teléfono", "regular": "Regular", + "restaurants": "Restaurantes", "right_direction": "Derecha", "satellite": "Satélite", "saturday": "Sábado", @@ -392,6 +402,9 @@ "phoneNumber": "Número de teléfono", "phoneNumberFormat": "Formato de número de teléfono", "phoneNumbers": "Números de teléfono", + "pinColor": "Color del alfiler", + "pinIcon": "Icono de alfiler", + "pinStyles": "Estilos de ubicación", "pinterestLink": "Enlace Pinterest", "presetImage": "Imagen preestablecida", "primaryCTA": "CTA primario", diff --git a/packages/visual-editor/locales/platform/et/visual-editor.json b/packages/visual-editor/locales/platform/et/visual-editor.json index 8bd0859e0..e27a35b5f 100644 --- a/packages/visual-editor/locales/platform/et/visual-editor.json +++ b/packages/visual-editor/locales/platform/et/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -kirjad", "enableLanguageSelector": "Luba keelevalija", "endDate": "Lõppkuupäev", + "entityType": "Olemi tüüp", "expandedFooterLinks": "Laiendatud jaluse lingid", "expandFooter": "Laiendage jalus", "facebookLink": "Facebooki link", @@ -230,6 +231,7 @@ "hours": "Tööaeg", "hoursColumn": "Töötundide veerg", "html": "HTML", + "icon": "Ikoon", "icons": "Ikoonid", "image": "Pilt", "imageConstrain": "Pildi piiramine", @@ -326,16 +328,21 @@ "yearsOfExperience": "Aastatepikkune kogemus" }, "fillContainer": "Täida konteiner", + "financialProfessionals": "Finantsspetsialistid", "fixed": "Fikseeritud", "fixedWidth": "Fikseeritud laius", "friday": "Reede", "fullWidth": "Täielik laius", "gallery": "Galerii", + "healthcareFacilities": "Tervishoiuasutused", + "healthcareProfessionals": "Tervishoiutöötajad", "hide": "Varjama", + "hotels": "Hotellid", "hour12": "12-tunnine", "hour24": "24-tunnine", "hoursStatus": "Tundide olek", "hoursTable": "Tundide tabel", + "icon": "Ikoon", "image": "Pilt", "immersive": "Ümbritsev", "includeOpenNow": "Lisage avatud nupp avatud", @@ -347,6 +354,7 @@ "left_direction": "Vasakule", "light": "Hele", "link": "Link", + "locations": "Asukohad", "long": "Pikk", "mapStartingLocation": "Kaardi algusasukoht", "matchOtherSections": "Sobitada teisi sektsioone ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigeerimine (päev)", "navigationNight": "Navigeerimine (öö)", "no": "Mitte", + "none": "Mitte ühtegi", "normal": "Tavaline", "one": "Üks", "phone": "Telefon", "regular": "Regulaarne", + "restaurants": "Restoranid", "right_direction": "Õige", "satellite": "Satelliit", "saturday": "Laupäev", @@ -392,6 +402,9 @@ "phoneNumber": "Telefoninumber", "phoneNumberFormat": "Telefoninumbri vorming", "phoneNumbers": "Telefoninumbrid", + "pinColor": "Pin Värv", + "pinIcon": "Kinnitusikoon", + "pinStyles": "Asukoha stiilid", "pinterestLink": "Pinterest Link", "presetImage": "Eelseadistatud pilt", "primaryCTA": "Esmane CTA", diff --git a/packages/visual-editor/locales/platform/fi/visual-editor.json b/packages/visual-editor/locales/platform/fi/visual-editor.json index 14cca51c4..243c270b4 100644 --- a/packages/visual-editor/locales/platform/fi/visual-editor.json +++ b/packages/visual-editor/locales/platform/fi/visual-editor.json @@ -212,6 +212,7 @@ "emails": "Sähköpostit", "enableLanguageSelector": "Ota kielenvalitsin käyttöön", "endDate": "Päättymispäivämäärä", + "entityType": "Entiteettityyppi", "expandedFooterLinks": "Laajennetut alatunnislinkit", "expandFooter": "Laajentaa alatunnistetta", "facebookLink": "Facebook -linkki", @@ -230,6 +231,7 @@ "hours": "Tuntia", "hoursColumn": "Tuntiasarake", "html": "HTML", + "icon": "Kuvake", "icons": "Kuvakkeet", "image": "Kuva", "imageConstrain": "Kuvarajoitus", @@ -326,16 +328,21 @@ "yearsOfExperience": "Vuosien kokemus" }, "fillContainer": "Täytä säiliö", + "financialProfessionals": "Talousalan ammattilaiset", "fixed": "Kiinteä", "fixedWidth": "Kiinteä leveys", "friday": "perjantai", "fullWidth": "Täysleveys", "gallery": "Galleria", + "healthcareFacilities": "Terveydenhuollon palvelut", + "healthcareProfessionals": "Terveydenhuollon ammattilaiset", "hide": "Piilottaa", + "hotels": "Hotellit", "hour12": "12 tunnin", "hour24": "24 tunnin", "hoursStatus": "Tuntien tila", "hoursTable": "Tuntitaulukko", + "icon": "Kuvake", "image": "Kuva", "immersive": "Syventävä", "includeOpenNow": "Sisällytä nyt -painike", @@ -347,6 +354,7 @@ "left_direction": "Vasen", "light": "Valaistus", "link": "Linkki", + "locations": "Sijainnit", "long": "Pitkä", "mapStartingLocation": "Kartan lähtöpaikka", "matchOtherSections": "Vastaa muita osia ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigointi (päivä)", "navigationNight": "Navigointi (yö)", "no": "Ei", + "none": "Ei mitään", "normal": "Normaali", "one": "Yksi", "phone": "Puhelin", "regular": "Normaali", + "restaurants": "Ravintolat", "right_direction": "Oikea", "satellite": "Satelliitti", "saturday": "lauantai", @@ -392,6 +402,9 @@ "phoneNumber": "Puhelinnumero", "phoneNumberFormat": "Puhelinnumeromuoto", "phoneNumbers": "Puhelinnumerot", + "pinColor": "Pin Väri", + "pinIcon": "Pin-kuvake", + "pinStyles": "Sijaintityylit", "pinterestLink": "Pinterest -linkki", "presetImage": "Esiasetettu kuva", "primaryCTA": "Ensisijainen CTA", diff --git a/packages/visual-editor/locales/platform/fr/visual-editor.json b/packages/visual-editor/locales/platform/fr/visual-editor.json index bf3feabd7..6f5c3535f 100644 --- a/packages/visual-editor/locales/platform/fr/visual-editor.json +++ b/packages/visual-editor/locales/platform/fr/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E-mails", "enableLanguageSelector": "Activer le sélecteur de langue", "endDate": "Date de fin", + "entityType": "Type d'entité", "expandedFooterLinks": "Liens de pied de page élargis", "expandFooter": "Développer le pied de page", "facebookLink": "Lien Facebook", @@ -230,6 +231,7 @@ "hours": "Heures", "hoursColumn": "Colonne d'heures", "html": "HTML", + "icon": "Icône", "icons": "Icônes", "image": "Image", "imageConstrain": "Contrainte d'image", @@ -326,16 +328,21 @@ "yearsOfExperience": "Années d'expérience" }, "fillContainer": "Remplir le conteneur", + "financialProfessionals": "Professionnels de la finance", "fixed": "Fixé", "fixedWidth": "Largeur fixe", "friday": "Vendredi", "fullWidth": "Pleine largeur", "gallery": "Galerie", + "healthcareFacilities": "Établissements de santé", + "healthcareProfessionals": "Professionnels de la santé", "hide": "Cacher", + "hotels": "Hôtels", "hour12": "12 heures", "hour24": "24 heures", "hoursStatus": "Statut des heures", "hoursTable": "Tableau des heures", + "icon": "Icône", "image": "Image", "immersive": "Immersif", "includeOpenNow": "Inclure le bouton Open Now", @@ -347,6 +354,7 @@ "left_direction": "Gauche", "light": "Lumière", "link": "Lien", + "locations": "Emplacements", "long": "Long", "mapStartingLocation": "Emplacement de départ de la carte", "matchOtherSections": "Faire correspondre d'autres sections ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigation (jour)", "navigationNight": "Navigation (nuit)", "no": "Non", + "none": "Aucun", "normal": "Normale", "one": "Un", "phone": "Téléphone", "regular": "Régulier", + "restaurants": "Restaurants", "right_direction": "À droite", "satellite": "Satellite", "saturday": "Samedi", @@ -392,6 +402,9 @@ "phoneNumber": "Numéro de téléphone", "phoneNumberFormat": "Format de numéro de téléphone", "phoneNumbers": "Numéros de téléphone", + "pinColor": "Couleur de l'épingle", + "pinIcon": "Icône d'épingle", + "pinStyles": "Styles d'emplacement", "pinterestLink": "Lien pinterest", "presetImage": "Image prédéfinie", "primaryCTA": "CTA primaire", diff --git a/packages/visual-editor/locales/platform/hr/visual-editor.json b/packages/visual-editor/locales/platform/hr/visual-editor.json index be50762b9..b4e368fc6 100644 --- a/packages/visual-editor/locales/platform/hr/visual-editor.json +++ b/packages/visual-editor/locales/platform/hr/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -mailovi", "enableLanguageSelector": "Omogući selektor jezika", "endDate": "Datum završetka", + "entityType": "Vrsta entiteta", "expandedFooterLinks": "Proširene veze podnožja", "expandFooter": "Proširiti podnožje", "facebookLink": "Facebook veza", @@ -230,6 +231,7 @@ "hours": "Sati", "hoursColumn": "Sati stupaca", "html": "HTML", + "icon": "Ikona", "icons": "Ikone", "image": "Slika", "imageConstrain": "Ograničenje slike", @@ -326,16 +328,21 @@ "yearsOfExperience": "Godine iskustva" }, "fillContainer": "Napunite spremnik", + "financialProfessionals": "Financijski stručnjaci", "fixed": "Fiksni", "fixedWidth": "Fiksna širina", "friday": "petak", "fullWidth": "Puna širina", "gallery": "Galerija", + "healthcareFacilities": "Zdravstvene ustanove", + "healthcareProfessionals": "Zdravstveni radnici", "hide": "Sakriti", + "hotels": "Hoteli", "hour12": "12 sati", "hour24": "24-satni", "hoursStatus": "Status sati", "hoursTable": "Tablica sati", + "icon": "Ikona", "image": "Slika", "immersive": "Uronjen", "includeOpenNow": "Uključite gumb Otvori sada", @@ -347,6 +354,7 @@ "left_direction": "Lijevo", "light": "Svjetlo", "link": "Link", + "locations": "Lokacije", "long": "Dugačak", "mapStartingLocation": "Početna lokacija karte", "matchOtherSections": "Uskladite ostale odjeljke ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigacija (dan)", "navigationNight": "Navigacija (noć)", "no": "Ne", + "none": "Nijedan", "normal": "Normalan", "one": "Jedan", "phone": "Telefon", "regular": "Obično", + "restaurants": "Restorani", "right_direction": "Desno", "satellite": "Satelit", "saturday": "subota", @@ -392,6 +402,9 @@ "phoneNumber": "Telefonski broj", "phoneNumberFormat": "Format telefonskog broja", "phoneNumbers": "Telefonski brojevi", + "pinColor": "Boja pribadače", + "pinIcon": "Ikona pribadače", + "pinStyles": "Stilovi pribadače", "pinterestLink": "Pinterest veza", "presetImage": "Unaprijed postavljena slika", "primaryCTA": "Primarni CTA", diff --git a/packages/visual-editor/locales/platform/hu/visual-editor.json b/packages/visual-editor/locales/platform/hu/visual-editor.json index 40db34d54..25cc0a6cb 100644 --- a/packages/visual-editor/locales/platform/hu/visual-editor.json +++ b/packages/visual-editor/locales/platform/hu/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -mailek", "enableLanguageSelector": "Engedélyezze a nyelvválasztót", "endDate": "Befejezés dátuma", + "entityType": "Entitás típusa", "expandedFooterLinks": "Bővített lábléc linkek", "expandFooter": "Bontsa ki a láblécet", "facebookLink": "Facebook link", @@ -230,6 +231,7 @@ "hours": "Órák", "hoursColumn": "Órás oszlop", "html": "HTML", + "icon": "Ikon", "icons": "Ikonok", "image": "Kép", "imageConstrain": "Képkorlátozás", @@ -326,16 +328,21 @@ "yearsOfExperience": "Több éves tapasztalat" }, "fillContainer": "Töltse ki a tartályt", + "financialProfessionals": "Pénzügyi szakemberek", "fixed": "Rögzített", "fixedWidth": "Fix szélesség", "friday": "péntek", "fullWidth": "Teljes szélesség", "gallery": "Galéria", + "healthcareFacilities": "Egészségügyi létesítmények", + "healthcareProfessionals": "Egészségügyi szakemberek", "hide": "Elrejt", + "hotels": "Szállodák", "hour12": "12 órás", "hour24": "24 órás", "hoursStatus": "Óra állapota", "hoursTable": "Óra táblázat", + "icon": "Ikon", "image": "Kép", "immersive": "Magával ragadó", "includeOpenNow": "Tartsa be a NYUTATÁS gombot", @@ -347,6 +354,7 @@ "left_direction": "Balra", "light": "Fény", "link": "Link", + "locations": "Helyszínek", "long": "Hosszú", "mapStartingLocation": "Térkép kiindulási helye", "matchOtherSections": "Illeszkedjen a többi szakaszhoz ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigáció (nap)", "navigationNight": "Navigáció (éjszaka)", "no": "Nem", + "none": "Egyik sem", "normal": "Normál", "one": "Egy", "phone": "Telefon", "regular": "Szabályos", + "restaurants": "Éttermek", "right_direction": "Jobb", "satellite": "Műhold", "saturday": "szombat", @@ -392,6 +402,9 @@ "phoneNumber": "Telefonszám", "phoneNumberFormat": "Telefonszám formátuma", "phoneNumbers": "Telefonszámok", + "pinColor": "Pin színe", + "pinIcon": "Pin ikon", + "pinStyles": "Helyszín stílusok", "pinterestLink": "Pinterest link", "presetImage": "Előre beállított kép", "primaryCTA": "Elsődleges CTA", diff --git a/packages/visual-editor/locales/platform/it/visual-editor.json b/packages/visual-editor/locales/platform/it/visual-editor.json index 4928602f9..eac7cf77a 100644 --- a/packages/visual-editor/locales/platform/it/visual-editor.json +++ b/packages/visual-editor/locales/platform/it/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -mail", "enableLanguageSelector": "Abilita selettore di lingue", "endDate": "Data di fine", + "entityType": "Tipo di entità", "expandedFooterLinks": "Collegamenti a piè di pagina espansi", "expandFooter": "Espandere il piè di pagina", "facebookLink": "Link di Facebook", @@ -230,6 +231,7 @@ "hours": "Ore", "hoursColumn": "Colonna delle ore", "html": "HTML", + "icon": "Icona", "icons": "Icone", "image": "Immagine", "imageConstrain": "Vincolo immagine", @@ -326,16 +328,21 @@ "yearsOfExperience": "Anni di esperienza" }, "fillContainer": "Riempire il contenitore", + "financialProfessionals": "Professionisti finanziari", "fixed": "Fisso", "fixedWidth": "Larghezza fissa", "friday": "Venerdì", "fullWidth": "Larghezza completa", "gallery": "Galleria", + "healthcareFacilities": "Strutture sanitarie", + "healthcareProfessionals": "Professionisti del settore sanitario", "hide": "Nascondere", + "hotels": "Alberghi", "hour12": "12 ore", "hour24": "24 ore", "hoursStatus": "Stato degli orari", "hoursTable": "Tabella delle ore", + "icon": "Icona", "image": "Immagine", "immersive": "Immersivo", "includeOpenNow": "Includi il pulsante Open Now", @@ -347,6 +354,7 @@ "left_direction": "Left", "light": "Leggero", "link": "Collegamento", + "locations": "Posizioni", "long": "Lungo", "mapStartingLocation": "Posizione di avvio della mappa", "matchOtherSections": "Abbina altre sezioni ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigazione (giorno)", "navigationNight": "Navigazione (notte)", "no": "NO", + "none": "Nessuno", "normal": "Normale", "one": "Uno", "phone": "Telefono", "regular": "Regolare", + "restaurants": "Ristoranti", "right_direction": "A destra", "satellite": "Satellitare", "saturday": "Sabato", @@ -392,6 +402,9 @@ "phoneNumber": "Numero di telefono", "phoneNumberFormat": "Formato numero di telefono", "phoneNumbers": "Numeri di telefono", + "pinColor": "Colore perno", + "pinIcon": "Icona del perno", + "pinStyles": "Stili pin", "pinterestLink": "Pinterest Link", "presetImage": "Immagine preimpostata", "primaryCTA": "CTA primario", diff --git a/packages/visual-editor/locales/platform/ja/visual-editor.json b/packages/visual-editor/locales/platform/ja/visual-editor.json index 8e056681b..c2486978c 100644 --- a/packages/visual-editor/locales/platform/ja/visual-editor.json +++ b/packages/visual-editor/locales/platform/ja/visual-editor.json @@ -212,6 +212,7 @@ "emails": "メール", "enableLanguageSelector": "言語セレクターを有効にします", "endDate": "終了日", + "entityType": "エンティティの種類", "expandedFooterLinks": "拡張フッターリンク", "expandFooter": "フッターを拡張します", "facebookLink": "Facebookリンク", @@ -230,6 +231,7 @@ "hours": "時間", "hoursColumn": "時間列", "html": "HTML", + "icon": "アイコン", "icons": "アイコン", "image": "画像", "imageConstrain": "画像の制約", @@ -326,16 +328,21 @@ "yearsOfExperience": "長年の経験" }, "fillContainer": "コンテナを満たす", + "financialProfessionals": "金融専門家", "fixed": "修理済み", "fixedWidth": "固定幅", "friday": "金曜日", "fullWidth": "全幅", "gallery": "ギャラリー", + "healthcareFacilities": "医療施設", + "healthcareProfessionals": "医療従事者", "hide": "隠れる", + "hotels": "ホテル", "hour12": "12時間", "hour24": "24時間", "hoursStatus": "営業時間のステータス", "hoursTable": "時間表", + "icon": "アイコン", "image": "画像", "immersive": "没入型", "includeOpenNow": "今すぐ開くボタンを含めます", @@ -347,6 +354,7 @@ "left_direction": "左", "light": "ライト", "link": "リンク", + "locations": "所在地", "long": "長さ", "mapStartingLocation": "場所の開始場所", "matchOtherSections": "他のセクションを一致させる({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "ナビゲーション(日)", "navigationNight": "ナビゲーション(夜)", "no": "いいえ", + "none": "なし", "normal": "普通", "one": "1つ", "phone": "電話", "regular": "通常", + "restaurants": "レストラン", "right_direction": "右", "satellite": "衛星", "saturday": "土曜日", @@ -392,6 +402,9 @@ "phoneNumber": "電話番号", "phoneNumberFormat": "電話番号形式", "phoneNumbers": "電話番号", + "pinColor": "ピンの色", + "pinIcon": "ピンアイコン", + "pinStyles": "場所のスタイル", "pinterestLink": "Pinterestリンク", "presetImage": "プリセット画像", "primaryCTA": "プライマリCTA", diff --git a/packages/visual-editor/locales/platform/lt/visual-editor.json b/packages/visual-editor/locales/platform/lt/visual-editor.json index dbf0bdc65..a23078053 100644 --- a/packages/visual-editor/locales/platform/lt/visual-editor.json +++ b/packages/visual-editor/locales/platform/lt/visual-editor.json @@ -212,6 +212,7 @@ "emails": "El. El. laiškai", "enableLanguageSelector": "Įgalinti kalbos parinkiklį", "endDate": "Pabaigos data", + "entityType": "Esybės tipas", "expandedFooterLinks": "Išplėstos poraštės nuorodos", "expandFooter": "Išplėskite poraštę", "facebookLink": "„Facebook“ nuoroda", @@ -230,6 +231,7 @@ "hours": "Valandos", "hoursColumn": "Valandų stulpelis", "html": "HTML", + "icon": "Piktograma", "icons": "Piktogramos", "image": "Vaizdas", "imageConstrain": "Vaizdo apribojimas", @@ -326,16 +328,21 @@ "yearsOfExperience": "Ilgametė patirtis" }, "fillContainer": "Užpildykite konteinerį", + "financialProfessionals": "Finansų profesionalai", "fixed": "Fiksuota", "fixedWidth": "Fiksuotas plotis", "friday": "Penktadienis", "fullWidth": "Visas plotis", "gallery": "Galerija", + "healthcareFacilities": "Sveikatos priežiūros įstaigos", + "healthcareProfessionals": "Sveikatos priežiūros specialistai", "hide": "Slėptis", + "hotels": "Viešbučiai", "hour12": "12 valandų", "hour24": "24 valandas", "hoursStatus": "Valandų būsena", "hoursTable": "Valandų lentelė", + "icon": "Piktograma", "image": "Vaizdas", "immersive": "Įsitraukimas", "includeOpenNow": "Įtraukite mygtuką Atidaryti dabar", @@ -347,6 +354,7 @@ "left_direction": "Kairė", "light": "Lengvas", "link": "Nuoroda", + "locations": "Vietos", "long": "Ilgas", "mapStartingLocation": "Žemėlapio pradžios vieta", "matchOtherSections": "Suderinti kitus skyrius ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigacija (diena)", "navigationNight": "Navigacija (naktis)", "no": "Ne", + "none": "Nėra", "normal": "Normalus", "one": "Vienas", "phone": "Telefonas", "regular": "Reguliarus", + "restaurants": "Restoranai", "right_direction": "Dešinė", "satellite": "Palydovas", "saturday": "Šeštadienis", @@ -392,6 +402,9 @@ "phoneNumber": "Telefono numeris", "phoneNumberFormat": "Telefono numerio formatas", "phoneNumbers": "Telefono numeriai", + "pinColor": "Smeigtuko spalva", + "pinIcon": "Smeigtuko piktograma", + "pinStyles": "Vietos stiliai", "pinterestLink": "„Pinterest“ nuoroda", "presetImage": "Iš anksto nustatytas vaizdas", "primaryCTA": "Pirminė CTA", diff --git a/packages/visual-editor/locales/platform/lv/visual-editor.json b/packages/visual-editor/locales/platform/lv/visual-editor.json index 8d9a17351..9a89bdc3d 100644 --- a/packages/visual-editor/locales/platform/lv/visual-editor.json +++ b/packages/visual-editor/locales/platform/lv/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -pasti", "enableLanguageSelector": "Iespējot valodas atlasītāju", "endDate": "Beigu datums", + "entityType": "Entītijas veids", "expandedFooterLinks": "Paplašinātas kājenes saites", "expandFooter": "Paplašināt kājeni", "facebookLink": "Facebook saite", @@ -230,6 +231,7 @@ "hours": "Laiks", "hoursColumn": "Stundu kolonna", "html": "HTML", + "icon": "Ikona", "icons": "Ikonas", "image": "Attēls", "imageConstrain": "Attēla ierobežojums", @@ -326,16 +328,21 @@ "yearsOfExperience": "Gadu pieredze" }, "fillContainer": "Aizpildiet konteineru", + "financialProfessionals": "Finanšu speciālisti", "fixed": "Fiksēts", "fixedWidth": "Fiksēts platums", "friday": "Piektdiena", "fullWidth": "Pilns platums", "gallery": "Galerija", + "healthcareFacilities": "Veselības aprūpes iestādes", + "healthcareProfessionals": "Veselības aprūpes speciālisti", "hide": "Slēpties", + "hotels": "Viesnīcas", "hour12": "12 stundu", "hour24": "Diennakts", "hoursStatus": "Stundu statuss", "hoursTable": "Stundu tabula", + "icon": "Ikona", "image": "Attēls", "immersive": "Ieskaujošs", "includeOpenNow": "Iekļaujiet pogu Atvērt tūlīt", @@ -347,6 +354,7 @@ "left_direction": "Kreisais", "light": "Gaisma", "link": "Saite", + "locations": "Atrašanās vietas", "long": "Ilgs", "mapStartingLocation": "Kartes sākuma vieta", "matchOtherSections": "Saskaņojiet citas sadaļas ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigācija (diena)", "navigationNight": "Navigācija (nakts)", "no": "Ne", + "none": "Nav", "normal": "Normāls", "one": "Viens", "phone": "Tālrunis", "regular": "Parasts", + "restaurants": "Restorāni", "right_direction": "Pa labi", "satellite": "Satelīts", "saturday": "Sestdiena", @@ -392,6 +402,9 @@ "phoneNumber": "Tālruņa numurs", "phoneNumberFormat": "Tālruņa numura formāts", "phoneNumbers": "Tālruņu numuri", + "pinColor": "Piespraudes krāsa", + "pinIcon": "Piespraudes ikona", + "pinStyles": "Atrašanās vietas stili", "pinterestLink": "Pinterest saite", "presetImage": "Iepriekš iestatīts attēls", "primaryCTA": "Primārā CTA", diff --git a/packages/visual-editor/locales/platform/nb/visual-editor.json b/packages/visual-editor/locales/platform/nb/visual-editor.json index 0e9ea5e18..b64399b8b 100644 --- a/packages/visual-editor/locales/platform/nb/visual-editor.json +++ b/packages/visual-editor/locales/platform/nb/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E-post", "enableLanguageSelector": "Aktiver språkvelger", "endDate": "Sluttdato", + "entityType": "Enhetstype", "expandedFooterLinks": "Utvidede bunntekstlenker", "expandFooter": "Utvide bunnteksten", "facebookLink": "Facebook -lenke", @@ -230,6 +231,7 @@ "hours": "Timer", "hoursColumn": "Timer kolonne", "html": "HTML", + "icon": "Ikon", "icons": "Ikoner", "image": "Bilde", "imageConstrain": "Bildebegrensning", @@ -326,16 +328,21 @@ "yearsOfExperience": "År med erfaring" }, "fillContainer": "Fyll beholderen", + "financialProfessionals": "Finansielle fagfolk", "fixed": "Fast", "fixedWidth": "Fast bredde", "friday": "fredag", "fullWidth": "Full bredde", "gallery": "Galleri", + "healthcareFacilities": "Helsetjenester", + "healthcareProfessionals": "Helsepersonell", "hide": "Gjemme", + "hotels": "Hoteller", "hour12": "12-timers", "hour24": "24-timers", "hoursStatus": "Timestatus", "hoursTable": "Timetabell", + "icon": "Ikon", "image": "Bilde", "immersive": "Oppslukende", "includeOpenNow": "Inkluder åpen nå -knapp", @@ -347,6 +354,7 @@ "left_direction": "Venstre", "light": "Lys", "link": "Lenke", + "locations": "Steder", "long": "Lang", "mapStartingLocation": "Kartstartsted", "matchOtherSections": "Match andre seksjoner ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigasjon (dag)", "navigationNight": "Navigasjon (natt)", "no": "Ingen", + "none": "Ingen", "normal": "Normal", "one": "En", "phone": "Telefon", "regular": "Normal", + "restaurants": "Restauranter", "right_direction": "Høyre", "satellite": "Satellitt", "saturday": "lørdag", @@ -392,6 +402,9 @@ "phoneNumber": "Telefonnummer", "phoneNumberFormat": "Telefonnummerformat", "phoneNumbers": "Telefonnumre", + "pinColor": "Pinnefarge", + "pinIcon": "Pin-ikon", + "pinStyles": "Stedsstiler", "pinterestLink": "Pinterest Link", "presetImage": "Forhåndsinnstilt bilde", "primaryCTA": "Primær CTA", diff --git a/packages/visual-editor/locales/platform/nl/visual-editor.json b/packages/visual-editor/locales/platform/nl/visual-editor.json index 4bdb0ea11..75bf0f26a 100644 --- a/packages/visual-editor/locales/platform/nl/visual-editor.json +++ b/packages/visual-editor/locales/platform/nl/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -mails", "enableLanguageSelector": "Schakel taalselector in", "endDate": "Einddatum", + "entityType": "Entiteitstype", "expandedFooterLinks": "Uitgebreide voettekst links", "expandFooter": "Footer uitbreiden", "facebookLink": "Facebook -link", @@ -230,6 +231,7 @@ "hours": "Uren", "hoursColumn": "Uren kolom", "html": "HTML", + "icon": "Icon", "icons": "Pictogrammen", "image": "Afbeelding", "imageConstrain": "Beeldbeperking", @@ -326,16 +328,21 @@ "yearsOfExperience": "Jarenlange ervaring" }, "fillContainer": "Vul container", + "financialProfessionals": "Financiële professionals", "fixed": "Vast", "fixedWidth": "Vaste breedte", "friday": "Vrijdag", "fullWidth": "Volledige breedte", "gallery": "Galerij", + "healthcareFacilities": "Gezondheidszorgfaciliteiten", + "healthcareProfessionals": "Beroepsbeoefenaren in de gezondheidszorg", "hide": "Verbergen", + "hotels": "Hotels", "hour12": "12 uur", "hour24": "24 uur", "hoursStatus": "Uurstatus", "hoursTable": "Uren tabel", + "icon": "Icon", "image": "Afbeelding", "immersive": "Meeslepend", "includeOpenNow": "Neem de knop Open nu open", @@ -347,6 +354,7 @@ "left_direction": "Links", "light": "Licht", "link": "Link", + "locations": "Locaties", "long": "Lang", "mapStartingLocation": "Kaart startlocatie", "matchOtherSections": "Match andere secties ({{value}}))", @@ -355,10 +363,12 @@ "navigationDay": "Navigatie (dag)", "navigationNight": "Navigatie (nacht)", "no": "Nee", + "none": "Geen", "normal": "Normaal", "one": "Een", "phone": "Telefoon", "regular": "Normaal", + "restaurants": "Restaurants", "right_direction": "Rechts", "satellite": "Satelliet", "saturday": "Zaterdag", @@ -392,6 +402,9 @@ "phoneNumber": "Telefoonnummer", "phoneNumberFormat": "Telefoonnummerformaat", "phoneNumbers": "Telefoonnummers", + "pinColor": "Speldkleur", + "pinIcon": "Pin-pictogram", + "pinStyles": "Locatiestijlen", "pinterestLink": "Pinterest -link", "presetImage": "Vooraf ingesteld beeld", "primaryCTA": "Primaire CTA", diff --git a/packages/visual-editor/locales/platform/pl/visual-editor.json b/packages/visual-editor/locales/platform/pl/visual-editor.json index 6cca82a48..0dca5f4c6 100644 --- a/packages/visual-editor/locales/platform/pl/visual-editor.json +++ b/packages/visual-editor/locales/platform/pl/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -maile", "enableLanguageSelector": "Włącz wybór języka", "endDate": "Data zakończenia", + "entityType": "Typ jednostki", "expandedFooterLinks": "Rozszerzone łącza stopki", "expandFooter": "Rozwiń stopkę", "facebookLink": "Link na Facebooku", @@ -230,6 +231,7 @@ "hours": "Godziny", "hoursColumn": "Kolumna godzin", "html": "HTML", + "icon": "Ikona", "icons": "Ikony", "image": "Obraz", "imageConstrain": "Ograniczenie obrazu", @@ -326,16 +328,21 @@ "yearsOfExperience": "Lata doświadczenia" }, "fillContainer": "Wypełnij kontener", + "financialProfessionals": "Specjaliści finansowi", "fixed": "Naprawił", "fixedWidth": "Stała szerokość", "friday": "Piątek", "fullWidth": "Pełna szerokość", "gallery": "Galeria", + "healthcareFacilities": "Placówki opieki zdrowotnej", + "healthcareProfessionals": "Pracownicy służby zdrowia", "hide": "Ukrywać", + "hotels": "Hotele", "hour12": "12-godzinny", "hour24": "24 godziny", "hoursStatus": "Stan godzin", "hoursTable": "Tabela godzin", + "icon": "Ikona", "image": "Obraz", "immersive": "Pochłaniający", "includeOpenNow": "Dołącz przycisk Otwórz teraz", @@ -347,6 +354,7 @@ "left_direction": "Lewy", "light": "Światło", "link": "Link", + "locations": "Lokalizacje", "long": "Długi", "mapStartingLocation": "Mapa Lokalizacja początkowa", "matchOtherSections": "Dopasuj inne sekcje ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Nawigacja (dzień)", "navigationNight": "Nawigacja (noc)", "no": "NIE", + "none": "Nic", "normal": "Normalna", "one": "Jeden", "phone": "Telefon", "regular": "Regularny", + "restaurants": "Restauracje", "right_direction": "Racja", "satellite": "Satelita", "saturday": "Sobota", @@ -392,6 +402,9 @@ "phoneNumber": "Numer telefonu", "phoneNumberFormat": "Format numeru telefonu", "phoneNumbers": "Numery telefonów", + "pinColor": "Kolor szpilki", + "pinIcon": "Ikona pinezki", + "pinStyles": "Style lokalizacji", "pinterestLink": "Pinterest Link", "presetImage": "Wstępnie ustawiony obraz", "primaryCTA": "Podstawowy CTA", diff --git a/packages/visual-editor/locales/platform/pt/visual-editor.json b/packages/visual-editor/locales/platform/pt/visual-editor.json index 9d695f21c..93f69f87f 100644 --- a/packages/visual-editor/locales/platform/pt/visual-editor.json +++ b/packages/visual-editor/locales/platform/pt/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -mails", "enableLanguageSelector": "Ativar seletor de linguagem", "endDate": "Data de término", + "entityType": "Tipo de entidade", "expandedFooterLinks": "Links expandidos do rodapé", "expandFooter": "Expandir rodapé", "facebookLink": "Link do Facebook", @@ -230,6 +231,7 @@ "hours": "Horas", "hoursColumn": "Coluna de horas", "html": "HTML", + "icon": "Ícone", "icons": "Ícones", "image": "Imagem", "imageConstrain": "Restrição de imagem", @@ -326,16 +328,21 @@ "yearsOfExperience": "Anos de experiência" }, "fillContainer": "Preencher contêiner", + "financialProfessionals": "Profissionais Financeiros", "fixed": "Fixo", "fixedWidth": "Largura fixa", "friday": "Sexta-feira", "fullWidth": "Largura total", "gallery": "Galeria", + "healthcareFacilities": "Instalações de saúde", + "healthcareProfessionals": "Profissionais de saúde", "hide": "Esconder", + "hotels": "Hotéis", "hour12": "12 horas", "hour24": "24 horas", "hoursStatus": "Status do horário", "hoursTable": "Tabela de Horas", + "icon": "Ícone", "image": "Imagem", "immersive": "Imersivo", "includeOpenNow": "Inclua o botão aberto agora", @@ -347,6 +354,7 @@ "left_direction": "Esquerda", "light": "Luz", "link": "Link", + "locations": "Locais", "long": "Longo", "mapStartingLocation": "Localização inicial do mapa", "matchOtherSections": "Combine outras seções ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navegação (dia)", "navigationNight": "Navegação (noite)", "no": "Não", + "none": "Nenhum", "normal": "Normal", "one": "Um", "phone": "Telefone", "regular": "Regular", + "restaurants": "Restaurantes", "right_direction": "Right", "satellite": "Satélite", "saturday": "Sábado", @@ -392,6 +402,9 @@ "phoneNumber": "Número de telefone", "phoneNumberFormat": "Formato do número de telefone", "phoneNumbers": "Números de telefone", + "pinColor": "Cor do alfinete", + "pinIcon": "Ícone de alfinete", + "pinStyles": "Estilos de localização", "pinterestLink": "Pinterest Link", "presetImage": "Imagem predefinida", "primaryCTA": "CTA primário", diff --git a/packages/visual-editor/locales/platform/ro/visual-editor.json b/packages/visual-editor/locales/platform/ro/visual-editor.json index beb0f5c84..b5d5076af 100644 --- a/packages/visual-editor/locales/platform/ro/visual-editor.json +++ b/packages/visual-editor/locales/platform/ro/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -mailuri", "enableLanguageSelector": "Activați selectorul de limbă", "endDate": "Data de încheiere", + "entityType": "Tip de entitate", "expandedFooterLinks": "Legături de subsol extinse", "expandFooter": "Extinde subsolul", "facebookLink": "Link Facebook", @@ -230,6 +231,7 @@ "hours": "Ore", "hoursColumn": "Coloană de ore", "html": "HTML", + "icon": "Pictogramă", "icons": "Pictograme", "image": "Imagine", "imageConstrain": "Constrângere imagine", @@ -326,16 +328,21 @@ "yearsOfExperience": "Ani de experiență" }, "fillContainer": "Umpleți containerul", + "financialProfessionals": "Profesionişti financiari", "fixed": "Fix", "fixedWidth": "Lățime fixă", "friday": "vineri", "fullWidth": "Lățime completă", "gallery": "Galerie", + "healthcareFacilities": "Facilități de sănătate", + "healthcareProfessionals": "Profesioniştii din domeniul sănătăţii", "hide": "Ascunde", + "hotels": "Hoteluri", "hour12": "12 ore", "hour24": "24 de ore", "hoursStatus": "Starea orelor", "hoursTable": "Tabelul orelor", + "icon": "Pictogramă", "image": "Imagine", "immersive": "Imersiv", "includeOpenNow": "Includeți butonul Deschideți acum", @@ -347,6 +354,7 @@ "left_direction": "Stânga", "light": "Aprinde", "link": "Legătură", + "locations": "Locații", "long": "Lung", "mapStartingLocation": "Locația de pornire a hărții", "matchOtherSections": "Potriviți alte secțiuni ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigare (zi)", "navigationNight": "Navigare (noapte)", "no": "Nu", + "none": "Nici unul", "normal": "Normal", "one": "Unul", "phone": "Telefon", "regular": "Regulat", + "restaurants": "Restaurante", "right_direction": "Dreapta", "satellite": "Satelit", "saturday": "sâmbătă", @@ -392,6 +402,9 @@ "phoneNumber": "Număr de telefon", "phoneNumberFormat": "Formatul numărului de telefon", "phoneNumbers": "Numere de telefon", + "pinColor": "Culoare Pin", + "pinIcon": "Pictograma Pin", + "pinStyles": "Stiluri de locație", "pinterestLink": "Link Pinterest", "presetImage": "Imagine prestabilită", "primaryCTA": "CTA primară", diff --git a/packages/visual-editor/locales/platform/sk/visual-editor.json b/packages/visual-editor/locales/platform/sk/visual-editor.json index 7f6c3770a..aed934ae4 100644 --- a/packages/visual-editor/locales/platform/sk/visual-editor.json +++ b/packages/visual-editor/locales/platform/sk/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E-maily", "enableLanguageSelector": "Povoliť výber jazyka", "endDate": "Dátum ukončenia", + "entityType": "Typ entity", "expandedFooterLinks": "Rozšírené odkazy na päty", "expandFooter": "Rozširovať pätu", "facebookLink": "Odkaz", @@ -230,6 +231,7 @@ "hours": "Hodiny", "hoursColumn": "Stĺp", "html": "HTML", + "icon": "Ikona", "icons": "ikony", "image": "Predstavovať", "imageConstrain": "Obmedzenie obrázka", @@ -326,16 +328,21 @@ "yearsOfExperience": "Roky skúseností" }, "fillContainer": "Naplňte nádobu", + "financialProfessionals": "Finanční profesionáli", "fixed": "Stanovený", "fixedWidth": "Pevná šírka", "friday": "Piatok", "fullWidth": "Plná šírka", "gallery": "Galéria", + "healthcareFacilities": "Zdravotnícke zariadenia", + "healthcareProfessionals": "Zdravotníci", "hide": "Skryť", + "hotels": "hotely", "hour12": "12-hodinový", "hour24": "24-hodinový", "hoursStatus": "Stav hodín", "hoursTable": "Tabuľka hodín", + "icon": "Ikona", "image": "Predstavovať", "immersive": "Pohlcujúci", "includeOpenNow": "Zahrňte tlačidlo Otvorené teraz", @@ -347,6 +354,7 @@ "left_direction": "Vľavo", "light": "Osvetlenie", "link": "Odkaz", + "locations": "Miesta", "long": "Dlhý", "mapStartingLocation": "Počiatočná poloha mapy", "matchOtherSections": "Zhodovať sa s ostatnými sekciami ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigácia (deň)", "navigationNight": "Navigácia (noc)", "no": "Nie", + "none": "žiadne", "normal": "Normálne", "one": "Jeden", "phone": "Telefón", "regular": "Normálne", + "restaurants": "Reštaurácie", "right_direction": "Vpravo", "satellite": "Satelit", "saturday": "Sobota", @@ -392,6 +402,9 @@ "phoneNumber": "Telefónne číslo", "phoneNumberFormat": "Formát telefónneho čísla", "phoneNumbers": "Telefónne čísla", + "pinColor": "Farba špendlíka", + "pinIcon": "Ikona špendlíka", + "pinStyles": "Štýly špendlíka", "pinterestLink": "Link Pinterest", "presetImage": "Prednastavený obrázok", "primaryCTA": "Primárna CTA", @@ -676,7 +689,7 @@ "links": "Odkazy", "options": { "circle": "Kruh", - "none": "Žiadny", + "none": "Žiadne", "pill": "Tabletka" }, "pageSection": "Sekcia", diff --git a/packages/visual-editor/locales/platform/sv/visual-editor.json b/packages/visual-editor/locales/platform/sv/visual-editor.json index fb97c8d83..db054db51 100644 --- a/packages/visual-editor/locales/platform/sv/visual-editor.json +++ b/packages/visual-editor/locales/platform/sv/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -postmeddelanden", "enableLanguageSelector": "Aktivera språkväljare", "endDate": "Slutdatum", + "entityType": "Enhetstyp", "expandedFooterLinks": "Utvidgade sidlänkar", "expandFooter": "Expandera sidfot", "facebookLink": "Facebook -länk", @@ -230,6 +231,7 @@ "hours": "Timme", "hoursColumn": "Time -kolumn", "html": "HTML", + "icon": "Ikon", "icons": "Ikoner", "image": "Bild", "imageConstrain": "Bildbegränsning", @@ -326,16 +328,21 @@ "yearsOfExperience": "År av erfarenhet" }, "fillContainer": "Fyll behållare", + "financialProfessionals": "Finansiella proffs", "fixed": "Fast", "fixedWidth": "Fast bredd", "friday": "Fredag", "fullWidth": "Full bredd", "gallery": "Galleri", + "healthcareFacilities": "Sjukvårdsinrättningar", + "healthcareProfessionals": "Vårdpersonal", "hide": "Dölja", + "hotels": "Hotell", "hour12": "12-timmars", "hour24": "24-timmars", "hoursStatus": "Timmar Status", "hoursTable": "Timmar Tabell", + "icon": "Ikon", "image": "Bild", "immersive": "Uppslukande", "includeOpenNow": "Inkludera öppen nu -knapp", @@ -347,6 +354,7 @@ "left_direction": "Vänster", "light": "Ljus", "link": "Länk", + "locations": "Platser", "long": "Lång", "mapStartingLocation": "Karta startplats", "matchOtherSections": "Matcha andra avsnitt ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigering (dag)", "navigationNight": "Navigering (natt)", "no": "Inga", + "none": "Ingen", "normal": "Normal", "one": "En", "phone": "Telefon", "regular": "Normal", + "restaurants": "Restauranger", "right_direction": "Höger", "satellite": "Satellit", "saturday": "Lördag", @@ -392,6 +402,9 @@ "phoneNumber": "Telefonnummer", "phoneNumberFormat": "Telefonnummerformat", "phoneNumbers": "Telefonnummer", + "pinColor": "Pin färg", + "pinIcon": "Pin ikon", + "pinStyles": "Pin stilar", "pinterestLink": "Pinterestlänk", "presetImage": "Förinställd bild", "primaryCTA": "Primär CTA", diff --git a/packages/visual-editor/locales/platform/tr/visual-editor.json b/packages/visual-editor/locales/platform/tr/visual-editor.json index 7ec127d08..52014c24d 100644 --- a/packages/visual-editor/locales/platform/tr/visual-editor.json +++ b/packages/visual-editor/locales/platform/tr/visual-editor.json @@ -212,6 +212,7 @@ "emails": "E -postalar", "enableLanguageSelector": "Dil seçicisini etkinleştir", "endDate": "Bitiş Tarihi", + "entityType": "Varlık Türü", "expandedFooterLinks": "Genişletilmiş altbilgi bağlantıları", "expandFooter": "Altbilgi genişlet", "facebookLink": "Facebook bağlantısı", @@ -230,6 +231,7 @@ "hours": "Saat", "hoursColumn": "Saat sütunu", "html": "HTML", + "icon": "Simge", "icons": "Simgeler", "image": "İmaj", "imageConstrain": "Görüntü Kısıtlaması", @@ -326,16 +328,21 @@ "yearsOfExperience": "Yılların Deneyimi" }, "fillContainer": "Kabı Doldur", + "financialProfessionals": "Finans Uzmanları", "fixed": "Sabit", "fixedWidth": "Sabit Genişlik", "friday": "Cuma", "fullWidth": "Tam genişlik", "gallery": "Galeri", + "healthcareFacilities": "Sağlık Tesisleri", + "healthcareProfessionals": "Sağlık Profesyonelleri", "hide": "Saklamak", + "hotels": "Oteller", "hour12": "12 saat", "hour24": "24 saat", "hoursStatus": "Saat Durumu", "hoursTable": "Saat Tablosu", + "icon": "Simge", "image": "İmaj", "immersive": "Sürükleyici", "includeOpenNow": "Now Düğmesini Ekle", @@ -347,6 +354,7 @@ "left_direction": "Sol", "light": "Işık", "link": "Bağlantı", + "locations": "Konumlar", "long": "Uzun", "mapStartingLocation": "Harita Başlangıç ​​Konumu", "matchOtherSections": "Diğer bölümleri eşleştirin ({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "Navigasyon (gün)", "navigationNight": "Navigasyon (gece)", "no": "HAYIR", + "none": "Hiçbiri", "normal": "Normal", "one": "Bir", "phone": "Telefon", "regular": "Düzenli", + "restaurants": "Restoranlar", "right_direction": "Doğru", "satellite": "Uydu", "saturday": "Cumartesi", @@ -392,6 +402,9 @@ "phoneNumber": "Telefon numarası", "phoneNumberFormat": "Telefon numarası biçimi", "phoneNumbers": "Telefon numaraları", + "pinColor": "Pim Rengi", + "pinIcon": "Pin Simgesi", + "pinStyles": "Konum stilleri", "pinterestLink": "Pinterest bağlantısı", "presetImage": "Önceden Ayarlanmış Görüntü", "primaryCTA": "Birincil CTA", diff --git a/packages/visual-editor/locales/platform/zh-TW/visual-editor.json b/packages/visual-editor/locales/platform/zh-TW/visual-editor.json index 18057976e..f67668bdc 100644 --- a/packages/visual-editor/locales/platform/zh-TW/visual-editor.json +++ b/packages/visual-editor/locales/platform/zh-TW/visual-editor.json @@ -212,6 +212,7 @@ "emails": "電子郵件", "enableLanguageSelector": "啟用語言選擇器", "endDate": "結束日期", + "entityType": "實體類型", "expandedFooterLinks": "擴展的頁腳鍊接", "expandFooter": "擴展頁腳", "facebookLink": "Facebook鏈接", @@ -230,6 +231,7 @@ "hours": "小時", "hoursColumn": "小時列", "html": "HTML", + "icon": "圖示", "icons": "圖示", "image": "圖像", "imageConstrain": "圖像約束", @@ -326,16 +328,21 @@ "yearsOfExperience": "多年經驗" }, "fillContainer": "填充容器", + "financialProfessionals": "金融專業人士", "fixed": "固定的", "fixedWidth": "固定寬度", "friday": "星期五", "fullWidth": "完整的寬度", "gallery": "畫廊", + "healthcareFacilities": "醫療設施", + "healthcareProfessionals": "醫療保健專業人員", "hide": "隱藏", + "hotels": "飯店", "hour12": "12小時", "hour24": "24小時", "hoursStatus": "小時狀態", "hoursTable": "營業時間表", + "icon": "圖示", "image": "圖像", "immersive": "沉浸式", "includeOpenNow": "包括“立即打開”按鈕", @@ -347,6 +354,7 @@ "left_direction": "左", "light": "光", "link": "鏈接", + "locations": "地點", "long": "長的", "mapStartingLocation": "地圖啟動位置", "matchOtherSections": "匹配其他部分({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "導航(日)", "navigationNight": "導航(晚上)", "no": "不", + "none": "沒有任何", "normal": "普通的", "one": "一", "phone": "電話", "regular": "常規的", + "restaurants": "餐廳", "right_direction": "正確", "satellite": "衛星", "saturday": "週六", @@ -392,6 +402,9 @@ "phoneNumber": "電話號碼", "phoneNumberFormat": "電話號碼格式", "phoneNumbers": "電話號碼", + "pinColor": "引腳顏色", + "pinIcon": "針圖示", + "pinStyles": "地點風格", "pinterestLink": "Pinterest鏈接", "presetImage": "預設圖像", "primaryCTA": "主要CTA", diff --git a/packages/visual-editor/locales/platform/zh/visual-editor.json b/packages/visual-editor/locales/platform/zh/visual-editor.json index b1346a597..2b7470cb1 100644 --- a/packages/visual-editor/locales/platform/zh/visual-editor.json +++ b/packages/visual-editor/locales/platform/zh/visual-editor.json @@ -212,6 +212,7 @@ "emails": "电子邮件", "enableLanguageSelector": "启用语言选择器", "endDate": "结束日期", + "entityType": "实体类型", "expandedFooterLinks": "扩展的页脚链接", "expandFooter": "扩展页脚", "facebookLink": "Facebook链接", @@ -230,6 +231,7 @@ "hours": "小时", "hoursColumn": "小时列", "html": "HTML", + "icon": "图标", "icons": "图标", "image": "图像", "imageConstrain": "图像约束", @@ -326,16 +328,21 @@ "yearsOfExperience": "多年经验" }, "fillContainer": "填充容器", + "financialProfessionals": "金融专业人士", "fixed": "固定的", "fixedWidth": "固定宽度", "friday": "星期五", "fullWidth": "完整的宽度", "gallery": "画廊", + "healthcareFacilities": "医疗设施", + "healthcareProfessionals": "医疗保健专业人员", "hide": "隐藏", + "hotels": "酒店", "hour12": "12小时", "hour24": "24小时", "hoursStatus": "小时状态", "hoursTable": "营业时间表", + "icon": "图标", "image": "图像", "immersive": "沉浸式", "includeOpenNow": "包括“立即打开”按钮", @@ -347,6 +354,7 @@ "left_direction": "左", "light": "光", "link": "关联", + "locations": "地点", "long": "长的", "mapStartingLocation": "地图启动位置", "matchOtherSections": "匹配其他部分({{value}})", @@ -355,10 +363,12 @@ "navigationDay": "导航(日)", "navigationNight": "导航(晚上)", "no": "不", + "none": "没有任何", "normal": "普通的", "one": "一", "phone": "电话", "regular": "常规的", + "restaurants": "餐厅", "right_direction": "正确", "satellite": "卫星", "saturday": "周六", @@ -392,6 +402,9 @@ "phoneNumber": "电话号码", "phoneNumberFormat": "电话号码格式", "phoneNumbers": "电话号码", + "pinColor": "图钉颜色", + "pinIcon": "图钉图标", + "pinStyles": "图钉样式", "pinterestLink": "Pinterest链接", "presetImage": "预设图像", "primaryCTA": "主要CTA", diff --git a/packages/visual-editor/package.json b/packages/visual-editor/package.json index 3096e8536..20d8e7e85 100644 --- a/packages/visual-editor/package.json +++ b/packages/visual-editor/package.json @@ -56,6 +56,7 @@ "i18n:update": "pnpm run i18n:extract:platform && pnpm run i18n:extract:components && pnpm run i18n:translate:platform && pnpm run i18n:propagate:components && pnpm run i18n:lint" }, "dependencies": { + "@mapbox/maki": "^8.0.0", "@microsoft/api-documenter": "^7.26.29", "@microsoft/api-extractor": "^7.52.8", "@microsoft/api-extractor-model": "^7.30.6", diff --git a/packages/visual-editor/src/components/Locator.tsx b/packages/visual-editor/src/components/Locator.tsx index 9651b7623..5036bf6b1 100644 --- a/packages/visual-editor/src/components/Locator.tsx +++ b/packages/visual-editor/src/components/Locator.tsx @@ -1,8 +1,10 @@ import { + AutoField, ComponentConfig, + FieldLabel, Fields, - WithPuckProps, setDeep, + WithPuckProps, } from "@puckeditor/core"; import { FieldValueFilter, @@ -29,7 +31,7 @@ import { OnDragHandler, OnSelectParams, Pagination, - PinComponent, + PinComponentProps, SearchI18nextProvider, VerticalResults, useAnalytics as useSearchAnalytics, @@ -59,14 +61,18 @@ import { toMeters, toMiles, } from "../utils/i18n/distance.ts"; -import { msg } from "../utils/i18n/platform.ts"; +import { msg, pt } from "../utils/i18n/platform.ts"; import { resolveComponentData } from "../utils/resolveComponentData.tsx"; import { createSearchAnalyticsConfig, createSearchHeadlessConfig, } from "../utils/searchHeadlessConfig.ts"; -import { BackgroundStyle } from "../utils/themeConfigOptions.ts"; +import { + BackgroundStyle, + backgroundColors, +} from "../utils/themeConfigOptions.ts"; import { StreamDocument } from "../utils/types/StreamDocument.ts"; +import { getLocatorSourcePageSetsEntityTypes } from "../utils/locator.ts"; import { getValueFromQueryString } from "../utils/urlQueryString.tsx"; import { Body } from "./atoms/body.tsx"; import { Heading } from "./atoms/heading.tsx"; @@ -89,6 +95,10 @@ const DEFAULT_RADIUS = 25; const HOURS_FIELD = "builtin.hours"; const INITIAL_LOCATION_KEY = "initialLocation"; const DEFAULT_TITLE = "Find a Location"; +const DEFAULT_LOCATION_STYLE = { + pinIcon: { type: "none" }, + pinColor: backgroundColors.background6.value, +}; const translateDistanceUnit = ( t: (key: string, options?: Record) => string, @@ -102,8 +112,62 @@ const translateDistanceUnit = ( return t("kilometer", { count, defaultValue: "kilometer" }); }; -const getEntityType = (entityTypeEnvVar?: string) => { - const entityDocument: StreamDocument = useDocument(); +const makiIconModules = import.meta.glob( + "../../node_modules/@mapbox/maki/icons/*.svg", + { + eager: true, + import: "default", + } +) as Record; + +const makiIconEntries = Object.entries(makiIconModules).map(([path, icon]) => { + const name = path.split("/").pop()?.replace(".svg", "") || path; + return [name, icon]; +}); + +const makiIconMap: Record = Object.fromEntries(makiIconEntries); + +const formatMakiIconLabel = (name: string) => + name.replace(/[-_]/g, " ").replace(/\b\w/g, (char) => char.toUpperCase()); + +const makiIconOptions = makiIconEntries.map(([name, icon]) => ({ + label: formatMakiIconLabel(name), + value: name, + icon, +})); + +const DEFAULT_MAKI_ICON_NAME = makiIconOptions[0]?.value; + +const getEntityTypeLabel = (entityType: string) => { + switch (entityType) { + case "restaurant": + return pt(msg("fields.options.restaurants", "Restaurants")); + case "healthcareFacility": + return pt( + msg("fields.options.healthcareFacilities", "Healthcare Facilities") + ); + case "healthcareProfessional": + return pt( + msg( + "fields.options.healthcareProfessionals", + "Healthcare Professionals" + ) + ); + case "hotel": + return pt(msg("fields.options.hotels", "Hotels")); + case "financialProfessional": + return pt( + msg("fields.options.financialProfessionals", "Financial Professionals") + ); + default: + return pt(msg("fields.options.locations", "Locations")); + } +}; + +const getEntityTypeFromDocument = ( + entityDocument: StreamDocument, + entityTypeEnvVar?: string +) => { if (!entityDocument._pageset && entityTypeEnvVar) { return entityDocument._env?.[entityTypeEnvVar] || DEFAULT_ENTITY_TYPE; } @@ -117,6 +181,107 @@ const getEntityType = (entityTypeEnvVar?: string) => { } }; +const getEntityType = (entityTypeEnvVar?: string) => { + const entityDocument: StreamDocument = useDocument(); + return getEntityTypeFromDocument(entityDocument, entityTypeEnvVar); +}; + +const getEntityTypesFromDocument = ( + entityDocument: StreamDocument, + entityTypeEnvVar?: string +): string[] => { + return ( + getLocatorSourcePageSetsEntityTypes(entityDocument) ?? [ + getEntityTypeFromDocument(entityDocument, entityTypeEnvVar), + ] + ); +}; + +const ResultCardPropsField = ({ + value, + onChange, +}: { + value?: LocatorResultCardProps; + onChange: (nextValue: LocatorResultCardProps) => void; +}) => { + const streamDocument = useDocument(); + const locatorSourcePageSetsEntityTypes = + getLocatorSourcePageSetsEntityTypes(streamDocument); + const hidePrimaryCta = locatorSourcePageSetsEntityTypes?.length === 0; + /** + * Builds the field schema for the result card editor, including: + * - Conditionally removing the primary CTA section when entity scope is not attached to a page set. + * - Toggling constant value vs. field selector visibility per section. + */ + const resultCardFields = React.useMemo(() => { + const baseFields = LocatorResultCardFields as { + objectFields?: Record; + }; + let nextFields: Record = LocatorResultCardFields as Record< + string, + any + >; + + if (baseFields.objectFields) { + let objectFields = baseFields.objectFields; + // Remove the primary CTA when entity scope is not attached to a page set. + if (hidePrimaryCta) { + objectFields = { ...objectFields }; + delete objectFields.primaryCTA; + nextFields = { + ...LocatorResultCardFields, + objectFields, + } as Record; + } + + const resolvedValue = value ?? DEFAULT_LOCATOR_RESULT_CARD_PROPS; + // For each section, show either the field selector or the constant value editor. + const constantValueFieldConfigs = [ + { + key: "primaryHeading", + enabled: resolvedValue.primaryHeading?.constantValueEnabled ?? false, + }, + { + key: "secondaryHeading", + enabled: + resolvedValue.secondaryHeading?.constantValueEnabled ?? false, + }, + { + key: "tertiaryHeading", + enabled: resolvedValue.tertiaryHeading?.constantValueEnabled ?? false, + }, + { + key: "image", + enabled: resolvedValue.image?.constantValueEnabled ?? false, + }, + ]; + + constantValueFieldConfigs.forEach(({ key, enabled }) => { + nextFields = setDeep( + nextFields, + `objectFields.${key}.objectFields.field.visible`, + !enabled + ); + nextFields = setDeep( + nextFields, + `objectFields.${key}.objectFields.constantValue.visible`, + enabled + ); + }); + } + + return nextFields as typeof LocatorResultCardFields; + }, [hidePrimaryCta, value]); + + return ( + + ); +}; + function getFacetFieldOptions(entityType: string): DynamicOption[] { let filterOptions: DynamicOption[] = []; switch (entityType) { @@ -445,6 +610,23 @@ export interface LocatorProps { */ mapStyle?: string; + /** + * Location styles per entity type. + * The number of entries is locked to the locator entity types for the page set. + */ + locationStyles: Array<{ + /** The entity type this style applies to. */ + entityType: string; + /** Whether to render an icon in the pin. */ + pinIcon?: { + type: "none" | "icon"; + /** Defaults to the first available Maki icon when type is 'icon'. */ + iconName?: string; + }; + /** The color applied to the pin. */ + pinColor?: BackgroundStyle; + }>; + /** * Configuration for the filters available in the locator search experience. */ @@ -485,10 +667,15 @@ export interface LocatorProps { color?: BackgroundStyle; }; /** - * Props to customize the locator result card component. - * Controls which fields are displayed and their styling. + * Result card properties per entity type. + * The number of entries is locked to the locator entity types for the page set. */ - resultCard: LocatorResultCardProps; + resultCard: Array<{ + /** The entity type this result card applies to. */ + entityType: string; + /** Props to customize the locator result card component. */ + props: LocatorResultCardProps; + }>; } const locatorFields: Fields = { @@ -521,6 +708,78 @@ const locatorFields: Fields = { }, ], }), + locationStyles: YextField( + msg("fields.pinStyles", "Location styles"), + { + type: "array", + getItemSummary: (item) => getEntityTypeLabel(item.entityType), + arrayFields: { + entityType: YextField(msg("fields.entityType", "Entity Type"), { + type: "text", + visible: false, + }), + pinIcon: { + type: "custom", + render: ({ value, onChange }) => { + const selectedType = value?.type ?? "none"; + return ( +
+ + ({ + options: [ + { + label: msg("fields.options.none", "None"), + value: "none", + }, + { + label: msg("fields.options.icon", "Icon"), + value: "icon", + }, + ], + disableSearch: true, + })} + value={selectedType} + onChange={(nextType) => + onChange({ + type: nextType, + iconName: + nextType === "icon" + ? (value?.iconName ?? DEFAULT_MAKI_ICON_NAME) + : value?.iconName, + }) + } + /> + + {selectedType === "icon" && ( + + ({ + options: makiIconOptions, + })} + value={value?.iconName} + onChange={(iconName) => + onChange({ type: "icon", iconName }) + } + /> + + )} +
+ ); + }, + }, + pinColor: YextField(msg("fields.pinColor", "Pin Color"), { + type: "select", + options: "BACKGROUND_COLOR", + }), + }, + defaultItemProps: { + entityType: DEFAULT_ENTITY_TYPE, + pinIcon: { type: "none" }, + pinColor: backgroundColors.background6.value, + }, + } + ), filters: { label: msg("fields.filters", "Filters"), type: "object", @@ -589,7 +848,29 @@ const locatorFields: Fields = { }), }, }), - resultCard: LocatorResultCardFields, + resultCard: YextField( + msg("fields.resultCard", "Result Card"), + { + type: "array", + getItemSummary: (item) => getEntityTypeLabel(item.entityType), + arrayFields: { + entityType: YextField(msg("fields.entityType", "Entity Type"), { + type: "text", + visible: false, + }), + props: { + type: "custom", + render: ({ value, onChange }) => ( + + ), + }, + }, + defaultItemProps: { + entityType: DEFAULT_ENTITY_TYPE, + props: DEFAULT_LOCATOR_RESULT_CARD_PROPS, + }, + } + ), }; /** @@ -597,7 +878,39 @@ const locatorFields: Fields = { */ export const LocatorComponent: ComponentConfig<{ props: LocatorProps }> = { fields: locatorFields, + /** + * Locks array lengths for `locationStyles` and `resultCard` to the current + * locator entity types so each entity type has exactly one entry. + */ + resolveFields: (_data, params) => { + const entityDocument = params.metadata?.streamDocument; + const entityTypes = entityDocument + ? getEntityTypesFromDocument( + entityDocument, + params.metadata?.entityTypeEnvVar + ) + : [DEFAULT_ENTITY_TYPE]; + const entityTypeCount = entityTypes.length; + + let updatedFields: Fields = { ...locatorFields }; + updatedFields = setDeep( + updatedFields, + "locationStyles.min", + entityTypeCount + ); + updatedFields = setDeep( + updatedFields, + "locationStyles.max", + entityTypeCount + ); + updatedFields = setDeep(updatedFields, "resultCard.min", entityTypeCount); + updatedFields = setDeep(updatedFields, "resultCard.max", entityTypeCount); + + return updatedFields; + }, defaultProps: { + locationStyles: [], + resultCard: [], filters: { openNowButton: false, showDistanceOptions: false, @@ -608,66 +921,92 @@ export const LocatorComponent: ComponentConfig<{ props: LocatorProps }> = { hasLocalizedValue: "true", }, }, - resultCard: DEFAULT_LOCATOR_RESULT_CARD_PROPS, }, label: msg("components.locator", "Locator"), - resolveFields: (data) => { - let updatedFields: Fields = { ...locatorFields }; - const setConstantVaueFieldVisibility = ( - fields: Fields, - fieldKey: - | "primaryHeading" - | "secondaryHeading" - | "tertiaryHeading" - | "image", - isConstantValueEnabled: boolean - ): Fields => { - let nextFields = fields; - nextFields = setDeep( - nextFields, - `resultCard.objectFields.${fieldKey}.objectFields.field.visible`, - !isConstantValueEnabled + /** + * Normalizes `props.locationStyles` and `props.resultCard` to align with the + * current locator entity types. If no styles or cards are set, defaults are + * generated; otherwise, existing values are preserved unless the set of entity + * types changes, in which case values are re-keyed by `entityType` and filled + * with defaults as needed. + */ + resolveData: (data, params) => { + const entityDocument = params.metadata?.streamDocument; + const entityTypes = entityDocument + ? getEntityTypesFromDocument( + entityDocument, + params.metadata?.entityTypeEnvVar + ) + : [DEFAULT_ENTITY_TYPE]; + const previousLocationStyles = data.props.locationStyles; + if (!previousLocationStyles || previousLocationStyles.length === 0) { + const newLocationStyles = entityTypes.map((entityType) => ({ + ...DEFAULT_LOCATION_STYLE, + entityType, + })); + data = setDeep(data, "props.locationStyles", newLocationStyles); + } + + const previousResultCards = data.props.resultCard as + | LocatorProps["resultCard"] + | LocatorResultCardProps; + const legacyResultCardProps = Array.isArray(previousResultCards) + ? undefined + : previousResultCards; + const previousResultCardsArray = Array.isArray(previousResultCards) + ? previousResultCards + : undefined; + + if (!previousResultCardsArray || previousResultCardsArray.length === 0) { + const newResultCards = entityTypes.map((entityType) => ({ + entityType, + props: legacyResultCardProps ?? DEFAULT_LOCATOR_RESULT_CARD_PROPS, + })); + data = setDeep(data, "props.resultCard", newResultCards); + } + + const previousEntityTypes = (previousLocationStyles ?? []).map( + (item) => item.entityType + ); + const hasNetChange = + previousEntityTypes.length > 0 && + (previousEntityTypes.length !== entityTypes.length || + !entityTypes.every((entityType) => + previousEntityTypes.includes(entityType) + )); + + if (hasNetChange) { + const locationStylesByEntityType = new globalThis.Map( + (previousLocationStyles ?? []).map((item) => [item.entityType, item]) ); - nextFields = setDeep( - nextFields, - `resultCard.objectFields.${fieldKey}.objectFields.constantValue.visible`, - isConstantValueEnabled + const resultCardsByEntityType = new globalThis.Map( + (previousResultCardsArray ?? []).map((item) => [item.entityType, item]) ); - return nextFields; - }; - const constantValueFieldConfigs = [ - { - key: "primaryHeading", - enabled: - data.props.resultCard?.primaryHeading?.constantValueEnabled ?? false, - }, - { - key: "secondaryHeading", - enabled: - data.props.resultCard?.secondaryHeading?.constantValueEnabled ?? - false, - }, - { - key: "tertiaryHeading", - enabled: - data.props.resultCard?.tertiaryHeading?.constantValueEnabled ?? false, - }, - { - key: "image", - enabled: data.props.resultCard?.image?.constantValueEnabled ?? false, - }, - ] as const; + const newLocationStyles = entityTypes.map((entityType) => { + const existing = locationStylesByEntityType.get(entityType); + return { + ...DEFAULT_LOCATION_STYLE, + ...existing, + entityType, + }; + }); + const newResultCards = entityTypes.map((entityType) => { + const existing = resultCardsByEntityType.get(entityType); + return { + entityType, + props: + existing?.props ?? + legacyResultCardProps ?? + DEFAULT_LOCATOR_RESULT_CARD_PROPS, + }; + }); - constantValueFieldConfigs.forEach(({ key, enabled }) => { - updatedFields = setConstantVaueFieldVisibility( - updatedFields, - key, - enabled - ); - }); + data = setDeep(data, "props.locationStyles", newLocationStyles); + data = setDeep(data, "props.resultCard", newResultCards); + } - return updatedFields; + return data; }, render: (props) => , }; @@ -712,9 +1051,10 @@ type SearchState = "not started" | "loading" | "complete"; const LocatorInternal = ({ mapStyle, + locationStyles, filters: { openNowButton, showDistanceOptions, facetFields }, mapStartingLocation, - resultCard: resultCardProps, + resultCard: resultCardConfigs, puck, pageHeading, }: WithPuckProps) => { @@ -737,6 +1077,10 @@ const LocatorInternal = ({ const preferredUnit = getPreferredDistanceUnit(i18n.language); const entityType = getEntityType(puck.metadata?.entityTypeEnvVar); const streamDocument = useDocument(); + const entityTypes = getEntityTypesFromDocument( + streamDocument, + puck.metadata?.entityTypeEnvVar + ); const resultCount = useSearchState( (state) => state.vertical.resultsCount || 0 ); @@ -909,6 +1253,10 @@ const LocatorInternal = ({ const resultsRef = React.useRef>([]); const resultsContainer = React.useRef(null); + // Tracks the selected pin index to highlight the corresponding result card. + const [selectedResultIndex, setSelectedResultIndex] = React.useState< + number | null + >(null); const setResultsRef = React.useCallback((index: number) => { if (!resultsRef?.current) return null; @@ -918,6 +1266,9 @@ const LocatorInternal = ({ const scrollToResult = React.useCallback( (result: Result | undefined) => { if (result) { + if (typeof result.index === "number") { + setSelectedResultIndex(result.index); + } let scrollPos = 0; // the search results that are listed above this result const previousResultsRef = resultsRef.current.filter( @@ -935,6 +1286,8 @@ const LocatorInternal = ({ top: scrollPos, behavior: "smooth", }); + } else { + setSelectedResultIndex(null); } }, [resultsContainer] @@ -946,18 +1299,80 @@ const LocatorInternal = ({ } as MarkerOptions; }, []); + const resultCardConfigsArray = React.useMemo(() => { + if (Array.isArray(resultCardConfigs)) { + return resultCardConfigs; + } + if (resultCardConfigs) { + return [ + { + entityType: entityTypes[0] ?? DEFAULT_ENTITY_TYPE, + props: resultCardConfigs, + }, + ]; + } + return []; + }, [entityTypes, resultCardConfigs]); + + const resultCardPropsByEntityType = React.useMemo(() => { + return resultCardConfigsArray.reduce< + Record + >((acc, item) => { + acc[item.entityType] = item.props; + return acc; + }, {}); + }, [resultCardConfigsArray]); + + const getResultCardProps = React.useCallback( + (entityType?: string) => { + if (entityType && resultCardPropsByEntityType[entityType]) { + return resultCardPropsByEntityType[entityType]; + } + if (resultCardPropsByEntityType[DEFAULT_ENTITY_TYPE]) { + return resultCardPropsByEntityType[DEFAULT_ENTITY_TYPE]; + } + return DEFAULT_LOCATOR_RESULT_CARD_PROPS; + }, + [resultCardPropsByEntityType] + ); + const CardComponent = React.useCallback( (result: CardProps) => ( - + ), - [resultCardProps] + [getResultCardProps, selectedResultIndex] ); const [userLocationRetrieved, setUserLocationRetrieved] = React.useState(false); + + const locationStylesConfig = React.useMemo(() => { + const config: Record = + {}; + (locationStyles ?? []).forEach((locationStyle) => { + const entityType = locationStyle.entityType; + if (!entityType) return; + const iconValue = + locationStyle.pinIcon?.type === "icon" + ? locationStyle.pinIcon.iconName + : undefined; + config[entityType] = { + color: locationStyle.pinColor, + icon: + typeof iconValue === "string" ? makiIconMap[iconValue] : undefined, + }; + }); + return config; + }, [locationStyles]); + const [centerCoords, setCenterCoords] = React.useState< [number, number] | undefined >(); + const mapProps = React.useMemo( () => ({ mapStyle, @@ -965,8 +1380,16 @@ const LocatorInternal = ({ onDragHandler: handleDrag, scrollToResult: scrollToResult, markerOptionsOverride: markerOptionsOverride, + locationStyleConfig: locationStylesConfig, }), - [centerCoords, handleDrag, mapStyle, markerOptionsOverride, scrollToResult] + [ + centerCoords, + handleDrag, + mapStyle, + markerOptionsOverride, + scrollToResult, + locationStylesConfig, + ] ); React.useEffect(() => { @@ -1462,6 +1885,10 @@ interface MapProps { onDragHandler?: OnDragHandler; scrollToResult?: (result: Result | undefined) => void; markerOptionsOverride?: (selected: boolean) => MarkerOptions; + locationStyleConfig?: Record< + string, + { color?: BackgroundStyle; icon?: string } + >; } const Map: React.FC = ({ @@ -1470,6 +1897,7 @@ const Map: React.FC = ({ onDragHandler, scrollToResult, markerOptionsOverride, + locationStyleConfig, }) => { const { t } = useTranslation(); const entityDocument: StreamDocument = useDocument(); @@ -1527,7 +1955,12 @@ const Map: React.FC = ({ mapboxAccessToken={mapboxApiKey || ""} mapboxOptions={mapboxOptions} onDrag={onDragHandler} - PinComponent={LocatorMapPin} + PinComponent={(pinProps) => ( + + )} iframeWindow={iframe?.contentWindow ?? undefined} allowUpdates={!!iframe?.contentDocument} onPinClick={scrollToResult} @@ -1536,31 +1969,26 @@ const Map: React.FC = ({ ); }; -const LocatorMapPin: PinComponent> = (props) => { - const { result, selected } = props; +type LocatorMapPinProps = PinComponentProps & { + locationStyleConfig?: Record< + string, + { color?: BackgroundStyle; icon?: string } + >; +}; - const { width, height, color } = React.useMemo(() => { - return selected - ? { - // zoomed in pin stylings - height: "61.5px", - width: "40.5px", - color: "text-palette-secondary-dark", - } - : { - // default pin stylings - height: "41px", - width: "27px", - color: "text-palette-primary-dark", - }; - }, [selected]); +const LocatorMapPin = (props: LocatorMapPinProps) => { + const { result, selected, locationStyleConfig } = props; + const entityType = result.entityType; + const entityLocationStyle = entityType + ? locationStyleConfig?.[entityType] + : undefined; return ( ); }; diff --git a/packages/visual-editor/src/components/LocatorResultCard.tsx b/packages/visual-editor/src/components/LocatorResultCard.tsx index 3f49e6848..b05bc96a6 100644 --- a/packages/visual-editor/src/components/LocatorResultCard.tsx +++ b/packages/visual-editor/src/components/LocatorResultCard.tsx @@ -64,6 +64,7 @@ import { fromMeters, getPreferredDistanceUnit, } from "../utils/i18n/distance.ts"; +import { getLocatorSourcePageSetsEntityTypes } from "../utils/locator.ts"; export interface LocatorResultCardProps { /** Settings for the main heading of the card */ @@ -725,9 +726,11 @@ export const LocatorResultCard = React.memo( ({ result, resultCardProps: props, + isSelected, }: { result: CardProps["result"]; resultCardProps: LocatorResultCardProps; + isSelected?: boolean; }): React.JSX.Element => { const { document: streamDocument, relativePrefixToRoot } = useTemplateProps(); @@ -786,10 +789,16 @@ export const LocatorResultCard = React.memo( return listingsLink || coordinateLink; })(); + // Hide primary CTA section when entity scope is not attached to a page set + const locatorSourcePageSetsEntityTypes = + getLocatorSourcePageSetsEntityTypes(streamDocument); + const hidePrimaryCta = locatorSourcePageSetsEntityTypes?.length === 0; + return ( )}
- {props.primaryCTA.liveVisibility && ( + {props.primaryCTA.liveVisibility && !hidePrimaryCta && ( { + return window.getComputedStyle(element).getPropertyValue(varName).trim(); +}; + +const resolvePinFillColor = ( + backgroundToken: string +): React.CSSProperties | undefined => { + if (backgroundToken === "white" || backgroundToken === "black") { + return { color: backgroundToken }; + } + + if (backgroundToken.endsWith("-light")) { + const baseToken = backgroundToken.replace(/-light$/, ""); + return { color: `hsl(from var(--colors-${baseToken}) h s 98)` }; + } + + if (backgroundToken.endsWith("-dark")) { + const baseToken = backgroundToken.replace(/-dark$/, ""); + return { color: `hsl(from var(--colors-${baseToken}) h s 20)` }; + } + + return { color: `var(--colors-${backgroundToken})` }; +}; + +const resolveContrastColor = ( + element: Element, + textToken: string +): string | undefined => { + if (textToken === "black") { + return "#000000"; + } + + if (textToken === "white") { + return "#FFFFFF"; + } + + if (textToken) { + return resolveCssVarColor(element, `--colors-${textToken}`); + } + + return undefined; +}; + +// Renders a Mapbox-style pin with theme-aware fill and contrast-aware icon/number in the center. export const MapPinIcon = ({ - width, - height, color, resultIndex, + icon, + selected, }: { - width: string; - height: string; - color: string; + color?: BackgroundStyle; resultIndex?: number; + icon?: string; + selected?: boolean; }) => { + const pinHeight = 41; + const pinWidth = 27; + const pinScale = 1.5; + + const centerX = 13.5; + const centerY = 13.5; + const iconSize = 14; + + // Theme tokens derived from tailwind class names (e.g., bg-palette-primary-light -> palette-primary-light) + const backgroundToken = normalizeThemeColor(color?.bgColor); + const textToken = normalizeThemeColor(color?.textColor); + const svgRef = React.useRef(null); + const [contrastColor, setContrastColor] = React.useState( + undefined + ); + + React.useLayoutEffect(() => { + // Resolve icon/text contrast color using the theme's text token + if (svgRef.current && textToken) { + setContrastColor(resolveContrastColor(svgRef.current, textToken)); + } + }, [textToken]); + + // SVG children use currentColor for the pin fill; apply contrast for text/icon. + const svgStyle = React.useMemo( + () => (backgroundToken ? resolvePinFillColor(backgroundToken) : undefined), + [backgroundToken] + ); + return ( @@ -39,17 +120,28 @@ export const MapPinIcon = ({ opacity="0.25" d="M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z" > - {resultIndex && ( - - {resultIndex} - + {icon ? ( + + ) : ( + !!resultIndex && ( + + {resultIndex} + + ) )} ); diff --git a/packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 24 with filters (after interactions).png b/packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 24 with filters (after interactions).png index 24c2f8b9f..d7d399e29 100644 Binary files a/packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 24 with filters (after interactions).png and b/packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 24 with filters (after interactions).png differ diff --git a/packages/visual-editor/src/docs/components.md b/packages/visual-editor/src/docs/components.md index a953f742e..b249c3199 100644 --- a/packages/visual-editor/src/docs/components.md +++ b/packages/visual-editor/src/docs/components.md @@ -543,24 +543,14 @@ Available on Locator templates. Configuration for the filters available in the locator search experience. -| Prop | Type | Description | Default | -| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :------------------------------------- | -| `filters` | `{ openNowButton: boolean; showDistanceOptions: boolean; facetFields?: DynamicOptionsSelectorType; }` | Configuration for the filters available in the locator search experience. | | -| `mapStartingLocation` | `{ latitude: string; longitude: string; }` | The starting location for the map. | | -| `mapStyle` | `string` | The visual theme for the map tiles, chosen from a predefined list of Mapbox styles. | `'mapbox://styles/mapbox/streets-v12'` | -| `pageHeading` | `{ title: TranslatableString; color?: BackgroundStyle; }` | Configuration for the locator page heading. Allows customizing the title text and its color. | | -| `resultCard.address` | `{ showGetDirectionsLink: boolean; liveVisibility: boolean; }` | Settings for the address block | | -| `resultCard.email` | `{ field: DynamicOptionsSingleSelectorType; liveVisibility: boolean; }` | Settings for the email block | | -| `resultCard.hours` | `{ field: DynamicOptionsSingleSelectorType; table: Omit; liveVisibility: boolean; }` | Settings for the hours block | | -| `resultCard.icons` | `boolean` | Whether to show icons for certain fields | | -| `resultCard.image` | `{ field: DynamicOptionsSingleSelectorType; constantValue?: TranslatableAssetImage; constantValueEnabled?: boolean; liveVisibility: boolean; }` | Settings for the image | | -| `resultCard.phone` | `{ field: DynamicOptionsSingleSelectorType; phoneFormat: "domestic" \| "international"; includePhoneHyperlink: boolean; liveVisibility: boolean; }` | Settings for the phone block | | -| `resultCard.primaryCTA` | `{ label: TranslatableString; variant: CTAVariant; liveVisibility: boolean; }` | Settings for the primary CTA | | -| `resultCard.primaryHeading` | `{ field: DynamicOptionsSingleSelectorType; constantValue?: TranslatableString; constantValueEnabled?: boolean; headingLevel: HeadingLevel; color?: BackgroundStyle; }` | Settings for the main heading of the card | | -| `resultCard.secondaryCTA` | `{ label: TranslatableString; link: TranslatableString; variant: CTAVariant; liveVisibility: boolean; }` | Settings for the secondary CTA | | -| `resultCard.secondaryHeading` | `{ field: DynamicOptionsSingleSelectorType; constantValue?: TranslatableString; constantValueEnabled?: boolean; variant: BodyProps["variant"]; liveVisibility: boolean; }` | Settings for the secondary heading of the card | | -| `resultCard.services` | `{ field: DynamicOptionsSingleSelectorType; liveVisibility: boolean; }` | Settings for the services block | | -| `resultCard.tertiaryHeading` | `{ field: DynamicOptionsSingleSelectorType; constantValue?: TranslatableString; constantValueEnabled?: boolean; variant: BodyProps["variant"]; liveVisibility: boolean; }` | Settings for the tertiary heading of the card | | +| Prop | Type | Description | Default | +| :-------------------- | :--------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | :------------------------------------- | +| `filters` | `{ openNowButton: boolean; showDistanceOptions: boolean; facetFields?: DynamicOptionsSelectorType; }` | Configuration for the filters available in the locator search experience. | | +| `locationStyles` | `Array<{ entityType: string; pinIcon?: { type: "none" \| "icon"; iconName?: string; }; pinColor?: BackgroundStyle; }>` | Location styles per entity type. The number of entries is locked to the locator entity types for the page set. | | +| `mapStartingLocation` | `{ latitude: string; longitude: string; }` | The starting location for the map. | | +| `mapStyle` | `string` | The visual theme for the map tiles, chosen from a predefined list of Mapbox styles. | `'mapbox://styles/mapbox/streets-v12'` | +| `pageHeading` | `{ title: TranslatableString; color?: BackgroundStyle; }` | Configuration for the locator page heading. Allows customizing the title text and its color. | | +| `resultCard` | `Array<{ entityType: string; props: LocatorResultCardProps; }>` | Result card properties per entity type. The number of entries is locked to the locator entity types for the page set. | | --- diff --git a/packages/visual-editor/src/internal/puck/ui/Combobox.tsx b/packages/visual-editor/src/internal/puck/ui/Combobox.tsx index 1401252ec..46b3dd265 100644 --- a/packages/visual-editor/src/internal/puck/ui/Combobox.tsx +++ b/packages/visual-editor/src/internal/puck/ui/Combobox.tsx @@ -39,6 +39,14 @@ export const Combobox = ({ > {selectedOption ? (
+ {selectedOption.icon && ( + + )}
+ {option.icon && ( + + )}
{option.label} {colorHexValue && ( diff --git a/packages/visual-editor/src/internal/types/combobox.ts b/packages/visual-editor/src/internal/types/combobox.ts index 7cb7361ce..8fe943ca3 100644 --- a/packages/visual-editor/src/internal/types/combobox.ts +++ b/packages/visual-editor/src/internal/types/combobox.ts @@ -2,6 +2,7 @@ export type ComboboxOption = { label: string; value: any; color?: string; // ex. "bg-palette-primary-light" + icon?: string; }; export type ComboboxOptionGroup = { diff --git a/packages/visual-editor/src/utils/locator.ts b/packages/visual-editor/src/utils/locator.ts new file mode 100644 index 000000000..ba3933a09 --- /dev/null +++ b/packages/visual-editor/src/utils/locator.ts @@ -0,0 +1,22 @@ +import { StreamDocument } from "./types/StreamDocument.ts"; + +export const getLocatorSourcePageSetsEntityTypes = ( + entityDocument: StreamDocument +): string[] | undefined => { + const locatorSourcePageSets = entityDocument.__?.locatorSourcePageSets; + if (locatorSourcePageSets) { + try { + const pageSetMap = JSON.parse(locatorSourcePageSets) as Record< + string, + { entityType?: string } + >; + const entityTypes = Object.values(pageSetMap) + .map((entry) => entry.entityType) + .filter((entityType): entityType is string => !!entityType); + return Array.from(new Set(entityTypes)); + } catch { + console.error("Failed to parse locatorSourcePageSets for entity types."); + } + } + return undefined; +}; diff --git a/packages/visual-editor/src/utils/types/StreamDocument.ts b/packages/visual-editor/src/utils/types/StreamDocument.ts index c95007b1f..7ef5aa826 100644 --- a/packages/visual-editor/src/utils/types/StreamDocument.ts +++ b/packages/visual-editor/src/utils/types/StreamDocument.ts @@ -17,6 +17,7 @@ export type StreamDocument = { visualEditorConfig?: string; isPrimaryLocale?: boolean; // deprecated, use pathInfo.primaryLocale instead entityPageSetUrlTemplates?: string; + locatorSourcePageSets?: string; }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b19e952b..ed4baa0ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -79,6 +79,9 @@ importers: packages/visual-editor: dependencies: + "@mapbox/maki": + specifier: ^8.0.0 + version: 8.2.0 "@microsoft/api-documenter": specifier: ^7.26.29 version: 7.26.32(@types/node@20.19.11) @@ -2104,6 +2107,12 @@ packages: } engines: { node: ">= 0.6" } + "@mapbox/maki@8.2.0": + resolution: + { + integrity: sha512-sTd/fEBfkBSidVwwtbijHZYJC7NhqvgLrXzSRHgxbLi52x4IciyTVUufqvJr8oIChw7hT7MIBHu5fyqrrpfFdA==, + } + "@mapbox/mapbox-gl-supported@2.0.1": resolution: { @@ -12508,6 +12517,8 @@ snapshots: "@mapbox/jsonlint-lines-primitives@2.0.2": {} + "@mapbox/maki@8.2.0": {} + "@mapbox/mapbox-gl-supported@2.0.1": {} "@mapbox/point-geometry@0.1.0": {}