@nanisoft/prism-ui 0.13.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +22 -7
- package/dist/.tsbuildinfo +1 -1
- package/dist/blocks/about-01/about.d.ts +296 -0
- package/dist/blocks/about-01/about.d.ts.map +1 -0
- package/dist/blocks/about-01/about.js +103 -0
- package/dist/blocks/about-01/index.d.ts +3 -0
- package/dist/blocks/about-01/index.d.ts.map +1 -0
- package/dist/blocks/about-01/index.js +1 -0
- package/dist/blocks/accept-invite-01/accept-invite.d.ts +324 -0
- package/dist/blocks/accept-invite-01/accept-invite.d.ts.map +1 -0
- package/dist/blocks/accept-invite-01/accept-invite.js +230 -0
- package/dist/blocks/accept-invite-01/index.d.ts +3 -0
- package/dist/blocks/accept-invite-01/index.d.ts.map +1 -0
- package/dist/blocks/accept-invite-01/index.js +1 -0
- package/dist/blocks/account-01/account-01.d.ts +393 -0
- package/dist/blocks/account-01/account-01.d.ts.map +1 -0
- package/dist/blocks/account-01/account-01.js +215 -0
- package/dist/blocks/account-01/index.d.ts +3 -0
- package/dist/blocks/account-01/index.d.ts.map +1 -0
- package/dist/blocks/account-01/index.js +1 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.d.ts +271 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.d.ts.map +1 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.js +185 -0
- package/dist/blocks/activity-feed-01/index.d.ts +3 -0
- package/dist/blocks/activity-feed-01/index.d.ts.map +1 -0
- package/dist/blocks/activity-feed-01/index.js +1 -0
- package/dist/blocks/address-book-01/address-book-01.d.ts +312 -0
- package/dist/blocks/address-book-01/address-book-01.d.ts.map +1 -0
- package/dist/blocks/address-book-01/address-book-01.js +233 -0
- package/dist/blocks/address-book-01/index.d.ts +3 -0
- package/dist/blocks/address-book-01/index.d.ts.map +1 -0
- package/dist/blocks/address-book-01/index.js +1 -0
- package/dist/blocks/audit-log-01/audit-log-01.d.ts +333 -0
- package/dist/blocks/audit-log-01/audit-log-01.d.ts.map +1 -0
- package/dist/blocks/audit-log-01/audit-log-01.js +211 -0
- package/dist/blocks/audit-log-01/index.d.ts +3 -0
- package/dist/blocks/audit-log-01/index.d.ts.map +1 -0
- package/dist/blocks/audit-log-01/index.js +1 -0
- package/dist/blocks/auth-form-01/auth-form.d.ts +40 -1
- package/dist/blocks/auth-form-01/auth-form.d.ts.map +1 -1
- package/dist/blocks/auth-form-01/auth-form.js +26 -3
- package/dist/blocks/awards-01/awards.d.ts +156 -0
- package/dist/blocks/awards-01/awards.d.ts.map +1 -0
- package/dist/blocks/awards-01/awards.js +102 -0
- package/dist/blocks/awards-01/index.d.ts +3 -0
- package/dist/blocks/awards-01/index.d.ts.map +1 -0
- package/dist/blocks/awards-01/index.js +1 -0
- package/dist/blocks/backdrop-01/backdrop.d.ts +268 -0
- package/dist/blocks/backdrop-01/backdrop.d.ts.map +1 -0
- package/dist/blocks/backdrop-01/backdrop.js +170 -0
- package/dist/blocks/backdrop-01/index.d.ts +3 -0
- package/dist/blocks/backdrop-01/index.d.ts.map +1 -0
- package/dist/blocks/backdrop-01/index.js +1 -0
- package/dist/blocks/bento-01/bento-01.d.ts +136 -0
- package/dist/blocks/bento-01/bento-01.d.ts.map +1 -0
- package/dist/blocks/bento-01/bento-01.js +97 -0
- package/dist/blocks/bento-01/index.d.ts +3 -0
- package/dist/blocks/bento-01/index.d.ts.map +1 -0
- package/dist/blocks/bento-01/index.js +1 -0
- package/dist/blocks/billing-source-01/billing-source-01.d.ts +379 -0
- package/dist/blocks/billing-source-01/billing-source-01.d.ts.map +1 -0
- package/dist/blocks/billing-source-01/billing-source-01.js +222 -0
- package/dist/blocks/billing-source-01/index.d.ts +3 -0
- package/dist/blocks/billing-source-01/index.d.ts.map +1 -0
- package/dist/blocks/billing-source-01/index.js +1 -0
- package/dist/blocks/bundle-01/bundle.d.ts +387 -0
- package/dist/blocks/bundle-01/bundle.d.ts.map +1 -0
- package/dist/blocks/bundle-01/bundle.js +153 -0
- package/dist/blocks/bundle-01/index.d.ts +3 -0
- package/dist/blocks/bundle-01/index.d.ts.map +1 -0
- package/dist/blocks/bundle-01/index.js +1 -0
- package/dist/blocks/calendar-01/calendar.d.ts +251 -0
- package/dist/blocks/calendar-01/calendar.d.ts.map +1 -0
- package/dist/blocks/calendar-01/calendar.js +191 -0
- package/dist/blocks/calendar-01/index.d.ts +3 -0
- package/dist/blocks/calendar-01/index.d.ts.map +1 -0
- package/dist/blocks/calendar-01/index.js +1 -0
- package/dist/blocks/capacity-01/capacity.d.ts +363 -0
- package/dist/blocks/capacity-01/capacity.d.ts.map +1 -0
- package/dist/blocks/capacity-01/capacity.js +208 -0
- package/dist/blocks/capacity-01/index.d.ts +3 -0
- package/dist/blocks/capacity-01/index.d.ts.map +1 -0
- package/dist/blocks/capacity-01/index.js +1 -0
- package/dist/blocks/careers-01/careers.d.ts +186 -0
- package/dist/blocks/careers-01/careers.d.ts.map +1 -0
- package/dist/blocks/careers-01/careers.js +83 -0
- package/dist/blocks/careers-01/index.d.ts +3 -0
- package/dist/blocks/careers-01/index.d.ts.map +1 -0
- package/dist/blocks/careers-01/index.js +1 -0
- package/dist/blocks/case-studies-01/case-studies.d.ts +192 -0
- package/dist/blocks/case-studies-01/case-studies.d.ts.map +1 -0
- package/dist/blocks/case-studies-01/case-studies.js +97 -0
- package/dist/blocks/case-studies-01/index.d.ts +3 -0
- package/dist/blocks/case-studies-01/index.d.ts.map +1 -0
- package/dist/blocks/case-studies-01/index.js +1 -0
- package/dist/blocks/case-study-01/case-study.d.ts +214 -0
- package/dist/blocks/case-study-01/case-study.d.ts.map +1 -0
- package/dist/blocks/case-study-01/case-study.js +79 -0
- package/dist/blocks/case-study-01/index.d.ts +3 -0
- package/dist/blocks/case-study-01/index.d.ts.map +1 -0
- package/dist/blocks/case-study-01/index.js +1 -0
- package/dist/blocks/changelog-01/changelog.d.ts +200 -0
- package/dist/blocks/changelog-01/changelog.d.ts.map +1 -0
- package/dist/blocks/changelog-01/changelog.js +155 -0
- package/dist/blocks/changelog-01/index.d.ts +3 -0
- package/dist/blocks/changelog-01/index.d.ts.map +1 -0
- package/dist/blocks/changelog-01/index.js +1 -0
- package/dist/blocks/chart-card-01/chart-card-01.d.ts +149 -0
- package/dist/blocks/chart-card-01/chart-card-01.d.ts.map +1 -0
- package/dist/blocks/chart-card-01/chart-card-01.js +81 -0
- package/dist/blocks/chart-card-01/index.d.ts +3 -0
- package/dist/blocks/chart-card-01/index.d.ts.map +1 -0
- package/dist/blocks/chart-card-01/index.js +1 -0
- package/dist/blocks/chart-group-01/chart-group-01.d.ts +138 -0
- package/dist/blocks/chart-group-01/chart-group-01.d.ts.map +1 -0
- package/dist/blocks/chart-group-01/chart-group-01.js +74 -0
- package/dist/blocks/chart-group-01/index.d.ts +3 -0
- package/dist/blocks/chart-group-01/index.d.ts.map +1 -0
- package/dist/blocks/chart-group-01/index.js +1 -0
- package/dist/blocks/code-sample-01/code-sample.d.ts +193 -0
- package/dist/blocks/code-sample-01/code-sample.d.ts.map +1 -0
- package/dist/blocks/code-sample-01/code-sample.js +104 -0
- package/dist/blocks/code-sample-01/index.d.ts +3 -0
- package/dist/blocks/code-sample-01/index.d.ts.map +1 -0
- package/dist/blocks/code-sample-01/index.js +1 -0
- package/dist/blocks/community-01/community.d.ts +183 -0
- package/dist/blocks/community-01/community.d.ts.map +1 -0
- package/dist/blocks/community-01/community.js +102 -0
- package/dist/blocks/community-01/index.d.ts +3 -0
- package/dist/blocks/community-01/index.d.ts.map +1 -0
- package/dist/blocks/community-01/index.js +1 -0
- package/dist/blocks/compare-01/compare.d.ts +184 -0
- package/dist/blocks/compare-01/compare.d.ts.map +1 -0
- package/dist/blocks/compare-01/compare.js +106 -0
- package/dist/blocks/compare-01/index.d.ts +3 -0
- package/dist/blocks/compare-01/index.d.ts.map +1 -0
- package/dist/blocks/compare-01/index.js +1 -0
- package/dist/blocks/compliance-01/compliance.d.ts +249 -0
- package/dist/blocks/compliance-01/compliance.d.ts.map +1 -0
- package/dist/blocks/compliance-01/compliance.js +130 -0
- package/dist/blocks/compliance-01/index.d.ts +3 -0
- package/dist/blocks/compliance-01/index.d.ts.map +1 -0
- package/dist/blocks/compliance-01/index.js +1 -0
- package/dist/blocks/consent-01/consent.d.ts +211 -0
- package/dist/blocks/consent-01/consent.d.ts.map +1 -0
- package/dist/blocks/consent-01/consent.js +101 -0
- package/dist/blocks/consent-01/index.d.ts +3 -0
- package/dist/blocks/consent-01/index.d.ts.map +1 -0
- package/dist/blocks/consent-01/index.js +1 -0
- package/dist/blocks/contact-01/contact.d.ts +319 -0
- package/dist/blocks/contact-01/contact.d.ts.map +1 -0
- package/dist/blocks/contact-01/contact.js +211 -0
- package/dist/blocks/contact-01/index.d.ts +3 -0
- package/dist/blocks/contact-01/index.d.ts.map +1 -0
- package/dist/blocks/contact-01/index.js +1 -0
- package/dist/blocks/content-grid-01/content-grid.d.ts +262 -0
- package/dist/blocks/content-grid-01/content-grid.d.ts.map +1 -0
- package/dist/blocks/content-grid-01/content-grid.js +155 -0
- package/dist/blocks/content-grid-01/index.d.ts +3 -0
- package/dist/blocks/content-grid-01/index.d.ts.map +1 -0
- package/dist/blocks/content-grid-01/index.js +1 -0
- package/dist/blocks/cta-01/cta.d.ts +7 -1
- package/dist/blocks/cta-01/cta.d.ts.map +1 -1
- package/dist/blocks/cta-01/cta.js +11 -2
- package/dist/blocks/dashboard-01/dashboard-01.d.ts +247 -0
- package/dist/blocks/dashboard-01/dashboard-01.d.ts.map +1 -0
- package/dist/blocks/dashboard-01/dashboard-01.js +141 -0
- package/dist/blocks/dashboard-01/index.d.ts +3 -0
- package/dist/blocks/dashboard-01/index.d.ts.map +1 -0
- package/dist/blocks/dashboard-01/index.js +1 -0
- package/dist/blocks/data-table-01/data-table.d.ts +22 -1
- package/dist/blocks/data-table-01/data-table.d.ts.map +1 -1
- package/dist/blocks/data-table-01/data-table.js +9 -5
- package/dist/blocks/delivery-01/delivery.d.ts +343 -0
- package/dist/blocks/delivery-01/delivery.d.ts.map +1 -0
- package/dist/blocks/delivery-01/delivery.js +212 -0
- package/dist/blocks/delivery-01/index.d.ts +3 -0
- package/dist/blocks/delivery-01/index.d.ts.map +1 -0
- package/dist/blocks/delivery-01/index.js +1 -0
- package/dist/blocks/directory-01/directory-01.d.ts +316 -0
- package/dist/blocks/directory-01/directory-01.d.ts.map +1 -0
- package/dist/blocks/directory-01/directory-01.js +252 -0
- package/dist/blocks/directory-01/index.d.ts +3 -0
- package/dist/blocks/directory-01/index.d.ts.map +1 -0
- package/dist/blocks/directory-01/index.js +1 -0
- package/dist/blocks/download-01/download.d.ts +261 -0
- package/dist/blocks/download-01/download.d.ts.map +1 -0
- package/dist/blocks/download-01/download.js +115 -0
- package/dist/blocks/download-01/index.d.ts +3 -0
- package/dist/blocks/download-01/index.d.ts.map +1 -0
- package/dist/blocks/download-01/index.js +1 -0
- package/dist/blocks/faq-01/faq.d.ts +128 -0
- package/dist/blocks/faq-01/faq.d.ts.map +1 -0
- package/dist/blocks/faq-01/faq.js +53 -0
- package/dist/blocks/faq-01/index.d.ts +3 -0
- package/dist/blocks/faq-01/index.d.ts.map +1 -0
- package/dist/blocks/faq-01/index.js +1 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.d.ts +158 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.d.ts.map +1 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.js +81 -0
- package/dist/blocks/feature-rows-01/index.d.ts +3 -0
- package/dist/blocks/feature-rows-01/index.d.ts.map +1 -0
- package/dist/blocks/feature-rows-01/index.js +1 -0
- package/dist/blocks/feedback-01/feedback.d.ts +235 -0
- package/dist/blocks/feedback-01/feedback.d.ts.map +1 -0
- package/dist/blocks/feedback-01/feedback.js +113 -0
- package/dist/blocks/feedback-01/index.d.ts +3 -0
- package/dist/blocks/feedback-01/index.d.ts.map +1 -0
- package/dist/blocks/feedback-01/index.js +1 -0
- package/dist/blocks/field-map-01/field-map.d.ts +247 -0
- package/dist/blocks/field-map-01/field-map.d.ts.map +1 -0
- package/dist/blocks/field-map-01/field-map.js +183 -0
- package/dist/blocks/field-map-01/index.d.ts +3 -0
- package/dist/blocks/field-map-01/index.d.ts.map +1 -0
- package/dist/blocks/field-map-01/index.js +1 -0
- package/dist/blocks/forgot-password-01/forgot-password.d.ts +288 -0
- package/dist/blocks/forgot-password-01/forgot-password.d.ts.map +1 -0
- package/dist/blocks/forgot-password-01/forgot-password.js +190 -0
- package/dist/blocks/forgot-password-01/index.d.ts +3 -0
- package/dist/blocks/forgot-password-01/index.d.ts.map +1 -0
- package/dist/blocks/forgot-password-01/index.js +1 -0
- package/dist/blocks/gallery-01/gallery.d.ts +208 -0
- package/dist/blocks/gallery-01/gallery.d.ts.map +1 -0
- package/dist/blocks/gallery-01/gallery.js +174 -0
- package/dist/blocks/gallery-01/index.d.ts +3 -0
- package/dist/blocks/gallery-01/index.d.ts.map +1 -0
- package/dist/blocks/gallery-01/index.js +1 -0
- package/dist/blocks/gantt-01/gantt.d.ts +290 -0
- package/dist/blocks/gantt-01/gantt.d.ts.map +1 -0
- package/dist/blocks/gantt-01/gantt.js +224 -0
- package/dist/blocks/gantt-01/index.d.ts +3 -0
- package/dist/blocks/gantt-01/index.d.ts.map +1 -0
- package/dist/blocks/gantt-01/index.js +1 -0
- package/dist/blocks/handoff-01/handoff-01.d.ts +326 -0
- package/dist/blocks/handoff-01/handoff-01.d.ts.map +1 -0
- package/dist/blocks/handoff-01/handoff-01.js +180 -0
- package/dist/blocks/handoff-01/index.d.ts +3 -0
- package/dist/blocks/handoff-01/index.d.ts.map +1 -0
- package/dist/blocks/handoff-01/index.js +1 -0
- package/dist/blocks/help-01/help.d.ts +254 -0
- package/dist/blocks/help-01/help.d.ts.map +1 -0
- package/dist/blocks/help-01/help.js +188 -0
- package/dist/blocks/help-01/index.d.ts +3 -0
- package/dist/blocks/help-01/index.d.ts.map +1 -0
- package/dist/blocks/help-01/index.js +1 -0
- package/dist/blocks/hero-01/hero.d.ts +105 -34
- package/dist/blocks/hero-01/hero.d.ts.map +1 -1
- package/dist/blocks/hero-01/hero.js +23 -15
- package/dist/blocks/hero-01/index.d.ts +1 -1
- package/dist/blocks/hero-01/index.d.ts.map +1 -1
- package/dist/blocks/hero-02/hero-02.d.ts +244 -0
- package/dist/blocks/hero-02/hero-02.d.ts.map +1 -0
- package/dist/blocks/hero-02/hero-02.js +87 -0
- package/dist/blocks/hero-02/index.d.ts +3 -0
- package/dist/blocks/hero-02/index.d.ts.map +1 -0
- package/dist/blocks/hero-02/index.js +1 -0
- package/dist/blocks/hero-03/hero-03.d.ts +247 -0
- package/dist/blocks/hero-03/hero-03.d.ts.map +1 -0
- package/dist/blocks/hero-03/hero-03.js +93 -0
- package/dist/blocks/hero-03/index.d.ts +3 -0
- package/dist/blocks/hero-03/index.d.ts.map +1 -0
- package/dist/blocks/hero-03/index.js +1 -0
- package/dist/blocks/history-01/history-01.d.ts +414 -0
- package/dist/blocks/history-01/history-01.d.ts.map +1 -0
- package/dist/blocks/history-01/history-01.js +285 -0
- package/dist/blocks/history-01/index.d.ts +3 -0
- package/dist/blocks/history-01/index.d.ts.map +1 -0
- package/dist/blocks/history-01/index.js +1 -0
- package/dist/blocks/inbox-01/inbox.d.ts +349 -0
- package/dist/blocks/inbox-01/inbox.d.ts.map +1 -0
- package/dist/blocks/inbox-01/inbox.js +244 -0
- package/dist/blocks/inbox-01/index.d.ts +3 -0
- package/dist/blocks/inbox-01/index.d.ts.map +1 -0
- package/dist/blocks/inbox-01/index.js +1 -0
- package/dist/blocks/index.d.ts +203 -0
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +118 -0
- package/dist/blocks/industries-01/index.d.ts +3 -0
- package/dist/blocks/industries-01/index.d.ts.map +1 -0
- package/dist/blocks/industries-01/index.js +1 -0
- package/dist/blocks/industries-01/industries.d.ts +164 -0
- package/dist/blocks/industries-01/industries.d.ts.map +1 -0
- package/dist/blocks/industries-01/industries.js +96 -0
- package/dist/blocks/intake-01/index.d.ts +3 -0
- package/dist/blocks/intake-01/index.d.ts.map +1 -0
- package/dist/blocks/intake-01/index.js +1 -0
- package/dist/blocks/intake-01/intake-01.d.ts +305 -0
- package/dist/blocks/intake-01/intake-01.d.ts.map +1 -0
- package/dist/blocks/intake-01/intake-01.js +178 -0
- package/dist/blocks/integration-01/index.d.ts +3 -0
- package/dist/blocks/integration-01/index.d.ts.map +1 -0
- package/dist/blocks/integration-01/index.js +1 -0
- package/dist/blocks/integration-01/integration.d.ts +226 -0
- package/dist/blocks/integration-01/integration.d.ts.map +1 -0
- package/dist/blocks/integration-01/integration.js +170 -0
- package/dist/blocks/invite-user-01/index.d.ts +3 -0
- package/dist/blocks/invite-user-01/index.d.ts.map +1 -0
- package/dist/blocks/invite-user-01/index.js +1 -0
- package/dist/blocks/invite-user-01/invite-user.d.ts +317 -0
- package/dist/blocks/invite-user-01/invite-user.d.ts.map +1 -0
- package/dist/blocks/invite-user-01/invite-user.js +228 -0
- package/dist/blocks/issue-detail-01/index.d.ts +3 -0
- package/dist/blocks/issue-detail-01/index.d.ts.map +1 -0
- package/dist/blocks/issue-detail-01/index.js +1 -0
- package/dist/blocks/issue-detail-01/issue-detail.d.ts +355 -0
- package/dist/blocks/issue-detail-01/issue-detail.d.ts.map +1 -0
- package/dist/blocks/issue-detail-01/issue-detail.js +187 -0
- package/dist/blocks/issue-list-01/index.d.ts +3 -0
- package/dist/blocks/issue-list-01/index.d.ts.map +1 -0
- package/dist/blocks/issue-list-01/index.js +1 -0
- package/dist/blocks/issue-list-01/issue-list.d.ts +298 -0
- package/dist/blocks/issue-list-01/issue-list.d.ts.map +1 -0
- package/dist/blocks/issue-list-01/issue-list.js +284 -0
- package/dist/blocks/kanban-01/index.d.ts +3 -0
- package/dist/blocks/kanban-01/index.d.ts.map +1 -0
- package/dist/blocks/kanban-01/index.js +1 -0
- package/dist/blocks/kanban-01/kanban.d.ts +278 -0
- package/dist/blocks/kanban-01/kanban.d.ts.map +1 -0
- package/dist/blocks/kanban-01/kanban.js +144 -0
- package/dist/blocks/leaderboard-01/index.d.ts +3 -0
- package/dist/blocks/leaderboard-01/index.d.ts.map +1 -0
- package/dist/blocks/leaderboard-01/index.js +1 -0
- package/dist/blocks/leaderboard-01/leaderboard.d.ts +250 -0
- package/dist/blocks/leaderboard-01/leaderboard.d.ts.map +1 -0
- package/dist/blocks/leaderboard-01/leaderboard.js +121 -0
- package/dist/blocks/login-01/index.d.ts +3 -0
- package/dist/blocks/login-01/index.d.ts.map +1 -0
- package/dist/blocks/login-01/index.js +1 -0
- package/dist/blocks/login-01/login-01.d.ts +356 -0
- package/dist/blocks/login-01/login-01.d.ts.map +1 -0
- package/dist/blocks/login-01/login-01.js +249 -0
- package/dist/blocks/logo-cloud-01/index.d.ts +3 -0
- package/dist/blocks/logo-cloud-01/index.d.ts.map +1 -0
- package/dist/blocks/logo-cloud-01/index.js +1 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.d.ts +181 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.d.ts.map +1 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.js +118 -0
- package/dist/blocks/magic-link-01/index.d.ts +3 -0
- package/dist/blocks/magic-link-01/index.d.ts.map +1 -0
- package/dist/blocks/magic-link-01/index.js +1 -0
- package/dist/blocks/magic-link-01/magic-link-01.d.ts +367 -0
- package/dist/blocks/magic-link-01/magic-link-01.d.ts.map +1 -0
- package/dist/blocks/magic-link-01/magic-link-01.js +233 -0
- package/dist/blocks/member-list-01/index.d.ts +3 -0
- package/dist/blocks/member-list-01/index.d.ts.map +1 -0
- package/dist/blocks/member-list-01/index.js +1 -0
- package/dist/blocks/member-list-01/member-list.d.ts +192 -0
- package/dist/blocks/member-list-01/member-list.d.ts.map +1 -0
- package/dist/blocks/member-list-01/member-list.js +142 -0
- package/dist/blocks/milestone-timeline-01/index.d.ts +3 -0
- package/dist/blocks/milestone-timeline-01/index.d.ts.map +1 -0
- package/dist/blocks/milestone-timeline-01/index.js +1 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.d.ts +217 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.d.ts.map +1 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.js +173 -0
- package/dist/blocks/newsletter-01/index.d.ts +3 -0
- package/dist/blocks/newsletter-01/index.d.ts.map +1 -0
- package/dist/blocks/newsletter-01/index.js +1 -0
- package/dist/blocks/newsletter-01/newsletter.d.ts +216 -0
- package/dist/blocks/newsletter-01/newsletter.d.ts.map +1 -0
- package/dist/blocks/newsletter-01/newsletter.js +102 -0
- package/dist/blocks/notification-center-01/index.d.ts +3 -0
- package/dist/blocks/notification-center-01/index.d.ts.map +1 -0
- package/dist/blocks/notification-center-01/index.js +1 -0
- package/dist/blocks/notification-center-01/notification-center-01.d.ts +341 -0
- package/dist/blocks/notification-center-01/notification-center-01.d.ts.map +1 -0
- package/dist/blocks/notification-center-01/notification-center-01.js +203 -0
- package/dist/blocks/offer-01/index.d.ts +3 -0
- package/dist/blocks/offer-01/index.d.ts.map +1 -0
- package/dist/blocks/offer-01/index.js +1 -0
- package/dist/blocks/offer-01/offer.d.ts +139 -0
- package/dist/blocks/offer-01/offer.d.ts.map +1 -0
- package/dist/blocks/offer-01/offer.js +81 -0
- package/dist/blocks/offering-01/index.d.ts +3 -0
- package/dist/blocks/offering-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-01/index.js +1 -0
- package/dist/blocks/offering-01/offering.d.ts +245 -0
- package/dist/blocks/offering-01/offering.d.ts.map +1 -0
- package/dist/blocks/offering-01/offering.js +144 -0
- package/dist/blocks/offering-categories-01/index.d.ts +3 -0
- package/dist/blocks/offering-categories-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-categories-01/index.js +1 -0
- package/dist/blocks/offering-categories-01/offering-categories.d.ts +248 -0
- package/dist/blocks/offering-categories-01/offering-categories.d.ts.map +1 -0
- package/dist/blocks/offering-categories-01/offering-categories.js +153 -0
- package/dist/blocks/offering-list-01/index.d.ts +3 -0
- package/dist/blocks/offering-list-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-list-01/index.js +1 -0
- package/dist/blocks/offering-list-01/offering-list.d.ts +362 -0
- package/dist/blocks/offering-list-01/offering-list.d.ts.map +1 -0
- package/dist/blocks/offering-list-01/offering-list.js +366 -0
- package/dist/blocks/onboarding-01/index.d.ts +3 -0
- package/dist/blocks/onboarding-01/index.d.ts.map +1 -0
- package/dist/blocks/onboarding-01/index.js +1 -0
- package/dist/blocks/onboarding-01/onboarding.d.ts +199 -0
- package/dist/blocks/onboarding-01/onboarding.d.ts.map +1 -0
- package/dist/blocks/onboarding-01/onboarding.js +182 -0
- package/dist/blocks/ops-checklist-01/index.d.ts +3 -0
- package/dist/blocks/ops-checklist-01/index.d.ts.map +1 -0
- package/dist/blocks/ops-checklist-01/index.js +1 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.d.ts +308 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.d.ts.map +1 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.js +165 -0
- package/dist/blocks/page-header-01/index.d.ts +1 -1
- package/dist/blocks/page-header-01/index.d.ts.map +1 -1
- package/dist/blocks/page-header-01/page-header.d.ts +131 -11
- package/dist/blocks/page-header-01/page-header.d.ts.map +1 -1
- package/dist/blocks/page-header-01/page-header.js +33 -9
- package/dist/blocks/passkey-01/index.d.ts +3 -0
- package/dist/blocks/passkey-01/index.d.ts.map +1 -0
- package/dist/blocks/passkey-01/index.js +1 -0
- package/dist/blocks/passkey-01/passkey-01.d.ts +334 -0
- package/dist/blocks/passkey-01/passkey-01.d.ts.map +1 -0
- package/dist/blocks/passkey-01/passkey-01.js +192 -0
- package/dist/blocks/permission-matrix-01/index.d.ts +3 -0
- package/dist/blocks/permission-matrix-01/index.d.ts.map +1 -0
- package/dist/blocks/permission-matrix-01/index.js +1 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.d.ts +282 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.d.ts.map +1 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.js +173 -0
- package/dist/blocks/pricing-01/index.d.ts +1 -0
- package/dist/blocks/pricing-01/index.d.ts.map +1 -1
- package/dist/blocks/pricing-01/pricing.d.ts +118 -1
- package/dist/blocks/pricing-01/pricing.d.ts.map +1 -1
- package/dist/blocks/pricing-01/pricing.js +9 -2
- package/dist/blocks/pricing-compare-01/index.d.ts +3 -0
- package/dist/blocks/pricing-compare-01/index.d.ts.map +1 -0
- package/dist/blocks/pricing-compare-01/index.js +1 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.d.ts +277 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.d.ts.map +1 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.js +126 -0
- package/dist/blocks/project-01/index.d.ts +3 -0
- package/dist/blocks/project-01/index.d.ts.map +1 -0
- package/dist/blocks/project-01/index.js +1 -0
- package/dist/blocks/project-01/project.d.ts +323 -0
- package/dist/blocks/project-01/project.d.ts.map +1 -0
- package/dist/blocks/project-01/project.js +247 -0
- package/dist/blocks/project-dashboard-01/index.d.ts +3 -0
- package/dist/blocks/project-dashboard-01/index.d.ts.map +1 -0
- package/dist/blocks/project-dashboard-01/index.js +1 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.d.ts +200 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.d.ts.map +1 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.js +124 -0
- package/dist/blocks/project-list-01/index.d.ts +3 -0
- package/dist/blocks/project-list-01/index.d.ts.map +1 -0
- package/dist/blocks/project-list-01/index.js +1 -0
- package/dist/blocks/project-list-01/project-list.d.ts +301 -0
- package/dist/blocks/project-list-01/project-list.d.ts.map +1 -0
- package/dist/blocks/project-list-01/project-list.js +305 -0
- package/dist/blocks/provisioning-01/index.d.ts +3 -0
- package/dist/blocks/provisioning-01/index.d.ts.map +1 -0
- package/dist/blocks/provisioning-01/index.js +1 -0
- package/dist/blocks/provisioning-01/provisioning.d.ts +357 -0
- package/dist/blocks/provisioning-01/provisioning.d.ts.map +1 -0
- package/dist/blocks/provisioning-01/provisioning.js +230 -0
- package/dist/blocks/quick-view-01/index.d.ts +3 -0
- package/dist/blocks/quick-view-01/index.d.ts.map +1 -0
- package/dist/blocks/quick-view-01/index.js +1 -0
- package/dist/blocks/quick-view-01/quick-view.d.ts +215 -0
- package/dist/blocks/quick-view-01/quick-view.d.ts.map +1 -0
- package/dist/blocks/quick-view-01/quick-view.js +136 -0
- package/dist/blocks/rate-card-01/index.d.ts +3 -0
- package/dist/blocks/rate-card-01/index.d.ts.map +1 -0
- package/dist/blocks/rate-card-01/index.js +1 -0
- package/dist/blocks/rate-card-01/rate-card.d.ts +184 -0
- package/dist/blocks/rate-card-01/rate-card.d.ts.map +1 -0
- package/dist/blocks/rate-card-01/rate-card.js +79 -0
- package/dist/blocks/reset-password-01/index.d.ts +3 -0
- package/dist/blocks/reset-password-01/index.d.ts.map +1 -0
- package/dist/blocks/reset-password-01/index.js +1 -0
- package/dist/blocks/reset-password-01/reset-password.d.ts +276 -0
- package/dist/blocks/reset-password-01/reset-password.d.ts.map +1 -0
- package/dist/blocks/reset-password-01/reset-password.js +175 -0
- package/dist/blocks/resource-list-01/index.d.ts +3 -0
- package/dist/blocks/resource-list-01/index.d.ts.map +1 -0
- package/dist/blocks/resource-list-01/index.js +1 -0
- package/dist/blocks/resource-list-01/resource-list.d.ts +237 -0
- package/dist/blocks/resource-list-01/resource-list.d.ts.map +1 -0
- package/dist/blocks/resource-list-01/resource-list.js +154 -0
- package/dist/blocks/retention-01/index.d.ts +3 -0
- package/dist/blocks/retention-01/index.d.ts.map +1 -0
- package/dist/blocks/retention-01/index.js +1 -0
- package/dist/blocks/retention-01/retention.d.ts +255 -0
- package/dist/blocks/retention-01/retention.d.ts.map +1 -0
- package/dist/blocks/retention-01/retention.js +145 -0
- package/dist/blocks/run-console-01/run-console.d.ts +14 -1
- package/dist/blocks/run-console-01/run-console.d.ts.map +1 -1
- package/dist/blocks/run-console-01/run-console.js +4 -2
- package/dist/blocks/services-01/index.d.ts +3 -0
- package/dist/blocks/services-01/index.d.ts.map +1 -0
- package/dist/blocks/services-01/index.js +1 -0
- package/dist/blocks/services-01/services.d.ts +159 -0
- package/dist/blocks/services-01/services.d.ts.map +1 -0
- package/dist/blocks/services-01/services.js +81 -0
- package/dist/blocks/settings-integrations-01/index.d.ts +3 -0
- package/dist/blocks/settings-integrations-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-integrations-01/index.js +1 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.d.ts +246 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.d.ts.map +1 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.js +213 -0
- package/dist/blocks/settings-members-01/index.d.ts +3 -0
- package/dist/blocks/settings-members-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-members-01/index.js +1 -0
- package/dist/blocks/settings-members-01/settings-members.d.ts +396 -0
- package/dist/blocks/settings-members-01/settings-members.d.ts.map +1 -0
- package/dist/blocks/settings-members-01/settings-members.js +255 -0
- package/dist/blocks/settings-notifications-01/index.d.ts +3 -0
- package/dist/blocks/settings-notifications-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-notifications-01/index.js +1 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.d.ts +270 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.d.ts.map +1 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.js +202 -0
- package/dist/blocks/settings-security-01/index.d.ts +3 -0
- package/dist/blocks/settings-security-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-security-01/index.js +1 -0
- package/dist/blocks/settings-security-01/settings-security.d.ts +439 -0
- package/dist/blocks/settings-security-01/settings-security.d.ts.map +1 -0
- package/dist/blocks/settings-security-01/settings-security.js +244 -0
- package/dist/blocks/shortlist-01/index.d.ts +3 -0
- package/dist/blocks/shortlist-01/index.d.ts.map +1 -0
- package/dist/blocks/shortlist-01/index.js +1 -0
- package/dist/blocks/shortlist-01/shortlist-01.d.ts +337 -0
- package/dist/blocks/shortlist-01/shortlist-01.d.ts.map +1 -0
- package/dist/blocks/shortlist-01/shortlist-01.js +191 -0
- package/dist/blocks/showcase-01/index.d.ts +3 -0
- package/dist/blocks/showcase-01/index.d.ts.map +1 -0
- package/dist/blocks/showcase-01/index.js +1 -0
- package/dist/blocks/showcase-01/showcase-01.d.ts +238 -0
- package/dist/blocks/showcase-01/showcase-01.d.ts.map +1 -0
- package/dist/blocks/showcase-01/showcase-01.js +84 -0
- package/dist/blocks/signup-01/index.d.ts +3 -0
- package/dist/blocks/signup-01/index.d.ts.map +1 -0
- package/dist/blocks/signup-01/index.js +1 -0
- package/dist/blocks/signup-01/signup-01.d.ts +405 -0
- package/dist/blocks/signup-01/signup-01.d.ts.map +1 -0
- package/dist/blocks/signup-01/signup-01.js +209 -0
- package/dist/blocks/site-footer/site-footer.d.ts +34 -1
- package/dist/blocks/site-footer/site-footer.d.ts.map +1 -1
- package/dist/blocks/site-footer/site-footer.js +24 -2
- package/dist/blocks/site-header/site-header.js +1 -1
- package/dist/blocks/site-navbar/site-navbar.d.ts +37 -3
- package/dist/blocks/site-navbar/site-navbar.d.ts.map +1 -1
- package/dist/blocks/site-navbar/site-navbar.js +33 -4
- package/dist/blocks/spec-table-01/index.d.ts +3 -0
- package/dist/blocks/spec-table-01/index.d.ts.map +1 -0
- package/dist/blocks/spec-table-01/index.js +1 -0
- package/dist/blocks/spec-table-01/spec-table.d.ts +293 -0
- package/dist/blocks/spec-table-01/spec-table.d.ts.map +1 -0
- package/dist/blocks/spec-table-01/spec-table.js +217 -0
- package/dist/blocks/stack-grid-01/stack-grid.d.ts +13 -0
- package/dist/blocks/stack-grid-01/stack-grid.d.ts.map +1 -1
- package/dist/blocks/stack-grid-01/stack-grid.js +14 -1
- package/dist/blocks/story-01/index.d.ts +3 -0
- package/dist/blocks/story-01/index.d.ts.map +1 -0
- package/dist/blocks/story-01/index.js +1 -0
- package/dist/blocks/story-01/story.d.ts +153 -0
- package/dist/blocks/story-01/story.d.ts.map +1 -0
- package/dist/blocks/story-01/story.js +103 -0
- package/dist/blocks/summary-01/index.d.ts +3 -0
- package/dist/blocks/summary-01/index.d.ts.map +1 -0
- package/dist/blocks/summary-01/index.js +1 -0
- package/dist/blocks/summary-01/summary.d.ts +300 -0
- package/dist/blocks/summary-01/summary.d.ts.map +1 -0
- package/dist/blocks/summary-01/summary.js +174 -0
- package/dist/blocks/team-01/index.d.ts +3 -0
- package/dist/blocks/team-01/index.d.ts.map +1 -0
- package/dist/blocks/team-01/index.js +1 -0
- package/dist/blocks/team-01/team.d.ts +176 -0
- package/dist/blocks/team-01/team.d.ts.map +1 -0
- package/dist/blocks/team-01/team.js +117 -0
- package/dist/blocks/testimonial-01/index.d.ts +3 -0
- package/dist/blocks/testimonial-01/index.d.ts.map +1 -0
- package/dist/blocks/testimonial-01/index.js +1 -0
- package/dist/blocks/testimonial-01/testimonial.d.ts +173 -0
- package/dist/blocks/testimonial-01/testimonial.d.ts.map +1 -0
- package/dist/blocks/testimonial-01/testimonial.js +87 -0
- package/dist/blocks/todo-01/index.d.ts +3 -0
- package/dist/blocks/todo-01/index.d.ts.map +1 -0
- package/dist/blocks/todo-01/index.js +1 -0
- package/dist/blocks/todo-01/todo.d.ts +286 -0
- package/dist/blocks/todo-01/todo.d.ts.map +1 -0
- package/dist/blocks/todo-01/todo.js +149 -0
- package/dist/blocks/trend-01/index.d.ts +3 -0
- package/dist/blocks/trend-01/index.d.ts.map +1 -0
- package/dist/blocks/trend-01/index.js +1 -0
- package/dist/blocks/trend-01/trend.d.ts +184 -0
- package/dist/blocks/trend-01/trend.d.ts.map +1 -0
- package/dist/blocks/trend-01/trend.js +99 -0
- package/dist/blocks/trust-strip-01/index.d.ts +3 -0
- package/dist/blocks/trust-strip-01/index.d.ts.map +1 -0
- package/dist/blocks/trust-strip-01/index.js +1 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.d.ts +139 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.d.ts.map +1 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.js +58 -0
- package/dist/blocks/two-factor-01/index.d.ts +3 -0
- package/dist/blocks/two-factor-01/index.d.ts.map +1 -0
- package/dist/blocks/two-factor-01/index.js +1 -0
- package/dist/blocks/two-factor-01/two-factor-01.d.ts +440 -0
- package/dist/blocks/two-factor-01/two-factor-01.d.ts.map +1 -0
- package/dist/blocks/two-factor-01/two-factor-01.js +273 -0
- package/dist/blocks/user-profile-01/index.d.ts +3 -0
- package/dist/blocks/user-profile-01/index.d.ts.map +1 -0
- package/dist/blocks/user-profile-01/index.js +1 -0
- package/dist/blocks/user-profile-01/user-profile-01.d.ts +258 -0
- package/dist/blocks/user-profile-01/user-profile-01.d.ts.map +1 -0
- package/dist/blocks/user-profile-01/user-profile-01.js +158 -0
- package/dist/blocks/verify-email-01/index.d.ts +3 -0
- package/dist/blocks/verify-email-01/index.d.ts.map +1 -0
- package/dist/blocks/verify-email-01/index.js +1 -0
- package/dist/blocks/verify-email-01/verify-email.d.ts +262 -0
- package/dist/blocks/verify-email-01/verify-email.d.ts.map +1 -0
- package/dist/blocks/verify-email-01/verify-email.js +190 -0
- package/dist/blocks/waitlist-01/index.d.ts +3 -0
- package/dist/blocks/waitlist-01/index.d.ts.map +1 -0
- package/dist/blocks/waitlist-01/index.js +1 -0
- package/dist/blocks/waitlist-01/waitlist.d.ts +254 -0
- package/dist/blocks/waitlist-01/waitlist.d.ts.map +1 -0
- package/dist/blocks/waitlist-01/waitlist.js +75 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +1641 -1
- package/dist/components/index.d.ts +114 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +134 -0
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +9 -2
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.js +22 -4
- package/dist/components/ui/announcement.d.ts +169 -0
- package/dist/components/ui/announcement.d.ts.map +1 -0
- package/dist/components/ui/announcement.js +123 -0
- package/dist/components/ui/avatar-group.d.ts +176 -0
- package/dist/components/ui/avatar-group.d.ts.map +1 -0
- package/dist/components/ui/avatar-group.js +135 -0
- package/dist/components/ui/billing-source.d.ts +293 -0
- package/dist/components/ui/billing-source.d.ts.map +1 -0
- package/dist/components/ui/billing-source.js +136 -0
- package/dist/components/ui/button.d.ts +16 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/button.js +17 -2
- package/dist/components/ui/calendar.d.ts +9 -0
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/calendar.js +30 -2
- package/dist/components/ui/carousel.d.ts +7 -0
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/carousel.js +58 -1
- package/dist/components/ui/chart.d.ts +334 -0
- package/dist/components/ui/chart.d.ts.map +1 -0
- package/dist/components/ui/chart.js +369 -0
- package/dist/components/ui/checkbox.d.ts +10 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/checkbox.js +19 -1
- package/dist/components/ui/checklist.d.ts +262 -0
- package/dist/components/ui/checklist.d.ts.map +1 -0
- package/dist/components/ui/checklist.js +135 -0
- package/dist/components/ui/choice-card.d.ts +273 -0
- package/dist/components/ui/choice-card.d.ts.map +1 -0
- package/dist/components/ui/choice-card.js +138 -0
- package/dist/components/ui/code-block.d.ts +182 -0
- package/dist/components/ui/code-block.d.ts.map +1 -0
- package/dist/components/ui/code-block.js +108 -0
- package/dist/components/ui/cohort-grid.d.ts +210 -0
- package/dist/components/ui/cohort-grid.d.ts.map +1 -0
- package/dist/components/ui/cohort-grid.js +202 -0
- package/dist/components/ui/collapsible.d.ts +11 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/collapsible.js +13 -2
- package/dist/components/ui/combobox.d.ts +4 -1
- package/dist/components/ui/combobox.d.ts.map +1 -1
- package/dist/components/ui/combobox.js +20 -4
- package/dist/components/ui/command-palette.d.ts +11 -0
- package/dist/components/ui/command-palette.d.ts.map +1 -1
- package/dist/components/ui/command-palette.js +49 -3
- package/dist/components/ui/contribution-graph.d.ts +156 -0
- package/dist/components/ui/contribution-graph.d.ts.map +1 -0
- package/dist/components/ui/contribution-graph.js +170 -0
- package/dist/components/ui/creatable-combobox.d.ts +153 -0
- package/dist/components/ui/creatable-combobox.d.ts.map +1 -0
- package/dist/components/ui/creatable-combobox.js +285 -0
- package/dist/components/ui/data-toolbar.d.ts +133 -0
- package/dist/components/ui/data-toolbar.d.ts.map +1 -0
- package/dist/components/ui/data-toolbar.js +67 -0
- package/dist/components/ui/date-picker.d.ts.map +1 -1
- package/dist/components/ui/date-picker.js +9 -1
- package/dist/components/ui/diagram.d.ts +38 -7
- package/dist/components/ui/diagram.d.ts.map +1 -1
- package/dist/components/ui/diagram.js +134 -52
- package/dist/components/ui/dialog.d.ts +31 -2
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dialog.js +40 -6
- package/dist/components/ui/drawer.d.ts +270 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/drawer.js +241 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +6 -1
- package/dist/components/ui/dropzone.d.ts +147 -0
- package/dist/components/ui/dropzone.d.ts.map +1 -0
- package/dist/components/ui/dropzone.js +141 -0
- package/dist/components/ui/emoji-picker.d.ts +328 -0
- package/dist/components/ui/emoji-picker.d.ts.map +1 -0
- package/dist/components/ui/emoji-picker.js +278 -0
- package/dist/components/ui/fact-list.d.ts +17 -0
- package/dist/components/ui/fact-list.d.ts.map +1 -1
- package/dist/components/ui/fact-list.js +18 -1
- package/dist/components/ui/file-upload.d.ts +152 -0
- package/dist/components/ui/file-upload.d.ts.map +1 -0
- package/dist/components/ui/file-upload.js +101 -0
- package/dist/components/ui/filter-panel.d.ts +164 -0
- package/dist/components/ui/filter-panel.d.ts.map +1 -0
- package/dist/components/ui/filter-panel.js +91 -0
- package/dist/components/ui/form-dialog.d.ts +257 -0
- package/dist/components/ui/form-dialog.d.ts.map +1 -0
- package/dist/components/ui/form-dialog.js +176 -0
- package/dist/components/ui/form-wizard.d.ts +251 -0
- package/dist/components/ui/form-wizard.d.ts.map +1 -0
- package/dist/components/ui/form-wizard.js +151 -0
- package/dist/components/ui/image-list-field.d.ts +232 -0
- package/dist/components/ui/image-list-field.d.ts.map +1 -0
- package/dist/components/ui/image-list-field.js +168 -0
- package/dist/components/ui/image-zoom.d.ts +164 -0
- package/dist/components/ui/image-zoom.d.ts.map +1 -0
- package/dist/components/ui/image-zoom.js +169 -0
- package/dist/components/ui/intensity-grid.d.ts +270 -0
- package/dist/components/ui/intensity-grid.d.ts.map +1 -0
- package/dist/components/ui/intensity-grid.js +211 -0
- package/dist/components/ui/lifecycle-button.d.ts +276 -0
- package/dist/components/ui/lifecycle-button.d.ts.map +1 -0
- package/dist/components/ui/lifecycle-button.js +144 -0
- package/dist/components/ui/lightbox.d.ts +165 -0
- package/dist/components/ui/lightbox.d.ts.map +1 -0
- package/dist/components/ui/lightbox.js +130 -0
- package/dist/components/ui/list-panel.d.ts +288 -0
- package/dist/components/ui/list-panel.d.ts.map +1 -0
- package/dist/components/ui/list-panel.js +139 -0
- package/dist/components/ui/mega-menu.d.ts +244 -0
- package/dist/components/ui/mega-menu.d.ts.map +1 -0
- package/dist/components/ui/mega-menu.js +97 -0
- package/dist/components/ui/menubar.d.ts +9 -0
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/menubar.js +10 -1
- package/dist/components/ui/metric.d.ts +123 -0
- package/dist/components/ui/metric.d.ts.map +1 -0
- package/dist/components/ui/metric.js +68 -0
- package/dist/components/ui/mini-calendar.d.ts +143 -0
- package/dist/components/ui/mini-calendar.d.ts.map +1 -0
- package/dist/components/ui/mini-calendar.js +261 -0
- package/dist/components/ui/mode-toggle.d.ts +102 -0
- package/dist/components/ui/mode-toggle.d.ts.map +1 -0
- package/dist/components/ui/mode-toggle.js +83 -0
- package/dist/components/ui/money-field.d.ts +200 -0
- package/dist/components/ui/money-field.d.ts.map +1 -0
- package/dist/components/ui/money-field.js +215 -0
- package/dist/components/ui/multi-combobox.d.ts +181 -0
- package/dist/components/ui/multi-combobox.d.ts.map +1 -0
- package/dist/components/ui/multi-combobox.js +297 -0
- package/dist/components/ui/native-select.d.ts.map +1 -1
- package/dist/components/ui/native-select.js +8 -1
- package/dist/components/ui/navigation-menu.d.ts +7 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.js +8 -1
- package/dist/components/ui/nested-tabs.d.ts +188 -0
- package/dist/components/ui/nested-tabs.d.ts.map +1 -0
- package/dist/components/ui/nested-tabs.js +75 -0
- package/dist/components/ui/number-field.d.ts +40 -7
- package/dist/components/ui/number-field.d.ts.map +1 -1
- package/dist/components/ui/number-field.js +37 -7
- package/dist/components/ui/overflow-actions.d.ts +169 -0
- package/dist/components/ui/overflow-actions.d.ts.map +1 -0
- package/dist/components/ui/overflow-actions.js +266 -0
- package/dist/components/ui/pack-swatch.d.ts +177 -0
- package/dist/components/ui/pack-swatch.d.ts.map +1 -0
- package/dist/components/ui/pack-swatch.js +117 -0
- package/dist/components/ui/pack-switcher.d.ts +221 -0
- package/dist/components/ui/pack-switcher.d.ts.map +1 -0
- package/dist/components/ui/pack-switcher.js +94 -0
- package/dist/components/ui/pagination.d.ts +22 -0
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/pagination.js +23 -1
- package/dist/components/ui/password-field.d.ts +122 -0
- package/dist/components/ui/password-field.d.ts.map +1 -0
- package/dist/components/ui/password-field.js +69 -0
- package/dist/components/ui/pill.d.ts +172 -0
- package/dist/components/ui/pill.d.ts.map +1 -0
- package/dist/components/ui/pill.js +102 -0
- package/dist/components/ui/platform-modifier-key.d.ts +129 -0
- package/dist/components/ui/platform-modifier-key.d.ts.map +1 -0
- package/dist/components/ui/platform-modifier-key.js +125 -0
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/popover.js +8 -1
- package/dist/components/ui/price.d.ts +144 -0
- package/dist/components/ui/price.d.ts.map +1 -0
- package/dist/components/ui/price.js +107 -0
- package/dist/components/ui/progress.d.ts +55 -1
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/progress.js +110 -2
- package/dist/components/ui/prompt-composer.d.ts +302 -0
- package/dist/components/ui/prompt-composer.d.ts.map +1 -0
- package/dist/components/ui/prompt-composer.js +145 -0
- package/dist/components/ui/proportion-list.d.ts +188 -0
- package/dist/components/ui/proportion-list.d.ts.map +1 -0
- package/dist/components/ui/proportion-list.js +134 -0
- package/dist/components/ui/prose.d.ts +34 -0
- package/dist/components/ui/prose.d.ts.map +1 -1
- package/dist/components/ui/prose.js +41 -1
- package/dist/components/ui/pulse-graph.d.ts +36 -4
- package/dist/components/ui/pulse-graph.d.ts.map +1 -1
- package/dist/components/ui/pulse-graph.js +174 -60
- package/dist/components/ui/radio-group.d.ts +7 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +8 -1
- package/dist/components/ui/range-field.d.ts +158 -0
- package/dist/components/ui/range-field.d.ts.map +1 -0
- package/dist/components/ui/range-field.js +208 -0
- package/dist/components/ui/relative-time.d.ts +116 -0
- package/dist/components/ui/relative-time.d.ts.map +1 -0
- package/dist/components/ui/relative-time.js +67 -0
- package/dist/components/ui/reorderable-list.d.ts +262 -0
- package/dist/components/ui/reorderable-list.d.ts.map +1 -0
- package/dist/components/ui/reorderable-list.js +325 -0
- package/dist/components/ui/repeatable-rows.d.ts +241 -0
- package/dist/components/ui/repeatable-rows.d.ts.map +1 -0
- package/dist/components/ui/repeatable-rows.js +221 -0
- package/dist/components/ui/repo-stars.d.ts +165 -0
- package/dist/components/ui/repo-stars.d.ts.map +1 -0
- package/dist/components/ui/repo-stars.js +92 -0
- package/dist/components/ui/resizable.d.ts +24 -0
- package/dist/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/ui/resizable.js +96 -4
- package/dist/components/ui/search-dialog.d.ts +40 -5
- package/dist/components/ui/search-dialog.d.ts.map +1 -1
- package/dist/components/ui/search-dialog.js +94 -16
- package/dist/components/ui/search-field.d.ts +159 -0
- package/dist/components/ui/search-field.d.ts.map +1 -0
- package/dist/components/ui/search-field.js +98 -0
- package/dist/components/ui/section.d.ts +110 -1
- package/dist/components/ui/section.d.ts.map +1 -1
- package/dist/components/ui/section.js +111 -3
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/select.js +9 -1
- package/dist/components/ui/selection-toolbar.d.ts +166 -0
- package/dist/components/ui/selection-toolbar.d.ts.map +1 -0
- package/dist/components/ui/selection-toolbar.js +139 -0
- package/dist/components/ui/sidebar.d.ts +29 -0
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +35 -2
- package/dist/components/ui/signal-field.d.ts.map +1 -1
- package/dist/components/ui/signal-field.js +1 -1
- package/dist/components/ui/slider.d.ts +7 -0
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/slider.js +32 -1
- package/dist/components/ui/sparkline.d.ts +117 -0
- package/dist/components/ui/sparkline.d.ts.map +1 -0
- package/dist/components/ui/sparkline.js +113 -0
- package/dist/components/ui/spinner.d.ts.map +1 -1
- package/dist/components/ui/spinner.js +13 -0
- package/dist/components/ui/split-button.d.ts +207 -0
- package/dist/components/ui/split-button.d.ts.map +1 -0
- package/dist/components/ui/split-button.js +75 -0
- package/dist/components/ui/stateful-table.d.ts +345 -0
- package/dist/components/ui/stateful-table.d.ts.map +1 -0
- package/dist/components/ui/stateful-table.js +169 -0
- package/dist/components/ui/status.d.ts +99 -0
- package/dist/components/ui/status.d.ts.map +1 -0
- package/dist/components/ui/status.js +63 -0
- package/dist/components/ui/stepper.d.ts +155 -0
- package/dist/components/ui/stepper.d.ts.map +1 -0
- package/dist/components/ui/stepper.js +83 -0
- package/dist/components/ui/steps.d.ts +141 -0
- package/dist/components/ui/steps.d.ts.map +1 -0
- package/dist/components/ui/steps.js +128 -0
- package/dist/components/ui/switch.d.ts +8 -0
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/switch.js +12 -1
- package/dist/components/ui/tabs.d.ts +21 -2
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/tabs.js +23 -4
- package/dist/components/ui/tag-group.d.ts +154 -0
- package/dist/components/ui/tag-group.d.ts.map +1 -0
- package/dist/components/ui/tag-group.js +111 -0
- package/dist/components/ui/task-progress.d.ts +149 -0
- package/dist/components/ui/task-progress.d.ts.map +1 -0
- package/dist/components/ui/task-progress.js +110 -0
- package/dist/components/ui/text-format-toolbar.d.ts +211 -0
- package/dist/components/ui/text-format-toolbar.d.ts.map +1 -0
- package/dist/components/ui/text-format-toolbar.js +186 -0
- package/dist/components/ui/timeline.d.ts.map +1 -1
- package/dist/components/ui/timeline.js +10 -1
- package/dist/components/ui/toast.d.ts +32 -10
- package/dist/components/ui/toast.d.ts.map +1 -1
- package/dist/components/ui/toast.js +150 -47
- package/dist/components/ui/toggle-group.d.ts +14 -5
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.js +15 -1
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/toggle.js +9 -1
- package/dist/components/ui/tree.d.ts +8 -0
- package/dist/components/ui/tree.d.ts.map +1 -1
- package/dist/components/ui/tree.js +92 -13
- package/dist/components/ui/video-player.d.ts +236 -0
- package/dist/components/ui/video-player.d.ts.map +1 -0
- package/dist/components/ui/video-player.js +72 -0
- package/dist/fonts/inter-latin-400-italic.woff2 +0 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -0
- package/dist/lib/figure.d.ts +149 -0
- package/dist/lib/figure.d.ts.map +1 -0
- package/dist/lib/figure.js +242 -0
- package/dist/lib/utils.d.ts +29 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +35 -0
- package/dist/live/index.d.ts +10 -3
- package/dist/live/index.d.ts.map +1 -1
- package/dist/live/index.js +12 -3
- package/dist/live/run-stream-01/run-stream.d.ts.map +1 -1
- package/dist/live/run-stream-01/run-stream.js +6 -5
- package/dist/live/tool-ledger-01/index.d.ts +3 -0
- package/dist/live/tool-ledger-01/index.d.ts.map +1 -0
- package/dist/live/tool-ledger-01/index.js +1 -0
- package/dist/live/tool-ledger-01/tool-ledger.d.ts +348 -0
- package/dist/live/tool-ledger-01/tool-ledger.d.ts.map +1 -0
- package/dist/live/tool-ledger-01/tool-ledger.js +245 -0
- package/dist/pages/about-page/index.d.ts +306 -0
- package/dist/pages/about-page/index.d.ts.map +1 -0
- package/dist/pages/about-page/index.js +161 -0
- package/dist/pages/blog-post-page/index.d.ts +36 -15
- package/dist/pages/blog-post-page/index.d.ts.map +1 -1
- package/dist/pages/blog-post-page/index.js +35 -10
- package/dist/pages/careers-page/index.d.ts +288 -0
- package/dist/pages/careers-page/index.d.ts.map +1 -0
- package/dist/pages/careers-page/index.js +182 -0
- package/dist/pages/changelog-page/index.d.ts +255 -0
- package/dist/pages/changelog-page/index.d.ts.map +1 -0
- package/dist/pages/changelog-page/index.js +86 -0
- package/dist/pages/contact-page/index.d.ts +261 -0
- package/dist/pages/contact-page/index.d.ts.map +1 -0
- package/dist/pages/contact-page/index.js +136 -0
- package/dist/pages/docs-shell/docs-shell.d.ts +126 -16
- package/dist/pages/docs-shell/docs-shell.d.ts.map +1 -1
- package/dist/pages/docs-shell/docs-shell.js +229 -28
- package/dist/pages/error-page/index.d.ts +188 -0
- package/dist/pages/error-page/index.d.ts.map +1 -0
- package/dist/pages/error-page/index.js +102 -0
- package/dist/pages/index.d.ts +10 -0
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/pages/index.js +14 -0
- package/dist/pages/legal-page/index.d.ts +194 -0
- package/dist/pages/legal-page/index.d.ts.map +1 -0
- package/dist/pages/legal-page/index.js +99 -0
- package/dist/pages/not-found-page/index.d.ts.map +1 -1
- package/dist/pages/not-found-page/index.js +4 -3
- package/dist/pages/onboarding-page/index.d.ts +199 -0
- package/dist/pages/onboarding-page/index.d.ts.map +1 -0
- package/dist/pages/onboarding-page/index.js +71 -0
- package/dist/pages/pricing-page/index.d.ts +286 -0
- package/dist/pages/pricing-page/index.d.ts.map +1 -0
- package/dist/pages/pricing-page/index.js +139 -0
- package/dist/pages/search-page/index.d.ts +305 -0
- package/dist/pages/search-page/index.d.ts.map +1 -0
- package/dist/pages/search-page/index.js +142 -0
- package/dist/pages/status-page/index.d.ts +366 -0
- package/dist/pages/status-page/index.d.ts.map +1 -0
- package/dist/pages/status-page/index.js +136 -0
- package/dist/styles.css +1105 -62
- package/package.json +9 -3
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../../lib/utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* The fill each step is drawn in, from the contract's roles and no other.
|
|
5
|
+
*
|
|
6
|
+
* The same five entries `ContributionGraph` draws from, spelled here because that
|
|
7
|
+
* module keeps its maps to itself, and the honest cost is the one it states: a
|
|
8
|
+
* change to the intensity scale is two edits rather than one. What keeps the
|
|
9
|
+
* restatement from drifting is the annotation, because both maps are typed
|
|
10
|
+
* `Record<IntensityLevel, string>`, so a sixth step would be a type error at the
|
|
11
|
+
* map rather than a cell that silently falls through to no ink.
|
|
12
|
+
*
|
|
13
|
+
* Step zero is the `muted` surface rather than a pale primary, so "nothing here" is
|
|
14
|
+
* visibly a different thing from "a little here". The other four are the same
|
|
15
|
+
* `primary` role at four alpha steps, which is one token at four strengths: a ramp
|
|
16
|
+
* of five authored colours would have been a second set of colour tokens for a
|
|
17
|
+
* scale the alpha modifier already expresses, and it would not have moved with a
|
|
18
|
+
* scoped pack boundary the way an alpha step on one semantic role does.
|
|
19
|
+
*/
|
|
20
|
+
const LEVEL_FILL = {
|
|
21
|
+
0: 'bg-muted',
|
|
22
|
+
1: 'bg-primary/25',
|
|
23
|
+
2: 'bg-primary/50',
|
|
24
|
+
3: 'bg-primary/75',
|
|
25
|
+
4: 'bg-primary',
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* A cell's share of the largest value drawn, as a percentage of it.
|
|
29
|
+
*
|
|
30
|
+
* A non-finite value is zero rather than `NaN`, because a value that went missing
|
|
31
|
+
* is data that is wrong and not a value that is small, and letting it into the
|
|
32
|
+
* maximum would stretch the scale around every other cell in the grid. It is drawn
|
|
33
|
+
* as the empty cell and named like any other, so a bad reading looks like nothing
|
|
34
|
+
* rather than like everything, which is the one way this Component can be wrong
|
|
35
|
+
* without saying so.
|
|
36
|
+
*/
|
|
37
|
+
function shareOf(value, max) {
|
|
38
|
+
if (!Number.isFinite(value))
|
|
39
|
+
return 0;
|
|
40
|
+
if (max <= 0)
|
|
41
|
+
return 0;
|
|
42
|
+
return (value / max) * 100;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A matrix of two categorical axes, drawn as cells under one sequential scale.
|
|
46
|
+
*
|
|
47
|
+
* **Neither axis is a scale, and that is the whole difference from `Chart`.** A
|
|
48
|
+
* chart places a mark at a position on a continuous domain and a cell has no
|
|
49
|
+
* position: "Kiln Wharf in March" is not half way between anything, so there is no
|
|
50
|
+
* horizontal scale to draw and no vertical one to read, and `Chart`'s `mark` prop
|
|
51
|
+
* cannot type it because a mark is a way of drawing a position. So this Component
|
|
52
|
+
* draws no axis, ticks nothing, and derives its scale from the values rather than
|
|
53
|
+
* from a range the caller states. Everything below is a consequence of that rather
|
|
54
|
+
* than a preference.
|
|
55
|
+
*
|
|
56
|
+
* **What it is for, and how it differs from `ContributionGraph`.** Both draw a grid
|
|
57
|
+
* of cells filled by intensity, and the resemblance is close enough to be worth
|
|
58
|
+
* being exact about. A ContributionGraph is a calendar: its rows are the seven
|
|
59
|
+
* days, its columns are the weeks, and it works both out from the dates it was
|
|
60
|
+
* given, so a caller passes days and gets a window. This Component is two sets of
|
|
61
|
+
* categories the caller already holds, and it has no calendar, no window, no window
|
|
62
|
+
* arithmetic and no date key. Four differences follow, each from that one:
|
|
63
|
+
*
|
|
64
|
+
* 1. **The axes are named by the caller.** A month and an estate are not seven
|
|
65
|
+
* days and a week, and there is no rule here that generates them.
|
|
66
|
+
* 2. **A pair with no cell is legal and is the common case.** A calendar has a
|
|
67
|
+
* cell for every day in its window, so an unreported day is the interesting
|
|
68
|
+
* state there. A matrix owes no completeness, so an absent pair is ordinary
|
|
69
|
+
* and draws as the empty cell.
|
|
70
|
+
* 3. **The drawing is symmetric and the reading is not.** A calendar is read by
|
|
71
|
+
* scanning a column, which is why its caller may choose which day each row
|
|
72
|
+
* starts on. Here the row is the header and the column is the reading order,
|
|
73
|
+
* so there is no `weekStartsOn` to pass because there is no week to start.
|
|
74
|
+
* 4. **The bands are the caller's and a calendar's are not.** `ContributionGraph`
|
|
75
|
+
* grades against the largest count in the window because a count of commits is
|
|
76
|
+
* a count of commits. Here the measure is unknown to Prism, so the bands are
|
|
77
|
+
* required, and that is the difference a reader of this file is most likely to
|
|
78
|
+
* get wrong.
|
|
79
|
+
*
|
|
80
|
+
* **The scale is derived, a band's meaning is not, and the gap between them is the
|
|
81
|
+
* honest cost.** Prism works out the largest value in the grid and reads every
|
|
82
|
+
* cell as a share of it, so the caller passes magnitudes and divides nothing. It
|
|
83
|
+
* cannot do the other half: it cannot see that forty findings on one estate is a
|
|
84
|
+
* crisis and the same forty on another is Tuesday, so `bands` is required and its
|
|
85
|
+
* entries are the caller's judgement about what each band means. **Prism cannot
|
|
86
|
+
* verify that the caller's scale is sequential.** A caller who passes a diverging
|
|
87
|
+
* scale, a categorical one, or values normalised into a range of their own
|
|
88
|
+
* invention gets a grid that reads as intensity and is not one, and nothing in the
|
|
89
|
+
* rendered output says so: there is no key, because a key would assert an ordering
|
|
90
|
+
* this Component has no way to check. The caller who wants one composes it from the
|
|
91
|
+
* same `bands` array the cells were graded with, which is why that array is data
|
|
92
|
+
* and not a callback.
|
|
93
|
+
*
|
|
94
|
+
* **The shade is redundant and never the only channel, and there is no printed
|
|
95
|
+
* number.** Every cell is a picture of a measurement and is named by `cellLabel`, so
|
|
96
|
+
* the value is spoken in the caller's own words. What Prism refuses is the other
|
|
97
|
+
* half of that sentence: a printed value in every cell. A matrix of forty cells
|
|
98
|
+
* with a number in each is a table with shading on it, and the shading is the
|
|
99
|
+
* channel the reader cannot scan, so the numbers would be covering the reason the
|
|
100
|
+
* figure exists. The cost is real, and it is the reason `CohortGrid` is a different
|
|
101
|
+
* Item: a reader who cannot rank five shades has no route to the value here at all,
|
|
102
|
+
* which is the right trade for a matrix scanned at a glance and the wrong one for a
|
|
103
|
+
* retention table read cell by cell.
|
|
104
|
+
*
|
|
105
|
+
* **A value outside the scale is clamped and counted, not thrown.** A cell above
|
|
106
|
+
* the largest value cannot exist, since the largest value sets the top, and a value
|
|
107
|
+
* below zero is a diverging measure rather than an intensity. Both are drawn at the
|
|
108
|
+
* floor or the ceiling of the scale and counted on the element as `data-clamped`,
|
|
109
|
+
* which is the arrangement `Chart` uses for a value past the end of its axis, and
|
|
110
|
+
* the count is what makes an under-specified scale visible to the caller who wrote
|
|
111
|
+
* it. `table` is the Component for a measure whose middle means something.
|
|
112
|
+
*
|
|
113
|
+
* **Four inputs throw, and a drawn lie is worse than a refusal.** No rows, no
|
|
114
|
+
* columns or no cells is a frame carrying no claim, a cell naming an axis that was
|
|
115
|
+
* not given is a measurement with nowhere to go, and two cells in one place is one
|
|
116
|
+
* measurement drawn over another with the earlier one left in the data and out of
|
|
117
|
+
* the picture. Each is a bug in the caller's code rather than a state a reader
|
|
118
|
+
* reaches, and each is reported in a console where the caller will see it. A cell
|
|
119
|
+
* whose value is not a finite number is the exception and is deliberately not one of
|
|
120
|
+
* the four: it draws as the empty cell, because a cell that says nothing and a cell
|
|
121
|
+
* whose number went missing look the same and no gate can tell them apart.
|
|
122
|
+
*
|
|
123
|
+
* **Nothing here moves, and the reason is the shade.** A hover state on a cell has
|
|
124
|
+
* to change something about the cell, and everything available is a change to the
|
|
125
|
+
* value: a wash behind it changes what the fill composites against, which is the
|
|
126
|
+
* measurement, and a border on one cell changes its neighbours' widths by a pixel.
|
|
127
|
+
* So the figure is static by construction rather than by restraint, which is also
|
|
128
|
+
* the cheapest way to satisfy a motion law that permits only state feedback.
|
|
129
|
+
*
|
|
130
|
+
* **It is a server Component, and `cellLabel` does not make it a client one.** A
|
|
131
|
+
* function prop is only a problem when it has to cross a boundary to be called, and
|
|
132
|
+
* this one never does: it is called during the render that received it, on the
|
|
133
|
+
* server, by this Component. That is the arrangement `ContributionGraph` ships and
|
|
134
|
+
* the reason its Demo is a server module too. The one consequence a caller has to
|
|
135
|
+
* know is that the function has to be written where the grid is rendered, so a grid
|
|
136
|
+
* inside an interactive panel must be composed inside that panel's own client tree,
|
|
137
|
+
* which is the price of a matrix that costs no client code at all.
|
|
138
|
+
*/
|
|
139
|
+
function IntensityGrid({ className, rows, columns, cells, label, cellLabel, bands, ...props }) {
|
|
140
|
+
if (rows.length === 0 || columns.length === 0 || cells.length === 0) {
|
|
141
|
+
throw new Error('IntensityGrid: one of rows, columns or cells is empty, so the figure is a frame with nothing in ' +
|
|
142
|
+
'it. A matrix needs at least one row, at least one column and one cell, and its axes are the ' +
|
|
143
|
+
"caller own categories rather than anything this Component generates. Pass the measurements you " +
|
|
144
|
+
'have; an axis with nothing in it is a query that did not come back.');
|
|
145
|
+
}
|
|
146
|
+
const placed = cells.map((cell) => {
|
|
147
|
+
const row = rows.find((entry) => entry.key === cell.rowKey);
|
|
148
|
+
const column = columns.find((entry) => entry.key === cell.columnKey);
|
|
149
|
+
if (row === undefined || column === undefined) {
|
|
150
|
+
throw new Error(`IntensityGrid: a cell names the row '${cell.rowKey}' and the column '${cell.columnKey}', and ` +
|
|
151
|
+
'one of them is not among the rows and columns you gave. A cell with nowhere to sit is a ' +
|
|
152
|
+
'measurement nobody would ever see, so this stops rather than dropping it and leaving you to ' +
|
|
153
|
+
'believe the whole matrix was drawn.');
|
|
154
|
+
}
|
|
155
|
+
return { cell, row, column };
|
|
156
|
+
});
|
|
157
|
+
/*
|
|
158
|
+
* Nested rather than keyed on a joined string, because a caller's keys are its
|
|
159
|
+
* own and a row key of `Kiln Wharf` beside a column key of `March` collides with
|
|
160
|
+
* a row of `Kiln` beside a column of `Wharf March`. A matrix is a table keyed on
|
|
161
|
+
* two columns, and keying it on one string is a bug waiting for the first caller
|
|
162
|
+
* whose keys contain spaces.
|
|
163
|
+
*/
|
|
164
|
+
const byRow = new Map();
|
|
165
|
+
for (const entry of placed) {
|
|
166
|
+
const forRow = byRow.get(entry.cell.rowKey);
|
|
167
|
+
if (forRow === undefined) {
|
|
168
|
+
byRow.set(entry.cell.rowKey, new Map([[entry.cell.columnKey, entry]]));
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
if (forRow.has(entry.cell.columnKey)) {
|
|
172
|
+
throw new Error(`IntensityGrid: the row '${entry.cell.rowKey}' and the column '${entry.cell.columnKey}' have ` +
|
|
173
|
+
'more than one cell. A matrix has one measurement per pair, and drawing the last of them would ' +
|
|
174
|
+
'leave the earlier one in the data and out of the picture with nothing saying so. Combine them ' +
|
|
175
|
+
'into the one cell that pair should carry.');
|
|
176
|
+
}
|
|
177
|
+
forRow.set(entry.cell.columnKey, entry);
|
|
178
|
+
}
|
|
179
|
+
const max = placed.reduce((tallest, entry) => Number.isFinite(entry.cell.value) && entry.cell.value > tallest ? entry.cell.value : tallest, 0);
|
|
180
|
+
return (_jsxs("figure", { "data-slot": "intensity-grid", "data-rows": rows.length, "data-columns": columns.length, "aria-label": label, className: cn('flex w-full flex-col gap-1.5', className), ...props, children: [_jsxs("div", { "data-slot": "intensity-axis", className: "flex items-end gap-2", children: [_jsx("span", { "data-slot": "intensity-gutter", "aria-hidden": "true", className: "w-32 shrink-0" }), columns.map((column) => (_jsx("span", { "data-slot": "intensity-column", className: "text-muted-foreground min-w-0 flex-1 truncate text-center text-xs", children: column.label }, column.key)))] }), rows.map((row) => (_jsxs("div", { "data-slot": "intensity-row", className: "flex items-center gap-2", children: [_jsx("span", { "data-slot": "intensity-row-label", className: "w-32 shrink-0 truncate text-xs font-medium", children: row.label }), columns.map((column) => {
|
|
181
|
+
const found = byRow.get(row.key)?.get(column.key);
|
|
182
|
+
if (found === undefined) {
|
|
183
|
+
/*
|
|
184
|
+
A pair with no cell. Hidden from assistive technology because there
|
|
185
|
+
is nothing to name: an absence is not a zero and not a row, and the
|
|
186
|
+
same rule `ContributionGraph` applies to a day nobody reported.
|
|
187
|
+
*/
|
|
188
|
+
return (_jsx("span", { "data-slot": "intensity-cell", "data-row": row.key, "data-column": column.key, "data-state": "absent", "aria-hidden": "true", className: cn('h-6 min-w-0 flex-1 rounded-sm', LEVEL_FILL[0]) }, column.key));
|
|
189
|
+
}
|
|
190
|
+
const { cell } = found;
|
|
191
|
+
const share = shareOf(cell.value, max);
|
|
192
|
+
const held = Math.min(100, Math.max(0, share));
|
|
193
|
+
// Read in the order the bands were given, and the first one containing
|
|
194
|
+
// the share wins, so a caller with an overlapping scale says which band
|
|
195
|
+
// takes precedence by saying it first.
|
|
196
|
+
const band = bands.find((entry) => held >= entry.from && held <= entry.to);
|
|
197
|
+
const level = band?.level ?? 0;
|
|
198
|
+
return (_jsx("span", { "data-slot": "intensity-cell", "data-row": row.key, "data-column": column.key, "data-level": level, "data-state": band === undefined ? 'ungraded' : undefined, "data-clamped": held === share ? undefined : 'true',
|
|
199
|
+
/*
|
|
200
|
+
A cell is a picture of a measurement rather than text, so it takes
|
|
201
|
+
the image role and the caller's own sentence for it. That name is
|
|
202
|
+
the redundant channel over the shade. An ungraded cell keeps its
|
|
203
|
+
name, so a reader hears the number and sees the absence, which is
|
|
204
|
+
the honest pair: the caller's scale does not cover this cell and
|
|
205
|
+
the drawing says so rather than substituting a step that means
|
|
206
|
+
something else.
|
|
207
|
+
*/
|
|
208
|
+
role: "img", "aria-label": cellLabel({ cell, row, column }), className: cn('h-6 min-w-0 flex-1 rounded-sm', LEVEL_FILL[level]) }, column.key));
|
|
209
|
+
})] }, row.key)))] }));
|
|
210
|
+
}
|
|
211
|
+
export { IntensityGrid };
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The four points a button's work can be at.
|
|
4
|
+
*
|
|
5
|
+
* A closed set of four, and the fourth is the one that makes it a lifecycle. A
|
|
6
|
+
* control that is idle, one that is working and one that has finished are three
|
|
7
|
+
* states, and every system that stops at three has folded success and failure
|
|
8
|
+
* into a single "done" and then had to choose which of the two words to print. The
|
|
9
|
+
* answer is a flag, and a flag that says `done` when the request was refused tells
|
|
10
|
+
* a reader their work was saved, which is the most expensive sentence a control
|
|
11
|
+
* can get wrong.
|
|
12
|
+
*/
|
|
13
|
+
export type LifecycleButtonPhase = 'idle' | 'in-flight' | 'succeeded' | 'failed';
|
|
14
|
+
/**
|
|
15
|
+
* Where the work is, as a value the caller holds.
|
|
16
|
+
*
|
|
17
|
+
* A union rather than a `loading` boolean beside an `error` message, and the reason
|
|
18
|
+
* is the pair. A boolean has two answers and this has four, and the two answers
|
|
19
|
+
* nobody can express with a boolean are the two that matter: a request that
|
|
20
|
+
* failed, and a request whose position is known. A caller holding `loading` plus a
|
|
21
|
+
* string has to encode four states across two props that do not know about each
|
|
22
|
+
* other, and every one of those four combinations has to be drawn.
|
|
23
|
+
*/
|
|
24
|
+
export type LifecycleButtonState =
|
|
25
|
+
/** Nothing has been asked. The control is the caller's primary action. */
|
|
26
|
+
{
|
|
27
|
+
phase: 'idle';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The work is running.
|
|
31
|
+
*
|
|
32
|
+
* `progress` is a fraction between zero and one and it is a real measurement, not
|
|
33
|
+
* a timer: a caller that has a byte count, a row count or a completed-step count
|
|
34
|
+
* passes the ratio and the reader is told the position. Omit it and the work is
|
|
35
|
+
* of unknown length, which is a different fact and is drawn and announced as
|
|
36
|
+
* such. It is never defaulted, because a bar that fills on its own is a
|
|
37
|
+
* measurement of nothing.
|
|
38
|
+
*/
|
|
39
|
+
| {
|
|
40
|
+
phase: 'in-flight';
|
|
41
|
+
progress?: number;
|
|
42
|
+
progressText?: string;
|
|
43
|
+
}
|
|
44
|
+
/** The work finished. */
|
|
45
|
+
| {
|
|
46
|
+
phase: 'succeeded';
|
|
47
|
+
}
|
|
48
|
+
/** The work did not finish, with the caller's own sentence about why. */
|
|
49
|
+
| {
|
|
50
|
+
phase: 'failed';
|
|
51
|
+
reason?: ReactNode;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* The props the Lifecycle button accepts.
|
|
55
|
+
*
|
|
56
|
+
* A declared interface rather than a forwarded native one, and the reason is the
|
|
57
|
+
* gate on the surface: a forwarded `onClick` would be a second way to say what the
|
|
58
|
+
* control does, and a forwarded `children` would be a second way to say what it
|
|
59
|
+
* says. Both are decided here. The five words are five props rather than one
|
|
60
|
+
* `labels` record because a record's keys are a second list of the lifecycle, and
|
|
61
|
+
* the lifecycle is already stated in the type of `state`; two lists of the same
|
|
62
|
+
* four states is two lists that can disagree.
|
|
63
|
+
*/
|
|
64
|
+
export interface LifecycleButtonProps {
|
|
65
|
+
/**
|
|
66
|
+
* Where the work is.
|
|
67
|
+
*
|
|
68
|
+
* Required and controlled, and the whole of the Component: the caller owns the
|
|
69
|
+
* request, so the caller owns where the request is. Prism draws the label, the
|
|
70
|
+
* mark, the meter and the retry that a position implies, and calls back. It
|
|
71
|
+
* never moves the position, and it holds no promise, no transport and no timer.
|
|
72
|
+
*/
|
|
73
|
+
state: LifecycleButtonState;
|
|
74
|
+
/**
|
|
75
|
+
* Called when the reader presses the control while it is idle.
|
|
76
|
+
*
|
|
77
|
+
* Required, and it is called only from `idle`. A control that accepts presses
|
|
78
|
+
* while its work is running would let a reader queue a second request without
|
|
79
|
+
* knowing whether the first had finished, and a control that accepts presses
|
|
80
|
+
* after a failure would be a second way of retrying with a different meaning.
|
|
81
|
+
* The caller moves the position to `in-flight`; nothing here does.
|
|
82
|
+
*/
|
|
83
|
+
onActivate: () => void;
|
|
84
|
+
/** The label in the idle position, in the product's own words. */
|
|
85
|
+
idleLabel: ReactNode;
|
|
86
|
+
/** The label while the work is running, in the product's own words. */
|
|
87
|
+
inFlightLabel: ReactNode;
|
|
88
|
+
/**
|
|
89
|
+
* The label after the work finished.
|
|
90
|
+
*
|
|
91
|
+
* Required rather than derived from the icon, because a check mark is a
|
|
92
|
+
* drawing and a control whose outcome is a drawing is a control whose outcome a
|
|
93
|
+
* screen reader never hears. Write the outcome: "Saved", "Published",
|
|
94
|
+
* "Enqueued".
|
|
95
|
+
*/
|
|
96
|
+
succeededLabel: ReactNode;
|
|
97
|
+
/**
|
|
98
|
+
* The label after the work failed.
|
|
99
|
+
*
|
|
100
|
+
* Required, and it is the label a reader sees on a control they already pressed
|
|
101
|
+
* and already believe worked, so it has to be the sentence that tells them
|
|
102
|
+
* otherwise. "Not saved" is a control that is still the same control and now
|
|
103
|
+
* says the opposite; "Try again" is a different action and belongs on the retry
|
|
104
|
+
* beside it.
|
|
105
|
+
*/
|
|
106
|
+
failedLabel: ReactNode;
|
|
107
|
+
/**
|
|
108
|
+
* The label of the retry control, which exists only in the failed position.
|
|
109
|
+
*
|
|
110
|
+
* Required, and the same word for every product's "try this again" is not
|
|
111
|
+
* something this package may choose: "Retry", "Save again" and "Reintentar" are
|
|
112
|
+
* three products' answers.
|
|
113
|
+
*/
|
|
114
|
+
retryLabel: ReactNode;
|
|
115
|
+
/**
|
|
116
|
+
* The fill the control is drawn in.
|
|
117
|
+
*
|
|
118
|
+
* The four fills that make no claim about the outcome, and the reason the other
|
|
119
|
+
* two are absent is the Stated Ink Rule read from the other side. The failed
|
|
120
|
+
* position is not drawn destructive: destructive is for an action that cannot be
|
|
121
|
+
* undone, and a failed save is not that. Nor is it drawn `link`, which is a
|
|
122
|
+
* control inside a sentence and a lifecycle control is a sentence of its own.
|
|
123
|
+
* Nor is the failed position left as `default`, because a filled primary beside a
|
|
124
|
+
* failure is a control inviting a press that has already been shown not to work.
|
|
125
|
+
* The failure is carried by the label, the mark and the line beneath, and those
|
|
126
|
+
* are enough.
|
|
127
|
+
*
|
|
128
|
+
* @defaultValue 'default'
|
|
129
|
+
*/
|
|
130
|
+
variant?: 'default' | 'secondary' | 'outline' | 'ghost';
|
|
131
|
+
/**
|
|
132
|
+
* The control's height. @defaultValue 'default'
|
|
133
|
+
*
|
|
134
|
+
* The four authored steps including `icon` are not offered, because a lifecycle
|
|
135
|
+
* control that has collapsed to a glyph has thrown away the one thing the
|
|
136
|
+
* lifecycle adds, which is the words that change as it runs.
|
|
137
|
+
*/
|
|
138
|
+
size?: 'sm' | 'default' | 'lg';
|
|
139
|
+
/**
|
|
140
|
+
* Whether the control submits the form it sits in.
|
|
141
|
+
*
|
|
142
|
+
* Passed through rather than drawn, so a lifecycle control can be a form's submit
|
|
143
|
+
* button. Note what the Component does with it: a press from `in-flight` or
|
|
144
|
+
* `failed` is still refused, so a submit control here will not submit twice
|
|
145
|
+
* because the first submit is still running.
|
|
146
|
+
*
|
|
147
|
+
* @defaultValue 'button'
|
|
148
|
+
*/
|
|
149
|
+
type?: 'button' | 'submit' | 'reset';
|
|
150
|
+
/**
|
|
151
|
+
* The name the control submits under, when it submits.
|
|
152
|
+
*
|
|
153
|
+
* A native attribute the Component forwards untouched, because a submit button's
|
|
154
|
+
* name is a fact about the caller's form and about nothing in this Component.
|
|
155
|
+
*/
|
|
156
|
+
name?: string;
|
|
157
|
+
/**
|
|
158
|
+
* The form the control submits, when it is not inside one.
|
|
159
|
+
*
|
|
160
|
+
* Forwarded for the same reason as `name`, and it is the one native attribute
|
|
161
|
+
* worth forwarding on a control that can submit: a lifecycle button placed in a
|
|
162
|
+
* dialog's footer is outside the form it acts on.
|
|
163
|
+
*/
|
|
164
|
+
form?: string;
|
|
165
|
+
/**
|
|
166
|
+
* Whether the control is unavailable for a reason of the caller's own.
|
|
167
|
+
*
|
|
168
|
+
* Drawn and not set, for the reason `Dropzone` states in full: a natively
|
|
169
|
+
* disabled control is out of the tab order, so a keyboard reader tabs onto where
|
|
170
|
+
* it was, presses Enter, and nothing happens with no announcement to explain it.
|
|
171
|
+
* This one keeps its place, keeps its ring and announces itself as unavailable.
|
|
172
|
+
* The cost is a tab stop that does nothing, which is the price every disabled
|
|
173
|
+
* control pays and the reason disabled controls are drawn rather than omitted.
|
|
174
|
+
*/
|
|
175
|
+
disabled?: boolean;
|
|
176
|
+
/** Layout only. Changing a Prism-owned visual property from here is prohibited. */
|
|
177
|
+
className?: string;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* A button whose label, mark and meter follow an asynchronous outcome: idle, in
|
|
181
|
+
* flight, succeeded or failed, with a retry beside it after a failure.
|
|
182
|
+
*
|
|
183
|
+
* **It is a state machine and not a loading flag, and the difference from
|
|
184
|
+
* `Button` is larger than it first looks.** `Button` has no `loading` prop and no
|
|
185
|
+
* loading state of any kind: it renders a native `<button>` and takes `variant`
|
|
186
|
+
* and `size`, and that is the whole of its interface. So there is no overlap to
|
|
187
|
+
* argue about, and the honest reason this Item is not a `Button` with one more
|
|
188
|
+
* boolean is that the boolean was never there. What a caller does today is write
|
|
189
|
+
* three controls: a `Button` whose label swaps while a request runs, a second
|
|
190
|
+
* `Button` that appears when it fails, and a `Progress` or a `Spinner` beside the
|
|
191
|
+
* first. This is those three, and the reason they were three is that they are
|
|
192
|
+
* three positions of one line and `Button` is a control rather than a line. If a
|
|
193
|
+
* `loading` boolean is ever added to `Button`, the honest response is to narrow
|
|
194
|
+
* this Item to the two positions a boolean cannot express, the failure and the
|
|
195
|
+
* fraction, rather than to delete it.
|
|
196
|
+
*
|
|
197
|
+
* **A boolean has two answers and a lifecycle has four, and the two it cannot
|
|
198
|
+
* express are the two that cost the most.** A request that failed is not
|
|
199
|
+
* `loading: false`: it is a control the reader already pressed, which is now
|
|
200
|
+
* telling them their work was not saved, and it needs different words, a
|
|
201
|
+
* different mark and a different next action from a control that has never been
|
|
202
|
+
* pressed. Encoding that as a boolean plus a string puts four states across two
|
|
203
|
+
* props that do not know about each other, and every consumer redraws the
|
|
204
|
+
* combinations. The union puts them in one value, and adding a sixth state later
|
|
205
|
+
* is a compile error at every place that switches over it.
|
|
206
|
+
*
|
|
207
|
+
* **The determinate bar is legal motion and the reason is that it is bound to a
|
|
208
|
+
* real state transition.** The fill is `Progress`, which animates its width on the
|
|
209
|
+
* base duration and eases out; there is no keyframe, no loop and no cycle, because
|
|
210
|
+
* a bar that is moving because a number changed is state feedback under the first
|
|
211
|
+
* of the two motion laws and nothing else. A bar with no number is not drawn as a
|
|
212
|
+
* moving one: a caller that passes no `progress` gets the same component with
|
|
213
|
+
* `value={null}`, which is announced as indeterminate and is the truth about work
|
|
214
|
+
* of unknown length. The Component refuses to fill a bar it has no number for, and
|
|
215
|
+
* the refusal is a thrown diagnostic rather than a silently invented position.
|
|
216
|
+
*
|
|
217
|
+
* **`Progress` is composed and not drawn, and that is why the in-flight position
|
|
218
|
+
* has one indicator rather than two.** A determinate fraction and an indeterminate
|
|
219
|
+
* request are the same question asked with and without an answer, so they are the
|
|
220
|
+
* same Component, and the alternative is a bar in one position and a ring in the
|
|
221
|
+
* other, which is two answers to how far along a task is on one button. The width
|
|
222
|
+
* is bounded by `className` because width is layout, and everything else about the
|
|
223
|
+
* bar is Prism's.
|
|
224
|
+
*
|
|
225
|
+
* **A fraction is announced in the caller's words or not at all.** `Progress`
|
|
226
|
+
* exposes its value, minimum and maximum through ARIA, so a fraction between zero
|
|
227
|
+
* and one is announced as a decimal, and "0.42" is a measurement of nothing a
|
|
228
|
+
* reader can act on. So a state carrying `progress` must carry `progressText`, and
|
|
229
|
+
* the Component throws without it rather than letting a number through as an
|
|
230
|
+
* accessible name. Write the position as the reader would say it: "Uploading,
|
|
231
|
+
* 42 percent", "3 of 8 steps".
|
|
232
|
+
*
|
|
233
|
+
* **The outcome is announced, and the announcement is the transition rather than
|
|
234
|
+
* the control.** A reader who pressed a control and watched its label change has
|
|
235
|
+
* been answered; a reader who pressed it and looked away has not, and the
|
|
236
|
+
* succeeded position is the one that arrives with no other evidence on the page
|
|
237
|
+
* when the control that caused it has scrolled out of view. So the Component
|
|
238
|
+
* composes `LiveRegion` with the settled label in it, polite for a success and
|
|
239
|
+
* assertive for a failure, which is the politeness rule `LiveRegion` states and
|
|
240
|
+
* for its reasons: a save that landed waits its turn, and a save that was refused
|
|
241
|
+
* interrupts. The reason line beneath the control is deliberately not an alert, so
|
|
242
|
+
* the failure is announced once rather than twice in the same commit.
|
|
243
|
+
*
|
|
244
|
+
* **The region is mounted at the outcome rather than held empty, and the cost is
|
|
245
|
+
* real.** `LiveRegion` deliberately renders nothing when it has nothing to say,
|
|
246
|
+
* because a live region sitting on the page permanently announces unrelated
|
|
247
|
+
* changes of its ancestors, which is the noise the Component exists to avoid as
|
|
248
|
+
* well as to cause. The consequence is that this region is created at the moment
|
|
249
|
+
* of its content, and a live region created with its content is announced by most
|
|
250
|
+
* screen readers and not by all of them. A caller who needs the guarantee on every
|
|
251
|
+
* transition keeps a `LiveRegion` of their own beside this Component and passes
|
|
252
|
+
* the outcome into it, which is two lines and no override of anything here.
|
|
253
|
+
*
|
|
254
|
+
* **The retry is a second control and not a state of the first, because the two
|
|
255
|
+
* actions are not the same.** Pressing the control again after a failure is a
|
|
256
|
+
* claim that the same request is worth making again, and the caller may well have
|
|
257
|
+
* changed their mind; a control that quietly became the retry would make a reader
|
|
258
|
+
* who wants to send something different press it twice to find out. So the failed
|
|
259
|
+
* position draws the control, still labelled as the failed outcome, with a second
|
|
260
|
+
* control beside it. The cost is a row that is two controls wide in one position
|
|
261
|
+
* out of four, and a caller who has nowhere to put it composes the retry in their
|
|
262
|
+
* own layout rather than dropping the affordance.
|
|
263
|
+
*
|
|
264
|
+
* **It is a client Component**, because `Progress` is one, because the outcome is
|
|
265
|
+
* announced through a region whose behaviour the browser's mutation observer
|
|
266
|
+
* provides and whose mounting is React's, and because the only callback it takes
|
|
267
|
+
* is one the caller has to be in the client graph to supply. What that costs is
|
|
268
|
+
* the price of every client control, and it is worth naming because the surface
|
|
269
|
+
* invites a server render: a server Component can render the idle position and it
|
|
270
|
+
* will look right, and what it cannot do is move the position, show a fraction, or
|
|
271
|
+
* announce an outcome, because those are facts about what happens after the reader
|
|
272
|
+
* acts.
|
|
273
|
+
*/
|
|
274
|
+
declare function LifecycleButton({ state, onActivate, idleLabel, inFlightLabel, succeededLabel, failedLabel, retryLabel, variant, size, type, name, form, disabled, className, }: LifecycleButtonProps): import("react").JSX.Element;
|
|
275
|
+
export { LifecycleButton };
|
|
276
|
+
//# sourceMappingURL=lifecycle-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/lifecycle-button.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEhF;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB;AAC9B,0EAA0E;AACxE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;AACnB;;;;;;;;;GASG;GACD;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE;AAClE,yBAAyB;GACvB;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE;AACxB,yEAAyE;GACvE;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,KAAK,EAAE,oBAAoB,CAAA;IAC3B;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,kEAAkE;IAClE,SAAS,EAAE,SAAS,CAAA;IACpB,uEAAuE;IACvE,aAAa,EAAE,SAAS,CAAA;IACxB;;;;;;;OAOG;IACH,cAAc,EAAE,SAAS,CAAA;IACzB;;;;;;;;OAQG;IACH,WAAW,EAAE,SAAS,CAAA;IACtB;;;;;;OAMG;IACH,UAAU,EAAE,SAAS,CAAA;IACrB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAA;IACvD;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAA;IAC9B;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;IACpC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACd,WAAW,EACX,UAAU,EACV,OAAmB,EACnB,IAAgB,EAChB,IAAe,EACf,IAAI,EACJ,IAAI,EACJ,QAAgB,EAChB,SAAS,GACV,EAAE,oBAAoB,+BAsGtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { CircleCheckIcon, RefreshCwIcon, TriangleAlertIcon } from 'lucide-react';
|
|
4
|
+
import { Button } from './button.js';
|
|
5
|
+
import { LiveRegion } from './live-region.js';
|
|
6
|
+
import { Progress } from './progress.js';
|
|
7
|
+
import { cn } from '../../lib/utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* The mark each settled position carries, and the ink it is drawn in.
|
|
10
|
+
*
|
|
11
|
+
* Two entries and not four, because the idle and in-flight positions carry the
|
|
12
|
+
* meter or nothing rather than a mark, and a ring or a bar beside a label that
|
|
13
|
+
* already says what is happening is a second copy of a sentence the reader can
|
|
14
|
+
* already see. Both marks are `aria-hidden` at the call site and the label carries
|
|
15
|
+
* the meaning, which is the order the whole package keeps: the attribute is the
|
|
16
|
+
* fact and the drawing is the reminder. The inks are the semantic state roles and
|
|
17
|
+
* not a ramp step, and the shapes differ as well as the colours so a reader who
|
|
18
|
+
* cannot separate them still reads which is which.
|
|
19
|
+
*/
|
|
20
|
+
const SETTLED_MARK = {
|
|
21
|
+
succeeded: { Mark: CircleCheckIcon, ink: 'text-success' },
|
|
22
|
+
failed: { Mark: TriangleAlertIcon, ink: 'text-destructive' },
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* A button whose label, mark and meter follow an asynchronous outcome: idle, in
|
|
26
|
+
* flight, succeeded or failed, with a retry beside it after a failure.
|
|
27
|
+
*
|
|
28
|
+
* **It is a state machine and not a loading flag, and the difference from
|
|
29
|
+
* `Button` is larger than it first looks.** `Button` has no `loading` prop and no
|
|
30
|
+
* loading state of any kind: it renders a native `<button>` and takes `variant`
|
|
31
|
+
* and `size`, and that is the whole of its interface. So there is no overlap to
|
|
32
|
+
* argue about, and the honest reason this Item is not a `Button` with one more
|
|
33
|
+
* boolean is that the boolean was never there. What a caller does today is write
|
|
34
|
+
* three controls: a `Button` whose label swaps while a request runs, a second
|
|
35
|
+
* `Button` that appears when it fails, and a `Progress` or a `Spinner` beside the
|
|
36
|
+
* first. This is those three, and the reason they were three is that they are
|
|
37
|
+
* three positions of one line and `Button` is a control rather than a line. If a
|
|
38
|
+
* `loading` boolean is ever added to `Button`, the honest response is to narrow
|
|
39
|
+
* this Item to the two positions a boolean cannot express, the failure and the
|
|
40
|
+
* fraction, rather than to delete it.
|
|
41
|
+
*
|
|
42
|
+
* **A boolean has two answers and a lifecycle has four, and the two it cannot
|
|
43
|
+
* express are the two that cost the most.** A request that failed is not
|
|
44
|
+
* `loading: false`: it is a control the reader already pressed, which is now
|
|
45
|
+
* telling them their work was not saved, and it needs different words, a
|
|
46
|
+
* different mark and a different next action from a control that has never been
|
|
47
|
+
* pressed. Encoding that as a boolean plus a string puts four states across two
|
|
48
|
+
* props that do not know about each other, and every consumer redraws the
|
|
49
|
+
* combinations. The union puts them in one value, and adding a sixth state later
|
|
50
|
+
* is a compile error at every place that switches over it.
|
|
51
|
+
*
|
|
52
|
+
* **The determinate bar is legal motion and the reason is that it is bound to a
|
|
53
|
+
* real state transition.** The fill is `Progress`, which animates its width on the
|
|
54
|
+
* base duration and eases out; there is no keyframe, no loop and no cycle, because
|
|
55
|
+
* a bar that is moving because a number changed is state feedback under the first
|
|
56
|
+
* of the two motion laws and nothing else. A bar with no number is not drawn as a
|
|
57
|
+
* moving one: a caller that passes no `progress` gets the same component with
|
|
58
|
+
* `value={null}`, which is announced as indeterminate and is the truth about work
|
|
59
|
+
* of unknown length. The Component refuses to fill a bar it has no number for, and
|
|
60
|
+
* the refusal is a thrown diagnostic rather than a silently invented position.
|
|
61
|
+
*
|
|
62
|
+
* **`Progress` is composed and not drawn, and that is why the in-flight position
|
|
63
|
+
* has one indicator rather than two.** A determinate fraction and an indeterminate
|
|
64
|
+
* request are the same question asked with and without an answer, so they are the
|
|
65
|
+
* same Component, and the alternative is a bar in one position and a ring in the
|
|
66
|
+
* other, which is two answers to how far along a task is on one button. The width
|
|
67
|
+
* is bounded by `className` because width is layout, and everything else about the
|
|
68
|
+
* bar is Prism's.
|
|
69
|
+
*
|
|
70
|
+
* **A fraction is announced in the caller's words or not at all.** `Progress`
|
|
71
|
+
* exposes its value, minimum and maximum through ARIA, so a fraction between zero
|
|
72
|
+
* and one is announced as a decimal, and "0.42" is a measurement of nothing a
|
|
73
|
+
* reader can act on. So a state carrying `progress` must carry `progressText`, and
|
|
74
|
+
* the Component throws without it rather than letting a number through as an
|
|
75
|
+
* accessible name. Write the position as the reader would say it: "Uploading,
|
|
76
|
+
* 42 percent", "3 of 8 steps".
|
|
77
|
+
*
|
|
78
|
+
* **The outcome is announced, and the announcement is the transition rather than
|
|
79
|
+
* the control.** A reader who pressed a control and watched its label change has
|
|
80
|
+
* been answered; a reader who pressed it and looked away has not, and the
|
|
81
|
+
* succeeded position is the one that arrives with no other evidence on the page
|
|
82
|
+
* when the control that caused it has scrolled out of view. So the Component
|
|
83
|
+
* composes `LiveRegion` with the settled label in it, polite for a success and
|
|
84
|
+
* assertive for a failure, which is the politeness rule `LiveRegion` states and
|
|
85
|
+
* for its reasons: a save that landed waits its turn, and a save that was refused
|
|
86
|
+
* interrupts. The reason line beneath the control is deliberately not an alert, so
|
|
87
|
+
* the failure is announced once rather than twice in the same commit.
|
|
88
|
+
*
|
|
89
|
+
* **The region is mounted at the outcome rather than held empty, and the cost is
|
|
90
|
+
* real.** `LiveRegion` deliberately renders nothing when it has nothing to say,
|
|
91
|
+
* because a live region sitting on the page permanently announces unrelated
|
|
92
|
+
* changes of its ancestors, which is the noise the Component exists to avoid as
|
|
93
|
+
* well as to cause. The consequence is that this region is created at the moment
|
|
94
|
+
* of its content, and a live region created with its content is announced by most
|
|
95
|
+
* screen readers and not by all of them. A caller who needs the guarantee on every
|
|
96
|
+
* transition keeps a `LiveRegion` of their own beside this Component and passes
|
|
97
|
+
* the outcome into it, which is two lines and no override of anything here.
|
|
98
|
+
*
|
|
99
|
+
* **The retry is a second control and not a state of the first, because the two
|
|
100
|
+
* actions are not the same.** Pressing the control again after a failure is a
|
|
101
|
+
* claim that the same request is worth making again, and the caller may well have
|
|
102
|
+
* changed their mind; a control that quietly became the retry would make a reader
|
|
103
|
+
* who wants to send something different press it twice to find out. So the failed
|
|
104
|
+
* position draws the control, still labelled as the failed outcome, with a second
|
|
105
|
+
* control beside it. The cost is a row that is two controls wide in one position
|
|
106
|
+
* out of four, and a caller who has nowhere to put it composes the retry in their
|
|
107
|
+
* own layout rather than dropping the affordance.
|
|
108
|
+
*
|
|
109
|
+
* **It is a client Component**, because `Progress` is one, because the outcome is
|
|
110
|
+
* announced through a region whose behaviour the browser's mutation observer
|
|
111
|
+
* provides and whose mounting is React's, and because the only callback it takes
|
|
112
|
+
* is one the caller has to be in the client graph to supply. What that costs is
|
|
113
|
+
* the price of every client control, and it is worth naming because the surface
|
|
114
|
+
* invites a server render: a server Component can render the idle position and it
|
|
115
|
+
* will look right, and what it cannot do is move the position, show a fraction, or
|
|
116
|
+
* announce an outcome, because those are facts about what happens after the reader
|
|
117
|
+
* acts.
|
|
118
|
+
*/
|
|
119
|
+
function LifecycleButton({ state, onActivate, idleLabel, inFlightLabel, succeededLabel, failedLabel, retryLabel, variant = 'default', size = 'default', type = 'button', name, form, disabled = false, className, }) {
|
|
120
|
+
const inFlight = state.phase === 'in-flight';
|
|
121
|
+
const failed = state.phase === 'failed';
|
|
122
|
+
const succeeded = state.phase === 'succeeded';
|
|
123
|
+
const unavailable = inFlight || disabled;
|
|
124
|
+
if (inFlight && state.progress !== undefined && state.progressText === undefined) {
|
|
125
|
+
throw new Error('LifecycleButton: the in-flight state carries a progress fraction and no progressText, so the bar would be ' +
|
|
126
|
+
'announced as a decimal between zero and one, which is a measurement of nothing a reader can act on. Pass ' +
|
|
127
|
+
'the position in the words the reader would say it, or drop progress and let the bar be indeterminate.');
|
|
128
|
+
}
|
|
129
|
+
const label = state.phase === 'idle'
|
|
130
|
+
? idleLabel
|
|
131
|
+
: inFlight
|
|
132
|
+
? inFlightLabel
|
|
133
|
+
: succeeded
|
|
134
|
+
? succeededLabel
|
|
135
|
+
: failedLabel;
|
|
136
|
+
const settled = succeeded || failed;
|
|
137
|
+
const mark = settled ? SETTLED_MARK[state.phase] : null;
|
|
138
|
+
return (_jsxs("div", { "data-slot": "lifecycle-button", className: cn('inline-flex flex-col items-start gap-1.5', className), children: [_jsxs("div", { "data-slot": "lifecycle-button-actions", className: "flex items-center gap-2", children: [_jsxs(Button, { "data-slot": "lifecycle-button-control", type: type, variant: variant, size: size, name: name, form: form, "aria-disabled": unavailable || undefined, onClick: unavailable ? () => undefined : onActivate, children: [mark === null ? null : _jsx(mark.Mark, { className: mark.ink, "aria-hidden": "true" }), _jsx("span", { "data-slot": "lifecycle-button-label", children: label }), inFlight ? (_jsx(Progress, { "data-slot": "lifecycle-button-progress",
|
|
139
|
+
// The clamped fraction and the same component with no value, so the
|
|
140
|
+
// two are one question asked with and without an answer rather than
|
|
141
|
+
// a bar and a ring on one button.
|
|
142
|
+
value: state.progress === undefined ? null : Math.min(1, Math.max(0, state.progress)), max: 1, valueText: state.progressText, className: "w-16" })) : null] }), failed ? (_jsxs(Button, { "data-slot": "lifecycle-button-retry", type: "button", variant: "outline", size: size, onClick: onActivate, children: [_jsx(RefreshCwIcon, { "aria-hidden": "true" }), retryLabel] })) : null] }), failed && state.reason !== undefined && state.reason !== null && state.reason !== false ? (_jsx("p", { "data-slot": "lifecycle-button-message", className: "text-destructive text-sm", children: state.reason })) : null, settled ? (_jsx(LiveRegion, { className: "sr-only", politeness: failed ? 'assertive' : 'polite', children: label })) : null] }));
|
|
143
|
+
}
|
|
144
|
+
export { LifecycleButton };
|