@logicplanes/kaeso-ui 0.4.4 → 0.4.5
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/ai/component-guides.md +250 -98
- package/ai/component-registry.json +264 -236
- package/ai/component-registry.md +222 -218
- package/ai/icons.md +1 -1
- package/ai/tokens.md +18 -14
- package/dist/blocks/delete-resource.js +3 -3
- package/dist/blocks/delete-resource.js.map +1 -1
- package/dist/blocks/pages.js +47 -42
- package/dist/blocks/pages.js.map +1 -1
- package/dist/blocks/resource-list.js +68 -55
- package/dist/blocks/resource-list.js.map +1 -1
- package/dist/chunks/agent-avatar-DHieggHK.js +188 -0
- package/dist/chunks/agent-avatar-DHieggHK.js.map +1 -0
- package/dist/chunks/app-frame-DysOel2X.js +232 -0
- package/dist/chunks/app-frame-DysOel2X.js.map +1 -0
- package/dist/chunks/arrow-focus-B0KdRFX8.js +20 -0
- package/dist/chunks/arrow-focus-B0KdRFX8.js.map +1 -0
- package/dist/chunks/avatar-CYNMK7uY.js +110 -0
- package/dist/chunks/avatar-CYNMK7uY.js.map +1 -0
- package/dist/chunks/badge-C0GC3B9X.js +27 -0
- package/dist/chunks/badge-C0GC3B9X.js.map +1 -0
- package/dist/chunks/banner-B3DGLTBu.js +88 -0
- package/dist/chunks/banner-B3DGLTBu.js.map +1 -0
- package/dist/chunks/button-IblhXUyZ.js +202 -0
- package/dist/chunks/button-IblhXUyZ.js.map +1 -0
- package/dist/chunks/{calendar-BWaf2MXc.js → calendar-Dc6_dl0f.js} +4 -4
- package/dist/chunks/calendar-Dc6_dl0f.js.map +1 -0
- package/dist/chunks/checkbox-9tbimmF3.js +141 -0
- package/dist/chunks/checkbox-9tbimmF3.js.map +1 -0
- package/dist/chunks/{cn-Dj6sRgkF.js → cn-BjnOAUrA.js} +45 -4
- package/dist/chunks/cn-BjnOAUrA.js.map +1 -0
- package/dist/chunks/code-block-64e-Cy1S.js +346 -0
- package/dist/chunks/code-block-64e-Cy1S.js.map +1 -0
- package/dist/chunks/{code-block-DdNPHEzI.js → code-block-KIvuE8jg.js} +122 -114
- package/dist/chunks/code-block-KIvuE8jg.js.map +1 -0
- package/dist/chunks/{code-tqj0uhBL.js → code-xqjww4Pv.js} +5 -6
- package/dist/chunks/code-xqjww4Pv.js.map +1 -0
- package/dist/chunks/combobox-DkcjkWc6.js +352 -0
- package/dist/chunks/combobox-DkcjkWc6.js.map +1 -0
- package/dist/chunks/command-list-CypqsC4T.js +456 -0
- package/dist/chunks/command-list-CypqsC4T.js.map +1 -0
- package/dist/chunks/{copy-button-FJvPJn72.js → copy-button-CwU8t_9_.js} +22 -15
- package/dist/chunks/copy-button-CwU8t_9_.js.map +1 -0
- package/dist/chunks/core-CmK-8ObW.js +505 -0
- package/dist/chunks/core-CmK-8ObW.js.map +1 -0
- package/dist/chunks/data-table-CqY8_6IS.js +581 -0
- package/dist/chunks/data-table-CqY8_6IS.js.map +1 -0
- package/dist/chunks/date-popup-DAnjptFt.js +58 -0
- package/dist/chunks/date-popup-DAnjptFt.js.map +1 -0
- package/dist/chunks/{de-D_0mmG-k.js → de-CqC4aSIV.js} +74 -40
- package/dist/chunks/de-CqC4aSIV.js.map +1 -0
- package/dist/chunks/{dialog-Cg9A_6SF.js → dialog-2zb6ClNR.js} +156 -134
- package/dist/chunks/dialog-2zb6ClNR.js.map +1 -0
- package/dist/chunks/disclosure-BtYRTDO3.js +22 -0
- package/dist/chunks/disclosure-BtYRTDO3.js.map +1 -0
- package/dist/chunks/domain-obd_w9xk.js +28 -0
- package/dist/chunks/domain-obd_w9xk.js.map +1 -0
- package/dist/chunks/{empty-DvhyMXQq.js → empty-BpiUgGzm.js} +2 -2
- package/dist/chunks/{empty-DvhyMXQq.js.map → empty-BpiUgGzm.js.map} +1 -1
- package/dist/chunks/{field-TviMvYa2.js → field-D7m-yl-D.js} +37 -34
- package/dist/chunks/field-D7m-yl-D.js.map +1 -0
- package/dist/chunks/{icon-D7ja-_Yk.js → icon-CBzOwqrX.js} +7 -6
- package/dist/chunks/{icon-D7ja-_Yk.js.map → icon-CBzOwqrX.js.map} +1 -1
- package/dist/chunks/{icon-button-CrdF_eMG.js → icon-button-Dfwpvmav.js} +7 -6
- package/dist/chunks/icon-button-Dfwpvmav.js.map +1 -0
- package/dist/chunks/{identity-BmhQ6BQ-.js → identity-3Foi5F8w.js} +7 -7
- package/dist/chunks/{identity-BmhQ6BQ-.js.map → identity-3Foi5F8w.js.map} +1 -1
- package/dist/chunks/{input-2VJuj_M4.js → input-Bo5-UZg2.js} +15 -9
- package/dist/chunks/input-Bo5-UZg2.js.map +1 -0
- package/dist/chunks/{input-group-DQ_4DoXg.js → input-group-jPcK9T_a.js} +42 -29
- package/dist/chunks/input-group-jPcK9T_a.js.map +1 -0
- package/dist/chunks/iso-field-DoqHBg8n.js +52 -0
- package/dist/chunks/iso-field-DoqHBg8n.js.map +1 -0
- package/dist/chunks/json-view-DZ2nL2Ir.js +253 -0
- package/dist/chunks/json-view-DZ2nL2Ir.js.map +1 -0
- package/dist/chunks/{kbd-BF1vKXJf.js → kbd-8A0ML_up.js} +30 -28
- package/dist/chunks/kbd-8A0ML_up.js.map +1 -0
- package/dist/chunks/label-DW24Aj0Z.js +26 -0
- package/dist/chunks/label-DW24Aj0Z.js.map +1 -0
- package/dist/chunks/{link-KWI7PevW.js → link-CMjkcLQK.js} +14 -14
- package/dist/chunks/link-CMjkcLQK.js.map +1 -0
- package/dist/chunks/list-B4G-sWwV.js +540 -0
- package/dist/chunks/list-B4G-sWwV.js.map +1 -0
- package/dist/chunks/{loader-DCfPndXa.js → loader-zo8CCIGJ.js} +2 -2
- package/dist/chunks/{loader-DCfPndXa.js.map → loader-zo8CCIGJ.js.map} +1 -1
- package/dist/chunks/markdown-C565aBR7.js +338 -0
- package/dist/chunks/markdown-C565aBR7.js.map +1 -0
- package/dist/chunks/menu-Clvv6ftq.js +485 -0
- package/dist/chunks/menu-Clvv6ftq.js.map +1 -0
- package/dist/chunks/merge-refs-BN1FyQt9.js +20 -0
- package/dist/chunks/merge-refs-BN1FyQt9.js.map +1 -0
- package/dist/chunks/meter-CASMHlxl.js +100 -0
- package/dist/chunks/meter-CASMHlxl.js.map +1 -0
- package/dist/chunks/nav-sheet-Dt6JSvzX.js +67 -0
- package/dist/chunks/nav-sheet-Dt6JSvzX.js.map +1 -0
- package/dist/chunks/{nav-wordmark-_pjheAsZ.js → nav-wordmark-J4pB_vjr.js} +4 -8
- package/dist/chunks/nav-wordmark-J4pB_vjr.js.map +1 -0
- package/dist/chunks/page-header-kS5tdmvb.js +45 -0
- package/dist/chunks/page-header-kS5tdmvb.js.map +1 -0
- package/dist/chunks/pagination-D7fAm8qg.js +147 -0
- package/dist/chunks/pagination-D7fAm8qg.js.map +1 -0
- package/dist/chunks/picker-popover-1FHb1LQG.js +119 -0
- package/dist/chunks/picker-popover-1FHb1LQG.js.map +1 -0
- package/dist/chunks/popover-Bl5QYqnh.js +51 -0
- package/dist/chunks/popover-Bl5QYqnh.js.map +1 -0
- package/dist/chunks/{portal-context-BBbzDKmY.js → portal-context-CTatR2Z8.js} +14 -4
- package/dist/chunks/portal-context-CTatR2Z8.js.map +1 -0
- package/dist/chunks/{radio-CDDFpdtL.js → radio-C6GtzF_t.js} +38 -23
- package/dist/chunks/radio-C6GtzF_t.js.map +1 -0
- package/dist/chunks/range-popup-lGiZsG3s.js +160 -0
- package/dist/chunks/range-popup-lGiZsG3s.js.map +1 -0
- package/dist/chunks/reasoning-frame-C3HdQRRS.js +51 -0
- package/dist/chunks/reasoning-frame-C3HdQRRS.js.map +1 -0
- package/dist/chunks/release-art-ChiT4T2S.js +582 -0
- package/dist/chunks/release-art-ChiT4T2S.js.map +1 -0
- package/dist/chunks/rights-B68ocZuq.js +312 -0
- package/dist/chunks/rights-B68ocZuq.js.map +1 -0
- package/dist/chunks/{scroll-area-D8MD7Vpo.js → scroll-area-_Ljh4-bG.js} +11 -6
- package/dist/chunks/scroll-area-_Ljh4-bG.js.map +1 -0
- package/dist/chunks/section-CFBYhsUi.js +77 -0
- package/dist/chunks/section-CFBYhsUi.js.map +1 -0
- package/dist/chunks/section-header-DU1Q4Tdf.js +28 -0
- package/dist/chunks/section-header-DU1Q4Tdf.js.map +1 -0
- package/dist/chunks/segmented-D9i1avik.js +119 -0
- package/dist/chunks/segmented-D9i1avik.js.map +1 -0
- package/dist/chunks/select-BqjmQOqx.js +222 -0
- package/dist/chunks/select-BqjmQOqx.js.map +1 -0
- package/dist/chunks/{separator-D7TzNHmX.js → separator-BNWf6BBj.js} +13 -8
- package/dist/chunks/separator-BNWf6BBj.js.map +1 -0
- package/dist/chunks/sidebar-Dq7oGOje.js +664 -0
- package/dist/chunks/sidebar-Dq7oGOje.js.map +1 -0
- package/dist/chunks/{sidebar-menu-BN3jkTlK.js → sidebar-menu-QSSNu1jJ.js} +2 -2
- package/dist/chunks/{sidebar-menu-BN3jkTlK.js.map → sidebar-menu-QSSNu1jJ.js.map} +1 -1
- package/dist/chunks/{skeleton-Dcz57Zyp.js → skeleton-D-qk3mes.js} +3 -3
- package/dist/chunks/skeleton-D-qk3mes.js.map +1 -0
- package/dist/chunks/slider-CcE8GtuV.js +58 -0
- package/dist/chunks/slider-CcE8GtuV.js.map +1 -0
- package/dist/chunks/{status-dot-QJTF0Yv4.js → status-dot-CP6runiC.js} +4 -4
- package/dist/chunks/{status-dot-QJTF0Yv4.js.map → status-dot-CP6runiC.js.map} +1 -1
- package/dist/chunks/{styles-CVJU9t9v.js → styles-hkFkoBbi.js} +2 -2
- package/dist/chunks/{styles-CVJU9t9v.js.map → styles-hkFkoBbi.js.map} +1 -1
- package/dist/chunks/{swap-text-Dr0Irxz6.js → swap-text-SlUjrTlG.js} +3 -3
- package/dist/chunks/swap-text-SlUjrTlG.js.map +1 -0
- package/dist/chunks/switch-ngywMQdl.js +76 -0
- package/dist/chunks/switch-ngywMQdl.js.map +1 -0
- package/dist/chunks/table-CTK5E0J7.js +102 -0
- package/dist/chunks/table-CTK5E0J7.js.map +1 -0
- package/dist/chunks/tag-BGr6lTSV.js +100 -0
- package/dist/chunks/tag-BGr6lTSV.js.map +1 -0
- package/dist/chunks/{text-CIXH8rmT.js → text-DkKdTVUf.js} +9 -9
- package/dist/chunks/text-DkKdTVUf.js.map +1 -0
- package/dist/chunks/{textarea--4FRL3Pb.js → textarea-CO0HP6fK.js} +47 -36
- package/dist/chunks/textarea-CO0HP6fK.js.map +1 -0
- package/dist/chunks/timeseries-Ck-q0wWn.js +381 -0
- package/dist/chunks/timeseries-Ck-q0wWn.js.map +1 -0
- package/dist/chunks/toolbar-u0Gm7Q7-.js +61 -0
- package/dist/chunks/toolbar-u0Gm7Q7-.js.map +1 -0
- package/dist/chunks/tooltip-Tkm-urbi.js +202 -0
- package/dist/chunks/tooltip-Tkm-urbi.js.map +1 -0
- package/dist/chunks/tooltip-root-BC_RNNiP.js +70 -0
- package/dist/chunks/tooltip-root-BC_RNNiP.js.map +1 -0
- package/dist/chunks/truncated-d1afmUJT.js +33 -0
- package/dist/chunks/truncated-d1afmUJT.js.map +1 -0
- package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js +28 -0
- package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js.map +1 -0
- package/dist/chunks/use-hydrating-COtYVRo4.js +8 -0
- package/dist/chunks/use-hydrating-COtYVRo4.js.map +1 -0
- package/dist/chunks/use-scroll-fade-uc8mWSDX.js +30 -0
- package/dist/chunks/use-scroll-fade-uc8mWSDX.js.map +1 -0
- package/dist/chunks/{zh-CN-Bm6UPIbW.js → zh-CN-BlpsT6d_.js} +73 -39
- package/dist/chunks/zh-CN-BlpsT6d_.js.map +1 -0
- package/dist/components/agent-avatar.js +1 -1
- package/dist/components/app-frame.js +2 -2
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +22 -22
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +235 -160
- package/dist/components/charts/bar.js.map +1 -1
- package/dist/components/charts/donut.js +144 -99
- package/dist/components/charts/donut.js.map +1 -1
- package/dist/components/charts/gauge.js +61 -49
- package/dist/components/charts/gauge.js.map +1 -1
- package/dist/components/charts/heatmap.js +179 -70
- package/dist/components/charts/heatmap.js.map +1 -1
- package/dist/components/charts/sankey.js +144 -77
- package/dist/components/charts/sankey.js.map +1 -1
- package/dist/components/charts/sparkline.js +54 -38
- package/dist/components/charts/sparkline.js.map +1 -1
- package/dist/components/charts/timeseries.js +1 -1
- package/dist/components/charts.js +2 -2
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-block.js +3 -3
- package/dist/components/code.js +1 -1
- package/dist/components/collapsible.js +77 -1
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-list.js +2 -2
- package/dist/components/command-palette.js +89 -66
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +1 -459
- package/dist/components/date-picker.js +162 -151
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +74 -63
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +76 -64
- package/dist/components/display-options.js.map +1 -1
- package/dist/components/empty.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/figure.js +2 -2
- package/dist/components/filter-chip.js +36 -27
- package/dist/components/filter-chip.js.map +1 -1
- package/dist/components/filter-row.js +4 -4
- package/dist/components/filter-row.js.map +1 -1
- package/dist/components/flow.js +94 -63
- package/dist/components/flow.js.map +1 -1
- package/dist/components/heading.js +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/input.js +176 -98
- package/dist/components/input.js.map +1 -1
- package/dist/components/kaeso/conversation.js +51 -46
- package/dist/components/kaeso/conversation.js.map +1 -1
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +23 -20
- package/dist/components/kaeso/moments.js.map +1 -1
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +90 -74
- package/dist/components/kaeso/usage.js.map +1 -1
- package/dist/components/kaeso.js +200 -187
- package/dist/components/kaeso.js.map +1 -1
- package/dist/components/kbd.js +1 -1
- package/dist/components/key-value.js +32 -47
- package/dist/components/key-value.js.map +1 -1
- package/dist/components/label.js +1 -25
- package/dist/components/layout.js +2 -2
- package/dist/components/layout.js.map +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/loader.js +11 -10
- package/dist/components/loader.js.map +1 -1
- package/dist/components/logo.js +2 -2
- package/dist/components/markdown.js +1 -1
- package/dist/components/menu.js +2 -2
- package/dist/components/meter.js +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +644 -529
- package/dist/components/playground.js.map +1 -1
- package/dist/components/popover.js +4 -4
- package/dist/components/popover.js.map +1 -1
- package/dist/components/portal.js +1 -1
- package/dist/components/qr-code.js +2 -2
- package/dist/components/qr-code.js.map +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/release-art.js +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/section.js +1 -1
- package/dist/components/segmented.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/settings.js +39 -46
- package/dist/components/settings.js.map +1 -1
- package/dist/components/sheet.js +10 -9
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/stat.js +98 -84
- package/dist/components/stat.js.map +1 -1
- package/dist/components/status-dot.js +1 -1
- package/dist/components/surface.js +1 -1
- package/dist/components/swap-text.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +73 -55
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-image.js +1 -1
- package/dist/components/theme-menu.js +5 -2
- package/dist/components/theme-menu.js.map +1 -1
- package/dist/components/theme-select.js +1 -1
- package/dist/components/thumbnail.js +35 -24
- package/dist/components/thumbnail.js.map +1 -1
- package/dist/components/timeline.js +51 -35
- package/dist/components/timeline.js.map +1 -1
- package/dist/components/toast.js +76 -66
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toc.js +14 -8
- package/dist/components/toc.js.map +1 -1
- package/dist/components/toolbar.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/visually-hidden.js +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +100 -100
- package/dist/kaeso.css +605 -67
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -2
- package/dist/types/components/agent-avatar/agent-avatar.d.ts +24 -19
- package/dist/types/components/badge/badge.d.ts +3 -3
- package/dist/types/components/banner/banner.d.ts +3 -3
- package/dist/types/components/button/button.d.ts +2 -2
- package/dist/types/components/button-group/button-group.d.ts +1 -1
- package/dist/types/components/charts/domain.d.ts +11 -0
- package/dist/types/components/charts/marks.d.ts +1 -0
- package/dist/types/components/code/code.d.ts +3 -3
- package/dist/types/components/code-block/json-view.d.ts +2 -1
- package/dist/types/components/code-block/numbers.d.ts +1 -0
- package/dist/types/components/collapsible/collapsible.d.ts +2 -2
- package/dist/types/components/collapsible/disclosure.d.ts +2 -0
- package/dist/types/components/data-table/data-table.d.ts +6 -5
- package/dist/types/components/data-table/docs.d.ts +1 -0
- package/dist/types/components/data-table/time-columns.d.ts +1 -0
- package/dist/types/components/date-picker/focus-day.d.ts +1 -0
- package/dist/types/components/date-picker/iso-field.d.ts +8 -1
- package/dist/types/components/dialog/dialog.d.ts +7 -7
- package/dist/types/components/field/field.d.ts +1 -1
- package/dist/types/components/flow/flow.d.ts +1 -1
- package/dist/types/components/icon-button/icon-button.d.ts +1 -1
- package/dist/types/components/input/input-group.d.ts +2 -0
- package/dist/types/components/input/number-input.d.ts +4 -4
- package/dist/types/components/input/otp-input.d.ts +3 -3
- package/dist/types/components/kaeso/client-button.d.ts +2 -1
- package/dist/types/components/kaeso/provider-picker.d.ts +1 -0
- package/dist/types/components/kaeso/rights.d.ts +1 -1
- package/dist/types/components/kaeso/role-picker.d.ts +1 -0
- package/dist/types/components/key-value/key-value.d.ts +2 -2
- package/dist/types/components/layout/layout.d.ts +2 -2
- package/dist/types/components/link/link.d.ts +4 -4
- package/dist/types/components/list/list.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +2 -1
- package/dist/types/components/menu/styles.d.ts +3 -3
- package/dist/types/components/meter/meter.d.ts +3 -3
- package/dist/types/components/page-header/page-header.d.ts +1 -1
- package/dist/types/components/pagination/pagination.d.ts +2 -2
- package/dist/types/components/playground/prompt-suggestions.d.ts +1 -0
- package/dist/types/components/playground/reasoning-frame.d.ts +14 -0
- package/dist/types/components/playground/reasoning.d.ts +1 -0
- package/dist/types/components/popover/popover.d.ts +1 -1
- package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
- package/dist/types/components/section/section-header.d.ts +6 -0
- package/dist/types/components/segmented/segmented.d.ts +1 -0
- package/dist/types/components/select/select.d.ts +1 -1
- package/dist/types/components/sheet/sheet.d.ts +3 -3
- package/dist/types/components/sidebar/sidebar.d.ts +1 -0
- package/dist/types/components/slider/slider.d.ts +2 -2
- package/dist/types/components/stat/stat.d.ts +1 -1
- package/dist/types/components/tabs/tabs.d.ts +6 -4
- package/dist/types/components/text/truncated.d.ts +7 -0
- package/dist/types/components/timeline/timeline.d.ts +5 -5
- package/dist/types/components/toc/toc.d.ts +1 -1
- package/dist/types/components/toolbar/toolbar.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.d.ts +2 -2
- package/dist/types/components/tooltip/trigger-props.d.ts +1 -0
- package/dist/types/hooks/use-coarse-pointer.d.ts +1 -0
- package/dist/types/hooks/use-hydrating.d.ts +1 -0
- package/dist/types/utils/arrow-focus.d.ts +4 -1
- package/dist/types/utils/cn.d.ts +33 -0
- package/dist/types/utils/portal-context.d.ts +7 -1
- package/dist/utils.js +2 -2
- package/foundations/accessibility.md +3 -2
- package/foundations/color.md +5 -1
- package/foundations/elevation.md +1 -0
- package/foundations/motion.md +1 -1
- package/foundations/shape.md +2 -2
- package/foundations/typography.md +12 -12
- package/package.json +2 -2
- package/dist/chunks/agent-avatar-0pdBTWkR.js +0 -171
- package/dist/chunks/agent-avatar-0pdBTWkR.js.map +0 -1
- package/dist/chunks/app-frame-DogGRmsu.js +0 -221
- package/dist/chunks/app-frame-DogGRmsu.js.map +0 -1
- package/dist/chunks/arrow-focus-BcySmwwU.js +0 -11
- package/dist/chunks/arrow-focus-BcySmwwU.js.map +0 -1
- package/dist/chunks/avatar-CWbdwbJv.js +0 -83
- package/dist/chunks/avatar-CWbdwbJv.js.map +0 -1
- package/dist/chunks/badge-C2KtxCLB.js +0 -26
- package/dist/chunks/badge-C2KtxCLB.js.map +0 -1
- package/dist/chunks/banner-BA2ALw9M.js +0 -85
- package/dist/chunks/banner-BA2ALw9M.js.map +0 -1
- package/dist/chunks/button-CzuxqawA.js +0 -164
- package/dist/chunks/button-CzuxqawA.js.map +0 -1
- package/dist/chunks/calendar-BWaf2MXc.js.map +0 -1
- package/dist/chunks/checkbox-CQjwCPkc.js +0 -126
- package/dist/chunks/checkbox-CQjwCPkc.js.map +0 -1
- package/dist/chunks/cn-Dj6sRgkF.js.map +0 -1
- package/dist/chunks/code-block-BZIe_B9l.js +0 -334
- package/dist/chunks/code-block-BZIe_B9l.js.map +0 -1
- package/dist/chunks/code-block-DdNPHEzI.js.map +0 -1
- package/dist/chunks/code-tqj0uhBL.js.map +0 -1
- package/dist/chunks/collapsible-CKrCX_T9.js +0 -87
- package/dist/chunks/collapsible-CKrCX_T9.js.map +0 -1
- package/dist/chunks/combobox-DjDI7SUC.js +0 -319
- package/dist/chunks/combobox-DjDI7SUC.js.map +0 -1
- package/dist/chunks/command-list-C2Y7V_lt.js +0 -418
- package/dist/chunks/command-list-C2Y7V_lt.js.map +0 -1
- package/dist/chunks/copy-button-FJvPJn72.js.map +0 -1
- package/dist/chunks/core-BYns5ytV.js +0 -472
- package/dist/chunks/core-BYns5ytV.js.map +0 -1
- package/dist/chunks/date-popup-CPA_zt6o.js +0 -35
- package/dist/chunks/date-popup-CPA_zt6o.js.map +0 -1
- package/dist/chunks/de-D_0mmG-k.js.map +0 -1
- package/dist/chunks/dialog-Cg9A_6SF.js.map +0 -1
- package/dist/chunks/field-TviMvYa2.js.map +0 -1
- package/dist/chunks/hidden-description-B2zSmLcn.js +0 -23
- package/dist/chunks/hidden-description-B2zSmLcn.js.map +0 -1
- package/dist/chunks/icon-button-CrdF_eMG.js.map +0 -1
- package/dist/chunks/input-2VJuj_M4.js.map +0 -1
- package/dist/chunks/input-group-DQ_4DoXg.js.map +0 -1
- package/dist/chunks/iso-field-B2rTwiBo.js +0 -33
- package/dist/chunks/iso-field-B2rTwiBo.js.map +0 -1
- package/dist/chunks/json-view-Dqd2TDkc.js +0 -175
- package/dist/chunks/json-view-Dqd2TDkc.js.map +0 -1
- package/dist/chunks/kbd-BF1vKXJf.js.map +0 -1
- package/dist/chunks/link-KWI7PevW.js.map +0 -1
- package/dist/chunks/list-M1csq-d4.js +0 -494
- package/dist/chunks/list-M1csq-d4.js.map +0 -1
- package/dist/chunks/markdown-BupwFOae.js +0 -313
- package/dist/chunks/markdown-BupwFOae.js.map +0 -1
- package/dist/chunks/menu-DEmBfdPm.js +0 -450
- package/dist/chunks/menu-DEmBfdPm.js.map +0 -1
- package/dist/chunks/meter-Bj4N3Xuh.js +0 -84
- package/dist/chunks/meter-Bj4N3Xuh.js.map +0 -1
- package/dist/chunks/nav-sheet-CzgIwgAm.js +0 -60
- package/dist/chunks/nav-sheet-CzgIwgAm.js.map +0 -1
- package/dist/chunks/nav-wordmark-_pjheAsZ.js.map +0 -1
- package/dist/chunks/page-header-DL2y2iZp.js +0 -41
- package/dist/chunks/page-header-DL2y2iZp.js.map +0 -1
- package/dist/chunks/pagination-Cn_qF4cg.js +0 -86
- package/dist/chunks/pagination-Cn_qF4cg.js.map +0 -1
- package/dist/chunks/picker-popover-BxyU1U9F.js +0 -106
- package/dist/chunks/picker-popover-BxyU1U9F.js.map +0 -1
- package/dist/chunks/popover-DNN4S47w.js +0 -50
- package/dist/chunks/popover-DNN4S47w.js.map +0 -1
- package/dist/chunks/portal-context-BBbzDKmY.js.map +0 -1
- package/dist/chunks/radio-CDDFpdtL.js.map +0 -1
- package/dist/chunks/range-popup-CRyWYUB1.js +0 -128
- package/dist/chunks/range-popup-CRyWYUB1.js.map +0 -1
- package/dist/chunks/release-art-ZwfFQImt.js +0 -561
- package/dist/chunks/release-art-ZwfFQImt.js.map +0 -1
- package/dist/chunks/rights-Cyp0Pzp-.js +0 -279
- package/dist/chunks/rights-Cyp0Pzp-.js.map +0 -1
- package/dist/chunks/scroll-area-D8MD7Vpo.js.map +0 -1
- package/dist/chunks/scroll-parent-WXvzQcUo.js +0 -14
- package/dist/chunks/scroll-parent-WXvzQcUo.js.map +0 -1
- package/dist/chunks/section-Ce1efbsP.js +0 -87
- package/dist/chunks/section-Ce1efbsP.js.map +0 -1
- package/dist/chunks/segmented-CErcoxwi.js +0 -114
- package/dist/chunks/segmented-CErcoxwi.js.map +0 -1
- package/dist/chunks/select-x4XVsdCI.js +0 -210
- package/dist/chunks/select-x4XVsdCI.js.map +0 -1
- package/dist/chunks/separator-D7TzNHmX.js.map +0 -1
- package/dist/chunks/sidebar-3r1ZRXlN.js +0 -621
- package/dist/chunks/sidebar-3r1ZRXlN.js.map +0 -1
- package/dist/chunks/skeleton-Dcz57Zyp.js.map +0 -1
- package/dist/chunks/slider-Ci83PGtj.js +0 -57
- package/dist/chunks/slider-Ci83PGtj.js.map +0 -1
- package/dist/chunks/swap-text-Dr0Irxz6.js.map +0 -1
- package/dist/chunks/switch-BNMq_kGt.js +0 -59
- package/dist/chunks/switch-BNMq_kGt.js.map +0 -1
- package/dist/chunks/table-BeOSKl_3.js +0 -84
- package/dist/chunks/table-BeOSKl_3.js.map +0 -1
- package/dist/chunks/tag-D_M1s2qS.js +0 -87
- package/dist/chunks/tag-D_M1s2qS.js.map +0 -1
- package/dist/chunks/text-CIXH8rmT.js.map +0 -1
- package/dist/chunks/textarea--4FRL3Pb.js.map +0 -1
- package/dist/chunks/timeseries-D1xjRXfk.js +0 -339
- package/dist/chunks/timeseries-D1xjRXfk.js.map +0 -1
- package/dist/chunks/toolbar-WA_oZgu-.js +0 -37
- package/dist/chunks/toolbar-WA_oZgu-.js.map +0 -1
- package/dist/chunks/tooltip-OcwO0VUT.js +0 -154
- package/dist/chunks/tooltip-OcwO0VUT.js.map +0 -1
- package/dist/chunks/tooltip-root-DzahJDVj.js +0 -60
- package/dist/chunks/tooltip-root-DzahJDVj.js.map +0 -1
- package/dist/chunks/zh-CN-Bm6UPIbW.js.map +0 -1
- package/dist/components/data-table.js.map +0 -1
- package/dist/components/label.js.map +0 -1
|
@@ -1,50 +1,60 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "../chunks/cn-
|
|
2
|
+
import { t as e } from "../chunks/cn-BjnOAUrA.js";
|
|
3
3
|
import { t } from "../chunks/dev-CR1p7gCm.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as a } from "../chunks/icon-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { r as c } from "../chunks/
|
|
10
|
-
import { r as l } from "../chunks/
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
4
|
+
import { r as n } from "../chunks/inset-BUzyXLK4.js";
|
|
5
|
+
import { i as r, r as i } from "../chunks/context-BELWW79w.js";
|
|
6
|
+
import { t as a } from "../chunks/icon-CBzOwqrX.js";
|
|
7
|
+
import { t as o } from "../chunks/icon-button-Dfwpvmav.js";
|
|
8
|
+
import { a as s } from "../chunks/tag-BGr6lTSV.js";
|
|
9
|
+
import { r as c } from "../chunks/switch-ngywMQdl.js";
|
|
10
|
+
import { r as l } from "../chunks/segmented-D9i1avik.js";
|
|
11
|
+
import { r as u } from "../chunks/select-BqjmQOqx.js";
|
|
12
|
+
import { i as d } from "../chunks/popover-Bl5QYqnh.js";
|
|
13
|
+
import { forwardRef as f } from "react";
|
|
14
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
15
|
+
import { SlidersHorizontalIcon as h, ViewOffSlashIcon as g } from "@hugeicons/core-free-icons";
|
|
15
16
|
//#region src/components/display-options/display-options.tsx
|
|
16
|
-
var
|
|
17
|
+
var _ = { trigger: {
|
|
17
18
|
secondary: { classes: "" },
|
|
18
19
|
ghost: { classes: "" }
|
|
19
|
-
} },
|
|
20
|
-
function
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
} }, v = { trigger: "secondary" };
|
|
21
|
+
function y(e) {
|
|
22
|
+
if (!e) return;
|
|
23
|
+
let t = requestAnimationFrame(() => e.querySelector("[role=\"radio\"][tabindex=\"0\"], button:not([disabled]), [tabindex=\"0\"]")?.focus({ preventScroll: !0 }));
|
|
24
|
+
return () => cancelAnimationFrame(t);
|
|
25
|
+
}
|
|
26
|
+
function b({ view: e, rows: t, toggles: o, properties: d, footer: f, inline: h }) {
|
|
27
|
+
let _ = r(), v = i(), b = d ? d.options.filter((e) => d.value.includes(e.value) && d.hidden?.includes(e.value)) : [];
|
|
28
|
+
return /* @__PURE__ */ p(n, { children: /* @__PURE__ */ m("div", {
|
|
29
|
+
ref: h ? void 0 : y,
|
|
30
|
+
className: "flex w-320 max-w-(--available-width) flex-col",
|
|
24
31
|
children: [
|
|
25
|
-
e && /* @__PURE__ */
|
|
32
|
+
e && /* @__PURE__ */ p("div", {
|
|
26
33
|
className: "p-12 pb-8",
|
|
27
|
-
children: /* @__PURE__ */
|
|
28
|
-
"aria-label":
|
|
34
|
+
children: /* @__PURE__ */ p(l, {
|
|
35
|
+
"aria-label": _("displayOptions.view", "View"),
|
|
29
36
|
options: e.options,
|
|
30
37
|
value: e.value,
|
|
31
38
|
onValueChange: e.onChange,
|
|
32
39
|
fullWidth: !0,
|
|
33
|
-
size: "sm"
|
|
34
|
-
className: "bg-item-hover"
|
|
40
|
+
size: "sm"
|
|
35
41
|
})
|
|
36
42
|
}),
|
|
37
|
-
t && t.length > 0 && /* @__PURE__ */
|
|
43
|
+
t && t.length > 0 && /* @__PURE__ */ p("div", {
|
|
38
44
|
className: "flex flex-col px-12 py-4",
|
|
39
|
-
children: t.map((e) => /* @__PURE__ */
|
|
45
|
+
children: t.map((e) => /* @__PURE__ */ m("div", {
|
|
40
46
|
className: "flex h-40 items-center justify-between gap-12",
|
|
41
|
-
children: [/* @__PURE__ */
|
|
42
|
-
className: "flex items-center gap-8 text-body text-fg
|
|
43
|
-
children: [e.icon && /* @__PURE__ */
|
|
47
|
+
children: [/* @__PURE__ */ m("span", {
|
|
48
|
+
className: "flex min-w-0 items-center gap-8 text-body text-fg",
|
|
49
|
+
children: [e.icon && /* @__PURE__ */ p(a, {
|
|
44
50
|
icon: e.icon,
|
|
45
|
-
size: "sm"
|
|
46
|
-
|
|
47
|
-
|
|
51
|
+
size: "sm",
|
|
52
|
+
className: "shrink-0 text-fg-secondary"
|
|
53
|
+
}), /* @__PURE__ */ p("span", {
|
|
54
|
+
className: "min-w-0 truncate",
|
|
55
|
+
children: e.label
|
|
56
|
+
})]
|
|
57
|
+
}), /* @__PURE__ */ p(u, {
|
|
48
58
|
size: "sm",
|
|
49
59
|
appearance: "default",
|
|
50
60
|
"aria-label": e.label,
|
|
@@ -54,76 +64,78 @@ function v({ view: e, rows: t, toggles: a, properties: u, footer: d }) {
|
|
|
54
64
|
})]
|
|
55
65
|
}, e.label))
|
|
56
66
|
}),
|
|
57
|
-
|
|
58
|
-
className: "flex flex-col px-12 py-4 hairline-t",
|
|
59
|
-
children:
|
|
60
|
-
size: "sm",
|
|
67
|
+
o && o.length > 0 && /* @__PURE__ */ p("div", {
|
|
68
|
+
className: "flex flex-col px-12 py-4 not-first:hairline-t",
|
|
69
|
+
children: o.map((e) => /* @__PURE__ */ p(c, {
|
|
61
70
|
label: e.label,
|
|
62
71
|
checked: e.checked,
|
|
63
72
|
onCheckedChange: e.onChange,
|
|
64
73
|
className: "h-40"
|
|
65
74
|
}, e.label))
|
|
66
75
|
}),
|
|
67
|
-
|
|
68
|
-
className: "flex flex-col gap-8 p-12 hairline-t",
|
|
76
|
+
d && /* @__PURE__ */ m("div", {
|
|
77
|
+
className: "flex flex-col gap-8 p-12 not-first:hairline-t",
|
|
69
78
|
children: [
|
|
70
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ p("span", {
|
|
71
80
|
className: "text-caption font-medium text-fg-secondary",
|
|
72
|
-
children:
|
|
81
|
+
children: _("displayOptions.properties", "Display properties")
|
|
73
82
|
}),
|
|
74
|
-
/* @__PURE__ */
|
|
83
|
+
/* @__PURE__ */ p("div", {
|
|
75
84
|
className: "flex flex-wrap gap-6",
|
|
76
|
-
children:
|
|
77
|
-
let t =
|
|
78
|
-
return /* @__PURE__ */
|
|
85
|
+
children: d.options.map((e) => {
|
|
86
|
+
let t = d.value.includes(e.value), n = t && b.includes(e);
|
|
87
|
+
return /* @__PURE__ */ p(s, {
|
|
79
88
|
size: "sm",
|
|
80
89
|
variant: t ? "soft" : "outline",
|
|
81
90
|
pressed: t,
|
|
82
91
|
...n ? {
|
|
83
|
-
icon:
|
|
84
|
-
"aria-description":
|
|
92
|
+
icon: g,
|
|
93
|
+
"aria-description": _("displayOptions.doesNotFit", "Doesn't fit at this width")
|
|
85
94
|
} : {},
|
|
86
|
-
onClick: () =>
|
|
95
|
+
onClick: () => d.onChange(t ? d.value.filter((t) => t !== e.value) : [...d.value, e.value]),
|
|
87
96
|
children: e.label
|
|
88
97
|
}, e.value);
|
|
89
98
|
})
|
|
90
99
|
}),
|
|
91
|
-
|
|
100
|
+
b.length > 0 && /* @__PURE__ */ p("span", {
|
|
92
101
|
className: "text-caption text-fg-tertiary",
|
|
93
|
-
children:
|
|
94
|
-
count:
|
|
95
|
-
properties: new Intl.ListFormat(
|
|
102
|
+
children: _("displayOptions.hiddenProperties", "{count, plural, one {{properties} doesn't fit at this width.} other {{properties} don't fit at this width.}}", {
|
|
103
|
+
count: b.length,
|
|
104
|
+
properties: new Intl.ListFormat(v, { type: "conjunction" }).format(b.map((e) => e.label))
|
|
96
105
|
})
|
|
97
106
|
})
|
|
98
107
|
]
|
|
99
108
|
}),
|
|
100
|
-
|
|
109
|
+
f && /* @__PURE__ */ p("div", {
|
|
101
110
|
className: "p-12 hairline-t",
|
|
102
|
-
children:
|
|
111
|
+
children: f
|
|
103
112
|
})
|
|
104
113
|
]
|
|
105
|
-
});
|
|
114
|
+
}) });
|
|
106
115
|
}
|
|
107
|
-
var
|
|
108
|
-
let c =
|
|
109
|
-
return !
|
|
116
|
+
var x = /* @__PURE__ */ f(function({ trigger: n = "secondary", inline: i, ...a }, s) {
|
|
117
|
+
let c = r();
|
|
118
|
+
return !a.view && !a.rows?.length && !a.toggles?.length && !a.properties && t("DisplayOptions: pass view, rows, toggles or properties; an empty panel is never useful."), i ? /* @__PURE__ */ p("div", {
|
|
110
119
|
ref: s,
|
|
111
120
|
className: e("rounded-popover bg-raised shadow-raised"),
|
|
112
|
-
children: /* @__PURE__ */
|
|
113
|
-
|
|
121
|
+
children: /* @__PURE__ */ p(b, {
|
|
122
|
+
...a,
|
|
123
|
+
inline: !0
|
|
124
|
+
})
|
|
125
|
+
}) : /* @__PURE__ */ m(d, { children: [/* @__PURE__ */ p(d.Trigger, { children: /* @__PURE__ */ p(o, {
|
|
114
126
|
ref: s,
|
|
115
|
-
icon:
|
|
127
|
+
icon: h,
|
|
116
128
|
"aria-label": c("displayOptions.displayOptions", "Display options"),
|
|
117
|
-
variant:
|
|
118
|
-
}) }), /* @__PURE__ */
|
|
129
|
+
variant: n
|
|
130
|
+
}) }), /* @__PURE__ */ p(d.Content, {
|
|
119
131
|
padding: "none",
|
|
120
132
|
align: "end",
|
|
121
133
|
"aria-label": c("displayOptions.displayOptions", "Display options"),
|
|
122
|
-
children: /* @__PURE__ */
|
|
134
|
+
children: /* @__PURE__ */ p(b, { ...a })
|
|
123
135
|
})] });
|
|
124
136
|
});
|
|
125
|
-
process.env.NODE_ENV !== "production" && (
|
|
137
|
+
process.env.NODE_ENV !== "production" && (x.displayName = "DisplayOptions");
|
|
126
138
|
//#endregion
|
|
127
|
-
export {
|
|
139
|
+
export { x as DisplayOptions, v as KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS, _ as KAESO_DISPLAY_OPTIONS_VARIANTS };
|
|
128
140
|
|
|
129
141
|
//# sourceMappingURL=display-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-options.js","names":["__icon_ViewOffSlashIcon","__icon_SlidersHorizontalIcon","cn","useUiText","Icon","IconButton","Tag","Switch","Segmented","Select","Popover","KAESO_DISPLAY_OPTIONS_VARIANTS","KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS","Panel","t","locale","useLocale","squeezed","properties","o","view","rows","r","toggles","toggle","on","out","ViewOffSlashIcon","v","footer","DisplayOptions","props","devWarn","inline","SlidersHorizontalIcon","trigger"],"sources":["../../src/components/display-options/display-options.tsx"],"sourcesContent":["import { forwardRef, type Ref, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { devWarn } from \"../../utils/dev.js\";\nimport { ViewOffSlashIcon as __icon_ViewOffSlashIcon, SlidersHorizontalIcon as __icon_SlidersHorizontalIcon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Popover } from \"../popover/popover.js\";\nimport { Segmented, type SegmentedOption } from \"../segmented/segmented.js\";\nimport { Select, type SelectOption } from \"../select/select.js\";\nimport { Switch } from \"../switch/switch.js\";\nimport { Tag } from \"../tag/tag.js\";\nimport type { IconData } from \"../icon/icon.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_DISPLAY_OPTIONS_VARIANTS = {\n trigger: {\n secondary: { classes: \"\" },\n ghost: { classes: \"\" },\n },\n} as const;\nexport const KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS = { trigger: \"secondary\" } as const;\n\nexport interface DisplayOptionsRow {\n label: string;\n icon?: IconData | undefined;\n value: string;\n options: SelectOption[];\n onChange: (value: string) => void;\n}\nexport interface DisplayOptionsToggle {\n label: string;\n checked: boolean;\n onChange: (checked: boolean) => void;\n}\n\nexport interface DisplayOptionsProps {\n view?: { value: string; options: SegmentedOption[]; onChange: (v: string) => void } | undefined;\n rows?: DisplayOptionsRow[] | undefined;\n toggles?: DisplayOptionsToggle[] | undefined;\n properties?: { options: { value: string; label: string }[]; value: string[]; onChange: (v: string[]) => void; hidden?: string[] | undefined } | undefined;\n trigger?: keyof typeof KAESO_DISPLAY_OPTIONS_VARIANTS.trigger | undefined;\n inline?: boolean | undefined;\n footer?: ReactNode | undefined;\n}\n\nfunction Panel({ view, rows, toggles, properties, footer }: DisplayOptionsProps) {\n const t = useUiText();\n const locale = useLocale();\n const squeezed = properties ? properties.options.filter((o) => properties.value.includes(o.value) && properties.hidden?.includes(o.value)) : [];\n return (\n <div className=\"flex w-320 flex-col\">\n {view && (\n <div className=\"p-12 pb-8\">\n <Segmented\n aria-label={t(\"displayOptions.view\", \"View\")}\n options={view.options}\n value={view.value}\n onValueChange={view.onChange}\n fullWidth\n size=\"sm\"\n className=\"bg-item-hover\"\n />\n </div>\n )}\n {rows && rows.length > 0 && (\n <div className=\"flex flex-col px-12 py-4\">\n {rows.map((r) => (\n <div key={r.label} className=\"flex h-40 items-center justify-between gap-12\">\n <span className=\"flex items-center gap-8 text-body text-fg-secondary\">\n {r.icon && <Icon icon={r.icon} size=\"sm\" />}\n {r.label}\n </span>\n <Select size=\"sm\" appearance=\"default\" aria-label={r.label} options={r.options} value={r.value} onValueChange={r.onChange} />\n </div>\n ))}\n </div>\n )}\n {toggles && toggles.length > 0 && (\n <div className=\"flex flex-col px-12 py-4 hairline-t\">\n {toggles.map((toggle) => (\n <Switch key={toggle.label} size=\"sm\" label={toggle.label} checked={toggle.checked} onCheckedChange={toggle.onChange} className=\"h-40\" />\n ))}\n </div>\n )}\n {properties && (\n <div className=\"flex flex-col gap-8 p-12 hairline-t\">\n <span className=\"text-caption font-medium text-fg-secondary\">{t(\"displayOptions.properties\", \"Display properties\")}</span>\n <div className=\"flex flex-wrap gap-6\">\n {properties.options.map((o) => {\n const on = properties.value.includes(o.value);\n const out = on && squeezed.includes(o);\n return (\n <Tag\n key={o.value}\n size=\"sm\"\n variant={on ? \"soft\" : \"outline\"}\n pressed={on}\n {...(out ? { icon: __icon_ViewOffSlashIcon, \"aria-description\": t(\"displayOptions.doesNotFit\", \"Doesn't fit at this width\") } : {})}\n onClick={() => properties.onChange(on ? properties.value.filter((v) => v !== o.value) : [...properties.value, o.value])}\n >\n {o.label}\n </Tag>\n );\n })}\n </div>\n {squeezed.length > 0 && (\n <span className=\"text-caption text-fg-tertiary\">\n {t(\n \"displayOptions.hiddenProperties\",\n \"{count, plural, one {{properties} doesn't fit at this width.} other {{properties} don't fit at this width.}}\",\n {\n count: squeezed.length,\n properties: new Intl.ListFormat(locale, { type: \"conjunction\" }).format(squeezed.map((o) => o.label)),\n },\n )}\n </span>\n )}\n </div>\n )}\n {footer && <div className=\"p-12 hairline-t\">{footer}</div>}\n </div>\n );\n}\n\nexport const DisplayOptions = /* @__PURE__ */ forwardRef<HTMLElement, DisplayOptionsProps>(function DisplayOptions({ trigger = \"secondary\", inline, ...props }, ref) {\n const t = useUiText();\n if (!props.view && !props.rows?.length && !props.toggles?.length && !props.properties)\n devWarn(\"DisplayOptions: pass view, rows, toggles or properties; an empty panel is never useful.\");\n if (inline) {\n return (\n <div ref={ref as Ref<HTMLDivElement>} className={cn(\"rounded-popover bg-raised shadow-raised\")}>\n <Panel {...props} />\n </div>\n );\n }\n return (\n <Popover>\n <Popover.Trigger>\n <IconButton\n ref={ref as Ref<HTMLButtonElement>}\n icon={__icon_SlidersHorizontalIcon}\n aria-label={t(\"displayOptions.displayOptions\", \"Display options\")}\n variant={trigger}\n />\n </Popover.Trigger>\n <Popover.Content padding=\"none\" align=\"end\" aria-label={t(\"displayOptions.displayOptions\", \"Display options\")}>\n <Panel {...props} />\n </Popover.Content>\n </Popover>\n );\n});\nif (process.env.NODE_ENV !== \"production\") DisplayOptions.displayName = \"DisplayOptions\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"display-options.js","names":["__icon_ViewOffSlashIcon","__icon_SlidersHorizontalIcon","cn","RaisedContent","useUiText","useLocale","Icon","IconButton","Tag","Switch","Segmented","Select","Popover","KAESO_DISPLAY_OPTIONS_VARIANTS","KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS","focusFirst","panel","frame","Panel","t","locale","squeezed","properties","o","inline","view","rows","r","toggles","toggle","on","out","ViewOffSlashIcon","v","footer","DisplayOptions","props","devWarn","SlidersHorizontalIcon","trigger"],"sources":["../../src/components/display-options/display-options.tsx"],"sourcesContent":["import { forwardRef, type Ref, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { devWarn } from \"../../utils/dev.js\";\nimport { ViewOffSlashIcon as __icon_ViewOffSlashIcon, SlidersHorizontalIcon as __icon_SlidersHorizontalIcon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Popover } from \"../popover/popover.js\";\nimport { Segmented, type SegmentedOption } from \"../segmented/segmented.js\";\nimport { Select, type SelectOption } from \"../select/select.js\";\nimport { Switch } from \"../switch/switch.js\";\nimport { Tag } from \"../tag/tag.js\";\nimport type { IconData } from \"../icon/icon.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\nimport { RaisedContent } from \"../../utils/inset.js\";\n\nexport const KAESO_DISPLAY_OPTIONS_VARIANTS = {\n trigger: {\n secondary: { classes: \"\" },\n ghost: { classes: \"\" },\n },\n} as const;\nexport const KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS = { trigger: \"secondary\" } as const;\n\nexport interface DisplayOptionsRow {\n label: string;\n icon?: IconData | undefined;\n value: string;\n options: SelectOption[];\n onChange: (value: string) => void;\n}\nexport interface DisplayOptionsToggle {\n label: string;\n checked: boolean;\n onChange: (checked: boolean) => void;\n}\n\nexport interface DisplayOptionsProps {\n view?: { value: string; options: SegmentedOption[]; onChange: (v: string) => void } | undefined;\n rows?: DisplayOptionsRow[] | undefined;\n toggles?: DisplayOptionsToggle[] | undefined;\n properties?: { options: { value: string; label: string }[]; value: string[]; onChange: (v: string[]) => void; hidden?: string[] | undefined } | undefined;\n trigger?: keyof typeof KAESO_DISPLAY_OPTIONS_VARIANTS.trigger | undefined;\n inline?: boolean | undefined;\n footer?: ReactNode | undefined;\n}\n\nfunction focusFirst(panel: HTMLDivElement | null) {\n if (!panel) return;\n // Base UI focuses the popup box when it opens; the first control takes focus on the next frame, after that.\n const frame = requestAnimationFrame(() =>\n panel.querySelector<HTMLElement>('[role=\"radio\"][tabindex=\"0\"], button:not([disabled]), [tabindex=\"0\"]')?.focus({ preventScroll: true }),\n );\n return () => cancelAnimationFrame(frame);\n}\n\nfunction Panel({ view, rows, toggles, properties, footer, inline }: DisplayOptionsProps) {\n const t = useUiText();\n const locale = useLocale();\n const squeezed = properties ? properties.options.filter((o) => properties.value.includes(o.value) && properties.hidden?.includes(o.value)) : [];\n return (\n <RaisedContent>\n <div ref={inline ? undefined : focusFirst} className=\"flex w-320 max-w-(--available-width) flex-col\">\n {view && (\n <div className=\"p-12 pb-8\">\n <Segmented\n aria-label={t(\"displayOptions.view\", \"View\")}\n options={view.options}\n value={view.value}\n onValueChange={view.onChange}\n fullWidth\n size=\"sm\"\n />\n </div>\n )}\n {rows && rows.length > 0 && (\n <div className=\"flex flex-col px-12 py-4\">\n {rows.map((r) => (\n <div key={r.label} className=\"flex h-40 items-center justify-between gap-12\">\n <span className=\"flex min-w-0 items-center gap-8 text-body text-fg\">\n {r.icon && <Icon icon={r.icon} size=\"sm\" className=\"shrink-0 text-fg-secondary\" />}\n <span className=\"min-w-0 truncate\">{r.label}</span>\n </span>\n <Select size=\"sm\" appearance=\"default\" aria-label={r.label} options={r.options} value={r.value} onValueChange={r.onChange} />\n </div>\n ))}\n </div>\n )}\n {toggles && toggles.length > 0 && (\n <div className=\"flex flex-col px-12 py-4 not-first:hairline-t\">\n {toggles.map((toggle) => (\n <Switch key={toggle.label} label={toggle.label} checked={toggle.checked} onCheckedChange={toggle.onChange} className=\"h-40\" />\n ))}\n </div>\n )}\n {properties && (\n <div className=\"flex flex-col gap-8 p-12 not-first:hairline-t\">\n <span className=\"text-caption font-medium text-fg-secondary\">{t(\"displayOptions.properties\", \"Display properties\")}</span>\n <div className=\"flex flex-wrap gap-6\">\n {properties.options.map((o) => {\n const on = properties.value.includes(o.value);\n const out = on && squeezed.includes(o);\n return (\n <Tag\n key={o.value}\n size=\"sm\"\n variant={on ? \"soft\" : \"outline\"}\n pressed={on}\n {...(out ? { icon: __icon_ViewOffSlashIcon, \"aria-description\": t(\"displayOptions.doesNotFit\", \"Doesn't fit at this width\") } : {})}\n onClick={() => properties.onChange(on ? properties.value.filter((v) => v !== o.value) : [...properties.value, o.value])}\n >\n {o.label}\n </Tag>\n );\n })}\n </div>\n {squeezed.length > 0 && (\n <span className=\"text-caption text-fg-tertiary\">\n {t(\n \"displayOptions.hiddenProperties\",\n \"{count, plural, one {{properties} doesn't fit at this width.} other {{properties} don't fit at this width.}}\",\n {\n count: squeezed.length,\n properties: new Intl.ListFormat(locale, { type: \"conjunction\" }).format(squeezed.map((o) => o.label)),\n },\n )}\n </span>\n )}\n </div>\n )}\n {footer && <div className=\"p-12 hairline-t\">{footer}</div>}\n </div>\n </RaisedContent>\n );\n}\n\nexport const DisplayOptions = /* @__PURE__ */ forwardRef<HTMLElement, DisplayOptionsProps>(function DisplayOptions({ trigger = \"secondary\", inline, ...props }, ref) {\n const t = useUiText();\n if (!props.view && !props.rows?.length && !props.toggles?.length && !props.properties)\n devWarn(\"DisplayOptions: pass view, rows, toggles or properties; an empty panel is never useful.\");\n if (inline) {\n return (\n <div ref={ref as Ref<HTMLDivElement>} className={cn(\"rounded-popover bg-raised shadow-raised\")}>\n <Panel {...props} inline />\n </div>\n );\n }\n return (\n <Popover>\n <Popover.Trigger>\n <IconButton\n ref={ref as Ref<HTMLButtonElement>}\n icon={__icon_SlidersHorizontalIcon}\n aria-label={t(\"displayOptions.displayOptions\", \"Display options\")}\n variant={trigger}\n />\n </Popover.Trigger>\n <Popover.Content padding=\"none\" align=\"end\" aria-label={t(\"displayOptions.displayOptions\", \"Display options\")}>\n <Panel {...props} />\n </Popover.Content>\n </Popover>\n );\n});\nif (process.env.NODE_ENV !== \"production\") DisplayOptions.displayName = \"DisplayOptions\";\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,IAAaa,IAAiC,EAC5C,SAAS;CACP,WAAW,EAAE,SAAS,GAAG;CACzB,OAAO,EAAE,SAAS,GAAG;AACvB,EACF,GACaC,IAAyC,EAAE,SAAS,YAAY;AAyB7E,SAASC,EAAW,GAA8B;CAChD,IAAI,CAACC,GAAO;CAEZ,IAAMC,IAAQ,4BACZD,EAAM,cAA2B,4EAAsE,CAAC,EAAE,MAAM,EAAE,eAAe,GAAK,CAAC,CACzI;CACA,aAAa,qBAAqBC,CAAK;AACzC;AAEA,SAASC,EAAM,EAAE,SAAM,SAAM,YAAS,eAAY,WAAQ,aAA+B;CACvF,IAAMC,IAAIf,EAAU,GACdgB,IAASf,EAAU,GACnBgB,IAAWC,IAAaA,EAAW,QAAQ,QAAQ,MAAMA,EAAW,MAAM,SAASC,EAAE,KAAK,KAAKD,EAAW,QAAQ,SAASC,EAAE,KAAK,CAAC,IAAI,CAAC;CAC9I,OACE,kBAACpB,GAAD,EAAA,UACE,kBAAC,OAAD;EAAK,KAAKqB,IAAS,KAAA,IAAYT;EAAY,WAAU;EAArD,UAAA;GACGU,KACC,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAACf,GAAD;KACE,cAAYS,EAAE,uBAAuB,MAAM;KAC3C,SAASM,EAAK;KACd,OAAOA,EAAK;KACZ,eAAeA,EAAK;KACpB,WAAA;KACA,MAAK;IACN,CAAA;GACE,CAAA;GAENC,KAAQA,EAAK,SAAS,KACrB,kBAAC,OAAD;IAAK,WAAU;IACZ,UAAAA,EAAK,KAAK,MACT,kBAAC,OAAD;KAAmB,WAAU;KAA7B,UAAA,CACE,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA,CACGC,EAAE,QAAQ,kBAACrB,GAAD;OAAM,MAAMqB,EAAE;OAAM,MAAK;OAAK,WAAU;MAA8B,CAAA,GACjF,kBAAC,QAAD;OAAM,WAAU;OAAoB,UAAAA,EAAE;MAAY,CAAA,CAC9C;KACN,CAAA,GAAA,kBAAChB,GAAD;MAAQ,MAAK;MAAK,YAAW;MAAU,cAAYgB,EAAE;MAAO,SAASA,EAAE;MAAS,OAAOA,EAAE;MAAO,eAAeA,EAAE;KAAW,CAAA,CACzH;IANK,GAAAA,EAAE,KAMP,CACN;GACE,CAAA;GAENC,KAAWA,EAAQ,SAAS,KAC3B,kBAAC,OAAD;IAAK,WAAU;IACZ,UAAAA,EAAQ,KAAK,MACZ,kBAACnB,GAAD;KAA2B,OAAOoB,EAAO;KAAO,SAASA,EAAO;KAAS,iBAAiBA,EAAO;KAAU,WAAU;IAAQ,GAAhHA,EAAO,KAAyG,CAC9H;GACE,CAAA;GAENP,KACC,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC,QAAD;MAAM,WAAU;MAA8C,UAAAH,EAAE,6BAA6B,oBAAoB;KAAQ,CAAA;KACzH,kBAAC,OAAD;MAAK,WAAU;MACZ,UAAAG,EAAW,QAAQ,KAAK,MAAM;OAC7B,IAAMQ,IAAKR,EAAW,MAAM,SAASC,EAAE,KAAK,GACtCQ,IAAMD,KAAMT,EAAS,SAASE,CAAC;OACrC,OACE,kBAACf,GAAD;QAEE,MAAK;QACL,SAASsB,IAAK,SAAS;QACvB,SAASA;QACT,GAAKC,IAAM;SAAE,MAAM/B;SAAyB,oBAAoBmB,EAAE,6BAA6B,2BAA2B;QAAE,IAAI,CAAC;QACjI,eAAeG,EAAW,SAASQ,IAAKR,EAAW,MAAM,QAAQ,MAAMW,MAAMV,EAAE,KAAK,IAAI,CAAC,GAAGD,EAAW,OAAOC,EAAE,KAAK,CAAC;QAErH,UAAAA,EAAE;OACA,GAREA,EAAE,KAQJ;MAET,CAAC;KACE,CAAA;KACJF,EAAS,SAAS,KACjB,kBAAC,QAAD;MAAM,WAAU;MACb,UAAAF,EACC,mCACA,gHACA;OACE,OAAOE,EAAS;OAChB,YAAY,IAAI,KAAK,WAAWD,GAAQ,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,OAAOC,EAAS,KAAK,MAAME,EAAE,KAAK,CAAC;MACtG,CACF;KACI,CAAA;IAEL;;GAENW,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAmB,UAAAA;GAAY,CAAA;EACtD;CACQ,CAAA,EAAA,CAAA;AAEnB;AAEA,IAAaC,IAAiC,kBAA6C,SAAwB,EAAE,aAAU,aAAa,WAAQ,GAAGC,KAAS,GAAK;CACnK,IAAMjB,IAAIf,EAAU;CAUpB,OATI,CAACgC,EAAM,QAAQ,CAACA,EAAM,MAAM,UAAU,CAACA,EAAM,SAAS,UAAU,CAACA,EAAM,cACzEC,EAAQ,yFAAyF,GAC/Fb,IAEA,kBAAC,OAAD;EAAU;EAA4B,WAAWtB,EAAG,yCAAyC;EAC3F,UAAA,kBAACgB,GAAD;GAAO,GAAIkB;GAAO,QAAA;EAAQ,CAAA;CACvB,CAAA,IAIP,kBAACxB,GAAD,EAAA,UAAA,CACE,kBAACA,EAAQ,SAAT,EAAA,UACE,kBAACL,GAAD;EACO;EACL,MAAMN;EACN,cAAYkB,EAAE,iCAAiC,iBAAiB;EAChE,SAASoB;CACV,CAAA,EACc,CAAA,GACjB,kBAAC3B,EAAQ,SAAT;EAAiB,SAAQ;EAAO,OAAM;EAAM,cAAYO,EAAE,iCAAiC,iBAAiB;EAC1G,UAAA,kBAACD,GAAD,EAAO,GAAIkB,EAAQ,CAAA;CACJ,CAAA,CACV,EAAA,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAe,cAAc"}
|
package/dist/components/empty.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as Empty, n as KAESO_EMPTY_DEFAULT_VARIANTS, r as KAESO_EMPTY_VARIANTS } from "../chunks/empty-
|
|
2
|
+
export { t as Empty, n as KAESO_EMPTY_DEFAULT_VARIANTS, r as KAESO_EMPTY_VARIANTS } from "../chunks/empty-BpiUgGzm.js";
|
package/dist/components/field.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as Field, n as Fieldset, r as KAESO_FIELD_DEFAULT_VARIANTS, i as KAESO_FIELD_VARIANTS, a as useField, o as useFieldControl, s as withField } from "../chunks/field-
|
|
2
|
+
export { t as Field, n as Fieldset, r as KAESO_FIELD_DEFAULT_VARIANTS, i as KAESO_FIELD_VARIANTS, a as useField, o as useFieldControl, s as withField } from "../chunks/field-D7m-yl-D.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "../chunks/cn-
|
|
2
|
+
import { t as e } from "../chunks/cn-BjnOAUrA.js";
|
|
3
3
|
import { t } from "../chunks/observe-resize-DhxhmoyB.js";
|
|
4
|
-
import { r as n } from "../chunks/scroll-area-
|
|
4
|
+
import { r as n } from "../chunks/scroll-area-_Ljh4-bG.js";
|
|
5
5
|
import { forwardRef as r, useLayoutEffect as i, useRef as a } from "react";
|
|
6
6
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/figure/figure.tsx
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "../chunks/cn-
|
|
2
|
+
import { t as e } from "../chunks/cn-BjnOAUrA.js";
|
|
3
3
|
import { i as t, r as n } from "../chunks/context-BELWW79w.js";
|
|
4
|
-
import { t as r } from "../chunks/icon-
|
|
5
|
-
import { c as i } from "../chunks/menu-
|
|
6
|
-
import { t as a } from "../chunks/command-list-
|
|
7
|
-
import { r as o } from "../chunks/picker-popover-
|
|
4
|
+
import { t as r } from "../chunks/icon-CBzOwqrX.js";
|
|
5
|
+
import { c as i } from "../chunks/menu-Clvv6ftq.js";
|
|
6
|
+
import { t as a } from "../chunks/command-list-CypqsC4T.js";
|
|
7
|
+
import { r as o } from "../chunks/picker-popover-1FHb1LQG.js";
|
|
8
8
|
import { forwardRef as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
|
|
9
9
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
10
10
|
import { Cancel01Icon as m } from "@hugeicons/core-free-icons";
|
|
11
11
|
//#region src/components/filter-chip/filter-chip.tsx
|
|
12
|
-
var h = { size: { sm: { classes: "h-32 text-body" } } }, g = { size: "sm" }, _ = 8,
|
|
13
|
-
function
|
|
12
|
+
var h = { size: { sm: { classes: "h-32 text-body" } } }, g = { size: "sm" }, _ = 8, ee = 50;
|
|
13
|
+
function v(e, t) {
|
|
14
14
|
if (!e.some((e) => e.group)) return e.map(t);
|
|
15
15
|
let n = [];
|
|
16
16
|
for (let t of e) {
|
|
@@ -25,7 +25,7 @@ function y(e, t) {
|
|
|
25
25
|
children: e.values.map(t)
|
|
26
26
|
}, `${e.group ?? ""}:${n}`));
|
|
27
27
|
}
|
|
28
|
-
function
|
|
28
|
+
function y(e) {
|
|
29
29
|
let t = /* @__PURE__ */ new Map();
|
|
30
30
|
for (let n of e) {
|
|
31
31
|
let e = n.group ?? "", i = t.get(e) ?? {
|
|
@@ -35,7 +35,7 @@ function b(e) {
|
|
|
35
35
|
};
|
|
36
36
|
i.items.push({
|
|
37
37
|
value: n.value,
|
|
38
|
-
label:
|
|
38
|
+
label: b(n),
|
|
39
39
|
keywords: [n.value],
|
|
40
40
|
...n.leading || n.icon ? { leading: n.leading ?? (n.icon ? /* @__PURE__ */ f(r, {
|
|
41
41
|
icon: n.icon,
|
|
@@ -50,14 +50,14 @@ function b(e) {
|
|
|
50
50
|
}
|
|
51
51
|
return [...t.values()];
|
|
52
52
|
}
|
|
53
|
-
var
|
|
53
|
+
var b = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "number" ? String(e.label) : e.value), x = "relative inline-flex h-full min-w-0 cursor-pointer items-center gap-6 px-10 font-medium whitespace-nowrap transition-control tap-target disabled:cursor-default hover:bg-raised-hover active:bg-raised-pressed open:bg-raised-pressed focus-ring-segment", S = "min-w-0 max-w-240 truncate", C = /* @__PURE__ */ s(function({ property: s, propertyIcon: g, operator: C, operators: w, onOperatorChange: T, value: E, values: D, groups: O, searchable: k, width: A, selected: j = [], multiple: M, onSelectedChange: N, onRemove: P, defaultValuesOpen: F, onValuesOpenChange: I, className: L, "data-force": R }, z) {
|
|
54
54
|
let B = t(), V = n(), H = O ? O.reduce((e, t) => e + t.items.length, 0) : D?.length ?? 0, [U, W] = d(!!F && H > 0), G = (e) => {
|
|
55
55
|
W(e), I?.(e);
|
|
56
|
-
}, [K, q] = d(""), J = u(null), Y = !!k || H > _, X = !!O || H >
|
|
56
|
+
}, [K, q] = d(""), J = u(null), Y = !!k || H > _, X = !!O || H > ee, Z = l(() => O ?? (X && D ? y(D) : []), [
|
|
57
57
|
O,
|
|
58
58
|
X,
|
|
59
59
|
D
|
|
60
|
-
]), Q = K.trim().toLowerCase(), $ = Y && Q ? (D ?? []).filter((e) =>
|
|
60
|
+
]), Q = K.trim().toLowerCase(), $ = Y && Q ? (D ?? []).filter((e) => b(e).toLowerCase().includes(Q) || e.value.toLowerCase().includes(Q)) : D ?? [];
|
|
61
61
|
return c(() => {
|
|
62
62
|
if (!U || !Y || X) return;
|
|
63
63
|
let e = setTimeout(() => J.current?.focus(), 0);
|
|
@@ -70,20 +70,18 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
|
|
|
70
70
|
ref: z,
|
|
71
71
|
role: "group",
|
|
72
72
|
"aria-label": typeof s == "string" ? B("filterChip.filterNamed", "Filter: {property}", { property: s }) : B("filterChip.filter", "Filter"),
|
|
73
|
-
|
|
74
|
-
className: e("group/fc inline-flex shrink-0 items-stretch overflow-hidden rounded-pill bg-raised text-fg ring-over", h.size.sm.classes, L),
|
|
73
|
+
className: e("group/fc inline-flex max-w-full shrink-0 items-stretch overflow-hidden rounded-pill bg-raised text-fg ring-over", h.size.sm.classes, L),
|
|
75
74
|
children: [
|
|
76
75
|
/* @__PURE__ */ p("span", {
|
|
77
|
-
className: e(
|
|
76
|
+
className: e(x, "shrink-0 cursor-default pl-12 text-fg-secondary hover:bg-transparent active:bg-transparent"),
|
|
78
77
|
children: [g && /* @__PURE__ */ f(r, {
|
|
79
78
|
icon: g,
|
|
80
79
|
size: "sm"
|
|
81
80
|
}), s]
|
|
82
81
|
}),
|
|
83
|
-
/* @__PURE__ */ p(i, { children: [/* @__PURE__ */ f(i.Trigger, { children: /* @__PURE__ */ f("button", {
|
|
82
|
+
w?.length ? /* @__PURE__ */ p(i, { children: [/* @__PURE__ */ f(i.Trigger, { children: /* @__PURE__ */ f("button", {
|
|
84
83
|
type: "button",
|
|
85
|
-
className: e(
|
|
86
|
-
disabled: !w?.length,
|
|
84
|
+
className: e(x, "shrink-0 text-fg-secondary divider-l"),
|
|
87
85
|
children: C
|
|
88
86
|
}) }), w && /* @__PURE__ */ f(i.Content, { children: /* @__PURE__ */ f(i.RadioGroup, {
|
|
89
87
|
value: C,
|
|
@@ -92,7 +90,10 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
|
|
|
92
90
|
value: e,
|
|
93
91
|
children: e
|
|
94
92
|
}, e))
|
|
95
|
-
}) })] }),
|
|
93
|
+
}) })] }) : /* @__PURE__ */ f("span", {
|
|
94
|
+
className: e(x, "shrink-0 cursor-default text-fg-secondary divider-l hover:bg-transparent active:bg-transparent"),
|
|
95
|
+
children: C
|
|
96
|
+
}),
|
|
96
97
|
X && (O || D) ? /* @__PURE__ */ f(o, {
|
|
97
98
|
title: typeof s == "string" ? s : B("filterChip.filter", "Filter"),
|
|
98
99
|
open: U,
|
|
@@ -100,8 +101,12 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
|
|
|
100
101
|
...A ? { width: A } : {},
|
|
101
102
|
trigger: /* @__PURE__ */ f("button", {
|
|
102
103
|
type: "button",
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
...R ? { "data-force": R } : {},
|
|
105
|
+
className: e(x, "divider-l", !P && "pr-12"),
|
|
106
|
+
children: /* @__PURE__ */ f("span", {
|
|
107
|
+
className: S,
|
|
108
|
+
children: E
|
|
109
|
+
})
|
|
105
110
|
}),
|
|
106
111
|
children: /* @__PURE__ */ f(a, {
|
|
107
112
|
groups: Z,
|
|
@@ -122,9 +127,13 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
|
|
|
122
127
|
},
|
|
123
128
|
children: [/* @__PURE__ */ f(i.Trigger, { children: /* @__PURE__ */ f("button", {
|
|
124
129
|
type: "button",
|
|
125
|
-
|
|
130
|
+
...R ? { "data-force": R } : {},
|
|
131
|
+
className: e(x, "divider-l", !P && "pr-12"),
|
|
126
132
|
disabled: H === 0,
|
|
127
|
-
children:
|
|
133
|
+
children: /* @__PURE__ */ f("span", {
|
|
134
|
+
className: S,
|
|
135
|
+
children: E
|
|
136
|
+
})
|
|
128
137
|
}) }), D && /* @__PURE__ */ f(i.Content, {
|
|
129
138
|
...Y ? { className: "w-280" } : {},
|
|
130
139
|
...Y ? {
|
|
@@ -149,7 +158,7 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
|
|
|
149
158
|
}),
|
|
150
159
|
...$.length === 0 ? { footer: B("filterChip.noMatches", "No values match") } : {}
|
|
151
160
|
} : {},
|
|
152
|
-
children: M ?
|
|
161
|
+
children: M ? v($, (e) => /* @__PURE__ */ f(i.CheckboxItem, {
|
|
153
162
|
checked: j.includes(e.value),
|
|
154
163
|
onCheckedChange: (t) => N?.(t ? [...j, e.value] : j.filter((t) => t !== e.value)),
|
|
155
164
|
...e.icon ? { icon: e.icon } : {},
|
|
@@ -160,7 +169,7 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
|
|
|
160
169
|
}, e.value)) : /* @__PURE__ */ f(i.RadioGroup, {
|
|
161
170
|
value: j[0] ?? "",
|
|
162
171
|
onValueChange: (e) => N?.([e]),
|
|
163
|
-
children:
|
|
172
|
+
children: v($, (e) => /* @__PURE__ */ f(i.RadioItem, {
|
|
164
173
|
value: e.value,
|
|
165
174
|
closeOnClick: !0,
|
|
166
175
|
...e.icon ? { icon: e.icon } : {},
|
|
@@ -173,12 +182,12 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
|
|
|
173
182
|
})]
|
|
174
183
|
}),
|
|
175
184
|
P && /* @__PURE__ */ f("span", {
|
|
176
|
-
className: "flex items-center pr-4 divider-l pl-4",
|
|
185
|
+
className: "flex shrink-0 items-center pr-4 divider-l pl-4",
|
|
177
186
|
children: /* @__PURE__ */ f("button", {
|
|
178
187
|
type: "button",
|
|
179
188
|
"aria-label": typeof s == "string" ? B("filterChip.removeNamed", "Remove the {property} filter", { property: s }) : B("filterChip.remove", "Remove filter"),
|
|
180
189
|
onClick: P,
|
|
181
|
-
className: "relative inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary transition-control hover:bg-
|
|
190
|
+
className: "relative inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary transition-control hover:bg-raised-hover hover:text-fg active:bg-raised-pressed focus-ring tap-target",
|
|
182
191
|
children: /* @__PURE__ */ f(r, {
|
|
183
192
|
icon: m,
|
|
184
193
|
size: "xs"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-chip.js","names":["__icon_Cancel01Icon","cn","useUiText","useLocale","Icon","Menu","CommandList","PickerPopover","KAESO_FILTER_CHIP_VARIANTS","KAESO_FILTER_CHIP_DEFAULT_VARIANTS","SEARCH_ABOVE","LIST_ABOVE","inRuns","values","v","item","runs","last","r","i","choiceGroups","groups","key","group","textOf","SEG","FilterChip","givenGroups","forceSearch","force","t","locale","choices","n","g","open","setOwnOpen","useState","defaultValuesOpen","setOpen","o","onValuesOpenChange","query","setQuery","search","useRef","searchable","long","useMemo","q","shown","useEffect","timer","property","className","propertyIcon","operators","operator","onOperatorChange","width","onRemove","value","selected","multiple","onSelectedChange","s","c","Cancel01Icon"],"sources":["../../src/components/filter-chip/filter-chip.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Menu } from \"../menu/menu.js\";\nimport { CommandList, type CommandListGroup } from \"../command-list/command-list.js\";\nimport { PickerPopover, type PickerPopoverProps } from \"../command-list/picker-popover.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FILTER_CHIP_VARIANTS = {\n size: {\n sm: { classes: \"h-32 text-body\" },\n },\n} as const;\nexport const KAESO_FILTER_CHIP_DEFAULT_VARIANTS = { size: \"sm\" } as const;\n\nexport interface FilterChipChoice {\n value: string;\n label: ReactNode;\n icon?: IconData | undefined;\n leading?: ReactNode | undefined;\n textValue?: string | undefined;\n group?: string | undefined;\n}\n\nconst SEARCH_ABOVE = 8;\nconst LIST_ABOVE = 50;\n\nfunction inRuns(values: FilterChipChoice[], item: (v: FilterChipChoice) => ReactNode): ReactNode {\n if (!values.some((v) => v.group)) return values.map(item);\n const runs: { group: string | undefined; values: FilterChipChoice[] }[] = [];\n for (const v of values) {\n const last = runs[runs.length - 1];\n if (last && last.group === v.group) last.values.push(v);\n else runs.push({ group: v.group, values: [v] });\n }\n return runs.map((r, i) => (\n <Menu.Group key={`${r.group ?? \"\"}:${i}`} label={r.group}>\n {r.values.map(item)}\n </Menu.Group>\n ));\n}\n\nfunction choiceGroups(values: FilterChipChoice[]): CommandListGroup[] {\n const groups = new Map<string, CommandListGroup>();\n for (const v of values) {\n const key = v.group ?? \"\";\n const group = groups.get(key) ?? { id: key || \"values\", ...(key ? { label: key } : {}), items: [] };\n group.items.push({\n value: v.value,\n label: textOf(v),\n keywords: [v.value],\n ...(v.leading || v.icon ? { leading: v.leading ?? (v.icon ? <Icon icon={v.icon} size=\"sm\" className=\"text-fg-secondary\" /> : undefined) } : {}),\n ...(typeof v.label === \"string\" ? {} : { render: () => <span className=\"min-w-0 flex-1 truncate\">{v.label}</span> }),\n });\n groups.set(key, group);\n }\n return [...groups.values()];\n}\n\nexport interface FilterChipProps {\n property: ReactNode;\n propertyIcon?: IconData | undefined;\n operator: string;\n operators?: string[] | undefined;\n onOperatorChange?: ((operator: string) => void) | undefined;\n value: ReactNode;\n values?: FilterChipChoice[] | undefined;\n groups?: CommandListGroup[] | undefined;\n searchable?: boolean | undefined;\n width?: PickerPopoverProps[\"width\"] | undefined;\n selected?: string[] | undefined;\n multiple?: boolean | undefined;\n onSelectedChange?: ((selected: string[]) => void) | undefined;\n onRemove?: (() => void) | undefined;\n defaultValuesOpen?: boolean | undefined;\n onValuesOpenChange?: ((open: boolean) => void) | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst textOf = (v: FilterChipChoice) => v.textValue ?? (typeof v.label === \"string\" || typeof v.label === \"number\" ? String(v.label) : v.value);\n\nconst SEG =\n \"relative inline-flex h-full cursor-pointer items-center gap-6 px-10 font-medium transition-control tap-target hover:bg-fill-1 active:bg-fill-2 open:bg-fill-1 focus-ring-segment\";\n\nexport const FilterChip = /* @__PURE__ */ forwardRef<HTMLDivElement, FilterChipProps>(function FilterChip(\n {\n property,\n propertyIcon,\n operator,\n operators,\n onOperatorChange,\n value,\n values,\n groups: givenGroups,\n searchable: forceSearch,\n width,\n selected = [],\n multiple,\n onSelectedChange,\n onRemove,\n defaultValuesOpen,\n onValuesOpenChange,\n className,\n \"data-force\": force,\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const choices = givenGroups ? givenGroups.reduce((n, g) => n + g.items.length, 0) : (values?.length ?? 0);\n const [open, setOwnOpen] = useState(!!defaultValuesOpen && choices > 0);\n const setOpen = (o: boolean) => {\n setOwnOpen(o);\n onValuesOpenChange?.(o);\n };\n const [query, setQuery] = useState(\"\");\n const search = useRef<HTMLInputElement | null>(null);\n const searchable = !!forceSearch || choices > SEARCH_ABOVE;\n const long = !!givenGroups || choices > LIST_ABOVE;\n const groups = useMemo(() => givenGroups ?? (long && values ? choiceGroups(values) : []), [givenGroups, long, values]);\n const q = query.trim().toLowerCase();\n const shown = searchable && q ? (values ?? []).filter((v) => textOf(v).toLowerCase().includes(q) || v.value.toLowerCase().includes(q)) : (values ?? []);\n useEffect(() => {\n if (!open || !searchable || long) return;\n const timer = setTimeout(() => search.current?.focus(), 0);\n return () => clearTimeout(timer);\n }, [open, searchable, long]);\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={typeof property === \"string\" ? t(\"filterChip.filterNamed\", \"Filter: {property}\", { property }) : t(\"filterChip.filter\", \"Filter\")}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/fc inline-flex shrink-0 items-stretch overflow-hidden rounded-pill bg-raised text-fg ring-over\",\n KAESO_FILTER_CHIP_VARIANTS.size.sm.classes,\n className,\n )}\n >\n <span className={cn(SEG, \"cursor-default pl-12 text-fg-secondary hover:bg-transparent active:bg-transparent\")}>\n {propertyIcon && <Icon icon={propertyIcon} size=\"sm\" />}\n {property}\n </span>\n <Menu>\n <Menu.Trigger>\n <button type=\"button\" className={cn(SEG, \"text-fg-secondary divider-l\")} disabled={!operators?.length}>\n {operator}\n </button>\n </Menu.Trigger>\n {operators && (\n <Menu.Content>\n <Menu.RadioGroup value={operator} onValueChange={(v) => onOperatorChange?.(v)}>\n {operators.map((o) => (\n <Menu.RadioItem key={o} value={o}>\n {o}\n </Menu.RadioItem>\n ))}\n </Menu.RadioGroup>\n </Menu.Content>\n )}\n </Menu>\n {long && (givenGroups || values) ? (\n <PickerPopover\n title={typeof property === \"string\" ? property : t(\"filterChip.filter\", \"Filter\")}\n open={open}\n onOpenChange={setOpen}\n {...(width ? { width } : {})}\n trigger={\n <button type=\"button\" className={cn(SEG, \"divider-l\", !onRemove && \"pr-12\")}>\n {value}\n </button>\n }\n >\n <CommandList\n groups={groups}\n aria-label={typeof property === \"string\" ? property : t(\"filterChip.filter\", \"Filter\")}\n value={selected}\n {...(multiple ? { multiple: true } : {})}\n autoFocus\n placeholder={\n typeof property === \"string\"\n ? t(\"filterChip.searchNamedValues\", \"Search {property} values\", { property: locale === \"en\" ? property.toLowerCase() : property })\n : t(\"filterChip.searchValues\", \"Search values\")\n }\n emptyText={t(\"filterChip.noMatches\", \"No values match\")}\n onSelect={(v) => {\n if (multiple) onSelectedChange?.(selected.includes(v) ? selected.filter((s) => s !== v) : [...selected, v]);\n else {\n onSelectedChange?.([v]);\n setOpen(false);\n }\n }}\n />\n </PickerPopover>\n ) : (\n <Menu\n open={open}\n onOpenChange={(o) => {\n setOpen(o);\n if (!o) setQuery(\"\");\n }}\n >\n <Menu.Trigger>\n <button type=\"button\" className={cn(SEG, \"divider-l\", !onRemove && \"pr-12\")} disabled={choices === 0}>\n {value}\n </button>\n </Menu.Trigger>\n {values && (\n <Menu.Content\n {...(searchable ? { className: \"w-280\" } : {})}\n {...(searchable\n ? {\n header: (\n <input\n ref={search}\n type=\"search\"\n aria-label={\n typeof property === \"string\"\n ? t(\"filterChip.searchNamedValues\", \"Search {property} values\", { property: locale === \"en\" ? property.toLowerCase() : property })\n : t(\"filterChip.searchValues\", \"Search values\")\n }\n placeholder={t(\"filterChip.search\", \"Search\")}\n autoComplete=\"off\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={(e) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Escape\", \"Tab\", \"Enter\"].includes(e.key)) e.stopPropagation();\n }}\n className=\"h-28 w-full bg-transparent text-body text-fg outline-none placeholder:text-fg-tertiary coarse:h-36\"\n />\n ),\n ...(shown.length === 0 ? { footer: t(\"filterChip.noMatches\", \"No values match\") } : {}),\n }\n : {})}\n >\n {multiple ? (\n inRuns(shown, (v) => (\n <Menu.CheckboxItem\n key={v.value}\n checked={selected.includes(v.value)}\n onCheckedChange={(c) => onSelectedChange?.(c ? [...selected, v.value] : selected.filter((s) => s !== v.value))}\n {...(v.icon ? { icon: v.icon } : {})}\n >\n <span className=\"inline-flex items-center gap-8\">\n {v.leading}\n {v.label}\n </span>\n </Menu.CheckboxItem>\n ))\n ) : (\n <Menu.RadioGroup value={selected[0] ?? \"\"} onValueChange={(s) => onSelectedChange?.([s])}>\n {inRuns(shown, (v) => (\n <Menu.RadioItem key={v.value} value={v.value} closeOnClick {...(v.icon ? { icon: v.icon } : {})}>\n <span className=\"inline-flex items-center gap-8\">\n {v.leading}\n {v.label}\n </span>\n </Menu.RadioItem>\n ))}\n </Menu.RadioGroup>\n )}\n </Menu.Content>\n )}\n </Menu>\n )}\n {onRemove && (\n <span className=\"flex items-center pr-4 divider-l pl-4\">\n <button\n type=\"button\"\n aria-label={\n typeof property === \"string\" ? t(\"filterChip.removeNamed\", \"Remove the {property} filter\", { property }) : t(\"filterChip.remove\", \"Remove filter\")\n }\n onClick={onRemove}\n className=\"relative inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary transition-control hover:bg-fill-2 hover:text-fg focus-ring tap-target\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"xs\" />\n </button>\n </span>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") FilterChip.displayName = \"FilterChip\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-chip.js","names":["__icon_Cancel01Icon","cn","useUiText","useLocale","Icon","Menu","CommandList","PickerPopover","KAESO_FILTER_CHIP_VARIANTS","KAESO_FILTER_CHIP_DEFAULT_VARIANTS","SEARCH_ABOVE","LIST_ABOVE","inRuns","values","v","item","runs","last","r","i","choiceGroups","groups","key","group","textOf","SEG","VALUE","FilterChip","givenGroups","forceSearch","force","t","locale","choices","n","g","open","setOwnOpen","useState","defaultValuesOpen","setOpen","o","onValuesOpenChange","query","setQuery","search","useRef","searchable","long","useMemo","q","shown","useEffect","timer","property","className","propertyIcon","operators","operator","onOperatorChange","width","onRemove","value","selected","multiple","onSelectedChange","s","c","Cancel01Icon"],"sources":["../../src/components/filter-chip/filter-chip.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Menu } from \"../menu/menu.js\";\nimport { CommandList, type CommandListGroup } from \"../command-list/command-list.js\";\nimport { PickerPopover, type PickerPopoverProps } from \"../command-list/picker-popover.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FILTER_CHIP_VARIANTS = {\n size: {\n sm: { classes: \"h-32 text-body\" },\n },\n} as const;\nexport const KAESO_FILTER_CHIP_DEFAULT_VARIANTS = { size: \"sm\" } as const;\n\nexport interface FilterChipChoice {\n value: string;\n label: ReactNode;\n icon?: IconData | undefined;\n leading?: ReactNode | undefined;\n textValue?: string | undefined;\n group?: string | undefined;\n}\n\nconst SEARCH_ABOVE = 8;\nconst LIST_ABOVE = 50;\n\nfunction inRuns(values: FilterChipChoice[], item: (v: FilterChipChoice) => ReactNode): ReactNode {\n if (!values.some((v) => v.group)) return values.map(item);\n const runs: { group: string | undefined; values: FilterChipChoice[] }[] = [];\n for (const v of values) {\n const last = runs[runs.length - 1];\n if (last && last.group === v.group) last.values.push(v);\n else runs.push({ group: v.group, values: [v] });\n }\n return runs.map((r, i) => (\n <Menu.Group key={`${r.group ?? \"\"}:${i}`} label={r.group}>\n {r.values.map(item)}\n </Menu.Group>\n ));\n}\n\nfunction choiceGroups(values: FilterChipChoice[]): CommandListGroup[] {\n const groups = new Map<string, CommandListGroup>();\n for (const v of values) {\n const key = v.group ?? \"\";\n const group = groups.get(key) ?? { id: key || \"values\", ...(key ? { label: key } : {}), items: [] };\n group.items.push({\n value: v.value,\n label: textOf(v),\n keywords: [v.value],\n ...(v.leading || v.icon ? { leading: v.leading ?? (v.icon ? <Icon icon={v.icon} size=\"sm\" className=\"text-fg-secondary\" /> : undefined) } : {}),\n ...(typeof v.label === \"string\" ? {} : { render: () => <span className=\"min-w-0 flex-1 truncate\">{v.label}</span> }),\n });\n groups.set(key, group);\n }\n return [...groups.values()];\n}\n\nexport interface FilterChipProps {\n property: ReactNode;\n propertyIcon?: IconData | undefined;\n operator: string;\n operators?: string[] | undefined;\n onOperatorChange?: ((operator: string) => void) | undefined;\n value: ReactNode;\n values?: FilterChipChoice[] | undefined;\n groups?: CommandListGroup[] | undefined;\n searchable?: boolean | undefined;\n width?: PickerPopoverProps[\"width\"] | undefined;\n selected?: string[] | undefined;\n multiple?: boolean | undefined;\n onSelectedChange?: ((selected: string[]) => void) | undefined;\n onRemove?: (() => void) | undefined;\n defaultValuesOpen?: boolean | undefined;\n onValuesOpenChange?: ((open: boolean) => void) | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst textOf = (v: FilterChipChoice) => v.textValue ?? (typeof v.label === \"string\" || typeof v.label === \"number\" ? String(v.label) : v.value);\n\nconst SEG =\n \"relative inline-flex h-full min-w-0 cursor-pointer items-center gap-6 px-10 font-medium whitespace-nowrap transition-control tap-target disabled:cursor-default hover:bg-raised-hover active:bg-raised-pressed open:bg-raised-pressed focus-ring-segment\";\nconst VALUE = \"min-w-0 max-w-240 truncate\";\n\nexport const FilterChip = /* @__PURE__ */ forwardRef<HTMLDivElement, FilterChipProps>(function FilterChip(\n {\n property,\n propertyIcon,\n operator,\n operators,\n onOperatorChange,\n value,\n values,\n groups: givenGroups,\n searchable: forceSearch,\n width,\n selected = [],\n multiple,\n onSelectedChange,\n onRemove,\n defaultValuesOpen,\n onValuesOpenChange,\n className,\n \"data-force\": force,\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const choices = givenGroups ? givenGroups.reduce((n, g) => n + g.items.length, 0) : (values?.length ?? 0);\n const [open, setOwnOpen] = useState(!!defaultValuesOpen && choices > 0);\n const setOpen = (o: boolean) => {\n setOwnOpen(o);\n onValuesOpenChange?.(o);\n };\n const [query, setQuery] = useState(\"\");\n const search = useRef<HTMLInputElement | null>(null);\n const searchable = !!forceSearch || choices > SEARCH_ABOVE;\n const long = !!givenGroups || choices > LIST_ABOVE;\n const groups = useMemo(() => givenGroups ?? (long && values ? choiceGroups(values) : []), [givenGroups, long, values]);\n const q = query.trim().toLowerCase();\n const shown = searchable && q ? (values ?? []).filter((v) => textOf(v).toLowerCase().includes(q) || v.value.toLowerCase().includes(q)) : (values ?? []);\n useEffect(() => {\n if (!open || !searchable || long) return;\n const timer = setTimeout(() => search.current?.focus(), 0);\n return () => clearTimeout(timer);\n }, [open, searchable, long]);\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={typeof property === \"string\" ? t(\"filterChip.filterNamed\", \"Filter: {property}\", { property }) : t(\"filterChip.filter\", \"Filter\")}\n className={cn(\n \"group/fc inline-flex max-w-full shrink-0 items-stretch overflow-hidden rounded-pill bg-raised text-fg ring-over\",\n KAESO_FILTER_CHIP_VARIANTS.size.sm.classes,\n className,\n )}\n >\n <span className={cn(SEG, \"shrink-0 cursor-default pl-12 text-fg-secondary hover:bg-transparent active:bg-transparent\")}>\n {propertyIcon && <Icon icon={propertyIcon} size=\"sm\" />}\n {property}\n </span>\n {!operators?.length ? (\n <span className={cn(SEG, \"shrink-0 cursor-default text-fg-secondary divider-l hover:bg-transparent active:bg-transparent\")}>{operator}</span>\n ) : (\n <Menu>\n <Menu.Trigger>\n <button type=\"button\" className={cn(SEG, \"shrink-0 text-fg-secondary divider-l\")}>\n {operator}\n </button>\n </Menu.Trigger>\n {operators && (\n <Menu.Content>\n <Menu.RadioGroup value={operator} onValueChange={(v) => onOperatorChange?.(v)}>\n {operators.map((o) => (\n <Menu.RadioItem key={o} value={o}>\n {o}\n </Menu.RadioItem>\n ))}\n </Menu.RadioGroup>\n </Menu.Content>\n )}\n </Menu>\n )}\n {long && (givenGroups || values) ? (\n <PickerPopover\n title={typeof property === \"string\" ? property : t(\"filterChip.filter\", \"Filter\")}\n open={open}\n onOpenChange={setOpen}\n {...(width ? { width } : {})}\n trigger={\n <button type=\"button\" {...(force ? { \"data-force\": force } : {})} className={cn(SEG, \"divider-l\", !onRemove && \"pr-12\")}>\n <span className={VALUE}>{value}</span>\n </button>\n }\n >\n <CommandList\n groups={groups}\n aria-label={typeof property === \"string\" ? property : t(\"filterChip.filter\", \"Filter\")}\n value={selected}\n {...(multiple ? { multiple: true } : {})}\n autoFocus\n placeholder={\n typeof property === \"string\"\n ? t(\"filterChip.searchNamedValues\", \"Search {property} values\", { property: locale === \"en\" ? property.toLowerCase() : property })\n : t(\"filterChip.searchValues\", \"Search values\")\n }\n emptyText={t(\"filterChip.noMatches\", \"No values match\")}\n onSelect={(v) => {\n if (multiple) onSelectedChange?.(selected.includes(v) ? selected.filter((s) => s !== v) : [...selected, v]);\n else {\n onSelectedChange?.([v]);\n setOpen(false);\n }\n }}\n />\n </PickerPopover>\n ) : (\n <Menu\n open={open}\n onOpenChange={(o) => {\n setOpen(o);\n if (!o) setQuery(\"\");\n }}\n >\n <Menu.Trigger>\n <button type=\"button\" {...(force ? { \"data-force\": force } : {})} className={cn(SEG, \"divider-l\", !onRemove && \"pr-12\")} disabled={choices === 0}>\n <span className={VALUE}>{value}</span>\n </button>\n </Menu.Trigger>\n {values && (\n <Menu.Content\n {...(searchable ? { className: \"w-280\" } : {})}\n {...(searchable\n ? {\n header: (\n <input\n ref={search}\n type=\"search\"\n aria-label={\n typeof property === \"string\"\n ? t(\"filterChip.searchNamedValues\", \"Search {property} values\", { property: locale === \"en\" ? property.toLowerCase() : property })\n : t(\"filterChip.searchValues\", \"Search values\")\n }\n placeholder={t(\"filterChip.search\", \"Search\")}\n autoComplete=\"off\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={(e) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Escape\", \"Tab\", \"Enter\"].includes(e.key)) e.stopPropagation();\n }}\n className=\"h-28 w-full bg-transparent text-body text-fg outline-none placeholder:text-fg-tertiary coarse:h-36\"\n />\n ),\n ...(shown.length === 0 ? { footer: t(\"filterChip.noMatches\", \"No values match\") } : {}),\n }\n : {})}\n >\n {multiple ? (\n inRuns(shown, (v) => (\n <Menu.CheckboxItem\n key={v.value}\n checked={selected.includes(v.value)}\n onCheckedChange={(c) => onSelectedChange?.(c ? [...selected, v.value] : selected.filter((s) => s !== v.value))}\n {...(v.icon ? { icon: v.icon } : {})}\n >\n <span className=\"inline-flex items-center gap-8\">\n {v.leading}\n {v.label}\n </span>\n </Menu.CheckboxItem>\n ))\n ) : (\n <Menu.RadioGroup value={selected[0] ?? \"\"} onValueChange={(s) => onSelectedChange?.([s])}>\n {inRuns(shown, (v) => (\n <Menu.RadioItem key={v.value} value={v.value} closeOnClick {...(v.icon ? { icon: v.icon } : {})}>\n <span className=\"inline-flex items-center gap-8\">\n {v.leading}\n {v.label}\n </span>\n </Menu.RadioItem>\n ))}\n </Menu.RadioGroup>\n )}\n </Menu.Content>\n )}\n </Menu>\n )}\n {onRemove && (\n <span className=\"flex shrink-0 items-center pr-4 divider-l pl-4\">\n <button\n type=\"button\"\n aria-label={\n typeof property === \"string\" ? t(\"filterChip.removeNamed\", \"Remove the {property} filter\", { property }) : t(\"filterChip.remove\", \"Remove filter\")\n }\n onClick={onRemove}\n className=\"relative inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary transition-control hover:bg-raised-hover hover:text-fg active:bg-raised-pressed focus-ring tap-target\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"xs\" />\n </button>\n </span>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") FilterChip.displayName = \"FilterChip\";\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "../chunks/cn-
|
|
2
|
+
import { t as e } from "../chunks/cn-BjnOAUrA.js";
|
|
3
3
|
import { a as t } from "../chunks/inset-BUzyXLK4.js";
|
|
4
4
|
import { i as n } from "../chunks/context-BELWW79w.js";
|
|
5
|
-
import { t as r } from "../chunks/arrow-focus-
|
|
5
|
+
import { t as r } from "../chunks/arrow-focus-B0KdRFX8.js";
|
|
6
6
|
import { forwardRef as i } from "react";
|
|
7
7
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
8
8
|
//#region src/components/filter-row/filter-row.tsx
|
|
@@ -13,7 +13,7 @@ var s = { size: {
|
|
|
13
13
|
let m = t(), h = n(), g = u ?? (m ? "inset" : "md");
|
|
14
14
|
return /* @__PURE__ */ o("div", {
|
|
15
15
|
ref: p,
|
|
16
|
-
className: e("flex min-w-0 shrink-0 flex-wrap items-center justify-between gap-x-16 gap-y-
|
|
16
|
+
className: e("flex min-w-0 shrink-0 flex-wrap items-center justify-between gap-x-16 gap-y-12", s.size[g].classes, d),
|
|
17
17
|
...f,
|
|
18
18
|
children: [i && /* @__PURE__ */ a("div", {
|
|
19
19
|
className: "flex max-w-full min-w-0",
|
|
@@ -23,7 +23,7 @@ var s = { size: {
|
|
|
23
23
|
"aria-label": l ?? h("filterRow.filters", "Filters"),
|
|
24
24
|
"aria-orientation": "horizontal",
|
|
25
25
|
className: "flex max-w-full min-w-0 flex-wrap items-center gap-8",
|
|
26
|
-
onKeyDown: (e) => r(e),
|
|
26
|
+
onKeyDown: (e) => r(e, { byItem: !0 }),
|
|
27
27
|
children: c
|
|
28
28
|
})]
|
|
29
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-row.js","names":["cn","useInset","useUiText","arrowFocus","KAESO_FILTER_ROW_VARIANTS","KAESO_FILTER_ROW_DEFAULT_VARIANTS","FilterRow","sizeProp","props","inset","t","size","className","tabs","children","filtersLabel"],"sources":["../../src/components/filter-row/filter-row.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { arrowFocus } from \"../../utils/arrow-focus.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FILTER_ROW_VARIANTS = {\n size: {\n md: { classes: \"px-24 py-8\" },\n inset: {\n classes: \"pt-16 pb-16\",\n },\n },\n} as const;\nexport const KAESO_FILTER_ROW_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface FilterRowProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n tabs?: ReactNode | undefined;\n children?: ReactNode | undefined;\n filtersLabel?: string | undefined;\n size?: keyof typeof KAESO_FILTER_ROW_VARIANTS.size | undefined;\n}\n\nexport const FilterRow = /* @__PURE__ */ forwardRef<HTMLDivElement, FilterRowProps>(function FilterRow(\n { tabs, children, filtersLabel, size: sizeProp, className, ...props },\n ref,\n) {\n const inset = useInset();\n const t = useUiText();\n const size = sizeProp ?? (inset ? \"inset\" : \"md\");\n return (\n <div\n ref={ref}\n className={cn(\"flex min-w-0 shrink-0 flex-wrap items-center justify-between gap-x-16 gap-y-
|
|
1
|
+
{"version":3,"file":"filter-row.js","names":["cn","useInset","useUiText","arrowFocus","KAESO_FILTER_ROW_VARIANTS","KAESO_FILTER_ROW_DEFAULT_VARIANTS","FilterRow","sizeProp","props","inset","t","size","className","tabs","children","filtersLabel"],"sources":["../../src/components/filter-row/filter-row.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { arrowFocus } from \"../../utils/arrow-focus.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FILTER_ROW_VARIANTS = {\n size: {\n md: { classes: \"px-24 py-8\" },\n inset: {\n classes: \"pt-16 pb-16\",\n },\n },\n} as const;\nexport const KAESO_FILTER_ROW_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface FilterRowProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n tabs?: ReactNode | undefined;\n children?: ReactNode | undefined;\n filtersLabel?: string | undefined;\n size?: keyof typeof KAESO_FILTER_ROW_VARIANTS.size | undefined;\n}\n\nexport const FilterRow = /* @__PURE__ */ forwardRef<HTMLDivElement, FilterRowProps>(function FilterRow(\n { tabs, children, filtersLabel, size: sizeProp, className, ...props },\n ref,\n) {\n const inset = useInset();\n const t = useUiText();\n const size = sizeProp ?? (inset ? \"inset\" : \"md\");\n return (\n <div\n ref={ref}\n className={cn(\"flex min-w-0 shrink-0 flex-wrap items-center justify-between gap-x-16 gap-y-12\", KAESO_FILTER_ROW_VARIANTS.size[size].classes, className)}\n {...props}\n >\n {tabs && <div className=\"flex max-w-full min-w-0\">{tabs}</div>}\n {children && (\n <div\n role=\"toolbar\"\n aria-label={filtersLabel ?? t(\"filterRow.filters\", \"Filters\")}\n aria-orientation=\"horizontal\"\n className=\"flex max-w-full min-w-0 flex-wrap items-center gap-8\"\n onKeyDown={(e: KeyboardEvent<HTMLDivElement>) => arrowFocus(e, { byItem: true })}\n >\n {children}\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") FilterRow.displayName = \"FilterRow\";\n"],"mappings":";;;;;;;;AAMA,IAAaI,IAA4B,EACvC,MAAM;CACJ,IAAI,EAAE,SAAS,aAAa;CAC5B,OAAO,EACL,SAAS,cACX;AACF,EACF,GACaC,IAAoC,EAAE,MAAM,KAAK,GASjDC,IAA4B,kBAA2C,SAClF,EAAE,SAAM,aAAU,iBAAc,MAAMC,GAAU,cAAW,GAAGC,KAC9D,GACA;CACA,IAAMC,IAAQR,EAAS,GACjBS,IAAIR,EAAU,GACdS,IAAOJ,MAAaE,IAAQ,UAAU;CAC5C,OACE,kBAAC,OAAD;EACO;EACL,WAAWT,EAAG,kFAAkFI,EAA0B,KAAKO,EAAK,CAAC,SAASC,CAAS;EACvJ,GAAIJ;EAHN,UAAA,CAKGK,KAAQ,kBAAC,OAAD;GAAK,WAAU;GAA2B,UAAAA;EAAU,CAAA,GAC5DC,KACC,kBAAC,OAAD;GACE,MAAK;GACL,cAAYC,KAAgBL,EAAE,qBAAqB,SAAS;GAC5D,oBAAiB;GACjB,WAAU;GACV,YAAY,MAAqCP,EAAW,GAAG,EAAE,QAAQ,GAAK,CAAC;GAE9E;EACE,CAAA,CAEJ;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc"}
|