@smicolon/fasla-ui 0.6.0 → 0.7.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 +2284 -194
- 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,156 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { ArrowLeft, ArrowUpRight } from "lucide-react"
|
|
5
|
+
import { cn } from "../../../src/lib/utils"
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* Figma: `Error State` (42556:548), Type=Display Numeral Split.
|
|
9
|
+
*
|
|
10
|
+
* A label and a Go back link over a hairline, then the error code in the
|
|
11
|
+
* largest display size with a short aside beside it. Mobile first: the base
|
|
12
|
+
* classes are Figma's Mobile (360), `md:` its Tablet (768) and `lg:` its
|
|
13
|
+
* Desktop (1440); on Mobile the aside drops under the numeral. Direction is
|
|
14
|
+
* the page's `dir`; every side is a logical one. The Go back arrow mirrors in
|
|
15
|
+
* Arabic, as in Figma; the aside links' up-right arrows do not.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
export interface ErrorStateDisplayNumeralSplitLink {
|
|
19
|
+
label: React.ReactNode
|
|
20
|
+
href: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ErrorStateDisplayNumeralSplitBack {
|
|
24
|
+
label: React.ReactNode
|
|
25
|
+
/** Where the link goes. Without it, it's a button that goes back in the browser's history. */
|
|
26
|
+
href?: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface ErrorStateDisplayNumeralSplitCopy {
|
|
30
|
+
/** The small label at the start of the top row. Hidden when empty. */
|
|
31
|
+
label: React.ReactNode
|
|
32
|
+
/** The link at the end of the top row. Hidden when null. */
|
|
33
|
+
backAction: ErrorStateDisplayNumeralSplitBack | null
|
|
34
|
+
/** The status code in display type. Hidden when empty. */
|
|
35
|
+
code: React.ReactNode
|
|
36
|
+
/** The page's heading, an `h1`, in the aside: what happened and the way back. */
|
|
37
|
+
heading: React.ReactNode
|
|
38
|
+
/** The links under the aside's text, in order. Each has a `label` and an `href`. */
|
|
39
|
+
links: ErrorStateDisplayNumeralSplitLink[]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Figma's copy, English and Arabic. */
|
|
43
|
+
const COPY: Record<"en" | "ar", ErrorStateDisplayNumeralSplitCopy> = {
|
|
44
|
+
en: {
|
|
45
|
+
label: "FASLA — ERROR 404",
|
|
46
|
+
backAction: { label: "Go back" },
|
|
47
|
+
code: "404",
|
|
48
|
+
heading: "The page you are looking for cannot be found, or no longer exists. No matter — here is the way back.",
|
|
49
|
+
links: [
|
|
50
|
+
{ label: "Back to home", href: "/" },
|
|
51
|
+
{ label: "Sitemap", href: "#sitemap" },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
ar: {
|
|
55
|
+
label: (
|
|
56
|
+
<>
|
|
57
|
+
خطأ <bdi dir="ltr">404</bdi> في فاصلة
|
|
58
|
+
</>
|
|
59
|
+
),
|
|
60
|
+
backAction: { label: "رجوع" },
|
|
61
|
+
code: "404",
|
|
62
|
+
heading: "الصفحة التي تبحث عنها غير موجودة أو لم تعد متاحة. لا بأس، إليك طريق العودة.",
|
|
63
|
+
links: [
|
|
64
|
+
{ label: "العودة إلى الرئيسية", href: "/" },
|
|
65
|
+
{ label: "خريطة الموقع", href: "#sitemap" },
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface ErrorStateDisplayNumeralSplitProps
|
|
71
|
+
extends Omit<React.HTMLAttributes<HTMLElement>, "title">,
|
|
72
|
+
Partial<ErrorStateDisplayNumeralSplitCopy> {
|
|
73
|
+
/** Which language the default copy is in. The page's `dir` sets the direction. */
|
|
74
|
+
locale?: "en" | "ar"
|
|
75
|
+
/** Called by the Go back button, in place of going back in the browser's history. Unused when `backAction` has an `href`. */
|
|
76
|
+
onBack?: () => void
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const LINK =
|
|
80
|
+
"inline-flex items-center gap-1.5 rounded-sm text-sm font-medium text-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
81
|
+
|
|
82
|
+
export function ErrorStateDisplayNumeralSplit({
|
|
83
|
+
locale = "en",
|
|
84
|
+
label,
|
|
85
|
+
backAction,
|
|
86
|
+
code,
|
|
87
|
+
heading,
|
|
88
|
+
links,
|
|
89
|
+
onBack,
|
|
90
|
+
className,
|
|
91
|
+
...props
|
|
92
|
+
}: ErrorStateDisplayNumeralSplitProps) {
|
|
93
|
+
const copy = COPY[locale]
|
|
94
|
+
const headingId = React.useId()
|
|
95
|
+
const eyebrow = label ?? copy.label
|
|
96
|
+
const back = backAction === undefined ? copy.backAction : backAction
|
|
97
|
+
const status = code ?? copy.code
|
|
98
|
+
const list = links ?? copy.links
|
|
99
|
+
|
|
100
|
+
const backContent = back ? (
|
|
101
|
+
<>
|
|
102
|
+
<ArrowLeft size={14} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" className="size-3.5 shrink-0 [&:dir(rtl)]:-scale-x-100" />
|
|
103
|
+
{back.label}
|
|
104
|
+
</>
|
|
105
|
+
) : null
|
|
106
|
+
|
|
107
|
+
return (
|
|
108
|
+
<section aria-labelledby={headingId} className={cn("bg-background p-8 md:p-16 lg:p-24", className)} {...props}>
|
|
109
|
+
<div className="mx-auto flex w-full max-w-[1248px] flex-col gap-10">
|
|
110
|
+
<div className="flex items-center justify-between gap-4">
|
|
111
|
+
{eyebrow ? <p className="text-xs font-medium text-muted-foreground">{eyebrow}</p> : <span />}
|
|
112
|
+
{back ? (
|
|
113
|
+
back.href ? (
|
|
114
|
+
<a href={back.href} className={LINK}>
|
|
115
|
+
{backContent}
|
|
116
|
+
</a>
|
|
117
|
+
) : (
|
|
118
|
+
<button type="button" onClick={() => (onBack ? onBack() : window.history.back())} className={LINK}>
|
|
119
|
+
{backContent}
|
|
120
|
+
</button>
|
|
121
|
+
)
|
|
122
|
+
) : null}
|
|
123
|
+
</div>
|
|
124
|
+
|
|
125
|
+
<hr className="border-border" />
|
|
126
|
+
|
|
127
|
+
<div className="flex flex-col gap-6 md:flex-row md:items-end md:justify-between md:gap-16">
|
|
128
|
+
{status ? <p className="text-7xl font-bold text-foreground md:text-8xl lg:text-9xl">{status}</p> : null}
|
|
129
|
+
<div className="flex w-full flex-col items-start gap-5 md:w-[280px] md:shrink-0 lg:w-[340px]">
|
|
130
|
+
<h1 id={headingId} className="text-base font-normal text-muted-foreground">
|
|
131
|
+
{heading ?? copy.heading}
|
|
132
|
+
</h1>
|
|
133
|
+
{list.length > 0 ? (
|
|
134
|
+
<ul className="flex flex-wrap gap-4 md:gap-6">
|
|
135
|
+
{list.map((link, index) => (
|
|
136
|
+
<li key={index} className="flex">
|
|
137
|
+
<a href={link.href} className={LINK}>
|
|
138
|
+
{link.label}
|
|
139
|
+
<ArrowUpRight size={14} strokeWidth={1.5} absoluteStrokeWidth aria-hidden="true" className="size-3.5 shrink-0" />
|
|
140
|
+
</a>
|
|
141
|
+
</li>
|
|
142
|
+
))}
|
|
143
|
+
</ul>
|
|
144
|
+
) : null}
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
</section>
|
|
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 errorStateDisplayNumeralSplitCopy = COPY
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export {
|
|
2
|
+
ErrorStateDisplayNumeralSplit,
|
|
3
|
+
errorStateDisplayNumeralSplitCopy,
|
|
4
|
+
type ErrorStateDisplayNumeralSplitBack,
|
|
5
|
+
type ErrorStateDisplayNumeralSplitCopy,
|
|
6
|
+
type ErrorStateDisplayNumeralSplitLink,
|
|
7
|
+
type ErrorStateDisplayNumeralSplitProps,
|
|
8
|
+
} from "./ErrorStateDisplayNumeralSplit"
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { CircleHelp } from "lucide-react"
|
|
5
|
+
import { cn } from "../../../src/lib/utils"
|
|
6
|
+
import { Badge } from "../../ui/badge/badge"
|
|
7
|
+
import { buttonVariants } from "../../ui/button/button"
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* Figma: `Error State` (42556:548), Type=Editorial Photo Split.
|
|
11
|
+
*
|
|
12
|
+
* A status badge, heading, help text, two ways out and a quiet note on one
|
|
13
|
+
* side; a photograph on the other. The photo sits at the end on Desktop and
|
|
14
|
+
* under the copy on Tablet and Mobile. Side by side, the copy keeps at least
|
|
15
|
+
* 360px and the photo narrows to make room, so the two never overlap below
|
|
16
|
+
* 1440; the buttons wrap if they still don't fit. No photo comes with the
|
|
17
|
+
* block: pass `image`, and until then the frame is a `muted` placeholder of
|
|
18
|
+
* the same size.
|
|
19
|
+
*
|
|
20
|
+
* Mobile first: the base classes are Figma's Mobile (360), `md:` its Tablet
|
|
21
|
+
* (768) and `lg:` its Desktop (1440). Direction is the page's `dir`; every
|
|
22
|
+
* side is a logical one, so copy and photo swap sides in Arabic on their own.
|
|
23
|
+
* The photo itself is never mirrored.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
export interface ErrorStateEditorialPhotoSplitAction {
|
|
27
|
+
label: React.ReactNode
|
|
28
|
+
href: string
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface ErrorStateEditorialPhotoSplitImage {
|
|
32
|
+
src: string
|
|
33
|
+
/** Describes the photo. Pass "" for a purely decorative one. */
|
|
34
|
+
alt: string
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface ErrorStateEditorialPhotoSplitCopy {
|
|
38
|
+
/** The status badge above the heading. Hidden when empty. */
|
|
39
|
+
badge: React.ReactNode
|
|
40
|
+
/** The page's heading, an `h1`. Name what happened. */
|
|
41
|
+
heading: React.ReactNode
|
|
42
|
+
/** The text under the heading: what to do next. */
|
|
43
|
+
description: React.ReactNode
|
|
44
|
+
/** The solid button: the way out, usually home. */
|
|
45
|
+
primaryAction: ErrorStateEditorialPhotoSplitAction
|
|
46
|
+
/** The outline button beside it: the quieter escape. Hidden when null. */
|
|
47
|
+
secondaryAction: ErrorStateEditorialPhotoSplitAction | null
|
|
48
|
+
/** The line under the divider, after a help icon. Hidden, with the divider, when empty. */
|
|
49
|
+
note: React.ReactNode
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Figma's copy, English and Arabic. */
|
|
53
|
+
const COPY: Record<"en" | "ar", ErrorStateEditorialPhotoSplitCopy> = {
|
|
54
|
+
en: {
|
|
55
|
+
badge: "404 error",
|
|
56
|
+
heading: "We looked everywhere. It’s not here.",
|
|
57
|
+
description:
|
|
58
|
+
"This link may be broken, or the page may have been moved during our last release. Everything else is exactly where you left it.",
|
|
59
|
+
primaryAction: { label: "Back to home", href: "/" },
|
|
60
|
+
secondaryAction: { label: "Browse the help centre", href: "#help" },
|
|
61
|
+
note: "Think this is a mistake? Report the broken link.",
|
|
62
|
+
},
|
|
63
|
+
ar: {
|
|
64
|
+
badge: (
|
|
65
|
+
<>
|
|
66
|
+
خطأ <bdi dir="ltr">404</bdi>
|
|
67
|
+
</>
|
|
68
|
+
),
|
|
69
|
+
heading: "بحثنا في كل مكان. إنها ليست هنا.",
|
|
70
|
+
description: "قد يكون هذا الرابط معطلًا، أو نُقلت الصفحة خلال آخر إصدار لنا. كل شيء آخر في مكانه تمامًا كما تركته.",
|
|
71
|
+
primaryAction: { label: "العودة إلى الرئيسية", href: "/" },
|
|
72
|
+
secondaryAction: { label: "تصفّح مركز المساعدة", href: "#help" },
|
|
73
|
+
note: "تعتقد أن هناك خطأ؟ أبلغ عن الرابط المعطل.",
|
|
74
|
+
},
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface ErrorStateEditorialPhotoSplitProps
|
|
78
|
+
extends Omit<React.HTMLAttributes<HTMLElement>, "title">,
|
|
79
|
+
Partial<ErrorStateEditorialPhotoSplitCopy> {
|
|
80
|
+
/** Which language the default copy is in. The page's `dir` sets the direction. */
|
|
81
|
+
locale?: "en" | "ar"
|
|
82
|
+
/**
|
|
83
|
+
* The photo. None by default: the frame shows a `muted` placeholder.
|
|
84
|
+
* @default none: a `muted` placeholder
|
|
85
|
+
*/
|
|
86
|
+
image?: ErrorStateEditorialPhotoSplitImage
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function ErrorStateEditorialPhotoSplit({
|
|
90
|
+
locale = "en",
|
|
91
|
+
badge,
|
|
92
|
+
heading,
|
|
93
|
+
description,
|
|
94
|
+
primaryAction,
|
|
95
|
+
secondaryAction,
|
|
96
|
+
note,
|
|
97
|
+
image,
|
|
98
|
+
className,
|
|
99
|
+
...props
|
|
100
|
+
}: ErrorStateEditorialPhotoSplitProps) {
|
|
101
|
+
const copy = COPY[locale]
|
|
102
|
+
const headingId = React.useId()
|
|
103
|
+
const status = badge ?? copy.badge
|
|
104
|
+
const primary = primaryAction ?? copy.primaryAction
|
|
105
|
+
const secondary = secondaryAction === undefined ? copy.secondaryAction : secondaryAction
|
|
106
|
+
const footnote = note ?? copy.note
|
|
107
|
+
|
|
108
|
+
return (
|
|
109
|
+
<section aria-labelledby={headingId} className={cn("bg-background p-8 md:p-16 lg:p-24", className)} {...props}>
|
|
110
|
+
<div className="mx-auto flex w-full max-w-[1248px] flex-col gap-6 md:gap-8 lg:flex-row lg:items-center lg:gap-16">
|
|
111
|
+
<div className="flex min-w-0 flex-1 flex-col items-start gap-5 md:gap-6 lg:min-w-[22.5rem]">
|
|
112
|
+
{status ? (
|
|
113
|
+
<Badge variant="soft" tone="destructive" size="sm">
|
|
114
|
+
{status}
|
|
115
|
+
</Badge>
|
|
116
|
+
) : null}
|
|
117
|
+
<h1 id={headingId} className="text-3xl font-semibold text-foreground lg:text-4xl">
|
|
118
|
+
{heading ?? copy.heading}
|
|
119
|
+
</h1>
|
|
120
|
+
<p className="text-base text-muted-foreground">{description ?? copy.description}</p>
|
|
121
|
+
<div className="flex w-full flex-col gap-2.5 md:w-auto md:flex-row md:flex-wrap md:gap-3">
|
|
122
|
+
<a href={primary.href} className={buttonVariants()}>
|
|
123
|
+
{primary.label}
|
|
124
|
+
</a>
|
|
125
|
+
{secondary ? (
|
|
126
|
+
<a href={secondary.href} className={buttonVariants({ variant: "outline" })}>
|
|
127
|
+
{secondary.label}
|
|
128
|
+
</a>
|
|
129
|
+
) : null}
|
|
130
|
+
</div>
|
|
131
|
+
{footnote ? (
|
|
132
|
+
<>
|
|
133
|
+
<hr className="w-full border-border" />
|
|
134
|
+
<p className="flex items-center gap-2 text-sm text-muted-foreground">
|
|
135
|
+
<CircleHelp aria-hidden="true" size={16} strokeWidth={1.5} absoluteStrokeWidth className="size-4 shrink-0" />
|
|
136
|
+
<span>{footnote}</span>
|
|
137
|
+
</p>
|
|
138
|
+
</>
|
|
139
|
+
) : null}
|
|
140
|
+
</div>
|
|
141
|
+
|
|
142
|
+
<div className="relative h-[240px] w-full shrink-0 overflow-hidden rounded-lg bg-muted md:h-[380px] lg:h-[480px] lg:w-[560px] lg:min-w-0 lg:shrink">
|
|
143
|
+
{image ? (
|
|
144
|
+
<img src={image.src} alt={image.alt} loading="lazy" decoding="async" className="absolute inset-0 size-full object-cover" />
|
|
145
|
+
) : null}
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
</section>
|
|
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 errorStateEditorialPhotoSplitCopy = COPY
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export {
|
|
2
|
+
ErrorStateEditorialPhotoSplit,
|
|
3
|
+
errorStateEditorialPhotoSplitCopy,
|
|
4
|
+
type ErrorStateEditorialPhotoSplitAction,
|
|
5
|
+
type ErrorStateEditorialPhotoSplitImage,
|
|
6
|
+
type ErrorStateEditorialPhotoSplitCopy,
|
|
7
|
+
type ErrorStateEditorialPhotoSplitProps,
|
|
8
|
+
} from "./ErrorStateEditorialPhotoSplit"
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import * as React from "react"
|
|
4
|
+
import { Search } from "lucide-react"
|
|
5
|
+
import { cn } from "../../../src/lib/utils"
|
|
6
|
+
import { Badge } from "../../ui/badge/badge"
|
|
7
|
+
import { Button } from "../../ui/button/button"
|
|
8
|
+
import { Input } from "../../ui/input/input"
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
* Figma: `Error State` (42556:548), Type=Empty Search Results.
|
|
12
|
+
*
|
|
13
|
+
* The search that found nothing: the field still holding the query, an
|
|
14
|
+
* illustration, a heading that names the query, and suggested searches to
|
|
15
|
+
* try instead. Mobile first: the base classes are Figma's Mobile (360), `md:`
|
|
16
|
+
* its Tablet (768) and `lg:` its Desktop (1440). Direction is the page's
|
|
17
|
+
* `dir`; every side is a logical one, so the Search button and the
|
|
18
|
+
* suggestions swap ends in Arabic on their own. The illustration is artwork,
|
|
19
|
+
* not a directional glyph, so it is never mirrored; every colour in it is a
|
|
20
|
+
* theme token.
|
|
21
|
+
*
|
|
22
|
+
* The search is real: submitting the field or pressing a suggestion calls
|
|
23
|
+
* `onSearch` with the query. Return a promise and the Search button shows its pending state until it settles.
|
|
24
|
+
* The block is the empty state, so the app swaps it for its results.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
export interface ErrorStateEmptySearchResultsCopy {
|
|
28
|
+
/** The query that found nothing: the field's value, and the heading's subject. */
|
|
29
|
+
query: string
|
|
30
|
+
/** The heading, an `h1`, built from the query. */
|
|
31
|
+
heading: (query: string) => React.ReactNode
|
|
32
|
+
/** The line under the heading: what to try next. */
|
|
33
|
+
description: React.ReactNode
|
|
34
|
+
/** The Search button's label, and the field's accessible name. */
|
|
35
|
+
searchLabel: string
|
|
36
|
+
/** Searches to try instead, as chips under the copy. Hidden when empty. */
|
|
37
|
+
suggestions: string[]
|
|
38
|
+
/** The accessible name of the suggestions list. */
|
|
39
|
+
suggestionsLabel: string
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Figma's copy, English and Arabic. */
|
|
43
|
+
const COPY: Record<"en" | "ar", ErrorStateEmptySearchResultsCopy> = {
|
|
44
|
+
en: {
|
|
45
|
+
query: "anual reprot",
|
|
46
|
+
heading: (query) => <>No results for “{query}”</>,
|
|
47
|
+
description: "Check the spelling, remove a filter, or try one of the searches below.",
|
|
48
|
+
searchLabel: "Search",
|
|
49
|
+
suggestions: ["board deck", "quarterly report", "revenue summary"],
|
|
50
|
+
suggestionsLabel: "Suggested searches",
|
|
51
|
+
},
|
|
52
|
+
ar: {
|
|
53
|
+
query: "التقرير السنوى",
|
|
54
|
+
heading: (query) => <>لا نتائج لـ ”{query}“</>,
|
|
55
|
+
description: "تحقق من الإملاء، أو أزل أحد عوامل التصفية، أو جرّب أحد عمليات البحث أدناه.",
|
|
56
|
+
searchLabel: "بحث",
|
|
57
|
+
suggestions: ["عرض مجلس الإدارة", "التقرير الربع سنوي", "ملخص الإيرادات"],
|
|
58
|
+
suggestionsLabel: "عمليات بحث مقترحة",
|
|
59
|
+
},
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface ErrorStateEmptySearchResultsProps
|
|
63
|
+
extends Omit<React.HTMLAttributes<HTMLElement>, "title" | "onSubmit">,
|
|
64
|
+
Partial<ErrorStateEmptySearchResultsCopy> {
|
|
65
|
+
/** Which language the default copy is in. The page's `dir` sets the direction. */
|
|
66
|
+
locale?: "en" | "ar"
|
|
67
|
+
/**
|
|
68
|
+
* Turns the field, the button and the suggestions off.
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
disabled?: boolean
|
|
72
|
+
/** Called with the query when the search runs. Return a promise to show the pending state. */
|
|
73
|
+
onSearch?: (query: string) => void | Promise<unknown>
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Figma's `File Search` illustration, 308×220, drawn in theme tokens. */
|
|
77
|
+
function FileSearchArt({ className }: { className?: string }) {
|
|
78
|
+
// useId's colons are not safe in a url() reference.
|
|
79
|
+
const clipId = `error-state-art-${React.useId().replace(/[^\w-]/g, "")}`
|
|
80
|
+
return (
|
|
81
|
+
<svg viewBox="0 0 308 220" fill="none" aria-hidden="true" focusable="false" className={className}>
|
|
82
|
+
<g clipPath={`url(#${clipId})`}>
|
|
83
|
+
<path d="M158.003 168.043L50.3308 195.769C46.6784 196.706 42.8038 196.155 39.5571 194.238C36.3104 192.321 33.9567 189.194 33.0122 185.544L0.451122 59.0912C-0.484967 55.4389 0.0659201 51.5643 1.98293 48.3176C3.89994 45.0709 7.02651 42.7171 10.6767 41.7727L110.848 15.9775L136.486 27.4549L168.229 150.724C169.165 154.376 168.614 158.251 166.697 161.498C164.78 164.745 161.654 167.098 158.003 168.043Z" className="fill-muted"/>
|
|
84
|
+
<path d="M11.6958 45.738C9.09639 46.4105 6.86985 48.0866 5.50468 50.3987C4.1395 52.7107 3.74718 55.4699 4.41376 58.0708L36.9769 184.524C37.6494 187.123 39.3255 189.35 41.6376 190.715C43.9496 192.08 46.7088 192.472 49.3097 191.806L156.982 164.08C159.582 163.407 161.808 161.731 163.173 159.419C164.539 157.107 164.931 154.348 164.264 151.747L133.013 30.3868L110.481 20.2998L11.6958 45.738Z" className="fill-background"/>
|
|
85
|
+
<path d="M136.212 28.1092L119.548 32.4004C118.332 32.7136 117.041 32.5308 115.959 31.8921C114.877 31.2533 114.094 30.2111 113.781 28.9946L110.611 16.6869C110.597 16.6331 110.599 16.5764 110.616 16.5235C110.633 16.4705 110.664 16.4234 110.707 16.3875C110.749 16.3515 110.801 16.3283 110.856 16.3204C110.911 16.3125 110.967 16.3202 111.018 16.3427L136.259 27.552C136.315 27.577 136.362 27.6188 136.393 27.6717C136.424 27.7246 136.439 27.7859 136.433 27.8471C136.428 27.9084 136.404 27.9665 136.365 28.0135C136.325 28.0604 136.272 28.0939 136.212 28.1092Z" className="fill-muted"/>
|
|
86
|
+
<path d="M127.446 136.096L78.4239 148.72C77.817 148.873 77.1744 148.779 76.6364 148.46C76.0984 148.14 75.7089 147.62 75.5528 147.014C75.3968 146.408 75.487 145.765 75.8036 145.225C76.1203 144.686 76.6377 144.293 77.2428 144.134L126.265 131.509C126.566 131.429 126.881 131.41 127.19 131.453C127.5 131.495 127.797 131.598 128.067 131.756C128.336 131.914 128.571 132.124 128.759 132.373C128.947 132.622 129.084 132.906 129.162 133.208C129.239 133.511 129.257 133.825 129.213 134.134C129.168 134.443 129.063 134.741 128.904 135.009C128.745 135.277 128.534 135.511 128.283 135.698C128.033 135.884 127.748 136.02 127.446 136.096Z" className="fill-muted-foreground"/>
|
|
87
|
+
<path d="M138.899 141.4L80.4167 156.46C80.1149 156.539 79.8003 156.558 79.4911 156.516C79.1818 156.473 78.884 156.37 78.6148 156.212C78.3456 156.054 78.1103 155.845 77.9223 155.595C77.7344 155.346 77.5976 155.062 77.5198 154.76C77.4419 154.458 77.4246 154.143 77.4688 153.834C77.513 153.525 77.6179 153.228 77.7773 152.96C77.9368 152.691 78.1477 152.457 78.398 152.271C78.6483 152.084 78.9329 151.949 79.2356 151.873L137.718 136.813C138.325 136.66 138.967 136.754 139.505 137.074C140.043 137.393 140.433 137.913 140.589 138.519C140.745 139.125 140.655 139.768 140.338 140.308C140.021 140.848 139.504 141.24 138.899 141.4Z" className="fill-muted-foreground"/>
|
|
88
|
+
<path d="M57.2917 161.334C61.0886 161.334 64.1667 158.256 64.1667 154.459C64.1667 150.662 61.0886 147.584 57.2917 147.584C53.4947 147.584 50.4167 150.662 50.4167 154.459C50.4167 158.256 53.4947 161.334 57.2917 161.334Z" className="fill-destructive"/>
|
|
89
|
+
<path d="M122.233 114.189L57.1267 130.948C55.2451 131.431 53.2491 131.147 51.5766 130.159C49.9041 129.171 48.6918 127.56 48.2055 125.68L34.5622 72.6769C34.0805 70.7955 34.3647 68.8 35.3524 67.1278C36.3401 65.4557 37.9507 64.2436 39.8308 63.7573L104.937 46.9981C106.818 46.516 108.814 46.7999 110.487 47.7877C112.159 48.7754 113.372 50.3862 113.858 52.2668L127.502 105.27C127.983 107.151 127.699 109.147 126.711 110.819C125.724 112.491 124.113 113.703 122.233 114.189Z" className="fill-background"/>
|
|
90
|
+
<path d="M122.233 114.189L57.1267 130.948C55.2451 131.431 53.2491 131.147 51.5766 130.159C49.9041 129.171 48.6918 127.56 48.2055 125.68L34.5622 72.6769C34.0805 70.7955 34.3647 68.8 35.3524 67.1278C36.3401 65.4557 37.9507 64.2436 39.8308 63.7573L104.937 46.9981C106.818 46.516 108.814 46.7999 110.487 47.7877C112.159 48.7754 113.372 50.3862 113.858 52.2668L127.502 105.27C127.983 107.151 127.699 109.147 126.711 110.819C125.724 112.491 124.113 113.703 122.233 114.189ZM40.0455 64.5905C38.3865 65.02 36.9657 66.0899 36.0945 67.5656C35.2234 69.0413 34.9731 70.8023 35.3986 72.4622L49.0424 125.465C49.4719 127.124 50.5418 128.545 52.0175 129.416C53.4932 130.287 55.2541 130.538 56.9141 130.112L122.019 113.354C123.678 112.925 125.098 111.855 125.97 110.379C126.841 108.904 127.091 107.143 126.666 105.483L113.023 52.4798C112.594 50.8208 111.524 49.4 110.048 48.5288C108.572 47.6577 106.811 47.4074 105.151 47.8329L40.0455 64.5905Z" className="fill-border"/>
|
|
91
|
+
<path d="M101.634 64.8186L68.7764 73.2767C68.4892 73.3569 68.1823 73.3251 67.9176 73.1877C67.653 73.0503 67.4504 72.8176 67.3507 72.5365C67.3043 72.3896 67.2884 72.2348 67.3038 72.0816C67.3192 71.9283 67.3657 71.7798 67.4405 71.6451C67.5152 71.5104 67.6166 71.3924 67.7385 71.2982C67.8603 71.204 68.0001 71.1356 68.1493 71.0972L101.597 62.4873C102.948 63.172 102.592 64.5722 101.634 64.819L101.634 64.8186Z" className="fill-muted"/>
|
|
92
|
+
<path d="M103.116 70.5813L70.259 79.0394C69.9718 79.1196 69.6648 79.0878 69.4002 78.9504C69.1355 78.813 68.9329 78.5803 68.8332 78.2992C68.7869 78.1523 68.7709 77.9975 68.7863 77.8443C68.8018 77.691 68.8483 77.5425 68.923 77.4078C68.9977 77.2731 69.0991 77.1551 69.221 77.0609C69.3429 76.9667 69.4827 76.8983 69.6318 76.8599L103.079 68.25C104.43 68.9347 104.075 70.3349 103.117 70.5817L103.116 70.5813Z" className="fill-muted"/>
|
|
93
|
+
<path d="M64.0008 84.1512L53.973 86.7317C53.8108 86.7735 53.642 86.7829 53.4762 86.7594C53.3104 86.7359 53.1508 86.68 53.0066 86.5949C52.8624 86.5097 52.7364 86.397 52.6358 86.2631C52.5352 86.1292 52.4619 85.9768 52.4202 85.8146L49.3738 73.9836C49.332 73.8214 49.3226 73.6526 49.3461 73.4867C49.3696 73.3209 49.4255 73.1614 49.5106 73.0171C49.5958 72.8729 49.7085 72.7469 49.8424 72.6463C49.9763 72.5457 50.1287 72.4725 50.2909 72.4308L60.3187 69.8495C60.6462 69.7656 60.9936 69.8151 61.2847 69.987C61.5758 70.1589 61.7868 70.4392 61.8715 70.7665L64.9179 82.6004C64.9597 82.7626 64.9691 82.9314 64.9456 83.0973C64.9222 83.2631 64.8663 83.4226 64.7811 83.5668C64.6959 83.711 64.5832 83.8371 64.4493 83.9377C64.3154 84.0383 64.163 84.1115 64.0008 84.1532V84.1512Z" className="fill-destructive"/>
|
|
94
|
+
<path d="M106.059 82.4078L55.912 95.3163C55.6248 95.3965 55.3178 95.3647 55.0532 95.2273C54.7885 95.0899 54.5859 94.8572 54.4862 94.5761C54.4399 94.4292 54.4239 94.2744 54.4394 94.1212C54.4548 93.9679 54.5013 93.8194 54.576 93.6847C54.6508 93.55 54.7522 93.432 54.874 93.3378C54.9959 93.2436 55.1357 93.1752 55.2849 93.1368L106.022 80.0762C107.374 80.7609 107.017 82.1611 106.059 82.4078Z" className="fill-muted"/>
|
|
95
|
+
<path d="M107.544 88.173L57.3961 101.082C57.1089 101.162 56.802 101.13 56.5373 100.993C56.2727 100.856 56.07 100.623 55.9704 100.342C55.924 100.195 55.9081 100.04 55.9235 99.8868C55.9389 99.7335 55.9854 99.585 56.0602 99.4503C56.1349 99.3157 56.2363 99.1976 56.3582 99.1034C56.48 99.0092 56.6198 98.9408 56.769 98.9024L107.506 85.8418C108.858 86.5265 108.502 87.9267 107.544 88.1735L107.544 88.173Z" className="fill-muted"/>
|
|
96
|
+
<path d="M109.026 93.9342L58.879 106.843C58.5918 106.923 58.2848 106.891 58.0202 106.754C57.7555 106.616 57.5529 106.384 57.4532 106.102C57.4069 105.956 57.3909 105.801 57.4063 105.648C57.4218 105.494 57.4683 105.346 57.543 105.211C57.6177 105.076 57.7191 104.958 57.841 104.864C57.9629 104.77 58.1027 104.702 58.2518 104.663L108.989 91.6025C110.34 92.2872 109.984 93.6875 109.026 93.9342Z" className="fill-muted"/>
|
|
97
|
+
<path d="M110.511 99.6998L60.3631 112.608C60.0759 112.689 59.769 112.657 59.5043 112.519C59.2397 112.382 59.037 112.149 58.9374 111.868C58.891 111.721 58.875 111.566 58.8905 111.413C58.9059 111.26 58.9524 111.111 59.0272 110.977C59.1019 110.842 59.2033 110.724 59.3251 110.63C59.447 110.536 59.5868 110.467 59.736 110.429L110.473 97.3682C111.824 98.0529 111.469 99.4531 110.511 99.6998Z" className="fill-muted"/>
|
|
98
|
+
<path d="M111.994 105.462L61.8464 118.37C61.5592 118.45 61.2523 118.418 60.9876 118.281C60.723 118.144 60.5204 117.911 60.4207 117.63C60.3743 117.483 60.3584 117.328 60.3738 117.175C60.3892 117.022 60.4357 116.873 60.5105 116.738C60.5852 116.604 60.6866 116.486 60.8085 116.391C60.9303 116.297 61.0701 116.229 61.2193 116.191L111.957 103.13C113.308 103.815 112.952 105.215 111.994 105.462Z" className="fill-muted"/>
|
|
99
|
+
<path d="M59.5897 151.714C59.7128 151.591 59.9122 151.591 60.0353 151.714C60.1583 151.837 60.1583 152.037 60.0353 152.16L57.7372 154.458L60.0353 156.756C60.1583 156.879 60.1583 157.079 60.0353 157.202C59.9122 157.325 59.7128 157.325 59.5897 157.202L57.2917 154.904L54.9936 157.202C54.8706 157.325 54.6711 157.325 54.548 157.202C54.425 157.079 54.425 156.879 54.548 156.756L56.8461 154.458L54.548 152.16C54.425 152.037 54.425 151.837 54.548 151.714C54.6711 151.591 54.8706 151.591 54.9936 151.714L57.2917 154.012L59.5897 151.714Z" className="fill-foreground-inverse"/>
|
|
100
|
+
<path d="M263.698 201.31L154.555 180.095C150.854 179.371 147.592 177.209 145.484 174.083C143.375 170.956 142.593 167.122 143.309 163.419L168.224 35.2405C168.948 31.5401 171.11 28.2779 174.235 26.1694C177.361 24.061 181.196 23.2786 184.898 23.9939L286.437 43.7311L304.66 65.1098L280.372 190.062C279.648 193.762 277.486 197.025 274.361 199.134C271.235 201.242 267.4 202.025 263.698 201.31Z" className="fill-border"/>
|
|
101
|
+
<path d="M184.117 28.0125C181.48 27.5031 178.75 28.0603 176.524 29.5617C174.298 31.0632 172.758 33.3863 172.243 36.0214L147.328 164.2C146.818 166.837 147.375 169.567 148.877 171.793C150.378 174.019 152.701 175.559 155.337 176.074L264.479 197.289C267.115 197.798 269.846 197.241 272.072 195.74C274.298 194.238 275.837 191.915 276.353 189.28L300.264 66.2647L284.25 47.4765L184.117 28.0125Z" className="fill-background"/>
|
|
102
|
+
<path d="M264.786 82.3727L215.095 72.7137C214.478 72.5939 213.935 72.234 213.584 71.7133C213.232 71.1925 213.102 70.5536 213.222 69.9371C213.342 69.3205 213.702 68.7768 214.223 68.4256C214.743 68.0743 215.382 67.9443 215.999 68.0642L265.691 77.7234C266.308 77.8432 266.851 78.2031 267.203 78.7238C267.554 79.2445 267.684 79.8835 267.564 80.5C267.444 81.1166 267.084 81.6603 266.564 82.0115C266.043 82.3628 265.404 82.4927 264.787 82.3729L264.786 82.3727Z" className="fill-destructive"/>
|
|
103
|
+
<path d="M272.851 92.0834L213.57 80.5604C212.953 80.4405 212.41 80.0807 212.058 79.5599C211.707 79.0392 211.577 78.4003 211.697 77.7837C211.817 77.1672 212.177 76.6235 212.698 76.2722C213.218 75.921 213.857 75.791 214.474 75.9109L273.754 87.4339C274.371 87.5537 274.915 87.9136 275.266 88.4343C275.617 88.955 275.747 89.594 275.627 90.2105C275.507 90.8271 275.148 91.3708 274.627 91.722C274.106 92.0732 273.467 92.2032 272.851 92.0834Z" className="fill-destructive"/>
|
|
104
|
+
<path d="M258.856 112.884L209.166 103.225C208.549 103.105 207.911 103.235 207.39 103.587C206.869 103.938 206.509 104.481 206.39 105.098C206.27 105.715 206.4 106.353 206.751 106.874C207.102 107.395 207.646 107.755 208.262 107.874L257.952 117.533C258.565 117.644 259.197 117.509 259.711 117.157C260.224 116.806 260.579 116.266 260.698 115.654C260.817 115.043 260.69 114.41 260.345 113.891C260.001 113.373 259.465 113.011 258.856 112.884Z" className="fill-muted-foreground"/>
|
|
105
|
+
<path d="M266.921 122.594L207.641 111.071C207.334 111.007 207.017 111.005 206.709 111.065C206.401 111.124 206.108 111.244 205.847 111.418C205.586 111.592 205.362 111.815 205.188 112.076C205.014 112.337 204.893 112.63 204.833 112.938C204.774 113.246 204.776 113.563 204.839 113.87C204.903 114.177 205.027 114.468 205.204 114.727C205.381 114.986 205.607 115.207 205.871 115.378C206.134 115.548 206.428 115.665 206.737 115.72L266.016 127.243C266.324 127.307 266.64 127.309 266.948 127.25C267.256 127.19 267.549 127.07 267.81 126.897C268.071 126.723 268.296 126.499 268.47 126.238C268.643 125.977 268.764 125.684 268.824 125.376C268.884 125.069 268.882 124.752 268.818 124.445C268.755 124.138 268.631 123.846 268.454 123.587C268.276 123.329 268.05 123.107 267.787 122.937C267.523 122.766 267.229 122.65 266.921 122.594Z" className="fill-muted-foreground"/>
|
|
106
|
+
<path d="M251.117 152.695L201.426 143.036C200.809 142.916 200.265 142.556 199.914 142.036C199.563 141.515 199.433 140.876 199.553 140.259C199.673 139.643 200.032 139.099 200.553 138.748C201.074 138.397 201.713 138.267 202.329 138.386L252.022 148.046C252.638 148.165 253.182 148.525 253.533 149.046C253.884 149.567 254.014 150.206 253.895 150.822C253.775 151.439 253.415 151.983 252.894 152.334C252.373 152.685 251.734 152.815 251.118 152.695L251.117 152.695Z" className="fill-muted-foreground"/>
|
|
107
|
+
<path d="M259.181 162.406L199.901 150.883C199.284 150.763 198.74 150.403 198.389 149.882C198.038 149.361 197.908 148.723 198.028 148.106C198.148 147.489 198.507 146.946 199.028 146.595C199.549 146.243 200.188 146.113 200.804 146.233L260.085 157.756C260.702 157.876 261.245 158.236 261.597 158.757C261.948 159.277 262.078 159.916 261.958 160.533C261.838 161.149 261.478 161.693 260.958 162.044C260.437 162.396 259.798 162.526 259.181 162.406Z" className="fill-muted-foreground"/>
|
|
108
|
+
<path d="M192.494 78.5063C197.032 79.3884 201.426 76.4247 202.308 71.8867C203.191 67.3487 200.227 62.9549 195.689 62.0728C191.151 61.1907 186.757 64.1544 185.875 68.6924C184.993 73.2304 187.956 77.6242 192.494 78.5063Z" className="fill-destructive"/>
|
|
109
|
+
<path d="M196.352 67.5493C196.475 67.4263 196.675 67.4263 196.798 67.5493C196.921 67.6724 196.921 67.8718 196.798 67.9949L194.5 70.2929L196.798 72.591C196.921 72.714 196.921 72.9135 196.798 73.0366C196.675 73.1596 196.475 73.1596 196.352 73.0366L194.054 70.7385L191.756 73.0366C191.633 73.1596 191.434 73.1596 191.311 73.0366C191.187 72.9135 191.187 72.714 191.311 72.591L193.609 70.2929L191.311 67.9949C191.187 67.8718 191.187 67.6724 191.311 67.5493C191.434 67.4263 191.633 67.4263 191.756 67.5493L194.054 69.8474L196.352 67.5493Z" className="fill-foreground-inverse"/>
|
|
110
|
+
<path d="M196.318 107.212C196.109 108.291 195.689 109.319 195.083 110.236C194.476 111.153 193.695 111.941 192.784 112.556C191.873 113.171 190.849 113.6 189.772 113.82C188.695 114.039 187.585 114.044 186.505 113.835C186.435 113.822 186.365 113.806 186.296 113.785C184.688 113.43 183.221 112.608 182.078 111.423C180.935 110.238 180.167 108.742 179.87 107.123C179.573 105.504 179.761 103.833 180.408 102.319C181.056 100.806 182.136 99.5168 183.513 98.6139C184.89 97.7111 186.502 97.2343 188.148 97.2432C189.794 97.2521 191.402 97.7463 192.768 98.6641C194.135 99.5818 195.201 100.882 195.832 102.403C196.464 103.923 196.633 105.596 196.318 107.212Z" className="fill-destructive"/>
|
|
111
|
+
<path d="M178.825 148.829C183.363 149.711 187.757 146.747 188.639 142.209C189.521 137.671 186.557 133.277 182.019 132.395C177.481 131.513 173.088 134.477 172.205 139.015C171.323 143.553 174.287 147.946 178.825 148.829Z" className="fill-destructive"/>
|
|
112
|
+
<path d="M304.132 65.5821L287.241 62.2988C286.008 62.0591 284.92 61.3394 284.218 60.2979C283.516 59.2565 283.256 57.9786 283.495 56.7455L285.92 44.27C285.931 44.2154 285.957 44.1649 285.995 44.1242C286.033 44.0836 286.082 44.0546 286.135 44.0404C286.189 44.0262 286.246 44.0274 286.299 44.0439C286.352 44.0605 286.399 44.0916 286.436 44.1339L304.414 65.0977C304.454 65.1443 304.478 65.2023 304.484 65.2635C304.489 65.3246 304.476 65.386 304.445 65.4391C304.414 65.4922 304.367 65.5344 304.311 65.5598C304.255 65.5852 304.193 65.5926 304.133 65.5809L304.132 65.5821Z" className="fill-muted-foreground"/>
|
|
113
|
+
<path d="M204.009 190.322C203.489 191.175 202.651 191.786 201.68 192.021C200.71 192.257 199.685 192.097 198.833 191.577L154.892 164.774C154.039 164.254 153.428 163.417 153.192 162.446C152.957 161.475 153.117 160.451 153.637 159.598C154.158 158.745 154.995 158.134 155.966 157.899C156.937 157.664 157.961 157.824 158.814 158.344L202.754 185.146C203.607 185.666 204.218 186.504 204.453 187.475C204.689 188.445 204.529 189.47 204.009 190.322Z" className="fill-foreground"/>
|
|
114
|
+
<path d="M160.068 163.518C156.965 168.606 152.423 172.659 147.017 175.165C141.611 177.671 135.583 178.517 129.695 177.597C123.808 176.678 118.325 174.033 113.941 169.997C109.557 165.961 106.468 160.716 105.065 154.925C103.661 149.134 104.007 143.056 106.058 137.461C108.108 131.867 111.772 127.005 116.585 123.493C121.399 119.98 127.146 117.974 133.1 117.727C139.053 117.48 144.946 119.005 150.034 122.108C153.412 124.168 156.351 126.873 158.683 130.069C161.016 133.265 162.696 136.89 163.627 140.735C164.559 144.58 164.724 148.571 164.114 152.481C163.503 156.39 162.128 160.141 160.068 163.518ZM115.055 136.061C112.728 139.876 111.585 144.296 111.77 148.761C111.955 153.227 113.459 157.537 116.094 161.147C118.729 164.757 122.374 167.505 126.571 169.043C130.767 170.581 135.325 170.84 139.668 169.788C144.012 168.735 147.946 166.419 150.973 163.13C153.999 159.842 155.983 155.73 156.673 151.315C157.363 146.899 156.728 142.378 154.848 138.323C152.968 134.269 149.929 130.862 146.113 128.535C140.997 125.415 134.85 124.454 129.026 125.866C123.201 127.277 118.176 130.944 115.055 136.061Z" className="fill-foreground"/>
|
|
115
|
+
<path d="M126.379 169.68C138.621 173.895 151.962 167.388 156.177 155.146C160.392 142.904 153.886 129.563 141.644 125.348C129.402 121.133 116.061 127.64 111.846 139.882C107.631 152.123 114.137 165.464 126.379 169.68Z" className="fill-soft-destructive"/>
|
|
116
|
+
</g>
|
|
117
|
+
<defs>
|
|
118
|
+
<clipPath id={clipId}>
|
|
119
|
+
<rect width="308" height="188.045" transform="translate(0 15.9775)" />
|
|
120
|
+
</clipPath>
|
|
121
|
+
</defs>
|
|
122
|
+
</svg>
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export function ErrorStateEmptySearchResults({
|
|
127
|
+
locale = "en",
|
|
128
|
+
query,
|
|
129
|
+
heading,
|
|
130
|
+
description,
|
|
131
|
+
searchLabel,
|
|
132
|
+
suggestions,
|
|
133
|
+
suggestionsLabel,
|
|
134
|
+
disabled = false,
|
|
135
|
+
onSearch,
|
|
136
|
+
className,
|
|
137
|
+
...props
|
|
138
|
+
}: ErrorStateEmptySearchResultsProps) {
|
|
139
|
+
const copy = COPY[locale]
|
|
140
|
+
const headingId = React.useId()
|
|
141
|
+
const initialQuery = query ?? copy.query
|
|
142
|
+
const [value, setValue] = React.useState(initialQuery)
|
|
143
|
+
const [searched, setSearched] = React.useState(initialQuery)
|
|
144
|
+
const [pending, setPending] = React.useState(false)
|
|
145
|
+
const label = searchLabel ?? copy.searchLabel
|
|
146
|
+
const tries = suggestions ?? copy.suggestions
|
|
147
|
+
|
|
148
|
+
// A new `query` from the app replaces what the block holds.
|
|
149
|
+
React.useEffect(() => {
|
|
150
|
+
setValue(initialQuery)
|
|
151
|
+
setSearched(initialQuery)
|
|
152
|
+
}, [initialQuery])
|
|
153
|
+
|
|
154
|
+
const run = async (next: string) => {
|
|
155
|
+
setSearched(next)
|
|
156
|
+
const result = onSearch?.(next)
|
|
157
|
+
if (result && typeof (result as Promise<unknown>).then === "function") {
|
|
158
|
+
setPending(true)
|
|
159
|
+
try {
|
|
160
|
+
await result
|
|
161
|
+
} catch {
|
|
162
|
+
// The app reports its own search failures; the block only stops waiting.
|
|
163
|
+
} finally {
|
|
164
|
+
setPending(false)
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return (
|
|
170
|
+
<section
|
|
171
|
+
aria-labelledby={headingId}
|
|
172
|
+
className={cn("flex flex-col gap-8 bg-background p-8 md:p-16 lg:p-24", className)}
|
|
173
|
+
{...props}
|
|
174
|
+
>
|
|
175
|
+
<div className="mx-auto w-full max-w-[1248px]">
|
|
176
|
+
<form
|
|
177
|
+
role="search"
|
|
178
|
+
className="flex flex-col gap-2.5 md:flex-row md:items-center md:gap-3"
|
|
179
|
+
onSubmit={(event) => {
|
|
180
|
+
event.preventDefault()
|
|
181
|
+
void run(value.trim())
|
|
182
|
+
}}
|
|
183
|
+
>
|
|
184
|
+
<Input
|
|
185
|
+
type="search"
|
|
186
|
+
size="lg"
|
|
187
|
+
aria-label={label}
|
|
188
|
+
value={value}
|
|
189
|
+
onChange={(event) => setValue(event.target.value)}
|
|
190
|
+
disabled={disabled}
|
|
191
|
+
startIcon={<Search size={16} strokeWidth={1.5} absoluteStrokeWidth />}
|
|
192
|
+
className="md:flex-1"
|
|
193
|
+
/>
|
|
194
|
+
<Button type="submit" size="lg" disabled={disabled} loading={pending} className="w-full md:w-auto">
|
|
195
|
+
{label}
|
|
196
|
+
</Button>
|
|
197
|
+
</form>
|
|
198
|
+
</div>
|
|
199
|
+
|
|
200
|
+
<div className="mx-auto flex w-full max-w-[520px] flex-col items-center gap-6 py-6 lg:py-2">
|
|
201
|
+
<FileSearchArt className="h-36 w-[202px] shrink-0 md:h-44 md:w-[246px] lg:h-[220px] lg:w-[308px]" />
|
|
202
|
+
<div className="flex w-full flex-col gap-2.5 text-center">
|
|
203
|
+
<h1 id={headingId} aria-live="polite" className="text-xl font-semibold text-foreground md:text-2xl">
|
|
204
|
+
{(heading ?? copy.heading)(searched)}
|
|
205
|
+
</h1>
|
|
206
|
+
<p className="text-base text-muted-foreground">{description ?? copy.description}</p>
|
|
207
|
+
</div>
|
|
208
|
+
{tries.length > 0 ? (
|
|
209
|
+
<ul aria-label={suggestionsLabel ?? copy.suggestionsLabel} className="flex w-full flex-wrap justify-center gap-2">
|
|
210
|
+
{tries.map((suggestion) => (
|
|
211
|
+
<li key={suggestion}>
|
|
212
|
+
<button
|
|
213
|
+
type="button"
|
|
214
|
+
disabled={disabled}
|
|
215
|
+
onClick={() => {
|
|
216
|
+
setValue(suggestion)
|
|
217
|
+
void run(suggestion)
|
|
218
|
+
}}
|
|
219
|
+
className="group/suggestion flex rounded-full outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50"
|
|
220
|
+
>
|
|
221
|
+
<Badge
|
|
222
|
+
variant="outline"
|
|
223
|
+
size="lg"
|
|
224
|
+
icon={<Search size={12} strokeWidth={1.5} absoluteStrokeWidth />}
|
|
225
|
+
className="cursor-pointer transition-colors group-hover/suggestion:bg-soft-primary group-disabled/suggestion:cursor-not-allowed"
|
|
226
|
+
>
|
|
227
|
+
{suggestion}
|
|
228
|
+
</Badge>
|
|
229
|
+
</button>
|
|
230
|
+
</li>
|
|
231
|
+
))}
|
|
232
|
+
</ul>
|
|
233
|
+
) : null}
|
|
234
|
+
</div>
|
|
235
|
+
</section>
|
|
236
|
+
)
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* The default copy, English and Arabic, as `locale` picks it. Spread it to
|
|
241
|
+
* change a few strings and keep the rest.
|
|
242
|
+
*/
|
|
243
|
+
export const errorStateEmptySearchResultsCopy = COPY
|