@nanisoft/prism-ui 0.13.0 → 0.15.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 +12 -1
- package/dist/blocks/data-table-01/data-table.d.ts.map +1 -1
- package/dist/blocks/data-table-01/data-table.js +8 -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 +124 -11
- package/dist/blocks/page-header-01/page-header.d.ts.map +1 -1
- package/dist/blocks/page-header-01/page-header.js +25 -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 +3 -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 +18 -1
- package/dist/blocks/site-footer/site-footer.d.ts.map +1 -1
- package/dist/blocks/site-footer/site-footer.js +8 -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/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/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/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 +23 -0
- package/dist/components/ui/prose.d.ts.map +1 -1
- package/dist/components/ui/prose.js +30 -1
- 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 +108 -1
- package/dist/components/ui/section.d.ts.map +1 -1
- package/dist/components/ui/section.js +109 -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/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.js +4 -4
- 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/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 +8 -0
- package/dist/pages/docs-shell/docs-shell.d.ts.map +1 -1
- package/dist/pages/docs-shell/docs-shell.js +24 -7
- 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 +98 -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/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 +1003 -55
- package/package.json +9 -3
|
@@ -0,0 +1,273 @@
|
|
|
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 { Checkbox } from '../../components/ui/checkbox.js';
|
|
7
|
+
import { Field, FieldDescription, FieldError, FieldLabel } from '../../components/ui/field.js';
|
|
8
|
+
import { LiveRegion } from '../../components/ui/live-region.js';
|
|
9
|
+
import { OneTimeCode } from '../../components/ui/one-time-code.js';
|
|
10
|
+
import { Section, SectionHeading } from '../../components/ui/section.js';
|
|
11
|
+
import { cn } from '../../lib/utils.js';
|
|
12
|
+
/**
|
|
13
|
+
* Whether a caller passed a word that is not there.
|
|
14
|
+
*
|
|
15
|
+
* Read as `string | undefined` rather than as the declared type, because the check
|
|
16
|
+
* is about the value that turned up rather than about what the type promised. A
|
|
17
|
+
* JavaScript caller and a value out of a session store both arrive with the type's
|
|
18
|
+
* guarantee already gone, and the diagnostic below is the last place that can still
|
|
19
|
+
* say what was wrong.
|
|
20
|
+
*/
|
|
21
|
+
function blank(value) {
|
|
22
|
+
return value === undefined || value.trim() === '';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The refusals, checked before anything is drawn so a caller's mistake is one
|
|
26
|
+
* diagnostic in a console rather than a nameless control on the screen where a reader
|
|
27
|
+
* is about to be asked to prove who they are.
|
|
28
|
+
*
|
|
29
|
+
* Six shapes, and this is the screen on which they are least forgivable. A code with
|
|
30
|
+
* no name is six anonymous fields. A code of length zero is a form that cannot be
|
|
31
|
+
* completed, and a reader cannot tell that from a broken one. Two selected methods is
|
|
32
|
+
* a screen that asks for one factor and reports another. A nameless remember row is a
|
|
33
|
+
* tick box a reader cannot find, and a tick box they cannot find is a session
|
|
34
|
+
* somebody else's colleague can walk into. A nameless resend control is a button
|
|
35
|
+
* whose only job is to be pressed and which announces itself as a button. A
|
|
36
|
+
* `remember.value` with no `onValueChange` is a control that will show one state and
|
|
37
|
+
* then stop agreeing with the caller, which on this screen is a claim about the
|
|
38
|
+
* reader's session.
|
|
39
|
+
*/
|
|
40
|
+
function assertTwoFactor(input) {
|
|
41
|
+
const { code, methods, remember, resend, cancel, submitLabel } = input;
|
|
42
|
+
if (blank(code.label)) {
|
|
43
|
+
throw new Error('TwoFactor01: the code field declares no label, so its six segments would be six anonymous fields ' +
|
|
44
|
+
'and a reader could not say out loud which one they were in. Pass the words the product uses for the ' +
|
|
45
|
+
'code it has sent.');
|
|
46
|
+
}
|
|
47
|
+
if (!Number.isInteger(code.length) || code.length < 1) {
|
|
48
|
+
throw new Error(`TwoFactor01: the code field declares a length of ${JSON.stringify(code.length)}, so the field would ` +
|
|
49
|
+
'render no segments at all, which is a form that cannot be completed and looks to a reader exactly ' +
|
|
50
|
+
'like one that is broken. Pass the number of characters the code your service issues has.');
|
|
51
|
+
}
|
|
52
|
+
let chosen = 0;
|
|
53
|
+
for (const method of methods ?? []) {
|
|
54
|
+
if (blank(method.name)) {
|
|
55
|
+
throw new Error(`TwoFactor01: the method ${JSON.stringify(method.id)} declares no name, so the row would announce ` +
|
|
56
|
+
'nothing about which factor it is, on the one screen where the reader has to be able to tell. Pass ' +
|
|
57
|
+
'the words the product uses.');
|
|
58
|
+
}
|
|
59
|
+
if (method.selected === true)
|
|
60
|
+
chosen += 1;
|
|
61
|
+
}
|
|
62
|
+
if (chosen > 1) {
|
|
63
|
+
throw new Error(`TwoFactor01: ${chosen} methods are marked selected, so the screen would be asking the reader for one ` +
|
|
64
|
+
'factor while handing their caller another, and the code that would be accepted is not the one the ' +
|
|
65
|
+
'reader was told to look for. Mark one, or none.');
|
|
66
|
+
}
|
|
67
|
+
if (blank(submitLabel)) {
|
|
68
|
+
throw new Error('TwoFactor01: submitLabel is blank, so the one control that verifies the reader would be announced as ' +
|
|
69
|
+
'a button. Pass the sentence.');
|
|
70
|
+
}
|
|
71
|
+
if (remember !== undefined) {
|
|
72
|
+
if (blank(remember.label)) {
|
|
73
|
+
throw new Error('TwoFactor01: a remember row was passed with no label, so the control would be a tick box with no ' +
|
|
74
|
+
'words beside it, and a tick box a reader cannot find is a session somebody can walk into on a ' +
|
|
75
|
+
'shared machine. Pass the sentence, or drop the row.');
|
|
76
|
+
}
|
|
77
|
+
if (remember.value !== undefined && remember.onValueChange === undefined) {
|
|
78
|
+
throw new Error('TwoFactor01: remember.value was passed with no onValueChange, so the row would show one state and ' +
|
|
79
|
+
'then stop agreeing with the caller, which on this screen is a claim about the reader own session. ' +
|
|
80
|
+
'Pass the pair, or neither.');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (resend !== undefined && blank(resend.label)) {
|
|
84
|
+
throw new Error('TwoFactor01: a resend control was passed with no label, so the button whose only job is to be pressed ' +
|
|
85
|
+
'would be announced as a button. Pass the sentence.');
|
|
86
|
+
}
|
|
87
|
+
if (cancel !== undefined && blank(cancel.label)) {
|
|
88
|
+
throw new Error('TwoFactor01: a cancel control was passed with no label, so the way off this screen would be a button ' +
|
|
89
|
+
'a reader can reach and not identify, which is the wrong thing to leave unnamed on the screen where a ' +
|
|
90
|
+
'reader who arrived on the wrong link most needs to leave. Pass the sentence.');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A second factor: which one is being asked for, the code itself, the control that
|
|
95
|
+
* asks for it again, and the caller's own words for what happened.
|
|
96
|
+
*
|
|
97
|
+
* **The translation, because the pattern is not ours and the framing is.** A
|
|
98
|
+
* storefront publishes a verification screen: a method line saying where the code
|
|
99
|
+
* came from, a field for the code, a "send another" link, a "remember this device"
|
|
100
|
+
* tick, a button and the way back, and its purpose is to confirm that the person
|
|
101
|
+
* holding the card is the person who has the account, before a purchase is taken. The
|
|
102
|
+
* composition is that screen and is unchanged, down to the composition of the code
|
|
103
|
+
* field. What the screen authorises is a machine acting on this reader's behalf for
|
|
104
|
+
* the first time, and that is why the standard for what it refuses is higher here
|
|
105
|
+
* than anywhere else in this package.
|
|
106
|
+
*
|
|
107
|
+
* **It does not verify the code. It does not count the attempts. And it does not own
|
|
108
|
+
* the lockout.** Each of those is the consumer's, and each is a security decision
|
|
109
|
+
* rather than a rendering one, and the three together are what this Block is for.
|
|
110
|
+
*
|
|
111
|
+
* A Block that counted attempts would be shipping a lockout policy into every product
|
|
112
|
+
* that installed it: three tries on one product and five on another, with no
|
|
113
|
+
* configuration point a consumer can find, in a file none of them reads. A lockout is
|
|
114
|
+
* an availability decision and it belongs to the product, because only the product
|
|
115
|
+
* knows what being locked out of an estate observation tool costs. It costs a
|
|
116
|
+
* two-person shift nothing when a market is closed, and it costs a whole capture
|
|
117
|
+
* window when the market is open, and the number of attempts a caller will accept is
|
|
118
|
+
* a different number on Tuesday from the number it will accept on Wednesday at nine.
|
|
119
|
+
* Worse, a lockout is a denial of service that anybody can aim at a reader: a
|
|
120
|
+
* component library that enforces one has handed every installer a way for a stranger
|
|
121
|
+
* to lock a colleague out of their own work by typing six wrong characters, and it
|
|
122
|
+
* has done that invisibly.
|
|
123
|
+
*
|
|
124
|
+
* So the Block hands the code across a form boundary and draws what it is given. It
|
|
125
|
+
* keeps no count because it has no memory between the reader's attempts to record, it
|
|
126
|
+
* has no clock to expire a lockout with, and it cannot know whether an attempt even
|
|
127
|
+
* reached the caller's server. The caller's `status` is the only thing on this screen
|
|
128
|
+
* that says whether anything happened, and the caller's `code.error` is the only thing
|
|
129
|
+
* that says what was wrong with the entry.
|
|
130
|
+
*
|
|
131
|
+
* **What it authorises.** A successful `onSubmit` means the caller's own server has
|
|
132
|
+
* accepted this code for this session and will now let this reader's machine act. That
|
|
133
|
+
* is a larger grant than the sign-in it completes: a sign-in opens a session for a
|
|
134
|
+
* person, and a second factor decides whether the machine that person is holding may
|
|
135
|
+
* act on their behalf. It is also the least reversible grant on this surface, because
|
|
136
|
+
* the reader is here because something already knows they are the account's owner, and
|
|
137
|
+
* a code that was guessed, replayed or phished is accepted exactly the same as one
|
|
138
|
+
* that was typed by the person it belongs to.
|
|
139
|
+
*
|
|
140
|
+
* **What it deliberately does not do, beside the three above.** It will not generate
|
|
141
|
+
* a code, and it will not say how long one is valid. Both of those are the caller's
|
|
142
|
+
* verification service, and a Block that drew an expiry it had invented would be
|
|
143
|
+
* telling a reader their code is still good when the caller's server has already
|
|
144
|
+
* stopped accepting it, which is the one error on this screen that costs a reader a
|
|
145
|
+
* second attempt they could have avoided. The `expiresLabel` idea from the
|
|
146
|
+
* passwordless screen is deliberately absent here for that reason: there is no prop
|
|
147
|
+
* for it, because there is no honest reading of a duration this Block can reach, and
|
|
148
|
+
* a caller that wants to state one composes it into `description` or `status.message`
|
|
149
|
+
* where it is their sentence and not this Block's claim.
|
|
150
|
+
*
|
|
151
|
+
* **The code field is `OneTimeCode` and not six `<input>` elements written here, and
|
|
152
|
+
* the Component's own arguments are the reason and they are worth restating once
|
|
153
|
+
* because this is the screen they matter on.** A paste of the whole code lands in
|
|
154
|
+
* every segment: a reader who has the code on their clipboard has already done the
|
|
155
|
+
* hard part, and a field that accepted one character per paste would make them retype
|
|
156
|
+
* it one box at a time, which is what they are on their phone to avoid. A refused
|
|
157
|
+
* character is refused rather than stored, so "123 456" pastes as `123456` and
|
|
158
|
+
* `12345a6` pastes as `123456`, because the alternative is a field that looks right
|
|
159
|
+
* and a form that does not submit. The code is one value and not six, so Backspace
|
|
160
|
+
* removes a character from the string and the characters after it close up, because
|
|
161
|
+
* six boxes that each had to be emptied by hand would need a rule for what Backspace
|
|
162
|
+
* on an empty box means and every version of that rule is wrong for somebody. And the
|
|
163
|
+
* whole code is one Tab stop, so the reader reaches the first segment once and the
|
|
164
|
+
* rest follow as they type. Five decisions, each of which is wrong in a different
|
|
165
|
+
* product if this Block made its own.
|
|
166
|
+
*
|
|
167
|
+
* **The code's description cannot be wired to the segments, and the reason is that
|
|
168
|
+
* `OneTimeCode` forwards no props beyond the ones it declares.** It is a deliberate
|
|
169
|
+
* decision in that Component, so a caller cannot attach a description or an error to
|
|
170
|
+
* the segments by accident. The consequence here is that `code.description` is drawn
|
|
171
|
+
* above the field where a reader reaches it first and `code.error` is drawn below it
|
|
172
|
+
* with `role="alert"` so it is announced when it appears rather than when the reader
|
|
173
|
+
* finds it. That is the next best arrangement available and it is stated rather than
|
|
174
|
+
* hidden, because on a security surface a wiring somebody assumed and did not check
|
|
175
|
+
* is exactly the kind of thing this Block's documentation exists to prevent.
|
|
176
|
+
*
|
|
177
|
+
* **The honest failure state is the caller's sentence, and the reason is that a
|
|
178
|
+
* second factor has more failure shapes than a design system should be able to name.**
|
|
179
|
+
* The code can be wrong, expired, already used, for a factor the reader did not
|
|
180
|
+
* choose, for a session that has gone, or for an account that has just been locked by
|
|
181
|
+
* the caller's own attempt counter. The reader can dismiss a prompt, arrive with a
|
|
182
|
+
* code for another device, or be rate limited. And the distinction between them is
|
|
183
|
+
* itself a security fact: a screen that says "that code has expired" is telling a
|
|
184
|
+
* reader something an attacker learns too. So `status` and `code.error` are both props
|
|
185
|
+
* with the caller's words, this file holds no accepted flag and no failure flag, and
|
|
186
|
+
* what the Block does about an outcome is the two rendering decisions: the submit and
|
|
187
|
+
* resend controls are refused while the caller's own state says a request is in
|
|
188
|
+
* flight, because a second press is a second attempt counted against a limit the
|
|
189
|
+
* Block cannot see, and the outcome is drawn in one live region, `assertive` for the
|
|
190
|
+
* refusal, because a reader who has typed six characters and got nothing back is a
|
|
191
|
+
* reader who will type six more.
|
|
192
|
+
*
|
|
193
|
+
* **The method list is drawn and never changed, and the cost is that the Block cannot
|
|
194
|
+
* offer the reader another way in.** A product with three factors and a reader
|
|
195
|
+
* without access to the one being asked for has a problem, and the honest answer is a
|
|
196
|
+
* control that changes the selection, which is a request to the caller's server and a
|
|
197
|
+
* state this Block would then be reporting rather than holding. So `selected` is the
|
|
198
|
+
* caller's, the selected row is marked with `aria-current` and a rule in the primary
|
|
199
|
+
* colour so the mark is not a colour alone, and a consumer who needs the chooser
|
|
200
|
+
* composes their own beside this Block.
|
|
201
|
+
*
|
|
202
|
+
* **It is a client Component, and the directive is unconditional.** `onSubmit` is a
|
|
203
|
+
* function, a function is a piece of state, and state is a client module: a server
|
|
204
|
+
* Component cannot hand an event handler to a `<form>`, so a caller rendering this
|
|
205
|
+
* from a server component gets a form that submits and calls nothing. The code itself
|
|
206
|
+
* is already client-side for the same reason it is a segmented field, and
|
|
207
|
+
* `OneTimeCode` is a client Component whichever way this one is drawn.
|
|
208
|
+
*/
|
|
209
|
+
export function TwoFactor01({ eyebrow, title, description, methods, code, onSubmit, submitLabel, submitting = false, remember, resend, status, cancel, headingLevel = 'h2', className, }) {
|
|
210
|
+
assertTwoFactor({ code, methods, remember, resend, cancel, submitLabel });
|
|
211
|
+
const generated = useId();
|
|
212
|
+
const codeId = `${generated}-code`;
|
|
213
|
+
const rememberId = `${generated}-remember`;
|
|
214
|
+
const rememberDescriptionId = `${generated}-remember-description`;
|
|
215
|
+
const errorId = code.error === undefined ? undefined : `${generated}-code-error`;
|
|
216
|
+
const busy = submitting || status?.state === 'working';
|
|
217
|
+
const chosen = methods?.find((method) => method.selected === true);
|
|
218
|
+
/*
|
|
219
|
+
* The tick, and the one piece of render-time state that lets the control leave the
|
|
220
|
+
* confirmed state. The confirm state is entered by the reader pressing resend, which
|
|
221
|
+
* the Block knows about because it is the Block own control, and it is left when the
|
|
222
|
+
* caller's own status changes, which is the only signal this Block has that the
|
|
223
|
+
* outcome of that resend was reported. Adjusted during render rather than in an
|
|
224
|
+
* effect, because the trigger is a prop changing and this is the arrangement React
|
|
225
|
+
* documents for it.
|
|
226
|
+
*/
|
|
227
|
+
const [remembered, setRemembered] = useState(remember?.value ?? false);
|
|
228
|
+
const [seenRemember, setSeenRemember] = useState(remember?.value);
|
|
229
|
+
if (seenRemember !== remember?.value) {
|
|
230
|
+
setSeenRemember(remember?.value);
|
|
231
|
+
setRemembered(remember?.value ?? false);
|
|
232
|
+
}
|
|
233
|
+
const [resent, setResent] = useState(false);
|
|
234
|
+
const [seenState, setSeenState] = useState(status?.state);
|
|
235
|
+
if (seenState !== status?.state) {
|
|
236
|
+
setSeenState(status?.state);
|
|
237
|
+
setResent(false);
|
|
238
|
+
}
|
|
239
|
+
const setRemember = (value) => {
|
|
240
|
+
setRemembered(value);
|
|
241
|
+
remember?.onValueChange?.(value);
|
|
242
|
+
};
|
|
243
|
+
/*
|
|
244
|
+
* The three sentences the resend control can carry, resolved once here rather than
|
|
245
|
+
* as a nested ternary inside the call: the caller's own state first, because a
|
|
246
|
+
* second press while the first request is in flight is a second code asked for
|
|
247
|
+
* against a limit this Block cannot see; then the fact that the reader has already
|
|
248
|
+
* asked; then the resting name. Each of the two optional names falls back to the
|
|
249
|
+
* one that is required, so a caller who passes only `label` gets one sentence
|
|
250
|
+
* throughout, which is a control that reads the same before and after and a trap
|
|
251
|
+
* the caller's own status can still get them out of.
|
|
252
|
+
*/
|
|
253
|
+
const resendText = resend === undefined
|
|
254
|
+
? undefined
|
|
255
|
+
: busy && resent
|
|
256
|
+
? (resend.cooldownLabel ?? resend.confirmLabel ?? resend.label)
|
|
257
|
+
: resent
|
|
258
|
+
? (resend.confirmLabel ?? resend.label)
|
|
259
|
+
: resend.label;
|
|
260
|
+
const handleSubmit = (event) => {
|
|
261
|
+
event.preventDefault();
|
|
262
|
+
onSubmit({ code: code.value, method: chosen?.id, remember: remembered });
|
|
263
|
+
};
|
|
264
|
+
return (_jsx(Section, { "data-slot": "two-factor-01", className: cn(className), children: _jsxs("div", { "data-slot": "two-factor-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": "two-factor-01-card", className: "max-w-measure-narrow gap-0 px-6", children: [_jsxs("form", { "data-slot": "two-factor-01-form", onSubmit: handleSubmit, className: "flex w-full flex-col gap-5", children: [methods === undefined || methods.length === 0 ? null : (_jsx("ul", { "data-slot": "two-factor-01-methods", className: "border-border flex flex-col border-t", children: methods.map((method) => (_jsxs("li", { "data-slot": "two-factor-01-method", "data-method": method.id, "aria-current": method.selected === true ? 'true' : undefined, className: cn('flex flex-col gap-0.5 border-b border-s-2 py-3 ps-3 last:border-b-0',
|
|
265
|
+
// One colour class and not two, because the two would be two
|
|
266
|
+
// single-class declarations of the same property and the one that
|
|
267
|
+
// won would be the one Tailwind happened to emit last.
|
|
268
|
+
method.selected === true ? 'border-primary' : 'border-border'), children: [_jsx("span", { "data-slot": "two-factor-01-method-name", className: "text-sm font-medium", children: method.name }), method.detail === undefined ? null : (_jsx("span", { "data-slot": "two-factor-01-method-detail", className: "text-muted-foreground text-sm text-pretty", children: method.detail }))] }, method.id))) })), _jsxs(Field, { "data-slot": "two-factor-01-code", "data-invalid": errorId === undefined ? undefined : 'true', children: [code.description === undefined ? null : (_jsx(FieldDescription, { children: code.description })), _jsx(FieldLabel, { htmlFor: codeId, children: code.label }), _jsx(OneTimeCode, { id: codeId, label: code.label, length: code.length, value: code.value, onValueChange: code.onValueChange, ...(code.characters === undefined ? null : { characters: code.characters }), ...(code.segmentLabel === undefined ? null : { segmentLabel: code.segmentLabel }) }), errorId === undefined ? null : (_jsx(FieldError, { id: errorId, children: code.error }))] }), resend === undefined ? null : (_jsx("div", { "data-slot": "two-factor-01-resend-row", children: _jsx(Button, { "data-slot": "two-factor-01-resend", type: "button", variant: "ghost", size: "sm", disabled: busy, onClick: () => {
|
|
269
|
+
setResent(true);
|
|
270
|
+
resend.onResend();
|
|
271
|
+
}, className: "self-start", children: resendText }) })), remember === undefined ? null : (_jsxs("div", { "data-slot": "two-factor-01-remember", className: "flex items-start gap-2.5", children: [_jsx(Checkbox, { id: rememberId, checked: remembered, onCheckedChange: (next) => setRemember(next === true), className: "mt-0.5" }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsx(FieldLabel, { htmlFor: rememberId, className: "font-normal", children: remember.label }), remember.description === undefined ? null : (_jsx(FieldDescription, { id: rememberDescriptionId, children: remember.description }))] })] })), _jsxs("div", { "data-slot": "two-factor-01-actions", className: "flex flex-col gap-3", children: [_jsx(Button, { "data-slot": "two-factor-01-submit", type: "submit", disabled: busy, className: "w-full", children: submitLabel }), _jsx(LiveRegion, { "data-slot": "two-factor-01-status", politeness: status?.state === 'error' ? 'assertive' : 'polite', busy: busy, className: cn('text-sm', status?.state === 'error' ? 'text-destructive font-medium' : 'text-muted-foreground'), children: status?.message })] })] }), cancel === undefined ? null : (_jsx("div", { "data-slot": "two-factor-01-cancel-row", className: "border-border border-t pt-5", children: _jsx(Button, { "data-slot": "two-factor-01-cancel", type: "button", variant: "ghost", size: "sm", onClick: cancel.onCancel, children: cancel.label }) }))] })] }) }));
|
|
272
|
+
}
|
|
273
|
+
export default TwoFactor01;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/user-profile-01/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAI1D,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { UserProfile01, default } from './user-profile-01.js';
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type HeadingLevel } from '../../components/ui/section.js';
|
|
3
|
+
/**
|
|
4
|
+
* One fact about a person, as a profile states it: the term and the answer.
|
|
5
|
+
*
|
|
6
|
+
* A node of its own rather than a re-export of `Fact`, and the reason is that
|
|
7
|
+
* `Fact` is four fields and this profile has two of them. A re-export would put a
|
|
8
|
+
* `href` and a `newTab` on a type whose only drawing is a definition list with no
|
|
9
|
+
* anchor in it, and a caller reading the type would reasonably expect those two to
|
|
10
|
+
* do something. The cost of the narrower type is that a caller whose fact value is
|
|
11
|
+
* a destination composes `FactList` themselves rather than passing it here, and
|
|
12
|
+
* that is the honest answer because the destination is a decision about their own
|
|
13
|
+
* routes rather than a fact about a person.
|
|
14
|
+
*/
|
|
15
|
+
export type UserProfile01Fact = {
|
|
16
|
+
/**
|
|
17
|
+
* The caller's stable key for this fact.
|
|
18
|
+
*
|
|
19
|
+
* Required, because a profile's facts are very often assembled from a store the
|
|
20
|
+
* caller already keys, and re-deriving a key here would be a second identity for
|
|
21
|
+
* one value. It is not drawn and it is not on the markup: `FactList` owns the
|
|
22
|
+
* row and keys it by position, so a caller whose facts reorder between renders
|
|
23
|
+
* and who needs row identity composes `FactList` directly. That is the cost and
|
|
24
|
+
* it is a small one.
|
|
25
|
+
*/
|
|
26
|
+
id: string;
|
|
27
|
+
/**
|
|
28
|
+
* The term that names the fact.
|
|
29
|
+
*
|
|
30
|
+
* A short noun phrase, because a column of these is read by scanning its left
|
|
31
|
+
* edge and a term that wraps to two lines costs the whole column its alignment.
|
|
32
|
+
* A `string` rather than a node, for the same reason `Fact`'s own `label` is
|
|
33
|
+
* scanned rather than read.
|
|
34
|
+
*/
|
|
35
|
+
label: string;
|
|
36
|
+
/**
|
|
37
|
+
* The answer.
|
|
38
|
+
*
|
|
39
|
+
* A node, and the reason is that a profile's answers are not all the same kind
|
|
40
|
+
* of thing: a date is a `RelativeTime`, a place is a place, a count is a figure
|
|
41
|
+
* the caller has already formatted in their own locale, and a licence key is
|
|
42
|
+
* something this Block must not set in a mono face on the caller's behalf
|
|
43
|
+
* because it does not know what a key looks like in their product.
|
|
44
|
+
*/
|
|
45
|
+
value: ReactNode;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* The props a UserProfile01 takes.
|
|
49
|
+
*
|
|
50
|
+
* Every string is a prop and the Block ships none: no name, no role, no
|
|
51
|
+
* biography, no fact and not one letter of any of them. A profile is a claim about
|
|
52
|
+
* a person, and a Block that shipped a name would put Prism's staff, or a
|
|
53
|
+
* stranger's, into every consumer's product.
|
|
54
|
+
*/
|
|
55
|
+
export type UserProfile01Props = {
|
|
56
|
+
/**
|
|
57
|
+
* The person's own name, as they publish it.
|
|
58
|
+
*
|
|
59
|
+
* Required, and it is the section heading rather than a line inside the body,
|
|
60
|
+
* which is the decision this Block is shaped around. A reader who arrives at a
|
|
61
|
+
* profile is arriving for one person, so the name is the thing the section is
|
|
62
|
+
* about and it belongs in the outline at the level the surrounding document
|
|
63
|
+
* gives this Block. A profile whose name was a `span` inside a band would be a
|
|
64
|
+
* page a reader cannot navigate to by heading, and a page whose only content is
|
|
65
|
+
* one person is exactly the page a reader navigates to by heading.
|
|
66
|
+
*/
|
|
67
|
+
name: string;
|
|
68
|
+
/**
|
|
69
|
+
* What they do, in the words the caller uses.
|
|
70
|
+
*
|
|
71
|
+
* Drawn as the section's supporting line rather than as a fact, because a role
|
|
72
|
+
* is the answer to the question a reader arrives with and everything in `facts`
|
|
73
|
+
* is the answer to a question they did not know to ask. It is a `string` and not
|
|
74
|
+
* a node because a role is a short noun phrase in a product's own vocabulary and
|
|
75
|
+
* there is nothing in it to emphasise.
|
|
76
|
+
*/
|
|
77
|
+
role?: string;
|
|
78
|
+
/**
|
|
79
|
+
* A paragraph or two about the person, in the caller's own words.
|
|
80
|
+
*
|
|
81
|
+
* A node, and drawn at the reading measure, because a biography is prose and a
|
|
82
|
+
* line of prose at card width is a caption. Nothing here truncates it: a Block
|
|
83
|
+
* that cut a biography at three lines with an ellipsis would be deciding which
|
|
84
|
+
* part of a person's account of their own work matters, and it would do it by
|
|
85
|
+
* cutting mid-sentence, which is the one place a truncation reliably removes the
|
|
86
|
+
* qualification rather than the flattery. A caller who wants three lines writes
|
|
87
|
+
* three lines.
|
|
88
|
+
*/
|
|
89
|
+
bio?: ReactNode;
|
|
90
|
+
/**
|
|
91
|
+
* The portrait, with the name the initials come from.
|
|
92
|
+
*
|
|
93
|
+
* **A slot and never a drawn silhouette, and the reason is that a fallback which
|
|
94
|
+
* is a person-shaped glyph is a claim about a person the system knows nothing
|
|
95
|
+
* about.** A grey disc with a head and shoulders in it says there is a person
|
|
96
|
+
* here, which is a fact, and it says the same thing about every reader of every
|
|
97
|
+
* product that installs this Block, so a reader who has seen three of them has
|
|
98
|
+
* learned nothing about anybody. The fallback here is the person's own initials,
|
|
99
|
+
* which is derived from the caller's own data rather than chosen by this package,
|
|
100
|
+
* so a reader who cannot see the photograph still recognises the name beside it.
|
|
101
|
+
* Omit the whole field for a person the caller has no photograph of: this Block
|
|
102
|
+
* then draws no mark at all rather than a placeholder, and a profile with no
|
|
103
|
+
* portrait and a name is a complete profile.
|
|
104
|
+
*/
|
|
105
|
+
avatar?: {
|
|
106
|
+
/** The photograph. Omit it, or pass a URL that fails, for the initials. */
|
|
107
|
+
src?: string;
|
|
108
|
+
/** The person's name, which is the initials' source. */
|
|
109
|
+
name: string;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* The facts, in the order a reader should meet them.
|
|
113
|
+
*
|
|
114
|
+
* Order is the caller's because it is a claim about what matters most, and a list
|
|
115
|
+
* that sorted itself would be making that claim on the caller's behalf. Omit it
|
|
116
|
+
* for a person whose whole profile is a name and a role, which is a real and
|
|
117
|
+
* common case rather than a thin one.
|
|
118
|
+
*/
|
|
119
|
+
facts?: readonly UserProfile01Fact[];
|
|
120
|
+
/**
|
|
121
|
+
* The controls that belong to this person rather than to the page: follow,
|
|
122
|
+
* message, assign, remove.
|
|
123
|
+
*
|
|
124
|
+
* A slot and not a set of named controls, because which actions a person has is
|
|
125
|
+
* the caller's fact, and a Block that drew a message button and a kebab menu
|
|
126
|
+
* would be drawing one product's idea of what can be done to a colleague. Each
|
|
127
|
+
* control inside is the caller's own Component, so this is where a caller
|
|
128
|
+
* composes their own menu rather than asking the Block to grow one.
|
|
129
|
+
*/
|
|
130
|
+
actions?: ReactNode;
|
|
131
|
+
/**
|
|
132
|
+
* The caller's own sections, under a rule: activity, permissions, history.
|
|
133
|
+
*
|
|
134
|
+
* A slot and not a tab strip, and the reason is that tabs are a behaviour as well
|
|
135
|
+
* as a look. Which sections exist, which one is showing, and what happens when
|
|
136
|
+
* the reader changes it are three decisions about the caller's application, and a
|
|
137
|
+
* Block that drew the strip would have to own all three to make it work. So the
|
|
138
|
+
* space is here, a rule is drawn above it, and `Tabs` is the caller's to compose.
|
|
139
|
+
*/
|
|
140
|
+
tabs?: ReactNode;
|
|
141
|
+
/**
|
|
142
|
+
* Whether the portrait sits beside the name or above it.
|
|
143
|
+
*
|
|
144
|
+
* @defaultValue 'header'
|
|
145
|
+
*
|
|
146
|
+
* `header` is the wide arrangement and it is right wherever the profile is a band
|
|
147
|
+
* across a page. `sidebar` is the narrow one: portrait above, everything stacked
|
|
148
|
+
* in a single column at the reading measure, which is what a profile looks like
|
|
149
|
+
* in a rail or on a phone. It is a layout prop and not a `className` because
|
|
150
|
+
* swapping the arrangement is a decision a page makes repeatedly, and
|
|
151
|
+
* re-deriving it from utility classes at each call site is how a page ends up
|
|
152
|
+
* with two profiles on opposite sides and no reason why.
|
|
153
|
+
*/
|
|
154
|
+
layout?: 'header' | 'sidebar';
|
|
155
|
+
/**
|
|
156
|
+
* Heading level for the person's name. Defaults to `h2` because a Block is
|
|
157
|
+
* composed, not a page. See `HeadingLevel`.
|
|
158
|
+
*/
|
|
159
|
+
headingLevel?: HeadingLevel;
|
|
160
|
+
/**
|
|
161
|
+
* Layout only, exactly as on every Component and Block. Changing a Prism-owned
|
|
162
|
+
* visual property from here is prohibited.
|
|
163
|
+
*/
|
|
164
|
+
className?: string;
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* One person in full: a portrait where there is one, a name, a role, a biography,
|
|
168
|
+
* a set of facts, the caller's own controls, and room for the caller's own
|
|
169
|
+
* sections underneath.
|
|
170
|
+
*
|
|
171
|
+
* **This is a Block and not a Card, and not `MemberList01`, and the three facts
|
|
172
|
+
* that separate them are all about how many people are on the page and why the
|
|
173
|
+
* reader came.** A profile is one person in full and the reader arrived for them:
|
|
174
|
+
* they followed a link, they opened a record, they are looking at the one subject
|
|
175
|
+
* the page is about, and everything on it is about that person. A member list is
|
|
176
|
+
* many people and the reader is looking for one, which is the opposite reading
|
|
177
|
+
* order: the reader scans a column of names and stops at one, so a member list is
|
|
178
|
+
* optimised for scanning and a profile is optimised for reading. A card is a
|
|
179
|
+
* bounded group of related content, and a profile is not a group: it has one
|
|
180
|
+
* subject, and a subject in a frame reads as a set of facts about a thing rather
|
|
181
|
+
* than as the thing. The three are separately the right answers to three different
|
|
182
|
+
* pages, and a Block that blurred them would be a Block whose weight was wrong for
|
|
183
|
+
* whichever page used it.
|
|
184
|
+
*
|
|
185
|
+
* **The facts compose `FactList` rather than being drawn as a definition list
|
|
186
|
+
* here, and the reason is the empty case, quoted from the Component: "An empty
|
|
187
|
+
* list renders nothing rather than an empty frame, so a caller that has nothing to
|
|
188
|
+
* say does not get a bordered box with a title above it."** A profile is very
|
|
189
|
+
* often a person with three facts and also a person with none, and the second case
|
|
190
|
+
* is not a defect to be papered over with a placeholder row; it is a person whose
|
|
191
|
+
* whole profile is a name. `FactList` draws the real `<dl>` with the term before its
|
|
192
|
+
* answer, which is what a specification is and what a pair of columns is not, and
|
|
193
|
+
* it draws the hairlines and the alignment that a hand-rolled version gets subtly
|
|
194
|
+
* wrong. Writing a second definition list here would put a second answer to "how
|
|
195
|
+
* does a set of facts read" in one package, and the second answer is always the one
|
|
196
|
+
* that disagrees. The cost is stated rather than hidden: `FactList` keys its own
|
|
197
|
+
* rows by position, so a caller whose facts reorder between renders and who needs
|
|
198
|
+
* row identity composes the Component directly rather than passing them here.
|
|
199
|
+
*
|
|
200
|
+
* **The portrait is a slot and no mark is drawn in its place, because a fallback
|
|
201
|
+
* which is a person-shaped glyph is a claim about a person this system knows
|
|
202
|
+
* nothing about.** A silhouette says there is a person here, which is true, and it
|
|
203
|
+
* says it identically about every reader of every product that installs this
|
|
204
|
+
* Block, so a reader who has seen four of them has learned nothing about any of
|
|
205
|
+
* them. The fallback that ships is the person's own initials, derived from the
|
|
206
|
+
* caller's data by a rule this file repeats rather than imports, so a reader who
|
|
207
|
+
* cannot see the photograph still recognises the name printed beside it. Omit
|
|
208
|
+
* `avatar` entirely and nothing is drawn where the portrait would be, which is the
|
|
209
|
+
* honest state: a person the caller has no photograph of is still a person, and a
|
|
210
|
+
* grey disc is a claim that the absence is a gap.
|
|
211
|
+
*
|
|
212
|
+
* **The name is the section heading and not a line in the body, and that is the
|
|
213
|
+
* decision the rest of the Block follows from.** A page whose only subject is one
|
|
214
|
+
* person is a page a reader reaches by following a link and navigates away from by
|
|
215
|
+
* heading, so a name in a `span` is a name no reader can come back to. It also
|
|
216
|
+
* settles the arrangement: the name is at `headingLevel`, the role is the
|
|
217
|
+
* supporting line under it, and the facts are the answers to questions the reader
|
|
218
|
+
* did not arrive with, which is why they are a definition list and not more
|
|
219
|
+
* headings. The cost is that the section heading is the person's name, so a page
|
|
220
|
+
* with two profiles on it has two sections whose titles are people, and a
|
|
221
|
+
* consumer who wants a page titled by the product instead composes the profile
|
|
222
|
+
* inside their own `Section` rather than using this one.
|
|
223
|
+
*
|
|
224
|
+
* **`actions` and `tabs` are slots, and both are refused as anything else.** The
|
|
225
|
+
* controls that belong to a person rather than to the page are the caller's fact:
|
|
226
|
+
* follow, message, assign and remove are four different products' ideas, and a
|
|
227
|
+
* Block that drew one of them would be drawing a workflow. Tabs are worse, because
|
|
228
|
+
* a tab strip is a behaviour as much as a look: which sections exist, which one is
|
|
229
|
+
* showing, and what happens when the reader changes it are three decisions about
|
|
230
|
+
* the caller's application, and a Block that drew the strip would have to own all
|
|
231
|
+
* three for it to work. So the space is here, a rule is drawn above it, and
|
|
232
|
+
* `Tabs` is the caller's to compose. The cost is that this Block does not enforce
|
|
233
|
+
* a relationship between the two, and a caller who passes neither gets a profile
|
|
234
|
+
* with a facts list and nothing else, which is a valid page.
|
|
235
|
+
*
|
|
236
|
+
* **There is no motion in this Block, and the reason is worth stating because the
|
|
237
|
+
* absence is a decision rather than an oversight.** The first law of motion covers
|
|
238
|
+
* feedback, which is a response to something the reader did, and a profile has
|
|
239
|
+
* nothing the reader pressed: there is no control that opens, no panel that
|
|
240
|
+
* closes, and no row that changes state. The second law covers a cycle, which is a
|
|
241
|
+
* demonstration of a mechanism, and the test that decides which law a motion falls
|
|
242
|
+
* under is falsifiable: stop the animation, is the figure still true and still
|
|
243
|
+
* legible? There is no figure here at all, so the question does not arise, and a
|
|
244
|
+
* Block that answered it by animating the portrait in would be decoration wearing
|
|
245
|
+
* the costume of a demonstration, which is the thing the first law was written to
|
|
246
|
+
* exclude. The one place a transition could honestly go is the caller's own
|
|
247
|
+
* controls, and those are the caller's Components with their own motion already
|
|
248
|
+
* settled.
|
|
249
|
+
*
|
|
250
|
+
* It is a server Component: no hook, no state, no effect and no client code of its
|
|
251
|
+
* own. The portrait is `Avatar`, which is a client Component whose only client work
|
|
252
|
+
* is measuring whether an image has loaded, so a profile costs a consumer nothing
|
|
253
|
+
* in client JavaScript beyond that and a caller composing a client `actions` slot
|
|
254
|
+
* pays for the action rather than for the profile.
|
|
255
|
+
*/
|
|
256
|
+
export declare function UserProfile01({ name, role, bio, avatar, facts, actions, tabs, layout, headingLevel, className, }: UserProfile01Props): import("react").JSX.Element;
|
|
257
|
+
export default UserProfile01;
|
|
258
|
+
//# sourceMappingURL=user-profile-01.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-profile-01.d.ts","sourceRoot":"","sources":["../../../src/blocks/user-profile-01/user-profile-01.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAwBxF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;;;;;OASG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;;OAQG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;;;;;;OAUG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;;OAUG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;IACf;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE;QACP,2EAA2E;QAC3E,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,wDAAwD;QACxD,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IACpC;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAI,EACJ,MAAiB,EACjB,YAAmB,EACnB,SAAS,GACV,EAAE,kBAAkB,+BAyGpB;AAED,eAAe,aAAa,CAAA"}
|