Skip to content

chore: merge main into 2026-custom-components-templates branch - #1285

Open
jwartofsky-yext wants to merge 18 commits into
2026-custom-components-templatesfrom
merge2026
Open

chore: merge main into 2026-custom-components-templates branch#1285
jwartofsky-yext wants to merge 18 commits into
2026-custom-components-templatesfrom
merge2026

Conversation

@jwartofsky-yext

@jwartofsky-yext jwartofsky-yext commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Tested with local /starter

Loaded into real "yextsolutions" starter and tested with "yext-quick-service" template

benlife5 and others added 15 commits July 23, 2026 11:01
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 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>
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f6a7f043-14a4-42cc-a3af-9f4506ff0d2f

📥 Commits

Reviewing files that changed from the base of the PR and between c30acb7 and cb8f712.

⛔ Files ignored due to path filters (1)
  • packages/visual-editor/src/components/testing/screenshots/PhotoGallerySection/[mobile] version 59 with showSectionHeading false.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
📒 Files selected for processing (1)
  • packages/visual-editor/CHANGELOG.md
💤 Files with no reviewable changes (1)
  • packages/visual-editor/CHANGELOG.md

Walkthrough

This 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 js-yaml to 4.3.0.

Possibly related PRs

Suggested labels: create-dev-release

Suggested reviewers: asanehisa

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the primary change as merging the main branch into the target branch.
Description check ✅ Passed The description reports testing performed on the starter and template, which is related to the pull request changes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch merge2026

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 11

🧹 Nitpick comments (1)
packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx (1)

670-698: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

Add a control case to the hideRequirementsTooltip test.

This test only proves the button is absent when hideRequirementsTooltip: true. Add a companion assertion that leaves hideRequirementsTooltip unset for the same itemSourceTypes filter 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

📥 Commits

Reviewing files that changed from the base of the PR and between d881667 and 8adfca3.

