@meetelise/studio-components 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Accordion.d.ts +16 -0
- package/dist/components/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion.js +28 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/AddressBlock.d.ts +14 -0
- package/dist/components/AddressBlock.d.ts.map +1 -0
- package/dist/components/AddressBlock.js +13 -0
- package/dist/components/AddressBlock.js.map +1 -0
- package/dist/components/AmenityList.d.ts +20 -0
- package/dist/components/AmenityList.d.ts.map +1 -0
- package/dist/components/AmenityList.js +75 -0
- package/dist/components/AmenityList.js.map +1 -0
- package/dist/components/Badge.d.ts +9 -0
- package/dist/components/Badge.d.ts.map +1 -0
- package/dist/components/Badge.js +16 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Button.d.ts +12 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +38 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/CTABanner.d.ts +11 -0
- package/dist/components/CTABanner.d.ts.map +1 -0
- package/dist/components/CTABanner.js +17 -0
- package/dist/components/CTABanner.js.map +1 -0
- package/dist/components/ContactForm.d.ts +11 -0
- package/dist/components/ContactForm.d.ts.map +1 -0
- package/dist/components/ContactForm.js +91 -0
- package/dist/components/ContactForm.js.map +1 -0
- package/dist/components/Container.d.ts +9 -3
- package/dist/components/Container.d.ts.map +1 -1
- package/dist/components/Container.js +19 -8
- package/dist/components/Container.js.map +1 -1
- package/dist/components/Divider.d.ts +9 -0
- package/dist/components/Divider.d.ts.map +1 -0
- package/dist/components/Divider.js +15 -0
- package/dist/components/Divider.js.map +1 -0
- package/dist/components/EliseChat.d.ts +8 -0
- package/dist/components/EliseChat.d.ts.map +1 -0
- package/dist/components/EliseChat.js +22 -0
- package/dist/components/EliseChat.js.map +1 -0
- package/dist/components/FeatureCard.d.ts +15 -0
- package/dist/components/FeatureCard.d.ts.map +1 -0
- package/dist/components/FeatureCard.js +13 -0
- package/dist/components/FeatureCard.js.map +1 -0
- package/dist/components/Footer.d.ts +10 -0
- package/dist/components/Footer.d.ts.map +1 -0
- package/dist/components/Footer.js +19 -0
- package/dist/components/Footer.js.map +1 -0
- package/dist/components/Gallery.d.ts +18 -0
- package/dist/components/Gallery.d.ts.map +1 -0
- package/dist/components/Gallery.js +86 -0
- package/dist/components/Gallery.js.map +1 -0
- package/dist/components/Icon.d.ts +8 -0
- package/dist/components/Icon.d.ts.map +1 -0
- package/dist/components/Icon.js +26 -0
- package/dist/components/Icon.js.map +1 -0
- package/dist/components/Lightbox.d.ts +13 -0
- package/dist/components/Lightbox.d.ts.map +1 -0
- package/dist/components/Lightbox.js +23 -0
- package/dist/components/Lightbox.js.map +1 -0
- package/dist/components/MapEmbed.d.ts +16 -0
- package/dist/components/MapEmbed.d.ts.map +1 -0
- package/dist/components/MapEmbed.js +6 -0
- package/dist/components/MapEmbed.js.map +1 -0
- package/dist/components/Modal.d.ts +9 -0
- package/dist/components/Modal.d.ts.map +1 -0
- package/dist/components/Modal.js +19 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/Nav.d.ts +11 -0
- package/dist/components/Nav.d.ts.map +1 -0
- package/dist/components/Nav.js +53 -0
- package/dist/components/Nav.js.map +1 -0
- package/dist/components/ScheduleTour.d.ts +8 -0
- package/dist/components/ScheduleTour.d.ts.map +1 -0
- package/dist/components/ScheduleTour.js +158 -0
- package/dist/components/ScheduleTour.js.map +1 -0
- package/dist/components/ScrollReveal.d.ts +12 -0
- package/dist/components/ScrollReveal.d.ts.map +1 -0
- package/dist/components/ScrollReveal.js +37 -0
- package/dist/components/ScrollReveal.js.map +1 -0
- package/dist/components/Slot.d.ts +14 -0
- package/dist/components/Slot.d.ts.map +1 -0
- package/dist/components/Slot.js +5 -0
- package/dist/components/Slot.js.map +1 -0
- package/dist/components/Stat.d.ts +12 -0
- package/dist/components/Stat.d.ts.map +1 -0
- package/dist/components/Stat.js +12 -0
- package/dist/components/Stat.js.map +1 -0
- package/dist/components/Testimonial.d.ts +10 -0
- package/dist/components/Testimonial.d.ts.map +1 -0
- package/dist/components/Testimonial.js +9 -0
- package/dist/components/Testimonial.js.map +1 -0
- package/dist/components/Text.d.ts +3 -2
- package/dist/components/Text.d.ts.map +1 -1
- package/dist/components/Text.js +16 -7
- package/dist/components/Text.js.map +1 -1
- package/dist/components/ThemeProvider.d.ts.map +1 -1
- package/dist/components/ThemeProvider.js +85 -5
- package/dist/components/ThemeProvider.js.map +1 -1
- package/dist/components/VideoHero.d.ts +16 -0
- package/dist/components/VideoHero.d.ts.map +1 -0
- package/dist/components/VideoHero.js +19 -0
- package/dist/components/VideoHero.js.map +1 -0
- package/dist/components/VideoPlayer.d.ts +18 -0
- package/dist/components/VideoPlayer.d.ts.map +1 -0
- package/dist/components/VideoPlayer.js +14 -0
- package/dist/components/VideoPlayer.js.map +1 -0
- package/dist/components/VirtualTourEmbed.d.ts +9 -0
- package/dist/components/VirtualTourEmbed.d.ts.map +1 -0
- package/dist/components/VirtualTourEmbed.js +5 -0
- package/dist/components/VirtualTourEmbed.js.map +1 -0
- package/dist/components/browser/ComponentBrowser.d.ts +2 -0
- package/dist/components/browser/ComponentBrowser.d.ts.map +1 -0
- package/dist/components/browser/ComponentBrowser.js +73 -0
- package/dist/components/browser/ComponentBrowser.js.map +1 -0
- package/dist/components/browser/ComponentShowcase.d.ts +8 -0
- package/dist/components/browser/ComponentShowcase.d.ts.map +1 -0
- package/dist/components/browser/ComponentShowcase.js +104 -0
- package/dist/components/browser/ComponentShowcase.js.map +1 -0
- package/dist/components/browser/componentMeta.d.ts +40 -0
- package/dist/components/browser/componentMeta.d.ts.map +1 -0
- package/dist/components/browser/componentMeta.js +726 -0
- package/dist/components/browser/componentMeta.js.map +1 -0
- package/dist/components/registry.d.ts.map +1 -1
- package/dist/components/registry.js +56 -0
- package/dist/components/registry.js.map +1 -1
- package/dist/components/units/FloorPlanCard.d.ts +16 -0
- package/dist/components/units/FloorPlanCard.d.ts.map +1 -0
- package/dist/components/units/FloorPlanCard.js +28 -0
- package/dist/components/units/FloorPlanCard.js.map +1 -0
- package/dist/components/units/FloorplanExplorer.d.ts +21 -0
- package/dist/components/units/FloorplanExplorer.d.ts.map +1 -0
- package/dist/components/units/FloorplanExplorer.js +39 -0
- package/dist/components/units/FloorplanExplorer.js.map +1 -0
- package/dist/components/units/PricingMatrixModal.d.ts +12 -0
- package/dist/components/units/PricingMatrixModal.d.ts.map +1 -0
- package/dist/components/units/PricingMatrixModal.js +78 -0
- package/dist/components/units/PricingMatrixModal.js.map +1 -0
- package/dist/components/units/UnitCard.d.ts +12 -3
- package/dist/components/units/UnitCard.d.ts.map +1 -1
- package/dist/components/units/UnitCard.js +33 -5
- package/dist/components/units/UnitCard.js.map +1 -1
- package/dist/components/units/UnitDetail.d.ts +11 -0
- package/dist/components/units/UnitDetail.d.ts.map +1 -0
- package/dist/components/units/UnitDetail.js +16 -0
- package/dist/components/units/UnitDetail.js.map +1 -0
- package/dist/components/units/UnitExplorer.d.ts +16 -2
- package/dist/components/units/UnitExplorer.d.ts.map +1 -1
- package/dist/components/units/UnitExplorer.js +128 -27
- package/dist/components/units/UnitExplorer.js.map +1 -1
- package/dist/components/units/UnitFilters.d.ts +2 -2
- package/dist/components/units/UnitFilters.d.ts.map +1 -1
- package/dist/components/units/UnitFilters.js +2 -2
- package/dist/components/units/UnitFilters.js.map +1 -1
- package/dist/components/units/UnitPage.d.ts +8 -0
- package/dist/components/units/UnitPage.d.ts.map +1 -0
- package/dist/components/units/UnitPage.js +130 -0
- package/dist/components/units/UnitPage.js.map +1 -0
- package/dist/components/units/types.d.ts +109 -24
- package/dist/components/units/types.d.ts.map +1 -1
- package/dist/components/units/types.js +1 -0
- package/dist/components/units/types.js.map +1 -1
- package/dist/hooks/useAnalytics.d.ts +16 -0
- package/dist/hooks/useAnalytics.d.ts.map +1 -0
- package/dist/hooks/useAnalytics.js +65 -0
- package/dist/hooks/useAnalytics.js.map +1 -0
- package/dist/hooks/useAuth.d.ts.map +1 -1
- package/dist/hooks/useAuth.js +8 -2
- package/dist/hooks/useAuth.js.map +1 -1
- package/dist/hooks/useFees.d.ts +8 -0
- package/dist/hooks/useFees.d.ts.map +1 -0
- package/dist/hooks/useFees.js +37 -0
- package/dist/hooks/useFees.js.map +1 -0
- package/dist/hooks/useFloorplans.d.ts +19 -0
- package/dist/hooks/useFloorplans.d.ts.map +1 -0
- package/dist/hooks/useFloorplans.js +52 -0
- package/dist/hooks/useFloorplans.js.map +1 -0
- package/dist/hooks/useModal.d.ts +11 -0
- package/dist/hooks/useModal.d.ts.map +1 -0
- package/dist/hooks/useModal.js +35 -0
- package/dist/hooks/useModal.js.map +1 -0
- package/dist/hooks/useProperty.d.ts +66 -0
- package/dist/hooks/useProperty.d.ts.map +1 -0
- package/dist/hooks/useProperty.js +49 -0
- package/dist/hooks/useProperty.js.map +1 -0
- package/dist/hooks/useSpecials.d.ts +8 -0
- package/dist/hooks/useSpecials.d.ts.map +1 -0
- package/dist/hooks/useSpecials.js +37 -0
- package/dist/hooks/useSpecials.js.map +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +72 -3
- package/dist/renderer.js.map +1 -1
- package/dist/router.d.ts +9 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +34 -1
- package/dist/router.js.map +1 -1
- package/dist/types.d.ts +47 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/imageUrl.d.ts +21 -0
- package/dist/utils/imageUrl.d.ts.map +1 -0
- package/dist/utils/imageUrl.js +46 -0
- package/dist/utils/imageUrl.js.map +1 -0
- package/dist/utils/resolveConfig.d.ts +53 -0
- package/dist/utils/resolveConfig.d.ts.map +1 -0
- package/dist/utils/resolveConfig.js +291 -0
- package/dist/utils/resolveConfig.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
const DEFAULT_SCRIPT_URL = "https://chat.meetelise.com/widget.js";
|
|
3
|
+
export function EliseChat({ buildingId, scriptUrl = DEFAULT_SCRIPT_URL, }) {
|
|
4
|
+
const injectedRef = useRef(false);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
if (!buildingId || injectedRef.current)
|
|
7
|
+
return;
|
|
8
|
+
injectedRef.current = true;
|
|
9
|
+
const script = document.createElement("script");
|
|
10
|
+
script.src = scriptUrl;
|
|
11
|
+
script.async = true;
|
|
12
|
+
script.setAttribute("data-building-id", buildingId);
|
|
13
|
+
document.body.appendChild(script);
|
|
14
|
+
return () => {
|
|
15
|
+
// Best-effort cleanup; the widget may leave residual DOM elements
|
|
16
|
+
script.remove();
|
|
17
|
+
};
|
|
18
|
+
}, [buildingId, scriptUrl]);
|
|
19
|
+
// Renders nothing — the widget injects its own floating UI
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=EliseChat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EliseChat.js","sourceRoot":"","sources":["../../src/components/EliseChat.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQ1C,MAAM,kBAAkB,GAAG,sCAAsC,CAAC;AAElE,MAAM,UAAU,SAAS,CAAC,EACxB,UAAU,EACV,SAAS,GAAG,kBAAkB,GACf;IACf,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAElC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,OAAO;YAAE,OAAO;QAC/C,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAE3B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;QACvB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,OAAO,GAAG,EAAE;YACV,kEAAkE;YAClE,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAE5B,2DAA2D;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface FeatureCardProps {
|
|
2
|
+
image?: string;
|
|
3
|
+
imageAlt?: string;
|
|
4
|
+
/** Image position: top (default), left, right */
|
|
5
|
+
imagePosition?: "top" | "left" | "right";
|
|
6
|
+
title?: string;
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
linkTo?: string;
|
|
10
|
+
linkLabel?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function FeatureCard({ image, imageAlt, imagePosition, title, subtitle, description, linkTo, linkLabel, className, }: FeatureCardProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=FeatureCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureCard.d.ts","sourceRoot":"","sources":["../../src/components/FeatureCard.tsx"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,aAAqB,EACrB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAA0B,EAC1B,SAAS,GACV,EAAE,gBAAgB,2CAgElB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
import { navigate } from "../router";
|
|
4
|
+
export function FeatureCard({ image, imageAlt, imagePosition = "top", title, subtitle, description, linkTo, linkLabel = "Learn More →", className, }) {
|
|
5
|
+
const isHorizontal = imagePosition === "left" || imagePosition === "right";
|
|
6
|
+
const imageEl = image ? (_jsx("div", { className: twMerge("overflow-hidden bg-gray-100", isHorizontal ? "w-2/5 shrink-0" : "aspect-[16/10] w-full"), children: _jsx("img", { src: image, alt: imageAlt ?? title ?? "", className: "w-full h-full object-cover transition-transform duration-500 group-hover:scale-105", loading: "lazy" }) })) : null;
|
|
7
|
+
const contentEl = (_jsxs("div", { className: twMerge("flex flex-col gap-2", isHorizontal ? "flex-1 p-6" : "p-6"), children: [subtitle && (_jsx("span", { className: "text-xs font-semibold uppercase tracking-widest text-[var(--color-primary)]", children: subtitle })), title && (_jsx("h3", { className: "text-xl font-bold text-[var(--color-foreground)]", children: title })), description && (_jsx("p", { className: "text-sm leading-relaxed text-[var(--color-secondary)]", children: description })), linkTo && (_jsx("a", { href: linkTo, onClick: (e) => {
|
|
8
|
+
e.preventDefault();
|
|
9
|
+
navigate(linkTo);
|
|
10
|
+
}, className: "mt-auto pt-2 text-sm font-semibold text-[var(--color-primary)] hover:underline cursor-pointer", children: linkLabel }))] }));
|
|
11
|
+
return (_jsxs("div", { className: twMerge("group rounded-[var(--radius)] bg-white border border-gray-100 overflow-hidden transition-all duration-300", isHorizontal && "flex", imagePosition === "right" && "flex-row-reverse", className), children: [imageEl, contentEl] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=FeatureCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureCard.js","sourceRoot":"","sources":["../../src/components/FeatureCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAerC,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,aAAa,GAAG,KAAK,EACrB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,GAAG,cAAc,EAC1B,SAAS,GACQ;IACjB,MAAM,YAAY,GAAG,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,OAAO,CAAC;IAE3E,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CACtB,cACE,SAAS,EAAE,OAAO,CAChB,6BAA6B,EAC7B,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,CAC1D,YAED,cACE,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,QAAQ,IAAI,KAAK,IAAI,EAAE,EAC5B,SAAS,EAAC,oFAAoF,EAC9F,OAAO,EAAC,MAAM,GACd,GACE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,SAAS,GAAG,CAChB,eAAK,SAAS,EAAE,OAAO,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,aAChF,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,6EAA6E,YAC1F,QAAQ,GACJ,CACR,EACA,KAAK,IAAI,CACR,aAAI,SAAS,EAAC,kDAAkD,YAC7D,KAAK,GACH,CACN,EACA,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,uDAAuD,YACjE,WAAW,GACV,CACL,EACA,MAAM,IAAI,CACT,YACE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACnB,CAAC,EACD,SAAS,EAAC,+FAA+F,YAExG,SAAS,GACR,CACL,IACG,CACP,CAAC;IAEF,OAAO,CACL,eACE,SAAS,EAAE,OAAO,CAChB,2GAA2G,EAC3G,YAAY,IAAI,MAAM,EACtB,aAAa,KAAK,OAAO,IAAI,kBAAkB,EAC/C,SAAS,CACV,aAEA,OAAO,EACP,SAAS,IACN,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FooterColumn } from "../types";
|
|
2
|
+
interface FooterProps {
|
|
3
|
+
columns?: FooterColumn[];
|
|
4
|
+
logo?: string;
|
|
5
|
+
copyright?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function Footer({ columns, logo, copyright, className }: FooterProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Footer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/components/Footer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,MAAM,CAAC,EAAE,OAAY,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,WAAW,2CA4D/E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
import { navigate } from "../router";
|
|
4
|
+
export function Footer({ columns = [], logo, copyright, className }) {
|
|
5
|
+
const colCount = columns.length || 1;
|
|
6
|
+
const gridClass = colCount <= 2
|
|
7
|
+
? "grid-cols-1 sm:grid-cols-2"
|
|
8
|
+
: colCount === 3
|
|
9
|
+
? "grid-cols-1 sm:grid-cols-3"
|
|
10
|
+
: "grid-cols-2 sm:grid-cols-4";
|
|
11
|
+
return (_jsx("footer", { className: twMerge("w-full bg-[var(--color-foreground)] text-white/80", className), children: _jsxs("div", { className: "max-w-6xl mx-auto px-4 py-12", children: [columns.length > 0 && (_jsx("div", { className: twMerge("grid gap-8 mb-8", gridClass), children: columns.map((col) => (_jsxs("div", { children: [_jsx("h3", { className: "text-sm font-semibold text-white uppercase tracking-wider mb-3", children: col.title }), _jsx("ul", { className: "flex flex-col gap-2", children: col.links.map((link) => (_jsx("li", { children: _jsx("a", { href: link.to, onClick: (e) => {
|
|
12
|
+
// Only use client-side nav for internal links
|
|
13
|
+
if (link.to.startsWith("/")) {
|
|
14
|
+
e.preventDefault();
|
|
15
|
+
navigate(link.to);
|
|
16
|
+
}
|
|
17
|
+
}, className: "text-sm text-white/60 hover:text-white transition-colors", children: link.label }) }, link.to))) })] }, col.title))) })), _jsxs("div", { className: "border-t border-white/10 pt-6 flex flex-col sm:flex-row items-center justify-between gap-4", children: [logo && _jsx("img", { src: logo, alt: "", className: "h-6 w-auto opacity-60" }), copyright && (_jsx("p", { className: "text-xs text-white/40", children: copyright }))] })] }) }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/components/Footer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAUrC,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAe;IAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAErC,MAAM,SAAS,GACb,QAAQ,IAAI,CAAC;QACX,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,QAAQ,KAAK,CAAC;YACd,CAAC,CAAC,4BAA4B;YAC9B,CAAC,CAAC,4BAA4B,CAAC;IAErC,OAAO,CACL,iBACE,SAAS,EAAE,OAAO,CAChB,mDAAmD,EACnD,SAAS,CACV,YAED,eAAK,SAAS,EAAC,8BAA8B,aAE1C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,cAAK,SAAS,EAAE,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,YAClD,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,0BACE,aAAI,SAAS,EAAC,gEAAgE,YAC3E,GAAG,CAAC,KAAK,GACP,EACL,aAAI,SAAS,EAAC,qBAAqB,YAChC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACvB,uBACE,YACE,IAAI,EAAE,IAAI,CAAC,EAAE,EACb,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4CACb,8CAA8C;4CAC9C,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gDAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;gDACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4CACpB,CAAC;wCACH,CAAC,EACD,SAAS,EAAC,0DAA0D,YAEnE,IAAI,CAAC,KAAK,GACT,IAbG,IAAI,CAAC,EAAE,CAcX,CACN,CAAC,GACC,KAtBG,GAAG,CAAC,KAAK,CAuBb,CACP,CAAC,GACE,CACP,EAGD,eAAK,SAAS,EAAC,4FAA4F,aACxG,IAAI,IAAI,cAAK,GAAG,EAAE,IAAI,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,uBAAuB,GAAG,EACnE,SAAS,IAAI,CACZ,YAAG,SAAS,EAAC,uBAAuB,YAAE,SAAS,GAAK,CACrD,IACG,IACF,GACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface GalleryImage {
|
|
2
|
+
src: string;
|
|
3
|
+
alt?: string;
|
|
4
|
+
category?: string;
|
|
5
|
+
}
|
|
6
|
+
interface GalleryProps {
|
|
7
|
+
/** When set, fetches photos live from GET /v1/property/{propertyId}/media */
|
|
8
|
+
propertyId?: string;
|
|
9
|
+
/** Static images from content blob (fallback when propertyId is not set) */
|
|
10
|
+
images?: GalleryImage[];
|
|
11
|
+
categories?: string[];
|
|
12
|
+
layout?: "grid" | "carousel";
|
|
13
|
+
columns?: 2 | 3 | 4;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function Gallery({ propertyId: propertyIdProp, images: staticImages, categories, layout, columns, className, }: GalleryProps): import("react/jsx-runtime").JSX.Element | null;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=Gallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../src/components/Gallery.tsx"],"names":[],"mappings":"AAOA,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAY;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,wBAAgB,OAAO,CAAC,EACtB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,YAAiB,EACzB,UAAU,EACV,MAAe,EACf,OAAW,EACX,SAAS,GACV,EAAE,YAAY,kDAgNd"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useMemo, useEffect, useCallback } from "react";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
import { useSiteConfig } from "../hooks/useSiteConfig";
|
|
5
|
+
import { useAuth } from "../hooks/useAuth";
|
|
6
|
+
import { imageUrl } from "../utils/imageUrl";
|
|
7
|
+
import { Lightbox } from "./Lightbox";
|
|
8
|
+
const gridColClasses = {
|
|
9
|
+
2: "grid-cols-1 sm:grid-cols-2",
|
|
10
|
+
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
11
|
+
4: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4",
|
|
12
|
+
};
|
|
13
|
+
/** Map media API "type" field to a user-friendly category name. */
|
|
14
|
+
const TYPE_TO_CATEGORY = {
|
|
15
|
+
Building: "Community",
|
|
16
|
+
UnitPhotography: "Interiors",
|
|
17
|
+
Floorplan: "Floor Plans",
|
|
18
|
+
};
|
|
19
|
+
export function Gallery({ propertyId: propertyIdProp, images: staticImages = [], categories, layout = "grid", columns = 3, className, }) {
|
|
20
|
+
const config = useSiteConfig();
|
|
21
|
+
const { authenticatedFetch } = useAuth();
|
|
22
|
+
const propertyId = propertyIdProp ?? config.property?.propertyId;
|
|
23
|
+
const apiBaseUrl = config.property?.apiBaseUrl ?? "";
|
|
24
|
+
const [apiImages, setApiImages] = useState(null);
|
|
25
|
+
const [loading, setLoading] = useState(false);
|
|
26
|
+
// Fetch from media API when propertyId is available
|
|
27
|
+
const fetchMedia = useCallback(async () => {
|
|
28
|
+
if (!propertyId)
|
|
29
|
+
return;
|
|
30
|
+
setLoading(true);
|
|
31
|
+
try {
|
|
32
|
+
const res = await authenticatedFetch(`${apiBaseUrl}/v1/properties/${propertyId}?include_media=true`);
|
|
33
|
+
const data = res.ok ? await res.json() : { media: [] };
|
|
34
|
+
const allMedia = data.media ?? [];
|
|
35
|
+
const items = allMedia.map((m) => ({
|
|
36
|
+
src: m.url,
|
|
37
|
+
alt: m.name || m.description || "",
|
|
38
|
+
category: TYPE_TO_CATEGORY[m.type ?? ""] ?? m.type ?? undefined,
|
|
39
|
+
}));
|
|
40
|
+
setApiImages(items);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
setApiImages(null);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
setLoading(false);
|
|
47
|
+
}
|
|
48
|
+
}, [propertyId, apiBaseUrl, authenticatedFetch]);
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (propertyId)
|
|
51
|
+
fetchMedia();
|
|
52
|
+
}, [propertyId, fetchMedia]);
|
|
53
|
+
// Use API images if available, else static content-blob images
|
|
54
|
+
const images = apiImages ?? staticImages;
|
|
55
|
+
const [activeCategory, setActiveCategory] = useState(null);
|
|
56
|
+
const [lightboxIndex, setLightboxIndex] = useState(null);
|
|
57
|
+
const [carouselIndex, setCarouselIndex] = useState(0);
|
|
58
|
+
const derivedCategories = useMemo(() => {
|
|
59
|
+
if (categories)
|
|
60
|
+
return categories;
|
|
61
|
+
const cats = new Set(images.map((img) => img.category).filter(Boolean));
|
|
62
|
+
return cats.size > 1 ? ["All", ...cats] : [];
|
|
63
|
+
}, [categories, images]);
|
|
64
|
+
const filtered = useMemo(() => {
|
|
65
|
+
if (!activeCategory || activeCategory === "All")
|
|
66
|
+
return images;
|
|
67
|
+
return images.filter((img) => img.category === activeCategory);
|
|
68
|
+
}, [images, activeCategory]);
|
|
69
|
+
if (loading) {
|
|
70
|
+
return (_jsx("div", { className: twMerge("text-center py-8 text-[var(--color-muted)]", className), children: "Loading gallery..." }));
|
|
71
|
+
}
|
|
72
|
+
if (images.length === 0)
|
|
73
|
+
return null;
|
|
74
|
+
return (_jsxs("div", { className: twMerge("w-full", className), children: [derivedCategories.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-2 mb-6", children: derivedCategories.map((cat) => {
|
|
75
|
+
const isActive = cat === "All" ? !activeCategory : activeCategory === cat;
|
|
76
|
+
return (_jsx("button", { onClick: () => setActiveCategory(cat === "All" ? null : cat), className: twMerge("rounded-full px-4 py-1.5 text-sm font-medium transition-colors cursor-pointer", isActive
|
|
77
|
+
? "bg-[var(--color-primary)] text-white"
|
|
78
|
+
: "bg-[var(--color-muted)]/10 text-[var(--color-foreground)] hover:bg-[var(--color-muted)]/20"), children: cat }, cat));
|
|
79
|
+
}) })), layout === "grid" ? (
|
|
80
|
+
/* Grid Layout */
|
|
81
|
+
_jsx("div", { className: twMerge("grid gap-3", gridColClasses[columns] ?? gridColClasses[3]), children: filtered.map((img, i) => (_jsx("button", { onClick: () => setLightboxIndex(i), className: "group relative aspect-[4/3] overflow-hidden rounded-lg bg-gray-100 cursor-pointer", children: _jsx("img", { src: imageUrl(img.src, { w: 400, q: 75 }), alt: img.alt ?? "", loading: "lazy", className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" }) }, `${img.src}-${i}`))) })) : (
|
|
82
|
+
/* Carousel Layout */
|
|
83
|
+
_jsx("div", { className: "relative", children: filtered.length > 0 && (_jsxs(_Fragment, { children: [_jsx("div", { className: "aspect-[16/9] overflow-hidden rounded-lg bg-gray-100", children: _jsx("img", { src: imageUrl(filtered[carouselIndex % filtered.length]?.src, { w: 1200, q: 85 }), alt: filtered[carouselIndex % filtered.length]?.alt ?? "", className: "w-full h-full object-cover" }) }), _jsxs("div", { className: "absolute top-3 right-3 bg-black/50 text-white text-xs px-2 py-1 rounded", children: [(carouselIndex % filtered.length) + 1, " /", " ", filtered.length] }), filtered.length > 1 && (_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => setCarouselIndex((carouselIndex - 1 + filtered.length) %
|
|
84
|
+
filtered.length), className: "absolute left-2 top-1/2 -translate-y-1/2 bg-black/40 hover:bg-black/60 text-white rounded-full p-2 cursor-pointer", "aria-label": "Previous", children: _jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M15 18l-6-6 6-6" }) }) }), _jsx("button", { onClick: () => setCarouselIndex((carouselIndex + 1) % filtered.length), className: "absolute right-2 top-1/2 -translate-y-1/2 bg-black/40 hover:bg-black/60 text-white rounded-full p-2 cursor-pointer", "aria-label": "Next", children: _jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M9 18l6-6-6-6" }) }) })] })), _jsx("button", { onClick: () => setLightboxIndex(carouselIndex % filtered.length), className: "absolute inset-0 cursor-pointer", "aria-label": "Open fullscreen" })] })) })), lightboxIndex != null && (_jsx(Lightbox, { images: filtered, index: lightboxIndex, onClose: () => setLightboxIndex(null), onChange: setLightboxIndex }))] }));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=Gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gallery.js","sourceRoot":"","sources":["../../src/components/Gallery.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/components/Icon.tsx"],"names":[],"mappings":"AAEA,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyFD,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAW,EAAE,SAAS,EAAE,EAAE,SAAS,2CAc/D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
const sizeClasses = {
|
|
4
|
+
sm: "w-4 h-4",
|
|
5
|
+
md: "w-6 h-6",
|
|
6
|
+
lg: "w-8 h-8",
|
|
7
|
+
};
|
|
8
|
+
const icons = {
|
|
9
|
+
pet: (_jsx("path", { d: "M10 5.172C10 3.782 8.883 2.64 7.5 2.64S5 3.782 5 5.172c0 .862.432 1.622 1.09 2.078L4 12h8l-2.09-4.75C10.568 6.794 11 6.034 11 5.172M17 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4M7 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4M19 13a2 2 0 1 0 0-4 2 2 0 0 0 0 4M5 13a2 2 0 1 0 0-4 2 2 0 0 0 0 4M16 19c0-2.21-1.79-4-4-4s-4 1.79-4 4" })),
|
|
10
|
+
fitness: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M6.5 6.5h11M6.5 17.5h11" }), _jsx("rect", { x: "3", y: "8", width: "3", height: "8", rx: "1" }), _jsx("rect", { x: "18", y: "8", width: "3", height: "8", rx: "1" }), _jsx("path", { d: "M6.5 12h11" })] })),
|
|
11
|
+
pool: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M2 18c1.333-1 2.667-1 4 0s2.667 1 4 0 2.667-1 4 0 2.667 1 4 0" }), _jsx("path", { d: "M2 22c1.333-1 2.667-1 4 0s2.667 1 4 0 2.667-1 4 0 2.667 1 4 0" }), _jsx("circle", { cx: "12", cy: "7", r: "3" }), _jsx("path", { d: "M12 10v4" })] })),
|
|
12
|
+
coworking: (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3", y: "4", width: "18", height: "12", rx: "2" }), _jsx("path", { d: "M7 20h10M9 16v4M15 16v4" })] })),
|
|
13
|
+
clubroom: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }), _jsx("path", { d: "M9 22V12h6v10" })] })),
|
|
14
|
+
grill: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M4 12h16M4 12a8 8 0 0 0 16 0" }), _jsx("path", { d: "M8 8V6M12 8V4M16 8V6" }), _jsx("path", { d: "M9 20l-1 2M15 20l1 2" })] })),
|
|
15
|
+
parking: (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "3" }), _jsx("path", { d: "M9 17V7h4a3 3 0 0 1 0 6H9" })] })),
|
|
16
|
+
laundry: (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3", y: "2", width: "18", height: "20", rx: "2" }), _jsx("circle", { cx: "12", cy: "13", r: "5" }), _jsx("circle", { cx: "12", cy: "13", r: "2" }), _jsx("circle", { cx: "7", cy: "5", r: "1" })] })),
|
|
17
|
+
"ev-charging": (_jsx(_Fragment, { children: _jsx("path", { d: "M13 2L3 14h9l-1 8 10-12h-9l1-8z" }) })),
|
|
18
|
+
package: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" }), _jsx("path", { d: "m3.3 7 8.7 5 8.7-5M12 22V12" })] })),
|
|
19
|
+
wifi: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M5 12.55a11 11 0 0 1 14 0" }), _jsx("path", { d: "M8.53 16.11a6 6 0 0 1 6.95 0" }), _jsx("circle", { cx: "12", cy: "20", r: "1" })] })),
|
|
20
|
+
security: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10" }), _jsx("path", { d: "m9 12 2 2 4-4" })] })),
|
|
21
|
+
};
|
|
22
|
+
const fallbackIcon = _jsx("circle", { cx: "12", cy: "12", r: "4" });
|
|
23
|
+
export function Icon({ name, size = "md", className }) {
|
|
24
|
+
return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: twMerge(sizeClasses[size] ?? sizeClasses.md, className), children: icons[name] ?? fallbackIcon }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=Icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/components/Icon.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface LightboxImage {
|
|
2
|
+
src: string;
|
|
3
|
+
alt?: string;
|
|
4
|
+
}
|
|
5
|
+
interface LightboxProps {
|
|
6
|
+
images: LightboxImage[];
|
|
7
|
+
index: number;
|
|
8
|
+
onClose: () => void;
|
|
9
|
+
onChange: (index: number) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function Lightbox({ images, index, onClose, onChange }: LightboxProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=Lightbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/components/Lightbox.tsx"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,aAAa,kDAmF3E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useCallback } from "react";
|
|
3
|
+
export function Lightbox({ images, index, onClose, onChange }) {
|
|
4
|
+
const image = images[index];
|
|
5
|
+
if (!image)
|
|
6
|
+
return null;
|
|
7
|
+
const goPrev = useCallback(() => onChange((index - 1 + images.length) % images.length), [index, images.length, onChange]);
|
|
8
|
+
const goNext = useCallback(() => onChange((index + 1) % images.length), [index, images.length, onChange]);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const onKey = (e) => {
|
|
11
|
+
if (e.key === "Escape")
|
|
12
|
+
onClose();
|
|
13
|
+
if (e.key === "ArrowLeft")
|
|
14
|
+
goPrev();
|
|
15
|
+
if (e.key === "ArrowRight")
|
|
16
|
+
goNext();
|
|
17
|
+
};
|
|
18
|
+
window.addEventListener("keydown", onKey);
|
|
19
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
20
|
+
}, [onClose, goPrev, goNext]);
|
|
21
|
+
return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/90", onClick: onClose, children: [_jsx("button", { onClick: onClose, className: "absolute top-4 right-4 text-white/70 hover:text-white z-10 cursor-pointer", "aria-label": "Close", children: _jsx("svg", { width: "28", height: "28", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M6 6l12 12M18 6L6 18" }) }) }), _jsxs("div", { className: "absolute top-4 left-4 text-white/60 text-sm", children: [index + 1, " / ", images.length] }), images.length > 1 && (_jsx("button", { onClick: (e) => { e.stopPropagation(); goPrev(); }, className: "absolute left-4 text-white/70 hover:text-white z-10 cursor-pointer", "aria-label": "Previous", children: _jsx("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M15 18l-6-6 6-6" }) }) })), _jsx("img", { src: image.src, alt: image.alt ?? "", className: "max-w-[90vw] max-h-[85vh] object-contain", onClick: (e) => e.stopPropagation() }), images.length > 1 && (_jsx("button", { onClick: (e) => { e.stopPropagation(); goNext(); }, className: "absolute right-4 text-white/70 hover:text-white z-10 cursor-pointer", "aria-label": "Next", children: _jsx("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M9 18l6-6-6-6" }) }) })), image.alt && (_jsx("div", { className: "absolute bottom-4 left-1/2 -translate-x-1/2 text-white/70 text-sm text-center max-w-md", children: image.alt }))] }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Lightbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../../src/components/Lightbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface MapMarker {
|
|
2
|
+
lat: number;
|
|
3
|
+
lng: number;
|
|
4
|
+
label?: string;
|
|
5
|
+
}
|
|
6
|
+
interface MapEmbedProps {
|
|
7
|
+
lat: number;
|
|
8
|
+
lng: number;
|
|
9
|
+
zoom?: number;
|
|
10
|
+
height?: string;
|
|
11
|
+
markers?: MapMarker[];
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function MapEmbed({ lat, lng, zoom, height, className }: MapEmbedProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=MapEmbed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapEmbed.d.ts","sourceRoot":"","sources":["../../src/components/MapEmbed.tsx"],"names":[],"mappings":"AAAA,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAS,EAAE,MAAgB,EAAE,SAAc,EAAE,EAAE,aAAa,2CAiBhG"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function MapEmbed({ lat, lng, zoom = 15, height = "400px", className = "" }) {
|
|
3
|
+
const src = `https://www.google.com/maps/embed?pb=!1m14!1m12!1m3!1d3000!2d${lng}!3d${lat}!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sen!2sus!4v1&zoom=${zoom}`;
|
|
4
|
+
return (_jsx("div", { className: `w-full overflow-hidden rounded-[var(--radius)] ${className}`, style: { height }, children: _jsx("iframe", { src: src, width: "100%", height: "100%", style: { border: 0 }, allowFullScreen: true, loading: "lazy", referrerPolicy: "no-referrer-when-downgrade", title: "Property location map" }) }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=MapEmbed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapEmbed.js","sourceRoot":"","sources":["../../src/components/MapEmbed.tsx"],"names":[],"mappings":";AAeA,MAAM,UAAU,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,GAAG,OAAO,EAAE,SAAS,GAAG,EAAE,EAAiB;IAC/F,MAAM,GAAG,GAAG,gEAAgE,GAAG,MAAM,GAAG,uEAAuE,IAAI,EAAE,CAAC;IAEtK,OAAO,CACL,cAAK,SAAS,EAAE,kDAAkD,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,YAC9F,iBACE,GAAG,EAAE,GAAG,EACR,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EACpB,eAAe,QACf,OAAO,EAAC,MAAM,EACd,cAAc,EAAC,4BAA4B,EAC3C,KAAK,EAAC,uBAAuB,GAC7B,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ModalProps {
|
|
2
|
+
id: string;
|
|
3
|
+
title?: string;
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function Modal({ id, title, children, className }: ModalProps): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=Modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/components/Modal.tsx"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,UAAU,kDA2DnE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useEffect } from "react";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
import { useModal } from "../hooks/useModal";
|
|
5
|
+
export function Modal({ id, title, children, className }) {
|
|
6
|
+
const { activeModalId, closeModal } = useModal();
|
|
7
|
+
const panelRef = useRef(null);
|
|
8
|
+
const isOpen = activeModalId === id;
|
|
9
|
+
// Focus trap: on open, focus the panel
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (isOpen && panelRef.current) {
|
|
12
|
+
panelRef.current.focus();
|
|
13
|
+
}
|
|
14
|
+
}, [isOpen]);
|
|
15
|
+
if (!isOpen)
|
|
16
|
+
return null;
|
|
17
|
+
return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4", onClick: closeModal, role: "dialog", "aria-modal": "true", "aria-label": title, children: [_jsx("div", { className: "absolute inset-0 bg-black/60" }), _jsxs("div", { ref: panelRef, tabIndex: -1, onClick: (e) => e.stopPropagation(), className: twMerge("relative z-10 w-full max-w-lg max-h-[90vh] overflow-y-auto rounded-[var(--radius)] bg-white shadow-2xl", className), children: [_jsxs("div", { className: "flex items-center justify-between border-b border-gray-100 px-6 py-4", children: [title && (_jsx("h2", { className: "text-lg font-semibold text-[var(--color-foreground)]", children: title })), _jsx("button", { onClick: closeModal, className: "ml-auto rounded-md p-1 text-[var(--color-muted)] hover:text-[var(--color-foreground)] transition-colors cursor-pointer", "aria-label": "Close", children: _jsx("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M5 5l10 10M15 5L5 15" }) }) })] }), _jsx("div", { className: "px-6 py-5", children: children })] })] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/components/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAS7C,MAAM,UAAU,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAc;IAClE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,aAAa,KAAK,EAAE,CAAC;IAEpC,uCAAuC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC/B,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACL,eACE,SAAS,EAAC,yDAAyD,EACnE,OAAO,EAAE,UAAU,EACnB,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACL,KAAK,aAGjB,cAAK,SAAS,EAAC,8BAA8B,GAAG,EAGhD,eACE,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,SAAS,EAAE,OAAO,CAChB,wGAAwG,EACxG,SAAS,CACV,aAGD,eAAK,SAAS,EAAC,sEAAsE,aAClF,KAAK,IAAI,CACR,aAAI,SAAS,EAAC,sDAAsD,YACjE,KAAK,GACH,CACN,EACD,iBACE,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,wHAAwH,gBACvH,OAAO,YAElB,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,YAC/F,eAAM,CAAC,EAAC,sBAAsB,GAAG,GAC7B,GACC,IACL,EAGN,cAAK,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAO,IACvC,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { NavLink } from "../types";
|
|
2
|
+
interface NavProps {
|
|
3
|
+
logo?: string;
|
|
4
|
+
siteName?: string;
|
|
5
|
+
links?: NavLink[];
|
|
6
|
+
sticky?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function Nav({ logo, siteName, links, sticky, className }: NavProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=Nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Nav.d.ts","sourceRoot":"","sources":["../../src/components/Nav.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,UAAU,QAAQ;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAU,EAAE,MAAc,EAAE,SAAS,EAAE,EAAE,QAAQ,2CAyHtF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
import { navigate, useCurrentPath } from "../router";
|
|
5
|
+
export function Nav({ logo, siteName, links = [], sticky = false, className }) {
|
|
6
|
+
const [menuOpen, setMenuOpen] = useState(false);
|
|
7
|
+
const currentPath = useCurrentPath();
|
|
8
|
+
const handleNav = (to) => {
|
|
9
|
+
if (to.startsWith("#")) {
|
|
10
|
+
// Hash link — scroll to element on current page
|
|
11
|
+
const el = document.getElementById(to.slice(1));
|
|
12
|
+
if (el)
|
|
13
|
+
el.scrollIntoView({ behavior: "smooth" });
|
|
14
|
+
}
|
|
15
|
+
else if (to.includes("#")) {
|
|
16
|
+
// Path with hash — navigate then scroll
|
|
17
|
+
const [path, hash] = to.split("#");
|
|
18
|
+
if (path && path !== currentPath) {
|
|
19
|
+
navigate(path);
|
|
20
|
+
// Wait for render, then scroll
|
|
21
|
+
requestAnimationFrame(() => {
|
|
22
|
+
const el = document.getElementById(hash);
|
|
23
|
+
if (el)
|
|
24
|
+
el.scrollIntoView({ behavior: "smooth" });
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const el = document.getElementById(hash);
|
|
29
|
+
if (el)
|
|
30
|
+
el.scrollIntoView({ behavior: "smooth" });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
navigate(to);
|
|
35
|
+
}
|
|
36
|
+
setMenuOpen(false);
|
|
37
|
+
};
|
|
38
|
+
return (_jsxs("nav", { className: twMerge("w-full bg-white/95 backdrop-blur-md border-b border-gray-100 z-40", sticky && "sticky top-0 shadow-sm", className), children: [_jsxs("div", { className: "max-w-6xl mx-auto flex items-center justify-between px-4 py-3", children: [_jsx("a", { href: "/", onClick: (e) => {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
handleNav("/");
|
|
41
|
+
}, className: "flex items-center gap-2 cursor-pointer", children: logo ? (_jsx("img", { src: logo, alt: siteName ?? "Home", className: "h-8 w-auto" })) : siteName ? (_jsx("span", { className: "text-lg font-bold text-[var(--color-foreground)]", children: siteName })) : null }), _jsx("div", { className: "hidden md:flex items-center gap-6", children: links.map((link) => (_jsx("a", { href: link.to, onClick: (e) => {
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
handleNav(link.to);
|
|
44
|
+
}, className: twMerge("text-sm font-medium transition-colors cursor-pointer", currentPath === link.to
|
|
45
|
+
? "text-[var(--color-primary)]"
|
|
46
|
+
: "text-[var(--color-secondary)] hover:text-[var(--color-foreground)]"), children: link.label }, link.to))) }), _jsx("button", { onClick: () => setMenuOpen(!menuOpen), className: "md:hidden p-2 text-[var(--color-foreground)] cursor-pointer", "aria-label": "Toggle menu", children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: menuOpen ? (_jsx("path", { d: "M6 6l12 12M18 6L6 18" })) : (_jsxs(_Fragment, { children: [_jsx("path", { d: "M3 6h18" }), _jsx("path", { d: "M3 12h18" }), _jsx("path", { d: "M3 18h18" })] })) }) })] }), menuOpen && (_jsx("div", { className: "md:hidden border-t border-gray-100 bg-white", children: links.map((link) => (_jsx("a", { href: link.to, onClick: (e) => {
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
handleNav(link.to);
|
|
49
|
+
}, className: twMerge("block px-4 py-3 text-sm font-medium border-b border-gray-50 cursor-pointer", currentPath === link.to
|
|
50
|
+
? "text-[var(--color-primary)] bg-[var(--color-primary)]/5"
|
|
51
|
+
: "text-[var(--color-secondary)] hover:bg-gray-50"), children: link.label }, link.to))) }))] }));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=Nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Nav.js","sourceRoot":"","sources":["../../src/components/Nav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface ScheduleTourProps {
|
|
2
|
+
propertyId?: string;
|
|
3
|
+
source?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function ScheduleTour({ propertyId: propertyIdProp, source, className, }: ScheduleTourProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ScheduleTour.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduleTour.d.ts","sourceRoot":"","sources":["../../src/components/ScheduleTour.tsx"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EAAE,cAAc,EAC1B,MAAkB,EAClB,SAAS,GACV,EAAE,iBAAiB,2CAwWnB"}
|