@meetelise/studio-components 0.0.4 → 0.0.5

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.
Files changed (207) hide show
  1. package/dist/components/Accordion.d.ts +16 -0
  2. package/dist/components/Accordion.d.ts.map +1 -0
  3. package/dist/components/Accordion.js +28 -0
  4. package/dist/components/Accordion.js.map +1 -0
  5. package/dist/components/AddressBlock.d.ts +14 -0
  6. package/dist/components/AddressBlock.d.ts.map +1 -0
  7. package/dist/components/AddressBlock.js +13 -0
  8. package/dist/components/AddressBlock.js.map +1 -0
  9. package/dist/components/AmenityList.d.ts +20 -0
  10. package/dist/components/AmenityList.d.ts.map +1 -0
  11. package/dist/components/AmenityList.js +75 -0
  12. package/dist/components/AmenityList.js.map +1 -0
  13. package/dist/components/Badge.d.ts +9 -0
  14. package/dist/components/Badge.d.ts.map +1 -0
  15. package/dist/components/Badge.js +16 -0
  16. package/dist/components/Badge.js.map +1 -0
  17. package/dist/components/Button.d.ts +12 -0
  18. package/dist/components/Button.d.ts.map +1 -0
  19. package/dist/components/Button.js +38 -0
  20. package/dist/components/Button.js.map +1 -0
  21. package/dist/components/CTABanner.d.ts +11 -0
  22. package/dist/components/CTABanner.d.ts.map +1 -0
  23. package/dist/components/CTABanner.js +17 -0
  24. package/dist/components/CTABanner.js.map +1 -0
  25. package/dist/components/ContactForm.d.ts +11 -0
  26. package/dist/components/ContactForm.d.ts.map +1 -0
  27. package/dist/components/ContactForm.js +91 -0
  28. package/dist/components/ContactForm.js.map +1 -0
  29. package/dist/components/Container.d.ts +9 -3
  30. package/dist/components/Container.d.ts.map +1 -1
  31. package/dist/components/Container.js +19 -8
  32. package/dist/components/Container.js.map +1 -1
  33. package/dist/components/Divider.d.ts +9 -0
  34. package/dist/components/Divider.d.ts.map +1 -0
  35. package/dist/components/Divider.js +15 -0
  36. package/dist/components/Divider.js.map +1 -0
  37. package/dist/components/EliseChat.d.ts +8 -0
  38. package/dist/components/EliseChat.d.ts.map +1 -0
  39. package/dist/components/EliseChat.js +22 -0
  40. package/dist/components/EliseChat.js.map +1 -0
  41. package/dist/components/FeatureCard.d.ts +15 -0
  42. package/dist/components/FeatureCard.d.ts.map +1 -0
  43. package/dist/components/FeatureCard.js +13 -0
  44. package/dist/components/FeatureCard.js.map +1 -0
  45. package/dist/components/Footer.d.ts +10 -0
  46. package/dist/components/Footer.d.ts.map +1 -0
  47. package/dist/components/Footer.js +19 -0
  48. package/dist/components/Footer.js.map +1 -0
  49. package/dist/components/Gallery.d.ts +18 -0
  50. package/dist/components/Gallery.d.ts.map +1 -0
  51. package/dist/components/Gallery.js +86 -0
  52. package/dist/components/Gallery.js.map +1 -0
  53. package/dist/components/Icon.d.ts +8 -0
  54. package/dist/components/Icon.d.ts.map +1 -0
  55. package/dist/components/Icon.js +26 -0
  56. package/dist/components/Icon.js.map +1 -0
  57. package/dist/components/Lightbox.d.ts +13 -0
  58. package/dist/components/Lightbox.d.ts.map +1 -0
  59. package/dist/components/Lightbox.js +23 -0
  60. package/dist/components/Lightbox.js.map +1 -0
  61. package/dist/components/MapEmbed.d.ts +16 -0
  62. package/dist/components/MapEmbed.d.ts.map +1 -0
  63. package/dist/components/MapEmbed.js +6 -0
  64. package/dist/components/MapEmbed.js.map +1 -0
  65. package/dist/components/Modal.d.ts +9 -0
  66. package/dist/components/Modal.d.ts.map +1 -0
  67. package/dist/components/Modal.js +19 -0
  68. package/dist/components/Modal.js.map +1 -0
  69. package/dist/components/Nav.d.ts +11 -0
  70. package/dist/components/Nav.d.ts.map +1 -0
  71. package/dist/components/Nav.js +53 -0
  72. package/dist/components/Nav.js.map +1 -0
  73. package/dist/components/ScheduleTour.d.ts +8 -0
  74. package/dist/components/ScheduleTour.d.ts.map +1 -0
  75. package/dist/components/ScheduleTour.js +158 -0
  76. package/dist/components/ScheduleTour.js.map +1 -0
  77. package/dist/components/ScrollReveal.d.ts +12 -0
  78. package/dist/components/ScrollReveal.d.ts.map +1 -0
  79. package/dist/components/ScrollReveal.js +37 -0
  80. package/dist/components/ScrollReveal.js.map +1 -0
  81. package/dist/components/Slot.d.ts +14 -0
  82. package/dist/components/Slot.d.ts.map +1 -0
  83. package/dist/components/Slot.js +5 -0
  84. package/dist/components/Slot.js.map +1 -0
  85. package/dist/components/Stat.d.ts +12 -0
  86. package/dist/components/Stat.d.ts.map +1 -0
  87. package/dist/components/Stat.js +12 -0
  88. package/dist/components/Stat.js.map +1 -0
  89. package/dist/components/Testimonial.d.ts +10 -0
  90. package/dist/components/Testimonial.d.ts.map +1 -0
  91. package/dist/components/Testimonial.js +9 -0
  92. package/dist/components/Testimonial.js.map +1 -0
  93. package/dist/components/Text.d.ts +3 -2
  94. package/dist/components/Text.d.ts.map +1 -1
  95. package/dist/components/Text.js +16 -7
  96. package/dist/components/Text.js.map +1 -1
  97. package/dist/components/ThemeProvider.d.ts.map +1 -1
  98. package/dist/components/ThemeProvider.js +85 -5
  99. package/dist/components/ThemeProvider.js.map +1 -1
  100. package/dist/components/VideoHero.d.ts +16 -0
  101. package/dist/components/VideoHero.d.ts.map +1 -0
  102. package/dist/components/VideoHero.js +19 -0
  103. package/dist/components/VideoHero.js.map +1 -0
  104. package/dist/components/VideoPlayer.d.ts +18 -0
  105. package/dist/components/VideoPlayer.d.ts.map +1 -0
  106. package/dist/components/VideoPlayer.js +14 -0
  107. package/dist/components/VideoPlayer.js.map +1 -0
  108. package/dist/components/VirtualTourEmbed.d.ts +9 -0
  109. package/dist/components/VirtualTourEmbed.d.ts.map +1 -0
  110. package/dist/components/VirtualTourEmbed.js +5 -0
  111. package/dist/components/VirtualTourEmbed.js.map +1 -0
  112. package/dist/components/browser/ComponentBrowser.d.ts +2 -0
  113. package/dist/components/browser/ComponentBrowser.d.ts.map +1 -0
  114. package/dist/components/browser/ComponentBrowser.js +73 -0
  115. package/dist/components/browser/ComponentBrowser.js.map +1 -0
  116. package/dist/components/browser/ComponentShowcase.d.ts +8 -0
  117. package/dist/components/browser/ComponentShowcase.d.ts.map +1 -0
  118. package/dist/components/browser/ComponentShowcase.js +104 -0
  119. package/dist/components/browser/ComponentShowcase.js.map +1 -0
  120. package/dist/components/browser/componentMeta.d.ts +40 -0
  121. package/dist/components/browser/componentMeta.d.ts.map +1 -0
  122. package/dist/components/browser/componentMeta.js +726 -0
  123. package/dist/components/browser/componentMeta.js.map +1 -0
  124. package/dist/components/registry.d.ts.map +1 -1
  125. package/dist/components/registry.js +56 -0
  126. package/dist/components/registry.js.map +1 -1
  127. package/dist/components/units/FloorPlanCard.d.ts +16 -0
  128. package/dist/components/units/FloorPlanCard.d.ts.map +1 -0
  129. package/dist/components/units/FloorPlanCard.js +28 -0
  130. package/dist/components/units/FloorPlanCard.js.map +1 -0
  131. package/dist/components/units/FloorplanExplorer.d.ts +21 -0
  132. package/dist/components/units/FloorplanExplorer.d.ts.map +1 -0
  133. package/dist/components/units/FloorplanExplorer.js +39 -0
  134. package/dist/components/units/FloorplanExplorer.js.map +1 -0
  135. package/dist/components/units/PricingMatrixModal.d.ts +12 -0
  136. package/dist/components/units/PricingMatrixModal.d.ts.map +1 -0
  137. package/dist/components/units/PricingMatrixModal.js +78 -0
  138. package/dist/components/units/PricingMatrixModal.js.map +1 -0
  139. package/dist/components/units/UnitCard.d.ts +12 -3
  140. package/dist/components/units/UnitCard.d.ts.map +1 -1
  141. package/dist/components/units/UnitCard.js +33 -5
  142. package/dist/components/units/UnitCard.js.map +1 -1
  143. package/dist/components/units/UnitDetail.d.ts +11 -0
  144. package/dist/components/units/UnitDetail.d.ts.map +1 -0
  145. package/dist/components/units/UnitDetail.js +16 -0
  146. package/dist/components/units/UnitDetail.js.map +1 -0
  147. package/dist/components/units/UnitExplorer.d.ts +16 -2
  148. package/dist/components/units/UnitExplorer.d.ts.map +1 -1
  149. package/dist/components/units/UnitExplorer.js +128 -27
  150. package/dist/components/units/UnitExplorer.js.map +1 -1
  151. package/dist/components/units/UnitFilters.d.ts +2 -2
  152. package/dist/components/units/UnitFilters.d.ts.map +1 -1
  153. package/dist/components/units/UnitFilters.js +2 -2
  154. package/dist/components/units/UnitFilters.js.map +1 -1
  155. package/dist/components/units/UnitPage.d.ts +8 -0
  156. package/dist/components/units/UnitPage.d.ts.map +1 -0
  157. package/dist/components/units/UnitPage.js +130 -0
  158. package/dist/components/units/UnitPage.js.map +1 -0
  159. package/dist/components/units/types.d.ts +109 -24
  160. package/dist/components/units/types.d.ts.map +1 -1
  161. package/dist/components/units/types.js +1 -0
  162. package/dist/components/units/types.js.map +1 -1
  163. package/dist/hooks/useAnalytics.d.ts +16 -0
  164. package/dist/hooks/useAnalytics.d.ts.map +1 -0
  165. package/dist/hooks/useAnalytics.js +65 -0
  166. package/dist/hooks/useAnalytics.js.map +1 -0
  167. package/dist/hooks/useAuth.d.ts.map +1 -1
  168. package/dist/hooks/useAuth.js +8 -2
  169. package/dist/hooks/useAuth.js.map +1 -1
  170. package/dist/hooks/useFees.d.ts +8 -0
  171. package/dist/hooks/useFees.d.ts.map +1 -0
  172. package/dist/hooks/useFees.js +37 -0
  173. package/dist/hooks/useFees.js.map +1 -0
  174. package/dist/hooks/useFloorplans.d.ts +19 -0
  175. package/dist/hooks/useFloorplans.d.ts.map +1 -0
  176. package/dist/hooks/useFloorplans.js +52 -0
  177. package/dist/hooks/useFloorplans.js.map +1 -0
  178. package/dist/hooks/useModal.d.ts +11 -0
  179. package/dist/hooks/useModal.d.ts.map +1 -0
  180. package/dist/hooks/useModal.js +35 -0
  181. package/dist/hooks/useModal.js.map +1 -0
  182. package/dist/hooks/useProperty.d.ts +66 -0
  183. package/dist/hooks/useProperty.d.ts.map +1 -0
  184. package/dist/hooks/useProperty.js +49 -0
  185. package/dist/hooks/useProperty.js.map +1 -0
  186. package/dist/hooks/useSpecials.d.ts +8 -0
  187. package/dist/hooks/useSpecials.d.ts.map +1 -0
  188. package/dist/hooks/useSpecials.js +37 -0
  189. package/dist/hooks/useSpecials.js.map +1 -0
  190. package/dist/index.d.ts +10 -3
  191. package/dist/index.d.ts.map +1 -1
  192. package/dist/index.js +8 -1
  193. package/dist/index.js.map +1 -1
  194. package/dist/renderer.d.ts.map +1 -1
  195. package/dist/renderer.js +46 -3
  196. package/dist/renderer.js.map +1 -1
  197. package/dist/router.d.ts +9 -0
  198. package/dist/router.d.ts.map +1 -1
  199. package/dist/router.js +34 -1
  200. package/dist/router.js.map +1 -1
  201. package/dist/types.d.ts +47 -1
  202. package/dist/types.d.ts.map +1 -1
  203. package/dist/utils/imageUrl.d.ts +21 -0
  204. package/dist/utils/imageUrl.d.ts.map +1 -0
  205. package/dist/utils/imageUrl.js +46 -0
  206. package/dist/utils/imageUrl.js.map +1 -0
  207. package/package.json +1 -1
