@opensite/ui 1.8.2 → 1.8.4

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 (171) hide show
  1. package/dist/about-story-gallery.cjs +3 -30
  2. package/dist/about-story-gallery.d.cts +1 -1
  3. package/dist/about-story-gallery.d.ts +1 -1
  4. package/dist/about-story-gallery.js +3 -30
  5. package/dist/components.d.cts +1 -1
  6. package/dist/components.d.ts +1 -1
  7. package/dist/contact-callback.cjs +526 -273
  8. package/dist/contact-callback.d.cts +39 -59
  9. package/dist/contact-callback.d.ts +39 -59
  10. package/dist/contact-callback.js +528 -274
  11. package/dist/contact-card.cjs +459 -183
  12. package/dist/contact-card.d.cts +26 -49
  13. package/dist/contact-card.d.ts +26 -49
  14. package/dist/contact-card.js +461 -183
  15. package/dist/contact-careers.cjs +614 -510
  16. package/dist/contact-careers.d.cts +32 -55
  17. package/dist/contact-careers.d.ts +32 -55
  18. package/dist/contact-careers.js +616 -510
  19. package/dist/contact-catering.cjs +507 -501
  20. package/dist/contact-catering.d.cts +27 -61
  21. package/dist/contact-catering.d.ts +27 -61
  22. package/dist/contact-catering.js +509 -500
  23. package/dist/contact-consultation.cjs +484 -253
  24. package/dist/contact-consultation.d.cts +29 -56
  25. package/dist/contact-consultation.d.ts +29 -56
  26. package/dist/contact-consultation.js +486 -253
  27. package/dist/contact-dark.cjs +296 -296
  28. package/dist/contact-dark.d.cts +1 -1
  29. package/dist/contact-dark.d.ts +1 -1
  30. package/dist/contact-dark.js +297 -296
  31. package/dist/contact-demo.d.cts +1 -1
  32. package/dist/contact-demo.d.ts +1 -1
  33. package/dist/contact-emergency.d.cts +1 -1
  34. package/dist/contact-emergency.d.ts +1 -1
  35. package/dist/contact-event.d.cts +1 -1
  36. package/dist/contact-event.d.ts +1 -1
  37. package/dist/contact-faq.cjs +247 -250
  38. package/dist/contact-faq.d.cts +1 -1
  39. package/dist/contact-faq.d.ts +1 -1
  40. package/dist/contact-faq.js +248 -250
  41. package/dist/contact-feedback.d.cts +1 -1
  42. package/dist/contact-feedback.d.ts +1 -1
  43. package/dist/contact-fitness.d.cts +1 -1
  44. package/dist/contact-fitness.d.ts +1 -1
  45. package/dist/contact-guest.d.cts +1 -1
  46. package/dist/contact-guest.d.ts +1 -1
  47. package/dist/contact-image.d.cts +1 -1
  48. package/dist/contact-image.d.ts +1 -1
  49. package/dist/contact-insurance.d.cts +1 -1
  50. package/dist/contact-insurance.d.ts +1 -1
  51. package/dist/contact-interview.d.cts +1 -1
  52. package/dist/contact-interview.d.ts +1 -1
  53. package/dist/contact-locations.d.cts +1 -1
  54. package/dist/contact-locations.d.ts +1 -1
  55. package/dist/contact-maintenance.d.cts +1 -1
  56. package/dist/contact-maintenance.d.ts +1 -1
  57. package/dist/contact-map.d.cts +1 -1
  58. package/dist/contact-map.d.ts +1 -1
  59. package/dist/contact-minimal.d.cts +1 -1
  60. package/dist/contact-minimal.d.ts +1 -1
  61. package/dist/contact-moving.d.cts +1 -1
  62. package/dist/contact-moving.d.ts +1 -1
  63. package/dist/contact-multistep.d.cts +1 -1
  64. package/dist/contact-multistep.d.ts +1 -1
  65. package/dist/contact-partnership.d.cts +1 -1
  66. package/dist/contact-partnership.d.ts +1 -1
  67. package/dist/contact-photography.cjs +247 -250
  68. package/dist/contact-photography.d.cts +1 -1
  69. package/dist/contact-photography.d.ts +1 -1
  70. package/dist/contact-photography.js +248 -250
  71. package/dist/contact-press.d.cts +1 -1
  72. package/dist/contact-press.d.ts +1 -1
  73. package/dist/contact-quote.d.cts +1 -1
  74. package/dist/contact-quote.d.ts +1 -1
  75. package/dist/contact-referral.d.cts +1 -1
  76. package/dist/contact-referral.d.ts +1 -1
  77. package/dist/contact-report.d.cts +1 -1
  78. package/dist/contact-report.d.ts +1 -1
  79. package/dist/contact-reservation.d.cts +1 -1
  80. package/dist/contact-reservation.d.ts +1 -1
  81. package/dist/contact-retreat.d.cts +1 -1
  82. package/dist/contact-retreat.d.ts +1 -1
  83. package/dist/contact-rsvp.d.cts +1 -1
  84. package/dist/contact-rsvp.d.ts +1 -1
  85. package/dist/contact-sales.d.cts +1 -1
  86. package/dist/contact-sales.d.ts +1 -1
  87. package/dist/contact-schedule.d.cts +1 -1
  88. package/dist/contact-schedule.d.ts +1 -1
  89. package/dist/contact-sponsorship.d.cts +1 -1
  90. package/dist/contact-sponsorship.d.ts +1 -1
  91. package/dist/contact-support.d.cts +1 -1
  92. package/dist/contact-support.d.ts +1 -1
  93. package/dist/contact-tenant.d.cts +1 -1
  94. package/dist/contact-tenant.d.ts +1 -1
  95. package/dist/contact-vendor.d.cts +1 -1
  96. package/dist/contact-vendor.d.ts +1 -1
  97. package/dist/contact-volunteer.d.cts +1 -1
  98. package/dist/contact-volunteer.d.ts +1 -1
  99. package/dist/contact-warranty.d.cts +1 -1
  100. package/dist/contact-warranty.d.ts +1 -1
  101. package/dist/contact-wedding.d.cts +1 -1
  102. package/dist/contact-wedding.d.ts +1 -1
  103. package/dist/cta-app-download-newsletter.d.cts +1 -1
  104. package/dist/cta-app-download-newsletter.d.ts +1 -1
  105. package/dist/cta-newsletter-features.d.cts +1 -1
  106. package/dist/cta-newsletter-features.d.ts +1 -1
  107. package/dist/footer-accordion-social.d.cts +1 -1
  108. package/dist/footer-accordion-social.d.ts +1 -1
  109. package/dist/footer-newsletter-contact.d.cts +1 -1
  110. package/dist/footer-newsletter-contact.d.ts +1 -1
  111. package/dist/footer-newsletter-minimal.d.cts +1 -1
  112. package/dist/footer-newsletter-minimal.d.ts +1 -1
  113. package/dist/footer-split-image-accordion.d.cts +1 -1
  114. package/dist/footer-split-image-accordion.d.ts +1 -1
  115. package/dist/{forms-nGgHUTBw.d.cts → forms-CStlFhnh.d.cts} +41 -0
  116. package/dist/{forms-nGgHUTBw.d.ts → forms-CStlFhnh.d.ts} +41 -0
  117. package/dist/hero-conversation-intelligence.cjs +1 -2
  118. package/dist/hero-conversation-intelligence.d.cts +1 -5
  119. package/dist/hero-conversation-intelligence.d.ts +1 -5
  120. package/dist/hero-conversation-intelligence.js +1 -2
  121. package/dist/hero-conversion-video-play.cjs +2 -2
  122. package/dist/hero-conversion-video-play.js +2 -2
  123. package/dist/hero-design-system-3d.cjs +162 -82
  124. package/dist/hero-design-system-3d.js +162 -82
  125. package/dist/hero-ecommerce-product-showcase.cjs +103 -81
  126. package/dist/hero-ecommerce-product-showcase.d.cts +5 -1
  127. package/dist/hero-ecommerce-product-showcase.d.ts +5 -1
  128. package/dist/hero-ecommerce-product-showcase.js +103 -81
  129. package/dist/hero-floating-images.cjs +1 -1
  130. package/dist/hero-floating-images.js +1 -1
  131. package/dist/hero-hiring-animated-text.cjs +4 -4
  132. package/dist/hero-hiring-animated-text.js +4 -4
  133. package/dist/hero-minimal-centered-dark.cjs +111 -82
  134. package/dist/hero-minimal-centered-dark.d.cts +1 -1
  135. package/dist/hero-minimal-centered-dark.d.ts +1 -1
  136. package/dist/hero-minimal-centered-dark.js +111 -82
  137. package/dist/hero-mobile-app-download.cjs +1 -1
  138. package/dist/hero-mobile-app-download.js +1 -1
  139. package/dist/hero-overlay-cta-grid.cjs +1 -1
  140. package/dist/hero-overlay-cta-grid.js +1 -1
  141. package/dist/hero-spiral-pattern-cards.cjs +1 -1
  142. package/dist/hero-spiral-pattern-cards.js +1 -1
  143. package/dist/hero-startup-launch-cta.cjs +1 -1
  144. package/dist/hero-startup-launch-cta.js +1 -1
  145. package/dist/hero-stats-social-proof.cjs +106 -90
  146. package/dist/hero-stats-social-proof.js +106 -90
  147. package/dist/hero-testimonial-image-grid.cjs +1 -1
  148. package/dist/hero-testimonial-image-grid.js +1 -1
  149. package/dist/hero-therapy-testimonial-grid.cjs +1 -1
  150. package/dist/hero-therapy-testimonial-grid.js +1 -1
  151. package/dist/hero-ui-library-showcase.cjs +63 -15
  152. package/dist/hero-ui-library-showcase.d.cts +5 -1
  153. package/dist/hero-ui-library-showcase.d.ts +5 -1
  154. package/dist/hero-ui-library-showcase.js +63 -15
  155. package/dist/index.cjs +44 -6
  156. package/dist/index.d.cts +3 -2
  157. package/dist/index.d.ts +3 -2
  158. package/dist/index.js +44 -6
  159. package/dist/link-page-newsletter-social.d.cts +1 -1
  160. package/dist/link-page-newsletter-social.d.ts +1 -1
  161. package/dist/offer-modal-membership-image.d.cts +1 -1
  162. package/dist/offer-modal-membership-image.d.ts +1 -1
  163. package/dist/offer-modal-newsletter-discount.d.cts +1 -1
  164. package/dist/offer-modal-newsletter-discount.d.ts +1 -1
  165. package/dist/offer-modal-sheet-newsletter.d.cts +1 -1
  166. package/dist/offer-modal-sheet-newsletter.d.ts +1 -1
  167. package/dist/registry.cjs +14465 -14767
  168. package/dist/registry.js +12664 -12966
  169. package/dist/resource-list-hero-filter.d.cts +1 -1
  170. package/dist/resource-list-hero-filter.d.ts +1 -1
  171. package/package.json +3 -3
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
- import { P as PageSpeedFormConfig } from './forms-nGgHUTBw.cjs';
2
+ import { F as FormFieldConfig } from './form-field-types-flMXhIjG.cjs';
3
+ import { P as PageSpeedFormConfig } from './forms-CStlFhnh.cjs';
3
4
  import { f as SectionBackground, g as SectionSpacing, s as PatternName } from './community-initiatives-k1_FqqBQ.cjs';
