@getgreenline/blaze-ui 1.0.2 → 1.0.3-3.0-beta

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 (240) hide show
  1. package/dist/components/accordion.d.ts +8 -0
  2. package/dist/components/accordion.d.ts.map +1 -0
  3. package/dist/components/accordion.js +19 -0
  4. package/dist/components/alert-dialog.d.ts +18 -0
  5. package/dist/components/alert-dialog.d.ts.map +1 -0
  6. package/dist/components/alert-dialog.js +41 -0
  7. package/dist/components/alert.d.ts +10 -0
  8. package/dist/components/alert.d.ts.map +1 -0
  9. package/dist/components/alert.js +26 -0
  10. package/dist/components/aspect-ratio.d.ts +4 -0
  11. package/dist/components/aspect-ratio.d.ts.map +1 -0
  12. package/dist/components/aspect-ratio.js +8 -0
  13. package/dist/components/avatar.d.ts +7 -0
  14. package/dist/components/avatar.d.ts.map +1 -0
  15. package/dist/components/avatar.js +15 -0
  16. package/dist/components/badge.d.ts +10 -0
  17. package/dist/components/badge.d.ts.map +1 -0
  18. package/dist/components/badge.js +24 -0
  19. package/dist/components/breadcrumb.d.ts +12 -0
  20. package/dist/components/breadcrumb.d.ts.map +1 -0
  21. package/dist/components/breadcrumb.js +29 -0
  22. package/dist/components/button-group.d.ts +12 -0
  23. package/dist/components/button-group.d.ts.map +1 -0
  24. package/dist/components/button-group.js +29 -0
  25. package/dist/components/button.d.ts +16 -0
  26. package/dist/components/button.d.ts.map +1 -0
  27. package/dist/components/button.js +37 -0
  28. package/dist/components/card.d.ts +10 -0
  29. package/dist/components/card.d.ts.map +1 -0
  30. package/dist/components/card.js +26 -0
  31. package/dist/components/carousel.d.ts +20 -0
  32. package/dist/components/carousel.d.ts.map +1 -0
  33. package/dist/components/carousel.js +92 -0
  34. package/dist/components/chart.d.ts +41 -0
  35. package/dist/components/chart.d.ts.map +1 -0
  36. package/dist/components/chart.js +133 -0
  37. package/dist/components/checkbox.d.ts +5 -0
  38. package/dist/components/checkbox.d.ts.map +1 -0
  39. package/dist/components/checkbox.js +10 -0
  40. package/dist/components/collapsible.d.ts +6 -0
  41. package/dist/components/collapsible.d.ts.map +1 -0
  42. package/dist/components/collapsible.js +14 -0
  43. package/dist/components/command.d.ts +19 -0
  44. package/dist/components/command.d.ts.map +1 -0
  45. package/dist/components/command.js +35 -0
  46. package/dist/components/context-menu.d.ts +26 -0
  47. package/dist/components/context-menu.d.ts.map +1 -0
  48. package/dist/components/context-menu.js +52 -0
  49. package/dist/components/data-table.d.ts +83 -0
  50. package/dist/components/data-table.d.ts.map +1 -0
  51. package/dist/components/data-table.js +357 -0
  52. package/dist/components/dialog.d.ts +16 -0
  53. package/dist/components/dialog.d.ts.map +1 -0
  54. package/dist/components/dialog.js +37 -0
  55. package/dist/components/drawer.d.ts +14 -0
  56. package/dist/components/drawer.d.ts.map +1 -0
  57. package/dist/components/drawer.js +36 -0
  58. package/dist/components/dropdown-menu.d.ts +26 -0
  59. package/dist/components/dropdown-menu.d.ts.map +1 -0
  60. package/dist/components/dropdown-menu.js +52 -0
  61. package/dist/components/empty.d.ts +12 -0
  62. package/dist/components/empty.d.ts.map +1 -0
  63. package/dist/components/empty.js +35 -0
  64. package/dist/components/field.d.ts +25 -0
  65. package/dist/components/field.d.ts.map +1 -0
  66. package/dist/components/field.js +74 -0
  67. package/dist/components/form.d.ts +25 -0
  68. package/dist/components/form.d.ts.map +1 -0
  69. package/dist/components/form.js +60 -0
  70. package/dist/components/header-app-switcher.d.ts +50 -0
  71. package/dist/components/header-app-switcher.d.ts.map +1 -0
  72. package/dist/components/header-app-switcher.js +154 -0
  73. package/dist/components/hierarchical-select.d.ts +21 -0
  74. package/dist/components/hierarchical-select.d.ts.map +1 -0
  75. package/dist/components/hierarchical-select.js +96 -0
  76. package/dist/components/hover-card.d.ts +7 -0
  77. package/dist/components/hover-card.d.ts.map +1 -0
  78. package/dist/components/hover-card.js +15 -0
  79. package/dist/components/input-group.d.ts +17 -0
  80. package/dist/components/input-group.d.ts.map +1 -0
  81. package/dist/components/input-group.js +64 -0
  82. package/dist/components/input-otp.d.ts +12 -0
  83. package/dist/components/input-otp.d.ts.map +1 -0
  84. package/dist/components/input-otp.js +22 -0
  85. package/dist/components/input.d.ts +4 -0
  86. package/dist/components/input.d.ts.map +1 -0
  87. package/dist/components/input.js +8 -0
  88. package/dist/components/item.d.ts +24 -0
  89. package/dist/components/item.d.ts.map +1 -0
  90. package/dist/components/item.js +68 -0
  91. package/dist/components/kbd.d.ts +4 -0
  92. package/dist/components/kbd.d.ts.map +1 -0
  93. package/dist/components/kbd.js +11 -0
  94. package/dist/components/label.d.ts +8 -0
  95. package/dist/components/label.d.ts.map +1 -0
  96. package/dist/components/label.js +9 -0
  97. package/dist/components/login-screen.d.ts +4 -0
  98. package/dist/components/login-screen.d.ts.map +1 -0
  99. package/dist/components/login-screen.js +300 -0
  100. package/dist/components/login-screen.types.d.ts +82 -0
  101. package/dist/components/login-screen.types.d.ts.map +1 -0
  102. package/dist/components/login-screen.views.d.ts +114 -0
  103. package/dist/components/login-screen.views.d.ts.map +1 -0
  104. package/dist/components/login-screen.views.js +53 -0
  105. package/dist/components/menubar.d.ts +27 -0
  106. package/dist/components/menubar.d.ts.map +1 -0
  107. package/dist/components/menubar.js +55 -0
  108. package/dist/components/navigation-menu.d.ts +15 -0
  109. package/dist/components/navigation-menu.d.ts.map +1 -0
  110. package/dist/components/navigation-menu.js +33 -0
  111. package/dist/components/pagination.d.ts +14 -0
  112. package/dist/components/pagination.d.ts.map +1 -0
  113. package/dist/components/pagination.js +31 -0
  114. package/dist/components/popover.d.ts +8 -0
  115. package/dist/components/popover.d.ts.map +1 -0
  116. package/dist/components/popover.js +18 -0
  117. package/dist/components/progress.d.ts +5 -0
  118. package/dist/components/progress.d.ts.map +1 -0
  119. package/dist/components/progress.js +9 -0
  120. package/dist/components/radio-group.d.ts +6 -0
  121. package/dist/components/radio-group.d.ts.map +1 -0
  122. package/dist/components/radio-group.js +13 -0
  123. package/dist/components/resizable.d.ts +9 -0
  124. package/dist/components/resizable.d.ts.map +1 -0
  125. package/dist/components/resizable.js +16 -0
  126. package/dist/components/scroll-area.d.ts +6 -0
  127. package/dist/components/scroll-area.d.ts.map +1 -0
  128. package/dist/components/scroll-area.js +14 -0
  129. package/dist/components/search-bar.d.ts +15 -0
  130. package/dist/components/search-bar.d.ts.map +1 -0
  131. package/dist/components/search-bar.js +25 -0
  132. package/dist/components/segmented-control.d.ts +24 -0
  133. package/dist/components/segmented-control.d.ts.map +1 -0
  134. package/dist/components/segmented-control.js +88 -0
  135. package/dist/components/select.d.ts +16 -0
  136. package/dist/components/select.d.ts.map +1 -0
  137. package/dist/components/select.js +39 -0
  138. package/dist/components/selection-panel.d.ts +29 -0
  139. package/dist/components/selection-panel.d.ts.map +1 -0
  140. package/dist/components/selection-panel.js +255 -0
  141. package/dist/components/separator.d.ts +5 -0
  142. package/dist/components/separator.d.ts.map +1 -0
  143. package/dist/components/separator.js +9 -0
  144. package/dist/components/sheet.d.ts +17 -0
  145. package/dist/components/sheet.d.ts.map +1 -0
  146. package/dist/components/sheet.js +42 -0
  147. package/dist/components/sidebar.d.ts +70 -0
  148. package/dist/components/sidebar.d.ts.map +1 -0
  149. package/dist/components/sidebar.js +213 -0
  150. package/dist/components/skeleton.d.ts +3 -0
  151. package/dist/components/skeleton.d.ts.map +1 -0
  152. package/dist/components/skeleton.js +8 -0
  153. package/dist/components/slider.d.ts +5 -0
  154. package/dist/components/slider.d.ts.map +1 -0
  155. package/dist/components/slider.js +15 -0
  156. package/dist/components/sonner.d.ts +4 -0
  157. package/dist/components/sonner.d.ts.map +1 -0
  158. package/dist/components/sonner.js +22 -0
  159. package/dist/components/spinner.d.ts +3 -0
  160. package/dist/components/spinner.d.ts.map +1 -0
  161. package/dist/components/spinner.js +9 -0
  162. package/dist/components/switch.d.ts +5 -0
  163. package/dist/components/switch.d.ts.map +1 -0
  164. package/dist/components/switch.js +9 -0
  165. package/dist/components/table.d.ts +11 -0
  166. package/dist/components/table.d.ts.map +1 -0
  167. package/dist/components/table.js +29 -0
  168. package/dist/components/tabs.d.ts +8 -0
  169. package/dist/components/tabs.d.ts.map +1 -0
  170. package/dist/components/tabs.js +18 -0
  171. package/dist/components/textarea.d.ts +4 -0
  172. package/dist/components/textarea.d.ts.map +1 -0
  173. package/dist/components/textarea.js +8 -0
  174. package/dist/components/toggle-group.d.ts +8 -0
  175. package/dist/components/toggle-group.d.ts.map +1 -0
  176. package/dist/components/toggle-group.js +22 -0
  177. package/dist/components/toggle.d.ts +10 -0
  178. package/dist/components/toggle.d.ts.map +1 -0
  179. package/dist/components/toggle.js +27 -0
  180. package/dist/components/tooltip.d.ts +8 -0
  181. package/dist/components/tooltip.d.ts.map +1 -0
  182. package/dist/components/tooltip.js +18 -0
  183. package/dist/components/visually-hidden.d.ts +16 -0
  184. package/dist/components/visually-hidden.d.ts.map +1 -0
  185. package/dist/components/visually-hidden.js +22 -0
  186. package/dist/globals.css +646 -0
  187. package/dist/hooks/use-mobile.d.ts +2 -0
  188. package/dist/hooks/use-mobile.d.ts.map +1 -0
  189. package/dist/hooks/use-mobile.js +18 -0
  190. package/dist/index.d.ts +64 -0
  191. package/dist/index.d.ts.map +1 -0
  192. package/dist/index.js +64 -0
  193. package/dist/lib/portal-wrapper.d.ts +32 -0
  194. package/dist/lib/portal-wrapper.d.ts.map +1 -0
  195. package/dist/lib/portal-wrapper.js +34 -0
  196. package/dist/lib/utils.js +8 -0
  197. package/dist/svgs/blaze-dispatch-logo.d.ts +5 -0
  198. package/dist/svgs/blaze-dispatch-logo.d.ts.map +1 -0
  199. package/dist/svgs/blaze-dispatch-logo.js +7 -0
  200. package/dist/svgs/blaze-ecom-logo.d.ts +7 -0
  201. package/dist/svgs/blaze-ecom-logo.d.ts.map +1 -0
  202. package/dist/svgs/blaze-ecom-logo.js +7 -0
  203. package/dist/svgs/blaze-insights-logo.d.ts +5 -0
  204. package/dist/svgs/blaze-insights-logo.d.ts.map +1 -0
  205. package/dist/svgs/blaze-insights-logo.js +7 -0
  206. package/dist/svgs/blaze-lighthouse-logo.d.ts +6 -0
  207. package/dist/svgs/blaze-lighthouse-logo.d.ts.map +1 -0
  208. package/dist/svgs/blaze-lighthouse-logo.js +7 -0
  209. package/dist/svgs/blaze-pay-logo.d.ts +5 -0
  210. package/dist/svgs/blaze-pay-logo.d.ts.map +1 -0
  211. package/dist/svgs/blaze-pay-logo.js +7 -0
  212. package/dist/svgs/blaze-pos-logo.d.ts +5 -0
  213. package/dist/svgs/blaze-pos-logo.d.ts.map +1 -0
  214. package/dist/svgs/blaze-pos-logo.js +7 -0
  215. package/dist/svgs/blaze-retail-logo.d.ts +7 -0
  216. package/dist/svgs/blaze-retail-logo.d.ts.map +1 -0
  217. package/dist/svgs/blaze-retail-logo.js +7 -0
  218. package/dist/svgs/blaze-sites-logo.d.ts +5 -0
  219. package/dist/svgs/blaze-sites-logo.d.ts.map +1 -0
  220. package/dist/svgs/blaze-sites-logo.js +7 -0
  221. package/package.json +86 -21
  222. package/build/components/button.d.ts +0 -12
  223. package/build/components/button.d.ts.map +0 -1
  224. package/build/components/button.js +0 -106
  225. package/build/components/button.js.map +0 -1
  226. package/build/index.d.ts +0 -4
  227. package/build/index.d.ts.map +0 -1
  228. package/build/index.js +0 -11
  229. package/build/index.js.map +0 -1
  230. package/build/lib/utils.js +0 -9
  231. package/build/lib/utils.js.map +0 -1
  232. package/build/styles/blaze-ui.css +0 -157
  233. package/build/styles/styles.d.ts +0 -3
  234. package/build/styles/styles.d.ts.map +0 -1
  235. package/build/styles/styles.js +0 -8
  236. package/build/styles/styles.js.map +0 -1
  237. package/src/styles/blaze-ui.css +0 -157
  238. package/src/styles/styles.ts +0 -5
  239. /package/{build → dist}/lib/utils.d.ts +0 -0
  240. /package/{build → dist}/lib/utils.d.ts.map +0 -0