⛔ Files ignored due to path filters (28)
  • packages/visual-editor/src/components/testing/screenshots/EventSection/[tablet] version 26 props with entity values.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] latest version default props.png is 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.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] latest version non-default props.png is 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).png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 24 with filters.png is 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.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 60 custom heading.png is 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.png is 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).png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 64 static headings.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 64 static image.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[desktop] version 74 comingSoon.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[mobile] latest version non-default props.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] latest version default props.png is 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.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] latest version non-default props.png is 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).png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 24 with filters.png is 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.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 60 custom heading.png is 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.png is 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).png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 64 static headings.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 64 static image.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • packages/visual-editor/src/components/testing/screenshots/Locator/[tablet] version 74 comingSoon.png is 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.png is excluded by !**/*.png, !packages/visual-editor/src/components/testing/screenshots/**
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (81)
  • package.json
  • packages/visual-editor/CHANGELOG.md
  • packages/visual-editor/locales/components/cs/visual-editor.json
  • packages/visual-editor/locales/components/da/visual-editor.json
  • packages/visual-editor/locales/components/de/visual-editor.json
  • packages/visual-editor/locales/components/en-GB/visual-editor.json
  • packages/visual-editor/locales/components/en/visual-editor.json
  • packages/visual-editor/locales/components/es/visual-editor.json
  • packages/visual-editor/locales/components/et/visual-editor.json
  • packages/visual-editor/locales/components/fi/visual-editor.json
  • packages/visual-editor/locales/components/fr/visual-editor.json
  • packages/visual-editor/locales/components/hr/visual-editor.json
  • packages/visual-editor/locales/components/hu/visual-editor.json
  • packages/visual-editor/locales/components/it/visual-editor.json
  • packages/visual-editor/locales/components/ja/visual-editor.json
  • packages/visual-editor/locales/components/lt/visual-editor.json
  • packages/visual-editor/locales/components/lv/visual-editor.json
  • packages/visual-editor/locales/components/nb/visual-editor.json
  • packages/visual-editor/locales/components/nl/visual-editor.json
  • packages/visual-editor/locales/components/pl/visual-editor.json
  • packages/visual-editor/locales/components/pt/visual-editor.json
  • packages/visual-editor/locales/components/ro/visual-editor.json
  • packages/visual-editor/locales/components/sk/visual-editor.json
  • packages/visual-editor/locales/components/sv/visual-editor.json
  • packages/visual-editor/locales/components/tr/visual-editor.json
  • packages/visual-editor/locales/components/zh-TW/visual-editor.json
  • packages/visual-editor/locales/components/zh/visual-editor.json
  • packages/visual-editor/locales/platform/cs/visual-editor.json
  • packages/visual-editor/locales/platform/da/visual-editor.json
  • packages/visual-editor/locales/platform/de/visual-editor.json
  • packages/visual-editor/locales/platform/en-GB/visual-editor.json
  • packages/visual-editor/locales/platform/en/visual-editor.json
  • packages/visual-editor/locales/platform/es/visual-editor.json
  • packages/visual-editor/locales/platform/et/visual-editor.json
  • packages/visual-editor/locales/platform/fi/visual-editor.json
  • packages/visual-editor/locales/platform/fr/visual-editor.json
  • packages/visual-editor/locales/platform/hr/visual-editor.json
  • packages/visual-editor/locales/platform/hu/visual-editor.json
  • packages/visual-editor/locales/platform/it/visual-editor.json
  • packages/visual-editor/locales/platform/ja/visual-editor.json
  • packages/visual-editor/locales/platform/lt/visual-editor.json
  • packages/visual-editor/locales/platform/lv/visual-editor.json
  • packages/visual-editor/locales/platform/nb/visual-editor.json
  • packages/visual-editor/locales/platform/nl/visual-editor.json
  • packages/visual-editor/locales/platform/pl/visual-editor.json
  • packages/visual-editor/locales/platform/pt/visual-editor.json
  • packages/visual-editor/locales/platform/ro/visual-editor.json
  • packages/visual-editor/locales/platform/sk/visual-editor.json
  • packages/visual-editor/locales/platform/sv/visual-editor.json
  • packages/visual-editor/locales/platform/tr/visual-editor.json
  • packages/visual-editor/locales/platform/zh-TW/visual-editor.json
  • packages/visual-editor/locales/platform/zh/visual-editor.json
  • packages/visual-editor/package.json
  • packages/visual-editor/src/components/atoms/image.tsx
  • packages/visual-editor/src/components/contentBlocks/image/HeroImage.tsx
  • packages/visual-editor/src/components/contentBlocks/image/Image.tsx
  • packages/visual-editor/src/components/contentBlocks/image/styling.ts
  • packages/visual-editor/src/components/directory/DirectoryCard.tsx
  • packages/visual-editor/src/components/directory/DirectoryWrapper.tsx
  • packages/visual-editor/src/components/directory/directoryChildReference.test.tsx
  • packages/visual-editor/src/components/footer/ExpandedFooter.tsx
  • packages/visual-editor/src/components/footer/FooterLogoSlot.tsx
  • packages/visual-editor/src/components/footer/FooterUtilityImagesSlot.tsx
  • packages/visual-editor/src/components/locator/Locator.test.tsx
  • packages/visual-editor/src/components/locator/Locator.tsx
  • packages/visual-editor/src/components/locator/LocatorResultCard.tsx
  • packages/visual-editor/src/components/locator/LocatorWrapper.tsx
  • packages/visual-editor/src/components/migrations/0079_image_fill_type.ts
  • packages/visual-editor/src/components/migrations/0080_directory_card_display_props.ts
  • packages/visual-editor/src/components/migrations/0081_header_footer_image_fill_type.ts
  • packages/visual-editor/src/components/migrations/migrationRegistry.ts
  • packages/visual-editor/src/components/pageSections/PhotoGallerySection/PhotoGalleryWrapper.tsx
  • packages/visual-editor/src/docs/components.md
  • packages/visual-editor/src/editor/YextEntityFieldSelector.tsx
  • packages/visual-editor/src/fields/EntityFieldSelectorField.test.tsx
  • packages/visual-editor/src/fields/EntityFieldSelectorField.tsx
  • packages/visual-editor/src/types/images.ts
  • packages/visual-editor/src/utils/migrate.test.ts
  • starter/localData/dev-dm-city-stream__en__8932945.json
  • starter/localData/dev-location-stream__en__cbafb9cd1c3e63d9814e236ba9181377.json
  • starter/src/dev.config.ts

Comment thread packages/visual-editor/CHANGELOG.md Outdated
Comment thread packages/visual-editor/CHANGELOG.md Outdated
"distance": "Distance",
"distanceLineFromSearch": "<strong>{{distance}}</strong> à partir de la recherche",
"distanceLineFromSearchLocation": "<strong>{{distance}}</strong> de {{searchLocation}}",
"distanceLineFromYou": "<strong>{{distance}}</strong> de votre part",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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:


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.

Comment on lines +31 to +32
"distanceLineFromSearchLocation": "<strong>{{distance}}</strong> od {{searchLocation}}",
"distanceLineFromYou": "<strong>{{distance}}</strong>",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
"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",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
"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",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
"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>",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
"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}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.tsx

Repository: 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.

Comment on lines +64 to +70
image: Omit<ImageStylingProps, "imageFillType">;

/**
* Determines whether carousel images should fill or fit within the frame.
* @defaultValue "fill"
*/
imageFillType?: "fill" | "fit";
imageFillType?: ImageFillType;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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

@jwartofsky-yext
jwartofsky-yext marked this pull request as ready for review August 7, 2026 18:54
benlife5
benlife5 previously approved these changes Aug 7, 2026
briantstephan
briantstephan previously approved these changes Aug 7, 2026
@jwartofsky-yext
jwartofsky-yext dismissed stale reviews from briantstephan and benlife5 via c30acb7 August 7, 2026 20:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants