@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,153 @@
|
|
|
1
|
+
import type { ComboboxItem } from './combobox.js';
|
|
2
|
+
/** The props the Creatable combobox accepts. */
|
|
3
|
+
export interface CreatableComboboxProps {
|
|
4
|
+
/**
|
|
5
|
+
* The accessible name of the search field.
|
|
6
|
+
*
|
|
7
|
+
* Required, and it names the search field rather than the whole control, because
|
|
8
|
+
* this control has two fields inside one popover and the reader has to be told
|
|
9
|
+
* which one they are in.
|
|
10
|
+
*/
|
|
11
|
+
label: string;
|
|
12
|
+
/** The options the reader may choose from. */
|
|
13
|
+
items: readonly ComboboxItem[];
|
|
14
|
+
/** The chosen value, when the field is controlled. */
|
|
15
|
+
value?: string | null;
|
|
16
|
+
/** The value chosen initially, for an uncontrolled field. */
|
|
17
|
+
defaultValue?: string | null;
|
|
18
|
+
/** Called with the chosen option's value, or `null` when the reader clears it. */
|
|
19
|
+
onValueChange?: (value: string | null) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Called with the trimmed draft when the reader commits a value that is not in
|
|
22
|
+
* the list.
|
|
23
|
+
*
|
|
24
|
+
* Required, because a creatable combobox whose create path does nothing is a
|
|
25
|
+
* combobox with an extra field in it. It is the only call a created value makes:
|
|
26
|
+
* `onValueChange` is not fired for it, because whether a newly typed string
|
|
27
|
+
* becomes the selection is the caller's decision and not this Component's. A
|
|
28
|
+
* caller who wants it selected sets `value` from here, and a caller whose records
|
|
29
|
+
* reject the duplicate has already been told about it by their own `validate`.
|
|
30
|
+
*/
|
|
31
|
+
onCreate: (draft: string) => void;
|
|
32
|
+
/**
|
|
33
|
+
* The accessible name of the control that commits the draft.
|
|
34
|
+
*
|
|
35
|
+
* A string and not a function of the draft, because the draft is data and a
|
|
36
|
+
* control's name is a sentence the caller writes. The draft is attached to the
|
|
37
|
+
* control as its description rather than interpolated into its name, so a
|
|
38
|
+
* caller who localises the sentence gets a localised name and a value they did
|
|
39
|
+
* not have to translate.
|
|
40
|
+
*/
|
|
41
|
+
createLabel: string;
|
|
42
|
+
/**
|
|
43
|
+
* The accessible name of the create field, the second editable control in the
|
|
44
|
+
* popover.
|
|
45
|
+
*
|
|
46
|
+
* Separate from `createLabel` because the field and the control that reads it are
|
|
47
|
+
* two controls with two jobs, and one name over both is a reader who is told they
|
|
48
|
+
* are somewhere they are not.
|
|
49
|
+
*/
|
|
50
|
+
draftLabel: string;
|
|
51
|
+
/**
|
|
52
|
+
* Judges the draft, returning the message to show or `null` when it is fine.
|
|
53
|
+
*
|
|
54
|
+
* Optional, and the Component ships no rule of its own: what may be created is the
|
|
55
|
+
* caller's fact about their own data, so Prism holds no length limit, no pattern
|
|
56
|
+
* and no uniqueness check. It must be pure, because it is read on every render of
|
|
57
|
+
* the draft rather than on a keystroke, so the Component never has to guess when
|
|
58
|
+
* the answer changed.
|
|
59
|
+
*/
|
|
60
|
+
validate?: (draft: string) => string | null;
|
|
61
|
+
/** What a reader is told when the query matches nothing. */
|
|
62
|
+
empty: {
|
|
63
|
+
message: (query: string) => string;
|
|
64
|
+
hint?: string;
|
|
65
|
+
};
|
|
66
|
+
/** The placeholder in the search field. The caller's word. */
|
|
67
|
+
placeholder?: string;
|
|
68
|
+
/** Whether the list is open, when the field is controlled. */
|
|
69
|
+
open?: boolean;
|
|
70
|
+
/** Whether the list starts open, for an uncontrolled field. */
|
|
71
|
+
defaultOpen?: boolean;
|
|
72
|
+
/** Called when the list opens or closes. */
|
|
73
|
+
onOpenChange?: (open: boolean) => void;
|
|
74
|
+
/** Whether the field ignores interaction. */
|
|
75
|
+
disabled?: boolean;
|
|
76
|
+
/** Whether a value must be chosen or created before the form submits. */
|
|
77
|
+
required?: boolean;
|
|
78
|
+
/** The form field name. The chosen or created value is submitted under it. */
|
|
79
|
+
name?: string;
|
|
80
|
+
/** Identifies the form that owns the hidden input. */
|
|
81
|
+
form?: string;
|
|
82
|
+
/** The field's own id, so a label elsewhere can point at it. */
|
|
83
|
+
id?: string;
|
|
84
|
+
/** Identifies the element that describes the field. */
|
|
85
|
+
'aria-describedby'?: string;
|
|
86
|
+
/** Layout only. */
|
|
87
|
+
className?: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A text field that filters a list of options and lets the reader commit a value
|
|
91
|
+
* that is not in it, from inside the same popover.
|
|
92
|
+
*
|
|
93
|
+
* **The second editable control is the reason this is not `Combobox` with a prop.**
|
|
94
|
+
* Creating a value needs somewhere to type it, and the honest place for that
|
|
95
|
+
* somewhere is inside the surface the reader is already looking at. Everything
|
|
96
|
+
* downstream of that decision is different from a single-select combobox and none of
|
|
97
|
+
* it is reachable from a boolean:
|
|
98
|
+
*
|
|
99
|
+
* - **The focus order gains a stop inside the popover.** Tab out of the search
|
|
100
|
+
* field enters the create field and the list stays open, because closing on Tab
|
|
101
|
+
* and reopening is the two-acts-for-one-keystroke cost the sibling is built to
|
|
102
|
+
* avoid. Arrow Up from the create field goes back into the list with the
|
|
103
|
+
* highlight on the first option, so the path is reversible. Escape in the create
|
|
104
|
+
* field returns to the search field with the list still open; only Escape in the
|
|
105
|
+
* search field closes.
|
|
106
|
+
* - **The create row is not an option, and is kept out of the listbox element.**
|
|
107
|
+
* `aria-activedescendant` names an element inside the element `aria-controls`
|
|
108
|
+
* points at, and a screen reader announces the node it lands on as a choice from
|
|
109
|
+
* that list. A create row carried inside the listbox would therefore be announced
|
|
110
|
+
* as an option, and it would be counted by the index that names options, so
|
|
111
|
+
* pressing Enter could commit a row the reader never highlighted. Here the row
|
|
112
|
+
* is a sibling of the listbox, the highlight index runs over matched options
|
|
113
|
+
* only, and `aria-activedescendant` is never written with the create row's id.
|
|
114
|
+
* - **The validation is the create field's own, and it is the caller's rule.** The
|
|
115
|
+
* message renders as a `FieldError`, so it carries `role="alert"` and is announced
|
|
116
|
+
* as it appears, and while a message is showing the create control is not drawn
|
|
117
|
+
* at all. A control that commits an invalid draft and then complains is a control
|
|
118
|
+
* a reader learns to press anyway.
|
|
119
|
+
*
|
|
120
|
+
* **Typing never discards a choice, and this is the same commitment `Combobox`
|
|
121
|
+
* makes.** The value changes when the reader chooses an option or empties the
|
|
122
|
+
* field, both of which are acts, and a keystroke into the create field is a draft
|
|
123
|
+
* rather than an answer. Closing the list restores the chosen label into the search
|
|
124
|
+
* field, so a reader who typed a near miss and changed their mind gets their answer
|
|
125
|
+
* back rather than a stray string.
|
|
126
|
+
*
|
|
127
|
+
* **The draft is seeded from the query and then runs on its own.** Focusing the
|
|
128
|
+
* create field copies the query into it, because the reader's typed words are what
|
|
129
|
+
* they want to create. After that the two are deliberately not wired together: the
|
|
130
|
+
* list filters on the query and the create control commits the draft, and editing
|
|
131
|
+
* the draft does not narrow the list. Wiring them would mean a half-typed new value
|
|
132
|
+
* filtering the list to nothing on every keystroke, which reads as a broken search
|
|
133
|
+
* rather than as a new entry being written.
|
|
134
|
+
*
|
|
135
|
+
* **The row disappears when the draft is already an option.** A create row offering
|
|
136
|
+
* to create something that is already in the list is an offer to make a duplicate,
|
|
137
|
+
* so the row is drawn for a draft that is non-empty, has no complaint from
|
|
138
|
+
* `validate`, and matches no option's label or value exactly. A caller who wants the
|
|
139
|
+
* duplicate behaviour anyway is answering a question about their own data, and
|
|
140
|
+
* `onCreate` is where they answer it.
|
|
141
|
+
*
|
|
142
|
+
* **The list is ranked by the scorer imported from `lib/rank`**, so a query that
|
|
143
|
+
* floats one option to the top floats it in the command palette and in
|
|
144
|
+
* `MultiCombobox` too. A second scorer would be a second answer to the same
|
|
145
|
+
* question and the two surfaces would disagree within a release.
|
|
146
|
+
*
|
|
147
|
+
* The list is anchored to the field rather than portalled, for the trade
|
|
148
|
+
* `Combobox` states: put the field near the top of any scroll container it lives
|
|
149
|
+
* in.
|
|
150
|
+
*/
|
|
151
|
+
declare function CreatableCombobox({ label, items, value, defaultValue, onValueChange, onCreate, createLabel, draftLabel, validate, empty, placeholder, open, defaultOpen, onOpenChange, disabled, required, name, form, id, 'aria-describedby': describedBy, className, }: CreatableComboboxProps): import("react").JSX.Element;
|
|
152
|
+
export { CreatableCombobox };
|
|
153
|
+
//# sourceMappingURL=creatable-combobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creatable-combobox.d.ts","sourceRoot":"","sources":["../../../src/components/ui/creatable-combobox.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;IAC9B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,kFAAkF;IAClF,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9C;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC;;;;;;;;OAQG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAC3C,4DAA4D;IAC5D,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5D,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gEAAgE;IAChE,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,iBAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,KAAK,EACL,KAAK,EACL,YAAmB,EACnB,aAAa,EACb,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,EACR,KAAK,EACL,WAAW,EACX,IAAI,EACJ,WAAmB,EACnB,YAAY,EACZ,QAAgB,EAChB,QAAgB,EAChB,IAAI,EACJ,IAAI,EACJ,EAAE,EACF,kBAAkB,EAAE,WAAW,EAC/B,SAAS,GACV,EAAE,sBAAsB,+BAqZxB;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { FieldError } from './field.js';
|
|
5
|
+
import { Input } from './input.js';
|
|
6
|
+
import { RANKS, locate } from '../../lib/rank.js';
|
|
7
|
+
import { cn } from '../../lib/utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* A text field that filters a list of options and lets the reader commit a value
|
|
10
|
+
* that is not in it, from inside the same popover.
|
|
11
|
+
*
|
|
12
|
+
* **The second editable control is the reason this is not `Combobox` with a prop.**
|
|
13
|
+
* Creating a value needs somewhere to type it, and the honest place for that
|
|
14
|
+
* somewhere is inside the surface the reader is already looking at. Everything
|
|
15
|
+
* downstream of that decision is different from a single-select combobox and none of
|
|
16
|
+
* it is reachable from a boolean:
|
|
17
|
+
*
|
|
18
|
+
* - **The focus order gains a stop inside the popover.** Tab out of the search
|
|
19
|
+
* field enters the create field and the list stays open, because closing on Tab
|
|
20
|
+
* and reopening is the two-acts-for-one-keystroke cost the sibling is built to
|
|
21
|
+
* avoid. Arrow Up from the create field goes back into the list with the
|
|
22
|
+
* highlight on the first option, so the path is reversible. Escape in the create
|
|
23
|
+
* field returns to the search field with the list still open; only Escape in the
|
|
24
|
+
* search field closes.
|
|
25
|
+
* - **The create row is not an option, and is kept out of the listbox element.**
|
|
26
|
+
* `aria-activedescendant` names an element inside the element `aria-controls`
|
|
27
|
+
* points at, and a screen reader announces the node it lands on as a choice from
|
|
28
|
+
* that list. A create row carried inside the listbox would therefore be announced
|
|
29
|
+
* as an option, and it would be counted by the index that names options, so
|
|
30
|
+
* pressing Enter could commit a row the reader never highlighted. Here the row
|
|
31
|
+
* is a sibling of the listbox, the highlight index runs over matched options
|
|
32
|
+
* only, and `aria-activedescendant` is never written with the create row's id.
|
|
33
|
+
* - **The validation is the create field's own, and it is the caller's rule.** The
|
|
34
|
+
* message renders as a `FieldError`, so it carries `role="alert"` and is announced
|
|
35
|
+
* as it appears, and while a message is showing the create control is not drawn
|
|
36
|
+
* at all. A control that commits an invalid draft and then complains is a control
|
|
37
|
+
* a reader learns to press anyway.
|
|
38
|
+
*
|
|
39
|
+
* **Typing never discards a choice, and this is the same commitment `Combobox`
|
|
40
|
+
* makes.** The value changes when the reader chooses an option or empties the
|
|
41
|
+
* field, both of which are acts, and a keystroke into the create field is a draft
|
|
42
|
+
* rather than an answer. Closing the list restores the chosen label into the search
|
|
43
|
+
* field, so a reader who typed a near miss and changed their mind gets their answer
|
|
44
|
+
* back rather than a stray string.
|
|
45
|
+
*
|
|
46
|
+
* **The draft is seeded from the query and then runs on its own.** Focusing the
|
|
47
|
+
* create field copies the query into it, because the reader's typed words are what
|
|
48
|
+
* they want to create. After that the two are deliberately not wired together: the
|
|
49
|
+
* list filters on the query and the create control commits the draft, and editing
|
|
50
|
+
* the draft does not narrow the list. Wiring them would mean a half-typed new value
|
|
51
|
+
* filtering the list to nothing on every keystroke, which reads as a broken search
|
|
52
|
+
* rather than as a new entry being written.
|
|
53
|
+
*
|
|
54
|
+
* **The row disappears when the draft is already an option.** A create row offering
|
|
55
|
+
* to create something that is already in the list is an offer to make a duplicate,
|
|
56
|
+
* so the row is drawn for a draft that is non-empty, has no complaint from
|
|
57
|
+
* `validate`, and matches no option's label or value exactly. A caller who wants the
|
|
58
|
+
* duplicate behaviour anyway is answering a question about their own data, and
|
|
59
|
+
* `onCreate` is where they answer it.
|
|
60
|
+
*
|
|
61
|
+
* **The list is ranked by the scorer imported from `lib/rank`**, so a query that
|
|
62
|
+
* floats one option to the top floats it in the command palette and in
|
|
63
|
+
* `MultiCombobox` too. A second scorer would be a second answer to the same
|
|
64
|
+
* question and the two surfaces would disagree within a release.
|
|
65
|
+
*
|
|
66
|
+
* The list is anchored to the field rather than portalled, for the trade
|
|
67
|
+
* `Combobox` states: put the field near the top of any scroll container it lives
|
|
68
|
+
* in.
|
|
69
|
+
*/
|
|
70
|
+
function CreatableCombobox({ label, items, value, defaultValue = null, onValueChange, onCreate, createLabel, draftLabel, validate, empty, placeholder, open, defaultOpen = false, onOpenChange, disabled = false, required = false, name, form, id, 'aria-describedby': describedBy, className, }) {
|
|
71
|
+
const [ownValue, setOwnValue] = useState(defaultValue);
|
|
72
|
+
const [ownOpen, setOwnOpen] = useState(defaultOpen);
|
|
73
|
+
const [query, setQuery] = useState('');
|
|
74
|
+
const [draft, setDraft] = useState('');
|
|
75
|
+
const [active, setActive] = useState(0);
|
|
76
|
+
const listRef = useRef(null);
|
|
77
|
+
const draftRef = useRef(null);
|
|
78
|
+
const searchRef = useRef(null);
|
|
79
|
+
const generated = useId();
|
|
80
|
+
const inputId = id ?? generated;
|
|
81
|
+
const listId = `${generated}-list`;
|
|
82
|
+
// The popup the field controls. Separate from the listbox id because the listbox is
|
|
83
|
+
// not rendered at all when nothing matched, and `aria-controls` is a required
|
|
84
|
+
// attribute on an expanded combobox.
|
|
85
|
+
const popupId = `${generated}-popup`;
|
|
86
|
+
const draftId = `${generated}-draft`;
|
|
87
|
+
const draftErrorId = `${generated}-draft-error`;
|
|
88
|
+
const chosen = value === undefined ? ownValue : value;
|
|
89
|
+
const isOpen = (open ?? ownOpen) && !disabled;
|
|
90
|
+
const setOpen = useCallback((next) => {
|
|
91
|
+
if (open === undefined)
|
|
92
|
+
setOwnOpen(next);
|
|
93
|
+
onOpenChange?.(next);
|
|
94
|
+
}, [onOpenChange, open]);
|
|
95
|
+
const choose = useCallback((next) => {
|
|
96
|
+
if (value === undefined)
|
|
97
|
+
setOwnValue(next);
|
|
98
|
+
onValueChange?.(next);
|
|
99
|
+
}, [onValueChange, value]);
|
|
100
|
+
/**
|
|
101
|
+
* The field text follows the chosen value, and only the chosen value, so this
|
|
102
|
+
* effect does not run while a reader is typing. That is what lets the field hold
|
|
103
|
+
* a query that is not yet an answer.
|
|
104
|
+
*/
|
|
105
|
+
const chosenLabel = useMemo(() => items.find((item) => item.value === chosen)?.label ?? '', [items, chosen]);
|
|
106
|
+
useEffect(() => {
|
|
107
|
+
setQuery(chosenLabel);
|
|
108
|
+
}, [chosenLabel]);
|
|
109
|
+
// A field showing exactly what is chosen is not narrowing anything, so the
|
|
110
|
+
// narrowing is read off the difference between the two rather than off a flag.
|
|
111
|
+
const narrowing = query !== chosenLabel;
|
|
112
|
+
const trimmed = narrowing ? query.trim() : '';
|
|
113
|
+
const ranked = useMemo(() => {
|
|
114
|
+
if (trimmed === '')
|
|
115
|
+
return items.map((item) => ({ item, rank: RANKS.prefix }));
|
|
116
|
+
return items
|
|
117
|
+
.map((item) => {
|
|
118
|
+
const inLabel = locate(item.label, trimmed);
|
|
119
|
+
if (inLabel.rank < RANKS.keyword)
|
|
120
|
+
return { item, rank: inLabel.rank, range: inLabel.range };
|
|
121
|
+
const keywordHit = (item.keywords ?? []).some((word) => word.toLowerCase().includes(trimmed.toLowerCase()));
|
|
122
|
+
return keywordHit ? { item, rank: RANKS.keyword } : null;
|
|
123
|
+
})
|
|
124
|
+
.filter((hit) => hit !== null)
|
|
125
|
+
.sort((a, b) => a.rank - b.rank);
|
|
126
|
+
}, [items, trimmed]);
|
|
127
|
+
const activeIndex = Math.min(active, Math.max(ranked.length - 1, 0));
|
|
128
|
+
const step = (from, delta) => {
|
|
129
|
+
if (ranked.length === 0)
|
|
130
|
+
return 0;
|
|
131
|
+
let next = from;
|
|
132
|
+
for (let moved = 0; moved < ranked.length; moved += 1) {
|
|
133
|
+
next += delta;
|
|
134
|
+
if (next >= ranked.length)
|
|
135
|
+
next = 0;
|
|
136
|
+
if (next < 0)
|
|
137
|
+
next = ranked.length - 1;
|
|
138
|
+
if (!ranked[next]?.item.disabled)
|
|
139
|
+
return next;
|
|
140
|
+
}
|
|
141
|
+
return from;
|
|
142
|
+
};
|
|
143
|
+
const draftValue = draft.trim();
|
|
144
|
+
// Read on every render rather than on a keystroke, so the answer cannot go stale
|
|
145
|
+
// against a draft the reader has already moved on from.
|
|
146
|
+
const draftError = draftValue === '' ? null : (validate?.(draftValue) ?? null);
|
|
147
|
+
const alreadyListed = items.some((item) => item.label.toLowerCase() === draftValue.toLowerCase() ||
|
|
148
|
+
item.value.toLowerCase() === draftValue.toLowerCase());
|
|
149
|
+
const canCreate = draftValue !== '' && draftError === null && !alreadyListed;
|
|
150
|
+
/** Commits an option and closes, which is the sibling's contract unchanged. */
|
|
151
|
+
const run = (item) => {
|
|
152
|
+
if (item.disabled)
|
|
153
|
+
return;
|
|
154
|
+
choose(item.value);
|
|
155
|
+
setDraft('');
|
|
156
|
+
setOpen(false);
|
|
157
|
+
};
|
|
158
|
+
const create = () => {
|
|
159
|
+
if (!canCreate)
|
|
160
|
+
return;
|
|
161
|
+
onCreate(draftValue);
|
|
162
|
+
setDraft('');
|
|
163
|
+
setOpen(false);
|
|
164
|
+
};
|
|
165
|
+
const onSearchKeyDown = (event) => {
|
|
166
|
+
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
167
|
+
event.preventDefault();
|
|
168
|
+
if (!isOpen) {
|
|
169
|
+
setOpen(true);
|
|
170
|
+
setActive(0);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
setActive((index) => step(Math.min(index, Math.max(ranked.length - 1, 0)), event.key === 'ArrowDown' ? 1 : -1));
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (event.key === 'Enter') {
|
|
177
|
+
const hit = ranked[activeIndex];
|
|
178
|
+
// Enter commits the highlighted option and nothing else. It never creates:
|
|
179
|
+
// creating is a separate act made in a separate field, and a key that both
|
|
180
|
+
// commits a choice and writes a new record is a key a reader cannot aim.
|
|
181
|
+
if (hit === undefined || hit.item.disabled)
|
|
182
|
+
return;
|
|
183
|
+
event.preventDefault();
|
|
184
|
+
run(hit.item);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (event.key === 'Escape') {
|
|
188
|
+
// Escape abandons the query and keeps the answer. A reader who pressed it to
|
|
189
|
+
// get the list out of the way did not mean to discard what they had chosen.
|
|
190
|
+
if (!isOpen)
|
|
191
|
+
return;
|
|
192
|
+
event.preventDefault();
|
|
193
|
+
setOpen(false);
|
|
194
|
+
setQuery(chosenLabel);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (event.key === 'Tab' && !event.shiftKey && canCreate) {
|
|
198
|
+
// The focus move into the create field, and the reason the list stays open.
|
|
199
|
+
// Tab closes a single-select field because the answer is finished; here the
|
|
200
|
+
// answer may not be, and closing would make creating a value two acts.
|
|
201
|
+
event.preventDefault();
|
|
202
|
+
draftRef.current?.focus();
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
const onDraftKeyDown = (event) => {
|
|
206
|
+
if (event.key === 'Enter') {
|
|
207
|
+
if (!canCreate)
|
|
208
|
+
return;
|
|
209
|
+
event.preventDefault();
|
|
210
|
+
create();
|
|
211
|
+
searchRef.current?.focus();
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
if (event.key === 'Escape') {
|
|
215
|
+
// Escape in the create field abandons the draft and goes back to the search
|
|
216
|
+
// field rather than closing the list, so a reader who mistyped has not thrown
|
|
217
|
+
// away the list they were reading.
|
|
218
|
+
event.preventDefault();
|
|
219
|
+
setDraft('');
|
|
220
|
+
searchRef.current?.focus();
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
|
|
224
|
+
// The way back into the list. Reversible is the point: a one-way focus order
|
|
225
|
+
// into a popover is a trap a keyboard reader cannot see.
|
|
226
|
+
event.preventDefault();
|
|
227
|
+
setActive(event.key === 'ArrowUp' ? 0 : Math.max(ranked.length - 1, 0));
|
|
228
|
+
searchRef.current?.focus();
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (event.key === 'Tab') {
|
|
232
|
+
setOpen(false);
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
useEffect(() => {
|
|
236
|
+
const list = listRef.current;
|
|
237
|
+
if (list === null)
|
|
238
|
+
return;
|
|
239
|
+
list.querySelector('[data-active="true"]')?.scrollIntoView({ block: 'nearest' });
|
|
240
|
+
}, [activeIndex, isOpen]);
|
|
241
|
+
const activeRow = isOpen ? ranked[activeIndex] : undefined;
|
|
242
|
+
return (_jsxs("div", { "data-slot": "creatable-combobox", className: cn('relative w-full', className), children: [_jsx(Input, { ref: searchRef, "data-slot": "creatable-combobox-search", id: inputId, type: "text", role: "combobox", autoComplete: "off", "aria-expanded": isOpen, "aria-controls": isOpen ? popupId : undefined, "aria-haspopup": "listbox", "aria-autocomplete": "list", "aria-label": label, "aria-required": required || undefined, "aria-activedescendant": activeRow === undefined ? undefined : `${listId}-option-${activeIndex}`, ...(describedBy === undefined ? null : { 'aria-describedby': describedBy }), ...(placeholder === undefined ? null : { placeholder }), value: query, disabled: disabled, onChange: (event) => {
|
|
243
|
+
const next = event.target.value;
|
|
244
|
+
setQuery(next);
|
|
245
|
+
setActive(0);
|
|
246
|
+
if (!isOpen)
|
|
247
|
+
setOpen(true);
|
|
248
|
+
// Emptying the field is the one edit that changes the answer, because it
|
|
249
|
+
// is the only way a reader can say "not that one".
|
|
250
|
+
if (next === '')
|
|
251
|
+
choose(null);
|
|
252
|
+
}, onFocus: () => {
|
|
253
|
+
setOpen(true);
|
|
254
|
+
setActive(0);
|
|
255
|
+
}, onClick: () => {
|
|
256
|
+
if (!isOpen)
|
|
257
|
+
setOpen(true);
|
|
258
|
+
}, onBlur: (event) => {
|
|
259
|
+
// Only when the caret leaves the whole control. Moving into the create
|
|
260
|
+
// field is inside it, and closing on that would be closing on the focus
|
|
261
|
+
// move the popover exists to support.
|
|
262
|
+
const next = event.relatedTarget;
|
|
263
|
+
if (next instanceof Node && event.currentTarget.parentElement?.contains(next)) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
setOpen(false);
|
|
267
|
+
setQuery(chosenLabel);
|
|
268
|
+
}, onKeyDown: onSearchKeyDown }), name === undefined ? null : (_jsx("input", { type: "hidden", name: name, ...(form === undefined ? null : { form }), value: chosen ?? '', readOnly: true })), isOpen ? (_jsxs("div", { id: popupId, "data-slot": "creatable-combobox-popup", className: "bg-popover text-popover-foreground absolute z-50 mt-1 w-full min-w-(--anchor-width) rounded-md border p-1 shadow-md", children: [ranked.length === 0 ? (_jsxs("p", { "data-slot": "creatable-combobox-empty", role: "status", className: "text-muted-foreground px-3 py-6 text-center text-sm", children: [empty.message(trimmed), empty.hint === undefined ? null : (_jsx("span", { className: "mt-1 block text-xs", children: empty.hint }))] })) : (_jsx("div", { "data-slot": "creatable-combobox-list", id: listId, ref: listRef, role: "listbox", "aria-label": label, className: "max-h-72 overflow-y-auto", children: ranked.map((hit, index) => {
|
|
269
|
+
const isActive = index === activeIndex;
|
|
270
|
+
return (_jsxs("div", { id: `${listId}-option-${index}`, "data-slot": "creatable-combobox-option", "data-active": isActive, role: "option", "aria-selected": hit.item.value === chosen, "aria-disabled": hit.item.disabled || undefined, onMouseEnter: () => {
|
|
271
|
+
if (!hit.item.disabled)
|
|
272
|
+
setActive(index);
|
|
273
|
+
}, onMouseDown: (event) => event.preventDefault(), onClick: () => {
|
|
274
|
+
run(hit.item);
|
|
275
|
+
}, className: cn('flex cursor-pointer items-baseline justify-between gap-3 rounded-sm px-3 py-2 text-sm', 'focus-visible:ring-ring focus-visible:ring-[3px]', hit.item.disabled && 'text-muted-foreground cursor-not-allowed opacity-50', !hit.item.disabled && isActive && 'bg-accent text-accent-foreground', !hit.item.disabled && !isActive && 'text-muted-foreground hover:text-foreground'), children: [_jsx("span", { className: "min-w-0 truncate", children: hit.range === undefined ? (hit.item.label) : (_jsxs(_Fragment, { children: [hit.item.label.slice(0, hit.range[0]), _jsx("strong", { className: "font-semibold", children: hit.item.label.slice(hit.range[0], hit.range[1]) }), hit.item.label.slice(hit.range[1])] })) }), hit.item.hint === undefined ? null : (_jsx("span", { className: "shrink-0 text-xs", children: hit.item.hint }))] }, hit.item.value));
|
|
276
|
+
}) })), _jsxs("div", { "data-slot": "creatable-combobox-create", className: "border-border flex flex-col gap-2 border-t p-2", children: [_jsx(Input, { ref: draftRef, "data-slot": "creatable-combobox-draft", id: draftId, type: "text", autoComplete: "off", "aria-label": draftLabel, "aria-invalid": draftError === null ? undefined : true, ...(draftError === null ? null : { 'aria-describedby': draftErrorId }), value: draft, disabled: disabled, onFocus: () => {
|
|
277
|
+
// Seeded from the query, because the reader's typed words are what
|
|
278
|
+
// they want to create. The copy is one way: after this the draft is
|
|
279
|
+
// its own value, so editing it does not move the list.
|
|
280
|
+
setDraft(query);
|
|
281
|
+
}, onChange: (event) => {
|
|
282
|
+
setDraft(event.target.value);
|
|
283
|
+
}, onKeyDown: onDraftKeyDown, className: "h-8" }), draftError === null ? null : (_jsx("div", { id: draftErrorId, children: _jsx(FieldError, { children: draftError }) })), canCreate ? (_jsx("button", { type: "button", "data-slot": "creatable-combobox-create-button", "aria-label": createLabel, "aria-describedby": draftId, onClick: create, className: cn('border-input bg-secondary text-secondary-foreground hover:bg-accent hover:text-accent-foreground inline-flex items-center justify-between gap-2 rounded-md border px-2 py-1 text-left text-sm outline-none', 'transition-[color,background-color] duration-fast ease-out', 'focus-visible:ring-ring focus-visible:ring-[3px]'), children: _jsx("span", { className: "min-w-0 truncate", children: draftValue }) })) : null] })] })) : null] }));
|
|
284
|
+
}
|
|
285
|
+
export { CreatableCombobox };
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
/** The props a `DataToolbarGroup` takes. */
|
|
3
|
+
export interface DataToolbarGroupProps extends ComponentProps<'div'> {
|
|
4
|
+
/**
|
|
5
|
+
* The controls in one group.
|
|
6
|
+
*
|
|
7
|
+
* A slot and not a named control, because which controls a row has is the
|
|
8
|
+
* consumer's fact. A toolbar that drew a search box and a sort would be a
|
|
9
|
+
* toolbar that assumed the list below it is searchable and sortable.
|
|
10
|
+
*/
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
/** Layout only. */
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
/** The props a `DataToolbar` takes. */
|
|
16
|
+
export interface DataToolbarProps extends Omit<ComponentProps<'div'>, 'children'> {
|
|
17
|
+
/**
|
|
18
|
+
* The row's accessible name, when the row is given a `role`.
|
|
19
|
+
*
|
|
20
|
+
* A `string` and not a `ReactNode`, because this one is written into
|
|
21
|
+
* `aria-label` and an accessible name is a string. A node here would render as
|
|
22
|
+
* nothing a reader hears. Pass no name for a row that is an unnamed `div`,
|
|
23
|
+
* which is the default and the ordinary case.
|
|
24
|
+
*/
|
|
25
|
+
label?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The search slot, at the leading end.
|
|
28
|
+
*
|
|
29
|
+
* Leading because it is the control a reader reaches for first, and because a
|
|
30
|
+
* search box at the trailing end of a row of small controls is a control the
|
|
31
|
+
* reader has to find before they can use it. The field itself is the caller's,
|
|
32
|
+
* so a caller who wants a search dialog trigger rather than a field passes
|
|
33
|
+
* their own control and the row does not change.
|
|
34
|
+
*/
|
|
35
|
+
search?: ReactNode;
|
|
36
|
+
/**
|
|
37
|
+
* The filter slot, after the search.
|
|
38
|
+
*
|
|
39
|
+
* A single slot rather than a set of named filter controls, because which
|
|
40
|
+
* facets a set has is the consumer's data. A caller with three filters and a
|
|
41
|
+
* caller with one both pass one node.
|
|
42
|
+
*/
|
|
43
|
+
filters?: ReactNode;
|
|
44
|
+
/**
|
|
45
|
+
* The view switcher slot, after the filters.
|
|
46
|
+
*
|
|
47
|
+
* Last of the three because it is the control a reader changes least often: it
|
|
48
|
+
* says how the same rows are drawn, not which rows are shown, so putting it
|
|
49
|
+
* beside the filters would let a reader change the question before they have
|
|
50
|
+
* asked it.
|
|
51
|
+
*/
|
|
52
|
+
view?: ReactNode;
|
|
53
|
+
/**
|
|
54
|
+
* The trailing slot: the count, and whatever else belongs at the far end.
|
|
55
|
+
*
|
|
56
|
+
* Trailing and pushed to the end of the row, so the count and the row's
|
|
57
|
+
* secondary controls line up on the right and the reading order stays search,
|
|
58
|
+
* then what narrows the set, then how it is drawn, then what the reader has.
|
|
59
|
+
*/
|
|
60
|
+
actions?: ReactNode;
|
|
61
|
+
/**
|
|
62
|
+
* Any further groups, in the order the caller wants them.
|
|
63
|
+
*
|
|
64
|
+
* Between the named slots and the trailing one, and composed out of
|
|
65
|
+
* `DataToolbarGroup` so a group is a group by construction rather than by a
|
|
66
|
+
* `gap` the caller remembered to add.
|
|
67
|
+
*/
|
|
68
|
+
children?: ReactNode;
|
|
69
|
+
/** Layout only, exactly as on every Component. */
|
|
70
|
+
className?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The row above a table or a list: search, filters, a view switcher, and a count.
|
|
74
|
+
*
|
|
75
|
+
* **The default is a plain `div` and not a `role="toolbar"`, and that is the one
|
|
76
|
+
* decision worth making carefully.** A toolbar role changes every reader's
|
|
77
|
+
* interaction model for the row. It tells assistive technology that the whole row
|
|
78
|
+
* is one control, that the arrow keys move between the things inside it, and that
|
|
79
|
+
* Tab should step over the row rather than into it. That is exactly right for a
|
|
80
|
+
* set of controls a reader is expected to sweep through with the arrow keys, and
|
|
81
|
+
* it is exactly wrong for a row that is mostly a search box: a reader who Tabs
|
|
82
|
+
* onto the row and presses an arrow key expects to land in the search field, and a
|
|
83
|
+
* role that skips it has made the row's primary control the one control the row
|
|
84
|
+
* cannot reach by the key the role taught them. So the role is a prop and the
|
|
85
|
+
* default is nothing, and a caller who knows their row is a set of peer controls
|
|
86
|
+
* passes `role="toolbar"` and takes the model with the responsibility.
|
|
87
|
+
*
|
|
88
|
+
* **No arrow-key handling here, and deliberately.** Prism owns that keyboard model
|
|
89
|
+
* in exactly two Components, `button-group.tsx` and `toggle-group.tsx`, both of
|
|
90
|
+
* which already implement it over their own children: a roving tab stop and the
|
|
91
|
+
* arrows walking the pressed set. A third implementation in a layout row would be
|
|
92
|
+
* a third place for the same rule, and three places disagree within a release.
|
|
93
|
+
* A caller who wants the arrows puts the controls in one of those two and passes
|
|
94
|
+
* the group into this row's `children` or into a named slot.
|
|
95
|
+
*
|
|
96
|
+
* **The row wraps rather than scrolls, and a toolbar that scrolls sideways hides
|
|
97
|
+
* its own controls.** A `flex-wrap` row reflows onto a second line on a narrow
|
|
98
|
+
* screen, so the filter that a reader did not see is still on the page and still
|
|
99
|
+
* reachable. The alternative, one line with a horizontal scroller, puts a control
|
|
100
|
+
* the reader needs behind a gesture they have to discover, and the scrollbar that
|
|
101
|
+
* offers the gesture is the operating system's rather than the design system's,
|
|
102
|
+
* which is the one control this package took over precisely because it cannot be
|
|
103
|
+
* restyled into anything the design system recognises. A row that runs out of
|
|
104
|
+
* room has to reflow; there is no third option that keeps every control on screen
|
|
105
|
+
* and reachable.
|
|
106
|
+
*
|
|
107
|
+
* **The ends are held by search and by the trailing slot, and the middle is the
|
|
108
|
+
* caller's.** Search leads because it answers the question a reader arrived with;
|
|
109
|
+
* the trailing slot ends the row because a count reads as a conclusion and a
|
|
110
|
+
* conclusion is the last thing on a line. Everything between them is narrow, is
|
|
111
|
+
* the same height, and is a control about the shape of the set rather than about
|
|
112
|
+
* one row of it, so it groups tightly and the two ends stay apart.
|
|
113
|
+
*
|
|
114
|
+
* It is a server Component. It holds no state, reads no context and attaches no
|
|
115
|
+
* handler: the row is a frame, and every control in it is a control the caller
|
|
116
|
+
* brought. A table with a filter row above it costs no JavaScript from this.
|
|
117
|
+
*/
|
|
118
|
+
declare function DataToolbar({ label, search, filters, view, actions, children, className, ...props }: DataToolbarProps): import("react").JSX.Element;
|
|
119
|
+
/**
|
|
120
|
+
* One group of controls inside a `DataToolbar`, or a group of the caller's own.
|
|
121
|
+
*
|
|
122
|
+
* A `div` with no role, and that is the whole point. A group is a spacing
|
|
123
|
+
* relationship and nothing else: it says these controls are one idea, and it
|
|
124
|
+
* gives them a single gap between them that is tighter than the gap between
|
|
125
|
+
* ideas. A `group` role on it would name a set of controls a reader could
|
|
126
|
+
* navigate, which is a claim about a keyboard model this row deliberately does
|
|
127
|
+
* not have. A caller who wants a named, navigable set of controls passes
|
|
128
|
+
* `role="toolbar"` on the row, or composes `button-group.tsx` or
|
|
129
|
+
* `toggle-group.tsx`, which is where the arrow keys live.
|
|
130
|
+
*/
|
|
131
|
+
declare function DataToolbarGroup({ className, ...props }: DataToolbarGroupProps): import("react").JSX.Element;
|
|
132
|
+
export { DataToolbar, DataToolbarGroup };
|
|
133
|
+
//# sourceMappingURL=data-toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/data-toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItD,4CAA4C;AAC5C,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAClE;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,uCAAuC;AACvC,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC/E;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,MAAM,EACN,OAAO,EACP,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,+BA4BlB;AAED;;;;;;;;;;;GAWG;AACH,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,+BAQvE;AAED,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../../lib/utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* The row above a table or a list: search, filters, a view switcher, and a count.
|
|
5
|
+
*
|
|
6
|
+
* **The default is a plain `div` and not a `role="toolbar"`, and that is the one
|
|
7
|
+
* decision worth making carefully.** A toolbar role changes every reader's
|
|
8
|
+
* interaction model for the row. It tells assistive technology that the whole row
|
|
9
|
+
* is one control, that the arrow keys move between the things inside it, and that
|
|
10
|
+
* Tab should step over the row rather than into it. That is exactly right for a
|
|
11
|
+
* set of controls a reader is expected to sweep through with the arrow keys, and
|
|
12
|
+
* it is exactly wrong for a row that is mostly a search box: a reader who Tabs
|
|
13
|
+
* onto the row and presses an arrow key expects to land in the search field, and a
|
|
14
|
+
* role that skips it has made the row's primary control the one control the row
|
|
15
|
+
* cannot reach by the key the role taught them. So the role is a prop and the
|
|
16
|
+
* default is nothing, and a caller who knows their row is a set of peer controls
|
|
17
|
+
* passes `role="toolbar"` and takes the model with the responsibility.
|
|
18
|
+
*
|
|
19
|
+
* **No arrow-key handling here, and deliberately.** Prism owns that keyboard model
|
|
20
|
+
* in exactly two Components, `button-group.tsx` and `toggle-group.tsx`, both of
|
|
21
|
+
* which already implement it over their own children: a roving tab stop and the
|
|
22
|
+
* arrows walking the pressed set. A third implementation in a layout row would be
|
|
23
|
+
* a third place for the same rule, and three places disagree within a release.
|
|
24
|
+
* A caller who wants the arrows puts the controls in one of those two and passes
|
|
25
|
+
* the group into this row's `children` or into a named slot.
|
|
26
|
+
*
|
|
27
|
+
* **The row wraps rather than scrolls, and a toolbar that scrolls sideways hides
|
|
28
|
+
* its own controls.** A `flex-wrap` row reflows onto a second line on a narrow
|
|
29
|
+
* screen, so the filter that a reader did not see is still on the page and still
|
|
30
|
+
* reachable. The alternative, one line with a horizontal scroller, puts a control
|
|
31
|
+
* the reader needs behind a gesture they have to discover, and the scrollbar that
|
|
32
|
+
* offers the gesture is the operating system's rather than the design system's,
|
|
33
|
+
* which is the one control this package took over precisely because it cannot be
|
|
34
|
+
* restyled into anything the design system recognises. A row that runs out of
|
|
35
|
+
* room has to reflow; there is no third option that keeps every control on screen
|
|
36
|
+
* and reachable.
|
|
37
|
+
*
|
|
38
|
+
* **The ends are held by search and by the trailing slot, and the middle is the
|
|
39
|
+
* caller's.** Search leads because it answers the question a reader arrived with;
|
|
40
|
+
* the trailing slot ends the row because a count reads as a conclusion and a
|
|
41
|
+
* conclusion is the last thing on a line. Everything between them is narrow, is
|
|
42
|
+
* the same height, and is a control about the shape of the set rather than about
|
|
43
|
+
* one row of it, so it groups tightly and the two ends stay apart.
|
|
44
|
+
*
|
|
45
|
+
* It is a server Component. It holds no state, reads no context and attaches no
|
|
46
|
+
* handler: the row is a frame, and every control in it is a control the caller
|
|
47
|
+
* brought. A table with a filter row above it costs no JavaScript from this.
|
|
48
|
+
*/
|
|
49
|
+
function DataToolbar({ label, search, filters, view, actions, children, className, ...props }) {
|
|
50
|
+
return (_jsxs("div", { "data-slot": "data-toolbar", "aria-label": label, className: cn('flex flex-wrap items-center gap-2', className), ...props, children: [search === undefined ? null : _jsx(DataToolbarGroup, { children: search }), filters === undefined ? null : _jsx(DataToolbarGroup, { children: filters }), view === undefined ? null : _jsx(DataToolbarGroup, { children: view }), children, actions === undefined ? null : (_jsx(DataToolbarGroup, { className: "ms-auto", children: actions }))] }));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* One group of controls inside a `DataToolbar`, or a group of the caller's own.
|
|
54
|
+
*
|
|
55
|
+
* A `div` with no role, and that is the whole point. A group is a spacing
|
|
56
|
+
* relationship and nothing else: it says these controls are one idea, and it
|
|
57
|
+
* gives them a single gap between them that is tighter than the gap between
|
|
58
|
+
* ideas. A `group` role on it would name a set of controls a reader could
|
|
59
|
+
* navigate, which is a claim about a keyboard model this row deliberately does
|
|
60
|
+
* not have. A caller who wants a named, navigable set of controls passes
|
|
61
|
+
* `role="toolbar"` on the row, or composes `button-group.tsx` or
|
|
62
|
+
* `toggle-group.tsx`, which is where the arrow keys live.
|
|
63
|
+
*/
|
|
64
|
+
function DataToolbarGroup({ className, ...props }) {
|
|
65
|
+
return (_jsx("div", { "data-slot": "data-toolbar-group", className: cn('flex min-w-0 items-center gap-2', className), ...props }));
|
|
66
|
+
}
|
|
67
|
+
export { DataToolbar, DataToolbarGroup };
|