@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,130 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronLeftIcon, ChevronRightIcon, XIcon, ZoomInIcon, ZoomOutIcon } from 'lucide-react';
|
|
4
|
+
import { useEffect, useState } from 'react';
|
|
5
|
+
import { cn } from '../../lib/utils.js';
|
|
6
|
+
import { Dialog, DialogClose, DialogContent, DialogTitle } from './dialog.js';
|
|
7
|
+
/**
|
|
8
|
+
* The metrics every control in this Component draws, and the coarse-pointer floor.
|
|
9
|
+
*
|
|
10
|
+
* `pointer-coarse:size-11` is a step rather than a band. These are ghost icon
|
|
11
|
+
* controls in a centred bar inside the dialog, and the drawn size is not the point of
|
|
12
|
+
* any of them, which is the condition a band exists for and the reason the switch,
|
|
13
|
+
* thumb and corner-icon cases in `DESIGN.md` band instead. The bar is `gap-2`, so
|
|
14
|
+
* growing each control by four pixels on each side costs eight pixels of gap per
|
|
15
|
+
* neighbour and the bar is centred rather than flush, so nothing shifts off the edge.
|
|
16
|
+
*
|
|
17
|
+
* The close control here is a `DialogClose`, and `DialogClose` carries no size of its
|
|
18
|
+
* own: `dialog.tsx` puts its coarse-pointer floor on the close control it renders
|
|
19
|
+
* inside `DialogContent`, and this one is a separate `DialogClose` passed as a child,
|
|
20
|
+
* so this string is the only thing sizing it. See DESIGN.md, The coarse-pointer floor.
|
|
21
|
+
*/
|
|
22
|
+
const CONTROL = 'text-muted-foreground hover:text-foreground inline-flex size-9 items-center justify-center rounded-md outline-none transition-colors duration-fast ease-out disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-ring focus-visible:ring-[3px]' +
|
|
23
|
+
' pointer-coarse:size-11';
|
|
24
|
+
/** An index held inside the set, which is what keeps a rail control from falling off it. */
|
|
25
|
+
function clamp(value, total) {
|
|
26
|
+
if (total <= 0)
|
|
27
|
+
return 0;
|
|
28
|
+
return Math.min(Math.max(value, 0), total - 1);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* An image at full size, in a dialog, with its own words and its own way out.
|
|
32
|
+
*
|
|
33
|
+
* **This Item exists because an image the reader cannot enlarge is an image the
|
|
34
|
+
* reader cannot read.** That is the whole argument, and it is not a small one,
|
|
35
|
+
* because an image carries text for a great many products: a chart exported as
|
|
36
|
+
* a picture, a screenshot of a console, a diagram, a photograph of a receipt, a
|
|
37
|
+
* logo lockup with a wordmark in it. At 320 pixels wide none of that is
|
|
38
|
+
* readable, and a reader who cannot read it has been shown a thumbnail and told
|
|
39
|
+
* it was the thing. Zooming in the browser is the alternative every consumer
|
|
40
|
+
* reaches for, and it is a poor one for a reader who is not using a mouse, one
|
|
41
|
+
* for a touch device where the gesture is not discoverable, and one that leaves
|
|
42
|
+
* the page's own focus, Escape key and scroll position behind, so the reader
|
|
43
|
+
* comes back to a different place than they left. A dialog is the whole of that
|
|
44
|
+
* and it comes free from a component library.
|
|
45
|
+
*
|
|
46
|
+
* **The dialog is `Dialog`, not a re-derivation of it.** The focus trap, the
|
|
47
|
+
* restore of focus to whatever opened it, the Escape key, the outside press, the
|
|
48
|
+
* scroll lock and the portal are all already solved and all of them are solved
|
|
49
|
+
* badly twice as often as they are solved well. An image overlay built on
|
|
50
|
+
* `<div>` and a `keydown` listener gets the Escape key and no focus trap, so a
|
|
51
|
+
* keyboard reader tabs behind the image into a page they cannot see; and every
|
|
52
|
+
* one of those defects is invisible in review because the overlay works for the
|
|
53
|
+
* person writing it. So this Component composes `Dialog` and spends its own
|
|
54
|
+
* surface on the three things `Dialog` does not know about: the rail, the
|
|
55
|
+
* controls and the zoom.
|
|
56
|
+
*
|
|
57
|
+
* **The four labels are props because Prism does not ship the words.** That is
|
|
58
|
+
* `check-block-copy`'s finding about `Dialog`'s close button, and it is a
|
|
59
|
+
* finding about this Component too: a hardcoded label is copy a consumer cannot
|
|
60
|
+
* localise, so a product in any language but English inherits an English
|
|
61
|
+
* control in the middle of its own interface, and the only fix is a fork. They
|
|
62
|
+
* are required rather than optional even though a lightbox with no rail draws
|
|
63
|
+
* no previous and no next control, and the reasoning is worth stating because it
|
|
64
|
+
* looks like friction. A required prop is a question asked at build time; an
|
|
65
|
+
* optional one is a question nobody asks, and the lightbox that grew a rail
|
|
66
|
+
* later would be the release where the two missing labels are discovered. It
|
|
67
|
+
* also keeps the prop set stable, so adding thumbnails is not a breaking change
|
|
68
|
+
* to the type.
|
|
69
|
+
*
|
|
70
|
+
* **The zoom is a state, not a gesture.** It toggles between fitted and actual
|
|
71
|
+
* size and the frame scrolls once the image is larger than it is, so the reader
|
|
72
|
+
* pans with the scroll keys and the arrow keys the way they pan anywhere else.
|
|
73
|
+
* There is no pinch, no drag to pan and no double tap, and the reason is that
|
|
74
|
+
* each of those is a bespoke pointer model that has to be discovered, whereas a
|
|
75
|
+
* scrollable frame is a thing every reader already knows. The transition on the
|
|
76
|
+
* image is a state change the reader caused, which is the first motion law's own
|
|
77
|
+
* case, and it carries no `motion-safe:` guard because it does not need one:
|
|
78
|
+
* `packages/ui/src/styles.css` ends with one unlayered `prefers-reduced-motion`
|
|
79
|
+
* rule that stops every transition, so a reader who has asked for less motion
|
|
80
|
+
* gets the new size immediately and loses only the travel between the two.
|
|
81
|
+
*
|
|
82
|
+
* **The rail is a list of real buttons and the current one is named, not
|
|
83
|
+
* coloured.** A rail of thumbnails is the one place a lightbox most often gets
|
|
84
|
+
* this wrong: the selected thumbnail gets a border and nothing else, so a
|
|
85
|
+
* screen reader user is read six identical buttons and a reader in greyscale is
|
|
86
|
+
* shown a difference of one pixel. Here each button is named by its own `alt`,
|
|
87
|
+
* which is a description of that image rather than of the position, and the
|
|
88
|
+
* current one carries `aria-current`. The inner image is marked decorative with
|
|
89
|
+
* an empty `alt`, so the button's name is the description and not a doubled
|
|
90
|
+
* reading of the same pixels.
|
|
91
|
+
*
|
|
92
|
+
* **The current image is the caller's.** `src` and `alt` are props, so this
|
|
93
|
+
* Component cannot move the image, and every control here asks for an index
|
|
94
|
+
* rather than setting one. That is a real constraint on a caller who wants the
|
|
95
|
+
* lightbox to own the sequence, and the reason for it is the same as everywhere
|
|
96
|
+
* else in this package: the images are application data, and a Component that
|
|
97
|
+
* held them would be a Component every consumer whose gallery is not this shape
|
|
98
|
+
* had to reimplement. A caller that wants an uncontrolled lightbox passes
|
|
99
|
+
* `index` and `onIndexChange` and keeps the state; one that wants the lightbox
|
|
100
|
+
* to remember where it was omits both and gets the local one.
|
|
101
|
+
*
|
|
102
|
+
* It is a client Component, and only because `Dialog` is one.
|
|
103
|
+
*/
|
|
104
|
+
function Lightbox({ open, onOpenChange, src, alt, caption, thumbnails, index, onIndexChange, zoomLabel, previousLabel, nextLabel, closeLabel, className, }) {
|
|
105
|
+
const total = thumbnails?.length ?? 0;
|
|
106
|
+
const [uncontrolled, setUncontrolled] = useState(0);
|
|
107
|
+
const at = clamp(index ?? uncontrolled, total);
|
|
108
|
+
const [zoomed, setZoomed] = useState(false);
|
|
109
|
+
// Zoom is a decision about this visit. Reopening on the zoomed image would
|
|
110
|
+
// mean a reader who closed a picture halfway through came back to a crop they
|
|
111
|
+
// had forgotten they had made, and the reset is the smaller surprise.
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
if (!open)
|
|
114
|
+
setZoomed(false);
|
|
115
|
+
}, [open]);
|
|
116
|
+
const move = (next) => {
|
|
117
|
+
const at1 = clamp(next, total);
|
|
118
|
+
if (index === undefined)
|
|
119
|
+
setUncontrolled(at1);
|
|
120
|
+
onIndexChange?.(at1);
|
|
121
|
+
};
|
|
122
|
+
// A string caption is the dialog's name as well as its caption: one sentence
|
|
123
|
+
// naming a figure beats the same sentence twice. A node cannot be a name,
|
|
124
|
+
// because a name is a string and a node may be a list or a picture, so the
|
|
125
|
+
// dialog falls back to the image's own description.
|
|
126
|
+
const named = typeof caption === 'string' && caption.trim() !== '' ? caption : alt;
|
|
127
|
+
const titleVisible = named === caption;
|
|
128
|
+
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { "data-slot": "lightbox", showCloseButton: false, className: cn('max-w-overlay-media', className), children: [_jsx(DialogTitle, { "data-slot": "lightbox-title", className: titleVisible ? 'text-muted-foreground text-sm font-normal' : 'sr-only', children: named }), _jsx("div", { "data-slot": "lightbox-frame", "data-zoomed": zoomed || undefined, className: "overflow-auto", children: _jsx("img", { "data-slot": "lightbox-image", src: src, alt: alt, className: cn('mx-auto block transition-transform duration-base ease-out', zoomed ? 'max-w-none' : 'max-h-[70vh] max-w-full object-contain') }) }), caption !== undefined && !titleVisible ? (_jsx("div", { "data-slot": "lightbox-caption", className: "text-muted-foreground text-sm", children: caption })) : null, total > 1 ? (_jsx("ul", { "data-slot": "lightbox-rail", className: "flex flex-wrap items-center justify-center gap-2", children: thumbnails?.map((entry, at1) => (_jsx("li", { "data-slot": "lightbox-rail-item", children: _jsx("button", { type: "button", "data-slot": "lightbox-thumbnail", "data-current": at1 === at || undefined, "aria-label": entry.alt, "aria-current": at1 === at ? 'true' : undefined, onClick: () => move(at1), className: cn('block overflow-hidden rounded-md border-2 outline-none transition-colors duration-fast ease-out', at1 === at ? 'border-primary' : 'border-transparent hover:border-border', 'focus-visible:ring-ring focus-visible:ring-[3px]'), children: _jsx("img", { "data-slot": "lightbox-thumbnail-image", src: entry.src, alt: "", className: "h-12 w-16 object-cover" }) }) }, entry.src))) })) : null, _jsxs("div", { "data-slot": "lightbox-controls", className: "flex items-center justify-center gap-2", children: [total > 1 ? (_jsx("button", { type: "button", "data-slot": "lightbox-previous", "aria-label": previousLabel, disabled: at === 0, onClick: () => move(at - 1), className: CONTROL, children: _jsx(ChevronLeftIcon, { className: "size-4", "aria-hidden": "true" }) })) : null, _jsx("button", { type: "button", "data-slot": "lightbox-zoom", "aria-label": zoomLabel, "aria-pressed": zoomed, onClick: () => setZoomed((value) => !value), className: CONTROL, children: zoomed ? (_jsx(ZoomOutIcon, { className: "size-4", "aria-hidden": "true" })) : (_jsx(ZoomInIcon, { className: "size-4", "aria-hidden": "true" })) }), total > 1 ? (_jsx("button", { type: "button", "data-slot": "lightbox-next", "aria-label": nextLabel, disabled: at === total - 1, onClick: () => move(at + 1), className: CONTROL, children: _jsx(ChevronRightIcon, { className: "size-4", "aria-hidden": "true" }) })) : null, _jsx(DialogClose, { "data-slot": "lightbox-close", "aria-label": closeLabel, className: CONTROL, children: _jsx(XIcon, { className: "size-4", "aria-hidden": "true" }) })] })] }) }));
|
|
129
|
+
}
|
|
130
|
+
export { Lightbox };
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { type ComponentProps, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The props a `ListPanelHeader` takes.
|
|
4
|
+
*
|
|
5
|
+
* A part rather than an Item, and it stays inside this module: DESIGN.md's
|
|
6
|
+
* authoring contract says compound parts ship from their parent module and do not
|
|
7
|
+
* form a second vocabulary, so `ListPanelHeader` is not a catalogue entry and gets
|
|
8
|
+
* no folder of its own.
|
|
9
|
+
*/
|
|
10
|
+
export interface ListPanelHeaderProps extends Omit<ComponentProps<'div'>, 'title'> {
|
|
11
|
+
/**
|
|
12
|
+
* The id the panel's `aria-labelledby` points at.
|
|
13
|
+
*
|
|
14
|
+
* Supplied by `ListPanel`, which generates it and puts it on the title element.
|
|
15
|
+
* It is not optional in the sense of being forgettable: a caller who renders a
|
|
16
|
+
* `ListPanelHeader` inside their own `section` passes their own id and sets
|
|
17
|
+
* `aria-labelledby` themselves, and the cost of that arrangement is the reason
|
|
18
|
+
* the `title` prop on `ListPanel` is the ordinary path.
|
|
19
|
+
*/
|
|
20
|
+
titleId: string;
|
|
21
|
+
/** The one line that names the panel. */
|
|
22
|
+
title?: ReactNode;
|
|
23
|
+
/** The supporting line under the title. */
|
|
24
|
+
description?: ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* A count line, such as the caller's own "12 of 40".
|
|
27
|
+
*
|
|
28
|
+
* A node and not a number because the sentence around the number is the
|
|
29
|
+
* consumer's: an English reader wants "12 of 40", a locale that puts the total
|
|
30
|
+
* first wants it the other way round, and a panel that assembled the sentence
|
|
31
|
+
* would have assembled it in one of them.
|
|
32
|
+
*/
|
|
33
|
+
count?: ReactNode;
|
|
34
|
+
/** The controls at the trailing edge of the header. */
|
|
35
|
+
actions?: ReactNode;
|
|
36
|
+
/** Layout only. */
|
|
37
|
+
className?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The props a `ListPanelBody` takes, as a union over whether the body scrolls.
|
|
41
|
+
*
|
|
42
|
+
* A union rather than two independent optionals, for the reason the whole module
|
|
43
|
+
* keeps repeating: a scroll region is a tab stop, so a scrolling body owes it a
|
|
44
|
+
* name, and a body that does not scroll is not a tab stop and owes nothing. One
|
|
45
|
+
* optional prop set cannot say that, and a `label` that is required in one shape
|
|
46
|
+
* and optional in another is a prop whose absence is sometimes a mistake and
|
|
47
|
+
* sometimes a decision.
|
|
48
|
+
*/
|
|
49
|
+
export type ListPanelBodyProps = Omit<ComponentProps<'div'>, 'children'> & {
|
|
50
|
+
/** The rows, or whatever the list actually is. */
|
|
51
|
+
children?: ReactNode;
|
|
52
|
+
/** Layout only. */
|
|
53
|
+
className?: string;
|
|
54
|
+
} & ({
|
|
55
|
+
/**
|
|
56
|
+
* A body that scrolls, which is a tab stop and therefore has to be named.
|
|
57
|
+
*
|
|
58
|
+
* The rule `ScrollArea` states, restated here because the body is the part
|
|
59
|
+
* the caller touches, and a rule one step further on is a rule a caller reading
|
|
60
|
+
* this module never meets. `scroll` is optional in this arm rather than
|
|
61
|
+
* required, so a caller who is scrolling writes `<ListPanelBody label="...">`
|
|
62
|
+
* and reads no boolean at all.
|
|
63
|
+
*/
|
|
64
|
+
scroll?: true;
|
|
65
|
+
label: string;
|
|
66
|
+
} | {
|
|
67
|
+
/**
|
|
68
|
+
* A body that grows with its content, which is not a tab stop and needs no
|
|
69
|
+
* name.
|
|
70
|
+
*/
|
|
71
|
+
scroll?: false;
|
|
72
|
+
label?: string;
|
|
73
|
+
});
|
|
74
|
+
/** The props a `ListPanelFooter` takes. */
|
|
75
|
+
export interface ListPanelFooterProps extends ComponentProps<'div'> {
|
|
76
|
+
/** Layout only. */
|
|
77
|
+
className?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The props a `ListPanel` takes, as a union over whether the body scrolls.
|
|
81
|
+
*
|
|
82
|
+
* A union rather than one optional prop set, because `label` and `maxHeight` are
|
|
83
|
+
* required in one shape and meaningless in the other, and an optional prop cannot
|
|
84
|
+
* say that. A caller who turns scrolling on has named a tab stop and owes it a
|
|
85
|
+
* name; a caller who has turned it off has no tab stop and owes nothing.
|
|
86
|
+
*/
|
|
87
|
+
export type ListPanelProps = Omit<ComponentProps<'section'>, 'children' | 'title'> & {
|
|
88
|
+
/**
|
|
89
|
+
* The one line that names the panel, and the accessible name of the region.
|
|
90
|
+
*
|
|
91
|
+
* A `ReactNode` and not a `string`, because the panel's visible title is
|
|
92
|
+
* content: an emphasis inside it, a count styled as part of it, a node with a
|
|
93
|
+
* link in it. The accessible name is derived from this element by
|
|
94
|
+
* `aria-labelledby` rather than set as a string, so the two can never say
|
|
95
|
+
* different things.
|
|
96
|
+
*/
|
|
97
|
+
title?: ReactNode;
|
|
98
|
+
/** The supporting line under the title, in the muted ink. */
|
|
99
|
+
description?: ReactNode;
|
|
100
|
+
/**
|
|
101
|
+
* A count line, such as the caller's own "12 of 40".
|
|
102
|
+
*
|
|
103
|
+
* Rendered under the description rather than beside the title because a count
|
|
104
|
+
* is read after the name and before the description, and putting it on the
|
|
105
|
+
* title's line would make the title itself wrap for a number.
|
|
106
|
+
*/
|
|
107
|
+
count?: ReactNode;
|
|
108
|
+
/**
|
|
109
|
+
* The header's toolbar slot: the controls that act on the whole list rather
|
|
110
|
+
* than on one row.
|
|
111
|
+
*
|
|
112
|
+
* A slot and not a set of named controls, because which controls a list has is
|
|
113
|
+
* the consumer's fact. A panel that drew a search box and a sort would be a
|
|
114
|
+
* panel that assumed the list it holds is searchable and sortable.
|
|
115
|
+
*/
|
|
116
|
+
actions?: ReactNode;
|
|
117
|
+
/**
|
|
118
|
+
* The footer's slot: the actions that belong to the whole list, such as load
|
|
119
|
+
* more, or the line saying how much of the set is shown.
|
|
120
|
+
*
|
|
121
|
+
* Distinct from `actions` because a header acts on the list and a footer ends
|
|
122
|
+
* it, and because the footer is the only part that stays put while the body
|
|
123
|
+
* scrolls. Merging them would put a control that has to stay reachable in a
|
|
124
|
+
* band that scrolls away.
|
|
125
|
+
*/
|
|
126
|
+
footer?: ReactNode;
|
|
127
|
+
/** The list itself: the caller's own `ul`, `ol`, table or set of rows. */
|
|
128
|
+
children?: ReactNode;
|
|
129
|
+
/** Layout only, exactly as on every Component. */
|
|
130
|
+
className?: string;
|
|
131
|
+
} & ({
|
|
132
|
+
/**
|
|
133
|
+
* Whether the body scrolls inside the panel's `maxHeight`.
|
|
134
|
+
*
|
|
135
|
+
* On by default, and the default is the decision: the panel exists because
|
|
136
|
+
* the list is long, and a panel that grows to the length of its list is a
|
|
137
|
+
* frame around a page.
|
|
138
|
+
*/
|
|
139
|
+
scroll?: true;
|
|
140
|
+
/**
|
|
141
|
+
* The height the panel stops at, in pixels, once the list is longer than
|
|
142
|
+
* that.
|
|
143
|
+
*
|
|
144
|
+
* A number and not a Tailwind class because the bound is data rather than
|
|
145
|
+
* layout: the same panel is a short one in a sidebar and a tall one on a
|
|
146
|
+
* full page, and a caller who could only say `max-h-80` would be picking
|
|
147
|
+
* one of those for the other.
|
|
148
|
+
*/
|
|
149
|
+
maxHeight?: number;
|
|
150
|
+
/**
|
|
151
|
+
* The panel's accessible name, and the scroll region's.
|
|
152
|
+
*
|
|
153
|
+
* A `string` and not a `ReactNode`, because this one is written into
|
|
154
|
+
* `aria-label` and an accessible name is a string. A node here would
|
|
155
|
+
* render as nothing a reader hears.
|
|
156
|
+
*/
|
|
157
|
+
label: string;
|
|
158
|
+
} | {
|
|
159
|
+
/** Turn scrolling off for a panel whose list is known to be short. */
|
|
160
|
+
scroll: false;
|
|
161
|
+
/** A bound with no scrolling is a bound that hides rows, so it is refused. */
|
|
162
|
+
maxHeight?: never;
|
|
163
|
+
/**
|
|
164
|
+
* The panel's accessible name, used only when there is no `title` to take
|
|
165
|
+
* it from.
|
|
166
|
+
*/
|
|
167
|
+
label?: string;
|
|
168
|
+
});
|
|
169
|
+
/**
|
|
170
|
+
* A titled panel whose body is a scrolling list, with slots above and below it.
|
|
171
|
+
*
|
|
172
|
+
* **This is the third thing, and the reason it exists is that the other two were
|
|
173
|
+
* already taken.** `item.tsx` is a row: media, a name, a description, a value
|
|
174
|
+
* and trailing controls, with no opinion at all about what encloses it. And
|
|
175
|
+
* `fact-list.tsx` is a definition list: a term beside its answer, scanned down a
|
|
176
|
+
* column, short enough that the whole set is meant to be read. Neither is a
|
|
177
|
+
* container, and a long list needs one. So this is the third thing: a titled,
|
|
178
|
+
* bounded, scrollable region that gives a long list a place to end. The three
|
|
179
|
+
* compose, and none of them can be derived from another: rows without a panel is
|
|
180
|
+
* a page that never ends, and a panel without rows is a frame.
|
|
181
|
+
*
|
|
182
|
+
* **A `ListPanel` is not a table, and the difference is the reader's job rather
|
|
183
|
+
* than the markup's.** A panel holds a list: each row is one thing, read top to
|
|
184
|
+
* bottom, and the reader is scanning for the one they want. The moment the reader
|
|
185
|
+
* needs to compare a value in one row against the same value in another, the
|
|
186
|
+
* content is records with columns, the answer is `table.tsx`, and putting rows in
|
|
187
|
+
* a panel instead is a table a reader has to read cell by cell because the
|
|
188
|
+
* semantics are not there. The reverse is equally wrong: a two-column table of
|
|
189
|
+
* one thing per row, where the second column is a status nobody compares against
|
|
190
|
+
* anything, is a list that paid for column semantics it does not use.
|
|
191
|
+
*
|
|
192
|
+
* **The region is a real `<section>` and it is named by its own title.** Not a
|
|
193
|
+
* `div`, because a panel of forty rows is a landmark a screen reader user walks
|
|
194
|
+
* past on the way to something else, and a landmark they cannot name is a
|
|
195
|
+
* landmark they walk past twice. The name comes from `aria-labelledby` pointing
|
|
196
|
+
* at the title element rather than from a string prop, so the name a reader hears
|
|
197
|
+
* and the name a sighted reader reads are the same text by construction and
|
|
198
|
+
* cannot drift.
|
|
199
|
+
*
|
|
200
|
+
* **With no title there is no invented one.** The panel renders a `section` with
|
|
201
|
+
* no name and says nothing, and `label` is the only way to name it. This is the
|
|
202
|
+
* one place in this package where a region is allowed to arrive anonymous, and it
|
|
203
|
+
* is the right answer rather than a gap: a panel named "Panel" is a claim that
|
|
204
|
+
* is wrong in every consumer's product, and a screen reader user hearing "Panel"
|
|
205
|
+
* learns less than hearing nothing, because a name is a promise that something
|
|
206
|
+
* follows it. An anonymous region is honestly absent from the landmark list and
|
|
207
|
+
* the reader moves on. A caller who wants a name passes one.
|
|
208
|
+
*
|
|
209
|
+
* **The scroll is `ScrollArea` and not `overflow: auto`, and that is the whole
|
|
210
|
+
* reason the body is not written inline.** The browser's scrollbar is the one
|
|
211
|
+
* control on a page that belongs to no design system: it is a rectangle the
|
|
212
|
+
* operating system drew, in a colour chosen for the OS's own background rather
|
|
213
|
+
* than for the card the content is on, and it is the only control that is resized
|
|
214
|
+
* by dragging and appears on a timer. Composing this panel around `overflow-auto`
|
|
215
|
+
* would give the reader a Prism surface beside an operating system scrollbar on
|
|
216
|
+
* every panel in every consumer. The scrolling itself is still the browser's, so
|
|
217
|
+
* the arrow keys, Page Up, Page Down, Home, End, the scroll position and
|
|
218
|
+
* scroll-into-view all keep working, and only the bar's appearance is taken over.
|
|
219
|
+
*
|
|
220
|
+
* **The bound is on the panel and the body absorbs it.** `maxHeight` is set on
|
|
221
|
+
* the `section`, which is a flex column, and the body is the flex item that
|
|
222
|
+
* shrinks, so a list shorter than the bound grows the panel to fit and a list
|
|
223
|
+
* longer than it scrolls inside what is left after the header and the footer. The
|
|
224
|
+
* alternative, a `max-height` on the scroll region alone, leaves the region's own
|
|
225
|
+
* height content-driven and clips the rows without giving the reader anything to
|
|
226
|
+
* scroll.
|
|
227
|
+
*
|
|
228
|
+
* **The title's id is generated, and `useId` is why this module needs no
|
|
229
|
+
* `'use client'`.** Pointing `aria-labelledby` at an element the Component drew
|
|
230
|
+
* itself needs an id, and the Component may not invent one by counting: two panels
|
|
231
|
+
* on a page would both reach for the same first id. `useId` is the one hook React
|
|
232
|
+
* runs during a server render as well as a client one, so the panel is an ordinary
|
|
233
|
+
* server Component with the `'use client'` line and the client runtime left off.
|
|
234
|
+
* What that costs is stated rather than implied: a panel whose body scrolls is in
|
|
235
|
+
* the client graph anyway, through `ScrollArea`, and a panel with `scroll={false}`
|
|
236
|
+
* and no caller state of its own ships no JavaScript from this file.
|
|
237
|
+
*
|
|
238
|
+
* The four exported parts are the panel's own pieces, and they are exported
|
|
239
|
+
* rather than kept private for the reason `Card`'s parts are: a caller who wants
|
|
240
|
+
* the header's geometry inside a `Card` they built, or a footer on a section of
|
|
241
|
+
* their own, should not have to re-derive `border-b px-4 py-3` to get it. The
|
|
242
|
+
* `title`, `description`, `count`, `actions` and `footer` props are the shorthand
|
|
243
|
+
* for the ordinary case, and the two are the same markup.
|
|
244
|
+
*/
|
|
245
|
+
declare function ListPanel({ title, description, count, actions, footer, children, scroll, maxHeight, label, className, style, ...props }: ListPanelProps): import("react").JSX.Element;
|
|
246
|
+
/**
|
|
247
|
+
* The row above a panel's list: the title, its supporting lines, and a toolbar
|
|
248
|
+
* slot at the trailing edge.
|
|
249
|
+
*
|
|
250
|
+
* Rendered by `ListPanel` when any of its four slots is present, and not rendered
|
|
251
|
+
* at all when none is, because a bordered band with nothing in it is a gap the
|
|
252
|
+
* reader looks through. The title element is a `span` carrying the id the panel
|
|
253
|
+
* points `aria-labelledby` at, rather than a heading: a panel's title is not
|
|
254
|
+
* always the heading of the region it sits in, four panels in a grid are four
|
|
255
|
+
* titles under one section heading, and four `h3`s under one `h2` is right while
|
|
256
|
+
* four `h2`s is four sections. A caller who wants a heading there passes an
|
|
257
|
+
* element as `title` and keeps the name.
|
|
258
|
+
*/
|
|
259
|
+
declare function ListPanelHeader({ titleId, title, description, count, actions, className, ...props }: ListPanelHeaderProps): import("react").JSX.Element;
|
|
260
|
+
/**
|
|
261
|
+
* A panel's body: the list, and the scroll region it scrolls in.
|
|
262
|
+
*
|
|
263
|
+
* **The scroll region is `ScrollArea` and the rows are the caller's own element.**
|
|
264
|
+
* The panel draws the frame and the scrollbar; the caller writes the `ul`, the
|
|
265
|
+
* `ol` or the table inside it, because the shape of the list is a fact about the
|
|
266
|
+
* data and a list of records in a `ul` is a different thing from the same records
|
|
267
|
+
* in a table. That is the same decision `Item` makes about the row, applied one
|
|
268
|
+
* level up, and it is why this Component takes `children` and no `items`.
|
|
269
|
+
*
|
|
270
|
+
* The vertical scrollbar only. A panel scrolls because it is tall, and a panel
|
|
271
|
+
* whose content is also wider than the panel is a caller who has put a table in
|
|
272
|
+
* the wrong place: `table.tsx` already owns a horizontal region for exactly that,
|
|
273
|
+
* and two nested scrollers is a reader with two axes to guess about.
|
|
274
|
+
*/
|
|
275
|
+
declare function ListPanelBody({ scroll, label, className, children, ...props }: ListPanelBodyProps): import("react").JSX.Element;
|
|
276
|
+
/**
|
|
277
|
+
* The band under a panel's list, where the actions that belong to the whole list
|
|
278
|
+
* sit and where a count that is not the caller's headline number belongs.
|
|
279
|
+
*
|
|
280
|
+
* On the muted surface and above a rule rather than on the card, because it is the
|
|
281
|
+
* one band in the panel that does not scroll: a control the reader has to reach
|
|
282
|
+
* after scrolling to the end of a long list cannot be in the list. A footer that
|
|
283
|
+
* scrolls away with the rows is a footer that only exists for a reader who never
|
|
284
|
+
* needed it.
|
|
285
|
+
*/
|
|
286
|
+
declare function ListPanelFooter({ className, ...props }: ListPanelFooterProps): import("react").JSX.Element;
|
|
287
|
+
export { ListPanel, ListPanelHeader, ListPanelBody, ListPanelFooter };
|
|
288
|
+
//# sourceMappingURL=list-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-panel.d.ts","sourceRoot":"","sources":["../../../src/components/ui/list-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKlE;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChF;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IACzE,kDAAkD;IAClD,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,CACA;IACE;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,GACD;IACE;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CACJ,CAAA;AAED,2CAA2C;AAC3C,MAAM,WAAW,oBAAqB,SAAQ,cAAc,CAAC,KAAK,CAAC;IACjE,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IACnF;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,CACA;IACE;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,IAAI,CAAA;IACb;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAA;CACd,GACD;IACE,sEAAsE;IACtE,MAAM,EAAE,KAAK,CAAA;IACb,8EAA8E;IAC9E,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CACJ,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,iBAAS,SAAS,CAAC,EACjB,KAAK,EACL,WAAW,EACX,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,cAAc,+BAkDhB;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,eAAe,CAAC,EACvB,OAAO,EACP,KAAK,EACL,WAAW,EACX,KAAK,EACL,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,oBAAoB,+BA2CtB;AAED;;;;;;;;;;;;;;GAcG;AACH,iBAAS,aAAa,CAAC,EACrB,MAAM,EACN,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,+BAuBpB;AAED;;;;;;;;;GASG;AACH,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BAQrE;AAED,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { ScrollArea } from './scroll-area.js';
|
|
4
|
+
import { cn } from '../../lib/utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* A titled panel whose body is a scrolling list, with slots above and below it.
|
|
7
|
+
*
|
|
8
|
+
* **This is the third thing, and the reason it exists is that the other two were
|
|
9
|
+
* already taken.** `item.tsx` is a row: media, a name, a description, a value
|
|
10
|
+
* and trailing controls, with no opinion at all about what encloses it. And
|
|
11
|
+
* `fact-list.tsx` is a definition list: a term beside its answer, scanned down a
|
|
12
|
+
* column, short enough that the whole set is meant to be read. Neither is a
|
|
13
|
+
* container, and a long list needs one. So this is the third thing: a titled,
|
|
14
|
+
* bounded, scrollable region that gives a long list a place to end. The three
|
|
15
|
+
* compose, and none of them can be derived from another: rows without a panel is
|
|
16
|
+
* a page that never ends, and a panel without rows is a frame.
|
|
17
|
+
*
|
|
18
|
+
* **A `ListPanel` is not a table, and the difference is the reader's job rather
|
|
19
|
+
* than the markup's.** A panel holds a list: each row is one thing, read top to
|
|
20
|
+
* bottom, and the reader is scanning for the one they want. The moment the reader
|
|
21
|
+
* needs to compare a value in one row against the same value in another, the
|
|
22
|
+
* content is records with columns, the answer is `table.tsx`, and putting rows in
|
|
23
|
+
* a panel instead is a table a reader has to read cell by cell because the
|
|
24
|
+
* semantics are not there. The reverse is equally wrong: a two-column table of
|
|
25
|
+
* one thing per row, where the second column is a status nobody compares against
|
|
26
|
+
* anything, is a list that paid for column semantics it does not use.
|
|
27
|
+
*
|
|
28
|
+
* **The region is a real `<section>` and it is named by its own title.** Not a
|
|
29
|
+
* `div`, because a panel of forty rows is a landmark a screen reader user walks
|
|
30
|
+
* past on the way to something else, and a landmark they cannot name is a
|
|
31
|
+
* landmark they walk past twice. The name comes from `aria-labelledby` pointing
|
|
32
|
+
* at the title element rather than from a string prop, so the name a reader hears
|
|
33
|
+
* and the name a sighted reader reads are the same text by construction and
|
|
34
|
+
* cannot drift.
|
|
35
|
+
*
|
|
36
|
+
* **With no title there is no invented one.** The panel renders a `section` with
|
|
37
|
+
* no name and says nothing, and `label` is the only way to name it. This is the
|
|
38
|
+
* one place in this package where a region is allowed to arrive anonymous, and it
|
|
39
|
+
* is the right answer rather than a gap: a panel named "Panel" is a claim that
|
|
40
|
+
* is wrong in every consumer's product, and a screen reader user hearing "Panel"
|
|
41
|
+
* learns less than hearing nothing, because a name is a promise that something
|
|
42
|
+
* follows it. An anonymous region is honestly absent from the landmark list and
|
|
43
|
+
* the reader moves on. A caller who wants a name passes one.
|
|
44
|
+
*
|
|
45
|
+
* **The scroll is `ScrollArea` and not `overflow: auto`, and that is the whole
|
|
46
|
+
* reason the body is not written inline.** The browser's scrollbar is the one
|
|
47
|
+
* control on a page that belongs to no design system: it is a rectangle the
|
|
48
|
+
* operating system drew, in a colour chosen for the OS's own background rather
|
|
49
|
+
* than for the card the content is on, and it is the only control that is resized
|
|
50
|
+
* by dragging and appears on a timer. Composing this panel around `overflow-auto`
|
|
51
|
+
* would give the reader a Prism surface beside an operating system scrollbar on
|
|
52
|
+
* every panel in every consumer. The scrolling itself is still the browser's, so
|
|
53
|
+
* the arrow keys, Page Up, Page Down, Home, End, the scroll position and
|
|
54
|
+
* scroll-into-view all keep working, and only the bar's appearance is taken over.
|
|
55
|
+
*
|
|
56
|
+
* **The bound is on the panel and the body absorbs it.** `maxHeight` is set on
|
|
57
|
+
* the `section`, which is a flex column, and the body is the flex item that
|
|
58
|
+
* shrinks, so a list shorter than the bound grows the panel to fit and a list
|
|
59
|
+
* longer than it scrolls inside what is left after the header and the footer. The
|
|
60
|
+
* alternative, a `max-height` on the scroll region alone, leaves the region's own
|
|
61
|
+
* height content-driven and clips the rows without giving the reader anything to
|
|
62
|
+
* scroll.
|
|
63
|
+
*
|
|
64
|
+
* **The title's id is generated, and `useId` is why this module needs no
|
|
65
|
+
* `'use client'`.** Pointing `aria-labelledby` at an element the Component drew
|
|
66
|
+
* itself needs an id, and the Component may not invent one by counting: two panels
|
|
67
|
+
* on a page would both reach for the same first id. `useId` is the one hook React
|
|
68
|
+
* runs during a server render as well as a client one, so the panel is an ordinary
|
|
69
|
+
* server Component with the `'use client'` line and the client runtime left off.
|
|
70
|
+
* What that costs is stated rather than implied: a panel whose body scrolls is in
|
|
71
|
+
* the client graph anyway, through `ScrollArea`, and a panel with `scroll={false}`
|
|
72
|
+
* and no caller state of its own ships no JavaScript from this file.
|
|
73
|
+
*
|
|
74
|
+
* The four exported parts are the panel's own pieces, and they are exported
|
|
75
|
+
* rather than kept private for the reason `Card`'s parts are: a caller who wants
|
|
76
|
+
* the header's geometry inside a `Card` they built, or a footer on a section of
|
|
77
|
+
* their own, should not have to re-derive `border-b px-4 py-3` to get it. The
|
|
78
|
+
* `title`, `description`, `count`, `actions` and `footer` props are the shorthand
|
|
79
|
+
* for the ordinary case, and the two are the same markup.
|
|
80
|
+
*/
|
|
81
|
+
function ListPanel({ title, description, count, actions, footer, children, scroll, maxHeight, label, className, style, ...props }) {
|
|
82
|
+
const titleId = useId();
|
|
83
|
+
const named = title !== undefined;
|
|
84
|
+
const hasHeader = named || description !== undefined || count !== undefined || actions !== undefined;
|
|
85
|
+
const hasFooter = footer !== undefined && footer !== null && footer !== false;
|
|
86
|
+
return (_jsxs("section", { "data-slot": "list-panel", "aria-labelledby": named ? titleId : undefined, "aria-label": named ? undefined : label, style: maxHeight === undefined ? style : { maxHeight, ...style }, className: cn('bg-card text-card-foreground flex min-h-0 flex-col overflow-hidden rounded-lg border', className), ...props, children: [hasHeader ? (_jsx(ListPanelHeader, { titleId: titleId, title: title, description: description, count: count, actions: actions })) : null, scroll === false ? (_jsx(ListPanelBody, { label: label, children: children })) : (_jsx(ListPanelBody, { scroll: true, label: label, children: children })), hasFooter ? _jsx(ListPanelFooter, { children: footer }) : null] }));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The row above a panel's list: the title, its supporting lines, and a toolbar
|
|
90
|
+
* slot at the trailing edge.
|
|
91
|
+
*
|
|
92
|
+
* Rendered by `ListPanel` when any of its four slots is present, and not rendered
|
|
93
|
+
* at all when none is, because a bordered band with nothing in it is a gap the
|
|
94
|
+
* reader looks through. The title element is a `span` carrying the id the panel
|
|
95
|
+
* points `aria-labelledby` at, rather than a heading: a panel's title is not
|
|
96
|
+
* always the heading of the region it sits in, four panels in a grid are four
|
|
97
|
+
* titles under one section heading, and four `h3`s under one `h2` is right while
|
|
98
|
+
* four `h2`s is four sections. A caller who wants a heading there passes an
|
|
99
|
+
* element as `title` and keeps the name.
|
|
100
|
+
*/
|
|
101
|
+
function ListPanelHeader({ titleId, title, description, count, actions, className, ...props }) {
|
|
102
|
+
return (_jsxs("div", { "data-slot": "list-panel-header", className: cn('flex items-start justify-between gap-4 border-b px-4 py-3', className), ...props, children: [_jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [title === undefined ? null : (_jsx("span", { id: titleId, "data-slot": "list-panel-title", className: "text-sm font-medium", children: title })), description === undefined ? null : (_jsx("span", { "data-slot": "list-panel-description", className: "text-muted-foreground text-sm", children: description })), count === undefined ? null : (_jsx("span", { "data-slot": "list-panel-count", className: "text-muted-foreground text-xs tabular-nums", children: count }))] }), actions === undefined ? null : (_jsx("div", { "data-slot": "list-panel-actions", className: "flex shrink-0 items-center gap-2", children: actions }))] }));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* A panel's body: the list, and the scroll region it scrolls in.
|
|
106
|
+
*
|
|
107
|
+
* **The scroll region is `ScrollArea` and the rows are the caller's own element.**
|
|
108
|
+
* The panel draws the frame and the scrollbar; the caller writes the `ul`, the
|
|
109
|
+
* `ol` or the table inside it, because the shape of the list is a fact about the
|
|
110
|
+
* data and a list of records in a `ul` is a different thing from the same records
|
|
111
|
+
* in a table. That is the same decision `Item` makes about the row, applied one
|
|
112
|
+
* level up, and it is why this Component takes `children` and no `items`.
|
|
113
|
+
*
|
|
114
|
+
* The vertical scrollbar only. A panel scrolls because it is tall, and a panel
|
|
115
|
+
* whose content is also wider than the panel is a caller who has put a table in
|
|
116
|
+
* the wrong place: `table.tsx` already owns a horizontal region for exactly that,
|
|
117
|
+
* and two nested scrollers is a reader with two axes to guess about.
|
|
118
|
+
*/
|
|
119
|
+
function ListPanelBody({ scroll, label, className, children, ...props }) {
|
|
120
|
+
return (_jsx("div", { "data-slot": "list-panel-body", className: cn('min-w-0 flex-1',
|
|
121
|
+
// The two states differ in more than a wrapper. A bounded body clips and
|
|
122
|
+
// hands the overflow to the scroll region; an unbounded one is allowed to
|
|
123
|
+
// grow, because the caller has said the list is short.
|
|
124
|
+
scroll === true ? 'min-h-0 overflow-hidden' : '', className), ...props, children: scroll === true ? (_jsx(ScrollArea, { label: label, orientation: "vertical", className: "h-full", children: children })) : (children) }));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The band under a panel's list, where the actions that belong to the whole list
|
|
128
|
+
* sit and where a count that is not the caller's headline number belongs.
|
|
129
|
+
*
|
|
130
|
+
* On the muted surface and above a rule rather than on the card, because it is the
|
|
131
|
+
* one band in the panel that does not scroll: a control the reader has to reach
|
|
132
|
+
* after scrolling to the end of a long list cannot be in the list. A footer that
|
|
133
|
+
* scrolls away with the rows is a footer that only exists for a reader who never
|
|
134
|
+
* needed it.
|
|
135
|
+
*/
|
|
136
|
+
function ListPanelFooter({ className, ...props }) {
|
|
137
|
+
return (_jsx("div", { "data-slot": "list-panel-footer", className: cn('bg-muted/50 flex items-center gap-3 border-t px-4 py-3 text-sm', className), ...props }));
|
|
138
|
+
}
|
|
139
|
+
export { ListPanel, ListPanelHeader, ListPanelBody, ListPanelFooter };
|