4
5
  import { A as ActionConfig } from './blocks-rgCERYOC.cjs';
5
6
  import '@page-speed/forms/integration';
@@ -8,17 +9,6 @@ import 'class-variance-authority';
8
9
  import './button-variants-lRElsmTc.cjs';
9
10
  import 'class-variance-authority/types';
10
11
 
11
- interface ConsultationFormValues {
12
- service: string;
13
- duration: string;
14
- budget: string;
15
- firstName: string;
16
- lastName: string;
17
- email: string;
18
- phone: string;
19
- company: string;
20
- details: string;
21
- }
22
12
  interface ContactConsultationProps {
23
13
  /**
24
14
  * Main heading content
@@ -44,12 +34,23 @@ interface ContactConsultationProps {
44
34
  * Custom slot for rendering actions (overrides actions array and default submit)
45
35
  */
46
36
  actionsSlot?: React.ReactNode;
37
+ /**
38
+ * Array of form field configurations
39
+ * If not provided, defaults to: service, duration, budget, firstName, lastName, email, phone, company, details
40
+ */
41
+ formFields?: FormFieldConfig[];
42
+ /**
43
+ * Success message to display after form submission
44
+ * @default "Thank you for your consultation request! We'll be in touch within 24 hours to schedule your session."
45
+ */
46
+ successMessage?: React.ReactNode;
47
47
  /**
48
48
  * Additional CSS classes for the section
49
49
  */
50
50
  className?: string;
51
51
  /**
52
52
  * Additional CSS classes for the container
53
+ * @default "px-6 sm:px-6 md:px-8 lg:px-8"
53
54
  */
54
55
  containerClassName?: string;
55
56
  /**
@@ -76,15 +77,25 @@ interface ContactConsultationProps {
76
77
  * Additional CSS classes for the form
77
78
  */
78
79
  formClassName?: string;
80
+ /**
81
+ * Additional CSS classes for success message
82
+ */
83
+ successMessageClassName?: string;
84
+ /**
85
+ * Additional CSS classes for error message
86
+ */
87
+ errorMessageClassName?: string;
79
88
  /**
80
89
  * Additional CSS classes for the submit button
81
90
  */
82
- submitClassName?: string; /**
91
+ submitClassName?: string;
92
+ /**
83
93
  * Background style for the section
84
94
  */
85
95
  background?: SectionBackground;
86
96
  /**
87
97
  * Vertical spacing for the section
98
+ * @default "py-8 md:py-32"
88
99
  */
89
100
  spacing?: SectionSpacing;
90
101
  /**
@@ -96,57 +107,19 @@ interface ContactConsultationProps {
96
107
  */
97
108
  patternOpacity?: number;
98
109
  /**
99
- * Optional form submission configuration.
100
- *
101
- * **Universal Usage**: Works with ANY REST API endpoint. Simply provide an `endpoint` URL
102
- * and the form will submit to it in JSON format.
103
- *
104
- * @example
105
- * // Works with any API
106
- * formConfig={{ endpoint: "https://api.mysite.com/consultation", format: "json" }}
107
- *
108
- * @example
109
- * // With custom headers (e.g., authentication)
110
- * formConfig={{
111
- * endpoint: "/api/consultation",
112
- * headers: { "Authorization": "Bearer token123" }
113
- * }}
114
- *
115
- * **Note**: The `apiKey`, `contactCategoryToken`, and other platform-specific fields
116
- * are OPTIONAL and only needed when integrating with DashTrack's Rails backend.
117
- * For generic REST APIs, just use `endpoint`, `method`, `format`, and `headers`.
118
- *
119
- * See `FORMS_INTEGRATION_GUIDE.md` for complete examples with Next.js, React, and more.
110
+ * Optional form submission configuration. See FORMS_INTEGRATION_GUIDE.md for complete examples.
120
111
  */
121
112
  formConfig?: PageSpeedFormConfig;
122
113
  /**
123
- * Optional custom submission handler for maximum flexibility.
124
- *
125
- * Use this when you need complete control over the submission logic,
126
- * such as custom API calls, analytics tracking, or multi-step workflows.
127
- *
128
- * Can be used alone or in combination with `formConfig` for hybrid approaches.
129
- *
130
- * @example
131
- * onSubmit={async (values) => {
132
- * await fetch("/api/consultation", {
133
- * method: "POST",
134
- * body: JSON.stringify(values)
135
- * });
136
- * }}
137
- */
138
- onSubmit?: (values: ConsultationFormValues) => void | Promise<void>;
114
+ * Optional custom submission handler.
115
+ */
116
+ onSubmit?: (values: Record<string, unknown>) => void | Promise<void>;
139
117
  /**
140
118
  * Optional success callback invoked after successful submission.
141
- *
142
- * Called after `formConfig` submission and/or `onSubmit` completes successfully.
143
- * Use for showing success messages, redirecting, analytics tracking, etc.
144
119
  */
145
120
  onSuccess?: (data: unknown) => void;
146
121
  /**
147
122
  * Optional error callback invoked if submission fails.
148
- *
149
- * Receives the error object for custom error handling, logging, or user notifications.
150
123
  */
151
124
  onError?: (error: Error) => void;
152
125
  }
