@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.
- package/README.md +24 -5
- package/dist/cli/index.js +2983 -648
- package/dist/index.cjs +50 -12
- package/dist/index.js +50 -12
- package/dist/motion/index.cjs +12 -0
- package/dist/motion/index.d.cts +7 -0
- package/dist/motion/index.d.ts +7 -0
- package/dist/motion/index.js +12 -0
- package/dist/registry/index.cjs +4 -4
- package/dist/registry/index.js +4 -4
- package/dist/tokens/index.cjs +34 -8
- package/dist/tokens/index.d.cts +23 -1
- package/dist/tokens/index.d.ts +23 -1
- package/dist/tokens/index.js +34 -8
- package/package.json +6 -1
- package/registry/blocks/about-approach-stack-cards/AboutApproachStackCards.tsx +305 -0
- package/registry/blocks/about-approach-stack-cards/index.ts +9 -0
- package/registry/blocks/about-bento/AboutBento.tsx +442 -0
- package/registry/blocks/about-bento/index.ts +9 -0
- package/registry/blocks/about-collage-hero/AboutCollageHero.tsx +285 -0
- package/registry/blocks/about-collage-hero/index.ts +8 -0
- package/registry/blocks/about-color-bento/AboutColorBento.tsx +235 -0
- package/registry/blocks/about-color-bento/index.ts +6 -0
- package/registry/blocks/about-culture-masonry/AboutCultureMasonry.tsx +305 -0
- package/registry/blocks/about-culture-masonry/index.ts +9 -0
- package/registry/blocks/about-headline-photos/AboutHeadlinePhotos.tsx +270 -0
- package/registry/blocks/about-headline-photos/index.ts +8 -0
- package/registry/blocks/about-impact-stats-band/AboutImpactStatsBand.test.tsx +45 -0
- package/registry/blocks/about-impact-stats-band/AboutImpactStatsBand.tsx +348 -0
- package/registry/blocks/about-impact-stats-band/index.ts +9 -0
- package/registry/blocks/about-letter-card/AboutLetterCard.tsx +403 -0
- package/registry/blocks/about-letter-card/index.ts +9 -0
- package/registry/blocks/about-mission-statement-hero/AboutMissionStatementHero.tsx +282 -0
- package/registry/blocks/about-mission-statement-hero/index.ts +8 -0
- package/registry/blocks/about-numbered-rows/AboutNumberedRows.tsx +289 -0
- package/registry/blocks/about-numbered-rows/index.ts +7 -0
- package/registry/blocks/about-split-panel/AboutSplitPanel.tsx +247 -0
- package/registry/blocks/about-split-panel/index.ts +8 -0
- package/registry/blocks/about-spotlight/AboutSpotlight.tsx +260 -0
- package/registry/blocks/about-spotlight/index.ts +7 -0
- package/registry/blocks/about-statement-band/AboutStatementBand.tsx +236 -0
- package/registry/blocks/about-statement-band/index.ts +7 -0
- package/registry/blocks/about-story-photos/AboutStoryPhotos.test.tsx +12 -0
- package/registry/blocks/about-story-photos/AboutStoryPhotos.tsx +252 -0
- package/registry/blocks/about-story-photos/index.ts +8 -0
- package/registry/blocks/about-story-snapshots/AboutStorySnapshots.tsx +239 -0
- package/registry/blocks/about-story-snapshots/index.ts +8 -0
- package/registry/blocks/about-type-stack/AboutTypeStack.tsx +205 -0
- package/registry/blocks/about-type-stack/index.ts +6 -0
- package/registry/blocks/about-values-connector-list/AboutValuesConnectorList.tsx +316 -0
- package/registry/blocks/about-values-connector-list/index.ts +7 -0
- package/registry/blocks/about-values-focus/AboutValuesFocus.tsx +303 -0
- package/registry/blocks/about-values-focus/index.ts +8 -0
- package/registry/blocks/about-values-spotlight/AboutValuesSpotlight.tsx +265 -0
- package/registry/blocks/about-values-spotlight/index.ts +8 -0
- package/registry/blocks/auth-centered-card-sign-in/AuthCenteredCardSignIn.tsx +373 -0
- package/registry/blocks/auth-centered-card-sign-in/index.ts +9 -0
- package/registry/blocks/auth-check-your-email/AuthCheckYourEmail.tsx +366 -0
- package/registry/blocks/auth-check-your-email/index.ts +7 -0
- package/registry/blocks/auth-forgot-password/AuthForgotPassword.tsx +265 -0
- package/registry/blocks/auth-forgot-password/index.ts +8 -0
- package/registry/blocks/auth-locked-session-re-authenticate/AuthLockedSessionReAuthenticate.tsx +305 -0
- package/registry/blocks/auth-locked-session-re-authenticate/index.ts +8 -0
- package/registry/blocks/auth-magic-link-request/AuthMagicLinkRequest.tsx +336 -0
- package/registry/blocks/auth-magic-link-request/index.ts +8 -0
- package/registry/blocks/auth-minimal-centered-sign-in/AuthMinimalCenteredSignIn.tsx +261 -0
- package/registry/blocks/auth-minimal-centered-sign-in/index.ts +8 -0
- package/registry/blocks/auth-multi-step-sign-up-wizard/AuthMultiStepSignUpWizard.tsx +460 -0
- package/registry/blocks/auth-multi-step-sign-up-wizard/index.ts +8 -0
- package/registry/blocks/auth-otp-verification/AuthOtpVerification.tsx +348 -0
- package/registry/blocks/auth-otp-verification/index.ts +7 -0
- package/registry/blocks/auth-passkey-sign-in/AuthPasskeySignIn.tsx +294 -0
- package/registry/blocks/auth-passkey-sign-in/index.ts +8 -0
- package/registry/blocks/auth-password-changed/AuthPasswordChanged.tsx +239 -0
- package/registry/blocks/auth-password-changed/index.ts +8 -0
- package/registry/blocks/auth-phone-number-sign-in/AuthPhoneNumberSignIn.tsx +402 -0
- package/registry/blocks/auth-phone-number-sign-in/index.ts +10 -0
- package/registry/blocks/auth-photo-background-sign-in/AuthPhotoBackgroundSignIn.tsx +398 -0
- package/registry/blocks/auth-photo-background-sign-in/index.ts +10 -0
- package/registry/blocks/auth-profile-setup-onboarding/AuthProfileSetupOnboarding.tsx +420 -0
- package/registry/blocks/auth-profile-setup-onboarding/index.ts +7 -0
- package/registry/blocks/auth-qr-device-login/AuthQrDeviceLogin.tsx +303 -0
- package/registry/blocks/auth-qr-device-login/index.ts +7 -0
- package/registry/blocks/auth-reset-password/AuthResetPassword.tsx +313 -0
- package/registry/blocks/auth-reset-password/index.ts +7 -0
- package/registry/blocks/auth-sign-in-error-state/AuthSignInErrorState.tsx +419 -0
- package/registry/blocks/auth-sign-in-error-state/index.ts +9 -0
- package/registry/blocks/auth-sign-up-benefits-column/AuthSignUpBenefitsColumn.tsx +481 -0
- package/registry/blocks/auth-sign-up-benefits-column/index.ts +10 -0
- package/registry/blocks/auth-sign-up-password-strength/AuthSignUpPasswordStrength.tsx +511 -0
- package/registry/blocks/auth-sign-up-password-strength/index.ts +8 -0
- package/registry/blocks/auth-social-first-sign-in/AuthSocialFirstSignIn.tsx +337 -0
- package/registry/blocks/auth-social-first-sign-in/index.ts +9 -0
- package/registry/blocks/auth-split-photo-sign-in/AuthSplitPhotoSignIn.tsx +472 -0
- package/registry/blocks/auth-split-photo-sign-in/index.ts +11 -0
- package/registry/blocks/auth-split-testimonial-sign-up/AuthSplitTestimonialSignUp.tsx +548 -0
- package/registry/blocks/auth-split-testimonial-sign-up/index.ts +11 -0
- package/registry/blocks/auth-tabbed-sign-in-sign-up/AuthTabbedSignInSignUp.tsx +566 -0
- package/registry/blocks/auth-tabbed-sign-in-sign-up/index.ts +11 -0
- package/registry/blocks/auth-team-invite-accept/AuthTeamInviteAccept.tsx +372 -0
- package/registry/blocks/auth-team-invite-accept/index.ts +9 -0
- package/registry/blocks/auth-two-factor-authenticator/AuthTwoFactorAuthenticator.tsx +333 -0
- package/registry/blocks/auth-two-factor-authenticator/index.ts +7 -0
- package/registry/blocks/auth-two-factor-method-chooser/AuthTwoFactorMethodChooser.tsx +290 -0
- package/registry/blocks/auth-two-factor-method-chooser/index.ts +8 -0
- package/registry/blocks/auth-waitlist-early-access/AuthWaitlistEarlyAccess.tsx +430 -0
- package/registry/blocks/auth-waitlist-early-access/index.ts +11 -0
- package/registry/blocks/blog-cards-alongside.test.tsx +176 -0
- package/registry/blocks/blog-cards-author-spotlight/BlogCardsAuthorSpotlight.tsx +342 -0
- package/registry/blocks/blog-cards-author-spotlight/index.ts +6 -0
- package/registry/blocks/blog-cards-bento-editorial-grid/BlogCardsBentoEditorialGrid.tsx +345 -0
- package/registry/blocks/blog-cards-bento-editorial-grid/index.ts +7 -0
- package/registry/blocks/blog-cards-browse.test.tsx +367 -0
- package/registry/blocks/blog-cards-classic-3-up-grid/BlogCardsClassic3UpGrid.tsx +287 -0
- package/registry/blocks/blog-cards-classic-3-up-grid/index.ts +7 -0
- package/registry/blocks/blog-cards-compact-4-up-thumb-grid/BlogCardsCompact4UpThumbGrid.tsx +265 -0
- package/registry/blocks/blog-cards-compact-4-up-thumb-grid/index.ts +7 -0
- package/registry/blocks/blog-cards-dark-editorial-feature/BlogCardsDarkEditorialFeature.tsx +287 -0
- package/registry/blocks/blog-cards-dark-editorial-feature/index.ts +6 -0
- package/registry/blocks/blog-cards-featured-two-up/BlogCardsFeaturedTwoUp.tsx +295 -0
- package/registry/blocks/blog-cards-featured-two-up/index.ts +7 -0
- package/registry/blocks/blog-cards-features.test.tsx +183 -0
- package/registry/blocks/blog-cards-filter-sidebar-results/BlogCardsFilterSidebarResults.tsx +582 -0
- package/registry/blocks/blog-cards-filter-sidebar-results/index.ts +6 -0
- package/registry/blocks/blog-cards-grids.test.tsx +110 -0
- package/registry/blocks/blog-cards-hairline-text-index/BlogCardsHairlineTextIndex.tsx +193 -0
- package/registry/blocks/blog-cards-hairline-text-index/index.ts +7 -0
- package/registry/blocks/blog-cards-journal-bento/BlogCardsJournalBento.tsx +409 -0
- package/registry/blocks/blog-cards-journal-bento/index.ts +8 -0
- package/registry/blocks/blog-cards-latest-popular-split/BlogCardsLatestPopularSplit.tsx +258 -0
- package/registry/blocks/blog-cards-latest-popular-split/index.ts +7 -0
- package/registry/blocks/blog-cards-lead-ranked-picks/BlogCardsLeadRankedPicks.tsx +276 -0
- package/registry/blocks/blog-cards-lead-ranked-picks/index.ts +6 -0
- package/registry/blocks/blog-cards-left-thumb-row-cards/BlogCardsLeftThumbRowCards.tsx +288 -0
- package/registry/blocks/blog-cards-left-thumb-row-cards/index.ts +7 -0
- package/registry/blocks/blog-cards-lists.test.tsx +93 -0
- package/registry/blocks/blog-cards-magazine-cover-story/BlogCardsMagazineCoverStory.tsx +326 -0
- package/registry/blocks/blog-cards-magazine-cover-story/index.ts +6 -0
- package/registry/blocks/blog-cards-newsletter-latest/BlogCardsNewsletterLatest.tsx +291 -0
- package/registry/blocks/blog-cards-newsletter-latest/index.ts +6 -0
- package/registry/blocks/blog-cards-numbered-reading-list/BlogCardsNumberedReadingList.tsx +275 -0
- package/registry/blocks/blog-cards-numbered-reading-list/index.ts +7 -0
- package/registry/blocks/blog-cards-overlay-photo-trio/BlogCardsOverlayPhotoTrio.tsx +279 -0
- package/registry/blocks/blog-cards-overlay-photo-trio/index.ts +7 -0
- package/registry/blocks/blog-cards-post-carousel-with-controls/BlogCardsPostCarouselWithControls.tsx +257 -0
- package/registry/blocks/blog-cards-post-carousel-with-controls/index.ts +6 -0
- package/registry/blocks/blog-cards-pull-quote-feature/BlogCardsPullQuoteFeature.tsx +245 -0
- package/registry/blocks/blog-cards-pull-quote-feature/index.ts +6 -0
- package/registry/blocks/blog-cards-related-posts-strip/BlogCardsRelatedPostsStrip.tsx +247 -0
- package/registry/blocks/blog-cards-related-posts-strip/index.ts +6 -0
- package/registry/blocks/blog-cards-search-chips-results/BlogCardsSearchChipsResults.tsx +473 -0
- package/registry/blocks/blog-cards-search-chips-results/index.ts +6 -0
- package/registry/blocks/blog-cards-split-feature/BlogCardsSplitFeature.tsx +214 -0
- package/registry/blocks/blog-cards-split-feature/index.ts +6 -0
- package/registry/blocks/careers/careers.test.tsx +414 -0
- package/registry/blocks/careers/careers.tsx +391 -0
- package/registry/blocks/careers/index.ts +27 -0
- package/registry/blocks/careers-about-card-role-list/CareersAboutCardRoleList.tsx +235 -0
- package/registry/blocks/careers-about-card-role-list/index.ts +8 -0
- package/registry/blocks/careers-featured-role-spotlight/CareersFeaturedRoleSpotlight.tsx +271 -0
- package/registry/blocks/careers-featured-role-spotlight/index.ts +8 -0
- package/registry/blocks/careers-no-open-roles-empty-state/CareersNoOpenRolesEmptyState.tsx +330 -0
- package/registry/blocks/careers-no-open-roles-empty-state/index.ts +8 -0
- package/registry/blocks/careers-open-roles-hairline-list/CareersOpenRolesHairlineList.tsx +320 -0
- package/registry/blocks/careers-open-roles-hairline-list/index.ts +6 -0
- package/registry/blocks/careers-open-vacancies-table/CareersOpenVacanciesTable.tsx +493 -0
- package/registry/blocks/careers-open-vacancies-table/index.ts +6 -0
- package/registry/blocks/careers-perks-benefits/CareersPerksBenefits.tsx +181 -0
- package/registry/blocks/careers-perks-benefits/index.ts +8 -0
- package/registry/blocks/careers-role-cards-grid/CareersRoleCardsGrid.tsx +405 -0
- package/registry/blocks/careers-role-cards-grid/index.ts +6 -0
- package/registry/blocks/careers-role-detail-page/CareersRoleDetailPage.tsx +541 -0
- package/registry/blocks/careers-role-detail-page/index.ts +10 -0
- package/registry/blocks/careers-role-detail-panel/CareersRoleDetailPanel.tsx +255 -0
- package/registry/blocks/careers-role-detail-panel/index.ts +6 -0
- package/registry/blocks/careers-roles-by-department/CareersRolesByDepartment.tsx +242 -0
- package/registry/blocks/careers-roles-by-department/index.ts +7 -0
- package/registry/blocks/careers-roles-list-accordion-expanded/CareersRolesListAccordionExpanded.tsx +558 -0
- package/registry/blocks/careers-roles-list-accordion-expanded/index.ts +9 -0
- package/registry/blocks/contact-us/contact-us.test.tsx +239 -0
- package/registry/blocks/contact-us/contact-us.tsx +989 -0
- package/registry/blocks/contact-us/index.ts +34 -0
- package/registry/blocks/contact-us-bento-grid/ContactUsBentoGrid.tsx +304 -0
- package/registry/blocks/contact-us-bento-grid/index.ts +5 -0
- package/registry/blocks/contact-us-bento-grid.test.tsx +102 -0
- package/registry/blocks/contact-us-book-a-call/ContactUsBookACall.tsx +403 -0
- package/registry/blocks/contact-us-book-a-call/index.ts +7 -0
- package/registry/blocks/contact-us-book-a-call.test.tsx +134 -0
- package/registry/blocks/contact-us-classic-centered/ContactUsClassicCentered.tsx +199 -0
- package/registry/blocks/contact-us-classic-centered/index.ts +6 -0
- package/registry/blocks/contact-us-dark-statement/ContactUsDarkStatement.tsx +218 -0
- package/registry/blocks/contact-us-dark-statement/index.ts +6 -0
- package/registry/blocks/contact-us-editorial-and-address-card/ContactUsEditorialAndAddressCard.tsx +212 -0
- package/registry/blocks/contact-us-editorial-and-address-card/index.ts +6 -0
- package/registry/blocks/contact-us-editorial-statement/ContactUsEditorialStatement.tsx +205 -0
- package/registry/blocks/contact-us-editorial-statement/index.ts +6 -0
- package/registry/blocks/contact-us-form-contact-methods/ContactUsFormContactMethods.tsx +272 -0
- package/registry/blocks/contact-us-form-contact-methods/index.ts +6 -0
- package/registry/blocks/contact-us-form-with-faq/ContactUsFormWithFaq.tsx +383 -0
- package/registry/blocks/contact-us-form-with-faq/index.ts +7 -0
- package/registry/blocks/contact-us-form-with-faq.test.tsx +161 -0
- package/registry/blocks/contact-us-forms.test.tsx +333 -0
- package/registry/blocks/contact-us-global-offices-table/ContactUsGlobalOfficesTable.tsx +301 -0
- package/registry/blocks/contact-us-global-offices-table/index.ts +5 -0
- package/registry/blocks/contact-us-global-offices-table.test.tsx +100 -0
- package/registry/blocks/contact-us-grand-headline-form/ContactUsGrandHeadlineForm.tsx +180 -0
- package/registry/blocks/contact-us-grand-headline-form/index.ts +6 -0
- package/registry/blocks/contact-us-hours-and-availability/ContactUsHoursAndAvailability.tsx +412 -0
- package/registry/blocks/contact-us-hours-and-availability/index.ts +5 -0
- package/registry/blocks/contact-us-hours-and-availability.test.tsx +123 -0
- package/registry/blocks/contact-us-hq-feature/ContactUsHqFeature.tsx +281 -0
- package/registry/blocks/contact-us-hq-feature/index.ts +5 -0
- package/registry/blocks/contact-us-hq-feature.test.tsx +102 -0
- package/registry/blocks/contact-us-map-split/ContactUsMapSplit.tsx +211 -0
- package/registry/blocks/contact-us-map-split/index.ts +5 -0
- package/registry/blocks/contact-us-map-split.test.tsx +70 -0
- package/registry/blocks/contact-us-named-owners/ContactUsNamedOwners.tsx +324 -0
- package/registry/blocks/contact-us-named-owners/index.ts +6 -0
- package/registry/blocks/contact-us-named-owners.test.tsx +116 -0
- package/registry/blocks/contact-us-newsletter-combo/ContactUsNewsletterCombo.tsx +363 -0
- package/registry/blocks/contact-us-newsletter-combo/index.ts +6 -0
- package/registry/blocks/contact-us-newsletter-combo.test.tsx +165 -0
- package/registry/blocks/contact-us-office-cards/ContactUsOfficeCards.tsx +235 -0
- package/registry/blocks/contact-us-office-cards/index.ts +5 -0
- package/registry/blocks/contact-us-office-cards.test.tsx +71 -0
- package/registry/blocks/contact-us-oversized-wordmark/ContactUsOversizedWordmark.tsx +222 -0
- package/registry/blocks/contact-us-oversized-wordmark/index.ts +6 -0
- package/registry/blocks/contact-us-photo-and-dark-panel/ContactUsPhotoAndDarkPanel.tsx +185 -0
- package/registry/blocks/contact-us-photo-and-dark-panel/index.ts +6 -0
- package/registry/blocks/contact-us-photo-forms.test.tsx +311 -0
- package/registry/blocks/contact-us-pitch-and-inquiry/ContactUsPitchAndInquiry.tsx +202 -0
- package/registry/blocks/contact-us-pitch-and-inquiry/index.ts +6 -0
- package/registry/blocks/contact-us-rtl.test.tsx +105 -0
- package/registry/blocks/contact-us-ruled-split-form/ContactUsRuledSplitForm.tsx +214 -0
- package/registry/blocks/contact-us-ruled-split-form/index.ts +6 -0
- package/registry/blocks/contact-us-social-rail/ContactUsSocialRail.tsx +270 -0
- package/registry/blocks/contact-us-social-rail/index.ts +7 -0
- package/registry/blocks/contact-us-social-rail.test.tsx +121 -0
- package/registry/blocks/contact-us-split-photo-dark/ContactUsSplitPhotoDark.tsx +185 -0
- package/registry/blocks/contact-us-split-photo-dark/index.ts +6 -0
- package/registry/blocks/contact-us-support-channels/ContactUsSupportChannels.tsx +267 -0
- package/registry/blocks/contact-us-support-channels/index.ts +5 -0
- package/registry/blocks/contact-us-support-channels.test.tsx +81 -0
- package/registry/blocks/data-table/DataTable.test.tsx +1 -34
- package/registry/blocks/data-table/DataTable.tsx +0 -139
- package/registry/blocks/data-table/index.ts +1 -8
- package/registry/blocks/error-state-access-denied-403/ErrorStateAccessDenied403.tsx +324 -0
- package/registry/blocks/error-state-access-denied-403/index.ts +10 -0
- package/registry/blocks/error-state-broken-trail-breadcrumb/ErrorStateBrokenTrailBreadcrumb.tsx +179 -0
- package/registry/blocks/error-state-broken-trail-breadcrumb/index.ts +8 -0
- package/registry/blocks/error-state-centered-minimal/ErrorStateCenteredMinimal.tsx +119 -0
- package/registry/blocks/error-state-centered-minimal/index.ts +7 -0
- package/registry/blocks/error-state-colour-field-scatter/ErrorStateColourFieldScatter.tsx +144 -0
- package/registry/blocks/error-state-colour-field-scatter/index.ts +7 -0
- package/registry/blocks/error-state-countdown-redirect/ErrorStateCountdownRedirect.tsx +272 -0
- package/registry/blocks/error-state-countdown-redirect/index.ts +7 -0
- package/registry/blocks/error-state-dark-spotlight/ErrorStateDarkSpotlight.tsx +156 -0
- package/registry/blocks/error-state-dark-spotlight/index.ts +7 -0
- package/registry/blocks/error-state-display-numeral-split/ErrorStateDisplayNumeralSplit.tsx +156 -0
- package/registry/blocks/error-state-display-numeral-split/index.ts +8 -0
- package/registry/blocks/error-state-editorial-photo-split/ErrorStateEditorialPhotoSplit.tsx +156 -0
- package/registry/blocks/error-state-editorial-photo-split/index.ts +8 -0
- package/registry/blocks/error-state-empty-search-results/ErrorStateEmptySearchResults.tsx +243 -0
- package/registry/blocks/error-state-empty-search-results/index.ts +6 -0
- package/registry/blocks/error-state-error-card-panel/ErrorStateErrorCardPanel.tsx +213 -0
- package/registry/blocks/error-state-error-card-panel/index.ts +7 -0
- package/registry/blocks/error-state-full-bleed-photo/ErrorStateFullBleedPhoto.tsx +130 -0
- package/registry/blocks/error-state-full-bleed-photo/index.ts +8 -0
- package/registry/blocks/error-state-ghost-watermark/ErrorStateGhostWatermark.tsx +115 -0
- package/registry/blocks/error-state-ghost-watermark/index.ts +7 -0
- package/registry/blocks/error-state-helpful-links-list/ErrorStateHelpfulLinksList.tsx +185 -0
- package/registry/blocks/error-state-helpful-links-list/index.ts +8 -0
- package/registry/blocks/error-state-illustrated-empty-state/ErrorStateIllustratedEmptyState.tsx +201 -0
- package/registry/blocks/error-state-illustrated-empty-state/index.ts +7 -0
- package/registry/blocks/error-state-layered-badge-centered/ErrorStateLayeredBadgeCentered.tsx +138 -0
- package/registry/blocks/error-state-layered-badge-centered/index.ts +7 -0
- package/registry/blocks/error-state-light-editorial/ErrorStateLightEditorial.tsx +126 -0
- package/registry/blocks/error-state-light-editorial/index.ts +7 -0
- package/registry/blocks/error-state-maintenance-mode/ErrorStateMaintenanceMode.tsx +255 -0
- package/registry/blocks/error-state-maintenance-mode/index.ts +6 -0
- package/registry/blocks/error-state-marquee-404-band/ErrorStateMarquee404Band.tsx +316 -0
- package/registry/blocks/error-state-marquee-404-band/index.ts +7 -0
- package/registry/blocks/error-state-offline-state/ErrorStateOfflineState.tsx +188 -0
- package/registry/blocks/error-state-offline-state/index.ts +7 -0
- package/registry/blocks/error-state-photo-collage-scatter/ErrorStatePhotoCollageScatter.tsx +224 -0
- package/registry/blocks/error-state-photo-collage-scatter/index.ts +8 -0
- package/registry/blocks/error-state-popular-pages-grid/ErrorStatePopularPagesGrid.tsx +195 -0
- package/registry/blocks/error-state-popular-pages-grid/index.ts +9 -0
- package/registry/blocks/error-state-recovery-bento/ErrorStateRecoveryBento.tsx +274 -0
- package/registry/blocks/error-state-recovery-bento/index.ts +7 -0
- package/registry/blocks/error-state-search-recovery/ErrorStateSearchRecovery.tsx +173 -0
- package/registry/blocks/error-state-search-recovery/index.ts +7 -0
- package/registry/blocks/error-state-server-error-500/ErrorStateServerError500.tsx +277 -0
- package/registry/blocks/error-state-server-error-500/index.ts +9 -0
- package/registry/blocks/error-state-sitemap-columns/ErrorStateSitemapColumns.tsx +192 -0
- package/registry/blocks/error-state-sitemap-columns/index.ts +9 -0
- package/registry/blocks/error-state-split-colour-panel/ErrorStateSplitColourPanel.tsx +156 -0
- package/registry/blocks/error-state-split-colour-panel/index.ts +7 -0
- package/registry/blocks/error-state-support-escalation-band/ErrorStateSupportEscalationBand.tsx +186 -0
- package/registry/blocks/error-state-support-escalation-band/index.ts +8 -0
- package/registry/blocks/error-state-terminal-console/ErrorStateTerminalConsole.tsx +208 -0
- package/registry/blocks/error-state-terminal-console/index.ts +8 -0
- package/registry/blocks/faq-accent-active-card/FaqAccentActiveCard.tsx +186 -0
- package/registry/blocks/faq-accent-active-card/index.ts +1 -0
- package/registry/blocks/faq-category-chip-grid/FaqCategoryChipGrid.tsx +425 -0
- package/registry/blocks/faq-category-chip-grid/index.ts +8 -0
- package/registry/blocks/faq-category-columns/FaqCategoryColumns.tsx +248 -0
- package/registry/blocks/faq-category-columns/index.ts +8 -0
- package/registry/blocks/faq-chat-thread/FaqChatThread.tsx +273 -0
- package/registry/blocks/faq-chat-thread/index.ts +7 -0
- package/registry/blocks/faq-classic-centered/FaqClassicCentered.tsx +190 -0
- package/registry/blocks/faq-classic-centered/index.ts +7 -0
- package/registry/blocks/faq-contact-cta-card/FaqContactCtaCard.tsx +229 -0
- package/registry/blocks/faq-contact-cta-card/index.ts +9 -0
- package/registry/blocks/faq-dark-panel/FaqDarkPanel.tsx +186 -0
- package/registry/blocks/faq-dark-panel/index.ts +1 -0
- package/registry/blocks/faq-featured-question/FaqFeaturedQuestion.tsx +221 -0
- package/registry/blocks/faq-featured-question/index.ts +1 -0
- package/registry/blocks/faq-grouped-sections/FaqGroupedSections.tsx +266 -0
- package/registry/blocks/faq-grouped-sections/index.ts +8 -0
- package/registry/blocks/faq-help-hero-popular/FaqHelpHeroPopular.tsx +212 -0
- package/registry/blocks/faq-help-hero-popular/index.ts +7 -0
- package/registry/blocks/faq-masonry-cards/FaqMasonryCards.tsx +268 -0
- package/registry/blocks/faq-masonry-cards/index.ts +7 -0
- package/registry/blocks/faq-media-split/FaqMediaSplit.tsx +197 -0
- package/registry/blocks/faq-media-split/index.ts +8 -0
- package/registry/blocks/faq-mono-index/FaqMonoIndex.tsx +247 -0
- package/registry/blocks/faq-mono-index/index.ts +1 -0
- package/registry/blocks/faq-newsletter-close/FaqNewsletterClose.tsx +314 -0
- package/registry/blocks/faq-newsletter-close/index.ts +8 -0
- package/registry/blocks/faq-numbered-editorial/FaqNumberedEditorial.tsx +190 -0
- package/registry/blocks/faq-numbered-editorial/index.ts +1 -0
- package/registry/blocks/faq-search-categories/FaqSearchCategories.tsx +312 -0
- package/registry/blocks/faq-search-categories/index.ts +8 -0
- package/registry/blocks/faq-sidebar-nav/FaqSidebarNav.tsx +390 -0
- package/registry/blocks/faq-sidebar-nav/index.ts +8 -0
- package/registry/blocks/faq-soft-filled-rows/FaqSoftFilledRows.tsx +209 -0
- package/registry/blocks/faq-soft-filled-rows/index.ts +1 -0
- package/registry/blocks/faq-split-sticky/FaqSplitSticky.tsx +205 -0
- package/registry/blocks/faq-split-sticky/index.ts +7 -0
- package/registry/blocks/faq-support-channels/FaqSupportChannels.tsx +266 -0
- package/registry/blocks/faq-support-channels/index.ts +8 -0
- package/registry/blocks/faq-support-stats/FaqSupportStats.tsx +242 -0
- package/registry/blocks/faq-support-stats/index.ts +8 -0
- package/registry/blocks/faq-table-compact/FaqTableCompact.tsx +220 -0
- package/registry/blocks/faq-table-compact/index.ts +1 -0
- package/registry/blocks/faq-tabs-by-topic/FaqTabsByTopic.tsx +347 -0
- package/registry/blocks/faq-tabs-by-topic/index.ts +8 -0
- package/registry/blocks/faq-topic-tiles/FaqTopicTiles.tsx +254 -0
- package/registry/blocks/faq-topic-tiles/index.ts +7 -0
- package/registry/blocks/faq-two-column-grid/FaqTwoColumnGrid.tsx +256 -0
- package/registry/blocks/faq-two-column-grid/index.ts +7 -0
- package/registry/blocks/faq-uppercase-dense/FaqUppercaseDense.tsx +213 -0
- package/registry/blocks/faq-uppercase-dense/index.ts +1 -0
- package/registry/blocks/features/features.tsx +164 -0
- package/registry/blocks/features/index.ts +12 -0
- package/registry/blocks/features-accordion-photo/FeaturesAccordionPhoto.tsx +149 -0
- package/registry/blocks/features-accordion-photo/index.ts +7 -0
- package/registry/blocks/features-colour-block-cards/FeaturesColourBlockCards.tsx +118 -0
- package/registry/blocks/features-colour-block-cards/index.ts +8 -0
- package/registry/blocks/features-compact-icon-index/FeaturesCompactIconIndex.tsx +136 -0
- package/registry/blocks/features-compact-icon-index/index.ts +7 -0
- package/registry/blocks/features-compare-panels-chat-answer/FeaturesComparePanelsChatAnswer.tsx +346 -0
- package/registry/blocks/features-compare-panels-chat-answer/index.ts +8 -0
- package/registry/blocks/features-editorial-photo-split/FeaturesEditorialPhotoSplit.tsx +118 -0
- package/registry/blocks/features-editorial-photo-split/index.ts +7 -0
- package/registry/blocks/features-expanding-step-cards/FeaturesExpandingStepCards.tsx +300 -0
- package/registry/blocks/features-expanding-step-cards/index.ts +7 -0
- package/registry/blocks/features-feature-checklist-columns/FeaturesFeatureChecklistColumns.tsx +158 -0
- package/registry/blocks/features-feature-checklist-columns/index.ts +7 -0
- package/registry/blocks/features-feature-list-thumbnails/FeaturesFeatureListThumbnails.tsx +137 -0
- package/registry/blocks/features-feature-list-thumbnails/index.ts +7 -0
- package/registry/blocks/features-full-bleed-photo-banner/FeaturesFullBleedPhotoBanner.tsx +116 -0
- package/registry/blocks/features-full-bleed-photo-banner/index.ts +7 -0
- package/registry/blocks/features-icon-card-grid/FeaturesIconCardGrid.tsx +120 -0
- package/registry/blocks/features-icon-card-grid/index.ts +7 -0
- package/registry/blocks/features-icon-titled-preview-rail/FeaturesIconTitledPreviewRail.tsx +321 -0
- package/registry/blocks/features-icon-titled-preview-rail/index.ts +7 -0
- package/registry/blocks/features-icons-numbers.test.tsx +107 -0
- package/registry/blocks/features-interactive.test.tsx +175 -0
- package/registry/blocks/features-media-rail/FeaturesMediaRail.tsx +119 -0
- package/registry/blocks/features-media-rail/index.ts +7 -0
- package/registry/blocks/features-notched-photo-columns/FeaturesNotchedPhotoColumns.tsx +209 -0
- package/registry/blocks/features-notched-photo-columns/index.ts +7 -0
- package/registry/blocks/features-numbered-feature-rows/FeaturesNumberedFeatureRows.tsx +107 -0
- package/registry/blocks/features-numbered-feature-rows/index.ts +7 -0
- package/registry/blocks/features-numbered-steps-floating-cards/FeaturesNumberedStepsFloatingCards.tsx +324 -0
- package/registry/blocks/features-numbered-steps-floating-cards/index.ts +8 -0
- package/registry/blocks/features-perforated-photo-strip/FeaturesPerforatedPhotoStrip.tsx +218 -0
- package/registry/blocks/features-perforated-photo-strip/index.ts +7 -0
- package/registry/blocks/features-photo-bento/FeaturesPhotoBento.tsx +160 -0
- package/registry/blocks/features-photo-bento/index.ts +8 -0
- package/registry/blocks/features-photo-carousel/FeaturesPhotoCarousel.tsx +249 -0
- package/registry/blocks/features-photo-carousel/index.ts +7 -0
- package/registry/blocks/features-photo-collage/FeaturesPhotoCollage.tsx +143 -0
- package/registry/blocks/features-photo-collage/index.ts +7 -0
- package/registry/blocks/features-photo-feature-chips/FeaturesPhotoFeatureChips.tsx +125 -0
- package/registry/blocks/features-photo-feature-chips/index.ts +7 -0
- package/registry/blocks/features-photo-led.test.tsx +177 -0
- package/registry/blocks/features-photo-tabs-panel/FeaturesPhotoTabsPanel.tsx +197 -0
- package/registry/blocks/features-photo-tabs-panel/index.ts +7 -0
- package/registry/blocks/features-portrait-photo-cards-link-row/FeaturesPortraitPhotoCardsLinkRow.tsx +202 -0
- package/registry/blocks/features-portrait-photo-cards-link-row/index.ts +7 -0
- package/registry/blocks/features-product-in-use.test.tsx +188 -0
- package/registry/blocks/features-showcase-card-pair/FeaturesShowcaseCardPair.tsx +161 -0
- package/registry/blocks/features-showcase-card-pair/index.ts +7 -0
- package/registry/blocks/features-solid-colour-cards/FeaturesSolidColourCards.tsx +264 -0
- package/registry/blocks/features-solid-colour-cards/index.ts +7 -0
- package/registry/blocks/features-split-photo-icon-list/FeaturesSplitPhotoIconList.tsx +117 -0
- package/registry/blocks/features-split-photo-icon-list/index.ts +7 -0
- package/registry/blocks/features-stat-feature-band/FeaturesStatFeatureBand.tsx +114 -0
- package/registry/blocks/features-stat-feature-band/index.ts +7 -0
- package/registry/blocks/features-tinted-product-bento/FeaturesTintedProductBento.tsx +252 -0
- package/registry/blocks/features-tinted-product-bento/index.ts +7 -0
- package/registry/blocks/footer/footer.test.tsx +253 -0
- package/registry/blocks/footer/footer.tsx +554 -0
- package/registry/blocks/footer/index.ts +31 -0
- package/registry/blocks/footer-accordion-sitemap/FooterAccordionSitemap.tsx +260 -0
- package/registry/blocks/footer-accordion-sitemap/index.ts +7 -0
- package/registry/blocks/footer-bars.test.tsx +121 -0
- package/registry/blocks/footer-bento-tile/FooterBentoTile.tsx +331 -0
- package/registry/blocks/footer-bento-tile/index.ts +6 -0
- package/registry/blocks/footer-big-question-cta/FooterBigQuestionCta.tsx +250 -0
- package/registry/blocks/footer-big-question-cta/index.ts +6 -0
- package/registry/blocks/footer-big-type-link-stack/FooterBigTypeLinkStack.tsx +275 -0
- package/registry/blocks/footer-big-type-link-stack/index.ts +6 -0
- package/registry/blocks/footer-brand-panel-split/FooterBrandPanelSplit.tsx +163 -0
- package/registry/blocks/footer-brand-panel-split/index.ts +6 -0
- package/registry/blocks/footer-brand.test.tsx +608 -0
- package/registry/blocks/footer-careers-culture/FooterCareersCulture.tsx +297 -0
- package/registry/blocks/footer-careers-culture/index.ts +7 -0
- package/registry/blocks/footer-centered-brand-minimal/FooterCenteredBrandMinimal.tsx +121 -0
- package/registry/blocks/footer-centered-brand-minimal/index.ts +6 -0
- package/registry/blocks/footer-commerce.test.tsx +208 -0
- package/registry/blocks/footer-community-events/FooterCommunityEvents.tsx +263 -0
- package/registry/blocks/footer-community-events/index.ts +8 -0
- package/registry/blocks/footer-community.test.tsx +309 -0
- package/registry/blocks/footer-contact-first/FooterContactFirst.tsx +242 -0
- package/registry/blocks/footer-contact-first/index.ts +7 -0
- package/registry/blocks/footer-contact.test.tsx +285 -0
- package/registry/blocks/footer-controls.test.tsx +78 -0
- package/registry/blocks/footer-cta-band-columns/FooterCtaBandColumns.tsx +225 -0
- package/registry/blocks/footer-cta-band-columns/index.ts +6 -0
- package/registry/blocks/footer-cta.test.tsx +445 -0
- package/registry/blocks/footer-dashboard-slim-bar/FooterDashboardSlimBar.tsx +148 -0
- package/registry/blocks/footer-dashboard-slim-bar/index.ts +6 -0
- package/registry/blocks/footer-docs-page/FooterDocsPage.tsx +261 -0
- package/registry/blocks/footer-docs-page/index.ts +9 -0
- package/registry/blocks/footer-ecommerce-mega/FooterEcommerceMega.tsx +289 -0
- package/registry/blocks/footer-ecommerce-mega/index.ts +6 -0
- package/registry/blocks/footer-floating-demo-card/FooterFloatingDemoCard.tsx +261 -0
- package/registry/blocks/footer-floating-demo-card/index.ts +6 -0
- package/registry/blocks/footer-four-column-directory/FooterFourColumnDirectory.tsx +104 -0
- package/registry/blocks/footer-four-column-directory/index.ts +6 -0
- package/registry/blocks/footer-giant-wordmark/FooterGiantWordmark.tsx +252 -0
- package/registry/blocks/footer-giant-wordmark/index.ts +6 -0
- package/registry/blocks/footer-image-backed-brand/FooterImageBackedBrand.tsx +251 -0
- package/registry/blocks/footer-image-backed-brand/index.ts +6 -0
- package/registry/blocks/footer-index-numbered-columns/FooterIndexNumberedColumns.tsx +236 -0
- package/registry/blocks/footer-index-numbered-columns/index.ts +7 -0
- package/registry/blocks/footer-inline-preferences/FooterInlinePreferences.tsx +164 -0
- package/registry/blocks/footer-inline-preferences/index.ts +7 -0
- package/registry/blocks/footer-legal-first-slim/FooterLegalFirstSlim.tsx +174 -0
- package/registry/blocks/footer-legal-first-slim/index.ts +6 -0
- package/registry/blocks/footer-legal.test.tsx +180 -0
- package/registry/blocks/footer-local-business/FooterLocalBusiness.tsx +258 -0
- package/registry/blocks/footer-local-business/index.ts +7 -0
- package/registry/blocks/footer-marquee-strip/FooterMarqueeStrip.tsx +244 -0
- package/registry/blocks/footer-marquee-strip/index.ts +6 -0
- package/registry/blocks/footer-multi-region/FooterMultiRegion.tsx +310 -0
- package/registry/blocks/footer-multi-region/index.ts +7 -0
- package/registry/blocks/footer-newsletter-split/FooterNewsletterSplit.tsx +255 -0
- package/registry/blocks/footer-newsletter-split/index.ts +6 -0
- package/registry/blocks/footer-product-family-switcher/FooterProductFamilySwitcher.tsx +241 -0
- package/registry/blocks/footer-product-family-switcher/index.ts +7 -0
- package/registry/blocks/footer-service-promise-band/FooterServicePromiseBand.tsx +237 -0
- package/registry/blocks/footer-service-promise-band/index.ts +7 -0
- package/registry/blocks/footer-single-line-bar/FooterSingleLineBar.tsx +107 -0
- package/registry/blocks/footer-single-line-bar/index.ts +6 -0
- package/registry/blocks/footer-sitemap.test.tsx +390 -0
- package/registry/blocks/footer-split-hairline-micro/FooterSplitHairlineMicro.tsx +100 -0
- package/registry/blocks/footer-split-hairline-micro/index.ts +6 -0
- package/registry/blocks/footer-support-contact/FooterSupportContact.tsx +204 -0
- package/registry/blocks/footer-support-contact/index.ts +7 -0
- package/registry/blocks/footer-trust-compliance/FooterTrustCompliance.tsx +234 -0
- package/registry/blocks/footer-trust-compliance/index.ts +7 -0
- package/registry/blocks/footer-two-row-compact/FooterTwoRowCompact.tsx +124 -0
- package/registry/blocks/footer-two-row-compact/index.ts +6 -0
- package/registry/blocks/footer-two-tier-doormat/FooterTwoTierDoormat.tsx +232 -0
- package/registry/blocks/footer-two-tier-doormat/index.ts +8 -0
- package/registry/blocks/footer-utility.test.tsx +406 -0
- package/registry/blocks/footer-wide-sitemap-mega/FooterWideSitemapMega.tsx +227 -0
- package/registry/blocks/footer-wide-sitemap-mega/index.ts +6 -0
- package/registry/blocks/gallery-album-cards/GalleryAlbumCards.tsx +243 -0
- package/registry/blocks/gallery-album-cards/index.ts +8 -0
- package/registry/blocks/gallery-before-after-compare/GalleryBeforeAfterCompare.tsx +269 -0
- package/registry/blocks/gallery-before-after-compare/index.ts +7 -0
- package/registry/blocks/gallery-contact-sheet-wall/GalleryContactSheetWall.tsx +299 -0
- package/registry/blocks/gallery-contact-sheet-wall/index.ts +9 -0
- package/registry/blocks/gallery-culture-photo-grid/GalleryCulturePhotoGrid.tsx +203 -0
- package/registry/blocks/gallery-culture-photo-grid/index.ts +8 -0
- package/registry/blocks/gallery-dark-cinema-wall/GalleryDarkCinemaWall.tsx +180 -0
- package/registry/blocks/gallery-dark-cinema-wall/index.ts +7 -0
- package/registry/blocks/gallery-editorial-split/GalleryEditorialSplit.tsx +188 -0
- package/registry/blocks/gallery-editorial-split/index.ts +8 -0
- package/registry/blocks/gallery-featured-thumb-rail/GalleryFeaturedThumbRail.tsx +397 -0
- package/registry/blocks/gallery-featured-thumb-rail/index.ts +8 -0
- package/registry/blocks/gallery-filmstrip-carousel/GalleryFilmstripCarousel.tsx +384 -0
- package/registry/blocks/gallery-filmstrip-carousel/index.ts +8 -0
- package/registry/blocks/gallery-filter-tabs-grid/GalleryFilterTabsGrid.tsx +403 -0
- package/registry/blocks/gallery-filter-tabs-grid/index.ts +9 -0
- package/registry/blocks/gallery-full-bleed-slider/GalleryFullBleedSlider.tsx +309 -0
- package/registry/blocks/gallery-full-bleed-slider/index.ts +8 -0
- package/registry/blocks/gallery-horizontal-scroll-rail/GalleryHorizontalScrollRail.tsx +300 -0
- package/registry/blocks/gallery-horizontal-scroll-rail/index.ts +8 -0
- package/registry/blocks/gallery-hover-caption-cards/GalleryHoverCaptionCards.tsx +244 -0
- package/registry/blocks/gallery-hover-caption-cards/index.ts +8 -0
- package/registry/blocks/gallery-hover-index-list/GalleryHoverIndexList.tsx +253 -0
- package/registry/blocks/gallery-hover-index-list/index.ts +9 -0
- package/registry/blocks/gallery-lightbox-viewer/GalleryLightboxViewer.tsx +329 -0
- package/registry/blocks/gallery-lightbox-viewer/index.ts +7 -0
- package/registry/blocks/gallery-masonry-gallery/GalleryMasonryGallery.tsx +251 -0
- package/registry/blocks/gallery-masonry-gallery/index.ts +7 -0
- package/registry/blocks/gallery-mosaic-statement-tile/GalleryMosaicStatementTile.tsx +159 -0
- package/registry/blocks/gallery-mosaic-statement-tile/index.ts +8 -0
- package/registry/blocks/gallery-photo-bento/GalleryPhotoBento.tsx +166 -0
- package/registry/blocks/gallery-photo-bento/index.ts +8 -0
- package/registry/blocks/gallery-photo-spotlight/GalleryPhotoSpotlight.tsx +305 -0
- package/registry/blocks/gallery-photo-spotlight/index.ts +9 -0
- package/registry/blocks/gallery-scattered-collage/GalleryScatteredCollage.tsx +286 -0
- package/registry/blocks/gallery-scattered-collage/index.ts +9 -0
- package/registry/blocks/gallery-social-feed-strip/GallerySocialFeedStrip.tsx +288 -0
- package/registry/blocks/gallery-social-feed-strip/index.ts +8 -0
- package/registry/blocks/gallery-timeline-gallery/GalleryTimelineGallery.tsx +243 -0
- package/registry/blocks/gallery-timeline-gallery/index.ts +8 -0
- package/registry/blocks/gallery-video-gallery/GalleryVideoGallery.tsx +362 -0
- package/registry/blocks/gallery-video-gallery/index.ts +8 -0
- package/registry/blocks/hero-annotated-object/HeroAnnotatedObject.tsx +310 -0
- package/registry/blocks/hero-annotated-object/index.ts +10 -0
- package/registry/blocks/hero-arc-gallery/HeroArcGallery.tsx +244 -0
- package/registry/blocks/hero-arc-gallery/index.ts +9 -0
- package/registry/blocks/hero-bento-split/HeroBentoSplit.tsx +266 -0
- package/registry/blocks/hero-bento-split/index.ts +9 -0
- package/registry/blocks/hero-brand-color-block/HeroBrandColorBlock.tsx +259 -0
- package/registry/blocks/hero-brand-color-block/index.ts +8 -0
- package/registry/blocks/hero-colour-stage/HeroColourStage.tsx +292 -0
- package/registry/blocks/hero-colour-stage/index.ts +8 -0
- package/registry/blocks/hero-component-pattern/HeroComponentPattern.tsx +248 -0
- package/registry/blocks/hero-component-pattern/index.ts +9 -0
- package/registry/blocks/hero-curved-media-rail/HeroCurvedMediaRail.tsx +272 -0
- package/registry/blocks/hero-curved-media-rail/index.ts +8 -0
- package/registry/blocks/hero-duo-card/HeroDuoCard.tsx +210 -0
- package/registry/blocks/hero-duo-card/index.ts +8 -0
- package/registry/blocks/hero-editorial-arch/HeroEditorialArch.tsx +226 -0
- package/registry/blocks/hero-editorial-arch/index.ts +10 -0
- package/registry/blocks/hero-editorial-triptych/HeroEditorialTriptych.tsx +252 -0
- package/registry/blocks/hero-editorial-triptych/index.ts +9 -0
- package/registry/blocks/hero-floating-integrations/HeroFloatingIntegrations.tsx +454 -0
- package/registry/blocks/hero-floating-integrations/index.ts +11 -0
- package/registry/blocks/hero-framed-full-bleed/HeroFramedFullBleed.tsx +226 -0
- package/registry/blocks/hero-framed-full-bleed/index.ts +9 -0
- package/registry/blocks/hero-framed-studio-card/HeroFramedStudioCard.tsx +264 -0
- package/registry/blocks/hero-framed-studio-card/index.ts +8 -0
- package/registry/blocks/hero-illustration-split/HeroIllustrationSplit.tsx +200 -0
- package/registry/blocks/hero-illustration-split/index.ts +8 -0
- package/registry/blocks/hero-inline-image-headline/HeroInlineImageHeadline.tsx +305 -0
- package/registry/blocks/hero-inline-image-headline/index.ts +8 -0
- package/registry/blocks/hero-masked-type-reveal/HeroMaskedTypeReveal.tsx +323 -0
- package/registry/blocks/hero-masked-type-reveal/index.ts +9 -0
- package/registry/blocks/hero-motion.test.tsx +185 -0
- package/registry/blocks/hero-orbit-track/HeroOrbitTrack.tsx +238 -0
- package/registry/blocks/hero-orbit-track/index.ts +8 -0
- package/registry/blocks/hero-photo-constellation/HeroPhotoConstellation.tsx +228 -0
- package/registry/blocks/hero-photo-constellation/index.ts +8 -0
- package/registry/blocks/hero-scramble-decode/HeroScrambleDecode.tsx +381 -0
- package/registry/blocks/hero-scramble-decode/index.ts +7 -0
- package/registry/blocks/hero-shape-grid/HeroShapeGrid.tsx +279 -0
- package/registry/blocks/hero-shape-grid/index.ts +8 -0
- package/registry/blocks/hero-split-band-headline/HeroSplitBandHeadline.tsx +242 -0
- package/registry/blocks/hero-split-band-headline/index.ts +8 -0
- package/registry/blocks/hero-split-flap-counters/HeroSplitFlapCounters.tsx +323 -0
- package/registry/blocks/hero-split-flap-counters/index.ts +8 -0
- package/registry/blocks/hero-studio-mosaic/HeroStudioMosaic.tsx +332 -0
- package/registry/blocks/hero-studio-mosaic/index.ts +9 -0
- package/registry/blocks/hero-textured-dark/HeroTexturedDark.tsx +378 -0
- package/registry/blocks/hero-textured-dark/index.ts +10 -0
- package/registry/blocks/hero-twin-panels/HeroTwinPanels.tsx +231 -0
- package/registry/blocks/hero-twin-panels/index.ts +9 -0
- package/registry/blocks/hero-velocity-marquee/HeroVelocityMarquee.tsx +392 -0
- package/registry/blocks/hero-velocity-marquee/index.ts +8 -0
- package/registry/blocks/hero-video-in-type/HeroVideoInType.tsx +374 -0
- package/registry/blocks/hero-video-in-type/index.ts +9 -0
- package/registry/blocks/hero-video-spotlight/HeroVideoSpotlight.tsx +292 -0
- package/registry/blocks/hero-video-spotlight/index.ts +9 -0
- package/registry/blocks/hero-wave-band/HeroWaveBand.tsx +309 -0
- package/registry/blocks/hero-wave-band/index.ts +8 -0
- package/registry/blocks/how-it-works/how-it-works.tsx +330 -0
- package/registry/blocks/how-it-works/index.ts +28 -0
- package/registry/blocks/how-it-works-accordion-steps/HowItWorksAccordionSteps.tsx +213 -0
- package/registry/blocks/how-it-works-accordion-steps/index.ts +7 -0
- package/registry/blocks/how-it-works-center-spine-timeline/HowItWorksCenterSpineTimeline.tsx +200 -0
- package/registry/blocks/how-it-works-center-spine-timeline/index.ts +7 -0
- package/registry/blocks/how-it-works-column-panels/HowItWorksColumnPanels.tsx +299 -0
- package/registry/blocks/how-it-works-column-panels/index.ts +6 -0
- package/registry/blocks/how-it-works-contained-timeline/HowItWorksContainedTimeline.tsx +223 -0
- package/registry/blocks/how-it-works-contained-timeline/index.ts +8 -0
- package/registry/blocks/how-it-works-diagonal-photo-collage/HowItWorksDiagonalPhotoCollage.tsx +170 -0
- package/registry/blocks/how-it-works-diagonal-photo-collage/index.ts +7 -0
- package/registry/blocks/how-it-works-fanned-dissolve-cards/HowItWorksFannedDissolveCards.tsx +258 -0
- package/registry/blocks/how-it-works-fanned-dissolve-cards/index.ts +8 -0
- package/registry/blocks/how-it-works-full-bleed-step-panel/HowItWorksFullBleedStepPanel.tsx +319 -0
- package/registry/blocks/how-it-works-full-bleed-step-panel/index.ts +7 -0
- package/registry/blocks/how-it-works-grids.test.tsx +292 -0
- package/registry/blocks/how-it-works-interactive.test.tsx +262 -0
- package/registry/blocks/how-it-works-numbered-editorial-rows/HowItWorksNumberedEditorialRows.tsx +177 -0
- package/registry/blocks/how-it-works-numbered-editorial-rows/index.ts +7 -0
- package/registry/blocks/how-it-works-numbered-instruction-panels/HowItWorksNumberedInstructionPanels.tsx +226 -0
- package/registry/blocks/how-it-works-numbered-instruction-panels/index.ts +6 -0
- package/registry/blocks/how-it-works-numbered-photo-steps/HowItWorksNumberedPhotoSteps.tsx +150 -0
- package/registry/blocks/how-it-works-numbered-photo-steps/index.ts +7 -0
- package/registry/blocks/how-it-works-orbital-process/HowItWorksOrbitalProcess.tsx +317 -0
- package/registry/blocks/how-it-works-orbital-process/index.ts +7 -0
- package/registry/blocks/how-it-works-overlay-numeral-cards/HowItWorksOverlayNumeralCards.tsx +145 -0
- package/registry/blocks/how-it-works-overlay-numeral-cards/index.ts +7 -0
- package/registry/blocks/how-it-works-phase-line/HowItWorksPhaseLine.tsx +147 -0
- package/registry/blocks/how-it-works-phase-line/index.ts +8 -0
- package/registry/blocks/how-it-works-photo-bento-steps/HowItWorksPhotoBentoSteps.tsx +178 -0
- package/registry/blocks/how-it-works-photo-bento-steps/index.ts +7 -0
- package/registry/blocks/how-it-works-photo-rail-progress/HowItWorksPhotoRailProgress.tsx +231 -0
- package/registry/blocks/how-it-works-photo-rail-progress/index.ts +7 -0
- package/registry/blocks/how-it-works-pill-timeline/HowItWorksPillTimeline.tsx +181 -0
- package/registry/blocks/how-it-works-pill-timeline/index.ts +8 -0
- package/registry/blocks/how-it-works-rounded-cards-device-crop/HowItWorksRoundedCardsDeviceCrop.tsx +286 -0
- package/registry/blocks/how-it-works-rounded-cards-device-crop/index.ts +6 -0
- package/registry/blocks/how-it-works-six-card-grid/HowItWorksSixCardGrid.tsx +385 -0
- package/registry/blocks/how-it-works-six-card-grid/index.ts +6 -0
- package/registry/blocks/how-it-works-split-feature-band/HowItWorksSplitFeatureBand.tsx +316 -0
- package/registry/blocks/how-it-works-split-feature-band/index.ts +6 -0
- package/registry/blocks/how-it-works-split-photo-step-list/HowItWorksSplitPhotoStepList.tsx +179 -0
- package/registry/blocks/how-it-works-split-photo-step-list/index.ts +7 -0
- package/registry/blocks/how-it-works-stacked-media-text/HowItWorksStackedMediaText.tsx +310 -0
- package/registry/blocks/how-it-works-stacked-media-text/index.ts +8 -0
- package/registry/blocks/how-it-works-step-tabs-photo-panel/HowItWorksStepTabsPhotoPanel.tsx +245 -0
- package/registry/blocks/how-it-works-step-tabs-photo-panel/index.ts +7 -0
- package/registry/blocks/how-it-works-tall-visual-rail/HowItWorksTallVisualRail.tsx +349 -0
- package/registry/blocks/how-it-works-tall-visual-rail/index.ts +7 -0
- package/registry/blocks/how-it-works-timelines.test.tsx +265 -0
- package/registry/blocks/how-it-works-vertical-timeline-card/HowItWorksVerticalTimelineCard.tsx +169 -0
- package/registry/blocks/how-it-works-vertical-timeline-card/index.ts +8 -0
- package/registry/blocks/how-it-works-visual-steps.test.tsx +368 -0
- package/registry/blocks/logo-cloud-bento-logo-wall/LogoCloudBentoLogoWall.tsx +159 -0
- package/registry/blocks/logo-cloud-bento-logo-wall/index.ts +7 -0
- package/registry/blocks/logo-cloud-bordered-cell-grid/LogoCloudBorderedCellGrid.tsx +132 -0
- package/registry/blocks/logo-cloud-bordered-cell-grid/index.ts +7 -0
- package/registry/blocks/logo-cloud-centered-caption-row/LogoCloudCenteredCaptionRow.tsx +141 -0
- package/registry/blocks/logo-cloud-centered-caption-row/index.ts +7 -0
- package/registry/blocks/logo-cloud-contained-card/LogoCloudContainedCard.tsx +106 -0
- package/registry/blocks/logo-cloud-contained-card/index.ts +7 -0
- package/registry/blocks/logo-cloud-dark-logo-wall/LogoCloudDarkLogoWall.tsx +123 -0
- package/registry/blocks/logo-cloud-dark-logo-wall/index.ts +7 -0
- package/registry/blocks/logo-cloud-divider-rule-row/LogoCloudDividerRuleRow.tsx +156 -0
- package/registry/blocks/logo-cloud-divider-rule-row/index.ts +7 -0
- package/registry/blocks/logo-cloud-editorial-eyebrow-split/LogoCloudEditorialEyebrowSplit.tsx +121 -0
- package/registry/blocks/logo-cloud-editorial-eyebrow-split/index.ts +7 -0
- package/registry/blocks/logo-cloud-enterprise-wall/LogoCloudEnterpriseWall.tsx +114 -0
- package/registry/blocks/logo-cloud-enterprise-wall/index.ts +7 -0
- package/registry/blocks/logo-cloud-flanked-heading/LogoCloudFlankedHeading.tsx +162 -0
- package/registry/blocks/logo-cloud-flanked-heading/index.ts +8 -0
- package/registry/blocks/logo-cloud-grid-closing-cta/LogoCloudGridClosingCta.tsx +173 -0
- package/registry/blocks/logo-cloud-grid-closing-cta/index.ts +8 -0
- package/registry/blocks/logo-cloud-heading-grid/LogoCloudHeadingGrid.tsx +124 -0
- package/registry/blocks/logo-cloud-heading-grid/index.ts +7 -0
- package/registry/blocks/logo-cloud-heading-left-grid-right/LogoCloudHeadingLeftGridRight.tsx +172 -0
- package/registry/blocks/logo-cloud-heading-left-grid-right/index.ts +8 -0
- package/registry/blocks/logo-cloud-logo-metric-tiles/LogoCloudLogoMetricTiles.tsx +159 -0
- package/registry/blocks/logo-cloud-logo-metric-tiles/index.ts +8 -0
- package/registry/blocks/logo-cloud-logo-quote-cards/LogoCloudLogoQuoteCards.tsx +162 -0
- package/registry/blocks/logo-cloud-logo-quote-cards/index.ts +8 -0
- package/registry/blocks/logo-cloud-logo-testimonial-strip/LogoCloudLogoTestimonialStrip.tsx +159 -0
- package/registry/blocks/logo-cloud-logo-testimonial-strip/index.ts +8 -0
- package/registry/blocks/logo-cloud-named-integration-cards/LogoCloudNamedIntegrationCards.tsx +186 -0
- package/registry/blocks/logo-cloud-named-integration-cards/index.ts +9 -0
- package/registry/blocks/logo-cloud-pyramid-row-stack/LogoCloudPyramidRowStack.tsx +156 -0
- package/registry/blocks/logo-cloud-pyramid-row-stack/index.ts +7 -0
- package/registry/blocks/logo-cloud-quote-panel-grid/LogoCloudQuotePanelGrid.tsx +177 -0
- package/registry/blocks/logo-cloud-quote-panel-grid/index.ts +8 -0
- package/registry/blocks/logo-cloud-scatter-field/LogoCloudScatterField.tsx +190 -0
- package/registry/blocks/logo-cloud-scatter-field/index.ts +8 -0
- package/registry/blocks/logo-cloud-side-label-rail/LogoCloudSideLabelRail.tsx +139 -0
- package/registry/blocks/logo-cloud-side-label-rail/index.ts +7 -0
- package/registry/blocks/logo-cloud-stat-rail-above-grid/LogoCloudStatRailAboveGrid.tsx +173 -0
- package/registry/blocks/logo-cloud-stat-rail-above-grid/index.ts +8 -0
- package/registry/blocks/logo-cloud-tabbed-industry-filter/LogoCloudTabbedIndustryFilter.tsx +200 -0
- package/registry/blocks/logo-cloud-tabbed-industry-filter/index.ts +8 -0
- package/registry/blocks/navbar/index.ts +22 -11
- package/registry/blocks/navbar/navbar.test.tsx +42 -0
- package/registry/blocks/navbar/navbar.tsx +455 -0
- package/registry/blocks/navbar-active-action-with-border/NavbarActiveActionWithBorder.tsx +120 -0
- package/registry/blocks/navbar-active-action-with-border/index.ts +6 -0
- package/registry/blocks/navbar-active-action-with-round/NavbarActiveActionWithRound.tsx +120 -0
- package/registry/blocks/navbar-active-action-with-round/index.ts +6 -0
- package/registry/blocks/navbar-centered-floating/NavbarCenteredFloating.tsx +121 -0
- package/registry/blocks/navbar-centered-floating/index.ts +6 -0
- package/registry/blocks/navbar-default/NavbarDefault.tsx +102 -0
- package/registry/blocks/navbar-default/index.ts +6 -0
- package/registry/blocks/navbar-e-commerce/NavbarECommerce.tsx +212 -0
- package/registry/blocks/navbar-e-commerce/index.ts +6 -0
- package/registry/blocks/navbar-extended-at-top/NavbarExtendedAtTop.tsx +155 -0
- package/registry/blocks/navbar-extended-at-top/index.ts +7 -0
- package/registry/blocks/navbar-multiple-action/NavbarMultipleAction.tsx +133 -0
- package/registry/blocks/navbar-multiple-action/index.ts +6 -0
- package/registry/blocks/navbar-multiple-icon/NavbarMultipleIcon.tsx +132 -0
- package/registry/blocks/navbar-multiple-icon/index.ts +6 -0
- package/registry/blocks/navbar-rounded/NavbarRounded.tsx +140 -0
- package/registry/blocks/navbar-rounded/index.ts +6 -0
- package/registry/blocks/navbar-rounded-small/NavbarRoundedSmall.tsx +143 -0
- package/registry/blocks/navbar-rounded-small/index.ts +6 -0
- package/registry/blocks/navbar-small/NavbarSmall.tsx +142 -0
- package/registry/blocks/navbar-small/index.ts +6 -0
- package/registry/blocks/navbar-with-centered-logo/NavbarWithCenteredLogo.tsx +118 -0
- package/registry/blocks/navbar-with-centered-logo/index.ts +6 -0
- package/registry/blocks/navbar-with-cta-button/NavbarWithCtaButton.tsx +131 -0
- package/registry/blocks/navbar-with-cta-button/index.ts +6 -0
- package/registry/blocks/navbar-with-dropdown/NavbarWithDropdown.tsx +118 -0
- package/registry/blocks/navbar-with-dropdown/index.ts +6 -0
- package/registry/blocks/navbar-with-icon-indicator-avatar/NavbarWithIconIndicatorAvatar.tsx +85 -0
- package/registry/blocks/navbar-with-icon-indicator-avatar/index.ts +6 -0
- package/registry/blocks/navbar-with-search-input/NavbarWithSearchInput.tsx +90 -0
- package/registry/blocks/navbar-with-search-input/index.ts +6 -0
- package/registry/blocks/navbar-with-submenu/NavbarWithSubmenu.tsx +156 -0
- package/registry/blocks/navbar-with-submenu/index.ts +6 -0
- package/registry/blocks/page-header/PageHeader.tsx +5 -9
- package/registry/blocks/pricing/index.ts +20 -0
- package/registry/blocks/pricing/pricing.test.tsx +82 -0
- package/registry/blocks/pricing/pricing.tsx +343 -0
- package/registry/blocks/pricing-comparison-matrix/PricingComparisonMatrix.tsx +336 -0
- package/registry/blocks/pricing-comparison-matrix/index.ts +10 -0
- package/registry/blocks/pricing-plan-picker-summary/PricingPlanPickerSummary.tsx +399 -0
- package/registry/blocks/pricing-plan-picker-summary/index.ts +8 -0
- package/registry/blocks/pricing-plan-spotlight/PricingPlanSpotlight.tsx +281 -0
- package/registry/blocks/pricing-plan-spotlight/index.ts +7 -0
- package/registry/blocks/pricing-tiers/PricingTiers.tsx +264 -0
- package/registry/blocks/pricing-tiers/index.ts +8 -0
- package/registry/blocks/pricing-two-plan-compare/PricingTwoPlanCompare.tsx +187 -0
- package/registry/blocks/pricing-two-plan-compare/index.ts +7 -0
- package/registry/blocks/social-proof/index.ts +36 -0
- package/registry/blocks/social-proof/social-proof.test.tsx +504 -0
- package/registry/blocks/social-proof/social-proof.tsx +759 -0
- package/registry/blocks/social-proof-app-review-row/SocialProofAppReviewRow.tsx +168 -0
- package/registry/blocks/social-proof-app-review-row/index.ts +7 -0
- package/registry/blocks/social-proof-arch-portrait-quote/SocialProofArchPortraitQuote.tsx +114 -0
- package/registry/blocks/social-proof-arch-portrait-quote/index.ts +6 -0
- package/registry/blocks/social-proof-avatar-selector-row/SocialProofAvatarSelectorRow.tsx +276 -0
- package/registry/blocks/social-proof-avatar-selector-row/index.ts +7 -0
- package/registry/blocks/social-proof-benefit-title-cards/SocialProofBenefitTitleCards.tsx +182 -0
- package/registry/blocks/social-proof-benefit-title-cards/index.ts +8 -0
- package/registry/blocks/social-proof-bracket-framed-quote/SocialProofBracketFramedQuote.tsx +120 -0
- package/registry/blocks/social-proof-bracket-framed-quote/index.ts +6 -0
- package/registry/blocks/social-proof-case-study-row/SocialProofCaseStudyRow.tsx +210 -0
- package/registry/blocks/social-proof-case-study-row/index.ts +7 -0
- package/registry/blocks/social-proof-centered-logo-spotlight/SocialProofCenteredLogoSpotlight.tsx +103 -0
- package/registry/blocks/social-proof-centered-logo-spotlight/index.ts +6 -0
- package/registry/blocks/social-proof-classic-trio-grid/SocialProofClassicTrioGrid.tsx +138 -0
- package/registry/blocks/social-proof-classic-trio-grid/index.ts +7 -0
- package/registry/blocks/social-proof-dark-editorial-split/SocialProofDarkEditorialSplit.tsx +111 -0
- package/registry/blocks/social-proof-dark-editorial-split/index.ts +6 -0
- package/registry/blocks/social-proof-giant-quote-duo/SocialProofGiantQuoteDuo.tsx +156 -0
- package/registry/blocks/social-proof-giant-quote-duo/index.ts +8 -0
- package/registry/blocks/social-proof-highlighted-phrase-spotlight/SocialProofHighlightedPhraseSpotlight.tsx +130 -0
- package/registry/blocks/social-proof-highlighted-phrase-spotlight/index.ts +7 -0
- package/registry/blocks/social-proof-overlay-photo-quote/SocialProofOverlayPhotoQuote.tsx +111 -0
- package/registry/blocks/social-proof-overlay-photo-quote/index.ts +7 -0
- package/registry/blocks/social-proof-persona-pillars/SocialProofPersonaPillars.tsx +253 -0
- package/registry/blocks/social-proof-persona-pillars/index.ts +7 -0
- package/registry/blocks/social-proof-progress-carousel/SocialProofProgressCarousel.tsx +249 -0
- package/registry/blocks/social-proof-progress-carousel/index.ts +8 -0
- package/registry/blocks/social-proof-proof-bento/SocialProofProofBento.tsx +218 -0
- package/registry/blocks/social-proof-proof-bento/index.ts +6 -0
- package/registry/blocks/social-proof-spotlight-carousel/SocialProofSpotlightCarousel.tsx +212 -0
- package/registry/blocks/social-proof-spotlight-carousel/index.ts +7 -0
- package/registry/blocks/social-proof-staggered-columns/SocialProofStaggeredColumns.tsx +227 -0
- package/registry/blocks/social-proof-staggered-columns/index.ts +7 -0
- package/registry/blocks/social-proof-stat-story-cards/SocialProofStatStoryCards.tsx +218 -0
- package/registry/blocks/social-proof-stat-story-cards/index.ts +7 -0
- package/registry/blocks/social-proof-tinted-panel-portrait/SocialProofTintedPanelPortrait.tsx +130 -0
- package/registry/blocks/social-proof-tinted-panel-portrait/index.ts +7 -0
- package/registry/blocks/social-proof-tweet-wall/SocialProofTweetWall.tsx +179 -0
- package/registry/blocks/social-proof-tweet-wall/index.ts +7 -0
- package/registry/blocks/social-proof-vertical-column-wall/SocialProofVerticalColumnWall.tsx +220 -0
- package/registry/blocks/social-proof-vertical-column-wall/index.ts +7 -0
- package/registry/blocks/social-proof-video-story-cards/SocialProofVideoStoryCards.tsx +177 -0
- package/registry/blocks/social-proof-video-story-cards/index.ts +7 -0
- package/registry/blocks/social-proof-workplace-portrait-stories/SocialProofWorkplacePortraitStories.tsx +320 -0
- package/registry/blocks/social-proof-workplace-portrait-stories/index.ts +7 -0
- package/registry/blocks/team/index.ts +21 -0
- package/registry/blocks/team/team-classes.test.ts +35 -0
- package/registry/blocks/team/team.tsx +315 -0
- package/registry/blocks/team-annotated-portrait-lineup/TeamAnnotatedPortraitLineup.tsx +310 -0
- package/registry/blocks/team-annotated-portrait-lineup/index.ts +8 -0
- package/registry/blocks/team-annotated-portrait-lineup/team-annotated-portrait-lineup.test.tsx +71 -0
- package/registry/blocks/team-compact-directory-rows/TeamCompactDirectoryRows.tsx +190 -0
- package/registry/blocks/team-compact-directory-rows/compact-directory-rows.test.tsx +40 -0
- package/registry/blocks/team-compact-directory-rows/index.ts +7 -0
- package/registry/blocks/team-department-tabs-directory/TeamDepartmentTabsDirectory.tsx +414 -0
- package/registry/blocks/team-department-tabs-directory/department-tabs-directory.test.tsx +87 -0
- package/registry/blocks/team-department-tabs-directory/index.ts +10 -0
- package/registry/blocks/team-founder-spotlight/TeamFounderSpotlight.tsx +176 -0
- package/registry/blocks/team-founder-spotlight/index.ts +8 -0
- package/registry/blocks/team-founder-spotlight/team-founder-spotlight.test.tsx +70 -0
- package/registry/blocks/team-grid-backdrop-roster/TeamGridBackdropRoster.tsx +234 -0
- package/registry/blocks/team-grid-backdrop-roster/grid-backdrop-roster.test.tsx +72 -0
- package/registry/blocks/team-grid-backdrop-roster/index.ts +8 -0
- package/registry/blocks/team-hairline-grid/TeamHairlineGrid.tsx +190 -0
- package/registry/blocks/team-hairline-grid/hairline-grid.test.tsx +49 -0
- package/registry/blocks/team-hairline-grid/index.ts +1 -0
- package/registry/blocks/team-leadership-grid/TeamLeadershipGrid.tsx +183 -0
- package/registry/blocks/team-leadership-grid/index.ts +7 -0
- package/registry/blocks/team-leadership-grid/team-leadership-grid.test.tsx +38 -0
- package/registry/blocks/team-member-carousel/TeamMemberCarousel.tsx +178 -0
- package/registry/blocks/team-member-carousel/index.ts +7 -0
- package/registry/blocks/team-member-carousel/team-member-carousel.test.tsx +58 -0
- package/registry/blocks/team-member-table/TeamMemberTable.tsx +184 -0
- package/registry/blocks/team-member-table/index.ts +7 -0
- package/registry/blocks/team-member-table/member-table.test.tsx +43 -0
- package/registry/blocks/team-meta-profile-cards/TeamMetaProfileCards.tsx +155 -0
- package/registry/blocks/team-meta-profile-cards/index.ts +7 -0
- package/registry/blocks/team-meta-profile-cards/team-meta-profile-cards.test.tsx +29 -0
- package/registry/blocks/team-overlay-portrait-cards/TeamOverlayPortraitCards.tsx +145 -0
- package/registry/blocks/team-overlay-portrait-cards/index.ts +7 -0
- package/registry/blocks/team-overlay-portrait-cards/team-overlay-portrait-cards.test.tsx +49 -0
- package/registry/blocks/team-portrait-wall/TeamPortraitWall.tsx +131 -0
- package/registry/blocks/team-portrait-wall/index.ts +1 -0
- package/registry/blocks/team-portrait-wall/portrait-wall.test.tsx +45 -0
- package/registry/blocks/team-split-intro-member-rail/TeamSplitIntroMemberRail.tsx +203 -0
- package/registry/blocks/team-split-intro-member-rail/index.ts +7 -0
- package/registry/blocks/team-split-intro-member-rail/split-intro-member-rail.test.tsx +52 -0
- package/registry/blocks/team-we-re-hiring-cta/TeamWeReHiringCta.tsx +192 -0
- package/registry/blocks/team-we-re-hiring-cta/index.ts +7 -0
- package/registry/blocks/team-we-re-hiring-cta/we-re-hiring-cta.test.tsx +44 -0
- package/registry/blocks/video-call/index.ts +53 -0
- package/registry/blocks/video-call/video-call-around.test.tsx +427 -0
- package/registry/blocks/video-call/video-call-before.test.tsx +438 -0
- package/registry/blocks/video-call/video-call-hero.test.tsx +236 -0
- package/registry/blocks/video-call/video-call-stages.test.tsx +477 -0
- package/registry/blocks/video-call/video-call.test.tsx +794 -0
- package/registry/blocks/video-call/video-call.tsx +1282 -0
- package/registry/blocks/video-call-ai-meeting-recap/VideoCallAiMeetingRecap.tsx +466 -0
- package/registry/blocks/video-call-ai-meeting-recap/index.ts +9 -0
- package/registry/blocks/video-call-call-controls-dock/VideoCallCallControlsDock.tsx +211 -0
- package/registry/blocks/video-call-call-controls-dock/index.ts +6 -0
- package/registry/blocks/video-call-call-ended-summary/VideoCallCallEndedSummary.tsx +464 -0
- package/registry/blocks/video-call-call-ended-summary/index.ts +10 -0
- package/registry/blocks/video-call-call-with-side-panel/VideoCallCallWithSidePanel.tsx +357 -0
- package/registry/blocks/video-call-call-with-side-panel/index.ts +6 -0
- package/registry/blocks/video-call-captions-reactions/VideoCallCaptionsReactions.tsx +467 -0
- package/registry/blocks/video-call-captions-reactions/index.ts +10 -0
- package/registry/blocks/video-call-grid-gallery-call/VideoCallGridGalleryCall.tsx +312 -0
- package/registry/blocks/video-call-grid-gallery-call/index.ts +6 -0
- package/registry/blocks/video-call-hero-call-mockup/VideoCallHeroCallMockup.tsx +349 -0
- package/registry/blocks/video-call-hero-call-mockup/index.ts +7 -0
- package/registry/blocks/video-call-incoming-call/VideoCallIncomingCall.tsx +336 -0
- package/registry/blocks/video-call-incoming-call/index.ts +7 -0
- package/registry/blocks/video-call-join-link-dial-in/VideoCallJoinLinkDialIn.tsx +409 -0
- package/registry/blocks/video-call-join-link-dial-in/index.ts +9 -0
- package/registry/blocks/video-call-pre-join-lobby/VideoCallPreJoinLobby.tsx +345 -0
- package/registry/blocks/video-call-pre-join-lobby/index.ts +7 -0
- package/registry/blocks/video-call-screen-share-stage/VideoCallScreenShareStage.tsx +379 -0
- package/registry/blocks/video-call-screen-share-stage/index.ts +7 -0
- package/registry/blocks/video-call-speaker-filmstrip/VideoCallSpeakerFilmstrip.tsx +303 -0
- package/registry/blocks/video-call-speaker-filmstrip/index.ts +6 -0
- package/registry/blocks/video-call-upcoming-meetings/VideoCallUpcomingMeetings.tsx +349 -0
- package/registry/blocks/video-call-upcoming-meetings/index.ts +7 -0
- package/registry/blocks/video-call-waiting-room-knock/VideoCallWaitingRoomKnock.tsx +412 -0
- package/registry/blocks/video-call-waiting-room-knock/index.ts +7 -0
- package/registry/text-props-undefined.test.tsx +3 -26
- package/registry/ui/accordion/accordion.test.tsx +320 -0
- package/registry/ui/accordion/accordion.tsx +353 -0
- package/registry/ui/accordion/index.ts +15 -0
- package/registry/ui/alert/alert.test.tsx +325 -0
- package/registry/ui/alert/alert.tsx +384 -0
- package/registry/ui/alert/index.ts +10 -0
- package/registry/ui/alert-dialog/alert-dialog.test.tsx +396 -0
- package/registry/ui/alert-dialog/alert-dialog.tsx +423 -0
- package/registry/ui/alert-dialog/index.ts +21 -0
- package/registry/ui/avatar/avatar.test.tsx +2 -2
- package/registry/ui/avatar/avatar.tsx +3 -7
- package/registry/ui/breadcrumb/breadcrumb.test.tsx +305 -0
- package/registry/ui/breadcrumb/breadcrumb.tsx +205 -0
- package/registry/ui/breadcrumb/index.ts +11 -0
- package/registry/ui/button/button.test.tsx +353 -40
- package/registry/ui/button/button.tsx +304 -30
- package/registry/ui/calendar/calendar.test.tsx +192 -0
- package/registry/ui/calendar/calendar.tsx +405 -0
- package/registry/ui/calendar/index.ts +1 -0
- package/registry/ui/carousel/carousel.test.tsx +720 -0
- package/registry/ui/carousel/carousel.tsx +554 -0
- package/registry/ui/carousel/index.ts +11 -0
- package/registry/ui/checkbox/checkbox.test.tsx +318 -2
- package/registry/ui/checkbox/checkbox.tsx +253 -67
- package/registry/ui/checkbox/index.ts +1 -1
- package/registry/ui/content-carousel/content-carousel.test.tsx +303 -0
- package/registry/ui/content-carousel/content-carousel.tsx +180 -0
- package/registry/ui/content-carousel/index.ts +8 -0
- package/registry/ui/date-picker/date-picker.test.tsx +216 -0
- package/registry/ui/date-picker/date-picker.tsx +461 -0
- package/registry/ui/date-picker/index.ts +8 -0
- package/registry/ui/dialog/dialog.test.tsx +438 -0
- package/registry/ui/dialog/dialog.tsx +533 -0
- package/registry/ui/dialog/index.ts +20 -0
- package/registry/ui/dropdown-menu/dropdown-menu.test.tsx +502 -0
- package/registry/ui/dropdown-menu/dropdown-menu.tsx +627 -0
- package/registry/ui/dropdown-menu/index.ts +32 -0
- package/registry/ui/fasla-logo/fasla-logo.tsx +101 -0
- package/registry/ui/fasla-logo/index.ts +1 -0
- package/registry/ui/input/index.ts +10 -1
- package/registry/ui/input/input.test.tsx +251 -44
- package/registry/ui/input/input.tsx +311 -40
- package/registry/ui/input-number/index.ts +1 -0
- package/registry/ui/input-number/input-number.test.tsx +302 -0
- package/registry/ui/input-number/input-number.tsx +398 -0
- package/registry/ui/input-otp/index.ts +7 -0
- package/registry/ui/input-otp/input-otp.test.tsx +299 -0
- package/registry/ui/input-otp/input-otp.tsx +279 -0
- package/registry/ui/pagination/index.ts +12 -0
- package/registry/ui/pagination/pagination.test.tsx +330 -0
- package/registry/ui/pagination/pagination.tsx +336 -0
- package/registry/ui/progress/index.ts +8 -0
- package/registry/ui/progress/progress.test.tsx +168 -0
- package/registry/ui/progress/progress.tsx +165 -0
- package/registry/ui/select/index.ts +12 -1
- package/registry/ui/select/select.test.tsx +505 -0
- package/registry/ui/select/select.tsx +658 -56
- package/registry/ui/sheet/index.ts +19 -0
- package/registry/ui/sheet/sheet.test.tsx +411 -0
- package/registry/ui/sheet/sheet.tsx +496 -0
- package/registry/{blocks → ui}/sidebar/index.ts +10 -5
- package/registry/ui/sidebar/sidebar.test.tsx +224 -0
- package/registry/ui/sidebar/sidebar.tsx +754 -0
- package/registry/ui/slider/index.ts +8 -0
- package/registry/ui/slider/slider.test.tsx +231 -0
- package/registry/ui/slider/slider.tsx +319 -0
- package/registry/ui/social-icons/index.ts +1 -0
- package/registry/ui/social-icons/social-icons.tsx +284 -0
- package/registry/ui/steps/index.ts +16 -0
- package/registry/ui/steps/steps.test.tsx +435 -0
- package/registry/ui/steps/steps.tsx +571 -0
- package/registry/ui/switch/switch.tsx +3 -2
- package/registry/ui/tabs/index.ts +4 -0
- package/registry/ui/tabs/tabs.test.tsx +576 -0
- package/registry/ui/tabs/tabs.tsx +324 -112
- package/registry/ui/textarea/index.ts +1 -1
- package/registry/ui/textarea/textarea.test.tsx +294 -0
- package/registry/ui/textarea/textarea.tsx +329 -56
- package/registry/ui/tooltip/index.ts +14 -0
- package/registry/ui/tooltip/tooltip.test.tsx +301 -0
- package/registry/ui/tooltip/tooltip.tsx +409 -0
- package/registry.json +9702 -139
- package/tailwind-preset.ts +2 -2
- package/registry/blocks/navbar/Navbar.test.tsx +0 -12
- package/registry/blocks/navbar/Navbar.tsx +0 -175
- package/registry/blocks/sidebar/Sidebar.test.tsx +0 -39
- package/registry/blocks/sidebar/Sidebar.tsx +0 -212
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { cn } from "../../../src/lib/utils"
|
|
5
|
+
import {
|
|
6
|
+
SocialProofAuthor,
|
|
7
|
+
SocialProofHeader,
|
|
8
|
+
SocialProofQuote,
|
|
9
|
+
SocialProofRule,
|
|
10
|
+
SocialProofSection,
|
|
11
|
+
SocialProofStars,
|
|
12
|
+
type SocialProofLocale,
|
|
13
|
+
type SocialProofPerson,
|
|
14
|
+
type SocialProofPhotos,
|
|
15
|
+
} from "../social-proof/social-proof"
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
* Figma: `Social Proof` (46368:3361), Type=Classic Trio Grid.
|
|
19
|
+
*
|
|
20
|
+
* A centred header over three testimonial cards. Each card holds five stars,
|
|
21
|
+
* the quote, a hairline and its author. The cards hug their content: a longer
|
|
22
|
+
* quote makes its card taller, and the cards in a row share the tallest one's
|
|
23
|
+
* height.
|
|
24
|
+
*
|
|
25
|
+
* Desktop sets the three cards in one row; Tablet two to a row and the third
|
|
26
|
+
* across the full width; phones one under another.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
export interface SocialProofClassicTrioGridItem {
|
|
30
|
+
/** Up to 154 characters in English, 136 in Arabic. */
|
|
31
|
+
quote: React.ReactNode
|
|
32
|
+
author: SocialProofPerson
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface SocialProofClassicTrioGridCopy {
|
|
36
|
+
heading: React.ReactNode
|
|
37
|
+
description: React.ReactNode
|
|
38
|
+
/** The cards, in reading order. Three, as Figma lays them out. */
|
|
39
|
+
items: SocialProofClassicTrioGridItem[]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Figma's copy, English and Arabic. Every person and company is invented. */
|
|
43
|
+
const COPY: Record<SocialProofLocale, SocialProofClassicTrioGridCopy> = {
|
|
44
|
+
en: {
|
|
45
|
+
heading: "Loved by the teams that ship",
|
|
46
|
+
description: "Real feedback from designers and engineers building with Fasla every day.",
|
|
47
|
+
items: [
|
|
48
|
+
{
|
|
49
|
+
quote: "“Fasla replaced three tools the day we onboarded. Our design reviews went from hours of nitpicking to actually shipping.”",
|
|
50
|
+
author: { id: "sami-naji", name: "Sami Naji", role: "Product Lead, Nimbus Labs" },
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
quote: "“The tokens map one-to-one with our codebase. Dark mode took an afternoon instead of a quarter.”",
|
|
54
|
+
author: { id: "khalid-saad", name: "Khalid Saad", role: "Frontend Lead, Atlas Freight" },
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
quote: "“Every new hire is productive in week one. The documentation reads like it was written for humans.”",
|
|
58
|
+
author: { id: "rashed-al-amri", name: "Rashed Al-Amri", role: "Design Ops Manager, Willow & Co" },
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
ar: {
|
|
63
|
+
heading: "خيار الفرق التي تُطلق منتجاتها",
|
|
64
|
+
description: "آراء حقيقية من مصممين ومهندسين يعملون بفاصلة كل يوم.",
|
|
65
|
+
items: [
|
|
66
|
+
{
|
|
67
|
+
quote: "«أغنتنا فاصلة عن ثلاث أدوات من اليوم الأول، وصارت مراجعات التصميم تنتهي بالإطلاق لا بساعات من التدقيق.»",
|
|
68
|
+
author: { id: "sami-naji", name: "سامي ناجي", role: "قائد المنتج، نيمبوس لابس" },
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
quote: "«تتطابق رموز التصميم مع شيفرتنا تطابقًا تامًا، وأنجزنا الوضع الداكن في نصف يوم بدل ربع سنة.»",
|
|
72
|
+
author: { id: "khalid-saad", name: "خالد سعد", role: "قائد الواجهات الأمامية، أطلس فريت" },
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
quote: "«يبدأ كل موظف جديد العمل الفعلي في أسبوعه الأول، فالتوثيق مكتوب بلغة يفهمها الجميع.»",
|
|
76
|
+
author: { id: "rashed-al-amri", name: "راشد العمري", role: "مدير عمليات التصميم، ويلو آند كو" },
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface SocialProofClassicTrioGridProps
|
|
83
|
+
extends Omit<React.HTMLAttributes<HTMLElement>, "title">,
|
|
84
|
+
Partial<SocialProofClassicTrioGridCopy> {
|
|
85
|
+
/** Which language the default copy is in. The page's `dir` sets the direction. */
|
|
86
|
+
locale?: SocialProofLocale
|
|
87
|
+
/** Avatar photos by person id. Without them the avatars show initials. */
|
|
88
|
+
photos?: SocialProofPhotos
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function SocialProofClassicTrioGrid({
|
|
92
|
+
locale = "en",
|
|
93
|
+
heading,
|
|
94
|
+
description,
|
|
95
|
+
items,
|
|
96
|
+
photos,
|
|
97
|
+
className,
|
|
98
|
+
...props
|
|
99
|
+
}: SocialProofClassicTrioGridProps) {
|
|
100
|
+
const copy = COPY[locale]
|
|
101
|
+
const headingId = React.useId()
|
|
102
|
+
const list = items ?? copy.items
|
|
103
|
+
|
|
104
|
+
return (
|
|
105
|
+
<SocialProofSection labelledBy={headingId} className={className} contentClassName="gap-16" {...props}>
|
|
106
|
+
<SocialProofHeader headingId={headingId} heading={heading ?? copy.heading} description={description === undefined ? copy.description : description} />
|
|
107
|
+
<ul
|
|
108
|
+
className={cn(
|
|
109
|
+
"grid w-full grid-cols-1 gap-5",
|
|
110
|
+
"[@container(min-width:40rem)]:grid-cols-2 [@container(min-width:40rem)]:gap-6 [@container(min-width:64rem)]:grid-flow-col [@container(min-width:64rem)]:grid-cols-none [@container(min-width:64rem)]:auto-cols-fr"
|
|
111
|
+
)}
|
|
112
|
+
>
|
|
113
|
+
{list.map((item, index) => (
|
|
114
|
+
<li
|
|
115
|
+
key={index}
|
|
116
|
+
className={cn(
|
|
117
|
+
"min-w-0 rounded-xl bg-card p-8 shadow-sm ring-1 ring-inset ring-border forced-colors:border",
|
|
118
|
+
"[@container(min-width:40rem)]:[&:last-child:nth-child(odd)]:col-span-2 [@container(min-width:64rem)]:[&:last-child:nth-child(odd)]:col-span-1"
|
|
119
|
+
)}
|
|
120
|
+
>
|
|
121
|
+
<figure className="m-0 flex flex-col gap-5">
|
|
122
|
+
<SocialProofStars locale={locale} />
|
|
123
|
+
<SocialProofQuote quote={item.quote} className="text-base text-foreground" />
|
|
124
|
+
<SocialProofRule />
|
|
125
|
+
<SocialProofAuthor person={item.author} photos={photos} roleSize="sm" />
|
|
126
|
+
</figure>
|
|
127
|
+
</li>
|
|
128
|
+
))}
|
|
129
|
+
</ul>
|
|
130
|
+
</SocialProofSection>
|
|
131
|
+
)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* The default copy, English and Arabic, as `locale` picks it. Spread it to
|
|
136
|
+
* change a few strings and keep the rest.
|
|
137
|
+
*/
|
|
138
|
+
export const socialProofClassicTrioGridCopy = COPY
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { Quote } from "lucide-react"
|
|
5
|
+
import { cn } from "../../../src/lib/utils"
|
|
6
|
+
import {
|
|
7
|
+
Isolated,
|
|
8
|
+
SocialProofPhoto,
|
|
9
|
+
SocialProofQuote,
|
|
10
|
+
SocialProofSection,
|
|
11
|
+
type SocialProofLocale,
|
|
12
|
+
type SocialProofPerson,
|
|
13
|
+
type SocialProofPhotos,
|
|
14
|
+
} from "../social-proof/social-proof"
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
* Figma: `Social Proof` (46368:3361), Type=Dark Editorial Split.
|
|
18
|
+
*
|
|
19
|
+
* One quote on the inverse band (`background-inverse`, its text
|
|
20
|
+
* `foreground-inverse`): a quote mark, the quote in 2XL Light (XL on phones)
|
|
21
|
+
* and the author's name and role on one line, beside a portrait of the
|
|
22
|
+
* author. Desktop sets the portrait 480px square at the end; Tablet 300 by
|
|
23
|
+
* 380; phones put it full width above the quote, 340px tall.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
export interface SocialProofDarkEditorialSplitCopy {
|
|
27
|
+
/** Names the section for assistive tech, since the block has no visible heading. */
|
|
28
|
+
label: string
|
|
29
|
+
/** Up to 164 characters in English, 133 in Arabic. */
|
|
30
|
+
quote: React.ReactNode
|
|
31
|
+
/** The portrait is `photos[author.id]`. */
|
|
32
|
+
author: SocialProofPerson
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const YOUSEF = { id: "yousef-amin" } as const
|
|
36
|
+
|
|
37
|
+
/** Figma's copy, English and Arabic. Every person and company is invented. */
|
|
38
|
+
const COPY: Record<SocialProofLocale, SocialProofDarkEditorialSplitCopy> = {
|
|
39
|
+
en: {
|
|
40
|
+
label: "What customers say",
|
|
41
|
+
quote: "“Fasla set a new bar for quality — and the team hit it while shipping ahead of schedule.”",
|
|
42
|
+
author: { ...YOUSEF, name: "Yousef Amin", role: "Co-founder, Halcyon Games" },
|
|
43
|
+
},
|
|
44
|
+
ar: {
|
|
45
|
+
label: "ما يقوله العملاء",
|
|
46
|
+
quote: "«رفعت فاصلة سقف الجودة، وبلغه الفريق وأطلق قبل موعده.»",
|
|
47
|
+
author: { ...YOUSEF, name: "يوسف أمين", role: "شريك مؤسس، هالسيون غيمز" },
|
|
48
|
+
},
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** After the name, before the role: a comma in each language. */
|
|
52
|
+
const NAME_SEPARATOR: Record<SocialProofLocale, string> = { en: ",", ar: "،" }
|
|
53
|
+
|
|
54
|
+
export interface SocialProofDarkEditorialSplitProps
|
|
55
|
+
extends Omit<React.HTMLAttributes<HTMLElement>, "title">,
|
|
56
|
+
Partial<SocialProofDarkEditorialSplitCopy> {
|
|
57
|
+
/** Which language the default copy is in. The page's `dir` sets the direction. */
|
|
58
|
+
locale?: SocialProofLocale
|
|
59
|
+
/** Photos by person id: the portrait is the author's. Without it the slot is empty. */
|
|
60
|
+
photos?: SocialProofPhotos
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function SocialProofDarkEditorialSplit({
|
|
64
|
+
locale = "en",
|
|
65
|
+
label,
|
|
66
|
+
quote,
|
|
67
|
+
author,
|
|
68
|
+
photos,
|
|
69
|
+
className,
|
|
70
|
+
...props
|
|
71
|
+
}: SocialProofDarkEditorialSplitProps) {
|
|
72
|
+
const copy = COPY[locale]
|
|
73
|
+
const person = author ?? copy.author
|
|
74
|
+
|
|
75
|
+
return (
|
|
76
|
+
<SocialProofSection
|
|
77
|
+
aria-label={label ?? copy.label}
|
|
78
|
+
className={cn("bg-background-inverse", className)}
|
|
79
|
+
contentClassName="flex-col gap-8 [@container(min-width:40rem)]:flex-row [@container(min-width:40rem)]:gap-10 [@container(min-width:64rem)]:gap-20"
|
|
80
|
+
{...props}
|
|
81
|
+
>
|
|
82
|
+
<figure className="m-0 flex w-full min-w-0 flex-col gap-8 text-foreground-inverse [@container(min-width:40rem)]:w-auto [@container(min-width:40rem)]:flex-1">
|
|
83
|
+
<Quote aria-hidden size={28} strokeWidth={1.5} absoluteStrokeWidth />
|
|
84
|
+
<SocialProofQuote quote={quote ?? copy.quote} className="text-xl font-light [@container(min-width:40rem)]:text-2xl" />
|
|
85
|
+
<figcaption className="text-sm">
|
|
86
|
+
<cite className="font-medium not-italic">
|
|
87
|
+
{person.name}
|
|
88
|
+
{NAME_SEPARATOR[locale]}
|
|
89
|
+
</cite>{" "}
|
|
90
|
+
<span>
|
|
91
|
+
<Isolated>{person.role}</Isolated>
|
|
92
|
+
</span>
|
|
93
|
+
</figcaption>
|
|
94
|
+
</figure>
|
|
95
|
+
<SocialProofPhoto
|
|
96
|
+
src={photos?.[person.id]}
|
|
97
|
+
className={cn(
|
|
98
|
+
"order-first h-[340px] w-full shrink-0 rounded-xl bg-foreground-inverse/10",
|
|
99
|
+
"[@container(min-width:40rem)]:order-none [@container(min-width:40rem)]:h-[380px] [@container(min-width:40rem)]:w-[300px]",
|
|
100
|
+
"[@container(min-width:64rem)]:size-[480px]"
|
|
101
|
+
)}
|
|
102
|
+
/>
|
|
103
|
+
</SocialProofSection>
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* The default copy, English and Arabic, as `locale` picks it. Spread it to
|
|
109
|
+
* change a few strings and keep the rest.
|
|
110
|
+
*/
|
|
111
|
+
export const socialProofDarkEditorialSplitCopy = COPY
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { ArrowRight, Quote } from "lucide-react"
|
|
5
|
+
import { cn } from "../../../src/lib/utils"
|
|
6
|
+
import {
|
|
7
|
+
Isolated,
|
|
8
|
+
SocialProofAuthor,
|
|
9
|
+
SocialProofQuote,
|
|
10
|
+
SocialProofSection,
|
|
11
|
+
type SocialProofLocale,
|
|
12
|
+
type SocialProofPerson,
|
|
13
|
+
type SocialProofPhotos,
|
|
14
|
+
} from "../social-proof/social-proof"
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
* Figma: `Social Proof` (46368:3361), Type=Giant Quote Duo.
|
|
18
|
+
*
|
|
19
|
+
* Two large quotes side by side, with no heading: the first on a 10%
|
|
20
|
+
* `primary` tint, the second on solid `primary` with `primary-foreground`
|
|
21
|
+
* text. A giant quote mark sits cropped in each card's top end corner at 8%
|
|
22
|
+
* opacity. The quote is at the top and the author (Avatar 24) at the bottom
|
|
23
|
+
* of a card at least 420px tall (360 on Tablet, 300 on phones). Under the
|
|
24
|
+
* pair, a line with a figure and a link to more stories.
|
|
25
|
+
*
|
|
26
|
+
* Desktop and Tablet set the two cards side by side, the footer line and the
|
|
27
|
+
* link at either end; phones stack everything.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
export interface SocialProofGiantQuoteDuoItem {
|
|
31
|
+
/** Up to 154 characters in English, 136 in Arabic. */
|
|
32
|
+
quote: React.ReactNode
|
|
33
|
+
author: SocialProofPerson
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface SocialProofGiantQuoteDuoLink {
|
|
37
|
+
label: React.ReactNode
|
|
38
|
+
href: string
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface SocialProofGiantQuoteDuoCopy {
|
|
42
|
+
/** Names the section for assistive tech, since the block has no visible heading. */
|
|
43
|
+
label: string
|
|
44
|
+
/** The two quotes, light card first. */
|
|
45
|
+
items: [SocialProofGiantQuoteDuoItem, SocialProofGiantQuoteDuoItem]
|
|
46
|
+
/** The line under the cards. Hidden when empty. */
|
|
47
|
+
note: React.ReactNode
|
|
48
|
+
/** The link at the end of that line. Hidden when empty. Up to 25 characters in English, 26 in Arabic. */
|
|
49
|
+
link: SocialProofGiantQuoteDuoLink | null
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const HANI = { id: "hani-jaber" } as const
|
|
53
|
+
const KHALID = { id: "khalid-saad" } as const
|
|
54
|
+
|
|
55
|
+
/** Figma's copy, English and Arabic. Every person and company is invented. */
|
|
56
|
+
const COPY: Record<SocialProofLocale, SocialProofGiantQuoteDuoCopy> = {
|
|
57
|
+
en: {
|
|
58
|
+
label: "What customers say",
|
|
59
|
+
items: [
|
|
60
|
+
{
|
|
61
|
+
quote: "“You just have to build one screen with it. You'll feel it immediately.”",
|
|
62
|
+
author: { ...HANI, name: "Hani Jaber", role: "Staff Engineer, Clearfen" },
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
quote: "“Our speed is intense and Fasla keeps us action-biased.”",
|
|
66
|
+
author: { ...KHALID, name: "Khalid Saad", role: "Frontend Lead, Atlas Freight" },
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
note: "Fasla powers 2,300+ product teams — from seed startups to global enterprises.",
|
|
70
|
+
link: { label: "Customer stories", href: "#" },
|
|
71
|
+
},
|
|
72
|
+
ar: {
|
|
73
|
+
label: "ما يقوله العملاء",
|
|
74
|
+
items: [
|
|
75
|
+
{
|
|
76
|
+
quote: "«يكفي أن تبني شاشة واحدة بها. ستشعر بالفرق فورًا.»",
|
|
77
|
+
author: { ...HANI, name: "هاني جابر", role: "مهندس أول، كليرفين" },
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
quote: "«نعمل بإيقاع سريع، وفاصلة تُبقي تركيزنا على التنفيذ.»",
|
|
81
|
+
author: { ...KHALID, name: "خالد سعد", role: "قائد الواجهات الأمامية، أطلس فريت" },
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
note: "يعتمد على فاصلة أكثر من 2,300 فريق منتج، من الشركات الناشئة إلى المؤسسات العالمية.",
|
|
85
|
+
link: { label: "قصص العملاء", href: "#" },
|
|
86
|
+
},
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface SocialProofGiantQuoteDuoProps extends Omit<React.HTMLAttributes<HTMLElement>, "title">, Partial<SocialProofGiantQuoteDuoCopy> {
|
|
90
|
+
/** Which language the default copy is in. The page's `dir` sets the direction. */
|
|
91
|
+
locale?: SocialProofLocale
|
|
92
|
+
/** Avatar photos by person id. Without them the avatars show initials. */
|
|
93
|
+
photos?: SocialProofPhotos
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function SocialProofGiantQuoteDuo({ locale = "en", label, items, note, link, photos, className, ...props }: SocialProofGiantQuoteDuoProps) {
|
|
97
|
+
const copy = COPY[locale]
|
|
98
|
+
const pair = items ?? copy.items
|
|
99
|
+
const line = note === undefined ? copy.note : note
|
|
100
|
+
const more = link === undefined ? copy.link : link
|
|
101
|
+
|
|
102
|
+
return (
|
|
103
|
+
<SocialProofSection aria-label={label ?? copy.label} className={className} contentClassName="gap-8" {...props}>
|
|
104
|
+
<ul className="grid w-full grid-cols-1 gap-5 [@container(min-width:40rem)]:grid-cols-2 [@container(min-width:40rem)]:gap-6">
|
|
105
|
+
{pair.map((item, index) => {
|
|
106
|
+
const dark = index === 1
|
|
107
|
+
return (
|
|
108
|
+
<li
|
|
109
|
+
key={index}
|
|
110
|
+
className={cn(
|
|
111
|
+
"relative flex min-h-[300px] flex-col overflow-hidden rounded-xl p-10 [@container(min-width:40rem)]:min-h-[360px] [@container(min-width:64rem)]:min-h-[420px]",
|
|
112
|
+
dark ? "bg-primary text-primary-foreground" : "bg-primary/10 text-foreground"
|
|
113
|
+
)}
|
|
114
|
+
>
|
|
115
|
+
<Quote aria-hidden size={180} strokeWidth={1.5} className="pointer-events-none absolute -end-[30px] -top-[30px] opacity-[0.08]" />
|
|
116
|
+
<figure className="relative m-0 flex flex-1 flex-col justify-between gap-6">
|
|
117
|
+
<SocialProofQuote quote={item.quote} className="text-xl font-medium" />
|
|
118
|
+
<SocialProofAuthor
|
|
119
|
+
person={item.author}
|
|
120
|
+
photos={photos}
|
|
121
|
+
avatarSize="24"
|
|
122
|
+
gap="2.5"
|
|
123
|
+
roleClassName={dark ? "text-primary-foreground" : "text-foreground"}
|
|
124
|
+
/>
|
|
125
|
+
</figure>
|
|
126
|
+
</li>
|
|
127
|
+
)
|
|
128
|
+
})}
|
|
129
|
+
</ul>
|
|
130
|
+
{line || more ? (
|
|
131
|
+
<div className="flex w-full flex-col gap-3 [@container(min-width:40rem)]:flex-row [@container(min-width:40rem)]:items-center [@container(min-width:40rem)]:justify-between">
|
|
132
|
+
{line ? (
|
|
133
|
+
<p className="text-sm text-muted-foreground">
|
|
134
|
+
<Isolated>{line}</Isolated>
|
|
135
|
+
</p>
|
|
136
|
+
) : null}
|
|
137
|
+
{more ? (
|
|
138
|
+
<a
|
|
139
|
+
href={more.href}
|
|
140
|
+
className="inline-flex shrink-0 items-center gap-1.5 rounded-sm text-sm font-medium text-primary hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
141
|
+
>
|
|
142
|
+
<Isolated>{more.label}</Isolated>
|
|
143
|
+
<ArrowRight aria-hidden size={16} className="rtl:rotate-180" />
|
|
144
|
+
</a>
|
|
145
|
+
) : null}
|
|
146
|
+
</div>
|
|
147
|
+
) : null}
|
|
148
|
+
</SocialProofSection>
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* The default copy, English and Arabic, as `locale` picks it. Spread it to
|
|
154
|
+
* change a few strings and keep the rest.
|
|
155
|
+
*/
|
|
156
|
+
export const socialProofGiantQuoteDuoCopy = COPY
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { cn } from "../../../src/lib/utils"
|
|
5
|
+
import { Avatar } from "../../ui/avatar/avatar"
|
|
6
|
+
import {
|
|
7
|
+
Isolated,
|
|
8
|
+
SocialProofSection,
|
|
9
|
+
type SocialProofLocale,
|
|
10
|
+
type SocialProofPerson,
|
|
11
|
+
type SocialProofPhotos,
|
|
12
|
+
} from "../social-proof/social-proof"
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
* Figma: `Social Proof` (46368:3361), Type=Highlighted-Phrase Spotlight.
|
|
16
|
+
*
|
|
17
|
+
* One quote, centred, in 3XL Medium (2XL on phones), with the phrases that
|
|
18
|
+
* carry the result set in `info`. Under it the author on one line: the Avatar
|
|
19
|
+
* drawn at 40px, the name, and the role in `muted-foreground`.
|
|
20
|
+
*
|
|
21
|
+
* Figma colours the last letter of "finished" `primary`, one letter apart
|
|
22
|
+
* from the rest of its phrase; that reads as a slip, so the whole phrase is
|
|
23
|
+
* `info` here.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/** A run of the quote: plain text, or a phrase set in `info`. */
|
|
27
|
+
export type SocialProofQuotePart = string | { highlight: string }
|
|
28
|
+
|
|
29
|
+
export interface SocialProofHighlightedPhraseSpotlightCopy {
|
|
30
|
+
/** Names the section for assistive tech, since the block has no visible heading. */
|
|
31
|
+
label: string
|
|
32
|
+
/** The quote as runs, the highlighted phrases as `{ highlight }`. Up to 164 characters in English, 133 in Arabic. */
|
|
33
|
+
quote: SocialProofQuotePart[]
|
|
34
|
+
author: SocialProofPerson
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const SAMI = { id: "sami-naji" } as const
|
|
38
|
+
|
|
39
|
+
/** Figma's copy, English and Arabic. Every person and company is invented. */
|
|
40
|
+
const COPY: Record<SocialProofLocale, SocialProofHighlightedPhraseSpotlightCopy> = {
|
|
41
|
+
en: {
|
|
42
|
+
label: "What customers say",
|
|
43
|
+
quote: [
|
|
44
|
+
"“We didn't buy a component library. We bought back ",
|
|
45
|
+
{ highlight: "two design days a week" },
|
|
46
|
+
" — and every release ",
|
|
47
|
+
{ highlight: "finally feels finished" },
|
|
48
|
+
".”",
|
|
49
|
+
],
|
|
50
|
+
author: { ...SAMI, name: "Sami Naji", role: "Product Lead, Nimbus Labs" },
|
|
51
|
+
},
|
|
52
|
+
ar: {
|
|
53
|
+
label: "ما يقوله العملاء",
|
|
54
|
+
quote: [
|
|
55
|
+
"«لم نشترِ مكتبة مكوّنات، بل استعدنا ",
|
|
56
|
+
{ highlight: "يومين من التصميم كل أسبوع" },
|
|
57
|
+
"، وصار كل إصدار ",
|
|
58
|
+
{ highlight: "يبدو مكتملًا" },
|
|
59
|
+
" أخيرًا.»",
|
|
60
|
+
],
|
|
61
|
+
author: { ...SAMI, name: "سامي ناجي", role: "قائد المنتج، نيمبوس لابس" },
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Between the name and the role, as Figma writes it: a middle dot in English, a comma after the name in Arabic. */
|
|
66
|
+
const SEPARATOR: Record<SocialProofLocale, { afterName: string; beforeRole: string }> = {
|
|
67
|
+
en: { afterName: "", beforeRole: "· " },
|
|
68
|
+
ar: { afterName: "،", beforeRole: "" },
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface SocialProofHighlightedPhraseSpotlightProps
|
|
72
|
+
extends Omit<React.HTMLAttributes<HTMLElement>, "title">,
|
|
73
|
+
Partial<SocialProofHighlightedPhraseSpotlightCopy> {
|
|
74
|
+
/** Which language the default copy is in. The page's `dir` sets the direction. */
|
|
75
|
+
locale?: SocialProofLocale
|
|
76
|
+
/** Avatar photos by person id. Without them the avatar shows initials. */
|
|
77
|
+
photos?: SocialProofPhotos
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function SocialProofHighlightedPhraseSpotlight({
|
|
81
|
+
locale = "en",
|
|
82
|
+
label,
|
|
83
|
+
quote,
|
|
84
|
+
author,
|
|
85
|
+
photos,
|
|
86
|
+
className,
|
|
87
|
+
...props
|
|
88
|
+
}: SocialProofHighlightedPhraseSpotlightProps) {
|
|
89
|
+
const copy = COPY[locale]
|
|
90
|
+
const parts = quote ?? copy.quote
|
|
91
|
+
const person = author ?? copy.author
|
|
92
|
+
const separator = SEPARATOR[locale]
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
<SocialProofSection aria-label={label ?? copy.label} className={cn("lg:py-28", className)} contentClassName="gap-10" {...props}>
|
|
96
|
+
<figure className="m-0 flex w-full flex-col items-center gap-10 text-center">
|
|
97
|
+
<blockquote className="m-0">
|
|
98
|
+
<p className="text-2xl font-medium text-foreground [@container(min-width:40rem)]:text-3xl">
|
|
99
|
+
{parts.map((part, index) =>
|
|
100
|
+
typeof part === "string" ? (
|
|
101
|
+
<Isolated key={index}>{part}</Isolated>
|
|
102
|
+
) : (
|
|
103
|
+
<mark key={index} className="bg-transparent text-info">
|
|
104
|
+
<Isolated>{part.highlight}</Isolated>
|
|
105
|
+
</mark>
|
|
106
|
+
)
|
|
107
|
+
)}
|
|
108
|
+
</p>
|
|
109
|
+
</blockquote>
|
|
110
|
+
<figcaption className="flex flex-wrap items-center justify-center gap-3 text-sm">
|
|
111
|
+
<Avatar aria-hidden size="32" radius="rounded" src={photos?.[person.id]} name={person.name} className="size-10 shrink-0" />
|
|
112
|
+
<cite className="font-medium not-italic text-foreground">
|
|
113
|
+
{person.name}
|
|
114
|
+
{separator.afterName}
|
|
115
|
+
</cite>
|
|
116
|
+
<span className="text-muted-foreground">
|
|
117
|
+
{separator.beforeRole}
|
|
118
|
+
<Isolated>{person.role}</Isolated>
|
|
119
|
+
</span>
|
|
120
|
+
</figcaption>
|
|
121
|
+
</figure>
|
|
122
|
+
</SocialProofSection>
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* The default copy, English and Arabic, as `locale` picks it. Spread it to
|
|
128
|
+
* change a few strings and keep the rest.
|
|
129
|
+
*/
|
|
130
|
+
export const socialProofHighlightedPhraseSpotlightCopy = COPY
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export {
|
|
2
|
+
SocialProofHighlightedPhraseSpotlight,
|
|
3
|
+
socialProofHighlightedPhraseSpotlightCopy,
|
|
4
|
+
type SocialProofHighlightedPhraseSpotlightCopy,
|
|
5
|
+
type SocialProofHighlightedPhraseSpotlightProps,
|
|
6
|
+
type SocialProofQuotePart,
|
|
7
|
+
} from "./SocialProofHighlightedPhraseSpotlight"
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { cn } from "../../../src/lib/utils"
|
|
5
|
+
import { Isolated, SocialProofQuote, type SocialProofLocale, type SocialProofPhotos } from "../social-proof/social-proof"
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* Figma: `Social Proof` (46368:3361), Type=Overlay Photo Quote.
|
|
9
|
+
*
|
|
10
|
+
* A photograph across the whole section, under a dark scrim, with the quote
|
|
11
|
+
* at the bottom start: the company in XS Bold, the quote in 2XL Medium (XL
|
|
12
|
+
* on phones) and the author on one line. The section is at least 560px tall
|
|
13
|
+
* on Desktop, 440 on Tablet and 480 on phones, and grows with longer copy.
|
|
14
|
+
*
|
|
15
|
+
* The scrim is dark and the text light in both modes, as Figma draws them: a
|
|
16
|
+
* photograph does not change with the theme. Figma's scrim is black at 45%;
|
|
17
|
+
* here it is the `backdrop-overlay` token at its own strength (60% light, 80%
|
|
18
|
+
* dark), as Hero's Framed Full-Bleed and Gallery's Full-Bleed Slider set it,
|
|
19
|
+
* so the light type holds its contrast over a bright photo. The text is the
|
|
20
|
+
* inverse tokens in light mode and the page's own in dark mode.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
export interface SocialProofOverlayPhotoQuoteCopy {
|
|
24
|
+
/** Names the section for assistive tech, since the block has no visible heading. */
|
|
25
|
+
label: string
|
|
26
|
+
/** The company, above the quote. Up to 20 characters. */
|
|
27
|
+
company: React.ReactNode
|
|
28
|
+
/** Up to 164 characters in English, 133 in Arabic. */
|
|
29
|
+
quote: React.ReactNode
|
|
30
|
+
/** The author, role and company on one line. Up to 48 characters in English, 50 in Arabic. */
|
|
31
|
+
author: React.ReactNode
|
|
32
|
+
/** Describes the photograph. "" when it is only atmosphere. */
|
|
33
|
+
photoAlt: string
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Figma's copy, English and Arabic. Every person and company is invented. */
|
|
37
|
+
const COPY: Record<SocialProofLocale, SocialProofOverlayPhotoQuoteCopy> = {
|
|
38
|
+
en: {
|
|
39
|
+
label: "What customers say",
|
|
40
|
+
company: "QUILLFIELD",
|
|
41
|
+
quote: "“Half our team works from the field. Fasla is why the app they carry looks as considered as the site we pitch with.”",
|
|
42
|
+
author: "Ziad Karam — CEO, Quillfield",
|
|
43
|
+
photoAlt: "",
|
|
44
|
+
},
|
|
45
|
+
ar: {
|
|
46
|
+
label: "ما يقوله العملاء",
|
|
47
|
+
company: "كويلفيلد",
|
|
48
|
+
quote: "«نصف فريقنا يعمل في الميدان، وبفضل فاصلة يبدو التطبيق الذي يستخدمونه متقنًا كموقعنا الذي نقدّم به عروضنا.»",
|
|
49
|
+
author: "زياد كرم، الرئيس التنفيذي، كويلفيلد",
|
|
50
|
+
photoAlt: "",
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** The key in `photos` for the photograph. */
|
|
55
|
+
export const SOCIAL_PROOF_OVERLAY_PHOTO = "overlay-photo-quote"
|
|
56
|
+
|
|
57
|
+
export interface SocialProofOverlayPhotoQuoteProps
|
|
58
|
+
extends Omit<React.HTMLAttributes<HTMLElement>, "title">,
|
|
59
|
+
Partial<SocialProofOverlayPhotoQuoteCopy> {
|
|
60
|
+
/** Which language the default copy is in. The page's `dir` sets the direction. */
|
|
61
|
+
locale?: SocialProofLocale
|
|
62
|
+
/** The photograph is `photos["overlay-photo-quote"]`. Without it the section shows its `muted` ground under the scrim. */
|
|
63
|
+
photos?: SocialProofPhotos
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function SocialProofOverlayPhotoQuote({
|
|
67
|
+
locale = "en",
|
|
68
|
+
label,
|
|
69
|
+
company,
|
|
70
|
+
quote,
|
|
71
|
+
author,
|
|
72
|
+
photoAlt,
|
|
73
|
+
photos,
|
|
74
|
+
className,
|
|
75
|
+
...props
|
|
76
|
+
}: SocialProofOverlayPhotoQuoteProps) {
|
|
77
|
+
const copy = COPY[locale]
|
|
78
|
+
const src = photos?.[SOCIAL_PROOF_OVERLAY_PHOTO]
|
|
79
|
+
const name = company === undefined ? copy.company : company
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
<section
|
|
83
|
+
aria-label={label ?? copy.label}
|
|
84
|
+
className={cn(
|
|
85
|
+
"relative isolate flex min-h-[480px] [container-type:inline-size] flex-col justify-end overflow-hidden bg-muted px-4 py-8 md:min-h-[440px] md:px-6 md:py-14 lg:min-h-[560px] lg:px-28 lg:py-24",
|
|
86
|
+
className
|
|
87
|
+
)}
|
|
88
|
+
{...props}
|
|
89
|
+
>
|
|
90
|
+
{src ? <img src={src} alt={photoAlt ?? copy.photoAlt} decoding="async" className="absolute inset-0 -z-10 size-full object-cover" /> : null}
|
|
91
|
+
<div aria-hidden className="absolute inset-0 -z-10 bg-backdrop-overlay" />
|
|
92
|
+
<figure className="m-0 flex w-full flex-col gap-4 text-foreground-inverse dark:text-foreground [@container(min-width:40rem)]:max-w-[600px] [@container(min-width:64rem)]:max-w-[760px]">
|
|
93
|
+
{name ? (
|
|
94
|
+
<p className="text-xs font-bold">
|
|
95
|
+
<bdi>{name}</bdi>
|
|
96
|
+
</p>
|
|
97
|
+
) : null}
|
|
98
|
+
<SocialProofQuote quote={quote ?? copy.quote} className="text-xl font-medium [@container(min-width:40rem)]:text-2xl" />
|
|
99
|
+
<figcaption className="text-sm">
|
|
100
|
+
<Isolated>{author ?? copy.author}</Isolated>
|
|
101
|
+
</figcaption>
|
|
102
|
+
</figure>
|
|
103
|
+
</section>
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* The default copy, English and Arabic, as `locale` picks it. Spread it to
|
|
109
|
+
* change a few strings and keep the rest.
|
|
110
|
+
*/
|
|
111
|
+
export const socialProofOverlayPhotoQuoteCopy = COPY
|