chore: merge main into 2026-custom-components-templates branch - #1285
chore: merge main into 2026-custom-components-templates branch#1285jwartofsky-yext wants to merge 18 commits into
Conversation
The puck upgrade changed this spacing variable <img width="1840" height="1104" alt="Screenshot 2026-07-23 at 10 22 21 AM" src="https://github.com/user-attachments/assets/181877a8-4e1f-4392-a2df-311a0c1f8e91" /> --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1. Show base entity numeric fields in the embedded field picker (these already resolved properly but did not appear in the dropdown) 2. Resolve linked entity numeric fields and show them in the embedded field picker 3. Add some test linked entity data https://github.com/user-attachments/assets/332d7389-5ab2-4fab-91d2-6255bcedec7b Will put up a corresponding YSS PR for the RTF drawer
This avoids the following vulnerability: https://nvd.nist.gov/vuln/detail/CVE-2026-59869
This adds a new "Both Distances" option to the Distance Display field in the OOTB locator. When this option is selected, the distance from the card's location to the searched location is shown first, followed by the distance from the card's location to the user, both with labels as shown in the screenshots below. The other Distance Display options are unaffected. This also fixes two minor styling bugs: 1. The card index next to the card title is now vertically aligned with the card title. 2. The extra horizontal space on the page when in mobile view is now removed. Desktop: <img width="617" height="372" alt="Screenshot 2026-08-03 at 1 24 54 PM" src="https://github.com/user-attachments/assets/2dfc2185-c8d1-4564-8dd3-1f769ef5069a" /> Mobile: <img width="338" height="416" alt="Screenshot 2026-08-03 at 1 25 06 PM" src="https://github.com/user-attachments/assets/b6258e3e-7b32-4d78-87d0-1948f9883bde" /> --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Add a prop for component images to size the image to either "fill" or "fit". https://github.com/user-attachments/assets/48f84ec7-d85d-4547-b81c-a2e501836eaf
Adds a field to the directory grid to override links. When set to yes, an entity field selector is displayed. If a value is present for the selected entity field/constant value, then it will be used for the link. If there is no value, we will fallback to the standard url. Also adds a Normalize Link option when overriding. This will be used to link certain locations in a directory to external pages. The directory config will be updated to include entities beyond the Yext Pages scope, and then those entities will have a field populated with their external url. This PR also adds a field for testing, and wires a few props through the EntityFieldSelector that were inconsistently available. https://github.com/user-attachments/assets/42d351e1-6496-4e32-9b07-757bf86fa0a9 --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…1282) Add image styling props (fit or fill) for the images that can be used in the expanded header or footer. https://github.com/user-attachments/assets/1e5a1c6b-c546-4dc4-8389-3f177f9de522 --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This reverts commit da53dd1.
In the Directory component, Heading Text Color and some other fields were being dropped. These fields were: Directory Card > Heading Text > color Directory Card > Address > color Directory Card > Phone > color Directory Card > Hours Status > timeFormat Directory Card > Hours Status > bodyVariant These fields below were explicitly preserved, and the fields above have been updated to the working pattern. Already preserved: Heading: level, align Address: showRegion, showCountry, showGetDirectionsLink, ctaVariant Phone phoneFormat, includePhoneHyperlink, includeIcon Hours: dayOfWeekFormat, showDayNames, showCurrentStatus, className You can see the issue here: https://www.yext.com/s/1911914/yextsites/168074/branches/142516/editor#pageSetId=location-pages-directory-city&locale=en&themeId=nordstrom-new-pages&entityId=2079182808 If you change the color prop and refresh the page, the prop were revert back. If you change a preserved prop like alignment, it will be preserved properly. Tested with local starter and verified that this fix preserves the fields. --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
auto-screenshot-update: true
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
💤 Files with no reviewable changes (1)
WalkthroughThis release adds configurable image fill modes, directory-card link overrides and detail visibility, and locator cards that display search and user distances. It adds migrations that preserve existing values while applying defaults. It extends field-selector controls, localization strings, starter data, package metadata, changelog entries, and third-party notices. It also pins Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 11
🧹 Nitpick comments (1)
packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx (1)
670-698: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low valueAdd a control case to the
hideRequirementsTooltiptest.This test only proves the button is absent when
hideRequirementsTooltip: true. Add a companion assertion that leaveshideRequirementsTooltipunset for the sameitemSourceTypesfilter and expects the "Parent field requirements" button to render.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx` around lines 670 - 698, The test for hideRequirementsTooltip only covers the hidden state. Add a companion control case using the same itemSourceTypes filter with hideRequirementsTooltip omitted, and assert that the “Parent field requirements” button is rendered while preserving the existing hidden-state assertion.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/visual-editor/CHANGELOG.md`:
- Around line 11-12: Clean up the duplicate v1.4.4 entries in the changelog:
remove the malformed unmatched-quote entry and retain one correctly formatted
v1.4.4 release note using the intended release text.
- Around line 1-3: Resolve the merge-conflict artifacts in the changelog by
removing the conflict markers around the 1.4.4 content and at the corresponding
location near line 26. Preserve the intended changelog entries, then rerun
Markdownlint to confirm the heading warning is cleared.
In `@packages/visual-editor/locales/components/fr/visual-editor.json`:
- Line 32: Update the distanceLineFromYou translation to use French wording that
clearly expresses physical distance from the user’s location, replacing “de
votre part” with an approved spatial phrasing and confirming the wording with a
French reviewer.
In `@packages/visual-editor/locales/components/hu/visual-editor.json`:
- Around line 31-32: Update the Hungarian locale entries
distanceLineFromSearchLocation and distanceLineFromYou to use Hungarian wording
instead of Croatian “od”. Preserve the {{distance}} and {{searchLocation}}
placeholders and ensure distanceLineFromYou explicitly conveys “from you”.
In `@packages/visual-editor/locales/platform/fr/visual-editor.json`:
- Line 157: Update the French translation value for distanceLineFromYou to use a
native phrase meaning “from you,” replacing “de votre part” with “de vous” while
preserving the distance placeholder and formatting.
In `@packages/visual-editor/locales/platform/hu/visual-editor.json`:
- Around line 155-157: Update the locale entries distanceLineFromSearchLocation
and distanceLineFromYou with native Hungarian translations: replace the
incorrect “od” wording, preserve the {{searchLocation}} placeholder, and
explicitly express that distanceLineFromYou is measured from the user.
In `@packages/visual-editor/locales/platform/ro/visual-editor.json`:
- Line 313: Update the bothDistances translation in visual-editor.json to use
the correct Romanian diacritic, changing “Ambele distante” to “Ambele distanțe”.
In `@packages/visual-editor/locales/platform/tr/visual-editor.json`:
- Line 156: Update the distanceLineFromSearchLocation translation to remove the
fixed "'den" suffix and use wording with a fixed noun or otherwise locale-aware
inflection, so locations such as Ankara render with correct Turkish grammar.
In `@packages/visual-editor/locales/platform/zh-TW/visual-editor.json`:
- Line 157: Update the distanceLineFromYou translation to use natural
Traditional Chinese wording meaning “distance from you,” such as “距離您
<strong>{{distance}}</strong>,” while preserving the existing distance
placeholder and markup.
In `@packages/visual-editor/src/components/footer/FooterLogoSlot.tsx`:
- Line 71: Update the Image usage at FooterLogoSlot.tsx:71 and
FooterUtilityImagesSlot.tsx:106 so imageFillType="fill" is not overridden by the
fixed object-contain class; remove that class or apply the fill object-fit
behavior through inline style precedence in both sites.
In
`@packages/visual-editor/src/components/pageSections/PhotoGallerySection/PhotoGalleryWrapper.tsx`:
- Around line 64-70: Preserve legacy gallery fill behavior by adding a new
append-only migration after migration 0081 that copies
styles.image.imageFillType to styles.imageFillType before the carousel applies
its "fill" default. Register the migration in the migration sequence, and add a
test covering a legacy gallery whose nested image setting is "fit"; do not
modify existing migrations.
---
Nitpick comments:
In `@packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx`:
- Around line 670-698: The test for hideRequirementsTooltip only covers the
hidden state. Add a companion control case using the same itemSourceTypes filter
with hideRequirementsTooltip omitted, and assert that the “Parent field
requirements” button is rendered while preserving the existing hidden-state
assertion.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: e7a59a62-1285-45ee-b175-8f1f92520ac7
⛔ Files ignored due to path filters (28)
packages/visual-editor/src/components/testing/screenshots/EventSection/[tablet] version 26 props with entity values.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] latest version default props.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] latest version multi-pageset default props.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] latest version non-default props.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 24 with filters (after interactions).pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 24 with filters.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 60 custom heading with site color 2.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 60 custom heading.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 60 custom title and result cards with site color 3.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 64 static headings (after interactions).pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 64 static headings.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 64 static image.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 74 comingSoon.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[mobile] latest version non-default props.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] latest version default props.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] latest version multi-pageset default props.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] latest version non-default props.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 24 with filters (after interactions).pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 24 with filters.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 60 custom heading with site color 2.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 60 custom heading.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 60 custom title and result cards with site color 3.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 64 static headings (after interactions).pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 64 static headings.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 64 static image.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 74 comingSoon.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**packages/visual-editor/src/components/testing/screenshots/PromoSection/[mobile] [classic] version 50 with constant values and video.pngis excluded by!**/*.png,!packages/visual-editor/src/components/testing/screenshots/**pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (81)
package.jsonpackages/visual-editor/CHANGELOG.mdpackages/visual-editor/locales/components/cs/visual-editor.jsonpackages/visual-editor/locales/components/da/visual-editor.jsonpackages/visual-editor/locales/components/de/visual-editor.jsonpackages/visual-editor/locales/components/en-GB/visual-editor.jsonpackages/visual-editor/locales/components/en/visual-editor.jsonpackages/visual-editor/locales/components/es/visual-editor.jsonpackages/visual-editor/locales/components/et/visual-editor.jsonpackages/visual-editor/locales/components/fi/visual-editor.jsonpackages/visual-editor/locales/components/fr/visual-editor.jsonpackages/visual-editor/locales/components/hr/visual-editor.jsonpackages/visual-editor/locales/components/hu/visual-editor.jsonpackages/visual-editor/locales/components/it/visual-editor.jsonpackages/visual-editor/locales/components/ja/visual-editor.jsonpackages/visual-editor/locales/components/lt/visual-editor.jsonpackages/visual-editor/locales/components/lv/visual-editor.jsonpackages/visual-editor/locales/components/nb/visual-editor.jsonpackages/visual-editor/locales/components/nl/visual-editor.jsonpackages/visual-editor/locales/components/pl/visual-editor.jsonpackages/visual-editor/locales/components/pt/visual-editor.jsonpackages/visual-editor/locales/components/ro/visual-editor.jsonpackages/visual-editor/locales/components/sk/visual-editor.jsonpackages/visual-editor/locales/components/sv/visual-editor.jsonpackages/visual-editor/locales/components/tr/visual-editor.jsonpackages/visual-editor/locales/components/zh-TW/visual-editor.jsonpackages/visual-editor/locales/components/zh/visual-editor.jsonpackages/visual-editor/locales/platform/cs/visual-editor.jsonpackages/visual-editor/locales/platform/da/visual-editor.jsonpackages/visual-editor/locales/platform/de/visual-editor.jsonpackages/visual-editor/locales/platform/en-GB/visual-editor.jsonpackages/visual-editor/locales/platform/en/visual-editor.jsonpackages/visual-editor/locales/platform/es/visual-editor.jsonpackages/visual-editor/locales/platform/et/visual-editor.jsonpackages/visual-editor/locales/platform/fi/visual-editor.jsonpackages/visual-editor/locales/platform/fr/visual-editor.jsonpackages/visual-editor/locales/platform/hr/visual-editor.jsonpackages/visual-editor/locales/platform/hu/visual-editor.jsonpackages/visual-editor/locales/platform/it/visual-editor.jsonpackages/visual-editor/locales/platform/ja/visual-editor.jsonpackages/visual-editor/locales/platform/lt/visual-editor.jsonpackages/visual-editor/locales/platform/lv/visual-editor.jsonpackages/visual-editor/locales/platform/nb/visual-editor.jsonpackages/visual-editor/locales/platform/nl/visual-editor.jsonpackages/visual-editor/locales/platform/pl/visual-editor.jsonpackages/visual-editor/locales/platform/pt/visual-editor.jsonpackages/visual-editor/locales/platform/ro/visual-editor.jsonpackages/visual-editor/locales/platform/sk/visual-editor.jsonpackages/visual-editor/locales/platform/sv/visual-editor.jsonpackages/visual-editor/locales/platform/tr/visual-editor.jsonpackages/visual-editor/locales/platform/zh-TW/visual-editor.jsonpackages/visual-editor/locales/platform/zh/visual-editor.jsonpackages/visual-editor/package.jsonpackages/visual-editor/src/components/atoms/image.tsxpackages/visual-editor/src/components/contentBlocks/image/HeroImage.tsxpackages/visual-editor/src/components/contentBlocks/image/Image.tsxpackages/visual-editor/src/components/contentBlocks/image/styling.tspackages/visual-editor/src/components/directory/DirectoryCard.tsxpackages/visual-editor/src/components/directory/DirectoryWrapper.tsxpackages/visual-editor/src/components/directory/directoryChildReference.test.tsxpackages/visual-editor/src/components/footer/ExpandedFooter.tsxpackages/visual-editor/src/components/footer/FooterLogoSlot.tsxpackages/visual-editor/src/components/footer/FooterUtilityImagesSlot.tsxpackages/visual-editor/src/components/locator/Locator.test.tsxpackages/visual-editor/src/components/locator/Locator.tsxpackages/visual-editor/src/components/locator/LocatorResultCard.tsxpackages/visual-editor/src/components/locator/LocatorWrapper.tsxpackages/visual-editor/src/components/migrations/0079_image_fill_type.tspackages/visual-editor/src/components/migrations/0080_directory_card_display_props.tspackages/visual-editor/src/components/migrations/0081_header_footer_image_fill_type.tspackages/visual-editor/src/components/migrations/migrationRegistry.tspackages/visual-editor/src/components/pageSections/PhotoGallerySection/PhotoGalleryWrapper.tsxpackages/visual-editor/src/docs/components.mdpackages/visual-editor/src/editor/YextEntityFieldSelector.tsxpackages/visual-editor/src/fields/EntityFieldSelectorField.test.tsxpackages/visual-editor/src/fields/EntityFieldSelectorField.tsxpackages/visual-editor/src/types/images.tspackages/visual-editor/src/utils/migrate.test.tsstarter/localData/dev-dm-city-stream__en__8932945.jsonstarter/localData/dev-location-stream__en__cbafb9cd1c3e63d9814e236ba9181377.jsonstarter/src/dev.config.ts
| "distance": "Distance", | ||
| "distanceLineFromSearch": "<strong>{{distance}}</strong> à partir de la recherche", | ||
| "distanceLineFromSearchLocation": "<strong>{{distance}}</strong> de {{searchLocation}}", | ||
| "distanceLineFromYou": "<strong>{{distance}}</strong> de votre part", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Locate French visual-editor locale files:"
fd 'visual-editor\.json$' packages/visual-editor/locales/components -t f | sort
echo
echo "Relevant key occurrences:"
rg -n '"distanceLineFromYou"|"distanceLineFromYou"' packages/visual-editor/locales/components -g 'visual-editor.json' || true
echo
echo "Line 32 context in French visual-editor locale:"
cat -n packages/visual-editor/locales/components/fr/visual-editor.json | sed -n '26,36p'Repository: yext/visual-editor
Length of output: 5816
🌐 Web query:
French "distance de partir de" vs "distance à partir de" "distance de vous" "distance de moi"
💡 Result:
En français, le choix entre ces tournures dépend de la structure grammaticale et du sens que vous souhaitez exprimer. Distance à partir de La locution prépositive "à partir de" est utilisée pour marquer un point de départ, qu'il soit spatial ou temporel [1][2]. - Exemple: "Calculez la distance à partir de votre position actuelle." - Usage: C'est la forme correcte et recommandée pour introduire le point de référence (le lieu ou le moment d'où l'on mesure ou commence quelque chose) [1][2]. Distance de La préposition "de" peut être utilisée seule après le mot "distance" dans certains contextes spécifiques, notamment pour exprimer une séparation ou une mesure [2][3]. - Exemple: "Il se trouve à une distance de dix kilomètres de chez vous." - Usage: Ici, "de" introduit la mesure ou l'objet dont on est distant. On utilise "distance de + [lieu/objet]" [3]. Synthèse sur les expressions que vous avez citées: 1. Distance à partir de: Correct pour indiquer le point d'origine d'une mesure ou d'un calcul (ex: "distance à partir de [point de départ]"). 2. Distance de: Correct pour exprimer la valeur de l'écart (ex: "une distance de 5 km") ou la séparation par rapport à un lieu (ex: "à une distance de 10 mètres de moi"). 3. Distance de partir de: Cette forme est incorrecte car elle juxtapose deux prépositions de manière inappropriée. Il faut dire "distance à partir de". 4. Distance de vous / Distance de moi: Ces formes sont correctes lorsqu'elles expriment une séparation par rapport à une personne (ex: "il est resté à une distance de moi"). Elles sont couramment utilisées avec le complément "à une distance de...". En résumé, utilisez "à partir de" pour définir l'origine du calcul et "de" pour définir la mesure ou la séparation par rapport à un point [2][3].
Citations:
- 1: https://www.portail-lexical.fr/definition/depuis
- 2: https://www.cnrtl.fr/definition/des
- 3: http://classe.bilingue.free.fr/fr/TDM-outils/Doc/verbes-prep-lieu.html
Use French wording that expresses physical distance from the user.
de votre part conveys “from your side/on your behalf”, not distance from the user’s location. Use an approved translation for “from you” for this distance label, such as a clearly spatial French phrasing, and confirm it with a French reviewer.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/visual-editor/locales/components/fr/visual-editor.json` at line 32,
Update the distanceLineFromYou translation to use French wording that clearly
expresses physical distance from the user’s location, replacing “de votre part”
with an approved spatial phrasing and confirming the wording with a French
reviewer.
| "distanceLineFromSearchLocation": "<strong>{{distance}}</strong> od {{searchLocation}}", | ||
| "distanceLineFromYou": "<strong>{{distance}}</strong>", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== locate file =="
git ls-files | grep -F 'packages/visual-editor/locales/components/hu/visual-editor.json' || true
echo "== file excerpt =="
if [ -f packages/visual-editor/locales/components/hu/visual-editor.json ]; then
nl -ba packages/visual-editor/locales/components/hu/visual-editor.json | sed -n '1,80p'
fi
echo "== nearby english source labels =="
env
fd -a 'visual-editor.json|visual_editor.json|en.*visual-editor|locales.*en.*visual-editor' . | sed 's#^\./##' | head -50
rg -n '"distanceLineFromSearchLocation"|"distanceLineFromYou"' . -g '*.json' -g '!node_modules' -g '!dist' -g '!build' || true
echo "== git status/diff summary =="
git status --short
git diff --stat HEAD~1..HEAD 2>/dev/null || git diff --stat 2>/dev/null || true
git diff -- packages/visual-editor/locales/components/hu/visual-editor.json 2>/dev/null | sed -n '1,120p'Repository: yext/visual-editor
Length of output: 297
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== file excerpt =="
cat -n packages/visual-editor/locales/components/hu/visual-editor.json | sed -n '1,80p'
echo "== nearby english source labels =="
rg -n '"distanceLineFromSearchLocation"|"distanceLineFromYou"' . -g '*.json' -g '!node_modules' -g '!dist' -g '!build' || true
echo "== git diff summary =="
git status --short
git diff HEAD~1..HEAD --stat 2>/dev/null || true
git diff -- packages/visual-editor/locales/components/hu/visual-editor.json 2>/dev/null | sed -n '1,160p'Repository: yext/visual-editor
Length of output: 26195
Fix the Hungarian distance translations.
od is Croatian for these labels, and distanceLineFromYou currently renders only the distance without “from you”. Use Hungarian wording for both keys while preserving {{searchLocation}}, {{distance}}, and the “from you” meaning.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/visual-editor/locales/components/hu/visual-editor.json` around lines
31 - 32, Update the Hungarian locale entries distanceLineFromSearchLocation and
distanceLineFromYou to use Hungarian wording instead of Croatian “od”. Preserve
the {{distance}} and {{searchLocation}} placeholders and ensure
distanceLineFromYou explicitly conveys “from you”.
| "distance": "Distance", | ||
| "distanceLineFromSearch": "<strong>{{distance}}</strong> à partir de la recherche", | ||
| "distanceLineFromSearchLocation": "<strong>{{distance}}</strong> de {{searchLocation}}", | ||
| "distanceLineFromYou": "<strong>{{distance}}</strong> de votre part", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use the French phrase for distance from the user.
de votre part means “on your part,” not “from you,” in this distance label. Use de vous or another native phrase that preserves the source meaning.
Proposed fix
- "distanceLineFromYou": "<strong>{{distance}}</strong> de votre part",
+ "distanceLineFromYou": "<strong>{{distance}}</strong> de vous",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "distanceLineFromYou": "<strong>{{distance}}</strong> de votre part", | |
| "distanceLineFromYou": "<strong>{{distance}}</strong> de vous", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/visual-editor/locales/platform/fr/visual-editor.json` at line 157,
Update the French translation value for distanceLineFromYou to use a native
phrase meaning “from you,” replacing “de votre part” with “de vous” while
preserving the distance placeholder and formatting.
| "aspectRatio": "Raport de aspect", | ||
| "base_text size": "Bază", | ||
| "bold": "Îndrăzneţ", | ||
| "bothDistances": "Ambele distante", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use the correct Romanian spelling.
"Ambele distante" omits the diacritic in distanțe. Replace it with "Ambele distanțe".
Proposed fix
- "bothDistances": "Ambele distante",
+ "bothDistances": "Ambele distanțe",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "bothDistances": "Ambele distante", | |
| "bothDistances": "Ambele distanțe", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/visual-editor/locales/platform/ro/visual-editor.json` at line 313,
Update the bothDistances translation in visual-editor.json to use the correct
Romanian diacritic, changing “Ambele distante” to “Ambele distanțe”.
| }, | ||
| "distance": "Mesafe", | ||
| "distanceLineFromSearch": "Aramadan <strong>{{distance}}</strong>", | ||
| "distanceLineFromSearchLocation": "<strong>{{distance}}</strong>, {{searchLocation}}'den", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Do not append a fixed suffix to searchLocation.
{{searchLocation}}'den is incorrect for names that require 'dan, such as Ankara'dan. Use wording that inflects a fixed noun, for example {{searchLocation}} konumuna olan mesafe: <strong>{{distance}}</strong>, or implement locale-aware inflection.
Proposed fix
- "distanceLineFromSearchLocation": "<strong>{{distance}}</strong>, {{searchLocation}}'den",
+ "distanceLineFromSearchLocation": "{{searchLocation}} konumuna olan mesafe: <strong>{{distance}}</strong>",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "distanceLineFromSearchLocation": "<strong>{{distance}}</strong>, {{searchLocation}}'den", | |
| "distanceLineFromSearchLocation": "{{searchLocation}} konumuna olan mesafe: <strong>{{distance}}</strong>", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/visual-editor/locales/platform/tr/visual-editor.json` at line 156,
Update the distanceLineFromSearchLocation translation to remove the fixed "'den"
suffix and use wording with a fixed noun or otherwise locale-aware inflection,
so locations such as Ankara render with correct Turkish grammar.
| "distance": "距離", | ||
| "distanceLineFromSearch": "來自搜尋的 <strong>{{distance}}</strong>", | ||
| "distanceLineFromSearchLocation": "<strong>{{distance}}</strong> 來自 {{searchLocation}}", | ||
| "distanceLineFromYou": "來自您的 <strong>{{distance}}</strong>", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Correct the Traditional Chinese “from you” translation.
來自您的 <strong>{{distance}}</strong> means “from your distance”. Use wording such as 距離您 <strong>{{distance}}</strong>.
Proposed fix
- "distanceLineFromYou": "來自您的 <strong>{{distance}}</strong>",
+ "distanceLineFromYou": "距離您 <strong>{{distance}}</strong>",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "distanceLineFromYou": "來自您的 <strong>{{distance}}</strong>", | |
| "distanceLineFromYou": "距離您 <strong>{{distance}}</strong>", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/visual-editor/locales/platform/zh-TW/visual-editor.json` at line
157, Update the distanceLineFromYou translation to use natural Traditional
Chinese wording meaning “distance from you,” such as “距離您
<strong>{{distance}}</strong>,” while preserving the existing distance
placeholder and markup.
| <Image | ||
| image={simplifiedImage} | ||
| aspectRatio={aspectRatio} | ||
| imageFillType={styles.imageFillType} |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
ast-grep outline packages/visual-editor/src/components/atoms/image.tsx --items all
sed -n '1,260p' packages/visual-editor/src/components/atoms/image.tsx
rg -n -C 3 'imageFillType|object-cover|object-contain|className' \
packages/visual-editor/src/components/atoms/image.tsx \
packages/visual-editor/src/components/footer/FooterLogoSlot.tsx \
packages/visual-editor/src/components/footer/FooterUtilityImagesSlot.tsxRepository: yext/visual-editor
Length of output: 21446
Remove the fixed object-contain class or override it when imageFillType is "fill".
Image renders className="object-contain" on the root element, so imageFillType="fill" must use inline style precedence instead of a fixed class if both props are present.
📍 Affects 2 files
packages/visual-editor/src/components/footer/FooterLogoSlot.tsx#L71-L71(this comment)packages/visual-editor/src/components/footer/FooterUtilityImagesSlot.tsx#L106-L106
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/visual-editor/src/components/footer/FooterLogoSlot.tsx` at line 71,
Update the Image usage at FooterLogoSlot.tsx:71 and
FooterUtilityImagesSlot.tsx:106 so imageFillType="fill" is not overridden by the
fixed object-contain class; remove that class or apply the fill object-fit
behavior through inline style precedence in both sites.
| image: Omit<ImageStylingProps, "imageFillType">; | ||
|
|
||
| /** | ||
| * Determines whether carousel images should fill or fit within the frame. | ||
| * @defaultValue "fill" | ||
| */ | ||
| imageFillType?: "fill" | "fit"; | ||
| imageFillType?: ImageFillType; |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Preserve the legacy gallery fill selection.
Line 64 moves imageFillType from styles.image to styles. Existing gallery layouts can store "fit" at styles.image.imageFillType. The carousel now reads only styles.imageFillType, so those layouts fall back to "fill" and change their rendered image behavior.
Add a new appended migration that copies styles.image.imageFillType to styles.imageFillType before applying the "fill" default. Register the migration after 0081. Add a migration test for a legacy gallery with "fit".
As per coding guidelines, existing migrations are append-only and immutable; add a new migration instead.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@packages/visual-editor/src/components/pageSections/PhotoGallerySection/PhotoGalleryWrapper.tsx`
around lines 64 - 70, Preserve legacy gallery fill behavior by adding a new
append-only migration after migration 0081 that copies
styles.image.imageFillType to styles.imageFillType before the carousel applies
its "fill" default. Register the migration in the migration sequence, and add a
test covering a legacy gallery whose nested image setting is "fit"; do not
modify existing migrations.
Source: Coding guidelines
c30acb7
auto-screenshot-update: true
Tested with local /starter
Loaded into real "yextsolutions" starter and tested with "yext-quick-service" template