@@ -0,0 +1,82 @@
1
+ import type * as React from "react";
2
+ export type LoginScreenIdentifierMode = "email" | "phone" | "email-or-phone";
3
+ export type LoginScreenTab = {
4
+ id: string;
5
+ label: string;
6
+ href?: string;
7
+ external?: boolean;
8
+ onSelect?: (tabId: string) => void;
9
+ disabled?: boolean;
10
+ };
11
+ export type LoginScreenFooterLink = {
12
+ label: string;
13
+ href: string;
14
+ external?: boolean;
15
+ };
16
+ export type LoginScreenSubmitPayload = {
17
+ identifier: string;
18
+ password: string;
19
+ rememberMe: boolean;
20
+ tabId: string | null;
21
+ };
22
+ export type LoginScreenTestimonial = {
23
+ quote: string;
24
+ authorName: string;
25
+ authorTitle?: string;
26
+ };
27
+ export interface LoginScreenProps {
28
+ className?: string;
29
+ splitLayout?: boolean;
30
+ splitImageWidthPercent?: number;
31
+ imageSrc?: string;
32
+ imageAlt?: string;
33
+ imageOverlayContent?: React.ReactNode;
34
+ testimonial?: LoginScreenTestimonial | null;
35
+ imageOverlayOpacity?: number;
36
+ logo?: React.ReactNode;
37
+ title?: string;
38
+ description?: string;
39
+ tabs?: LoginScreenTab[];
40
+ defaultTabId?: string;
41
+ tabId?: string;
42
+ onTabChange?: (tabId: string) => void;
43
+ identifierMode?: LoginScreenIdentifierMode;
44
+ identifierLabel?: string;
45
+ identifierPlaceholder?: string;
46
+ passwordLabel?: string;
47
+ passwordPlaceholder?: string;
48
+ rememberMeLabel?: string;
49
+ forgotPasswordLabel?: string;
50
+ forgotPasswordTitle?: string;
51
+ forgotPasswordDescription?: string;
52
+ forgotPasswordEmailLabel?: string;
53
+ forgotPasswordEmailPlaceholder?: string;
54
+ forgotPasswordSubmitLabel?: string;
55
+ forgotPasswordBackLabel?: string;
56
+ forgotPasswordSentTitle?: string;
57
+ forgotPasswordSentDescriptionPrefix?: string;
58
+ forgotPasswordSentInstructions?: string;
59
+ forgotPasswordResendLabel?: string;
60
+ forgotPasswordResendDelaySeconds?: number;
61
+ submitLabel?: string;
62
+ submitLoadingLabel?: string;
63
+ ssoLabel?: string | null;
64
+ ssoButtonLabel?: string;
65
+ ssoEmailTitle?: string;
66
+ ssoEmailDescription?: string;
67
+ ssoEmailLabel?: string;
68
+ ssoEmailPlaceholder?: string;
69
+ ssoEmailSubmitLabel?: string;
70
+ ssoEmailHint?: string;
71
+ ssoEmailBackAriaLabel?: string;
72
+ legalNotice?: React.ReactNode;
73
+ footerLinks?: LoginScreenFooterLink[];
74
+ isSubmitting?: boolean;
75
+ isForgotPasswordSubmitting?: boolean;
76
+ isSsoSubmitting?: boolean;
77
+ onSubmit?: (payload: LoginScreenSubmitPayload) => void | Promise<void>;
78
+ onForgotPasswordSubmit?: (email: string) => void | Promise<void>;
79
+ onSsoClick?: () => void;
80
+ onSsoSubmit?: (email: string) => void | Promise<void>;
81
+ }
82
+ //# sourceMappingURL=login-screen.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-screen.types.d.ts","sourceRoot":"","sources":["../../src/components/login-screen.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import * as React from "react";
2
+ import type { LoginScreenFooterLink, LoginScreenTab, LoginScreenTestimonial } from "./login-screen.types";
3
+ interface BrandHeaderProps {
4
+ logo?: React.ReactNode;
5
+ logoLoadError: boolean;
6
+ onLogoError: () => void;
7
+ title: string;
8
+ description?: string;
9
+ }
10
+ interface SignInViewProps {
11
+ tabs: LoginScreenTab[];
12
+ activeTabId: string | null;
13
+ tabListRef: React.RefObject<HTMLDivElement | null>;
14
+ onTabClick: (tab: LoginScreenTab) => void;
15
+ onTabKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>, currentIndex: number) => void;
16
+ identifierId: string;
17
+ identifierLabel: string;
18
+ identifierType: React.HTMLInputTypeAttribute;
19
+ identifierPlaceholder: string;
20
+ identifier: string;
21
+ onIdentifierChange: (value: string) => void;
22
+ passwordId: string;
23
+ passwordLabel: string;
24
+ passwordPlaceholder: string;
25
+ password: string;
26
+ onPasswordChange: (value: string) => void;
27
+ showPassword: boolean;
28
+ onTogglePassword: () => void;
29
+ rememberId: string;
30
+ rememberMe: boolean;
31
+ onRememberMeChange: (checked: boolean) => void;
32
+ rememberMeLabel: string;
33
+ forgotPasswordLabel: string;
34
+ onForgotPasswordClick: () => void;
35
+ isSubmitting: boolean;
36
+ submitLabel: string;
37
+ submitLoadingLabel: string;
38
+ onSubmit: (event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;
39
+ ssoLabel: string | null;
40
+ ssoButtonLabel: string;
41
+ onSsoClick: () => void | Promise<void>;
42
+ legalNotice: React.ReactNode;
43
+ logo?: React.ReactNode;
44
+ logoLoadError: boolean;
45
+ onLogoError: () => void;
46
+ title: string;
47
+ description?: string;
48
+ autoCompleteIdentifier?: string;
49
+ }
50
+ interface ForgotPasswordViewProps {
51
+ title: string;
52
+ description: string;
53
+ emailId: string;
54
+ emailLabel: string;
55
+ email: string;
56
+ onEmailChange: (value: string) => void;
57
+ emailPlaceholder: string;
58
+ submitLabel: string;
59
+ backLabel: string;
60
+ isSubmitting: boolean;
61
+ onSubmit: (event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;
62
+ onBack: () => void;
63
+ error: string | null;
64
+ }
65
+ interface ForgotPasswordSentViewProps {
66
+ backAriaLabel: string;
67
+ onBack: () => void;
68
+ title: string;
69
+ descriptionPrefix: string;
70
+ email: string;
71
+ instructions: string;
72
+ resendLabel: string;
73
+ resendCountdown: number;
74
+ onResend: () => void | Promise<void>;
75
+ isResending: boolean;
76
+ error: string | null;
77
+ backLabel: string;
78
+ }
79
+ interface SsoEmailViewProps {
80
+ backAriaLabel: string;
81
+ onBack: () => void;
82
+ title: string;
83
+ description: string;
84
+ emailId: string;
85
+ emailLabel: string;
86
+ email: string;
87
+ onEmailChange: (value: string) => void;
88
+ emailPlaceholder: string;
89
+ submitLabel: string;
90
+ isSubmitting: boolean;
91
+ onSubmit: (event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;
92
+ hint: string;
93
+ }
94
+ interface SplitMediaPaneProps {
95
+ widthPercent: number;
96
+ hasSplitImage: boolean;
97
+ imageSrc?: string;
98
+ imageAlt: string;
99
+ onImageError: () => void;
100
+ overlayOpacity: number;
101
+ imageOverlayContent?: React.ReactNode;
102
+ testimonial: LoginScreenTestimonial | null;
103
+ }
104
+ export declare function BrandHeader({ logo, logoLoadError, onLogoError, title, description, }: BrandHeaderProps): import("react/jsx-runtime").JSX.Element;
105
+ export declare function SignInView({ tabs, activeTabId, tabListRef, onTabClick, onTabKeyDown, identifierId, identifierLabel, identifierType, identifierPlaceholder, identifier, onIdentifierChange, passwordId, passwordLabel, passwordPlaceholder, password, onPasswordChange, showPassword, onTogglePassword, rememberId, rememberMe, onRememberMeChange, rememberMeLabel, forgotPasswordLabel, onForgotPasswordClick, isSubmitting, submitLabel, submitLoadingLabel, onSubmit, ssoLabel, ssoButtonLabel, onSsoClick, legalNotice, logo, logoLoadError, onLogoError, title, description, autoCompleteIdentifier, }: SignInViewProps): import("react/jsx-runtime").JSX.Element;
106
+ export declare function ForgotPasswordView({ title, description, emailId, emailLabel, email, onEmailChange, emailPlaceholder, submitLabel, backLabel, isSubmitting, onSubmit, onBack, error, }: ForgotPasswordViewProps): import("react/jsx-runtime").JSX.Element;
107
+ export declare function ForgotPasswordSentView({ backAriaLabel, onBack, title, descriptionPrefix, email, instructions, resendLabel, resendCountdown, onResend, isResending, error, backLabel, }: ForgotPasswordSentViewProps): import("react/jsx-runtime").JSX.Element;
108
+ export declare function SsoEmailView({ backAriaLabel, onBack, title, description, emailId, emailLabel, email, onEmailChange, emailPlaceholder, submitLabel, isSubmitting, onSubmit, hint, }: SsoEmailViewProps): import("react/jsx-runtime").JSX.Element;
109
+ export declare function SplitMediaPane({ widthPercent, hasSplitImage, imageSrc, imageAlt, onImageError, overlayOpacity, imageOverlayContent, testimonial, }: SplitMediaPaneProps): import("react/jsx-runtime").JSX.Element;
110
+ export declare function FooterLinks({ links }: {
111
+ links: LoginScreenFooterLink[];
112
+ }): import("react/jsx-runtime").JSX.Element | null;
113
+ export {};
114
+ //# sourceMappingURL=login-screen.views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-screen.views.d.ts","sourceRoot":"","sources":["../../src/components/login-screen.views.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACvB,MAAM,sBAAsB,CAAA;AAE7B,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAClD,UAAU,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,YAAY,EAAE,CACZ,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAC7C,YAAY,EAAE,MAAM,KACjB,IAAI,CAAA;IACT,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,KAAK,CAAC,sBAAsB,CAAA;IAC5C,qBAAqB,EAAE,MAAM,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,qBAAqB,EAAE,MAAM,IAAI,CAAA;IACjC,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,UAAU,2BAA2B;IACnC,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,iBAAiB;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,WAAW,EAAE,sBAAsB,GAAG,IAAI,CAAA;CAC3C;AAgBD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,aAAa,EACb,WAAW,EACX,KAAK,EACL,WAAW,GACZ,EAAE,gBAAgB,2CA0BlB;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,EACX,IAAI,EACJ,aAAa,EACb,WAAW,EACX,KAAK,EACL,WAAW,EACX,sBAAsB,GACvB,EAAE,eAAe,2CAmKjB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,KAAK,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,KAAK,GACN,EAAE,uBAAuB,2CAgDzB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,aAAa,EACb,MAAM,EACN,KAAK,EACL,iBAAiB,EACjB,KAAK,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,QAAQ,EACR,WAAW,EACX,KAAK,EACL,SAAS,GACV,EAAE,2BAA2B,2CAmE7B;AAED,wBAAgB,YAAY,CAAC,EAC3B,aAAa,EACb,MAAM,EACN,KAAK,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,KAAK,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,IAAI,GACL,EAAE,iBAAiB,2CA2DnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,WAAW,GACZ,EAAE,mBAAmB,2CAkDrB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,qBAAqB,EAAE,CAAA;CAAE,kDAqBxE"}
@@ -0,0 +1,53 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { EyeOff, Eye, Building2, ArrowLeft, LockKeyhole } from 'lucide-react';
4
+ import { cn } from '../lib/utils.js';
5
+ import { Button } from './button.js';
6
+ import { Checkbox } from './checkbox.js';
7
+ import { Input } from './input.js';
8
+ import { Label } from './label.js';
9
+
10
+ function getLinkAttributes(external) {
11
+ if (!external) {
12
+ return {};
13
+ }
14
+ return {
15
+ target: "_blank",
16
+ rel: "noopener noreferrer",
17
+ };
18
+ }
19
+ function BrandHeader({ logo, logoLoadError, onLogoError, title, description, }) {
20
+ return (jsxs("div", { className: "tw:flex tw:flex-col tw:items-center tw:gap-4 tw:text-center", children: [logo ??
21
+ (logoLoadError ? (jsx("div", { className: "tw:flex tw:size-16 tw:items-center tw:justify-center tw:rounded-xl tw:bg-sky-100 tw:text-xl tw:font-semibold tw:text-primary", children: "B" })) : (jsx("img", { src: "/blaze-logo.png", alt: "Blaze", className: "tw:h-16 tw:w-16", onError: onLogoError }))), jsxs("div", { className: "tw:space-y-2", children: [jsx("h1", { className: "tw:text-3xl tw:font-semibold tw:tracking-tight", children: title }), description ? (jsx("p", { className: "tw:text-sm tw:text-muted-foreground", children: description })) : null] })] }));
22
+ }
23
+ function SignInView({ tabs, activeTabId, tabListRef, onTabClick, onTabKeyDown, identifierId, identifierLabel, identifierType, identifierPlaceholder, identifier, onIdentifierChange, passwordId, passwordLabel, passwordPlaceholder, password, onPasswordChange, showPassword, onTogglePassword, rememberId, rememberMe, onRememberMeChange, rememberMeLabel, forgotPasswordLabel, onForgotPasswordClick, isSubmitting, submitLabel, submitLoadingLabel, onSubmit, ssoLabel, ssoButtonLabel, onSsoClick, legalNotice, logo, logoLoadError, onLogoError, title, description, autoCompleteIdentifier, }) {
24
+ return (jsxs(Fragment, { children: [jsx(BrandHeader, { logo: logo, logoLoadError: logoLoadError, onLogoError: onLogoError, title: title, description: description }), tabs.length > 0 ? (jsx("div", { role: "tablist", ref: tabListRef, "aria-label": "Login destinations", className: "tw:inline-flex tw:w-full tw:items-center tw:rounded-lg tw:bg-muted tw:p-1", children: tabs.map((tab, index) => {
25
+ const isActive = tab.id === activeTabId;
26
+ return (jsx("button", { type: "button", role: "tab", "aria-selected": isActive, "aria-disabled": tab.disabled, tabIndex: isActive ? 0 : -1, disabled: tab.disabled, onClick: () => onTabClick(tab), onKeyDown: (event) => onTabKeyDown(event, index), className: cn("tw:flex-1 tw:rounded-md tw:px-3 tw:py-2 tw:text-sm tw:font-medium tw:transition-colors", "tw:outline-none tw:focus-visible:ring-2 tw:focus-visible:ring-ring tw:focus-visible:ring-offset-2", isActive
27
+ ? "tw:bg-background tw:text-foreground tw:shadow-sm"
28
+ : "tw:text-muted-foreground hover:tw:text-foreground", tab.disabled && "tw:cursor-not-allowed tw:opacity-50"), children: tab.label }, tab.id));
29
+ }) })) : null, jsxs("form", { onSubmit: onSubmit, className: "tw:flex tw:flex-col tw:gap-5", children: [jsxs("div", { className: "tw:flex tw:flex-col tw:gap-2", children: [jsx(Label, { htmlFor: identifierId, children: identifierLabel }), jsx(Input, { id: identifierId, type: identifierType, placeholder: identifierPlaceholder, value: identifier, onChange: (event) => onIdentifierChange(event.target.value), autoComplete: autoCompleteIdentifier, className: "tw:h-12", disabled: isSubmitting, required: true })] }), jsxs("div", { className: "tw:flex tw:flex-col tw:gap-2", children: [jsx(Label, { htmlFor: passwordId, children: passwordLabel }), jsxs("div", { className: "tw:relative", children: [jsx(Input, { id: passwordId, type: showPassword ? "text" : "password", placeholder: passwordPlaceholder, value: password, onChange: (event) => onPasswordChange(event.target.value), autoComplete: "current-password", className: "tw:h-12 tw:pr-10", disabled: isSubmitting, required: true }), jsx("button", { type: "button", className: "tw:absolute tw:right-3 tw:top-1/2 tw:-translate-y-1/2 tw:text-muted-foreground hover:tw:text-foreground", onClick: onTogglePassword, "aria-label": showPassword ? "Hide password" : "Show password", children: showPassword ? (jsx(EyeOff, { className: "tw:size-4" })) : (jsx(Eye, { className: "tw:size-4" })) })] })] }), jsxs("div", { className: "tw:flex tw:items-center tw:justify-between", children: [jsxs("div", { className: "tw:flex tw:items-center tw:gap-2", children: [jsx(Checkbox, { id: rememberId, checked: rememberMe, onCheckedChange: (checked) => onRememberMeChange(checked === true), disabled: isSubmitting }), jsx(Label, { htmlFor: rememberId, className: "tw:cursor-pointer tw:text-sm tw:font-normal", children: rememberMeLabel })] }), jsx("button", { type: "button", className: "tw:text-sm tw:text-primary hover:tw:underline", onClick: onForgotPasswordClick, disabled: isSubmitting, children: forgotPasswordLabel })] }), jsx(Button, { type: "submit", className: "tw:h-12 tw:w-full", loading: isSubmitting, loadingText: submitLoadingLabel, disabled: !identifier.trim() || !password.trim(), children: submitLabel })] }), ssoLabel !== null ? (jsxs(Fragment, { children: [jsxs("div", { className: "tw:relative", children: [jsx("div", { className: "tw:absolute tw:inset-0 tw:flex tw:items-center", children: jsx("span", { className: "tw:w-full tw:border-t tw:border-border" }) }), jsx("div", { className: "tw:relative tw:flex tw:justify-center tw:text-xs tw:uppercase", children: jsx("span", { className: "tw:bg-card tw:px-2 tw:text-muted-foreground", children: ssoLabel }) })] }), jsxs(Button, { type: "button", variant: "outline", className: "tw:h-12 tw:w-full", onClick: onSsoClick, disabled: isSubmitting, children: [jsx(Building2, { className: "tw:size-4" }), ssoButtonLabel] })] })) : null, jsx("p", { className: "tw:text-center tw:text-xs tw:text-muted-foreground", children: legalNotice })] }));
30
+ }
31
+ function ForgotPasswordView({ title, description, emailId, emailLabel, email, onEmailChange, emailPlaceholder, submitLabel, backLabel, isSubmitting, onSubmit, onBack, error, }) {
32
+ return (jsxs("form", { onSubmit: onSubmit, className: "tw:flex tw:flex-col tw:gap-5", children: [jsxs("div", { className: "tw:space-y-2 tw:text-center", children: [jsx("h2", { className: "tw:text-xl tw:font-semibold", children: title }), jsx("p", { className: "tw:text-sm tw:text-muted-foreground", children: description })] }), jsxs("div", { className: "tw:flex tw:flex-col tw:gap-2", children: [jsx(Label, { htmlFor: emailId, children: emailLabel }), jsx(Input, { id: emailId, type: "email", value: email, onChange: (event) => onEmailChange(event.target.value), placeholder: emailPlaceholder, autoComplete: "email", className: "tw:h-12", disabled: isSubmitting, required: true })] }), jsx(Button, { type: "submit", className: "tw:h-12 tw:w-full", loading: isSubmitting, loadingText: submitLabel, disabled: !email.trim(), children: submitLabel }), error ? (jsx("p", { className: "tw:text-center tw:text-sm tw:text-destructive", children: error })) : null, jsx(Button, { type: "button", variant: "ghost", className: "tw:w-full", onClick: onBack, disabled: isSubmitting, children: backLabel })] }));
33
+ }
34
+ function ForgotPasswordSentView({ backAriaLabel, onBack, title, descriptionPrefix, email, instructions, resendLabel, resendCountdown, onResend, isResending, error, backLabel, }) {
35
+ return (jsxs("div", { className: "tw:flex tw:flex-col tw:gap-8", children: [jsx("div", { className: "tw:flex tw:items-center", children: jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: onBack, "aria-label": backAriaLabel, children: jsx(ArrowLeft, { className: "tw:size-4" }) }) }), jsxs("div", { className: "tw:flex tw:flex-col tw:items-center tw:gap-4 tw:text-center", children: [jsx("div", { className: "tw:flex tw:size-12 tw:items-center tw:justify-center tw:rounded-xl tw:bg-sky-100 tw:text-primary", children: jsx(LockKeyhole, { className: "tw:size-6" }) }), jsx("h2", { className: "tw:text-3xl tw:font-semibold tw:tracking-tight", children: title }), jsxs("p", { className: "tw:text-sm tw:text-muted-foreground", children: [descriptionPrefix, jsx("br", {}), email] })] }), jsxs("div", { className: "tw:flex tw:flex-col tw:gap-4 tw:text-center", children: [jsx("p", { className: "tw:text-sm tw:text-muted-foreground", children: instructions }), resendCountdown > 0 ? (jsxs("p", { className: "tw:text-sm tw:text-muted-foreground", children: [resendLabel, " in ", resendCountdown, "s"] })) : (jsx(Button, { type: "button", variant: "outline", className: "tw:mx-auto", loading: isResending, loadingText: `${resendLabel}...`, onClick: onResend, children: resendLabel })), error ? (jsx("p", { className: "tw:text-center tw:text-sm tw:text-destructive", children: error })) : null, jsx(Button, { type: "button", variant: "ghost", className: "tw:w-full", onClick: onBack, disabled: isResending, children: backLabel })] })] }));
36
+ }
37
+ function SsoEmailView({ backAriaLabel, onBack, title, description, emailId, emailLabel, email, onEmailChange, emailPlaceholder, submitLabel, isSubmitting, onSubmit, hint, }) {
38
+ return (jsxs("div", { className: "tw:flex tw:flex-col tw:gap-8", children: [jsx("div", { className: "tw:flex tw:items-center", children: jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: onBack, "aria-label": backAriaLabel, children: jsx(ArrowLeft, { className: "tw:size-4" }) }) }), jsxs("div", { className: "tw:flex tw:flex-col tw:items-center tw:gap-4 tw:text-center", children: [jsx("div", { className: "tw:flex tw:size-12 tw:items-center tw:justify-center tw:rounded-xl tw:bg-sky-100 tw:text-primary", children: jsx(LockKeyhole, { className: "tw:size-6" }) }), jsxs("div", { className: "tw:space-y-2", children: [jsx("h2", { className: "tw:text-3xl tw:font-semibold tw:tracking-tight", children: title }), jsx("p", { className: "tw:text-sm tw:text-muted-foreground", children: description })] })] }), jsxs("form", { onSubmit: onSubmit, className: "tw:flex tw:flex-col tw:gap-5", children: [jsxs("div", { className: "tw:flex tw:flex-col tw:gap-2", children: [jsx(Label, { htmlFor: emailId, children: emailLabel }), jsx(Input, { id: emailId, type: "email", value: email, onChange: (event) => onEmailChange(event.target.value), placeholder: emailPlaceholder, autoComplete: "email", className: "tw:h-12", disabled: isSubmitting, required: true })] }), jsx(Button, { type: "submit", className: "tw:h-12 tw:w-full", loading: isSubmitting, loadingText: submitLabel, disabled: !email.trim(), children: submitLabel })] }), jsx("p", { className: "tw:text-center tw:text-sm tw:text-muted-foreground", children: hint })] }));
39
+ }
40
+ function SplitMediaPane({ widthPercent, hasSplitImage, imageSrc, imageAlt, onImageError, overlayOpacity, imageOverlayContent, testimonial, }) {
41
+ const splitImageStyle = {
42
+ width: `${widthPercent}%`,
43
+ };
44
+ return (jsxs("div", { className: "tw:relative tw:overflow-hidden tw:shrink-0", style: splitImageStyle, children: [hasSplitImage ? (jsx("img", { src: imageSrc, alt: imageAlt, className: "tw:h-full tw:w-full tw:object-cover", onError: onImageError })) : (jsx("div", { className: "tw:h-full tw:w-full tw:bg-gradient-to-br tw:from-slate-700 tw:via-slate-600 tw:to-slate-900" })), jsx("div", { className: "tw:absolute tw:inset-0 tw:bg-black", style: { opacity: overlayOpacity } }), jsx("div", { className: "tw:absolute tw:inset-0 tw:bg-gradient-to-t tw:from-black/85 tw:via-black/45 tw:to-black/20" }), imageOverlayContent || testimonial ? (jsx("div", { className: "tw:absolute tw:inset-x-0 tw:bottom-0 tw:z-10 tw:p-8 tw:pb-12", children: imageOverlayContent ?? (jsxs("blockquote", { className: "tw:text-white", children: [jsx("p", { className: "tw:text-lg tw:font-medium tw:leading-relaxed tw:[text-shadow:0_2px_12px_rgba(0,0,0,0.85)]", children: testimonial?.quote }), jsxs("footer", { className: "tw:mt-4 tw:[text-shadow:0_2px_8px_rgba(0,0,0,0.8)]", children: [jsx("p", { className: "tw:text-sm tw:font-semibold tw:text-white", children: testimonial?.authorName }), testimonial?.authorTitle ? (jsx("p", { className: "tw:text-sm tw:text-white/80", children: testimonial.authorTitle })) : null] })] })) })) : null] }));
45
+ }
46
+ function FooterLinks({ links }) {
47
+ if (links.length === 0) {
48
+ return null;
49
+ }
50
+ return (jsx("div", { className: "tw:mt-6 tw:flex tw:flex-wrap tw:items-center tw:justify-center tw:gap-4 tw:text-xs tw:text-muted-foreground", children: links.map((link, index) => (jsxs(React.Fragment, { children: [index > 0 ? jsx("span", { "aria-hidden": "true", children: "·" }) : null, jsx("a", { href: link.href, ...getLinkAttributes(link.external), className: "hover:tw:text-foreground hover:tw:underline", children: link.label })] }, `${link.label}-${index}`))) }));
51
+ }
52
+
53
+ export { BrandHeader, FooterLinks, ForgotPasswordSentView, ForgotPasswordView, SignInView, SplitMediaPane, SsoEmailView };
@@ -0,0 +1,27 @@
1
+ import * as React from "react";
2
+ import * as MenubarPrimitive from "@radix-ui/react-menubar";
3
+ declare function Menubar({ className, ...props }: React.ComponentProps<typeof MenubarPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function MenubarMenu({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Menu>): import("react/jsx-runtime").JSX.Element;
5
+ declare function MenubarGroup({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
6
+ declare function MenubarPortal({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
7
+ declare function MenubarRadioGroup({ ...props }: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>): import("react/jsx-runtime").JSX.Element;
8
+ declare function MenubarTrigger({ className, ...props }: React.ComponentProps<typeof MenubarPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
9
+ declare function MenubarContent({ className, align, alignOffset, sideOffset, ...props }: React.ComponentProps<typeof MenubarPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
10
+ declare function MenubarItem({ className, inset, variant, ...props }: React.ComponentProps<typeof MenubarPrimitive.Item> & {
11
+ inset?: boolean;
12
+ variant?: "default" | "destructive";
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ declare function MenubarCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>): import("react/jsx-runtime").JSX.Element;
15
+ declare function MenubarRadioItem({ className, children, ...props }: React.ComponentProps<typeof MenubarPrimitive.RadioItem>): import("react/jsx-runtime").JSX.Element;
16
+ declare function MenubarLabel({ className, inset, ...props }: React.ComponentProps<typeof MenubarPrimitive.Label> & {
17
+ inset?: boolean;
18
+ }): import("react/jsx-runtime").JSX.Element;
19
+ declare function MenubarSeparator({ className, ...props }: React.ComponentProps<typeof MenubarPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
20
+ declare function MenubarShortcut({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
21
+ declare function MenubarSub({ ...props }: React.ComponentProps<typeof MenubarPrimitive.Sub>): import("react/jsx-runtime").JSX.Element;
22
+ declare function MenubarSubTrigger({ className, inset, children, ...props }: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {
23
+ inset?: boolean;
24
+ }): import("react/jsx-runtime").JSX.Element;
25
+ declare function MenubarSubContent({ className, ...props }: React.ComponentProps<typeof MenubarPrimitive.SubContent>): import("react/jsx-runtime").JSX.Element;
26
+ export { Menubar, MenubarPortal, MenubarMenu, MenubarTrigger, MenubarContent, MenubarGroup, MenubarSeparator, MenubarLabel, MenubarItem, MenubarShortcut, MenubarCheckboxItem, MenubarRadioGroup, MenubarRadioItem, MenubarSub, MenubarSubTrigger, MenubarSubContent, };
27
+ //# sourceMappingURL=menubar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../../src/components/menubar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import * as MenubarPrimitive from '@radix-ui/react-menubar';
3
+ import { CheckIcon, CircleIcon, ChevronRightIcon } from 'lucide-react';
4
+ import { cn } from '../lib/utils.js';
5
+
6
+ function Menubar({ className, ...props }) {
7
+ return (jsx(MenubarPrimitive.Root, { "data-slot": "menubar", className: cn("tw:bg-background tw:flex tw:h-9 tw:items-center tw:gap-1 tw:rounded-md tw:border tw:p-1 tw:shadow-xs", className), ...props }));
8
+ }
9
+ function MenubarMenu({ ...props }) {
10
+ return jsx(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
11
+ }
12
+ function MenubarGroup({ ...props }) {
13
+ return jsx(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
14
+ }
15
+ function MenubarPortal({ ...props }) {
16
+ return jsx(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
17
+ }
18
+ function MenubarRadioGroup({ ...props }) {
19
+ return (jsx(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props }));
20
+ }
21
+ function MenubarTrigger({ className, ...props }) {
22
+ return (jsx(MenubarPrimitive.Trigger, { "data-slot": "menubar-trigger", className: cn("tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-[state=open]:bg-accent tw:data-[state=open]:text-accent-foreground tw:flex tw:items-center tw:rounded-sm tw:px-2 tw:py-1 tw:text-sm tw:font-medium tw:outline-hidden tw:select-none", className), ...props }));
23
+ }
24
+ function MenubarContent({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }) {
25
+ return (jsx(MenubarPortal, { children: jsx(MenubarPrimitive.Content, { "data-slot": "menubar-content", align: align, alignOffset: alignOffset, sideOffset: sideOffset, className: cn("tw:bg-popover tw:text-popover-foreground tw:data-[state=open]:animate-in tw:data-[state=closed]:fade-out-0 tw:data-[state=open]:fade-in-0 tw:data-[state=closed]:zoom-out-95 tw:data-[state=open]:zoom-in-95 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:z-50 tw:min-w-[12rem] tw:origin-(--radix-menubar-content-transform-origin) tw:overflow-hidden tw:rounded-md tw:border tw:p-1 tw:shadow-md", className), ...props }) }));
26
+ }
27
+ function MenubarItem({ className, inset, variant = "default", ...props }) {
28
+ return (jsx(MenubarPrimitive.Item, { "data-slot": "menubar-item", "data-inset": inset, "data-variant": variant, className: cn("tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-[variant=destructive]:text-destructive tw:data-[variant=destructive]:focus:bg-destructive/10 tw:dark:data-[variant=destructive]:focus:bg-destructive/20 tw:data-[variant=destructive]:focus:text-destructive tw:data-[variant=destructive]:*:[svg]:!text-destructive tw:[&_svg:not([class*='text-'])]:text-muted-foreground tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-2 tw:rounded-sm tw:px-2 tw:py-1.5 tw:text-sm tw:outline-hidden tw:select-none tw:data-[disabled]:pointer-events-none tw:data-[disabled]:opacity-50 tw:data-[inset]:pl-8 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*='size-'])]:size-4", className), ...props }));
29
+ }
30
+ function MenubarCheckboxItem({ className, children, checked, ...props }) {
31
+ return (jsxs(MenubarPrimitive.CheckboxItem, { "data-slot": "menubar-checkbox-item", className: cn("tw:focus:bg-accent tw:focus:text-accent-foreground tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-2 tw:rounded-xs tw:py-1.5 tw:pr-2 tw:pl-8 tw:text-sm tw:outline-hidden tw:select-none tw:data-[disabled]:pointer-events-none tw:data-[disabled]:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*='size-'])]:size-4", className), checked: checked, ...props, children: [jsx("span", { className: "tw:pointer-events-none tw:absolute tw:left-2 tw:flex tw:size-3.5 tw:items-center tw:justify-center", children: jsx(MenubarPrimitive.ItemIndicator, { children: jsx(CheckIcon, { className: "tw:size-4" }) }) }), children] }));
32
+ }
33
+ function MenubarRadioItem({ className, children, ...props }) {
34
+ return (jsxs(MenubarPrimitive.RadioItem, { "data-slot": "menubar-radio-item", className: cn("tw:focus:bg-accent tw:focus:text-accent-foreground tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-2 tw:rounded-xs tw:py-1.5 tw:pr-2 tw:pl-8 tw:text-sm tw:outline-hidden tw:select-none tw:data-[disabled]:pointer-events-none tw:data-[disabled]:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*='size-'])]:size-4", className), ...props, children: [jsx("span", { className: "tw:pointer-events-none tw:absolute tw:left-2 tw:flex tw:size-3.5 tw:items-center tw:justify-center", children: jsx(MenubarPrimitive.ItemIndicator, { children: jsx(CircleIcon, { className: "tw:size-2 tw:fill-current" }) }) }), children] }));
35
+ }
36
+ function MenubarLabel({ className, inset, ...props }) {
37
+ return (jsx(MenubarPrimitive.Label, { "data-slot": "menubar-label", "data-inset": inset, className: cn("tw:px-2 tw:py-1.5 tw:text-sm tw:font-medium tw:data-[inset]:pl-8", className), ...props }));
38
+ }
39
+ function MenubarSeparator({ className, ...props }) {
40
+ return (jsx(MenubarPrimitive.Separator, { "data-slot": "menubar-separator", className: cn("tw:bg-border tw:-mx-1 tw:my-1 tw:h-px", className), ...props }));
41
+ }
42
+ function MenubarShortcut({ className, ...props }) {
43
+ return (jsx("span", { "data-slot": "menubar-shortcut", className: cn("tw:text-muted-foreground tw:ml-auto tw:text-xs tw:tracking-widest", className), ...props }));
44
+ }
45
+ function MenubarSub({ ...props }) {
46
+ return jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
47
+ }
48
+ function MenubarSubTrigger({ className, inset, children, ...props }) {
49
+ return (jsxs(MenubarPrimitive.SubTrigger, { "data-slot": "menubar-sub-trigger", "data-inset": inset, className: cn("tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-[state=open]:bg-accent tw:data-[state=open]:text-accent-foreground tw:flex tw:cursor-default tw:items-center tw:rounded-sm tw:px-2 tw:py-1.5 tw:text-sm tw:outline-none tw:select-none tw:data-[inset]:pl-8", className), ...props, children: [children, jsx(ChevronRightIcon, { className: "tw:ml-auto tw:h-4 tw:w-4" })] }));
50
+ }
51
+ function MenubarSubContent({ className, ...props }) {
52
+ return (jsx(MenubarPrimitive.SubContent, { "data-slot": "menubar-sub-content", className: cn("tw:bg-popover tw:text-popover-foreground tw:data-[state=open]:animate-in tw:data-[state=closed]:animate-out tw:data-[state=closed]:fade-out-0 tw:data-[state=open]:fade-in-0 tw:data-[state=closed]:zoom-out-95 tw:data-[state=open]:zoom-in-95 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:z-50 tw:min-w-[8rem] tw:origin-(--radix-menubar-content-transform-origin) tw:overflow-hidden tw:rounded-md tw:border tw:p-1 tw:shadow-lg", className), ...props }));
53
+ }
54
+
55
+ export { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger };
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
3
+ declare function NavigationMenu({ className, children, viewport, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
4
+ viewport?: boolean;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ declare function NavigationMenuList({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.List>): import("react/jsx-runtime").JSX.Element;
7
+ declare function NavigationMenuItem({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
8
+ declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
9
+ declare function NavigationMenuTrigger({ className, children, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
10
+ declare function NavigationMenuContent({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
11
+ declare function NavigationMenuViewport({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>): import("react/jsx-runtime").JSX.Element;
12
+ declare function NavigationMenuLink({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Link>): import("react/jsx-runtime").JSX.Element;
13
+ declare function NavigationMenuIndicator({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>): import("react/jsx-runtime").JSX.Element;
14
+ export { NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuContent, NavigationMenuTrigger, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, navigationMenuTriggerStyle, };
15
+ //# sourceMappingURL=navigation-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-menu.d.ts","sourceRoot":"","sources":["../../src/components/navigation-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,uBAAuB,MAAM,iCAAiC,CAAA;AAM1E,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,QAAQ,EACR,QAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,GAAG;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,2CAeA;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,2CAW3D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,2CAQ3D;AAED,QAAA,MAAM,0BAA0B,oFAE/B,CAAA;AAED,iBAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,OAAO,CAAC,2CAc9D;AAED,iBAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,OAAO,CAAC,2CAY9D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,QAAQ,CAAC,2CAiB/D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,2CAW3D;AAED,iBAAS,uBAAuB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,uBAAuB,CAAC,SAAS,CAAC,2CAahE;AAED,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,GAC3B,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
3
+ import { cva } from 'class-variance-authority';
4
+ import { ChevronDownIcon } from 'lucide-react';
5
+ import { cn } from '../lib/utils.js';
6
+
7
+ function NavigationMenu({ className, children, viewport = true, ...props }) {
8
+ return (jsxs(NavigationMenuPrimitive.Root, { "data-slot": "navigation-menu", "data-viewport": viewport, className: cn("tw:group/navigation-menu tw:relative tw:flex tw:max-w-max tw:flex-1 tw:items-center tw:justify-center", className), ...props, children: [children, viewport && jsx(NavigationMenuViewport, {})] }));
9
+ }
10
+ function NavigationMenuList({ className, ...props }) {
11
+ return (jsx(NavigationMenuPrimitive.List, { "data-slot": "navigation-menu-list", className: cn("tw:group tw:flex tw:flex-1 tw:list-none tw:items-center tw:justify-center tw:gap-1", className), ...props }));
12
+ }
13
+ function NavigationMenuItem({ className, ...props }) {
14
+ return (jsx(NavigationMenuPrimitive.Item, { "data-slot": "navigation-menu-item", className: cn("tw:relative", className), ...props }));
15
+ }
16
+ const navigationMenuTriggerStyle = cva("tw:group tw:inline-flex tw:h-9 tw:w-max tw:items-center tw:justify-center tw:rounded-md tw:bg-background tw:px-4 tw:py-2 tw:text-sm tw:font-medium hover:tw:bg-accent hover:tw:text-accent-foreground focus:tw:bg-accent focus:tw:text-accent-foreground disabled:tw:pointer-events-none disabled:tw:opacity-50 data-[state=open]:hover:tw:bg-accent data-[state=open]:tw:text-accent-foreground data-[state=open]:focus:tw:bg-accent data-[state=open]:tw:bg-accent/50 focus-visible:tw:ring-ring/50 tw:outline-none tw:transition-[color,box-shadow] focus-visible:tw:ring-[3px] focus-visible:tw:outline-1");
17
+ function NavigationMenuTrigger({ className, children, ...props }) {
18
+ return (jsxs(NavigationMenuPrimitive.Trigger, { "data-slot": "navigation-menu-trigger", className: cn(navigationMenuTriggerStyle(), "tw:group", className), ...props, children: [children, " ", jsx(ChevronDownIcon, { className: "tw:relative tw:top-[1px] tw:ml-1 tw:size-3 tw:transition tw:duration-300 group-data-[state=open]:tw:rotate-180", "aria-hidden": "true" })] }));
19
+ }
20
+ function NavigationMenuContent({ className, ...props }) {
21
+ return (jsx(NavigationMenuPrimitive.Content, { "data-slot": "navigation-menu-content", className: cn("data-[motion^=from-]:tw:animate-in data-[motion^=to-]:tw:animate-out data-[motion^=from-]:tw:fade-in data-[motion^=to-]:tw:fade-out data-[motion=from-end]:tw:slide-in-from-right-52 data-[motion=from-start]:tw:slide-in-from-left-52 data-[motion=to-end]:tw:slide-out-to-right-52 data-[motion=to-start]:tw:slide-out-to-left-52 tw:top-0 tw:left-0 tw:w-full tw:p-2 tw:pr-2.5 md:tw:absolute md:tw:w-auto", "group-data-[viewport=false]/navigation-menu:tw:bg-popover group-data-[viewport=false]/navigation-menu:tw:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:tw:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:tw:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:tw:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:tw:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:tw:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:tw:fade-out-0 group-data-[viewport=false]/navigation-menu:tw:top-full group-data-[viewport=false]/navigation-menu:tw:mt-1.5 group-data-[viewport=false]/navigation-menu:tw:overflow-hidden group-data-[viewport=false]/navigation-menu:tw:rounded-md group-data-[viewport=false]/navigation-menu:tw:border group-data-[viewport=false]/navigation-menu:tw:shadow group-data-[viewport=false]/navigation-menu:tw:duration-200 **:data-[slot=navigation-menu-link]:focus:tw:ring-0 **:data-[slot=navigation-menu-link]:focus:tw:outline-none", className), ...props }));
22
+ }
23
+ function NavigationMenuViewport({ className, ...props }) {
24
+ return (jsx("div", { className: cn("tw:absolute tw:top-full tw:left-0 tw:isolate tw:z-50 tw:flex tw:justify-center"), children: jsx(NavigationMenuPrimitive.Viewport, { "data-slot": "navigation-menu-viewport", className: cn("tw:origin-top-center tw:bg-popover tw:text-popover-foreground data-[state=open]:tw:animate-in data-[state=closed]:tw:animate-out data-[state=closed]:tw:zoom-out-95 data-[state=open]:tw:zoom-in-90 tw:relative tw:mt-1.5 tw:h-[var(--radix-navigation-menu-viewport-height)] tw:w-full tw:overflow-hidden tw:rounded-md tw:border tw:shadow md:tw:w-[var(--radix-navigation-menu-viewport-width)]", className), ...props }) }));
25
+ }
26
+ function NavigationMenuLink({ className, ...props }) {
27
+ return (jsx(NavigationMenuPrimitive.Link, { "data-slot": "navigation-menu-link", className: cn("data-[active=true]:focus:tw:bg-accent data-[active=true]:hover:tw:bg-accent data-[active=true]:tw:bg-accent/50 data-[active=true]:tw:text-accent-foreground hover:tw:bg-accent hover:tw:text-accent-foreground focus:tw:bg-accent focus:tw:text-accent-foreground focus-visible:tw:ring-ring/50 tw:[&_svg:not([class*='text-'])]:text-muted-foreground tw:flex tw:flex-col tw:gap-1 tw:rounded-sm tw:p-2 tw:text-sm tw:transition-all tw:outline-none focus-visible:tw:ring-[3px] focus-visible:tw:outline-1 tw:[&_svg:not([class*='size-'])]:size-4", className), ...props }));
28
+ }
29
+ function NavigationMenuIndicator({ className, ...props }) {
30
+ return (jsx(NavigationMenuPrimitive.Indicator, { "data-slot": "navigation-menu-indicator", className: cn("data-[state=visible]:tw:animate-in data-[state=hidden]:tw:animate-out data-[state=hidden]:tw:fade-out data-[state=visible]:tw:fade-in tw:top-full tw:z-[1] tw:flex tw:h-1.5 tw:items-end tw:justify-center tw:overflow-hidden", className), ...props, children: jsx("div", { className: "tw:bg-border tw:relative tw:top-[60%] tw:h-2 tw:w-2 tw:rotate-45 tw:rounded-tl-sm tw:shadow-md" }) }));
31
+ }
32
+
33
+ export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import { Button } from "../components/button";
3
+ declare function Pagination({ className, ...props }: React.ComponentProps<"nav">): import("react/jsx-runtime").JSX.Element;
4
+ declare function PaginationContent({ className, ...props }: React.ComponentProps<"ul">): import("react/jsx-runtime").JSX.Element;
5
+ declare function PaginationItem({ ...props }: React.ComponentProps<"li">): import("react/jsx-runtime").JSX.Element;
6
+ type PaginationLinkProps = {
7
+ isActive?: boolean;
8
+ } & Pick<React.ComponentProps<typeof Button>, "size"> & React.ComponentProps<"a">;
9
+ declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): import("react/jsx-runtime").JSX.Element;
10
+ declare function PaginationPrevious({ className, ...props }: React.ComponentProps<typeof PaginationLink>): import("react/jsx-runtime").JSX.Element;
11
+ declare function PaginationNext({ className, ...props }: React.ComponentProps<typeof PaginationLink>): import("react/jsx-runtime").JSX.Element;
12
+ declare function PaginationEllipsis({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
13
+ export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
14
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,EAAE,MAAM,EAAkB,MAAM,sBAAsB,CAAA;AAE7D,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAavE;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAW5B;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAE/D;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,CAAC,GACnD,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;AAE3B,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,QAAQ,EACR,IAAa,EACb,GAAG,KAAK,EACT,EAAE,mBAAmB,2CAkBrB;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,2CAe7C;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,2CAY7C;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAe9B;AAED,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from 'lucide-react';
3
+ import { cn } from '../lib/utils.js';
4
+ import { buttonVariants } from './button.js';
5
+
6
+ function Pagination({ className, ...props }) {
7
+ return (jsx("nav", { role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: cn("tw:!mx-auto tw:!flex tw:!w-full tw:!justify-end", className), ...props }));
8
+ }
9
+ function PaginationContent({ className, ...props }) {
10
+ return (jsx("ul", { "data-slot": "pagination-content", className: cn("tw:!flex tw:!flex-row tw:!items-center tw:!gap-1", className), ...props }));
11
+ }
12
+ function PaginationItem({ ...props }) {
13
+ return jsx("li", { "data-slot": "pagination-item", ...props });
14
+ }
15
+ function PaginationLink({ className, isActive, size = "icon", ...props }) {
16
+ return (jsx("a", { "aria-current": isActive ? "page" : undefined, "data-slot": "pagination-link", "data-active": isActive, className: cn(buttonVariants({
17
+ variant: isActive ? "outline" : "ghost",
18
+ size,
19
+ }), "tw:!text-foreground tw:!text-[14px] tw:!no-underline hover:tw:!bg-accent hover:tw:!text-accent-foreground data-[active=true]:tw:!text-accent-foreground data-[active=true]:tw:!border data-[active=true]:tw:!border-input tw:!h-[32px]", size === "icon" && "tw:!w-[32px]", className), ...props }));
20
+ }
21
+ function PaginationPrevious({ className, ...props }) {
22
+ return (jsxs(PaginationLink, { "aria-label": "Go to previous page", size: "default", className: cn("tw:!gap-1 tw:!px-2.5 sm:tw:!pl-2.5 tw:!h-[32px]", className), ...props, children: [jsx(ChevronLeftIcon, { className: "tw:!size-4" }), jsx("span", { className: "tw:!hidden sm:tw:!block", children: "Previous" })] }));
23
+ }
24
+ function PaginationNext({ className, ...props }) {
25
+ return (jsxs(PaginationLink, { "aria-label": "Go to next page", size: "default", className: cn("tw:!gap-1 tw:!px-2.5 sm:tw:!pr-2.5 tw:!h-8", className), ...props, children: [jsx("span", { className: "tw:!hidden sm:tw:!block", children: "Next" }), jsx(ChevronRightIcon, { className: "tw:!size-4" })] }));
26
+ }
27
+ function PaginationEllipsis({ className, ...props }) {
28
+ return (jsxs("span", { "aria-hidden": true, "data-slot": "pagination-ellipsis", className: cn("tw:!flex tw:!size-9 tw:!items-center tw:!justify-center", className), ...props, children: [jsx(MoreHorizontalIcon, { className: "tw:!size-4" }), jsx("span", { className: "tw:sr-only", children: "More pages" })] }));
29
+ }
30
+
31
+ export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious };
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
3
+ declare function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
5
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
6
+ declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>): import("react/jsx-runtime").JSX.Element;
7
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
8
+ //# sourceMappingURL=popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAI3D,iBAAS,OAAO,CAAC,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAEpD;AAED,iBAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAEvD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,KAAgB,EAChB,UAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAevD;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,2CAEtD;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
3
+ import { cn } from '../lib/utils.js';
4
+
5
+ function Popover({ ...props }) {
6
+ return jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
7
+ }
8
+ function PopoverTrigger({ ...props }) {
9
+ return jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
10
+ }
11
+ function PopoverContent({ className, align = "center", sideOffset = 4, ...props }) {
12
+ return (jsx(PopoverPrimitive.Portal, { children: jsx(PopoverPrimitive.Content, { "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn("tw:!bg-popover tw:!text-popover-foreground data-[state=open]:tw:!animate-in data-[state=closed]:tw:!animate-out data-[state=closed]:tw:!fade-out-0 data-[state=open]:tw:!fade-in-0 data-[state=closed]:tw:!zoom-out-95 data-[state=open]:tw:!zoom-in-95 data-[side=bottom]:tw:!slide-in-from-top-2 data-[side=left]:tw:!slide-in-from-right-2 data-[side=right]:tw:!slide-in-from-left-2 data-[side=top]:tw:!slide-in-from-bottom-2 tw:!z-50 tw:!w-72 tw:!origin-(--radix-popover-content-transform-origin) tw:!rounded-md tw:!border tw:!p-4 tw:!shadow-md tw:!outline-hidden", className), ...props }) }));
13
+ }
14
+ function PopoverAnchor({ ...props }) {
15
+ return jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
16
+ }
17
+
18
+ export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
3
+ declare function Progress({ className, value, ...props }: React.ComponentProps<typeof ProgressPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Progress };
5
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAA;AAI7D,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,2CAiBrD;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
3
+ import { cn } from '../lib/utils.js';
4
+
5
+ function Progress({ className, value, ...props }) {
6
+ return (jsx(ProgressPrimitive.Root, { "data-slot": "progress", className: cn("tw:bg-primary/20 tw:relative tw:h-2 tw:w-full tw:overflow-hidden tw:rounded-full", className), ...props, children: jsx(ProgressPrimitive.Indicator, { "data-slot": "progress-indicator", className: "tw:bg-primary tw:h-full tw:w-full tw:flex-1 tw:transition-all", style: { transform: `translateX(-${100 - (value || 0)}%)` } }) }));
7
+ }
8
+
9
+ export { Progress };
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3
+ declare function RadioGroup({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function RadioGroupItem({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
5
+ export { RadioGroup, RadioGroupItem };
6
+ //# sourceMappingURL=radio-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAKlE,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,2CAQvD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,2CAkBvD;AAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
3
+ import { CircleIcon } from 'lucide-react';
4
+ import { cn } from '../lib/utils.js';
5
+
6
+ function RadioGroup({ className, ...props }) {
7
+ return (jsx(RadioGroupPrimitive.Root, { "data-slot": "radio-group", className: cn("tw:grid tw:gap-3", className), ...props }));
8
+ }
9
+ function RadioGroupItem({ className, ...props }) {
10
+ return (jsx(RadioGroupPrimitive.Item, { "data-slot": "radio-group-item", className: cn("tw:border-input tw:text-primary tw:focus-visible:border-ring tw:focus-visible:ring-ring/50 tw:aria-invalid:ring-destructive/20 tw:dark:aria-invalid:ring-destructive/40 tw:aria-invalid:border-destructive tw:dark:bg-input/30 tw:aspect-square tw:size-4 tw:shrink-0 tw:rounded-full tw:border tw:shadow-xs tw:transition-[color,box-shadow] tw:outline-none tw:focus-visible:ring-[3px] tw:disabled:cursor-not-allowed tw:disabled:opacity-50", className), ...props, children: jsx(RadioGroupPrimitive.Indicator, { "data-slot": "radio-group-indicator", className: "tw:relative tw:flex tw:items-center tw:justify-center", children: jsx(CircleIcon, { className: "tw:fill-primary tw:absolute tw:top-1/2 tw:left-1/2 tw:size-2 tw:-translate-x-1/2 tw:-translate-y-1/2" }) }) }));
11
+ }
12
+
13
+ export { RadioGroup, RadioGroupItem };
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ import * as ResizablePrimitive from "react-resizable-panels";
3
+ declare function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): import("react/jsx-runtime").JSX.Element;
4
+ declare function ResizablePanel({ ...props }: React.ComponentProps<typeof ResizablePrimitive.Panel>): import("react/jsx-runtime").JSX.Element;
5
+ declare function ResizableHandle({ withHandle, className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
6
+ withHandle?: boolean;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
9
+ //# sourceMappingURL=resizable.d.ts.map