keystone-design-bootstrap 1.0.86 → 1.0.87

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 (51) hide show
  1. package/dist/company-information-C1pP-SvU.d.ts +50 -0
  2. package/dist/config-C_XBZixg.d.ts +21 -0
  3. package/dist/consumer-BWjQawiO.d.ts +48 -0
  4. package/dist/design_system/portal/index.d.ts +52 -0
  5. package/dist/design_system/portal/index.js +3113 -0
  6. package/dist/design_system/portal/index.js.map +1 -0
  7. package/dist/design_system/sections/index.d.ts +2 -1
  8. package/dist/index.d.ts +5 -24
  9. package/dist/lib/consumer-session.d.ts +16 -0
  10. package/dist/lib/consumer-session.js +85 -0
  11. package/dist/lib/consumer-session.js.map +1 -0
  12. package/dist/lib/cta-urls.d.ts +34 -0
  13. package/dist/lib/cta-urls.js +33 -0
  14. package/dist/lib/cta-urls.js.map +1 -0
  15. package/dist/lib/server-api.d.ts +2 -1
  16. package/dist/lib/server-api.js +1 -1
  17. package/dist/lib/server-api.js.map +1 -1
  18. package/dist/next/contexts/form-definitions.d.ts +17 -0
  19. package/dist/next/contexts/form-definitions.js +21 -0
  20. package/dist/next/contexts/form-definitions.js.map +1 -0
  21. package/dist/next/gallery/design-gallery.d.ts +103 -0
  22. package/dist/next/gallery/design-gallery.js +19301 -0
  23. package/dist/next/gallery/design-gallery.js.map +1 -0
  24. package/dist/next/layouts/root-layout.d.ts +55 -0
  25. package/dist/next/layouts/root-layout.js +19713 -0
  26. package/dist/next/layouts/root-layout.js.map +1 -0
  27. package/dist/next/legal/privacy-policy.d.ts +7 -0
  28. package/dist/next/legal/privacy-policy.js +18949 -0
  29. package/dist/next/legal/privacy-policy.js.map +1 -0
  30. package/dist/next/legal/terms-of-service.d.ts +7 -0
  31. package/dist/next/legal/terms-of-service.js +18949 -0
  32. package/dist/next/legal/terms-of-service.js.map +1 -0
  33. package/dist/next/providers/ssr-provider.d.ts +12 -0
  34. package/dist/next/providers/ssr-provider.js +12 -0
  35. package/dist/next/providers/ssr-provider.js.map +1 -0
  36. package/dist/next/routes/chat.d.ts +26 -0
  37. package/dist/next/routes/chat.js +160 -0
  38. package/dist/next/routes/chat.js.map +1 -0
  39. package/dist/next/routes/consumer-auth.d.ts +33 -0
  40. package/dist/next/routes/consumer-auth.js +254 -0
  41. package/dist/next/routes/consumer-auth.js.map +1 -0
  42. package/dist/next/routes/form.d.ts +37 -0
  43. package/dist/next/routes/form.js +97 -0
  44. package/dist/next/routes/form.js.map +1 -0
  45. package/dist/package-IU_GpDA0.d.ts +74 -0
  46. package/dist/types/index.d.ts +6 -68
  47. package/package.json +28 -28
  48. package/src/design_system/portal/PortalPage.tsx +3 -2
  49. package/src/lib/server-api.ts +2 -1
  50. package/src/types/rails-actioncable.d.ts +16 -0
  51. package/dist/package-DeHKpQp7.d.ts +0 -121
