@smicolon/fasla-ui 0.6.0 → 0.8.0

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 (962) hide show
  1. package/README.md +24 -5
  2. package/dist/cli/index.js +2983 -648
  3. package/dist/index.cjs +50 -12
  4. package/dist/index.js +50 -12
  5. package/dist/motion/index.cjs +12 -0
  6. package/dist/motion/index.d.cts +7 -0
  7. package/dist/motion/index.d.ts +7 -0
  8. package/dist/motion/index.js +12 -0
  9. package/dist/registry/index.cjs +4 -4
  10. package/dist/registry/index.js +4 -4
  11. package/dist/tokens/index.cjs +34 -8
  12. package/dist/tokens/index.d.cts +23 -1
  13. package/dist/tokens/index.d.ts +23 -1
  14. package/dist/tokens/index.js +34 -8
  15. package/package.json +6 -1
  16. package/registry/blocks/about-approach-stack-cards/AboutApproachStackCards.tsx +305 -0
  17. package/registry/blocks/about-approach-stack-cards/index.ts +9 -0
  18. package/registry/blocks/about-bento/AboutBento.tsx +442 -0
  19. package/registry/blocks/about-bento/index.ts +9 -0
  20. package/registry/blocks/about-collage-hero/AboutCollageHero.tsx +285 -0
  21. package/registry/blocks/about-collage-hero/index.ts +8 -0
  22. package/registry/blocks/about-color-bento/AboutColorBento.tsx +235 -0
  23. package/registry/blocks/about-color-bento/index.ts +6 -0
  24. package/registry/blocks/about-culture-masonry/AboutCultureMasonry.tsx +305 -0
  25. package/registry/blocks/about-culture-masonry/index.ts +9 -0
  26. package/registry/blocks/about-headline-photos/AboutHeadlinePhotos.tsx +270 -0
  27. package/registry/blocks/about-headline-photos/index.ts +8 -0
  28. package/registry/blocks/about-impact-stats-band/AboutImpactStatsBand.test.tsx +45 -0
  29. package/registry/blocks/about-impact-stats-band/AboutImpactStatsBand.tsx +348 -0
  30. package/registry/blocks/about-impact-stats-band/index.ts +9 -0
  31. package/registry/blocks/about-letter-card/AboutLetterCard.tsx +403 -0
  32. package/registry/blocks/about-letter-card/index.ts +9 -0
  33. package/registry/blocks/about-mission-statement-hero/AboutMissionStatementHero.tsx +282 -0
  34. package/registry/blocks/about-mission-statement-hero/index.ts +8 -0
  35. package/registry/blocks/about-numbered-rows/AboutNumberedRows.tsx +289 -0
  36. package/registry/blocks/about-numbered-rows/index.ts +7 -0
  37. package/registry/blocks/about-split-panel/AboutSplitPanel.tsx +247 -0
  38. package/registry/blocks/about-split-panel/index.ts +8 -0
  39. package/registry/blocks/about-spotlight/AboutSpotlight.tsx +260 -0
  40. package/registry/blocks/about-spotlight/index.ts +7 -0
  41. package/registry/blocks/about-statement-band/AboutStatementBand.tsx +236 -0
  42. package/registry/blocks/about-statement-band/index.ts +7 -0
  43. package/registry/blocks/about-story-photos/AboutStoryPhotos.test.tsx +12 -0
  44. package/registry/blocks/about-story-photos/AboutStoryPhotos.tsx +252 -0
  45. package/registry/blocks/about-story-photos/index.ts +8 -0
  46. package/registry/blocks/about-story-snapshots/AboutStorySnapshots.tsx +239 -0
  47. package/registry/blocks/about-story-snapshots/index.ts +8 -0
  48. package/registry/blocks/about-type-stack/AboutTypeStack.tsx +205 -0
  49. package/registry/blocks/about-type-stack/index.ts +6 -0
  50. package/registry/blocks/about-values-connector-list/AboutValuesConnectorList.tsx +316 -0
  51. package/registry/blocks/about-values-connector-list/index.ts +7 -0
  52. package/registry/blocks/about-values-focus/AboutValuesFocus.tsx +303 -0
  53. package/registry/blocks/about-values-focus/index.ts +8 -0
  54. package/registry/blocks/about-values-spotlight/AboutValuesSpotlight.tsx +265 -0
  55. package/registry/blocks/about-values-spotlight/index.ts +8 -0
  56. package/registry/blocks/auth-centered-card-sign-in/AuthCenteredCardSignIn.tsx +373 -0
  57. package/registry/blocks/auth-centered-card-sign-in/index.ts +9 -0
  58. package/registry/blocks/auth-check-your-email/AuthCheckYourEmail.tsx +366 -0
  59. package/registry/blocks/auth-check-your-email/index.ts +7 -0
  60. package/registry/blocks/auth-forgot-password/AuthForgotPassword.tsx +265 -0
  61. package/registry/blocks/auth-forgot-password/index.ts +8 -0
  62. package/registry/blocks/auth-locked-session-re-authenticate/AuthLockedSessionReAuthenticate.tsx +305 -0
  63. package/registry/blocks/auth-locked-session-re-authenticate/index.ts +8 -0
  64. package/registry/blocks/auth-magic-link-request/AuthMagicLinkRequest.tsx +336 -0
  65. package/registry/blocks/auth-magic-link-request/index.ts +8 -0
  66. package/registry/blocks/auth-minimal-centered-sign-in/AuthMinimalCenteredSignIn.tsx +261 -0
  67. package/registry/blocks/auth-minimal-centered-sign-in/index.ts +8 -0
  68. package/registry/blocks/auth-multi-step-sign-up-wizard/AuthMultiStepSignUpWizard.tsx +460 -0
  69. package/registry/blocks/auth-multi-step-sign-up-wizard/index.ts +8 -0
  70. package/registry/blocks/auth-otp-verification/AuthOtpVerification.tsx +348 -0
  71. package/registry/blocks/auth-otp-verification/index.ts +7 -0
  72. package/registry/blocks/auth-passkey-sign-in/AuthPasskeySignIn.tsx +294 -0
  73. package/registry/blocks/auth-passkey-sign-in/index.ts +8 -0
  74. package/registry/blocks/auth-password-changed/AuthPasswordChanged.tsx +239 -0
  75. package/registry/blocks/auth-password-changed/index.ts +8 -0
  76. package/registry/blocks/auth-phone-number-sign-in/AuthPhoneNumberSignIn.tsx +402 -0
  77. package/registry/blocks/auth-phone-number-sign-in/index.ts +10 -0
  78. package/registry/blocks/auth-photo-background-sign-in/AuthPhotoBackgroundSignIn.tsx +398 -0
  79. package/registry/blocks/auth-photo-background-sign-in/index.ts +10 -0
  80. package/registry/blocks/auth-profile-setup-onboarding/AuthProfileSetupOnboarding.tsx +420 -0
  81. package/registry/blocks/auth-profile-setup-onboarding/index.ts +7 -0
  82. package/registry/blocks/auth-qr-device-login/AuthQrDeviceLogin.tsx +303 -0
  83. package/registry/blocks/auth-qr-device-login/index.ts +7 -0
  84. package/registry/blocks/auth-reset-password/AuthResetPassword.tsx +313 -0
  85. package/registry/blocks/auth-reset-password/index.ts +7 -0
  86. package/registry/blocks/auth-sign-in-error-state/AuthSignInErrorState.tsx +419 -0
  87. package/registry/blocks/auth-sign-in-error-state/index.ts +9 -0
  88. package/registry/blocks/auth-sign-up-benefits-column/AuthSignUpBenefitsColumn.tsx +481 -0
  89. package/registry/blocks/auth-sign-up-benefits-column/index.ts +10 -0
  90. package/registry/blocks/auth-sign-up-password-strength/AuthSignUpPasswordStrength.tsx +511 -0
  91. package/registry/blocks/auth-sign-up-password-strength/index.ts +8 -0
  92. package/registry/blocks/auth-social-first-sign-in/AuthSocialFirstSignIn.tsx +337 -0
  93. package/registry/blocks/auth-social-first-sign-in/index.ts +9 -0
  94. package/registry/blocks/auth-split-photo-sign-in/AuthSplitPhotoSignIn.tsx +472 -0
  95. package/registry/blocks/auth-split-photo-sign-in/index.ts +11 -0
  96. package/registry/blocks/auth-split-testimonial-sign-up/AuthSplitTestimonialSignUp.tsx +548 -0
  97. package/registry/blocks/auth-split-testimonial-sign-up/index.ts +11 -0
  98. package/registry/blocks/auth-tabbed-sign-in-sign-up/AuthTabbedSignInSignUp.tsx +566 -0
  99. package/registry/blocks/auth-tabbed-sign-in-sign-up/index.ts +11 -0
  100. package/registry/blocks/auth-team-invite-accept/AuthTeamInviteAccept.tsx +372 -0
  101. package/registry/blocks/auth-team-invite-accept/index.ts +9 -0
  102. package/registry/blocks/auth-two-factor-authenticator/AuthTwoFactorAuthenticator.tsx +333 -0
  103. package/registry/blocks/auth-two-factor-authenticator/index.ts +7 -0
  104. package/registry/blocks/auth-two-factor-method-chooser/AuthTwoFactorMethodChooser.tsx +290 -0
  105. package/registry/blocks/auth-two-factor-method-chooser/index.ts +8 -0
  106. package/registry/blocks/auth-waitlist-early-access/AuthWaitlistEarlyAccess.tsx +430 -0
  107. package/registry/blocks/auth-waitlist-early-access/index.ts +11 -0
  108. package/registry/blocks/blog-cards-alongside.test.tsx +176 -0
  109. package/registry/blocks/blog-cards-author-spotlight/BlogCardsAuthorSpotlight.tsx +342 -0
  110. package/registry/blocks/blog-cards-author-spotlight/index.ts +6 -0
  111. package/registry/blocks/blog-cards-bento-editorial-grid/BlogCardsBentoEditorialGrid.tsx +345 -0
  112. package/registry/blocks/blog-cards-bento-editorial-grid/index.ts +7 -0
  113. package/registry/blocks/blog-cards-browse.test.tsx +367 -0
  114. package/registry/blocks/blog-cards-classic-3-up-grid/BlogCardsClassic3UpGrid.tsx +287 -0
  115. package/registry/blocks/blog-cards-classic-3-up-grid/index.ts +7 -0
  116. package/registry/blocks/blog-cards-compact-4-up-thumb-grid/BlogCardsCompact4UpThumbGrid.tsx +265 -0
  117. package/registry/blocks/blog-cards-compact-4-up-thumb-grid/index.ts +7 -0
  118. package/registry/blocks/blog-cards-dark-editorial-feature/BlogCardsDarkEditorialFeature.tsx +287 -0
  119. package/registry/blocks/blog-cards-dark-editorial-feature/index.ts +6 -0
  120. package/registry/blocks/blog-cards-featured-two-up/BlogCardsFeaturedTwoUp.tsx +295 -0
  121. package/registry/blocks/blog-cards-featured-two-up/index.ts +7 -0
  122. package/registry/blocks/blog-cards-features.test.tsx +183 -0
  123. package/registry/blocks/blog-cards-filter-sidebar-results/BlogCardsFilterSidebarResults.tsx +582 -0
  124. package/registry/blocks/blog-cards-filter-sidebar-results/index.ts +6 -0
  125. package/registry/blocks/blog-cards-grids.test.tsx +110 -0
  126. package/registry/blocks/blog-cards-hairline-text-index/BlogCardsHairlineTextIndex.tsx +193 -0
  127. package/registry/blocks/blog-cards-hairline-text-index/index.ts +7 -0
  128. package/registry/blocks/blog-cards-journal-bento/BlogCardsJournalBento.tsx +409 -0
  129. package/registry/blocks/blog-cards-journal-bento/index.ts +8 -0
  130. package/registry/blocks/blog-cards-latest-popular-split/BlogCardsLatestPopularSplit.tsx +258 -0
  131. package/registry/blocks/blog-cards-latest-popular-split/index.ts +7 -0
  132. package/registry/blocks/blog-cards-lead-ranked-picks/BlogCardsLeadRankedPicks.tsx +276 -0
  133. package/registry/blocks/blog-cards-lead-ranked-picks/index.ts +6 -0
  134. package/registry/blocks/blog-cards-left-thumb-row-cards/BlogCardsLeftThumbRowCards.tsx +288 -0
  135. package/registry/blocks/blog-cards-left-thumb-row-cards/index.ts +7 -0
  136. package/registry/blocks/blog-cards-lists.test.tsx +93 -0
  137. package/registry/blocks/blog-cards-magazine-cover-story/BlogCardsMagazineCoverStory.tsx +326 -0
  138. package/registry/blocks/blog-cards-magazine-cover-story/index.ts +6 -0
  139. package/registry/blocks/blog-cards-newsletter-latest/BlogCardsNewsletterLatest.tsx +291 -0
  140. package/registry/blocks/blog-cards-newsletter-latest/index.ts +6 -0
  141. package/registry/blocks/blog-cards-numbered-reading-list/BlogCardsNumberedReadingList.tsx +275 -0
  142. package/registry/blocks/blog-cards-numbered-reading-list/index.ts +7 -0
  143. package/registry/blocks/blog-cards-overlay-photo-trio/BlogCardsOverlayPhotoTrio.tsx +279 -0
  144. package/registry/blocks/blog-cards-overlay-photo-trio/index.ts +7 -0
  145. package/registry/blocks/blog-cards-post-carousel-with-controls/BlogCardsPostCarouselWithControls.tsx +257 -0
  146. package/registry/blocks/blog-cards-post-carousel-with-controls/index.ts +6 -0
  147. package/registry/blocks/blog-cards-pull-quote-feature/BlogCardsPullQuoteFeature.tsx +245 -0
  148. package/registry/blocks/blog-cards-pull-quote-feature/index.ts +6 -0
  149. package/registry/blocks/blog-cards-related-posts-strip/BlogCardsRelatedPostsStrip.tsx +247 -0
  150. package/registry/blocks/blog-cards-related-posts-strip/index.ts +6 -0
  151. package/registry/blocks/blog-cards-search-chips-results/BlogCardsSearchChipsResults.tsx +473 -0
  152. package/registry/blocks/blog-cards-search-chips-results/index.ts +6 -0
  153. package/registry/blocks/blog-cards-split-feature/BlogCardsSplitFeature.tsx +214 -0
  154. package/registry/blocks/blog-cards-split-feature/index.ts +6 -0
  155. package/registry/blocks/careers/careers.test.tsx +414 -0
  156. package/registry/blocks/careers/careers.tsx +391 -0
  157. package/registry/blocks/careers/index.ts +27 -0
  158. package/registry/blocks/careers-about-card-role-list/CareersAboutCardRoleList.tsx +235 -0
  159. package/registry/blocks/careers-about-card-role-list/index.ts +8 -0
  160. package/registry/blocks/careers-featured-role-spotlight/CareersFeaturedRoleSpotlight.tsx +271 -0
  161. package/registry/blocks/careers-featured-role-spotlight/index.ts +8 -0
  162. package/registry/blocks/careers-no-open-roles-empty-state/CareersNoOpenRolesEmptyState.tsx +330 -0
  163. package/registry/blocks/careers-no-open-roles-empty-state/index.ts +8 -0
  164. package/registry/blocks/careers-open-roles-hairline-list/CareersOpenRolesHairlineList.tsx +320 -0
  165. package/registry/blocks/careers-open-roles-hairline-list/index.ts +6 -0
  166. package/registry/blocks/careers-open-vacancies-table/CareersOpenVacanciesTable.tsx +493 -0
  167. package/registry/blocks/careers-open-vacancies-table/index.ts +6 -0
  168. package/registry/blocks/careers-perks-benefits/CareersPerksBenefits.tsx +181 -0
  169. package/registry/blocks/careers-perks-benefits/index.ts +8 -0
  170. package/registry/blocks/careers-role-cards-grid/CareersRoleCardsGrid.tsx +405 -0
  171. package/registry/blocks/careers-role-cards-grid/index.ts +6 -0
  172. package/registry/blocks/careers-role-detail-page/CareersRoleDetailPage.tsx +541 -0
  173. package/registry/blocks/careers-role-detail-page/index.ts +10 -0
  174. package/registry/blocks/careers-role-detail-panel/CareersRoleDetailPanel.tsx +255 -0
  175. package/registry/blocks/careers-role-detail-panel/index.ts +6 -0
  176. package/registry/blocks/careers-roles-by-department/CareersRolesByDepartment.tsx +242 -0
  177. package/registry/blocks/careers-roles-by-department/index.ts +7 -0
  178. package/registry/blocks/careers-roles-list-accordion-expanded/CareersRolesListAccordionExpanded.tsx +558 -0
  179. package/registry/blocks/careers-roles-list-accordion-expanded/index.ts +9 -0
  180. package/registry/blocks/contact-us/contact-us.test.tsx +239 -0
  181. package/registry/blocks/contact-us/contact-us.tsx +989 -0
  182. package/registry/blocks/contact-us/index.ts +34 -0
  183. package/registry/blocks/contact-us-bento-grid/ContactUsBentoGrid.tsx +304 -0
  184. package/registry/blocks/contact-us-bento-grid/index.ts +5 -0
  185. package/registry/blocks/contact-us-bento-grid.test.tsx +102 -0
  186. package/registry/blocks/contact-us-book-a-call/ContactUsBookACall.tsx +403 -0
  187. package/registry/blocks/contact-us-book-a-call/index.ts +7 -0
  188. package/registry/blocks/contact-us-book-a-call.test.tsx +134 -0
  189. package/registry/blocks/contact-us-classic-centered/ContactUsClassicCentered.tsx +199 -0
  190. package/registry/blocks/contact-us-classic-centered/index.ts +6 -0
  191. package/registry/blocks/contact-us-dark-statement/ContactUsDarkStatement.tsx +218 -0
  192. package/registry/blocks/contact-us-dark-statement/index.ts +6 -0
  193. package/registry/blocks/contact-us-editorial-and-address-card/ContactUsEditorialAndAddressCard.tsx +212 -0
  194. package/registry/blocks/contact-us-editorial-and-address-card/index.ts +6 -0
  195. package/registry/blocks/contact-us-editorial-statement/ContactUsEditorialStatement.tsx +205 -0
  196. package/registry/blocks/contact-us-editorial-statement/index.ts +6 -0
  197. package/registry/blocks/contact-us-form-contact-methods/ContactUsFormContactMethods.tsx +272 -0
  198. package/registry/blocks/contact-us-form-contact-methods/index.ts +6 -0
  199. package/registry/blocks/contact-us-form-with-faq/ContactUsFormWithFaq.tsx +383 -0
  200. package/registry/blocks/contact-us-form-with-faq/index.ts +7 -0
  201. package/registry/blocks/contact-us-form-with-faq.test.tsx +161 -0
  202. package/registry/blocks/contact-us-forms.test.tsx +333 -0
  203. package/registry/blocks/contact-us-global-offices-table/ContactUsGlobalOfficesTable.tsx +301 -0
  204. package/registry/blocks/contact-us-global-offices-table/index.ts +5 -0
  205. package/registry/blocks/contact-us-global-offices-table.test.tsx +100 -0
  206. package/registry/blocks/contact-us-grand-headline-form/ContactUsGrandHeadlineForm.tsx +180 -0
  207. package/registry/blocks/contact-us-grand-headline-form/index.ts +6 -0
  208. package/registry/blocks/contact-us-hours-and-availability/ContactUsHoursAndAvailability.tsx +412 -0
  209. package/registry/blocks/contact-us-hours-and-availability/index.ts +5 -0
  210. package/registry/blocks/contact-us-hours-and-availability.test.tsx +123 -0
  211. package/registry/blocks/contact-us-hq-feature/ContactUsHqFeature.tsx +281 -0
  212. package/registry/blocks/contact-us-hq-feature/index.ts +5 -0
  213. package/registry/blocks/contact-us-hq-feature.test.tsx +102 -0
  214. package/registry/blocks/contact-us-map-split/ContactUsMapSplit.tsx +211 -0
  215. package/registry/blocks/contact-us-map-split/index.ts +5 -0
  216. package/registry/blocks/contact-us-map-split.test.tsx +70 -0
  217. package/registry/blocks/contact-us-named-owners/ContactUsNamedOwners.tsx +324 -0
  218. package/registry/blocks/contact-us-named-owners/index.ts +6 -0
  219. package/registry/blocks/contact-us-named-owners.test.tsx +116 -0
  220. package/registry/blocks/contact-us-newsletter-combo/ContactUsNewsletterCombo.tsx +363 -0
  221. package/registry/blocks/contact-us-newsletter-combo/index.ts +6 -0
  222. package/registry/blocks/contact-us-newsletter-combo.test.tsx +165 -0
  223. package/registry/blocks/contact-us-office-cards/ContactUsOfficeCards.tsx +235 -0
  224. package/registry/blocks/contact-us-office-cards/index.ts +5 -0
  225. package/registry/blocks/contact-us-office-cards.test.tsx +71 -0
  226. package/registry/blocks/contact-us-oversized-wordmark/ContactUsOversizedWordmark.tsx +222 -0
  227. package/registry/blocks/contact-us-oversized-wordmark/index.ts +6 -0
  228. package/registry/blocks/contact-us-photo-and-dark-panel/ContactUsPhotoAndDarkPanel.tsx +185 -0
  229. package/registry/blocks/contact-us-photo-and-dark-panel/index.ts +6 -0
  230. package/registry/blocks/contact-us-photo-forms.test.tsx +311 -0
  231. package/registry/blocks/contact-us-pitch-and-inquiry/ContactUsPitchAndInquiry.tsx +202 -0
  232. package/registry/blocks/contact-us-pitch-and-inquiry/index.ts +6 -0
  233. package/registry/blocks/contact-us-rtl.test.tsx +105 -0
  234. package/registry/blocks/contact-us-ruled-split-form/ContactUsRuledSplitForm.tsx +214 -0
  235. package/registry/blocks/contact-us-ruled-split-form/index.ts +6 -0
  236. package/registry/blocks/contact-us-social-rail/ContactUsSocialRail.tsx +270 -0
  237. package/registry/blocks/contact-us-social-rail/index.ts +7 -0
  238. package/registry/blocks/contact-us-social-rail.test.tsx +121 -0
  239. package/registry/blocks/contact-us-split-photo-dark/ContactUsSplitPhotoDark.tsx +185 -0
  240. package/registry/blocks/contact-us-split-photo-dark/index.ts +6 -0
  241. package/registry/blocks/contact-us-support-channels/ContactUsSupportChannels.tsx +267 -0
  242. package/registry/blocks/contact-us-support-channels/index.ts +5 -0
  243. package/registry/blocks/contact-us-support-channels.test.tsx +81 -0
  244. package/registry/blocks/data-table/DataTable.test.tsx +1 -34
  245. package/registry/blocks/data-table/DataTable.tsx +0 -139
  246. package/registry/blocks/data-table/index.ts +1 -8
  247. package/registry/blocks/error-state-access-denied-403/ErrorStateAccessDenied403.tsx +324 -0
  248. package/registry/blocks/error-state-access-denied-403/index.ts +10 -0
  249. package/registry/blocks/error-state-broken-trail-breadcrumb/ErrorStateBrokenTrailBreadcrumb.tsx +179 -0
  250. package/registry/blocks/error-state-broken-trail-breadcrumb/index.ts +8 -0
  251. package/registry/blocks/error-state-centered-minimal/ErrorStateCenteredMinimal.tsx +119 -0
  252. package/registry/blocks/error-state-centered-minimal/index.ts +7 -0
  253. package/registry/blocks/error-state-colour-field-scatter/ErrorStateColourFieldScatter.tsx +144 -0
  254. package/registry/blocks/error-state-colour-field-scatter/index.ts +7 -0
  255. package/registry/blocks/error-state-countdown-redirect/ErrorStateCountdownRedirect.tsx +272 -0
  256. package/registry/blocks/error-state-countdown-redirect/index.ts +7 -0
  257. package/registry/blocks/error-state-dark-spotlight/ErrorStateDarkSpotlight.tsx +156 -0
  258. package/registry/blocks/error-state-dark-spotlight/index.ts +7 -0
  259. package/registry/blocks/error-state-display-numeral-split/ErrorStateDisplayNumeralSplit.tsx +156 -0
  260. package/registry/blocks/error-state-display-numeral-split/index.ts +8 -0
  261. package/registry/blocks/error-state-editorial-photo-split/ErrorStateEditorialPhotoSplit.tsx +156 -0
  262. package/registry/blocks/error-state-editorial-photo-split/index.ts +8 -0
  263. package/registry/blocks/error-state-empty-search-results/ErrorStateEmptySearchResults.tsx +243 -0
  264. package/registry/blocks/error-state-empty-search-results/index.ts +6 -0
  265. package/registry/blocks/error-state-error-card-panel/ErrorStateErrorCardPanel.tsx +213 -0
  266. package/registry/blocks/error-state-error-card-panel/index.ts +7 -0
  267. package/registry/blocks/error-state-full-bleed-photo/ErrorStateFullBleedPhoto.tsx +130 -0
  268. package/registry/blocks/error-state-full-bleed-photo/index.ts +8 -0
  269. package/registry/blocks/error-state-ghost-watermark/ErrorStateGhostWatermark.tsx +115 -0
  270. package/registry/blocks/error-state-ghost-watermark/index.ts +7 -0
  271. package/registry/blocks/error-state-helpful-links-list/ErrorStateHelpfulLinksList.tsx +185 -0
  272. package/registry/blocks/error-state-helpful-links-list/index.ts +8 -0
  273. package/registry/blocks/error-state-illustrated-empty-state/ErrorStateIllustratedEmptyState.tsx +201 -0
  274. package/registry/blocks/error-state-illustrated-empty-state/index.ts +7 -0
  275. package/registry/blocks/error-state-layered-badge-centered/ErrorStateLayeredBadgeCentered.tsx +138 -0
  276. package/registry/blocks/error-state-layered-badge-centered/index.ts +7 -0
  277. package/registry/blocks/error-state-light-editorial/ErrorStateLightEditorial.tsx +126 -0
  278. package/registry/blocks/error-state-light-editorial/index.ts +7 -0
  279. package/registry/blocks/error-state-maintenance-mode/ErrorStateMaintenanceMode.tsx +255 -0
  280. package/registry/blocks/error-state-maintenance-mode/index.ts +6 -0
  281. package/registry/blocks/error-state-marquee-404-band/ErrorStateMarquee404Band.tsx +316 -0
  282. package/registry/blocks/error-state-marquee-404-band/index.ts +7 -0
  283. package/registry/blocks/error-state-offline-state/ErrorStateOfflineState.tsx +188 -0
  284. package/registry/blocks/error-state-offline-state/index.ts +7 -0
  285. package/registry/blocks/error-state-photo-collage-scatter/ErrorStatePhotoCollageScatter.tsx +224 -0
  286. package/registry/blocks/error-state-photo-collage-scatter/index.ts +8 -0
  287. package/registry/blocks/error-state-popular-pages-grid/ErrorStatePopularPagesGrid.tsx +195 -0
  288. package/registry/blocks/error-state-popular-pages-grid/index.ts +9 -0
  289. package/registry/blocks/error-state-recovery-bento/ErrorStateRecoveryBento.tsx +274 -0
  290. package/registry/blocks/error-state-recovery-bento/index.ts +7 -0
  291. package/registry/blocks/error-state-search-recovery/ErrorStateSearchRecovery.tsx +173 -0
  292. package/registry/blocks/error-state-search-recovery/index.ts +7 -0
  293. package/registry/blocks/error-state-server-error-500/ErrorStateServerError500.tsx +277 -0
  294. package/registry/blocks/error-state-server-error-500/index.ts +9 -0
  295. package/registry/blocks/error-state-sitemap-columns/ErrorStateSitemapColumns.tsx +192 -0
  296. package/registry/blocks/error-state-sitemap-columns/index.ts +9 -0
  297. package/registry/blocks/error-state-split-colour-panel/ErrorStateSplitColourPanel.tsx +156 -0
  298. package/registry/blocks/error-state-split-colour-panel/index.ts +7 -0
  299. package/registry/blocks/error-state-support-escalation-band/ErrorStateSupportEscalationBand.tsx +186 -0
  300. package/registry/blocks/error-state-support-escalation-band/index.ts +8 -0
  301. package/registry/blocks/error-state-terminal-console/ErrorStateTerminalConsole.tsx +208 -0
  302. package/registry/blocks/error-state-terminal-console/index.ts +8 -0
  303. package/registry/blocks/faq-accent-active-card/FaqAccentActiveCard.tsx +186 -0
  304. package/registry/blocks/faq-accent-active-card/index.ts +1 -0
  305. package/registry/blocks/faq-category-chip-grid/FaqCategoryChipGrid.tsx +425 -0
  306. package/registry/blocks/faq-category-chip-grid/index.ts +8 -0
  307. package/registry/blocks/faq-category-columns/FaqCategoryColumns.tsx +248 -0
  308. package/registry/blocks/faq-category-columns/index.ts +8 -0
  309. package/registry/blocks/faq-chat-thread/FaqChatThread.tsx +273 -0
  310. package/registry/blocks/faq-chat-thread/index.ts +7 -0
  311. package/registry/blocks/faq-classic-centered/FaqClassicCentered.tsx +190 -0
  312. package/registry/blocks/faq-classic-centered/index.ts +7 -0
  313. package/registry/blocks/faq-contact-cta-card/FaqContactCtaCard.tsx +229 -0
  314. package/registry/blocks/faq-contact-cta-card/index.ts +9 -0
  315. package/registry/blocks/faq-dark-panel/FaqDarkPanel.tsx +186 -0
  316. package/registry/blocks/faq-dark-panel/index.ts +1 -0
  317. package/registry/blocks/faq-featured-question/FaqFeaturedQuestion.tsx +221 -0
  318. package/registry/blocks/faq-featured-question/index.ts +1 -0
  319. package/registry/blocks/faq-grouped-sections/FaqGroupedSections.tsx +266 -0
  320. package/registry/blocks/faq-grouped-sections/index.ts +8 -0
  321. package/registry/blocks/faq-help-hero-popular/FaqHelpHeroPopular.tsx +212 -0
  322. package/registry/blocks/faq-help-hero-popular/index.ts +7 -0
  323. package/registry/blocks/faq-masonry-cards/FaqMasonryCards.tsx +268 -0
  324. package/registry/blocks/faq-masonry-cards/index.ts +7 -0
  325. package/registry/blocks/faq-media-split/FaqMediaSplit.tsx +197 -0
  326. package/registry/blocks/faq-media-split/index.ts +8 -0
  327. package/registry/blocks/faq-mono-index/FaqMonoIndex.tsx +247 -0
  328. package/registry/blocks/faq-mono-index/index.ts +1 -0
  329. package/registry/blocks/faq-newsletter-close/FaqNewsletterClose.tsx +314 -0
  330. package/registry/blocks/faq-newsletter-close/index.ts +8 -0
  331. package/registry/blocks/faq-numbered-editorial/FaqNumberedEditorial.tsx +190 -0
  332. package/registry/blocks/faq-numbered-editorial/index.ts +1 -0
  333. package/registry/blocks/faq-search-categories/FaqSearchCategories.tsx +312 -0
  334. package/registry/blocks/faq-search-categories/index.ts +8 -0
  335. package/registry/blocks/faq-sidebar-nav/FaqSidebarNav.tsx +390 -0
  336. package/registry/blocks/faq-sidebar-nav/index.ts +8 -0
  337. package/registry/blocks/faq-soft-filled-rows/FaqSoftFilledRows.tsx +209 -0
  338. package/registry/blocks/faq-soft-filled-rows/index.ts +1 -0
  339. package/registry/blocks/faq-split-sticky/FaqSplitSticky.tsx +205 -0
  340. package/registry/blocks/faq-split-sticky/index.ts +7 -0
  341. package/registry/blocks/faq-support-channels/FaqSupportChannels.tsx +266 -0
  342. package/registry/blocks/faq-support-channels/index.ts +8 -0
  343. package/registry/blocks/faq-support-stats/FaqSupportStats.tsx +242 -0
  344. package/registry/blocks/faq-support-stats/index.ts +8 -0
  345. package/registry/blocks/faq-table-compact/FaqTableCompact.tsx +220 -0
  346. package/registry/blocks/faq-table-compact/index.ts +1 -0
  347. package/registry/blocks/faq-tabs-by-topic/FaqTabsByTopic.tsx +347 -0
  348. package/registry/blocks/faq-tabs-by-topic/index.ts +8 -0
  349. package/registry/blocks/faq-topic-tiles/FaqTopicTiles.tsx +254 -0
  350. package/registry/blocks/faq-topic-tiles/index.ts +7 -0
  351. package/registry/blocks/faq-two-column-grid/FaqTwoColumnGrid.tsx +256 -0
  352. package/registry/blocks/faq-two-column-grid/index.ts +7 -0
  353. package/registry/blocks/faq-uppercase-dense/FaqUppercaseDense.tsx +213 -0
  354. package/registry/blocks/faq-uppercase-dense/index.ts +1 -0
  355. package/registry/blocks/features/features.tsx +164 -0
  356. package/registry/blocks/features/index.ts +12 -0
  357. package/registry/blocks/features-accordion-photo/FeaturesAccordionPhoto.tsx +149 -0
  358. package/registry/blocks/features-accordion-photo/index.ts +7 -0
  359. package/registry/blocks/features-colour-block-cards/FeaturesColourBlockCards.tsx +118 -0
  360. package/registry/blocks/features-colour-block-cards/index.ts +8 -0
  361. package/registry/blocks/features-compact-icon-index/FeaturesCompactIconIndex.tsx +136 -0
  362. package/registry/blocks/features-compact-icon-index/index.ts +7 -0
  363. package/registry/blocks/features-compare-panels-chat-answer/FeaturesComparePanelsChatAnswer.tsx +346 -0
  364. package/registry/blocks/features-compare-panels-chat-answer/index.ts +8 -0
  365. package/registry/blocks/features-editorial-photo-split/FeaturesEditorialPhotoSplit.tsx +118 -0
  366. package/registry/blocks/features-editorial-photo-split/index.ts +7 -0
  367. package/registry/blocks/features-expanding-step-cards/FeaturesExpandingStepCards.tsx +300 -0
  368. package/registry/blocks/features-expanding-step-cards/index.ts +7 -0
  369. package/registry/blocks/features-feature-checklist-columns/FeaturesFeatureChecklistColumns.tsx +158 -0
  370. package/registry/blocks/features-feature-checklist-columns/index.ts +7 -0
  371. package/registry/blocks/features-feature-list-thumbnails/FeaturesFeatureListThumbnails.tsx +137 -0
  372. package/registry/blocks/features-feature-list-thumbnails/index.ts +7 -0
  373. package/registry/blocks/features-full-bleed-photo-banner/FeaturesFullBleedPhotoBanner.tsx +116 -0
  374. package/registry/blocks/features-full-bleed-photo-banner/index.ts +7 -0
  375. package/registry/blocks/features-icon-card-grid/FeaturesIconCardGrid.tsx +120 -0
  376. package/registry/blocks/features-icon-card-grid/index.ts +7 -0
  377. package/registry/blocks/features-icon-titled-preview-rail/FeaturesIconTitledPreviewRail.tsx +321 -0
  378. package/registry/blocks/features-icon-titled-preview-rail/index.ts +7 -0
  379. package/registry/blocks/features-icons-numbers.test.tsx +107 -0
  380. package/registry/blocks/features-interactive.test.tsx +175 -0
  381. package/registry/blocks/features-media-rail/FeaturesMediaRail.tsx +119 -0
  382. package/registry/blocks/features-media-rail/index.ts +7 -0
  383. package/registry/blocks/features-notched-photo-columns/FeaturesNotchedPhotoColumns.tsx +209 -0
  384. package/registry/blocks/features-notched-photo-columns/index.ts +7 -0
  385. package/registry/blocks/features-numbered-feature-rows/FeaturesNumberedFeatureRows.tsx +107 -0
  386. package/registry/blocks/features-numbered-feature-rows/index.ts +7 -0
  387. package/registry/blocks/features-numbered-steps-floating-cards/FeaturesNumberedStepsFloatingCards.tsx +324 -0
  388. package/registry/blocks/features-numbered-steps-floating-cards/index.ts +8 -0
  389. package/registry/blocks/features-perforated-photo-strip/FeaturesPerforatedPhotoStrip.tsx +218 -0
  390. package/registry/blocks/features-perforated-photo-strip/index.ts +7 -0
  391. package/registry/blocks/features-photo-bento/FeaturesPhotoBento.tsx +160 -0
  392. package/registry/blocks/features-photo-bento/index.ts +8 -0
  393. package/registry/blocks/features-photo-carousel/FeaturesPhotoCarousel.tsx +249 -0
  394. package/registry/blocks/features-photo-carousel/index.ts +7 -0
  395. package/registry/blocks/features-photo-collage/FeaturesPhotoCollage.tsx +143 -0
  396. package/registry/blocks/features-photo-collage/index.ts +7 -0
  397. package/registry/blocks/features-photo-feature-chips/FeaturesPhotoFeatureChips.tsx +125 -0
  398. package/registry/blocks/features-photo-feature-chips/index.ts +7 -0
  399. package/registry/blocks/features-photo-led.test.tsx +177 -0
  400. package/registry/blocks/features-photo-tabs-panel/FeaturesPhotoTabsPanel.tsx +197 -0
  401. package/registry/blocks/features-photo-tabs-panel/index.ts +7 -0
  402. package/registry/blocks/features-portrait-photo-cards-link-row/FeaturesPortraitPhotoCardsLinkRow.tsx +202 -0
  403. package/registry/blocks/features-portrait-photo-cards-link-row/index.ts +7 -0
  404. package/registry/blocks/features-product-in-use.test.tsx +188 -0
  405. package/registry/blocks/features-showcase-card-pair/FeaturesShowcaseCardPair.tsx +161 -0
  406. package/registry/blocks/features-showcase-card-pair/index.ts +7 -0
  407. package/registry/blocks/features-solid-colour-cards/FeaturesSolidColourCards.tsx +264 -0
  408. package/registry/blocks/features-solid-colour-cards/index.ts +7 -0
  409. package/registry/blocks/features-split-photo-icon-list/FeaturesSplitPhotoIconList.tsx +117 -0
  410. package/registry/blocks/features-split-photo-icon-list/index.ts +7 -0
  411. package/registry/blocks/features-stat-feature-band/FeaturesStatFeatureBand.tsx +114 -0
  412. package/registry/blocks/features-stat-feature-band/index.ts +7 -0
  413. package/registry/blocks/features-tinted-product-bento/FeaturesTintedProductBento.tsx +252 -0
  414. package/registry/blocks/features-tinted-product-bento/index.ts +7 -0
  415. package/registry/blocks/footer/footer.test.tsx +253 -0
  416. package/registry/blocks/footer/footer.tsx +554 -0
  417. package/registry/blocks/footer/index.ts +31 -0
  418. package/registry/blocks/footer-accordion-sitemap/FooterAccordionSitemap.tsx +260 -0
  419. package/registry/blocks/footer-accordion-sitemap/index.ts +7 -0
  420. package/registry/blocks/footer-bars.test.tsx +121 -0
  421. package/registry/blocks/footer-bento-tile/FooterBentoTile.tsx +331 -0
  422. package/registry/blocks/footer-bento-tile/index.ts +6 -0
  423. package/registry/blocks/footer-big-question-cta/FooterBigQuestionCta.tsx +250 -0
  424. package/registry/blocks/footer-big-question-cta/index.ts +6 -0
  425. package/registry/blocks/footer-big-type-link-stack/FooterBigTypeLinkStack.tsx +275 -0
  426. package/registry/blocks/footer-big-type-link-stack/index.ts +6 -0
  427. package/registry/blocks/footer-brand-panel-split/FooterBrandPanelSplit.tsx +163 -0
  428. package/registry/blocks/footer-brand-panel-split/index.ts +6 -0
  429. package/registry/blocks/footer-brand.test.tsx +608 -0
  430. package/registry/blocks/footer-careers-culture/FooterCareersCulture.tsx +297 -0
  431. package/registry/blocks/footer-careers-culture/index.ts +7 -0
  432. package/registry/blocks/footer-centered-brand-minimal/FooterCenteredBrandMinimal.tsx +121 -0
  433. package/registry/blocks/footer-centered-brand-minimal/index.ts +6 -0
  434. package/registry/blocks/footer-commerce.test.tsx +208 -0
  435. package/registry/blocks/footer-community-events/FooterCommunityEvents.tsx +263 -0
  436. package/registry/blocks/footer-community-events/index.ts +8 -0
  437. package/registry/blocks/footer-community.test.tsx +309 -0
  438. package/registry/blocks/footer-contact-first/FooterContactFirst.tsx +242 -0
  439. package/registry/blocks/footer-contact-first/index.ts +7 -0
  440. package/registry/blocks/footer-contact.test.tsx +285 -0
  441. package/registry/blocks/footer-controls.test.tsx +78 -0
  442. package/registry/blocks/footer-cta-band-columns/FooterCtaBandColumns.tsx +225 -0
  443. package/registry/blocks/footer-cta-band-columns/index.ts +6 -0
  444. package/registry/blocks/footer-cta.test.tsx +445 -0
  445. package/registry/blocks/footer-dashboard-slim-bar/FooterDashboardSlimBar.tsx +148 -0
  446. package/registry/blocks/footer-dashboard-slim-bar/index.ts +6 -0
  447. package/registry/blocks/footer-docs-page/FooterDocsPage.tsx +261 -0
  448. package/registry/blocks/footer-docs-page/index.ts +9 -0
  449. package/registry/blocks/footer-ecommerce-mega/FooterEcommerceMega.tsx +289 -0
  450. package/registry/blocks/footer-ecommerce-mega/index.ts +6 -0
  451. package/registry/blocks/footer-floating-demo-card/FooterFloatingDemoCard.tsx +261 -0
  452. package/registry/blocks/footer-floating-demo-card/index.ts +6 -0
  453. package/registry/blocks/footer-four-column-directory/FooterFourColumnDirectory.tsx +104 -0
  454. package/registry/blocks/footer-four-column-directory/index.ts +6 -0
  455. package/registry/blocks/footer-giant-wordmark/FooterGiantWordmark.tsx +252 -0
  456. package/registry/blocks/footer-giant-wordmark/index.ts +6 -0
  457. package/registry/blocks/footer-image-backed-brand/FooterImageBackedBrand.tsx +251 -0
  458. package/registry/blocks/footer-image-backed-brand/index.ts +6 -0
  459. package/registry/blocks/footer-index-numbered-columns/FooterIndexNumberedColumns.tsx +236 -0
  460. package/registry/blocks/footer-index-numbered-columns/index.ts +7 -0
  461. package/registry/blocks/footer-inline-preferences/FooterInlinePreferences.tsx +164 -0
  462. package/registry/blocks/footer-inline-preferences/index.ts +7 -0
  463. package/registry/blocks/footer-legal-first-slim/FooterLegalFirstSlim.tsx +174 -0
  464. package/registry/blocks/footer-legal-first-slim/index.ts +6 -0
  465. package/registry/blocks/footer-legal.test.tsx +180 -0
  466. package/registry/blocks/footer-local-business/FooterLocalBusiness.tsx +258 -0
  467. package/registry/blocks/footer-local-business/index.ts +7 -0
  468. package/registry/blocks/footer-marquee-strip/FooterMarqueeStrip.tsx +244 -0
  469. package/registry/blocks/footer-marquee-strip/index.ts +6 -0
  470. package/registry/blocks/footer-multi-region/FooterMultiRegion.tsx +310 -0
  471. package/registry/blocks/footer-multi-region/index.ts +7 -0
  472. package/registry/blocks/footer-newsletter-split/FooterNewsletterSplit.tsx +255 -0
  473. package/registry/blocks/footer-newsletter-split/index.ts +6 -0
  474. package/registry/blocks/footer-product-family-switcher/FooterProductFamilySwitcher.tsx +241 -0
  475. package/registry/blocks/footer-product-family-switcher/index.ts +7 -0
  476. package/registry/blocks/footer-service-promise-band/FooterServicePromiseBand.tsx +237 -0
  477. package/registry/blocks/footer-service-promise-band/index.ts +7 -0
  478. package/registry/blocks/footer-single-line-bar/FooterSingleLineBar.tsx +107 -0
  479. package/registry/blocks/footer-single-line-bar/index.ts +6 -0
  480. package/registry/blocks/footer-sitemap.test.tsx +390 -0
  481. package/registry/blocks/footer-split-hairline-micro/FooterSplitHairlineMicro.tsx +100 -0
  482. package/registry/blocks/footer-split-hairline-micro/index.ts +6 -0
  483. package/registry/blocks/footer-support-contact/FooterSupportContact.tsx +204 -0
  484. package/registry/blocks/footer-support-contact/index.ts +7 -0
  485. package/registry/blocks/footer-trust-compliance/FooterTrustCompliance.tsx +234 -0
  486. package/registry/blocks/footer-trust-compliance/index.ts +7 -0
  487. package/registry/blocks/footer-two-row-compact/FooterTwoRowCompact.tsx +124 -0
  488. package/registry/blocks/footer-two-row-compact/index.ts +6 -0
  489. package/registry/blocks/footer-two-tier-doormat/FooterTwoTierDoormat.tsx +232 -0
  490. package/registry/blocks/footer-two-tier-doormat/index.ts +8 -0
  491. package/registry/blocks/footer-utility.test.tsx +406 -0
  492. package/registry/blocks/footer-wide-sitemap-mega/FooterWideSitemapMega.tsx +227 -0
  493. package/registry/blocks/footer-wide-sitemap-mega/index.ts +6 -0
  494. package/registry/blocks/gallery-album-cards/GalleryAlbumCards.tsx +243 -0
  495. package/registry/blocks/gallery-album-cards/index.ts +8 -0
  496. package/registry/blocks/gallery-before-after-compare/GalleryBeforeAfterCompare.tsx +269 -0
  497. package/registry/blocks/gallery-before-after-compare/index.ts +7 -0
  498. package/registry/blocks/gallery-contact-sheet-wall/GalleryContactSheetWall.tsx +299 -0
  499. package/registry/blocks/gallery-contact-sheet-wall/index.ts +9 -0
  500. package/registry/blocks/gallery-culture-photo-grid/GalleryCulturePhotoGrid.tsx +203 -0
  501. package/registry/blocks/gallery-culture-photo-grid/index.ts +8 -0
  502. package/registry/blocks/gallery-dark-cinema-wall/GalleryDarkCinemaWall.tsx +180 -0
  503. package/registry/blocks/gallery-dark-cinema-wall/index.ts +7 -0
  504. package/registry/blocks/gallery-editorial-split/GalleryEditorialSplit.tsx +188 -0
  505. package/registry/blocks/gallery-editorial-split/index.ts +8 -0
  506. package/registry/blocks/gallery-featured-thumb-rail/GalleryFeaturedThumbRail.tsx +397 -0
  507. package/registry/blocks/gallery-featured-thumb-rail/index.ts +8 -0
  508. package/registry/blocks/gallery-filmstrip-carousel/GalleryFilmstripCarousel.tsx +384 -0
  509. package/registry/blocks/gallery-filmstrip-carousel/index.ts +8 -0
  510. package/registry/blocks/gallery-filter-tabs-grid/GalleryFilterTabsGrid.tsx +403 -0
  511. package/registry/blocks/gallery-filter-tabs-grid/index.ts +9 -0
  512. package/registry/blocks/gallery-full-bleed-slider/GalleryFullBleedSlider.tsx +309 -0
  513. package/registry/blocks/gallery-full-bleed-slider/index.ts +8 -0
  514. package/registry/blocks/gallery-horizontal-scroll-rail/GalleryHorizontalScrollRail.tsx +300 -0
  515. package/registry/blocks/gallery-horizontal-scroll-rail/index.ts +8 -0
  516. package/registry/blocks/gallery-hover-caption-cards/GalleryHoverCaptionCards.tsx +244 -0
  517. package/registry/blocks/gallery-hover-caption-cards/index.ts +8 -0
  518. package/registry/blocks/gallery-hover-index-list/GalleryHoverIndexList.tsx +253 -0
  519. package/registry/blocks/gallery-hover-index-list/index.ts +9 -0
  520. package/registry/blocks/gallery-lightbox-viewer/GalleryLightboxViewer.tsx +329 -0
  521. package/registry/blocks/gallery-lightbox-viewer/index.ts +7 -0
  522. package/registry/blocks/gallery-masonry-gallery/GalleryMasonryGallery.tsx +251 -0
  523. package/registry/blocks/gallery-masonry-gallery/index.ts +7 -0
  524. package/registry/blocks/gallery-mosaic-statement-tile/GalleryMosaicStatementTile.tsx +159 -0
  525. package/registry/blocks/gallery-mosaic-statement-tile/index.ts +8 -0
  526. package/registry/blocks/gallery-photo-bento/GalleryPhotoBento.tsx +166 -0
  527. package/registry/blocks/gallery-photo-bento/index.ts +8 -0
  528. package/registry/blocks/gallery-photo-spotlight/GalleryPhotoSpotlight.tsx +305 -0
  529. package/registry/blocks/gallery-photo-spotlight/index.ts +9 -0
  530. package/registry/blocks/gallery-scattered-collage/GalleryScatteredCollage.tsx +286 -0
  531. package/registry/blocks/gallery-scattered-collage/index.ts +9 -0
  532. package/registry/blocks/gallery-social-feed-strip/GallerySocialFeedStrip.tsx +288 -0
  533. package/registry/blocks/gallery-social-feed-strip/index.ts +8 -0
  534. package/registry/blocks/gallery-timeline-gallery/GalleryTimelineGallery.tsx +243 -0
  535. package/registry/blocks/gallery-timeline-gallery/index.ts +8 -0
  536. package/registry/blocks/gallery-video-gallery/GalleryVideoGallery.tsx +362 -0
  537. package/registry/blocks/gallery-video-gallery/index.ts +8 -0
  538. package/registry/blocks/hero-annotated-object/HeroAnnotatedObject.tsx +310 -0
  539. package/registry/blocks/hero-annotated-object/index.ts +10 -0
  540. package/registry/blocks/hero-arc-gallery/HeroArcGallery.tsx +244 -0
  541. package/registry/blocks/hero-arc-gallery/index.ts +9 -0
  542. package/registry/blocks/hero-bento-split/HeroBentoSplit.tsx +266 -0
  543. package/registry/blocks/hero-bento-split/index.ts +9 -0
  544. package/registry/blocks/hero-brand-color-block/HeroBrandColorBlock.tsx +259 -0
  545. package/registry/blocks/hero-brand-color-block/index.ts +8 -0
  546. package/registry/blocks/hero-colour-stage/HeroColourStage.tsx +292 -0
  547. package/registry/blocks/hero-colour-stage/index.ts +8 -0
  548. package/registry/blocks/hero-component-pattern/HeroComponentPattern.tsx +248 -0
  549. package/registry/blocks/hero-component-pattern/index.ts +9 -0
  550. package/registry/blocks/hero-curved-media-rail/HeroCurvedMediaRail.tsx +272 -0
  551. package/registry/blocks/hero-curved-media-rail/index.ts +8 -0
  552. package/registry/blocks/hero-duo-card/HeroDuoCard.tsx +210 -0
  553. package/registry/blocks/hero-duo-card/index.ts +8 -0
  554. package/registry/blocks/hero-editorial-arch/HeroEditorialArch.tsx +226 -0
  555. package/registry/blocks/hero-editorial-arch/index.ts +10 -0
  556. package/registry/blocks/hero-editorial-triptych/HeroEditorialTriptych.tsx +252 -0
  557. package/registry/blocks/hero-editorial-triptych/index.ts +9 -0
  558. package/registry/blocks/hero-floating-integrations/HeroFloatingIntegrations.tsx +454 -0
  559. package/registry/blocks/hero-floating-integrations/index.ts +11 -0
  560. package/registry/blocks/hero-framed-full-bleed/HeroFramedFullBleed.tsx +226 -0
  561. package/registry/blocks/hero-framed-full-bleed/index.ts +9 -0
  562. package/registry/blocks/hero-framed-studio-card/HeroFramedStudioCard.tsx +264 -0
  563. package/registry/blocks/hero-framed-studio-card/index.ts +8 -0
  564. package/registry/blocks/hero-illustration-split/HeroIllustrationSplit.tsx +200 -0
  565. package/registry/blocks/hero-illustration-split/index.ts +8 -0
  566. package/registry/blocks/hero-inline-image-headline/HeroInlineImageHeadline.tsx +305 -0
  567. package/registry/blocks/hero-inline-image-headline/index.ts +8 -0
  568. package/registry/blocks/hero-masked-type-reveal/HeroMaskedTypeReveal.tsx +323 -0
  569. package/registry/blocks/hero-masked-type-reveal/index.ts +9 -0
  570. package/registry/blocks/hero-motion.test.tsx +185 -0
  571. package/registry/blocks/hero-orbit-track/HeroOrbitTrack.tsx +238 -0
  572. package/registry/blocks/hero-orbit-track/index.ts +8 -0
  573. package/registry/blocks/hero-photo-constellation/HeroPhotoConstellation.tsx +228 -0
  574. package/registry/blocks/hero-photo-constellation/index.ts +8 -0
  575. package/registry/blocks/hero-scramble-decode/HeroScrambleDecode.tsx +381 -0
  576. package/registry/blocks/hero-scramble-decode/index.ts +7 -0
  577. package/registry/blocks/hero-shape-grid/HeroShapeGrid.tsx +279 -0
  578. package/registry/blocks/hero-shape-grid/index.ts +8 -0
  579. package/registry/blocks/hero-split-band-headline/HeroSplitBandHeadline.tsx +242 -0
  580. package/registry/blocks/hero-split-band-headline/index.ts +8 -0
  581. package/registry/blocks/hero-split-flap-counters/HeroSplitFlapCounters.tsx +323 -0
  582. package/registry/blocks/hero-split-flap-counters/index.ts +8 -0
  583. package/registry/blocks/hero-studio-mosaic/HeroStudioMosaic.tsx +332 -0
  584. package/registry/blocks/hero-studio-mosaic/index.ts +9 -0
  585. package/registry/blocks/hero-textured-dark/HeroTexturedDark.tsx +378 -0
  586. package/registry/blocks/hero-textured-dark/index.ts +10 -0
  587. package/registry/blocks/hero-twin-panels/HeroTwinPanels.tsx +231 -0
  588. package/registry/blocks/hero-twin-panels/index.ts +9 -0
  589. package/registry/blocks/hero-velocity-marquee/HeroVelocityMarquee.tsx +392 -0
  590. package/registry/blocks/hero-velocity-marquee/index.ts +8 -0
  591. package/registry/blocks/hero-video-in-type/HeroVideoInType.tsx +374 -0
  592. package/registry/blocks/hero-video-in-type/index.ts +9 -0
  593. package/registry/blocks/hero-video-spotlight/HeroVideoSpotlight.tsx +292 -0
  594. package/registry/blocks/hero-video-spotlight/index.ts +9 -0
  595. package/registry/blocks/hero-wave-band/HeroWaveBand.tsx +309 -0
  596. package/registry/blocks/hero-wave-band/index.ts +8 -0
  597. package/registry/blocks/how-it-works/how-it-works.tsx +330 -0
  598. package/registry/blocks/how-it-works/index.ts +28 -0
  599. package/registry/blocks/how-it-works-accordion-steps/HowItWorksAccordionSteps.tsx +213 -0
  600. package/registry/blocks/how-it-works-accordion-steps/index.ts +7 -0
  601. package/registry/blocks/how-it-works-center-spine-timeline/HowItWorksCenterSpineTimeline.tsx +200 -0
  602. package/registry/blocks/how-it-works-center-spine-timeline/index.ts +7 -0
  603. package/registry/blocks/how-it-works-column-panels/HowItWorksColumnPanels.tsx +299 -0
  604. package/registry/blocks/how-it-works-column-panels/index.ts +6 -0
  605. package/registry/blocks/how-it-works-contained-timeline/HowItWorksContainedTimeline.tsx +223 -0
  606. package/registry/blocks/how-it-works-contained-timeline/index.ts +8 -0
  607. package/registry/blocks/how-it-works-diagonal-photo-collage/HowItWorksDiagonalPhotoCollage.tsx +170 -0
  608. package/registry/blocks/how-it-works-diagonal-photo-collage/index.ts +7 -0
  609. package/registry/blocks/how-it-works-fanned-dissolve-cards/HowItWorksFannedDissolveCards.tsx +258 -0
  610. package/registry/blocks/how-it-works-fanned-dissolve-cards/index.ts +8 -0
  611. package/registry/blocks/how-it-works-full-bleed-step-panel/HowItWorksFullBleedStepPanel.tsx +319 -0
  612. package/registry/blocks/how-it-works-full-bleed-step-panel/index.ts +7 -0
  613. package/registry/blocks/how-it-works-grids.test.tsx +292 -0
  614. package/registry/blocks/how-it-works-interactive.test.tsx +262 -0
  615. package/registry/blocks/how-it-works-numbered-editorial-rows/HowItWorksNumberedEditorialRows.tsx +177 -0
  616. package/registry/blocks/how-it-works-numbered-editorial-rows/index.ts +7 -0
  617. package/registry/blocks/how-it-works-numbered-instruction-panels/HowItWorksNumberedInstructionPanels.tsx +226 -0
  618. package/registry/blocks/how-it-works-numbered-instruction-panels/index.ts +6 -0
  619. package/registry/blocks/how-it-works-numbered-photo-steps/HowItWorksNumberedPhotoSteps.tsx +150 -0
  620. package/registry/blocks/how-it-works-numbered-photo-steps/index.ts +7 -0
  621. package/registry/blocks/how-it-works-orbital-process/HowItWorksOrbitalProcess.tsx +317 -0
  622. package/registry/blocks/how-it-works-orbital-process/index.ts +7 -0
  623. package/registry/blocks/how-it-works-overlay-numeral-cards/HowItWorksOverlayNumeralCards.tsx +145 -0
  624. package/registry/blocks/how-it-works-overlay-numeral-cards/index.ts +7 -0
  625. package/registry/blocks/how-it-works-phase-line/HowItWorksPhaseLine.tsx +147 -0
  626. package/registry/blocks/how-it-works-phase-line/index.ts +8 -0
  627. package/registry/blocks/how-it-works-photo-bento-steps/HowItWorksPhotoBentoSteps.tsx +178 -0
  628. package/registry/blocks/how-it-works-photo-bento-steps/index.ts +7 -0
  629. package/registry/blocks/how-it-works-photo-rail-progress/HowItWorksPhotoRailProgress.tsx +231 -0
  630. package/registry/blocks/how-it-works-photo-rail-progress/index.ts +7 -0
  631. package/registry/blocks/how-it-works-pill-timeline/HowItWorksPillTimeline.tsx +181 -0
  632. package/registry/blocks/how-it-works-pill-timeline/index.ts +8 -0
  633. package/registry/blocks/how-it-works-rounded-cards-device-crop/HowItWorksRoundedCardsDeviceCrop.tsx +286 -0
  634. package/registry/blocks/how-it-works-rounded-cards-device-crop/index.ts +6 -0
  635. package/registry/blocks/how-it-works-six-card-grid/HowItWorksSixCardGrid.tsx +385 -0
  636. package/registry/blocks/how-it-works-six-card-grid/index.ts +6 -0
  637. package/registry/blocks/how-it-works-split-feature-band/HowItWorksSplitFeatureBand.tsx +316 -0
  638. package/registry/blocks/how-it-works-split-feature-band/index.ts +6 -0
  639. package/registry/blocks/how-it-works-split-photo-step-list/HowItWorksSplitPhotoStepList.tsx +179 -0
  640. package/registry/blocks/how-it-works-split-photo-step-list/index.ts +7 -0
  641. package/registry/blocks/how-it-works-stacked-media-text/HowItWorksStackedMediaText.tsx +310 -0
  642. package/registry/blocks/how-it-works-stacked-media-text/index.ts +8 -0
  643. package/registry/blocks/how-it-works-step-tabs-photo-panel/HowItWorksStepTabsPhotoPanel.tsx +245 -0
  644. package/registry/blocks/how-it-works-step-tabs-photo-panel/index.ts +7 -0
  645. package/registry/blocks/how-it-works-tall-visual-rail/HowItWorksTallVisualRail.tsx +349 -0
  646. package/registry/blocks/how-it-works-tall-visual-rail/index.ts +7 -0
  647. package/registry/blocks/how-it-works-timelines.test.tsx +265 -0
  648. package/registry/blocks/how-it-works-vertical-timeline-card/HowItWorksVerticalTimelineCard.tsx +169 -0
  649. package/registry/blocks/how-it-works-vertical-timeline-card/index.ts +8 -0
  650. package/registry/blocks/how-it-works-visual-steps.test.tsx +368 -0
  651. package/registry/blocks/logo-cloud-bento-logo-wall/LogoCloudBentoLogoWall.tsx +159 -0
  652. package/registry/blocks/logo-cloud-bento-logo-wall/index.ts +7 -0
  653. package/registry/blocks/logo-cloud-bordered-cell-grid/LogoCloudBorderedCellGrid.tsx +132 -0
  654. package/registry/blocks/logo-cloud-bordered-cell-grid/index.ts +7 -0
  655. package/registry/blocks/logo-cloud-centered-caption-row/LogoCloudCenteredCaptionRow.tsx +141 -0
  656. package/registry/blocks/logo-cloud-centered-caption-row/index.ts +7 -0
  657. package/registry/blocks/logo-cloud-contained-card/LogoCloudContainedCard.tsx +106 -0
  658. package/registry/blocks/logo-cloud-contained-card/index.ts +7 -0
  659. package/registry/blocks/logo-cloud-dark-logo-wall/LogoCloudDarkLogoWall.tsx +123 -0
  660. package/registry/blocks/logo-cloud-dark-logo-wall/index.ts +7 -0
  661. package/registry/blocks/logo-cloud-divider-rule-row/LogoCloudDividerRuleRow.tsx +156 -0
  662. package/registry/blocks/logo-cloud-divider-rule-row/index.ts +7 -0
  663. package/registry/blocks/logo-cloud-editorial-eyebrow-split/LogoCloudEditorialEyebrowSplit.tsx +121 -0
  664. package/registry/blocks/logo-cloud-editorial-eyebrow-split/index.ts +7 -0
  665. package/registry/blocks/logo-cloud-enterprise-wall/LogoCloudEnterpriseWall.tsx +114 -0
  666. package/registry/blocks/logo-cloud-enterprise-wall/index.ts +7 -0
  667. package/registry/blocks/logo-cloud-flanked-heading/LogoCloudFlankedHeading.tsx +162 -0
  668. package/registry/blocks/logo-cloud-flanked-heading/index.ts +8 -0
  669. package/registry/blocks/logo-cloud-grid-closing-cta/LogoCloudGridClosingCta.tsx +173 -0
  670. package/registry/blocks/logo-cloud-grid-closing-cta/index.ts +8 -0
  671. package/registry/blocks/logo-cloud-heading-grid/LogoCloudHeadingGrid.tsx +124 -0
  672. package/registry/blocks/logo-cloud-heading-grid/index.ts +7 -0
  673. package/registry/blocks/logo-cloud-heading-left-grid-right/LogoCloudHeadingLeftGridRight.tsx +172 -0
  674. package/registry/blocks/logo-cloud-heading-left-grid-right/index.ts +8 -0
  675. package/registry/blocks/logo-cloud-logo-metric-tiles/LogoCloudLogoMetricTiles.tsx +159 -0
  676. package/registry/blocks/logo-cloud-logo-metric-tiles/index.ts +8 -0
  677. package/registry/blocks/logo-cloud-logo-quote-cards/LogoCloudLogoQuoteCards.tsx +162 -0
  678. package/registry/blocks/logo-cloud-logo-quote-cards/index.ts +8 -0
  679. package/registry/blocks/logo-cloud-logo-testimonial-strip/LogoCloudLogoTestimonialStrip.tsx +159 -0
  680. package/registry/blocks/logo-cloud-logo-testimonial-strip/index.ts +8 -0
  681. package/registry/blocks/logo-cloud-named-integration-cards/LogoCloudNamedIntegrationCards.tsx +186 -0
  682. package/registry/blocks/logo-cloud-named-integration-cards/index.ts +9 -0
  683. package/registry/blocks/logo-cloud-pyramid-row-stack/LogoCloudPyramidRowStack.tsx +156 -0
  684. package/registry/blocks/logo-cloud-pyramid-row-stack/index.ts +7 -0
  685. package/registry/blocks/logo-cloud-quote-panel-grid/LogoCloudQuotePanelGrid.tsx +177 -0
  686. package/registry/blocks/logo-cloud-quote-panel-grid/index.ts +8 -0
  687. package/registry/blocks/logo-cloud-scatter-field/LogoCloudScatterField.tsx +190 -0
  688. package/registry/blocks/logo-cloud-scatter-field/index.ts +8 -0
  689. package/registry/blocks/logo-cloud-side-label-rail/LogoCloudSideLabelRail.tsx +139 -0
  690. package/registry/blocks/logo-cloud-side-label-rail/index.ts +7 -0
  691. package/registry/blocks/logo-cloud-stat-rail-above-grid/LogoCloudStatRailAboveGrid.tsx +173 -0
  692. package/registry/blocks/logo-cloud-stat-rail-above-grid/index.ts +8 -0
  693. package/registry/blocks/logo-cloud-tabbed-industry-filter/LogoCloudTabbedIndustryFilter.tsx +200 -0
  694. package/registry/blocks/logo-cloud-tabbed-industry-filter/index.ts +8 -0
  695. package/registry/blocks/navbar/index.ts +22 -11
  696. package/registry/blocks/navbar/navbar.test.tsx +42 -0
  697. package/registry/blocks/navbar/navbar.tsx +455 -0
  698. package/registry/blocks/navbar-active-action-with-border/NavbarActiveActionWithBorder.tsx +120 -0
  699. package/registry/blocks/navbar-active-action-with-border/index.ts +6 -0
  700. package/registry/blocks/navbar-active-action-with-round/NavbarActiveActionWithRound.tsx +120 -0
  701. package/registry/blocks/navbar-active-action-with-round/index.ts +6 -0
  702. package/registry/blocks/navbar-centered-floating/NavbarCenteredFloating.tsx +121 -0
  703. package/registry/blocks/navbar-centered-floating/index.ts +6 -0
  704. package/registry/blocks/navbar-default/NavbarDefault.tsx +102 -0
  705. package/registry/blocks/navbar-default/index.ts +6 -0
  706. package/registry/blocks/navbar-e-commerce/NavbarECommerce.tsx +212 -0
  707. package/registry/blocks/navbar-e-commerce/index.ts +6 -0
  708. package/registry/blocks/navbar-extended-at-top/NavbarExtendedAtTop.tsx +155 -0
  709. package/registry/blocks/navbar-extended-at-top/index.ts +7 -0
  710. package/registry/blocks/navbar-multiple-action/NavbarMultipleAction.tsx +133 -0
  711. package/registry/blocks/navbar-multiple-action/index.ts +6 -0
  712. package/registry/blocks/navbar-multiple-icon/NavbarMultipleIcon.tsx +132 -0
  713. package/registry/blocks/navbar-multiple-icon/index.ts +6 -0
  714. package/registry/blocks/navbar-rounded/NavbarRounded.tsx +140 -0
  715. package/registry/blocks/navbar-rounded/index.ts +6 -0
  716. package/registry/blocks/navbar-rounded-small/NavbarRoundedSmall.tsx +143 -0
  717. package/registry/blocks/navbar-rounded-small/index.ts +6 -0
  718. package/registry/blocks/navbar-small/NavbarSmall.tsx +142 -0
  719. package/registry/blocks/navbar-small/index.ts +6 -0
  720. package/registry/blocks/navbar-with-centered-logo/NavbarWithCenteredLogo.tsx +118 -0
  721. package/registry/blocks/navbar-with-centered-logo/index.ts +6 -0
  722. package/registry/blocks/navbar-with-cta-button/NavbarWithCtaButton.tsx +131 -0
  723. package/registry/blocks/navbar-with-cta-button/index.ts +6 -0
  724. package/registry/blocks/navbar-with-dropdown/NavbarWithDropdown.tsx +118 -0
  725. package/registry/blocks/navbar-with-dropdown/index.ts +6 -0
  726. package/registry/blocks/navbar-with-icon-indicator-avatar/NavbarWithIconIndicatorAvatar.tsx +85 -0
  727. package/registry/blocks/navbar-with-icon-indicator-avatar/index.ts +6 -0
  728. package/registry/blocks/navbar-with-search-input/NavbarWithSearchInput.tsx +90 -0
  729. package/registry/blocks/navbar-with-search-input/index.ts +6 -0
  730. package/registry/blocks/navbar-with-submenu/NavbarWithSubmenu.tsx +156 -0
  731. package/registry/blocks/navbar-with-submenu/index.ts +6 -0
  732. package/registry/blocks/page-header/PageHeader.tsx +5 -9
  733. package/registry/blocks/pricing/index.ts +20 -0
  734. package/registry/blocks/pricing/pricing.test.tsx +82 -0
  735. package/registry/blocks/pricing/pricing.tsx +343 -0
  736. package/registry/blocks/pricing-comparison-matrix/PricingComparisonMatrix.tsx +336 -0
  737. package/registry/blocks/pricing-comparison-matrix/index.ts +10 -0
  738. package/registry/blocks/pricing-plan-picker-summary/PricingPlanPickerSummary.tsx +399 -0
  739. package/registry/blocks/pricing-plan-picker-summary/index.ts +8 -0
  740. package/registry/blocks/pricing-plan-spotlight/PricingPlanSpotlight.tsx +281 -0
  741. package/registry/blocks/pricing-plan-spotlight/index.ts +7 -0
  742. package/registry/blocks/pricing-tiers/PricingTiers.tsx +264 -0
  743. package/registry/blocks/pricing-tiers/index.ts +8 -0
  744. package/registry/blocks/pricing-two-plan-compare/PricingTwoPlanCompare.tsx +187 -0
  745. package/registry/blocks/pricing-two-plan-compare/index.ts +7 -0
  746. package/registry/blocks/social-proof/index.ts +36 -0
  747. package/registry/blocks/social-proof/social-proof.test.tsx +504 -0
  748. package/registry/blocks/social-proof/social-proof.tsx +759 -0
  749. package/registry/blocks/social-proof-app-review-row/SocialProofAppReviewRow.tsx +168 -0
  750. package/registry/blocks/social-proof-app-review-row/index.ts +7 -0
  751. package/registry/blocks/social-proof-arch-portrait-quote/SocialProofArchPortraitQuote.tsx +114 -0
  752. package/registry/blocks/social-proof-arch-portrait-quote/index.ts +6 -0
  753. package/registry/blocks/social-proof-avatar-selector-row/SocialProofAvatarSelectorRow.tsx +276 -0
  754. package/registry/blocks/social-proof-avatar-selector-row/index.ts +7 -0
  755. package/registry/blocks/social-proof-benefit-title-cards/SocialProofBenefitTitleCards.tsx +182 -0
  756. package/registry/blocks/social-proof-benefit-title-cards/index.ts +8 -0
  757. package/registry/blocks/social-proof-bracket-framed-quote/SocialProofBracketFramedQuote.tsx +120 -0
  758. package/registry/blocks/social-proof-bracket-framed-quote/index.ts +6 -0
  759. package/registry/blocks/social-proof-case-study-row/SocialProofCaseStudyRow.tsx +210 -0
  760. package/registry/blocks/social-proof-case-study-row/index.ts +7 -0
  761. package/registry/blocks/social-proof-centered-logo-spotlight/SocialProofCenteredLogoSpotlight.tsx +103 -0
  762. package/registry/blocks/social-proof-centered-logo-spotlight/index.ts +6 -0
  763. package/registry/blocks/social-proof-classic-trio-grid/SocialProofClassicTrioGrid.tsx +138 -0
  764. package/registry/blocks/social-proof-classic-trio-grid/index.ts +7 -0
  765. package/registry/blocks/social-proof-dark-editorial-split/SocialProofDarkEditorialSplit.tsx +111 -0
  766. package/registry/blocks/social-proof-dark-editorial-split/index.ts +6 -0
  767. package/registry/blocks/social-proof-giant-quote-duo/SocialProofGiantQuoteDuo.tsx +156 -0
  768. package/registry/blocks/social-proof-giant-quote-duo/index.ts +8 -0
  769. package/registry/blocks/social-proof-highlighted-phrase-spotlight/SocialProofHighlightedPhraseSpotlight.tsx +130 -0
  770. package/registry/blocks/social-proof-highlighted-phrase-spotlight/index.ts +7 -0
  771. package/registry/blocks/social-proof-overlay-photo-quote/SocialProofOverlayPhotoQuote.tsx +111 -0
  772. package/registry/blocks/social-proof-overlay-photo-quote/index.ts +7 -0
  773. package/registry/blocks/social-proof-persona-pillars/SocialProofPersonaPillars.tsx +253 -0
  774. package/registry/blocks/social-proof-persona-pillars/index.ts +7 -0
  775. package/registry/blocks/social-proof-progress-carousel/SocialProofProgressCarousel.tsx +249 -0
  776. package/registry/blocks/social-proof-progress-carousel/index.ts +8 -0
  777. package/registry/blocks/social-proof-proof-bento/SocialProofProofBento.tsx +218 -0
  778. package/registry/blocks/social-proof-proof-bento/index.ts +6 -0
  779. package/registry/blocks/social-proof-spotlight-carousel/SocialProofSpotlightCarousel.tsx +212 -0
  780. package/registry/blocks/social-proof-spotlight-carousel/index.ts +7 -0
  781. package/registry/blocks/social-proof-staggered-columns/SocialProofStaggeredColumns.tsx +227 -0
  782. package/registry/blocks/social-proof-staggered-columns/index.ts +7 -0
  783. package/registry/blocks/social-proof-stat-story-cards/SocialProofStatStoryCards.tsx +218 -0
  784. package/registry/blocks/social-proof-stat-story-cards/index.ts +7 -0
  785. package/registry/blocks/social-proof-tinted-panel-portrait/SocialProofTintedPanelPortrait.tsx +130 -0
  786. package/registry/blocks/social-proof-tinted-panel-portrait/index.ts +7 -0
  787. package/registry/blocks/social-proof-tweet-wall/SocialProofTweetWall.tsx +179 -0
  788. package/registry/blocks/social-proof-tweet-wall/index.ts +7 -0
  789. package/registry/blocks/social-proof-vertical-column-wall/SocialProofVerticalColumnWall.tsx +220 -0
  790. package/registry/blocks/social-proof-vertical-column-wall/index.ts +7 -0
  791. package/registry/blocks/social-proof-video-story-cards/SocialProofVideoStoryCards.tsx +177 -0
  792. package/registry/blocks/social-proof-video-story-cards/index.ts +7 -0
  793. package/registry/blocks/social-proof-workplace-portrait-stories/SocialProofWorkplacePortraitStories.tsx +320 -0
  794. package/registry/blocks/social-proof-workplace-portrait-stories/index.ts +7 -0
  795. package/registry/blocks/team/index.ts +21 -0
  796. package/registry/blocks/team/team-classes.test.ts +35 -0
  797. package/registry/blocks/team/team.tsx +315 -0
  798. package/registry/blocks/team-annotated-portrait-lineup/TeamAnnotatedPortraitLineup.tsx +310 -0
  799. package/registry/blocks/team-annotated-portrait-lineup/index.ts +8 -0
  800. package/registry/blocks/team-annotated-portrait-lineup/team-annotated-portrait-lineup.test.tsx +71 -0
  801. package/registry/blocks/team-compact-directory-rows/TeamCompactDirectoryRows.tsx +190 -0
  802. package/registry/blocks/team-compact-directory-rows/compact-directory-rows.test.tsx +40 -0
  803. package/registry/blocks/team-compact-directory-rows/index.ts +7 -0
  804. package/registry/blocks/team-department-tabs-directory/TeamDepartmentTabsDirectory.tsx +414 -0
  805. package/registry/blocks/team-department-tabs-directory/department-tabs-directory.test.tsx +87 -0
  806. package/registry/blocks/team-department-tabs-directory/index.ts +10 -0
  807. package/registry/blocks/team-founder-spotlight/TeamFounderSpotlight.tsx +176 -0
  808. package/registry/blocks/team-founder-spotlight/index.ts +8 -0
  809. package/registry/blocks/team-founder-spotlight/team-founder-spotlight.test.tsx +70 -0
  810. package/registry/blocks/team-grid-backdrop-roster/TeamGridBackdropRoster.tsx +234 -0
  811. package/registry/blocks/team-grid-backdrop-roster/grid-backdrop-roster.test.tsx +72 -0
  812. package/registry/blocks/team-grid-backdrop-roster/index.ts +8 -0
  813. package/registry/blocks/team-hairline-grid/TeamHairlineGrid.tsx +190 -0
  814. package/registry/blocks/team-hairline-grid/hairline-grid.test.tsx +49 -0
  815. package/registry/blocks/team-hairline-grid/index.ts +1 -0
  816. package/registry/blocks/team-leadership-grid/TeamLeadershipGrid.tsx +183 -0
  817. package/registry/blocks/team-leadership-grid/index.ts +7 -0
  818. package/registry/blocks/team-leadership-grid/team-leadership-grid.test.tsx +38 -0
  819. package/registry/blocks/team-member-carousel/TeamMemberCarousel.tsx +178 -0
  820. package/registry/blocks/team-member-carousel/index.ts +7 -0
  821. package/registry/blocks/team-member-carousel/team-member-carousel.test.tsx +58 -0
  822. package/registry/blocks/team-member-table/TeamMemberTable.tsx +184 -0
  823. package/registry/blocks/team-member-table/index.ts +7 -0
  824. package/registry/blocks/team-member-table/member-table.test.tsx +43 -0
  825. package/registry/blocks/team-meta-profile-cards/TeamMetaProfileCards.tsx +155 -0
  826. package/registry/blocks/team-meta-profile-cards/index.ts +7 -0
  827. package/registry/blocks/team-meta-profile-cards/team-meta-profile-cards.test.tsx +29 -0
  828. package/registry/blocks/team-overlay-portrait-cards/TeamOverlayPortraitCards.tsx +145 -0
  829. package/registry/blocks/team-overlay-portrait-cards/index.ts +7 -0
  830. package/registry/blocks/team-overlay-portrait-cards/team-overlay-portrait-cards.test.tsx +49 -0
  831. package/registry/blocks/team-portrait-wall/TeamPortraitWall.tsx +131 -0
  832. package/registry/blocks/team-portrait-wall/index.ts +1 -0
  833. package/registry/blocks/team-portrait-wall/portrait-wall.test.tsx +45 -0
  834. package/registry/blocks/team-split-intro-member-rail/TeamSplitIntroMemberRail.tsx +203 -0
  835. package/registry/blocks/team-split-intro-member-rail/index.ts +7 -0
  836. package/registry/blocks/team-split-intro-member-rail/split-intro-member-rail.test.tsx +52 -0
  837. package/registry/blocks/team-we-re-hiring-cta/TeamWeReHiringCta.tsx +192 -0
  838. package/registry/blocks/team-we-re-hiring-cta/index.ts +7 -0
  839. package/registry/blocks/team-we-re-hiring-cta/we-re-hiring-cta.test.tsx +44 -0
  840. package/registry/blocks/video-call/index.ts +53 -0
  841. package/registry/blocks/video-call/video-call-around.test.tsx +427 -0
  842. package/registry/blocks/video-call/video-call-before.test.tsx +438 -0
  843. package/registry/blocks/video-call/video-call-hero.test.tsx +236 -0
  844. package/registry/blocks/video-call/video-call-stages.test.tsx +477 -0
  845. package/registry/blocks/video-call/video-call.test.tsx +794 -0
  846. package/registry/blocks/video-call/video-call.tsx +1282 -0
  847. package/registry/blocks/video-call-ai-meeting-recap/VideoCallAiMeetingRecap.tsx +466 -0
  848. package/registry/blocks/video-call-ai-meeting-recap/index.ts +9 -0
  849. package/registry/blocks/video-call-call-controls-dock/VideoCallCallControlsDock.tsx +211 -0
  850. package/registry/blocks/video-call-call-controls-dock/index.ts +6 -0
  851. package/registry/blocks/video-call-call-ended-summary/VideoCallCallEndedSummary.tsx +464 -0
  852. package/registry/blocks/video-call-call-ended-summary/index.ts +10 -0
  853. package/registry/blocks/video-call-call-with-side-panel/VideoCallCallWithSidePanel.tsx +357 -0
  854. package/registry/blocks/video-call-call-with-side-panel/index.ts +6 -0
  855. package/registry/blocks/video-call-captions-reactions/VideoCallCaptionsReactions.tsx +467 -0
  856. package/registry/blocks/video-call-captions-reactions/index.ts +10 -0
  857. package/registry/blocks/video-call-grid-gallery-call/VideoCallGridGalleryCall.tsx +312 -0
  858. package/registry/blocks/video-call-grid-gallery-call/index.ts +6 -0
  859. package/registry/blocks/video-call-hero-call-mockup/VideoCallHeroCallMockup.tsx +349 -0
  860. package/registry/blocks/video-call-hero-call-mockup/index.ts +7 -0
  861. package/registry/blocks/video-call-incoming-call/VideoCallIncomingCall.tsx +336 -0
  862. package/registry/blocks/video-call-incoming-call/index.ts +7 -0
  863. package/registry/blocks/video-call-join-link-dial-in/VideoCallJoinLinkDialIn.tsx +409 -0
  864. package/registry/blocks/video-call-join-link-dial-in/index.ts +9 -0
  865. package/registry/blocks/video-call-pre-join-lobby/VideoCallPreJoinLobby.tsx +345 -0
  866. package/registry/blocks/video-call-pre-join-lobby/index.ts +7 -0
  867. package/registry/blocks/video-call-screen-share-stage/VideoCallScreenShareStage.tsx +379 -0
  868. package/registry/blocks/video-call-screen-share-stage/index.ts +7 -0
  869. package/registry/blocks/video-call-speaker-filmstrip/VideoCallSpeakerFilmstrip.tsx +303 -0
  870. package/registry/blocks/video-call-speaker-filmstrip/index.ts +6 -0
  871. package/registry/blocks/video-call-upcoming-meetings/VideoCallUpcomingMeetings.tsx +349 -0
  872. package/registry/blocks/video-call-upcoming-meetings/index.ts +7 -0
  873. package/registry/blocks/video-call-waiting-room-knock/VideoCallWaitingRoomKnock.tsx +412 -0
  874. package/registry/blocks/video-call-waiting-room-knock/index.ts +7 -0
  875. package/registry/text-props-undefined.test.tsx +3 -26
  876. package/registry/ui/accordion/accordion.test.tsx +320 -0
  877. package/registry/ui/accordion/accordion.tsx +353 -0
  878. package/registry/ui/accordion/index.ts +15 -0
  879. package/registry/ui/alert/alert.test.tsx +325 -0
  880. package/registry/ui/alert/alert.tsx +384 -0
  881. package/registry/ui/alert/index.ts +10 -0
  882. package/registry/ui/alert-dialog/alert-dialog.test.tsx +396 -0
  883. package/registry/ui/alert-dialog/alert-dialog.tsx +423 -0
  884. package/registry/ui/alert-dialog/index.ts +21 -0
  885. package/registry/ui/avatar/avatar.test.tsx +2 -2
  886. package/registry/ui/avatar/avatar.tsx +3 -7
  887. package/registry/ui/breadcrumb/breadcrumb.test.tsx +305 -0
  888. package/registry/ui/breadcrumb/breadcrumb.tsx +205 -0
  889. package/registry/ui/breadcrumb/index.ts +11 -0
  890. package/registry/ui/button/button.test.tsx +353 -40
  891. package/registry/ui/button/button.tsx +304 -30
  892. package/registry/ui/calendar/calendar.test.tsx +192 -0
  893. package/registry/ui/calendar/calendar.tsx +405 -0
  894. package/registry/ui/calendar/index.ts +1 -0
  895. package/registry/ui/carousel/carousel.test.tsx +720 -0
  896. package/registry/ui/carousel/carousel.tsx +554 -0
  897. package/registry/ui/carousel/index.ts +11 -0
  898. package/registry/ui/checkbox/checkbox.test.tsx +318 -2
  899. package/registry/ui/checkbox/checkbox.tsx +253 -67
  900. package/registry/ui/checkbox/index.ts +1 -1
  901. package/registry/ui/content-carousel/content-carousel.test.tsx +303 -0
  902. package/registry/ui/content-carousel/content-carousel.tsx +180 -0
  903. package/registry/ui/content-carousel/index.ts +8 -0
  904. package/registry/ui/date-picker/date-picker.test.tsx +216 -0
  905. package/registry/ui/date-picker/date-picker.tsx +461 -0
  906. package/registry/ui/date-picker/index.ts +8 -0
  907. package/registry/ui/dialog/dialog.test.tsx +438 -0
  908. package/registry/ui/dialog/dialog.tsx +533 -0
  909. package/registry/ui/dialog/index.ts +20 -0
  910. package/registry/ui/dropdown-menu/dropdown-menu.test.tsx +502 -0
  911. package/registry/ui/dropdown-menu/dropdown-menu.tsx +627 -0
  912. package/registry/ui/dropdown-menu/index.ts +32 -0
  913. package/registry/ui/fasla-logo/fasla-logo.tsx +101 -0
  914. package/registry/ui/fasla-logo/index.ts +1 -0
  915. package/registry/ui/input/index.ts +10 -1
  916. package/registry/ui/input/input.test.tsx +251 -44
  917. package/registry/ui/input/input.tsx +311 -40
  918. package/registry/ui/input-number/index.ts +1 -0
  919. package/registry/ui/input-number/input-number.test.tsx +302 -0
  920. package/registry/ui/input-number/input-number.tsx +398 -0
  921. package/registry/ui/input-otp/index.ts +7 -0
  922. package/registry/ui/input-otp/input-otp.test.tsx +299 -0
  923. package/registry/ui/input-otp/input-otp.tsx +279 -0
  924. package/registry/ui/pagination/index.ts +12 -0
  925. package/registry/ui/pagination/pagination.test.tsx +330 -0
  926. package/registry/ui/pagination/pagination.tsx +336 -0
  927. package/registry/ui/progress/index.ts +8 -0
  928. package/registry/ui/progress/progress.test.tsx +168 -0
  929. package/registry/ui/progress/progress.tsx +165 -0
  930. package/registry/ui/select/index.ts +12 -1
  931. package/registry/ui/select/select.test.tsx +505 -0
  932. package/registry/ui/select/select.tsx +658 -56
  933. package/registry/ui/sheet/index.ts +19 -0
  934. package/registry/ui/sheet/sheet.test.tsx +411 -0
  935. package/registry/ui/sheet/sheet.tsx +496 -0
  936. package/registry/{blocks → ui}/sidebar/index.ts +10 -5
  937. package/registry/ui/sidebar/sidebar.test.tsx +224 -0
  938. package/registry/ui/sidebar/sidebar.tsx +754 -0
  939. package/registry/ui/slider/index.ts +8 -0
  940. package/registry/ui/slider/slider.test.tsx +231 -0
  941. package/registry/ui/slider/slider.tsx +319 -0
  942. package/registry/ui/social-icons/index.ts +1 -0
  943. package/registry/ui/social-icons/social-icons.tsx +284 -0
  944. package/registry/ui/steps/index.ts +16 -0
  945. package/registry/ui/steps/steps.test.tsx +435 -0
  946. package/registry/ui/steps/steps.tsx +571 -0
  947. package/registry/ui/switch/switch.tsx +3 -2
  948. package/registry/ui/tabs/index.ts +4 -0
  949. package/registry/ui/tabs/tabs.test.tsx +576 -0
  950. package/registry/ui/tabs/tabs.tsx +324 -112
  951. package/registry/ui/textarea/index.ts +1 -1
  952. package/registry/ui/textarea/textarea.test.tsx +294 -0
  953. package/registry/ui/textarea/textarea.tsx +329 -56
  954. package/registry/ui/tooltip/index.ts +14 -0
  955. package/registry/ui/tooltip/tooltip.test.tsx +301 -0
  956. package/registry/ui/tooltip/tooltip.tsx +409 -0
  957. package/registry.json +9702 -139
  958. package/tailwind-preset.ts +2 -2
  959. package/registry/blocks/navbar/Navbar.test.tsx +0 -12
  960. package/registry/blocks/navbar/Navbar.tsx +0 -175
  961. package/registry/blocks/sidebar/Sidebar.test.tsx +0 -39
  962. package/registry/blocks/sidebar/Sidebar.tsx +0 -212