@@ -0,0 +1,726 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Metadata catalog
3
+ // ---------------------------------------------------------------------------
4
+ export const componentMeta = {
5
+ // ── Text & Typography ─────────────────────────────────────────────────
6
+ Text: {
7
+ category: "Text & Typography",
8
+ description: "Semantic text with multiple heading/body variants and theme fonts",
9
+ props: {
10
+ content: { type: { kind: "string", default: "The quick brown fox jumps over the lazy dog" } },
11
+ variant: {
12
+ type: {
13
+ kind: "enum",
14
+ options: ["display", "h1", "h2", "h3", "subtitle", "body", "body-lg", "caption", "overline"],
15
+ default: "body",
16
+ },
17
+ },
18
+ },
19
+ presets: [
20
+ { label: "Display", props: { content: "Luxury Living", variant: "display" } },
21
+ { label: "Heading 1", props: { content: "Welcome Home", variant: "h1" } },
22
+ { label: "Heading 2", props: { content: "Our Amenities", variant: "h2" } },
23
+ { label: "Heading 3", props: { content: "Floor Plans", variant: "h3" } },
24
+ { label: "Subtitle", props: { content: "Discover exceptional living in the heart of downtown", variant: "subtitle" } },
25
+ { label: "Body", props: { content: "Our community features resort-style amenities, modern finishes, and a prime location near dining, shopping, and entertainment.", variant: "body" } },
26
+ { label: "Body Large", props: { content: "Experience the perfect blend of comfort and convenience.", variant: "body-lg" } },
27
+ { label: "Caption", props: { content: "Starting from $1,450/mo", variant: "caption" } },
28
+ { label: "Overline", props: { content: "NOW LEASING", variant: "overline" } },
29
+ ],
30
+ },
31
+ Button: {
32
+ category: "Text & Typography",
33
+ description: "Interactive button with navigation, scroll, and modal actions",
34
+ props: {
35
+ content: { type: { kind: "string", default: "Get Started" } },
36
+ variant: { type: { kind: "enum", options: ["primary", "secondary", "outline", "ghost"], default: "primary" } },
37
+ size: { type: { kind: "enum", options: ["sm", "md", "lg"], default: "md" } },
38
+ fullWidth: { type: { kind: "boolean", default: false } },
39
+ },
40
+ presets: [
41
+ { label: "Primary", props: { content: "Schedule a Tour", variant: "primary", size: "lg" } },
42
+ { label: "Secondary", props: { content: "Learn More", variant: "secondary", size: "md" } },
43
+ { label: "Outline", props: { content: "View Floor Plans", variant: "outline", size: "md" } },
44
+ { label: "Ghost", props: { content: "See All Units →", variant: "ghost", size: "md" } },
45
+ { label: "Full Width", props: { content: "Apply Now", variant: "primary", size: "lg", fullWidth: true } },
46
+ { label: "Small", props: { content: "Details", variant: "outline", size: "sm" } },
47
+ ],
48
+ },
49
+ Icon: {
50
+ category: "Text & Typography",
51
+ description: "SVG icons for amenities and features",
52
+ props: {
53
+ name: { type: { kind: "enum", options: ["pet", "fitness", "pool", "coworking", "clubroom", "grill", "parking", "laundry", "ev-charging", "package", "wifi", "security"], default: "fitness" } },
54
+ size: { type: { kind: "enum", options: ["sm", "md", "lg"], default: "md" } },
55
+ },
56
+ presets: [
57
+ { label: "Fitness (lg)", props: { name: "fitness", size: "lg" } },
58
+ { label: "Pool (lg)", props: { name: "pool", size: "lg" } },
59
+ { label: "Pet (lg)", props: { name: "pet", size: "lg" } },
60
+ { label: "Security (md)", props: { name: "security", size: "md" } },
61
+ { label: "EV Charging (md)", props: { name: "ev-charging", size: "md" } },
62
+ { label: "All Icons", props: { name: "fitness", size: "lg" } },
63
+ ],
64
+ },
65
+ Badge: {
66
+ category: "Text & Typography",
67
+ description: "Small pill labels for status, tags, and highlights",
68
+ props: {
69
+ label: { type: { kind: "string", default: "Now Leasing" } },
70
+ variant: { type: { kind: "enum", options: ["default", "success", "warning", "info", "accent"], default: "default" } },
71
+ size: { type: { kind: "enum", options: ["sm", "md"], default: "sm" } },
72
+ },
73
+ presets: [
74
+ { label: "Now Leasing", props: { label: "Now Leasing", variant: "success" } },
75
+ { label: "Pet Friendly", props: { label: "Pet Friendly", variant: "info" } },
76
+ { label: "Limited Time", props: { label: "Limited Time", variant: "warning" } },
77
+ { label: "New", props: { label: "New", variant: "accent" } },
78
+ { label: "Default", props: { label: "Studio", variant: "default" } },
79
+ ],
80
+ },
81
+ Stat: {
82
+ category: "Text & Typography",
83
+ description: "Big number + label for statistics and highlights",
84
+ props: {
85
+ value: { type: { kind: "string", default: "150" } },
86
+ label: { type: { kind: "string", default: "Units" } },
87
+ prefix: { type: { kind: "string", default: "" } },
88
+ suffix: { type: { kind: "string", default: "+" } },
89
+ size: { type: { kind: "enum", options: ["sm", "md", "lg"], default: "md" } },
90
+ },
91
+ presets: [
92
+ { label: "Unit Count", props: { value: "150", label: "Total Units", suffix: "+" } },
93
+ { label: "Rating", props: { value: "4.8", label: "Resident Rating", prefix: "", suffix: "" } },
94
+ { label: "Starting Price", props: { value: "1,200", label: "Starting At", prefix: "$", suffix: "/mo" } },
95
+ { label: "Year Built", props: { value: "2024", label: "Year Built", prefix: "", suffix: "" } },
96
+ ],
97
+ },
98
+ Divider: {
99
+ category: "Text & Typography",
100
+ description: "Visual separator with optional label",
101
+ props: {
102
+ label: { type: { kind: "string", default: "" } },
103
+ spacing: { type: { kind: "enum", options: ["sm", "md", "lg"], default: "md" } },
104
+ },
105
+ presets: [
106
+ { label: "Simple", props: { spacing: "md" } },
107
+ { label: "With Label", props: { label: "OR", spacing: "md" } },
108
+ { label: "Tight", props: { spacing: "sm" } },
109
+ ],
110
+ },
111
+ // ── Layout ─────────────────────────────────────────────────────────────
112
+ Stack: {
113
+ category: "Layout",
114
+ description: "Flexbox container for vertical or horizontal layouts",
115
+ hasChildren: true,
116
+ props: {
117
+ direction: { type: { kind: "enum", options: ["vertical", "horizontal"], default: "vertical" } },
118
+ gap: { type: { kind: "enum", options: ["none", "sm", "md", "lg", "xl"], default: "md" } },
119
+ align: { type: { kind: "enum", options: ["start", "center", "end", "stretch"], default: "stretch" } },
120
+ justify: { type: { kind: "enum", options: ["start", "center", "end", "between"], default: "start" } },
121
+ },
122
+ presets: [
123
+ {
124
+ label: "Vertical Stack",
125
+ props: { direction: "vertical", gap: "md" },
126
+ children: [
127
+ { type: "Text", props: { content: "First Item", variant: "h3" } },
128
+ { type: "Text", props: { content: "Second Item", variant: "body" } },
129
+ { type: "Button", props: { content: "Action", variant: "primary" } },
130
+ ],
131
+ },
132
+ {
133
+ label: "Horizontal Buttons",
134
+ props: { direction: "horizontal", gap: "md", justify: "center" },
135
+ children: [
136
+ { type: "Button", props: { content: "Primary", variant: "primary" } },
137
+ { type: "Button", props: { content: "Secondary", variant: "outline" } },
138
+ ],
139
+ },
140
+ {
141
+ label: "Centered Content",
142
+ props: { direction: "vertical", gap: "lg", align: "center" },
143
+ children: [
144
+ { type: "Text", props: { content: "WELCOME", variant: "overline" } },
145
+ { type: "Text", props: { content: "Find Your Home", variant: "h2" } },
146
+ { type: "Text", props: { content: "Browse our available apartments and schedule a tour today.", variant: "body" } },
147
+ ],
148
+ },
149
+ ],
150
+ },
151
+ Grid: {
152
+ category: "Layout",
153
+ description: "Responsive CSS Grid with 1-4 columns",
154
+ hasChildren: true,
155
+ props: {
156
+ columns: { type: { kind: "enum", options: [1, 2, 3, 4], default: 3 } },
157
+ gap: { type: { kind: "enum", options: ["none", "sm", "md", "lg", "xl"], default: "md" } },
158
+ },
159
+ presets: [
160
+ {
161
+ label: "3-Column Stats",
162
+ props: { columns: 3, gap: "lg" },
163
+ children: [
164
+ { type: "Stat", props: { value: "150", label: "Units", suffix: "+" } },
165
+ { type: "Stat", props: { value: "4.8", label: "Rating" } },
166
+ { type: "Stat", props: { value: "2024", label: "Year Built" } },
167
+ ],
168
+ },
169
+ {
170
+ label: "2-Column Cards",
171
+ props: { columns: 2, gap: "lg" },
172
+ children: [
173
+ { type: "FeatureCard", props: { title: "Modern Kitchens", description: "Quartz countertops, stainless steel appliances, and custom cabinetry.", imagePosition: "top" } },
174
+ { type: "FeatureCard", props: { title: "Rooftop Lounge", description: "Panoramic city views with outdoor seating and grilling stations.", imagePosition: "top" } },
175
+ ],
176
+ },
177
+ ],
178
+ },
179
+ Container: {
180
+ category: "Layout",
181
+ description: "Padded wrapper with background color/image and max-width",
182
+ hasChildren: true,
183
+ props: {
184
+ padding: { type: { kind: "enum", options: ["none", "sm", "md", "lg", "xl", "2xl"], default: "lg" } },
185
+ maxWidth: { type: { kind: "enum", options: ["narrow", "default", "wide", "full"], default: "default" } },
186
+ bg: { type: { kind: "string", default: "#ffffff" } },
187
+ },
188
+ presets: [
189
+ {
190
+ label: "White Section",
191
+ props: { bg: "#ffffff", padding: "xl", maxWidth: "wide" },
192
+ children: [
193
+ { type: "Text", props: { content: "Our Community", variant: "h2" } },
194
+ { type: "Text", props: { content: "Discover what makes us different.", variant: "body" } },
195
+ ],
196
+ },
197
+ {
198
+ label: "Dark Section",
199
+ props: { bg: "#1c1917", padding: "2xl", maxWidth: "default" },
200
+ children: [
201
+ { type: "Text", props: { content: "Amenities", variant: "h2", className: "text-white" } },
202
+ { type: "Text", props: { content: "Resort-style living.", variant: "body", className: "text-white/70" } },
203
+ ],
204
+ },
205
+ ],
206
+ },
207
+ ScrollReveal: {
208
+ category: "Layout",
209
+ description: "Animate children on scroll using IntersectionObserver",
210
+ hasChildren: true,
211
+ props: {
212
+ direction: { type: { kind: "enum", options: ["up", "down", "left", "right", "none"], default: "up" } },
213
+ delay: { type: { kind: "number", min: 0, max: 1000, default: 0 } },
214
+ duration: { type: { kind: "number", min: 100, max: 2000, default: 600 } },
215
+ },
216
+ presets: [
217
+ {
218
+ label: "Fade Up",
219
+ props: { direction: "up", duration: 600 },
220
+ children: [
221
+ { type: "Text", props: { content: "This fades in from below", variant: "h2" } },
222
+ ],
223
+ },
224
+ {
225
+ label: "Slide Left",
226
+ props: { direction: "left", duration: 800, delay: 200 },
227
+ children: [
228
+ { type: "Text", props: { content: "This slides in from the right", variant: "h3" } },
229
+ ],
230
+ },
231
+ ],
232
+ },
233
+ // ── Heroes & Media ────────────────────────────────────────────────────
234
+ VideoHero: {
235
+ category: "Heroes & Media",
236
+ description: "Full-width video/image background with overlay content",
237
+ hasChildren: true,
238
+ props: {
239
+ poster: { type: { kind: "string", default: "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?w=1920&q=80" } },
240
+ overlay: { type: { kind: "string", default: "rgba(0,0,0,0.4)" } },
241
+ height: { type: { kind: "enum", options: ["sm", "md", "lg", "full"], default: "lg" } },
242
+ },
243
+ presets: [
244
+ {
245
+ label: "Full Hero",
246
+ props: {
247
+ poster: "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?w=1920&q=80",
248
+ overlay: "rgba(0,0,0,0.5)",
249
+ height: "full",
250
+ },
251
+ children: [
252
+ {
253
+ type: "Stack", props: { direction: "vertical", gap: "lg", align: "center" },
254
+ children: [
255
+ { type: "Text", props: { content: "LUXURY LIVING", variant: "overline", className: "text-teal-300" } },
256
+ { type: "Text", props: { content: "The Meridian Collection", variant: "display", className: "text-white text-center" } },
257
+ { type: "Text", props: { content: "Exceptional Living in Austin's Most Coveted Neighborhoods", variant: "subtitle", className: "text-white/70 text-center" } },
258
+ { type: "Button", props: { content: "Explore Communities", size: "lg" } },
259
+ ],
260
+ },
261
+ ],
262
+ },
263
+ {
264
+ label: "Medium Hero",
265
+ props: {
266
+ poster: "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1920&q=80",
267
+ overlay: "rgba(28,25,23,0.55)",
268
+ height: "md",
269
+ },
270
+ children: [
271
+ {
272
+ type: "Stack", props: { direction: "vertical", gap: "md", align: "center" },
273
+ children: [
274
+ { type: "Text", props: { content: "Find Your Perfect Home", variant: "h1", className: "text-white text-center" } },
275
+ { type: "Button", props: { content: "View Floor Plans", size: "lg" } },
276
+ ],
277
+ },
278
+ ],
279
+ },
280
+ ],
281
+ },
282
+ Gallery: {
283
+ category: "Heroes & Media",
284
+ description: "Photo grid or carousel with lightbox, category filters, and API integration",
285
+ needsApi: true,
286
+ props: {
287
+ layout: { type: { kind: "enum", options: ["grid", "carousel"], default: "grid" } },
288
+ columns: { type: { kind: "enum", options: [2, 3, 4], default: 3 } },
289
+ },
290
+ presets: [
291
+ {
292
+ label: "Grid (3 col)",
293
+ props: {
294
+ layout: "grid",
295
+ columns: 3,
296
+ images: [
297
+ { src: "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=600&q=80", alt: "Living Room", category: "Interiors" },
298
+ { src: "https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?w=600&q=80", alt: "Kitchen", category: "Interiors" },
299
+ { src: "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?w=600&q=80", alt: "Pool", category: "Community" },
300
+ { src: "https://images.unsplash.com/photo-1600596542815-ffad4c1539a9?w=600&q=80", alt: "Exterior", category: "Community" },
301
+ { src: "https://images.unsplash.com/photo-1600585154340-be6161a56a0c?w=600&q=80", alt: "Bedroom", category: "Interiors" },
302
+ { src: "https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=600&q=80", alt: "Bathroom", category: "Interiors" },
303
+ ],
304
+ },
305
+ },
306
+ {
307
+ label: "Carousel",
308
+ props: {
309
+ layout: "carousel",
310
+ images: [
311
+ { src: "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1200&q=80", alt: "Living Room" },
312
+ { src: "https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?w=1200&q=80", alt: "Kitchen" },
313
+ { src: "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?w=1200&q=80", alt: "Pool" },
314
+ ],
315
+ },
316
+ },
317
+ ],
318
+ },
319
+ VideoPlayer: {
320
+ category: "Heroes & Media",
321
+ description: "Responsive video player with controls and aspect ratio options",
322
+ props: {
323
+ controls: { type: { kind: "boolean", default: true } },
324
+ autoplay: { type: { kind: "boolean", default: false } },
325
+ loop: { type: { kind: "boolean", default: false } },
326
+ aspect: { type: { kind: "enum", options: ["16/9", "4/3", "1/1", "auto"], default: "16/9" } },
327
+ },
328
+ presets: [
329
+ { label: "16:9 Controls", props: { src: "https://assets.mixkit.co/videos/1171/1171-720.mp4", controls: true, aspect: "16/9" } },
330
+ { label: "Square Autoplay", props: { src: "https://assets.mixkit.co/videos/1171/1171-720.mp4", autoplay: true, loop: true, aspect: "1/1" } },
331
+ ],
332
+ },
333
+ Image: {
334
+ category: "Heroes & Media",
335
+ description: "Basic responsive image",
336
+ props: {
337
+ src: { type: { kind: "string", default: "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?w=800&q=80" } },
338
+ alt: { type: { kind: "string", default: "Property photo" } },
339
+ },
340
+ presets: [
341
+ { label: "Property Photo", props: { src: "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?w=800&q=80", alt: "Property exterior" } },
342
+ ],
343
+ },
344
+ MapEmbed: {
345
+ category: "Heroes & Media",
346
+ description: "Google Maps embed with lat/lng coordinates",
347
+ props: {
348
+ lat: { type: { kind: "number", default: 30.2672 } },
349
+ lng: { type: { kind: "number", default: -97.7431 } },
350
+ zoom: { type: { kind: "number", min: 1, max: 20, default: 15 } },
351
+ height: { type: { kind: "string", default: "400px" } },
352
+ },
353
+ presets: [
354
+ { label: "Austin, TX", props: { lat: 30.2672, lng: -97.7431, zoom: 15, height: "400px" } },
355
+ { label: "Zoomed Out", props: { lat: 30.2672, lng: -97.7431, zoom: 12, height: "300px" } },
356
+ ],
357
+ },
358
+ VirtualTourEmbed: {
359
+ category: "Heroes & Media",
360
+ description: "Matterport / 3D tour iframe wrapper",
361
+ props: {
362
+ src: { type: { kind: "string", default: "https://my.matterport.com/show/?m=SxQL3iGyoDo" } },
363
+ aspectRatio: { type: { kind: "string", default: "16/9" } },
364
+ title: { type: { kind: "string", default: "Virtual Tour" } },
365
+ },
366
+ presets: [
367
+ { label: "Matterport Tour", props: { src: "https://my.matterport.com/show/?m=SxQL3iGyoDo", aspectRatio: "16/9", title: "Virtual Tour" } },
368
+ ],
369
+ },
370
+ // ── Content Cards ─────────────────────────────────────────────────────
371
+ FeatureCard: {
372
+ category: "Content Cards",
373
+ description: "Image + text card with link, multiple image positions",
374
+ props: {
375
+ imagePosition: { type: { kind: "enum", options: ["top", "left", "right"], default: "top" } },
376
+ title: { type: { kind: "string", default: "Modern Living" } },
377
+ subtitle: { type: { kind: "string", default: "Now Leasing" } },
378
+ description: { type: { kind: "string", default: "Contemporary apartments with premium finishes." } },
379
+ linkLabel: { type: { kind: "string", default: "Learn More →" } },
380
+ },
381
+ presets: [
382
+ {
383
+ label: "Image Top",
384
+ props: {
385
+ image: "https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?w=600&q=80",
386
+ imagePosition: "top",
387
+ title: "The Meridian at Barton Creek",
388
+ subtitle: "Now Leasing",
389
+ description: "Luxury apartments nestled in the Texas Hill Country with resort-style amenities.",
390
+ linkLabel: "Explore Community →",
391
+ },
392
+ },
393
+ {
394
+ label: "Image Left",
395
+ props: {
396
+ image: "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=600&q=80",
397
+ imagePosition: "left",
398
+ title: "Spacious Floor Plans",
399
+ subtitle: "1-3 Bedrooms",
400
+ description: "Open-concept layouts with premium finishes and abundant natural light.",
401
+ linkLabel: "View Plans →",
402
+ },
403
+ },
404
+ {
405
+ label: "Image Right",
406
+ props: {
407
+ image: "https://images.unsplash.com/photo-1600585154340-be6161a56a0c?w=600&q=80",
408
+ imagePosition: "right",
409
+ title: "Resort-Style Pool",
410
+ description: "Relax at our heated infinity pool with cabanas and sun deck.",
411
+ },
412
+ },
413
+ ],
414
+ },
415
+ Testimonial: {
416
+ category: "Content Cards",
417
+ description: "Quote card with author, role, and star rating",
418
+ props: {
419
+ quote: { type: { kind: "string", default: "Moving here was the best decision we've made." } },
420
+ author: { type: { kind: "string", default: "Sarah M." } },
421
+ role: { type: { kind: "string", default: "Resident since 2024" } },
422
+ rating: { type: { kind: "number", min: 1, max: 5, default: 5 } },
423
+ },
424
+ presets: [
425
+ {
426
+ label: "5-Star Review",
427
+ props: {
428
+ quote: "The amenities are incredible and the staff is always so helpful. I love living here!",
429
+ author: "Sarah M.",
430
+ role: "Resident since 2024",
431
+ rating: 5,
432
+ },
433
+ },
434
+ {
435
+ label: "No Rating",
436
+ props: {
437
+ quote: "Beautiful community with a great location. Walking distance to everything we need.",
438
+ author: "James K.",
439
+ role: "2BR Resident",
440
+ },
441
+ },
442
+ ],
443
+ },
444
+ CTABanner: {
445
+ category: "Content Cards",
446
+ description: "Full-width call-to-action section with gradient background",
447
+ hasChildren: true,
448
+ props: {
449
+ gradient: { type: { kind: "string", default: "linear-gradient(135deg, #0f766e, #0d9488)" } },
450
+ },
451
+ presets: [
452
+ {
453
+ label: "Tour CTA",
454
+ props: { gradient: "linear-gradient(135deg, #0f766e, #0d9488)" },
455
+ children: [
456
+ {
457
+ type: "Stack", props: { direction: "vertical", gap: "md", align: "center" },
458
+ children: [
459
+ { type: "Text", props: { content: "Ready to Make It Home?", variant: "h2", className: "text-white" } },
460
+ { type: "Text", props: { content: "Schedule a tour today and see what makes us special.", variant: "body-lg", className: "text-white/80" } },
461
+ { type: "Button", props: { content: "Schedule a Tour", size: "lg", className: "bg-white text-[#0f766e] hover:bg-white/90" } },
462
+ ],
463
+ },
464
+ ],
465
+ },
466
+ {
467
+ label: "Dark CTA",
468
+ props: { gradient: "linear-gradient(135deg, #1e293b, #334155)" },
469
+ children: [
470
+ {
471
+ type: "Stack", props: { direction: "vertical", gap: "md", align: "center" },
472
+ children: [
473
+ { type: "Text", props: { content: "Limited Availability", variant: "h2", className: "text-white" } },
474
+ { type: "Button", props: { content: "Apply Now", size: "lg", variant: "outline", className: "border-white text-white" } },
475
+ ],
476
+ },
477
+ ],
478
+ },
479
+ ],
480
+ },
481
+ AddressBlock: {
482
+ category: "Content Cards",
483
+ description: "Address + phone + Get Directions link",
484
+ props: {
485
+ layout: { type: { kind: "enum", options: ["inline", "stacked"], default: "stacked" } },
486
+ colorScheme: { type: { kind: "enum", options: ["light", "dark"], default: "light" } },
487
+ },
488
+ presets: [
489
+ { label: "Stacked", props: { address: "1234 Barton Springs Rd", city: "Austin", state: "TX", postalCode: "78704", phone: "(512) 555-0123", layout: "stacked" } },
490
+ { label: "Inline", props: { address: "1234 Barton Springs Rd", city: "Austin", state: "TX", postalCode: "78704", phone: "(512) 555-0123", layout: "inline" } },
491
+ ],
492
+ },
493
+ // ── Navigation ────────────────────────────────────────────────────────
494
+ Nav: {
495
+ category: "Navigation",
496
+ description: "Sticky/static navbar with logo, links, and mobile menu",
497
+ props: {
498
+ siteName: { type: { kind: "string", default: "The Meridian" } },
499
+ sticky: { type: { kind: "boolean", default: false } },
500
+ },
501
+ presets: [
502
+ {
503
+ label: "Standard Nav",
504
+ props: {
505
+ siteName: "The Meridian Collection",
506
+ links: [
507
+ { label: "Communities", to: "#" },
508
+ { label: "Amenities", to: "#" },
509
+ { label: "Gallery", to: "#" },
510
+ { label: "Contact", to: "#" },
511
+ ],
512
+ sticky: true,
513
+ },
514
+ },
515
+ {
516
+ label: "Minimal Nav",
517
+ props: {
518
+ siteName: "Parkside",
519
+ links: [
520
+ { label: "Floor Plans", to: "#" },
521
+ { label: "Schedule Tour", to: "#" },
522
+ ],
523
+ },
524
+ },
525
+ ],
526
+ },
527
+ Footer: {
528
+ category: "Navigation",
529
+ description: "Footer with column links and copyright",
530
+ props: {
531
+ copyright: { type: { kind: "string", default: "© 2026 The Meridian Collection. All rights reserved." } },
532
+ },
533
+ presets: [
534
+ {
535
+ label: "3-Column Footer",
536
+ props: {
537
+ columns: [
538
+ { title: "Communities", links: [{ label: "Downtown", to: "#" }, { label: "Midtown", to: "#" }] },
539
+ { title: "Explore", links: [{ label: "Floor Plans", to: "#" }, { label: "Gallery", to: "#" }, { label: "Amenities", to: "#" }] },
540
+ { title: "Contact", links: [{ label: "Schedule Tour", to: "#" }, { label: "Apply Now", to: "#" }] },
541
+ ],
542
+ copyright: "© 2026 The Meridian Collection. All rights reserved.",
543
+ },
544
+ },
545
+ ],
546
+ },
547
+ Accordion: {
548
+ category: "Navigation",
549
+ description: "Collapsible sections for FAQs and categorized content",
550
+ props: {
551
+ allowMultiple: { type: { kind: "boolean", default: false } },
552
+ colorScheme: { type: { kind: "enum", options: ["light", "dark"], default: "light" } },
553
+ },
554
+ presets: [
555
+ {
556
+ label: "FAQ",
557
+ props: {
558
+ items: [
559
+ { title: "What are the lease terms?", content: "We offer 6, 9, and 12-month lease terms. Contact our leasing office for current specials and pricing." },
560
+ { title: "Is parking included?", content: "Each apartment comes with one reserved parking space. Additional spots and garage parking are available for an extra fee." },
561
+ { title: "Are pets allowed?", content: "Yes! We are a pet-friendly community. We welcome cats and dogs with a refundable pet deposit." },
562
+ { title: "What utilities are included?", content: "Water, sewer, and trash are included in your rent. Residents are responsible for electricity and internet." },
563
+ ],
564
+ allowMultiple: false,
565
+ },
566
+ },
567
+ {
568
+ label: "Multi-Open",
569
+ props: {
570
+ items: [
571
+ { title: "Community Amenities", content: "Pool, fitness center, clubroom, coworking space, and dog park." },
572
+ { title: "Apartment Features", content: "Quartz countertops, stainless appliances, walk-in closets, and in-unit washer/dryer." },
573
+ ],
574
+ allowMultiple: true,
575
+ defaultOpen: [0],
576
+ },
577
+ },
578
+ ],
579
+ },
580
+ // ── Data & Amenities ──────────────────────────────────────────────────
581
+ AmenityList: {
582
+ category: "Data & Amenities",
583
+ description: "Amenity display with icon grid, categorized accordion, or simple list",
584
+ props: {
585
+ layout: { type: { kind: "enum", options: ["iconGrid", "categorized", "list"], default: "iconGrid" } },
586
+ columns: { type: { kind: "enum", options: [2, 3, 4, 6], default: 3 } },
587
+ showIcons: { type: { kind: "boolean", default: true } },
588
+ colorScheme: { type: { kind: "enum", options: ["light", "dark"], default: "light" } },
589
+ },
590
+ presets: [
591
+ {
592
+ label: "Icon Grid",
593
+ props: {
594
+ layout: "iconGrid",
595
+ columns: 6,
596
+ amenities: [
597
+ { name: "Fitness Center", icon: "fitness" },
598
+ { name: "Pool", icon: "pool" },
599
+ { name: "Pet Friendly", icon: "pet" },
600
+ { name: "Coworking", icon: "coworking" },
601
+ { name: "Clubroom", icon: "clubroom" },
602
+ { name: "Grilling Stations", icon: "grill" },
603
+ ],
604
+ },
605
+ },
606
+ {
607
+ label: "Categorized",
608
+ props: {
609
+ layout: "categorized",
610
+ amenities: [
611
+ { name: "Fitness Center", category: "Community", icon: "fitness" },
612
+ { name: "Pool", category: "Community", icon: "pool" },
613
+ { name: "Clubroom", category: "Community", icon: "clubroom" },
614
+ { name: "In-Unit Washer/Dryer", category: "Apartment" },
615
+ { name: "Quartz Countertops", category: "Apartment" },
616
+ { name: "Walk-in Closets", category: "Apartment" },
617
+ ],
618
+ },
619
+ },
620
+ {
621
+ label: "Simple List",
622
+ props: {
623
+ layout: "list",
624
+ amenities: [
625
+ { name: "Stainless Steel Appliances" },
626
+ { name: "Hardwood Floors" },
627
+ { name: "Walk-in Closets" },
628
+ { name: "In-Unit Washer/Dryer" },
629
+ ],
630
+ },
631
+ },
632
+ ],
633
+ },
634
+ // ── Units & Floor Plans ───────────────────────────────────────────────
635
+ UnitExplorer: {
636
+ category: "Units & Floor Plans",
637
+ description: "Searchable, filterable unit listing with grid/list views, tabs, and sorting",
638
+ needsApi: true,
639
+ props: {
640
+ layout: { type: { kind: "enum", options: ["grid", "list"], default: "grid" } },
641
+ columns: { type: { kind: "enum", options: [1, 2, 3, 4], default: 3 } },
642
+ showFilters: { type: { kind: "boolean", default: true } },
643
+ showSort: { type: { kind: "boolean", default: true } },
644
+ showTabs: { type: { kind: "boolean", default: false } },
645
+ showPricing: { type: { kind: "boolean", default: true } },
646
+ showAvailability: { type: { kind: "boolean", default: true } },
647
+ showBedBath: { type: { kind: "boolean", default: true } },
648
+ showSquareFootage: { type: { kind: "boolean", default: true } },
649
+ showFloorplan: { type: { kind: "boolean", default: true } },
650
+ showSpecials: { type: { kind: "boolean", default: false } },
651
+ showImages: { type: { kind: "boolean", default: false } },
652
+ showApplyButton: { type: { kind: "boolean", default: false } },
653
+ cardStyle: { type: { kind: "enum", options: ["compact", "standard"], default: "standard" } },
654
+ },
655
+ presets: [
656
+ { label: "Full Featured", props: { layout: "grid", columns: 3, showFilters: true, showSort: true, showTabs: true, showPricing: true, showAvailability: true, showBedBath: true, showSquareFootage: true, showFloorplan: true } },
657
+ { label: "Compact Grid", props: { layout: "grid", columns: 4, showFilters: false, showSort: false, cardStyle: "compact", showPricing: true, showBedBath: true } },
658
+ { label: "List View", props: { layout: "list", showFilters: true, showSort: true, showPricing: true, showAvailability: true, showBedBath: true } },
659
+ ],
660
+ },
661
+ FloorplanExplorer: {
662
+ category: "Units & Floor Plans",
663
+ description: "Floor plan listing with media, rent ranges, and unit previews",
664
+ needsApi: true,
665
+ props: {
666
+ layout: { type: { kind: "enum", options: ["grid", "list"], default: "grid" } },
667
+ columns: { type: { kind: "enum", options: [1, 2, 3, 4], default: 3 } },
668
+ showMedia: { type: { kind: "boolean", default: true } },
669
+ showRentRange: { type: { kind: "boolean", default: true } },
670
+ showSqftRange: { type: { kind: "boolean", default: true } },
671
+ showBedBath: { type: { kind: "boolean", default: true } },
672
+ showUnitCount: { type: { kind: "boolean", default: true } },
673
+ unitPreview: { type: { kind: "enum", options: ["none", "count", "inline"], default: "count" } },
674
+ },
675
+ presets: [
676
+ { label: "Full Grid", props: { layout: "grid", columns: 3, showMedia: true, showRentRange: true, showBedBath: true, unitPreview: "count" } },
677
+ { label: "List with Inline Units", props: { layout: "list", showMedia: true, showRentRange: true, unitPreview: "inline" } },
678
+ ],
679
+ },
680
+ // ── Forms ─────────────────────────────────────────────────────────────
681
+ ContactForm: {
682
+ category: "Forms",
683
+ description: "Lead capture form that POSTs to /v1/prospect",
684
+ needsApi: true,
685
+ props: {},
686
+ presets: [
687
+ { label: "Default", props: { propertyId: "demo" } },
688
+ ],
689
+ },
690
+ ScheduleTour: {
691
+ category: "Forms",
692
+ description: "Two-step tour booking with date/time picker and contact form",
693
+ needsApi: true,
694
+ props: {},
695
+ presets: [
696
+ { label: "Default", props: { propertyId: "demo" } },
697
+ ],
698
+ },
699
+ };
700
+ // ---------------------------------------------------------------------------
701
+ // Helpers
702
+ // ---------------------------------------------------------------------------
703
+ export const CATEGORIES = [
704
+ "Heroes & Media",
705
+ "Content Cards",
706
+ "Text & Typography",
707
+ "Layout",
708
+ "Navigation",
709
+ "Data & Amenities",
710
+ "Units & Floor Plans",
711
+ "Forms",
712
+ ];
713
+ export function getComponentsByCategory() {
714
+ const result = {};
715
+ for (const cat of CATEGORIES) {
716
+ result[cat] = [];
717
+ }
718
+ for (const [name, meta] of Object.entries(componentMeta)) {
719
+ const cat = meta.category;
720
+ if (!result[cat])
721
+ result[cat] = [];
722
+ result[cat].push(name);
723
+ }
724
+ return result;
725
+ }
726
+ //# sourceMappingURL=componentMeta.js.map