1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,541915,e=>{"use strict";var a=e.i(7745),t=e.i(999106),l=e.i(481157),o=e.i(141356),i=e.i(426561);e.i(779883);var r=e.i(343277);let n=e=>({...e,showIf:{field:"variant",equals:"carousel"}}),s={key:"location-search",label:"Location Search",group:"content-sections",description:"Filterable location finder with bedrooms, price range, type, and availability filters",icon:"search",keywords:["location","search","find","filter","apartments","units","availability","property"],slugAffinity:["properties","availability","rentals","listings","communities","inventory"],usage:"Use this above an availability list when visitors arrive without knowing which property they want. The filter bar narrows the underlying Locations collection by bedrooms, price, type, and availability so a leasing prospect can self-serve. The section heading is authored as a slot child so you can style it like any other heading.",tips:['Pre-narrow with Default Type or Status filters when the page is already scoped (e.g. "Senior Living" landing page)',"Pair with location-card-list or property-grid below it so results have somewhere to land","Keep all four filters on for broad portfolio pages; turn off Price for affordable-housing sites where rent is set by AMI"],antiPatterns:["Don't use this on a single-property detail page â there's nothing to filter; use availability-table instead","Don't hide every filter â leaves an empty bar with just a Search button"],related:["location-card-list","property-grid","availability-table","location-availability"],allowedParents:[],allowedChildren:["*"],supportsChildren:!0,schemaVersion:2,blockedPropKeys:["heading"],slots:[{role:"heading",label:"Section Heading",elementType:"heading",defaultProps:{text:"",level:"h2"},defaultAnimation:l.SCROLL_FADE_IN}],defaultContentProps:{showFilters:!0,buttonLabel:"Search",propertyTypeFilter:"",listingStatusFilter:"",showBedroomFilter:!0,showPriceFilter:!0,showTypeFilter:!0,showAvailabilityFilter:!0},defaultStyleProps:{backgroundColor:"transparent",textColor:"$foreground"},defaultLayoutProps:(0,i.withMobileFirstDefaults)({padding:"48px 0"}),defaultResponsiveProps:{...i.GRID_RESPONSIVE_DEFAULTS},supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"headingLevel",label:"Heading Tag",type:"select",options:[{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"},{label:"Paragraph (p)",value:"p"}],defaultValue:"h2",description:"Semantic HTML tag for the section heading."},{key:"showFilters",label:"Show Filters",type:"checkbox",defaultValue:!0},{key:"buttonLabel",label:"Button Label",type:"text",defaultValue:"Search"},{key:"propertyTypeFilter",label:"Default Type Filter",type:"text",description:"Pre-narrow the search to a specific location type when needed."},{key:"listingStatusFilter",label:"Default Status Filter",type:"text",description:"Pre-narrow the search to a specific listing status such as available or coming soon."},{key:"showBedroomFilter",label:"Bedroom Filter",type:"checkbox",defaultValue:!0},{key:"showPriceFilter",label:"Price Filter",type:"checkbox",defaultValue:!0},{key:"showTypeFilter",label:"Type Filter",type:"checkbox",defaultValue:!0},{key:"showAvailabilityFilter",label:"Availability Filter",type:"checkbox",defaultValue:!0}]},{group:"style",fields:[{key:"backgroundColor",label:"Background Color",type:"token-color",defaultValue:"$surfaceAlt"},{key:"textColor",label:"Text Color",type:"token-color",defaultValue:"$foreground"},{key:"cardBorderRadius",label:"Card Radius (px)",type:"slider",min:0,max:32,defaultValue:12},t.SHADOW_FIELD,t.SHADOW_COLOR_FIELD,...t.CARD_HOVER_FIELDS]},t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS,t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS]},d={key:"floor-plan-viewer",label:"Floor Plan Viewer",group:"content-sections",description:"Interactive floor plan display with unit type selector, pricing, and availability",icon:"floor-plan",keywords:["floor","plan","unit","layout","apartment","bedroom","pricing"],slugAffinity:["properties","availability","floor-plans"],usage:"Use this on a property detail page to let visitors compare multiple unit layouts with images, bed/bath counts, square footage, and pricing. Per-plan cards are authored manually via the Floor Plans array; the section heading is a slot child for full inspector control.",tips:["Upload a clean blueprint or rendered floor-plan image for each plan â this is usually the highest-engagement element on a community page","Match the order to your availability table so plan names line up between the two widgets"],antiPatterns:["Don't duplicate this and floor-plans on the same page â pick the simple image grid (floor-plans) when you only need pictures","Don't leave the plans array empty in production â the section will render a blank placeholder"],related:["floor-plans","availability-table","location-availability","property-highlights"],allowedParents:[],allowedChildren:["*"],supportsChildren:!0,schemaVersion:2,blockedPropKeys:["heading"],slots:[{role:"heading",label:"Section Heading",elementType:"heading",defaultProps:{text:"",level:"h2"},defaultAnimation:l.SCROLL_FADE_IN}],defaultContentProps:{plans:[],lightbox:!0,lightboxPluginZoom:!0,lightboxPluginThumbnails:!0,lightboxPluginFullscreen:!0,lightboxPluginCaptions:!0,lightboxPluginCounter:!0,lightboxZoomMaxPixelRatio:6},defaultStyleProps:{},defaultLayoutProps:(0,i.withMobileFirstDefaults)({padding:"48px 0"}),supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"headingLevel",label:"Heading Tag",type:"select",options:[{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"},{label:"Paragraph (p)",value:"p"}],defaultValue:"h2",description:"Semantic HTML tag for the section heading."},{key:"plans",label:"Floor Plans",type:"array"}]},{group:"style",fields:[...t.STYLE_SETTINGS.fields,t.SHADOW_FIELD,...t.CARD_HOVER_FIELDS,...r.ALL_LIGHTBOX_FIELDS]}
1,t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS,t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS]},p={key:"income-calculator",label:"Income Calculator",group:"interactive-content",description:"Section 8 / LIHTC income eligibility calculator with household size and income inputs",icon:"calculator",keywords:["income","calculator","eligibility","section-8","lihtc","affordable","ami"],usage:"Use this on affordable-housing or LIHTC sites so prospective applicants can self-check whether their household qualifies before they apply. Visitors enter household size + income and see a pass/fail readout against the AMI Income Limits you configure (or the per-property limits from ExactEstate). The heading and subheading are slot children for inspector-level styling.",tips:['Place this above the application-cta on a "Do I qualify?" page to deflect ineligible applications',"Pair with hud-income-limits below so visitors who fail can see exactly how much they need to be under",'Customize the empty-state and error text for compliance â generic "Try again" reads poorly on a leasing page'],antiPatterns:["Don't use this on market-rate properties â there are no AMI limits to check against","Don't hardcode AMI tiers in this widget if you have a Locations row with HUD data â use hud-income-limits which fetches live"],related:["hud-income-limits","availability-table","location-availability"],allowedParents:[],allowedChildren:["*"],supportsChildren:!0,schemaVersion:2,blockedPropKeys:["heading","subheading"],slots:[{role:"heading",label:"Section Heading",elementType:"heading",defaultProps:{text:"",level:"h2"},defaultAnimation:l.SCROLL_FADE_IN},{role:"body",label:"Section Subheading",elementType:"rich-text",defaultProps:{body:""},defaultAnimation:l.SCROLL_FADE_IN}],defaultContentProps:{amiLimits:{}},defaultStyleProps:{backgroundColor:"transparent",textColor:"$foreground"},defaultLayoutProps:(0,i.withMobileFirstDefaults)({maxWidth:"min(600px, 100%)",padding:"48px 0"}),supportedResizeHandles:[],supportsStretch:!1,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"headingLevel",label:"Heading Tag",type:"select",options:[{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"},{label:"Paragraph (p)",value:"p"}],defaultValue:"h2",description:"Semantic HTML tag for the section heading."},{key:"amiLimits",label:"AMI Income Limits (JSON)",type:"text"},{advanced:!0,key:"numberFormat",label:"Number Format",type:"select",subGroup:"Formatting",options:[{label:"Auto (browser locale)",value:"auto"},{label:"US (1,234.56)",value:"us"},{label:"EU (1.234,56)",value:"eu"}],defaultValue:"auto"},{advanced:!0,key:"currency",label:"Currency",type:"select",subGroup:"Formatting",options:[{label:"USD ($)",value:"USD"},{label:"EUR (â¬)",value:"EUR"},{label:"GBP (£)",value:"GBP"},{label:"CAD (CA$)",value:"CAD"}],defaultValue:"USD"},{advanced:!0,key:"loadingText",label:"Loading Text",type:"text",subGroup:"States",defaultValue:"Loading limitsâ¦"},{advanced:!0,key:"emptyStateHeading",label:"Empty State Heading",type:"text",subGroup:"States",defaultValue:"Eligibility unavailable"},{advanced:!0,key:"emptyStateDescription",label:"Empty State Description",type:"text",subGroup:"States",defaultValue:""},{advanced:!0,key:"errorText",label:"Error Text",type:"text",subGroup:"States",defaultValue:"Couldn't load income limits. Try again."}]},{group:"style",fields:[{key:"backgroundColor",label:"Background Color",type:"token-color",defaultValue:"$surface"},{key:"textColor",label:"Text Color",type:"token-color",defaultValue:"$foreground"},{key:"borderRadius",label:"Element Radius (px)",type:"slider",min:0,max:32,defaultValue:12},t.SHADOW_FIELD,t.SHADOW_COLOR_FIELD]},t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS,t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS]},u={key:"badge-item",label:"Compliance Badge",group:"content-sections",description:"Single compliance/certification badge â icon + short label",icon:"badge",keywords:["badge","compliance","fair-housing","equal-opportunity","hud"],usage:"Single icon + label badge inside a compliance-badge-strip. Add one of these per certification you want to display (Fair Housing, Equal Opportunity, HUD, REAC, ADA). Only valid as a child of compliance-badge-strip â not a standalone section.",tips:['Pick from the icon picker first â the inline icon set has dedicated keys like "fair-housing" and "equal-housing"',"Keep labels short â these render inl
1ine so long copy wraps awkwardly"],antiPatterns:["Don't drop this anywhere except inside compliance-badge-strip â the renderer expects the parent's CSS namespace"],related:["compliance-badge-strip","partner-certifications","certification-card"],allowedParents:["compliance-badge-strip"],allowedChildren:["*"],supportsChildren:!0,schemaVersion:1,defaultContentProps:{label:"Badge",icon:""},defaultStyleProps:{},defaultLayoutProps:{},supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"none",settingsGroups:[{group:"content",fields:[{key:"label",label:"Label",type:"text"},{key:"icon",label:"Icon",type:"icon-picker"}]},t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS]},c={key:"compliance-badge-strip",label:"Compliance Badges",group:"content-sections",description:"Row of compliance and certification badges (Fair Housing, Equal Opportunity, HUD, REAC)",icon:"badge",keywords:["compliance","badge","fair-housing","equal-opportunity","hud","reac","certification"],usage:"Drop this in the footer or near the application CTA to display required compliance icons (Fair Housing, Equal Opportunity, HUD, ADA). Each badge is a first-class child element via the cards slot â add, remove, and reorder them like any other card list. Use partner-certifications instead when you need full logos with outbound links.",tips:["Affordable-housing sites typically need at least Equal Housing Opportunity + Fair Housing â the defaults already include both","Pin this to your site footer template so every page is compliant without per-page edits"],antiPatterns:["Don't use this for partner logos that need to link out â use partner-certifications which supports outbound URLs"],related:["badge-item","partner-certifications","certification-card"],allowedParents:[],allowedChildren:["*"],supportsChildren:!0,schemaVersion:2,slots:[{role:"cards",label:"Badges",elementType:"badge-item",multiple:!0,defaultCount:2,defaultItems:[{label:"Equal Housing Opportunity",icon:"equal-housing"},{label:"Fair Housing",icon:"fair-housing"}]}],defaultContentProps:{badges:[],glass:!0},defaultStyleProps:{},defaultLayoutProps:(0,i.withMobileFirstDefaults)({alignment:"center",padding:"24px 0"}),supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"badges",label:"Badges (legacy)",type:"array",description:"Legacy flat list. New authoring uses child badge-item elements via the Parts panel.",subFields:[{key:"label",label:"Label",type:"text",defaultValue:""},{key:"icon",label:"Icon",type:"icon-picker"}]}]},{group:"style",fields:[{key:"glass",label:"Glass Strip Treatment",type:"checkbox",defaultValue:!0,description:"Frosted-glass background behind the badge row."},...t.STYLE_SETTINGS.fields,t.SHADOW_FIELD,t.SHADOW_COLOR_FIELD]},t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS,t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS]},h={key:"availability-table",label:"Availability Table",group:"content-sections",description:"Unit availability table with type, sqft, rent range, availability date, and apply CTA",icon:"table",keywords:["availability","units","table","rent","pricing","apply","apartment"],slugAffinity:["properties","availability","rentals","listings"],usage:"Portfolio-wide availability widget. Pulls live floorplan + rent data from ExactEstate (master URL with optional per-Location override) and renders one card per available unit type with Apply, Applicant Portal, View Community, and Resident Portal CTAs. Pick a Location to scope to a single property, leave blank to show every active property in the portfolio. Header (eyebrow / heading / subheading) is authored via slot children.",tips:["For per-property pages, prefer location-availability â it auto-resolves the ExactEstate URL from the Location row",'Use Filter by City when you have multiple cities and want a city-specific landing page (e.g. "Anchorage Apartments")',"Map property names to images in Property Images so each card has a hero photo â fuzzy-matched against ExactEstate property names"],antiPatterns:["Don't hardcode units in the Static array if you have ExactEstate â switch Data Source to ExactEstate and the feed self-updates","Don't enable every CTA â pick the 1-2 actions that matter for the page (Apply Now is enough on a property landing page)"],related:["location-availability","hud-income-limits","property-grid","location-card-list"],allowedParents:[],allowedChildren:["*"],supportsChildren:!0,schemaVersion:2,blockedPropKeys:["heading","subheading"],slots:[{role:"eyebrow",label:"Eyebrow",elementType:"rich-text",defaultProps:{body:""},defaultAnimation:l.SCROLL_FADE_IN},{role:"heading",label:"Section Heading",elementType:"heading",defaultProps:{text:"",level:"h2"},defaultAnimation:l.SCROLL_FADE_IN},{role:"body",label:"Section Subheading",elementType:"rich-text",defaultProps:{body:""},defaultAnimation:l.SCROLL_FADE_IN}],defaultContentProps:{variant:"carousel",cardsPerView:"3",pauseOnHover:!0,initialSlide:0,showArrows:!0,showDots:!1,transitionStyle:"slide",transitionDurationMs:600,slidesToScroll:1,keyboardNav:!0,swipeThreshold:5,loopDirection:"forward",lazyLoad:"ondemand",pauseOnInvisible:!0,respectReducedMotion:!0,dotShape:"circle",showApplyButton:!0,showApplicantPortalButton:!0,showViewCommunityButton:!0,showResidentPortalButton:!0,applyVariant:"primary",applicantPortalVariant:"secondary",viewCommunityVariant:"primary",residentPortalVariant:"secondary",showBathroomChip:!0,hideUnitCount:!1,availabilityBadge:"",incomeLimitsSource:"exactestate",incomeLimitsHousehold:2,showIncomeLimit30:!1,showIncomeLimit50:!1,showIncomeLimit60:!1,showIncomeLimit80:!1,maxRows:0,applyUrl:"/apply",applicantPortalUrl:"",residentPortalUrl:"",filterProperty:"",filterCity:"",emptyMessage:"No units currently available. Please check back soon.",units:[],propertyImages:[],floorplanImages:[],locationSlug:"",activeOnly:!0},defaultStyleProps:{backgroundColor:"transparent",textColor:"$foreground",cardBackgroun
1d:"$background",cardBorderRadius:20,iconColor:"$accent",hoverBackground:"$surfaceAlt",hoverTextColor:"$foreground",hoverBorderColor:"$accent",gap:24},defaultLayoutProps:(0,i.withMobileFirstDefaults)({paddingTop:32,paddingBottom:32,paddingLeft:0,paddingRight:0}),defaultResponsiveProps:{...i.CAROUSEL_RESPONSIVE_DEFAULTS},supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"headingLevel",label:"Heading Tag",type:"select",options:[{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"},{label:"Paragraph (p)",value:"p"}],defaultValue:"h2",description:"Semantic HTML tag for the section heading."},{key:"variant",label:"Display Style",type:"select",defaultValue:"carousel",options:[{label:"Carousel (scrollable cards)",value:"carousel"},{label:"Grid",value:"grid"}],description:"Carousel shows cards in a horizontal scroll with nav arrows. Grid shows all cards in a responsive grid."},{advanced:!0,key:"cardsPerView",label:"Cards Per View",type:"select",defaultValue:"3",options:[{label:"1",value:"1"},{label:"2",value:"2"},{label:"3",value:"3"},{label:"4",value:"4"}],description:"Number of cards visible at once (carousel) or per row (grid)."},{advanced:!0,key:"autoplay",label:"Auto Transition",type:"checkbox",defaultValue:!1,description:"Carousel variant only â advances to the next card on a timer. Paused when there is nothing to scroll past and honours prefers-reduced-motion."},{advanced:!0,key:"interval",label:"Autoplay Interval (ms)",type:"number",min:1500,max:15e3,defaultValue:4e3,description:"Time each card stays visible before the next one slides in. 4000 = a new card every 4 seconds."},{advanced:!0,key:"transitionDuration",label:"Slide Transition Duration (ms)",type:"number",min:200,max:2e3,defaultValue:800,description:"How long the slide motion itself takes. Higher = slower, smoother glide. 800 ms is the gentle default; raise toward 1200 ms for a luxurious feel, drop to 400 ms for a snappier carousel."},{advanced:!0,key:"pauseOnHover",label:"Pause on Hover",type:"checkbox",defaultValue:!0,description:"Carousel variant only â pauses autoplay while the visitor hovers over a card."},{advanced:!0,key:"initialSlide",label:"Initial Slide (0 = first)",type:"number",min:0,max:50,defaultValue:0,description:"Carousel variant only â which card is showing on first paint."},{advanced:!0,key:"showArrows",label:"Show Navigation Arrows",type:"checkbox",defaultValue:!0,description:"Carousel variant only â toggles the prev/next arrow buttons."},{advanced:!0,key:"showDots",label:"Show Dots",type:"checkbox",defaultValue:!1,description:"Carousel variant only â toggles the pagination dot indicators below the cards."},...[...t.CAROUSEL_TRANSITION_FIELDS,...t.CAROUSEL_LAYOUT_FIELDS,...t.CAROUSEL_NAV_FIELDS,...t.CAROUSEL_CHROME_FIELDS,...t.CAROUSEL_LAZY_FIELDS].map(n),{advanced:!0,key:"dataSource",label:"Data Source",type:"select",defaultValue:"static",options:[{label:"Static (fill units manually)",value:"static"},{label:"ExactEstate live feed",value:"exactestate"}],description:"Static: you fill the units array below. ExactEstate: pulls live from the property_master_info endpoint â pick a Location below for a single-property card, or leave blank for a portfolio-wide feed."},{key:"locationSlug",label:"Location",type:"location-slug-picker",description:"Pick a Location from this website to scope the feed to its ExactEstate property. Leave blank to show every active property."},{advanced:!0,key:"activeOnly",label:"Show only available floorplans",type:"checkbox",defaultValue:!0,description:"When ON, floorplans with zero available units are hidden so visitors only see what they can actually rent right now. Turn OFF to show every floorplan in the feed including waitlist-only."},{advanced:!0,key:"maxRows",label:"Max Cards",type:"slider",min:0,max:12,defaultValue:0,description:"Limit the number of cards shown. Set to 0 to show all."},{key:"applyUrl",label:"Default Apply URL (fallback only)",type:"page-link",defaultValue:"",description:"Only used when a property has no apply URL of its own. ExactEstate live feeds populate per-property apply URLs automatically â leave this blank in that case."},{key:"applicantPortalUrl",label:"Applicant Portal URL",type:"page-link",defaultValue:"",description:'When set, replaces the Apply URL for the primary button and relabels it "Applicant Portal". Auto-populated from ExactEstate portals.applicant_portal when using the live feed.'},{key:"residentPortalUrl",label:"Resident Portal URL",type:"page-link",defaultValue:"",description:"Pick a page, pick a saved link, or paste a full URL. Exter
1nal URLs open in a new tab."},{advanced:!0,key:"filterProperty",label:"Filter by Property",type:"text",defaultValue:"",description:"Optional case-insensitive match for a property name."},{advanced:!0,key:"filterCity",label:"Filter by City",type:"text",defaultValue:"",description:"Optional case-insensitive match for a property city."},{advanced:!0,key:"showApplyButton",label:'Show "Apply Now" button',type:"checkbox",defaultValue:!0,description:"Uses the property's Apply URL (public_urls.unit_availability from ExactEstate)."},{advanced:!0,key:"showApplicantPortalButton",label:'Show "Applicant Portal" button',type:"checkbox",defaultValue:!0,description:"Uses the property's Applicant Portal URL (portals.applicant_portal from ExactEstate). Independent from the Apply Now button."},{advanced:!0,key:"showViewCommunityButton",label:'Show "View Community" button',type:"checkbox",defaultValue:!0,description:"Links to the property's location page on this site, when one exists."},{advanced:!0,key:"showResidentPortalButton",label:'Show "Resident Portal" button',type:"checkbox",defaultValue:!0,description:"Uses the property's Resident Portal URL (portals.resident_portal from ExactEstate)."},{advanced:!0,key:"applyVariant",label:'"Apply Now" button style',type:"select",subGroup:"Button Styles",defaultValue:"primary",options:[{label:"Primary (filled accent)",value:"primary"},{label:"Secondary (filled neutral)",value:"secondary"},{label:"Outline",value:"outline"}],description:"Which theme button treatment the Apply Now CTA uses. Primary = conversion emphasis."},{advanced:!0,key:"applicantPortalVariant",label:'"Applicant Portal" button style',type:"select",subGroup:"Button Styles",defaultValue:"secondary",options:[{label:"Primary (filled accent)",value:"primary"},{label:"Secondary (filled neutral)",value:"secondary"},{label:"Outline",value:"outline"}]},{advanced:!0,key:"viewCommunityVariant",label:'"View Community" button style',type:"select",subGroup:"Button Styles",defaultValue:"primary",options:[{label:"Primary (filled accent)",value:"primary"},{label:"Secondary (filled neutral)",value:"secondary"},{label:"Outline",value:"outline"}]},{advanced:!0,key:"residentPortalVariant",label:'"Resident Portal" button style',type:"select",subGroup:"Button Styles",defaultValue:"secondary",options:[{label:"Primary (filled accent)",value:"primary"},{label:"Secondary (filled neutral)",value:"secondary"},{label:"Outline",value:"outline"}]},{advanced:!0,key:"showBathroomChip",label:"Show bathroom count chip",type:"checkbox",defaultValue:!0,description:'Adds a bathroom range chip (e.g. "1â2 BA") to each property card, alongside the bedroom chip. ExactEstate feeds only â static units do not carry bathroom data.'},{key:"hideUnitCount",label:"Hide Unit Count",type:"checkbox",defaultValue:!1,description:'Hide the "12 units" / "Units" chip on each card. Useful when you want a clean "Available" badge instead of an exact unit count, or when ExactEstate counts are misleading for your portfolio.'},{key:"availabilityBadge",label:"Availability Badge Text",type:"text",defaultValue:"",placeholder:"Available",description:'When set, renders this label as a small chip on each card (replaces the unit count chip when "Hide Unit Count" is also on). Leave blank to use the default unit count behaviour.'},{advanced:!0,key:"incomeLimitsSource",label:"Income limit data source",type:"select",subGroup:"Income Limits",defaultValue:"exactestate",options:[{label:"ExactEstate feed (per-property, no extra fetch)",value:"exactestate"},{label:"HUD MTSP (live from HUD API)",value:"hud-mtsp"},{label:"HUD IL (extremely-low / very-low / low)",value:"hud-il"}],description:"ExactEstate: reads the AMI caps each property has configured in the master feed (fastest, no extra request). HUD MTSP/IL: fetches live from HUD using each Location row's fipsCode + stateCode; properties missing those fall back to ExactEstate."},{advanced:!0,key:"incomeLimitsHousehold",label:"Reference household size",type:"select",subGroup:"Income Limits",defaultValue:"2",options:[{label:"1 person",value:"1"},{label:"2 person",value:"2"},{label:"3 person",value:"3"},{label:"4 person",value:"4"},{label:"5 person",value:"5"},{label:"6 person",value:"6"},{label:"7 person",value:"7"},{label:"8 person",value:"8"}],description:"Household size used for the max-income chip value (e.g. 2-person = $49K). One reference size reads cleaner than a range inside a chip."},{advanced:!0,key:"showIncomeLimit30",label:"Show 30% AMI chip",type:"checkbox",subGroup:"Income Limits",defaultValue:!1,description:"Only visible on properties that have a 30% AMI designation."},{advanced:!0,key:"showIncomeLimit50",label:"Show 50% AMI chip",type:"checkbox",subGroup:"Income Limits",defaultValue:!1,description:"Only visible on properties that have a 50% AMI designation."},{advanced:!0,key:"showIncomeLimit60",label:"Show 60% AMI chip",type:"checkbox",subGroup:"Income Limits",defaultValue:!1,description:"Only visible on properties that have a 60% AMI designation."},{advanced:!0,key:"showIncomeLimit80",label:"Show 80% AMI chip",type:"checkbox",subGroup:"Income Limits",defaultValue:!1,description:"Only visible on properties that have an 80% AMI designation."},{advanced:!0,key:"hideEmptyProperties",label:"Hide Properties With No Floor Plans",type:"checkbox",defaultValue:!0,description:"Auto-hide ExactEstate properties that return zero floor plans (e.g. management-company entries with no rentable inventory)."},{advanced:!0,key:"emptyMessage",label:"Empty Message",type:"text",defaultValue:"No units currently available. Please check back soon."},{advanced:!0,key:"loadingText",label:"Loading Text",type:"text",subGroup:"States",defaultValue:"Loading availabilityâ¦"},{advanced:!0,key:"errorText",label:"Error Text",type:"text",subGroup:"States",defaultValue:"Couldn't load availability. Try again."},{advanced:!0,key:"dateFormat",label:"Date Format",type:"select",subGroup:"Formatting",options:[{label:"Auto (browser locale)",value:"auto"}
1,{label:"US (MM/DD/YYYY)",value:"us"},{label:"EU (DD/MM/YYYY)",value:"eu"},{label:"ISO (YYYY-MM-DD)",value:"iso"},{label:"Long (e.g. April 21, 2026)",value:"long"}],defaultValue:"auto"},{advanced:!0,key:"numberFormat",label:"Number Format",type:"select",subGroup:"Formatting",options:[{label:"Auto (browser locale)",value:"auto"},{label:"US (1,234.56)",value:"us"},{label:"EU (1.234,56)",value:"eu"}],defaultValue:"auto"},{advanced:!0,key:"currency",label:"Currency",type:"select",subGroup:"Formatting",options:[{label:"USD ($)",value:"USD"},{label:"EUR (â¬)",value:"EUR"},{label:"GBP (£)",value:"GBP"},{label:"CAD (CA$)",value:"CAD"}],defaultValue:"USD"},{key:"propertyImages",label:"Property Images",type:"array",description:"Map property names to images. Each entry: propertyName (text) + image (media upload). Names are fuzzy-matched to property names returned by the ExactEstate feed.",subFields:[{key:"propertyName",label:"Property Name",type:"text"},{key:"image",label:"Image",type:"upload"}]},{key:"floorplanImages",label:"Floor Plan Photos",type:"array",description:"Add one uploaded rendering per row. Paste the floorplan/apply URL for the matching card; the widget reads its floorplan UUID from the URL. The property comes from the Location Slug already set on this widget.",subFields:[{key:"floorplanUrl",label:"Floorplan URL",type:"text",description:"Paste the card/apply URL. Matching uses its floorplan query value, such as ?floorplan=..."},{key:"floorplanUuid",label:"Floorplan UUID",type:"text",description:"Optional fallback if you only have the ExactEstate floorplan UUID instead of the full URL."},{key:"image",label:"Floor Plan Image",type:"upload"},{key:"alt",label:"Alt Text",type:"text"},{key:"caption",label:"Caption",type:"text"}]},{key:"units",label:"Units (static fallback)",type:"array"}]},{group:"layout",fields:[o.SITE_CONTAINER_WIDTH_FIELD,{key:"contentMaxWidth",label:"Content Max Width",type:"text",defaultValue:"",placeholder:"900px",description:"Caps the inner header width when set. Prefer the Content Width preset above unless you need a hard pixel cap."}]},{group:"style",fields:[{key:"backgroundColor",label:"Background Color",type:"token-color",defaultValue:"$surface"},{key:"textColor",label:"Text Color",type:"token-color",defaultValue:"$foreground"},{key:"cardBackground",label:"Card Background",type:"token-color",defaultValue:"$surface"},{key:"cardBorderRadius",label:"Card Radius (px)",type:"slider",min:0,max:40,defaultValue:20},{advanced:!0,key:"cardStripHeight",label:"Top Accent Strip Height (px)",type:"slider",min:0,max:12,defaultValue:0,description:"Height of the accent strip across the top of each floorplan card. 0 hides the strip; 4 is the bold-card default. Color falls back to the Accent color below if Top Accent Strip Color is unset."},{key:"cardStripColor",label:"Top Accent Strip Color",type:"token-color",description:"Color of the top accent strip. Falls back to the section accent + site-accent tokens when unset."},t.ITEM_SPACING_FIELD,{key:"availableBadgeBg",label:"Available Badge Background",type:"token-color",defaultValue:"$success"},{key:"availableBadgeColor",label:"Available Badge Text",type:"token-color",defaultValue:"$successForeground"},{key:"limitedBadgeBg",label:"Limited Badge Background",type:"token-color",defaultValue:"$warning"},{key:"limitedBadgeColor",label:"Limited Badge Text",type:"token-color",defaultValue:"$warningForeground"},{key:"waitlistBadgeBg",label:"Waitlist Badge Background",type:"token-color",defaultValue:"$accent"},{key:"waitlistBadgeColor",label:"Waitlist Badge Text",type:"token-color",defaultValue:"$accentForeground"},...t.CARD_SHADOW_FIELDS,{advanced:!0,key:"iconColor",label:"Icon Color",type:"token-color",defaultValue:"$accent"},{key:"buttonBackground",label:"Button Background",type:"token-color"},{key:"buttonTextColor",label:"Button Text Color",type:"token-color"},...t.CAROUSEL_BUTTON_VARIANT_FIELDS,...t.CAROUSEL_ARROW_FIELDS,{key:"borderRadius",label:"Element Radius (px)",type:"slider",min:0,max:32,defaultValue:0},...t.CARD_HOVER_FIELDS,...t.BUTTON_HOVER_FIELDS]},t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS_WITH_FULL_BLEED,t.ANIMATION_
1SETTINGS,t.VISIBILITY_SETTINGS],demoVideoUrl:"https://cdn.evara.build/help/v1/element.availability-table.mp4"},y={key:"location-card-list",label:"Location Card List",group:"cards",description:"Alternating image/text location cards with slide-in animations, buttons, and feature bullets",icon:"property-card",keywords:["location","card","listing","apartment","rental","community","split","image"],slugAffinity:["properties","availability","rentals","listings","communities"],usage:"Use this on a portfolio landing page when each property deserves real estate beyond a small grid card â alternating image/text rows with description, feature bullets, primary + secondary CTAs, and Apply / Resident / Applicant portal links. The Locations array is authored manually for editorial control; use property-grid when you want auto-population from the Locations collection.",tips:["Keep features to 3-4 short bullets â long lists turn the row into a wall of text","Set Apply / Resident / Applicant Portal URLs per location so each row routes correctly even when properties use different portals"],antiPatterns:["Don't use this for ten-plus properties â the page gets long fast; switch to property-grid","Don't hardcode property addresses in the description â let users see the address per location once you wire it to the Locations collection on a future site iteration"],related:["property-grid","location-search","availability-table","location-availability"],allowedParents:[],allowedChildren:[],supportsChildren:!1,defaultContentProps:{heading:"",subheading:"",columns:"",emptyMessage:"Add locations in the builder to populate this section.",properties:[{name:"Location Name",description:"A brief description of this location.",image:null,primaryCta:{label:"View Location",url:"#"},secondaryCta:{label:"Contact",url:"#"},detailsUrl:"#",applyUrl:"",residentPortalUrl:"",applicantPortalUrl:"",features:["Feature 1","Feature 2","Feature 3","Feature 4"]}],lightbox:!1},defaultStyleProps:{contentBackground:"$surfaceAlt"},defaultLayoutProps:(0,i.withMobileFirstDefaults)({padding:"0"}),defaultResponsiveProps:{...i.GRID_RESPONSIVE_DEFAULTS},supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"heading",label:"Heading",type:"text"},t.HEADING_LEVEL_FIELD,{key:"subheading",label:"Subheading",type:"text"},{key:"columns",label:"Columns",type:"select",options:[{label:"Auto",value:""},{label:"2",value:"2"},{label:"3",value:"3"},{label:"4",value:"4"}],defaultValue:""},{advanced:!0,key:"emptyMessage",label:"Empty Message",type:"text"},{advanced:!0,key:"loadingText",label:"Loading Text",type:"text",subGroup:"States",defaultValue:"Loading locationsâ¦"},{advanced:!0,key:"errorText",label:"Error Text",type:"text",subGroup:"States",defaultValue:"Couldn't load locations. Try again."},{key:"properties",label:"Locations",type:"array",subFields:[{key:"name",label:"Name",type:"text"},{key:"propertyId",label:"Bound Location ID",type:"text"},{key:"description",label:"Description",type:"textarea"},{key:"image",label:"Image",type:"upload"},{key:"primaryCta",label:"Primary Button",type:"group",subFields:t.CTA_GROUP_SUBFIELDS},{key:"secondaryCta",label:"Secondary Button",type:"group",subFields:t.CTA_GROUP_SUBFIELDS},{key:"detailsUrl",label:"Details URL",type:"page-link"},{key:"applyUrl",label:"Apply URL",type:"page-link"},{key:"residentPortalUrl",label:"Resident Portal URL",type:"page-link"},{key:"applicantPortalUrl",label:"Applicant Portal URL",type:"page-link"},{key:"features",label:"Features (comma-separated)",type:"text"}]},t.HIDE_IF_EMPTY_FIELD]},{group:"style",fields:[{key:"backgroundColor",label:"Background Color",type:"token-color"},{key:"textColor",label:"Text Color",type:"token-color"}
1,{key:"contentBackground",label:"Content Background",type:"token-color",defaultValue:"$surfaceAlt"},{key:"cardBorderColor",label:"Card Border Color",type:"token-color",defaultValue:"$border"},{key:"borderRadius",label:"Element Radius (px)",type:"slider",min:0,max:50,defaultValue:0},{key:"shadow",label:"Shadow",type:"select",options:[{label:"None",value:"none"},{label:"Small",value:"sm"},{label:"Medium",value:"md"},{label:"Large",value:"lg"}],defaultValue:"md"},{key:"accentColor",label:"Accent Color",type:"token-color",defaultValue:"$accent"},{key:"buttonPrimaryColor",label:"Primary Button Color",type:"token-color"},{key:"buttonSecondaryColor",label:"Secondary Button Color",type:"token-color"},{key:"headingColor",label:"Heading Color",type:"token-color",defaultValue:"$foreground"},...t.CARD_HOVER_FIELDS,...t.BUTTON_HOVER_FIELDS,r.LIGHTBOX_ENABLE_FIELD,...r.LIGHTBOX_PLUGIN_TOGGLES,...r.LIGHTBOX_ZOOM_FIELDS,...r.LIGHTBOX_CAPTIONS_FIELDS]},t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS,t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS]},b={key:"hud-income-limits",label:"HUD Income Limits",group:"content-sections",description:"Live HUD max income limits table by county FIPS code with horizontal/vertical layout options",icon:"table",keywords:["hud","income","limits","ami","affordable","mtsp","fips","county","section-8","lihtc"],slugAffinity:["properties","availability","income-limits"],usage:'Live HUD income-limits table for affordable-housing properties. Pulls per-county AMI tiers from HUD MTSP (LIHTC), HUD Section 8 IL, ExactEstate, or hybrid/manual sources, keyed by FIPS code stored on the Locations row. Renders as table, cards, or carousel with a configurable highlight tier (e.g. 60% AMI = "Most Common"). Header is authored via slot children.',tips:["Set Auto-fill from Location to pull FIPS + state automatically â avoids per-page manual entry",'Pair with location-availability above so applicants see "what units exist" and "what income qualifies" together',"Use Hybrid mode when HUD is correct for most tiers but you need to override a specific row"],antiPatterns:["Don't use this on market-rate properties â there are no AMI restrictions to publish","Don't hand-type tiers in Manual mode if a Location row has fipsCode â HUD MTSP fetches live and stays current with HUD's annual update"],related:["income-calculator","availability-table","location-availability"],allowedParents:[],allowedChildren:["*"],supportsChildren:!0,schemaVersion:2,blockedPropKeys:["heading","subheading"],slots:[{role:"heading",label:"Section Heading",elementType:"heading",defaultProps:{text:"",level:"h2"},defaultAnimation:l.SCROLL_FADE_IN},{role:"body",label:"Section Subheading",elementType:"rich-text",defaultProps:{body:""},defaultAnimation:l.SCROLL_FADE_IN}],defaultContentProps:{dataSource:"hud-mtsp",fipsCode:"",stateCode:"",fiscalYear:"",showSource:!0,showHouseholdFilter:!0,highlightTier:60,highlightBadgeText:"Popular",visibleTiers:"",displayMode:"table",cardsPerRow:3,autoplay:!0,interval:5e3,pauseOnHover:!0,initialSlide:0,showArrows:!0,showDots:!1,transitionStyle:"slide",transitionDurationMs:600,slidesToScroll:1,keyboardNav:!0,swipeThreshold:5,loopDirection:"forward",lazyLoad:"ondemand",pauseOnInvisible:!0,respectReducedMotion:!0,dotShape:"circle",overrideEnabled:!1,overrideTiers:[]},defaultStyleProps:{accentColor:"$primary",highlightBorderColor:"$accent",highlightBadgeTextColor:"$primaryForeground",backgroundColor:"transparent",textColor:"$foreground",cardBackground:"$surface",cardBorderRadius:18,householdButtonRadius:8,cardPadding:36,cardBorderColor:"transparent",itemGap:20,borderRadius:"0",shadow:"none"},defaultLayoutProps:(0,i.withMobileFirstDefaults)({padding:"48px 0",stretchFullWidth:!0}),defaultResponsiveProps:{...i.CAROUSEL_RESPONSIVE_DEFAULTS},supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"headingLevel",label:"Heading Tag",type:"select",options:[{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"},{label:"Paragraph (p)",value:"p"}],defaultValue:"h2",description:"Semantic HTML tag for the section heading."},{key:"heading",label:"Heading",type:"text",defaultValue:"Maximum Income Limits"},{key:"subheading",label:"Subheading",type:"text",defaultValue:""},{advanced:!0,key:"dataSource",label:"Data Source",type:"select",description:"Where the income limits come from. HUD MTSP is the LIHTC dataset (published at 20â80% AMI, held harmless by HERA). HUD Section 8 IL is the simpler 30/50/80 set. ExactEstate pulls directly from your property management system. Manual lets you type any tiers. Hybrid starts from HUD and lets the rows below override individual cells.",options:[{label:"HUD MTSP (LIHTC / tax-credit)",value:"hud-mtsp"},{label:"HUD Section 8 IL",value:"hud-il"},{label:"ExactEstate property API",value:"exactestate"},{label:"Manual (client-provided)",value:"manual"},{label:"Hybrid (HUD + manual override)",value:"hybrid"}],defaultValue:"hud-mtsp"},{key:"locationSlug",label:"Auto-fill from Location (slug)",type:"location-slug-picker",description:"Pulls FIPS + state for HUD modes, and pulls EXACTESTATE_SELF_URL from the Location when Data Source is ExactEstate."},{advanced:!0,key:"fipsCode",label:"Location (HUD only)",type:"location-fips-picker",defaultValue:""},{advanced:!0,key:"stateCode",label:"State Code (HUD fallback)",type:"text",defaultValue:""},{advanced:!0,key:"fiscalYear",label:"Fiscal Year (HUD only)",type:"text",defaultValue:""},{advanced:!0,key:"showSource",label:"Show Data Source",type:"checkbox",defaultValue:!0},{advanced:!0,key:"showHouseholdFilter",label:"Household Size Filter",type:"checkbox",defaultValue:!0},{advanced:!0,key:"highlightTier",label:"Highlight AMI Tier",type:"select",options:[{label:"None",value:"
10"},{label:"20% AMI",value:"20"},{label:"25% AMI",value:"25"},{label:"30% AMI",value:"30"},{label:"40% AMI",value:"40"},{label:"45% AMI",value:"45"},{label:"50% AMI",value:"50"},{label:"60% AMI",value:"60"},{label:"70% AMI",value:"70"},{label:"80% AMI",value:"80"}],defaultValue:"60"},{advanced:!0,key:"highlightBadgeText",label:"Highlight Badge Text",type:"text",defaultValue:"Popular",placeholder:"e.g. Popular, Most Common, Your Area"},{advanced:!0,key:"highlightBadgeTextColor",label:"Highlight Badge Text Color",type:"token-color",defaultValue:"$primaryForeground"},{advanced:!0,key:"visibleTiers",label:"Visible AMI Tiers (Order)",type:"text",defaultValue:"",placeholder:"e.g. 60,30,80 (blank = all, sorted ascending)",description:'Comma-separated list of %AMI tiers to show. The order you type IS the display order â put your most important tier first (e.g. "60,30,80" shows 60% first). Leave blank to show every tier the data returns, sorted lowâhigh.'},{advanced:!0,key:"displayMode",label:"Display Mode",type:"select",options:[{label:"Table",value:"table"},{label:"Cards",value:"cards"},{label:"Carousel",value:"carousel"}],defaultValue:"table"},{advanced:!0,key:"cardsPerRow",label:"Cards Per Row",type:"select",options:[{label:"2",value:"2"},{label:"3",value:"3"},{label:"4",value:"4"}],defaultValue:"3"},{advanced:!0,key:"overrideEnabled",label:"Override with manual values",type:"checkbox",defaultValue:!1,description:'When on, the manual rows below replace the fetched data. Prefer setting Data Source to "Manual" or "Hybrid" for the same effect with clearer intent.'},{advanced:!0,key:"overrideTiers",label:"Manual / Hybrid Override Tiers",type:"array",description:"Used when Data Source is Manual (renders these rows), Hybrid (these rows replace matching %AMI rows from HUD), or when the Override toggle above is on. Fill the 1â8 person max annual income in whole dollars per tier.",subFields:[{key:"pctAmi",label:"% AMI",type:"number",min:0,max:200,defaultValue:60},{key:"p1",label:"1 Person Max Income",type:"number",min:0,defaultValue:0},{key:"p2",label:"2 Person Max Income",type:"number",min:0,defaultValue:0},{key:"p3",label:"3 Person Max Income",type:"number",min:0,defaultValue:0},{key:"p4",label:"4 Person Max Income",type:"number",min:0,defaultValue:0},{key:"p5",label:"5 Person Max Income",type:"number",min:0,defaultValue:0},{key:"p6",label:"6 Person Max Income",type:"number",min:0,defaultValue:0},{key:"p7",label:"7 Person Max Income",type:"number",min:0,defaultValue:0},{key:"p8",label:"8 Person Max Income",type:"number",min:0,defaultValue:0}]},{advanced:!0,key:"currency",label:"Currency",type:"select",subGroup:"Formatting",options:[{label:"USD ($)",value:"USD"},{label:"EUR (â¬)",value:"EUR"},{label:"GBP (£)",value:"GBP"},{label:"CAD (CA$)",value:"CAD"}],defaultValue:"USD"},{advanced:!0,key:"numberFormat",label:"Number Format",type:"select",subGroup:"Formatting",options:[{label:"Auto (browser locale)",value:"auto"},{label:"US (1,234.56)",value:"us"},{label:"EU (1.234,56)",value:"eu"}],defaultValue:"auto"},{advanced:!0,key:"loadingText",label:"Loading Text",type:"text",subGroup:"States",defaultValue:"Loading income limitsâ¦"},{advanced:!0,key:"emptyStateHeading",label:"Empty State Heading",type:"text",subGroup:"States",defaultValue:"No income limits found"},{advanced:!0,key:"emptyStateDescription",label:"Empty State Description",type:"text",subGroup:"States",defaultValue:""},{advanced:!0,key:"errorText",label:"Error Text",type:"text",subGroup:"States",defaultValue:"Couldn't load income limits. Try again."}]},{group:"layout",fields:[o.SITE_CONTAINER_WIDTH_FIELD,{key:"layout",label:"Table Layout",type:"select",options:[{label:"Single Column",value:"vertical"},{label:"Side by Side",value:"horizontal"}],defaultValue:"vertical"},{key:"stretchFullWidth",label:"Stretch to Full Width",type:"checkbox",defaultValue:!1,description:"When off, the widget is contained to the page max-width â match this to companion widgets (e.g. location-availability) for a consistent rhythm."},{advanced:!0,key:"autoplay",label:"Auto-Advance Carousel",type:"checkbox",defaultValue:!0,description:"When on, the carousel advances on a timer. Respects prefers-reduced-motion.",showIf:{field:"displayMode",equals:"carousel"}},{advanced:!0,key:"interval",label:"Autoplay Interval (ms)",type:"number",min:2e3,max:15e3,defaultValue:5e3,showIf:{field:"displayMode",equals:"carousel"}},{advanced:!0,key:"pauseOnHover",label:"Pause on Hover",type:"checkbox",defaultValue:!0,showIf:{field:"displayMode",equals:"carousel"},description:"Pauses autoplay while the visitor hovers over a tier card."},{advanced:!0,key:"initialSlide",label:"Initial Slide (0 = first)",type:"number",min:0,max:50,defaultValue:0,showIf:{field:"displayMode",equals:"carousel"}
1,description:"Which tier card is showing on first paint."},{advanced:!0,key:"showArrows",label:"Show Navigation Arrows",type:"checkbox",defaultValue:!0,showIf:{field:"displayMode",equals:"carousel"},description:"Toggles the prev/next arrow buttons."},{advanced:!0,key:"showDots",label:"Show Dots",type:"checkbox",defaultValue:!1,showIf:{field:"displayMode",equals:"carousel"},description:"Toggles the pagination dot indicators below the carousel."},...[...t.CAROUSEL_TRANSITION_FIELDS,...t.CAROUSEL_LAYOUT_FIELDS,...t.CAROUSEL_NAV_FIELDS,...t.CAROUSEL_CHROME_FIELDS,...t.CAROUSEL_LAZY_FIELDS].map(e=>({...e,showIf:{field:"displayMode",equals:"carousel"}}))]},{group:"style",fields:[{key:"headingColor",label:"Heading Color",type:"token-color"},{advanced:!0,key:"headingSize",label:"Heading Size",type:"select",options:[{label:"Small",value:"sm"},{label:"Medium",value:"md"},{label:"Large",value:"lg"},{label:"XL",value:"xl"}],defaultValue:"lg"},{advanced:!0,key:"headingAlign",label:"Heading Alignment",type:"select",options:[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],defaultValue:"center"},{key:"accentColor",label:"Accent Color",type:"token-color",defaultValue:"$primary"},{key:"highlightBorderColor",label:"Highlight Border Color",type:"token-color",defaultValue:"$accent"},{key:"backgroundColor",label:"Background Color",type:"token-color",defaultValue:"$surface"},{key:"textColor",label:"Text Color",type:"token-color",defaultValue:"$foreground"},{key:"cardBackground",label:"Card Background",type:"token-color",defaultValue:"$surface"},{key:"cardBorderRadius",label:"Card Radius (px)",type:"slider",min:0,max:32,defaultValue:18},{advanced:!0,key:"tierStripHeight",label:"Top Accent Strip Height (px)",type:"slider",min:0,max:12,defaultValue:0,description:"Height of the accent strip across the top of each tier card. 0 hides the strip; 4 matches the bold-card preset that ships per-tenant. Falls back to the Highlight Border / Accent colors when no Strip Color is set."},{key:"tierStripColor",label:"Top Accent Strip Color",type:"token-color",description:"Color of the top accent strip. Falls back to Highlight Border, then Accent, then site-accent."},{advanced:!0,key:"householdButtonRadius",label:"Household Button Radius",type:"slider",min:0,max:32,defaultValue:8,description:"Corner radius for the household-size selector buttons and active state."},{advanced:!0,key:"cardPadding",label:"Card Padding (px)",type:"slider",min:0,max:64,defaultValue:36,description:"Inner spacing of each tier card."},{key:"cardBorderColor",label:"Card Border Color",type:"token-color",defaultValue:"",description:"Outline color around each tier card. Defaults to transparent so the surface tone defines the edge."},{key:"itemGap",label:"Item Spacing (px)",type:"slider",min:0,max:64,defaultValue:20,description:"Spacing between tier cards in the grid / carousel."},{key:"contentMaxWidth",label:"Content Max Width",type:"text",defaultValue:"",placeholder:"1320px",description:'Cap the inner content width (heading row + cards). Blank uses the default of 1320px. Accepts any CSS length â "1440px", "100%", "80rem".'},{key:"borderRadius",label:"Element Radius (px)",type:"slider",min:0,max:24,defaultValue:0},{key:"shadow",label:"Shadow",type:"select",options:[{label:"None",value:"none"},{label:"Small",value:"sm"},{label:"Medium",value:"md"},{label:"Large",value:"lg"}],defaultValue:"none",description:"Starting point for the per-card drop shadow. The fields below override specific values."},{advanced:!0,key:"shadowBlur",label:"Shadow Blur (px)",type:"slider",min:0,max:80,defaultValue:20,description:"Default matches the Md preset baseline."},{advanced:!0,key:"shadowOffsetY",label:"Shadow Offset Y (px)",type:"slider",min:0,max:40,defaultValue:10,description:"Vertical offset. Default matches the Md preset baseline."},{advanced:!0,key:"shadowOpacity",label:"Shadow Opacity (%)",type:"slider",min:0,max:30,defaultValue:8,description:"0 = invisible, 30 = strongest. Default matches the Md preset baseline."},{advanced:!0,key:"shadowColor",label:"Shadow Color",type:"token-color",description:"Defaults to a neutral slate. Try $foreground or $accent for tinted shadows."},...t.CARD_SHADOW_FIELDS,...t.CARD_HOVER_FIELDS,...t.CAROUSEL_BUTTON_VARIA
1NT_FIELDS.map(e=>({...e,showIf:{field:"displayMode",equals:"carousel"}})),...t.CAROUSEL_ARROW_FIELDS.map(e=>({...e,showIf:{field:"displayMode",equals:"carousel"}}))]},t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS_WITH_FULL_BLEED,t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS]},g={key:"floor-plans",label:"Floor Plans",group:"content-sections",description:"Simple image grid for floor plans â full-width images in configurable columns with optional lightbox",icon:"gallery",keywords:["floor","plans","floorplan","layout","blueprint","images","grid"],slugAffinity:["properties","availability","floor-plans"],usage:"Simple image-only floor-plan grid with optional lightbox for full-size viewing. Use on a property detail page when you want visitors to see the layouts but don't need per-plan pricing/availability fields (use floor-plan-viewer or availability-table for that). Header is authored via slot children.",tips:["Set 2 columns on desktop for legibility â floor plans need width to read; 4 columns shrinks them too much","Always fill Alt Text on each image â screen readers and SEO depend on it, and the WCAG audit flags blank alts"],antiPatterns:["Don't use this when you have rent / availability data â switch to availability-table or location-availability so visitors can act on what they see"],related:["floor-plan-viewer","availability-table","location-availability","gallery"],allowedParents:[],allowedChildren:["*"],supportsChildren:!0,schemaVersion:2,blockedPropKeys:["heading","subheading"],slots:[{role:"heading",label:"Section Heading",elementType:"heading",defaultProps:{text:"",level:"h2"},defaultAnimation:l.SCROLL_FADE_IN},{role:"body",label:"Section Subheading",elementType:"rich-text",defaultProps:{body:""},defaultAnimation:l.SCROLL_FADE_IN}],defaultContentProps:{images:[],enableLightbox:!0,lightbox:!0,lightboxPluginZoom:!0,lightboxPluginThumbnails:!0,lightboxPluginFullscreen:!0,lightboxPluginCaptions:!0,lightboxPluginCounter:!0,lightboxZoomMaxPixelRatio:6,rpaLayout:"rows",rpaTargetRowHeight:280,rpaSpacing:24},defaultStyleProps:{},defaultLayoutProps:(0,i.withMobileFirstDefaults)({columns:2,gap:"24"}),defaultResponsiveProps:{mobile:{columns:1},tablet:{columns:2}},supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"headingLevel",label:"Heading Tag",type:"select",options:[{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"},{label:"Paragraph (p)",value:"p"}],defaultValue:"h2",description:"Semantic HTML tag for the section heading."},{key:"headingTag",label:"Heading Level",type:"select",options:[{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"}],defaultValue:"h2"},{key:"images",label:"Images",type:"array",subFields:[{key:"url",label:"Image",type:"upload"},{key:"alt",label:"Alt Text",type:"text"},{key:"caption",label:"Caption",type:"text"}]},{advanced:!0,key:"enableLightbox",label:"Enable Lightbox (legacy)",type:"checkbox",defaultValue:!0,description:"Legacy toggle. New sites should use the Lightbox group below."}]},{group:"layout",fields:[{key:"columns",label:"Columns",type:"select",options:[{label:"1 Column",value:"1"},{label:"2 Columns",value:"2"},{label:"3 Columns",value:"3"},{label:"4 Columns",value:"4"}],defaultValue:"2"},{key:"headingSpacing",label:"Heading Spacing",type:"slider",min:0,max:64,defaultValue:16},{key:"gap",label:"Gap (px)",type:"slider",min:0,max:48,defaultValue:24},{key:"stretchFullWidth",label:"Stretch to Full Width",type:"checkbox",defaultValue:!1},...r.RPA_LAYOUT_FIELDS]},{group:"style",fields:[{key:"backgroundColor",label:"Background Color",type:"token-color"},{key:"textColor",label:"Text Color",type:"token-color"},{key:"headingColor",label:"Heading Color",type:"token-color"},{advanced:!0,key:"headingSize",label:"Heading Size",type:"select",options:[{label:"Small",value:"sm"},{label:"Medium",value:"md"},{label:"Large",value:"lg"},{label:"XL",value:"xl"}],defaultValue:"lg"},{advanced:!0,key:"headingAlign",label:"Heading Alignment",type:"select",options:[{label:"Left",value:"left"},{label:"Center",value:"center"},{label:"Right",value:"right"}],defaultValue:"center"},{key:"imageBorderRadius",label:"Image Border Radius",type:"slider",min:0,max:24,defaultValue:8},{key:"imageBorderColor",label:"Image Border Color",type:"token-color",defaultValue:"$border"},{key:"borderTop",label:"Border Top",type:"slider",min:0,max:8,defaultValue:0},{key:"borderBottom",label:"Border Bottom",type:"slider",min:0,max:8,defaultValue:0},{key:"borderLeft",label:"Border Left",type:"slider",min:0,max:8,defaultValue:0},{key:"borderRight",label:"Border Right",type:"slider",min:0,max:8,defaultValue:0},{key:"imageShadow",label:"Image Shadow",type:"select",options:[{label:"None",value:"none"},{label:"Small",value:"sm"},{label:"Medium",value:"md"},{label:"Large",value:"lg"}],defaultValue:"none"},{key:"cardBorderRadius",label:"Card Radius (px)",type:"slider",min:0,max:32,defaultValue:12},t.SHADOW_FIELD,t.SHADOW_COLOR_FIELD,...t.CARD_HOVER_FIELDS,...r.ALL_LIGHTBOX_FIELDS]}
1,t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS,t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS]},f={key:"location-availability",label:"Location Availability",group:"content-sections",description:"Per-location availability cards â pick a Location and the widget auto-resolves its ExactEstate property feed. Use on single-location detail pages.",icon:"table",keywords:["availability","location","property","units","floorplan","rent","exactestate","apply"],slugAffinity:["properties","availability","rentals","listings"],usage:"Per-location availability widget for single-property detail pages. Pick a Location and the widget auto-resolves its ExactEstate property feed (master URL on SiteSettings, optional per-Location override) â no URL to paste, no filter string to maintain. Renders one card per available floorplan with rent/sqft/badge and Apply + Contact CTAs. Header is authored via slot children.",tips:["Pair with hud-income-limits below so applicants see availability + qualifying income on the same page","Leave hideIfEmpty on so a fully-leased property hides the widget instead of showing an empty state","Use Carousel layout when the property has 5+ floorplans; Grid for 1-4 plans reads better"],antiPatterns:["Don't use this on a portfolio-wide page â use availability-table which supports cross-property feeds","Don't paste raw ExactEstate URLs into the Location row â pick the property in the Location admin and let the widget resolve it"],related:["availability-table","hud-income-limits","floor-plan-viewer","property-highlights"],allowedParents:[],allowedChildren:["*"],supportsChildren:!0,schemaVersion:2,blockedPropKeys:["heading","subheading"],slots:[{role:"heading",label:"Section Heading",elementType:"heading",defaultProps:{text:"",level:"h2"},defaultAnimation:l.SCROLL_FADE_IN},{role:"body",label:"Section Subheading",elementType:"rich-text",defaultProps:{body:""},defaultAnimation:l.SCROLL_FADE_IN}],defaultContentProps:{locationSlug:"",variant:"grid",cardsPerRow:3,cardsPerView:3,autoplay:!1,interval:5e3,pauseOnHover:!0,initialSlide:0,showArrows:!0,showDots:!1,transitionStyle:"slide",transitionDurationMs:600,slidesToScroll:1,keyboardNav:!0,swipeThreshold:5,loopDirection:"forward",lazyLoad:"ondemand",pauseOnInvisible:!0,respectReducedMotion:!0,dotShape:"circle",showApplyButton:!0,applyUrl:"/apply",showContactButton:!0,contactButtonLabel:"Contact Us Now",contactButtonHref:"#contact",hideUnitCount:!1,availabilityBadge:"",hidePrice
1:!1,priceOverrideText:"",hideDotsOnMobile:!1,propertyImages:[],emptyMessage:"No units currently available at this location. Please check back soon.",hideIfEmpty:!0},defaultStyleProps:{backgroundColor:"transparent",textColor:"$foreground",accentColor:"$accent",cardBackground:"$surface",cardBorderRadius:18,cardPadding:32,cardBorderColor:"transparent",cardBorderWidth:0,itemGap:20,shadow:"none",cardShadow:"md",cardShadowStyle:"soft",cardShadowPosition:"bottom-right"},defaultLayoutProps:(0,i.withMobileFirstDefaults)({padding:"clamp(28px, 4vw, 42px)",stretchFullWidth:!0}),defaultResponsiveProps:{...i.CAROUSEL_RESPONSIVE_DEFAULTS},supportedResizeHandles:["right","bottom","bottom-right"],supportsStretch:!0,supportsResponsiveOverrides:!0,aspectRatioBehavior:"free",settingsGroups:[{group:"content",fields:[{key:"headingLevel",label:"Heading Tag",type:"select",options:[{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"},{label:"Paragraph (p)",value:"p"}],defaultValue:"h2",description:"Semantic HTML tag for the section heading."},{key:"locationSlug",label:"Location",type:"location-slug-picker",description:"Pick a Location from this website. Its stored ExactEstate property UUID + site-wide ExactEstate base URL are used to fetch availability automatically â no URL to paste, no filter string to maintain."},{key:"variant",label:"Layout",type:"select",defaultValue:"grid",options:[{label:"Grid",value:"grid"},{label:"Carousel",value:"carousel"}],description:"Grid shows every floorplan in a grid. Carousel shows them in a horizontal swipeable row with prev/next buttons."},{advanced:!0,key:"cardsPerRow",label:"Cards Per Row",type:"select",defaultValue:"3",options:[{label:"1",value:"1"},{label:"2",value:"2"},{label:"3",value:"3"},{label:"4",value:"4"}]},{advanced:!0,key:"cardsPerView",label:"Cards Per View",type:"select",defaultValue:"3",options:[{label:"1",value:"1"},{label:"2",value:"2"},{label:"3",value:"3"},{label:"4",value:"4"}]},{advanced:!0,key:"autoplay",label:"Autoplay",type:"checkbox",defaultValue:!1,showIf:{field:"variant",equals:"carousel"},description:"Carousel layout only â advances to the next card on a timer."},{advanced:!0,key:"interval",label:"Autoplay Interval (ms)",type:"number",min:1e3,max:2e4,defaultValue:5e3,showIf:{field:"variant",equals:"carousel"},description:"How long each card stays visible before the next slides in (autoplay must be on)."},{advanced:!0,key:"pauseOnHover",label:"Pause on Hover",type:"checkbox",defaultValue:!0,showIf:{field:"variant",equals:"carousel"},description:"Carousel layout only â pauses autoplay while the visitor hovers over a card."},{advanced:!0,key:"initialSlide",label:"Initial Slide (0 = first)",type:"number",min:0,max:50,defaultValue:0,showIf:{field:"variant",equals:"carousel"},description:"Carousel layout only â which card shows on first paint."},{advanced:!0,key:"showArrows",label:"Show Navigation Arrows",type:"checkbox",defaultValue:!0,showIf:{field:"variant",equals:"carousel"},description:"Carousel layout only â toggles the prev/next arrow buttons."},{advanced:!0,key:"showDots",label:"Show Dots",type:"checkbox",defaultValue:!1,showIf:{field:"variant",equals:"carousel"},description:"Carousel layout only â toggles the pagination dot indicators below the cards."},...[...t.CAROUSEL_TRANSITION_FIELDS,...t.CAROUSEL_LAYOUT_FIELDS,...t.CAROUSEL_NAV_FIELDS,...t.CAROUSEL_CHROME_FIELDS,...t.CAROUSEL_LAZY_FIELDS].map(n),{advanced:!0,key:"showApplyButton",label:"Show Apply Button",type:"checkbox",defaultValue:!0},{key:"applyUrl",label:"Default Apply URL (fallback only)",type:"page-link",defaultValue:"/apply",description:"Only used when ExactEstate doesn't publish a per-property apply URL for this location."},{key:"hideUnitCount",label:"Hide Unit Count",type:"checkbox",defaultValue:!1,description:'Hide the "12 / Units" stat and the count prefix on the per-card status badge. Useful when you want a clean "Available" pill instead of an exact unit count.'},{key:"availabilityBadge",label:"Availability Badge Text",type:"text",defaultValue:"",placeholder:"Available",description:'When set, the top status badge on each card uses this label instead of "N Units Available". Pairs with Hide Unit Count for a clean per-property "Available" pill.'},{key:"hidePrice",label:"Hide Pricing",type:"checkbox",defaultValue:!1,description:"Hide the per-card price/rent chip. Use on conversion-focused pages where you want prospects to inquire rather than self-qualify on price."},{key:"priceOverrideText",label:"Price Replacement Text",type:"text",defaultValue:"",placeholder:"Ask about our current Specials",description:'When "Hide Pricing" is on, show this text in place of the price chip (e.g. "Ask about our current Specials"). Leave blank to show no price at all.'},{key:"hideDotsOnMobile",label:"Hide Carousel Dots on Mobile",type:"checkbox",defaultValue:!1,description:"Hide the pagination dots beneath the carousel at mobile widths (â¤768px), where swipe is the primary affordance and the small dots crowd the layout."},{key:"showContactButton",label:"Show Contact Button",type:"checkbox",defaultValue:!0,description:'Renders a small "Contact Us Now" link in the top-right of each unit card, linking to the page\'s contact anchor.'},{key:"contactButtonLabel",label:"Contact Button Label",type:"text",defaultValue:"Contact Us Now"},{key:"contactButtonHref",label:"Contact Button Link",type:"page-link",defaultValue:"#contact",description:"Defaults to the #contact anchor on this page. Use a full URL to point elsewhere."},{advanced:!0,key:"propertyImages",label:"Property Images",type:"array",description:"Optional property image mapping used by floorplan cards. Match propertyName to the ExactEstate property name.",subFields:[{key:"propertyName",label:"Property Name",type:"text"},{key:"image",label:"Image",type:"upload"}]},{advanced:!0,key:"emptyMessage",label:"Empty Message",type:"text",defaultValue:"No units currently available at this location. Please check back soon."},{key:"hideIfEmpty",label:"Hide When No Availability",type:"checkbox",defaultValue:!0,description:"When on, the whole widget disappears if there are no available units â keeps the detail page clean for fully-leased locations."},{advanced:!0,key:"loadingText",label:"Loading Text",type:"text",subGroup:"States",defaultValue:"Loading availabilityâ¦"},{advanced:!0,key:"errorText",label:"Error Text",type:"text",subGroup:"States",defaultValue:"Couldn't load availability. Try again."}]},{group:"style",fields:[o.SITE_CONTAINER_WIDTH_FIELD,{key:"backgroundColor",label:"Backgroun
1d Color",type:"token-color",defaultValue:"$surface"},{key:"textColor",label:"Text Color",type:"token-color",defaultValue:"$foreground"},{key:"accentColor",label:"Accent Color",type:"token-color",defaultValue:"$accent",description:"Drives the BR/BA unit-type label, badge tints, and other accent details on each card. Independent of the card border color."},{key:"cardBackground",label:"Card Background",type:"token-color",defaultValue:"$surface"},{key:"cardBorderRadius",label:"Card Radius (px)",type:"slider",min:0,max:40,defaultValue:18},{advanced:!0,key:"cardStripHeight",label:"Top Accent Strip Height (px)",type:"slider",min:0,max:12,defaultValue:0,description:"Height of the accent strip across the top of each card. 0 hides the strip; 4 matches the bold-card preset. Shares the same chrome with availability-table."},{key:"cardStripColor",label:"Top Accent Strip Color",type:"token-color",description:"Color of the top accent strip. Falls back to the section accent + site-accent tokens when unset."},{advanced:!0,key:"cardPadding",label:"Card Padding (px)",type:"slider",min:0,max:64,defaultValue:32,description:"Inner spacing of each unit card. Match the HUD income-limits widget on the same page for consistent rhythm."},{key:"cardBorderColor",label:"Card Border Color",type:"token-color",defaultValue:"",description:"Outline around each card. Defaults to transparent so the surface tone defines the edge â bump to $accent for an outlined treatment."},{advanced:!0,key:"cardBorderWidth",label:"Card Border Width (px)",type:"slider",min:0,max:6,defaultValue:0},t.ITEM_SPACING_FIELD,{key:"availableBadgeBg",label:"Available Badge Background",type:"token-color",defaultValue:"$success"},{key:"availableBadgeColor",label:"Available Badge Text",type:"token-color",defaultValue:"$successForeground"},{key:"limitedBadgeBg",label:"Limited Badge Background",type:"token-color",defaultValue:"$warning"},{key:"limitedBadgeColor",label:"Limited Badge Text",type:"token-color",defaultValue:"$warningForeground"},{key:"waitlistBadgeBg",label:"Waitlist Badge Background",type:"token-color",defaultValue:"$accent"},{key:"waitlistBadgeColor",label:"Waitlist Badge Text",type:"token-color",defaultValue:"$accentForeground"},...t.CAROUSEL_BUTTON_VARIANT_FIELDS,...t.CAROUSEL_ARROW_FIELDS,{key:"borderRadius",label:"Element Radius (px)",type:"slider",min:0,max:32,defaultValue:0},t.SHADOW_FIELD,t.SHADOW_COLOR_FIELD,...t.CARD_SHADOW_FIELDS,...t.CARD_HOVER_FIELDS]},t.SPACING_SETTINGS,t.RESPONSIVE_SETTINGS_WITH_FULL_BLEED,t.ANIMATION_SETTINGS,t.VISIBILITY_SETTINGS],demoVideoUrl:"https://cdn.evara.build/help/v1/element.location-availability.mp4"},m=(0,a.pickElementShape)(h),v=(0,a.pickElementShape)(u),k=(0,a.pickElementShape)(c),S=(0,a.pickElementShape)(g),w=(0,a.pickElementShape)(d),I=(0,a.pickElementShape)(b),x=(0,a.pickElementShape)(p),C=(0,a.pickElementShape)(f),L=(0,a.pickElementShape)(y),E=(0,a.pickElementShape)(s),A=[s,d,p,u,c,h,f,y,b,g];e.s(["availabilityTableElement",0,h,"availabilityTableShape",0,m,"badgeItemElement",0,u,"badgeItemShape",0,v,"complianceBadgeStripElement",0,c,"complianceBadgeStripShape",0,k,"floorPlanViewerElement",0,d,"floorPlanViewerShape",0,w,"floorPlansElement",0,g,"floorPlansShape",0,S,"hudIncomeLimitsElement",0,b,"hudIncomeLimitsShape",0,I,"incomeCalculatorElement",0,p,"incomeCalculatorShape",0,x,"locationAvailabilityElement",0,f,"locationAvailabilityShape",0,C,"locationCardListElement",0,y,"locationCardListShape",0,L,"locationSearchElement",0,s,"locationSearchShape",0,E,"propertyManagementElements",0,A])}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.