@krizaka/ui 3.53.0 → 3.55.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/README.md +1 -0
- package/dist/account-menu.d.ts +6 -2
- package/dist/account-menu.js +8 -1
- package/dist/account-menu.js.map +1 -1
- package/dist/account-settings.js +28 -88
- package/dist/account-settings.js.map +1 -1
- package/dist/anatomy-plate.d.ts +4 -1
- package/dist/anatomy-plate.js +4 -0
- package/dist/anatomy-plate.js.map +1 -1
- package/dist/app-header/search.d.ts +63 -0
- package/dist/app-header/search.js +70 -0
- package/dist/app-header/search.js.map +1 -0
- package/dist/app-header.d.ts +88 -4
- package/dist/app-header.js +63 -5
- package/dist/app-header.js.map +1 -1
- package/dist/app-shell.js +31 -40
- package/dist/app-shell.js.map +1 -1
- package/dist/argument-card.js +3 -3
- package/dist/bird-plate.d.ts +3 -1
- package/dist/bird-plate.js +2 -2
- package/dist/bird-plate.js.map +1 -1
- package/dist/blocks.css +202 -27
- package/dist/chapter.d.ts +20 -3
- package/dist/chapter.js +82 -31
- package/dist/chapter.js.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/chat.js.map +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/chip.js +5 -98
- package/dist/chip.js.map +1 -1
- package/dist/choice-grid.js +28 -88
- package/dist/choice-grid.js.map +1 -1
- package/dist/{chunk-YGIN2YIY.js → chunk-3X3OF4TI.js} +2 -2
- package/dist/chunk-3X3OF4TI.js.map +1 -0
- package/dist/chunk-5VEVYDVC.js +11 -0
- package/dist/chunk-5VEVYDVC.js.map +1 -0
- package/dist/chunk-7U5TXA5Q.js +105 -0
- package/dist/chunk-7U5TXA5Q.js.map +1 -0
- package/dist/{chunk-KBQD6HE3.js → chunk-AEP3K4YD.js} +3 -3
- package/dist/{chunk-KBQD6HE3.js.map → chunk-AEP3K4YD.js.map} +1 -1
- package/dist/chunk-BDIU5LZB.js +18 -0
- package/dist/chunk-BDIU5LZB.js.map +1 -0
- package/dist/chunk-CSRKYZ53.js +39 -0
- package/dist/chunk-CSRKYZ53.js.map +1 -0
- package/dist/chunk-HEKDKM5Y.js +128 -0
- package/dist/chunk-HEKDKM5Y.js.map +1 -0
- package/dist/chunk-KGLRZMCY.js +16 -0
- package/dist/chunk-KGLRZMCY.js.map +1 -0
- package/dist/chunk-KID32IRJ.js +18 -0
- package/dist/chunk-KID32IRJ.js.map +1 -0
- package/dist/{chunk-ZQW7LF4Y.js → chunk-OIMXKRXF.js} +2 -2
- package/dist/{chunk-YHKTYFOQ.js → chunk-QWKCNSPF.js} +271 -47
- package/dist/chunk-QWKCNSPF.js.map +1 -0
- package/dist/{chunk-4LYKBSOG.js → chunk-USPOIQV5.js} +2 -2
- package/dist/chunk-USPOIQV5.js.map +1 -0
- package/dist/{chunk-7NRSPHAF.js → chunk-VB7MWE2N.js} +2 -2
- package/dist/{chunk-7NRSPHAF.js.map → chunk-VB7MWE2N.js.map} +1 -1
- package/dist/chunk-VIPSZXO4.js +103 -0
- package/dist/chunk-VIPSZXO4.js.map +1 -0
- package/dist/chunk-YCZ7N6Q6.js +385 -0
- package/dist/chunk-YCZ7N6Q6.js.map +1 -0
- package/dist/code-block.js +81 -98
- package/dist/code-block.js.map +1 -1
- package/dist/combobox.js +2 -2
- package/dist/component-page.d.ts +4 -1
- package/dist/component-page.js +5 -0
- package/dist/component-page.js.map +1 -1
- package/dist/continue-prompt.d.ts +4 -1
- package/dist/continue-prompt.js +4 -0
- package/dist/continue-prompt.js.map +1 -1
- package/dist/data-table.d.ts +60 -4
- package/dist/data-table.js +19 -7
- package/dist/date-picker.js +2 -2
- package/dist/date-picker.js.map +1 -1
- package/dist/detail-layout.d.ts +28 -17
- package/dist/detail-layout.js +73 -16
- package/dist/detail-layout.js.map +1 -1
- package/dist/doodle.d.ts +21 -0
- package/dist/doodle.js +39 -0
- package/dist/doodle.js.map +1 -0
- package/dist/drop-overlay.d.ts +12 -4
- package/dist/drop-overlay.js +16 -6
- package/dist/drop-overlay.js.map +1 -1
- package/dist/elephant.d.ts +2 -0
- package/dist/elephant.js +4 -0
- package/dist/elephant.js.map +1 -1
- package/dist/field.js +1 -1
- package/dist/field.js.map +1 -1
- package/dist/filter-bar.js +2 -2
- package/dist/force-update-screen.d.ts +5 -1
- package/dist/force-update-screen.js +4 -0
- package/dist/force-update-screen.js.map +1 -1
- package/dist/gallery-page.d.ts +4 -1
- package/dist/gallery-page.js +4 -0
- package/dist/gallery-page.js.map +1 -1
- package/dist/genui.js +5 -5
- package/dist/image-cropper.d.ts +10 -2
- package/dist/image-cropper.js +4 -0
- package/dist/image-cropper.js.map +1 -1
- package/dist/kanban.d.ts +3 -0
- package/dist/kanban.js +4 -0
- package/dist/kanban.js.map +1 -1
- package/dist/landscape.d.ts +4 -1
- package/dist/landscape.js +4 -0
- package/dist/landscape.js.map +1 -1
- package/dist/list.js +1 -1
- package/dist/maintenance-screen.d.ts +5 -1
- package/dist/maintenance-screen.js +4 -0
- package/dist/maintenance-screen.js.map +1 -1
- package/dist/map.js +6 -0
- package/dist/map.js.map +1 -1
- package/dist/markdown.d.ts +5 -1
- package/dist/markdown.js +12 -5
- package/dist/markdown.js.map +1 -1
- package/dist/match-dialog.d.ts +4 -1
- package/dist/match-dialog.js +4 -0
- package/dist/match-dialog.js.map +1 -1
- package/dist/media-capture.d.ts +6 -1
- package/dist/media-capture.js +4 -0
- package/dist/media-capture.js.map +1 -1
- package/dist/meter.js +5 -121
- package/dist/meter.js.map +1 -1
- package/dist/native/map.js +6 -0
- package/dist/native/map.js.map +1 -1
- package/dist/native/markdown.d.ts +9 -2
- package/dist/native/markdown.js +46 -7
- package/dist/native/markdown.js.map +1 -1
- package/dist/native/media-capture.d.ts +1 -0
- package/dist/native/media-capture.js +5 -0
- package/dist/native/media-capture.js.map +1 -1
- package/dist/native/vertical-video.d.ts +8 -2
- package/dist/native/vertical-video.js +6 -0
- package/dist/native/vertical-video.js.map +1 -1
- package/dist/native.d.ts +94 -4
- package/dist/native.js +1236 -1110
- package/dist/native.js.map +1 -1
- package/dist/nav-bar/me.d.ts +32 -0
- package/dist/nav-bar/me.js +23 -0
- package/dist/nav-bar/me.js.map +1 -0
- package/dist/nav-bar.d.ts +60 -2
- package/dist/nav-bar.js +92 -48
- package/dist/nav-bar.js.map +1 -1
- package/dist/notification-preferences.d.ts +151 -0
- package/dist/notification-preferences.js +77 -0
- package/dist/notification-preferences.js.map +1 -0
- package/dist/page-header.js +1 -1
- package/dist/page-header.js.map +1 -1
- package/dist/pointer-light.js +5 -0
- package/dist/pointer-light.js.map +1 -1
- package/dist/product-page.d.ts +4 -1
- package/dist/product-page.js +4 -0
- package/dist/product-page.js.map +1 -1
- package/dist/profile-card.d.ts +119 -1
- package/dist/profile-card.js +68 -21
- package/dist/profile-card.js.map +1 -1
- package/dist/promise-card.d.ts +4 -1
- package/dist/promise-card.js +4 -0
- package/dist/promise-card.js.map +1 -1
- package/dist/quota-meter.d.ts +113 -0
- package/dist/quota-meter.js +58 -0
- package/dist/quota-meter.js.map +1 -0
- package/dist/radio-group.js +6 -8
- package/dist/radio-group.js.map +1 -1
- package/dist/rail-nav.d.ts +18 -2
- package/dist/rail-nav.js +25 -2
- package/dist/rail-nav.js.map +1 -1
- package/dist/retro-tv.d.ts +30 -0
- package/dist/retro-tv.js +124 -0
- package/dist/retro-tv.js.map +1 -0
- package/dist/router.d.ts +12 -1
- package/dist/router.js +85 -8
- package/dist/router.js.map +1 -1
- package/dist/scroll-stage.d.ts +5 -1
- package/dist/scroll-stage.js +5 -0
- package/dist/scroll-stage.js.map +1 -1
- package/dist/search-field.js +1 -1
- package/dist/showcase.d.ts +9 -2
- package/dist/showcase.js +5 -0
- package/dist/showcase.js.map +1 -1
- package/dist/signature.d.ts +19 -0
- package/dist/signature.js +39 -0
- package/dist/signature.js.map +1 -0
- package/dist/site-footer.js +1 -1
- package/dist/sites.js +1 -1
- package/dist/sites.js.map +1 -1
- package/dist/slot.d.ts +1 -1
- package/dist/stat.js +1 -1
- package/dist/stat.js.map +1 -1
- package/dist/status-page.d.ts +4 -1
- package/dist/status-page.js +5 -0
- package/dist/status-page.js.map +1 -1
- package/dist/stuck.d.ts +27 -0
- package/dist/stuck.js +26 -0
- package/dist/stuck.js.map +1 -0
- package/dist/swipe-deck.d.ts +9 -2
- package/dist/swipe-deck.js +5 -0
- package/dist/swipe-deck.js.map +1 -1
- package/dist/switch.js +4 -32
- package/dist/switch.js.map +1 -1
- package/dist/tabs.d.ts +47 -8
- package/dist/tabs.js +62 -12
- package/dist/tabs.js.map +1 -1
- package/dist/tag-input.js +2 -2
- package/dist/tag-selector.js +1 -1
- package/dist/terminal-replay.d.ts +4 -1
- package/dist/terminal-replay.js +4 -0
- package/dist/terminal-replay.js.map +1 -1
- package/dist/tree-view.js +4 -0
- package/dist/tree-view.js.map +1 -1
- package/dist/update-prompt.d.ts +5 -1
- package/dist/update-prompt.js +4 -0
- package/dist/update-prompt.js.map +1 -1
- package/dist/video-player.js +7 -376
- package/dist/video-player.js.map +1 -1
- package/dist/video-trimmer.d.ts +6 -1
- package/dist/video-trimmer.js +4 -0
- package/dist/video-trimmer.js.map +1 -1
- package/package.json +143 -31
- package/registry/account-menu.json +9 -8
- package/registry/account-settings.json +2 -2
- package/registry/achievement.json +3 -4
- package/registry/action-bar.json +3 -3
- package/registry/action-sheet.json +1 -0
- package/registry/activity-feed.json +2 -1
- package/registry/agenda.json +1 -1
- package/registry/alert.json +1 -1
- package/registry/anatomy-plate.json +13 -5
- package/registry/app-header.json +470 -23
- package/registry/app-shell.json +2 -2
- package/registry/argument-card.json +1 -1
- package/registry/audio-player.json +1 -1
- package/registry/auth-layout.json +1 -1
- package/registry/avatar.json +3 -2
- package/registry/badge.json +2 -1
- package/registry/bird-plate.json +16 -2
- package/registry/button.json +7 -6
- package/registry/captcha.json +1 -1
- package/registry/card-grid.json +1 -1
- package/registry/card.json +7 -6
- package/registry/catalogue-page.json +3 -4
- package/registry/changelog-page.json +3 -5
- package/registry/chapter.json +46 -10
- package/registry/chat.json +3 -2
- package/registry/checkbox.json +4 -3
- package/registry/chip-link.json +2 -2
- package/registry/chip-row.json +2 -2
- package/registry/chip.json +3 -2
- package/registry/choice-grid.json +3 -4
- package/registry/code-block.json +1 -1
- package/registry/combobox.json +3 -2
- package/registry/command.json +2 -2
- package/registry/comparison-table.json +1 -1
- package/registry/component-page.json +14 -5
- package/registry/confirm-button.json +4 -4
- package/registry/contact-page.json +1 -1
- package/registry/continue-prompt.json +13 -5
- package/registry/countdown.json +4 -3
- package/registry/cover-hero.json +3 -4
- package/registry/cta-panel.json +1 -1
- package/registry/dashboard-layout.json +1 -1
- package/registry/data-table.json +63 -7
- package/registry/date-picker.json +5 -4
- package/registry/decision-list.json +1 -1
- package/registry/description-list.json +2 -1
- package/registry/detail-layout.json +30 -6
- package/registry/dialog.json +7 -6
- package/registry/docs-article-page.json +3 -4
- package/registry/docs-hub-page.json +1 -1
- package/registry/docs-layout.json +1 -1
- package/registry/docs-nav.json +1 -1
- package/registry/document-viewer.json +3 -5
- package/registry/doodle.json +209 -0
- package/registry/drop-overlay.json +30 -16
- package/registry/dropdown-menu.json +2 -2
- package/registry/elephant.json +15 -7
- package/registry/empty-state.json +2 -1
- package/registry/engine-flow.json +1 -1
- package/registry/error-page.json +3 -5
- package/registry/examples/app-header/family.d.ts +4 -0
- package/registry/examples/app-header/family.js +41 -0
- package/registry/examples/app-header/family.tsx +37 -0
- package/registry/examples/app-header/native/family.d.ts +4 -0
- package/registry/examples/app-header/native/family.dark.png +0 -0
- package/registry/examples/app-header/native/family.js +25 -0
- package/registry/examples/app-header/native/family.light.png +0 -0
- package/registry/examples/app-header/native/family.tsx +33 -0
- package/registry/examples/chapter/album.d.ts +4 -0
- package/registry/examples/chapter/album.js +34 -0
- package/registry/examples/chapter/album.tsx +30 -0
- package/registry/examples/chapter/in-ruled-page.d.ts +4 -0
- package/registry/examples/chapter/in-ruled-page.js +23 -0
- package/registry/examples/chapter/in-ruled-page.tsx +19 -0
- package/registry/examples/data-table/applicant-files.d.ts +4 -0
- package/registry/examples/data-table/applicant-files.js +24 -0
- package/registry/examples/data-table/applicant-files.tsx +23 -0
- package/registry/examples/data-table/checks.d.ts +4 -0
- package/registry/examples/data-table/checks.js +25 -0
- package/registry/examples/data-table/checks.tsx +24 -0
- package/registry/examples/detail-layout/profile.d.ts +4 -0
- package/registry/examples/detail-layout/profile.js +26 -0
- package/registry/examples/detail-layout/profile.tsx +21 -0
- package/registry/examples/doodle/kinds.d.ts +4 -0
- package/registry/examples/doodle/kinds.js +17 -0
- package/registry/examples/doodle/kinds.tsx +14 -0
- package/registry/examples/doodle/margin.d.ts +4 -0
- package/registry/examples/doodle/margin.js +17 -0
- package/registry/examples/doodle/margin.tsx +17 -0
- package/registry/examples/markdown/native/basic.dark.png +0 -0
- package/registry/examples/markdown/native/basic.light.png +0 -0
- package/registry/examples/markdown/native/wide-table.d.ts +4 -0
- package/registry/examples/markdown/native/wide-table.dark.png +0 -0
- package/registry/examples/markdown/native/wide-table.js +23 -0
- package/registry/examples/markdown/native/wide-table.light.png +0 -0
- package/registry/examples/markdown/native/wide-table.tsx +22 -0
- package/registry/examples/markdown/wide-table.d.ts +4 -0
- package/registry/examples/markdown/wide-table.js +28 -0
- package/registry/examples/markdown/wide-table.tsx +23 -0
- package/registry/examples/nav-bar/family-product.js +2 -4
- package/registry/examples/nav-bar/family-product.tsx +3 -5
- package/registry/examples/notification-preferences/default.d.ts +4 -0
- package/registry/examples/notification-preferences/default.js +29 -0
- package/registry/examples/notification-preferences/default.tsx +28 -0
- package/registry/examples/profile-card/banner.d.ts +4 -0
- package/registry/examples/profile-card/banner.js +28 -0
- package/registry/examples/profile-card/banner.tsx +24 -0
- package/registry/examples/profile-card/native/banner.d.ts +4 -0
- package/registry/examples/profile-card/native/banner.dark.png +0 -0
- package/registry/examples/profile-card/native/banner.js +22 -0
- package/registry/examples/profile-card/native/banner.light.png +0 -0
- package/registry/examples/profile-card/native/banner.tsx +18 -0
- package/registry/examples/quota-meter/default.d.ts +4 -0
- package/registry/examples/quota-meter/default.js +26 -0
- package/registry/examples/quota-meter/default.tsx +20 -0
- package/registry/examples/quota-meter/full.d.ts +4 -0
- package/registry/examples/quota-meter/full.js +25 -0
- package/registry/examples/quota-meter/full.tsx +18 -0
- package/registry/examples/rail-nav/shortcuts.d.ts +4 -0
- package/registry/examples/rail-nav/shortcuts.js +49 -0
- package/registry/examples/rail-nav/shortcuts.tsx +40 -0
- package/registry/examples/retro-tv/cabinet.d.ts +4 -0
- package/registry/examples/retro-tv/cabinet.js +12 -0
- package/registry/examples/retro-tv/cabinet.tsx +7 -0
- package/registry/examples/retro-tv/portable.d.ts +4 -0
- package/registry/examples/retro-tv/portable.js +12 -0
- package/registry/examples/retro-tv/portable.tsx +7 -0
- package/registry/examples/signature/both.d.ts +4 -0
- package/registry/examples/signature/both.js +11 -0
- package/registry/examples/signature/both.tsx +6 -0
- package/registry/examples/signature/variants.d.ts +4 -0
- package/registry/examples/signature/variants.js +14 -0
- package/registry/examples/signature/variants.tsx +11 -0
- package/registry/examples/stuck/card.d.ts +4 -0
- package/registry/examples/stuck/card.js +13 -0
- package/registry/examples/stuck/card.tsx +14 -0
- package/registry/examples/stuck/holds.d.ts +4 -0
- package/registry/examples/stuck/holds.js +12 -0
- package/registry/examples/stuck/holds.tsx +16 -0
- package/registry/examples/stuck/tag.d.ts +4 -0
- package/registry/examples/stuck/tag.js +12 -0
- package/registry/examples/stuck/tag.tsx +13 -0
- package/registry/examples/tabs/binder.d.ts +4 -0
- package/registry/examples/tabs/binder.js +22 -0
- package/registry/examples/tabs/binder.tsx +20 -0
- package/registry/examples/tabs/native/binder.d.ts +4 -0
- package/registry/examples/tabs/native/binder.dark.png +0 -0
- package/registry/examples/tabs/native/binder.js +26 -0
- package/registry/examples/tabs/native/binder.light.png +0 -0
- package/registry/examples/tabs/native/binder.tsx +22 -0
- package/registry/fab.json +1 -0
- package/registry/field.json +3 -2
- package/registry/file-upload.json +6 -11
- package/registry/filter-bar.json +2 -2
- package/registry/flock.json +3 -4
- package/registry/footnote.json +2 -3
- package/registry/force-update-screen.json +14 -5
- package/registry/form.json +5 -4
- package/registry/gallery-page.json +14 -5
- package/registry/genui.json +2 -2
- package/registry/glossary-term.json +1 -1
- package/registry/glossary.json +1 -1
- package/registry/glow-card.json +2 -2
- package/registry/goal-gauge.json +2 -1
- package/registry/header.json +1 -0
- package/registry/how-it-works-page.json +3 -5
- package/registry/image-cropper.json +13 -5
- package/registry/image-viewer.json +3 -4
- package/registry/index.json +306 -91
- package/registry/iso.json +1 -1
- package/registry/kanban.json +13 -5
- package/registry/kbd.json +1 -1
- package/registry/kpi-explained.json +2 -2
- package/registry/landing-page.json +3 -5
- package/registry/landscape.json +13 -5
- package/registry/language-switch.json +1 -1
- package/registry/legal-page.json +1 -1
- package/registry/link-card.json +1 -1
- package/registry/list.json +2 -1
- package/registry/loader.json +2 -1
- package/registry/longform-page.json +1 -1
- package/registry/maintenance-screen.json +14 -5
- package/registry/map.json +3 -2
- package/registry/markdown.json +86 -9
- package/registry/marketing-layout.json +1 -1
- package/registry/marquee.json +1 -1
- package/registry/mascot-quote.json +1 -1
- package/registry/mascot-state.json +12 -11
- package/registry/mascots.json +2 -1
- package/registry/match-dialog.json +14 -5
- package/registry/media-capture.json +14 -5
- package/registry/media-gallery.json +3 -5
- package/registry/media-grid.json +1 -1
- package/registry/media-picker.json +2 -3
- package/registry/meta-row.json +2 -1
- package/registry/meter.json +4 -3
- package/registry/nav-bar.json +100 -9
- package/registry/next-actions.json +1 -1
- package/registry/notification-preferences.json +250 -0
- package/registry/number-ticker.json +2 -1
- package/registry/onboarding.json +1 -0
- package/registry/opening-hours.json +1 -1
- package/registry/otp-input.json +1 -0
- package/registry/page-header.json +2 -2
- package/registry/page-hero.json +1 -1
- package/registry/page-index.json +1 -1
- package/registry/page.json +3 -3
- package/registry/pagination.json +2 -1
- package/registry/permission-prompt.json +2 -2
- package/registry/photo-grid.json +4 -4
- package/registry/pointer-light.json +6 -2
- package/registry/popover.json +2 -2
- package/registry/pricing-page.json +4 -6
- package/registry/product-page.json +14 -5
- package/registry/profile-card.json +232 -8
- package/registry/progress.json +4 -3
- package/registry/promise-card.json +13 -5
- package/registry/pull-to-refresh.json +1 -0
- package/registry/quota-meter.json +308 -0
- package/registry/radio-group.json +4 -3
- package/registry/rail-nav.json +48 -10
- package/registry/recipes.json +1 -1
- package/registry/retro-tv.json +478 -0
- package/registry/router.json +3 -3
- package/registry/screen.json +1 -0
- package/registry/scroll-stage.json +14 -5
- package/registry/search-field.json +3 -2
- package/registry/section-backdrop.json +1 -1
- package/registry/segmented.json +1 -0
- package/registry/separator.json +2 -2
- package/registry/service-card.json +1 -1
- package/registry/settings-layout.json +2 -1
- package/registry/showcase.json +14 -5
- package/registry/signature.json +185 -0
- package/registry/site-footer.json +3 -3
- package/registry/sites.json +2 -2
- package/registry/skeleton.json +2 -1
- package/registry/skip-link.json +1 -1
- package/registry/slider.json +5 -4
- package/registry/slot-picker.json +1 -1
- package/registry/slot.json +2 -2
- package/registry/specimen-tag.json +1 -1
- package/registry/spinner.json +4 -3
- package/registry/splash-handoff.json +1 -0
- package/registry/split-view.json +1 -1
- package/registry/stage-banner.json +2 -3
- package/registry/stat.json +2 -2
- package/registry/status-page.json +13 -5
- package/registry/step-progress.json +2 -1
- package/registry/step-showcase.json +3 -5
- package/registry/stepper.json +2 -1
- package/registry/sticky-action.json +1 -1
- package/registry/stuck.json +219 -0
- package/registry/swipe-deck.json +14 -5
- package/registry/swipeable-row.json +1 -0
- package/registry/switch.json +3 -2
- package/registry/tab-bar.json +1 -0
- package/registry/tabs.json +154 -22
- package/registry/tag-input.json +1 -1
- package/registry/tag-selector.json +2 -1
- package/registry/taped-photo.json +1 -1
- package/registry/terminal-replay.json +14 -5
- package/registry/text-style.json +5 -5
- package/registry/theme.json +2 -1
- package/registry/toast.json +2 -1
- package/registry/toc.json +1 -1
- package/registry/tooltip.json +2 -2
- package/registry/tree-view.json +6 -2
- package/registry/txt.json +1 -0
- package/registry/update-prompt.json +14 -5
- package/registry/upload-queue.json +1 -1
- package/registry/verified-badge.json +6 -6
- package/registry/vertical-video.json +8 -3
- package/registry/video-player.json +5 -6
- package/registry/video-trimmer.json +13 -5
- package/registry/virtual.json +2 -2
- package/registry/waveform.json +4 -3
- package/dist/chunk-4LYKBSOG.js.map +0 -1
- package/dist/chunk-HHFWK2HH.js +0 -163
- package/dist/chunk-HHFWK2HH.js.map +0 -1
- package/dist/chunk-R3LTSMS5.js +0 -75
- package/dist/chunk-R3LTSMS5.js.map +0 -1
- package/dist/chunk-YGIN2YIY.js.map +0 -1
- package/dist/chunk-YHKTYFOQ.js.map +0 -1
- /package/dist/{chunk-ZQW7LF4Y.js.map → chunk-OIMXKRXF.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
Checkbox
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3X3OF4TI.js";
|
|
5
5
|
import {
|
|
6
6
|
Button
|
|
7
7
|
} from "./chunk-3DHNN5V7.js";
|
|
@@ -13,13 +13,13 @@ import {
|
|
|
13
13
|
DropdownMenu,
|
|
14
14
|
FilterBar,
|
|
15
15
|
FilterMenu
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-OIMXKRXF.js";
|
|
17
17
|
import {
|
|
18
18
|
cn
|
|
19
19
|
} from "./chunk-NSLXEDIS.js";
|
|
20
20
|
import {
|
|
21
21
|
SearchField
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-VB7MWE2N.js";
|
|
23
23
|
import {
|
|
24
24
|
useControllable
|
|
25
25
|
} from "./chunk-FZBWEDQI.js";
|
|
@@ -45,7 +45,7 @@ function dataTableCsv(rows, columns, separator = ",") {
|
|
|
45
45
|
|
|
46
46
|
// src/data-table/data-table.tsx
|
|
47
47
|
import { useTable } from "@tanstack/react-table";
|
|
48
|
-
import * as
|
|
48
|
+
import * as React2 from "react";
|
|
49
49
|
import { tv as tv2 } from "tailwind-variants";
|
|
50
50
|
|
|
51
51
|
// src/pagination/pagination.tsx
|
|
@@ -250,6 +250,122 @@ var filterRange = (row, id, [min, max]) => {
|
|
|
250
250
|
filterRange.autoRemove = (value) => !Array.isArray(value) || value[0] == null && value[1] == null;
|
|
251
251
|
var FILTERS = { text: filterText, facet: filterFacet, range: filterRange };
|
|
252
252
|
|
|
253
|
+
// src/data-table/use-route-table.ts
|
|
254
|
+
import * as React from "react";
|
|
255
|
+
import { useRouteSearch } from "@krizaka/ui/router";
|
|
256
|
+
|
|
257
|
+
// src/data-table/route-codec.ts
|
|
258
|
+
var NONE = "none";
|
|
259
|
+
function encodeSort(sort) {
|
|
260
|
+
return sort ? `${sort.column}.${sort.direction}` : NONE;
|
|
261
|
+
}
|
|
262
|
+
function decodeSort(raw, fallback, columns) {
|
|
263
|
+
if (raw === null) return fallback;
|
|
264
|
+
if (raw === NONE) return null;
|
|
265
|
+
const dot = raw.lastIndexOf(".");
|
|
266
|
+
const column = raw.slice(0, dot);
|
|
267
|
+
const direction = raw.slice(dot + 1);
|
|
268
|
+
if (dot < 1 || direction !== "ascending" && direction !== "descending" || columns && !columns.includes(column)) return fallback;
|
|
269
|
+
return { column, direction };
|
|
270
|
+
}
|
|
271
|
+
var ESCAPE = "\\";
|
|
272
|
+
function encodeFilter(value) {
|
|
273
|
+
if (typeof value !== "string") return JSON.stringify(value);
|
|
274
|
+
return value.startsWith("[") || value.startsWith(ESCAPE) ? `${ESCAPE}${value}` : value;
|
|
275
|
+
}
|
|
276
|
+
function decodeFilter(raw) {
|
|
277
|
+
if (raw.startsWith(ESCAPE)) return raw.slice(1);
|
|
278
|
+
if (raw.startsWith("[")) {
|
|
279
|
+
try {
|
|
280
|
+
const parsed = JSON.parse(raw);
|
|
281
|
+
if (Array.isArray(parsed)) return parsed;
|
|
282
|
+
} catch {
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return raw;
|
|
286
|
+
}
|
|
287
|
+
var sameSort = (a, b) => a?.column === b?.column && a?.direction === b?.direction;
|
|
288
|
+
var filterPrefix = (key) => `${key}.q.`;
|
|
289
|
+
var clearedFilters = (key) => `${key}.q`;
|
|
290
|
+
var sameFilters = (a, b) => {
|
|
291
|
+
const written = (f) => JSON.stringify(Object.entries(f).map(([column, value]) => [column, encodeFilter(value)]).filter(([, v]) => v !== "" && v !== "[]").sort(([a2], [b2]) => String(a2).localeCompare(String(b2))));
|
|
292
|
+
return written(a) === written(b);
|
|
293
|
+
};
|
|
294
|
+
function readTable(search, key, defaults, columns) {
|
|
295
|
+
const params = new URLSearchParams(search);
|
|
296
|
+
const filters = {};
|
|
297
|
+
let explicit = params.has(clearedFilters(key));
|
|
298
|
+
for (const [name, raw2] of params) {
|
|
299
|
+
if (!name.startsWith(filterPrefix(key)) || raw2 === "") continue;
|
|
300
|
+
explicit = true;
|
|
301
|
+
filters[name.slice(filterPrefix(key).length)] = decodeFilter(raw2);
|
|
302
|
+
}
|
|
303
|
+
const raw = params.get(`${key}.page`);
|
|
304
|
+
const page = raw !== null && /^[1-9]\d*$/.test(raw) ? Number(raw) : defaults.page;
|
|
305
|
+
return {
|
|
306
|
+
sort: decodeSort(params.get(`${key}.sort`), defaults.sort, columns),
|
|
307
|
+
filters: explicit ? filters : defaults.filters ?? {},
|
|
308
|
+
page
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
function writeTable(search, key, change, defaults) {
|
|
312
|
+
const params = new URLSearchParams(search);
|
|
313
|
+
if (change.sort !== void 0) {
|
|
314
|
+
if (sameSort(change.sort, defaults.sort)) params.delete(`${key}.sort`);
|
|
315
|
+
else params.set(`${key}.sort`, encodeSort(change.sort));
|
|
316
|
+
}
|
|
317
|
+
if (change.filters !== void 0) {
|
|
318
|
+
for (const name of [...params.keys()]) if (name.startsWith(filterPrefix(key)) || name === clearedFilters(key)) params.delete(name);
|
|
319
|
+
if (!sameFilters(change.filters, defaults.filters ?? {})) {
|
|
320
|
+
let written = 0;
|
|
321
|
+
for (const [column, value] of Object.entries(change.filters)) {
|
|
322
|
+
const encoded = encodeFilter(value);
|
|
323
|
+
if (encoded !== "" && encoded !== "[]") {
|
|
324
|
+
params.set(`${filterPrefix(key)}${column}`, encoded);
|
|
325
|
+
written += 1;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (written === 0) params.set(clearedFilters(key), "");
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
const page = change.page ?? (change.sort !== void 0 || change.filters !== void 0 ? 1 : void 0);
|
|
332
|
+
if (page !== void 0) {
|
|
333
|
+
if (page === defaults.page) params.delete(`${key}.page`);
|
|
334
|
+
else params.set(`${key}.page`, String(page));
|
|
335
|
+
}
|
|
336
|
+
const text = params.toString();
|
|
337
|
+
return text ? `?${text}` : "";
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// src/data-table/use-route-table.ts
|
|
341
|
+
function useRouteTable(routeKey, defaults, columns) {
|
|
342
|
+
const { search, write } = useRouteSearch();
|
|
343
|
+
const key = routeKey;
|
|
344
|
+
const sortKey = encodeSort(defaults.sort);
|
|
345
|
+
const filtersKey = JSON.stringify(defaults.filters);
|
|
346
|
+
const columnKey = columns.join();
|
|
347
|
+
const page = defaults.page;
|
|
348
|
+
const stable = React.useMemo(
|
|
349
|
+
() => ({ sort: decodeSort(sortKey, null), page, filters: JSON.parse(filtersKey) }),
|
|
350
|
+
[sortKey, filtersKey, page]
|
|
351
|
+
);
|
|
352
|
+
const table = React.useMemo(
|
|
353
|
+
() => key === void 0 ? null : readTable(search, key, stable, columnKey.split(",")),
|
|
354
|
+
[search, key, stable, columnKey]
|
|
355
|
+
);
|
|
356
|
+
if (key === void 0 || table === null) return null;
|
|
357
|
+
return {
|
|
358
|
+
sort: table.sort,
|
|
359
|
+
filters: table.filters,
|
|
360
|
+
page: table.page,
|
|
361
|
+
// Typing in a filter is not a place to come back to: it replaces the entry; a sort or a page is a step. A sort or a
|
|
362
|
+
// filter goes back to the first page in the same navigation.
|
|
363
|
+
onSortChange: (sort) => write((s2) => writeTable(s2, key, { sort }, stable)),
|
|
364
|
+
onFiltersChange: (filters) => write((s2) => writeTable(s2, key, { filters }, stable), { replace: true }),
|
|
365
|
+
onPageChange: (next) => write((s2) => writeTable(s2, key, { page: next }, stable))
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
|
|
253
369
|
// src/data-table/data-table.tsx
|
|
254
370
|
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
255
371
|
var dataTable = tv2({
|
|
@@ -291,7 +407,7 @@ var dataTable = tv2({
|
|
|
291
407
|
th: "@max-xl:sr-only @max-xl:data-[keep]:not-sr-only @max-xl:data-[keep]:block @max-xl:p-0 @xl:data-[pin]:sticky @xl:data-[pin]:z-[2] @xl:data-[pin]:bg-surface-2 @xl:data-[pin=start]:left-(--dt-pin) @xl:data-[pin=end]:right-(--dt-pin)",
|
|
292
408
|
tbody: "@max-xl:grid @max-xl:gap-3 @max-xl:p-3",
|
|
293
409
|
tr: "@max-xl:relative @max-xl:grid @max-xl:gap-1.5 @max-xl:rounded-xl @max-xl:border @max-xl:border-border-default @max-xl:bg-surface-0 @max-xl:p-4 @max-xl:last:border-b",
|
|
294
|
-
td: "@max-xl:flex @max-xl:items-baseline @max-xl:justify-between @max-xl:gap-4 @max-xl:p-0 @max-xl:text-right @max-xl:before:shrink-0 @max-xl:before:text-xs @max-xl:before:font-semibold @max-xl:before:text-fg-secondary @max-xl:before:content-[attr(data-label)] @max-xl:data-[card=title]:order-first @max-xl:data-[card=title]:pr-8 @max-xl:data-[card=title]:text-left @max-xl:data-[card=title]:text-base @max-xl:data-[card=title]:font-semibold @max-xl:data-[card=title]:before:content-none @max-xl:data-[card=hidden]:hidden @max-xl:data-[card=message]:block @max-xl:data-[card=message]:text-center @max-xl:data-[card=message]:before:content-none @xl:data-[pin]:sticky @xl:data-[pin]:z-[1] @xl:data-[pin]:bg-surface-1 @xl:data-[pin=start]:left-(--dt-pin) @xl:data-[pin=end]:right-(--dt-pin)",
|
|
410
|
+
td: "@max-xl:flex @max-xl:min-w-0 @max-xl:items-baseline @max-xl:justify-between @max-xl:gap-4 @max-xl:p-0 @max-xl:text-right @max-xl:[overflow-wrap:anywhere] @max-xl:[&>*]:min-w-0 @max-xl:[&>*]:shrink @max-xl:[&>*]:whitespace-normal @max-xl:before:shrink-0 @max-xl:before:text-xs @max-xl:before:font-semibold @max-xl:before:text-fg-secondary @max-xl:before:content-[attr(data-label)] @max-xl:data-[card=title]:order-first @max-xl:data-[card=title]:pr-8 @max-xl:data-[card=title]:text-left @max-xl:data-[card=title]:text-base @max-xl:data-[card=title]:font-semibold @max-xl:data-[card=title]:before:content-none @max-xl:data-[card=hidden]:hidden @max-xl:data-[card=message]:block @max-xl:data-[card=message]:text-center @max-xl:data-[card=message]:before:content-none @xl:data-[pin]:sticky @xl:data-[pin]:z-[1] @xl:data-[pin]:bg-surface-1 @xl:data-[pin=start]:left-(--dt-pin) @xl:data-[pin=end]:right-(--dt-pin)",
|
|
295
411
|
select: "@max-xl:absolute @max-xl:right-3 @max-xl:top-3 @max-xl:w-auto @max-xl:before:content-none",
|
|
296
412
|
expander: "@max-xl:before:content-none"
|
|
297
413
|
},
|
|
@@ -303,7 +419,7 @@ var dataTable = tv2({
|
|
|
303
419
|
th: "sr-only p-0 data-[keep]:not-sr-only data-[keep]:block",
|
|
304
420
|
tbody: "grid gap-3 p-3",
|
|
305
421
|
tr: "relative grid gap-1.5 rounded-xl border border-border-default bg-surface-0 p-4 last:border-b",
|
|
306
|
-
td: "flex items-baseline justify-between gap-4 p-0 text-right before:shrink-0 before:text-xs before:font-semibold before:text-fg-secondary before:content-[attr(data-label)] data-[card=title]:order-first data-[card=title]:pr-8 data-[card=title]:text-left data-[card=title]:text-base data-[card=title]:font-semibold data-[card=title]:before:content-none data-[card=hidden]:hidden data-[card=message]:block data-[card=message]:text-center data-[card=message]:before:content-none",
|
|
422
|
+
td: "flex min-w-0 items-baseline justify-between gap-4 p-0 text-right [overflow-wrap:anywhere] before:shrink-0 before:text-xs before:font-semibold before:text-fg-secondary before:content-[attr(data-label)] [&>*]:min-w-0 [&>*]:shrink [&>*]:whitespace-normal data-[card=title]:order-first data-[card=title]:pr-8 data-[card=title]:text-left data-[card=title]:text-base data-[card=title]:font-semibold data-[card=title]:before:content-none data-[card=hidden]:hidden data-[card=message]:block data-[card=message]:text-center data-[card=message]:before:content-none",
|
|
307
423
|
select: "absolute right-3 top-3 w-auto before:content-none",
|
|
308
424
|
expander: "before:content-none"
|
|
309
425
|
}
|
|
@@ -317,7 +433,9 @@ var dataTable = tv2({
|
|
|
317
433
|
// Zebra rows (the table layouts); the cards keep their frame.
|
|
318
434
|
striped: { true: {}, false: {} },
|
|
319
435
|
// Typed columns: one height per row (`typed`); untyped tables keep the height of their content.
|
|
320
|
-
typed: { true: {}, false: {} }
|
|
436
|
+
typed: { true: {}, false: {} },
|
|
437
|
+
// What a row becomes on a phone (under 36 rem, or with `layout="cards"`): a card, or a list row (#636).
|
|
438
|
+
phone: { cards: {}, list: {} }
|
|
321
439
|
},
|
|
322
440
|
compoundVariants: [
|
|
323
441
|
{ layout: "table", sticky: true, class: { th: "sticky top-(--dt-top,0px) z-[3] bg-surface-2" } },
|
|
@@ -328,9 +446,33 @@ var dataTable = tv2({
|
|
|
328
446
|
{ layout: "table", density: "comfortable", typed: true, class: { td: "h-15" } },
|
|
329
447
|
{ layout: "auto", density: "comfortable", typed: true, class: { td: "@xl:h-15" } },
|
|
330
448
|
{ layout: "table", density: "compact", typed: true, class: { td: "h-12" } },
|
|
331
|
-
{ layout: "auto", density: "compact", typed: true, class: { td: "@xl:h-12" } }
|
|
449
|
+
{ layout: "auto", density: "compact", typed: true, class: { td: "@xl:h-12" } },
|
|
450
|
+
// The list rows (#636): no box in the box, no label/value lines — the checkbox, the title and its line of facts, the
|
|
451
|
+
// status at the end, a hairline between rows. Each cell says its place in `data-list` (title · status · away).
|
|
452
|
+
{
|
|
453
|
+
layout: "auto",
|
|
454
|
+
phone: "list",
|
|
455
|
+
class: {
|
|
456
|
+
tbody: "@max-xl:gap-0 @max-xl:p-0",
|
|
457
|
+
tr: "@max-xl:flex @max-xl:items-center @max-xl:gap-3 @max-xl:rounded-none @max-xl:border-0 @max-xl:border-b @max-xl:border-border-subtle @max-xl:bg-transparent @max-xl:px-4 @max-xl:py-3 @max-xl:last:border-b-0",
|
|
458
|
+
td: "@max-xl:block @max-xl:text-left @max-xl:before:content-none @max-xl:data-[list=title]:min-w-0 @max-xl:data-[list=title]:flex-1 @max-xl:data-[list=status]:shrink-0 @max-xl:data-[list=away]:hidden @max-xl:data-[card=message]:w-full",
|
|
459
|
+
select: "@max-xl:relative @max-xl:right-auto @max-xl:top-auto @max-xl:z-[1] @max-xl:shrink-0 @max-xl:self-center",
|
|
460
|
+
expander: "@max-xl:relative @max-xl:z-[1] @max-xl:shrink-0"
|
|
461
|
+
}
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
layout: "cards",
|
|
465
|
+
phone: "list",
|
|
466
|
+
class: {
|
|
467
|
+
tbody: "gap-0 p-0",
|
|
468
|
+
tr: "flex items-center gap-3 rounded-none border-0 border-b border-border-subtle bg-transparent px-4 py-3 last:border-b-0",
|
|
469
|
+
td: "block text-left before:content-none data-[list=title]:min-w-0 data-[list=title]:flex-1 data-[list=status]:shrink-0 data-[list=away]:hidden data-[card=message]:w-full",
|
|
470
|
+
select: "relative right-auto top-auto z-[1] shrink-0 self-center",
|
|
471
|
+
expander: "relative z-[1] shrink-0"
|
|
472
|
+
}
|
|
473
|
+
}
|
|
332
474
|
],
|
|
333
|
-
defaultVariants: { layout: "auto", density: "comfortable", sticky: false, striped: false, typed: false }
|
|
475
|
+
defaultVariants: { layout: "auto", density: "comfortable", sticky: false, striped: false, typed: false, phone: "cards" }
|
|
334
476
|
});
|
|
335
477
|
var NO_CLASS = { 2: "", 3: "", 4: "", 5: "", 6: "", 7: "" };
|
|
336
478
|
var LEAVES = {
|
|
@@ -358,6 +500,11 @@ var PANEL = {
|
|
|
358
500
|
table: { 2: "hidden @max-2xl:block", 3: "hidden @max-3xl:block", 4: "hidden @max-4xl:block", 5: "hidden @max-5xl:block", 6: "hidden @max-6xl:block", 7: "hidden @max-7xl:block" },
|
|
359
501
|
cards: { 2: "hidden", 3: "block", 4: "block", 5: "block", 6: "block", 7: "block" }
|
|
360
502
|
};
|
|
503
|
+
var LIST_FACTS = { auto: "hidden @max-xl:mt-0.5 @max-xl:block @max-xl:truncate text-xs font-normal text-fg-secondary", table: "hidden", cards: "mt-0.5 block truncate text-xs font-normal text-fg-secondary" };
|
|
504
|
+
var LIST_IN_DETAIL = { auto: "hidden @max-xl:grid", table: "hidden", cards: "grid" };
|
|
505
|
+
var LIST_TOGGLE = { auto: "@max-xl:inline-flex", table: "", cards: "inline-flex" };
|
|
506
|
+
var LIST_PANEL = { auto: "@max-xl:block", table: "", cards: "block" };
|
|
507
|
+
var LIST_LINK = { auto: "@max-xl:after:absolute @max-xl:after:inset-0 @max-xl:after:content-['']", table: "", cards: "after:absolute after:inset-0 after:content-['']" };
|
|
361
508
|
var TYPE_CELL = {
|
|
362
509
|
title: { auto: "@xl:w-full @xl:max-w-0 @xl:min-w-44", table: "w-full max-w-0 min-w-44", cards: "" },
|
|
363
510
|
badge: { auto: "@xl:w-px", table: "w-px", cards: "" },
|
|
@@ -389,18 +536,19 @@ var dataTableLabels = {
|
|
|
389
536
|
showMore: (name) => `Show more about ${name}`,
|
|
390
537
|
export: "Export CSV"
|
|
391
538
|
};
|
|
392
|
-
var DataTableContext =
|
|
539
|
+
var DataTableContext = React2.createContext(null);
|
|
393
540
|
function useDataTable() {
|
|
394
|
-
const context =
|
|
541
|
+
const context = React2.useContext(DataTableContext);
|
|
395
542
|
if (!context) throw new Error("useDataTable: call it inside a DataTable (its `toolbar`, `footer` or a cell)");
|
|
396
543
|
return context;
|
|
397
544
|
}
|
|
545
|
+
var CARD_CLIP = { auto: "@max-xl:overflow-x-clip!", table: void 0, cards: "overflow-x-clip!" };
|
|
398
546
|
var TRUNCATE = { auto: "@xl:truncate", table: "truncate", cards: "" };
|
|
399
547
|
var MIN = { auto: "@xl:min-w-(--dt-min)!", table: "min-w-(--dt-min)!", cards: "" };
|
|
400
548
|
var MAX = { auto: "@xl:max-w-(--dt-max)!", table: "max-w-(--dt-max)!", cards: "" };
|
|
401
549
|
var SHADOWS = "[background:linear-gradient(to_right,var(--kz-surface-1),transparent)_left/24px_100%_no-repeat_local,linear-gradient(to_left,var(--kz-surface-1),transparent)_right/24px_100%_no-repeat_local,linear-gradient(to_right,rgb(0_0_0/0.18),transparent)_left/10px_100%_no-repeat_scroll,linear-gradient(to_left,rgb(0_0_0/0.18),transparent)_right/10px_100%_no-repeat_scroll]";
|
|
402
550
|
var ALIGN = { start: "text-left", center: "text-center", end: "text-right" };
|
|
403
|
-
var
|
|
551
|
+
var NONE2 = [];
|
|
404
552
|
var NO_RECORD = {};
|
|
405
553
|
var apply = (updater, old) => typeof updater === "function" ? updater(old) : updater;
|
|
406
554
|
var valueOf = (column, row) => column.value ? column.value(row) : row[column.id];
|
|
@@ -412,6 +560,7 @@ function DataTable({
|
|
|
412
560
|
caption,
|
|
413
561
|
showCaption,
|
|
414
562
|
sort: sortProp,
|
|
563
|
+
routeKey,
|
|
415
564
|
defaultSort = null,
|
|
416
565
|
onSortChange,
|
|
417
566
|
filters: filtersProp,
|
|
@@ -419,11 +568,11 @@ function DataTable({
|
|
|
419
568
|
onFiltersChange,
|
|
420
569
|
selectable,
|
|
421
570
|
selected: selectedProp,
|
|
422
|
-
defaultSelected =
|
|
571
|
+
defaultSelected = NONE2,
|
|
423
572
|
onSelectedChange,
|
|
424
573
|
rowLabel,
|
|
425
574
|
groupBy: groupByProp,
|
|
426
|
-
defaultGroupBy =
|
|
575
|
+
defaultGroupBy = NONE2,
|
|
427
576
|
onGroupByChange,
|
|
428
577
|
columnVisibility: visibilityProp,
|
|
429
578
|
defaultColumnVisibility = NO_RECORD,
|
|
@@ -450,6 +599,7 @@ function DataTable({
|
|
|
450
599
|
error,
|
|
451
600
|
empty: empty2,
|
|
452
601
|
layout = "auto",
|
|
602
|
+
phone = "cards",
|
|
453
603
|
density,
|
|
454
604
|
stickyHeader,
|
|
455
605
|
striped,
|
|
@@ -465,29 +615,42 @@ function DataTable({
|
|
|
465
615
|
const effectiveLayout = virtualized ? "table" : layout;
|
|
466
616
|
const L = effectiveLayout;
|
|
467
617
|
const typed = columns.some((c) => c.type || c.priority);
|
|
468
|
-
const
|
|
469
|
-
const
|
|
470
|
-
const
|
|
618
|
+
const list = phone === "list" && L !== "table";
|
|
619
|
+
const s2 = dataTable({ layout: L, density, sticky: Boolean(stickyHeader), striped: Boolean(striped), typed, phone: list ? "list" : "cards" });
|
|
620
|
+
const route = useRouteTable(routeKey, { sort: defaultSort, page: defaultPage, filters: defaultFilters }, columns.map((c) => c.id));
|
|
621
|
+
const [sort, setSort] = useControllable(route ? route.sort : sortProp, defaultSort, route?.onSortChange ?? onSortChange);
|
|
622
|
+
const [filters, setFiltersState] = useControllable(route ? route.filters : filtersProp, defaultFilters, route?.onFiltersChange ?? onFiltersChange);
|
|
471
623
|
const [selected, setSelected] = useControllable(selectedProp, defaultSelected, onSelectedChange);
|
|
472
624
|
const [groupBy, setGroupBy] = useControllable(groupByProp, defaultGroupBy, onGroupByChange);
|
|
473
625
|
const [visibility, setVisibility] = useControllable(visibilityProp, defaultColumnVisibility, onColumnVisibilityChange);
|
|
474
626
|
const [expanded, setExpanded] = useControllable(expandedProp, defaultExpanded, onExpandedChange);
|
|
475
627
|
const paginated = pageSizeProp !== void 0 || defaultPageSize !== void 0;
|
|
476
628
|
const [pageSize, setPageSize] = useControllable(pageSizeProp, defaultPageSize ?? Number.POSITIVE_INFINITY, onPageSizeChange);
|
|
477
|
-
const [page, setPage] = useControllable(pageProp, defaultPage, onPageChange);
|
|
478
|
-
const [sizing, setSizing] =
|
|
479
|
-
const [resizeState, setResizeState] =
|
|
480
|
-
const
|
|
629
|
+
const [page, setPage] = useControllable(route ? route.page : pageProp, defaultPage, route?.onPageChange ?? onPageChange);
|
|
630
|
+
const [sizing, setSizing] = React2.useState({});
|
|
631
|
+
const [resizeState, setResizeState] = React2.useState(void 0);
|
|
632
|
+
const announced = React2.useRef(JSON.stringify([defaultSort, defaultFilters, paginated ? defaultPage : 1, paginated ? pageSize : null]));
|
|
633
|
+
const announce = (next) => {
|
|
634
|
+
const query = { sort, filters, page: paginated ? page : 1, pageSize: paginated ? pageSize : Number.POSITIVE_INFINITY, ...next };
|
|
635
|
+
if (route) announced.current = JSON.stringify([query.sort, query.filters, query.page, paginated ? query.pageSize : null]);
|
|
636
|
+
onStateChange?.(query);
|
|
637
|
+
};
|
|
481
638
|
const changeSort = (next) => {
|
|
482
639
|
setSort(next);
|
|
483
|
-
if (paginated && page !== 1) setPage(1);
|
|
640
|
+
if (paginated && page !== 1 && !route) setPage(1);
|
|
484
641
|
announce({ sort: next, page: 1 });
|
|
485
642
|
};
|
|
486
643
|
const changeFilters = (next) => {
|
|
487
644
|
setFiltersState(next);
|
|
488
|
-
if (paginated && page !== 1) setPage(1);
|
|
645
|
+
if (paginated && page !== 1 && !route) setPage(1);
|
|
489
646
|
announce({ filters: next, page: 1 });
|
|
490
647
|
};
|
|
648
|
+
const routeQuery = route ? JSON.stringify([route.sort, route.filters, paginated ? route.page : 1, paginated ? pageSize : null]) : null;
|
|
649
|
+
React2.useEffect(() => {
|
|
650
|
+
if (routeQuery === null || routeQuery === announced.current) return;
|
|
651
|
+
announced.current = routeQuery;
|
|
652
|
+
announce({});
|
|
653
|
+
}, [routeQuery]);
|
|
491
654
|
const changePage = (next) => {
|
|
492
655
|
setPage(next);
|
|
493
656
|
announce({ page: next });
|
|
@@ -500,9 +663,18 @@ function DataTable({
|
|
|
500
663
|
const hasExpander = Boolean(renderDetail || getSubRows);
|
|
501
664
|
const priorityOf = (column) => column.priority && column.priority > 1 ? column.priority : 1;
|
|
502
665
|
const maxPriority = columns.reduce((max, column) => priorityOf(column) > max ? priorityOf(column) : max, 1);
|
|
503
|
-
const
|
|
666
|
+
const titleColumn = columns.find((c) => c.card === "title" || !c.card && c.type === "title") ?? columns[0];
|
|
667
|
+
const placeOf = (column) => {
|
|
668
|
+
if (column.card === "hidden") return "hidden";
|
|
669
|
+
if (column === titleColumn) return "title";
|
|
670
|
+
if (column.type === "status" || column.type === "badge") return "status";
|
|
671
|
+
return priorityOf(column) === 2 ? "facts" : "away";
|
|
672
|
+
};
|
|
673
|
+
const listAway = list ? columns.filter((c) => placeOf(c) === "away" && priorityOf(c) === 1) : [];
|
|
674
|
+
const facts = list ? columns.filter((c) => placeOf(c) === "facts") : [];
|
|
675
|
+
const inlineToggle = (maxPriority > 1 || listAway.length > 0) && !hasExpander;
|
|
504
676
|
const detailed = Boolean(renderDetail) || inlineToggle;
|
|
505
|
-
const defs =
|
|
677
|
+
const defs = React2.useMemo(
|
|
506
678
|
() => columns.map((column) => ({
|
|
507
679
|
id: column.id,
|
|
508
680
|
accessorFn: (row) => valueOf(column, row),
|
|
@@ -579,7 +751,7 @@ function DataTable({
|
|
|
579
751
|
const pageRows = table.getRowModel().rows;
|
|
580
752
|
const leafCount = (manual?.pagination || manual?.filtering) && rowCount !== void 0 ? rowCount : table.getFilteredRowModel().rows.length;
|
|
581
753
|
const pageCount = paginated ? Math.max(1, manual?.pagination ? Math.ceil((rowCount ?? rows.length) / pageSize) : table.getPageCount()) : 1;
|
|
582
|
-
|
|
754
|
+
React2.useEffect(() => {
|
|
583
755
|
if (paginated && !loading && page > pageCount) changePage(pageCount);
|
|
584
756
|
}, [pageCount]);
|
|
585
757
|
const selectableIds = pageRows.filter((r) => !r.getIsGrouped()).map((r) => r.id);
|
|
@@ -591,7 +763,7 @@ function DataTable({
|
|
|
591
763
|
const fixedLayout = Boolean(resizing || pinned?.start?.length || pinned?.end?.length);
|
|
592
764
|
const sideways = scroll ?? (!typed && !stickyHeader);
|
|
593
765
|
const nameOf = (row) => rowLabel ? rowLabel(row.original) : row.id;
|
|
594
|
-
const scroller =
|
|
766
|
+
const scroller = React2.useRef(null);
|
|
595
767
|
const fallbacks = useLayoutFallbacks(virtualized?.height ?? 0, virtualized?.estimateRowHeight ?? 44);
|
|
596
768
|
const virtualizer = useVirtualizer({
|
|
597
769
|
...fallbacks,
|
|
@@ -623,8 +795,9 @@ function DataTable({
|
|
|
623
795
|
switch (column.type) {
|
|
624
796
|
case "title": {
|
|
625
797
|
const sub = column.subtitle?.(original);
|
|
798
|
+
const href = column.href?.(original);
|
|
626
799
|
return /* @__PURE__ */ jsxs2("span", { className: "block min-w-0", children: [
|
|
627
|
-
/* @__PURE__ */ jsx2("span", { className: cn("block font-semibold text-fg", cut), title: text, children: text }),
|
|
800
|
+
href ? /* @__PURE__ */ jsx2("a", { href, className: cn("block font-semibold text-fg no-underline hover:underline focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring", cut, list && LIST_LINK[L]), title: text, children: text }) : /* @__PURE__ */ jsx2("span", { className: cn("block font-semibold text-fg", cut), title: text, children: text }),
|
|
628
801
|
sub ? /* @__PURE__ */ jsx2("span", { className: cn("block font-mono text-xs text-fg-tertiary", cut), children: sub }) : null
|
|
629
802
|
] });
|
|
630
803
|
}
|
|
@@ -644,6 +817,11 @@ function DataTable({
|
|
|
644
817
|
}
|
|
645
818
|
}
|
|
646
819
|
};
|
|
820
|
+
const listPlace = (row, column) => {
|
|
821
|
+
if (row?.getIsGrouped()) return row.groupingColumnId === column.id ? "title" : column.aggregate ? "status" : "away";
|
|
822
|
+
const place = placeOf(column);
|
|
823
|
+
return place === "facts" || place === "hidden" ? "away" : place;
|
|
824
|
+
};
|
|
647
825
|
const dataCell = (row, cell, first) => {
|
|
648
826
|
const column = byId.get(cell.column.id);
|
|
649
827
|
if (!column) return null;
|
|
@@ -660,13 +838,22 @@ function DataTable({
|
|
|
660
838
|
} else content = column.aggregate ? column.aggregate(leaves) : null;
|
|
661
839
|
} else {
|
|
662
840
|
content = contentOf(column, row.original);
|
|
841
|
+
if (list && column === titleColumn && facts.length > 0) {
|
|
842
|
+
content = /* @__PURE__ */ jsxs2("span", { className: "block min-w-0", children: [
|
|
843
|
+
content,
|
|
844
|
+
/* @__PURE__ */ jsx2("span", { "data-facts": "", className: LIST_FACTS[L], children: facts.map((c, i) => /* @__PURE__ */ jsxs2(React2.Fragment, { children: [
|
|
845
|
+
i > 0 ? /* @__PURE__ */ jsx2("span", { "aria-hidden": true, children: " \xB7 " }) : null,
|
|
846
|
+
contentOf(c, row.original)
|
|
847
|
+
] }, c.id)) })
|
|
848
|
+
] });
|
|
849
|
+
}
|
|
663
850
|
if (first && inlineToggle) {
|
|
664
851
|
content = /* @__PURE__ */ jsxs2("span", { className: "flex min-w-0 items-center gap-1", children: [
|
|
665
852
|
/* @__PURE__ */ jsx2(
|
|
666
853
|
"button",
|
|
667
854
|
{
|
|
668
855
|
type: "button",
|
|
669
|
-
className: s2.toggle({ className: TOGGLE[L][maxPriority] }),
|
|
856
|
+
className: s2.toggle({ className: cn(maxPriority > 1 ? TOGGLE[L][maxPriority] : "hidden", listAway.length > 0 && LIST_TOGGLE[L], list && "relative z-[1]") }),
|
|
670
857
|
"aria-expanded": row.getIsExpanded(),
|
|
671
858
|
"aria-label": labels.showMore(nameOf(row)),
|
|
672
859
|
onClick: row.getToggleExpandedHandler(),
|
|
@@ -691,7 +878,8 @@ function DataTable({
|
|
|
691
878
|
{
|
|
692
879
|
role: "cell",
|
|
693
880
|
"data-label": column.header,
|
|
694
|
-
"data-card": row.getIsGrouped() ? cell.column.id === row.groupingColumnId ? "title" : column.aggregate ? void 0 : "hidden" : cardOf(column),
|
|
881
|
+
"data-card": list ? placeOf(column) === "hidden" ? "hidden" : void 0 : row.getIsGrouped() ? cell.column.id === row.groupingColumnId ? "title" : column.aggregate ? void 0 : "hidden" : cardOf(column),
|
|
882
|
+
"data-list": list ? listPlace(row, column) : void 0,
|
|
695
883
|
...pinnedProps,
|
|
696
884
|
className: s2.td({ className: cellClass }),
|
|
697
885
|
style: {
|
|
@@ -728,14 +916,17 @@ function DataTable({
|
|
|
728
916
|
]
|
|
729
917
|
}
|
|
730
918
|
);
|
|
731
|
-
if (!showDetail) return /* @__PURE__ */ jsx2(
|
|
732
|
-
const left = visibleColumns.filter((c) =>
|
|
733
|
-
|
|
919
|
+
if (!showDetail) return /* @__PURE__ */ jsx2(React2.Fragment, { children: main }, row.id);
|
|
920
|
+
const left = visibleColumns.filter((c) => {
|
|
921
|
+
const column = byId.get(c.id);
|
|
922
|
+
return priorityOf(column) > 1 || listAway.includes(column);
|
|
923
|
+
});
|
|
924
|
+
return /* @__PURE__ */ jsxs2(React2.Fragment, { children: [
|
|
734
925
|
main,
|
|
735
926
|
/* @__PURE__ */ jsx2("tr", { role: "row", className: s2.tr({ className: "hover:bg-transparent" }), children: /* @__PURE__ */ jsxs2("td", { role: "cell", colSpan: span, "data-card": "message", className: s2.td({ className: renderDetail ? s2.detail() : "bg-surface-0 p-0 text-left" }), children: [
|
|
736
|
-
left.length > 0 ? /* @__PURE__ */ jsx2("dl", { className: cn("m-0 grid gap-3 text-left", renderDetail ? "mb-4" : cn("px-4 py-4", PANEL[L][maxPriority])), children: left.map((c) => {
|
|
927
|
+
left.length > 0 ? /* @__PURE__ */ jsx2("dl", { className: cn("m-0 grid gap-3 text-left", renderDetail ? "mb-4" : cn("px-4 py-4", maxPriority > 1 ? PANEL[L][maxPriority] : "hidden", listAway.length > 0 && LIST_PANEL[L])), children: left.map((c) => {
|
|
737
928
|
const column = byId.get(c.id);
|
|
738
|
-
return /* @__PURE__ */ jsxs2("div", { className: cn(IN_DETAIL[L][priorityOf(column)], "grid-cols-[minmax(5rem,8rem)_minmax(0,1fr)] items-baseline gap-3"), children: [
|
|
929
|
+
return /* @__PURE__ */ jsxs2("div", { className: cn(listAway.includes(column) ? LIST_IN_DETAIL[L] : IN_DETAIL[L][priorityOf(column)], "grid-cols-[minmax(5rem,8rem)_minmax(0,1fr)] items-baseline gap-3"), children: [
|
|
739
930
|
/* @__PURE__ */ jsx2("dt", { className: "text-xs font-semibold text-fg-secondary", children: column.header }),
|
|
740
931
|
/* @__PURE__ */ jsx2("dd", { className: "m-0 min-w-0 text-sm text-fg", children: contentOf(column, row.original) })
|
|
741
932
|
] }, c.id);
|
|
@@ -749,7 +940,7 @@ function DataTable({
|
|
|
749
940
|
body = Array.from({ length: loadingRows }, (_, i) => /* @__PURE__ */ jsxs2("tr", { role: "row", "aria-hidden": true, className: s2.tr(), children: [
|
|
750
941
|
selectable && /* @__PURE__ */ jsx2("td", { role: "cell", className: s2.td({ className: s2.select() }) }),
|
|
751
942
|
hasExpander && /* @__PURE__ */ jsx2("td", { role: "cell", className: s2.td({ className: s2.expander() }) }),
|
|
752
|
-
visibleColumns.map((column) => /* @__PURE__ */ jsx2("td", { role: "cell", "data-card": cardOf(byId.get(column.id)), className: s2.td(), children: /* @__PURE__ */ jsx2("div", { className: s2.skeleton() }) }, column.id))
|
|
943
|
+
visibleColumns.map((column) => /* @__PURE__ */ jsx2("td", { role: "cell", "data-card": list ? void 0 : cardOf(byId.get(column.id)), "data-list": list ? listPlace(null, byId.get(column.id)) : void 0, className: s2.td(), children: /* @__PURE__ */ jsx2("div", { className: s2.skeleton() }) }, column.id))
|
|
753
944
|
] }, `loading-${i}`));
|
|
754
945
|
} else if (error) body = message(error, true);
|
|
755
946
|
else if (pageRows.length === 0) body = message(empty2 ?? labels.empty);
|
|
@@ -867,7 +1058,7 @@ function DataTable({
|
|
|
867
1058
|
children: tableElement
|
|
868
1059
|
}
|
|
869
1060
|
)
|
|
870
|
-
) : /* @__PURE__ */ jsx2("div", { className: s2.scroller({ className: sideways ? scroll ? SHADOWS :
|
|
1061
|
+
) : /* @__PURE__ */ jsx2("div", { className: s2.scroller({ className: sideways ? scroll ? SHADOWS : CARD_CLIP[L] : "overflow-x-clip" }), children: tableElement }),
|
|
871
1062
|
pagination2 || footer ? /* @__PURE__ */ jsxs2("div", { className: s2.footer({ className: "flex flex-col gap-3" }), children: [
|
|
872
1063
|
pagination2,
|
|
873
1064
|
footer
|
|
@@ -911,6 +1102,9 @@ function ResizeHandle({
|
|
|
911
1102
|
);
|
|
912
1103
|
}
|
|
913
1104
|
|
|
1105
|
+
// src/data-table/toolbar.tsx
|
|
1106
|
+
import * as React3 from "react";
|
|
1107
|
+
|
|
914
1108
|
// src/field/field.tsx
|
|
915
1109
|
import { tv as tv3 } from "tailwind-variants";
|
|
916
1110
|
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
@@ -918,7 +1112,7 @@ var field2 = tv3({
|
|
|
918
1112
|
slots: {
|
|
919
1113
|
root: "flex flex-col gap-1.5",
|
|
920
1114
|
label: "text-xs font-semibold text-fg-secondary",
|
|
921
|
-
control: "flex h-11 w-full rounded-lg border border-border-
|
|
1115
|
+
control: "flex h-11 w-full rounded-lg border border-border-control bg-surface-2 px-3 text-sm text-fg placeholder:text-fg-muted transition-[border-color,box-shadow] focus-visible:border-accent focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-danger aria-invalid:ring-danger/30",
|
|
922
1116
|
hint: "text-xs text-fg-secondary",
|
|
923
1117
|
// The message reads in the danger text role (≥ 4.5:1 on every surface, both themes); the dot is the danger fill.
|
|
924
1118
|
error: "flex items-center gap-1.5 text-xs font-medium text-fg-danger before:h-1.5 before:w-1.5 before:shrink-0 before:rounded-full before:bg-danger",
|
|
@@ -979,17 +1173,12 @@ function DataTableFilters({ debounce = 250, children, className }) {
|
|
|
979
1173
|
filterable.map((column) => {
|
|
980
1174
|
if (column.filter === "text")
|
|
981
1175
|
return /* @__PURE__ */ jsx4(
|
|
982
|
-
|
|
1176
|
+
TextFilter,
|
|
983
1177
|
{
|
|
984
1178
|
label: labels.search(column.header),
|
|
985
|
-
|
|
986
|
-
value: typeof filters[column.id] === "string" ? void 0 : "",
|
|
987
|
-
defaultValue: typeof filters[column.id] === "string" ? filters[column.id] : void 0,
|
|
1179
|
+
value: typeof filters[column.id] === "string" ? filters[column.id] : "",
|
|
988
1180
|
debounce,
|
|
989
|
-
|
|
990
|
-
landmark: false,
|
|
991
|
-
size: "sm",
|
|
992
|
-
className: "min-w-48 flex-1"
|
|
1181
|
+
onCommit: (query) => set(column.id, query)
|
|
993
1182
|
},
|
|
994
1183
|
column.id
|
|
995
1184
|
);
|
|
@@ -1065,10 +1254,45 @@ function DataTableExport({ filename = "export.csv", onExport, className }) {
|
|
|
1065
1254
|
};
|
|
1066
1255
|
return /* @__PURE__ */ jsx4(Button, { variant: "outline", size: "sm", className, onClick: run, children: labels.export });
|
|
1067
1256
|
}
|
|
1257
|
+
function TextFilter({ label, value, debounce, onCommit }) {
|
|
1258
|
+
const [draft, setDraft] = React3.useState(value);
|
|
1259
|
+
const [seen, setSeen] = React3.useState(value);
|
|
1260
|
+
const [committed, setCommitted] = React3.useState(value);
|
|
1261
|
+
if (value !== seen) {
|
|
1262
|
+
setSeen(value);
|
|
1263
|
+
if (value !== committed) {
|
|
1264
|
+
setCommitted(value);
|
|
1265
|
+
setDraft(value);
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
return /* @__PURE__ */ jsx4(
|
|
1269
|
+
SearchField,
|
|
1270
|
+
{
|
|
1271
|
+
label,
|
|
1272
|
+
placeholder: label,
|
|
1273
|
+
value: draft,
|
|
1274
|
+
onValueChange: setDraft,
|
|
1275
|
+
debounce,
|
|
1276
|
+
onSearch: (query) => {
|
|
1277
|
+
setCommitted(query);
|
|
1278
|
+
onCommit(query);
|
|
1279
|
+
},
|
|
1280
|
+
landmark: false,
|
|
1281
|
+
size: "sm",
|
|
1282
|
+
className: "min-w-48 flex-1"
|
|
1283
|
+
}
|
|
1284
|
+
);
|
|
1285
|
+
}
|
|
1068
1286
|
|
|
1069
1287
|
export {
|
|
1070
1288
|
dataTableCsv,
|
|
1071
1289
|
compareValues,
|
|
1290
|
+
encodeSort,
|
|
1291
|
+
decodeSort,
|
|
1292
|
+
encodeFilter,
|
|
1293
|
+
decodeFilter,
|
|
1294
|
+
readTable,
|
|
1295
|
+
writeTable,
|
|
1072
1296
|
dataTable,
|
|
1073
1297
|
dataTableLabels,
|
|
1074
1298
|
useDataTable,
|
|
@@ -1077,4 +1301,4 @@ export {
|
|
|
1077
1301
|
DataTableColumnsMenu,
|
|
1078
1302
|
DataTableExport
|
|
1079
1303
|
};
|
|
1080
|
-
//# sourceMappingURL=chunk-
|
|
1304
|
+
//# sourceMappingURL=chunk-QWKCNSPF.js.map
|