@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,176 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useId, useRef, useState } from 'react';
|
|
4
|
+
import { Button } from './button.js';
|
|
5
|
+
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from './dialog.js';
|
|
6
|
+
import { Field } from './field.js';
|
|
7
|
+
import { LiveRegion } from './live-region.js';
|
|
8
|
+
import { cn } from '../../lib/utils.js';
|
|
9
|
+
/**
|
|
10
|
+
* The error summary's own frame.
|
|
11
|
+
*
|
|
12
|
+
* A tinted destructive surface rather than a filled one, so a form with one wrong
|
|
13
|
+
* field is not interrupted by a block of red, and destructive ink because the
|
|
14
|
+
* summary is only ever rendered when something is wrong. It sets its own fill and
|
|
15
|
+
* therefore its own ink, for the reason the Stated Ink Rule gives: an ink left to
|
|
16
|
+
* be inherited is whatever surface the element happens to be sitting on.
|
|
17
|
+
*/
|
|
18
|
+
const SUMMARY = 'border-destructive/40 bg-destructive/5 text-destructive rounded-md border p-3';
|
|
19
|
+
/**
|
|
20
|
+
* The summary's focus target, drawn once.
|
|
21
|
+
*
|
|
22
|
+
* `tabIndex={-1}` at the call site and not `tabIndex={0}`, and the difference is
|
|
23
|
+
* the whole keyboard model: a focus target that is a tab stop adds a permanent stop
|
|
24
|
+
* to every reader's journey for a region that exists only after a refusal, while
|
|
25
|
+
* `-1` makes it focusable by script and by nothing else. The outline is suppressed
|
|
26
|
+
* because the ring replaces it, and the ring is `ring-ring` at full strength on
|
|
27
|
+
* `focus-visible` for the reason every ring in this package is: the token is the
|
|
28
|
+
* one measured to clear 3:1 against every surface, and a destructive ring on a
|
|
29
|
+
* panel whose own ink is already destructive reads as a second error rather than
|
|
30
|
+
* as an indicator.
|
|
31
|
+
*/
|
|
32
|
+
const SUMMARY_FOCUS = 'rounded-sm outline-none focus-visible:ring-ring focus-visible:ring-[3px]';
|
|
33
|
+
/**
|
|
34
|
+
* A modal that owns a validating submit: it runs the caller's rules before the
|
|
35
|
+
* submission, draws what is wrong where it can be acted on, and keeps the reader
|
|
36
|
+
* where they were when a submission is refused.
|
|
37
|
+
*
|
|
38
|
+
* **It is the accessibility centrepiece of the three modal shapes, and what makes
|
|
39
|
+
* it one is a focus move rather than a drawing.** A form dialog has four things a
|
|
40
|
+
* reader must be able to do from a keyboard: submit it, be told what is wrong, get
|
|
41
|
+
* to whatever is wrong, and get back to where they were. The first three are
|
|
42
|
+
* ordinary and the fourth is where a hand-rolled version fails. A refusal tends to
|
|
43
|
+
* re-render the form's content, and a re-render that replaces the control the
|
|
44
|
+
* reader was on leaves focus on `body`: a reader in a six-field form is now at the
|
|
45
|
+
* top of the document with no idea which field they were in. So on a refusal the
|
|
46
|
+
* summary takes focus and nothing else does.
|
|
47
|
+
*
|
|
48
|
+
* **The move is to the summary and not to the first invalid field, because a
|
|
49
|
+
* summary is a list and a first field is one of its entries.** A reader with one
|
|
50
|
+
* mistake out of six needs the count and the whole list, since they have to decide
|
|
51
|
+
* whether to fix everything or abandon the form; landing them in the first field
|
|
52
|
+
* gives them neither and makes them Tab through the rest to assemble what they were
|
|
53
|
+
* just told. The summary takes focus and is deliberately *not* a `role="alert"`: an
|
|
54
|
+
* alert in the same commit as a focus move is one refusal announced twice in two
|
|
55
|
+
* voices, which is the arrangement `LifecycleButton` explicitly avoids.
|
|
56
|
+
*
|
|
57
|
+
* **Validation runs before the submission and its result is unioned with the
|
|
58
|
+
* server's by position, never merged.** `validate` is a local check over the form's
|
|
59
|
+
* own values, so a field left empty is caught before a request goes out and the
|
|
60
|
+
* reader is not made to wait for a round trip to be told what the form already
|
|
61
|
+
* knew. `issues` is the other route, for a request that came back refused, and both
|
|
62
|
+
* reach one summary because a form that can show local errors and not server errors
|
|
63
|
+
* is a form whose worst errors are the ones it hides. Merging was rejected: a local
|
|
64
|
+
* result arriving after the server's would overwrite the sentence that says why
|
|
65
|
+
* the *server* said no.
|
|
66
|
+
*
|
|
67
|
+
* **A refusal with nothing to draw is the caller's own transitional state, and this
|
|
68
|
+
* Component says nothing rather than inventing a sentence.** A caller who sets
|
|
69
|
+
* `phase` to `invalid` on the way to a server response and passes `issues` as
|
|
70
|
+
* undefined is between two states, and the honest drawing is no summary, no
|
|
71
|
+
* announcement and no focus move until there is something to read. The cost is
|
|
72
|
+
* named rather than hidden: a caller in that state has a submit control labelled as
|
|
73
|
+
* a refusal with no explanation on the page, which is why `invalidLabel` is required
|
|
74
|
+
* and why the documentation says to set the phase when the issues arrive.
|
|
75
|
+
*
|
|
76
|
+
* **The submit control refuses a second press while one is running and says so
|
|
77
|
+
* rather than vanishing.** `aria-disabled` and not the native attribute, for the
|
|
78
|
+
* reason `Dropzone` and `LifecycleButton` both give: a natively disabled control
|
|
79
|
+
* leaves the tab order, so a reader tabs onto where it was, presses Enter and
|
|
80
|
+
* nothing happens with no announcement to explain it. Here the control keeps its
|
|
81
|
+
* place, keeps its ring, and announces itself as busy. The price is a tab stop that
|
|
82
|
+
* does nothing, which is what every disabled control costs and is why this package
|
|
83
|
+
* draws them rather than removing them.
|
|
84
|
+
*
|
|
85
|
+
* **The modal is `Dialog` and only `Dialog`, and the two refusals are the argument
|
|
86
|
+
* rather than a preference.** A `Popover` closes on an outside press, so for a form
|
|
87
|
+
* it means a reader who clicks the page behind has silently lost six fields of
|
|
88
|
+
* typing with no warning and no route back. An `AlertDialog` refuses dismissal
|
|
89
|
+
* outright, so for a form it is a trap: a twelve-field dialog with no outside press
|
|
90
|
+
* and no Escape is a surface a reader cannot leave once they are in it. `Dialog` is
|
|
91
|
+
* the only one of the three that can be dismissed and does not dismiss itself, and
|
|
92
|
+
* that is the property a form needs. The backdrop, the portal, the focus trap, the
|
|
93
|
+
* scroll lock and Escape are composed rather than reimplemented, for the reason
|
|
94
|
+
* every composition here is one: two implementations of a focus trap disagree
|
|
95
|
+
* within a release and a consumer cannot tell which they got.
|
|
96
|
+
*
|
|
97
|
+
* **It is a client Component**, because validation and submission happen after the
|
|
98
|
+
* reader acts, because the summary's focus move is script, and because every one of
|
|
99
|
+
* its value props is a function the caller hands it, which is a client-to-client
|
|
100
|
+
* boundary wherever it is written. What that costs is the price of every client
|
|
101
|
+
* control: a server Component may render this panel once with the form's values in
|
|
102
|
+
* place, and what it may not do is check them.
|
|
103
|
+
*/
|
|
104
|
+
function FormDialog({ open, onOpenChange, trigger, phase, onSubmit, validate, issues, title, description, idleLabel, invalidLabel, submittingLabel, failedLabel, errorSummaryLabel, fieldLabel, cancelLabel, closeLabel, children, extraActions, className, }) {
|
|
105
|
+
const generated = useId();
|
|
106
|
+
const headingId = `${generated}-errors`;
|
|
107
|
+
const formRef = useRef(null);
|
|
108
|
+
const summaryRef = useRef(null);
|
|
109
|
+
// The local check's result, held so the refusal can be drawn from a check this
|
|
110
|
+
// Component ran itself. Cleared the moment a submission is allowed through, so a
|
|
111
|
+
// later refusal never shows a stale message from an earlier attempt.
|
|
112
|
+
const [local, setLocal] = useState([]);
|
|
113
|
+
// The phase the last focus move was made from. The move happens on the
|
|
114
|
+
// transition into a refusal and not on every render while the reader is sitting
|
|
115
|
+
// on the summary, which is what stops a reader who tabs away and back from being
|
|
116
|
+
// dragged onto it again.
|
|
117
|
+
const movedFor = useRef('idle');
|
|
118
|
+
const refused = phase === 'invalid';
|
|
119
|
+
const shown = refused ? (issues ?? local) : [];
|
|
120
|
+
const running = phase === 'submitting';
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
if (!open) {
|
|
123
|
+
movedFor.current = 'idle';
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (!refused) {
|
|
127
|
+
movedFor.current = 'idle';
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (movedFor.current === 'invalid')
|
|
131
|
+
return;
|
|
132
|
+
movedFor.current = 'invalid';
|
|
133
|
+
// Only when there is something to read. A refusal with no issues drawn is the
|
|
134
|
+
// caller's own transitional state, and moving focus onto a region with no
|
|
135
|
+
// content is a reader being told there is a problem and then finding none.
|
|
136
|
+
if (shown.length > 0)
|
|
137
|
+
summaryRef.current?.focus();
|
|
138
|
+
}, [open, refused, shown.length]);
|
|
139
|
+
const submit = (event) => {
|
|
140
|
+
event.preventDefault();
|
|
141
|
+
if (running)
|
|
142
|
+
return;
|
|
143
|
+
const form = formRef.current;
|
|
144
|
+
if (form === null)
|
|
145
|
+
return;
|
|
146
|
+
if (validate === undefined) {
|
|
147
|
+
setLocal([]);
|
|
148
|
+
onSubmit(form);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const found = validate(new FormData(form), form);
|
|
152
|
+
setLocal(found);
|
|
153
|
+
// A refusal never reaches `onSubmit`, which is the whole distinction between a
|
|
154
|
+
// form that checks itself and one that asks a network whether it is allowed to
|
|
155
|
+
// try.
|
|
156
|
+
if (found.length > 0)
|
|
157
|
+
return;
|
|
158
|
+
onSubmit(form);
|
|
159
|
+
};
|
|
160
|
+
const label = running
|
|
161
|
+
? submittingLabel
|
|
162
|
+
: phase === 'failed'
|
|
163
|
+
? failedLabel
|
|
164
|
+
: refused
|
|
165
|
+
? invalidLabel
|
|
166
|
+
: idleLabel;
|
|
167
|
+
return (_jsxs(Dialog, { open: open, onOpenChange: onOpenChange, children: [_jsx(DialogTrigger, { "data-slot": "form-dialog-trigger", children: trigger }), _jsxs(DialogContent, { closeLabel: closeLabel, className: cn('max-w-overlay-form', className), children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: title }), description === undefined ? null : _jsx(DialogDescription, { children: description })] }), _jsxs("form", { ref: formRef, "data-slot": "form-dialog-form",
|
|
168
|
+
// The browser's own bubbles are off because this Component reports
|
|
169
|
+
// validity in one place, and a bubble over a styled message is two
|
|
170
|
+
// reports of one problem in two voices.
|
|
171
|
+
noValidate: true, onSubmit: submit, className: "flex flex-col gap-4", children: [children, shown.length === 0 ? null : (_jsxs(Field, { ref: summaryRef, "data-slot": "form-dialog-error-summary", "aria-labelledby": headingId, tabIndex: -1, className: cn(SUMMARY, SUMMARY_FOCUS), children: [_jsx("h2", { id: headingId, "data-slot": "form-dialog-error-summary-heading", className: "text-sm font-semibold", children: errorSummaryLabel }), _jsx("ul", { "data-slot": "form-dialog-issues", className: "mt-1 flex list-none flex-col gap-2", children: shown.map((issue) => (_jsxs("li", { "data-slot": "form-dialog-issue", children: [_jsx("a", { href: `#${issue.field}`, "data-slot": "form-dialog-issue-link", className: cn('hover:underline', 'focus-visible:ring-ring', 'rounded-sm text-sm font-medium', 'underline underline-offset-2 outline-none', 'focus-visible:ring-[3px]'), children: fieldLabel(issue.field) }), _jsx("p", { "data-slot": "form-dialog-issue-message", className: "text-sm", children: issue.message })] }, `${issue.field}:${issue.message}`))) })] })), _jsx(DialogFooter, { className: "mt-2", children: _jsxs("div", { "data-slot": "form-dialog-actions", className: "flex flex-wrap items-center gap-2", children: [extraActions, _jsx(Button, { "data-slot": "form-dialog-cancel", type: "button", variant: "outline", onClick: () => onOpenChange(false), children: cancelLabel }), _jsx(Button, { "data-slot": "form-dialog-submit", type: "submit", "aria-disabled": running || undefined, onClick: (event) => {
|
|
172
|
+
if (running)
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
}, children: label })] }) })] }), _jsx(LiveRegion, { "data-slot": "form-dialog-status", className: "sr-only", politeness: phase === 'failed' ? 'assertive' : 'polite', children: phase === 'failed' ? failedLabel : running ? submittingLabel : '' })] })] }));
|
|
175
|
+
}
|
|
176
|
+
export { FormDialog };
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* One thing wrong with a step, in the caller's own words.
|
|
4
|
+
*
|
|
5
|
+
* `field` is the `id` of the control the message belongs to and it is what makes a
|
|
6
|
+
* step's refusal actionable in the same way `FormDialog`'s summary is: an entry a
|
|
7
|
+
* reader cannot take to the control is a sentence they have to match by eye against
|
|
8
|
+
* a form they then have to read a second time.
|
|
9
|
+
*/
|
|
10
|
+
export type FormWizardIssue = {
|
|
11
|
+
/** The `id` of the control this message belongs to. */
|
|
12
|
+
field: string;
|
|
13
|
+
/** The message, in the product's own words. */
|
|
14
|
+
message: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* One step of a sequence a reader passes through in order.
|
|
18
|
+
*
|
|
19
|
+
* `id` is required because a step's record is what a caller keys their own per-step
|
|
20
|
+
* state on, and because a sequence whose entries have no identity is a sequence
|
|
21
|
+
* whose saved answers have nowhere to live.
|
|
22
|
+
*/
|
|
23
|
+
export type FormWizardStep = {
|
|
24
|
+
/** A stable key for the step. */
|
|
25
|
+
id: string;
|
|
26
|
+
/**
|
|
27
|
+
* The step's name, in the words a reader would use about it in conversation.
|
|
28
|
+
*
|
|
29
|
+
* A `string` and not a node, and the reason is the rail: the same word is drawn
|
|
30
|
+
* in `Steps` at a width a step gets in a six-step row, and `Steps` states that a
|
|
31
|
+
* label has to survive that width. So one word serves the rail and the heading,
|
|
32
|
+
* which is also the right way round, because a rail saying "Billing details" and a
|
|
33
|
+
* heading saying `<strong>Billing</strong> details` is two names for one step.
|
|
34
|
+
*/
|
|
35
|
+
label: string;
|
|
36
|
+
/** One line under the name saying what this step asks for, in plain words. */
|
|
37
|
+
description?: string;
|
|
38
|
+
/** The step's own controls. */
|
|
39
|
+
children?: ReactNode;
|
|
40
|
+
/**
|
|
41
|
+
* Called when the reader tries to leave this step forwards, given the step's own
|
|
42
|
+
* element.
|
|
43
|
+
*
|
|
44
|
+
* Optional per step rather than a rule on the whole sequence, and the reason is
|
|
45
|
+
* that a step which asks for nothing has nothing to refuse. A checkout's payment
|
|
46
|
+
* step validates and its review step does not, and one `validate` on the Component
|
|
47
|
+
* would have the caller write a branch per step to express what the absence of one
|
|
48
|
+
* already says.
|
|
49
|
+
*
|
|
50
|
+
* Returning issues refuses the move and nothing else. The caller is expected to
|
|
51
|
+
* set the step's own error state from the same source that produced them, because
|
|
52
|
+
* this Component cannot see the caller's controls and cannot mark them invalid.
|
|
53
|
+
*/
|
|
54
|
+
validate?: (form: HTMLFormElement) => readonly FormWizardIssue[];
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* The props a FormWizard accepts.
|
|
58
|
+
*
|
|
59
|
+
* Two halves, and the split is the argument. The *progress rail* is `Steps`, and it
|
|
60
|
+
* is composed rather than redrawn: it is an ordered indicator of position, it
|
|
61
|
+
* derives three marks from one number, and it throws when the marks disagree, which
|
|
62
|
+
* is a stronger guarantee than any arrangement drawn here. The *gate* is this
|
|
63
|
+
* Component's own, and it exists because a rail that shows progress and a sequence
|
|
64
|
+
* that gates it are different jobs, and upstream ships the second as the first with
|
|
65
|
+
* the decision left out.
|
|
66
|
+
*/
|
|
67
|
+
export interface FormWizardProps {
|
|
68
|
+
/**
|
|
69
|
+
* The steps, in order.
|
|
70
|
+
*
|
|
71
|
+
* Required, and the order is the claim: a reader told these are steps is told
|
|
72
|
+
* there is a route through them, so a list passed in an order the process does not
|
|
73
|
+
* have is a wrong diagram rather than a layout problem. The same constraint
|
|
74
|
+
* `Steps` states, for the same reason.
|
|
75
|
+
*/
|
|
76
|
+
steps: readonly FormWizardStep[];
|
|
77
|
+
/**
|
|
78
|
+
* The step the reader is on, counting from zero.
|
|
79
|
+
*
|
|
80
|
+
* Controlled and clamped, and clamped rather than optional for the reason
|
|
81
|
+
* `Steps` gives: a sequence with no position is a list and a list is a different
|
|
82
|
+
* Component. The clamp makes an off-by-one harmless, where the alternative was a
|
|
83
|
+
* throw on a value that is only wrong by one.
|
|
84
|
+
*/
|
|
85
|
+
current: number;
|
|
86
|
+
/**
|
|
87
|
+
* Called when the reader moves, given the step's index and which way they asked.
|
|
88
|
+
*
|
|
89
|
+
* Required, and the second argument is there because forward and back are not the
|
|
90
|
+
* same move and a caller whose rules differ by direction has to be able to tell
|
|
91
|
+
* them apart without reading the index. A refused forward press arrives here as
|
|
92
|
+
* nothing at all, so a caller who wants to know their validation ran hears it from
|
|
93
|
+
* the refusal list rather than from this callback.
|
|
94
|
+
*/
|
|
95
|
+
onStepChange: (index: number, direction: 'forward' | 'back') => void;
|
|
96
|
+
/**
|
|
97
|
+
* The sequence's own rules, given the step the reader is on.
|
|
98
|
+
*
|
|
99
|
+
* Required and separate from each step's own `validate`, because there are two
|
|
100
|
+
* questions and one of them is not about a step. A step's rules ask whether *this*
|
|
101
|
+
* step is complete. This asks whether the sequence as a whole may be submitted,
|
|
102
|
+
* which is a check no individual step can make: a review step has nothing to
|
|
103
|
+
* validate locally and the whole sequence may still be un-submittable because the
|
|
104
|
+
* terms were not accepted three steps ago.
|
|
105
|
+
*/
|
|
106
|
+
validate?: (index: number, form: HTMLFormElement) => readonly FormWizardIssue[];
|
|
107
|
+
/**
|
|
108
|
+
* The label of the control that goes back.
|
|
109
|
+
*
|
|
110
|
+
* Required and never defaulted, and the one label on this Component that is shown
|
|
111
|
+
* at every step: see the JSDoc for why back is the one direction a gate never
|
|
112
|
+
* closes.
|
|
113
|
+
*/
|
|
114
|
+
backLabel: ReactNode;
|
|
115
|
+
/**
|
|
116
|
+
* The label of the control that goes forward, on every step but the last.
|
|
117
|
+
*
|
|
118
|
+
* Required, and separate from the last step's label because "Next" and "Finish"
|
|
119
|
+
* are two different claims about what the press does, and a sequence whose last
|
|
120
|
+
* control says "Next" has not told the reader it is the end.
|
|
121
|
+
*/
|
|
122
|
+
nextLabel: ReactNode;
|
|
123
|
+
/**
|
|
124
|
+
* The label of the control on the last step, which submits rather than advances.
|
|
125
|
+
*
|
|
126
|
+
* Required, and a separate prop rather than a computed one because both labels are
|
|
127
|
+
* a product's two words and this package knows neither of them.
|
|
128
|
+
*/
|
|
129
|
+
finishLabel: ReactNode;
|
|
130
|
+
/**
|
|
131
|
+
* The heading above the refusal.
|
|
132
|
+
*
|
|
133
|
+
* Required, and a heading rather than a sentence because the refusal list is a
|
|
134
|
+
* focus target and a reader who lands on it needs to know what they have landed on
|
|
135
|
+
* before they read the list.
|
|
136
|
+
*/
|
|
137
|
+
blockedLabel: ReactNode;
|
|
138
|
+
/**
|
|
139
|
+
* The accessible name of the progress rail.
|
|
140
|
+
*
|
|
141
|
+
* Required, and the sequence's noun rather than this Component's: a page with a
|
|
142
|
+
* checkout and an onboarding wizard on it has two rails, and a reader moving
|
|
143
|
+
* between them is told nothing about which they are in.
|
|
144
|
+
*/
|
|
145
|
+
progressLabel: string;
|
|
146
|
+
/**
|
|
147
|
+
* The accessible name of one control in the refusal list, given the field the
|
|
148
|
+
* issue belongs to.
|
|
149
|
+
*
|
|
150
|
+
* Required, and a function of the field rather than of the message for the reason
|
|
151
|
+
* every readable string here is one. It is also what lets an entry name the
|
|
152
|
+
* *control* rather than repeat the sentence beside it.
|
|
153
|
+
*/
|
|
154
|
+
issueLabel: (field: string) => string;
|
|
155
|
+
/**
|
|
156
|
+
* The words for this sequence's keyboard model, read once when the reader lands on
|
|
157
|
+
* the step's region.
|
|
158
|
+
*
|
|
159
|
+
* Required, because a gated sequence is a place a reader can get stuck and the one
|
|
160
|
+
* thing they need while stuck is that going back is always allowed. One sentence
|
|
161
|
+
* for the whole sequence, since it is the same sentence at every step.
|
|
162
|
+
*/
|
|
163
|
+
instructionsLabel: string;
|
|
164
|
+
/** The reader's own slot, for anything above or below the step's controls. */
|
|
165
|
+
children?: ReactNode;
|
|
166
|
+
/** Layout only. Changing a Prism-owned visual property from here is prohibited. */
|
|
167
|
+
className?: string;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* A sequence of steps where each one gates the way forward and none of them gates
|
|
171
|
+
* the way back.
|
|
172
|
+
*
|
|
173
|
+
* **This is not `Steps`, and the difference is a check rather than a drawing.**
|
|
174
|
+
* `Steps` is an ordered indicator of where a reader is: it derives three marks from
|
|
175
|
+
* one number, it marks the current step with `aria-current`, and it throws when the
|
|
176
|
+
* marks disagree, which is a stronger guarantee than any arrangement drawn here. It
|
|
177
|
+
* has no opinion at all about whether a reader may move, because showing a reader
|
|
178
|
+
* their position and deciding whether they may leave it are different jobs, and
|
|
179
|
+
* upstream ships the second as the first with the decision left out. A caller who
|
|
180
|
+
* wants a rail composes `Steps`; a caller who reaches for `Tabs` has picked the wrong
|
|
181
|
+
* Component, because a tab list is peer views of one subject and a wizard's steps are
|
|
182
|
+
* a route through it.
|
|
183
|
+
*
|
|
184
|
+
* **Back is always allowed, and that asymmetry is the whole Component.** Forward is
|
|
185
|
+
* gated, and the gate is the point: a wizard exists to stop a reader submitting a
|
|
186
|
+
* sequence with a hole in it, and a step's rules are how it knows there is one. Back
|
|
187
|
+
* is not, for a reason that is about the reader rather than about the data. A gated
|
|
188
|
+
* back control traps a reader in the very step they opened the wizard to escape:
|
|
189
|
+
* they have opened step two, found it asks for something they do not have, and
|
|
190
|
+
* pressing back does nothing either. No arrangement of the data makes that
|
|
191
|
+
* acceptable and the fix is not a better error message, it is that going back is
|
|
192
|
+
* always available. So the back control is drawn, named and operable at every step
|
|
193
|
+
* including the first, where it is inert rather than absent: a control that appears
|
|
194
|
+
* and disappears moves the row a reader is aiming at, and its absence on step one
|
|
195
|
+
* would be a claim that there is nothing before here, which is true and not worth a
|
|
196
|
+
* layout shift to say. On the first step it is `aria-disabled` rather than natively
|
|
197
|
+
* `disabled`, for the reason `LifecycleButton` gives: a natively disabled control
|
|
198
|
+
* leaves the tab order, so a reader tabs onto where it was, presses Enter and nothing
|
|
199
|
+
* happens with no announcement to explain it.
|
|
200
|
+
*
|
|
201
|
+
* **A refused forward move takes focus to the refusal and announces nothing else.**
|
|
202
|
+
* The same reasoning as `FormDialog`, and the two are kept consistent on purpose: a
|
|
203
|
+
* refusal is announced once, by a focus target the reader lands on and can read
|
|
204
|
+
* from, rather than by an alert *and* a focus move, which is one refusal heard twice
|
|
205
|
+
* in two voices. The list is a list of anchors, each carrying the field's own name
|
|
206
|
+
* with the message beneath it. Focus moves once per refusal rather than on every
|
|
207
|
+
* render, so a reader who tabs away and comes back is not dragged onto it again, and
|
|
208
|
+
* the Component holds no live region at all for the same reason: a permanently
|
|
209
|
+
* mounted one would announce the refusal a second time when the move commits.
|
|
210
|
+
*
|
|
211
|
+
* **The gate is the caller's and the drawing is Prism's.** Each step's own
|
|
212
|
+
* `validate` decides whether its step may be left forwards, and this Component
|
|
213
|
+
* refuses the move and draws what came back. It never marks a control invalid and
|
|
214
|
+
* never shows a message under one, because it cannot see the caller's form: the
|
|
215
|
+
* caller's fields are their own `Field`s and their own `Input`s, and reaching into
|
|
216
|
+
* them would be the override path this package refuses everywhere else. The cost is
|
|
217
|
+
* named rather than hidden: a caller has to render each message under its control as
|
|
218
|
+
* well as in the refusal list, and a caller who does only the first has a list a
|
|
219
|
+
* reader can follow and controls that do not say why. That is two renderings of one
|
|
220
|
+
* sentence, and it is the price of the caller owning the form.
|
|
221
|
+
*
|
|
222
|
+
* **Forward is gated twice over and the order matters.** The step's own rules run
|
|
223
|
+
* first, because they are about the reader's answers, and the sequence's own rules
|
|
224
|
+
* second, because they are about the submission. A step that fails its own rules
|
|
225
|
+
* never reaches the sequence's, which is what stops a reader being told their card
|
|
226
|
+
* was declined when the field they left empty was the problem.
|
|
227
|
+
*
|
|
228
|
+
* **The last step's control is a different prop and not a computed label.** `next`
|
|
229
|
+
* and `finish` are two claims about what the press does, and a sequence whose last
|
|
230
|
+
* control says "Next" has not told the reader it is the end, while one that says
|
|
231
|
+
* "Finish" and then opens step four has lied about something a reader will act on.
|
|
232
|
+
* Both are required and neither has a default, because this package does not know
|
|
233
|
+
* whether the product's word is "Continue", "Weiter" or "Siguiente".
|
|
234
|
+
*
|
|
235
|
+
* **`Steps` is composed at the position the rail belongs rather than inside a
|
|
236
|
+
* wrapper.** The reader sees the rail above the step, the step's own controls in the
|
|
237
|
+
* middle and the two directions below, and a wizard whose rail is somewhere else is a
|
|
238
|
+
* wizard whose progress is somewhere else in the reader's eye. The rail reads the
|
|
239
|
+
* same index the navigation moves, so the two cannot disagree about which step is
|
|
240
|
+
* current.
|
|
241
|
+
*
|
|
242
|
+
* **It is a client Component**, because a gate is a decision taken after the reader
|
|
243
|
+
* acts and the decision has to be able to refuse, and because every one of its value
|
|
244
|
+
* props is a function the caller hands it, which is a client-to-client boundary
|
|
245
|
+
* wherever it is written. What that costs is the price of every client control: a
|
|
246
|
+
* server Component may render one step's controls once, and what it may not do is let
|
|
247
|
+
* the reader move between them.
|
|
248
|
+
*/
|
|
249
|
+
declare function FormWizard({ steps, current, onStepChange, validate, backLabel, nextLabel, finishLabel, blockedLabel, progressLabel, issueLabel, instructionsLabel, children, className, }: FormWizardProps): import("react").JSX.Element;
|
|
250
|
+
export { FormWizard };
|
|
251
|
+
//# sourceMappingURL=form-wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-wizard.d.ts","sourceRoot":"","sources":["../../../src/components/ui/form-wizard.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAM1E;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAA;IACV;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,SAAS,eAAe,EAAE,CAAA;CACjE,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;OAOG;IACH,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;IAChC;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;;;OAQG;IACH,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,KAAK,IAAI,CAAA;IACpE;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,KAAK,SAAS,eAAe,EAAE,CAAA;IAC/E;;;;;;OAMG;IACH,SAAS,EAAE,SAAS,CAAA;IACpB;;;;;;OAMG;IACH,SAAS,EAAE,SAAS,CAAA;IACpB;;;;;OAKG;IACH,WAAW,EAAE,SAAS,CAAA;IACtB;;;;;;OAMG;IACH,YAAY,EAAE,SAAS,CAAA;IACvB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;;;OAOG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACrC;;;;;;;OAOG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,iBAAS,UAAU,CAAC,EAClB,KAAK,EACL,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,SAAS,GACV,EAAE,eAAe,+BA+NjB;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';
|
|
4
|
+
import { useEffect, useId, useRef, useState } from 'react';
|
|
5
|
+
import { Button } from './button.js';
|
|
6
|
+
import { Steps } from './steps.js';
|
|
7
|
+
import { cn } from '../../lib/utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* A sequence of steps where each one gates the way forward and none of them gates
|
|
10
|
+
* the way back.
|
|
11
|
+
*
|
|
12
|
+
* **This is not `Steps`, and the difference is a check rather than a drawing.**
|
|
13
|
+
* `Steps` is an ordered indicator of where a reader is: it derives three marks from
|
|
14
|
+
* one number, it marks the current step with `aria-current`, and it throws when the
|
|
15
|
+
* marks disagree, which is a stronger guarantee than any arrangement drawn here. It
|
|
16
|
+
* has no opinion at all about whether a reader may move, because showing a reader
|
|
17
|
+
* their position and deciding whether they may leave it are different jobs, and
|
|
18
|
+
* upstream ships the second as the first with the decision left out. A caller who
|
|
19
|
+
* wants a rail composes `Steps`; a caller who reaches for `Tabs` has picked the wrong
|
|
20
|
+
* Component, because a tab list is peer views of one subject and a wizard's steps are
|
|
21
|
+
* a route through it.
|
|
22
|
+
*
|
|
23
|
+
* **Back is always allowed, and that asymmetry is the whole Component.** Forward is
|
|
24
|
+
* gated, and the gate is the point: a wizard exists to stop a reader submitting a
|
|
25
|
+
* sequence with a hole in it, and a step's rules are how it knows there is one. Back
|
|
26
|
+
* is not, for a reason that is about the reader rather than about the data. A gated
|
|
27
|
+
* back control traps a reader in the very step they opened the wizard to escape:
|
|
28
|
+
* they have opened step two, found it asks for something they do not have, and
|
|
29
|
+
* pressing back does nothing either. No arrangement of the data makes that
|
|
30
|
+
* acceptable and the fix is not a better error message, it is that going back is
|
|
31
|
+
* always available. So the back control is drawn, named and operable at every step
|
|
32
|
+
* including the first, where it is inert rather than absent: a control that appears
|
|
33
|
+
* and disappears moves the row a reader is aiming at, and its absence on step one
|
|
34
|
+
* would be a claim that there is nothing before here, which is true and not worth a
|
|
35
|
+
* layout shift to say. On the first step it is `aria-disabled` rather than natively
|
|
36
|
+
* `disabled`, for the reason `LifecycleButton` gives: a natively disabled control
|
|
37
|
+
* leaves the tab order, so a reader tabs onto where it was, presses Enter and nothing
|
|
38
|
+
* happens with no announcement to explain it.
|
|
39
|
+
*
|
|
40
|
+
* **A refused forward move takes focus to the refusal and announces nothing else.**
|
|
41
|
+
* The same reasoning as `FormDialog`, and the two are kept consistent on purpose: a
|
|
42
|
+
* refusal is announced once, by a focus target the reader lands on and can read
|
|
43
|
+
* from, rather than by an alert *and* a focus move, which is one refusal heard twice
|
|
44
|
+
* in two voices. The list is a list of anchors, each carrying the field's own name
|
|
45
|
+
* with the message beneath it. Focus moves once per refusal rather than on every
|
|
46
|
+
* render, so a reader who tabs away and comes back is not dragged onto it again, and
|
|
47
|
+
* the Component holds no live region at all for the same reason: a permanently
|
|
48
|
+
* mounted one would announce the refusal a second time when the move commits.
|
|
49
|
+
*
|
|
50
|
+
* **The gate is the caller's and the drawing is Prism's.** Each step's own
|
|
51
|
+
* `validate` decides whether its step may be left forwards, and this Component
|
|
52
|
+
* refuses the move and draws what came back. It never marks a control invalid and
|
|
53
|
+
* never shows a message under one, because it cannot see the caller's form: the
|
|
54
|
+
* caller's fields are their own `Field`s and their own `Input`s, and reaching into
|
|
55
|
+
* them would be the override path this package refuses everywhere else. The cost is
|
|
56
|
+
* named rather than hidden: a caller has to render each message under its control as
|
|
57
|
+
* well as in the refusal list, and a caller who does only the first has a list a
|
|
58
|
+
* reader can follow and controls that do not say why. That is two renderings of one
|
|
59
|
+
* sentence, and it is the price of the caller owning the form.
|
|
60
|
+
*
|
|
61
|
+
* **Forward is gated twice over and the order matters.** The step's own rules run
|
|
62
|
+
* first, because they are about the reader's answers, and the sequence's own rules
|
|
63
|
+
* second, because they are about the submission. A step that fails its own rules
|
|
64
|
+
* never reaches the sequence's, which is what stops a reader being told their card
|
|
65
|
+
* was declined when the field they left empty was the problem.
|
|
66
|
+
*
|
|
67
|
+
* **The last step's control is a different prop and not a computed label.** `next`
|
|
68
|
+
* and `finish` are two claims about what the press does, and a sequence whose last
|
|
69
|
+
* control says "Next" has not told the reader it is the end, while one that says
|
|
70
|
+
* "Finish" and then opens step four has lied about something a reader will act on.
|
|
71
|
+
* Both are required and neither has a default, because this package does not know
|
|
72
|
+
* whether the product's word is "Continue", "Weiter" or "Siguiente".
|
|
73
|
+
*
|
|
74
|
+
* **`Steps` is composed at the position the rail belongs rather than inside a
|
|
75
|
+
* wrapper.** The reader sees the rail above the step, the step's own controls in the
|
|
76
|
+
* middle and the two directions below, and a wizard whose rail is somewhere else is a
|
|
77
|
+
* wizard whose progress is somewhere else in the reader's eye. The rail reads the
|
|
78
|
+
* same index the navigation moves, so the two cannot disagree about which step is
|
|
79
|
+
* current.
|
|
80
|
+
*
|
|
81
|
+
* **It is a client Component**, because a gate is a decision taken after the reader
|
|
82
|
+
* acts and the decision has to be able to refuse, and because every one of its value
|
|
83
|
+
* props is a function the caller hands it, which is a client-to-client boundary
|
|
84
|
+
* wherever it is written. What that costs is the price of every client control: a
|
|
85
|
+
* server Component may render one step's controls once, and what it may not do is let
|
|
86
|
+
* the reader move between them.
|
|
87
|
+
*/
|
|
88
|
+
function FormWizard({ steps, current, onStepChange, validate, backLabel, nextLabel, finishLabel, blockedLabel, progressLabel, issueLabel, instructionsLabel, children, className, }) {
|
|
89
|
+
const generated = useId();
|
|
90
|
+
const instructionsId = `${generated}-instructions`;
|
|
91
|
+
const labelId = `${generated}-label`;
|
|
92
|
+
const blockedId = `${generated}-blocked`;
|
|
93
|
+
const formRef = useRef(null);
|
|
94
|
+
const refusedRef = useRef(null);
|
|
95
|
+
const [refused, setRefused] = useState([]);
|
|
96
|
+
const total = steps.length;
|
|
97
|
+
const at = total === 0 ? 0 : Math.min(Math.max(Math.trunc(current), 0), total - 1);
|
|
98
|
+
const step = steps[at];
|
|
99
|
+
const last = at === total - 1;
|
|
100
|
+
const leave = (direction) => {
|
|
101
|
+
const form = formRef.current;
|
|
102
|
+
if (form === null)
|
|
103
|
+
return;
|
|
104
|
+
if (direction === 'back') {
|
|
105
|
+
// The asymmetry, in one branch. Nothing is checked, nothing is refused, and
|
|
106
|
+
// the callback fires whatever this step's rules would have said, because a
|
|
107
|
+
// reader who has opened the wrong step has to be able to get out of it. The
|
|
108
|
+
// refusal is cleared rather than left standing, because a message about step
|
|
109
|
+
// two shown while the reader reads step one is a message about a form they
|
|
110
|
+
// are no longer in.
|
|
111
|
+
setRefused([]);
|
|
112
|
+
if (at > 0)
|
|
113
|
+
onStepChange(at - 1, 'back');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Forward, gated twice, and the order is the argument. The step's own rules ask
|
|
117
|
+
// whether this step is complete; the sequence's ask whether the whole thing may
|
|
118
|
+
// be submitted. A step that fails its own rules never reaches the sequence's,
|
|
119
|
+
// which is what stops a reader being told their card was declined when the
|
|
120
|
+
// field they left empty was the problem.
|
|
121
|
+
const own = step.validate === undefined ? [] : step.validate(form);
|
|
122
|
+
if (own.length > 0) {
|
|
123
|
+
setRefused(own);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const whole = validate === undefined ? [] : validate(at, form);
|
|
127
|
+
if (whole.length > 0) {
|
|
128
|
+
setRefused(whole);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
setRefused([]);
|
|
132
|
+
onStepChange(last ? at : at + 1, 'forward');
|
|
133
|
+
};
|
|
134
|
+
// The focus move, once per refusal. The dependency is the length rather than the
|
|
135
|
+
// array itself, because the caller builds a fresh array on every check and
|
|
136
|
+
// depending on its identity would move the reader's focus on every render.
|
|
137
|
+
useEffect(() => {
|
|
138
|
+
if (refused.length === 0)
|
|
139
|
+
return;
|
|
140
|
+
refusedRef.current?.focus();
|
|
141
|
+
}, [refused.length]);
|
|
142
|
+
return (_jsxs("div", { "data-slot": "form-wizard", className: cn('flex w-full flex-col gap-6', className), children: [_jsx(Steps, { steps: steps, current: at, label: progressLabel }), _jsx("span", { id: instructionsId, "data-slot": "form-wizard-instructions", className: "sr-only", children: instructionsLabel }), _jsxs("form", { ref: formRef, "data-slot": "form-wizard-form", noValidate: true, role: "group", "aria-labelledby": labelId, "aria-describedby": instructionsId, onSubmit: (event) => {
|
|
143
|
+
event.preventDefault();
|
|
144
|
+
leave('forward');
|
|
145
|
+
}, className: "flex flex-col gap-4", children: [_jsxs("div", { "data-slot": "form-wizard-heading", className: "flex flex-col gap-1", children: [_jsx("h2", { id: labelId, "data-slot": "form-wizard-step-label", className: "text-lg font-semibold tracking-tight", children: step.label }), step.description === undefined ? null : (_jsx("p", { "data-slot": "form-wizard-step-description", className: "text-muted-foreground text-sm", children: step.description }))] }), refused.length === 0 ? null : (_jsxs("div", { ref: refusedRef, "data-slot": "form-wizard-refusal", role: "group", "aria-labelledby": blockedId, tabIndex: -1, className: cn('border-destructive/40 bg-destructive/5 text-destructive', 'focus-visible:ring-ring', 'rounded-md border p-3 outline-none', 'focus-visible:ring-[3px]'), children: [_jsx("h3", { id: blockedId, "data-slot": "form-wizard-refusal-label", className: "text-sm font-semibold", children: blockedLabel }), _jsx("ul", { "data-slot": "form-wizard-issues", className: "mt-1 flex list-none flex-col gap-2", children: refused.map((issue) => (_jsxs("li", { "data-slot": "form-wizard-issue", children: [_jsx("a", { href: `#${issue.field}`, "data-slot": "form-wizard-issue-link", className: cn('hover:underline', 'focus-visible:ring-ring', 'rounded-sm text-sm font-medium', 'underline underline-offset-2 outline-none', 'focus-visible:ring-[3px]'), children: issueLabel(issue.field) }), _jsx("p", { "data-slot": "form-wizard-issue-message", className: "text-sm", children: issue.message })] }, `${issue.field}:${issue.message}`))) })] })), _jsx("div", { "data-slot": "form-wizard-step", className: "flex flex-col gap-4", children: step.children }), children, _jsxs("div", { "data-slot": "form-wizard-navigation", className: "flex items-center gap-2", children: [_jsxs(Button, { "data-slot": "form-wizard-back", type: "button", variant: "ghost", "aria-disabled": at === 0 || undefined, onClick: () => {
|
|
146
|
+
if (at === 0)
|
|
147
|
+
return;
|
|
148
|
+
leave('back');
|
|
149
|
+
}, children: [_jsx(ChevronLeftIcon, { "aria-hidden": "true" }), backLabel] }), _jsxs(Button, { "data-slot": "form-wizard-forward", type: "submit", variant: "default", className: "ms-auto", children: [last ? finishLabel : nextLabel, last ? null : _jsx(ChevronRightIcon, { "aria-hidden": "true" })] })] })] })] }));
|
|
150
|
+
}
|
|
151
|
+
export { FormWizard };
|