@nanisoft/prism-ui 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +22 -7
- package/dist/.tsbuildinfo +1 -1
- package/dist/blocks/about-01/about.d.ts +296 -0
- package/dist/blocks/about-01/about.d.ts.map +1 -0
- package/dist/blocks/about-01/about.js +103 -0
- package/dist/blocks/about-01/index.d.ts +3 -0
- package/dist/blocks/about-01/index.d.ts.map +1 -0
- package/dist/blocks/about-01/index.js +1 -0
- package/dist/blocks/accept-invite-01/accept-invite.d.ts +324 -0
- package/dist/blocks/accept-invite-01/accept-invite.d.ts.map +1 -0
- package/dist/blocks/accept-invite-01/accept-invite.js +230 -0
- package/dist/blocks/accept-invite-01/index.d.ts +3 -0
- package/dist/blocks/accept-invite-01/index.d.ts.map +1 -0
- package/dist/blocks/accept-invite-01/index.js +1 -0
- package/dist/blocks/account-01/account-01.d.ts +393 -0
- package/dist/blocks/account-01/account-01.d.ts.map +1 -0
- package/dist/blocks/account-01/account-01.js +215 -0
- package/dist/blocks/account-01/index.d.ts +3 -0
- package/dist/blocks/account-01/index.d.ts.map +1 -0
- package/dist/blocks/account-01/index.js +1 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.d.ts +271 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.d.ts.map +1 -0
- package/dist/blocks/activity-feed-01/activity-feed-01.js +185 -0
- package/dist/blocks/activity-feed-01/index.d.ts +3 -0
- package/dist/blocks/activity-feed-01/index.d.ts.map +1 -0
- package/dist/blocks/activity-feed-01/index.js +1 -0
- package/dist/blocks/address-book-01/address-book-01.d.ts +312 -0
- package/dist/blocks/address-book-01/address-book-01.d.ts.map +1 -0
- package/dist/blocks/address-book-01/address-book-01.js +233 -0
- package/dist/blocks/address-book-01/index.d.ts +3 -0
- package/dist/blocks/address-book-01/index.d.ts.map +1 -0
- package/dist/blocks/address-book-01/index.js +1 -0
- package/dist/blocks/audit-log-01/audit-log-01.d.ts +333 -0
- package/dist/blocks/audit-log-01/audit-log-01.d.ts.map +1 -0
- package/dist/blocks/audit-log-01/audit-log-01.js +211 -0
- package/dist/blocks/audit-log-01/index.d.ts +3 -0
- package/dist/blocks/audit-log-01/index.d.ts.map +1 -0
- package/dist/blocks/audit-log-01/index.js +1 -0
- package/dist/blocks/auth-form-01/auth-form.d.ts +40 -1
- package/dist/blocks/auth-form-01/auth-form.d.ts.map +1 -1
- package/dist/blocks/auth-form-01/auth-form.js +26 -3
- package/dist/blocks/awards-01/awards.d.ts +156 -0
- package/dist/blocks/awards-01/awards.d.ts.map +1 -0
- package/dist/blocks/awards-01/awards.js +102 -0
- package/dist/blocks/awards-01/index.d.ts +3 -0
- package/dist/blocks/awards-01/index.d.ts.map +1 -0
- package/dist/blocks/awards-01/index.js +1 -0
- package/dist/blocks/backdrop-01/backdrop.d.ts +268 -0
- package/dist/blocks/backdrop-01/backdrop.d.ts.map +1 -0
- package/dist/blocks/backdrop-01/backdrop.js +170 -0
- package/dist/blocks/backdrop-01/index.d.ts +3 -0
- package/dist/blocks/backdrop-01/index.d.ts.map +1 -0
- package/dist/blocks/backdrop-01/index.js +1 -0
- package/dist/blocks/bento-01/bento-01.d.ts +136 -0
- package/dist/blocks/bento-01/bento-01.d.ts.map +1 -0
- package/dist/blocks/bento-01/bento-01.js +97 -0
- package/dist/blocks/bento-01/index.d.ts +3 -0
- package/dist/blocks/bento-01/index.d.ts.map +1 -0
- package/dist/blocks/bento-01/index.js +1 -0
- package/dist/blocks/billing-source-01/billing-source-01.d.ts +379 -0
- package/dist/blocks/billing-source-01/billing-source-01.d.ts.map +1 -0
- package/dist/blocks/billing-source-01/billing-source-01.js +222 -0
- package/dist/blocks/billing-source-01/index.d.ts +3 -0
- package/dist/blocks/billing-source-01/index.d.ts.map +1 -0
- package/dist/blocks/billing-source-01/index.js +1 -0
- package/dist/blocks/bundle-01/bundle.d.ts +387 -0
- package/dist/blocks/bundle-01/bundle.d.ts.map +1 -0
- package/dist/blocks/bundle-01/bundle.js +153 -0
- package/dist/blocks/bundle-01/index.d.ts +3 -0
- package/dist/blocks/bundle-01/index.d.ts.map +1 -0
- package/dist/blocks/bundle-01/index.js +1 -0
- package/dist/blocks/calendar-01/calendar.d.ts +251 -0
- package/dist/blocks/calendar-01/calendar.d.ts.map +1 -0
- package/dist/blocks/calendar-01/calendar.js +191 -0
- package/dist/blocks/calendar-01/index.d.ts +3 -0
- package/dist/blocks/calendar-01/index.d.ts.map +1 -0
- package/dist/blocks/calendar-01/index.js +1 -0
- package/dist/blocks/capacity-01/capacity.d.ts +363 -0
- package/dist/blocks/capacity-01/capacity.d.ts.map +1 -0
- package/dist/blocks/capacity-01/capacity.js +208 -0
- package/dist/blocks/capacity-01/index.d.ts +3 -0
- package/dist/blocks/capacity-01/index.d.ts.map +1 -0
- package/dist/blocks/capacity-01/index.js +1 -0
- package/dist/blocks/careers-01/careers.d.ts +186 -0
- package/dist/blocks/careers-01/careers.d.ts.map +1 -0
- package/dist/blocks/careers-01/careers.js +83 -0
- package/dist/blocks/careers-01/index.d.ts +3 -0
- package/dist/blocks/careers-01/index.d.ts.map +1 -0
- package/dist/blocks/careers-01/index.js +1 -0
- package/dist/blocks/case-studies-01/case-studies.d.ts +192 -0
- package/dist/blocks/case-studies-01/case-studies.d.ts.map +1 -0
- package/dist/blocks/case-studies-01/case-studies.js +97 -0
- package/dist/blocks/case-studies-01/index.d.ts +3 -0
- package/dist/blocks/case-studies-01/index.d.ts.map +1 -0
- package/dist/blocks/case-studies-01/index.js +1 -0
- package/dist/blocks/case-study-01/case-study.d.ts +214 -0
- package/dist/blocks/case-study-01/case-study.d.ts.map +1 -0
- package/dist/blocks/case-study-01/case-study.js +79 -0
- package/dist/blocks/case-study-01/index.d.ts +3 -0
- package/dist/blocks/case-study-01/index.d.ts.map +1 -0
- package/dist/blocks/case-study-01/index.js +1 -0
- package/dist/blocks/changelog-01/changelog.d.ts +200 -0
- package/dist/blocks/changelog-01/changelog.d.ts.map +1 -0
- package/dist/blocks/changelog-01/changelog.js +155 -0
- package/dist/blocks/changelog-01/index.d.ts +3 -0
- package/dist/blocks/changelog-01/index.d.ts.map +1 -0
- package/dist/blocks/changelog-01/index.js +1 -0
- package/dist/blocks/chart-card-01/chart-card-01.d.ts +149 -0
- package/dist/blocks/chart-card-01/chart-card-01.d.ts.map +1 -0
- package/dist/blocks/chart-card-01/chart-card-01.js +81 -0
- package/dist/blocks/chart-card-01/index.d.ts +3 -0
- package/dist/blocks/chart-card-01/index.d.ts.map +1 -0
- package/dist/blocks/chart-card-01/index.js +1 -0
- package/dist/blocks/chart-group-01/chart-group-01.d.ts +138 -0
- package/dist/blocks/chart-group-01/chart-group-01.d.ts.map +1 -0
- package/dist/blocks/chart-group-01/chart-group-01.js +74 -0
- package/dist/blocks/chart-group-01/index.d.ts +3 -0
- package/dist/blocks/chart-group-01/index.d.ts.map +1 -0
- package/dist/blocks/chart-group-01/index.js +1 -0
- package/dist/blocks/code-sample-01/code-sample.d.ts +193 -0
- package/dist/blocks/code-sample-01/code-sample.d.ts.map +1 -0
- package/dist/blocks/code-sample-01/code-sample.js +104 -0
- package/dist/blocks/code-sample-01/index.d.ts +3 -0
- package/dist/blocks/code-sample-01/index.d.ts.map +1 -0
- package/dist/blocks/code-sample-01/index.js +1 -0
- package/dist/blocks/community-01/community.d.ts +183 -0
- package/dist/blocks/community-01/community.d.ts.map +1 -0
- package/dist/blocks/community-01/community.js +102 -0
- package/dist/blocks/community-01/index.d.ts +3 -0
- package/dist/blocks/community-01/index.d.ts.map +1 -0
- package/dist/blocks/community-01/index.js +1 -0
- package/dist/blocks/compare-01/compare.d.ts +184 -0
- package/dist/blocks/compare-01/compare.d.ts.map +1 -0
- package/dist/blocks/compare-01/compare.js +106 -0
- package/dist/blocks/compare-01/index.d.ts +3 -0
- package/dist/blocks/compare-01/index.d.ts.map +1 -0
- package/dist/blocks/compare-01/index.js +1 -0
- package/dist/blocks/compliance-01/compliance.d.ts +249 -0
- package/dist/blocks/compliance-01/compliance.d.ts.map +1 -0
- package/dist/blocks/compliance-01/compliance.js +130 -0
- package/dist/blocks/compliance-01/index.d.ts +3 -0
- package/dist/blocks/compliance-01/index.d.ts.map +1 -0
- package/dist/blocks/compliance-01/index.js +1 -0
- package/dist/blocks/consent-01/consent.d.ts +211 -0
- package/dist/blocks/consent-01/consent.d.ts.map +1 -0
- package/dist/blocks/consent-01/consent.js +101 -0
- package/dist/blocks/consent-01/index.d.ts +3 -0
- package/dist/blocks/consent-01/index.d.ts.map +1 -0
- package/dist/blocks/consent-01/index.js +1 -0
- package/dist/blocks/contact-01/contact.d.ts +319 -0
- package/dist/blocks/contact-01/contact.d.ts.map +1 -0
- package/dist/blocks/contact-01/contact.js +211 -0
- package/dist/blocks/contact-01/index.d.ts +3 -0
- package/dist/blocks/contact-01/index.d.ts.map +1 -0
- package/dist/blocks/contact-01/index.js +1 -0
- package/dist/blocks/content-grid-01/content-grid.d.ts +262 -0
- package/dist/blocks/content-grid-01/content-grid.d.ts.map +1 -0
- package/dist/blocks/content-grid-01/content-grid.js +155 -0
- package/dist/blocks/content-grid-01/index.d.ts +3 -0
- package/dist/blocks/content-grid-01/index.d.ts.map +1 -0
- package/dist/blocks/content-grid-01/index.js +1 -0
- package/dist/blocks/cta-01/cta.d.ts +7 -1
- package/dist/blocks/cta-01/cta.d.ts.map +1 -1
- package/dist/blocks/cta-01/cta.js +11 -2
- package/dist/blocks/dashboard-01/dashboard-01.d.ts +247 -0
- package/dist/blocks/dashboard-01/dashboard-01.d.ts.map +1 -0
- package/dist/blocks/dashboard-01/dashboard-01.js +141 -0
- package/dist/blocks/dashboard-01/index.d.ts +3 -0
- package/dist/blocks/dashboard-01/index.d.ts.map +1 -0
- package/dist/blocks/dashboard-01/index.js +1 -0
- package/dist/blocks/data-table-01/data-table.d.ts +12 -1
- package/dist/blocks/data-table-01/data-table.d.ts.map +1 -1
- package/dist/blocks/data-table-01/data-table.js +8 -5
- package/dist/blocks/delivery-01/delivery.d.ts +343 -0
- package/dist/blocks/delivery-01/delivery.d.ts.map +1 -0
- package/dist/blocks/delivery-01/delivery.js +212 -0
- package/dist/blocks/delivery-01/index.d.ts +3 -0
- package/dist/blocks/delivery-01/index.d.ts.map +1 -0
- package/dist/blocks/delivery-01/index.js +1 -0
- package/dist/blocks/directory-01/directory-01.d.ts +316 -0
- package/dist/blocks/directory-01/directory-01.d.ts.map +1 -0
- package/dist/blocks/directory-01/directory-01.js +252 -0
- package/dist/blocks/directory-01/index.d.ts +3 -0
- package/dist/blocks/directory-01/index.d.ts.map +1 -0
- package/dist/blocks/directory-01/index.js +1 -0
- package/dist/blocks/download-01/download.d.ts +261 -0
- package/dist/blocks/download-01/download.d.ts.map +1 -0
- package/dist/blocks/download-01/download.js +115 -0
- package/dist/blocks/download-01/index.d.ts +3 -0
- package/dist/blocks/download-01/index.d.ts.map +1 -0
- package/dist/blocks/download-01/index.js +1 -0
- package/dist/blocks/faq-01/faq.d.ts +128 -0
- package/dist/blocks/faq-01/faq.d.ts.map +1 -0
- package/dist/blocks/faq-01/faq.js +53 -0
- package/dist/blocks/faq-01/index.d.ts +3 -0
- package/dist/blocks/faq-01/index.d.ts.map +1 -0
- package/dist/blocks/faq-01/index.js +1 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.d.ts +158 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.d.ts.map +1 -0
- package/dist/blocks/feature-rows-01/feature-rows-01.js +81 -0
- package/dist/blocks/feature-rows-01/index.d.ts +3 -0
- package/dist/blocks/feature-rows-01/index.d.ts.map +1 -0
- package/dist/blocks/feature-rows-01/index.js +1 -0
- package/dist/blocks/feedback-01/feedback.d.ts +235 -0
- package/dist/blocks/feedback-01/feedback.d.ts.map +1 -0
- package/dist/blocks/feedback-01/feedback.js +113 -0
- package/dist/blocks/feedback-01/index.d.ts +3 -0
- package/dist/blocks/feedback-01/index.d.ts.map +1 -0
- package/dist/blocks/feedback-01/index.js +1 -0
- package/dist/blocks/field-map-01/field-map.d.ts +247 -0
- package/dist/blocks/field-map-01/field-map.d.ts.map +1 -0
- package/dist/blocks/field-map-01/field-map.js +183 -0
- package/dist/blocks/field-map-01/index.d.ts +3 -0
- package/dist/blocks/field-map-01/index.d.ts.map +1 -0
- package/dist/blocks/field-map-01/index.js +1 -0
- package/dist/blocks/forgot-password-01/forgot-password.d.ts +288 -0
- package/dist/blocks/forgot-password-01/forgot-password.d.ts.map +1 -0
- package/dist/blocks/forgot-password-01/forgot-password.js +190 -0
- package/dist/blocks/forgot-password-01/index.d.ts +3 -0
- package/dist/blocks/forgot-password-01/index.d.ts.map +1 -0
- package/dist/blocks/forgot-password-01/index.js +1 -0
- package/dist/blocks/gallery-01/gallery.d.ts +208 -0
- package/dist/blocks/gallery-01/gallery.d.ts.map +1 -0
- package/dist/blocks/gallery-01/gallery.js +174 -0
- package/dist/blocks/gallery-01/index.d.ts +3 -0
- package/dist/blocks/gallery-01/index.d.ts.map +1 -0
- package/dist/blocks/gallery-01/index.js +1 -0
- package/dist/blocks/gantt-01/gantt.d.ts +290 -0
- package/dist/blocks/gantt-01/gantt.d.ts.map +1 -0
- package/dist/blocks/gantt-01/gantt.js +224 -0
- package/dist/blocks/gantt-01/index.d.ts +3 -0
- package/dist/blocks/gantt-01/index.d.ts.map +1 -0
- package/dist/blocks/gantt-01/index.js +1 -0
- package/dist/blocks/handoff-01/handoff-01.d.ts +326 -0
- package/dist/blocks/handoff-01/handoff-01.d.ts.map +1 -0
- package/dist/blocks/handoff-01/handoff-01.js +180 -0
- package/dist/blocks/handoff-01/index.d.ts +3 -0
- package/dist/blocks/handoff-01/index.d.ts.map +1 -0
- package/dist/blocks/handoff-01/index.js +1 -0
- package/dist/blocks/help-01/help.d.ts +254 -0
- package/dist/blocks/help-01/help.d.ts.map +1 -0
- package/dist/blocks/help-01/help.js +188 -0
- package/dist/blocks/help-01/index.d.ts +3 -0
- package/dist/blocks/help-01/index.d.ts.map +1 -0
- package/dist/blocks/help-01/index.js +1 -0
- package/dist/blocks/hero-01/hero.d.ts +105 -34
- package/dist/blocks/hero-01/hero.d.ts.map +1 -1
- package/dist/blocks/hero-01/hero.js +23 -15
- package/dist/blocks/hero-01/index.d.ts +1 -1
- package/dist/blocks/hero-01/index.d.ts.map +1 -1
- package/dist/blocks/hero-02/hero-02.d.ts +244 -0
- package/dist/blocks/hero-02/hero-02.d.ts.map +1 -0
- package/dist/blocks/hero-02/hero-02.js +87 -0
- package/dist/blocks/hero-02/index.d.ts +3 -0
- package/dist/blocks/hero-02/index.d.ts.map +1 -0
- package/dist/blocks/hero-02/index.js +1 -0
- package/dist/blocks/hero-03/hero-03.d.ts +247 -0
- package/dist/blocks/hero-03/hero-03.d.ts.map +1 -0
- package/dist/blocks/hero-03/hero-03.js +93 -0
- package/dist/blocks/hero-03/index.d.ts +3 -0
- package/dist/blocks/hero-03/index.d.ts.map +1 -0
- package/dist/blocks/hero-03/index.js +1 -0
- package/dist/blocks/history-01/history-01.d.ts +414 -0
- package/dist/blocks/history-01/history-01.d.ts.map +1 -0
- package/dist/blocks/history-01/history-01.js +285 -0
- package/dist/blocks/history-01/index.d.ts +3 -0
- package/dist/blocks/history-01/index.d.ts.map +1 -0
- package/dist/blocks/history-01/index.js +1 -0
- package/dist/blocks/inbox-01/inbox.d.ts +349 -0
- package/dist/blocks/inbox-01/inbox.d.ts.map +1 -0
- package/dist/blocks/inbox-01/inbox.js +244 -0
- package/dist/blocks/inbox-01/index.d.ts +3 -0
- package/dist/blocks/inbox-01/index.d.ts.map +1 -0
- package/dist/blocks/inbox-01/index.js +1 -0
- package/dist/blocks/index.d.ts +203 -0
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +118 -0
- package/dist/blocks/industries-01/index.d.ts +3 -0
- package/dist/blocks/industries-01/index.d.ts.map +1 -0
- package/dist/blocks/industries-01/index.js +1 -0
- package/dist/blocks/industries-01/industries.d.ts +164 -0
- package/dist/blocks/industries-01/industries.d.ts.map +1 -0
- package/dist/blocks/industries-01/industries.js +96 -0
- package/dist/blocks/intake-01/index.d.ts +3 -0
- package/dist/blocks/intake-01/index.d.ts.map +1 -0
- package/dist/blocks/intake-01/index.js +1 -0
- package/dist/blocks/intake-01/intake-01.d.ts +305 -0
- package/dist/blocks/intake-01/intake-01.d.ts.map +1 -0
- package/dist/blocks/intake-01/intake-01.js +178 -0
- package/dist/blocks/integration-01/index.d.ts +3 -0
- package/dist/blocks/integration-01/index.d.ts.map +1 -0
- package/dist/blocks/integration-01/index.js +1 -0
- package/dist/blocks/integration-01/integration.d.ts +226 -0
- package/dist/blocks/integration-01/integration.d.ts.map +1 -0
- package/dist/blocks/integration-01/integration.js +170 -0
- package/dist/blocks/invite-user-01/index.d.ts +3 -0
- package/dist/blocks/invite-user-01/index.d.ts.map +1 -0
- package/dist/blocks/invite-user-01/index.js +1 -0
- package/dist/blocks/invite-user-01/invite-user.d.ts +317 -0
- package/dist/blocks/invite-user-01/invite-user.d.ts.map +1 -0
- package/dist/blocks/invite-user-01/invite-user.js +228 -0
- package/dist/blocks/issue-detail-01/index.d.ts +3 -0
- package/dist/blocks/issue-detail-01/index.d.ts.map +1 -0
- package/dist/blocks/issue-detail-01/index.js +1 -0
- package/dist/blocks/issue-detail-01/issue-detail.d.ts +355 -0
- package/dist/blocks/issue-detail-01/issue-detail.d.ts.map +1 -0
- package/dist/blocks/issue-detail-01/issue-detail.js +187 -0
- package/dist/blocks/issue-list-01/index.d.ts +3 -0
- package/dist/blocks/issue-list-01/index.d.ts.map +1 -0
- package/dist/blocks/issue-list-01/index.js +1 -0
- package/dist/blocks/issue-list-01/issue-list.d.ts +298 -0
- package/dist/blocks/issue-list-01/issue-list.d.ts.map +1 -0
- package/dist/blocks/issue-list-01/issue-list.js +284 -0
- package/dist/blocks/kanban-01/index.d.ts +3 -0
- package/dist/blocks/kanban-01/index.d.ts.map +1 -0
- package/dist/blocks/kanban-01/index.js +1 -0
- package/dist/blocks/kanban-01/kanban.d.ts +278 -0
- package/dist/blocks/kanban-01/kanban.d.ts.map +1 -0
- package/dist/blocks/kanban-01/kanban.js +144 -0
- package/dist/blocks/leaderboard-01/index.d.ts +3 -0
- package/dist/blocks/leaderboard-01/index.d.ts.map +1 -0
- package/dist/blocks/leaderboard-01/index.js +1 -0
- package/dist/blocks/leaderboard-01/leaderboard.d.ts +250 -0
- package/dist/blocks/leaderboard-01/leaderboard.d.ts.map +1 -0
- package/dist/blocks/leaderboard-01/leaderboard.js +121 -0
- package/dist/blocks/login-01/index.d.ts +3 -0
- package/dist/blocks/login-01/index.d.ts.map +1 -0
- package/dist/blocks/login-01/index.js +1 -0
- package/dist/blocks/login-01/login-01.d.ts +356 -0
- package/dist/blocks/login-01/login-01.d.ts.map +1 -0
- package/dist/blocks/login-01/login-01.js +249 -0
- package/dist/blocks/logo-cloud-01/index.d.ts +3 -0
- package/dist/blocks/logo-cloud-01/index.d.ts.map +1 -0
- package/dist/blocks/logo-cloud-01/index.js +1 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.d.ts +181 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.d.ts.map +1 -0
- package/dist/blocks/logo-cloud-01/logo-cloud.js +118 -0
- package/dist/blocks/magic-link-01/index.d.ts +3 -0
- package/dist/blocks/magic-link-01/index.d.ts.map +1 -0
- package/dist/blocks/magic-link-01/index.js +1 -0
- package/dist/blocks/magic-link-01/magic-link-01.d.ts +367 -0
- package/dist/blocks/magic-link-01/magic-link-01.d.ts.map +1 -0
- package/dist/blocks/magic-link-01/magic-link-01.js +233 -0
- package/dist/blocks/member-list-01/index.d.ts +3 -0
- package/dist/blocks/member-list-01/index.d.ts.map +1 -0
- package/dist/blocks/member-list-01/index.js +1 -0
- package/dist/blocks/member-list-01/member-list.d.ts +192 -0
- package/dist/blocks/member-list-01/member-list.d.ts.map +1 -0
- package/dist/blocks/member-list-01/member-list.js +142 -0
- package/dist/blocks/milestone-timeline-01/index.d.ts +3 -0
- package/dist/blocks/milestone-timeline-01/index.d.ts.map +1 -0
- package/dist/blocks/milestone-timeline-01/index.js +1 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.d.ts +217 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.d.ts.map +1 -0
- package/dist/blocks/milestone-timeline-01/milestone-timeline.js +173 -0
- package/dist/blocks/newsletter-01/index.d.ts +3 -0
- package/dist/blocks/newsletter-01/index.d.ts.map +1 -0
- package/dist/blocks/newsletter-01/index.js +1 -0
- package/dist/blocks/newsletter-01/newsletter.d.ts +216 -0
- package/dist/blocks/newsletter-01/newsletter.d.ts.map +1 -0
- package/dist/blocks/newsletter-01/newsletter.js +102 -0
- package/dist/blocks/notification-center-01/index.d.ts +3 -0
- package/dist/blocks/notification-center-01/index.d.ts.map +1 -0
- package/dist/blocks/notification-center-01/index.js +1 -0
- package/dist/blocks/notification-center-01/notification-center-01.d.ts +341 -0
- package/dist/blocks/notification-center-01/notification-center-01.d.ts.map +1 -0
- package/dist/blocks/notification-center-01/notification-center-01.js +203 -0
- package/dist/blocks/offer-01/index.d.ts +3 -0
- package/dist/blocks/offer-01/index.d.ts.map +1 -0
- package/dist/blocks/offer-01/index.js +1 -0
- package/dist/blocks/offer-01/offer.d.ts +139 -0
- package/dist/blocks/offer-01/offer.d.ts.map +1 -0
- package/dist/blocks/offer-01/offer.js +81 -0
- package/dist/blocks/offering-01/index.d.ts +3 -0
- package/dist/blocks/offering-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-01/index.js +1 -0
- package/dist/blocks/offering-01/offering.d.ts +245 -0
- package/dist/blocks/offering-01/offering.d.ts.map +1 -0
- package/dist/blocks/offering-01/offering.js +144 -0
- package/dist/blocks/offering-categories-01/index.d.ts +3 -0
- package/dist/blocks/offering-categories-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-categories-01/index.js +1 -0
- package/dist/blocks/offering-categories-01/offering-categories.d.ts +248 -0
- package/dist/blocks/offering-categories-01/offering-categories.d.ts.map +1 -0
- package/dist/blocks/offering-categories-01/offering-categories.js +153 -0
- package/dist/blocks/offering-list-01/index.d.ts +3 -0
- package/dist/blocks/offering-list-01/index.d.ts.map +1 -0
- package/dist/blocks/offering-list-01/index.js +1 -0
- package/dist/blocks/offering-list-01/offering-list.d.ts +362 -0
- package/dist/blocks/offering-list-01/offering-list.d.ts.map +1 -0
- package/dist/blocks/offering-list-01/offering-list.js +366 -0
- package/dist/blocks/onboarding-01/index.d.ts +3 -0
- package/dist/blocks/onboarding-01/index.d.ts.map +1 -0
- package/dist/blocks/onboarding-01/index.js +1 -0
- package/dist/blocks/onboarding-01/onboarding.d.ts +199 -0
- package/dist/blocks/onboarding-01/onboarding.d.ts.map +1 -0
- package/dist/blocks/onboarding-01/onboarding.js +182 -0
- package/dist/blocks/ops-checklist-01/index.d.ts +3 -0
- package/dist/blocks/ops-checklist-01/index.d.ts.map +1 -0
- package/dist/blocks/ops-checklist-01/index.js +1 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.d.ts +308 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.d.ts.map +1 -0
- package/dist/blocks/ops-checklist-01/ops-checklist-01.js +165 -0
- package/dist/blocks/page-header-01/index.d.ts +1 -1
- package/dist/blocks/page-header-01/index.d.ts.map +1 -1
- package/dist/blocks/page-header-01/page-header.d.ts +124 -11
- package/dist/blocks/page-header-01/page-header.d.ts.map +1 -1
- package/dist/blocks/page-header-01/page-header.js +25 -9
- package/dist/blocks/passkey-01/index.d.ts +3 -0
- package/dist/blocks/passkey-01/index.d.ts.map +1 -0
- package/dist/blocks/passkey-01/index.js +1 -0
- package/dist/blocks/passkey-01/passkey-01.d.ts +334 -0
- package/dist/blocks/passkey-01/passkey-01.d.ts.map +1 -0
- package/dist/blocks/passkey-01/passkey-01.js +192 -0
- package/dist/blocks/permission-matrix-01/index.d.ts +3 -0
- package/dist/blocks/permission-matrix-01/index.d.ts.map +1 -0
- package/dist/blocks/permission-matrix-01/index.js +1 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.d.ts +282 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.d.ts.map +1 -0
- package/dist/blocks/permission-matrix-01/permission-matrix.js +173 -0
- package/dist/blocks/pricing-01/index.d.ts +1 -0
- package/dist/blocks/pricing-01/index.d.ts.map +1 -1
- package/dist/blocks/pricing-01/pricing.d.ts +118 -1
- package/dist/blocks/pricing-01/pricing.d.ts.map +1 -1
- package/dist/blocks/pricing-01/pricing.js +9 -2
- package/dist/blocks/pricing-compare-01/index.d.ts +3 -0
- package/dist/blocks/pricing-compare-01/index.d.ts.map +1 -0
- package/dist/blocks/pricing-compare-01/index.js +1 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.d.ts +277 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.d.ts.map +1 -0
- package/dist/blocks/pricing-compare-01/pricing-compare.js +126 -0
- package/dist/blocks/project-01/index.d.ts +3 -0
- package/dist/blocks/project-01/index.d.ts.map +1 -0
- package/dist/blocks/project-01/index.js +1 -0
- package/dist/blocks/project-01/project.d.ts +323 -0
- package/dist/blocks/project-01/project.d.ts.map +1 -0
- package/dist/blocks/project-01/project.js +247 -0
- package/dist/blocks/project-dashboard-01/index.d.ts +3 -0
- package/dist/blocks/project-dashboard-01/index.d.ts.map +1 -0
- package/dist/blocks/project-dashboard-01/index.js +1 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.d.ts +200 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.d.ts.map +1 -0
- package/dist/blocks/project-dashboard-01/project-dashboard.js +124 -0
- package/dist/blocks/project-list-01/index.d.ts +3 -0
- package/dist/blocks/project-list-01/index.d.ts.map +1 -0
- package/dist/blocks/project-list-01/index.js +1 -0
- package/dist/blocks/project-list-01/project-list.d.ts +301 -0
- package/dist/blocks/project-list-01/project-list.d.ts.map +1 -0
- package/dist/blocks/project-list-01/project-list.js +305 -0
- package/dist/blocks/provisioning-01/index.d.ts +3 -0
- package/dist/blocks/provisioning-01/index.d.ts.map +1 -0
- package/dist/blocks/provisioning-01/index.js +1 -0
- package/dist/blocks/provisioning-01/provisioning.d.ts +357 -0
- package/dist/blocks/provisioning-01/provisioning.d.ts.map +1 -0
- package/dist/blocks/provisioning-01/provisioning.js +230 -0
- package/dist/blocks/quick-view-01/index.d.ts +3 -0
- package/dist/blocks/quick-view-01/index.d.ts.map +1 -0
- package/dist/blocks/quick-view-01/index.js +1 -0
- package/dist/blocks/quick-view-01/quick-view.d.ts +215 -0
- package/dist/blocks/quick-view-01/quick-view.d.ts.map +1 -0
- package/dist/blocks/quick-view-01/quick-view.js +136 -0
- package/dist/blocks/rate-card-01/index.d.ts +3 -0
- package/dist/blocks/rate-card-01/index.d.ts.map +1 -0
- package/dist/blocks/rate-card-01/index.js +1 -0
- package/dist/blocks/rate-card-01/rate-card.d.ts +184 -0
- package/dist/blocks/rate-card-01/rate-card.d.ts.map +1 -0
- package/dist/blocks/rate-card-01/rate-card.js +79 -0
- package/dist/blocks/reset-password-01/index.d.ts +3 -0
- package/dist/blocks/reset-password-01/index.d.ts.map +1 -0
- package/dist/blocks/reset-password-01/index.js +1 -0
- package/dist/blocks/reset-password-01/reset-password.d.ts +276 -0
- package/dist/blocks/reset-password-01/reset-password.d.ts.map +1 -0
- package/dist/blocks/reset-password-01/reset-password.js +175 -0
- package/dist/blocks/resource-list-01/index.d.ts +3 -0
- package/dist/blocks/resource-list-01/index.d.ts.map +1 -0
- package/dist/blocks/resource-list-01/index.js +1 -0
- package/dist/blocks/resource-list-01/resource-list.d.ts +237 -0
- package/dist/blocks/resource-list-01/resource-list.d.ts.map +1 -0
- package/dist/blocks/resource-list-01/resource-list.js +154 -0
- package/dist/blocks/retention-01/index.d.ts +3 -0
- package/dist/blocks/retention-01/index.d.ts.map +1 -0
- package/dist/blocks/retention-01/index.js +1 -0
- package/dist/blocks/retention-01/retention.d.ts +255 -0
- package/dist/blocks/retention-01/retention.d.ts.map +1 -0
- package/dist/blocks/retention-01/retention.js +145 -0
- package/dist/blocks/run-console-01/run-console.d.ts +14 -1
- package/dist/blocks/run-console-01/run-console.d.ts.map +1 -1
- package/dist/blocks/run-console-01/run-console.js +3 -2
- package/dist/blocks/services-01/index.d.ts +3 -0
- package/dist/blocks/services-01/index.d.ts.map +1 -0
- package/dist/blocks/services-01/index.js +1 -0
- package/dist/blocks/services-01/services.d.ts +159 -0
- package/dist/blocks/services-01/services.d.ts.map +1 -0
- package/dist/blocks/services-01/services.js +81 -0
- package/dist/blocks/settings-integrations-01/index.d.ts +3 -0
- package/dist/blocks/settings-integrations-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-integrations-01/index.js +1 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.d.ts +246 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.d.ts.map +1 -0
- package/dist/blocks/settings-integrations-01/settings-integrations.js +213 -0
- package/dist/blocks/settings-members-01/index.d.ts +3 -0
- package/dist/blocks/settings-members-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-members-01/index.js +1 -0
- package/dist/blocks/settings-members-01/settings-members.d.ts +396 -0
- package/dist/blocks/settings-members-01/settings-members.d.ts.map +1 -0
- package/dist/blocks/settings-members-01/settings-members.js +255 -0
- package/dist/blocks/settings-notifications-01/index.d.ts +3 -0
- package/dist/blocks/settings-notifications-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-notifications-01/index.js +1 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.d.ts +270 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.d.ts.map +1 -0
- package/dist/blocks/settings-notifications-01/settings-notifications.js +202 -0
- package/dist/blocks/settings-security-01/index.d.ts +3 -0
- package/dist/blocks/settings-security-01/index.d.ts.map +1 -0
- package/dist/blocks/settings-security-01/index.js +1 -0
- package/dist/blocks/settings-security-01/settings-security.d.ts +439 -0
- package/dist/blocks/settings-security-01/settings-security.d.ts.map +1 -0
- package/dist/blocks/settings-security-01/settings-security.js +244 -0
- package/dist/blocks/shortlist-01/index.d.ts +3 -0
- package/dist/blocks/shortlist-01/index.d.ts.map +1 -0
- package/dist/blocks/shortlist-01/index.js +1 -0
- package/dist/blocks/shortlist-01/shortlist-01.d.ts +337 -0
- package/dist/blocks/shortlist-01/shortlist-01.d.ts.map +1 -0
- package/dist/blocks/shortlist-01/shortlist-01.js +191 -0
- package/dist/blocks/showcase-01/index.d.ts +3 -0
- package/dist/blocks/showcase-01/index.d.ts.map +1 -0
- package/dist/blocks/showcase-01/index.js +1 -0
- package/dist/blocks/showcase-01/showcase-01.d.ts +238 -0
- package/dist/blocks/showcase-01/showcase-01.d.ts.map +1 -0
- package/dist/blocks/showcase-01/showcase-01.js +84 -0
- package/dist/blocks/signup-01/index.d.ts +3 -0
- package/dist/blocks/signup-01/index.d.ts.map +1 -0
- package/dist/blocks/signup-01/index.js +1 -0
- package/dist/blocks/signup-01/signup-01.d.ts +405 -0
- package/dist/blocks/signup-01/signup-01.d.ts.map +1 -0
- package/dist/blocks/signup-01/signup-01.js +209 -0
- package/dist/blocks/site-footer/site-footer.d.ts +18 -1
- package/dist/blocks/site-footer/site-footer.d.ts.map +1 -1
- package/dist/blocks/site-footer/site-footer.js +8 -2
- package/dist/blocks/site-header/site-header.js +1 -1
- package/dist/blocks/site-navbar/site-navbar.d.ts +37 -3
- package/dist/blocks/site-navbar/site-navbar.d.ts.map +1 -1
- package/dist/blocks/site-navbar/site-navbar.js +33 -4
- package/dist/blocks/spec-table-01/index.d.ts +3 -0
- package/dist/blocks/spec-table-01/index.d.ts.map +1 -0
- package/dist/blocks/spec-table-01/index.js +1 -0
- package/dist/blocks/spec-table-01/spec-table.d.ts +293 -0
- package/dist/blocks/spec-table-01/spec-table.d.ts.map +1 -0
- package/dist/blocks/spec-table-01/spec-table.js +217 -0
- package/dist/blocks/story-01/index.d.ts +3 -0
- package/dist/blocks/story-01/index.d.ts.map +1 -0
- package/dist/blocks/story-01/index.js +1 -0
- package/dist/blocks/story-01/story.d.ts +153 -0
- package/dist/blocks/story-01/story.d.ts.map +1 -0
- package/dist/blocks/story-01/story.js +103 -0
- package/dist/blocks/summary-01/index.d.ts +3 -0
- package/dist/blocks/summary-01/index.d.ts.map +1 -0
- package/dist/blocks/summary-01/index.js +1 -0
- package/dist/blocks/summary-01/summary.d.ts +300 -0
- package/dist/blocks/summary-01/summary.d.ts.map +1 -0
- package/dist/blocks/summary-01/summary.js +174 -0
- package/dist/blocks/team-01/index.d.ts +3 -0
- package/dist/blocks/team-01/index.d.ts.map +1 -0
- package/dist/blocks/team-01/index.js +1 -0
- package/dist/blocks/team-01/team.d.ts +176 -0
- package/dist/blocks/team-01/team.d.ts.map +1 -0
- package/dist/blocks/team-01/team.js +117 -0
- package/dist/blocks/testimonial-01/index.d.ts +3 -0
- package/dist/blocks/testimonial-01/index.d.ts.map +1 -0
- package/dist/blocks/testimonial-01/index.js +1 -0
- package/dist/blocks/testimonial-01/testimonial.d.ts +173 -0
- package/dist/blocks/testimonial-01/testimonial.d.ts.map +1 -0
- package/dist/blocks/testimonial-01/testimonial.js +87 -0
- package/dist/blocks/todo-01/index.d.ts +3 -0
- package/dist/blocks/todo-01/index.d.ts.map +1 -0
- package/dist/blocks/todo-01/index.js +1 -0
- package/dist/blocks/todo-01/todo.d.ts +286 -0
- package/dist/blocks/todo-01/todo.d.ts.map +1 -0
- package/dist/blocks/todo-01/todo.js +149 -0
- package/dist/blocks/trend-01/index.d.ts +3 -0
- package/dist/blocks/trend-01/index.d.ts.map +1 -0
- package/dist/blocks/trend-01/index.js +1 -0
- package/dist/blocks/trend-01/trend.d.ts +184 -0
- package/dist/blocks/trend-01/trend.d.ts.map +1 -0
- package/dist/blocks/trend-01/trend.js +99 -0
- package/dist/blocks/trust-strip-01/index.d.ts +3 -0
- package/dist/blocks/trust-strip-01/index.d.ts.map +1 -0
- package/dist/blocks/trust-strip-01/index.js +1 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.d.ts +139 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.d.ts.map +1 -0
- package/dist/blocks/trust-strip-01/trust-strip-01.js +58 -0
- package/dist/blocks/two-factor-01/index.d.ts +3 -0
- package/dist/blocks/two-factor-01/index.d.ts.map +1 -0
- package/dist/blocks/two-factor-01/index.js +1 -0
- package/dist/blocks/two-factor-01/two-factor-01.d.ts +440 -0
- package/dist/blocks/two-factor-01/two-factor-01.d.ts.map +1 -0
- package/dist/blocks/two-factor-01/two-factor-01.js +273 -0
- package/dist/blocks/user-profile-01/index.d.ts +3 -0
- package/dist/blocks/user-profile-01/index.d.ts.map +1 -0
- package/dist/blocks/user-profile-01/index.js +1 -0
- package/dist/blocks/user-profile-01/user-profile-01.d.ts +258 -0
- package/dist/blocks/user-profile-01/user-profile-01.d.ts.map +1 -0
- package/dist/blocks/user-profile-01/user-profile-01.js +158 -0
- package/dist/blocks/verify-email-01/index.d.ts +3 -0
- package/dist/blocks/verify-email-01/index.d.ts.map +1 -0
- package/dist/blocks/verify-email-01/index.js +1 -0
- package/dist/blocks/verify-email-01/verify-email.d.ts +262 -0
- package/dist/blocks/verify-email-01/verify-email.d.ts.map +1 -0
- package/dist/blocks/verify-email-01/verify-email.js +190 -0
- package/dist/blocks/waitlist-01/index.d.ts +3 -0
- package/dist/blocks/waitlist-01/index.d.ts.map +1 -0
- package/dist/blocks/waitlist-01/index.js +1 -0
- package/dist/blocks/waitlist-01/waitlist.d.ts +254 -0
- package/dist/blocks/waitlist-01/waitlist.d.ts.map +1 -0
- package/dist/blocks/waitlist-01/waitlist.js +75 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +1641 -1
- package/dist/components/index.d.ts +114 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +134 -0
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +9 -2
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.js +22 -4
- package/dist/components/ui/announcement.d.ts +169 -0
- package/dist/components/ui/announcement.d.ts.map +1 -0
- package/dist/components/ui/announcement.js +123 -0
- package/dist/components/ui/avatar-group.d.ts +176 -0
- package/dist/components/ui/avatar-group.d.ts.map +1 -0
- package/dist/components/ui/avatar-group.js +135 -0
- package/dist/components/ui/billing-source.d.ts +293 -0
- package/dist/components/ui/billing-source.d.ts.map +1 -0
- package/dist/components/ui/billing-source.js +136 -0
- package/dist/components/ui/button.d.ts +16 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/button.js +17 -2
- package/dist/components/ui/calendar.d.ts +9 -0
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/calendar.js +30 -2
- package/dist/components/ui/carousel.d.ts +7 -0
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/carousel.js +58 -1
- package/dist/components/ui/chart.d.ts +334 -0
- package/dist/components/ui/chart.d.ts.map +1 -0
- package/dist/components/ui/chart.js +369 -0
- package/dist/components/ui/checkbox.d.ts +10 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/checkbox.js +19 -1
- package/dist/components/ui/checklist.d.ts +262 -0
- package/dist/components/ui/checklist.d.ts.map +1 -0
- package/dist/components/ui/checklist.js +135 -0
- package/dist/components/ui/choice-card.d.ts +273 -0
- package/dist/components/ui/choice-card.d.ts.map +1 -0
- package/dist/components/ui/choice-card.js +138 -0
- package/dist/components/ui/code-block.d.ts +182 -0
- package/dist/components/ui/code-block.d.ts.map +1 -0
- package/dist/components/ui/code-block.js +108 -0
- package/dist/components/ui/cohort-grid.d.ts +210 -0
- package/dist/components/ui/cohort-grid.d.ts.map +1 -0
- package/dist/components/ui/cohort-grid.js +202 -0
- package/dist/components/ui/collapsible.d.ts +11 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/collapsible.js +13 -2
- package/dist/components/ui/combobox.d.ts +4 -1
- package/dist/components/ui/combobox.d.ts.map +1 -1
- package/dist/components/ui/combobox.js +20 -4
- package/dist/components/ui/command-palette.d.ts +11 -0
- package/dist/components/ui/command-palette.d.ts.map +1 -1
- package/dist/components/ui/command-palette.js +49 -3
- package/dist/components/ui/contribution-graph.d.ts +156 -0
- package/dist/components/ui/contribution-graph.d.ts.map +1 -0
- package/dist/components/ui/contribution-graph.js +170 -0
- package/dist/components/ui/creatable-combobox.d.ts +153 -0
- package/dist/components/ui/creatable-combobox.d.ts.map +1 -0
- package/dist/components/ui/creatable-combobox.js +285 -0
- package/dist/components/ui/data-toolbar.d.ts +133 -0
- package/dist/components/ui/data-toolbar.d.ts.map +1 -0
- package/dist/components/ui/data-toolbar.js +67 -0
- package/dist/components/ui/date-picker.d.ts.map +1 -1
- package/dist/components/ui/date-picker.js +9 -1
- package/dist/components/ui/dialog.d.ts +31 -2
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dialog.js +40 -6
- package/dist/components/ui/drawer.d.ts +270 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/drawer.js +241 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +6 -1
- package/dist/components/ui/dropzone.d.ts +147 -0
- package/dist/components/ui/dropzone.d.ts.map +1 -0
- package/dist/components/ui/dropzone.js +141 -0
- package/dist/components/ui/emoji-picker.d.ts +328 -0
- package/dist/components/ui/emoji-picker.d.ts.map +1 -0
- package/dist/components/ui/emoji-picker.js +278 -0
- package/dist/components/ui/file-upload.d.ts +152 -0
- package/dist/components/ui/file-upload.d.ts.map +1 -0
- package/dist/components/ui/file-upload.js +101 -0
- package/dist/components/ui/filter-panel.d.ts +164 -0
- package/dist/components/ui/filter-panel.d.ts.map +1 -0
- package/dist/components/ui/filter-panel.js +91 -0
- package/dist/components/ui/form-dialog.d.ts +257 -0
- package/dist/components/ui/form-dialog.d.ts.map +1 -0
- package/dist/components/ui/form-dialog.js +176 -0
- package/dist/components/ui/form-wizard.d.ts +251 -0
- package/dist/components/ui/form-wizard.d.ts.map +1 -0
- package/dist/components/ui/form-wizard.js +151 -0
- package/dist/components/ui/image-list-field.d.ts +232 -0
- package/dist/components/ui/image-list-field.d.ts.map +1 -0
- package/dist/components/ui/image-list-field.js +168 -0
- package/dist/components/ui/image-zoom.d.ts +164 -0
- package/dist/components/ui/image-zoom.d.ts.map +1 -0
- package/dist/components/ui/image-zoom.js +169 -0
- package/dist/components/ui/intensity-grid.d.ts +270 -0
- package/dist/components/ui/intensity-grid.d.ts.map +1 -0
- package/dist/components/ui/intensity-grid.js +211 -0
- package/dist/components/ui/lifecycle-button.d.ts +276 -0
- package/dist/components/ui/lifecycle-button.d.ts.map +1 -0
- package/dist/components/ui/lifecycle-button.js +144 -0
- package/dist/components/ui/lightbox.d.ts +165 -0
- package/dist/components/ui/lightbox.d.ts.map +1 -0
- package/dist/components/ui/lightbox.js +130 -0
- package/dist/components/ui/list-panel.d.ts +288 -0
- package/dist/components/ui/list-panel.d.ts.map +1 -0
- package/dist/components/ui/list-panel.js +139 -0
- package/dist/components/ui/mega-menu.d.ts +244 -0
- package/dist/components/ui/mega-menu.d.ts.map +1 -0
- package/dist/components/ui/mega-menu.js +97 -0
- package/dist/components/ui/menubar.d.ts +9 -0
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/menubar.js +10 -1
- package/dist/components/ui/metric.d.ts +123 -0
- package/dist/components/ui/metric.d.ts.map +1 -0
- package/dist/components/ui/metric.js +68 -0
- package/dist/components/ui/mini-calendar.d.ts +143 -0
- package/dist/components/ui/mini-calendar.d.ts.map +1 -0
- package/dist/components/ui/mini-calendar.js +261 -0
- package/dist/components/ui/mode-toggle.d.ts +102 -0
- package/dist/components/ui/mode-toggle.d.ts.map +1 -0
- package/dist/components/ui/mode-toggle.js +83 -0
- package/dist/components/ui/money-field.d.ts +200 -0
- package/dist/components/ui/money-field.d.ts.map +1 -0
- package/dist/components/ui/money-field.js +215 -0
- package/dist/components/ui/multi-combobox.d.ts +181 -0
- package/dist/components/ui/multi-combobox.d.ts.map +1 -0
- package/dist/components/ui/multi-combobox.js +297 -0
- package/dist/components/ui/native-select.d.ts.map +1 -1
- package/dist/components/ui/native-select.js +8 -1
- package/dist/components/ui/navigation-menu.d.ts +7 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.js +8 -1
- package/dist/components/ui/nested-tabs.d.ts +188 -0
- package/dist/components/ui/nested-tabs.d.ts.map +1 -0
- package/dist/components/ui/nested-tabs.js +75 -0
- package/dist/components/ui/number-field.d.ts +40 -7
- package/dist/components/ui/number-field.d.ts.map +1 -1
- package/dist/components/ui/number-field.js +37 -7
- package/dist/components/ui/overflow-actions.d.ts +169 -0
- package/dist/components/ui/overflow-actions.d.ts.map +1 -0
- package/dist/components/ui/overflow-actions.js +266 -0
- package/dist/components/ui/pack-swatch.d.ts +177 -0
- package/dist/components/ui/pack-swatch.d.ts.map +1 -0
- package/dist/components/ui/pack-swatch.js +117 -0
- package/dist/components/ui/pack-switcher.d.ts +221 -0
- package/dist/components/ui/pack-switcher.d.ts.map +1 -0
- package/dist/components/ui/pack-switcher.js +94 -0
- package/dist/components/ui/pagination.d.ts +22 -0
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/pagination.js +23 -1
- package/dist/components/ui/password-field.d.ts +122 -0
- package/dist/components/ui/password-field.d.ts.map +1 -0
- package/dist/components/ui/password-field.js +69 -0
- package/dist/components/ui/pill.d.ts +172 -0
- package/dist/components/ui/pill.d.ts.map +1 -0
- package/dist/components/ui/pill.js +102 -0
- package/dist/components/ui/platform-modifier-key.d.ts +129 -0
- package/dist/components/ui/platform-modifier-key.d.ts.map +1 -0
- package/dist/components/ui/platform-modifier-key.js +125 -0
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/popover.js +8 -1
- package/dist/components/ui/price.d.ts +144 -0
- package/dist/components/ui/price.d.ts.map +1 -0
- package/dist/components/ui/price.js +107 -0
- package/dist/components/ui/progress.d.ts +55 -1
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/progress.js +110 -2
- package/dist/components/ui/prompt-composer.d.ts +302 -0
- package/dist/components/ui/prompt-composer.d.ts.map +1 -0
- package/dist/components/ui/prompt-composer.js +145 -0
- package/dist/components/ui/proportion-list.d.ts +188 -0
- package/dist/components/ui/proportion-list.d.ts.map +1 -0
- package/dist/components/ui/proportion-list.js +134 -0
- package/dist/components/ui/prose.d.ts +23 -0
- package/dist/components/ui/prose.d.ts.map +1 -1
- package/dist/components/ui/prose.js +30 -1
- package/dist/components/ui/radio-group.d.ts +7 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +8 -1
- package/dist/components/ui/range-field.d.ts +158 -0
- package/dist/components/ui/range-field.d.ts.map +1 -0
- package/dist/components/ui/range-field.js +208 -0
- package/dist/components/ui/relative-time.d.ts +116 -0
- package/dist/components/ui/relative-time.d.ts.map +1 -0
- package/dist/components/ui/relative-time.js +67 -0
- package/dist/components/ui/reorderable-list.d.ts +262 -0
- package/dist/components/ui/reorderable-list.d.ts.map +1 -0
- package/dist/components/ui/reorderable-list.js +325 -0
- package/dist/components/ui/repeatable-rows.d.ts +241 -0
- package/dist/components/ui/repeatable-rows.d.ts.map +1 -0
- package/dist/components/ui/repeatable-rows.js +221 -0
- package/dist/components/ui/repo-stars.d.ts +165 -0
- package/dist/components/ui/repo-stars.d.ts.map +1 -0
- package/dist/components/ui/repo-stars.js +92 -0
- package/dist/components/ui/resizable.d.ts +24 -0
- package/dist/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/ui/resizable.js +96 -4
- package/dist/components/ui/search-dialog.d.ts +40 -5
- package/dist/components/ui/search-dialog.d.ts.map +1 -1
- package/dist/components/ui/search-dialog.js +94 -16
- package/dist/components/ui/search-field.d.ts +159 -0
- package/dist/components/ui/search-field.d.ts.map +1 -0
- package/dist/components/ui/search-field.js +98 -0
- package/dist/components/ui/section.d.ts +108 -1
- package/dist/components/ui/section.d.ts.map +1 -1
- package/dist/components/ui/section.js +109 -3
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/select.js +9 -1
- package/dist/components/ui/selection-toolbar.d.ts +166 -0
- package/dist/components/ui/selection-toolbar.d.ts.map +1 -0
- package/dist/components/ui/selection-toolbar.js +139 -0
- package/dist/components/ui/sidebar.d.ts +29 -0
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +35 -2
- package/dist/components/ui/signal-field.d.ts.map +1 -1
- package/dist/components/ui/signal-field.js +1 -1
- package/dist/components/ui/slider.d.ts +7 -0
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/slider.js +32 -1
- package/dist/components/ui/sparkline.d.ts +117 -0
- package/dist/components/ui/sparkline.d.ts.map +1 -0
- package/dist/components/ui/sparkline.js +113 -0
- package/dist/components/ui/spinner.d.ts.map +1 -1
- package/dist/components/ui/spinner.js +13 -0
- package/dist/components/ui/split-button.d.ts +207 -0
- package/dist/components/ui/split-button.d.ts.map +1 -0
- package/dist/components/ui/split-button.js +75 -0
- package/dist/components/ui/stateful-table.d.ts +345 -0
- package/dist/components/ui/stateful-table.d.ts.map +1 -0
- package/dist/components/ui/stateful-table.js +169 -0
- package/dist/components/ui/status.d.ts +99 -0
- package/dist/components/ui/status.d.ts.map +1 -0
- package/dist/components/ui/status.js +63 -0
- package/dist/components/ui/stepper.d.ts +155 -0
- package/dist/components/ui/stepper.d.ts.map +1 -0
- package/dist/components/ui/stepper.js +83 -0
- package/dist/components/ui/steps.d.ts +141 -0
- package/dist/components/ui/steps.d.ts.map +1 -0
- package/dist/components/ui/steps.js +128 -0
- package/dist/components/ui/switch.d.ts +8 -0
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/switch.js +12 -1
- package/dist/components/ui/tabs.d.ts +21 -2
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/tabs.js +23 -4
- package/dist/components/ui/tag-group.d.ts +154 -0
- package/dist/components/ui/tag-group.d.ts.map +1 -0
- package/dist/components/ui/tag-group.js +111 -0
- package/dist/components/ui/task-progress.d.ts +149 -0
- package/dist/components/ui/task-progress.d.ts.map +1 -0
- package/dist/components/ui/task-progress.js +110 -0
- package/dist/components/ui/text-format-toolbar.d.ts +211 -0
- package/dist/components/ui/text-format-toolbar.d.ts.map +1 -0
- package/dist/components/ui/text-format-toolbar.js +186 -0
- package/dist/components/ui/timeline.d.ts.map +1 -1
- package/dist/components/ui/timeline.js +10 -1
- package/dist/components/ui/toast.d.ts +32 -10
- package/dist/components/ui/toast.d.ts.map +1 -1
- package/dist/components/ui/toast.js +150 -47
- package/dist/components/ui/toggle-group.d.ts +14 -5
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.js +15 -1
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/toggle.js +9 -1
- package/dist/components/ui/tree.d.ts +8 -0
- package/dist/components/ui/tree.d.ts.map +1 -1
- package/dist/components/ui/tree.js +92 -13
- package/dist/components/ui/video-player.d.ts +236 -0
- package/dist/components/ui/video-player.d.ts.map +1 -0
- package/dist/components/ui/video-player.js +72 -0
- package/dist/fonts/inter-latin-400-italic.woff2 +0 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -0
- package/dist/lib/utils.d.ts +29 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +35 -0
- package/dist/live/index.d.ts +10 -3
- package/dist/live/index.d.ts.map +1 -1
- package/dist/live/index.js +12 -3
- package/dist/live/run-stream-01/run-stream.js +4 -4
- package/dist/live/tool-ledger-01/index.d.ts +3 -0
- package/dist/live/tool-ledger-01/index.d.ts.map +1 -0
- package/dist/live/tool-ledger-01/index.js +1 -0
- package/dist/live/tool-ledger-01/tool-ledger.d.ts +348 -0
- package/dist/live/tool-ledger-01/tool-ledger.d.ts.map +1 -0
- package/dist/live/tool-ledger-01/tool-ledger.js +245 -0
- package/dist/pages/about-page/index.d.ts +306 -0
- package/dist/pages/about-page/index.d.ts.map +1 -0
- package/dist/pages/about-page/index.js +161 -0
- package/dist/pages/careers-page/index.d.ts +288 -0
- package/dist/pages/careers-page/index.d.ts.map +1 -0
- package/dist/pages/careers-page/index.js +182 -0
- package/dist/pages/changelog-page/index.d.ts +255 -0
- package/dist/pages/changelog-page/index.d.ts.map +1 -0
- package/dist/pages/changelog-page/index.js +86 -0
- package/dist/pages/contact-page/index.d.ts +261 -0
- package/dist/pages/contact-page/index.d.ts.map +1 -0
- package/dist/pages/contact-page/index.js +136 -0
- package/dist/pages/docs-shell/docs-shell.d.ts +8 -0
- package/dist/pages/docs-shell/docs-shell.d.ts.map +1 -1
- package/dist/pages/docs-shell/docs-shell.js +24 -7
- package/dist/pages/error-page/index.d.ts +188 -0
- package/dist/pages/error-page/index.d.ts.map +1 -0
- package/dist/pages/error-page/index.js +98 -0
- package/dist/pages/index.d.ts +10 -0
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/pages/index.js +14 -0
- package/dist/pages/legal-page/index.d.ts +194 -0
- package/dist/pages/legal-page/index.d.ts.map +1 -0
- package/dist/pages/legal-page/index.js +99 -0
- package/dist/pages/onboarding-page/index.d.ts +199 -0
- package/dist/pages/onboarding-page/index.d.ts.map +1 -0
- package/dist/pages/onboarding-page/index.js +71 -0
- package/dist/pages/pricing-page/index.d.ts +286 -0
- package/dist/pages/pricing-page/index.d.ts.map +1 -0
- package/dist/pages/pricing-page/index.js +139 -0
- package/dist/pages/search-page/index.d.ts +305 -0
- package/dist/pages/search-page/index.d.ts.map +1 -0
- package/dist/pages/search-page/index.js +142 -0
- package/dist/pages/status-page/index.d.ts +366 -0
- package/dist/pages/status-page/index.d.ts.map +1 -0
- package/dist/pages/status-page/index.js +136 -0
- package/dist/styles.css +1003 -55
- package/package.json +9 -3
|
@@ -0,0 +1,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 };
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* One image the field holds, and the three things the field knows about it.
|
|
4
|
+
*
|
|
5
|
+
* A reference and not a file. A `File` object is a browser fact that does not
|
|
6
|
+
* survive a page reload and says nothing about where the bytes are, and a
|
|
7
|
+
* design system that took one would be a Component whose value is only meaningful
|
|
8
|
+
* on the machine that produced it. What a form field actually holds is a handle:
|
|
9
|
+
* an id the caller's own store recognises, and a name a reader recognises. The
|
|
10
|
+
* caller resolves that handle into a URL, a signed path or a thumbnail component,
|
|
11
|
+
* and passes the result as `preview`, because how an image is fetched, cached and
|
|
12
|
+
* cropped is the caller's transport decision and Prism ships no client.
|
|
13
|
+
*/
|
|
14
|
+
export type ImageListFieldImage = {
|
|
15
|
+
/**
|
|
16
|
+
* The caller's own identity for the image, and what the remove control reports.
|
|
17
|
+
*
|
|
18
|
+
* Required, and required as a string rather than as the file name, for the
|
|
19
|
+
* reason `FileUpload` states in full: a reader who adds the same photograph
|
|
20
|
+
* twice has two rows with the same name, and two remove controls that announce
|
|
21
|
+
* identically are two controls nobody can tell apart.
|
|
22
|
+
*/
|
|
23
|
+
id: string;
|
|
24
|
+
/**
|
|
25
|
+
* The name a reader recognises the image by.
|
|
26
|
+
*
|
|
27
|
+
* A word and not a sentence. It is drawn truncated in the middle and it is what
|
|
28
|
+
* `removeLabel` is given, so it is the one string in the row that a caller
|
|
29
|
+
* should keep short enough to finish reading.
|
|
30
|
+
*/
|
|
31
|
+
name: string;
|
|
32
|
+
/**
|
|
33
|
+
* The caller's own picture for the row, clipped to a fixed square.
|
|
34
|
+
*
|
|
35
|
+
* A `ReactNode` and not a URL. A URL here would be a claim that the image lives
|
|
36
|
+
* at an address the browser can fetch, which is false for a blob, a signed
|
|
37
|
+
* path that expires, a data URI and anything behind an authenticated route, and
|
|
38
|
+
* a Component that rendered an `<img>` would then be drawing a broken image and
|
|
39
|
+
* an alt text it invented. Pass an `img` with the caller's own `alt`, or a
|
|
40
|
+
* placeholder mark; both are the caller's to choose.
|
|
41
|
+
*/
|
|
42
|
+
preview?: ReactNode;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The props the Image list field accepts.
|
|
46
|
+
*
|
|
47
|
+
* A declared interface rather than a forwarded native one, which is the opposite
|
|
48
|
+
* of what most of this package does and is right here: every prop on this
|
|
49
|
+
* Component is a fact about the caller's value or a sentence the caller owns, and
|
|
50
|
+
* there is no native attribute left to forward once those are spent.
|
|
51
|
+
*/
|
|
52
|
+
export interface ImageListFieldProps {
|
|
53
|
+
/**
|
|
54
|
+
* The images, in the order the reader added them.
|
|
55
|
+
*
|
|
56
|
+
* Required, and order is the caller's because it is a claim about importance.
|
|
57
|
+
* The list is an `ol`, so the position is in the accessibility tree and a
|
|
58
|
+
* reader who removes the third of six hears the five that remain renumbered
|
|
59
|
+
* rather than having to count them again.
|
|
60
|
+
*/
|
|
61
|
+
images: ImageListFieldImage[];
|
|
62
|
+
/**
|
|
63
|
+
* The most images this field will hold.
|
|
64
|
+
*
|
|
65
|
+
* Required, and a number rather than a boolean, because "at most one" and "at
|
|
66
|
+
* most twelve" are the same shape of rule and only one of them is a decision
|
|
67
|
+
* about a product. A caller that does not have a cap does not use this
|
|
68
|
+
* Component: a list with no ceiling is a `FileUpload` with a receipt's worth of
|
|
69
|
+
* rows, and the Component that already draws that is one call away.
|
|
70
|
+
*/
|
|
71
|
+
cap: number;
|
|
72
|
+
/**
|
|
73
|
+
* The visible label of the add affordance, in the product's own words.
|
|
74
|
+
*
|
|
75
|
+
* Required and never defaulted. "Add photograph", "Add another floor plan" and
|
|
76
|
+
* "Subir imagen" are three products' answers, and the affordance is the one
|
|
77
|
+
* place on the field where a reader decides whether the rule is one they accept.
|
|
78
|
+
*/
|
|
79
|
+
addLabel: ReactNode;
|
|
80
|
+
/**
|
|
81
|
+
* Called when the reader asks for another image.
|
|
82
|
+
*
|
|
83
|
+
* Required, and it is a callback rather than a composed `Dropzone` on purpose.
|
|
84
|
+
* This Component cannot know what an image is on the caller's side: it may be a
|
|
85
|
+
* browser `File` on its way to an upload, a URL already in the caller's store,
|
|
86
|
+
* or a picked frame from a camera roll the browser has no input for. Enforcing
|
|
87
|
+
* the cap means owning the affordance, and owning the affordance means Prism
|
|
88
|
+
* draws the control while the caller keeps the picker: compose `Dropzone` in
|
|
89
|
+
* your own layout, or a `Button` over a hidden `input`, and open it here. The
|
|
90
|
+
* alternative, Prism rendering a `Dropzone` and being handed `File` objects,
|
|
91
|
+
* would make a field about images a field about uploads, and every caller whose
|
|
92
|
+
* images are already stored would have to fake a `File` to use it.
|
|
93
|
+
*/
|
|
94
|
+
onAdd: () => void;
|
|
95
|
+
/**
|
|
96
|
+
* Called with an image's `id` when the reader takes it off the list.
|
|
97
|
+
*
|
|
98
|
+
* Required rather than optional, unlike `FileUpload`'s. A `FileUpload` is
|
|
99
|
+
* sometimes a receipt, and offering to remove an attachment from a receipt is a
|
|
100
|
+
* promise the product cannot keep. A field is not a receipt: the images on it
|
|
101
|
+
* are the ones the reader is still choosing between, so a field where a chosen
|
|
102
|
+
* image cannot be unchosen is a form with a mistake in it and no way back.
|
|
103
|
+
*/
|
|
104
|
+
onRemove: (id: string) => void;
|
|
105
|
+
/**
|
|
106
|
+
* The accessible name of one row's remove control, given that row's image name.
|
|
107
|
+
*
|
|
108
|
+
* Required, and a function because the name has to name the image and the
|
|
109
|
+
* image's name is the caller's string rather than this package's sentence. A
|
|
110
|
+
* nameless remove control is announced as "button", and a screen reader user
|
|
111
|
+
* holding a list of six is left to work out which row it belongs to.
|
|
112
|
+
*/
|
|
113
|
+
removeLabel: (name: string) => string;
|
|
114
|
+
/**
|
|
115
|
+
* What stands in for the list while it is empty.
|
|
116
|
+
*
|
|
117
|
+
* Required, and it is a label rather than a placeholder row. A row with no
|
|
118
|
+
* image in it is a row a reader tries to remove, and a row whose preview is
|
|
119
|
+
* still loading is a row that looks like a broken image. The absence is either
|
|
120
|
+
* the caller's own sentence or, here, nothing at all: a caller who would rather
|
|
121
|
+
* the field showed nothing until the first image passes an empty string and
|
|
122
|
+
* gets nothing drawn, because the check is on the value's length and not on
|
|
123
|
+
* this prop being present.
|
|
124
|
+
*/
|
|
125
|
+
empty: ReactNode;
|
|
126
|
+
/**
|
|
127
|
+
* What the reader is told when the cap is reached.
|
|
128
|
+
*
|
|
129
|
+
* Optional, and it exists because the affordance going unavailable is a
|
|
130
|
+
* question the reader will ask. A dimmed add button answers "can I not" and not
|
|
131
|
+
* "why not", and a form whose only feedback is a dimmed control is the dead end
|
|
132
|
+
* the disabled-state rule exists to prevent. Written with the limit and the way
|
|
133
|
+
* past it: "Six is the most a listing takes. Remove one to swap it." The
|
|
134
|
+
* affordance points at it with `aria-describedby` while it is shown, so the
|
|
135
|
+
* reason is announced with the control rather than sitting beside it as a line
|
|
136
|
+
* a reader has to find.
|
|
137
|
+
*/
|
|
138
|
+
capLabel?: ReactNode;
|
|
139
|
+
/**
|
|
140
|
+
* The list's own name, drawn above it and used as its accessible name.
|
|
141
|
+
*
|
|
142
|
+
* Optional rather than required, and the omission is deliberate rather than an
|
|
143
|
+
* oversight: this is the one place in the package where a region is allowed to
|
|
144
|
+
* arrive anonymous, and `ListPanel` says why at length. A list called "Images"
|
|
145
|
+
* is a claim that is wrong in every consumer's product, and a screen reader
|
|
146
|
+
* user hearing a generic name learns less than hearing none, because a name is
|
|
147
|
+
* a promise that something follows it. Omit it and the list is honestly absent
|
|
148
|
+
* from the landmark list; pass one when the field sits among several.
|
|
149
|
+
*/
|
|
150
|
+
label?: ReactNode;
|
|
151
|
+
/** Layout only. Changing a Prism-owned visual property from here is prohibited. */
|
|
152
|
+
className?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* An ordered list of images with a cap, a per-item remove, and an add affordance
|
|
156
|
+
* that stops offering a seventh before the reader has chosen one.
|
|
157
|
+
*
|
|
158
|
+
* **It is not a `FileUpload`, and the difference is the cap.** `FileUpload` is the
|
|
159
|
+
* receipt half of an upload: it renders whatever array it is handed, with no
|
|
160
|
+
* ceiling and no way in, because a receipt names what was sent and a limit on
|
|
161
|
+
* what may be sent belongs to the control that sends. This is the other half. It
|
|
162
|
+
* has a ceiling, and the ceiling is a rule about the caller's product, so the
|
|
163
|
+
* Component that can enforce it is the one that owns the affordance. A caller who
|
|
164
|
+
* wants a capped list today writes a button, a length test and a disabled branch,
|
|
165
|
+
* and the branch is the interesting one, because a cap enforced anywhere else
|
|
166
|
+
* produces one of two lies: a value holding six images rendered as four, or six
|
|
167
|
+
* rows where the fifth and sixth are drawn in a way that says they are not
|
|
168
|
+
* welcome. Neither is a fact about the reader's field. The one thing that is a
|
|
169
|
+
* fact is the affordance, and this is the Component that draws it.
|
|
170
|
+
*
|
|
171
|
+
* **The cap is enforced at the affordance and nowhere else, and that placement is
|
|
172
|
+
* the design.** The moment the cap is reached, the add control is still there, in
|
|
173
|
+
* the tab order, and marked `aria-disabled`; it is not removed and it is not
|
|
174
|
+
* natively disabled, because a control that vanishes leaves a keyboard reader
|
|
175
|
+
* with a gap and no announcement, and a natively disabled one is gone from the tab
|
|
176
|
+
* order for the same reason. `Dropzone` states the whole argument and this
|
|
177
|
+
* Component inherits it. The reader learns the cap before they spend a pick, and
|
|
178
|
+
* the value is never silently truncated.
|
|
179
|
+
*
|
|
180
|
+
* **Removing a middle row moves focus, and that is the part no prop can express.**
|
|
181
|
+
* The naive `onRemove` hands the reader back to the document: the button they
|
|
182
|
+
* pressed is unmounted with the row, focus falls to `body`, and the next Tab
|
|
183
|
+
* starts from the top of the page, so a reader removing the third of six
|
|
184
|
+
* photographs is returned to the top of a form to find the two they still meant
|
|
185
|
+
* to change. The correct destination is a neighbour, and which neighbour is a
|
|
186
|
+
* fact about the index the caller does not know this Component holds: the row
|
|
187
|
+
* that moved up into the removed row's place, or the one above it when the
|
|
188
|
+
* removed row was last. Prism knows the index because it drew the row, so Prism
|
|
189
|
+
* moves the focus. When the last image goes, the focus lands on the add control,
|
|
190
|
+
* because that is the only operable thing left in the field and dropping a reader
|
|
191
|
+
* on nothing is the same defect one level up.
|
|
192
|
+
*
|
|
193
|
+
* **The row is a reference and the list is an `ol`, so position is in the
|
|
194
|
+
* accessibility tree.** The Component does not draw an ordinal and does not
|
|
195
|
+
* renumber anything by hand: an `ol` reports "3 of 6" for free, and the
|
|
196
|
+
* renumbering the reader needs after a removal is the list doing its job rather
|
|
197
|
+
* than a number this Component recomputed and could get wrong. The remove control
|
|
198
|
+
* is named by the caller's own sentence so the two do not have to agree.
|
|
199
|
+
*
|
|
200
|
+
* **It draws its own row and does not compose `FileUpload`, and the reason is the
|
|
201
|
+
* number of bytes.** `FileUpload`'s row is a name, a size in bytes, an optional
|
|
202
|
+
* transfer meter and an optional per-file error, and a field of references has
|
|
203
|
+
* none of those: a stored image has no size until the caller fetches it, and
|
|
204
|
+
* drawing a byte count for an image that has not been downloaded is a
|
|
205
|
+
* measurement of nothing. The two would also disagree about focus, because
|
|
206
|
+
* `FileUpload` owns its own remove control and there is no way to tell it where
|
|
207
|
+
* the reader's focus should land afterwards without reaching into its markup. The
|
|
208
|
+
* composition Prism does make is outward: `onAdd` is the seam where a `Dropzone`
|
|
209
|
+
* or a hidden `input` is composed, and `Button` draws the affordance rather than
|
|
210
|
+
* this Component re-deriving a control's metrics.
|
|
211
|
+
*
|
|
212
|
+
* **It is a client Component**, because the focus handoff and the cap's arrival
|
|
213
|
+
* both happen after the reader acts, and neither can be known at a server render.
|
|
214
|
+
* What that costs is the price of every client field: a form with images on it
|
|
215
|
+
* carries a hydration boundary, and a caller whose form is otherwise static pays
|
|
216
|
+
* for this one. The value is still the caller's, so a server Component may render
|
|
217
|
+
* the whole field once with the list already in place; what it may not do is offer
|
|
218
|
+
* a capped, removable list whose focus behaves, because that part is a client
|
|
219
|
+
* fact.
|
|
220
|
+
*
|
|
221
|
+
* **Two upstream spellings are this one job, and the catalogue holds one of
|
|
222
|
+
* them.** An image list and a gallery upload differ in whether the frame around
|
|
223
|
+
* the images is decorative, and in nothing else: both are an ordered list of
|
|
224
|
+
* image references, both cap, both remove. Publishing both would put two Items in
|
|
225
|
+
* the list whose only difference is a wrapper one of them drew, and a list
|
|
226
|
+
* nobody can search is what the naming law exists to prevent. A caller who wants
|
|
227
|
+
* a gallery frames the list themselves, which is layout and therefore already
|
|
228
|
+
* theirs.
|
|
229
|
+
*/
|
|
230
|
+
declare function ImageListField({ images, cap, addLabel, onAdd, onRemove, removeLabel, empty, capLabel, label, className, }: ImageListFieldProps): import("react").JSX.Element;
|
|
231
|
+
export { ImageListField };
|
|
232
|
+
//# sourceMappingURL=image-list-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-list-field.d.ts","sourceRoot":"","sources":["../../../src/components/ui/image-list-field.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKhE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;;;OAOG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,MAAM,EAAE,mBAAmB,EAAE,CAAA;IAC7B;;;;;;;;OAQG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;;;;OAMG;IACH,QAAQ,EAAE,SAAS,CAAA;IACnB;;;;;;;;;;;;;OAaG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB;;;;;;;;OAQG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B;;;;;;;OAOG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACrC;;;;;;;;;;OAUG;IACH,KAAK,EAAE,SAAS,CAAA;IAChB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,iBAAS,cAAc,CAAC,EACtB,MAAM,EACN,GAAG,EACH,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE,mBAAmB,+BA8JrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
|