@@ -0,0 +1,305 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { ArrowRight, Eye, EyeOff, Lock } from "lucide-react"
5
+ import { cn } from "../../../src/lib/utils"
6
+ import { Avatar } from "../../ui/avatar/avatar"
7
+ import { Button } from "../../ui/button/button"
8
+ import { Input } from "../../ui/input/input"
9
+
10
+ /*
11
+ * Figma: `Authentications` (42586:4669), Type=Locked Session Re-authenticate.
12
+ *
13
+ * The screen a timed-out session leaves: the signed-in person's photo, name
14
+ * and email, a note saying why it locked, the password and Unlock, then a
15
+ * passkey link and a way to sign out and switch account.
16
+ *
17
+ * The identity is there from the first frame, as Figma asks: only the note,
18
+ * the field and the button fade in. A wrong password shakes the field once
19
+ * and marks it invalid; the email stays.
20
+ *
21
+ * Mobile first: the base classes are Figma's Mobile (360), `md:` its Tablet
22
+ * (768) and `lg:` its Desktop (1440). The card keeps 424px from Tablet up and
23
+ * fills the width on a phone, with 16px sides. Direction is the page's `dir`;
24
+ * every side is a logical one, and the arrow mirrors.
25
+ */
26
+
27
+ export interface AuthLockedSessionReAuthenticateLink {
28
+ label: React.ReactNode
29
+ href: string
30
+ }
31
+
32
+ export interface AuthLockedSessionReAuthenticateAccount {
33
+ /** The person's name: the photo's text alternative and the initials without a photo. */
34
+ name: string
35
+ /** The email under the heading, and the username password managers fill. */
36
+ email: string
37
+ /** The photo. Without it the avatar shows the initials. */
38
+ avatar?: string
39
+ }
40
+
41
+ export interface AuthLockedSessionReAuthenticateCopy {
42
+ /** The card's heading, an `h1`: greet the person by name. */
43
+ heading: React.ReactNode
44
+ /** The muted note over the field: why the session locked. Hidden when empty. */
45
+ note: React.ReactNode
46
+ passwordLabel: React.ReactNode
47
+ passwordPlaceholder: string
48
+ /** The eye button's name while the password is hidden. */
49
+ showPassword: string
50
+ /** The eye button's name while the password shows. */
51
+ hidePassword: string
52
+ submitLabel: React.ReactNode
53
+ /** Read out while `onSubmit` runs. */
54
+ pendingLabel: string
55
+ /** Under the field when `onSubmit` rejects: the password was wrong. */
56
+ error: React.ReactNode
57
+ /** The link under the form, to another way in. Hidden when null. */
58
+ passkeyLink: AuthLockedSessionReAuthenticateLink | null
59
+ /** The question before the switch-account link. */
60
+ switchText: React.ReactNode
61
+ /** The closing link: sign out and use another account. Hidden, with `switchText`, when null. */
62
+ switchLink: AuthLockedSessionReAuthenticateLink | null
63
+ }
64
+
65
+ /** Figma's copy, English and Arabic. */
66
+ const COPY: Record<"en" | "ar", AuthLockedSessionReAuthenticateCopy> = {
67
+ en: {
68
+ heading: "Welcome back, Alex",
69
+ note: "Your session was locked after 30 minutes of inactivity.",
70
+ passwordLabel: "Password",
71
+ passwordPlaceholder: "Enter your password to unlock",
72
+ showPassword: "Show password",
73
+ hidePassword: "Hide password",
74
+ submitLabel: "Unlock",
75
+ pendingLabel: "Unlocking",
76
+ error: "That password isn’t right. Try again.",
77
+ passkeyLink: { label: "Use a passkey instead", href: "#passkey" },
78
+ switchText: "Not you?",
79
+ switchLink: { label: "Sign out and switch account", href: "#sign-out" },
80
+ },
81
+ ar: {
82
+ heading: "أهلًا بعودتك يا أليكس",
83
+ note: (
84
+ <>
85
+ قُفلت جلستك بعد <bdi dir="ltr">30</bdi> دقيقة من عدم النشاط.
86
+ </>
87
+ ),
88
+ passwordLabel: "كلمة المرور",
89
+ passwordPlaceholder: "أدخل كلمة المرور للمتابعة",
90
+ showPassword: "إظهار كلمة المرور",
91
+ hidePassword: "إخفاء كلمة المرور",
92
+ submitLabel: "إلغاء القفل",
93
+ pendingLabel: "جارٍ إلغاء القفل",
94
+ error: "كلمة المرور غير صحيحة. حاول مجددًا.",
95
+ passkeyLink: { label: "استخدم مفتاح مرور بدلًا من ذلك", href: "#passkey" },
96
+ switchText: "لست أنت؟",
97
+ switchLink: { label: "سجّل الخروج وبدّل الحساب", href: "#sign-out" },
98
+ },
99
+ }
100
+
101
+ /** Figma's person. The photo comes from outside. */
102
+ const ACCOUNT: Record<"en" | "ar", AuthLockedSessionReAuthenticateAccount> = {
103
+ en: { name: "Alex", email: "alex@northwind.co" },
104
+ ar: { name: "أليكس", email: "alex@northwind.co" },
105
+ }
106
+
107
+ export interface AuthLockedSessionReAuthenticateProps
108
+ extends Omit<React.HTMLAttributes<HTMLElement>, "title" | "onSubmit">,
109
+ Partial<AuthLockedSessionReAuthenticateCopy> {
110
+ /** Which language the default copy is in. The page's `dir` sets the direction. */
111
+ locale?: "en" | "ar"
112
+ /** Who is signed in. Defaults to Figma's Alex, without a photo. */
113
+ account?: AuthLockedSessionReAuthenticateAccount
114
+ /**
115
+ * Runs when the form is sent, with the account's email and the password.
116
+ * While its promise is pending the button shows its spinner and the field is
117
+ * disabled; a rejection marks the field invalid, shakes it and shows `error`.
118
+ */
119
+ onSubmit?: (values: { email: string; password: string }) => Promise<void> | void
120
+ }
121
+
122
+ const LINK =
123
+ "rounded-sm underline-offset-4 hover:underline focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring"
124
+
125
+ /**
126
+ * Figma's entrance: only the note, the field and the button fade in and rise
127
+ * 8px over 250ms. Runs once; skipped under prefers-reduced-motion.
128
+ */
129
+ function useEntrance(ref: React.RefObject<HTMLElement | null>) {
130
+ React.useLayoutEffect(() => {
131
+ const root = ref.current
132
+ if (!root || typeof root.animate !== "function") return
133
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return
134
+ const parts = Array.from(root.querySelectorAll<HTMLElement>("[data-entrance]"))
135
+ const animations = parts.map((part) =>
136
+ part.animate([{ opacity: 0, transform: "translateY(8px)" }, { opacity: 1, transform: "none" }], {
137
+ duration: 250,
138
+ easing: "cubic-bezier(0, 0, 0.2, 1)",
139
+ fill: "backwards",
140
+ })
141
+ )
142
+ return () => animations.forEach((animation) => animation.cancel())
143
+ }, [ref])
144
+ }
145
+
146
+ /** Figma's error shake: 6px either way over 400ms, once. Skipped under prefers-reduced-motion. */
147
+ function shake(element: HTMLElement | null) {
148
+ if (!element || typeof element.animate !== "function") return
149
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return
150
+ element.animate(
151
+ [
152
+ { transform: "none" },
153
+ { transform: "translateX(-6px)" },
154
+ { transform: "translateX(6px)" },
155
+ { transform: "translateX(-4px)" },
156
+ { transform: "translateX(4px)" },
157
+ { transform: "none" },
158
+ ],
159
+ { duration: 400, easing: "ease-in-out" }
160
+ )
161
+ }
162
+
163
+ export function AuthLockedSessionReAuthenticate({
164
+ locale = "en",
165
+ account,
166
+ heading,
167
+ note,
168
+ passwordLabel,
169
+ passwordPlaceholder,
170
+ showPassword,
171
+ hidePassword,
172
+ submitLabel,
173
+ pendingLabel,
174
+ error,
175
+ passkeyLink,
176
+ switchText,
177
+ switchLink,
178
+ onSubmit,
179
+ className,
180
+ ...props
181
+ }: AuthLockedSessionReAuthenticateProps) {
182
+ const copy = COPY[locale]
183
+ const person = account ?? ACCOUNT[locale]
184
+ const headingId = React.useId()
185
+ const cardRef = React.useRef<HTMLDivElement>(null)
186
+ const fieldRef = React.useRef<HTMLDivElement>(null)
187
+ const passwordRef = React.useRef<HTMLInputElement>(null)
188
+ const [status, setStatus] = React.useState<"idle" | "pending" | "error">("idle")
189
+ const [visible, setVisible] = React.useState(false)
190
+ const strip = note ?? copy.note
191
+ const passkey = passkeyLink === undefined ? copy.passkeyLink : passkeyLink
192
+ const switchAccount = switchLink === undefined ? copy.switchLink : switchLink
193
+ useEntrance(cardRef)
194
+
195
+ const submit = async (event: React.FormEvent<HTMLFormElement>) => {
196
+ event.preventDefault()
197
+ if (!onSubmit) return
198
+ const data = new FormData(event.currentTarget)
199
+ setStatus("pending")
200
+ try {
201
+ await onSubmit({ email: person.email, password: String(data.get("password") ?? "") })
202
+ setStatus("idle")
203
+ } catch {
204
+ setStatus("error")
205
+ // After the fieldset is enabled again, so the field can take focus.
206
+ window.setTimeout(() => {
207
+ shake(fieldRef.current)
208
+ passwordRef.current?.focus()
209
+ })
210
+ }
211
+ }
212
+
213
+ return (
214
+ <section aria-labelledby={headingId} className={cn("flex justify-center bg-muted p-8 md:p-16 lg:p-24", className)} {...props}>
215
+ <div
216
+ ref={cardRef}
217
+ className="flex w-full flex-col items-center gap-7 rounded-xl border border-border bg-card px-4 py-8 text-card-foreground shadow-lg md:max-w-[424px] md:p-8"
218
+ >
219
+ <div className="flex w-full flex-col items-center gap-3.5">
220
+ <Avatar size="32" radius="rounded" border src={person.avatar} name={person.name} className="size-[76px] text-2xl" />
221
+ <div className="flex w-full flex-col items-center gap-1.5 text-center">
222
+ <h1 id={headingId} className="text-xl font-semibold text-foreground md:text-2xl">
223
+ {heading ?? copy.heading}
224
+ </h1>
225
+ <p className="text-sm text-muted-foreground">
226
+ <bdi dir="ltr">{person.email}</bdi>
227
+ </p>
228
+ </div>
229
+ </div>
230
+
231
+ {strip ? (
232
+ <div data-entrance="" className="flex w-full items-center gap-2.5 rounded-md bg-muted p-3.5 text-foreground">
233
+ <Lock size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" className="size-4 shrink-0" />
234
+ <p className="text-xs">{strip}</p>
235
+ </div>
236
+ ) : null}
237
+
238
+ <form data-entrance="" onSubmit={submit} className="w-full">
239
+ <fieldset disabled={status === "pending"} className="flex w-full min-w-0 flex-col gap-4">
240
+ {/* For password managers: the account this password belongs to. */}
241
+ <input type="text" name="username" autoComplete="username" value={person.email} readOnly hidden />
242
+ <div ref={fieldRef}>
243
+ <Input
244
+ ref={passwordRef}
245
+ type={visible ? "text" : "password"}
246
+ name="password"
247
+ autoComplete="current-password"
248
+ required
249
+ label={passwordLabel ?? copy.passwordLabel}
250
+ placeholder={passwordPlaceholder ?? copy.passwordPlaceholder}
251
+ invalid={status === "error"}
252
+ error={error ?? copy.error}
253
+ onChange={() => status === "error" && setStatus("idle")}
254
+ startIcon={<Lock size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" />}
255
+ endIcon={
256
+ <button
257
+ type="button"
258
+ aria-label={visible ? (hidePassword ?? copy.hidePassword) : (showPassword ?? copy.showPassword)}
259
+ aria-pressed={visible}
260
+ onClick={() => setVisible((shown) => !shown)}
261
+ className="-m-1 flex rounded-sm p-1 text-foreground focus-visible:outline focus-visible:outline-2 focus-visible:outline-ring"
262
+ >
263
+ {visible ? (
264
+ <Eye size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" />
265
+ ) : (
266
+ <EyeOff size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" />
267
+ )}
268
+ </button>
269
+ }
270
+ />
271
+ </div>
272
+ <Button type="submit" loading={status === "pending"} loadingLabel={pendingLabel ?? copy.pendingLabel} className="w-full">
273
+ {submitLabel ?? copy.submitLabel}
274
+ <ArrowRight size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" className="rtl:-scale-x-100" />
275
+ </Button>
276
+ </fieldset>
277
+ </form>
278
+
279
+ {passkey || switchAccount ? (
280
+ <div className="flex w-full flex-col items-center gap-2.5 text-center text-sm">
281
+ {passkey ? (
282
+ <a href={passkey.href} className={cn("font-medium text-foreground", LINK)}>
283
+ {passkey.label}
284
+ </a>
285
+ ) : null}
286
+ {switchAccount ? (
287
+ <p className="flex flex-wrap items-center justify-center gap-1">
288
+ <span className="text-muted-foreground">{switchText ?? copy.switchText}</span>
289
+ <a href={switchAccount.href} className={cn("font-semibold text-foreground", LINK)}>
290
+ {switchAccount.label}
291
+ </a>
292
+ </p>
293
+ ) : null}
294
+ </div>
295
+ ) : null}
296
+ </div>
297
+ </section>
298
+ )
299
+ }
300
+
301
+ /**
302
+ * The default copy, English and Arabic, as `locale` picks it. Spread it to
303
+ * change a few strings and keep the rest.
304
+ */
305
+ export const authLockedSessionReAuthenticateCopy = COPY
@@ -0,0 +1,8 @@
1
+ export {
2
+ AuthLockedSessionReAuthenticate,
3
+ authLockedSessionReAuthenticateCopy,
4
+ type AuthLockedSessionReAuthenticateLink,
5
+ type AuthLockedSessionReAuthenticateAccount,
6
+ type AuthLockedSessionReAuthenticateCopy,
7
+ type AuthLockedSessionReAuthenticateProps,
8
+ } from "./AuthLockedSessionReAuthenticate"
@@ -0,0 +1,336 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Check, Clock5, Lock, Mail, Send } from "lucide-react"
5
+ import { cn } from "../../../src/lib/utils"
6
+ import { Alert, AlertTitle } from "../../ui/alert/alert"
7
+ import { Button, buttonVariants } from "../../ui/button/button"
8
+ import { Input } from "../../ui/input/input"
9
+ import { SocialIcon, type SocialPlatform } from "../../ui/social-icons/social-icons"
10
+
11
+ /*
12
+ * Figma: `Authentications` (42586:4669), Type=Magic Link Request.
13
+ *
14
+ * Passwordless sign-in on a plain page: an open-envelope drawing, a heading,
15
+ * one email field and the button that sends the link, a note on how long the
16
+ * link lasts, then "or" and two other ways in: a password, or a provider.
17
+ *
18
+ * Mobile first: the base classes are Figma's Mobile (360), `md:` its Tablet
19
+ * (768) and `lg:` its Desktop (1440). The column keeps 440px from Tablet up
20
+ * and fills the width on a phone, where the drawing and the heading step
21
+ * down. Direction is the page's `dir`; every side is a logical one. The
22
+ * drawing is never mirrored.
23
+ */
24
+
25
+ export interface AuthMagicLinkRequestLink {
26
+ label: React.ReactNode
27
+ href: string
28
+ }
29
+
30
+ export interface AuthMagicLinkRequestProvider {
31
+ platform: SocialPlatform
32
+ /** The button's text: name the provider. */
33
+ label: React.ReactNode
34
+ }
35
+
36
+ export interface AuthMagicLinkRequestCopy {
37
+ /** The page's heading, an `h1`. */
38
+ heading: React.ReactNode
39
+ /** The line under the heading. Hidden when empty. */
40
+ description: React.ReactNode
41
+ emailLabel: React.ReactNode
42
+ emailPlaceholder: string
43
+ submitLabel: React.ReactNode
44
+ /** Read out while `onSubmit` runs. */
45
+ pendingLabel: string
46
+ /** The button's text once the link is on its way. */
47
+ sentLabel: React.ReactNode
48
+ /** Shown under the button when `onSubmit` rejects. */
49
+ error: React.ReactNode
50
+ /** The note under the form: how long the link lasts. Hidden when empty. */
51
+ note: React.ReactNode
52
+ /** The word between the two rules over the other ways in. */
53
+ dividerLabel: React.ReactNode
54
+ /** The outline link to sign in with a password instead. Hidden when null. */
55
+ passwordLink: AuthMagicLinkRequestLink | null
56
+ /** The provider buttons under it. */
57
+ providers: AuthMagicLinkRequestProvider[]
58
+ }
59
+
60
+ /** Figma's copy, English and Arabic. */
61
+ const COPY: Record<"en" | "ar", AuthMagicLinkRequestCopy> = {
62
+ en: {
63
+ heading: "Sign in without a password",
64
+ description: "We will email you a secure link that signs you in instantly. No password to remember.",
65
+ emailLabel: "Email address",
66
+ emailPlaceholder: "you@company.com",
67
+ submitLabel: "Email me a magic link",
68
+ pendingLabel: "Sending the link",
69
+ sentLabel: "Link sent",
70
+ error: "We couldn’t send the link. Check the address and try again.",
71
+ note: "Links expire after 15 minutes and can only be used once.",
72
+ dividerLabel: "or",
73
+ passwordLink: { label: "Sign in with a password", href: "#sign-in" },
74
+ providers: [{ platform: "google", label: "Continue with Google" }],
75
+ },
76
+ ar: {
77
+ heading: "سجّل الدخول دون كلمة مرور",
78
+ description: "سنرسل إلى بريدك رابطًا آمنًا يسجّل دخولك فورًا، دون كلمة مرور تحفظها.",
79
+ emailLabel: "البريد الإلكتروني",
80
+ emailPlaceholder: "you@company.com",
81
+ submitLabel: "أرسل لي رابط الدخول",
82
+ pendingLabel: "جارٍ إرسال الرابط",
83
+ sentLabel: "أُرسل الرابط",
84
+ error: "تعذّر إرسال الرابط. تحقّق من العنوان وحاول مجددًا.",
85
+ note: "تنتهي صلاحية الرابط بعد 15 دقيقة، ولا يُستخدم إلا مرة واحدة.",
86
+ dividerLabel: "أو",
87
+ passwordLink: { label: "سجّل الدخول بكلمة المرور", href: "#sign-in" },
88
+ providers: [
89
+ {
90
+ platform: "google",
91
+ label: (
92
+ <>
93
+ المتابعة باستخدام <bdi dir="ltr">Google</bdi>
94
+ </>
95
+ ),
96
+ },
97
+ ],
98
+ },
99
+ }
100
+
101
+ export interface AuthMagicLinkRequestProps
102
+ extends Omit<React.HTMLAttributes<HTMLElement>, "title" | "onSubmit">,
103
+ Partial<AuthMagicLinkRequestCopy> {
104
+ /** Which language the default copy is in. The page's `dir` sets the direction. */
105
+ locale?: "en" | "ar"
106
+ /**
107
+ * Runs when the form is sent, with the address. While its promise is
108
+ * pending the button shows its spinner; once it settles the button says
109
+ * `sentLabel`, and a rejection shows `error` instead.
110
+ */
111
+ onSubmit?: (values: { email: string }) => Promise<void> | void
112
+ /** Runs when a provider button is pressed. That button shows its spinner while the promise is pending. */
113
+ onProviderSelect?: (platform: SocialPlatform) => Promise<void> | void
114
+ }
115
+
116
+ /**
117
+ * Figma's entrance: the parts fade in and rise one after another, the note
118
+ * last. Runs once; skipped under prefers-reduced-motion.
119
+ */
120
+ function useEntrance(ref: React.RefObject<HTMLElement | null>) {
121
+ React.useLayoutEffect(() => {
122
+ const root = ref.current
123
+ if (!root || typeof root.animate !== "function") return
124
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return
125
+ const parts = Array.from(root.querySelectorAll<HTMLElement>("[data-entrance]"))
126
+ const animations = parts.map((part, index) =>
127
+ part.animate(
128
+ [{ opacity: 0, transform: "translateY(12px)" }, { opacity: 1, transform: "none" }],
129
+ { duration: 320, delay: index * 60, easing: "cubic-bezier(0, 0, 0.2, 1)", fill: "backwards" }
130
+ )
131
+ )
132
+ return () => animations.forEach((animation) => animation.cancel())
133
+ }, [ref])
134
+ }
135
+
136
+ export function AuthMagicLinkRequest({
137
+ locale = "en",
138
+ heading,
139
+ description,
140
+ emailLabel,
141
+ emailPlaceholder,
142
+ submitLabel,
143
+ pendingLabel,
144
+ sentLabel,
145
+ error,
146
+ note,
147
+ dividerLabel,
148
+ passwordLink,
149
+ providers,
150
+ onSubmit,
151
+ onProviderSelect,
152
+ className,
153
+ ...props
154
+ }: AuthMagicLinkRequestProps) {
155
+ const copy = COPY[locale]
156
+ const headingId = React.useId()
157
+ const columnRef = React.useRef<HTMLDivElement>(null)
158
+ const [status, setStatus] = React.useState<"idle" | "pending" | "sent" | "error">("idle")
159
+ const [pendingProvider, setPendingProvider] = React.useState<SocialPlatform | null>(null)
160
+ const subline = description ?? copy.description
161
+ const noteText = note ?? copy.note
162
+ const password = passwordLink === undefined ? copy.passwordLink : passwordLink
163
+ const providerList = providers ?? copy.providers
164
+ const busy = status === "pending" || pendingProvider !== null
165
+ useEntrance(columnRef)
166
+
167
+ const submit = async (event: React.FormEvent<HTMLFormElement>) => {
168
+ event.preventDefault()
169
+ if (!onSubmit) return
170
+ const data = new FormData(event.currentTarget)
171
+ setStatus("pending")
172
+ try {
173
+ await onSubmit({ email: String(data.get("email") ?? "") })
174
+ setStatus("sent")
175
+ } catch {
176
+ setStatus("error")
177
+ }
178
+ }
179
+
180
+ const selectProvider = async (platform: SocialPlatform) => {
181
+ if (!onProviderSelect) return
182
+ setPendingProvider(platform)
183
+ try {
184
+ await onProviderSelect(platform)
185
+ } finally {
186
+ setPendingProvider(null)
187
+ }
188
+ }
189
+
190
+ return (
191
+ <section aria-labelledby={headingId} className={cn("flex justify-center bg-background p-8 md:p-16 lg:p-24", className)} {...props}>
192
+ <div ref={columnRef} className="flex w-full flex-col items-center gap-8 md:max-w-[440px]">
193
+ <div data-entrance="" className="flex h-40 w-56 items-center justify-center md:h-[200px] md:w-[280px]">
194
+ <OpenEnvelope className="h-full w-auto" />
195
+ </div>
196
+
197
+ <div data-entrance="" className="flex w-full flex-col items-center gap-2 text-center">
198
+ <h1 id={headingId} className="text-2xl font-semibold text-foreground md:text-3xl">
199
+ {heading ?? copy.heading}
200
+ </h1>
201
+ {subline ? <p className="text-sm text-muted-foreground">{subline}</p> : null}
202
+ </div>
203
+
204
+ <form data-entrance="" onSubmit={submit} className="w-full">
205
+ <fieldset disabled={busy || status === "sent"} className="flex w-full min-w-0 flex-col gap-3">
206
+ <Input
207
+ type="email"
208
+ name="email"
209
+ autoComplete="email"
210
+ required
211
+ label={emailLabel ?? copy.emailLabel}
212
+ placeholder={emailPlaceholder ?? copy.emailPlaceholder}
213
+ startIcon={<Mail size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" />}
214
+ />
215
+ <Button type="submit" loading={status === "pending"} loadingLabel={pendingLabel ?? copy.pendingLabel} className="w-full">
216
+ {/* The label and the sent state share one cell, so the swap is a crossfade and the button never resizes. */}
217
+ <span className="grid [&>*]:col-start-1 [&>*]:row-start-1 [&>*]:transition-opacity [&>*]:duration-[250ms] motion-reduce:[&>*]:transition-none">
218
+ <span aria-hidden={status === "sent"} className={cn("flex items-center justify-center gap-2", status === "sent" && "opacity-0")}>
219
+ {submitLabel ?? copy.submitLabel}
220
+ <Send size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" className="rtl:-scale-x-100" />
221
+ </span>
222
+ <span aria-hidden={status !== "sent"} className={cn("flex items-center justify-center gap-2", status !== "sent" && "opacity-0")}>
223
+ <Check size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" />
224
+ {sentLabel ?? copy.sentLabel}
225
+ </span>
226
+ </span>
227
+ </Button>
228
+ <p role="status" className="sr-only">
229
+ {status === "sent" ? (sentLabel ?? copy.sentLabel) : null}
230
+ </p>
231
+ <p role="alert" className="text-sm text-destructive empty:hidden">
232
+ {status === "error" ? (error ?? copy.error) : null}
233
+ </p>
234
+ </fieldset>
235
+ </form>
236
+
237
+ {noteText ? (
238
+ <Alert
239
+ data-entrance=""
240
+ type="soft"
241
+ role="note"
242
+ icon={<Clock5 strokeWidth={1.5} />}
243
+ >
244
+ <AlertTitle>{noteText}</AlertTitle>
245
+ </Alert>
246
+ ) : null}
247
+
248
+ {password || providerList.length > 0 ? (
249
+ <>
250
+ <div data-entrance="" className="flex w-full items-center gap-3">
251
+ <div aria-hidden="true" className="h-px flex-1 bg-border" />
252
+ <span className="text-xs font-medium text-muted-foreground">{dividerLabel ?? copy.dividerLabel}</span>
253
+ <div aria-hidden="true" className="h-px flex-1 bg-border" />
254
+ </div>
255
+ <div data-entrance="" className="flex w-full flex-col gap-2.5">
256
+ {password ? (
257
+ <a href={password.href} className={buttonVariants({ variant: "outline", className: "w-full" })}>
258
+ <Lock size={16} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" />
259
+ {password.label}
260
+ </a>
261
+ ) : null}
262
+ {providerList.map((provider) => (
263
+ <Button
264
+ key={provider.platform}
265
+ type="button"
266
+ variant="outline"
267
+ disabled={busy && pendingProvider !== provider.platform}
268
+ loading={pendingProvider === provider.platform}
269
+ onClick={() => selectProvider(provider.platform)}
270
+ className="w-full min-w-0"
271
+ >
272
+ <SocialIcon platform={provider.platform} className="size-4" />
273
+ {provider.label}
274
+ </Button>
275
+ ))}
276
+ </div>
277
+ </>
278
+ ) : null}
279
+ </div>
280
+ </section>
281
+ )
282
+ }
283
+
284
+ /** Figma's "Opened" drawing: a letter rising out of an open envelope. Decorative. */
285
+ function OpenEnvelope({ className }: { className?: string }) {
286
+ return (
287
+ <svg viewBox="0 0 228 200" fill="none" aria-hidden="true" className={className}>
288
+ <path
289
+ className="fill-success"
290
+ d="M225.773 197.14C225.375 197.696 224.974 198.247 224.576 198.795C223.433 199.582 222.078 200.003 220.69 200H6.8966C5.57068 200.001 4.27287 199.618 3.1603 198.897C2.79106 198.41 2.426 197.919 2.05676 197.428L2.42599 197.225L110.657 137.233C111.618 136.702 112.697 136.423 113.794 136.421C114.892 136.42 115.972 136.696 116.933 137.225L225.408 196.937L225.773 197.14Z"
291
+ />
292
+ <path
293
+ className="fill-foreground"
294
+ d="M220.69 70.9941L126.889 16.8235C122.944 14.5451 118.469 13.3445 113.913 13.3423C109.357 13.34 104.881 14.5362 100.933 16.8107L6.89661 70.9941C5.06833 70.9966 3.31567 71.7241 2.02288 73.0169C0.730081 74.3097 0.0026474 76.0623 6.10352e-05 77.8906V193.104C0.00219119 194.932 0.729475 196.685 2.02237 197.978C3.31526 199.271 5.06819 199.998 6.89661 200H220.69C222.518 199.997 224.27 199.269 225.563 197.977C226.856 196.684 227.583 194.932 227.586 193.104V77.8906C227.584 76.0623 226.856 74.3097 225.563 73.0169C224.271 71.7241 222.518 70.9966 220.69 70.9941ZM226.775 193.104C226.771 194.716 226.129 196.262 224.988 197.402C223.848 198.542 222.302 199.185 220.69 199.189H6.89661C5.28361 199.186 3.73751 198.544 2.59694 197.403C1.45637 196.263 0.814322 194.717 0.81142 193.104V77.8906C0.813383 76.2773 1.45513 74.7307 2.5959 73.5899C3.73667 72.4491 5.28332 71.8074 6.89661 71.8054L100.933 17.6221C104.881 15.3476 109.357 14.1514 113.913 14.1536C118.469 14.1559 122.944 15.3565 126.889 17.6349L220.69 71.8054C222.303 71.8074 223.85 72.4491 224.99 73.5899C226.131 74.7307 226.773 76.2773 226.775 77.8906V193.104Z"
295
+ />
296
+ <path
297
+ className="fill-background"
298
+ d="M113.915 136.178C113.208 136.181 112.507 136.063 111.839 135.83L111.717 135.787L111.692 135.514C111.615 135.552 111.538 135.588 111.461 135.622L111.379 135.658L111.298 135.622C111.127 135.546 110.957 135.462 110.793 135.369L36.1057 93.4004V7.70771C36.1079 5.71792 36.8993 3.81028 38.3063 2.40329C39.7133 0.996298 41.6209 0.20487 43.6107 0.202637H183.976C185.966 0.20487 187.873 0.996298 189.28 2.40329C190.687 3.81028 191.479 5.71792 191.481 7.70771V93.5099L191.378 93.5682L117.037 135.369C116.082 135.901 115.008 136.18 113.915 136.178Z"
299
+ />
300
+ <path
301
+ className="fill-foreground"
302
+ d="M113.915 136.381C113.185 136.384 112.461 136.262 111.772 136.022L111.526 135.935L111.516 135.819L111.379 135.879L111.216 135.808C111.039 135.73 110.863 135.642 110.694 135.546L35.9028 93.5194V7.70791C35.9051 5.66436 36.7179 3.70516 38.1629 2.26015C39.6079 0.815139 41.5671 0.00231282 43.6107 0H183.976C186.019 0.00232139 187.979 0.815147 189.424 2.26016C190.869 3.70517 191.681 5.66436 191.684 7.70791V93.6288L117.136 135.546C116.151 136.095 115.042 136.383 113.915 136.381ZM112.287 135.336C113.778 135.764 115.379 135.586 116.739 134.839L190.872 93.1542V7.70791C190.87 5.87946 190.143 4.12649 188.85 2.83358C187.557 1.54068 185.804 0.813417 183.976 0.811359H43.6107C41.7822 0.813409 40.0293 1.54067 38.7363 2.83358C37.4434 4.12649 36.7162 5.87946 36.7141 7.70791V93.0444L41.5781 95.776L111.091 134.839C111.186 134.892 111.282 134.943 111.379 134.989C111.477 134.943 111.573 134.892 111.667 134.839L112.214 134.531L112.287 135.336Z"
303
+ />
304
+ <path
305
+ className="fill-foreground"
306
+ d="M225.789 73.9875L196.349 90.5392L191.278 93.3911L116.937 135.192C116.013 135.708 114.973 135.977 113.915 135.975C113.231 135.977 112.552 135.863 111.907 135.639C111.727 135.581 111.551 135.513 111.379 135.436C111.213 135.363 111.051 135.282 110.893 135.192L41.3793 96.1295L36.3083 93.2816L1.85807 73.9226C1.7644 73.8689 1.69568 73.7804 1.66683 73.6763C1.63798 73.5723 1.65132 73.4611 1.70396 73.3668C1.75675 73.2733 1.84449 73.2045 1.94792 73.1756C2.05134 73.1467 2.16201 73.16 2.25563 73.2126L36.3083 92.3485L41.3793 95.1964L111.29 134.482C111.522 134.613 111.763 134.725 112.012 134.819C112.118 134.86 112.227 134.896 112.337 134.929C113.031 135.142 113.762 135.212 114.484 135.135C115.206 135.059 115.905 134.837 116.54 134.482L191.278 92.4621L196.349 89.6102L225.391 73.2816C225.438 73.2555 225.489 73.2388 225.542 73.2324C225.594 73.226 225.648 73.2301 225.699 73.2444C225.75 73.2587 225.798 73.283 225.84 73.3158C225.882 73.3487 225.917 73.3894 225.943 73.4358C225.969 73.4821 225.986 73.5331 225.992 73.5859C225.999 73.6388 225.995 73.6923 225.98 73.7435C225.966 73.7948 225.942 73.8427 225.909 73.8845C225.876 73.9264 225.835 73.9614 225.789 73.9875Z"
307
+ />
308
+ <path
309
+ className="fill-success"
310
+ d="M66.5619 26.7751H55.2029C54.3422 26.7751 53.5167 26.4331 52.908 25.8245C52.2994 25.2159 51.9575 24.3904 51.9575 23.5296C51.9575 22.6689 52.2994 21.8434 52.908 21.2347C53.5167 20.6261 54.3422 20.2842 55.2029 20.2842H66.5619C67.4227 20.2842 68.2482 20.6261 68.8568 21.2347C69.4654 21.8434 69.8074 22.6689 69.8074 23.5296C69.8074 24.3904 69.4654 25.2159 68.8568 25.8245C68.2482 26.4331 67.4227 26.7751 66.5619 26.7751Z"
311
+ />
312
+ <path
313
+ className="fill-border"
314
+ d="M79.9494 37.7282H55.2029C54.3422 37.7282 53.5167 37.3863 52.908 36.7776C52.2994 36.169 51.9575 35.3435 51.9575 34.4827C51.9575 33.622 52.2994 32.7965 52.908 32.1879C53.5167 31.5792 54.3422 31.2373 55.2029 31.2373H79.9494C80.8101 31.2373 81.6356 31.5792 82.2442 32.1879C82.8528 32.7965 83.1948 33.622 83.1948 34.4827C83.1948 35.3435 82.8528 36.169 82.2442 36.7776C81.6356 37.3863 80.8101 37.7282 79.9494 37.7282Z"
315
+ />
316
+ <path
317
+ className="fill-success"
318
+ d="M149.087 66.9372H78.9047C78.0439 66.9372 77.2184 66.5952 76.6098 65.9866C76.0012 65.378 75.6592 64.5525 75.6592 63.6917C75.6592 62.831 76.0012 62.0055 76.6098 61.3969C77.2184 60.7882 78.0439 60.4463 78.9047 60.4463H149.087C149.948 60.4463 150.773 60.7882 151.382 61.3969C151.991 62.0055 152.333 62.831 152.333 63.6917C152.333 64.5525 151.991 65.378 151.382 65.9866C150.773 66.5952 149.948 66.9372 149.087 66.9372Z"
319
+ />
320
+ <path
321
+ className="fill-border"
322
+ d="M155.578 79.5133H72.0081C71.1474 79.5133 70.3219 79.1714 69.7133 78.5628C69.1046 77.9541 68.7627 77.1286 68.7627 76.2679C68.7627 75.4072 69.1046 74.5817 69.7133 73.973C70.3219 73.3644 71.1474 73.0225 72.0081 73.0225H155.578C156.439 73.0225 157.264 73.3644 157.873 73.973C158.482 74.5817 158.824 75.4072 158.824 76.2679C158.824 77.1286 158.482 77.9541 157.873 78.5628C157.264 79.1714 156.439 79.5133 155.578 79.5133Z"
323
+ />
324
+ <path
325
+ className="fill-border"
326
+ d="M155.578 91.6837H72.0081C71.1474 91.6837 70.3219 91.3418 69.7133 90.7332C69.1046 90.1245 68.7627 89.2991 68.7627 88.4383C68.7627 87.5776 69.1046 86.7521 69.7133 86.1434C70.3219 85.5348 71.1474 85.1929 72.0081 85.1929H155.578C156.439 85.1929 157.264 85.5348 157.873 86.1434C158.482 86.7521 158.824 87.5776 158.824 88.4383C158.824 89.2991 158.482 90.1245 157.873 90.7332C157.264 91.3418 156.439 91.6837 155.578 91.6837Z"
327
+ />
328
+ </svg>
329
+ )
330
+ }
331
+
332
+ /**
333
+ * The default copy, English and Arabic, as `locale` picks it. Spread it to
334
+ * change a few strings and keep the rest.
335
+ */
336
+ export const authMagicLinkRequestCopy = COPY
@@ -0,0 +1,8 @@
1
+ export {
2
+ AuthMagicLinkRequest,
3
+ authMagicLinkRequestCopy,
4
+ type AuthMagicLinkRequestLink,
5
+ type AuthMagicLinkRequestProvider,
6
+ type AuthMagicLinkRequestCopy,
7
+ type AuthMagicLinkRequestProps,
8
+ } from "./AuthMagicLinkRequest"