-
Un-mirror alignment under "Greedy First" sizing
GridFillnow acceptsjustifyandalignprops ('start' | 'center' | 'end') for main- and cross-axis item alignment. Alignment is honored consistently across everysizingmode, includinggreedy-first.This fixes
Container: withsizing: 'greedy-first', alignment was mirrored — choosing "top" packed content to the bottom — forcing editors to pick the opposite option. Alignment now matches the chosen option.(DEV-335, SUPPORT-17)
-
Rename the
sectionGlossaryListlocale namespace tosectionGlossaryListingto match the renamed Glossary Listing section. -
Add
playback="background"mode to<Media>— a single switch for the muted-autoplay-loop cluster (controls off; autoplay/muted/loop/playsinline/disablePictureInPicture on), with individual props still overriding.<Media>now exposesv-model:pausedso consumers render and position their own WCAG 2.2.2 pause control; reduced-motion suppresses autoplay and seeds the paused state.MediaStageadopts the mode for video backgrounds; it ships no pause control of its own, so a consumer that needs one bindsv-model:pausedand places it. -
Add
textColorprop toNavigationMenuTextItemNavigationMenuTextItemnow accepts an optionaltextColor(a resolved CSS color string). When set, it overrides the surface-tone color for the item label; when omitted, the item keeps inheriting the surrounding surface tone. NamedtextColor(not a barecolor) so a futurebackgroundColorcan sit alongside it for the same item. -
Add a
plainvariant toInput(alongsideoutlineandsubtle; default staysoutline) that paints a resting background and border from the--input-field-plain-*tokens, with hover, focus, disabled, and error states.EmailInputFormandEmailInputFormDisplaynow accept an optionalvariantprop forwarded to the underlyingInput. Defaults are unchanged, so existing usages render as before. -
Rename
BlogPostDetailtoArticleDetailand promote it to the shared reading-view component for editorial detail sections (Blog Post + Glossary). Add ashowSocialShareprop (defaultfalse) so non-blog consumers can opt out of the social-share footer. -
Support per-item text color in
MenuBasicandMegaMenuMenuBasicItemandMegaMenuItemgain an optionaltextColor(ColorFieldValue).MenuBasicandMegaMenuTriggerresolve it viacolorValueToCssand apply it to the item label, falling back to the surface-tone cascade when unset.NavigationNode(used byMenuSideBySide) carries the sametextColorfield. NamedtextColorto leave room for a futurebackgroundColoron the same items. -
Add a coupon box block for the Product Details Container
A new non-standalone
BlockProductDetailCouponBoxwraps theCouponBoxcomponent so editors can place a promotional coupon / discount-code box in thecontentslot ofSectionProductDetail. Exposes text, coupon code, discount text, icon and thedefault/promotion-codestyle variant; the copy action lets shoppers copy the code to the clipboard. Registered in the Product Details Container'scontentslot and ships a Studio preview image. -
Add
SectionGlossaryDetail, which renders a single glossary entry (term + definition) via the sharedArticleDetailcomponent, and renameSectionGlossaryListtoSectionGlossaryListingto match platform naming.SectionBlogPostDetailnow renders via the sharedArticleDetailcomponent.Note: the Studio component string changed (
SectionGlossaryList→SectionGlossaryListing). No data migration is shipped because the section was only just introduced and is not referenced by any stored configuration yet. -
Add per-item text color picker to header menu blocks
BlockMenuBasic,BlockMenuSideBySide, andBlockMegaMenunow expose a theme color picker on each top-level menu item's title, via theas: 'style'decorator (the small style icon over the title field). The picked color is applied as the item's label text color. The decorator object (linkTitleStyle/labelStyle/titleStyle) holds atextColorfield, leaving room to addbackgroundColorfor the same items later. Entity-driven items (CMSMenuItemqueries) are unaffected — the picker only attaches to author-typed titles.
-
Add a
contentPaddingprop to the CTA banners (BannerBasic,BannerIntegrated,BannerShowcase) via the sharedCtaBannerInheritablePropsbase, plus reduced-padding modifier classes (--content-padding-m/--content-padding-s/--content-padding-none) on each banner's inner content element. A modifier is only emitted for the opt-inm/s/nonevalues; unset or'default'keeps the existing padding ramp, so existing banners are unchanged.Partial fix; full edge placement is tracked in a follow-up story.
(DEV-334, SUPPORT-16)
-
Top-align
AlphabeticalIndexgroupsGroups are grid items that stretch to the row height, but their content used
justify-content: center, so short columns (e.g. a single-entry "1" group) rendered vertically centered instead of aligned with the taller columns. Switched tojustify-content: flex-startso every group's header and links start at the top. -
Make
LocationFinder"Boxed" container style actually clamp widthThe
.location-finder--boxedrule previously only added a border and rounded corners but never constrained width, so the "Boxed" option was visually indistinguishable from "Full width". It now setsmax-width: var(--container-max-width); margin-inline: auto— mirroringBackdrop's.backdrop--boxed— so boxed instances clamp and center at desktop (--container-max-widthis100%below--lgand narrows from--lgup, matching the existing--lg-gated boxed styling).Note: existing instances already set to "Boxed" will now visibly clamp and center their width on desktop. This is the intended fix, not a regression. (DEV-331, SUPPORT-15)
-
Fix
LocationFinderMapfailing to render in devimport { GoogleMap } from 'vue3-google-map'resolved to nothing in dev — Vite served the dependency's UMD bundle, which exposes no named ESM exports — soLocationFinderMapbroke.@laioutr-core/uinow pre-bundlesvue3-google-mapvia ViteoptimizeDeps, so the map renders with no consumer config. -
BlockButtonHug/Fillwidth now takes effect inside Media & Text. The slot column's defaultalign-items: stretchwas forcing every button to full width; the column now usesalign-items: flex-start, so a width-less (Hug) button sizes to its content while Card-based blocks keep their ownwidth: 100%(and their internal text alignment) unchanged. (DEV-326) -
MediaTextgains aninnerBlockPaddingprop forwarded toBackdrop'sinner-block-padding, so the section can expose a Padding control consistent with other sections. (DEV-325) -
Fix the
NewsletterRegistrationmedia slot collapsing to near-zero width when a media block is slotted in — the media now fills its column.The email field also renders with the plain
Inputlook (visible resting background).PopUpNewsletteris unaffected. -
Add a
Content Paddingfield (Design → Layout) to the three banner sections (SectionBannerBasic,SectionBannerIntegrated,SectionBannerShowcase), forwarded to the underlying banner'scontentPaddingprop. Options areDefault/M/S/None, withDefaultfirst so existing banners keep their current padding.Partial fix; full edge placement is tracked in a follow-up story.
(DEV-334, SUPPORT-16)
-
SectionLocationFinder's container-style control now uses the sharedcontainerStyleField(atoggle_button). The sidebar label becomes "Style".Data-safe: the stored value (
'full-width'|'boxed') and the default ('full-width') are unchanged, so no Studio data migration is required. (DEV-331) -
Add a Padding control (none/S/M/L) to the Media & Text section under Design → Layout, directly after Margin. It forwards to
MediaText's inner padding. Backward-compatible: unset configurations fall back tonone(no inner padding), identical to today. (DEV-325)