@nanisoft/prism-ui 0.13.0 → 0.16.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/THIRD-PARTY-NOTICES.md +22 -7
- package/dist/.tsbuildinfo +1 -1
- package/dist/blocks/about-01/about.d.ts +296 -0
- package/dist/blocks/about-01/about.d.ts.map +1 -0
- package/dist/blocks/about-01/about.js +103 -0
- package/dist/blocks/about-01/index.d.ts +3 -0
- package/dist/blocks/about-01/index.d.ts.map +1 -0
- package/dist/blocks/about-01/index.js +1 -0
- package/dist/blocks/accept-invite-01/accept-invite.d.ts +324 -0
- package/dist/blocks/accept-invite-01/accept-invite.d.ts.map +1 -0
- package/dist/blocks/accept-invite-01/accept-invite.js +230 -0
- package/dist/blocks/accept-invite-01/index.d.ts +3 -0
- package/dist/blocks/accept-invite-01/index.d.ts.map +1 -0
- package/dist/blocks/accept-invite-01/index.js +1 -0
- package/dist/blocks/account-01/account-01.d.ts +393 -0
- package/dist/blocks/account-01/account-01.d.ts.map +1 -0
- package/dist/blocks/account-01/account-01.js +215 -0
- package/dist/blocks/account-01/index.d.ts +3 -0
- package/dist/blocks/account-01/index.d.ts.map +1 -0
- package/dist/blocks/account-01/index.js +1 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.d.ts +271 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.d.ts.map +1 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.js +185 -0
- package/dist/blocks/activity-feed-01/index.d.ts +3 -0
- package/dist/blocks/activity-feed-01/index.d.ts.map +1 -0
- package/dist/blocks/activity-feed-01/index.js +1 -0
- package/dist/blocks/address-book-01/address-book-01.d.ts +312 -0
- package/dist/blocks/address-book-01/address-book-01.d.ts.map +1 -0
- package/dist/blocks/address-book-01/address-book-01.js +233 -0
- package/dist/blocks/address-book-01/index.d.ts +3 -0
- package/dist/blocks/address-book-01/index.d.ts.map +1 -0
- package/dist/blocks/address-book-01/index.js +1 -0
- package/dist/blocks/audit-log-01/audit-log-01.d.ts +333 -0
- package/dist/blocks/audit-log-01/audit-log-01.d.ts.map +1 -0
- package/dist/blocks/audit-log-01/audit-log-01.js +211 -0
- package/dist/blocks/audit-log-01/index.d.ts +3 -0
- package/dist/blocks/audit-log-01/index.d.ts.map +1 -0
- package/dist/blocks/audit-log-01/index.js +1 -0
- package/dist/blocks/auth-form-01/auth-form.d.ts +40 -1
- package/dist/blocks/auth-form-01/auth-form.d.ts.map +1 -1
- package/dist/blocks/auth-form-01/auth-form.js +26 -3
- package/dist/blocks/awards-01/awards.d.ts +156 -0
- package/dist/blocks/awards-01/awards.d.ts.map +1 -0
- package/dist/blocks/awards-01/awards.js +102 -0
- package/dist/blocks/awards-01/index.d.ts +3 -0
- package/dist/blocks/awards-01/index.d.ts.map +1 -0
- package/dist/blocks/awards-01/index.js +1 -0
- package/dist/blocks/backdrop-01/backdrop.d.ts +268 -0
- package/dist/blocks/backdrop-01/backdrop.d.ts.map +1 -0
- package/dist/blocks/backdrop-01/backdrop.js +170 -0
- package/dist/blocks/backdrop-01/index.d.ts +3 -0
- package/dist/blocks/backdrop-01/index.d.ts.map +1 -0
- package/dist/blocks/backdrop-01/index.js +1 -0
- package/dist/blocks/bento-01/bento-01.d.ts +136 -0
- package/dist/blocks/bento-01/bento-01.d.ts.map +1 -0
- package/dist/blocks/bento-01/bento-01.js +97 -0
- package/dist/blocks/bento-01/index.d.ts +3 -0
- package/dist/blocks/bento-01/index.d.ts.map +1 -0
- package/dist/blocks/bento-01/index.js +1 -0
- package/dist/blocks/billing-source-01/billing-source-01.d.ts +379 -0
- package/dist/blocks/billing-source-01/billing-source-01.d.ts.map +1 -0
- package/dist/blocks/billing-source-01/billing-source-01.js +222 -0
- package/dist/blocks/billing-source-01/index.d.ts +3 -0
- package/dist/blocks/billing-source-01/index.d.ts.map +1 -0
- package/dist/blocks/billing-source-01/index.js +1 -0
- package/dist/blocks/bundle-01/bundle.d.ts +387 -0
- package/dist/blocks/bundle-01/bundle.d.ts.map +1 -0
- package/dist/blocks/bundle-01/bundle.js +153 -0
- package/dist/blocks/bundle-01/index.d.ts +3 -0
- package/dist/blocks/bundle-01/index.d.ts.map +1 -0
- package/dist/blocks/bundle-01/index.js +1 -0
- package/dist/blocks/calendar-01/calendar.d.ts +251 -0
- package/dist/blocks/calendar-01/calendar.d.ts.map +1 -0
- package/dist/blocks/calendar-01/calendar.js +191 -0
- package/dist/blocks/calendar-01/index.d.ts +3 -0
- package/dist/blocks/calendar-01/index.d.ts.map +1 -0
- package/dist/blocks/calendar-01/index.js +1 -0
- package/dist/blocks/capacity-01/capacity.d.ts +363 -0
- package/dist/blocks/capacity-01/capacity.d.ts.map +1 -0
- package/dist/blocks/capacity-01/capacity.js +208 -0
- package/dist/blocks/capacity-01/index.d.ts +3 -0
- package/dist/blocks/capacity-01/index.d.ts.map +1 -0
- package/dist/blocks/capacity-01/index.js +1 -0
- package/dist/blocks/careers-01/careers.d.ts +186 -0
- package/dist/blocks/careers-01/careers.d.ts.map +1 -0
- package/dist/blocks/careers-01/careers.js +83 -0
- package/dist/blocks/careers-01/index.d.ts +3 -0
- package/dist/blocks/careers-01/index.d.ts.map +1 -0
- package/dist/blocks/careers-01/index.js +1 -0
- package/dist/blocks/case-studies-01/case-studies.d.ts +192 -0
- package/dist/blocks/case-studies-01/case-studies.d.ts.map +1 -0
- package/dist/blocks/case-studies-01/case-studies.js +97 -0
- package/dist/blocks/case-studies-01/index.d.ts +3 -0
- package/dist/blocks/case-studies-01/index.d.ts.map +1 -0
- package/dist/blocks/case-studies-01/index.js +1 -0
- package/dist/blocks/case-study-01/case-study.d.ts +214 -0
- package/dist/blocks/case-study-01/case-study.d.ts.map +1 -0
- package/dist/blocks/case-study-01/case-study.js +79 -0
- package/dist/blocks/case-study-01/index.d.ts +3 -0
- package/dist/blocks/case-study-01/index.d.ts.map +1 -0
- package/dist/blocks/case-study-01/index.js +1 -0
- package/dist/blocks/changelog-01/changelog.d.ts +200 -0
- package/dist/blocks/changelog-01/changelog.d.ts.map +1 -0
- package/dist/blocks/changelog-01/changelog.js +155 -0
- package/dist/blocks/changelog-01/index.d.ts +3 -0
- package/dist/blocks/changelog-01/index.d.ts.map +1 -0
- package/dist/blocks/changelog-01/index.js +1 -0
- package/dist/blocks/chart-card-01/chart-card-01.d.ts +149 -0
- package/dist/blocks/chart-card-01/chart-card-01.d.ts.map +1 -0
- package/dist/blocks/chart-card-01/chart-card-01.js +81 -0
- package/dist/blocks/chart-card-01/index.d.ts +3 -0
- package/dist/blocks/chart-card-01/index.d.ts.map +1 -0
- package/dist/blocks/chart-card-01/index.js +1 -0
- package/dist/blocks/chart-group-01/chart-group-01.d.ts +138 -0
- package/dist/blocks/chart-group-01/chart-group-01.d.ts.map +1 -0
- package/dist/blocks/chart-group-01/chart-group-01.js +74 -0
- package/dist/blocks/chart-group-01/index.d.ts +3 -0
- package/dist/blocks/chart-group-01/index.d.ts.map +1 -0
- package/dist/blocks/chart-group-01/index.js +1 -0
- package/dist/blocks/code-sample-01/code-sample.d.ts +193 -0
- package/dist/blocks/code-sample-01/code-sample.d.ts.map +1 -0
- package/dist/blocks/code-sample-01/code-sample.js +104 -0
- package/dist/blocks/code-sample-01/index.d.ts +3 -0
- package/dist/blocks/code-sample-01/index.d.ts.map +1 -0
- package/dist/blocks/code-sample-01/index.js +1 -0
- package/dist/blocks/community-01/community.d.ts +183 -0
- package/dist/blocks/community-01/community.d.ts.map +1 -0
- package/dist/blocks/community-01/community.js +102 -0
- package/dist/blocks/community-01/index.d.ts +3 -0
- package/dist/blocks/community-01/index.d.ts.map +1 -0
- package/dist/blocks/community-01/index.js +1 -0
- package/dist/blocks/compare-01/compare.d.ts +184 -0
- package/dist/blocks/compare-01/compare.d.ts.map +1 -0
- package/dist/blocks/compare-01/compare.js +106 -0
- package/dist/blocks/compare-01/index.d.ts +3 -0
- package/dist/blocks/compare-01/index.d.ts.map +1 -0
- package/dist/blocks/compare-01/index.js +1 -0
- package/dist/blocks/compliance-01/compliance.d.ts +249 -0
- package/dist/blocks/compliance-01/compliance.d.ts.map +1 -0
- package/dist/blocks/compliance-01/compliance.js +130 -0
- package/dist/blocks/compliance-01/index.d.ts +3 -0
- package/dist/blocks/compliance-01/index.d.ts.map +1 -0
- package/dist/blocks/compliance-01/index.js +1 -0
- package/dist/blocks/consent-01/consent.d.ts +211 -0
- package/dist/blocks/consent-01/consent.d.ts.map +1 -0
- package/dist/blocks/consent-01/consent.js +101 -0
- package/dist/blocks/consent-01/index.d.ts +3 -0
- package/dist/blocks/consent-01/index.d.ts.map +1 -0
- package/dist/blocks/consent-01/index.js +1 -0
- package/dist/blocks/contact-01/contact.d.ts +319 -0
- package/dist/blocks/contact-01/contact.d.ts.map +1 -0
- package/dist/blocks/contact-01/contact.js +211 -0
- package/dist/blocks/contact-01/index.d.ts +3 -0
- package/dist/blocks/contact-01/index.d.ts.map +1 -0
- package/dist/blocks/contact-01/index.js +1 -0
- package/dist/blocks/content-grid-01/content-grid.d.ts +262 -0
- package/dist/blocks/content-grid-01/content-grid.d.ts.map +1 -0
- package/dist/blocks/content-grid-01/content-grid.js +155 -0
- package/dist/blocks/content-grid-01/index.d.ts +3 -0
- package/dist/blocks/content-grid-01/index.d.ts.map +1 -0
- package/dist/blocks/content-grid-01/index.js +1 -0
- package/dist/blocks/cta-01/cta.d.ts +7 -1
- package/dist/blocks/cta-01/cta.d.ts.map +1 -1
- package/dist/blocks/cta-01/cta.js +11 -2
- package/dist/blocks/dashboard-01/dashboard-01.d.ts +247 -0
- package/dist/blocks/dashboard-01/dashboard-01.d.ts.map +1 -0
- package/dist/blocks/dashboard-01/dashboard-01.js +141 -0
- package/dist/blocks/dashboard-01/index.d.ts +3 -0
- package/dist/blocks/dashboard-01/index.d.ts.map +1 -0
- package/dist/blocks/dashboard-01/index.js +1 -0
- package/dist/blocks/data-table-01/data-table.d.ts +22 -1
- package/dist/blocks/data-table-01/data-table.d.ts.map +1 -1
- package/dist/blocks/data-table-01/data-table.js +9 -5
- package/dist/blocks/delivery-01/delivery.d.ts +343 -0
- package/dist/blocks/delivery-01/delivery.d.ts.map +1 -0
- package/dist/blocks/delivery-01/delivery.js +212 -0
- package/dist/blocks/delivery-01/index.d.ts +3 -0
- package/dist/blocks/delivery-01/index.d.ts.map +1 -0
- package/dist/blocks/delivery-01/index.js +1 -0
- package/dist/blocks/directory-01/directory-01.d.ts +316 -0
- package/dist/blocks/directory-01/directory-01.d.ts.map +1 -0
- package/dist/blocks/directory-01/directory-01.js +252 -0
- package/dist/blocks/directory-01/index.d.ts +3 -0
- package/dist/blocks/directory-01/index.d.ts.map +1 -0
- package/dist/blocks/directory-01/index.js +1 -0
- package/dist/blocks/download-01/download.d.ts +261 -0
- package/dist/blocks/download-01/download.d.ts.map +1 -0
- package/dist/blocks/download-01/download.js +115 -0
- package/dist/blocks/download-01/index.d.ts +3 -0
- package/dist/blocks/download-01/index.d.ts.map +1 -0
- package/dist/blocks/download-01/index.js +1 -0
- package/dist/blocks/faq-01/faq.d.ts +128 -0
- package/dist/blocks/faq-01/faq.d.ts.map +1 -0
- package/dist/blocks/faq-01/faq.js +53 -0
- package/dist/blocks/faq-01/index.d.ts +3 -0
- package/dist/blocks/faq-01/index.d.ts.map +1 -0
- package/dist/blocks/faq-01/index.js +1 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.d.ts +158 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.d.ts.map +1 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.js +81 -0
- package/dist/blocks/feature-rows-01/index.d.ts +3 -0
- package/dist/blocks/feature-rows-01/index.d.ts.map +1 -0
- package/dist/blocks/feature-rows-01/index.js +1 -0
- package/dist/blocks/feedback-01/feedback.d.ts +235 -0
- package/dist/blocks/feedback-01/feedback.d.ts.map +1 -0
- package/dist/blocks/feedback-01/feedback.js +113 -0
- package/dist/blocks/feedback-01/index.d.ts +3 -0
- package/dist/blocks/feedback-01/index.d.ts.map +1 -0
- package/dist/blocks/feedback-01/index.js +1 -0
- package/dist/blocks/field-map-01/field-map.d.ts +247 -0
- package/dist/blocks/field-map-01/field-map.d.ts.map +1 -0
- package/dist/blocks/field-map-01/field-map.js +183 -0
- package/dist/blocks/field-map-01/index.d.ts +3 -0
- package/dist/blocks/field-map-01/index.d.ts.map +1 -0
- package/dist/blocks/field-map-01/index.js +1 -0
- package/dist/blocks/forgot-password-01/forgot-password.d.ts +288 -0
- package/dist/blocks/forgot-password-01/forgot-password.d.ts.map +1 -0
- package/dist/blocks/forgot-password-01/forgot-password.js +190 -0
- package/dist/blocks/forgot-password-01/index.d.ts +3 -0
- package/dist/blocks/forgot-password-01/index.d.ts.map +1 -0
- package/dist/blocks/forgot-password-01/index.js +1 -0
- package/dist/blocks/gallery-01/gallery.d.ts +208 -0
- package/dist/blocks/gallery-01/gallery.d.ts.map +1 -0
- package/dist/blocks/gallery-01/gallery.js +174 -0
- package/dist/blocks/gallery-01/index.d.ts +3 -0
- package/dist/blocks/gallery-01/index.d.ts.map +1 -0
- package/dist/blocks/gallery-01/index.js +1 -0
- package/dist/blocks/gantt-01/gantt.d.ts +290 -0
- package/dist/blocks/gantt-01/gantt.d.ts.map +1 -0
- package/dist/blocks/gantt-01/gantt.js +224 -0
- package/dist/blocks/gantt-01/index.d.ts +3 -0
- package/dist/blocks/gantt-01/index.d.ts.map +1 -0
- package/dist/blocks/gantt-01/index.js +1 -0
- package/dist/blocks/handoff-01/handoff-01.d.ts +326 -0
- package/dist/blocks/handoff-01/handoff-01.d.ts.map +1 -0
- package/dist/blocks/handoff-01/handoff-01.js +180 -0
- package/dist/blocks/handoff-01/index.d.ts +3 -0
- package/dist/blocks/handoff-01/index.d.ts.map +1 -0
- package/dist/blocks/handoff-01/index.js +1 -0
- package/dist/blocks/help-01/help.d.ts +254 -0
- package/dist/blocks/help-01/help.d.ts.map +1 -0
- package/dist/blocks/help-01/help.js +188 -0
- package/dist/blocks/help-01/index.d.ts +3 -0
- package/dist/blocks/help-01/index.d.ts.map +1 -0
- package/dist/blocks/help-01/index.js +1 -0
- package/dist/blocks/hero-01/hero.d.ts +105 -34
- package/dist/blocks/hero-01/hero.d.ts.map +1 -1
- package/dist/blocks/hero-01/hero.js +23 -15
- package/dist/blocks/hero-01/index.d.ts +1 -1
- package/dist/blocks/hero-01/index.d.ts.map +1 -1
- package/dist/blocks/hero-02/hero-02.d.ts +244 -0
- package/dist/blocks/hero-02/hero-02.d.ts.map +1 -0
- package/dist/blocks/hero-02/hero-02.js +87 -0
- package/dist/blocks/hero-02/index.d.ts +3 -0
- package/dist/blocks/hero-02/index.d.ts.map +1 -0
- package/dist/blocks/hero-02/index.js +1 -0
- package/dist/blocks/hero-03/hero-03.d.ts +247 -0
- package/dist/blocks/hero-03/hero-03.d.ts.map +1 -0
- package/dist/blocks/hero-03/hero-03.js +93 -0
- package/dist/blocks/hero-03/index.d.ts +3 -0
- package/dist/blocks/hero-03/index.d.ts.map +1 -0
- package/dist/blocks/hero-03/index.js +1 -0
- package/dist/blocks/history-01/history-01.d.ts +414 -0
- package/dist/blocks/history-01/history-01.d.ts.map +1 -0
- package/dist/blocks/history-01/history-01.js +285 -0
- package/dist/blocks/history-01/index.d.ts +3 -0
- package/dist/blocks/history-01/index.d.ts.map +1 -0
- package/dist/blocks/history-01/index.js +1 -0
- package/dist/blocks/inbox-01/inbox.d.ts +349 -0
- package/dist/blocks/inbox-01/inbox.d.ts.map +1 -0
- package/dist/blocks/inbox-01/inbox.js +244 -0
- package/dist/blocks/inbox-01/index.d.ts +3 -0
- package/dist/blocks/inbox-01/index.d.ts.map +1 -0
- package/dist/blocks/inbox-01/index.js +1 -0
- package/dist/blocks/index.d.ts +203 -0
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +118 -0
- package/dist/blocks/industries-01/index.d.ts +3 -0
- package/dist/blocks/industries-01/index.d.ts.map +1 -0
- package/dist/blocks/industries-01/index.js +1 -0
- package/dist/blocks/industries-01/industries.d.ts +164 -0
- package/dist/blocks/industries-01/industries.d.ts.map +1 -0
- package/dist/blocks/industries-01/industries.js +96 -0
- package/dist/blocks/intake-01/index.d.ts +3 -0
- package/dist/blocks/intake-01/index.d.ts.map +1 -0
- package/dist/blocks/intake-01/index.js +1 -0
- package/dist/blocks/intake-01/intake-01.d.ts +305 -0
- package/dist/blocks/intake-01/intake-01.d.ts.map +1 -0
- package/dist/blocks/intake-01/intake-01.js +178 -0
- package/dist/blocks/integration-01/index.d.ts +3 -0
- package/dist/blocks/integration-01/index.d.ts.map +1 -0
- package/dist/blocks/integration-01/index.js +1 -0
- package/dist/blocks/integration-01/integration.d.ts +226 -0
- package/dist/blocks/integration-01/integration.d.ts.map +1 -0
- package/dist/blocks/integration-01/integration.js +170 -0
- package/dist/blocks/invite-user-01/index.d.ts +3 -0
- package/dist/blocks/invite-user-01/index.d.ts.map +1 -0
- package/dist/blocks/invite-user-01/index.js +1 -0
- package/dist/blocks/invite-user-01/invite-user.d.ts +317 -0
- package/dist/blocks/invite-user-01/invite-user.d.ts.map +1 -0
- package/dist/blocks/invite-user-01/invite-user.js +228 -0
- package/dist/blocks/issue-detail-01/index.d.ts +3 -0
- package/dist/blocks/issue-detail-01/index.d.ts.map +1 -0
- package/dist/blocks/issue-detail-01/index.js +1 -0
- package/dist/blocks/issue-detail-01/issue-detail.d.ts +355 -0
- package/dist/blocks/issue-detail-01/issue-detail.d.ts.map +1 -0
- package/dist/blocks/issue-detail-01/issue-detail.js +187 -0
- package/dist/blocks/issue-list-01/index.d.ts +3 -0
- package/dist/blocks/issue-list-01/index.d.ts.map +1 -0
- package/dist/blocks/issue-list-01/index.js +1 -0
- package/dist/blocks/issue-list-01/issue-list.d.ts +298 -0
- package/dist/blocks/issue-list-01/issue-list.d.ts.map +1 -0
- package/dist/blocks/issue-list-01/issue-list.js +284 -0
- package/dist/blocks/kanban-01/index.d.ts +3 -0
- package/dist/blocks/kanban-01/index.d.ts.map +1 -0
- package/dist/blocks/kanban-01/index.js +1 -0
- package/dist/blocks/kanban-01/kanban.d.ts +278 -0
- package/dist/blocks/kanban-01/kanban.d.ts.map +1 -0
- package/dist/blocks/kanban-01/kanban.js +144 -0
- package/dist/blocks/leaderboard-01/index.d.ts +3 -0
- package/dist/blocks/leaderboard-01/index.d.ts.map +1 -0
- package/dist/blocks/leaderboard-01/index.js +1 -0
- package/dist/blocks/leaderboard-01/leaderboard.d.ts +250 -0
- package/dist/blocks/leaderboard-01/leaderboard.d.ts.map +1 -0
- package/dist/blocks/leaderboard-01/leaderboard.js +121 -0
- package/dist/blocks/login-01/index.d.ts +3 -0
- package/dist/blocks/login-01/index.d.ts.map +1 -0
- package/dist/blocks/login-01/index.js +1 -0
- package/dist/blocks/login-01/login-01.d.ts +356 -0
- package/dist/blocks/login-01/login-01.d.ts.map +1 -0
- package/dist/blocks/login-01/login-01.js +249 -0
- package/dist/blocks/logo-cloud-01/index.d.ts +3 -0
- package/dist/blocks/logo-cloud-01/index.d.ts.map +1 -0
- package/dist/blocks/logo-cloud-01/index.js +1 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.d.ts +181 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.d.ts.map +1 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.js +118 -0
- package/dist/blocks/magic-link-01/index.d.ts +3 -0
- package/dist/blocks/magic-link-01/index.d.ts.map +1 -0
- package/dist/blocks/magic-link-01/index.js +1 -0
- package/dist/blocks/magic-link-01/magic-link-01.d.ts +367 -0
- package/dist/blocks/magic-link-01/magic-link-01.d.ts.map +1 -0
- package/dist/blocks/magic-link-01/magic-link-01.js +233 -0
- package/dist/blocks/member-list-01/index.d.ts +3 -0
- package/dist/blocks/member-list-01/index.d.ts.map +1 -0
- package/dist/blocks/member-list-01/index.js +1 -0
- package/dist/blocks/member-list-01/member-list.d.ts +192 -0
- package/dist/blocks/member-list-01/member-list.d.ts.map +1 -0
- package/dist/blocks/member-list-01/member-list.js +142 -0
- package/dist/blocks/milestone-timeline-01/index.d.ts +3 -0
- package/dist/blocks/milestone-timeline-01/index.d.ts.map +1 -0
- package/dist/blocks/milestone-timeline-01/index.js +1 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.d.ts +217 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.d.ts.map +1 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.js +173 -0
- package/dist/blocks/newsletter-01/index.d.ts +3 -0
- package/dist/blocks/newsletter-01/index.d.ts.map +1 -0
- package/dist/blocks/newsletter-01/index.js +1 -0
- package/dist/blocks/newsletter-01/newsletter.d.ts +216 -0
- package/dist/blocks/newsletter-01/newsletter.d.ts.map +1 -0
- package/dist/blocks/newsletter-01/newsletter.js +102 -0
- package/dist/blocks/notification-center-01/index.d.ts +3 -0
- package/dist/blocks/notification-center-01/index.d.ts.map +1 -0
- package/dist/blocks/notification-center-01/index.js +1 -0
- package/dist/blocks/notification-center-01/notification-center-01.d.ts +341 -0
- package/dist/blocks/notification-center-01/notification-center-01.d.ts.map +1 -0
- package/dist/blocks/notification-center-01/notification-center-01.js +203 -0
- package/dist/blocks/offer-01/index.d.ts +3 -0
- package/dist/blocks/offer-01/index.d.ts.map +1 -0
- package/dist/blocks/offer-01/index.js +1 -0
- package/dist/blocks/offer-01/offer.d.ts +139 -0
- package/dist/blocks/offer-01/offer.d.ts.map +1 -0
- package/dist/blocks/offer-01/offer.js +81 -0
- package/dist/blocks/offering-01/index.d.ts +3 -0
- package/dist/blocks/offering-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-01/index.js +1 -0
- package/dist/blocks/offering-01/offering.d.ts +245 -0
- package/dist/blocks/offering-01/offering.d.ts.map +1 -0
- package/dist/blocks/offering-01/offering.js +144 -0
- package/dist/blocks/offering-categories-01/index.d.ts +3 -0
- package/dist/blocks/offering-categories-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-categories-01/index.js +1 -0
- package/dist/blocks/offering-categories-01/offering-categories.d.ts +248 -0
- package/dist/blocks/offering-categories-01/offering-categories.d.ts.map +1 -0
- package/dist/blocks/offering-categories-01/offering-categories.js +153 -0
- package/dist/blocks/offering-list-01/index.d.ts +3 -0
- package/dist/blocks/offering-list-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-list-01/index.js +1 -0
- package/dist/blocks/offering-list-01/offering-list.d.ts +362 -0
- package/dist/blocks/offering-list-01/offering-list.d.ts.map +1 -0
- package/dist/blocks/offering-list-01/offering-list.js +366 -0
- package/dist/blocks/onboarding-01/index.d.ts +3 -0
- package/dist/blocks/onboarding-01/index.d.ts.map +1 -0
- package/dist/blocks/onboarding-01/index.js +1 -0
- package/dist/blocks/onboarding-01/onboarding.d.ts +199 -0
- package/dist/blocks/onboarding-01/onboarding.d.ts.map +1 -0
- package/dist/blocks/onboarding-01/onboarding.js +182 -0
- package/dist/blocks/ops-checklist-01/index.d.ts +3 -0
- package/dist/blocks/ops-checklist-01/index.d.ts.map +1 -0
- package/dist/blocks/ops-checklist-01/index.js +1 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.d.ts +308 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.d.ts.map +1 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.js +165 -0
- package/dist/blocks/page-header-01/index.d.ts +1 -1
- package/dist/blocks/page-header-01/index.d.ts.map +1 -1
- package/dist/blocks/page-header-01/page-header.d.ts +131 -11
- package/dist/blocks/page-header-01/page-header.d.ts.map +1 -1
- package/dist/blocks/page-header-01/page-header.js +33 -9
- package/dist/blocks/passkey-01/index.d.ts +3 -0
- package/dist/blocks/passkey-01/index.d.ts.map +1 -0
- package/dist/blocks/passkey-01/index.js +1 -0
- package/dist/blocks/passkey-01/passkey-01.d.ts +334 -0
- package/dist/blocks/passkey-01/passkey-01.d.ts.map +1 -0
- package/dist/blocks/passkey-01/passkey-01.js +192 -0
- package/dist/blocks/permission-matrix-01/index.d.ts +3 -0
- package/dist/blocks/permission-matrix-01/index.d.ts.map +1 -0
- package/dist/blocks/permission-matrix-01/index.js +1 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.d.ts +282 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.d.ts.map +1 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.js +173 -0
- package/dist/blocks/pricing-01/index.d.ts +1 -0
- package/dist/blocks/pricing-01/index.d.ts.map +1 -1
- package/dist/blocks/pricing-01/pricing.d.ts +118 -1
- package/dist/blocks/pricing-01/pricing.d.ts.map +1 -1
- package/dist/blocks/pricing-01/pricing.js +9 -2
- package/dist/blocks/pricing-compare-01/index.d.ts +3 -0
- package/dist/blocks/pricing-compare-01/index.d.ts.map +1 -0
- package/dist/blocks/pricing-compare-01/index.js +1 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.d.ts +277 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.d.ts.map +1 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.js +126 -0
- package/dist/blocks/project-01/index.d.ts +3 -0
- package/dist/blocks/project-01/index.d.ts.map +1 -0
- package/dist/blocks/project-01/index.js +1 -0
- package/dist/blocks/project-01/project.d.ts +323 -0
- package/dist/blocks/project-01/project.d.ts.map +1 -0
- package/dist/blocks/project-01/project.js +247 -0
- package/dist/blocks/project-dashboard-01/index.d.ts +3 -0
- package/dist/blocks/project-dashboard-01/index.d.ts.map +1 -0
- package/dist/blocks/project-dashboard-01/index.js +1 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.d.ts +200 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.d.ts.map +1 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.js +124 -0
- package/dist/blocks/project-list-01/index.d.ts +3 -0
- package/dist/blocks/project-list-01/index.d.ts.map +1 -0
- package/dist/blocks/project-list-01/index.js +1 -0
- package/dist/blocks/project-list-01/project-list.d.ts +301 -0
- package/dist/blocks/project-list-01/project-list.d.ts.map +1 -0
- package/dist/blocks/project-list-01/project-list.js +305 -0
- package/dist/blocks/provisioning-01/index.d.ts +3 -0
- package/dist/blocks/provisioning-01/index.d.ts.map +1 -0
- package/dist/blocks/provisioning-01/index.js +1 -0
- package/dist/blocks/provisioning-01/provisioning.d.ts +357 -0
- package/dist/blocks/provisioning-01/provisioning.d.ts.map +1 -0
- package/dist/blocks/provisioning-01/provisioning.js +230 -0
- package/dist/blocks/quick-view-01/index.d.ts +3 -0
- package/dist/blocks/quick-view-01/index.d.ts.map +1 -0
- package/dist/blocks/quick-view-01/index.js +1 -0
- package/dist/blocks/quick-view-01/quick-view.d.ts +215 -0
- package/dist/blocks/quick-view-01/quick-view.d.ts.map +1 -0
- package/dist/blocks/quick-view-01/quick-view.js +136 -0
- package/dist/blocks/rate-card-01/index.d.ts +3 -0
- package/dist/blocks/rate-card-01/index.d.ts.map +1 -0
- package/dist/blocks/rate-card-01/index.js +1 -0
- package/dist/blocks/rate-card-01/rate-card.d.ts +184 -0
- package/dist/blocks/rate-card-01/rate-card.d.ts.map +1 -0
- package/dist/blocks/rate-card-01/rate-card.js +79 -0
- package/dist/blocks/reset-password-01/index.d.ts +3 -0
- package/dist/blocks/reset-password-01/index.d.ts.map +1 -0
- package/dist/blocks/reset-password-01/index.js +1 -0
- package/dist/blocks/reset-password-01/reset-password.d.ts +276 -0
- package/dist/blocks/reset-password-01/reset-password.d.ts.map +1 -0
- package/dist/blocks/reset-password-01/reset-password.js +175 -0
- package/dist/blocks/resource-list-01/index.d.ts +3 -0
- package/dist/blocks/resource-list-01/index.d.ts.map +1 -0
- package/dist/blocks/resource-list-01/index.js +1 -0
- package/dist/blocks/resource-list-01/resource-list.d.ts +237 -0
- package/dist/blocks/resource-list-01/resource-list.d.ts.map +1 -0
- package/dist/blocks/resource-list-01/resource-list.js +154 -0
- package/dist/blocks/retention-01/index.d.ts +3 -0
- package/dist/blocks/retention-01/index.d.ts.map +1 -0
- package/dist/blocks/retention-01/index.js +1 -0
- package/dist/blocks/retention-01/retention.d.ts +255 -0
- package/dist/blocks/retention-01/retention.d.ts.map +1 -0
- package/dist/blocks/retention-01/retention.js +145 -0
- package/dist/blocks/run-console-01/run-console.d.ts +14 -1
- package/dist/blocks/run-console-01/run-console.d.ts.map +1 -1
- package/dist/blocks/run-console-01/run-console.js +4 -2
- package/dist/blocks/services-01/index.d.ts +3 -0
- package/dist/blocks/services-01/index.d.ts.map +1 -0
- package/dist/blocks/services-01/index.js +1 -0
- package/dist/blocks/services-01/services.d.ts +159 -0
- package/dist/blocks/services-01/services.d.ts.map +1 -0
- package/dist/blocks/services-01/services.js +81 -0
- package/dist/blocks/settings-integrations-01/index.d.ts +3 -0
- package/dist/blocks/settings-integrations-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-integrations-01/index.js +1 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.d.ts +246 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.d.ts.map +1 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.js +213 -0
- package/dist/blocks/settings-members-01/index.d.ts +3 -0
- package/dist/blocks/settings-members-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-members-01/index.js +1 -0
- package/dist/blocks/settings-members-01/settings-members.d.ts +396 -0
- package/dist/blocks/settings-members-01/settings-members.d.ts.map +1 -0
- package/dist/blocks/settings-members-01/settings-members.js +255 -0
- package/dist/blocks/settings-notifications-01/index.d.ts +3 -0
- package/dist/blocks/settings-notifications-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-notifications-01/index.js +1 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.d.ts +270 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.d.ts.map +1 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.js +202 -0
- package/dist/blocks/settings-security-01/index.d.ts +3 -0
- package/dist/blocks/settings-security-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-security-01/index.js +1 -0
- package/dist/blocks/settings-security-01/settings-security.d.ts +439 -0
- package/dist/blocks/settings-security-01/settings-security.d.ts.map +1 -0
- package/dist/blocks/settings-security-01/settings-security.js +244 -0
- package/dist/blocks/shortlist-01/index.d.ts +3 -0
- package/dist/blocks/shortlist-01/index.d.ts.map +1 -0
- package/dist/blocks/shortlist-01/index.js +1 -0
- package/dist/blocks/shortlist-01/shortlist-01.d.ts +337 -0
- package/dist/blocks/shortlist-01/shortlist-01.d.ts.map +1 -0
- package/dist/blocks/shortlist-01/shortlist-01.js +191 -0
- package/dist/blocks/showcase-01/index.d.ts +3 -0
- package/dist/blocks/showcase-01/index.d.ts.map +1 -0
- package/dist/blocks/showcase-01/index.js +1 -0
- package/dist/blocks/showcase-01/showcase-01.d.ts +238 -0
- package/dist/blocks/showcase-01/showcase-01.d.ts.map +1 -0
- package/dist/blocks/showcase-01/showcase-01.js +84 -0
- package/dist/blocks/signup-01/index.d.ts +3 -0
- package/dist/blocks/signup-01/index.d.ts.map +1 -0
- package/dist/blocks/signup-01/index.js +1 -0
- package/dist/blocks/signup-01/signup-01.d.ts +405 -0
- package/dist/blocks/signup-01/signup-01.d.ts.map +1 -0
- package/dist/blocks/signup-01/signup-01.js +209 -0
- package/dist/blocks/site-footer/site-footer.d.ts +34 -1
- package/dist/blocks/site-footer/site-footer.d.ts.map +1 -1
- package/dist/blocks/site-footer/site-footer.js +24 -2
- package/dist/blocks/site-header/site-header.js +1 -1
- package/dist/blocks/site-navbar/site-navbar.d.ts +37 -3
- package/dist/blocks/site-navbar/site-navbar.d.ts.map +1 -1
- package/dist/blocks/site-navbar/site-navbar.js +33 -4
- package/dist/blocks/spec-table-01/index.d.ts +3 -0
- package/dist/blocks/spec-table-01/index.d.ts.map +1 -0
- package/dist/blocks/spec-table-01/index.js +1 -0
- package/dist/blocks/spec-table-01/spec-table.d.ts +293 -0
- package/dist/blocks/spec-table-01/spec-table.d.ts.map +1 -0
- package/dist/blocks/spec-table-01/spec-table.js +217 -0
- package/dist/blocks/stack-grid-01/stack-grid.d.ts +13 -0
- package/dist/blocks/stack-grid-01/stack-grid.d.ts.map +1 -1
- package/dist/blocks/stack-grid-01/stack-grid.js +14 -1
- package/dist/blocks/story-01/index.d.ts +3 -0
- package/dist/blocks/story-01/index.d.ts.map +1 -0
- package/dist/blocks/story-01/index.js +1 -0
- package/dist/blocks/story-01/story.d.ts +153 -0
- package/dist/blocks/story-01/story.d.ts.map +1 -0
- package/dist/blocks/story-01/story.js +103 -0
- package/dist/blocks/summary-01/index.d.ts +3 -0
- package/dist/blocks/summary-01/index.d.ts.map +1 -0
- package/dist/blocks/summary-01/index.js +1 -0
- package/dist/blocks/summary-01/summary.d.ts +300 -0
- package/dist/blocks/summary-01/summary.d.ts.map +1 -0
- package/dist/blocks/summary-01/summary.js +174 -0
- package/dist/blocks/team-01/index.d.ts +3 -0
- package/dist/blocks/team-01/index.d.ts.map +1 -0
- package/dist/blocks/team-01/index.js +1 -0
- package/dist/blocks/team-01/team.d.ts +176 -0
- package/dist/blocks/team-01/team.d.ts.map +1 -0
- package/dist/blocks/team-01/team.js +117 -0
- package/dist/blocks/testimonial-01/index.d.ts +3 -0
- package/dist/blocks/testimonial-01/index.d.ts.map +1 -0
- package/dist/blocks/testimonial-01/index.js +1 -0
- package/dist/blocks/testimonial-01/testimonial.d.ts +173 -0
- package/dist/blocks/testimonial-01/testimonial.d.ts.map +1 -0
- package/dist/blocks/testimonial-01/testimonial.js +87 -0
- package/dist/blocks/todo-01/index.d.ts +3 -0
- package/dist/blocks/todo-01/index.d.ts.map +1 -0
- package/dist/blocks/todo-01/index.js +1 -0
- package/dist/blocks/todo-01/todo.d.ts +286 -0
- package/dist/blocks/todo-01/todo.d.ts.map +1 -0
- package/dist/blocks/todo-01/todo.js +149 -0
- package/dist/blocks/trend-01/index.d.ts +3 -0
- package/dist/blocks/trend-01/index.d.ts.map +1 -0
- package/dist/blocks/trend-01/index.js +1 -0
- package/dist/blocks/trend-01/trend.d.ts +184 -0
- package/dist/blocks/trend-01/trend.d.ts.map +1 -0
- package/dist/blocks/trend-01/trend.js +99 -0
- package/dist/blocks/trust-strip-01/index.d.ts +3 -0
- package/dist/blocks/trust-strip-01/index.d.ts.map +1 -0
- package/dist/blocks/trust-strip-01/index.js +1 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.d.ts +139 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.d.ts.map +1 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.js +58 -0
- package/dist/blocks/two-factor-01/index.d.ts +3 -0
- package/dist/blocks/two-factor-01/index.d.ts.map +1 -0
- package/dist/blocks/two-factor-01/index.js +1 -0
- package/dist/blocks/two-factor-01/two-factor-01.d.ts +440 -0
- package/dist/blocks/two-factor-01/two-factor-01.d.ts.map +1 -0
- package/dist/blocks/two-factor-01/two-factor-01.js +273 -0
- package/dist/blocks/user-profile-01/index.d.ts +3 -0
- package/dist/blocks/user-profile-01/index.d.ts.map +1 -0
- package/dist/blocks/user-profile-01/index.js +1 -0
- package/dist/blocks/user-profile-01/user-profile-01.d.ts +258 -0
- package/dist/blocks/user-profile-01/user-profile-01.d.ts.map +1 -0
- package/dist/blocks/user-profile-01/user-profile-01.js +158 -0
- package/dist/blocks/verify-email-01/index.d.ts +3 -0
- package/dist/blocks/verify-email-01/index.d.ts.map +1 -0
- package/dist/blocks/verify-email-01/index.js +1 -0
- package/dist/blocks/verify-email-01/verify-email.d.ts +262 -0
- package/dist/blocks/verify-email-01/verify-email.d.ts.map +1 -0
- package/dist/blocks/verify-email-01/verify-email.js +190 -0
- package/dist/blocks/waitlist-01/index.d.ts +3 -0
- package/dist/blocks/waitlist-01/index.d.ts.map +1 -0
- package/dist/blocks/waitlist-01/index.js +1 -0
- package/dist/blocks/waitlist-01/waitlist.d.ts +254 -0
- package/dist/blocks/waitlist-01/waitlist.d.ts.map +1 -0
- package/dist/blocks/waitlist-01/waitlist.js +75 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +1641 -1
- package/dist/components/index.d.ts +114 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +134 -0
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +9 -2
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.js +22 -4
- package/dist/components/ui/announcement.d.ts +169 -0
- package/dist/components/ui/announcement.d.ts.map +1 -0
- package/dist/components/ui/announcement.js +123 -0
- package/dist/components/ui/avatar-group.d.ts +176 -0
- package/dist/components/ui/avatar-group.d.ts.map +1 -0
- package/dist/components/ui/avatar-group.js +135 -0
- package/dist/components/ui/billing-source.d.ts +293 -0
- package/dist/components/ui/billing-source.d.ts.map +1 -0
- package/dist/components/ui/billing-source.js +136 -0
- package/dist/components/ui/button.d.ts +16 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/button.js +17 -2
- package/dist/components/ui/calendar.d.ts +9 -0
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/calendar.js +30 -2
- package/dist/components/ui/carousel.d.ts +7 -0
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/carousel.js +58 -1
- package/dist/components/ui/chart.d.ts +334 -0
- package/dist/components/ui/chart.d.ts.map +1 -0
- package/dist/components/ui/chart.js +369 -0
- package/dist/components/ui/checkbox.d.ts +10 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/checkbox.js +19 -1
- package/dist/components/ui/checklist.d.ts +262 -0
- package/dist/components/ui/checklist.d.ts.map +1 -0
- package/dist/components/ui/checklist.js +135 -0
- package/dist/components/ui/choice-card.d.ts +273 -0
- package/dist/components/ui/choice-card.d.ts.map +1 -0
- package/dist/components/ui/choice-card.js +138 -0
- package/dist/components/ui/code-block.d.ts +182 -0
- package/dist/components/ui/code-block.d.ts.map +1 -0
- package/dist/components/ui/code-block.js +108 -0
- package/dist/components/ui/cohort-grid.d.ts +210 -0
- package/dist/components/ui/cohort-grid.d.ts.map +1 -0
- package/dist/components/ui/cohort-grid.js +202 -0
- package/dist/components/ui/collapsible.d.ts +11 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/collapsible.js +13 -2
- package/dist/components/ui/combobox.d.ts +4 -1
- package/dist/components/ui/combobox.d.ts.map +1 -1
- package/dist/components/ui/combobox.js +20 -4
- package/dist/components/ui/command-palette.d.ts +11 -0
- package/dist/components/ui/command-palette.d.ts.map +1 -1
- package/dist/components/ui/command-palette.js +49 -3
- package/dist/components/ui/contribution-graph.d.ts +156 -0
- package/dist/components/ui/contribution-graph.d.ts.map +1 -0
- package/dist/components/ui/contribution-graph.js +170 -0
- package/dist/components/ui/creatable-combobox.d.ts +153 -0
- package/dist/components/ui/creatable-combobox.d.ts.map +1 -0
- package/dist/components/ui/creatable-combobox.js +285 -0
- package/dist/components/ui/data-toolbar.d.ts +133 -0
- package/dist/components/ui/data-toolbar.d.ts.map +1 -0
- package/dist/components/ui/data-toolbar.js +67 -0
- package/dist/components/ui/date-picker.d.ts.map +1 -1
- package/dist/components/ui/date-picker.js +9 -1
- package/dist/components/ui/diagram.d.ts +38 -7
- package/dist/components/ui/diagram.d.ts.map +1 -1
- package/dist/components/ui/diagram.js +134 -52
- package/dist/components/ui/dialog.d.ts +31 -2
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dialog.js +40 -6
- package/dist/components/ui/drawer.d.ts +270 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/drawer.js +241 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +6 -1
- package/dist/components/ui/dropzone.d.ts +147 -0
- package/dist/components/ui/dropzone.d.ts.map +1 -0
- package/dist/components/ui/dropzone.js +141 -0
- package/dist/components/ui/emoji-picker.d.ts +328 -0
- package/dist/components/ui/emoji-picker.d.ts.map +1 -0
- package/dist/components/ui/emoji-picker.js +278 -0
- package/dist/components/ui/fact-list.d.ts +17 -0
- package/dist/components/ui/fact-list.d.ts.map +1 -1
- package/dist/components/ui/fact-list.js +18 -1
- package/dist/components/ui/file-upload.d.ts +152 -0
- package/dist/components/ui/file-upload.d.ts.map +1 -0
- package/dist/components/ui/file-upload.js +101 -0
- package/dist/components/ui/filter-panel.d.ts +164 -0
- package/dist/components/ui/filter-panel.d.ts.map +1 -0
- package/dist/components/ui/filter-panel.js +91 -0
- package/dist/components/ui/form-dialog.d.ts +257 -0
- package/dist/components/ui/form-dialog.d.ts.map +1 -0
- package/dist/components/ui/form-dialog.js +176 -0
- package/dist/components/ui/form-wizard.d.ts +251 -0
- package/dist/components/ui/form-wizard.d.ts.map +1 -0
- package/dist/components/ui/form-wizard.js +151 -0
- package/dist/components/ui/image-list-field.d.ts +232 -0
- package/dist/components/ui/image-list-field.d.ts.map +1 -0
- package/dist/components/ui/image-list-field.js +168 -0
- package/dist/components/ui/image-zoom.d.ts +164 -0
- package/dist/components/ui/image-zoom.d.ts.map +1 -0
- package/dist/components/ui/image-zoom.js +169 -0
- package/dist/components/ui/intensity-grid.d.ts +270 -0
- package/dist/components/ui/intensity-grid.d.ts.map +1 -0
- package/dist/components/ui/intensity-grid.js +211 -0
- package/dist/components/ui/lifecycle-button.d.ts +276 -0
- package/dist/components/ui/lifecycle-button.d.ts.map +1 -0
- package/dist/components/ui/lifecycle-button.js +144 -0
- package/dist/components/ui/lightbox.d.ts +165 -0
- package/dist/components/ui/lightbox.d.ts.map +1 -0
- package/dist/components/ui/lightbox.js +130 -0
- package/dist/components/ui/list-panel.d.ts +288 -0
- package/dist/components/ui/list-panel.d.ts.map +1 -0
- package/dist/components/ui/list-panel.js +139 -0
- package/dist/components/ui/mega-menu.d.ts +244 -0
- package/dist/components/ui/mega-menu.d.ts.map +1 -0
- package/dist/components/ui/mega-menu.js +97 -0
- package/dist/components/ui/menubar.d.ts +9 -0
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/menubar.js +10 -1
- package/dist/components/ui/metric.d.ts +123 -0
- package/dist/components/ui/metric.d.ts.map +1 -0
- package/dist/components/ui/metric.js +68 -0
- package/dist/components/ui/mini-calendar.d.ts +143 -0
- package/dist/components/ui/mini-calendar.d.ts.map +1 -0
- package/dist/components/ui/mini-calendar.js +261 -0
- package/dist/components/ui/mode-toggle.d.ts +102 -0
- package/dist/components/ui/mode-toggle.d.ts.map +1 -0
- package/dist/components/ui/mode-toggle.js +83 -0
- package/dist/components/ui/money-field.d.ts +200 -0
- package/dist/components/ui/money-field.d.ts.map +1 -0
- package/dist/components/ui/money-field.js +215 -0
- package/dist/components/ui/multi-combobox.d.ts +181 -0
- package/dist/components/ui/multi-combobox.d.ts.map +1 -0
- package/dist/components/ui/multi-combobox.js +297 -0
- package/dist/components/ui/native-select.d.ts.map +1 -1
- package/dist/components/ui/native-select.js +8 -1
- package/dist/components/ui/navigation-menu.d.ts +7 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.js +8 -1
- package/dist/components/ui/nested-tabs.d.ts +188 -0
- package/dist/components/ui/nested-tabs.d.ts.map +1 -0
- package/dist/components/ui/nested-tabs.js +75 -0
- package/dist/components/ui/number-field.d.ts +40 -7
- package/dist/components/ui/number-field.d.ts.map +1 -1
- package/dist/components/ui/number-field.js +37 -7
- package/dist/components/ui/overflow-actions.d.ts +169 -0
- package/dist/components/ui/overflow-actions.d.ts.map +1 -0
- package/dist/components/ui/overflow-actions.js +266 -0
- package/dist/components/ui/pack-swatch.d.ts +177 -0
- package/dist/components/ui/pack-swatch.d.ts.map +1 -0
- package/dist/components/ui/pack-swatch.js +117 -0
- package/dist/components/ui/pack-switcher.d.ts +221 -0
- package/dist/components/ui/pack-switcher.d.ts.map +1 -0
- package/dist/components/ui/pack-switcher.js +94 -0
- package/dist/components/ui/pagination.d.ts +22 -0
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/pagination.js +23 -1
- package/dist/components/ui/password-field.d.ts +122 -0
- package/dist/components/ui/password-field.d.ts.map +1 -0
- package/dist/components/ui/password-field.js +69 -0
- package/dist/components/ui/pill.d.ts +172 -0
- package/dist/components/ui/pill.d.ts.map +1 -0
- package/dist/components/ui/pill.js +102 -0
- package/dist/components/ui/platform-modifier-key.d.ts +129 -0
- package/dist/components/ui/platform-modifier-key.d.ts.map +1 -0
- package/dist/components/ui/platform-modifier-key.js +125 -0
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/popover.js +8 -1
- package/dist/components/ui/price.d.ts +144 -0
- package/dist/components/ui/price.d.ts.map +1 -0
- package/dist/components/ui/price.js +107 -0
- package/dist/components/ui/progress.d.ts +55 -1
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/progress.js +110 -2
- package/dist/components/ui/prompt-composer.d.ts +302 -0
- package/dist/components/ui/prompt-composer.d.ts.map +1 -0
- package/dist/components/ui/prompt-composer.js +145 -0
- package/dist/components/ui/proportion-list.d.ts +188 -0
- package/dist/components/ui/proportion-list.d.ts.map +1 -0
- package/dist/components/ui/proportion-list.js +134 -0
- package/dist/components/ui/prose.d.ts +34 -0
- package/dist/components/ui/prose.d.ts.map +1 -1
- package/dist/components/ui/prose.js +41 -1
- package/dist/components/ui/pulse-graph.d.ts +36 -4
- package/dist/components/ui/pulse-graph.d.ts.map +1 -1
- package/dist/components/ui/pulse-graph.js +174 -60
- package/dist/components/ui/radio-group.d.ts +7 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +8 -1
- package/dist/components/ui/range-field.d.ts +158 -0
- package/dist/components/ui/range-field.d.ts.map +1 -0
- package/dist/components/ui/range-field.js +208 -0
- package/dist/components/ui/relative-time.d.ts +116 -0
- package/dist/components/ui/relative-time.d.ts.map +1 -0
- package/dist/components/ui/relative-time.js +67 -0
- package/dist/components/ui/reorderable-list.d.ts +262 -0
- package/dist/components/ui/reorderable-list.d.ts.map +1 -0
- package/dist/components/ui/reorderable-list.js +325 -0
- package/dist/components/ui/repeatable-rows.d.ts +241 -0
- package/dist/components/ui/repeatable-rows.d.ts.map +1 -0
- package/dist/components/ui/repeatable-rows.js +221 -0
- package/dist/components/ui/repo-stars.d.ts +165 -0
- package/dist/components/ui/repo-stars.d.ts.map +1 -0
- package/dist/components/ui/repo-stars.js +92 -0
- package/dist/components/ui/resizable.d.ts +24 -0
- package/dist/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/ui/resizable.js +96 -4
- package/dist/components/ui/search-dialog.d.ts +40 -5
- package/dist/components/ui/search-dialog.d.ts.map +1 -1
- package/dist/components/ui/search-dialog.js +94 -16
- package/dist/components/ui/search-field.d.ts +159 -0
- package/dist/components/ui/search-field.d.ts.map +1 -0
- package/dist/components/ui/search-field.js +98 -0
- package/dist/components/ui/section.d.ts +110 -1
- package/dist/components/ui/section.d.ts.map +1 -1
- package/dist/components/ui/section.js +111 -3
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/select.js +9 -1
- package/dist/components/ui/selection-toolbar.d.ts +166 -0
- package/dist/components/ui/selection-toolbar.d.ts.map +1 -0
- package/dist/components/ui/selection-toolbar.js +139 -0
- package/dist/components/ui/sidebar.d.ts +29 -0
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +35 -2
- package/dist/components/ui/signal-field.d.ts.map +1 -1
- package/dist/components/ui/signal-field.js +1 -1
- package/dist/components/ui/slider.d.ts +7 -0
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/slider.js +32 -1
- package/dist/components/ui/sparkline.d.ts +117 -0
- package/dist/components/ui/sparkline.d.ts.map +1 -0
- package/dist/components/ui/sparkline.js +113 -0
- package/dist/components/ui/spinner.d.ts.map +1 -1
- package/dist/components/ui/spinner.js +13 -0
- package/dist/components/ui/split-button.d.ts +207 -0
- package/dist/components/ui/split-button.d.ts.map +1 -0
- package/dist/components/ui/split-button.js +75 -0
- package/dist/components/ui/stateful-table.d.ts +345 -0
- package/dist/components/ui/stateful-table.d.ts.map +1 -0
- package/dist/components/ui/stateful-table.js +169 -0
- package/dist/components/ui/status.d.ts +99 -0
- package/dist/components/ui/status.d.ts.map +1 -0
- package/dist/components/ui/status.js +63 -0
- package/dist/components/ui/stepper.d.ts +155 -0
- package/dist/components/ui/stepper.d.ts.map +1 -0
- package/dist/components/ui/stepper.js +83 -0
- package/dist/components/ui/steps.d.ts +141 -0
- package/dist/components/ui/steps.d.ts.map +1 -0
- package/dist/components/ui/steps.js +128 -0
- package/dist/components/ui/switch.d.ts +8 -0
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/switch.js +12 -1
- package/dist/components/ui/tabs.d.ts +21 -2
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/tabs.js +23 -4
- package/dist/components/ui/tag-group.d.ts +154 -0
- package/dist/components/ui/tag-group.d.ts.map +1 -0
- package/dist/components/ui/tag-group.js +111 -0
- package/dist/components/ui/task-progress.d.ts +149 -0
- package/dist/components/ui/task-progress.d.ts.map +1 -0
- package/dist/components/ui/task-progress.js +110 -0
- package/dist/components/ui/text-format-toolbar.d.ts +211 -0
- package/dist/components/ui/text-format-toolbar.d.ts.map +1 -0
- package/dist/components/ui/text-format-toolbar.js +186 -0
- package/dist/components/ui/timeline.d.ts.map +1 -1
- package/dist/components/ui/timeline.js +10 -1
- package/dist/components/ui/toast.d.ts +32 -10
- package/dist/components/ui/toast.d.ts.map +1 -1
- package/dist/components/ui/toast.js +150 -47
- package/dist/components/ui/toggle-group.d.ts +14 -5
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.js +15 -1
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/toggle.js +9 -1
- package/dist/components/ui/tree.d.ts +8 -0
- package/dist/components/ui/tree.d.ts.map +1 -1
- package/dist/components/ui/tree.js +92 -13
- package/dist/components/ui/video-player.d.ts +236 -0
- package/dist/components/ui/video-player.d.ts.map +1 -0
- package/dist/components/ui/video-player.js +72 -0
- package/dist/fonts/inter-latin-400-italic.woff2 +0 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -0
- package/dist/lib/figure.d.ts +149 -0
- package/dist/lib/figure.d.ts.map +1 -0
- package/dist/lib/figure.js +242 -0
- package/dist/lib/utils.d.ts +29 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +35 -0
- package/dist/live/index.d.ts +10 -3
- package/dist/live/index.d.ts.map +1 -1
- package/dist/live/index.js +12 -3
- package/dist/live/run-stream-01/run-stream.d.ts.map +1 -1
- package/dist/live/run-stream-01/run-stream.js +6 -5
- package/dist/live/tool-ledger-01/index.d.ts +3 -0
- package/dist/live/tool-ledger-01/index.d.ts.map +1 -0
- package/dist/live/tool-ledger-01/index.js +1 -0
- package/dist/live/tool-ledger-01/tool-ledger.d.ts +348 -0
- package/dist/live/tool-ledger-01/tool-ledger.d.ts.map +1 -0
- package/dist/live/tool-ledger-01/tool-ledger.js +245 -0
- package/dist/pages/about-page/index.d.ts +306 -0
- package/dist/pages/about-page/index.d.ts.map +1 -0
- package/dist/pages/about-page/index.js +161 -0
- package/dist/pages/blog-post-page/index.d.ts +36 -15
- package/dist/pages/blog-post-page/index.d.ts.map +1 -1
- package/dist/pages/blog-post-page/index.js +35 -10
- package/dist/pages/careers-page/index.d.ts +288 -0
- package/dist/pages/careers-page/index.d.ts.map +1 -0
- package/dist/pages/careers-page/index.js +182 -0
- package/dist/pages/changelog-page/index.d.ts +255 -0
- package/dist/pages/changelog-page/index.d.ts.map +1 -0
- package/dist/pages/changelog-page/index.js +86 -0
- package/dist/pages/contact-page/index.d.ts +261 -0
- package/dist/pages/contact-page/index.d.ts.map +1 -0
- package/dist/pages/contact-page/index.js +136 -0
- package/dist/pages/docs-shell/docs-shell.d.ts +126 -16
- package/dist/pages/docs-shell/docs-shell.d.ts.map +1 -1
- package/dist/pages/docs-shell/docs-shell.js +229 -28
- package/dist/pages/error-page/index.d.ts +188 -0
- package/dist/pages/error-page/index.d.ts.map +1 -0
- package/dist/pages/error-page/index.js +102 -0
- package/dist/pages/index.d.ts +10 -0
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/pages/index.js +14 -0
- package/dist/pages/legal-page/index.d.ts +194 -0
- package/dist/pages/legal-page/index.d.ts.map +1 -0
- package/dist/pages/legal-page/index.js +99 -0
- package/dist/pages/not-found-page/index.d.ts.map +1 -1
- package/dist/pages/not-found-page/index.js +4 -3
- package/dist/pages/onboarding-page/index.d.ts +199 -0
- package/dist/pages/onboarding-page/index.d.ts.map +1 -0
- package/dist/pages/onboarding-page/index.js +71 -0
- package/dist/pages/pricing-page/index.d.ts +286 -0
- package/dist/pages/pricing-page/index.d.ts.map +1 -0
- package/dist/pages/pricing-page/index.js +139 -0
- package/dist/pages/search-page/index.d.ts +305 -0
- package/dist/pages/search-page/index.d.ts.map +1 -0
- package/dist/pages/search-page/index.js +142 -0
- package/dist/pages/status-page/index.d.ts +366 -0
- package/dist/pages/status-page/index.d.ts.map +1 -0
- package/dist/pages/status-page/index.js +136 -0
- package/dist/styles.css +1105 -62
- package/package.json +9 -3
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type HeadingLevel } from '../../components/ui/section.js';
|
|
3
|
+
/**
|
|
4
|
+
* The inbox address a link is sent to, declared by the caller.
|
|
5
|
+
*
|
|
6
|
+
* **A field and not a string, and the reason is that this screen's whole mechanism
|
|
7
|
+
* is that something is about to be posted to this address.** The label is the
|
|
8
|
+
* product's own claim about what the reader should type, and the description is a
|
|
9
|
+
* node because the honest line in this position is a link to the document that says
|
|
10
|
+
* which inbox a person should use, and a caller who has to flatten theirs to a
|
|
11
|
+
* string loses it.
|
|
12
|
+
*
|
|
13
|
+
* `type` has one member rather than the two a sign-in field offers, and that is the
|
|
14
|
+
* design rather than an omission: a magic link is posted, so the address is an inbox
|
|
15
|
+
* and not a handle, and a phone keyboard that offers the wrong keypad for a handle
|
|
16
|
+
* is a small wrongness on the one field on this screen that has to be right.
|
|
17
|
+
*/
|
|
18
|
+
export type MagicLink01Identifier = {
|
|
19
|
+
/** The field's visible name, and the accessible name its control announces. */
|
|
20
|
+
label: string;
|
|
21
|
+
/**
|
|
22
|
+
* The type of the control, and `email` is the only value there is.
|
|
23
|
+
*
|
|
24
|
+
* Named as a one-member union rather than left to the platform's default so that
|
|
25
|
+
* the choice is visible in the type a caller reads, and so that a consumer who
|
|
26
|
+
* genuinely needs a different control is forced to say so rather than to pass
|
|
27
|
+
* something the Block will quietly ignore.
|
|
28
|
+
*/
|
|
29
|
+
type?: 'email';
|
|
30
|
+
/**
|
|
31
|
+
* The platform's autofill hint.
|
|
32
|
+
*
|
|
33
|
+
* Left to the caller rather than defaulted, because a password manager keys an
|
|
34
|
+
* account on the identifier and the hint that is right depends on what this product
|
|
35
|
+
* calls a person. `email` is right on most of them and the caller knows which.
|
|
36
|
+
*/
|
|
37
|
+
autoComplete?: string;
|
|
38
|
+
/**
|
|
39
|
+
* A line under the control, announced with it rather than printed under the row.
|
|
40
|
+
*
|
|
41
|
+
* A node, and wired to the control through `aria-describedby` so a screen reader
|
|
42
|
+
* hears what the address is for as the reader reaches it.
|
|
43
|
+
*/
|
|
44
|
+
description?: ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* The address as the caller holds it.
|
|
47
|
+
*
|
|
48
|
+
* Required with `onValueChange` and refused without it, for the reason the Block's
|
|
49
|
+
* JSDoc gives: a value this Block holds and the caller cannot see is a value the
|
|
50
|
+
* caller cannot clear, and a reader who mistyped an address is exactly the reader
|
|
51
|
+
* who needs to clear this one.
|
|
52
|
+
*/
|
|
53
|
+
value?: string;
|
|
54
|
+
/** Called with the address as the reader changes it. */
|
|
55
|
+
onValueChange?: (value: string) => void;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* The link that has been sent, and the one control that undoes it.
|
|
59
|
+
*
|
|
60
|
+
* **A prop and never an internal state Prism writes, and that is the whole of the
|
|
61
|
+
* decision this Block is shaped around.** A passwordless screen has two states, not
|
|
62
|
+
* one: not yet sent, and sent. The obvious arrangement is a screen that replaces
|
|
63
|
+
* its form with a confirmation the moment the link goes out, which is what a
|
|
64
|
+
* storefront's version does, and it takes away the reader's ability to notice that
|
|
65
|
+
* the address was wrong. A link posted to a mistyped address produces a page that
|
|
66
|
+
* says it worked, and the reader's next four minutes are spent in an inbox that will
|
|
67
|
+
* never contain it. So the confirmation is this type: it names the address it was
|
|
68
|
+
* sent to, in full, and it carries a control to change it, and the caller is the one
|
|
69
|
+
* who decides whether the address was right.
|
|
70
|
+
*/
|
|
71
|
+
export type MagicLink01Sent = {
|
|
72
|
+
/**
|
|
73
|
+
* The address the link was posted to, printed exactly as the caller recorded it.
|
|
74
|
+
*
|
|
75
|
+
* A string and not a node, because this is a datum a reader has to check against
|
|
76
|
+
* the inbox they are about to open, and a caller who wrapped it in a `<strong>`
|
|
77
|
+
* would have made the two halves of it two different readings. A caller whose own
|
|
78
|
+
* product masks part of an address in this position is making a decision about
|
|
79
|
+
* their own users' privacy and can hold it in their own state.
|
|
80
|
+
*/
|
|
81
|
+
identifier: string;
|
|
82
|
+
/**
|
|
83
|
+
* How long the link stays usable, in the caller's own words.
|
|
84
|
+
*
|
|
85
|
+
* A node because the honest reading is a sentence in the caller's language and
|
|
86
|
+
* sometimes carries a link to the document that states the whole policy. A Block
|
|
87
|
+
* that formatted a duration would be choosing a locale and a granularity on a
|
|
88
|
+
* reader's behalf, on the one line where being vague reads as a shorter life than
|
|
89
|
+
* the link actually has.
|
|
90
|
+
*/
|
|
91
|
+
expiresLabel?: ReactNode;
|
|
92
|
+
/**
|
|
93
|
+
* The words on the control that brings the form back.
|
|
94
|
+
*
|
|
95
|
+
* Required, and a sentence for the same reason every other control name in this
|
|
96
|
+
* package is: "change" says what the control is and "use a different address" says
|
|
97
|
+
* what pressing it does, and the second is the one a voice control user has to be
|
|
98
|
+
* able to say out loud.
|
|
99
|
+
*/
|
|
100
|
+
changeLabel: string;
|
|
101
|
+
/**
|
|
102
|
+
* Called with the address when the reader asks to change it.
|
|
103
|
+
*
|
|
104
|
+
* The Block does nothing else with it, and cannot: bringing the form back is the
|
|
105
|
+
* caller's state, because only the caller knows whether the reader is correcting a
|
|
106
|
+
* typo, asking for a second link, or moving to a different account. A Block that
|
|
107
|
+
* cleared its own field here would be replacing one address with another without
|
|
108
|
+
* being asked.
|
|
109
|
+
*/
|
|
110
|
+
onChange: (identifier: string) => void;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* What the caller's own request is doing, in the caller's own words.
|
|
114
|
+
*
|
|
115
|
+
* A prop and never a state this Block writes, for the reason every Block in this
|
|
116
|
+
* family states: a mail transport has more outcomes than any other transport in this
|
|
117
|
+
* package, from delivered to filtered to delayed to bounced to silently never
|
|
118
|
+
* queued, and one sentence cannot be true of all five.
|
|
119
|
+
*/
|
|
120
|
+
export type MagicLink01Status = {
|
|
121
|
+
/**
|
|
122
|
+
* Which of the four the request is in. Read by the Block for two things only.
|
|
123
|
+
*
|
|
124
|
+
* `resent` is the member that changes the resend control's words, because a
|
|
125
|
+
* control that still says the same sentence immediately after the reader pressed it
|
|
126
|
+
* is a control inviting a second request against a limit the Block cannot see. The
|
|
127
|
+
* other two that matter are `sent` and `error`, and they are the caller's to say:
|
|
128
|
+
* whether a link was accepted by the transport is a fact about the caller's server.
|
|
129
|
+
*/
|
|
130
|
+
state: 'idle' | 'sent' | 'resent' | 'error';
|
|
131
|
+
/** The words for that state, in the product's own voice. */
|
|
132
|
+
message: ReactNode;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* The props a MagicLink01 takes. Every string in this Block is one of them.
|
|
136
|
+
*
|
|
137
|
+
* There is one field here and no field list, and the reason is that there is
|
|
138
|
+
* genuinely one field: a magic link is posted to an inbox, so there is one address
|
|
139
|
+
* and no second question. A Block with a declared list would have been a shape
|
|
140
|
+
* waiting to be wrong, and a caller who wants a name and an address here is asking
|
|
141
|
+
* for a different screen.
|
|
142
|
+
*/
|
|
143
|
+
export type MagicLink01Props = {
|
|
144
|
+
/** The short line above the title, usually which product this is. */
|
|
145
|
+
eyebrow?: ReactNode;
|
|
146
|
+
/**
|
|
147
|
+
* The heading.
|
|
148
|
+
*
|
|
149
|
+
* Required, because a screen that is about to post something to an inbox and says
|
|
150
|
+
* nothing about what is being posted is a form a reader will hesitate over.
|
|
151
|
+
*/
|
|
152
|
+
title: ReactNode;
|
|
153
|
+
/**
|
|
154
|
+
* What is about to happen, in the caller's own words. Required, and the reason is
|
|
155
|
+
* the one the whole Block is named after.
|
|
156
|
+
*
|
|
157
|
+
* **Every other Block in this package makes `description` optional and this one
|
|
158
|
+
* does not, and a passwordless screen's whole mechanism is that the reader is
|
|
159
|
+
* about to be sent something.** Press the control and nothing visible happens: no
|
|
160
|
+
* page loads, no code arrives on the screen, no field changes. The one thing the
|
|
161
|
+
* reader has to be told is that something has been posted and where it went, and
|
|
162
|
+
* the place to tell them is above the control where they are about to press it. A
|
|
163
|
+
* reader who does not know will treat the form as broken, and they will be right
|
|
164
|
+
* about the form and wrong about the product, and the second of those is the more
|
|
165
|
+
* expensive mistake: they will press it again, and then again, and a screen that
|
|
166
|
+
* can be pressed three times in four seconds is a screen a rate limiter will meet
|
|
167
|
+
* before the reader reads the sentence that was there all along.
|
|
168
|
+
*
|
|
169
|
+
* So the type makes it required rather than the Block defaulting to something, and
|
|
170
|
+
* the cost of that is named: a product that genuinely has nothing to say about what
|
|
171
|
+
* arrives has to write the sentence anyway, and the sentence is usually one it
|
|
172
|
+
* should have written on its sign-in screen too.
|
|
173
|
+
*/
|
|
174
|
+
description: ReactNode;
|
|
175
|
+
/**
|
|
176
|
+
* Called with the address, and the only thing this Block does with it.
|
|
177
|
+
*
|
|
178
|
+
* **Required, and the requirement is the design.** There is no transport here, no
|
|
179
|
+
* mailer, no queue and no route, because every one of those is a decision about the
|
|
180
|
+
* caller's product and its data, and a frame that takes one is a frame that has to
|
|
181
|
+
* be replaced rather than configured. A consumer who wants a transport writes one; a
|
|
182
|
+
* consumer who already has one passes it straight in. The Block sends nothing, and
|
|
183
|
+
* the sentence saying that something was sent is the caller's.
|
|
184
|
+
*/
|
|
185
|
+
onSubmit: (value: {
|
|
186
|
+
identifier: string;
|
|
187
|
+
}) => void;
|
|
188
|
+
/** The address field, declared by the caller. See `MagicLink01Identifier`. */
|
|
189
|
+
identifier: MagicLink01Identifier;
|
|
190
|
+
/** The words on the one control that posts the link. */
|
|
191
|
+
submitLabel: string;
|
|
192
|
+
/**
|
|
193
|
+
* Called with the address when the reader asks for the link again.
|
|
194
|
+
*
|
|
195
|
+
* **A separate control and not a second press of submit, and the reason is the
|
|
196
|
+
* whole of what the `sent` state is for.** The two actions look identical from the
|
|
197
|
+
* outside and are not the same at all: submitting posts a link for an address the
|
|
198
|
+
* reader has just typed, and asking again posts a link for an address that is
|
|
199
|
+
* already on the screen in the confirmation. A reader who mistyped an address needs
|
|
200
|
+
* the first, and a reader who opened the wrong inbox needs the second, and a screen
|
|
201
|
+
* that offers one control for both makes the second reader retype an address they
|
|
202
|
+
* have already confirmed to get the thing they were already offered. So the
|
|
203
|
+
* confirmation carries its own control, with its own two names, and the caller's
|
|
204
|
+
* function receives the address the link was sent to rather than whatever happens to
|
|
205
|
+
* be in a field.
|
|
206
|
+
*/
|
|
207
|
+
onResend?: (identifier: string) => void;
|
|
208
|
+
/**
|
|
209
|
+
* The accessible name of the resend control while nothing has been resent.
|
|
210
|
+
*
|
|
211
|
+
* Required whenever `onResend` is set, and a sentence rather than a noun phrase for
|
|
212
|
+
* the reason every other control name in this package is: a control announced as
|
|
213
|
+
* "resend" tells a voice control user what the control is and not what pressing it
|
|
214
|
+
* does, and on this screen pressing it posts a message to an inbox.
|
|
215
|
+
*/
|
|
216
|
+
resendLabel?: string;
|
|
217
|
+
/**
|
|
218
|
+
* The accessible name of the resend control once a resend has been requested.
|
|
219
|
+
*
|
|
220
|
+
* Required whenever `onResend` is set, and required as a second sentence rather
|
|
221
|
+
* than as a state flag, for the reason `PasswordField.revealLabel` and
|
|
222
|
+
* `PasswordField.hideLabel` give in full: the name has to describe what pressing
|
|
223
|
+
* the control will do next, not what is currently true. Without it the control
|
|
224
|
+
* would read the same sentence before and after the reader pressed it, which is an
|
|
225
|
+
* invitation to press it again against a limit the Block cannot see.
|
|
226
|
+
*/
|
|
227
|
+
resendConfirmLabel?: string;
|
|
228
|
+
/**
|
|
229
|
+
* What the caller's own request is doing, drawn in a live region and announced.
|
|
230
|
+
*
|
|
231
|
+
* See the Block's JSDoc for why there is no sent sentence anywhere in this file.
|
|
232
|
+
*/
|
|
233
|
+
status?: MagicLink01Status;
|
|
234
|
+
/**
|
|
235
|
+
* The link that has been sent, and the control that brings the form back.
|
|
236
|
+
*
|
|
237
|
+
* Omit it and the form is what is on screen, which is the state this Block starts
|
|
238
|
+
* in. Pass it and the confirmation replaces the form, because a passwordless
|
|
239
|
+
* screen has two states and a reader who cannot see the address the link went to
|
|
240
|
+
* cannot tell whether the thing that went wrong was the address. The address stays
|
|
241
|
+
* on the screen in full, and the control to change it is drawn beside it, and the
|
|
242
|
+
* caller's `status` is expected to carry the sentence that says what to look for.
|
|
243
|
+
*/
|
|
244
|
+
sent?: MagicLink01Sent;
|
|
245
|
+
/** Heading level for the section heading. @defaultValue 'h2' */
|
|
246
|
+
headingLevel?: HeadingLevel;
|
|
247
|
+
/**
|
|
248
|
+
* Layout only, exactly as on every Block. Changing a Prism-owned visual property
|
|
249
|
+
* from here is prohibited.
|
|
250
|
+
*/
|
|
251
|
+
className?: string;
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* A passwordless sign-in: one address, one control that posts a link to it, and the
|
|
255
|
+
* caller's own sentence about what is about to arrive.
|
|
256
|
+
*
|
|
257
|
+
* **The translation, because the pattern is not ours and the framing is.** A
|
|
258
|
+
* storefront publishes a magic-link card: an email field, a button, and a line that
|
|
259
|
+
* says a link is on its way, and its purpose is to let a shopper past the gate
|
|
260
|
+
* without inventing a password they would then have to remember. Prism's products
|
|
261
|
+
* observe a pipeline, capture a market, watch an estate and run agents, and a machine
|
|
262
|
+
* acting on behalf of a person is the whole subject, so this is the screen where a
|
|
263
|
+
* human authorises a machine with something that expires and cannot be replayed by
|
|
264
|
+
* whoever finds the inbox. The composition is the storefront's and is unchanged: one
|
|
265
|
+
* field, one control, one sentence about what is coming. What differs is what the
|
|
266
|
+
* reader is trusting, and that shows up in the two decisions below.
|
|
267
|
+
*
|
|
268
|
+
* **What it authorises.** A successful `onSubmit` means the caller's own server has
|
|
269
|
+
* posted a link and will accept a request carrying that link's token. It does not
|
|
270
|
+
* mean the link arrived, that the address can receive mail, or that the reader is who
|
|
271
|
+
* they say they are; the first is a fact about a mail transport and the third is
|
|
272
|
+
* exactly what the link is for. The Block has done no more than carry one string
|
|
273
|
+
* across a form boundary. It posts nothing.
|
|
274
|
+
*
|
|
275
|
+
* **What it deliberately does not do.** It will not say whether the address exists.
|
|
276
|
+
* It will not rate-limit how many links can be asked for. And it will not decide
|
|
277
|
+
* whether the address was right. Each of those is the consumer's, and each is a
|
|
278
|
+
* security decision rather than a rendering one, so a Block that made any of them
|
|
279
|
+
* would be something other than a composition: a Block that looked an address up
|
|
280
|
+
* would be an account directory, which is the enumeration oracle the sign-in surface
|
|
281
|
+
* refuses to be, and it would be the worst possible place for one because a reader
|
|
282
|
+
* arriving at this screen has just been told that a passwordless sign-in is
|
|
283
|
+
* available. A Block that rate-limited would be a rate limiter in a component
|
|
284
|
+
* library, shipping one policy to every product that installed it, in a place no
|
|
285
|
+
* consumer reads it. And a Block that judged the address would be guessing at a
|
|
286
|
+
* format on the reader's behalf, on the one field where a wrong guess is a lockout
|
|
287
|
+
* for somebody whose address is unusual and perfectly deliverable. So the Block draws
|
|
288
|
+
* the field the caller declared, hands over the string, and prints back what the
|
|
289
|
+
* caller says was sent.
|
|
290
|
+
*
|
|
291
|
+
* **There are two states, not one, and keeping them apart is the decision this Block
|
|
292
|
+
* is shaped around.** Not yet sent, and sent. The obvious arrangement is a screen
|
|
293
|
+
* that replaces its form with a confirmation the instant the link goes out, which is
|
|
294
|
+
* what the storefront version does, and it is the arrangement that makes this screen
|
|
295
|
+
* dangerous on an instrument. A link posted to a mistyped address produces a page that
|
|
296
|
+
* says it worked, so the reader opens an inbox that will never contain anything,
|
|
297
|
+
* decides the product is broken, and tries again with a second address, which is now
|
|
298
|
+
* two accounts and a support ticket. A screen that keeps the address on the screen,
|
|
299
|
+
* in full, beside a control to change it, turns that four minutes into one glance.
|
|
300
|
+
* So `sent` is a prop rather than an internal state: the caller says the link is out,
|
|
301
|
+
* the Block draws the address and the change control and nothing else, and the cost
|
|
302
|
+
* is stated rather than hidden, which is that a reader who arrives at a confirmation
|
|
303
|
+
* with no `sent` on screen sees a form again and will press it again, so the caller
|
|
304
|
+
* has to pass `sent` at the same moment they pass a `status` of `sent`. That is one
|
|
305
|
+
* piece of state in step with another, in the caller's own reducer, and it is stated
|
|
306
|
+
* here because the alternative was a Block that invented its own sent flag and then
|
|
307
|
+
* could not know whether the link it believed it had sent was the one the caller's
|
|
308
|
+
* server had.
|
|
309
|
+
*
|
|
310
|
+
* **The resend control is a separate action from submit, and the reason is that the
|
|
311
|
+
* two look identical and are not.** Submitting posts a link for an address the reader
|
|
312
|
+
* has just typed. Asking again posts a link for an address that is already on the
|
|
313
|
+
* screen in the confirmation. A reader who opened the wrong inbox needs the second,
|
|
314
|
+
* and a screen that offers one control for both makes that reader retype an address
|
|
315
|
+
* they have already confirmed in order to get the thing they were already offered. So
|
|
316
|
+
* the confirmation carries its own control, the caller's handler receives the address
|
|
317
|
+
* the link was sent to rather than whatever happens to be in a field, and the two
|
|
318
|
+
* names it needs are both required, because a control that reads the same sentence
|
|
319
|
+
* before and after the reader pressed it is an invitation to press it again against a
|
|
320
|
+
* limit this Block cannot see.
|
|
321
|
+
*
|
|
322
|
+
* **The honest failure state is the caller's sentence, and the reason is that a mail
|
|
323
|
+
* transport has more outcomes than one sentence can be true of.** A send can be
|
|
324
|
+
* accepted and delivered, accepted and filtered, accepted and delayed by an hour,
|
|
325
|
+
* accepted and bounced, refused at the first hop because the domain cannot receive
|
|
326
|
+
* mail, and refused because the caller's own queue is full. None of those is knowable
|
|
327
|
+
* from here, and a screen that says "we sent it" is making a claim about a
|
|
328
|
+
* transport it has never spoken to. So `status` is a prop, this file holds no `sent`
|
|
329
|
+
* flag and no `error` flag, and the sentence is the product's. What the Block does
|
|
330
|
+
* about it is the two rendering decisions: the outcome is drawn in one live region
|
|
331
|
+
* that is rendered on both sides of the state change rather than one per state,
|
|
332
|
+
* because a live region that appears together with its first message is the one case
|
|
333
|
+
* a screen reader is least reliable about, and a region that was already on the page
|
|
334
|
+
* is already watching. The submit control is not disabled, and the status union has
|
|
335
|
+
* no in-flight member to disable it with; the caller's way to refuse a second press
|
|
336
|
+
* is to pass `sent`, which takes the form off the screen, and the cost of that is
|
|
337
|
+
* named on the `sent` prop.
|
|
338
|
+
*
|
|
339
|
+
* **`description` is required here and optional on every other Block in this package,
|
|
340
|
+
* and the reason is that this screen's whole mechanism is invisible.** Press the
|
|
341
|
+
* control and nothing visible happens: no page loads, no code appears on the screen,
|
|
342
|
+
* no field changes. A reader who does not know a link is about to be posted treats
|
|
343
|
+
* the form as broken, and presses it again, and the reader is right about the form
|
|
344
|
+
* and wrong about the product, and a screen that can be pressed three times in four
|
|
345
|
+
* seconds meets a rate limiter before the reader has read the sentence that was there
|
|
346
|
+
* all along. So the type makes it required rather than the Block defaulting to
|
|
347
|
+
* something, and the cost is named: a product with nothing to say about what arrives
|
|
348
|
+
* has to write a sentence anyway.
|
|
349
|
+
*
|
|
350
|
+
* **The address is held by this Block, and the reason is that a reader who mistyped
|
|
351
|
+
* it has to be able to clear it.** The Block keeps the string, hands it to the caller
|
|
352
|
+
* on every change when an `onValueChange` was passed, and adopts a `value` prop the
|
|
353
|
+
* moment it changes, which is the arrangement React documents for a prop that can
|
|
354
|
+
* change under a stateful child. The cost is that a caller who never passes `value`
|
|
355
|
+
* owns nothing, and can bring the form back only by changing their own state, which is
|
|
356
|
+
* also how they bring it back from the confirmation, so the two are the same decision
|
|
357
|
+
* in the same place.
|
|
358
|
+
*
|
|
359
|
+
* **It is a client Component, and the directive is unconditional.** `onSubmit` and
|
|
360
|
+
* `onResend` are functions, a function is a piece of state, and state is a client
|
|
361
|
+
* module: a server Component cannot hand an event handler to a `<form>` or a
|
|
362
|
+
* `<button>`, so a caller rendering this from a server component gets a form that
|
|
363
|
+
* posts and calls nothing.
|
|
364
|
+
*/
|
|
365
|
+
export declare function MagicLink01({ eyebrow, title, description, onSubmit, identifier, submitLabel, onResend, resendLabel, resendConfirmLabel, status, sent, headingLevel, className, }: MagicLink01Props): import("react").JSX.Element;
|
|
366
|
+
export default MagicLink01;
|
|
367
|
+
//# sourceMappingURL=magic-link-01.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"magic-link-01.d.ts","sourceRoot":"","sources":["../../../src/blocks/magic-link-01/magic-link-01.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,OAAO,CAAA;AAQjD,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAGxF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wDAAwD;IACxD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB;;;;;;;OAOG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;;OAQG;IACH,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IAC3C,4DAA4D;IAC5D,OAAO,EAAE,SAAS,CAAA;CACnB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qEAAqE;IACrE,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;;;;OAKG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,WAAW,EAAE,SAAS,CAAA;IACtB;;;;;;;;;OASG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACjD,8EAA8E;IAC9E,UAAU,EAAE,qBAAqB,CAAA;IACjC,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,gEAAgE;IAChE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAoGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+GG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,MAAM,EACN,IAAI,EACJ,YAAmB,EACnB,SAAS,GACV,EAAE,gBAAgB,+BAmLlB;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId, useState } from 'react';
|
|
4
|
+
import { Button } from '../../components/ui/button.js';
|
|
5
|
+
import { Card } from '../../components/ui/card.js';
|
|
6
|
+
import { Field, FieldDescription, FieldLabel } from '../../components/ui/field.js';
|
|
7
|
+
import { Input } from '../../components/ui/input.js';
|
|
8
|
+
import { LiveRegion } from '../../components/ui/live-region.js';
|
|
9
|
+
import { Section, SectionHeading } from '../../components/ui/section.js';
|
|
10
|
+
import { cn } from '../../lib/utils.js';
|
|
11
|
+
/**
|
|
12
|
+
* Whether a caller passed a word that is not there.
|
|
13
|
+
*
|
|
14
|
+
* Read as `string | undefined` rather than as the declared type, because the check
|
|
15
|
+
* is about the value that turned up rather than about what the type promised. A
|
|
16
|
+
* JavaScript caller and a value out of a session store both arrive with the type's
|
|
17
|
+
* guarantee already gone, and the diagnostic below is the last place that can still
|
|
18
|
+
* say what was wrong.
|
|
19
|
+
*/
|
|
20
|
+
function blank(value) {
|
|
21
|
+
return value === undefined || value.trim() === '';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The refusals, checked before anything is drawn so a caller's mistake is one
|
|
25
|
+
* diagnostic in a console rather than a nameless control on a screen a reader is
|
|
26
|
+
* about to post an address to.
|
|
27
|
+
*
|
|
28
|
+
* Five shapes, and each one is a control that cannot be used or a sentence that
|
|
29
|
+
* would be read in the wrong language. A nameless field is announced as a text field,
|
|
30
|
+
* which is the only name on the page and says nothing about what it is for. A value
|
|
31
|
+
* with no `onValueChange` is a field the caller cannot clear, and a reader who
|
|
32
|
+
* mistyped an address is the reader who needs to clear it. A resend control with one
|
|
33
|
+
* name and not the other announces the same sentence before and after the reader
|
|
34
|
+
* pressed it. A resend handler with nowhere to draw its control composes a function
|
|
35
|
+
* and two labels and then discards them, which is a caller who believes they have a
|
|
36
|
+
* control on a screen that has none. A change control with no words is a button a
|
|
37
|
+
* reader can reach and not identify.
|
|
38
|
+
*/
|
|
39
|
+
function assertMagicLink(input) {
|
|
40
|
+
const { identifier, submitLabel, onResend, resendLabel, resendConfirmLabel, sent } = input;
|
|
41
|
+
if (blank(identifier.label)) {
|
|
42
|
+
throw new Error('MagicLink01: the address field declares no label, so its control would be announced as a text ' +
|
|
43
|
+
'field, which is the only name on this screen and says nothing about what it is for. Pass the words ' +
|
|
44
|
+
'the product uses for a person inbox.');
|
|
45
|
+
}
|
|
46
|
+
if (blank(submitLabel)) {
|
|
47
|
+
throw new Error('MagicLink01: submitLabel is blank, so the one control this screen has would be announced as a button ' +
|
|
48
|
+
'and a reader would have to guess that pressing it posts a link to an inbox. Pass the sentence.');
|
|
49
|
+
}
|
|
50
|
+
if (identifier.value !== undefined && identifier.onValueChange === undefined) {
|
|
51
|
+
throw new Error('MagicLink01: identifier.value was passed with no onValueChange, so the field would show the address ' +
|
|
52
|
+
'once and then stop telling the caller what is in it, and the Block would have nowhere to post a ' +
|
|
53
|
+
'corrected one to. Pass the pair, or neither.');
|
|
54
|
+
}
|
|
55
|
+
if (onResend === undefined) {
|
|
56
|
+
if (resendLabel !== undefined || resendConfirmLabel !== undefined) {
|
|
57
|
+
throw new Error('MagicLink01: a resend label was passed with no onResend, so the sentence would be composed and then ' +
|
|
58
|
+
'discarded, which is a caller who believes they have named a control on a screen that has none. Pass ' +
|
|
59
|
+
'the handler, or drop the labels.');
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (blank(resendLabel) || blank(resendConfirmLabel)) {
|
|
64
|
+
throw new Error('MagicLink01: onResend was passed with fewer than two names for its control. One name means the control ' +
|
|
65
|
+
'reads the same sentence before and after the reader pressed it, which is an invitation to press it ' +
|
|
66
|
+
'again against a limit this Block cannot see. Pass the resting name and the name it takes afterwards.');
|
|
67
|
+
}
|
|
68
|
+
if (sent === undefined) {
|
|
69
|
+
throw new Error('MagicLink01: onResend was passed with no sent, so the control that asks for the link again has nowhere ' +
|
|
70
|
+
'to be drawn and the address it would resend to is not on the screen. A resend is not a second press ' +
|
|
71
|
+
'of submit; it belongs in the confirmation. Pass sent, or drop onResend.');
|
|
72
|
+
}
|
|
73
|
+
if (blank(sent.changeLabel)) {
|
|
74
|
+
throw new Error('MagicLink01: the confirmation was passed with no changeLabel, so the control that brings the form back ' +
|
|
75
|
+
'would be a button a reader can reach and not identify, on the one screen where a reader who mistyped ' +
|
|
76
|
+
'an address needs to know it is there. Pass the sentence.');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* A passwordless sign-in: one address, one control that posts a link to it, and the
|
|
81
|
+
* caller's own sentence about what is about to arrive.
|
|
82
|
+
*
|
|
83
|
+
* **The translation, because the pattern is not ours and the framing is.** A
|
|
84
|
+
* storefront publishes a magic-link card: an email field, a button, and a line that
|
|
85
|
+
* says a link is on its way, and its purpose is to let a shopper past the gate
|
|
86
|
+
* without inventing a password they would then have to remember. Prism's products
|
|
87
|
+
* observe a pipeline, capture a market, watch an estate and run agents, and a machine
|
|
88
|
+
* acting on behalf of a person is the whole subject, so this is the screen where a
|
|
89
|
+
* human authorises a machine with something that expires and cannot be replayed by
|
|
90
|
+
* whoever finds the inbox. The composition is the storefront's and is unchanged: one
|
|
91
|
+
* field, one control, one sentence about what is coming. What differs is what the
|
|
92
|
+
* reader is trusting, and that shows up in the two decisions below.
|
|
93
|
+
*
|
|
94
|
+
* **What it authorises.** A successful `onSubmit` means the caller's own server has
|
|
95
|
+
* posted a link and will accept a request carrying that link's token. It does not
|
|
96
|
+
* mean the link arrived, that the address can receive mail, or that the reader is who
|
|
97
|
+
* they say they are; the first is a fact about a mail transport and the third is
|
|
98
|
+
* exactly what the link is for. The Block has done no more than carry one string
|
|
99
|
+
* across a form boundary. It posts nothing.
|
|
100
|
+
*
|
|
101
|
+
* **What it deliberately does not do.** It will not say whether the address exists.
|
|
102
|
+
* It will not rate-limit how many links can be asked for. And it will not decide
|
|
103
|
+
* whether the address was right. Each of those is the consumer's, and each is a
|
|
104
|
+
* security decision rather than a rendering one, so a Block that made any of them
|
|
105
|
+
* would be something other than a composition: a Block that looked an address up
|
|
106
|
+
* would be an account directory, which is the enumeration oracle the sign-in surface
|
|
107
|
+
* refuses to be, and it would be the worst possible place for one because a reader
|
|
108
|
+
* arriving at this screen has just been told that a passwordless sign-in is
|
|
109
|
+
* available. A Block that rate-limited would be a rate limiter in a component
|
|
110
|
+
* library, shipping one policy to every product that installed it, in a place no
|
|
111
|
+
* consumer reads it. And a Block that judged the address would be guessing at a
|
|
112
|
+
* format on the reader's behalf, on the one field where a wrong guess is a lockout
|
|
113
|
+
* for somebody whose address is unusual and perfectly deliverable. So the Block draws
|
|
114
|
+
* the field the caller declared, hands over the string, and prints back what the
|
|
115
|
+
* caller says was sent.
|
|
116
|
+
*
|
|
117
|
+
* **There are two states, not one, and keeping them apart is the decision this Block
|
|
118
|
+
* is shaped around.** Not yet sent, and sent. The obvious arrangement is a screen
|
|
119
|
+
* that replaces its form with a confirmation the instant the link goes out, which is
|
|
120
|
+
* what the storefront version does, and it is the arrangement that makes this screen
|
|
121
|
+
* dangerous on an instrument. A link posted to a mistyped address produces a page that
|
|
122
|
+
* says it worked, so the reader opens an inbox that will never contain anything,
|
|
123
|
+
* decides the product is broken, and tries again with a second address, which is now
|
|
124
|
+
* two accounts and a support ticket. A screen that keeps the address on the screen,
|
|
125
|
+
* in full, beside a control to change it, turns that four minutes into one glance.
|
|
126
|
+
* So `sent` is a prop rather than an internal state: the caller says the link is out,
|
|
127
|
+
* the Block draws the address and the change control and nothing else, and the cost
|
|
128
|
+
* is stated rather than hidden, which is that a reader who arrives at a confirmation
|
|
129
|
+
* with no `sent` on screen sees a form again and will press it again, so the caller
|
|
130
|
+
* has to pass `sent` at the same moment they pass a `status` of `sent`. That is one
|
|
131
|
+
* piece of state in step with another, in the caller's own reducer, and it is stated
|
|
132
|
+
* here because the alternative was a Block that invented its own sent flag and then
|
|
133
|
+
* could not know whether the link it believed it had sent was the one the caller's
|
|
134
|
+
* server had.
|
|
135
|
+
*
|
|
136
|
+
* **The resend control is a separate action from submit, and the reason is that the
|
|
137
|
+
* two look identical and are not.** Submitting posts a link for an address the reader
|
|
138
|
+
* has just typed. Asking again posts a link for an address that is already on the
|
|
139
|
+
* screen in the confirmation. A reader who opened the wrong inbox needs the second,
|
|
140
|
+
* and a screen that offers one control for both makes that reader retype an address
|
|
141
|
+
* they have already confirmed in order to get the thing they were already offered. So
|
|
142
|
+
* the confirmation carries its own control, the caller's handler receives the address
|
|
143
|
+
* the link was sent to rather than whatever happens to be in a field, and the two
|
|
144
|
+
* names it needs are both required, because a control that reads the same sentence
|
|
145
|
+
* before and after the reader pressed it is an invitation to press it again against a
|
|
146
|
+
* limit this Block cannot see.
|
|
147
|
+
*
|
|
148
|
+
* **The honest failure state is the caller's sentence, and the reason is that a mail
|
|
149
|
+
* transport has more outcomes than one sentence can be true of.** A send can be
|
|
150
|
+
* accepted and delivered, accepted and filtered, accepted and delayed by an hour,
|
|
151
|
+
* accepted and bounced, refused at the first hop because the domain cannot receive
|
|
152
|
+
* mail, and refused because the caller's own queue is full. None of those is knowable
|
|
153
|
+
* from here, and a screen that says "we sent it" is making a claim about a
|
|
154
|
+
* transport it has never spoken to. So `status` is a prop, this file holds no `sent`
|
|
155
|
+
* flag and no `error` flag, and the sentence is the product's. What the Block does
|
|
156
|
+
* about it is the two rendering decisions: the outcome is drawn in one live region
|
|
157
|
+
* that is rendered on both sides of the state change rather than one per state,
|
|
158
|
+
* because a live region that appears together with its first message is the one case
|
|
159
|
+
* a screen reader is least reliable about, and a region that was already on the page
|
|
160
|
+
* is already watching. The submit control is not disabled, and the status union has
|
|
161
|
+
* no in-flight member to disable it with; the caller's way to refuse a second press
|
|
162
|
+
* is to pass `sent`, which takes the form off the screen, and the cost of that is
|
|
163
|
+
* named on the `sent` prop.
|
|
164
|
+
*
|
|
165
|
+
* **`description` is required here and optional on every other Block in this package,
|
|
166
|
+
* and the reason is that this screen's whole mechanism is invisible.** Press the
|
|
167
|
+
* control and nothing visible happens: no page loads, no code appears on the screen,
|
|
168
|
+
* no field changes. A reader who does not know a link is about to be posted treats
|
|
169
|
+
* the form as broken, and presses it again, and the reader is right about the form
|
|
170
|
+
* and wrong about the product, and a screen that can be pressed three times in four
|
|
171
|
+
* seconds meets a rate limiter before the reader has read the sentence that was there
|
|
172
|
+
* all along. So the type makes it required rather than the Block defaulting to
|
|
173
|
+
* something, and the cost is named: a product with nothing to say about what arrives
|
|
174
|
+
* has to write a sentence anyway.
|
|
175
|
+
*
|
|
176
|
+
* **The address is held by this Block, and the reason is that a reader who mistyped
|
|
177
|
+
* it has to be able to clear it.** The Block keeps the string, hands it to the caller
|
|
178
|
+
* on every change when an `onValueChange` was passed, and adopts a `value` prop the
|
|
179
|
+
* moment it changes, which is the arrangement React documents for a prop that can
|
|
180
|
+
* change under a stateful child. The cost is that a caller who never passes `value`
|
|
181
|
+
* owns nothing, and can bring the form back only by changing their own state, which is
|
|
182
|
+
* also how they bring it back from the confirmation, so the two are the same decision
|
|
183
|
+
* in the same place.
|
|
184
|
+
*
|
|
185
|
+
* **It is a client Component, and the directive is unconditional.** `onSubmit` and
|
|
186
|
+
* `onResend` are functions, a function is a piece of state, and state is a client
|
|
187
|
+
* module: a server Component cannot hand an event handler to a `<form>` or a
|
|
188
|
+
* `<button>`, so a caller rendering this from a server component gets a form that
|
|
189
|
+
* posts and calls nothing.
|
|
190
|
+
*/
|
|
191
|
+
export function MagicLink01({ eyebrow, title, description, onSubmit, identifier, submitLabel, onResend, resendLabel, resendConfirmLabel, status, sent, headingLevel = 'h2', className, }) {
|
|
192
|
+
assertMagicLink({ identifier, submitLabel, onResend, resendLabel, resendConfirmLabel, sent });
|
|
193
|
+
const generated = useId();
|
|
194
|
+
const identifierId = `${generated}-identifier`;
|
|
195
|
+
const identifierDescriptionId = `${generated}-identifier-description`;
|
|
196
|
+
const resent = status?.state === 'resent';
|
|
197
|
+
const posted = sent !== undefined;
|
|
198
|
+
/*
|
|
199
|
+
* The address, and the two pieces of render-time state that let the Block adopt a
|
|
200
|
+
* caller's value and keep it in step. Both are adjusted during render rather than
|
|
201
|
+
* in an effect, because the trigger is a prop changing and this is the arrangement
|
|
202
|
+
* React documents for it: a set during render is applied before the browser paints,
|
|
203
|
+
* so a controlled caller never sees the field disagree with the value it just sent,
|
|
204
|
+
* which on this screen is the difference between a reader seeing a correction and a
|
|
205
|
+
* reader posting to the address they had already decided was wrong.
|
|
206
|
+
*/
|
|
207
|
+
const [typed, setTyped] = useState(identifier.value ?? '');
|
|
208
|
+
const [seen, setSeen] = useState(identifier.value);
|
|
209
|
+
if (seen !== identifier.value) {
|
|
210
|
+
setSeen(identifier.value);
|
|
211
|
+
setTyped(identifier.value ?? '');
|
|
212
|
+
}
|
|
213
|
+
const setIdentifier = (value) => {
|
|
214
|
+
setTyped(value);
|
|
215
|
+
identifier.onValueChange?.(value);
|
|
216
|
+
};
|
|
217
|
+
const handleSubmit = (event) => {
|
|
218
|
+
event.preventDefault();
|
|
219
|
+
onSubmit({ identifier: typed });
|
|
220
|
+
};
|
|
221
|
+
return (_jsx(Section, { "data-slot": "magic-link-01", className: cn(className), children: _jsxs("div", { "data-slot": "magic-link-01-body", className: "flex flex-col gap-10", children: [_jsx(SectionHeading, { as: headingLevel, align: "left", eyebrow: eyebrow, title: title, description: description }), _jsxs(Card, { "data-slot": "magic-link-01-card", className: "max-w-measure-narrow gap-0 px-6", children: [posted ? (
|
|
222
|
+
/*
|
|
223
|
+
The second state, and the whole of why the first one gets a form. The
|
|
224
|
+
address is printed in full rather than masked, truncated or summarised,
|
|
225
|
+
because the reader's next action is to open an inbox and compare, and a
|
|
226
|
+
confirmation that does not show what it posted to cannot be checked. The
|
|
227
|
+
change control is beside it rather than under it, so a reader who
|
|
228
|
+
recognises the mistake can act on it without reading past the sentence
|
|
229
|
+
about expiry first.
|
|
230
|
+
*/
|
|
231
|
+
_jsxs("div", { "data-slot": "magic-link-01-sent", className: "flex flex-col gap-5", children: [_jsxs("div", { "data-slot": "magic-link-01-sent-body", className: "flex flex-col gap-1.5", children: [_jsx("span", { "data-slot": "magic-link-01-sent-identifier", className: "text-base font-medium break-words", children: sent.identifier }), sent.expiresLabel === undefined ? null : (_jsx("span", { "data-slot": "magic-link-01-sent-expires", className: "text-muted-foreground text-sm text-pretty", children: sent.expiresLabel }))] }), _jsxs("div", { "data-slot": "magic-link-01-sent-actions", className: "flex flex-wrap items-center gap-3", children: [_jsx(Button, { "data-slot": "magic-link-01-change", type: "button", variant: "outline", size: "sm", onClick: () => sent.onChange(sent.identifier), children: sent.changeLabel }), onResend === undefined ? null : (_jsx(Button, { "data-slot": "magic-link-01-resend", type: "button", variant: "ghost", size: "sm", disabled: resent, onClick: () => onResend(sent.identifier), children: resent ? resendConfirmLabel : resendLabel }))] })] })) : (_jsxs("form", { "data-slot": "magic-link-01-form", onSubmit: handleSubmit, className: "flex w-full flex-col gap-5", children: [_jsxs(Field, { "data-slot": "magic-link-01-identifier", children: [_jsx(FieldLabel, { htmlFor: identifierId, children: identifier.label }), _jsx(Input, { id: identifierId, type: identifier.type ?? 'email', autoComplete: identifier.autoComplete, value: typed, onChange: (event) => setIdentifier(event.target.value), required: true, "aria-describedby": identifier.description === undefined ? undefined : identifierDescriptionId }), identifier.description === undefined ? null : (_jsx(FieldDescription, { id: identifierDescriptionId, children: identifier.description }))] }), _jsx(Button, { "data-slot": "magic-link-01-submit", type: "submit", className: "w-full", children: submitLabel })] })), _jsx(LiveRegion, { "data-slot": "magic-link-01-status", politeness: status?.state === 'error' ? 'assertive' : 'polite', className: cn('mt-5 text-sm', status?.state === 'error' ? 'text-destructive font-medium' : 'text-muted-foreground'), children: status?.message })] })] }) }));
|
|
232
|
+
}
|
|
233
|
+
export default MagicLink01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/member-list-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAKrD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { MemberList01, default } from './member-list.js';
|