@meetelise/studio-components 0.0.17 → 0.0.19
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/componentSchema.json +116 -17
- package/dist/components/ContactForm.d.ts.map +1 -1
- package/dist/components/ContactForm.js +4 -1
- package/dist/components/ContactForm.js.map +1 -1
- package/dist/components/LocationsDirectory.d.ts +17 -0
- package/dist/components/LocationsDirectory.d.ts.map +1 -0
- package/dist/components/LocationsDirectory.js +72 -0
- package/dist/components/LocationsDirectory.js.map +1 -0
- package/dist/components/PropertyCard.d.ts +14 -0
- package/dist/components/PropertyCard.d.ts.map +1 -0
- package/dist/components/PropertyCard.js +31 -0
- package/dist/components/PropertyCard.js.map +1 -0
- package/dist/components/PropertyGrid.d.ts +12 -0
- package/dist/components/PropertyGrid.d.ts.map +1 -0
- package/dist/components/PropertyGrid.js +55 -0
- package/dist/components/PropertyGrid.js.map +1 -0
- package/dist/components/ScheduleTour.d.ts.map +1 -1
- package/dist/components/ScheduleTour.js +2 -0
- package/dist/components/ScheduleTour.js.map +1 -1
- package/dist/components/browser/componentMeta.d.ts +1 -1
- package/dist/components/browser/componentMeta.d.ts.map +1 -1
- package/dist/components/browser/componentMeta.js +43 -0
- package/dist/components/browser/componentMeta.js.map +1 -1
- package/dist/components/registry.d.ts.map +1 -1
- package/dist/components/registry.js +6 -2
- package/dist/components/registry.js.map +1 -1
- package/dist/hooks/useProperties.d.ts +58 -0
- package/dist/hooks/useProperties.d.ts.map +1 -0
- package/dist/hooks/useProperties.js +56 -0
- package/dist/hooks/useProperties.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/router.d.ts +2 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +31 -1
- package/dist/router.js.map +1 -1
- package/dist/schema/componentSchema.d.ts +23 -3
- package/dist/schema/componentSchema.d.ts.map +1 -1
- package/dist/schema/componentSchema.js +80 -11
- package/dist/schema/componentSchema.js.map +1 -1
- package/dist/schema/releasePolicy.d.ts +41 -0
- package/dist/schema/releasePolicy.d.ts.map +1 -0
- package/dist/schema/releasePolicy.js +529 -0
- package/dist/schema/releasePolicy.js.map +1 -0
- package/dist/utils/utm.d.ts +17 -0
- package/dist/utils/utm.d.ts.map +1 -0
- package/dist/utils/utm.js +20 -0
- package/dist/utils/utm.js.map +1 -0
- package/package.json +4 -2
- package/dist/components/EliseChat.d.ts +0 -8
- package/dist/components/EliseChat.d.ts.map +0 -1
- package/dist/components/EliseChat.js +0 -22
- package/dist/components/EliseChat.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion":
|
|
2
|
+
"schemaVersion": 3,
|
|
3
3
|
"components": {
|
|
4
4
|
"Text": {
|
|
5
5
|
"kind": "element",
|
|
@@ -1082,6 +1082,121 @@
|
|
|
1082
1082
|
}
|
|
1083
1083
|
}
|
|
1084
1084
|
},
|
|
1085
|
+
"PropertyGrid": {
|
|
1086
|
+
"kind": "elise-component",
|
|
1087
|
+
"category": "Multi-Property",
|
|
1088
|
+
"description": "Searchable grid of a portfolio's communities (central/multi-property sites)",
|
|
1089
|
+
"needsApi": true,
|
|
1090
|
+
"acceptsChildren": false,
|
|
1091
|
+
"props": {
|
|
1092
|
+
"columns": {
|
|
1093
|
+
"kind": "enum",
|
|
1094
|
+
"options": [
|
|
1095
|
+
2,
|
|
1096
|
+
3,
|
|
1097
|
+
4
|
|
1098
|
+
],
|
|
1099
|
+
"default": 3
|
|
1100
|
+
},
|
|
1101
|
+
"showSearch": {
|
|
1102
|
+
"kind": "boolean",
|
|
1103
|
+
"default": true
|
|
1104
|
+
},
|
|
1105
|
+
"showStateFilter": {
|
|
1106
|
+
"kind": "boolean",
|
|
1107
|
+
"default": true
|
|
1108
|
+
},
|
|
1109
|
+
"hrefPattern": {
|
|
1110
|
+
"kind": "string",
|
|
1111
|
+
"default": "/properties/{id}",
|
|
1112
|
+
"label": "Card link pattern"
|
|
1113
|
+
},
|
|
1114
|
+
"emptyMessage": {
|
|
1115
|
+
"kind": "string",
|
|
1116
|
+
"default": "No communities found.",
|
|
1117
|
+
"label": "Empty message"
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
},
|
|
1121
|
+
"PropertyCard": {
|
|
1122
|
+
"kind": "elise-component",
|
|
1123
|
+
"category": "Multi-Property",
|
|
1124
|
+
"description": "A single community card (image, name, location) — usually rendered by PropertyGrid",
|
|
1125
|
+
"acceptsChildren": false,
|
|
1126
|
+
"props": {
|
|
1127
|
+
"property": {
|
|
1128
|
+
"kind": "object",
|
|
1129
|
+
"required": true,
|
|
1130
|
+
"bindable": true,
|
|
1131
|
+
"label": "Property record",
|
|
1132
|
+
"subFields": {
|
|
1133
|
+
"id": {
|
|
1134
|
+
"kind": "string",
|
|
1135
|
+
"label": "Property id"
|
|
1136
|
+
},
|
|
1137
|
+
"name": {
|
|
1138
|
+
"kind": "string",
|
|
1139
|
+
"label": "Property name"
|
|
1140
|
+
},
|
|
1141
|
+
"city": {
|
|
1142
|
+
"kind": "string",
|
|
1143
|
+
"label": "City"
|
|
1144
|
+
},
|
|
1145
|
+
"state": {
|
|
1146
|
+
"kind": "string",
|
|
1147
|
+
"label": "State"
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
},
|
|
1151
|
+
"hrefPattern": {
|
|
1152
|
+
"kind": "string",
|
|
1153
|
+
"default": "/properties/{id}",
|
|
1154
|
+
"label": "Link pattern"
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
},
|
|
1158
|
+
"LocationsDirectory": {
|
|
1159
|
+
"kind": "elise-component",
|
|
1160
|
+
"category": "Multi-Property",
|
|
1161
|
+
"description": "Communities grouped by state and city with counts and links",
|
|
1162
|
+
"needsApi": true,
|
|
1163
|
+
"acceptsChildren": false,
|
|
1164
|
+
"props": {
|
|
1165
|
+
"columns": {
|
|
1166
|
+
"kind": "enum",
|
|
1167
|
+
"options": [
|
|
1168
|
+
2,
|
|
1169
|
+
3,
|
|
1170
|
+
4
|
|
1171
|
+
],
|
|
1172
|
+
"default": 4
|
|
1173
|
+
},
|
|
1174
|
+
"showCities": {
|
|
1175
|
+
"kind": "boolean",
|
|
1176
|
+
"default": true
|
|
1177
|
+
},
|
|
1178
|
+
"hrefPattern": {
|
|
1179
|
+
"kind": "string",
|
|
1180
|
+
"default": "/properties?state={state}",
|
|
1181
|
+
"label": "Location link pattern"
|
|
1182
|
+
},
|
|
1183
|
+
"loadingMessage": {
|
|
1184
|
+
"kind": "string",
|
|
1185
|
+
"default": "Loading locations...",
|
|
1186
|
+
"label": "Loading message"
|
|
1187
|
+
},
|
|
1188
|
+
"emptyMessage": {
|
|
1189
|
+
"kind": "string",
|
|
1190
|
+
"default": "No locations available yet.",
|
|
1191
|
+
"label": "Empty message"
|
|
1192
|
+
},
|
|
1193
|
+
"errorMessage": {
|
|
1194
|
+
"kind": "string",
|
|
1195
|
+
"default": "Locations are unavailable right now.",
|
|
1196
|
+
"label": "Error message"
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
},
|
|
1085
1200
|
"ContactForm": {
|
|
1086
1201
|
"kind": "elise-component",
|
|
1087
1202
|
"category": "Forms",
|
|
@@ -1098,22 +1213,6 @@
|
|
|
1098
1213
|
"acceptsChildren": false,
|
|
1099
1214
|
"props": {}
|
|
1100
1215
|
},
|
|
1101
|
-
"EliseChat": {
|
|
1102
|
-
"kind": "elise-component",
|
|
1103
|
-
"category": "Forms",
|
|
1104
|
-
"description": "Embeds the Elise chat widget for a building",
|
|
1105
|
-
"acceptsChildren": false,
|
|
1106
|
-
"props": {
|
|
1107
|
-
"buildingId": {
|
|
1108
|
-
"kind": "string",
|
|
1109
|
-
"label": "Building id"
|
|
1110
|
-
},
|
|
1111
|
-
"scriptUrl": {
|
|
1112
|
-
"kind": "url",
|
|
1113
|
-
"label": "Widget script URL"
|
|
1114
|
-
}
|
|
1115
|
-
}
|
|
1116
|
-
},
|
|
1117
1216
|
"ComponentBrowser": {
|
|
1118
1217
|
"kind": "system",
|
|
1119
1218
|
"category": "Developer",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactForm.d.ts","sourceRoot":"","sources":["../../src/components/ContactForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ContactForm.d.ts","sourceRoot":"","sources":["../../src/components/ContactForm.tsx"],"names":[],"mappings":"AAMA,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwBD,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EAAE,cAAc,EAC1B,MAAkB,EAClB,MAAuB,EACvB,WAAoB,EACpB,cAA6C,EAC7C,SAAS,GACV,EAAE,gBAAgB,2CAqIlB"}
|
|
@@ -3,6 +3,7 @@ import { useState } from "react";
|
|
|
3
3
|
import { twMerge } from "tailwind-merge";
|
|
4
4
|
import { useSiteConfig } from "../hooks/useSiteConfig";
|
|
5
5
|
import { useAuth } from "../hooks/useAuth";
|
|
6
|
+
import { collectUtmParams } from "../utils/utm";
|
|
6
7
|
const DEFAULT_FIELDS = [
|
|
7
8
|
"firstName",
|
|
8
9
|
"lastName",
|
|
@@ -54,7 +55,9 @@ export function ContactForm({ propertyId: propertyIdProp, source = "website", fi
|
|
|
54
55
|
body.move_in_date = values.moveInDate;
|
|
55
56
|
if (values.bedrooms)
|
|
56
57
|
body.bedrooms = Number(values.bedrooms);
|
|
57
|
-
|
|
58
|
+
if (values.message)
|
|
59
|
+
body.message = values.message;
|
|
60
|
+
Object.assign(body, collectUtmParams());
|
|
58
61
|
const res = await authenticatedFetch(`${apiBaseUrl}/v1/prospect`, {
|
|
59
62
|
method: "POST",
|
|
60
63
|
headers: { "Content-Type": "application/json" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactForm.js","sourceRoot":"","sources":["../../src/components/ContactForm.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ContactForm.js","sourceRoot":"","sources":["../../src/components/ContactForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface LocationsDirectoryProps {
|
|
2
|
+
/**
|
|
3
|
+
* Link template for each location. Placeholders: {state}, {city}.
|
|
4
|
+
* Defaults to a state-filtered listing route.
|
|
5
|
+
*/
|
|
6
|
+
hrefPattern?: string;
|
|
7
|
+
/** Show cities (with counts) nested under each state. */
|
|
8
|
+
showCities?: boolean;
|
|
9
|
+
columns?: 2 | 3 | 4;
|
|
10
|
+
loadingMessage?: string;
|
|
11
|
+
emptyMessage?: string;
|
|
12
|
+
errorMessage?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function LocationsDirectory({ hrefPattern, showCities, columns, loadingMessage, emptyMessage, errorMessage, className, }: LocationsDirectoryProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=LocationsDirectory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocationsDirectory.d.ts","sourceRoot":"","sources":["../../src/components/LocationsDirectory.tsx"],"names":[],"mappings":"AAKA,UAAU,uBAAuB;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmCD,wBAAgB,kBAAkB,CAAC,EACjC,WAAyC,EACzC,UAAiB,EACjB,OAAW,EACX,cAAuC,EACvC,YAA4C,EAC5C,YAAqD,EACrD,SAAS,GACV,EAAE,uBAAuB,2CAkFzB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
import { useNavigate } from "../router";
|
|
5
|
+
import { useProperties } from "../hooks/useProperties";
|
|
6
|
+
const gridColClasses = {
|
|
7
|
+
2: "grid-cols-1 sm:grid-cols-2",
|
|
8
|
+
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
9
|
+
4: "grid-cols-2 lg:grid-cols-4",
|
|
10
|
+
};
|
|
11
|
+
function buildLocationHref(pattern, state, city) {
|
|
12
|
+
const href = pattern
|
|
13
|
+
.replace(/\{state\}/g, encodeURIComponent(state))
|
|
14
|
+
.replace(/\{city\}/g, encodeURIComponent(city ?? ""));
|
|
15
|
+
if (city)
|
|
16
|
+
return href;
|
|
17
|
+
const [pathAndQuery, hash] = href.split("#");
|
|
18
|
+
const [path, query] = pathAndQuery.split("?");
|
|
19
|
+
if (!query)
|
|
20
|
+
return href;
|
|
21
|
+
const params = new URLSearchParams(query);
|
|
22
|
+
params.delete("city");
|
|
23
|
+
const nextQuery = params.toString();
|
|
24
|
+
return `${path}${nextQuery ? `?${nextQuery}` : ""}${hash ? `#${hash}` : ""}`;
|
|
25
|
+
}
|
|
26
|
+
export function LocationsDirectory({ hrefPattern = "/properties?state={state}", showCities = true, columns = 4, loadingMessage = "Loading locations...", emptyMessage = "No locations available yet.", errorMessage = "Locations are unavailable right now.", className, }) {
|
|
27
|
+
const { properties, loading, error } = useProperties({ includeMedia: false, includeAttributes: false });
|
|
28
|
+
const navigate = useNavigate();
|
|
29
|
+
const states = useMemo(() => {
|
|
30
|
+
const stateMap = new Map();
|
|
31
|
+
for (const p of properties) {
|
|
32
|
+
if (!p.state)
|
|
33
|
+
continue;
|
|
34
|
+
const cityMap = stateMap.get(p.state) ?? new Map();
|
|
35
|
+
if (p.city)
|
|
36
|
+
cityMap.set(p.city, (cityMap.get(p.city) ?? 0) + 1);
|
|
37
|
+
stateMap.set(p.state, cityMap);
|
|
38
|
+
}
|
|
39
|
+
return [...stateMap.entries()]
|
|
40
|
+
.map(([state, cityMap]) => {
|
|
41
|
+
const cities = [...cityMap.entries()]
|
|
42
|
+
.map(([city, count]) => ({ city, count }))
|
|
43
|
+
.sort((a, b) => a.city.localeCompare(b.city));
|
|
44
|
+
const count = cities.reduce((sum, c) => sum + c.count, 0);
|
|
45
|
+
return { state, count, cities };
|
|
46
|
+
})
|
|
47
|
+
.sort((a, b) => a.state.localeCompare(b.state));
|
|
48
|
+
}, [properties]);
|
|
49
|
+
if (loading && properties.length === 0) {
|
|
50
|
+
return _jsx("p", { className: twMerge("text-sm text-[var(--color-muted)]", className), children: loadingMessage });
|
|
51
|
+
}
|
|
52
|
+
if (error) {
|
|
53
|
+
return _jsx("p", { className: twMerge("text-sm text-[var(--color-muted)]", className), children: errorMessage });
|
|
54
|
+
}
|
|
55
|
+
if (states.length === 0) {
|
|
56
|
+
return _jsx("p", { className: twMerge("text-sm text-[var(--color-muted)]", className), children: emptyMessage });
|
|
57
|
+
}
|
|
58
|
+
const go = (e, href) => {
|
|
59
|
+
if (/^https?:\/\//i.test(href))
|
|
60
|
+
return;
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
navigate(href);
|
|
63
|
+
};
|
|
64
|
+
return (_jsx("div", { className: twMerge("grid gap-4", gridColClasses[columns] ?? gridColClasses[4], className), children: states.map((group) => {
|
|
65
|
+
const stateHref = buildLocationHref(hrefPattern, group.state);
|
|
66
|
+
return (_jsxs("div", { className: "rounded-[var(--radius)] border border-[var(--color-muted)]/20 bg-white/80 p-4 shadow-sm", children: [_jsxs("a", { href: stateHref, onClick: (e) => go(e, stateHref), className: "flex items-center justify-between gap-3 text-[var(--color-foreground)] hover:text-[var(--color-primary)] cursor-pointer", children: [_jsx("span", { className: "text-lg font-semibold", children: group.state }), _jsxs("span", { className: "rounded-full bg-[var(--color-muted)]/10 px-2.5 py-1 text-xs font-medium text-[var(--color-secondary)]", children: [group.count, " ", group.count === 1 ? "community" : "communities"] })] }), showCities && group.cities.length > 0 && (_jsx("div", { className: "mt-3 flex flex-wrap gap-2", children: group.cities.map((c) => {
|
|
67
|
+
const cityHref = buildLocationHref(hrefPattern, group.state, c.city);
|
|
68
|
+
return (_jsxs("a", { href: cityHref, onClick: (e) => go(e, cityHref), className: "rounded-full border border-[var(--color-muted)]/20 px-3 py-1.5 text-sm text-[var(--color-secondary)] hover:border-[var(--color-primary)] hover:text-[var(--color-primary)] cursor-pointer", children: [c.city, " (", c.count, ")"] }, c.city));
|
|
69
|
+
}) }))] }, group.state));
|
|
70
|
+
}) }));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=LocationsDirectory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocationsDirectory.js","sourceRoot":"","sources":["../../src/components/LocationsDirectory.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PublicProperty } from "../hooks/useProperties";
|
|
2
|
+
interface PropertyCardProps {
|
|
3
|
+
property: PublicProperty;
|
|
4
|
+
/**
|
|
5
|
+
* Link target template. Placeholders: {id}, {name}, {city}, {state}.
|
|
6
|
+
* Use an absolute URL (https://…) to link to a property's own website.
|
|
7
|
+
*/
|
|
8
|
+
hrefPattern?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function buildPropertyHref(pattern: string, property: PublicProperty): string;
|
|
12
|
+
export declare function PropertyCard({ property, hrefPattern, className, }: PropertyCardProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=PropertyCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyCard.d.ts","sourceRoot":"","sources":["../../src/components/PropertyCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,CAMnF;AAQD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAgC,EAChC,SAAS,GACV,EAAE,iBAAiB,2CA4CnB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
|
+
import { useNavigate } from "../router";
|
|
4
|
+
export function buildPropertyHref(pattern, property) {
|
|
5
|
+
return pattern
|
|
6
|
+
.replace(/\{id\}/g, String(property.id))
|
|
7
|
+
.replace(/\{name\}/g, encodeURIComponent(property.name ?? ""))
|
|
8
|
+
.replace(/\{city\}/g, encodeURIComponent(property.city ?? ""))
|
|
9
|
+
.replace(/\{state\}/g, encodeURIComponent(property.state ?? ""));
|
|
10
|
+
}
|
|
11
|
+
function primaryImageUrl(property) {
|
|
12
|
+
if (!property.media || property.media.length === 0)
|
|
13
|
+
return null;
|
|
14
|
+
const sorted = [...property.media].sort((a, b) => (a.rank ?? 999) - (b.rank ?? 999));
|
|
15
|
+
return sorted[0]?.url ?? null;
|
|
16
|
+
}
|
|
17
|
+
export function PropertyCard({ property, hrefPattern = "/properties/{id}", className, }) {
|
|
18
|
+
const navigate = useNavigate();
|
|
19
|
+
const href = buildPropertyHref(hrefPattern, property);
|
|
20
|
+
const isExternal = /^https?:\/\//i.test(href);
|
|
21
|
+
const image = primaryImageUrl(property);
|
|
22
|
+
const location = [property.city, property.state].filter(Boolean).join(", ");
|
|
23
|
+
const handleClick = (e) => {
|
|
24
|
+
if (isExternal)
|
|
25
|
+
return; // allow the browser to follow external links
|
|
26
|
+
e.preventDefault();
|
|
27
|
+
navigate(href);
|
|
28
|
+
};
|
|
29
|
+
return (_jsxs("a", { href: href, onClick: handleClick, target: isExternal ? "_blank" : undefined, rel: isExternal ? "noopener noreferrer" : undefined, className: twMerge("group flex flex-col overflow-hidden rounded-[var(--radius)] bg-white shadow-[var(--shadow)] transition-shadow hover:shadow-[var(--shadow-hover)] cursor-pointer", className), children: [_jsx("div", { className: "aspect-[4/3] w-full overflow-hidden bg-[var(--color-muted)]/10", children: image && (_jsx("img", { src: image, alt: property.name ?? "Property", loading: "lazy", className: "h-full w-full object-cover transition-transform duration-300 group-hover:scale-105" })) }), _jsxs("div", { className: "flex flex-col gap-1 p-4", children: [_jsx("span", { className: "text-base font-semibold text-[var(--color-foreground)]", children: property.name ?? "Community" }), location && (_jsx("span", { className: "text-sm text-[var(--color-secondary)]", children: location }))] })] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=PropertyCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyCard.js","sourceRoot":"","sources":["../../src/components/PropertyCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAaxC,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAAwB;IACzE,OAAO,OAAO;SACX,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACvC,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC7D,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC7D,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,QAAwB;IAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,GAAG,kBAAkB,EAChC,SAAS,GACS;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5E,MAAM,WAAW,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC7D,IAAI,UAAU;YAAE,OAAO,CAAC,6CAA6C;QACrE,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,CACL,aACE,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACzC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,EACnD,SAAS,EAAE,OAAO,CAChB,iKAAiK,EACjK,SAAS,CACV,aAED,cAAK,SAAS,EAAC,gEAAgE,YAC5E,KAAK,IAAI,CACR,cACE,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,UAAU,EAChC,OAAO,EAAC,MAAM,EACd,SAAS,EAAC,oFAAoF,GAC9F,CACH,GACG,EACN,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAM,SAAS,EAAC,wDAAwD,YACrE,QAAQ,CAAC,IAAI,IAAI,WAAW,GACxB,EACN,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,uCAAuC,YAAE,QAAQ,GAAQ,CAC1E,IACG,IACJ,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface PropertyGridProps {
|
|
2
|
+
/** Link template for each card. Placeholders: {id}, {name}, {city}, {state}. */
|
|
3
|
+
hrefPattern?: string;
|
|
4
|
+
columns?: 2 | 3 | 4;
|
|
5
|
+
showSearch?: boolean;
|
|
6
|
+
showStateFilter?: boolean;
|
|
7
|
+
emptyMessage?: string;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function PropertyGrid({ hrefPattern, columns, showSearch, showStateFilter, emptyMessage, className, }: PropertyGridProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=PropertyGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyGrid.d.ts","sourceRoot":"","sources":["../../src/components/PropertyGrid.tsx"],"names":[],"mappings":"AAMA,UAAU,iBAAiB;IACzB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAgB,YAAY,CAAC,EAC3B,WAAgC,EAChC,OAAW,EACX,UAAiB,EACjB,eAAsB,EACtB,YAAsC,EACtC,SAAS,GACV,EAAE,iBAAiB,2CAmFnB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState } from "react";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
import { useProperties } from "../hooks/useProperties";
|
|
5
|
+
import { usePathWithSearch } from "../router";
|
|
6
|
+
import { PropertyCard } from "./PropertyCard";
|
|
7
|
+
const gridColClasses = {
|
|
8
|
+
2: "grid-cols-1 sm:grid-cols-2",
|
|
9
|
+
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
10
|
+
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",
|
|
11
|
+
};
|
|
12
|
+
function getLocationFilters(location) {
|
|
13
|
+
const search = location.includes("?")
|
|
14
|
+
? location.slice(location.indexOf("?"))
|
|
15
|
+
: typeof window !== "undefined"
|
|
16
|
+
? window.location.search
|
|
17
|
+
: "";
|
|
18
|
+
const params = new URLSearchParams(search);
|
|
19
|
+
return {
|
|
20
|
+
city: params.get("city") ?? "",
|
|
21
|
+
state: params.get("state") ?? "",
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function PropertyGrid({ hrefPattern = "/properties/{id}", columns = 3, showSearch = true, showStateFilter = true, emptyMessage = "No communities found.", className, }) {
|
|
25
|
+
const { properties, loading, error } = useProperties();
|
|
26
|
+
const location = usePathWithSearch();
|
|
27
|
+
const locationFilters = useMemo(() => getLocationFilters(location), [location]);
|
|
28
|
+
const [search, setSearch] = useState("");
|
|
29
|
+
const [stateFilter, setStateFilter] = useState(locationFilters.state);
|
|
30
|
+
const [cityFilter, setCityFilter] = useState(locationFilters.city);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
setStateFilter(locationFilters.state);
|
|
33
|
+
setCityFilter(locationFilters.city);
|
|
34
|
+
}, [locationFilters.city, locationFilters.state]);
|
|
35
|
+
const states = useMemo(() => [...new Set(properties.map((p) => p.state).filter((s) => Boolean(s)))].sort(), [properties]);
|
|
36
|
+
const filtered = useMemo(() => {
|
|
37
|
+
const q = search.trim().toLowerCase();
|
|
38
|
+
return properties.filter((p) => {
|
|
39
|
+
if (stateFilter && p.state !== stateFilter)
|
|
40
|
+
return false;
|
|
41
|
+
if (cityFilter && p.city !== cityFilter)
|
|
42
|
+
return false;
|
|
43
|
+
if (!q)
|
|
44
|
+
return true;
|
|
45
|
+
return ((p.name ?? "").toLowerCase().includes(q) ||
|
|
46
|
+
(p.city ?? "").toLowerCase().includes(q));
|
|
47
|
+
});
|
|
48
|
+
}, [cityFilter, properties, search, stateFilter]);
|
|
49
|
+
const inputClasses = "rounded-[var(--radius)] border border-[var(--color-muted)]/30 bg-white px-3 py-2 text-sm";
|
|
50
|
+
return (_jsxs("div", { className: twMerge("flex flex-col gap-6", className), children: [(showSearch || (showStateFilter && states.length > 1)) && (_jsxs("div", { className: "flex flex-col gap-3 sm:flex-row", children: [showSearch && (_jsx("input", { type: "search", value: search, onChange: (e) => setSearch(e.target.value), placeholder: "Search by community or city", className: twMerge(inputClasses, "flex-1") })), showStateFilter && states.length > 1 && (_jsxs("select", { value: stateFilter, onChange: (e) => {
|
|
51
|
+
setStateFilter(e.target.value);
|
|
52
|
+
setCityFilter("");
|
|
53
|
+
}, className: inputClasses, children: [_jsx("option", { value: "", children: "All states" }), states.map((s) => (_jsx("option", { value: s, children: s }, s)))] }))] })), loading && properties.length === 0 ? (_jsx("p", { className: "text-sm text-[var(--color-muted)]", children: "Loading communities\u2026" })) : error ? (_jsx("p", { className: "text-sm text-[var(--color-muted)]", children: emptyMessage })) : filtered.length === 0 ? (_jsx("p", { className: "text-sm text-[var(--color-muted)]", children: emptyMessage })) : (_jsx("div", { className: twMerge("grid gap-6", gridColClasses[columns] ?? gridColClasses[3]), children: filtered.map((property) => (_jsx(PropertyCard, { property: property, hrefPattern: hrefPattern }, property.id))) }))] }));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=PropertyGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyGrid.js","sourceRoot":"","sources":["../../src/components/PropertyGrid.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAY9C,MAAM,cAAc,GAA2B;IAC7C,CAAC,EAAE,4BAA4B;IAC/B,CAAC,EAAE,2CAA2C;IAC9C,CAAC,EAAE,2CAA2C;CAC/C,CAAC;AAEF,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,MAAM,GACV,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QACpB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW;YAC7B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;YACxB,CAAC,CAAC,EAAE,CAAC;IACX,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;QAC9B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,WAAW,GAAG,kBAAkB,EAChC,OAAO,GAAG,CAAC,EACX,UAAU,GAAG,IAAI,EACjB,eAAe,GAAG,IAAI,EACtB,YAAY,GAAG,uBAAuB,EACtC,SAAS,GACS;IAClB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAEnE,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAC5F,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,IAAI,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW;gBAAE,OAAO,KAAK,CAAC;YACzD,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAC;YACtD,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpB,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CACzC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAElD,MAAM,YAAY,GAChB,0FAA0F,CAAC;IAE7F,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,aACtD,CAAC,UAAU,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CACzD,eAAK,SAAS,EAAC,iCAAiC,aAC7C,UAAU,IAAI,CACb,gBACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC1C,WAAW,EAAC,6BAA6B,EACzC,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,GAC1C,CACH,EACA,eAAe,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACvC,kBACE,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;4BACd,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BAC/B,aAAa,CAAC,EAAE,CAAC,CAAC;wBACpB,CAAC,EACD,SAAS,EAAE,YAAY,aAEvB,iBAAQ,KAAK,EAAC,EAAE,2BAAoB,EACnC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,iBAAgB,KAAK,EAAE,CAAC,YACrB,CAAC,IADS,CAAC,CAEL,CACV,CAAC,IACK,CACV,IACG,CACP,EAEA,OAAO,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpC,YAAG,SAAS,EAAC,mCAAmC,0CAAyB,CAC1E,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,YAAG,SAAS,EAAC,mCAAmC,YAAE,YAAY,GAAK,CACpE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1B,YAAG,SAAS,EAAC,mCAAmC,YAAE,YAAY,GAAK,CACpE,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,YAChF,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC1B,KAAC,YAAY,IAAmB,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,IAAzD,QAAQ,CAAC,EAAE,CAAkD,CACjF,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleTour.d.ts","sourceRoot":"","sources":["../../src/components/ScheduleTour.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScheduleTour.d.ts","sourceRoot":"","sources":["../../src/components/ScheduleTour.tsx"],"names":[],"mappings":"AAMA,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,2CAyWnB"}
|
|
@@ -3,6 +3,7 @@ import { useState, useEffect, useMemo, useCallback } from "react";
|
|
|
3
3
|
import { twMerge } from "tailwind-merge";
|
|
4
4
|
import { useSiteConfig } from "../hooks/useSiteConfig";
|
|
5
5
|
import { useAuth } from "../hooks/useAuth";
|
|
6
|
+
import { collectUtmParams } from "../utils/utm";
|
|
6
7
|
const TOUR_TYPE_LABELS = {
|
|
7
8
|
guided: "In-Person Tour",
|
|
8
9
|
sgt: "Self-Guided Tour",
|
|
@@ -122,6 +123,7 @@ export function ScheduleTour({ propertyId: propertyIdProp, source = "website", c
|
|
|
122
123
|
body.move_in_date = moveInDate;
|
|
123
124
|
if (bedrooms)
|
|
124
125
|
body.bedrooms = Number(bedrooms);
|
|
126
|
+
Object.assign(body, collectUtmParams());
|
|
125
127
|
const res = await authenticatedFetch(`${apiBaseUrl}/v1/prospect/appointment`, {
|
|
126
128
|
method: "POST",
|
|
127
129
|
headers: { "Content-Type": "application/json" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleTour.js","sourceRoot":"","sources":["../../src/components/ScheduleTour.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ScheduleTour.js","sourceRoot":"","sources":["../../src/components/ScheduleTour.tsx"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,6 @@ export interface ComponentMeta {
|
|
|
35
35
|
needsApi?: boolean;
|
|
36
36
|
}
|
|
37
37
|
export declare const componentMeta: Record<string, ComponentMeta>;
|
|
38
|
-
export declare const CATEGORIES: readonly ["Heroes & Media", "Content Cards", "Text & Typography", "Layout", "Navigation", "Data & Amenities", "Units & Floor Plans", "Forms"];
|
|
38
|
+
export declare const CATEGORIES: readonly ["Heroes & Media", "Content Cards", "Text & Typography", "Layout", "Navigation", "Data & Amenities", "Units & Floor Plans", "Forms", "Multi-Property"];
|
|
39
39
|
export declare function getComponentsByCategory(): Record<string, string[]>;
|
|
40
40
|
//# sourceMappingURL=componentMeta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentMeta.d.ts","sourceRoot":"","sources":["../../../src/components/browser/componentMeta.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"componentMeta.d.ts","sourceRoot":"","sources":["../../../src/components/browser/componentMeta.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAwwBvD,CAAC;AAMF,eAAO,MAAM,UAAU,iKAUb,CAAC;AAEX,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAWlE"}
|
|
@@ -696,6 +696,48 @@ export const componentMeta = {
|
|
|
696
696
|
{ label: "Default", props: { propertyId: "demo" } },
|
|
697
697
|
],
|
|
698
698
|
},
|
|
699
|
+
// ── Multi-Property ────────────────────────────────────────────────────
|
|
700
|
+
PropertyGrid: {
|
|
701
|
+
category: "Multi-Property",
|
|
702
|
+
description: "Searchable grid of a portfolio's communities (central/multi-property sites)",
|
|
703
|
+
needsApi: true,
|
|
704
|
+
props: {
|
|
705
|
+
columns: { type: { kind: "enum", options: [2, 3, 4], default: 3 } },
|
|
706
|
+
showSearch: { type: { kind: "boolean", default: true } },
|
|
707
|
+
showStateFilter: { type: { kind: "boolean", default: true } },
|
|
708
|
+
hrefPattern: { type: { kind: "string", default: "/properties/{id}" }, label: "Card link pattern" },
|
|
709
|
+
},
|
|
710
|
+
presets: [
|
|
711
|
+
{ label: "Default", props: {} },
|
|
712
|
+
{ label: "4 columns, no filters", props: { columns: 4, showSearch: false, showStateFilter: false } },
|
|
713
|
+
],
|
|
714
|
+
},
|
|
715
|
+
PropertyCard: {
|
|
716
|
+
category: "Multi-Property",
|
|
717
|
+
description: "A single community card (image, name, location) — usually rendered by PropertyGrid",
|
|
718
|
+
needsApi: false,
|
|
719
|
+
props: {
|
|
720
|
+
hrefPattern: { type: { kind: "string", default: "/properties/{id}" }, label: "Link pattern" },
|
|
721
|
+
},
|
|
722
|
+
presets: [{ label: "Default", props: {} }],
|
|
723
|
+
},
|
|
724
|
+
LocationsDirectory: {
|
|
725
|
+
category: "Multi-Property",
|
|
726
|
+
description: "Communities grouped by state and city with counts and links",
|
|
727
|
+
needsApi: true,
|
|
728
|
+
props: {
|
|
729
|
+
columns: { type: { kind: "enum", options: [2, 3, 4], default: 4 } },
|
|
730
|
+
showCities: { type: { kind: "boolean", default: true } },
|
|
731
|
+
hrefPattern: { type: { kind: "string", default: "/properties?state={state}" }, label: "Location link pattern" },
|
|
732
|
+
loadingMessage: { type: { kind: "string", default: "Loading locations..." }, label: "Loading message" },
|
|
733
|
+
emptyMessage: { type: { kind: "string", default: "No locations available yet." }, label: "Empty message" },
|
|
734
|
+
errorMessage: { type: { kind: "string", default: "Locations are unavailable right now." }, label: "Error message" },
|
|
735
|
+
},
|
|
736
|
+
presets: [
|
|
737
|
+
{ label: "Default", props: {} },
|
|
738
|
+
{ label: "States only", props: { showCities: false } },
|
|
739
|
+
],
|
|
740
|
+
},
|
|
699
741
|
};
|
|
700
742
|
// ---------------------------------------------------------------------------
|
|
701
743
|
// Helpers
|
|
@@ -709,6 +751,7 @@ export const CATEGORIES = [
|
|
|
709
751
|
"Data & Amenities",
|
|
710
752
|
"Units & Floor Plans",
|
|
711
753
|
"Forms",
|
|
754
|
+
"Multi-Property",
|
|
712
755
|
];
|
|
713
756
|
export function getComponentsByCategory() {
|
|
714
757
|
const result = {};
|