@@ -0,0 +1,50 @@
1
+ import { a as Photo, P as PhotoAttachment } from './photos-CmBdWiuZ.js';
2
+
3
+ interface CompanyInformation {
4
+ id: number;
5
+ company_name: string;
6
+ tagline: string;
7
+ mission_statement_markdown?: string;
8
+ about_text_markdown?: string;
9
+ description_markdown?: string;
10
+ values_markdown?: string;
11
+ stats_markdown?: string;
12
+ founded_year?: number;
13
+ logo_photo?: Photo;
14
+ favicon_url?: string;
15
+ facebook_url?: string;
16
+ instagram_url?: string;
17
+ tiktok_url?: string;
18
+ linkedin_url?: string;
19
+ twitter_url?: string;
20
+ youtube_url?: string;
21
+ pinterest_url?: string;
22
+ google_my_business_url?: string;
23
+ yelp_url?: string;
24
+ tripadvisor_url?: string;
25
+ google_reviews_url?: string;
26
+ primary_phone?: string;
27
+ primary_email?: string;
28
+ primary_address_line_1?: string;
29
+ primary_address_line_2?: string;
30
+ primary_city?: string;
31
+ primary_state?: string;
32
+ primary_zip_code?: string;
33
+ primary_country?: string;
34
+ support_email?: string;
35
+ sales_email?: string;
36
+ business_hours?: string;
37
+ external_management_url?: string;
38
+ /** Member portal URL for this account. When set, used as the primary CTA instead of external_management_url. */
39
+ portal_url?: string | null;
40
+ terms_of_service_markdown?: string;
41
+ privacy_policy_markdown?: string;
42
+ created_at: string;
43
+ updated_at: string;
44
+ photo_attachments?: PhotoAttachment[];
45
+ account_status?: string;
46
+ chat_enabled?: boolean;
47
+ }
48
+ type CompanyInformationResponse = CompanyInformation | null;
49
+
50
+ export type { CompanyInformation as C, CompanyInformationResponse as a };
@@ -0,0 +1,21 @@
1
+ import { Theme } from './themes/index.js';
2
+
3
+ interface NavItem {
4
+ label: string;
5
+ href: string;
6
+ subtitle?: string;
7
+ children?: NavItem[];
8
+ }
9
+ interface SiteConfig {
10
+ site: {
11
+ title: string;
12
+ description: string;
13
+ theme: Theme;
14
+ };
15
+ navigation: {
16
+ header: NavItem[];
17
+ footer: NavItem[][];
18
+ };
19
+ }
20
+
21
+ export type { NavItem as N, SiteConfig as S };
@@ -0,0 +1,48 @@
1
+ /** Consumer and messaging types (aligned with Rails ConsumerSerializer and conversation endpoints). */
2
+ interface Consumer {
3
+ id: number;
4
+ email: string | null;
5
+ phone: string | null;
6
+ primary_identifier: string | null;
7
+ contacts?: ConsumerContact[];
8
+ }
9
+ interface ConsumerContact {
10
+ id: number;
11
+ display_name: string;
12
+ account?: {
13
+ id: number;
14
+ name: string;
15
+ slug?: string;
16
+ };
17
+ }
18
+ interface ConversationSummary {
19
+ contact_id: number;
20
+ business?: {
21
+ id: number;
22
+ name: string;
23
+ company_name?: string;
24
+ };
25
+ last_message_at: string | null;
26
+ last_message_preview?: string | null;
27
+ message_count: number;
28
+ }
29
+ interface Message {
30
+ id: number;
31
+ body: string | null;
32
+ /** "outbound" = sent by the business; "inbound" = sent by the contact/member. */
33
+ direction: 'inbound' | 'outbound';
34
+ sender_type: 'contact' | 'agent' | 'human';
35
+ sender_display_name?: string;
36
+ created_at: string;
37
+ }
38
+ interface ContactSummary {
39
+ id: number;
40
+ display_name: string;
41
+ business?: {
42
+ id: number;
43
+ name: string;
44
+ company_name?: string;
45
+ };
46
+ }
47
+
48
+ export type { ConversationSummary as C, Message as M, Consumer as a, ContactSummary as b, ConsumerContact as c };
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import React__default from 'react';
3
+
4
+ declare const ALL_TABS: readonly ["services", "packages", "specials", "messages", "book"];
5
+ type Tab = (typeof ALL_TABS)[number];
6
+ interface PortalPageProps {
7
+ searchParams?: Promise<Record<string, string>> | Record<string, string>;
8
+ portalHref?: string;
9
+ bookingHref?: string | null;
10
+ bookingLabel?: string;
11
+ /**
12
+ * Controls which tabs are rendered in the portal header.
13
+ * Default: ['book', 'services', 'packages', 'specials', 'messages']
14
+ */
15
+ enabledTabs?: Tab[];
16
+ /**
17
+ * Optional per-tab label overrides, e.g. { messages: 'Chat with Us' }.
18
+ */
19
+ tabLabels?: Partial<Record<Tab, string>>;
20
+ /**
21
+ * When true, always opens booking in a new tab even if the URL supports iframes.
22
+ * Useful when the booking page's iframe experience is broken or undesirable.
23
+ */
24
+ forceExternalBooking?: boolean;
25
+ /**
26
+ * Path to the site's contact page, shown when no booking URL is configured.
27
+ * Defaults to "/contact".
28
+ */
29
+ contactHref?: string;
30
+ }
31
+ declare function PortalPage({ searchParams, portalHref, bookingHref, bookingLabel, enabledTabs, tabLabels, forceExternalBooking, contactHref, }: PortalPageProps): Promise<React__default.JSX.Element>;
32
+
33
+ interface LoginFormProps {
34
+ onSuccess?: () => void;
35
+ onClose?: () => void;
36
+ }
37
+ declare function LoginForm({ onSuccess, onClose }: LoginFormProps): React__default.JSX.Element;
38
+
39
+ declare function LogoutButton(): React.JSX.Element;
40
+
41
+ /**
42
+ * Renders a single login modal for the entire portal.
43
+ * Any server-rendered element with `data-open-login-modal` will open it on click.
44
+ *
45
+ * After successful auth, the modal switches to a loading state and stays open
46
+ * until the router transition (router.refresh / router.push) has fully completed
47
+ * and the server component has re-rendered with the new session. This prevents
48
+ * the brief flash of logged-out content that would otherwise appear.
49
+ */
50
+ declare function LoginModalController(): React__default.JSX.Element;
51
+
52
+ export { LoginForm, LoginModalController, LogoutButton, PortalPage, type PortalPageProps };