@@ -165,6 +138,6 @@ interface ContactConsultationProps {
165
138
  * />
166
139
  * ```
167
140
  */
168
- declare function ContactConsultation({ heading, description, buttonText, buttonIcon, actions, actionsSlot, className, headerClassName, headingClassName, descriptionClassName, cardClassName, cardContentClassName, formClassName, submitClassName, spacing, containerClassName, background, pattern, patternOpacity, formConfig, onSubmit, onSuccess, onError, }: ContactConsultationProps): React.JSX.Element;
141
+ declare function ContactConsultation({ heading, description, buttonText, buttonIcon, actions, actionsSlot, formFields, successMessage, className, headerClassName, headingClassName, descriptionClassName, cardClassName, cardContentClassName, formClassName, successMessageClassName, errorMessageClassName, submitClassName, spacing, containerClassName, background, pattern, patternOpacity, formConfig, onSubmit, onSuccess, onError, }: ContactConsultationProps): React.JSX.Element;
169
142
 
170
143
  export { ContactConsultation, type ContactConsultationProps };
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
- import { P as PageSpeedFormConfig } from './forms-nGgHUTBw.js';
2
+ import { F as FormFieldConfig } from './form-field-types-flMXhIjG.js';
3
+ import { P as PageSpeedFormConfig } from './forms-CStlFhnh.js';
3
4
  import { f as SectionBackground, g as SectionSpacing, s as PatternName } from './community-initiatives-AwBlQu1a.js';
4
5
  import { A as ActionConfig } from './blocks-ClXAGlHQ.js';
5
6
  import '@page-speed/forms/integration';
@@ -8,17 +9,6 @@ import 'class-variance-authority';
8
9
  import './button-variants-lRElsmTc.js';
9
10
  import 'class-variance-authority/types';
10
11
 
11
- interface ConsultationFormValues {
12
- service: string;
13
- duration: string;
14
- budget: string;
15
- firstName: string;
16
- lastName: string;
17
- email: string;
18
- phone: string;
19
- company: string;
20
- details: string;
21
- }
22
12
  interface ContactConsultationProps {
23
13
  /**
24
14
  * Main heading content
@@ -44,12 +34,23 @@ interface ContactConsultationProps {
44
34
  * Custom slot for rendering actions (overrides actions array and default submit)
45
35
  */
46
36
  actionsSlot?: React.ReactNode;
37
+ /**
38
+ * Array of form field configurations
39
+ * If not provided, defaults to: service, duration, budget, firstName, lastName, email, phone, company, details
40
+ */
41
+ formFields?: FormFieldConfig[];
42
+ /**
43
+ * Success message to display after form submission
44
+ * @default "Thank you for your consultation request! We'll be in touch within 24 hours to schedule your session."
45
+ */
46
+ successMessage?: React.ReactNode;
47
47
  /**
48
48
  * Additional CSS classes for the section
49
49
  */
50
50
  className?: string;
51
51
  /**
52
52
  * Additional CSS classes for the container
53
+ * @default "px-6 sm:px-6 md:px-8 lg:px-8"
53
54
  */
54
55
  containerClassName?: string;
55
56
  /**
@@ -76,15 +77,25 @@ interface ContactConsultationProps {
76
77
  * Additional CSS classes for the form
77
78
  */
78
79
  formClassName?: string;
80
+ /**
81
+ * Additional CSS classes for success message
82
+ */
83
+ successMessageClassName?: string;
84
+ /**
85
+ * Additional CSS classes for error message
86
+ */
87
+ errorMessageClassName?: string;
79
88
  /**
80
89
  * Additional CSS classes for the submit button
81
90
  */
82
- submitClassName?: string; /**
91
+ submitClassName?: string;
92
+ /**
83
93
  * Background style for the section
84
94
  */
85
95
  background?: SectionBackground;
86
96
  /**
87
97
  * Vertical spacing for the section
98
+ * @default "py-8 md:py-32"
88
99
  */
89
100
  spacing?: SectionSpacing;
90
101
  /**
@@ -96,57 +107,19 @@ interface ContactConsultationProps {
96
107
  */
97
108
  patternOpacity?: number;
98
109
  /**
99
- * Optional form submission configuration.
100
- *
101
- * **Universal Usage**: Works with ANY REST API endpoint. Simply provide an `endpoint` URL
102
- * and the form will submit to it in JSON format.
103
- *
104
- * @example
105
- * // Works with any API
106
- * formConfig={{ endpoint: "https://api.mysite.com/consultation", format: "json" }}
107
- *
108
- * @example
109
- * // With custom headers (e.g., authentication)
110
- * formConfig={{
111
- * endpoint: "/api/consultation",
112
- * headers: { "Authorization": "Bearer token123" }
113
- * }}
114
- *
115
- * **Note**: The `apiKey`, `contactCategoryToken`, and other platform-specific fields
116
- * are OPTIONAL and only needed when integrating with DashTrack's Rails backend.
117
- * For generic REST APIs, just use `endpoint`, `method`, `format`, and `headers`.
118
- *
119
- * See `FORMS_INTEGRATION_GUIDE.md` for complete examples with Next.js, React, and more.
110
+ * Optional form submission configuration. See FORMS_INTEGRATION_GUIDE.md for complete examples.
120
111
  */
121
112
  formConfig?: PageSpeedFormConfig;
122
113
  /**
123
- * Optional custom submission handler for maximum flexibility.
124
- *
125
- * Use this when you need complete control over the submission logic,
126
- * such as custom API calls, analytics tracking, or multi-step workflows.
127
- *
128
- * Can be used alone or in combination with `formConfig` for hybrid approaches.
129
- *
130
- * @example
131
- * onSubmit={async (values) => {
132
- * await fetch("/api/consultation", {
133
- * method: "POST",
134
- * body: JSON.stringify(values)
135
- * });
136
- * }}
137
- */
138
- onSubmit?: (values: ConsultationFormValues) => void | Promise<void>;
114
+ * Optional custom submission handler.
115
+ */
116
+ onSubmit?: (values: Record<string, unknown>) => void | Promise<void>;
139
117
  /**
140
118
  * Optional success callback invoked after successful submission.
141
- *
142
- * Called after `formConfig` submission and/or `onSubmit` completes successfully.
143
- * Use for showing success messages, redirecting, analytics tracking, etc.
144
119
  */
145
120
  onSuccess?: (data: unknown) => void;
146
121
  /**
147
122
  * Optional error callback invoked if submission fails.
148
- *
149
- * Receives the error object for custom error handling, logging, or user notifications.
150
123
  */
151
124
  onError?: (error: Error) => void;
152
125
  }
@@ -165,6 +138,6 @@ interface ContactConsultationProps {
165
138
  * />
166
139
  * ```
167
140
  */
168
- declare function ContactConsultation({ heading, description, buttonText, buttonIcon, actions, actionsSlot, className, headerClassName, headingClassName, descriptionClassName, cardClassName, cardContentClassName, formClassName, submitClassName, spacing, containerClassName, background, pattern, patternOpacity, formConfig, onSubmit, onSuccess, onError, }: ContactConsultationProps): React.JSX.Element;
141
+ declare function ContactConsultation({ heading, description, buttonText, buttonIcon, actions, actionsSlot, formFields, successMessage, className, headerClassName, headingClassName, descriptionClassName, cardClassName, cardContentClassName, formClassName, successMessageClassName, errorMessageClassName, submitClassName, spacing, containerClassName, background, pattern, patternOpacity, formConfig, onSubmit, onSuccess, onError, }: ContactConsultationProps): React.JSX.Element;
169
142
 
170
143
  export { ContactConsultation, type ContactConsultationProps };